[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.agc]\nindent_style = tab\ntab_width = 8\n\n[*.md]\nindent_style = space\nindent_size = 2\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Discussion.md",
    "content": "---\nname: Discussion & Questions\nabout: Discussion about the Apollo 11 source code is highly welcomed.\nlabels: \"Type: Discussion\"\n---\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Humour.md",
    "content": "---\nname: Humour / Jokes\nabout: Humourous issues are allowed, but please follow GitHub's Acceptable Use policies\nlabels: \"Type: Humour\"\n---\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Proof_Comanche.md",
    "content": "---\nname: Proof Comanche055\nabout: Template for Comanche055 Proof issues \ntitle: \"Proof \"\n---\nProof read transcribed code of [](//github.com/chrislgarry/Apollo-11/blob/master/Comanche055/.agc) against scans\n\n**Multiple PRs for a few pages at a time are recommended!**\n\nLines: \nPage: — ()\n\nReduced quality scans can be found [here][1]\n\n[1]://ibiblio.org/apollo/ScansForConversion/Comanche055\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Proof_Luminary.md",
    "content": "---\nname: Proof Luminary099\nabout: Template for Luminary099 Proof issues \ntitle: \"Proof \"\n---\nProof read transcribed code of [](//github.com/chrislgarry/Apollo-11/blob/master/Luminary099/.agc) against scans\n\n**Multiple PRs for a few pages at a time are recommended!**\n\nLines: \nPage: — ()\n\nReduced quality scans can be found [here][1]\n\n[1]://ibiblio.org/apollo/ScansForConversion/Luminary099\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "<!-- Proofing PRs:\n1. Title should follow \"Proof [FILE NAME] #[PROOF ISSUE]\", e.g:\n    \"Proof ALARM_AND_ABORT #564\"\n2. Mention pages checked if you have not proofed the entire file\n\n--><!-- New README/CONTRIBUTING PRs:\n1. Title should follow \"Add [LANGUAGE] [README|CONTRIBUTING]\", e.g:\n    \"Add Dutch README\"\n-->\n"
  },
  {
    "path": ".github/labeler.yml",
    "content": "\"Type: Proof\":\n  - \"**/*.agc\"\n\"Type: Meta\":\n  - \"**/MAIN.agc\"\n  - \"**/*.md\"\n  - \"*.md\"\n"
  },
  {
    "path": ".github/workflows/label.yml",
    "content": "name: Pull Request Labeler\non:\n  schedule:\n    - cron: '0 */3 * * *'\njobs:\n  labeler:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: paulfantom/periodic-labeler@master\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          GITHUB_REPOSITORY: ${{ github.repository }}\n          LABEL_MAPPINGS_FILE: .github/labeler.yml\n"
  },
  {
    "path": ".github/workflows/markdownlint.yml",
    "content": "name: markdownlint\non: [push, pull_request]\njobs:\n  delivery:\n    runs-on: ubuntu-latest\n    steps:\n    - name: Check out code\n      uses: actions/checkout@v6\n    - name: Lint markdown\n      uses: DavidAnson/markdownlint-cli2-action@v19\n      with:\n        config: .markdownlint.yml\n        globs: '*.md,translations/*.md,Comanche055/*.md,Luminary099/*.md'\n        separator: ','\n"
  },
  {
    "path": ".gitignore",
    "content": "yaYUL.exe\nnode_modules\n"
  },
  {
    "path": ".markdownlint.yml",
    "content": "default: true\nMD007: false\nMD010: false\nMD013: false\nMD026: false\nMD033: false\nMD034: false\nMD036: false\nMD041: false\nMD050: false\nMD053: false\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# 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[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN],\n[Basa Jawa][JV]\n\n[AR]:Translations/CONTRIBUTING.ar.md\n[AZ]:Translations/CONTRIBUTING.az.md\n[CA]:Translations/CONTRIBUTING.ca.md\n[CZ]:Translations/CONTRIBUTING.cz.md\n[DA]:Translations/CONTRIBUTING.da.md\n[DE]:Translations/CONTRIBUTING.de.md\n[EN]:CONTRIBUTING.md\n[ES]:Translations/CONTRIBUTING.es.md\n[FR]:Translations/CONTRIBUTING.fr.md\n[GL]:Translations/CONTRIBUTING.gl.md\n[GR]:Translations/CONTRIBUTING.gr.md\n[HI_IN]:Translations/CONTRIBUTING.hi_in.md\n[ID]:Translations/CONTRIBUTING.id.md\n[IT]:Translations/CONTRIBUTING.it.md\n[JA]:Translations/CONTRIBUTING.ja.md\n[JV]:Translations/CONTRIBUTING.jv.md\n[KO_KR]:Translations/CONTRIBUTING.ko_kr.md\n[KU]:Translations/CONTRIBUTING.ku.md\n[LT]:Translations/CONTRIBUTING.lt.md\n[MN]:Translations/CONTRIBUTING.mn.md\n[NL]:Translations/CONTRIBUTING.nl.md\n[NO]:Translations/CONTRIBUTING.no.md\n[PL]:Translations/CONTRIBUTING.pl.md\n[PT_BR]:Translations/CONTRIBUTING.pt_br.md\n[SV]:Translations/CONTRIBUTING.sv.md\n[TR]:Translations/CONTRIBUTING.tr.md\n[UK]:Translations/CONTRIBUTING.uk.md\n[VI]:Translations/CONTRIBUTING.vi.md\n[ZH_CN]:Translations/CONTRIBUTING.zh_cn.md\n[ZH_TW]:Translations/CONTRIBUTING.zh_tw.md\n\nThe 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:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nThe following website can be used to easily navigate around the scanned printouts for both Comanche and Luminary: https://28gpc.csb.app/\n\n## Useful Extensions\n\nGitHub 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:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Supports automatic formatting\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formatting\n\n**Note:** GitHub and extensions marked above will ensure you're using the correct formatting automatically.\n\n- Use tab indentation\n- Use tab width of 8\n- Trim trailing whitespace\n\n## What do I check?\n\nAny discrepancies between the scans and the source code in this repository.\n\n### Comments\n\nComments in the transcribed code **MUST** match the scans **exactly**.\n\nCommon issues you should look out for while proofing include, but not limited to:\n\n#### Typographic Errors\n\nIn 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.\n\nFor example, if the digitised comments contained `SPACECRAFT`, but `SPAECRAFT` was printed in the scans, then the digitisation **MUST** be corrected to `SPAECRAFT` (missing `C`).\n\nLikewise, if a word has a typo in the digitisation but is spelt correctly in the scans then the typo **MUST** be corrected.\n\n#### Spaces\n\nSpaces between two characters in comments **SHOULD** match the scans. In most cases (see the discussion in [#316][10]), this is:\n\n- Single space for new words.\n- Double space for new sentences.\n- Triple space for indentations.\n\nNot 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.\n\n### Line breaks\n\n- Line breaks *with* `R0000` in column 1 should match the scans exactly.\n- Line breaks *with**__out__* `R0000` in column 1 should contain only 1 or 2 blank lines in a row.\n  - If there are more than 2 blank lines breaks, strip the extra line breaks.\n    - Lines with `R0000` in column 1 do not count towards this.\n  - 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]\n\nFor example the following:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nShould become:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Note\n\nBefore you make a PR, please make sure your changes are consistent with the scans!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Comanche055/AGC_BLOCK_TWO_SELF-CHECK.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tAGC_BLOCK_TWO_SELF-CHECK.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1394-1403\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Colossus249/ file of the same\n#\t\t\t\tname, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 1394\n# PROGRAM DESCRIPTION\t\t\t\tDATE  20 DECEMBER 1967\n# PROGRAM NAME - SELF-CHECK\t\t\tLOG SECTION  AGC BLOCK TWO SELF-CHECK\n# MOD NO -  1\t\t\t\t\tASSEMBLY SUBROUTINE UTILITYM REV 25\n# MOD BY - GAUNTT\n#\n#\n# FUNCTIONAL DESCRIPTION\n#\n# \tPROGRAM HAS TWO MAIN PARTS. THE FIRST IS SELF-CHECK WHICH RUNS AS A ZERO PRIORITY JOB WITH NO CORE SET, AS\n# PART OF THE BACK-UP IDLE LOOP. THE SECOND IS SHOW-BANKSUM WHICH RUNS AS A REGULAR EXECUTIVE JOB WITH ITS OWN\n# STARTING VERB.\n# \tTHE PURPOSE OF SELF-CHECK IS TO CHECK OUT VARIOUS PARTS OF THE COMPUTER AS OUTLINED BELOW IN THE OPTIONS.\n# \tTHE PURPOSE OF SHOW-BANKSUM IS TO DISPLAY THE SUM OF EACH BANK , ONE AT A TIME.\n# \tIN ALL THERE ARE  7 POSSIBLE OPTIONS IN THIS BLOCK II VERSION OF SELF-CHECK. MORE DETAIL DESCRIPTION MAY BE\n# FOUND IN E-2065 BLOCK II AGC SELF-CHECK AND SHOW BANKSUM BY EDWIN D. SMALLY DECEMBER 1966, AND ADDENDA 2 AND 3.\n# \tTHE DIFFERENT OPTIONS ARE CONTROLLED BY PUTTING DIFFERENT NUMBERS IN THE SMODE REGISTER (NOUN 27). BELOW IS\n# A DESCRIPTION OF WHAT PARTS OF THE COMPUTER THAT ARE CHECKED BY THE OPTIONS, AND THE CORRESPONDING NUMBER, IN\n# OCTAL, TO LOAD INTO SMODE.\n# +-4\tERASABLE MEMORY\n# +-5\tFIXED MEMORY\n# +-1,2,3,6,7,10   EVERYTHING IN OPTIONS 4 AND 5.\n# -0\tSAME AS +-10 UNTIL AN ERROR IS DETECTED.\n# +0\tNO CHECK, PUTS COMPUTER INTO THE BACKUP IDLE LOOP.\n#\n#\n# WARNINGS\n# \tUSE OF E MEMORY RESERVED FOR SELF-CHECK (EVEN IN IDLE LOOP) AS TEMP STORAGE BY OTHER PROGRAMS IS DANGEROUS.\n# \tSMODE SET GREATER THAN OCT 10 PUTS COMPUTER INTO BACKUP IDLE LOOP.\n#\n#\n# CALLING SEQUENCE\n#\n# \tTO CALL SELF-CHECK KEY IN\n# \t     V 21 N 27 E  OPTION NUMBER E\n# \tTO CALL SHOW-BANKSUM KEY IN\n# \t     V 91 E\t    DISPLAYS FIRST BANK\n# \t     V 33 E\t    PROCEED, DISPLAYS NEXT BANK\n#\n#\n# EXIT MODES, NORMAL AND ALARM\n#\n# \tSELF-CHECK NORMALLY CONTINUES INDEFINITELY UNLESS THERE IS AN ERROR DETECTED. IF SO + OPTION NUMBERS PUT\n# COMPUTER INTO BACKUP IDLE LOOP, - OPTION NUMBERS RESTART THE OPTION.\n# \tTHE -0 OPTION PROCEEDS FROM THE LINE FOLLOWING THE LINE WHERE THE ERROR WAS DETECTED.\n# \tSHOW-BANKSUM PROCEEDS UNTIL A TERMINATE IS KEYED IN (V 34 E). THE COMPUTER IS PUT INTO THE BACKUP IDLE LOOP\n#\n#\n#\n# OUTPUT\n# Page 1395\n# \tSELF-CHECK UPON DETECTING AN ERROR LOADS THE SELF-CHECK ALARM CONSTANT (01102) INTO THE FAILREG SET AND\n# TURNS ON THE ALARM LIGHT. THE OPERATOR MAY THEN DISPLAY THE THREE FAILREGS BY KEYING IN V 05 N 09 E. FOR FURTHER\n# 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,\n# IN R2 THE BBCON OF SELF-CHECK, AND IN R3 THE TOTAL NUMBER OF ERRORS DETECTED BY SELF-CHECK SINCE THE LAST MAN\n# INITIATED FRESH START (SLAP1).\n# \tSHOW-BANKSUM STARTING WITH BANK 0 DISPLAYS IN R1 THE BANK SUM (A +-NUMBER EQUAL TO THE BANK NUMBER), IN R2\n# THE BANK NUMBER, AND IN R3 THE BUGGER WORD.\n#\n#\n# ERASABLE INITIALIZATION REQUIRED\n# \tACCOMPLISHED BY FRESH START\n# \t\tSMODE SET TO +0\n#\n# DEBRIS\n# \tALL EXITS FROM THE CHECK OF ERASABLE (ERASCHK) RESTORE ORIGINAL CONTENTS TO REGISTERS UNDER CHECK.\n# EXCEPTION IS A RESTART. RESTART THAT OCCURS DURING ERASCHK RESTORES ERASABLE, UNLESS THERE IS EVIDENCE TO DOUBT\n# E MEMORY, IN WHICH CASE PROGRAM THEN DOES A FRESH START (DOFSTART).\n\n\t\tBANK\t25\n\t\tSETLOC\tSELFCHEC\n\t\tBANK\n\n\t\tCOUNT\t43/SELF\n\nSBIT1\t\tEQUALS\tBIT1\nSBIT2\t\tEQUALS\tBIT2\nSBIT3\t\tEQUALS\tBIT3\nSBIT4\t\tEQUALS\tBIT4\nSBIT5\t\tEQUALS\tBIT5\nSBIT6\t\tEQUALS\tBIT6\nSBIT7\t\tEQUALS\tBIT7\nSBIT8\t\tEQUALS\tBIT8\nSBIT9\t\tEQUALS\tBIT9\nSBIT10\t\tEQUALS\tBIT10\nSBIT11\t\tEQUALS\tBIT11\nSBIT12\t\tEQUALS\tBIT12\nSBIT13\t\tEQUALS\tBIT13\nSBIT14\t\tEQUALS\tBIT14\nSBIT15\t\tEQUALS\tBIT15\n\nS+ZERO\t\tEQUALS\tZERO\nS+1\t\tEQUALS\tBIT1\nS+2\t\tEQUALS\tBIT2\nS+3\t\tEQUALS\tTHREE\nS+4\t\tEQUALS\tFOUR\nS+5\t\tEQUALS\tFIVE\n# Page 1396\nS+6\t\tEQUALS\tSIX\nS+7\t\tEQUALS\tSEVEN\nS8BITS\t\tEQUALS\tLOW8\t\t# 00377\nCNTRCON\t\t=\tOCT50\t\t# USED IN CNTRCHK\nERASCON1\tOCTAL\t00061\t\t# USED IN ERASCHK\nERASCON2\tOCTAL\t01373\t\t# USED IN ERASCHK\nERASCON6\t=\tOCT1400\t\t# USED IN ERASCHK\nERASCON3\tOCTAL\t01461\t\t# USED IN ERASCHK\nERASCON4\tOCTAL\t01773\t\t# USED IN ERASCHK\nS10BITS\t\tEQUALS\tLOW10\t\t# 01777, USED IN ERASCHK\nSBNK03\t\tEQUALS\tPRIO6\t\t# 06000, USED IN ROPECHK\n-MAXADRS\t=\tHI5\t\t# FOR ROPECHK\nSIXTY\t\tOCTAL\t00060\nSUPRCON\t\tOCTAL\t60017\t\t# USED IN ROPECHK\nS13BITS\t\tOCTAL\t17777\nCONC+S1\t\tOCTAL\t25252\t\t# USED IN CYCLSHFT\nCONC+S2\t\tOCTAL\t52400\t\t# USED IN CYCLSHFT\nERASCON5\tOCTAL\t76777\nS-7\t\t=\tOCT77770\nS-4\t\tEQUALS\tNEG4\nS-3\t\tEQUALS\tNEG3\nS-2\t\tEQUALS\tNEG2\nS-1\t\tEQUALS\tNEGONE\nS-ZERO\t\tEQUALS\tNEG0\n\n\t\tEBANK=\tLST1\nADRS1\t\tADRES\tSKEEP1\nSELFADRS\tADRES\tSELFCHK\t\t# SELFCHK RETURN ADDRESS. SHOULD BE PUT\n\t\t\t\t\t# IN SELFRET WHEN GOING FROM SELFCHK TO\n\t\t\t\t\t# SHOWSUM AND PUT IN SKEEP1 WHEN GOING\n\t\t\t\t\t# FROM SHOWSUM TO SELF-CHECK.\n\nPRERRORS\tCA\tERESTORE\t# IS IT NECESSARY TO RESTORE ERASABLE\n\t\tEXTEND\n\t\tBZF\tERRORS\t\t# NO\n\t\tEXTEND\n\t\tDCA\tSKEEP5\n\t\tINDEX\tSKEEP7\n\t\tDXCH\t0000\t\t# RESTORE THE TWO ERASABLE REGISTERS\n\t\tCA\tS+ZERO\n\t\tTS\tERESTORE\nERRORS\t\tINHINT\n\t\tCA\tQ\n\t\tTS\tSFAIL\t\t# SAVE Q FOR FAILURE LOCATION\n\t\tTS\tALMCADR\t\t# FOR DISPLAY WITH BBANK AND ERCOUNT\n\t\tINCR\tERCOUNT\t\t# KEEP TRACK OF NUMBER OF MALFUNCTIONS.\nTCALARM2\tTC\tALARM2\n\t\tOCT\t01102\t\t# SELF-CHECK MALFUNCTION INDICATOR\n\t\tCCS\tSMODE\nSIDLOOP\t\tCA\tS+ZERO\n# Page 1397\n\t\tTS\tSMODE\n\t\tTC\tSELFCHK\t\t# GO TO IDLE LOOP\n\t\tTC\tSFAIL\t\t# CONTINUE WITH SELF-CHECK\n\n-1CHK\t\tCCS\tA\n\t\tTCF\tPRERRORS\n\t\tTCF\tPRERRORS\n\t\tCCS\tA\n\t\tTCF\tPRERRORS\n\t\tTC\tQ\n\nSMODECHK\tEXTEND\n\t\tQXCH\tSKEEP1\n\t\tTC\tCHECKNJ\t\t# CHECK FOR NEW JOB\n\t\tCCS\tSMODE\n\t\tTC\tSOPTIONS\n\t\tTC\tSMODECHK +2\t# TO BACKUP IDLE LOOP\n\t\tTC\tSOPTIONS\n\t\tINCR\tSCOUNT\n\t\tTC\tSKEEP1\t\t# CONTINUE WITH SELF-CHECK\n\nSOPTIONS\tAD\tS-7\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# FOR OPTIONS BELOW NINE.\nBNKOPTN\t\tTC\tSIDLOOP\t\t# ILLEGAL OPTION.  GO TO IDLE LOOP.\n\t\tINCR\tSCOUNT\t\t# FOR OPTIONS BELOW NINE.\n\t\tAD\tS+7\n\n\t\tINDEX\tA\n\t\tTC\tSOPTION1\nSOPTION1\tTC\tSKEEP1\t\t# WAS TC+TCF\nSOPTION2\tTC\tSKEEP1\t\t# WAS IN:OUT1\nSOPTION3\tTC\tSKEEP1\t\t# WAS COUNTCHK\nSOPTION4\tTC\tERASCHK\nSOPTION5\tTC\tROPECHK\nSOPTION6\tTC\tSKEEP1\nSOPTION7\tTC\tSKEEP1\nSOPTON10\tTC\tSKEEP1\t\t# CONTINUE WITH SELF-CHECK\n\nCHECKNJ\t\tEXTEND\n\t\tQXCH\tSELFRET\t\t# SAVE RETURN ADDRESS WHILE TESTING NEWJOB\n\t\tTC\tPOSTJUMP\t# TO SEE IF ANY JOBS HAVE BECOME ACTIVE.\n\t\tCADR\tADVAN\n\nSELFCHK\t\tTC\tSMODECHK\t# ** CHARLEY, COME IN HERE\n\n# SKEEP7 HOLDS LOWEST OF TWO ADDRESSES BEING CHECKED.\n# SKEEP6 HOLDS B(X+1).\n# SKEEP5 HOLDS B(X).\n# SKEEP4 HOLDS C(EBANK) DURING ERASLOOP AND CHECKNJ.\n# Page 1398\n# SKEEP3 HOLDS LAST ADDRESS BEING CHECKED (HIGHEST ADDRESS).\n# SKEEP2 CONTROLS CHECKING OF NON-SWITCHABLE ERASABLE MEMORY WITH BANK NUMBERS IN EB.\n# ERASCHK TAKES APPROXMATELY 7 SECONDS\nERASCHK\t\tCA\tS+1\n\t\tTS\tSKEEP2\n0EBANK\t\tCA\tS+ZERO\n\t\tTS\tEBANK\n\t\tCA\tERASCON3\t# 01461\n\t\tTS\tSKEEP7\t\t# STARTING ADDRESS\n\t\tCA\tS10BITS\t\t# 01777\n\t\tTS\tSKEEP3\t\t# LAST ADDRESS CHECKED\n\t\tTC\tERASLOOP\n\nE134567B\tCA\tERASCON6\t# 01400\n\t\tTS\tSKEEP7\t\t# STARTING ADDRESS\n\t\tCA\tS10BITS\t\t# 01777\n\t\tTS\tSKEEP3\t\t# LAST ADDRESS CHECKED\n\t\tTC\tERASLOOP\n\n2EBANK\t\tCA\tERASCON6\t# 01400\n\t\tTS\tSKEEP7\t\t# STARTING ADDRESS\n\t\tCA\tERASCON4\t# 01773\n\t\tTS\tSKEEP3\t\t# LAST ADDRESS CHECKED\n\t\tTC\tERASLOOP\n\nNOEBANK\t\tTS\tSKEEP2\t\t# +0\n\t\tCA\tERASCON1\t# 00061\n\t\tTS\tSKEEP7\t\t# STARTING ADDRESS\n\t\tCA\tERASCON2\t# 01373\n\t\tTS\tSKEEP3\t\t# LAST ADDRESS CHECKED\n\nERASLOOP\tINHINT\n\t\tCA\tEBANK\t\t# STORES C(EBANK)\n\t\tTS\tSKEEP4\n\t\tEXTEND\n\t\tNDX\tSKEEP7\n\t\tDCA\t0000\n\t\tDXCH\tSKEEP5\t\t# STORES C(X) AND C(X+1) IN SKEEP6 AND 5.\n\t\tCA\tSKEEP7\n\t\tTS\tERESTORE\t# IF RESTART, RESTORE C(X) AND C(X+1)\n\t\tTS\tL\n\t\tINCR\tL\n\t\tNDX\tA\n\t\tDXCH\t0000\t\t# PUTS OWN ADDRESS IN X AND X +1\n\t\tNDX\tSKEEP7\n\t\tCS\t0001\t\t# CS X+1\n\t\tNDX\tSKEEP7\n\t\tAD\t0000\t\t# AD X\n\t\tTC\t-1CHK\n\t\tCA\tERESTORE\t# HAS ERASABLE BEEN RESTORED\n# Page 1399\n\t\tEXTEND\n\t\tBZF\tELOOPFIN\t# YES, EXIT ERASLOOP.\n\t\tEXTEND\n\t\tNDX\tSKEEP7\n\t\tDCS\t0000\t\t# COMPLEMENT OF ADDRESS OF X AND X+1\n\t\tNDX\tSKEEP7\n\t\tDXCH\t0000\t\t# PUT COMPLEMENT OF ADDRESS OF X AND X+1\n\t\tNDX\tSKEEP7\n\t\tCS\t0000\t\t# CS X\n\t\tNDX\tSKEEP7\n\t\tAD\t0001\t\t# AD X+1\n\t\tTC\t-1CHK\n\t\tCA\tERESTORE\t# HAS ERASABLE BEEN RESTORED\n\t\tEXTEND\n\t\tBZF\tELOOPFIN\t# YES, EXIT ERASLOOP.\n\t\tEXTEND\n\t\tDCA\tSKEEP5\n\t\tNDX\tSKEEP7\n\t\tDXCH\t0000\t\t# PUT B(X) AND B(X+1) BACK INTO X AND X+1\n\t\tCA\tS+ZERO\n\t\tTS\tERESTORE\t# IF RESTART, DO NOT RESTORE C(X), C(X+1)\nELOOPFIN\tRELINT\n\t\tTC\tCHECKNJ\t\t# CHECK FOR NEW JOB\n\t\tCA\tSKEEP4\t\t# REPLACES B(EBANK)\n\t\tTS\tEBANK\n\t\tINCR\tSKEEP7\n\t\tCS\tSKEEP7\n\t\tAD\tSKEEP3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tERASLOOP\t# GO TO NEXT ADDRESS IN SAME BANK\n\t\tCCS\tSKEEP2\n\t\tTC\tNOEBANK\n\t\tINCR\tSKEEP2\t\t# PUT +1 IN SKEEP2.\n\t\tCA\tEBANK\n\t\tAD\tSBIT9\n\t\tTS\tEBANK\n\t\tAD\tERASCON5\t# 76777, CHECK FOR BANK E2\n\t\tEXTEND\n\t\tBZF\t2EBANK\n\t\tCCS\tEBANK\n\t\tTC\tE134567B\t# GO TO EBANKS 1,3,4,5,6, AND 7\n\t\tCA\tERASCON6\t# END OF ERASCHK\n\t\tTS\tEBANK\n# CNTRCHK PERFORMS A CS OF ALL REGISTERS FROM OCT. 60 THROUGH OCT. 10.\n# INCLUDED ARE ALL COUNTERS, T6-1, CYCLE AND SHIFT, AND ALL RUPT REGISTERS\nCNTRCHK\t\tCA\tCNTRCON\t\t# 00050\nCNTRLOOP\tTS\tSKEEP2\n\t\tAD\tSBIT4\t\t# +10 OCTAL\n\t\tINDEX\tA\n# Page 1400\n\t\tCS\t0000\n\t\tCCS\tSKEEP2\n\t\tTC\tCNTRLOOP\n\n# CYCLSHFT CHECKS THE CYCLE AND SHIFT REGISTERS\nCYCLSHFT\tCA\tCONC+S1\t\t# 25252\n\t\tTS\tCYR\t\t# C(CYR) = 12525\n\t\tTS\tCYL\t\t# C(CYL) = 52524\n\t\tTS\tSR\t\t# C(SR) = 12525\n\t\tTS\tEDOP\t\t# C(EDOP) = 00125\n\t\tAD\tCYR\t\t# 37777\t\tC(CYR) = 45252\n\t\tAD\tCYL\t\t# 00-12524\tC(CYL) = 25251\n\t\tAD\tSR\t\t# 00-25251\tC(SR) = 05252\n\t\tAD\tEDOP\t\t# 00-25376\tC(EDOP) = +0\n\t\tAD\tCONC+S2\t\t# C(CONC+S2) = 52400\n\t\tTC\t-1CHK\n\t\tAD\tCYR\t\t# 45252\n\t\tAD\tCYL\t\t# 72523\n\t\tAD\tSR\t\t# 77775\n\t\tAD\tEDOP\t\t# 77775\n\t\tAD\tS+1\t\t# 77776\n\t\tTC\t-1CHK\n\n\t\tINCR\tSCOUNT +1\n\t\tTC\tSMODECHK\n# SKEEP1 HOLDS SUM\n# SKEEP2 HOLDS PRESENT CONTENTS OF ADDRESS IN ROPECHK AND SHOWSUM ROUTINES\n# SKEEP2 HOLDS BANK NUMBER IN LOW ORDER BITS DURING SHOWSUM DISPLAY\n# SKEEP3 HOLDS PRESENT ADDRESS (00000 TO 01777 IN COMMON FIXED BANKS)\n#\t\t\t       (04000 TO 07777 IN FXFX BANKS)\n# SKEEP3 HOLDS BUGGER WORD DURING SHOWSUM DISPLAY\n# SKEEP4 HOLDS BANK NUMBER AND SUPER BANK NUMBER\n# SKEEP5 COUNTS 2 SUCCESSIVE TC SELF WORDS\n# SKEEP6 CONTROLS ROPECHK OR SHOWSUM OPTION\n# SKEEP7 CONTROLS WHEN ROUNTINE IS IN COMMON FIXED OR FIXED FIXED BANKS\n\nROPECHK\t\tCA\tS-ZERO\t\t# *\n\t\tTS\tSKEEP6\t\t# * -0 FOR ROPECHK.\nSTSHOSUM\tCA\tS+ZERO\t\t# * SHOULD BE ROPECHK\n\n\t\tTS\tSKEEP4\t\t# BANK NUMBER\n\t\tCA\tS+1\nCOMMFX\t\tTS\tSKEEP7\n\t\tCA\tS+ZERO\n\t\tTS\tSKEEP1\n\t\tTS\tSKEEP3\n\t\tCA\tS+1\n\t\tTS\tSKEEP5\t\t# COUNTS DOWN 2 TC SELF WORDS\nCOMADRS\t\tCA\tSKEEP4\n\t\tTS\tL\t\t# TO SET SUPER BANK\n# Page 1401\n\t\tMASK\tHI5\n\t\tAD\tSKEEP3\n\t\tTC\tSUPDACAL\t# SUPER DATA CALL\n\t\tTC\tADSUM\n\t\tAD\tSBIT11\t\t# 02000\n\t\tTC\tADRSCHK\n\nFXFX\t\tCS\tA\n\t\tTS\tSKEEP7\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tCA\tSBIT12\t\t# 04000, STARTING ADDRESS OF BANK 02\n\t\tTC\t+2\n\t\tCA\tSBNK03\t\t# 06000, STARTING ADDRESS OF BANK 03\n\t\tTS\tSKEEP3\n\t\tCA\tS+ZERO\n\t\tTS\tSKEEP1\n\t\tCA\tS+1\n\t\tTS\tSKEEP5\t\t# COUNTS DOWN 2 TC SELF WORDS\nFXADRS\t\tINDEX\tSKEEP3\n\t\tCA\t0000\n\t\tTC\tADSUM\n\t\tTC\tADRSCHK\n\nADSUM\t\tTS\tSKEEP2\n\t\tAD\tSKEEP1\n\t\tTS\tSKEEP1\n\t\tCAF\tS+ZERO\n\t\tAD\tSKEEP1\n\t\tTS\tSKEEP1\n\t\tCS\tSKEEP2\n\t\tAD\tSKEEP3\n\t\tTC\tQ\n\nADRSCHK\t\tLXCH\tA\n\t\tCA\tSKEEP3\n\t\tMASK\tLOW10\t\t# RELATIVE ADDRESS\n\t\tAD\t-MAXADRS\t# SUBTRACT MAX RELATIVE ADDRESS = 1777.\n\t\tEXTEND\n\t\tBZF\tSOPTION\t\t# CHECKSUM FINISHED IF LAST ADDRESS.\n\t\tCCS\tSKEEP5\t\t# IS CHECKSUM FINISHED\n\t\tTC\t+3\t\t# NO\n\t\tTC\t+2\t\t# NO\n\t\tTC\tSOPTION\t\t# GO TO ROPECHK SHOWSUM OPTION\n\t\tCCS\tL\t\t# -0 MEANS A TC SELF WORD.\n\t\tTC\tCONTINU\n\t\tTC\tCONTINU\n\t\tTC\tCONTINU\n\t\tCCS\tSKEEP5\n\t\tTC\tCONTINU +1\n# Page 1402\n\t\tCA\tS-1\n\t\tTC\tCONTINU +1\t# AD IN THE BUGGER WORD\nCONTINU\t\tCA\tS+1\t\t# MAKE SURE TWO CONSECUTIVE TC SELF WORDS\n\t\tTS\tSKEEP5\n\t\tCCS\tSKEEP6\t\t# *\n\t\tCCS\tNEWJOB\t\t# * +1, SHOWSUM\n\t\tTC\tCHANG1\t\t# *\n\t\tTC\t+2\t\t# *\n\t\tTC\tCHECKNJ\t\t# -0 IN SKEEP6 FOR ROPECHK\n\nADRS+1\t\tINCR\tSKEEP3\n\t\tCCS\tSKEEP7\n\t\tTC\tCOMADRS\n\t\tTC\tCOMADRS\n\t\tTC\tFXADRS\n\t\tTC\tFXADRS\n\nNXTBNK\t\tCS\tSKEEP4\n\t\tAD\tLSTBNKCH\t# LAST BANK TO BE CHECKED\n\t\tEXTEND\n\t\tBZF\tENDSUMS\t\t# END OF SUMMING OF BANKS.\n\t\tCA\tSKEEP4\n\t\tAD\tSBIT11\n\t\tTS\tSKEEP4\t\t# 37 TO 40 INCRMTS SKEEP4 BY END RND CARRY\n\t\tTC\tCHKSUPR\n17TO20\t\tCA\tSBIT15\n\t\tADS\tSKEEP4\t\t# SET FOR BANK 20\n\t\tTC\tGONXTBNK\nCHKSUPR\t\tMASK\tHI5\n\t\tEXTEND\n\t\tBZF\tNXTSUPR\t\t# INCREMENT SUPER BANK\n27TO30\t\tAD\tS13BITS\n\t\tEXTEND\n\t\tBZF\t+2\t\t# BANK SET FOR 30\n\t\tTC\tGONXTBNK\n\t\tCA\tSIXTY\t\t# FIRST SUPER BANK\n\t\tADS\tSKEEP4\n\t\tTC\tGONXTBNK\nNXTSUPR\t\tAD\tSUPRCON\t\t# SET BNK 30 + INCR SUPR BNK AND CANCEL\n\t\tADS\tSKEEP4\t\t# ERC BIT OF THE 37 TO 40 ADVANCE.\nGONXTBNK\tCCS\tSKEEP7\n\t\tTC\tCOMMFX\n\t\tCA\tS+1\n\t\tTC\tFXFX\n\t\tCA\tSBIT7\t\t# HAS TO BE LARGER THAN NO OF FXSW BANKS.\n\t\tTC\tCOMMFX\n\nSOPTION\t\tCA\tSKEEP4\n\t\tMASK\tHI5\t\t# = BANK BITS\n\t\tTC\tLEFT5\n# Page 1403\n\t\tTS\tL\t\t# BANK NUMBER BEFORE SUPER BANK\n\t\tCA\tSKEEP4\n\t\tMASK\tS8BITS\t\t# = SUPER BANK BITS\n\t\tEXTEND\n\t\tBZF\tSOPT\t\t# BEFORE SUPER BANK\n\t\tTS\tSR\t\t# SUPER BANK NECESSARY\n\t\tCA\tL\n\t\tMASK\tSEVEN\n\t\tAD\tSR\n\t\tTS\tL\t\t# BANK NUMBER WITH SUPER BANK\nSOPT\t\tCA\tSKEEP6\t\t# *\n\t\tEXTEND\t\t\t# *\n\t\tBZF\t+2\t\t# * ON -0 CONTINUE WITH ROPE CHECK.\n\t\tTC\tSDISPLAY\t# * ON +1 GO TO DISPLAY OF SUM.\n\t\tCCS\tSKEEP1\t\t# FORCE SUM TO ABSOLUTE VALUE.\n\t\tTC\t+2\n\t\tTC\t+2\n\t\tAD\tS+1\n\t\tTS\tSKEEP1\nBNKCHK\t\tCS\tL\t\t# = - BANK NUMBER\n\t\tAD\tSKEEP1\n\t\tAD\tS-1\n\t\tTC\t-1CHK\t\t# CHECK SUM\n\t\tTC\tNXTBNK\n\n\t\tEBANK=\tNEWJOB\nLSTBNKCH\tBBCON*\t\t\t# * CONSTANT, LAST BANK.\n\t\tSBANK=\tLOWSUPER\n"
  },
  {
    "path": "Comanche055/ALARM_AND_ABORT.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     ALARM_AND_ABORT.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 1493-1496\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-07 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname, and page images. Corrected various\n#\t\t\t\ttypos in the transcription of program\n#\t\t\t\tcomments, and these should be back-ported\n#\t\t\t\tto Colossus249.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 1493\n# \tTHE FOLLOWING SUBROUTINE MAY BE CALLED TO DISPLAY A NON-ABORTIVE ALARM CONDITION. IT MAY BE CALLED\n# EITHER IN INTERRUPT OR UNDER EXECUTIVE CONTROL.\n#\n# \tCALLING SEQUENCE IS AS FOLLOWS:\n#\n#\t\tTC\tALARM\n#\t\tOCT\tNNNNN\n#\t\t\t\t\t# (RETURNS HERE)\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG7\n\t\tBANK\n\n\t\tEBANK=\tFAILREG\n\n\t\tCOUNT\t02/ALARM\n\n# ALARM TURNS ON THE PROGRAM ALARM LIGHT, BUT DOES NOT DISPLAY.\n\nALARM\t\tINHINT\n\n\t\tCA\tQ\nALARM2\t\tTS\tALMCADR\n\t\tINDEX\tQ\n\t\tCA\t0\nBORTENT\t\tTS\tL\n\nPRIOENT\t\tCA\tBBANK\n +1\t\tEXTEND\n\t\tROR\tSUPERBNK\t# ADD SUPER BITS.\n\t\tTS\tALMCADR +1\n\nLARMENT\t\tCA\tQ\t\t# STORE RETURN FOR ALARM\n\t\tTS\tITEMP1\n\n\t\tCA\tLOC\n\t\tTS\tLOCALARM\n\t\tCA\tBANKSET\n\t\tTS\tBANKALRM\n\nCHKFAIL1\tCCS\tFAILREG\t\t# IS ANYTHING IN FAILREG\n\t\tTCF\tCHKFAIL2\t# YES TRY NEXT REG\n\t\tLXCH\tFAILREG\n\t\tTCF\tPROGLARM\t# TURN ALARM LIGHT ON FOR FIRST ALARM\n\nCHKFAIL2\tCCS\tFAILREG +1\n\t\tTCF\tFAIL3\n\t\tLXCH\tFAILREG +1\n\t\tTCF\tMULTEXIT\n\nFAIL3\t\tCA\tFAILREG +2\n# Page 1494\n\t\tMASK\tPOSMAX\n\t\tCCS\tA\n\t\tTCF\tMULTFAIL\n\t\tLXCH\tFAILREG +2\n\t\tTCF\tMULTEXIT\n\nPROGLARM\tCS\tDSPTAB +11D\n\t\tMASK\tOCT40400\n\t\tADS\tDSPTAB +11D\n\nMULTEXIT\tXCH\tITEMP1\t\t# OBTAIN RETURN ADDRESS IN A\n\t\tRELINT\n\t\tINDEX\tA\n\t\tTC\t1\n\nMULTFAIL\tCA\tL\n\t\tAD\tBIT15\n\t\tTS\tFAILREG +2\n\n\t\tTCF\tMULTEXIT\n\n# PRIOLARM DISPLAYS V05N09 VIA PRIODSPR WITH 3 RETURNS TO THE USER FROM THE ASTRONAUT AT CALL LOC +1,+2,+3 AND\n# AN IMMEDIATE RETURN TO THE USER AT CALL LOC +4. EXAMPLE FOLLOWS,\n#\t\tCAF\tOCTXX\t\t# ALARM CODE\n#\t\tTC\tBANKCALL\n#\t\tCADR\tPRIOLARM\n#\n#\t\t...\t...\n#\t\t...\t...\n#\t\t...\t...\t\t# ASTRONAUT RETURN\n#\t\tTC\tPHASCHNG\t# IMMEDIATE RETURN TO USER. RESTART\n#\t\tOCT\tX.1\t\t# PHASE CHANGE FOR PRIO DISPLAY\n\n\t\tBANK\t10\n\t\tSETLOC\tDISPLAYS\n\t\tBANK\n\n\t\tCOUNT\t10/DSPLA\n\nPRIOLARM\tINHINT\t\t\t# * * * KEEP IN DISPLAY ROUTINES BANK\n\t\tTS\tL\t\t# SAVE ALARM CODE\n\n\t\tCA\tBUF2\t\t# 2 CADR OF PRIOLARM USER\n\t\tTS\tALMCADR\n\t\tCA\tBUF2 +1\n\t\tTC\tPRIOENT +1\t# * LEAVE L ALONE\n-2SEC\t\tDEC\t-200\t\t# *** DONT MOVE\n\t\tCAF\tV05N09\n\t\tTCF\tPRIODSPR\n\n# Page 1495\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG13\n\t\tBANK\n\n\t\tCOUNT\t02/ALARM\n\nBAILOUT\t\tINHINT\n\t\tCA\tQ\n\t\tTS\tALMCADR\n\n\t\tTC\tBANKCALL\n\t\tCADR\tVAC5STOR\n\n\t\tINDEX\tALMCADR\n\t\tCAF\t0\n\t\tTC\tBORTENT\nOCT40400\tOCT\t40400\n\n\t\tINHINT\nWHIMPER\t\tCA\tTWO\n\t\tAD\tZ\n\t\tTS\tBRUPT\n\t\tRESUME\n\t\tTC\tPOSTJUMP\t# RESUME SENDS CONTROL HERE\n\t\tCADR\tENEMA\n\n\t\tSETLOC\tFFTAG7\n\t\tBANK\n\nPOODOO\t\tINHINT\n\t\tCA\tQ\n\t\tTS\tALMCADR\n\n\t\tTC\tBANKCALL\n\t\tCADR\tVAC5STOR\t# STORE ERASABLES FOR DEBUGGING PURPOSES.\n\n\t\tINDEX\tALMCADR\n\t\tCAF\t0\nABORT2\t\tTC\tBORTENT\n\nOCT77770\tOCT\t77770\t\t# DONT MOVE\n\t\tCA\tV37FLBIT\t# IS AVERAGE G ON\n\t\tMASK\tFLAGWRD7\n\t\tCCS\tA\n\t\tTC\tWHIMPER -1\t# YES.  DONT DO POODOO.  DO BAILOUT.\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tSTATEFLG\n\n\t\tTC\tDOWNFLAG\n# Page 1496\n\t\tADRES\tREINTFLG\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tNODOFLAG\n\n\t\tTC\tBANKCALL\n\t\tCADR\tMR.KLEAN\n\t\tTC\tWHIMPER\n\nCCSHOLE\t\tINHINT\n\t\tCA\tQ\n\t\tTS\tALMCADR\n\t\tTC\tBANKCALL\n\t\tCADR\tVAC5STOR\n\t\tCA\tOCT1103\n\t\tTC\tABORT2\nOCT1103\t\tOCT\t1103\nCURTAINS\tINHINT\n\t\tCA\tQ\n\t\tTC\tALARM2\nOCT217\t\tOCT\t00217\n\t\tTC\tALMCADR\t\t# RETURN TO USER\n\nDOALARM\t\tEQUALS\tENDOFJOB\n# CALLING SEQUENCE FOR VARALARM\n#\n#\t\tCAF\t(ALARM)\n#\t\tTC\tVARALARM\n#\n# VARALARM TURNS ON PROGRAM ALARM LIGHT BUT DOES NOT DISPLAY\nVARALARM\tINHINT\n\n\t\tTS\tL\t\t# SAVE USERS ALARM CODE\n\n\t\tCA\tQ\t\t# SAVE USERS Q\n\t\tTS\tALMCADR\n\n\t\tTC\tPRIOENT\nOCT14\t\tOCT\t14\t\t# DONT MOVE\n\n\t\tTC\tALMCADR\t\t# RETURN TO USER\n\nABORT\t\tEQUALS\tBAILOUT\t\t# *** TEMPORARY UNTIL ABORT CALLS OUT\n"
  },
  {
    "path": "Comanche055/ANGLFIND.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tANGLFIND.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t399-411\n# Mod history:\t2009-05-09 RSB\tAdapted from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.\n#\t\t2009-05-22 RSB\tIn NOGOM2, TC ZEROEROR corrected to\n#\t\t\t\tCADR ZEROEROR.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 399\n\t\tBANK\t15\n\t\tSETLOC\tKALCMON1\n\t\tBANK\n\n\t\tEBANK=\tBCDU\n\n\t\tCOUNT\t22/KALC\n\nKALCMAN3\tTC\tINTPRET\n\t\tRTB\n\t\t\tREADCDUK\t# PICK UP CURRENT CDU ANGLES\n\t\tSTORE\tBCDU\t\t# STORE THE INITIAL S/C ANGLES\n\t\tAXC,2\tTLOAD\t\t# COMPUTE THE TRANSFORMATION FROM\n\t\t\tMIS\t\t# INITIAL S/C AXES TO STABLE MEMBER AXES\n\t\t\tBCDU\t\t# (MIS)\n\t\tCALL\n\t\t\tCDUTODCM\n\t\tAXC,2\tTLOAD\t\t# COMPUTE THE TRANSFORMATION FROM\n\t\t\tMFS\t\t# FINAL S/C AXES TO STABLE MEMBER AXES\n\t\t\tCPHI\t\t# (MFS)\n\t\tCALL\n\t\t\tCDUTODCM\nSECAD\t\tAXC,1\tCALL\t\t# MIS AND MFS ARRAYS CALCULATED\t\t$2\n\t\t\tMIS\n\t\t\tTRANSPOS\n\t\tVLOAD\n\t\tSTADR\n\t\tSTOVL\tTMIS +12D\n\t\tSTADR\n\t\tSTOVL\tTMIS +6\n\t\tSTADR\n\t\tSTORE\tTMIS\t\t# TMIS = TRANSPOSE(MIS) SCALED BY 2\n\t\tAXC,1\tAXC,2\n\t\t\tTMIS\n\t\t\tMFS\n\t\tCALL\n\t\t\tMXM3\n\t\tVLOAD\tSTADR\n\t\tSTOVL\tMFI +12D\n\t\tSTADR\n\t\tSTOVL\tMFI +6\n\t\tSTADR\n\t\tSTORE\tMFI\t\t# MFI = TMIS MFS (SCALED BY 4)\n\t\tSETPD\tCALL\t\t# TRANSPOSE MFI IN PD LIST\n\t\t\t18D\n\t\t\tTRNSPSPD\n\t\tVLOAD\tSTADR\n\t\tSTOVL\tTMFI +12D\n\t\tSTADR\n\t\tSTOVL\tTMFI +6\n# Page 400\n\t\tSTADR\n\t\tSTORE\tTMFI\t\t# TMFI = TRANSPOSE (MFI)  SCALED BY 4\n\n# CALCULATE COFSKEW AND MFISYM\n\n\t\tDLOAD\tDSU\n\t\t\tTMFI +2\n\t\t\tMFI +2\n\t\tPDDL\tDSU\t\t# CALCULATE COF SCALED BY 2/SIN(AM)\n\t\t\tMFI +4\n\t\t\tTMFI +4\n\t\tPDDL\tDSU\n\t\t\tTMFI +10D\n\t\t\tMFI +10D\n\t\tVDEF\n\t\tSTORE\tCOFSKEW\t\t# EQUALS MFISKEW\n\n# CALCULATE AM AND PROCEED ACCORDING TO ITS MAGNITUDE\n\n\t\tDLOAD\tDAD\n\t\t\tMFI\n\t\t\tMFI +16D\n\t\tDSU\tDAD\n\t\t\tDP1/4TH\n\t\t\tMFI +8D\n\t\tSTORE\tCAM\t\t# CAM = (MFI0+MFI4+MFI8-1)/2 HALF SCALE\n\t\tARCCOS\n\t\tSTORE\tAM\t\t# AM=ARCCOS(CAM)  (AM SCALED BY 2)\n\t\tDSU\tBPL\n\t\t\tMINANG\n\t\t\tCHECKMAX\n\t\tEXIT\t\t\t# MANEUVER LESS THAN 0.25 DEG\n\t\tINHINT\t\t\t# GO DIRECTLY INTO ATTITUDE HOLD\n\t\tCS\tONE\t\t# ABOUT COMMANDED ANGLES\n\t\tTS\tHOLDFLAG\t# NOGO WILL STOP ANY RATE AND SET UP FOR A\n\t\tTC\tLOADCDUD\t# GOOD RETURN\n\t\tTCF\tNOGO\n\nCHECKMAX\tDLOAD\tDSU\n\t\t\tAM\n\t\t\tMAXANG\n\t\tBPL\tVLOAD\n\t\t\tALTCALC\t\t# UNIT\n\t\t\tCOFSKEW\t\t# COFSKEW\n\t\tUNIT\n\t\tSTORE\tCOF\t\t# COF IS THE MANEUVER AXIS\n\t\tGOTO\t\t\t# SEE IF MANEUVER GOES THRU GIMBAL LOCK\n\t\t\tLOCSKIRT\nALTCALC\t\tVLOAD\tVAD\t\t# IF AM GREATER THAN 170 DEGREES\n\t\t\tMFI\n# Page 401\n\t\t\tTMFI\n\t\tVSR1\n\t\tSTOVL\tMFISYM\n\t\t\tMFI +6\n\t\tVAD\tVSR1\n\t\t\tTMFI +6\n\t\tSTOVL\tMFISYM +6\n\t\t\tMFI +12D\n\t\tVAD\tVSR1\n\t\t\tTMFI +12D\n\t\tSTORE\tMFISYM +12D\t# MFISYM=(MFI+TMFI)/2\tSCALED BY 4\n\n# CALCULATE COF\n\n\t\tDLOAD\tSR1\n\t\t\tCAM\n\t\tPDDL\tDSU\t\t# PD0 CAM\t\t \t       $4\n\t\t\tDPHALF\n\t\t\tCAM\n\t\tBOVB\tPDDL\t\t# PD2 1 - CAM\t\t\t       $2\n\t\t\tSIGNMPAC\n\t\t\tMFISYM +16D\n\t\tDSU\tDDV\n\t\t\t0\n\t\t\t2\n\t\tSQRT\tPDDL\t\t# COFZ = SQRT(MFISYM8-CAM)/(1-CAM)\n\t\t\tMFISYM +8D\t#\t\t\t  \t $ ROOT 2\n\t\tDSU\tDDV\n\t\t\t0\n\t\t\t2\n\t\tSQRT\tPDDL\t\t# COFY = SQRT(MFISYM4-CAM)/(1-CAM) $ROOT2\n\t\t\tMFISYM\n\t\tDSU\tDDV\n\t\t\t0\n\t\t\t2\n\t\tSQRT\tVDEF\t\t# COFX = SQRT(MFISYM-CAM)/(1-CAM) $ROOT 2\n\t\tUNIT\n\t\tSTORE\tCOF\n\n# DETERMINE LARGEST COF AND ADJUST ACCORDINGLY\n\nCOFMAXGO\tDLOAD\tDSU\n\t\t\tCOF\n\t\t\tCOF +2\n\t\tBMN\tDLOAD\t\t# COFY G COFX\n\t\t\tCOMP12\n\t\t\tCOF\n\t\tDSU\tBMN\n\t\t\tCOF +4\n# Page 402\n\t\t\tMETHOD3\t\t# COFZ G COFX OR COFY\n\t\tGOTO\n\t\t\tMETHOD1\t\t# COFX G COFY OR COFZ\nCOMP12\t\tDLOAD\tDSU\n\t\t\tCOF +2\n\t\t\tCOF +4\n\t\tBMN\n\t\t\tMETHOD3\t\t# COFZ G COFY OR COFX\n\nMETHOD2\t\tDLOAD\tBPL\t\t# COFY MAX\n\t\t\tCOFSKEW +2\t# UY\n\t\t\tU2POS\n\t\tVLOAD\tVCOMP\n\t\t\tCOF\n\t\tSTORE\tCOF\nU2POS\t\tDLOAD\tBPL\n\t\t\tMFISYM +2\t# UX UY\n\t\t\tOKU21\n\t\tDLOAD\tDCOMP\t\t# SIGN OF UX OPPOSITE TO UY\n\t\t\tCOF\n\t\tSTORE\tCOF\nOKU21\t\tDLOAD\tBPL\n\t\t\tMFISYM +10D\t# UY UZ\n\t\t\tLOCSKIRT\n\t\tDLOAD\tDCOMP\t\t# SIGN OF UZ OPPOSITE TO UY\n\t\t\tCOF +4\n\t\tSTORE\tCOF +4\n\t\tGOTO\n\t\t\tLOCSKIRT\nMETHOD1\t\tDLOAD\tBPL\t\t# COFX MAX\n\t\t\tCOFSKEW\t\t# UX\n\t\t\tU1POS\n\t\tVLOAD\tVCOMP\n\t\t\tCOF\n\t\tSTORE\tCOF\nU1POS\t\tDLOAD\tBPL\n\t\t\tMFISYM +2\t# UX UY\n\t\t\tOKU12\n\t\tDLOAD\tDCOMP\n\t\t\tCOF +2\t\t# SIGN OF UY OPPOSITE TO UX\n\t\tSTORE\tCOF +2\nOKU12\t\tDLOAD\tBPL\n\t\t\tMFISYM +4\t# UX UZ\n\t\t\tLOCSKIRT\n\t\tDLOAD\tDCOMP\t\t# SIGN OF UZ OPPOSITE TO UY\n\t\t\tCOF +4\n\t\tSTORE\tCOF +4\n\t\tGOTO\n\t\t\tLOCSKIRT\nMETHOD3\t\tDLOAD\tBPL\t\t# COFZ MAX\n# Page 403\n\t\t\tCOFSKEW\t+4\t# UZ\n\t\t\tU3POS\n\t\tVLOAD\tVCOMP\n\t\t\tCOF\n\t\tSTORE\tCOF\nU3POS\t\tDLOAD\tBPL\n\t\t\tMFISYM +4\t# UX UZ\n\t\t\tOKU31\n\t\tDLOAD\tDCOMP\n\t\t\tCOF\t\t# SIGN OF UX OPPOSITE TO UZ\n\t\tSTORE\tCOF\nOKU31\t\tDLOAD\tBPL\n\t\t\tMFISYM +10D\t# UY UZ\n\t\t\tLOCSKIRT\n\t\tDLOAD\tDCOMP\n\t\t\tCOF +2\t\t# SIGN OF UY OPPOSITE TO UZ\n\t\tSTORE\tCOF +2\n\t\tGOTO\n\t\t\tLOCSKIRT\n\n# Page 404\n# MATRIX OPERATIONS\n\nMXM3\t\tSETPD\t\t\t# MXM3 MULTIPLIES 2 3X3 MATRICES\n\t\t\t0\t\t# AND LEAVES RESULT IN PD LIST\n\t\tDLOAD*\tPDDL*\t\t# ADDRESS OF 1ST MATRIX IN XR1\n\t\t\t12D,2\t\t# ADDRESS OF 2ND MATRIX IN XR2\n\t\t\t6,2\n\t\tPDDL*\tVDEF\t\t# DEFINE VECTOR M2(COL 1)\n\t\t\t0,2\n\t\tMXV*\tPDDL*\t\t# M1XM2(COL 1) IN PD\n\t\t\t0,1\n\t\t\t14D,2\n\t\tPDDL*\tPDDL*\n\t\t\t8D,2\n\t\t\t2,2\n\t\tVDEF\tMXV*\t\t# DEFINE VECTOR M2(COL 2)\n\t\t\t0,1\n\t\tPDDL*\tPDDL*\t\t# M1XM2(COL 2) IN PD\n\t\t\t16D,2\n\t\t\t10D,2\n\t\tPDDL*\tVDEF\t\t# DEFINE VECTOR M2(COL 3)\n\t\t\t4,2\n\t\tMXV*\tPUSH\t\t# M1XM2(COL 3) IN PD\n\t\t\t0,1\n\t\tGOTO\n\t\t\tTRNSPSPD\t# REVERSE ROWS AND COLS IN PD AND\n\t\t\t\t\t# RETURN WITH M1XM2 IN PD LIST\n\nTRANSPOS\tSETPD\tVLOAD*\t\t# TRANSPOS TRANSPOSES A 3X3 MATRIX\n\t\t\t0\t\t#  AND LEAVES RESULT IN PD LIST\n\t\t\t0,1\t\t# MATRIX ADDRESS IN XR1\n\t\tPDVL*\tPDVL*\n\t\t\t6,1\n\t\t\t12D,1\n\t\tPUSH\t\t\t# MATRIX IN PD\nTRNSPSPD\tDLOAD\tPDDL\t\t# ENTER WITH MATRIX IN PD LIST\n\t\t\t2\n\t\t\t6\n\t\tSTODL\t2\n\t\tSTADR\n\t\tSTODL\t6\n\t\t\t4\n\t\tPDDL\n\t\t\t12D\n\t\tSTODL\t4\n\t\tSTADR\n\t\tSTODL\t12D\n\t\t\t10D\n\t\tPDDL\n# Page 405\n\t\t\t14D\n\t\tSTODL\t10D\n\t\tSTADR\n\t\tSTORE\t14D\n\t\tRVQ\t\t\t# RETURN WITH TRANSPOSED MATRIX IN PD LIST\nMINANG\t\tDEC\t.00069375\nMAXANG\t\tDEC\t.472222\n# GIMBAL LOCK CONSTANTS\n\n# D = MGA CORRESPONDING TO GIMBAL LOCK = 60 DEGREES\n# NGL = BUFFER ANGLE (TO AVOID DIVISIONS BY ZERO) = 2 DEGREES\n\nSD\t\tDEC\t.433015\t\t# = SIN(D)\t\t\t\t$2\nK3S1\t\tDEC\t.86603\t\t# = SIN(D)\t\t\t\t$2\nK4\t\tDEC\t-.25\t\t# = - COS(D)\t\t\t\t$2\nK4SQ\t\tDEC\t.125\t\t# = COS(D)COS(D)\t\t\t$2\nSNGLCD\t\tDEC\t.008725\t\t# = SIN(NGL)COS(D)\t\t\t$2\nCNGL\t\tDEC\t.499695\t\t# = COS(NGL)\t\t\t\t$2\nREADCDUK\tINHINT\t\t\t# LOAD T(MPAC) WITH THE CURRENT CDU ANGLES\n\t\tCA\tCDUZ\n\t\tTS\tMPAC +2\n\t\tEXTEND\n\t\tDCA\tCDUX\n\t\tRELINT\n\t\tTCF\tTLOAD +6\n\t\tBANK\t16\n\t\tSETLOC\tKALCMON2\n\t\tBANK\n\n\t\tCOUNT*\t$$/KALC\n\nCDUTODCM\tAXT,1\tSSP\t\t# SUBROUTINE TO COMPUTE  DIRECTION COSINE\n\t\tOCT\t3\t\t# MATRIX RELATING S/C AXES TO STABLE\n\t\t\tS1\t\t# MEMBER AXES FROM 3 CDU ANGLES IN T(MPAC)\n\t\tOCT\t1\t\t# SET XR1, S1 AND PD FOR LOOP\n\t\tSTORE\t7\n\t\tSETPD\n\t\t\t0\nLOOPSIN\t\tSLOAD*\tRTB\n\t\t\t10D,1\n\t\t\tCDULOGIC\n\t\tSTORE\t10D\t\t# LOAD PD WITH 0 SIN(PHI)\n\t\tSIN\tPDDL\t\t#\t       2 COS(PHI)\n\t\t\t10D\t\t#\t       4 SIN(THETA)\n\t\tCOS\tPUSH\t\t#\t       6 COS(THETA)\n\t\tTIX,1\tDLOAD\t\t#\t       8 SIN(PSI)\n\t\t\tLOOPSIN\t\t#\t      10 COS(PSI)\n\t\t\t6\n\t\tDMP\tSL1\n\t\t\t10D\n# Page 406\n\t\tSTORE\t0,2\n\t\tDLOAD\n\t\t\t4\n\t\tDMP\tPDDL\n\t\t\t0\t\t# (PD6 SIN(THETA)SIN(PHI))\n\t\t\t6\n\t\tDMP\tDMP\n\t\t\t8D\n\t\t\t2\n\t\tSL1\tBDSU\n\t\t\t12D\n\t\tSL1\n\t\tSTORE\t2,2\n\t\tDLOAD\n\t\t\t2\n\t\tDMP\tPDDL\t\t# (PD7 COS(PHI)SIN(THETA)) SCALED 4\n\t\t\t4\n\t\t\t6\n\t\tDMP\tDMP\n\t\t\t8D\n\t\t\t0\n\t\tSL1\n\t\tDAD\tSL1\n\t\t\t14D\n\t\tSTORE\t4,2\n\t\tDLOAD\n\t\t\t8D\n\t\tSTORE\t6,2\n\t\tDLOAD\n\t\t\t10D\n\t\tDMP\tSL1\n\t\t\t2\n\t\tSTORE\t8D,2\n\t\tDLOAD\n\t\t\t10D\n\t\tDMP\tDCOMP\n\t\t\t0\n\t\tSL1\n\t\tSTORE\t10D,2\n\t\tDLOAD\n\t\t\t4\n\t\tDMP\tDCOMP\n\t\t\t10D\n\t\tSL1\n\t\tSTORE\t12D,2\n\t\tDLOAD\n\t\tDMP\tSL1\t\t# (PUSH UP 7)\n\t\t\t8D\n\t\tPDDL\tDMP\t\t# (PD7 COS(PHI)SIN(THETA)SIN(PSI)) SCALE4\n\t\t\t6\n# Page 407\n\t\t\t0\n\t\tDAD\tSL1\t\t#  (PUSH UP 7)\n\t\tSTADR\t\t\t# C7=COS(PHI)SIN(THETA)SIN(PSI)\n\t\tSTORE\t14D,2\n\t\tDLOAD\n\t\tDMP\tSL1\t\t#  (PUSH UP 6)\n\t\t\t8D\n\t\tPDDL\tDMP\t\t#  (PD6 SIN(THETA)SIN(PHI)SIN(PSI)) SCALE4\n\t\t\t6\n\t\t\t2\n\t\tDSU\tSL1\t\t#  (PUSH UP 6)\n\t\tSTADR\n\t\tSTORE\t16D,2\t\t# C8=-SIN(THETA)SIN(PHI)SIN(PSI)\n\t\tRVQ\t\t\t#  +COS(THETA)COS(PHI)\nENDOCM\t\tEQUALS\n\n\t\tBANK\t15\n\t\tSETLOC\tKALCMON1\n\t\tBANK\n\n# CALCULATION OF THE MATRIX DEL......\n#\n#\t*      *               --T           *\n#\tDEL = (IDMATRIX)COS(A)+UU (1-COS(A))+UX SIN(A)\t\tSCALED 1\n#\n#             -\n#\tWHERE U IS A UNIT VECTOR (DP SCALED 2) ALONG THE AXIS OF ROTATION.\n#\tA IS THE ANGLE OF ROTATION (DP SCALED 2)\n#\t\t\t\t\t   -\n#\tUPON ENTRY THE STARTING ADDRESS OF U IS COF, AND A IS IN MPAC\n\n\t\tCOUNT\t22/KALC\n\nDELCOMP\t\tSETPD\tPUSH\t\t# MPAC CONTAINS THE ANGLE A\n\t\t\t0\n\t\tSIN\tPDDL\t\t# PD0 = SIN(A)\n\t\tCOS\tPUSH\t\t# PD2 = COS(A)\n\t\tSR2\tPDDL\t\t# PD2 = COS(A)\t\t\t\t$8\n\t\tBDSU\tBOVB\t\t# PD4 = 1-COS(A)\t\t\t$2\n\t\t\tDPHALF\n\t\t\tSIGNMPAC\n\n# COMPUTE THE DIAGONAL COMPONENTS OF DEL\n\n\t\tPDDL\n\t\t\tCOF\n\t\tDSQ\tDMP\n\t\t\t4\n\t\tDAD\tSL3\n# Page 408\n\t\t\t2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tDEL\t\t# UX UX(U-COS(A)) +COS(A)\t\t$1\n\t\t\tCOF +2\n\t\tDSQ\tDMP\n\t\t\t4\n\t\tDAD\tSL3\n\t\t\t2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tDEL +8D\t\t# UY UY(1-COS(A)) +COS(A)\t\t$1\n\t\t\tCOF +4\n\t\tDSQ\tDMP\n\t\t\t4\n\t\tDAD\tSL3\n\t\t\t2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTORE\tDEL +16D\t# UZ UZ(1-COS(A)) +COS(A)\t\t$1\n\n# COMPUTE THE OFF DIAGONAL TERMS OF DEL\n\n\t\tDLOAD\tDMP\n\t\t\tCOF\n\t\t\tCOF +2\n\t\tDMP\tSL1\n\t\t\t4\n\t\tPDDL\tDMP\t\t# D6  UX UY (1-COS A)\t\t\t$ 4\n\t\t\tCOF +4\n\t\t\t0\n\t\tPUSH\tDAD\t\t# D8  UZ SIN A\t\t\t\t$ 4\n\t\t\t6\n\t\tSL2\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tDEL +6\n\t\tBDSU\tSL2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tDEL +2\n\t\t\tCOF\n\t\tDMP\tDMP\n\t\t\tCOF +4\n\t\t\t4\n\t\tSL1\tPDDL\t\t# D6  UX UZ (1-COS A )\t\t$ 4\n\t\t\tCOF +2\n\t\tDMP\tPUSH\t\t# D8  UY SIN(A)\n\t\t\t0\n\t\tDAD\tSL2\n\t\t\t6\n# Page 409\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tDEL +4\t\t# UX UZ (1-COS(A))+UY SIN(A)\n\t\tBDSU\tSL2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tDEL +12D\t# UX UZ (U-COS(A))-UY SIN(A)\n\t\t\tCOF +2\n\t\tDMP\tDMP\n\t\t\tCOF +4\n\t\t\t4\n\t\tSL1\tPDDL\t\t# D6  UY UZ (1-COS(A))\t\t$ 4\n\t\t\tCOF\n\t\tDMP\tPUSH\t\t# D6  UX SIN(A)\n\t\t\t0\n\t\tDAD\tSL2\n\t\t\t6\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tDEL +14D\t# UY UZ(1-COS(A)) +UX SIN(A)\n\t\tBDSU\tSL2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTORE\tDEL +10D\t# UY UZ (1-COS(A)) -UX SIN(A)\n\t\tRVQ\n\n# DIRECTION COSINE MATRIX TO CDU ANGLE ROUTINE\n# X1 CONTAINS THE COMPLEMENT OF THE STARTING ADDRESS FOR MATRIX (SCALED 2)\n# LEAVES CDU ANGLES SCALED 2PI IN V(MPAC)\n# COS(MGA) WILL BE LEFT IN S1 (SCALED 1)\n#\n# THE DIRECTION COSINE MATRIX RELATING S/C AXES TO STABLE MEMBER AXES CAN BE WRITTEN AS***\n#\n#\tC =COS(THETA)COS(PSI)\n#\t 0\n#\tC =-COS(THETA)SIN(PSI)COS(PHI)+SI (THETA)SIN(PHI)\n#\t 1\n#\tC =COS(THETA)SIN(PSI)SIN(PHI) + S N(THETA)COS(PHI)\n#\t 2\n#\tC =SIN(PSI)\n#\t 3\n#\tC =COS(PSI)COS(PHI)\n#\t 4\n#\tC =-COS(PSI)SIN(PHI)\n#\t 5\n#\tC =-SIN(THETA)COS(PSI)\n#\t 6\n#\tC =SIN(THETA)SIN(PSI)COS(PHI)+COS THETA)SIN(PHI)\n#\t 7\n# Page 410\n#\tC =-SIN(THETA)SIN(PSI)SIN(PHI)+COS(THETA)COS(PHI)\n#\t 8\n#\n#\tWHERE\tPHI = OGA\n#\t\tTHETA = IGA\n#\t\tPSI = MGA\n\nDCMTOCDU\tDLOAD*\tARCSIN\n\t\t\t6,1\n\t\tPUSH\tCOS\t\t# PD +0\t\tPSI\n\t\tSL1\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTORE\tS1\n\t\tDLOAD*\tDCOMP\n\t\t\t12D,1\n\t\tDDV\tARCSIN\n\t\t\tS1\n\t\tPDDL*\tBPL\t\t# PD +2\t\tTHETA\n\t\t\t0,1\t\t# MUST CHECK THE SIGN OF COS(THETA)\n\t\t\tOKTHETA\t\t# TO DETERMINE THE PROPER QUADRANT\n\t\tDLOAD\tDCOMP\n\t\tBPL\tDAD\n\t\t\tSUHALFA\n\t\t\tDPHALF\n\t\tGOTO\n\t\t\tCALCPHI\nSUHALFA\t\tDSU\n\t\t\tDPHALF\nCALCPHI\t\tPUSH\nOKTHETA\t\tDLOAD*\tDCOMP\n\t\t\t10D,1\n\t\tDDV\tARCSIN\n\t\t\tS1\n\t\tPDDL*\tBPL\t\t# PUSH DOWN PHI\n\t\t\t8D,1\n\t\t\tOKPHI\n\t\tDLOAD\tDCOMP\t\t# PUSH UP PHI\n\t\tBPL\tDAD\n\t\t\tSUHALFAP\n\t\t\tDPHALF\n\t\tGOTO\n\t\t\tVECOFANG\nSUHALFAP\tDSU\tGOTO\n\t\t\tDPHALF\n\t\t\tVECOFANG\nOKPHI\t\tDLOAD\t\t\t# PUSH UP PHI\nVECOFANG\tVDEF\tRVQ\n\n# Page 411\n# ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS\n\nNOGOM2\t\tINHINT\t\t\t# THIS LOCATION ACCESSED BY A BZMF NOGO -2\n\t\tTC\tBANKCALL\n\t\tCADR\tZEROEROR\n\nNOGO\t\tINHINT\n\t\tTC\tSTOPRATE\n\n\t\t\t\t\t# TERMINATE MANEUVER\n\t\tCAF\tTWO\t\t# NOTE - ALL RETURNS ARE NOW MADE VIA\n\t\tTC\tWAITLIST\t# GOODEND\n\t\tEBANK=\tBCDU\n\t\t2CADR\tENDMANU\n\n\t\tTCF\tENDOFJOB\n\n"
  },
  {
    "path": "Comanche055/ASSEMBLY_AND_OPERATION_INFORMATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tASSEMBLY_AND_OPERATION_INFORMATION.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Mod history:\t2009-05-05 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 2\n\n# ASSEMBLY AND OPERATIONS INFORMATION\n# TAGS FOR RELATIVE SETLOC AND BLANK BANK CARDS\n# SUBROUTINE CALLS\n#\n#\n#\tCOMERASE\n#\t\tERASABLE ASSIGNMENTS\n#\tCOMAID\n#\t\tINTERRUPT LEAD INS\n#\t\tT4RUPT PROGRAM\n#\t\tDOWNLINK LISTS\n#\t\tFRESH START AND RESTART\n#\t\tRESTART TABLES\n#\t\tSXTMARK\n#\t\tEXTENDED VERBS\n#\t\tPINBALL NOUN TABLES\n#\t\tCSM GEOMETRY\n#\t\tIMU COMPENSATION PACKAGE\n#\t\tPINBALL GAME  BUTTONS AND LIGHTS\n#\t\tR60,R62\n#\t\tANGLFIND\n#\t\tGIMBAL LOCK AVOIDANCE\n#\t\tKALCMANU STEERING\n#\t\tSYSTEM TEST STANDARD LEAD INS\n#\t\tIMU CALIBRATION AND ALIGNMENT\n#\tCOMEKISS\n#\t\tGROUND TRACKING DETERMINATION PROGRAM - P21\n#\t\tP34-P35, P74-P75\n#\t\tR31\n#\t\tP76\n#\t\tR30\n#\t\tSTABLE ORBIT - P38-P39\n#\tTROUBLE\n#\t\tP11\n#\t\tTPI SEARCH\n#\t\tP20-P25\n#\t\tP30,P37\n#\t\tP32-P33, P72-P73\n#\t\tP40-P47\n#\t\tP51-P53\n#\t\tLUNAR AND SOLAR EPHEMERIDES SUBROUTINES\n#\t\tP61-P67\n#\t\tSERVICER207\n#\t\tENTRY LEXICON\n#\t\tREENTRY CONTROL\n#\t\tCM BODY ATTITUDE\n#\t\tP37,P70\n#\t\tS-BAND ANTENNA FOR CM\n#\tTVCDAPS\n#\t\tTVCINITIALIZE\n# Page 3\n#\t\tTVCEXECUTIVE\n#\t\tTVCMASSPROP\n#\t\tTVCRESTARTS\n#\t\tTVCDAPS\n#\t\tTVCSTROKETEST\n#\t\tTVCROLLDAP\n#\t\tMYSUBS\n#\t\tRCS-CSM DIGITAL AUTOPILOT\n#\t\tAUTOMATIC MANEUVERS\n#\t\tRCS-CSM DAP EXECUTIVE PROGRAMS\n#\t\tJET SELECTION LOGIC\n#\t\tCM ENTRY DIGITAL AUTOPILOT\n#\tCHIEFTAN\n#\t\tDOWN-TELEMETRY PROGRAM\n#\t\tINTER-BANK COMMUNICATION\n#\t\tINTERPRETER\n#\t\tFIXED-FIXED CONSTANT POOL\n#\t\tINTERPRETIVE CONSTANTS\n#\t\tSINGLE PRECISION SUBROUTINES\n#\t\tEXECUTIVE\n#\t\tWAITLIST\n#\t\tLATITUDE LONGITUDE SUBROUTINES\n#\t\tPLANETARY INERTIAL ORIENTATION\n#\t\tMEASUREMENT INCORPORATION\n#\t\tCONIC SUBROUTINES\n#\t\tINTEGRATION INITIALIZATION\n#\t\tORBITAL INTEGRATION\n#\t\tINFLIGHT ALIGNMENT ROUTINES\n#\t\tPOWERED FLIGHT SUBROUTINES\n#\t\tTIME OF FREE FALL\n#\t\tSTAR TABLES\n#\t\tAGC BLOCK TWO SELF-CHECK\n#\t\tPHASE TABLE MAINTENANCE\n#\t\tRESTARTS ROUTINE\n#\t\tIMU MODE SWITCHING ROUTINES\n#\t\tKEYRUPT, UPRUPT\n#\t\tDISPLAY INTERFACE ROUTINES\n#\t\tSERVICE ROUTINES\n#\t\tALARM AND ABORT\n#\t\tUPDATE PROGRAM\n#\t\tRTB OP CODES\n#\n#\n#       SYMBOL TABLE LISTING\n#       UNREFERENCED SYMBOL LISTING\n#       ERASABLE & EQUALS CROSS-REFERENCE TABLE\n#       SUMMARY OF SYMBOL TABLE LISTINGS\n#       MEMORY TYPE & AVAILABILITY DISPLAY\n#       COUNT TABLE\n#       PARAGRAPHS GENERATED FOR THIS ASSEMBLY\n# Page 4\n#       OCTAL LISTING\n#       OCCUPIED LOCATIONS TABLE\n#       SUBROS CALLED & PROGRAM STATUS\n\n# Page 5\n# VERB LIST FOR CSM\n\n# REGULAR VERBS\n\n# 00 NOT IN USE\n# 01 DISPLAY OCTAL COMP 1 IN R1\n# 02 DISPLAY OCTAL COMP 2 IN R1\n# 03 DISPLAY OCTAL COMP 3 IN R1\n# 04 DISPLAY OCTAL COMP 1,2 IN R1,R2\n# 05 DISPLAY OCTAL COMP 1,2,3 IN R1,R2,R3\n# 06 DISPLAY DECIMAL IN R1 OR R1,R2 OR R1,R2,R3\n# 07 DISPLAY DP DECIMAL IN R1,R2 (TEST ONLY)\n# 08\n# 09\n# 10\n# 11 MONITOR OCTAL COMP 1 IN R1\n# 12 MONITOR OCTAL COMP 2 IN R1\n# 13 MONITOR OCTAL COMP 3 IN R1\n# 14 MONITOR OCTAL COMP 1,2, IN R1,R2\n# 15 MONITOR OCTAL COMP 1,2,3 IN R1,R2,R3\n# 16 MONITOR DECIMAL IN R1 OR R1,R2 OR R1,R2,R3\n# 17 MONITOR DP DECIMAL IN R1,R2 (TEST ONLY)\n# 18\n# 19\n# 20\n# 21 LOAD COMPONENT 1 INTO R1\n# 22 LOAD COMPONENT 2 INTO R2\n# 23 LOAD COMPONENT 3 INTO R3\n# 24 LOAD COMPONENT 1,2 INTO R1,R2\n# 25 LOAD COMPONENT 1,2,3 INTO R1,R2,R3\n# 26\n# 27 DISPLAY FIXED MEMORY\n# 28\n# 29\n# 30 REQUEST EXECUTIVE\n# 31 REQUEST WAITLIST\n# 32 RECYCLE PROGRAM\n# 33 PROCEED WITHOUT DSKY INPUTS\n# 34 TERMINATE FUNCTION\n# 35 TEST LIGHTS\n# 36 REQUEST FRESH START\n# 37 CHANGE PROGRAM (MAJOR MODE)\n# 38\n# 39\n\n# Page 6\n\n# EXTENDED VERBS\n\n# 40 ZERO CDU-S\n# 41 COARSE ALIGN CDU-S\n# 42 FINE ALIGN IMU-S\n# 43 LOAD IMU ATT ERROR METERS\n# 44 SET   SURFACE FLAG\n# 45 RESET SURFACE FLAG\n# 46 ESTABLISH G+C CONTROL\n# 47 MOVE LM STATE VECTOR INTO CM STATE VECTOR.\n# 48 REQUEST DAP DATA LOAD ROUTINE (R03)\n# 49 REQUEST CREW DEFINED MANEUVER ROUTINE (R62)\n# 50 PLEASE PERFORM\n# 51 PLEASE MARK\n# 52 MARK ON OFFSET LANDING SITE\n# 53 PLEASE PERFORM ALTERNATE LOS MARK\n# 54 REQUEST RENDEZVOUS BACKUP SIGHTING MARK ROUTINE (R23)\n# 55 INCREMENT AGC TIME (DECIMAL)\n# 56 TERMINATE TRACKING (P20 + P25)\n# 57 REQUEST RENDEZVOUS SIGHTING MARK ROUTINE (R21)\n# 58 RESET STICK FLAG\n# 59 PLEASE CALIBRATE\n# 60 SET ASTRONAUT TOTAL ATTITUDE (N17) TO PRESENT ATTITUDE\n# 61 DISPLAY DAP ATTITUDE ERROR\n# 62 DISPLAY TOTAL ATTITUDE ERROR (WRT N22 (THETAD))\n# 63 DISPLAY TOTAL ASTRONAUT ATTITUDE ERROR (WRT N17 (CPHIX))\n# 64 REQUEST S-BAND ANTENNA ROUTINE\n# 65 OPTICAL VERIFICATION OF PRELAUNCH ALIGNMENT\n# 66 VEHICLES ARE ATTACHED.  MOVE THIS VEHICLE STATE TO OTHER VEHICLE.\n# 67\n# 68 CSM STROKE TEST ON\n# 69 CAUSE RESTART\n# 70 UPDATE LIFTOFF TIME\n# 71 UNIVERSAL UPDATE-BLOCK  ADR\n# 72 UNIVERSAL UPDATE-SINGLE ADR\n# 73 UPDATE AGC TIME (OCTAL)\n# 74 INITIALIZE ERASABLE DUMP VIA DOWNLINK\n# 75 BACKUP LIFTOFF\n# 76 SET PREFERRED ATTITUDE FLAG\n# 77 RESET PREFERRED ATTITUDE FLAG\n# 78 UPDATE PRELAUNCH AZIMUTH\n# 79 REQUEST LUNAR LANDMARK SELECTION ROUTINE (R35)\n# 80 UPDATE LEM STATE VECTOR\n# 81 UPDATE CSM STATE VECTOR\n# 82 REQUEST ORBIT PARAM DISPLAY (R30)\n# 83 REQUEST REND  PARAM DISPLAY (R31)\n# 84 START TARGET DELTA V (R32)\n# 85 REQUEST RENDEZVOUS PARAMETER DISPLAY NO. 2 (R34)\n# 86 REJECT RENDEZVOUS BACKUP SIGHTING MARK\n# 87 SET VHF RANGE FLAG\n# Page 7\n# 88 RESET VHF RANGE FLAG\n# 89 REQUEST RENDEZVOUS FINAL ATTITUDE ROUTINE (R63)\n# 90 REQUEST RENDEZVOUS OUT OF PLANE DISPLAY ROUTINE (R36)\n# 91 DISPLAY BANK SUM\n# 92 OPERATE IMU PERFORMANCE TEST (P07)\n# 93 ENABLE W MATRIX INITIALIZATION\n# 94 PERFORM CYSLUNAR ATTITUDE MANEUVER (P23)\n# 95 NO UPDATE OF EITHER STATE VECTOR (P20 OR P22)\n# 96 TERMINATE INTEGRATION AND GO TO P00\n# 97 PERFORM ENGINE FAIL PROCEDURE\n# 98 ENABLE TRANSLUNAR INJECT\n# 99 PLEASE ENABLE ENGINE\n\n# Page 8\n# IN THE FOLLOWING NOUN LIST THE :NO LOAD: RESTRICTION MEANS THE NOUN\n# CONTAINS AT LEAST ONE COMPONENT WHICH CANNOT BE LOADED, I.E. OF\n# SCALE TYPE L (MIN/SEC) OR PP (2 INTEGERS).\n# IN THIS CASE VERBS 24 AND 25 ARE NOT ALLOWED, BUT VERBS 21, 22 OR 23\n# MAY BE USED TO LOAD ANY OF THE NOUN:S COMPONENTS WHICH ARE NOT OF THE\n# ABOVE SCALE TYPES.\n# THE :DEC ONLY: RESTRICTION MEANS ONLY DECIMAL OPERATION IS ALLOWED ON\n# EVERY COMPONENT IN THE NOUN. (NOTE THAT :NO LOAD: IMPLIES :DEC ONLY:.)\n\n# NORMAL NOUNS\t\t\t\t   COMPONENTS\tSCALE AND DECIMAL POINT\t\tRESTRICTIONS\n\n# 00\tNOT IN USE\n# 01\tSPECIFY MACHINE ADDRESS (FRACTIONAL)\t3COMP\t.XXXXX FOR EACH\n# 02\tSPECIFY MACHINE ADDRESS (WHOLE)\t\t3COMP\tXXXXX. FOR EACH\n# 03\tSPECIFY MACHINE ADDRESS (DEGREES)\t3COMP\tXXX.XX DEG FOR EACH\n# 04\tSPARE\n# 05\tANGULAR ERROR/DIFFERENCE\t\t1COMP\tXXX.XX DEG\n# 06\tOPTION CODE\t\t\t\t2COMP\tOCTAL ONLY FOR EACH\n# LOADING NOUN 07 WILL SET OR RESET SELECTED BITS IN ANY ERASABLE REGISTER\n# 07\tECADR OF WORD TO BE MODIFIED\t\t3COMP\tOCTAL ONLY FOR EACH\n#\tONES FOR BITS TO BE MODIFIED\n#\t1 TO SET OR 0 TO RESET SELECTED BITS\n# 08\tALARM DATA\t\t\t\t3COMP\tOCTAL ONLY FOR EACH\n# 09\tALARM CODES\t\t\t\t3COMP\tOCTAL ONLY FOR EACH\n# 10\tCHANNEL TO BE SPECIFIED\t\t\t1COMP\tOCTAL ONLY\n# 11\tTIG OF CSI\t\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 12\tOPTION CODE\t\t\t\t2COMP\tOCTAL ONLY FOR EACH\n#\t (USED BY EXTENDED VERBS ONLY)\n# 13\tTIG OF CDH\t\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 14\tSPARE\n# 15\tINCREMENT MACHINE ADDRESS\t\t1COMP\tOCTAL ONLY\n# 16\tTIME OF EVENT\t\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t (USED BY EXTENDED VERBS ONLY)\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 17\tASTRONAUT TOTAL ATTITUDE\t\t3COMP\tXXX.XX DEG FOR EACH\n# 18\tAUTO MANEUVER BALL ANGLES\t\t3COMP\tXXX.XX DEG FOR EACH\n# 19\tBYPASS ATTITUDE TRIM MANEUVER\t\t3COMP\tXXX.XX DEG FOR EACH\n# 20\tICDU ANGLES\t\t\t\t3COMP\tXXX.XX DEG FOR EACH\n# 21\tPIPAS\t\t\t\t\t3COMP\tXXXXX. PULSES FOR EACH\n# 22\tNEW ICDU ANGLES\t\t\t\t3COMP\tXXX.XX DEG FOR EACH\n# 23\tSPARE\n# 24\tDELTA TIME FOR AGC CLOCK\t\t3COMP\t00XXX. HRS.\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 25\tCHECKLIST\t\t\t\t3COMP\tXXXXX. FOR EACH\n#\t (USED WITH PLEASE PERFORM ONLY)\n# Page 9\n# 26\tPRIORITY/DELAY, ADRES, BBCON\t\t3COMP\tOCTAL ONLY FOR EACH\n# 27\tSELF TEST ON/OFF SWITCH\t\t\t1COMP\tXXXXX.\n# 28\tSPARE\n# 29\tXSM LAUNCH AZIMUTH\t\t\t1COMP\tXXX.XX DEG\t\tDEC ONLY\n# Page 10\n# 30\tTARGET CODES\t\t\t\t3COMP\tXXXXX. FOR EACH\n# 31\tTIME OF LANDING SITE\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n# \t\t\t\t\t\t\t0XX.XX SEC\n# 32\tTIME FROM PERIGEE\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 33\tTIME OF IGNITION\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 34\tTIME OF EVENT\t\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 35\tTIME FROM EVENT\t\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 36\tTIME OF AGC CLOCK\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 37\tTIG OF TPI\t\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 38\tTIME OF STATE VECTOR\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 39\tDELTA TIME FOR TRANSFER\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t\t\t\t\t\t\t000XX. MIN\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n\n# Page 11\n\n# MIXED NOUNS\t\t\t\t   COMPONENTS\tSCALE AND DECIMAL POINT\tRESTRICTIONS\n#\n# 40\tTIME FROM IGNITION/CUTOFF\t\t3COMP\tXXBXX  MIN/SEC\t\tNO LOAD, DEC ONLY\n#\tVG,\t\t\t\t\t\tXXXX.X FT/SEC\n#\tDELTA V (ACCUMULATED)\t\t\t\tXXXX.X FT/SEC\n# 41\tTARGET\tAZIMUTH,\t\t\t2COMP\tXXX.XX DEG\n#\t\tELEVATION\t\t\t\tXX.XXX DEG\n# 42\tAPOGEE,\t\t\t\t\t3COMP\tXXXX.X NAUT MI\t\tDEC ONLY\n#\tPERIGEE,\t\t\t\t\tXXXX.X NAUT MI\n#\tDELTA V (REQUIRED)\t\t\t\tXXXX.X FT/SEC\n# 43\tLATITUDE,\t\t\t\t3COMP\tXXX.XX DEG\t\tDEC ONLY\n#\tLONGITUDE,\t\t\t\t\tXXX.XX DEG\n#\tALTITUDE\t\t\t\t\tXXXX.X NAUT MI\n# 44\tAPOGEE,\t\t\t\t\t3COMP\tXXXX.X NAUT MI\t\tNO LOAD, DEC ONLY\n#\tPERIGEE,\t\t\t\t\tXXXX.X NAUT MI\n#\tTFF\t\t\t\t\t\tXXBXX  MIN/SEC\n# 45\tMARKS (VHF - OPTICS)\t\t\t3COMP\t+XXBXX\t\t\tNO LOAD, DEC ONLY\n#\tTFI OF NEXT BURN\t\t\t\tXXBXX  MIN/SEC\n#\tMGA\t\t\t\t\t\tXXX.XX DEG\n# 46\tAUTOPILOT CONFIGURATION\t\t\t2COMP\tOCTAL ONLY FOR EACH\n# 47\tTHIS VEHICLE WEIGHT\t\t\t2COMP\tXXXXX. LBS\t\tDEC ONLY\n#\tOTHER VEHICLE WEIGHT\t\t\t\tXXXXX. LBS\n# 48\tPITCH TRIM\t\t\t\t2COMP\tXXX.XX DEG\t\tDEC ONLY\n#\tYAW TRIM,\t\t\t\t\tXXX.XX   DEG\n# 49\tDELTA R\t\t\t\t\t3COMP\tXXXX.X NAUT MI\t\tDEC ONLY\n#\tDELTA V\t\t\t\t\t\tXXXX.X FT/SEC\n#\tVHF OR OPTICS CODE\t\t\t\tXXXXX.\n# 50\tSPLASH ERROR,\t\t\t\t3COMP\tXXXX.X NAUT MI\t\tNO LOAD, DEC ONLY\n#\tPERIGEE,\t\t\t\t\tXXXX.X NAUT MI\n#\tTFF\t\t\t\t\t\tXXBXX  MIN/SEC\n# 51\tS-BAND ANTENNA ANGLES PITCH\t\t2COMP\tXXX.XX DEG\t\tDEC ONLY\n#\t\t\t       YAW\t\t\tXXX.XX DEG\n# 52\tCENTRAL ANGLE OF ACTIVE VEHICLE\t\t1COMP\tXXX.XX DEG\n# 53\tRANGE,\t\t\t\t\t3COMP\tXXX.XX NAUT MI\t\tDEC ONLY\n#\tRANGE RATE,\t\t\t\t\tXXXX.X FT/SEC\n#\tPHI\t\t\t\t\t\tXXX.XX DEG\n# 54\tRANGE,\t\t\t\t\t3COMP\tXXX.XX NAUT MI\t\tDEC ONLY\n#\tRANGE RATE,\t\t\t\t\tXXXX.X FT/SEC\n#\tTHETA\t\t\t\t\t\tXXX.XX DEG\n# 55\tPERIGEE CODE\t\t\t\t3COMP\tXXXXX.\t\t\tDEC ONLY\n#\tELEVATION ANGLE\t\t\t\t\tXXX.XX DEG\n#\tCENTRAL ANGLE OF PASSIVE VEHICLE\t\tXXX.XX DEG\n# 56\tREENTRY ANGLE,\t\t\t\t2COMP\tXXX.XX DEG\t\tDEC ONLY\n#\tDELTA V\t\t\t\t\t\tXXXXX. FT/SEC\n# 57\tDELTA R\t\t\t\t\t1COMP\tXXXX.X NAUT MI\t\tDEC ONLY\n# 58\tPERIGEE ALT (POST TPI)\t\t\t3COMP\tXXXX.X NAUT MI\t\tDEC ONLY\n#\tDELTA V TPI\t\t\t\t\tXXXX.X FT/SEC\n#\tDELTA V TPF\t\t\t\t\tXXXX.X FT/SEC\n# 59\tDELTA VELOCITY LOS\t\t\t3COMP\tXXXX.X FT/SEC FOR EA.\tDEC ONLY\n# 60\tGMAX,\t\t\t\t\t3COMP\tXXX.XX G\t\tDEC ONLY\n# Page 12\n#\tVPRED,\t\t\t\t\t\tXXXXX. FT/SEC\n#\tGAMMA EI\t\t\t\t\tXXX.XX DEG\n# 61\tIMPACT LATITUDE,\t\t\t3COMP\tXXX.XX DEG\t\tDEC ONLY\n#\tIMPACT LONGITUDE,\t\t\t\tXXX.XX DEG\n#\tHEADS UP/DOWN\t\t\t\t\t+/- 00001\n# 62\tINERTIAL VEL MAG (VI),\t\t\t3COMP\tXXXXX. FT/SEC\t\tDEC ONLY\n#\tALT RATE CHANGE (HDOT),\t\t\t\tXXXXX. FT/SEC\n#\tALT ABOVE PAD RADIUS (H)\t\t\tXXXX.X NAUT MI\n# 63\tRANGE  297,431 TO SPLASH (RTGO),\t3COMP\tXXXX.X NAUT MI\t\tNO LOAD, DEC ONLY\n#\tPREDICTED INERT VEL (VIO),\t\t\tXXXXX. FT/SEC\n#\tTIME FROM 297,431 (TFE),\t\t\tXXBXX  MIN/SEC\n# 64\tDRAG ACCELERATION,\t\t\t3COMP\tXXX.XX G\t\tDEC ONLY\n#\tINERTIAL VELOCITY (VI),\t\t\t\tXXXXX. FT/SEC\n#\tRANGE TO SPLASH\t\t\t\t\tXXXX.X NAUT MI\n# 65\tSAMPLED AGC TIME\t\t\t3COMP\t00XXX. HRS\t\tDEC ONLY\n#\t (FETCHED IN INTERRUPT)\t\t\t\t000XX. MIN              MUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0XX.XX SEC\n# 66\tCOMMAND BANK ANGLE (BETA),\t\t3COMP\tXXX.XX DEG\t\tDEC ONLY\n#\tCROSS RANGE ERROR,\t\t\t\tXXXX.X NAUT MI\n#\tDOWN RANGE ERROR\t\t\t\tXXXX.X NAUT MI\n# 67\tRANGE TO TARGET,\t\t\t3COMP\tXXXX.X NAUT MI\t\tDEC ONLY\n#\tPRESENT LATITUDE,\t\t\t\tXXX.XX DEG\n#\tPRESENT LONGITUDE\t\t\t\tXXX.XX DEG\n# 68\tCOMMAND BANK ANGLE (BETA),\t\t3COMP\tXXX.XX DEG\t\tDEC ONLY\n#\tINERTIAL VELOCITY (VI),\t\t\t\tXXXXX. FT/SEC\n#      ALT RATE CHANGE (RDOT)\t\t\t\tXXXXX. FT/SEC\n# 69   BETA\t\t\t\t\t3COMP\tXXX.XX DEG\t\tDEC ONLY\n#      DL\t\t\t\t\t\tXXX.XX G\n#      VL\t\t\t\t\t\tXXXXX. FT/SEC\n# 70\tSTAR CODE,\t\t\t\t3COMP\tOCTAL ONLY\n#\tLANDMARK DATA,\t\t\t\t\tOCTAL ONLY\n#\tHORIZON DATA\t\t\t\t\tOCTAL ONLY\n# 71\tSTAR CODE\t\t\t\t3COMP\tOCTAL ONLY\n#\tLANDMARK DATA\t\t\t\t\tOCTAL ONLY\n#\tHORIZON DATA\t\t\t\t\tOCTAL ONLY\n# 72\tDELT ANG\t\t\t\t3COMP\tXXX.XX DEG\t\tDEC ONLY\n# 73\tALTITUDE\t\t\t\t3COMP\tXXXXXB. NAUT MI\n#\tVELOCITY\t\t\t\t\tXXXXX.  FT/SEC\n#\tFLIGHT PATH ANGLE\t\t\t\tXXX.XX  DEG\n# 74\tCOMMAND BANK ANGLE (BETA)\t\t3COMP\tXXX.XX DEG\n#\tINERTIAL VELOCITY (VI)\t\t\t\tXXXXX. FT/SEC\n#\tDRAG ACCELERATION\t\t\t\tXXX.XX G\n# 75\tDELTA ALTITUDE CDH\t\t\t3COMP\tXXXX.X NAUT MI\t\tNO LOAD, DEC ONLY\n#\tDELTA TIME (CDH-CSI OR TPI-CDH)\t\t\tXXBXX  MIN/SEC\n#\tDELTA TIME (TPI-CDH OR TPI-NOMTPI)\t\tXXBXX  MIN/SEC\n# 76\tSPARE\n# 77\tSPARE\n# 78\tSPARE\n# 79\tSPARE\n# 80\tTIME FROM IGNITION/CUTOFF\t\t3COMP\tXXBXX  MIN/SEC\t\tNO LOAD, DEC ONLY\n# Page 13\n#\tVG\t\t\t\t\t\tXXXXX. FT/SEC\n#\tDELTA V (ACCUMULATED)\t\t\t\tXXXXX. FT/SEC\n# 81\tDELTA V (LV)\t\t\t\t3COMP\tXXXX.X FT/SEC FOR EACH\tDEC ONLY\n# 82\tDELTA V (LV)\t\t\t\t3COMP\tXXXX.X FT/SEC FOR EACH\tDEC ONLY\n# 83\tDELTA V (BODY)\t\t\t\t3COMP\tXXXX.X FT/SEC FOR EACH\tDEC ONLY\n# 84\tDELTA V (OTHER VEHICLE)\t\t\t3COMP\tXXXX.X FT/SEC FOR EACH\tDEC ONLY\n# 85\tVG (BODY)\t\t\t\t3COMP\tXXXX.X FT/SEC FOR EACH\tDEC ONLY\n# 86\tDELTA V(LV)\t\t\t\t3COMP\tXXXXX. FT/SEC FOR EACH\tDEC ONLY\n# 87\tMARK DATA\tSHAFT,\t\t\t2COMP\tXXX.XX DEG\n#\t\t\tTRUNION\t\t\t\tXX.XXX DEG\n# 88\tHALF UNIT SUN OR PLANET VECTOR\t\t3COMP\t.XXXXX FOR EACH\t\tDEC ONLY\n# 89\tLANDMARK\tLATITUDE,\t\t3COMP\tXX.XXX DEG\t\tDEC ONLY\n#\t\t\tLONGITUDE/2,\t\t\tXX.XXX DEG\n#\t\t\tALTITUDE\t\t\tXXX.XX NAUT MI\n# 90\tY\t\t\t\t\t3COMP\tXXX.XX NM\t\tDEC ONLY\n#\tY DOT\t\t\t\t\t\tXXXX.X FPS\n#\tPSI\t\t\t\t\t\tXXX.XX DEG\n# 91\tOCDU ANGLES\tSHAFT,\t\t\t2COMP\tXXX.XX DEG\n#\t\t\tTRUNION\t\t\t\tXX.XXX DEG\n# 92\tNEW OPTICS ANGLES\tSHAFT,\t\t2COMP\tXXX.XX DEG\n#\t\t\t\tTRUNION\t\t\tXX.XXX DEG\n# 93\tDELTA GYRO ANGLES\t\t\t3COMP\tXX.XXX DEG FOR EACH\n# 94\tNEW OPTICS ANGLES\tSHAFT\t\t2COMP\tXXX.XX DEG\n#\t\t\t\tTRUNNION\t\tXX.XXX DEG\n# 95\tPREFERRED ATTITUDE ICDU ANGLES\t\t3COMP\tXXX.XX FOR FOR EACH\n# 96\t+X-AXIS ATTITUDE ICDU ANGLES\t\t3COMP\tXXX.XX DEG FOR EACH\n# 97\tSYSTEM TEST INPUTS\t\t\t3COMP\tXXXXX. FOR EACH\n# 98\tSYSTEM TEST RESULTS AND INPUTS\t\t3COMP\tXXXXX.\n#\t\t\t\t\t\t\t.XXXXX\n#\t\t\t\t\t\t\tXXXXX.\n# 99\tRMS IN POSITION\t\t\t\t3COMP\tXXXXX.FT\t        DEC ONLY\n#\tRMS IN VELOCITY\t\t\t\t\tXXXX.X FT/SEC\n#\tRMS OPTION\t\t\t\t\tXXXXX.\n\n# Page 14\n\n# REGISTERS AND SCALING  FOR NORMAL NOUNS\n#\n# NOUN\t        REGISTER\tSCALE TYPE\n#\n# 00\tNOT IN USE\n# 01\tSPECIFY ADDRESS\t\tB\n# 02\tSPECIFY ADDRESS\t\tC\n# 03\tSPECIFY ADDRESS\t\tD\n# 04\tSPARE\n# 05\t\tDSPTEM1\t\tH\n# 06\t\tOPTION1\t\tA\n# 07\t\tXREG\t\tA\n# 08\t\tALMCADR\t\tA\n# 09\t\tFAILREG\t\tA\n# 10\tSPECIFY CHANNEL\t\tA\n# 11\t\tTCSI\t\tK\n# 12\t\tOPTIONX\t\tA\n# 13\t\tTCDH\t\tK\n# 14\tSPARE\n# 15\tINCREMENT ADDRESS\tA\n# 16\t\tDSPTEMX\t\tC\n# 17\t\tCPHIX\t\tD\n# 18\t\tTHETAD\t\tD\n# 19\t\tTHETAD\t\tD\n# 20\t\tCDUX\t\tD\n# 21\t\tPIPAX\t\tC\n# 22\t\tTHETAD\t\tD\n# 23\tSPARE\n# 24\t\tDSPTEM2 +1\tK\n# 25\t\tDSPTEM1\t\tC\n# 26\t\tDSPTEM1\t\tA\n# 27\t\tSMODE\t\tC\n# 28\tSPARE\n# 29\t\tDSPTEM1\t\tD\n# 30\t\tDSPTEM1\t\tC\n# 31\t\tDSPTEM1\t\tK\n# 32\t\t-TPER\t\tK\n# 33\t\tTIG\t\tK\n# 34\t\tDSPTEM1\t\tK\n# 35\t\tTTOGO\t\tK\n# 36\t\tTIME2\t\tK\n# 37\t\tTTPI\t\tK\n# 38\t\tTET\t\tK\n# 39\t\tT3TOT4\t\tK\n\n# Page 15\n\n# REGISTERS AND SCALING FOR MIXED NOUNS\n#\n# NOUN\tCOMP\tREGISTER\tSCALE TYPE\n#\n# 40\t1\tTTOGO\t\tL\n#\t2\tVGDISP\t\tS\n#\t3\tDVTOTAL\t\tS\n# 41\t1\tDSPTEM1\t\tD\n#\t2\tDSPTEM1 +1\tE\n# 42\t1\tHAPO\t\tQ\n#\t2\tHPER\t\tQ\n#\t3\tVGDISP\t\tS\n# 43\t1\tLAT\t\tH\n#\t2\tLONG\t\tH\n#\t3\tALT\t\tQ\n# 44\t1\tHAPOX\t\tQ\n#\t2\tHPERX\t\tQ\n#\t3\tTFF\t\tL\n# 45\t1\tVHFCNT\t\tPP\n#\t2\tTTOGO\t\tL\n#\t3\t+MGA\t\tH\n# 46\t1\tDAPDATR1\tA\n#\t2\tDAPDATR2\tA\n# 47\t1\tCSMMASS\t\tKK\n#\t2\tLEMMASS\t\tKK\n# 48\t1\tPACTOFF\t\tFF\n#\t2\tYACTOFF\t\tFF\n# 49\t1\tN49DISP\t\tQ\n#\t2\tN49DISP +2\tS\n#\t3\tN49DISP +4\tC\n# 50\t1\tRSP-RREC\tLL\n#\t2\tHPERX\t\tQ\n#\t3\tTFF\t\tL\n# 51\t1\tRHOSB\t\tH\n#\t2\tGAMMASB\t\tH\n# 52\t1\tACTCENT\t\tH\n# 53\t1\tRANGE\t\tJJ\n#\t2\tRRATE\t\tS\n# \t3\tRTHETA\t\tH\n# 54\t1\tRANGE\t\tJJ\n#\t2\tRRATE\t\tS\n# \t3\tRTHETA\t\tH\n# 55\t1\tNN1\t\tC\n# \t2\tELEV\t\tH\n#\t3\tCENTANG\t\tH\n# 56\t1\tRTEGAM2D\tH\n#\t2\tRTEDVD\t\tP\n# 57\t1\tDELTAR\t\tQ\n# 58\t1\tPOSTTPI\t\tQ\n#\t2\tDELVTPI\t\tS\n# Page 16\n#\t3\tDELVTPF\t\tS\n# 59\t1\tDVLOS\t\tS\n#\t2\tDVLOS +2\tS\n#\t3\tDVLOS +4\tS\n# 60\t1\tGMAX\t\tT\n#\t2\tVPRED\t\tP\n#\t3\tGAMMAEI\t\tH\n# 61\t1\tLAT(SPL)\tH\n#\t2\tLNG(SPL)\tH\n#\t3\tHEADSUP\t\tC\n# 62\t1\tVMAGI\t\tP\n#\t2\tHDOT\t\tP\n#\t3\tALTI\t\tQ\n# 63\t1\tRTGO\t\tLL\n#\t2\tVIO\t\tP\n#\t3\tTTE\t\tL\n# 64\t1\tD\t\tMM\n#\t2\tVMAGI\t\tP\n#\t3\tRTGON64\t\tLL\n# 65\t1\tSAMPTIME\tK\n#\t2\tSAMPTIME\tK\n#\t3\tSAMPTIME\tK\n# 66\t1\tROLLC\t\tH\n#\t2\tXRNGERR\t\tVV\n#\t3\tDNRNGERR\tLL\n# 67\t1\tRTGON67\t\tLL\n#\t2\tLAT\t\tH\n#\t3\tLONG\t\tH\n# 68\t1\tROLLC\t\tH\n#\t2\tVMAGI\t\tP\n#\t3\tRDOT\t\tUU\n# 69\t1\tROLLC\t\tH\n#\t2\tQ7\t\tMM\n#\t3\tVL\t\tUU\n# 70\t1\tSTARCODE\tA\n#\t2\tLANDMARK\tA\n#\t3\tHORIZON\t\tA\n# 71\t1\tSTARCODE\tA\n#\t2\tLANDMARK\tA\n#\t3\tHORIZON\t\tA\n# 72\t1\tTHETZERO\tH\n# 73\t1\tP21ALT\t\tQ (MEMORY/100 TO DISPLAY TENS N.M.)\n#\t2\tP21VEL\t\tP\n#\t3\tP21GAM\t\tH\n# 74\t1\tROLLC\t\tH\n#\t2\tVMAGI\t\tP\n#\t3\tD\t\tMM\n# 75\t1\tDIFFALT\t\tQ\n#\t2\tT1TOT2\t\tL\n#\t3\tT2TOT3\t\tL\n# Page 17\n# 76\tSPARE\n# 77\tSPARE\n# 78\tSPARE\n# 79\tSPARE\n# 80\t1\tTTOGO\t\tL\n#\t2\tVGDISP\t\tP\n#\t3\tDVTOTAL\t\tP\n# 81\t1\tDELVLVC\t\tS\n#\t2\tDELVLVC +2\tS\n#\t3\tDELVLVC +4\tS\n# 82\t1\tDELVLVC\t\tS\n#\t2\tDELVLVC +2\tS\n#\t3\tDELVLVC +4\tS\n# 83\t1\tDELVIMU\t\tS\n#\t2\tDELVIMU +2\tS\n#\t3\tDELVIMU +4\tS\n# 84\t1\tDELVOV\t\tS\n#\t2\tDELVOV +2\tS\n#\t3\tDELVOV +4\tS\n# 85\t1\tVGBODY\t\tS\n#\t2\tVGBODY +2\tS\n#\t3\tVGBODY +4\tS\n# 86\t1\tDELVLVC\t\tP\n#\t2\tDELVLVC +2\tP\n#\t3\tDELVLVC +4\tP\n# 87\t1\tMRKBUF1 +3\tD\n#\t2\tMRKBUF1 +5\tJ\n# 88\t1\tSTARSAV3\tZZ\n#\t2\tSTARSAV3 +2\tZZ\n#\t3\tSTARSAV3 +4\tZZ\n# 89\t1\tLANDLAT\t\tG\n#\t2\tLANDLONG\tG\n#\t3\tLANDALT\t\tJJ\n# 90\t1\tRANGE\t\tJJ\n#\t2\tRRATE\t\tS\n#\t3\tRTHETA\t\tH\n# 91\t1\tCDUS\t\tD\n#\t2\tCDUT\t\tJ\n# 92\t1\tSAC\t\tD\n#\t2\tPAC\t\tJ\n# 93\t1\tOGC\t\tG\n#\t2\tOGC +2\t\tG\n#\t3\tOGC +4\t\tG\n# 94\t1\tMRKBUF1 +3\tD\n#\t2\tMRKBUF1 +5\tJ\n# 95\t1\tPRAXIS\t\tD\n#\t2\tPRAXIS +1\tD\n#\t3\tPRAXIS +2\tD\n# 96\t1\tCPHIX\t\tD\n#\t2\tCPHIX +1\tD\n# Page 18\n#\t3\tCPHIX +2\tD\n# 97\t1\tDSPTEM1\t\tC\n#\t2\tDSPTEM1 +1\tC\n# \t3\tDSPTEM1 +2\tC\n# 98\t1\tDSPTEM2\t\tC\n#\t2\tDSPTEM2 +1\tB\n#\t3\tDSPTEM2 +2\tC\n# 99\t1\tWWPOS\t\tXX\n#\t2\tWWVEL\t\tYY\n#\t3\tWWOPT\t\tC\n\n# Page 19\n\n# NOUN SCALES AND FORMATS\n#\n# -SCALE TYPE-\t\t\t\t PRECISION\n# UNITS\t\t\tDECIMAL FORMAT\t\t--\tAGC FORMAT\n# ------------\t\t--------------\t\t--\t----------\n#\n# -A-\n# OCTAL\t\t\tXXXXX\t\t\tSP\tOCTAL\n#\n# -B-\t\t\t\t\t\t\t\t -14\n# FRACTIONAL\t\t.XXXXX\t\t\tSP\tBIT 1 = 2    UNITS\n#\t\t\t(MAX .99996)\n#\n# -C-\n# WHOLE\t\t\tXXXXX.\t\t\tSP\tBIT 1 = 1 UNIT\n#\t\t\t(MAX 16383.)\n#\n# -D-\t\t\t\t\t\t\t\t     15\n# CDU DEGREES\t\tXXX.XX DEGREES\t\tSP\tBIT 1 = 360/2   DEGREES\n#\t\t\t(MAX 359.99)\t\t\t(USES 15 BITS FOR MAGNI-\n#\t\t\t\t\t\t\t TUDE AND 2-S COMP.)\n#\n# -E-\t\t\t\t\t\t\t\t    14\n# ELEVATION DEGREES\tXX.XXX DEGREES\t\tSP\tBIT 1 = 90/2   DEGREES\n#\t\t\t(MAX 89.999)\n#\n# -F-\t\t\t\t\t\t\t\t     14\n# DEGREES (180)\t\tXXX.XX DEGREES\t\tSP\tBIT 1 = 180/2   DEGREES\n#\t\t\t(MAX 179.99)\n#\n# -G-\n# DP DEGREES(90)\tXX.XXX DEGREES\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t     28\n#\t\t\t\t\t\t\t360/2   DEGREES\n#\n# -H-\n# DP DEGREES (360)\tXXX.XX DEGREES\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t        \t\t\t     28\n#\t\t\t(MAX 359.99)\t\t\t360/2   DEGREES\n#\n# -J-\t\t\t\t\t\t\t\t    15\n# Y OPTICS DEGREES\tXX.XXX DEGREES\t\tSP\tBIT 1 = 90/2   DEGREES\n#\t\t\t(BIAS OF 19.775\t\t\t(USES 15 BITS FOR MAGNI-\n#\t\t\tDEGREES ADDED FOR\t\tTUDE AND 2-S COMP.)\n#\t\t\tDISPLAY, SUBTRACTED\n#\t\t\tFOR LOAD.)\n#\t\t\tNOTE: NEGATIVE NUM-\n#\t\t\tBERS CANNOT BE\n#\t\t\tLOADED.\n#\n# -K-\n# Page 20\n# TIME (HR, MIN, SEC)\t00XXX. HR\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t000XX. MIN\t\t\t  -2\n#\t\t\t0XX.XX SEC\t\t\t10   SEC\n#\t\t\t(DECIMAL ONLY.\n#\t\t\tMAX MIN COMP=59\n#\t\t\tMAX SEC COMP=59.99\n#\t\t\tMAX CAPACITY=745 HRS\n#\t\t\t\t      39 MINS\n#\t\t\t\t      14.55 SECS.\n#\t\t\tWHEN LOADING, ALL 3\n#\t\t\tCOMPONENTS MUST BE\n#\t\t\tSUPPLIED.)\n#\n# -L-\n# TIME (MIN/SEC)\tXXBXX MIN/SEC\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t(B IS A BLANK\t\t\t  -2\n#\t\t\tPOSITION, DECIMAL\t\t10   SEC\n#\t\t\tONLY, DISPLAY OR\n#\t\t\tMONITOR ONLY. CANNOT\n#\t\t\tBE LOADED.\n#\t\t\tMAX MIN COMP=59\n#\t\t\tMAX SEC COMP=59\n#\t\t\tVALUES GREATER THAN\n#\t\t\t59 MIN 59 SEC\n#\t\t\tARE DISPLAYED AS\n#\t\t\t59 MIN 59 SEC.)\n#\n# -M-\t\t\t\t\t\t\t\t  -2\n# TIME (SEC)\t\tXXX.XX SEC\t\tSP\tBIT 1 = 10   SEC\n#\t\t\t(MAX 163.83)\n#\n# -N-\n# TIME(SEC) DP\t\tXXX.XX SEC\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t  -2\n#\t\t\t\t\t\t\t10   SEC\n#\n# -P-\n# VELOCITY 2\t\tXXXXX. FEET/SEC\t\tDP\tBIT 1 OF HIGH REGISTER =\n#\t\t\t(MAX 41994.)\t\t\t -7\n#\t\t\t\t\t\t\t2   METERS/CENTI-SEC\n#\n# -Q-\n# POSITION 4\t\tXXXX.X NAUTICAL MILES\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t2 METERS\n#\n# -S-\n# VELOCITY 3\t\tXXXX.X FT/SEC\t\tDP\tBIT 1 OF HIGH REGISTER =\n#\t\t\t\t\t\t\t -7\n#\t\t\t\t\t\t\t2   METERS/CENTI-SEC\n# Page 21\n# -T-\t\t\t\t\t\t\t\t  -2\n# G\t\t\tXXX.XX G\t\tSP\tBIT 1 = 10   G\n#\t\t\t(MAX 163.83)\n#\n# -FF-\n# TRIM DEGREES\t\tXXX.XX DEG.\t\tSP\tLOW ORDER BIT = 85.41 SEC\n#\t\t\t(MAX 388.69)\t\t\tOF ARC\n#\n# -GG-\n# INERTIA\t\tXXXXXBB. SLUG FT SQ\tSP\tFRACTIONAL PART OF\n#\t\t\t(MAX 07733BB.)\t\t\t 20     2\n#\t\t\t\t\t\t\t2   KG M\n#\n# -II-\t\t\t\t\t\t\t\t\t    20\n# THRUST MOMENT\t\tXXXXXBB. FT LBS\t\tSP\tFRACTIONAL PART OF 2\n#\t\t\t(MAX 07733BB.)\t\t\tNEWTON METER\n#\n# -JJ-\n# POSITION5\t\tXXX.XX NAUT MI\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t2 METERS\n#\n# -KK-\t\t\t\t\t\t\t\t\t    16\n# WEIGHT2\t\tXXXXX. LBS\t\tSP\tFRACTIONAL PART OF 2   KG\n#\n# -LL-\n# POSITION6\t\tXXXX.X NAUT MI\t\tDP\tBIT 1 OF LOW REG =\n#\t\t\t\t\t\t\t\t\t    -28\n#\t\t\t\t\t\t\t(6,373,338)(2(PI))X2\n#\t\t\t\t\t\t\t-----------------------\n#\t\t\t\t\t\t\t\t 1852\n#\t\t\t\t\t\t\tNAUT. MI.\n#\n# -MM-\n# DRAG ACCELERATION\tXXX.XX G\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\tMAX (024.99)\t\t\t    -28\n#\t\t\t\t\t\t\t25X2    G\n#\n# -PP-\n# 2 INTEGERS\t\t+XXBYY\t\t\tDP\tBIT 1 OF HIGH REGISTER =\n#\t\t\t(B IS A BLANK\t\t\t 1 UNIT OF XX\n#\t\t\tPOSITION.  DECIMAL\t\tBIT 1 OF LOW REGISTER =\n#\t\t\tONLY, DISPLAY OR\t\t 1 UNIT OF YY\n#\t\t\tMONITOR ONLY. CANNOT\t\t(EACH REGISTER MUST\n#\t\t\tBE LOADED.)                     CONTAIN A POSITIVE INTEGER\n#\t\t\t(MAX 99B99)                      LESS THAN 100)\n#\n# -UU-\n# VELOCITY/2VS\t\tXXXXX. FEET/SEC\t\tDP\tFRACTIONAL PART OF\n#\t\t\t(MAX 51532.)\t\t\t2VS FEET/SEC\n#\t\t\t\t\t\t\t(VS = 25766.1973)\n# Page 22\n# -VV-\n# POSITION8\t\tXXXX.X NAUT MI\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t\t\t -28\n#\t\t\t\t\t\t\t4 X 6,373,338 X 2\n#\t\t\t\t\t\t\t--------------------\n#\t\t\t\t\t\t\t      1852\n#\t\t\t\t\t\t\tNAUT MI.\n#\n# -XX-\n# POSITION 9\t\tXXXXX. FEET\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t -9\n#\t\t\t\t\t\t\t2   METERS\n#\n# -YY-\n# VELOCITY 4\t\tXXXX.X FEET/SEC\t\tDP\tFRACTIONAL PART OF\n#\t\t\t(MAX 328.0)\t\t\tMETERS/CENTI-SEC\n#\n# -ZZ-\n# DP FRACTIONAL\t\t.XXXXX\t\t\tDP\tBIT 1 OF HIGH REGISTER =\n#\t\t\t\t\t\t\t -14\n#\t\t\t\t\t\t\t2    UNITS\n\n# THAT-S ALL ON THE NOUNS.\n\n# Page 23\n\n# \t\tALARM CODES FOR 504\n\n# \t\tREPORT DEFICIENCIES TO JOHN SUTHERLAND @ MIT 617-864-6900 X1458\n\n# *9\t\t*18\t\t\t\t\t\t*60\t\t\t                *25  COLUMN\n#\n# CODE       *\tTYPE\t\t\t\t\t\tSET BY\t\t\t                ALARM ROUTINE\n#\n# 00110\t\tNO MARK SINCE LAST MARK REJECT\t\t\tSXTMARK\t\t\t                ALARM\n# 00112\t\tMARK NOT BEING ACCEPTED\t\t\t\tSXTMARK\t\t\t                ALARM\n# 00113\t\tNO INBITS\t\t\t\t\tSXTMARK\t\t\t                ALARM\n# 00114\t\tMARK MADE BUT NOT DESIRED\t\t\tSXTMARK\t\t\t                ALARM\n# 00115\t\tOPTICS TORQUE REQUESTWITH SWITCH NOT AT\t        EXT VERB OPTICS CDU\t                ALARM\n# \t\t CGC\n# 00116\t\tOPTICS SWITCH ALTERED BEFORE 15 SEC ZERO\tT4RUPT\t\t\t                ALARM\n#\t\t TIME ELAPSED.\n# 00117\t\tOPTICS TORQUE REQUEST WITH OPTICS NOT\t\tEXT VERB OPTICS CDU\t                ALARM\n#\t\t AVAILABLE (OPTIND=-0)\n# 00120\t\tOPTICS TORQUE REQUEST WITH OPTICS\t\tT4RUPT\t\t\t                ALARM\n#\t\t NOT ZEROED\n# 00121\t\tCDUS NO GOOD AT TIME OF MARK\t\t\tSXTMARK\t\t\t                ALARM\n# 00122\t\tMARKING NOT CALLED FOR\t\t\t\tSXTMARK\t\t\t                ALARM\n# 00124\t\tP17 TPI SEARCH - NO SAFE PERICTR HERE.\t\tTPI SEARCH\t\t                ALARM\n# 00205\t\tBAD PIPA READING\t\t\t\tSERVICER\t\t                ALARM\n# 00206\t\tZERO ENCODE NOT ALLOWED WITH COARSE ALIGN\tIMU MODE SWITCHING\t                ALARM\n# \t\t + GIMBAL LOCK\n# 00207\t\tISS TURNON REQUEST NOT PRESENT FOR 90 SEC\tT4RUPT\t\t\t                ALARM\n# 00210\t\tIMU NOT OPERATING\t\t\t\tIMU MODE SWITCH, IMU-2, R02, P51        ALARM,VARALARM\n# 00211\t\tCOARSE ALIGN ERROR - DRIVE > 2 DEGREES\t\tIMU MODE SWITCH\t\t                ALARM\n# 00212\t\tPIPA FAIL BUT PIPA IS NOT BEING USED\t\tIMU MODE SWITCH,T4RPT\t                ALARM\n# 00213\t\tIMU NOT OPERATING WITH TURN-ON REQUEST\t\tT4RUPT\t\t\t                ALARM\n# 00214\t\tPROGRAM USING IMU WHEN TURNED OFF\t\tT4RUPT\t\t\t                ALARM\n# 00215\t\tPREFERRED ORIENTATION NOT SPECIFIED\t\tP52,P54\t\t\t                ALARM\n# 00217\t\tBAD RETURN FROM STALL ROUTINES.\t\t\tCURTAINS\t\t                ALARM2\n# 00220\t\tIMU NOT ALIGNED - NO REFSMMAT\t\t\tR02,P51\t\t\t                VARALARM\n# 00401\t\tDESIRED GIMBAL ANGLES YIELD GIMBAL LOCK\t\tIMF ALIGN, IMU-2\t                ALARM\n# 00404\t\tTARGET OUT OF VIEW - TRUN ANGLE > 90 DEG\tR52\t\t\t                PRIOLARM\n# 00405\t\tTWO STARS NOT AVAILABLE\t\t\t\tP52,P54\t\t\t                ALARM\n# 00406\t\tREND NAVIGATION NOT OPERATING\t\t\tR21,R23\t\t\t                ALARM\n# 00407\t\tAUTO OPTICS REQUEST TRUN ANGLE > 50 DEG.\tR52\t\t\t                ALARM\n# 00421\t\tW-MATRIX OVERFLOW\t\t\t\tINTEGRV\t\t\t                VARALARM\n# 00430\t     *\tINTEG. ABORT DUE TO SUBSURFACE S. V.\t\tALL CALLS TO INTEG\t                POODOO\n# 00600\t\tIMAGINARY ROOTS ON FIRST ITERATION\t\tP32, P72\t\t                VARALARM\n# 00601\t\tPERIGEE ALTITUDE LT PMIN1\t\t\tP32,P72,\t\t                VARALARM\n# 00602\t\tPERIGEE ALTITUDE LT PMIN2\t\t\tP32,P72,\t\t                VARALARM\n# 00603\t\tCSI TO CDH TIME LT PMIN22\t\t\tP32,P72,P33,P73\t\t                VARALARM\n# 00604\t\tCDH TO TPI TIME LT PMIN23\t\t\tP32,P72\t\t\t                VARALARM\n# 00605\t\tNUMBER OF ITERATIONS EXCEEDS LOOP MAXIMUM\tP32,P72,P37\t\t                VARALARM\n# 00606\t\tDV EXCEEDS MAXIMUM\t\t\t\tP32,P72\t\t\t                VARALARM\n# 00607\t     *\tNO SOLN FROM TIME-THETA OR TIME-RADIUS\t\tTIMETHET,TIMERAD\t                POODOO\n# Page 24\n# 00610      *\tLAMBDA LESS THAN UNITY\t\t\t\tP37\t\t\t                POODOO\n# 00611\t\tNO TIG FOR GIVEN ELEV ANGLE\t\t\tP34,P74\t\t\t                VARALARM\n# 00612\t\tSTATE VECTOR IN WRONG SPHERE OF INFLUENCE\tP37\t\t\t                VARALARM\n# 00613\t\tREENTRY ANGLE OUT OF LIMITS\t\t\tP37\t\t\t                VARALARM\n# 00777\t\tPIPA FAIL CAUSED ISS WARNING.\t\t\tT4RUPT\t\t\t                VARALARM\n# 01102\t\tCMC SELF TEST ERROR\t\t\t\t\t\t\t                ALARM2\n# 01103      *\tUNUSED CCS BRANCH EXECUTED\t\t\tABORT\t\t\t                POODOO\n# 01104      *\tDELAY ROUTINE BUSY\t\t\t\tEXEC\t\t\t                BAILOUT\n# 01105\t\tDOWNLINK TOO FAST\t\t\t\tT4RUPT\t\t\t                ALARM\n# 01106\t\tUPLINK TOO FAST\t\t\t\t\tT4RUPT\t\t\t                ALARM\n# 01107\t\tPHASE TABLE FAILURE. ASSUME\t\t\tRESATRT\t\t\t                ALARM\n#\t\tERASABLE MEMORY IS DESTROYED\n# 01201\t     *\tEXECUTIVE OVERFLOW-NO VAC AREAS\t\t        EXEC\t\t\t                BAILOUT\n# 01202\t     *\tEXECUTIVE OVERFLOW-NO CORE SETS\t\t        EXEC\t\t\t                BAILOUT\n# 01203      *\tWAITLIST OVERFLOW-TOO MANY TASKS\t\tWAITLIST\t\t                BAILOUT\n# 01204      *\tNEGATIVE OR ZERO WAITLIST CALL\t\t\tWAITLIST\t\t                POODOO\n# 01206      *\tSECOND JOB ATTEMPTS TO GO TO SLEEP\t\tPINBALL\t\t\t                POODOO\n#\t\tVIA KEYBOARD AND DISPLAY PROGRAM\n# 01207      *\tNO VAC AREA FOR MARKS\t\t\t\tSXTMARK\t\t\t                BAILOUT\n# 01210\t     *\tTWO PROGRAMS USING DEVICE AT SAME TIME\t\tIMU MODE SWITCH\t\t                POODOO\n# 01211      *\tILLEGAL INTERRUPT OF EXTENDED VERB\t\tSXTMARK\t\t\t                BAILOUT\n# 01301\t\tARCSIN-ARCCOS ARGUMENT TOO LARGE\t\tINTERPRETER\t\t                ALARM\n# 01302      *\tSQRT CALLED WITH NEGATIVE ARGUMENT.ABORT\tINTERPRETER\t\t                POODOO\n# 01407\t\tVG INCREASING\t\t\t\t\tS40.8\t\t\t                ALARM\n# 01426\t\tIMU UNSATISFACTORY\t\t\t\tP61, P62\t\t\t        ALARM\n# 01427\t\tIMU REVERSED\t\t\t\t\tP61, P62\t\t\t        ALARM\n# 01501\t     *\tKEYBOARD AND DISPLAY ALARM DURING\t\tPINBALL\t\t\t                POODOO\n#\t\t INTERNAL USE (NVSUB). ABORT.\n# 01502\t     *\tILLEGAL FLASHING DISPLAY\t\t\tGOPLAY\t\t\t                POODOO\n# 01520\t\tV37 REQUEST NOT PERMITTED AT THIS TIME\t\tV37\t\t\t                ALARM\n# 01521\t     *\tP01 ILLEGALLY SELECTED\t\t\t\tP01, P07                                POODOO\n# 01600\t\tOVERFLOW IN DRIFT TEST\t\t\t\tOPT PRE ALIGN CALIB\t                ALARM\n# 01601      \tBAD IMU TORQUE  \t\t\t\tOPT PRE ALIGN CALIB\t                ALARM\n# 01602\t\tBAD OPTICS DURING VERIFICATION\t\t\tOPTALGN CALIB (CSM)\t                ALARM\n# 01703\t\tINSUF. TIME FOR INTEG., TIG WAS SLIPPED\t\tR41\t\t\t                ALARM\n# 03777\t\tICDU FAIL CAUSED THE ISS WARNING\t\tT4RUPT\t\t\t                VARALARM\n# 04777\t\tICDU , PIPA FAILS CAUSED THE ISS WARNING\tT4RUPT\t\t\t                VARALARM\n# 07777\t\tIMU FAIL CAUSED THE ISS WARNING\t\t\tT4RUPT\t\t\t                VARALARM\n# 10777\t\tIMU , PIPA FAILS CAUSED THE ISS WARNING\t\tT4RUPT\t\t\t                VARALARM\n# 13777\t\tIMU , ICDU FAILS CAUSED THE ISS WARNING\t\tT4RUPT\t\t\t                VARALARM\n# 14777\t\tIMU,ICDU,PIPA FAILS CAUSED THE ISSWNING\t        T4RUPT\t\t\t                VARALARM\n# \t     *\tINDICATES ABORT TYPE.ALL OTHERS ARE NON-ABORTIVE\n\n# Page 25\n\n#               CHECKLIST CODES FOR 504\n\n#               PLEASE REPORT ANY DEFICIENCIES IN THIS LIST TO JOHN SUTHERLAND\n\n# *9\t\t*17\t\t*26  COLUMN\n#\n# R1 CODE\t   ACTION TO BE EFFECTED\n#\n# 00014\t\tKEY IN\t\tFINE ALIGNMENT OPTION\n# 00015\t\tPERFORM\t\tCELESTIAL BODY ACQUISITION\n# 00016\t\tKEY IN\t\tTERMINATE MARK SEQUENCE\n# 00041\t\tSWITCH\t\tCM/SM SEPARATION TO UP\n# 00062\t\tSWITCH\t\tAGC POWER DOWN\n# 00202\t\tPERFORM\t\tGNCS AUTOMATIC MANEUVER\n# 00203\t\tSWITCH\t\tTO CMC-AUTO\n# 00204\t\tPERFORM\t\tSPS GIMBAL TRIM\n# 00403\t\tSWITCH\t\tOPTICS TO MANUAL OR ZERO\n#\t\t                  SWITCH DENOTES CHANGE POSITION OF A CONSOLE SWITCH\n#\t\t                  PERFORM DENOTES START OR END OF A TASK\n#\t\t                  KEY IN DENOTES KEY IN OF DATA THRU THE DSKY\n\n# Page 26\n\n#          OPTION CODES FOR 504\n\n#          PLEASE REPORT ANY DEFICIENCIES IN THIS LIST TO JOHN SUTHERLAND\n\n# THE SPECIFIED OPTION CODES WILL BE FLASHED IN COMPONENT R1 IN\n# CONJUNCTION WITH VERB04NOUN06 TO REQUEST THE ASTRONAUT TO LOAD INTO\n# COMPONENT R2 THE OPTION HE DESIRES.\n\n# *9\t\t*17\t\t\t\t\t*52\t\t\t\t*11\t\t*25  COLUMN\n#\n# OPTION\n# CODE\t\tPURPOSE\t\t\t\t\tINPUT FOR COMPONENT 2\t\tPROGRAM(S)\tAPPLICABILITY\n#\n# 00001\t\tSPECIFY IMU ORIENTATION\t\t\t1=PREF 2=NOM 3=REFSMMAT\t\tP50'S\t\tALL\n# 00002\t\tSPECIFY VEHICLE\t\t\t\t1=THIS 2=OTHER\t\t\tP21,R30\t\tALL\n# 00003\t\tSPECIFY TRACKING ATTITUDE\t\t1=PREFERRED 2=OTHER\t\tR63\t\tALL\n# 00004\t\tSPECIFY RADAR\t\t\t\t1=RR 2=LR\t\t\tR04\t\tSUNDANCE + LUMINARY\n# 00005\t\tSPECIFY SOR PHASE\t\t\t1=FIRST 2=SECOND\t\tP38\t\tCOLOSSUS + LUMINARY\n# 00006\t\tSPECIFY RR COARSE ALIGN OPTION\t\t1=LOCKON 2=CONTINUOUS DESIG.\tV41N72\t\tSUNDANCE + LUMINARY\n# 00007\t\tSPECIFY PROPULSION SYSTEM\t\t1=SPS 2=RCS\t\t\tP37\t\tCOLOSSUS\n# 00010\t\tSPECIFY ALIGNMENT MODE\t\t\t0=ANY TIME 1=REFSMMAT +G\tP57\t\tLUMINARY\n#\t\t\t\t\t\t\t2=TWO BODIES 3=ONE BODY + G\n# 00011\t\tSPECIFY SEPARATION MONITOR PHASE\t1=DELTAV 2=STATE VECTOR UPDATE\tP46\t\tLUMINARY\n# 00012\t\tSPECIFY CSM ORBIT OPTION\t\t1=NO ORBIT CHANGE 2=CHANGE\tP22\t\tLUMINARY\n#\t\t\t\t\t\t\tORBIT TO PASS OVER LM\n"
  },
  {
    "path": "Comanche055/AUTOMATIC_MANEUVERS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tAUTOMATIC_MANEUVERS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1025-1036\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1025\n\t\tBANK\t21\n\t\tSETLOC\tDAPS3\n\t\tBANK\n\n\t\tCOUNT\t21/DAPAM\n\n\t\tEBANK=\tKMPAC\nAHFNOROT\tEXTEND\n\t\tREAD\tCHAN31\n\t\tMASK\tBIT14\n\t\tEXTEND\n\t\tBZMF\tFREECONT\n\t\tCA\tRCSFLAGS\t# SEE IF RATE FILTER HAS BEEN INITIALIZED\n\t\tMASK\tBIT14\n\t\tCCS\tA\t\t# IF SO, PROCEED WITH ATTITUDE CONTROL\n\t\tTCF\tREINIT\t\t# IF NOT, RECYCLE TO INITIALIZE FILTER\n\t\t\t\t\t# AUTOMATIC CONTROL YET\n\t\tEXTEND\n\t\tREAD\tCHAN31\n\t\tMASK\tBIT13\n\t\tEXTEND\n\t\tBZMF\tHOLDFUNC\n\n\nAUTOCONT\tCA\tHOLDFLAG\t# IF HOLDFLAG IS +, GO TO GRABANG.\n\t\tEXTEND\t\t\t# OTHERWISE, GO TO ATTHOLD.\n\t\tBZMF\tATTHOLD\n\t\tTCF\tGRABANG\n\n# MINIMUM IMPULSE CONTROL\n\nFREECONT\tCAF\tONE\n\t\tTS\tHOLDFLAG\t# RESET HOLDFLAG\n\t\t\t\t\t# INHIBIT AUTOMATIC STEERING\n\t\tEXTEND\n\t\tREAD\tCHAN32\n\t\tTS\tL\n\t\tCOM\n\t\tMASK\tMANROT\n\t\tMASK\tCHANTEMP\n\t\tLXCH\tCHANTEMP\n\t\tTC\tSTICKCHK\n\t\tINDEX\tRMANNDX\n\t\tCA\tMINTAU\t\t# MINTAU\t+0\n\t\tTS\tTAU\t\t#\t\t+1\t+14MS MINIMUM IMPULSE\n\t\tINDEX\tPMANNDX\t\t#\t\t+2\t-14MS TIME\n\t\tCA\tMINTAU\t\t#\t\t+3\t+0\n\t\tTS\tTAU1\n\t\tINDEX\tYMANNDX\n\t\tCA\tMINTAU\n# Page 1026\n\t\tTS\tTAU2\n\t\tTCF\tT6PROGM\n\n\nMINTAU\t\tDEC\t0\n\t\tDEC\t23\t\t# = 14MS\n\t\tDEC\t-23\t\t# = -14MS\n\t\tDEC\t0\n\n# Page 1027\n# \tCALCULATION OF ATTITUDE ERRORS-\n#\t-    *     -      -          -\n#\tAK = AMGB (CDUX - THETADX) + BIAS\n#\n# IE\t*AK *   * 1        SIN(PSI)        0\t** CDUX - THETADX *    *BIAS *\n#\t*   *   *                               **                *    *     *\n#\t*AK1* = * 0   COS(PSI)COS(PHI)  SIN(PHI)** CDUY - THETADY *  + *BIAS1*\n#\t*   *   *                               **                *    *     *\n#\t*AK2*   * 0  -COS(PSI)SIN(PHI)  COS(PHI)** CDUZ - THETADZ *    *BIAS2*\n#\n# \tTHE BIASES ARE ADDED ONLY WHILE PERFORMING AUTOMATIC MANEUVERS (ESP KALCMANU) TO PROVIDE ADDITIONAL LEAD\n# AND PREVENT OVERSHOOT WHEN STARTING AN AUTOMATIC MANEUVER.  NORMALLY THE REQUIRED LEAD IS ONLY 1-2 DEGREES.\n# BUT DURING HIGH RATE MANEUVERS IT CAN BE AS MUCH AS 7 DEGREES.  THE BIASES ARE COMPUTED BY KALCMANU AND REMAIN\n# FIXED UNTIL THE MANEUVER IS COMPLETED AT WHICH TIME THEY ARE RESET TO ZERO.\n\n\nATTHOLD\t\tCA\tCDUX\n\t\tEXTEND\n\t\tMSU\tTHETADX\n\t\tTS\tERRORX\n\t\tCA\tCDUY\n\t\tEXTEND\n\t\tMSU\tTHETADY\n\t\tTS\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB1\n\t\tADS\tERRORX\n\t\tCA\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB4\n\t\tTS\tERRORY\n\t\tCA\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB7\n\t\tTS\tERRORZ\n\t\tCA\tCDUZ\n\t\tEXTEND\n\t\tMSU\tTHETADZ\n\t\tTS\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB5\n\t\tADS\tERRORY\n\t\tCA\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB8\n\t\tADS\tERRORZ\n\t\tCS\tHOLDFLAG\n\t\tEXTEND\n# Page 1028\n\t\tBZMF\tJETS\n\t\tCA\tBIAS\t\t# AD BIASES ONLY IF PERFORMING AUTOMATIC\n\t\tADS\tERRORX\n\t\tCA\tBIAS1\n\t\tADS\tERRORY\n\t\tCA\tBIAS2\n\t\tADS\tERRORZ\n\t\tTCF\tJETS\n\n\nHOLDFUNC\tCCS\tHOLDFLAG\n\t\tTCF\t+3\n\t\tTCF\tATTHOLD\n\t\tTCF\t+1\nGRABANG\t\tCAF\tZERO\t\t# ZERO WBODYS AND BIASES\n\t\tTS\tWBODY\n\t\tTS\tWBODY +1\n\t\tTS\tWBODY1\n\t\tTS\tWBODY1 +1\n\t\tTS\tWBODY2\n\t\tTS\tWBODY2 +1\n\t\tTS\tBIAS\n\t\tTS\tBIAS1\n\t\tTS\tBIAS2\n\n\t\tCA\tRCSFLAGS\n\t\tMASK\tOCT16000\n\t\tEXTEND\t\t\t# IS RATE DAMPING COMPLETED\n\t\tBZF\tENDDAMP\t\t# IF SO, GO TO ENDDAMP\n\t\tCAF\tZERO\t\t# OTHERWISE, ZERO ERRORS\n\t\tTS\tERRORX\n\t\tTS\tERRORY\n\t\tTS\tERRORZ\n\t\tTCF\tJETS\n\nENDDAMP\t\tTS\tHOLDFLAG\t# SET HOLDFLAG +0\n\t\tEXTEND\n\t\tDCA\tCDUX\t\t# PICK UP CDU ANGLES FOR ATTITUDE HOLD\n\t\tDXCH\tTHETADX\t\t# REFERENCES\n\t\tCA\tCDUZ\n\t\tTS\tTHETADZ\n\t\tTCF\tATTHOLD\n\n# Page 1029\n# JET SWITCHING LOGIC AND CALCULATION OF REQUIRED ROTATION COMMANDS\n#\n# DETERMINE THE LOCATION OF THE RATE ERROR AND THE ATTITUDE ERROR RELATIVE TO THE SWITCHING LOGIC IN THE PHASE\n# PLANE.\n# COMPUTE THE CHANGE IN RATE CORRESPONDING TO THE ATTITUDE ERROR NECESSARY TO DRIVE THE THE S/C INTO THE\n# APPROPRIATE DEADZONE.\n#\n#                                     .\n#   R22                          RATE . ERROR\n#        WL+H                         .\n# *********************************   .\t\t\t\t\t***** SWITCH LINES ENCLOSING DEADZONES\n#   R23  WL                        *  .\n# ----------------------------------* .\t\t\t\t\t----- DESIRED RATE LINES\n#   R23  WL-H       -                *.\n# ****************** -                .\t\t\t\t\tR20, R21, R22, ETC REGIONS IN PHASE\n#                   * -               .* R18      R20       R21\t\tPLANE FOF COMPUTING DESIRED RESPONSE\n#                    *                . *\n#                     *-              .  *\n#   R22             R24*-    R23      .   *\n#                       *             .    *\n#                        *            .     *\n#                         + -ADB      .      * AF              ATTITUDE\n#  ........................+--+---------------+--+........................\n#                           AF *      .     +ADB  +             ERROR\n#                               *     .            *\n#                                *    .            -*\n#                                 *   .             -*\n#                                  *  .              -*\n#                                   * .                *\n#                                    *.               - *\n#                                     .                - *****************\n#                                     .*                -\n#                                     . * --------------------------------\n#                                     .  *\n#                                     .   ********************************\n#                                     .\n\n#\t\t\tFIG. 1\tPHASE PLANE SWITCHING LOGIC\n\n\n# CONSTANTS FOR JET SWITCHING LOGIC\n\nWLH/SLOP\tDEC\t.00463\t\t# = WL+H/SLOPE = .83333 DEG\t$180\nWL-H/SLP\tDEC\t.00277\t\t# = WL-H/SLOPE = .5 DEG\t\t$180\nWLH\t\t2DEC\t.0011111111\t# = WL+H = 0.5 DEG/SEC\t\t$450\n\nWLMH\t\t2DEC\t.0006666666\t# = WL-H = 0.3 DEG/SEC\t\t$450\n\nWL\t\t2DEC\t.0008888888\t# = WL   = 0.4 DEG/SEC\t\t$450\n\n# Page 1030\nSLOPE2\t\tDEC\t.32\t\t# = 0.8 DEG/SEC/DEG\t\t$450/180\nJETS\t\tCA\tADB\n\t\tAD\tFOUR\t\t# AF = FLAT REGION = .044 DEG\n\t\tTS\tT5TEMP\t\t# ADB+AF\n\t\tCAF\tTWO\nJLOOP\t\tTS\tSPNDX\n\t\tDOUBLE\n\t\tTS\tDPNDX\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\tADOT\n\t\tDXCH\tEDOT\n\t\tCA\tHOLDFLAG\t# HOLDFLAG = +0 MEANS THAT DAP IS IN\n\t\tEXTEND\t\t\t# ATTITUDE HOLD AND RATE DAMPING IS OVER.\n\t\tBZF\tINHOLD\t\t# IF THIS IS THE CASE, BYPASS ADDITION\n\t\t\t\t\t# OF WBODY AND GO TO INHOLD\n\t\tEXTEND\n\t\tINDEX\tDPNDX\n\t\tDCS\tWBODY\n\t\tDAS\tEDOT\t\t# = ADOT-WBODY\nINHOLD\t\tINDEX\tSPNDX\n\t\tCA\tERRORX\n\t\tTS\tAERR\t\t# AERR = BIAS + AK\n\n\t\tCCS\tEDOT\n\t\tTCF\tPOSVEL\n\t\tTCF\tSIGNCK1\n\t\tTCF\tNEGVEL\nSIGNCK1\t\tCCS\tEDOT +1\n\t\tTCF\tPOSVEL\n\t\tTCF\tPOSVEL\n\t\tTCF\tNEGVEL\n\t\tTCF\tNEGVEL\nPOSVEL\t\tEXTEND\n\t\tDCA\tEDOT\n\t\tDXCH\tEDOTVEL\n\t\tCA\tT5TEMP\n\t\tTS\tADBVEL\t\t# +(ADB+AF)\n\t\tCA\tAERR\n\t\tTS\tAERRVEL\n\t\tTC\tJ6.\nNEGVEL\t\tEXTEND\n\t\tDCS\tEDOT\n\t\tDXCH\tEDOTVEL\n\t\tCS\tT5TEMP\n\t\tTS\tADBVEL\t\t# -(ADB+AF)\n\t\tCS\tAERR\n\t\tTS\tAERRVEL\n\nJ6.\t\tEXTEND\n# Page 1031\n\t\tSU\tADB\n\t\tAD\tWLH/SLOP\n\t\tEXTEND\n\t\tBZMF\tJ8\n\n\t\tCS\tT5TEMP\t\t# (ADB+AF)\n\t\tAD\tAERRVEL\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\tJ7\n\t\tEXTEND\n\t\tDCS\tEDOTVEL\n\t\tEXTEND\n\t\tDV\tSLOPE\n\t\tEXTEND\n\t\tSU\tAERRVEL\n\t\tAD\tADB\n\t\tEXTEND\n\t\tBZMF\tJ18\n\t\tTCF\tJ23\n\nJ7\t\tCS\tWL-H/SLP\n\t\tEXTEND\n\t\tSU\tT5TEMP\t\t# (ADB+AF)\n\t\tAD\tAERRVEL\n\t\tEXTEND\n\t\tBZMF\tJ20\n\t\tTCF\tJ21\n\nJ8\t\tEXTEND\n\t\tDCS\tWLH\n\t\tDXCH\tWTEMP\n\t\tEXTEND\n\t\tDCA\tEDOTVEL\n\t\tDAS\tWTEMP\n\t\tCCS\tWTEMP\n\t\tTCF\tJ22\n\t\tTCF\tSIGNCK2\n\t\tTCF\tNJ22\nSIGNCK2\t\tCCS\tWTEMP +1\n\t\tTCF\tJ22\n\t\tTCF\tJ22\n\t\tTCF\tNJ22\n\nNJ22\t\tEXTEND\n\t\tDCA\tEDOTVEL\n\t\tEXTEND\n\t\tDV\tSLOPE\n\t\tAD\tT5TEMP\t\t# (ADB+AF)\n\t\tAD\tAERRVEL\n# Page 1032\n\t\tCCS\tA\n\t\tTCF\tJ23\n\t\tTCF\tJ23\n\t\tTCF\t+2\n\t\tTCF\tJ23\n\n\t\tEXTEND\n\t\tDCS\tWLMH\t\t# WL - H\n\t\tDXCH\tWTEMP\n\t\tEXTEND\n\t\tDCA\tEDOTVEL\n\t\tDAS\tWTEMP\n\t\tCCS\tWTEMP\n\t\tTCF\tJ23\n\t\tTCF\tSIGNCK3\n\t\tTCF\tNJ23\nSIGNCK3\t\tCCS\tWTEMP +1\n\t\tTCF\tJ23\n\t\tTCF\tJ23\n\t\tTCF\tNJ23\n\nNJ23\t\tCA\tAERRVEL\n\t\tAD\tT5TEMP\t\t# (ADB+AF)\n\t\tAD\tWL-H/SLP\n\t\tCCS\tA\n\t\tTCF\tJ24\n\t\tTCF\tJ24\n\t\tTCF\tJ22\n\t\tTCF\tJ22\n\nJ18\t\tEXTEND\n\t\tDCS\tEDOT\n\t\tDXCH\tKMPAC\n\t\tTCF\tJTIME\n\nJ20\t\tCS\tAERR\n\t\tAD\tADBVEL\n\t\tEXTEND\n\t\tMP\tSLOPE2\t\t# (HYSTERESIS SLOPE)\n\t\tDXCH\tKMPAC\n\t\tEXTEND\n\t\tDCS\tEDOT\n\t\tDAS\tKMPAC\n\t\tTCF\tJTIME\n\nJ21\t\tCCS\tEDOT\n\t\tTCF\tJP\n\t\tTCF\tSIGNCK4\n\t\tTCF\tJN\nSIGNCK4\t\tCCS\tEDOT +1\n# Page 1033\n\t\tTCF\tJP\n\t\tTCF\tJP\n\t\tTCF\tJN\nJN\t\tEXTEND\n\t\tDCS\tEDOT\n\t\tDXCH\tKMPAC\n\t\tEXTEND\n\t\tDCA\tWL\n\t\tDAS\tKMPAC\n\t\tTCF\tJTIME\n\nJP\t\tEXTEND\n\t\tDCS\tEDOT\n\t\tDXCH\tKMPAC\n\t\tEXTEND\n\t\tDCS\tWL\n\t\tDAS\tKMPAC\n\t\tTCF\tJTIME\n\nJ22\t\tCCS\tEDOT\n\t\tTCF\tJN\n\t\tTCF\tSIGNCK5\n\t\tTCF\tJP\nSIGNCK5\t\tCCS\tEDOT +1\n\t\tTCF\tJN\n\t\tTCF\tJN\n\t\tTCF\tJP\n\t\tTCF\tJP\n\nJ23\t\tINDEX\tSPNDX\n\t\tCS\tBIT13\t\t# RESET RATE DAMPING FLAG\n\t\tMASK\tRCSFLAGS\t# BIT13 FOR ROLL  (SPNDX = 0)\n\t\tTS\tRCSFLAGS\t# BIT12 FOR PITCH (SPNDX = 1)\n\t\t\t\t\t# BIT11 FOR YAW   (SPNDX = 2)\n\n\t\tINDEX\tSPNDX\n\t\tCAF\tOCT01400\t# IS THERE TO BE A FORCED FIRING ON THIS\n\t\tMASK\tRCSFLAGS\t# AXIS\n\t\tEXTEND\n\t\tBZF\tDOJET +2\t# NO, GO TO DOJET +2 AND DO NOTHING\n\n\t\tTCF\tJ18\t\t# YES, GO TO J18 AND FORCE A FIRING\n\nJ24\t\tCS\tAERR\n\t\tEXTEND\n\t\tSU\tADBVEL\n\t\tEXTEND\n\t\tMP\tSLOPE2\t\t# (HYSTERESIS SLOPE)\n\t\tDXCH\tKMPAC\n\t\tEXTEND\n# Page 1034\n\t\tDCS\tEDOT\n\t\tDAS\tKMPAC\n\n# Page 1035\n# \tCOMPUTE THE JET ON TIME NECESSARY TO ACCOMPLISH THE DESIRED CHANGE IN RATE, IE\n#\n#\t     T  = J/M(DELTA W)\n#\t      J\n#\n#\tDELTA W = DESIRED CHANGE IN S/C ANGULAR RATE AS DETERMINED BY THE\n#\t\t  SWITCHING LOGIC, AT THIS POINT STORED IN KMPAC.\n#\n#\t    J/M = S/C INERTIA TO TORQUE 9ATIO SCALED BY\n#\t\t  \t(57.3/450)(B24/1600)(1/.8)\n#\t\t  FOR 1 JET OPERATION  (M = 700 FT-LB).\n#\t\t  IE  J/M = J(SLUG-FTFT) x 0.00000085601606\n#\n#\t          THE CORRESPONDING COMPUTER VARIABLES ESTABLISHED BY\n#\t\t  KEYBOARD ENTRY ARE\n#\t\t\tJ/M (ROLL)\n#\t\t\tJ/M1 (PITCH)\n#\t\t\tJ/M2 (YAW)\n#\n#\t     T  = JET-ON TIME    SCALED 16384/1600 SEC\n#\t      J\n#\n#\t          THE COMPUTER VARIABLES ARE\n#\t\t\tTAU  (ROLL)\n#\t\t\tTAU1 (PITCH)\n#\t\t\tTAU2 (YAW)\n\nJTIME\t\tINDEX\tSPNDX\t\t# PICK UP S/C INERTIA/TORQUE RATIO\n\t\tCA\tJ/M\t\t# SCALED (57.3/450)(B24/1600)\n\t\tTC\tSMALLMP\t\t# FOR 1-JET OPERATION\n\t\tCA\tBIT11\n\t\tTC\tSMALLMP\n\t\tCCS\tKMPAC\n\t\tTCF\t+4\n\t\tTCF\tTAUNORM\n\t\tTCF\t+4\n\t\tTCF\tTAUNORM\n\t\tCA\tPOSMAX\n\t\tTCF\tDOJET\n\t\tCA\tNEGMAX\n\t\tTCF\tDOJET\n\nTAUNORM\t\tCA\tKMPAC +1\nDOJET\t\tINDEX\tSPNDX\n\t\tTS\tTAU\n\t\tCCS\tSPNDX\n\t\tTCF\tJLOOP\n\t\tTCF\tT6PROG\n\n# Page 1036\nZEROCMDS\tCAF\tZERO\n\t\tTS\tTAU\n\t\tTS\tTAU1\n\t\tTS\tTAU2\nT6PROG\t\tEXTEND\t\t\t# WHEN THE ROTATION COMMANDS (TAUS)\n\t\tDCA\tJETADDR\t\t# HAVE BEEN DETERMINED\n\t\tDXCH\tT5LOC\t\t# RESET T5LOC FOR PHASE3\n\t\tTCF\tRESUME\n\n\t\tEBANK=\tKMPAC\nJETADDR\t\t2CADR\tJETSLECT\n"
  },
  {
    "path": "Comanche055/CM_BODY_ATTITUDE.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     CM_BODY_ATTITUDE.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 883-889\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-12 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname and Comanche 055 page images.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 883\n\t\tBANK\t35\n\n\t\tSETLOC\tBODYATT\n\t\tBANK\n\n\t\tCOUNT\t37/CMBAT\n\n# PDL 12D - 15D SAFE.\n\n# VALUES OF GIMBAL AND BODY ANGLES VALID AT PIP TIME ARE SAVED DURING\tREADACCS.\n\n\t\tEBANK=\tRTINIT\t\t# LET INTERPRETER SET EB\n\nCM/POSE\t\tTC\tINTPRET\t\t# COME HERE VIA AVEGEXIT.\n\n\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tVN\t\t# KVSCALE = (12800/ .3048) /2VS\n\t\tVXSC\tPDVL\n\t\t\t-KVSCALE\t# KVSCALE = .81491944\n\t\t\tUNITW\t\t# FULL UNIT VECTOR\n\t\tVXV\tVXSC\t\t# VREL = V - WE*R\n\t\t\tUNITR\n\t\t\tKWE\n\t\tVAD\tSTADR\n\t\tSTORE\t-VREL\t\t# SAVE FOR ENTRY GUIDANCE.\tREF COORDS\n\n\t\tUNIT\tLXA,1\n\t\t\t36D\t\t# ABVAL( -VREL) TO X1\n\t\tSTORE\tUXA/2\t\t# -UVREL\t\t\tREF COORDS\n\n\t\tVXV\tVCOMP\n\t\t\tUNITR\t\t# .5 UNIT\t\t\tREF COORDS\n\t\tUNIT\tSSP\t\t# THE FOLLOWING IS TO PROVIDE A STABLE\n\t\t\tS1\t\t# UN FOR THE END OF THE TERMINAL PHASE.\nSPVQUIT\t\tDEC\t.019405\t\t# 1000/ 2 VS\n\t\tTIX,1\tVLOAD\t\t# IF V-VQUIT POS, BRANCH.\n\t\t\tCM/POSE2\t# SAVE UYA IN OLDUYA\n\t\t\tOLDUYA\t\t# OTHERWISE CONTINUE TO USE OLDUYA.\nCM/POSE2\tSTORE\tUYA/2\t\t#\t\t\t\tREF COORDS\n\n\t\tSTORE\tOLDUYA\t\t# RESTORE, OR SAVE AS CASE MAY BE.\n\n\t\tVXV\tVCOMP\n\t\t\tUXA/2\t\t# FINISH OBTAINING TRAJECTORY TRIAD.\n\t\tVSL1\n\t\tSTORE\tUZA/2\t\t#\t\t\t\tREF COORDS\n# Page 884\n\t\tTLOAD\t\t\t# PICK UP CDUX, CDUY, CDUZ CORRESPONDING\n\t\t\tAOG/PIP\t\t# TO PIPUP TIME IN 2S.C AND SAVE.\nCM/TRIO\t\tSTODL\t24D\n\t\t\t25D\t\t# AIG/PIP\n\n\t\tRTB\tPUSH\t\t# TO PDL0\n\t\t\tCDULOGIC\n\t\tCOS\n\t\tSTODL\tUBX/2\t\t# CI /2\n\t\t\t\t\t# AIG/PIP FROM PDL 0\n\t\tSIN\tDCOMP\n\t\tSTODL\tUBX/2 +4\t# -SI /2\n\t\t\t26D\t\t# AMG/PIP\n\t\tRTB\tPUSH\t\t# TO PDL 0\n\t\t\tCDULOGIC\n\t\tSIN\tPDDL\t\t# XCH PDL 0.  SAVE SM /2\n\t\tCOS\tPDDL\t\t# CM /2 TO PDL 2\n\t\t\t0\t\t# SM /2\n\t\tDCOMP\tVXSC\n\t\t\tUBX/2\n\t\tVSL1\t\t\t# NOISE WONT OVFL.\n\t\tSTODL\tUBY/2\t\t# =(-SMCI, NOISE, SMSI)/2\n\t\t\t2\t\t# CM /2 REPLACES NOISE\n\t\tSTODL\tUBY/2 +2\t# UBY/2=(-SMCI, CM, SMSI)/2\n\t\t\t24D\t\t# AOG/PIP\n\t\tRTB\tPUSH\t\t# TO PDL 4\n\t\t\tCDULOGIC\n\t\tSIN\tPDDL\t\t# XCH PDL 4.  SAVE SO /2\n\t\tCOS\tVXSC\t\t# CO /2\n\t\t\tUBY/2\n\t\tSTODL\tUBY/2\t\t# UBY/2=(-COSMCI, COCM, COSMSI)/4\n\t\t\t4D\t\t# SO /2\n\t\tDMP\tDCOMP\n\t\t\tUBX/2 +4\t# -SI /2\n\t\tDAD\n\t\t\tUBY/2\t\t# INCREMENT BY (SOSI /4)\n\t\tSTODL\tUBY/2\n\t\t\t\t\t# SO /2 FROM PDL 4\n\t\tDMP\tDAD\n\t\t\tUBX/2\t\t# CI /2\n\t\t\tUBY/2 +4\n\t\tSTOVL\tUBY/2 +4\t# YB/4\t\t\t\tPLATFORM COORDS\n\n\t\t\t\t# YB = (-COSMCI + SOSI , COCM , COSMSI + SOCI )\n\n\t\t\tUBY/2\n\t\tVXM\tVSL2\n\t\t\tREFSMMAT\t# .5 UNIT\n\t\tSTODL\tUBY/2\t\t# YB/2 DONE\t\t\tREF COORDS\n# Page 885\n\t\t\t\t\t# CM /2 FROM PDL 2\n\t\tVXSC\tVSL1\n\t\t\tUBX/2\n\t\tSTODL\tUBX/2\t\t# =( CMCI, NOISE, -CMSI)/2\n\t\tSTADR\t\t\t# SM /2 FROM PDL 0\n\t\tSTOVL\tUBX/2 +2\t# SM /2 REPLACES NOISE\n\t\t\tUBX/2\t\t# XB/2\t\t\t\tPLATFORM COORDS\n\n\t\t\t\t# XB = ( CMCI , SM , -CMSI )\n\n\t\tVXM\tVSL1\n\t\t\tREFSMMAT\t# .5 UNIT\n\t\tSTORE\tUBX/2\t\t# XB/2 DONE\t\t\tREF COORDS\n\n\t\tVXV\tVSL1\n\t\t\tUBY/2\n\t\tSTOVL\tUBZ/2\t\t# ZB/2 DONE\t\t\tREF COORDS\n\n\t\t\t\t# EQUIVALENT TO\n\t\t\t\t# ZB = ( SOSMCI + COSI , -SOCM , -SOSMSI + COCI)\n\n\t\t\tUXA/2\t\t# -UVREL/2 = -UVA/2\n\t\tVXV\tUNIT\t\t# GET UNIT(-UVREL*UBY)/2 = UL/2\n\t\t\tUBY/2\t\t# YB/2\n\t\tPUSH\tDOT\t\t# UL/2 TO PDL 0,5\n\t\t\tUZA/2\t\t# UNA/2\n\t\tSTOVL\tCOSTH\t\t# COS(ROLL)/4\n\t\t\t0\t\t# UL/2\n\n\t\tDOT\n\t\t\tUYA/2\n\t\tSTCALL\tSINTH\t\t# -SIN(ROLL)/4\n\t\t\tARCTRIG\n\t\tSTOVL\t6D\t\t# -(ROLL/180) /2\n\t\t\tUBY/2\n\t\tDOT\tSL1\t\t# -UVA.UBY = -SIN(BETA)\n\t\t\tUXA/2\t\t# -UVREL/2\n\t\tARCSIN\n\t\tSTOVL\t7D\t\t# -(BETA/180) /2\n\t\t\tUBX/2\t\t# XB/2\n\t\tDOT\t\t\t# UL.UBX = -SIN(ALFA)\n\t\t\t0\t\t# UL/2\n\t\tSTOVL\tSINTH\t\t# -SIN(ALFA)/4\n\t\tDOT\t\t\t# UL/2 FROM PDL 0\n\t\t\tUBZ/2\n\t\tSTCALL\tCOSTH\t\t# COS(ALFA)/2\n\t\t\tARCTRIG\n\t\tSTOVL\t8D\t\t# -(ALFA/180) /2\n\t\t\tUNITR\t\t# UR/2\t\t\t\tREF COORDS\n\t\tDOT\tSL1\n# Page 886\n\t\t\tUZA/2\t\t# MORE ACCURATE AT LARGE ARG.\n\t\tARCCOS\n\t\tSTORE\t10D\t\t# (-GAMA/180)/2\n\n\t\tTLOAD\tEXIT\t\t# ANGLES IN MPAC IN THE ORDER\n\t\t\t\t\t# -( (ROLL, BETA, ALFA) /180)/2\n\t\t\t6D\t\t# THESE VALUES CORRECT AT PIPUP TIME.\n\n# Page 887\n# BASIC SUBROUTINE TO UPDATE ATTITUDE ANGLES\n\n\t\tEBANK=\tAOG\n\nCM/ATUP\t\tCA\tEBAOG\n\t\tTS\tEBANK\nCMTR1\t\tINDEX\tFIXLOC\n\t\tCS\t10D\t\t# (GAMA/180)/2\n\t\tXCH\tGAMA\n\t\tTS\tL\n\n\t\tINHINT\n\t\t\t\t# MUST REMAIN INHINTED UNTIL UPDATE OF BODY\n\t\t\t\t# ANGLES, SO THAT GAMDIFSW IS VALID FIRST PASS\n\t\t\t\t# INDICATOR.\n\n\t\tCS\tCM/FLAGS\n\t\tMASK\tBIT11\t\t# GAMDIFSW=94D BIT11\tINITLY=0\n\t\tEXTEND\t\t\t# DONT CALC GAMA DOT UNTIL HAVE FORMD\n\t\t\t\t\t# ONE DIFFERENCE.\n\t\tBZF\tDOGAMDOT\t# IS OK, GO ON.\n\t\tADS\tCM/FLAGS\t# KNOW BIT IS 0\n\t\tTC\tNOGAMDOT\t# SET GAMDOT = 0\n\nDOGAMDOT\tCS\tL\n\t\tAD\tGAMA\t\t# DEL GAMA/360= T GAMDOT/360\n\t\tEXTEND\n\t\tMP\tTCDU\t\t# TCDU = .1 SEC, T = 2 SEC.\n\t\tTS\tGAMDOT\t\t# GAMA DOT TCDU / 180\n\n\t\tEXTEND\t\t\t# IGNORE GAMDOT IF LEQ .5 DEG/SEC\n\t\tBZMF\t+2\n\t\tCOM\n\t\tAD\tFIVE\n\t\tEXTEND\n\t\tBZMF\t+3\t\t# SET GAMDOT=+0 AS TAG IF TOO SMALL.\n\nNOGAMDOT\tCA\tZERO\t\t# COME HERE INHINTED.\n\t\tTS\tGAMDOT\n\t\t\t\t\t# FOR NOW LEAVE IN 2S.C\n\t\t\t\t\t# UPDATE ANGLES BY CORRECTING EUILER ANG\n\t\t\t\t\t# FOR ACCRUED INCREMENT SINCE PIPUP\n\t\t\t\t\t# R = R EUIL + R(NOW) -R(PIPUP)\n\t\tCS\tMPAC\t\t# GET (R EUL/180) /2\n\t\tDOUBLE\t\t\t# POSSIBLE OVERFLOW\n\t\tTC\tCORANGOV\t# CORRECT FOR OVFL IF ANY\n\t\tEXTEND\n\t\tSU\tROLL/PIP\t# GET INCR SINCE PIPUP\n\t\tAD\tROLL/180\t# ONLY SINGLE OVFL POSSIBLE.\n\t\tTC\tCORANGOV\t# CORRECT FOR OVFL IF ANY\n# Page 888\n\t\tTS\tTEMPROLL\n\n\t\tCS\tMPAC +2\t\t# GET (ALFA EUL/180) /2\n\t\tDOUBLE\t\t\t# SAME AS FOR ROLL.  NEEDED FOR EXT ATM DAP\n\t\tTC\tCORANGOV\t# CORRECT FOR OVFL IF ANY\n\t\tEXTEND\n\t\tSU\tALFA/PIP\n\t\tAD\tALFA/180\n\t\tTC\tCORANGOV\t# CORRECT FOR OVFL IF ANY\n\t\tTS\tTEMPALFA\n\n\t\tCS\tMPAC +1\t\t# GET (BETA EUL/180) /2\nCMTR2\t\tDOUBLE\n\t\tEXTEND\n\t\tSU\tBETA/PIP\n\t\tAD\tBETA/180\n\t\tXCH\tTEMPBETA\t# OVFL NOT EXPECTED.\n\n\t\tCA\tEBANK3\n\t\tTS\tEBANK\n\n\t\tEBANK=\tPHSNAME5\n\t\tEXTEND\n\t\tDCA\tREPOSADR\t# THIS ASSUMES THAT THE\t\tTC  PHASCHNG\n\t\tDXCH\tPHSNAME5\t# IS NOT CHANGED IN\t\tOCT 10035\n\t\t\t\t\t# SERVICER.\n\n\t\tCA\tEBAOG\n\t\tTS\tEBANK\n\n\t\tEBANK=\tAOG\nREDOPOSE\tEXTEND\t\t\t# RE-STARTS COME HERE\n\t\tDCA\tTEMPROLL\n\t\tDXCH\tROLL/180\n\t\tCA\tTEMPBETA\n\t\tTS\tBETA/180\n\n\t\tRELINT\n\n\t\tTC\tINTPRET\t\t# CANT TC DANZIG AFTER PHASCHNG.\nCM/POSE3\tVLOAD\tABVAL\t\t# RETURN FROM CM/ATUP.\t(RESTART)\n\t\t\tVN\t\t# 2(-7) M/CS\n\t\tSTORE\tVMAGI\t\t# FOR DISPLAY ON CALL.\n\n\t\tGOTO\n\t\t\tPOSEXIT\t\t# ENDEXIT, STARTENT, OR SCALEPOP.\n\nCORANGOV\tTS\tL\n\t\tTC\tQ\n\t\tINDEX\tA\n# Page 889\n\t\tCA\tLIMITS\n\t\tADS\tL\n\t\tTC\tQ\t\t# COSTS 2 MCT TO USE.  SEE ANGOVCOR.\n\n-KVSCALE\t2DEC\t-.81491944\t# -12800/(2 VS .3048)\n\nTCDU\t\tDEC\t.1\t\t# TCDU = .1 SEC.\n\n\t\tEBANK=\tAOG\nREPOSADR\t2CADR\tREDOPOSE\n"
  },
  {
    "path": "Comanche055/CM_ENTRY_DIGITAL_AUTOPILOT.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tCM_ENTRY_DIGITAL_AUTOPILOT.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1063-1092\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrections: Removed an extraneous label\n#\t\t\t\tEXDAPIN, added a missing instruction in\n#\t\t\t\tCOMPAT.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1063\n# SUBROUTINE TO READ GIMBAL ANGLES AND FORM DIFFERENCES.  GIMBAL ANGLES ARE SAVED IN 2S COMPLEMENT, BUT THE\n# DIFFERENCES ARE IN 1S COMP.  ENTER AND READ ANGLES EACH .1 SEC.\n#\n#\tCM/DSTBY = 1 FOR DAP OPERATION\n#\tCM/DSTBY = 0 TO TERMINATE DAP OPERATION.\n\n\t\tBANK\t15\n\n\t\tSETLOC\tETRYDAP\n\t\tBANK\n\n\t\tCOUNT\t15/DAPEN\n\n\t\tEBANK=\tAOG\n\nREADGYMB\tCA\tTEN\t\t# KEEP RESTART DT GOING RELATIVE TO\n\t\tADS\tCM/GYMDT\t# PIPTIME. (GROUP 6)\n\n\t\t\t\t\t# IF A RESTART OCCURS, SKIP PRESENT CYCLE. THE\n\t\t\t\t\t# PHASCHNG PROTECTION IS IN CM/DAPIC.\n\n\t\tCA\tBIT6\t\t# CHECK FOR FINE ALIGN MODE OF CDU.\n\t\tMASK\tIMODES33\t# ( PROTECT AOG/PIP ETC AS WELL AS\n\t\tEXTEND\t\t\t#  GIMBAL DIFFERENCES)\n\t\tBZF\tREADGYM1\t# OK\n\n\t\tCS\tBIT1\t\t# NOT IN FINE ALIGN, SO IDLE.\n\t\tMASK\tCM/FLAGS\t# SET GYMDIFSW = 0\n\t\tTS\tCM/FLAGS\n\t\tTC\tFLUSHJET\t# QUENCH JETS, SINCE MAY BE A WHILE.\n\t\tTC\tCM/GYMIC +2\n\nREADGYM1\tCA\tCDUX\n\t\tXCH\tAOG\n\t\tEXTEND\n\t\tMSU\tAOG\t\t# -DELAOG=AOG(N-1) - AOG(N)\n\t\tTS\t-DELAOG\n\n\t\tCA\tCDUY\n\t\tXCH\tAIG\n\t\tEXTEND\n\t\tMSU\tAIG\n\t\tTS\t-DELAIG\n\n\t\tCA\tCDUZ\n\t\tXCH\tAMG\n\t\tEXTEND\n\t\tMSU\tAMG\n\t\tTS\t-DELAMG\n\n# Page 1064\nDOBRATE?\tCS\tCM/FLAGS\t# CM/DSTBY=103D BIT2  GYMDIFSW=104D BIT1\n\t\tMASK\tTHREE\n\t\tINDEX\tA\n\t\tTC\t+1\n\t\tTC\tDOBRATE\t\t# OK, GO ON\n\t\tTC\tCM/GYMIC\t# DONT CALC BODYRATE ON FIRST PASS.\n\t\tNOOP\n\t\tTC\tFLUSHJET\t# TURN OFF ALL JETS\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t00006\t\t# DEACTIVATE DAP GROUP 6.\n\n\t\tTC\tTASKOVER\n\nDOBRATE\t\tCA\tONE\t\t# DO BODYRATE\nDOBRATE1\tTS\tJETEM\t\t# SKIP BODYRATE.\n\n\t\tCA\tTEN\t\t# KEEP CDU READ GOING.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tAOG\n\t\t2CADR\tREADGYMB\n\n\t\t\t\t\t# DOES NOT PROTECT TEMK, SQ IN SPSIN/COS\n\n\t\tCCS\tJETEM\n\t\tTC\tBODYRATE\n\t\tTC\tTASKOVER\t# SKIP CALC ON INITIAL PASS. (PASSES)\n\nCM/GYMIC\tADS\tCM/FLAGS\t# GYMDIFSW: C(A)=1, KNOW BIT IS 0\n\t\tCAF\tZERO\n\t\tTS\tJETAG\n\t\tTS\tOLDELP\n\t\tTS\tOLDELQ\n\t\tTS\tOLDELR\n\t\tTS\tGAMDOT\t\t# NO GYM DIF, PROB NO GAM DIF.\n\t\tTC\tDOBRATE1\n\n# Page 1065\n# COME HERE TO CORRECT FOR OVERFLOW IN ANGULAR CALCULATIONS\n\nANGOVCOR\tTS\tL\t\t# THIS COSTS 2 MCT TO USE.\n\t\tTC\tQ\t\t# NO OVFL\n\t\tINDEX\tA\n\t\tCAF\tLIMITS\n\t\tADS\tL\n\t\tTC\tQ\n\n\t\tBLOCK\t3\n\n\t\tCOUNT\t03/DAPEN\n\nFLUSHJET\tCA\t7\t\t# COME HERE TO TURN OFF ALL JETS.\n\t\tEXTEND\n\t\tWRITE\tROLLJETS\t# ZERO CHANNEL 6\n\t\tEXTEND\n\t\tWRITE\tPYJETS\t\t# ZERO CHANNEL 5\n\t\tTC\tQ\n\n\t\tBANK\t15\n\n\t\tCOUNT\t15/DAPEN\n\n\t\tSETLOC\tETRYDAP\n\t\tBANK\n\nRATEAVG\t\tCOM\t\t\t# SUBROUTINE TO ESTIMATE RATES IN PRESENCE\n\t\tAD\tJETEM\t\t# OF CONSTANT ACCELERATION.\n\t\tEXTEND\n\t\tMP\tHALF\t\t# DELV (EST) = DELV +(DELV-OLDELV)/2\n\t\tAD\tJETEM\n\t\tTC\tQ\n\n# Page 1066\n# THESE ARE CALLED FOR THE VARIOUS INITIALIZATIONS NEEDED.\n\n\t\tBANK\t20\n\t\tSETLOC\tDAPS1\n\t\tBANK\n\n\t\tCOUNT\t20/DAPEN\n\t\tEBANK=\tAOG\n\nCM/DAPON\tCA\tEBAOG\n\t\tTS\tEBANK\n\n\t\tTC\tDOWNFLAG\t# RESET DAPBIT1.  T5 RESTART IDENTIFIER.\n\t\tADRES\tDAPBIT1\t\t# BIT 15 FLAG 6\t\tCM FLAGS.\n\t\tTC\tDOWNFLAG\t# RESET DAPBIT2\n\t\tADRES\tDAPBIT2\t\t# BIT 14 FLAG 6\n\t\tEXTEND\n\t\tDCA\tT5IDLER1\t# DISABLE RCS CALCULATION\n\t\tDXCH\tT5LOC\n\t\tEXTEND\n\t\tDCA\tT5IDLER1\t# DISABLE RCS JET CALLS\n\t\tDXCH\tT6LOC\n\n\t\tTC\tFLUSHJET\t# JETS DEPARTED ON SM. ZERO JET BITS.\n\n\t\tCS\t13,14,15\n\t\tMASK\tDAPDATR1\t# SET CONFIG BITS =0 FOR ENTRY\n\t\tTS\tDAPDATR1\n\t\tTC\t+4\n\nNOTYET\t\tCA\t.5SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\t# (DELAYJOB DOES INHINT)\n\t+4\tCA\tBIT11\t\t# GAMDIFSW = 94D BIT11, INITLY=0\n\t\tMASK\tCM/FLAGS\t# IF ZERO, WAIT UNTIL CM/POSE UPDATE.\n\t\tEXTEND\n\t\tBZF\tNOTYET\n\n\t\tCS\tONE\t\t# ACTIVATE CM/DAP\n\t\tTS\tRCSFLAGS\t# USE BIT3 TO INITIALIZE NEEDLER ON\n\t\t\t\t\t# NEXT PASS.\n\t\tTS\tP63FLAG\t\t# SO WAKEP62 WILL NOT BE INITIATED UNTIL\n\t\t\t\t\t# HEADSUP IS SET IN P62.\n\t\t\t\t\t# FLAG TO PREVENT MULTIPLE CALLS TO WAKEP62.\n\n\t\tCA\t7\n\t\tTS\tJETAG\n\t\tTS\tPAXERR1\t\t# KEEP NEEDLES ZERO UNTIL DAP UPDATE\n\t\t\t\t\t# IN CASE CMDAPMOD IS NOT +1.\n# Page 1067\n\t\tINHINT\n\t\tEXTEND\n\t\tDCA\tALFA/180\t# DO ATTITUDE HOLD UNTIL KEYBOARD\n\t\tDXCH\tALFACOM\t\t# ESTABLISHES HEADSUP.\n\t\tCA\tROLL/180\n\t\tTS\tROLLHOLD\t# FOR ATTITUDE HOLD IN MODE +1.\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tTS\tROLLC\t\t# NOT INTERESTED IN LO WORD.\n\n\t\tCS\tCM/FLAGS\n\t\tMASK\tBIT12\t\t# CMDAPARM =93D BIT12  INITLY=0\n\t\tADS\tCM/FLAGS\t# SET BIT TO 1.\n\n\t\tCS\tFLAGWRD2\t# SET  NODOFLAG  TO PREVENT FURTHER\n\t\tMASK\tBIT1\t\t# V 37 ENTRIES.\n\t\tADS\tFLAGWRD2\n\n\t\tRELINT\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tP62.1\n\n# Page 1068\n# INITIALIZE CM/DAP.  WAITLIST CALL FOR READGYMB.  SET SWITCH CM/DSTBY =1\n# SO READACCS WILL ENTER A WTLST CALL FOR  SETJTAG .\n#  CMDAPARM  = 0, SO ONLY BODY RATE AND ATTITUDE CALCULATIONS ARE DONE.\n# SET AVEGEXIT TO CONTINUE AT CM/POSE\n\nCM/DAPIC\tCA\tEBAOG\n\t\tTS\tEBANK\n\n\t\tINHINT\nCM/DAP2C\tCS\tPIPTIME +1\n\t\t\t\t\t# PRIO OF P62 L PRIO AVG.:PIPTM=PIPTM1\n\t\tTS\tJETEM\n\n\t\tCA\tPOS1/2\n\t\tAD\tPOS1/2\n\t\tAD\tTIME1\t\t# OVFL GUARANTEED\n\t\tADS\tJETEM\t\t# C(A) = DELTA TIME SINCE PIPUP\n\n\t\tCS\tFIVE\n\t\tAD\tJETEM\n\t\tCCS\tA\n\t\tAD\t-CDUT+1\n\t\tTCF\t-2\n\t\tNOOP\n\t\tAD\tONE\t\t# SEND NO ZERO TO WTLST\n\t\tTS\tCM/GYMDT\t# FOR RESTART\n\t\tTC\tWAITLIST\n\t\tEBANK=\tAOG\n\t\t2CADR\tREADGYMB\n\n\t\tCS\tCM/SWIC1\t# GAMDIFSW, GYMDIFSW, CM/DSTBY\n\t\tMASK\tCM/FLAGS\t# DAPARM, .05GSW, LATSW, ENTRYDSP\n\t\tAD\tCM/SWIC2\t# SET CM/DSTBY, LATSW\n\t\t\t\t\t# DISABLE ENTRY DISPLAY, SINCE DES. GIMB.\n\t\t\t\t\t# CALC. (P62.3) GOES TO ENDEXIT.\n\t\tTS\tCM/FLAGS\n\n\t\tCA\t7\n\t\tTS\tBETA/180\t# NECESSARY:  NO OVFL CORRECTION\n\t\tCA\tONE\t\t# INITIALIZE THE TM OF BODY RATES VIA\n\t\tTS\tSW/NDX\t\t#   UPBUFF.\n\n\t\tTC\t2PHSCHNG\t# DOES INHINT/RELINT\n\t\tOCT\t40116\t\t# SAVE TBASE6\n\t\tOCT\t05024\n\t\tOCT\t13000\n\n\t\tTC\tPOSTJUMP\n# Page 1069\n\t\tCADR\tP62.2\n\nCM/SWIC1\tOCT\t16017\nCM/SWIC2\t=\tTEN\t\t# 00012 : CM/DSTBY, LATSW\n-CDUT+1\t\tOCT\t77766\n\t\tEBANK=\tT5LOC\nT5IDLER1\t2CADR\tT5IDLOC\n\n# Page 1070\n# THIS SECTION CALCULATES THE ANGULAR BODY RATES EACH .1 SEC.  THE ANGULAR RATES ARE THOSE ALONG THE BODY AXES\n# XB, YB, ZB, AND ARE NORMALLY DESIGNATED  P, Q, R.\tREQUIREMENT:  TEMPORARY ERASE. JETEM, JETEM +1\n#\n# \t   SINCE RESTARTS ZERO THE JET OUTPUT CHANNELS, NO ATTEMPT IS MADE TO RESTART THE  ENTRY DAPS. THAT IS,\n# 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\n# ROLL SYSTEM WILL MISS ONLY 0.1 SEC OF CONTROL. HOWEVER, IF THE RESTART OCCURS AFTER THE SECTION TIMETST HAS\n# STARTED, THEN THE ROLL SYSTEM WILL MISS ONE CYCLE.\n# THIS IS NECESSARY UNDER THE GROUNDRULE THAT NO JET COMMANDS SHALL BE LESS THAN 14 MS.\n\n\t\tEBANK=\tAOG\n\t\tBANK\t15\n\t\tSETLOC\tETRYDAP\n\t\tBANK\n\n\t\tCOUNT\t15/DAPEN\n\nBODYRATE\tCA\tAMG\t\t# THESE ARE 2S COMPL NOS, BUT USE ANYWAY.\n\t\tTC\tSPCOS\n\t\tTS\tCOSM\n\n\t\tCA\tAOG\t\t# C(AOG) = AOG/180\n\t\tTC\tSPSIN\t\t# SINO\n\t\tTS\tSINO\t\t# SINO = SIN(AOG)\n\n\t\tEXTEND\n\t\tMP\tCOSM\n\t\tTS\tSINOCOSM\t# SO CM\n\n\t\tCA\tAOG\n\t\tTC\tSPCOS\t\t# COSO\n\t\tTS\tCOSO\n\n\t\tEXTEND\n\t\tMP\tCOSM\n\t\tTS\tCOSOCOSM\t# CO CM\n\n# PITCHDOT:  Q TCDU/180 = IDOT TCDU/180 COSO COSM + MDOT TCDU/180 SINO\n\n\t\tCS\t-DELAMG\n\t\tEXTEND\n\t\tMP\tSINO\n\t\tDXCH\tJETEM\t\t# 2 LOCS\n\t\tCS\t-DELAIG\n\t\tEXTEND\n\t\tMP\tCOSOCOSM\n\t\tDAS\tJETEM\n\t\tCA\tJETEM\n\t\tXCH\tOLDELQ\n\t\tTC\tRATEAVG\n\t\tTS\tQREL\t\t# PITCHDOT = Q TCDU/180\n\n# Page 1071\n# YAWDOT:  R TCDU/180 = -IDOT TCDU/180 COSM SINO + MDOT TCDU/180 COSO\n\n\t\tCS\t-DELAMG\n\t\tEXTEND\n\t\tMP\tCOSO\n\t\tDXCH\tJETEM\n\t\tCA\t-DELAIG\n\t\tEXTEND\n\t\tMP\tSINOCOSM\n\t\tDAS\tJETEM\n\t\tCA\tJETEM\n\t\tXCH\tOLDELR\n\t\tTC\tRATEAVG\n\t\tTS\tRREL\t\t# YAWDOT = R TCDU/180\n\n# ROLLDOT:  P TCDU/180 = ODOT TCDU/180 + IDOT TCDU/180 SINM\n\n\t\tCA\tAMG\n\t\tTC\tSPSIN\n\t\tTS\tSINM\n\n\t\tEXTEND\n\t\tMP\t-DELAIG\n\t\tTS\tJETEM\n\t\tCA\tZERO\n\t\tDDOUBL\t\t\t# ROUND L INTO A\n\t\tAD\t-DELAOG\n\t\tAD\tJETEM\n\t\tCS\tA\n\t\tTS\tJETEM\n\t\tXCH\tOLDELP\n\t\tTC\tRATEAVG\n\t\tTS\tPREL\t\t# ROLLDOT = P TCDU/180\n\n\t\t\t\t\t# IF GAMDOT < 0.5 DEG/SEC, THEN GAMDOT =0\n\n\t\tCCS\tGAMDOT\n\t\tTC\t+2\n\t\tTC\tNOGAMDUT\n\t\tCS\tROLL/180\n\t\tTC\tSPSIN\n\t\tEXTEND\n\t\tMP\tGAMDOT\n\t\tTS\tJETEM +1\t# -SR GAMDOT\n\t\tEXTEND\n\t\tMP\tSINTRIM\t\t# SIN(-20)\t(FOR NOMINAL L/D = .3)\n\t\tADS\tPREL\t\t# PREL TCDU/180=(P-SALF SR GAMDOT)TCDU/180\n\n\t\tCA\tROLL/180\n\t\tTC\tSPCOS\n# Page 1072\n\t\tCOM\n\t\tEXTEND\n\t\tMP\tGAMDOT\n\t\tADS\tQREL\t\t# QREL TCDU/180=(Q-CR GAMDOT) TCDU/180\n\n\t\tCS\tJETEM +1\t# B( ) = -SR GAMDOT\n\t\tEXTEND\n\t\tMP\tCOSTRIM\t\t# COS(-20)\t(FOR NOMINAL L/D = .3)\n\t\tADS\tRREL\t\t# RREL TCDU/180=(R+CALF SR GAMDOT)TCDU/180\n\nNOGAMDUT\tCA\tBIT12\t\t# CMDAPARM = 93D BIT 12\n\t\tMASK\tCM/FLAGS\n\t\tEXTEND\nSTBYDUMP\tBZF\tTASKOVER\t# DAP NOT ARMED.\n\n\t\tCA\tPOSMAX\t\t# PICK UP AT ATTRATES IN 10 MS OR SO.\n\t\tTS\tTIME5\n\n\t\tEXTEND\n\t\tDCA\tATDOTCAD\n\t\tDXCH\tT5LOC\n\t\t\t\t\t# DOES NOT PROTECT TEMK, SQ IN SPSIN/COS\n\n\t\tTC\tTASKOVER\n\n\t\tEBANK=\tAOG\nATDOTCAD\t2CADR\tATTRATES\n\n# Page 1073\n# CALCULATE BODY ATTITUDE RATES AND INTEGRATE TO OBTAIN ATTITUDE ANGLES.\n#\n#\tCB PHIDOT TCDU/180 = (CA PREL + SA RREL) TCDU/180\n#\tBETADOT TCDU/180 = (-SA PREL + CA RREL) TCDU/180\n#\tALFADOT TCDU = (QREL + SB PHIDOT) TCDU/180\n\nATTRATES\tLXCH\tBANKRUPT\t# CONTINUE HERE VIA T5\n\t\tEXTEND\t\t\t# TASK MAY BE SKIPPED AT RESTART.\n\t\tQXCH\tQRUPT\n\t\tCA\tSR\n\t\tDOUBLE\n\t\tTS\tCM/SAVE\n\t\t\t\t\t# DOES NOT PROTECT TEMK, SQ IN SPSIN/COS\n\n\t\tCA\tQREL\n\t\tAD\tALFA/180\n\t\tTC\tANGOVCOR\n\t\tTS\tALFA/180\n\t\tTC\tSPCOS\n\t\tTS\tCALFA\t\t# CALFA\n\t\tTS\tPHIDOT\n\n\t\tEXTEND\n\t\tMP\tPREL\n\t\tXCH\tPHIDOT\t\t# CA PREL\n\t\tEXTEND\n\t\tMP\tRREL\t\t# CA RREL\n\t\tTS\tBETADOT\n\n\t\tCA\tALFA/180\n\t\tTC\tSPSIN\n\t\tTS\tSALFA\t\t# SIN(ALFA)\n\n\t\tEXTEND\n\t\tMP\tRREL\t\t# SA RREL\n\t\tADS\tPHIDOT\t\t# CB PHIDOT, SAVED.\n\n\t\tCS\tSALFA\n\t\tEXTEND\n\t\tMP\tPREL\n\t\tADS\tBETADOT\t\t# SAVE BETADOT TCDU/180\n\t\tADS\tBETA/180\t# BETA DONE.\n\n\t\tTC\tSPSIN\n\t\tEXTEND\n\t\tMP\tPHIDOT\t\t# NEGLECT CB IN CB PHIDOT\n\t\tAD\tALFA/180\n\t\tTC\tANGOVCOR\n\t\tTS\tALFA/180\t# ALFA DONE.\n# Page 1074\n\t\tCOM\n\t\tAD\tALFACOM\n\t\tTC\tANGOVCOR\t# JUST IN CASE ...\n\t\tTS\tAK1\n\t\tTS\tQAXERR\t\t# FOR PITCH FDAI AND EDIT.\n\n\t\tCA\tPHIDOT\t\t# PHIDOT TCDU/180, NEGLECTING CB\n\t\tAD\tROLL/180\n\t\tTC\tANGOVCOR\n\t\tTS\tROLLTM\t\t# ROLL/180 FOR TM.\n\t\tTS\tROLL/180\t# ROLL DONE.\n\n# START YAW AUTOPILOT HERE.  RATE DAMPING WITH ENFORCED COORDINATED ROLL MANEUVER.\n\n\t\tCS\tBETA/180\t# IF IN ATM, SAVE 'RAXERR' FOR TM DNLST.\n\t\tAD\tBETACOM\n\t\tTS\tRAXERR\t\t# IF OUTSIDE ATM, USE TM REGISTER 'RAXERR'\n\t\t\t\t\t# AS A TEMPORARY.  (DAP OPERATION IS IN INTERRUPT, SO\n\t\t\t\t\t# IS OK.)  FINAL C(RAXERR) AT END OF DAP CYCLE WILL\n\t\t\t\t\t# BE R-AXIS ERROR.\n\n\t\tCA\tBIT3\t\t# .05GSW = 102D BIT3\tSW=0, LESS .05G\n\t\tMASK\tCM/FLAGS\t# SWITCH =1, GREATER THAN .05 G\n\t\tEXTEND\n\t\tBZF\tEXDAP\t\t# IF G LESS THAN .05\n\t\tCS\tONE\t\t# IF G GEQ  THAN .05\n\t\tTS\tCMDAPMOD\t# SAVE -1 FOR USE IN CM/RCS\n\n\t\tTS\tAK1\t\t# TO ZERO PITCH AND YAW FDAI NEEDLES\n\t\tTS\tAK2\t\t# IN ATM.  (MODE =-1)\n\n\t\tCS\tPREL\t\t# YAW ERROR = RREL - PREL TAN(ALFA)\n\t\tEXTEND\n\t\tMP\tSINTRIM\t\t# LET SIN(-20) BE APPROX FOR TAN(-20)\n\t\tAD\tRREL\n\t\tTC\t2D/SDZ\t\t# GO TEST DZ.  GET TAG: +0 IF IN DZ\n\t\tINDEX\tA\t\t# +/- 1 IF NOT\n\t\tCAF\tYJETCODE\n\n\t\tTS\tJETEM\n\n# START PITCH AUTOPILOT HERE.  RATE DAMPING ONLY.\n\n\t\tCA\tQREL\n\t\tTC\t2D/SDZ\nEXDAPIN\t\tINDEX\tA\t\t# COME HERE FROM EX ATM DAP\n\t\tCAF\tP/RJCODE\n\t\tADS\tJETEM\t\t# COMBINE ALL NEW BITS.\n\n\t\tEXTEND\t\t\t# DOES NOT REQUIRE SAVING OLD CODES.\n# Page 1075\n\t\tWRITE\tPYJETS\t\t# SET PYCHAN TO DESIRED BIT CONFIG.\n\n\t\tCCS\tJETAG\n\t\tTC\tCM/RCS\n\t\tTC\tCM/FDAI\n\t\tTC\tCM/FDAIR -1 \t# (JETAG=-1 EQUIVALENT TO CMDAPMOD=+1)\n\n# Page 1076\n# DEAD ZONE LOGIC USED BY ENTRY DIGITAL AUTOPILOTS.\n\n3DDZ\t\tCCS\tA\t\t# YAWLIM=1.0-3/180=16384-273=16111\n\t\tAD\tYAWLIM\n\t\tTCF\tDZCOM\n\t\tAD\tYAWLIM\n\t\tTCF\tDZNOCOM\n\n\t\t\t\t\t# BIASED DZ FOR EXT ATM DAP.\nBIASEDZ\t\tTS\tJETEM2\t\t# SAVE RATE/180.  ERROR/180 IS IN L.\n\t\tCCS\tA\t\t# START ERROR DZ.\n\t\tCS\tCM/BIAS\t\t# = .6/180\n\t\tTCF\t+2\n\t\tCA\tCM/BIAS\n\t\tAD\tL\t\t# BIAS THE ERROR.\n\t\tLXCH\tQ\t\t# SAVE CALLERS RETURN ADDRESS.\n\t\tTC\t3DDZ\t\t# GO GENERATE THE ERROR BIT.\n\t\tDXCH\tL\t\t# BIT TO L, RESTORE CALLERS Q.\n4D/SDZ\t\tCCS\tJETEM2\t\t# CAME HERE IN EXT ATM. C(L) = ERROR BIT\n\t\tAD\t4D/SLIM\t\t# IF RATE GEQ 4D/S, SET L=0 AND TAKE\n\t\tTCF\t+2\t\t# JET BITS ACCORDING TO SGN OF RATE.\n\t\tAD\t4D/SLIM\n\t\tTS\tA\n\t\tTCF\t+2\t\t# RATE OK. CONTINUE\n\t\tZL\t\t\t# RATE GEQ 4 D/S.  OVER RIDE ERROR BIT\n\t\tXCH\tJETEM2\t\t# AND CONTINUE TO GET SIGN.\n\n2D/SDZ\t\tCCS\tA\t\t# COME HERE TO TEST IF A WITHIN 2DEG/S DZ\n\t\tAD\tYDOTLIM\t\t# 1.0 - YDOT DZ\t\t(OR PDOT)\n\t\tTCF\t+3\n\t\tAD\tYDOTLIM\t\t# YDOT DZ = 2 DEG/SEC\nDZCOM\t\tCOM\nDZNOCOM\t\tTS\tJETEM +1\t# GENERATE TAG, SET C(A)= -+1 OUTSIDE DZ\n\t\tCA\tZERO\t\t# SET C(A) = +0 INSIDE\n\t\tTC\tQ\n\n# Page 1077\n# EXTRA ATMOSPHERIC DIGITAL AUTOPILOT\n#\n# 1.\tIF ABS(CALF) -C(45) POS, USE\t\t\tIF CALFA POS, CMDAPMOD= +0\n#\tBETA:\tYAW ERROR = SGN(CALF) (BETACOM -BETA)\tIF CALFA NEG, CMDAPMOD= -0\n#\t\t     RATE = BETADOT\t\t\tIF CMDAPMOD = -0, RATE = RREL\n#\t\t   R-AXIS = CONTROL\n#\n#\tROLL:  ROLL ERROR = SGN(CALF) (ROLLC - ROLL)\tIF CMDAPMOD = -0, RATE DAMP ONLY.\n#\t\t     RATE = PREL\n#\t\t   P-AXIS = CONTROL\n#\n# 2.\tIF C(45) GEQ CALFA GEQ -C(45), USE\t\tCMDAPMOD = +1\n#\tBETA:  ROLL ERROR = SGN(-SALF) (BETACOM -BETA)\n#\t\t     RATE = BETADOT\n#\t\t   P-AXIS = CONTROL\n#\n#\tROLL:\tYAW ERROR = SGN(SALF) (ROLLC - ROLL)\tRATE DAMP ONLY.\n#\t\t     RATE = RREL\n#\t\t   R-AXIS = CONTROL\n#\n# 3.\tFOR ALL CASES, USE\n#\tALFA: PITCH ERROR = (ALFACOM - ALFA)\n#\t\t     RATE = QREL\n#\t\t   Q-AXIS = CONTROL\n\nEXDAP\t\tTS\tCMDAPMOD\t# +0 FOR NOW\n\t\tCCS\tCALFA\n\t\tAD\tC45LIM\t\t# =1.0-COS(45)\n\t\tTCF\t+2\n\t\tAD\tC45LIM\n\t\tTS\tA\n\t\tTCF\tEXDAP2\t\t# HERE IF ABS(CALFA) L COS(45)\n\n\t\tCCS\tCALFA\t\t# |CALFA| > 0.707\n\t\tTCF\t+1\t\t# CONTINUE IF POS; GO TO EXDAP4 IF NEG.\n\n\t\tCCS\tP63FLAG\t\t# VALID VALUES ARE:  -1, +1, +0.\n\t\tTC\tEXDAP4\n\t\tTC\t+2\n\t\tTC\tEXDAP4\n\t\tTC\tPHASCHNG\t# SINGLE PASS THROUGH HERE.\n\t\tOCT\t40334\n\t\tCS\tONE\n\t\tTS\tP63FLAG\t\t# SET FLAG TO ASSURE SINGLE PASS.\n\t\tCA\tNSEC\n\t\tTC\tWAITLIST\n\t\tEBANK=\tAOG\n\t\t2CADR\tWAKEP62\t\t# CALL TO TERMINATE P62 IN N SEC.\n# Page 1078\n\t\t\t\t\t# 65 DEG/ 3DEG/SEC = 21 SEC NOMINAL\n\t\t\t\t\t# TRANSIT TIME FROM ALFA=45 TO ALFA TRIM.\n\nEXDAP4\t\tCCS\tJETAG\t\t# ROLLJET INTERFACE TEST BETWEEN .1 SEC\n\t\tTCF\tEXDAP3\t\t# DAP AND THE 2 SEC CM/RCS DAP\n\t\tTCF\tEXDAP3\n\t\tCA\tZERO\n\t\tEXTEND\t\t\t# TURN OFF ROLL JETS IF ON AND WAIT\n\t\tWRITE\tROLLJETS\t# UNTIL START OF 2 SEC CM/RCS CYCLE\n\t\tTS\tJETAG\t\t# RESTORE PROPER VALUE +0\n\n\t\t\t\t\t# ROLL FDAI WILL BE IN ERROR UNTIL NEXT CM/RCS CALL.\nEXDAP3\t\tCCS\tCALFA\t\t# HERE IF ABS(CALFA) GEQ COS(45)\n\t\tCA\tRAXERR\t\t# C()= BETACOM - BETA/180\n\t\tTCF\tEXDAP1\n\t\tCS\tZERO\n\t\tTS\tCMDAPMOD\t# FOR CM/RCS\n\t\tCS\tRAXERR\t\t# COMPLEMENT OF YAW ERROR.\nEXDAP1\t\tTS\tRAXERR\t\t# FOR YAW FDAI\n\t\tTS\tAK2\t\t# WANT RAXERR FOR TM.\n\t\tTS\tL\n\t\tCCS\tCMDAPMOD\t# COORDINATE BETA CONTROL.\n\t\tTC\t+3\t\t# C(CMDAPMOD) CAN BE +1, +0, OR -0.\n\t\tCA\tONE\t\t# USE BETADOT TO COORD IN MODE +0\n\t\tINDEX\tA\t\t# OTHERWISE USE RREL.\n\t\tCA\tRREL\n\t\tTC\tBIASEDZ\t\t# GO TEST DZ. +0 IF IN DZ, +-1 OTHERWISE\n\t\t\t\t\t# IF GEQ 4D/S, SET ERROR BIT IN L=0\n\t\tEXTEND\n\t\tROR\tLCHAN\t\t# L HAS BETA BIT\n\t\tINDEX\tA\n\t\tCAF\tYJETCODE\n\t\tTS\tJETEM\n\n\t\tCA\tQAXERR\t\t# ALFA ERROR.\n\t\tTS\tL\n\t\tCA\tQREL\t\t# FOR ALPHADOT USE QREL\n\t\tTC\tBIASEDZ\n\t\tEXTEND\n\t\tROR\tLCHAN\n\t\tTCF\tEXDAPIN\t\t# CONTINUE ON IN DAP\n\nEXDAP2\t\tINCR\tCMDAPMOD\t# SET CMDAPMOD TO +1\n\n\t\tCS\tONE\t\t# INDICATE CHANGE FROM .1 SEC UPDATE TO\n\t\tTS\tJETAG\t\t# TO 2 SEC FOR ROLL JETS. (IF CMDAPMOD\n\t\t\t\t\t# =0 AND JETAG =-1, QUENCHES JETS IF ON)\n\n\t\tCCS\tP63FLAG\t\t# IF FLAG WAS +1, SET =0.\n\t\tTS\tP63FLAG\n# Page 1079\n\t\tNOOP\n\n\t\tCCS\tSALFA\t\t# BETA CONTROL WITH P JETS\n\t\tCS\tRAXERR\t\t# B()= BETACOM - BETA/180\n\t\tTCF\t+2\n\t\tCA\tRAXERR\n\t\tTS\tPAXERR1\t\t# TEMP SAVE.  ERROR/180\n\t\tEXTEND\n\t\tMP\tHALF\t\t# CM/FDAI EXPECTS ERROR/360.\n\t\tXCH\tPAXERR1\t\t# ERROR/360 FOR FDAI, GET ERROR/180.\n\t\tTS\tL\n\t\tCCS\tSALFA\n\t\tCS\tBETADOT\t\t# USE BETADOT TO COORD IN MODE +1\n\t\tTC\t+2\n\t\tCA\tBETADOT\n\t\tTC\tBIASEDZ\n\t\tEXTEND\n\t\tROR\tLCHAN\n\t\tINDEX\tA\n\t\tCAF\tP/RJCODE\t# GET ROLL CODE\n\t\tEXTEND\t\t\t# ROLL CONTROL WITH YAW JETS.\n\t\tWRITE\tROLLJETS\t# WE,LL SKIP REGULAR ROLL SYST\n\n\t\tCA\tROLLHOLD\t# ROLL/180 AT CM/DAPON TIME.\n\t\tEXTEND\n\t\tMSU\tROLL/180\t# 1,S COMPL, BUT SO WHATS A BIT.?\n\t\tTS\tL\t\t# FORCE A LIMIT CYCLE IN YAW RATE.\n\t\tCCS\tSALFA\n\t\tCA\tL\t\t# TO REMOVE ITS BIASING EFFECT ON M DOT.\n\t\tTC\tEXDAP1\n\t\tCS\tL\n\t\tTC\tEXDAP1\n\nNSEC\t\tDEC\t2100\t\t# 65 DEG/ 3 DEG/SEC\n\t\t\t\t\t# IF NSEC IS CHANGED, REMEMBER TO CHANGE 4.33SPOT.\n4D/SLIM\t\tDEC\t16348\t\t# 1.0 -4/180 D/S = 4/1800 EXP 14\nYDOTLIM\t\tDEC\t16366\t\t# =1.0 - YDOT DZ= 16384 -18\n\t\t\t\t\t# YDOT DZ = YDOT TCDU/180 = 2/1800 EXP 14\n\nCM/BIAS\t\tDEC\t55\t\t# =.6/180 B14 = 55\nYAWLIM\t\tDEC\t16055\t\t# YAWLIM=1.0-3.6/180=16384-329=16055\nC45LIM\t\tDEC\t.29289\t\t# =1.0-COS(45)\n\nSINTRIM\t\tDEC\t-.34202\t\t# SIN(-20)\t(FOR NOMINAL L/D = .3)\nCOSTRIM\t\tDEC\t.93969\t\t# COS(-20)\t(FOR NOMINAL L/D = .3)\n\n# TO MAKE DAP INSENSITIVE TO PITCH ERRORS DUE TO ACCUMULATED NAV ERRORS, USE NOMINAL VALUE (-20 DEG) FOR TRIM ALFA\n# USED DURING ATMOSPHERIC COORDINATION. OUTSIDE ATMOSPHERE, NAV ERRORS WILL BE SLIGHT, BUT ALFA CAN DIFFER GREATLY\n# FROM TRIM, SO USE ON-BOARD ESTIMATES.\n\n# Page 1080\n# JET CODE TABLES FOLLOW _\n\n\t\tOCTAL\t00120\t\t# POS Y\nYJETCODE\tOCTAL\t00000\t\t# RCS JET BITS\n\t\tOCTAL\t00240\t\t# NEG Y\n\t\tOCTAL\t00005\t\t# POS R JET BITS\tALSO POS P JET BITS\nP/RJCODE\tOCTAL\t00000\n\t\tOCTAL\t00012\t\t# NEG R\t\t\tALSO NEG P\n\n# Page 1081\n# RCS\t\tTHIS SECTION IS ENTERED EACH 2 SEC BY WAITLIST CALL FOLLOWING A DELAY OF 1.2 SEC AFTER PIPUP.\n# THE TASK  SETJTAG  SETS A FLAG IN  JETAG  TO SIGNIFY THAT ROLL UPDATE IS DUE.  IN ROUGHLY 5 CS  BPDYRATE  WILL BE\n# EXECUTED AND JETAG WILL CAUSE  CM/RCS  TO ACT ON ROLLC IMMEDIATELY THEREAFTER.  THE\n# TASK SAVES THE CALL TIME SO THAT CM/RCS CAN DETERMINE HOW MUCH OF THE 2 SEC INTERVAL REMAINS BEFORE THE\n# NEXT UPDATE.\n\nSETJTAG\t\tCS\tTIME1\t\t# SAVE NOMINAL UPDATE TIME FOR SYNCH\n\t\tTS\tTUSED\n\t\t\t\t\t# THE 5 CS APPEARS IN TIMETST.\n\t\tCA\tONE\t\t# RATHER THAN INCR, FOR SAFETY\n\t\tTS\tJETAG\t\t# SET JETAG=1 TO CAUSE CM/RCS TO BE\n\t\tTC\tPHASCHNG\n\t\tOCT\t00001\n\n\t\tTC\tTASKOVER\t# EXECUTED AFTER NEXT BODYRATE UPDATE\n\n# PREDICTIVE ROLL SYSTEM\tENTRY STEERING PROVIDES ROLL COMMAND IN LOC ROLLC.  THE FOLLOWING CALCULATES THE\n# TRAJECTORY TO THE ORIGIN IN PHASE PLANE (X,V).  PROGRAM ENTERS JET ON AND OFF CALLS INTO WTLST TO PRODUCE\n# THE DESIRED TRAJECTORY.  ONLY THOSE CALLS WHICH CAN BE EXECUTED WITHIN THE INTERVAL  T  (2 SEC) ARE ENTERED IN\n# WTLST, THE REMAINDER ARE RECONSIDERED AT NEXT UPDATE.\n\nHALFPR\t\tEQUALS\tNEG1/2 +1\n\n\t\t\t\t\t# CLEAR JETAG BEFORE TIMETST.  SET TO +0 TO SHOW\n\t\t\t\t\t# ROLL DAP CALLED.  IN EVENT OF RESTART, BODYRATE\n\t\t\t\t\t# MAY MISS A CYCLE.  CM/RCS WILL MISS A CYCLE ONLY\n\t\t\t\t\t# IF A RESTART OCCURS AFTER TIMETST COMMENCES.\n\nCM/RCS\t\tCS\tONE\n\t\tTS\tJNDX\t\t# SET NDX FOR POS ROLL, AND CHANGE LATER\n\n\t\tCS\t2T/TCDU\t\t# ROLLDOT = DELAOG + DELAIG SINM =DELR\n\t\tEXTEND\n\t\tMP\tPREL\t\t# DELR/180 = RDOT TCDU/180 = RDOT/1800\n\t\tAD\tL\t\t# -2 RDOT T/180 IN L\n\t\tTS\t-VT/180\t\t# SAVE -2VT/180 HERE\n\n\t\tCS\tROLL/180\n\t\tTS\tSR\t\t# SAVE (-R/180) /2\n\n\t\tCS\tCM/FLAGS\n\t\tMASK\tBIT4\t\t# LATSW = 101D BIT4\n\t\tEXTEND\t\t\t# ROLL OVER TOP $\n\t\tBZF\tGETLCX\t\t# NO, TAKE SHORTEST PATH\n\t\tADS\tCM/FLAGS\t# YES, ENFORCE ROLL OVER TOP.. (BIT =0)\n\t\tCA\tROLLC\t\t# (ROLLC/180) /2\n\t\tAD\tSR\t\t# -(R/180) /2\n\t\tXCH\tLCX/360\t\t# DIFFERENT X REQD HERE.  DISCONT AT 180.\n\t\tTCF\tCOMPAT\t\t# POSSIBLE OVFL ABOVE.\n\n# Page 1082\nGETLCX\t\tCA\tPOS1/2\t\t# FORM RCOM/360\n\t\tDOUBLE\n\t\tAD\tROLLC\n\t\tXCH\tLCX/360\t\t# IGNORE POSSIBLE OVFL.\n\n\t\tCA\tSR\t\t# FORM -R/360\n\t\tAD\tNEG1/2\n\t\tAD\tNEG1/2\t\t# IGNORE OVFL\n\t\tXCH\tLCX/360\t\t# -R/360\n\t\tADS\tLCX/360\t\t# LCX/360 = RCOM/360 -R/360  RANGE (-1,1)\n\n# DOES SGN(-VT) (VT/180) (VT/180) (180/(4 A1 TT COSALFA)) + X/360 + SGN(X) / 2\t  OVFL ?\n\n\t\tCCS\t-VT/180\t\t# TAKE SHORTEST ANGULAR PATH\n\t\tAD\tONE\t\t# (BASED ON SINGLE JET ACCELERATION)\n\t\tTCF\t+2\n\t\tAD\tONE\n\t\tEXTEND\n\t\tMP\t-VT/180\t\t# C(-VT/180) = -2 VT/180\n\t\tEXTEND\n\t\tMP\t1/16A1\t\t# = 180/(16 A1 TT)\n\t\tEXTEND\n\t\tDV\tCALFA\n\t\tTS\tL\n\t\tCCS\tLCX/360\n\t\tCAF\tPOS1/2\n\t\tTCF\t+2\n\t\tCS\tPOS1/2\n\t\tAD\tLCX/360\t\t# IS LCX/360 LESS THAN 180 DEGS  $\n\t\tAD\tL\n\t\tTS\tL\n\t\tTCF\tCOMPAT\t\t# YES, GO ON.\nTRTAGXPI\tINDEX\tA\t\t# NO, SHIFT X BY - SGN(X) 2 PI\n\t\tCS\tHALFPR\t\t# +A YIELDS -1/2\n\t\tDOUBLE\n\t\tADS\tLCX/360\n\nCOMPAT\t\tCA\tLCX/360\t\t# CORRECT FOR ASSUMED COORD TURN.\n\t\tEXTEND\n\t\tMP\tCALFA\t\t# COS ALFA\n\t\tTS\tLCX/360\t\t# SCALED LCX OK HERE.\n\n\t\tCCS\tCMDAPMOD\t# FOUR POSSIBILITIES HERE\n\t\tTC\tDZCALL1\t\t# EXIT, SETTING JETAG=0. (C(A)=0)\n\t\t\t\t\t# ALL 3 AXES ALREADY DONE.\n\t\tTC\t+1\t\t# G LESS THAN .05.  CA POS. CONTINUE\n\t\tCA\tLCX/360\t\t# G GEQ .05.  CONTINUE IN CM/RCS\n\t\tTS\tLCX/360\t\t# CMDAPMOD=-0.  DAMPING ONLY. SET LCX=0\n\t\tTS\tERRORZ\t\t# INITIAL ROLL ERROR (UNREFLECTED) FOR TM.\n\t\tTS\tPAXERR1\t\t# SAVE LCX FOR FDAI AND EDIT.  (/360)\n# Page 1083\n\t\tCA\t-VT/180\t\t# GET - 2 VT/180\n\t\tTS\tSR\n\t\tCA\tSR\t\t# GET -VT/180, LEAVE -VT/360 IN SR FOR DZ\n\t\tTS\t-VT/180E\t#\t\t\tDIAGNOSTIC ****\n\t\tXCH\t-VT/180\t\t# NOW CONTENTS OF -VT/180 AS LABELED\n\t\tEXTEND\n\t\tMP\t-VT/180\t\t# B(A) = -ZVT/180\n\t\tEXTEND\n\t\tMP\t180/8ATT\n\t\tTS\tVSQ/4API\n\n# IS SGN(VT) ( (180/4A1 TT) VT/180 VT/180 - .5 BUFLIM/360 ) -X/360 - .5 BUFLIM/360  POS?\n\nWHICHALF\tDOUBLE\t\t\t# FOR SECOND BURN, A1\n\t\tCOM\n\t\tAD\tBUFLIM\t\t# =BUFLIM/(2 360)\n\t\tTS\tL\n\t\tCCS\t-VT/180\n\t\tCS\tL\n\t\tTCF\t+2\n\t\tCA\tL\n\t\tAD\tLCX/360\n\t\tAD\tBUFLIM\n\t\tEXTEND\n\t\tBZMF\tREFLECT\t\t# POINT (X,V) IN LHP.\n\n# IS SGN(VT) ( (180/4A1 TT) VT/180 VT/180 - .5 BUFLIM/360 ) -X/360 + .5 BUFLIM/360  NEG?\n\n\t\tCOM\n\t\tAD\tBUFLIM\n\t\tAD\tBUFLIM\n\t\tEXTEND\n\t\tBZMF\tDZ1\t\t# POINT (X,V) IN RHP.\n\n# IS POINT WITHIN VELOCITY DZ?\n\n\t\tCS\tVSQMIN\t\t# IS VSQ/4API - (VSQ/4API) MIN NEG?\n\t\tAD\tVSQ/4API\n\t\tEXTEND\n\t\tBZMF\tDZCALL\t\t# YES.\n\n# POINT IS IN BUFFER ZONE.  THRUST TO X AXIS.\n\n\t\tCS\tJNDX\n\t\tTS\tJNDX1\n\t\tTC\tOVRLINE1\n\nREFLECT\t\tCS\t-VT/180\t\t# RELFECT LHP INTO RHP REL TO TERM CONTR\n\t\tTS\t-VT/180\n\t\tTS\tSR\t\t# -VT/360 SAVED FOR DZ.\n# Page 1084\n\t\tCS\tLCX/360\n\t\tTS\tLCX/360\n\t\tCS\tJNDX\n\t\tTS\tJNDX\n\n# IS VSQ/4API - (VSQ/4API) MIN NEG?\n\nDZ1\t\tCS\tVSQMIN\t\t# IS VSQ/4API - (VSQ/4API) MIN NEG  $\n\t\tAD\tVSQ/4API\n\t\tEXTEND\n\t\tBZMF\tDZ2\t\t# YES, GO TEST FURTHER.\n\t\tTCF\tMAXVTEST\t# NO\n\n# IS X/360 - XMIN/360 -VT/360 NEG?\n\nDZ2\t\tCS\tXMIN/360\t# XMIN/360 = 4/360\n\t\tAD\tLCX/360\n\t\tAD\tSR\t\t# C(SR) = -VT/360\n\t\tEXTEND\t\t\t# IS X/360 - XMIN/360 -VT/360 NEG  $\n\t\tBZMF\tDZCALL\t\t# YES, IN DZ. EXIT SETTING JETAG=0.\n\n# IS XD/360 - VM/360K - XS/360 POS?\n\nMAXVTEST\tCS\tJNDX\n\t\tTS\tJNDX1\t\t# NOW CAN SET JNDX1 FOR TON2 JETS.\n\t\tCS\tXS/360\t\t# XS/360 = (XMIN -YMIN/K) /360\n\t\tAD\tVSQ/4API\n\t\tAD\tLCX/360\n\t\tTS\tXD/360\t\t# XD/360= X/360 +VSQ/4API   X INTERCEPT\n\t\t\t\t\t# BUT C(XD/360) = (XD - XS) /360\n\t\tAD\t-VM/360K\t# X INTERCEPT FOR MAX V (VM)\n\t\tCOM\n\t\tEXTEND\n\t\tBZMF\tMAXVTIM1\t# YES, THRUST TO VM\n\t\tCA\tXD/360\n\t\tEXTEND\n\t\tMP\tKTRCS\n\t\tDDOUBL\t\t\t# GO SAVE PREDICTED DRIFTING VELOCITY.\n\n\t\tTC\tGETON1\t\t# INSURE THAT Q IS POS AS TAG.\nMAXVTIM1\tEXTEND\n\t\tZQ\t\t\t# SET +Q AS TAG\n\t\tCS\t-VMT/180\nGETON1\t\tTS\tVDT/180\t\t# VDT/180 OR VMT/180\n\t\tAD\t-VT/180\n\t\tDOUBLE\n\t\tEXTEND\n\t\tMP\t180/8ATT\n\t\tTS\tTON1\t\t# TON1 / 4T\n# Page 1085\n\t\tEXTEND\n\t\tBZMF\tOVRLINE\n\t\tTC\tGETON2\t\t# RESET Q POS IF CAME FROM MAXVTIM1\n\nOVRLINE\t\tCCS\tQ\n\t\tTCF\tOVRLINE1\nMAXVTIM2\tCA\tJNDX1\t\t# ABOVE VM, SO THRUST DOWN\n\t\tTS\tJNDX\n\t\tCS\tTON1\n\t\tTCF\tOVRLINE2 +1\n\nOVRLINE1\tCS\t-VT/180\t\t# DRIFT AT V\n\t\tTS\tVDT/180\nOVRLINE2\tCA\tZERO\n\t\tTS\tTON1\nGETON2\t\tCA\tVDT/180\t\t# VDT/180, OR VMT/180 OR VT/180\n\t\tDOUBLE\n\t\tEXTEND\n\t\tMP\t180/8ATT\n\t\tDOUBLE\t\t\t# FOR SECOND BURN, A1\n\t\tTS\tTON2\t\t# = TON2 / 4T\n\n\t\tCOM\n\t\tEXTEND\n\t\tBZMF\tGETOFF\n\t\tTS\tTON2\n\t\tCA\tJNDX\n\t\tTS\tJNDX1\n\nGETOFF\t\tCS\tTON2\t\t# TON2 / 4T\n\t\tEXTEND\n\t\tMP\tVDT/180\t\t# VDT/180, OR VT/180, OR VMT/180.\n\t\tTS\tXD/360\t\t# USE AS TEMP\n\t\tCS\tVDT/180\n\t\tEXTEND\n\t\tBZF\tTOFFOVFL\t# OMIT THE DIVIDE IF DEN = 0.\n\t\tAD\t-VT/180\n\t\tEXTEND\n\t\tMP\tTON1\t\t# TON1 /4T\n\t\tAD\tXD/360\t\t# TEMP = -VDT/180 / 2 TON2\n\t\tAD\tLCX/360\n\t\tZL\n\t\tXCH\tL\t\t# TEST THE DIVIDE\n\t\tEXTEND\n\t\tDV\tVDT/180\n\t\tEXTEND\n\t\tBZF\tGETOFF2\t\t# DIVIDE OK\n\nTOFFOVFL\tCA\t2JETT\t\t# OVFL, USE  2T  FOR CONVENIENCE.\n\t\tTCF\tTIMSCAL\n\n# Page 1086\nGETOFF2\t\tXCH\tL\t\t# GET NUMERATOR.\n\t\tEXTEND\n\t\tDV\tVDT/180\t\t# C(A) = TOFF / 2T\n\t\tEXTEND\n\t\tMP\t2JETT\nTIMSCAL\t\tTS\tTOFF\t\t# IN CS\n\n\t\tCAF\t4JETT\n\t\tEXTEND\n\t\tMP\tTON1\t\t# C(TON1) = TON1 / 4T\n\t\tTS\tTON1\t\t# IN CS\n\n\t\tCAF\t4JETT\n\t\tEXTEND\n\t\tMP\tTON2\t\t# C(TON2) = TON2 / 4T\n\t\tTS\tTON2\t\t# IN CS\n\n\t\tCA\tZERO\t\t# CANNOT REDO AFTER TIMETST.  TUSED GONE\n\t\tTS\tJETAG\t\t# SET +0 TO SHOW ROLL DAP CALLED.\n\n\t\t\t\t\t# CAUSE THE TM OF BODY RATES VIA UPBUFF TO BE\n\t\t\t\t\t# INITIALIZED. ALSO CAUSE NEEDLES TO BE DONE ON EXIT\n\t\t\t\t\t# AND ON ALTERNATE PASSES THROUGH CM/DUMPR.\n\n\t\tCA\tONE\n\t\tTS\tSW/NDX\n\n# Page 1087\n# TIMETEST SECTION FOR RCS\n#\n# ENTER WITH THREE TIME INTERVALS AND THE CORRESPONDING JET CODE INDEXES IN ERASABLE LOCS TON1, TOFF, TON2, JNDX\n# JNDX1.  SECTION PROCESSES TIME INTERVALS FOR WTLST CALLS AND ASSURES THAT WTLST CALLS ARE MADE ONLY\n# (1) FOR POS INTERVALS GREATER THAN A SPECIFIED MINIMUM (HERE CHOSEN AS 2 CS) AND\n# (2) FOR THE INTERVALS THAT WILL BE EXECUTED WITHIN THE TIME REMAINING IN THE SAMPLE INTERVAL T (2 SEC).\n# TIMETST ESTABLISHES 6 LOCS CONTAINING JET CODES AND CORRESPONDING TIME INTERVALS.  THUS:  TON1, T1BITS,\n# TOFF, TBITS, TON2, T2BITS.  OF THESE THE FIRST 2 LOCS ARE TEMPORARY, FOR IMMEDIATE ACTION, IN GENERAL.\n# SECTION JETCALL BELOW PROCESSES THIS LIST.\n\nTIMETST\t\tCA\tTIME1\t\t# CORRECT FOR POSSIBLE TIME1 OVFL.\n\t\tAD\tPOS1/2\n\t\tAD\tPOS1/2\t\t# OVFL GUARANTEED.\n\t\tADS\tTUSED\t\t# B(TUSED) =-TUSED =-OLTIME1\n\n\t\tCA\t-T-3\t\t# =-T +2 -5 (SEE SETJTAG)\n\t\t\t\t\t# THE +2 REQUIRED FOR PROPER BRANCH.\n\t\tADS\tTUSED\t\t# TUSED = TIME(K)-TIME(K-1)-T+2\n\n\t\tCS\tTWO\t\t# USE 2 SINCE TIME3 UNCERTAIN TO 1\n\t\tAD\tTON1\n\t\tEXTEND\n\t\tBZMF\tTIMETST1\n\t\tINDEX\tJNDX\n\t\tCAF\tP/RJCODE\n\t\tTS\tT1BITS\n\n\t\tCA\tTON1\n\t\tADS\tTUSED\n\t\tEXTEND\n\t\tBZMF\tTOFFTEST\n\t\tCA\tZERO\n\t\tTCF\tTIMETST3\nTIMETST1\tCS\tONE\n\t\tTS\tTON1\nTOFFTEST\tCS\tTWO\n\t\tAD\tTOFF\n\t\tEXTEND\n\t\tBZMF\tTIMETST2\n\t\tCA\tTOFF\n\t\tADS\tTUSED\n\t\tEXTEND\n\t\tBZMF\tTON2TEST\n\t\tCA\tZERO\n\t\tTCF\tTIMETST4\nTIMETST2\tCS\tONE\n\t\tTS\tTOFF\nTON2TEST\tCS\tTWO\n\t\tAD\tTON2\n\t\tEXTEND\n\t\tBZMF\tTIMETST5\n# Page 1088\n\t\tINDEX\tJNDX1\n\t\tCAF\tP/RJCODE\n\t\tTS\tT2BITS\n\t\tCA\tTON2\n\t\tADS\tTUSED\n\t\tEXTEND\n\t\tBZMF\tJETCALL1\n\t\tCA\tZERO\n\t\tTCF\tTIMETST5 +1\nTIMETST3\tTS\tTON1\n\t\tCS\tONE\nTIMETST4\tTS\tTOFF\nTIMETST5\tCS\tONE\n\t\tTS\tTON2\n\n# SECTION  JETCALL  EXAMINES CONTENTS OF JET TIMES IN LIST, ESTABLISHES WTLST ENTRIES, AND EXECUTES CORRESPONDING\n# JET CODES.  A POSITIVE NZ NUMBER IN A TIME REGISTER INDICATES THAT A WTLST CALL IS TO BE MADE, AND ITS JET BITS\n# EXECUTED.  A +0 INDICATES THAT THE TIME INTERVAL DOES NOT APPLY, BUT THE CORRESPONDING JET BITS ARE TO BE\n# EXECUTED.  A NEG NUMBER INDICATES THAT THE TIME INTERVAL HAS BEEN PROCESSED.  IN EVENT OF +0 OR -1, THE\n# SUBSEQUENT TIME REGISTER IS EXAMINED FOR POSSIBLE ACTION.  THUS JET BITS TO BE EXECUTED MAY COME FROM MORE\n# THAN ONE REGISTER.\n\nJETCALL1\tCA\tZERO\n\t\tTS\tOUTTAG\n\t\tTS\tNUJET\n\t\tTS\tTBITS\n\t\tDXCH\tTON1\n\t\tCCS\tA\n\t\tTCF\tJETCALL2\t# CALL WTLST\nJETCALL3\tLXCH\tNUJET\t\t# WTLST ENTRIES COME HERE FROM JETCALL\n\t\tCS\tONE\n\t\tDXCH\tTOFF\n\t\tCCS\tA\n\t\tTCF\tJETCALL2\t# CALL WTLST\n\t\tLXCH\tNUJET\n\t\tCS\tONE\n\t\tDXCH\tTON2\n\t\tCCS\tA\n\t\tTCF\tJETCALL2\t# CALL WTLST\n\t\tLXCH\tNUJET\n\t\tTC\tJETACTN\t\t# C(A) = +0\nJETCALL2\tXCH\tL\t\t# SAVE JET BITS FOR AFTER WTLST CALL\n\t\tADS\tNUJET\n\t\tXCH\tL\n\t\tAD\tONE\t\t# RESTORE FOR CCS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tAOG\n\t\t2CADR\tJETCALL\n\nJETACTN\t\tCA\tNUJET\t\t# COME HERE WHEN DESIRED JET CODE IS KNOWN\n# Page 1089\n\t\tEXTEND\t\t\t# NO NEED TO SAVE OLD CODES\n\t\tWRITE\tROLLJETS\t# SET RCHAN TO NEW BIT CONFIG.\n\n\t\tCCS\tOUTTAG\n\t\tTC\tTASKOVER\nROLLDUMP\tTC\tCM/FDAIR\n\n\t\t\t\t\t# EDIT DUMP AT ABOVE LOCATION.\n\n# WAITLIST ENTRIES COME HERE.\n\nJETCALL\t\tCAF\tBIT2\t\t# CM/DSTBY =103D BIT2\n\t\tTS\tOUTTAG\t\t# SIGNIFY WTLST ENTRY\n\t\tMASK\tCM/FLAGS\t# IS SYSTEM DISABLED  $\n\t\tEXTEND\n\t\tBZF\tJETACTN +1\t# YES, QUENCH ROLL JETS, IF ON AND EXIT.\n\t\tZL\t\t\t# NO, CONTINUE.\n\t\tTCF\tJETCALL3\t# C(A) POS, C(L) = +0\n\n# DEAD ZONE ENTRIES COME HERE.\n\nDZCALL\t\tCS\tCMDAPMOD\t# POSSIBLE VALUES OF CMDAPMOD: -1, +0, -0.\n\t\tMASK\tBIT1\n\t\tTS\tL\t\t# C(L)=0 FOR -0: C(L)=1 FOR -1 OR +0.\n\t\tINDEX\tA\t\t# ERASABLE ORDER:  ROLLTM, ROLLC, ROLLC +1.\n\t\tCA\tROLLTM\t\t# GET ROLL/180 OR ROLLC (/360).\n\t\tINDEX\tL\n\t\tTS\tA\t\t# IF C(L)=1, STORE 'ROLLC' IN 'L'.\n\t\tAD\tL\t\t# (BOTH MUST BE SCALED DEG/180)\n\t\tTC\tANGOVCOR\t# C(A)=ROLL/180 OR 2 ROLLC.\n\t\tTS\tROLLHOLD\t# IF CMDAPMOD =-0, SAVE ROLL ANGLE.\n\t\t\t\t\t#\tOTHERWISE, SAVE ROLL COMMAND.\n\n\t\tCA\tZERO\t\t# COME HERE IF IN DZ, AND CANCEL JETS.\n\t\tEXTEND\t\t\t# INHINT NOT NEEDED HERE.\n\t\tWRITE\tROLLJETS\t# TURN OFF ALL ROLL JETS.\n\t\tTS\tVDT/180\t\t# SET =0 TO SHOW IN DEAD ZONE.\nDZCALL1\t\tTS\tJETAG\t\t# COME HERE WITH C(A)=0.\n\t\tTC\tROLLDUMP\n\n# Page 1090\n# CM ENTRY FDAI DISPLAY\n#\n# CALCULATE BY INTEGRATION THE ROLL ERROR BETWEEN THE 2 SEC CM/RCS UPDATES.  DISPLAY ATTITUDE ERRORS AS FOLLOWS:\n#\tATM DAP:\tDISPLAY ONLY ROLL ATTITUDE ERROR.\n#\tEXT ATM DAP:\tPRESENT 3 ATTITUDE ERRORS RELATIVE TO THE APPROPRIATE BODY AXES EACH .1 SEC.\n#\t\t\t\tROLL\tROLLC-ROLL\n#\t\t\t\tPITCH\tALFAC-ALFA\n#\t\t\t\tYAW\tBETAC-BETA\n#\n# DURING ENTRY, THE FDAI NEEDLES HAVE FULL SCALE OF 67.5 DEG IN ROLL AND 16.875 DEG IN PITCH AND YAW.\n# THE SUBROUTINE  NEEDLER  EXPECTS (ANGLE/180) AND SCALES TO 16.875 DEG FULL SCALE.\n\n\t\t\t\t\t# COME HERE EACH .1 SEC.  (CMDAPMOD=+1 COMES BELOW)\nCM/FDAI\t\tCS\tPHIDOT\t\t# INTEGRATE ROLL ERROR 'TWEEN 2SEC UPDATES\n\t\tEXTEND\n\t\tMP\tCALFA\t\t# FOR ASSUMED COORDINATION.\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tADS\tPAXERR1\t\t# ROLL ERROR/360.  OVFL OK.\n\n\t\t\t\t\t# EDIT DUMP AT ABOVE LOCATION.\nCM/FDAIR\tCA\tHALF\n\t\tEXTEND\n\t\tMP\tPAXERR1\t\t# FULL SCALE FOR FDAI (ROLL) IS 67.5 D\n\t\tTS\tPAXERR\t\t# .25 (ROLL ERROR/180) FOR FDAI NEEDLE.\n\n\t\t\t\t\t# PROGRAM TO FILE BODY RATES FOR TM ON ONE PASS AND\n\t\t\t\t\t# TO UPDATE THE NEEDLE DISPLAY ON THE NEXT.\n\t\t\t\t\t# SYNCHRONIZATION WITH CM/RCS IS USED SO THAT THE TM\n\t\t\t\t\t# IS DONE WITH THE ROLL SYSTEM AND NEEDLES START ON\n\t\t\t\t\t# THE SUBSEQUENT PASS.\n\nCM/DUMPR\tCS\tSW/NDX\t\t# COMBINED ALTERNATION SWITCH AND FILE\n\t\tTS\tSW/NDX\n\t\tEXTEND\t\t\t# INDEX.\n\t\tBZMF\tCMTMFILE\t# FILE STARTS WITH SW/NDX +1 AND GOES TO\n\t\t\t\t\t# ENDBUF.\n\t\t\t\t\t# INDEX IS POS FOR NEEDLES.\n\n\t\tTC\tIBNKCALL\n\t\tCADR\tNEEDLER\n\n\t\tTC\tCM/END\n\n\t\t\t\t\t# INDEX IS NEG FOR TM FILE\n\nCMTMFILE\tAD\tTHREE\n\t\tEXTEND\n\t\tBZMF\tSAVENDX\n# Page 1091\n\t\tCA\tTIME1\t\t# INITIALIZE THE TM LIST IN UPBUFF.\n\t\tTS\tCMTMTIME\n\t\tCS\tTHIRTEEN\t# INITIALIZE COUNTER\nSAVENDX\t\tTS\tSW/NDX\t\t# A NEGATIVE NUMBER.\n\t\tEXTEND\n\t\tDCA\tPREL\n\t\tINDEX\tSW/NDX\n\t\tDXCH\tENDBUF -1\n\t\tCA\tRREL\n\t\tINDEX\tSW/NDX\n\t\tTS\tENDBUF +1\n\nCM/END\t\tCA\tCM/SAVE\n\t\tTS\tSR\n\t\t\t\t\t# DOES NOT PROTECT TEMK, SQ IN SPSIN/COS\n\n\t\tEXTEND\n\t\tDCA\tT5IDLER2\n\t\tDXCH\tT5LOC\n\t\tTC\tRESUME\n\n\t\tEBANK=\tT5LOC\nT5IDLER2\t2CADR\tT5IDLOC\n\n\t\t\t\t\t# DEFINE THE FOLLOWING 17D REGISTERS IN UPBUFF TO BE\n\t\t\t\t\t# USED TO TELEMETER CM VEHICLE BODY RATE INFORMATION.\n\t\t\t\t\t# THE INFORMATION IS FILED EACH 0.2 SEC, GIVING 15D\n\t\t\t\t\t# DATA POINTS EACH 1 SEC.  TM LIST IS READ TWICE\n\t\t\t\t\t# EACH 2 SECONDS.\n\t\t\t\t\t#\n\t\t\t\t\t# THE SEQUENCE IS:\tSP TIME\t\tINITIAL TIME\n\t\t\t\t\t#\t\t\tSWITCH\t\tALSO INDEX.\n\t\t\t\t\t#\t\t\tP\t\tROLL RATE\n\t\t\t\t\t#\t\t\tQ\t\tPITCH RATE\n\t\t\t\t\t#\t\t\tR\t\tYAW RATE\n\t\t\t\t\t#\t\t\tETC.\n\n#CMTMTIME\t=\tUPBUFF\n#SW/NDX\t\t=\tUPBUFF +1\n#ENDBUF\t\t=\tUPBUFF +16D\n\n# Page 1092\n# SPACER\n#\n# CONSTANTS USED IN THE ROLL CONTROL SYSTEM:\n# CONSTANTS ARE THE FOLLOWING:  A = 9.1 DEG/SECSQ, VM = 20 DEG/SEC, \tT = 2 SEC, TCDU = .1 SEC,\n# XMIN = 4 DEG, VMIN = 2 DEG/SEC, K = .25, A1 = 4.55 DEG/SECSQ, \tVI = 1 DEG/SEC, INTERCEPT WITH DZ SIDE\n# XBUF = 4 DEG\n\n-T-3\t\tDEC\t-203\t\t# CS\nVSQMIN\t\tDEC\t.61050061 E-3\t# VSQ MIN/4 A PI = 4/(4 (9.1) 180)\n2T/TCDU\t\t=\tOCT50\t\t# T/TCDU EXP-14\t   TCDU = .1SEC\n180/8ATT\tDEC\t.61813187\t# 180/(8 (9.1) 4)=(180/ATT)\tEXP -3\n-VMT/180\t=\t-VM/360K\t# = 20 (2) / 180\n2JETT\t\t=\t4SECS\t\t# CS\t\t2 (2) 100\tINTEGER\n4JETT\t\tDEC\t800\t\t# CS\t\t4 (2) 100\tINTEGER\nXMIN/360\tDEC\t182\t\t# XMIN/360 = 4/ 360  EXP 14  = 182 INTEGER\n-VM/360K\tDEC\t-.22222222\t# =-20/( 360 (.25))\n1/16A1\t\t=\t180/8ATT\n\t\t\t\t\t# 1/16A1   = 180/(16 A1 TT)\n\t\t\t\t\t#          = 180/(16 4.55 4)\nXS/360\t\tDEC\t91\t\t# =(XMIN +VI (T-1/K))/360 = 2/360 EXP 14\nBUFLIM\t\t=\tXS/360\t\t# 4/(2 360)\n\nKTRCS\t\t=\tHALF\t\t# KT = (.25) 2 = .5\n\n# *** END OF TVCDAPS .011 ***\n\n"
  },
  {
    "path": "Comanche055/CONIC_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tCONIC_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1262-1308\n# Mod history:\t2009-05-08 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrected:  Fixed four interpreter\n#\t\t\t\tinstructions.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1262\n# PROGRAM DESCRIPTION -- ENTIRE CONIC SUBROUTINE LOG SECTION\tDATE -- 1 SEPTEMBER 1967\n# MOD NO. -- 0\t\t\t\t\t\t\tLOG SECTION -- CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\t\tASSEMBLY -- COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION --\n#\tTHE FOLLOWING SET OF SUBROUTINES SOLVE VARIOUS PROBLEMS INVOLVING THE TRAJECTORY PRODUCED BY A CENTRAL\n# \tINVERSE-SQUARE FORCE ACTING ON A POINT MASS, AS OUTLINED IN THE CMC AND LGC LUNAR LANDING MISSION GSOP, SECTION\n#\t5.5.1.2.  A GENERAL USAGE POINT-OF-VIEW WAS TAKEN IN FORMULATING, MECHANIZING, AND SCALING THE SUBROUTINES,\n#\tRATHER THAN OPTIMIZING EACH FOR A PARTICULAR USE.  THEREFORE, MULTIPLE USAGE CAN BE MADE OF THE SUBROUTINES\n#\tINVOLVING ANY REALISTIC SET OF CONSTRAINTS.  IT SHOULD BE NOTED THAT ONLY ONE SET OF CODING IS USED, WHETHER THE\n#\tEARTH, MOON, OR ANY OTHER CELESTIAL BODY IS SPECIFIED AS THE CENTRAL BODY OF THE PROBLEM, PROVIDED ONE OBSERVES\n#\tTHE INHERENT SCALE CHANGE REQUIRED IN POSITION, VELOCITY, MU, AND TIME, AS OUTLINED IN MISSION PROGRAMMING\n#\tDEFINITION MEMO NO. 10.  THIS CAN BE ACCOMPLISHED BY SIMPLY ADDING TO THE MUTABLE AND INITIALIZING THE SUBROUTINES\n#\tAPPROPRIATELY.\n#\n#\tDUE TO THE UNIFORMITY OF THE EQUATIONS INVOLVED, CODING WAS MINIMIZED BY TREATING INDIVIDUAL EQUATIONS AND\n#\tBLOCKS OF EQUATIONS AS SUBROUTINES OF LOWER RANK WHENEVER POSSIBLE.  AS A RESULT, THREE BY-PRODUCTS SUBROUTINES,\n# \tDIRECTLY USABLE AS INDEPENDENT SUBROUTINES, WERE GENERATED.\n#\n# RESTRICTIONS --\n#\tTHE ONLY LIMITATION IN THE SCOPE OF THE PROBLEM WHICH CAN BE SOLVED BY A PARTICULAR SUBROUTINE IS THE SCALING\n#\tLIMIT OF EACH PARAMETER AS SPECIFIED IN THE GSOP.  THESE SCALING LIMITS WERE CHOSEN SO THAT ALL FEASIBLE TRAJECTORIES\n#\tCOULD BE HANDLED.\n#\n#\tSINCE THE SUBROUTINES (EXCEPT KEPLER) USE COMMON SUBROUTINES OF LOWER RANK WHICH USE ERASABLE OTHER THAN\n#\tTHE PUSHLIST (DUE TO ITS LIMITED SIZE) AND COMMON INTERPRETIVE SWITCHES, THE CONIC SUBROUTINES CANNOT BE ALLOWED\n#\tTO INTERRUPT EACH OTHER.  IT IS UP TO THE USER TO GUARANTEE THIS CONDITION.\n\n# Page 1263\n# PROGRAM DESCRIPTION -- KEPLER SUBROUTINE\t\t\tDATE -- 11 OCTOBER 1967\n# MOD NO. -- 1\t\t\t\t\t\t\tLOG SECTION -- CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\t\tASSEMBLY -- COLOSSUS 103 AND SUNDANCE 222\n# MOD NO. -- 2 (AUGUST 1968) BY ROBERTSON: TO PERMIT BACKDATING BY MORE THAN ONE ORBITAL PERIOD.\n# MOD NO. -- 3 (DEC 1968) BY ROBERTSON: SUPPRESSION OF X-MODULO-ING\n# MOD NO. -- 4 (JAN 1969) BY ROBERTSON: CLEAR OVFIND AT KEPLER ENTRY\n#\n# FUNCTIONAL DESCRIPTION --\n#\tTHIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR AND THE DESIRED TRANSFER TIME THROUGH WHICH THE STATE IS TO\n#\tBE UPDATED ALONG A CONIC TRAJECTORY, COMPUTES THE NEW, UPDATED STATE VECTOR.  THE TRAJECTORY MAY BE ANY CONIC\n#\tSECTION -- CIRCULAR, ELLIPTIC, PARABOLIC, HYPERBOLIC, OR RECTILINEAR WITH RESPECT TO THE EARTH OR THE MOON. THE\n#\tUSE OF THE SUBROUTINE CAN BE EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT\n#\tINTRODUCING ANY CODING CHANGES, ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.  AN ITERATION\n#\tTECHNIQUE IS UTILIZED IN THE COMPUTATION.\n#\n#\tIF A NEGATIVE TIME-OF-FLIGHT IS INPUT, THE PROGRAM WILL SOLVE FOR THE STATE WHICH WOULD BE PRODUCED BY\n#\tEXTRAPOLATING THE POSITION BACKWARD IN TIME.\n#\n#\tIF THE ABSOLUTE VALUE OF THE DESIRED TRANSFER TIME EXCEEDS THE ORBITAL PERIOD, THE SUBROUTINE, THROUGH A\n# \tMODULAR TECHNIQUE, WILL COMPUTE THE STATE CORRESPONDING TO THE DESIRED TIME (WHETHER POSITIVE OR NEGATIVE).\n#\n# THE RESTRICTIONS ARE --\n#\t1.\t(PREVIOUS RESTRICTION ON THE NEGATIVE DESIRED TRANSFER TIME IS NOW DELETED.)\n#\t2.\tTHE PARAMETERS IN THE PROBLEM CANNOT EXCEED THEIR SCALING LIMITS AS SPECIFIED IN THE GSOP.  IF\n#\t\tANY OF THESE LIMITS ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.\n#\n# \tTHE NUMBER OF ITERATIONS AND, THEREFORE, THE COMPUTATION SPEED IS DEPENDENT ON THE ACCURACY OF THE\n# \tGUESS, XKEPNEW.  THE AGC COMPUTATION TIME IS APPROXIMATELY .061 SECONDS FOR INITIALIZATION, .065 SECONDS FOR THE\n# \tFINAL COMPUTATIONS, PLUS .083 SECONDS FOR EACH ITERATION.\n#\n# REFERENCES --\n#\tR-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP, SECTION 5.5, SGA\n#\tMEMO 67-4.\n#\n# INPUT -- ERASABLE INITIALIZATION REQUIRED\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tRRECT\t\t+29 FOR EARTH\t\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t+27 FOR MOON\n# Page 1264\n#\tVRECT\t\t+7 FOR EARTH\t\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\t+5 FOR MOON\n#\tX1 (38D)\tNONE\t\t\tINDEX REGISTER SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t\t\t\t\tRESPECTIVELY, IS THE CENTRAL BODY\n#\tTAU\t\t+28\t\t\tDESIRED TRANSFER TIME IN CENTISECONDS (DP)\n#\t\t\t\t\t\t\tMAY BE POS OR NEG AND ABSOLUTE VALUE MAY BE GREATER OR LESS THAN ONE ORBITAL PERIOD.\n#\tXKEPNEW\t\t+17 FOR EARTH\t\tDP GUESS OF ROOT X OF KEPLERS EQN IN SQRT(METERS).SIGN SHOULD AGREE WITH THAT OF TAU.\n#\t\t\t+16 FOR MOON\t\t\tAND ABS VALUE SHOULD BE LESS THAN THAT CORRESPONDING TO A PERIOD, VIZ, 2PI SQRT(SEMI-\n#\t\t\t\t\t\t\tMAJOR AXIS), FOR SPEED OF CONVERGENCE, BUT IF EITHER CONDITION FAILS, XKEPNEW IS RESET\n#\t\t\t\t\t\t\tBY KEPLER TO A POOR BUT VALID GUESS.\n#\tTC\t\t+28\t\t\tDP PREV. VALUE OF TIME IN CENTISECS. MUST BE LESS THAN ONE ORBITAL PERIOD.\n#\tXPREV\t\t+17 FOR EARTH\t\tDP PREV. VALUE OF X IN SQRT(METERS).  MUST BE LESS THAN AN X CORRESPONDING TO ONE\n#\t\t\t+16 FOR MOON\t\t\tORBITAL PERIOD, VIZ, 2PI SQRT(SEMI-MAJOR AXIS)\n#\n# SUBROUTINES CALLED --\n#\tDELTIME\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES --\n#\tKEPRTN-2\tGOTO\t\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tKEPRTN-1\t\tKEPLER\t\t# RETURNS WITH XPREV IN MPAC.  PL IS AT 0.\n#\tKEPRTN\t\t...\t\t\t# CONTINUE\n#\n#\tKEPLER MUST NOT BE CALLED DIRECTLY SINCE AN INTERRUPTION OF IT WOULD DESTROY THE ERASABLES IT NEEDS TO COMPLETE\n#\tTHE INTERRUPTED JOB.  THEREFORE THE USER MUST CALL CSMCONIC OR LEMCONIC WHICH GUARANTEES NO INTERRUPTS AND WHICH\n#\tALSO CALLS KEPPREP TO COMPUTE A GUESS OF XKEPNEW.\n#\n# ABORT EXIT MODES --\n#\tNONE\n#\n# OUTPUT --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tRCV\t\t+29 FOR EARTH\t\tDP TERMINAL POSITION VECTOR IN METERS\n#\t\t\t+27 FOR MOON\n#\tVCV\t\t+7 FOR EARTH\t\tDP TERMINAL VELOCITY VECTOR IN METERS/CENTISEC\n#\t\t\t+5 FOR MOON\n#\tTC\t\t+28\t\t\tDP TRANSFER TIME IN CENTISECS TO WHICH KEPLER CONVERGED.  ALWAYS LESS THAN ONE PERIOD.\n#\tXPREV\t\t+17 FOR EARTH\t\tDP VALUE OF X IN SQRT(METERS) TO WHICH KEPLER CONVERGED. ALWAYS LESS THAN THE X\n#\t\t\t+16 FOR MOON\t\t\tCORRESPONDING TO ONE PERIOD.\n# Page 1265\n#\tFOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n#\n# DEBRIS --\n#\tPARAMETERS WHICH MAY BE OF USE --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tURRECT\t\t+1\t\t\tDP UNIT VECTOR OF INITIAL POSITION\n#\tR1\t\t+29 FOR EARTH\t\tDP MAGNITUDE OF INITIAL POSITION IN METERS\n#\t\t\t+27 FOR MOON\n# \tALPHA\t\t-22 FOR EARTH\t\tDP INVERSE OF SEMIMAJOR AXIS IN 1/METERS\n#\t\t\t-20 FOR MOON\n#\tTMODULO\t\t+28\t\t\tDP INTEGRAL NUMBER OF PERIODS IN CENTISECS, WHICH WAS SUBTRACTED FROM TAU. TO PRODUCE A\n#\t\t\t\t\t\t\tTAU. OF LESS THAN ONE PERIOD.\n#\n# PARAMETERS OF NO USE --\n#\tDP PARAMETERS -- EPSILONT, DELX, DELT, RCNORM, XMODULO, PLUS PUSHLIST REGISTERS 0 THROUGH 39D.\n\n# Page 1266\n# PROGRAM DESCRIPTION -- LAMBERT SUBROUTINE\t\t\tDATE -- 1 SEPTEMBER 1967\n# MOD NO. -- 0\t\t\t\t\t\t\tLOG SECTION -- CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\t\tASSEMBLY -- COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION --\n#\tTHIS SUBROUTINE CALCULATES THE INITIAL VELOCITY REQUIRED TO TRANSFER A POINT-MASS ALONG A CONIC TRAJECTORY\n#\tFROM AN INITIAL POSITION TO A TERMINAL POSITION IN A PRESCRIBED TIME INTERVAL.  THE RESULTING TRAJECTORY MAY BE\n#\tA SECTION OF A CIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE\n#\tSUBROUTINE CAN BE EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY\n#\tCODING CHANGES, ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.  AN ITERATION TECHNIQUE IS\n#\tUTILIZED IN THE COMPUTATION.\n#\n# THE RESTRICTIONS ARE: --\n#\t1. RECTILINEAR TRAJECTORIES CANNOT BE COMPUTED.\n#\t2. AN ACCURACY DEGRADATION OCCURS AS THE COSINE OF THE TRUE ANOMALY DIFFERENCE APPROACHES +1.0.\n#\t3. THE ANGLE BETWEEN ANY POSITION VECTOR AND ITS VELOCITY VECTOR MUST BE GREATER THAN 1 DEGREE 47.5 MINUTES\n#\t   AND LESS THAN 178 DEGREES 12.5 MINUTES.\n#\t4. NEGATIVE TRANSFER TIME IS AMBIGUOUS AND WILL RESULT IN NO SOLUTION.\n#\t5. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE\n#\t   LIMITS ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.\n#\n#\tTHE NUMBER OF ITERATIONS AND, THEREFORE, THE COMPUTATIONS SPEED IS DEPENDENT ON THE ACCURACY OF THE FIRST\n#\tGUESS OF THE INDEPENDENT VARIABLE, COGA.  THE AGC COMPUTATION TIME IS APPROXIMATELY\n#\t.105 SECONDS FOR INITIALIZATION, .069 SECONDS FOR FINAL COMPUTATIONS, PLUS .205 SECONDS FOR EACH ITERATION.\n#\n# REFERENCES --\n#\tR-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP -- SECTION 5.5, SGA MEMO 67-8,\n#\tSGA MEMO 67-4.\n#\n# INPUT -- ERASABLE INITIALIZATION REQUIRED\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tR1VEC\t\t+29 FOR EARTH\t\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t+27 FOR MOON\n#\tR2VEC\t\t+29 FOR EARTH\t\tDP TARGET OR TERMINAL POSITION VECTOR IN METERS\n#\t\t\t+27 FOR MOON\n#\tTDESIRED\t+28\t\t\tDP DESIRED TRANSFER TIME IN CENTISECONDS\n#\tX1 (38D)\tNONE\t\t\tINDEX REGISTER SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t\t\t\t\tRESPECTIVELY, IS THE CENTRAL BODY\n#\tGEOMSGN\t\tNONE\t\t\tSP +.5 IF DESIRED TRANSFER ANGLE IS LESS THAN 180 DEGREES, -.5 IF GREATER THAN 180 DEG.\n#\tGUESSW\t\tNONE\t\t\tAN INTERPRETER SWITCH TO BE SET IF NO GUESS OF COGA IS AVAILABLE, CLEAR IF A GUESS OF\n# Page 1267\n#\t\t\t\t\t\t\tCOGA IS TO BE USED BY LAMBERT\n#\tCOGA\t\t+5\t\t\tDP GUESS OF COTANGNT OF FLIGHT PATH ANGLE (MEASURED FROM VERTICAL).  THIS WILL BE\n#\t\t\t\t\t\tIGNORED IF GUESSW IS SET.\n#\tNORMSW\t\tNONE\t\t\tAN INTERPRETER SWITCH TO BE SET IF UN IS TO BE AN INPUT TO THE SUBROUTINE, CLEAR IF\n#\t\t\t\t\t\t\tLAMBERT IS TO COMPUTE ITS OWN NORMAL (UN).\n#\tUN\t\t+1\t\t\tDP UNIT NORMAL TO THE DESIRED ORBIT PLANE IN THE DIRECTION OF THE RESULTING ANGULAR\n#\t\t\t\t\t\t\tMOMENTUM VECTOR.  THIS WILL BE IGNORED IF NORMSW IS CLEAR.\n#\tVTARGTAG\tNONE\t\t\tA S.P. TAG TO BE SET TO ZERO IF LAMBERT IS TO COMPUTE THE VELOCITY AT R2VEC AS WELL AS\n#\t\t\t\t\t\t\tAT R1VEC.\n#\n# SUBROUTINES CALLED --\n#\tGEOM, GETX, DELTIME, ITERATOR, LAMENTER (PART OF NEWSTATE)\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES --\n#\tL \tCALL\t\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tLAMBERT\t\t# RETURNS WITH PL AT 0 AND WITH VVEC IN MPAC IF VTARGTAG WAS WAS NON-ZERO OR VTARGET\n#\t\t\t\t\t# \tIN MPAC IF VTARGTAG WAS ZERO\n#\tL+2\tBON\t\t\t# CONTINUE IF SOLNSW CLEAR SINCE SOLUTION IS ACCEPTABLE\n#\tL+3\t\tSOLNSW\n#\tL+4\t\tLAMABORT\n#\n#\tIF A LAMBERT RESULT IS TO BE A FIRST GUESS FOR THE NEXT LAMBERT CALCULATION, COGA MUST BE PRESERVED AND\n#\tGUESSW MUST BE CLEAR FOR EACH SUCCEEDING LAMBERT CALL.\n#\n# ABORT EXIT MODES --\n#\tIF SOLNSW WAS SET UPON EXITING, EITHER LAMBERT WAS ASKED TO COMPUTE A TRANSFER TOO NEAR 0 OR 360 DEG, OR T\n#\tWAS TOO SMALL TO PRODUCE A REALISTIC TRANSFER BETWEEN R1VEC AND R2VEC.  IN EITHER CASE THE FIX MUST BE MADE\n#\tACCORDING TO THE NEEDS OF THE PARTICULAR USER.  THE ABORT EXIT MODE MAY BE CODED AS ...\n#\tLAMBERT\t\tDLOAD\tABS\t\t# A MEASURE OF THE PROXIMITY TO 0 OR\n#\t\t\t\t1-CSTH\t\t# 360 DEGREES.\n#\t\t\tDSU\tBMN\n#\t\t\t\tONEBIT\n#\t\t\t\tCHANGER2\t# CHANGE R2VEC DIRECTION SLIGHTLY.\n#\t\t\tDLOAD\tDAD\n#\t\t\t\tTDESIRED\n#\t\t\t\tSOMETIME\n#\t\t\tSTCALL\tTDESIRED\t# INCRESE TDESIRED\n#\t\t\t\tLAMBERT\n#\n# OUTPUT --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n# Page 1268\n#\t--------\t--------------\t\t-----------------------\n#\tVVEC\t\t+7 FOR EARTH\t\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND REQUIRED TO SATISFY THE BOUNDARY VALUE\n#\t\t\t+5 FOR MOON\t\t\tPROBLEM.\n#\tVTARGET\t\t+7 FOR EARTH\t\tDP RESULTANT VELOCITY VECTOR AT R2VEC IN METERS/CENTISECOND.\n#\t\t\t+5 FOR MOON\n#\tSOLNSW\t\tNONE\t\t\tINTERPRETER SWITCH WHICH IS SET IF THE SUBROUTINE CANNOT SOLVE THE PROBLEM, CLEAR IF THE\n#\t\t\t\t\t\t\tSOLUTION EXISTS.\n#\n#\tFOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n#\n# DEBRIS --\n#\tPARAMETERS WHICH MAY BE OF USE --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tSNTH\t\t+1\t\t\tDP SIN OF ANGLE BETWEEN R1VEC AND R2VEC\n#\tCSTH\t\t+1\t\t\tDP COSINE OF ANGLE\n#\t1-CSTH\t\t+2\t\t\tDP 1-CSTH\n#\tCOGA\t\t+5\t\t\tDP COTAN OF INITIAL REQUIRED FLIGHT PATH ANGLE MEASURED FROM VERTICAL\n#\tP\t\t+4\t\t\tDP RATIO OF SEMILATUS RECTUM TO INITIAL RADIUS\n#\tR1A\t\t+6\t\t\tDP RATIO OF INITIAL RADIUS TO SEMIMAJOR AXIS\n#\tR1 (32D)\t+29 FOR EARTH\t\tDP INITIAL RADIUS IN METERS\n#\t\t\t+27 FOR MOON\n#\tUR1\t\t+1\t\t\tDP UNIT VECTOR OF R1VEC\n#\tU2\t\t+1\t\t\tDP UNIT VECTOR OF R2VEC\n#\n#\tPARAMETERS OF NO USE --\n#\t\tDP PARAMETERS -- EPSILONL, CSTH-RHO, TPREV, TERRLAMB, R2, RTNLAMB (SP), PLUS PUSHLIST REGISTER 0 THROUGH 41D\n#\t\tADDITIONAL INTERPRETIVE SWITCHES USED -- INFINFLG, 360SW, SLOPESW, ORDERSW\n\n# Page 1269\n# PROGRAM DESCRIPTION -- TIME-THETA SUBROUTINE\t\t\tDATE -- 1 SEPTEMBER 1967\n# MOD NO. -- 0\t\t\t\t\t\t\tLOG SECTION -- CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\t\tASSEMBLY -- COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION --\n#\tTHIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR AND A DESIRED TRUE-ANOMALY-DIFFERENCE THROUGH WHICH THE\n#\tSTATE IS TO BE UPDATED ALONG A CONIC TRAJECTORY, CALCULATES THE CORRESPONDING TIME-OF-FLIGHT AND, IN ADDITION,\n#\tPROVIDES THE OPTION OF COMPUTING THE NEW UPDATED STATE VECTOR.  THE RESULTING TRAJECTORY MAY BE A SECTION OF A\n#\tCIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE SUBROUTINE CAN BE\n# \tEXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY CODING CHANGES,\n#\tACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.\n#\n# THE RESTRICTIONS ARE --\n#\t1. THE ANGLE BETWEEN ANY POSITION VECTOR AND ITS VELOCITY VECTOR MUST BE GREATER THAN 1 DEGREE 47.5 MINUTES\n#\t   AND LESS THAN 178 DEGREES 12.5 MINUTES.\n#\t2. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE LIMITS\n#\t   ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.\n#\n#\tTHE AGC COMPUTATION TIME IS APPROXIMATELY .292 SECONDS.\n#\n# REFERENCES --\n#\tR-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP-SECTION 5.5, SGA MEMO 67-8.\n#\n# INPUT -- ERASABLE INITIALIZATION REQUIRED\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tRVEC\t\t+29 FOR EARTH\t\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t+27 FOR MOON\n#\tVVEC\t\t+7 FOR EARTH\t\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\t+5 FOR MOON\n#\tSNTH\t\t+1\t\t\tDP SINE OF TRUE-ANOMALY-DIFFERENCE THROUGH WHICH THE STATE IS TO BE UPDATED\n#\tCSTH\t\t+1\t\t\tDP COSINE OF THE ANGLE\n#\tRVSW\t\tNONE\t\t\tAN INTERPRETIVE SWITCH TO BE SET IF ONLY TIME IS TO BE AN OUTPUT, CLEAR IF THE NEW STATE\n#\t\t\t\t\t\t\tIS TO BE COMPUTED ALSO.\n#\tX1 (38D)\tNONE\t\t\tINDEX REGISTER TO BE SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t\t\t\t\tRESPECTIVELY, IS THE CENTRAL BODY.\n#\n# SUBROUTINES CALLED --\n# Page 1270\n#\tPARAM, GEOM, GETX, DELTIME, NEWSTATE\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES --\n#\tIF ONLY TIME IS DESIRED AS OUTPUT --\n#\tL\tSET\tCALL\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tRVSW\n#\tL+2\t\tTIMETHET\t# RETURN WITH PL AT 0 AND T IN MPAC\n#\tL+3\t...\t\t\t# CONTINUE\n#\n#\tIF THE UPDATE STATE VECTOR IS DESIRED AS WELL --\n#\tL\tCLEAR\tCALL\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tRVSW\n#\tL+2\t\tTIMETHET\t# RETURNS WITH PL AT 6.  THE INITIAL POSITION VECTOR IS IN 0D OF THE PUSHLIST AND\n#\t\t\t\t\t# THE INITIAL VELOCITY VECTOR IN MPAC.\n#\tL+3\tSTOVL\tNEWVVEC\n#\tL+4\tSTADR\n#\tL+5\tSTORE\tNEWRVEC\t\t# NEWVVEC AND NEWRVEC ARE SYMBOLIC REPRESENTATIONS OF THE USERS LOCATIONS.\n#\tL+6\t...\t\t\t# CONTINUE.\n#\n# ABORT EXIT MODES --\n#\tIF COGAFLAG AND/OR INFINFLG IS SET AT THE EXIT TO TIME-THETA, TIME-THETA WILL TRANSFER TO POODOO WITH\n#\tAN ALARM CODE (ORIGINALLY 00607), AND NOT RETURN TO THE CALLING PROGRAM.  (PCR 692 AND 721).\n#\n# OUTPUT --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tT (30D)\t\t+28\t\t\tDP TRANSFER TIME IN CENTISECONDS\n#\tINFINFLG\tNONE\t\t\tAN INTERPRETIVE SWITCH WHICH IS SET IF THE TRANSFER ANGLE REQUIRES CLOSURE THROUGH\n#\t\t\t\t\t\t\tINFINITY (NO SOLUTION), CLEAR IF A PHYSICAL SOLUTION IS POSSIBLE.\n#\tCOGAFLAG\tNONE\t\t\tAN INTERPRETIVE SWITCH WHICH IS SET IF RESTRICTION 1 HAS BEEN VIOLATED (NO SOLUTION),\n#\t\t\t\t\t\t\tCLEAR IF NOT.\n#\n#\tIN ADDITION, IF RVSW IS CLEAR, THE FOLLOWING ARE OUTPUT --\n#\tMPAC - \t\t+7 FOR EARTH\t\tDP TERMINAL VELOCITY VECTOR IN METERS/CENTISEC.\n#\t   MPAC+5\t+5 FOR MOON\n#\t0D - 5D\t\t+29 FOR EARTH\t\tDP TERMINAL POSITION VECTOR IN METERS (PL AT 6D)\n#\t\t\t+27 FOR MOON\n#\n#\tFOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n# Page 1271\n#\n# DEBRIS --\n#\tPARAMETERS WHICH MAY BE OF USE --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tR1 (32D)\t+29 FOR EARTH\t\tDP MAGNITUDE OF INITIAL POSITION VECTOR, RVEC, IN METERS\n#\t\t\t+27 FOR MOON\n#\tR1A\t\t+6\t\t\tDP RATIO OF R1 TO SEMIMAJOR AXIS (NEG. FOR HYPERBOLIC TRAJECTORIES)\n#\tP\t\t+4\t\t\tDP RATIO OF SEMILATUS RECTUM TO R1\n#\tCOGA\t\t+5\t\t\tDP COTAN OF ANGLE BETWEEN RVEC AND VVEC\n#\tUR1\t\t+1\t\t\tDP UNIT VECTOR OF RVEC\n#\tU2\t\t+1\t\t\tDP UNIT VECTOR OF VVEC\n#\tUN\t\t+1\t\t\tDP UNIT VECTOR OF UR1*U2\n#\n# PARAMETERS OF NO USE --\n#\tSP PARAMETERS -- RTNTT, GEOMSGN, RTNPRM, MAGVEC2=R2 (DP), PLUS PUSHLIST LOCATIONS 0-11D, 14D-21D, 24D-39D, 41D\n#\tADDITIONAL INTERPRETIVE SWITCHES USED -- NORMSW, 360SW\n\n# Page 1272\n# PROGRAM DESCRIPTION -- TIME-RADIUS SUBROUTINE\t\tDATE -- 11 OCTOBER 1967\n# MOD NO. -1\t\t\t\t\t\tLOG SECTION -- CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\tASSEMBLY -- COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION --\n#\tTHIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR AND A DESIRED RADIUS TO WHICH THE\n#\tSTATE IS TO BE UPDATED ALONG A CONIC TRAJECTORY, CALCULATES THE CORRESPONDING TIME-OF-FLIGHT AND, IN ADDITION,\n#\tPROVIDES THE OPTION OF COMPUTING THE NEW UPDATED STATE VECTOR.  THE RESULTING TRAJECTORY MAY BE A SECTION OF A\n#\tCIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE SUBROUTINE CAN BE\n#\tEXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY CODING CHANGES,\n#\tACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.\n#\n#\tIF THE DESIRED RADIUS IS BEYOND THE RADIUS OF APOCENTER OF THE CONIC OR BELOW THE RADIUS OF PERICENTER,\n#\tAPSESW WILL BE SET AND THE SUBROUTINE WILL RETURN THE APOCENTER OR PERICENTER SOLUTION, RESPECTIVELY.\n#\n# THE RESTRICTIONS ARE --\n#\t1. THE ANGLE BETWEEN ANY POSITION VECTOR AND ITS VELOCITY VECTOR MUST BE GREATER THAN 1 DEGREE 47.5 MINUTES\n#\t   AND LESS THAN 178 DEGREES 12.5 MINUTES.\n#\t2. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE LIMITS\n#\t   EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.\n#\t3. AN ACCURACY DEGRADATION OCCURS AS THE SENSITIVITIES OF TIME AND UPDATED STATE VECTOR TO CHANGES IN\n#\t   RDESIRED INCREASE.  THIS WILL OCCUR NEAR EITHER APSIS OF THE CONIC AND WHEN THE CONIC IS NEARLY CIRCULAR.  IN\n#\t   PARTICULAR, IF THE CONIC IS AN EXACT CIRCLE, THE PROBLEM IS UNDEFINED AND THE SUBROUTINE WILL ABORT.\n#\n#\tTHE AGC COMPUTATION TIME IS APPROXIMATELY .363 SECONDS.\n#\n# REFERENCES --\n#\tR-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP-SECTION 5.5, SGA MEMO 67-8.\n#\n# INPUT -- ERASABLE INITIALIZATION REQUIRED.\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tRVEC\t\t+29 FOR EARTH\t\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t+27 FOR MOON\n#\tVVEC\t\t+7 FOR EARTH\t\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\t+5 FOR MOON\n#\tRDESIRED\t+29 FOR EARTH\t\tDP TERMINAL RADIAL DISTANCE ON CONIC TRAJECTORY FOR WHICH TRANSFER TIME IS TO BE\n#\t\t\t+27 FOR MOON\t\t\tCOMPUTED\n#\tSGNRDOT\t\tNONE\t\t\tSP TAG SET TO +.5 OR -.5 ACCORDING TO WHETHER THE RADIAL VELOCITY AT RDESIRED IS TO BE\n#\t\t\t\t\t\t\tPOSITIVE OR NEGATIVE, RESPECTIVELY.   THIS TAG REDUCES THE DOUBLE-VALUED PROBLEM TO A\n# Page 1273\n#\t\t\t\t\t\t\tSINGLE-VALUED PROBLEM.\n#\tX1 (38D)\tNONE\t\t\tINDEX REGISTER TO BE SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t\t\t\t\tRESPECTIVELY, IS THE CENTRAL BODY.\n#\tRVSW\t\tNONE\t\t\tAN INTERPRETIVE SWITCH TO BE SET IF ONLY TIME IS TO BE AN OUTPUT, CLEAR IF THE NEW STATE\n#\t\t\t\t\t\t\tIS TO BE COMPUTED ALSO.\n#\n# SUBROUTINES CALLED --\n#\tPARAM, GEOM, GETX, DELTIME, NEWSTATE\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES --\n#\tIF ONLY TIME IS DESIRED AS OUTPUT --\n#\tL\tSET\tCALL\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tRVSW\n#\tL+2\t\tTIMERAD\t\t# RETURN WITH PL AT 0 AND T IN MPAC\n#\tL+3\t...\t\t\t# CONTINUE\n#\n#\tIF THE UPDATE STATE VECTOR IS DESIRED AS WELL --\n#\tL\tCLEAR\tCALL\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tRVSW\n#\tL+2\t\tTIMERAD\t\t# RETURNS WITH PL AT 6.  THE INITIAL POSITION VECTOR IS IN 0D OF THE PUSHLIST AND\n#\t\t\t\t\t# THE INITIAL VELOCITY VECTOR IN MPAC.\n#\tL+3\tSTOVL\tNEWVVEC\n#\tL+4\tSTADR\n#\tL+5\tSTORE\tNEWRVEC\t\t# NEWVVEC AND NEWRVEC ARE SYMBOLIC REPRESENTATIONS OF THE USERS LOCATIONS.\n#\tL+6\t...\t\t\t# CONTINUE\n#\n# ABORT EXIT MODES --\n#\tIF SOLNSW AND/OR COGAFLAG AND/OR INFINFLG IS SET AT THE EXIT TO TIME-RADIUS, TIME-RADIUS WILL TRANSFER\n#\tTO POODOO WITH AN ALARM CODE (ORIGINALLY 00607), AND NOT RETURN TO THE CALLING PROGRAM.  (PCR 692 & 721).\n#\n# OUTPUT --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tT (30D)\t\t+28\t\t\tDP TRANSFER TIME IN CENTISECONDS.\n#\tINFINFLG\tNONE\t\t\tAN INTERPRETIVE SWITCH WHICH IS SET IF RDESIRED AND SGNRDOT REQUIRE CLOSURE THROUGH\n#\t\t\t\t\t\t\tINFINITY (NO SOLUTION), CLEAR IF A PHYSICAL SOLUTION IS POSSIBLE.\n#\tCOGAFLAG\tNONE\t\t\tAN INTERPRETIVE SWITCH WHICH IS SET IF RESTRICTION 1 HAS BEEN VIOLATED (NO SOLUTION),\n#\t\t\t\t\t\t\tCLEAR IF NOT.\n#\tAPSESW\t\tNONE\t\t\tAN INTERPRETIVE SWITCH WHICH IS SET IF RDESIRED WAS GREATER THAN RADIUS OF APOCENTER OR\n# Page 1274\n#\t\t\t\t\t\t\tLESS THAN RADIUS OF PERICENTER.  THE APOCENTER OR PERICENTER SOLUTION, RESPECTIVELY,\n#\t\t\t\t\t\t\tWILL THEN BE RETURNED.  THE SWITCH IS CLEAR IF RDESIRED WAS BETWEEN PERICENTER AND\n#\t\t\t\t\t\t\tAPOCENTER.\n#\tSOLNSW\t\tNONE\t\t\tAN INTERPRETIVE SWITCH WHICH IS SET IF THE CONIC IS SO CLOSE TO A CIRCLE THAT THE TERMIN\n#\t\t\t\t\t\t\tPOINT IS AMBIGUOUS, VIOLATING RESTRICTION 3.  IF ECCENTRICITY IS GREATER THAN 2-TO-THE-\n#\t\t\t\t\t\t\tMINUS-18, THE SWITCH IS CLEAR.\n#\n#\tIN ADDITION, IF RVSW IS CLEAR, THE FOLLOWING ARE OUTPUT --\n#\tMPAC - \t\t+7 FOR EARTH\t\tDP TERMINAL VELOCITY VECTOR IN METERS/CENTISEC.\n#\t   MPAC+5\t+5 FOR MOON\n#\t0D - 5D\t\t+29 FOR EARTH\t\tDP TERMINAL POSITION VECTOR IN METERS (PL AT 6D)\n#\t\t\t+27 FOR MOON\n#\n#\tFOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n#\n# DEBRIS --\n#\tPARAMETERS WHICH MAY BE OF USE --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tR1 (32D)\t+29 FOR EARTH\t\tDP MAGNITUDE OF INITIAL POSITION VECTOR, RVEC, IN METERS\n#\t\t\t+27 FOR MOON\n#\tR1A\t\t+6\t\t\tDP RATIO OF R1 TO SEMIMAJOR AXIS (NEG. FOR HYPERBOLIC TRAJECTORIES)\n#\tP\t\t+4\t\t\tDP RATIO OF SEMILATUS RECTUM TO R1\n#\tCOGA\t\t+5\t\t\tDP COTAN OF ANGLE BETWEEN RVEC AND VVEC\n#\tUR1\t\t+1\t\t\tDP UNIT VECTOR OF RVEC\n#\tU2\t\t+1\t\t\tDP UNIT VECTOR OF VVEC\n#\tUN\t\t+1\t\t\tDP UNIT VECTOR OF UR1*U2\n#\tCSTH\t\t+1\t\t\tDP COSINE OF TRUE ANOMALY DIFFERENCE BETWEEN RVEC AND RDESIRED.\n#\tSNTH\t\t+1\t\t\tDP SINE OF TRUE ANOMALY DIFFERENCE.\n#\n# \tPARAMETERS OF NO USE --\n#\t\tSP PARAMETERS -- RTNTT, GEOMSGN, RTNPRM, MAGVEC2=R2 (DP), PLUS PUSHLIST LOCATIONS 0-11D, 14D-21D, 24D-39D, 41D\n#\t\tADDITIONAL INTERPRETIVE SWITCHES USED -- NORMSW, 360SW\n#\n\n# Page 1275\n# PROGRAM DESCRIPTION -- APSIDES SUBROUTINE\t\tDATE -- 1 SEPTEMBER 1967\n# MOD NO. -- 0\t\t\t\t\t\tLOG SECTION -- CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\tASSEMBLY -- COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION --\n#\tTHIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR, CALCULATES THE RADIUS OF PERICENTER AND OF APOCENTER AND THE\n#\tECCENTRICITY OF THE RESULTING CONIC TRAJECTORY, WHICH MAY BE A STRAIGHT LINE,\n#\tCIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE SUBROUTINE CAN\n#\tBE EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY CODING CHANGES,\n#\tACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.\n#\n# THE RESTRICTIONS ARE --\n#\t1. IF APOCENTER IS BEYOND THE SCALING OF POSITION, THE SCALE FACTOR LIMIT (536,870,910 METERS WITH RESPECT\n#\t   TO THE EARTH OR 134,217,727.5 METERS WITH RESPECT TO THE MOON) WILL BE RETURNED.\n#\t2. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE LIMITS\n#\t   ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.\n#\n#\tTHE AGC COMPUTATION TIME IS APPROXIMATELY .103 SECONDS.\n#\n# REFERENCES --\n#\tMISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP-SECTION 5.5.\n#\n# INPUT -- ERASABLE INITIALIZATION REQUIRED\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tRVEC\t\t+29 FOR EARTH\t\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t+27 FOR MOON\n#\tVVEC\t\t+7 FOR EARTH\t\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\t+5 FOR MOON\n#\tX1 (38D)\tNONE\t\t\tINDEX REGISTER TO BE SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t\t\t\t\tRESPECTIVELY, IS THE CENTRAL BODY.\n#\n# SUBROUTINES CALLED --\n#\tPARAM, GEOM\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES --\n# Page 1276\n#\tIF ONLY TIME IS DESIRED AS OUTPUT --\n#\tL\tCALL\t\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tAPSIDES\t\t# RETURNS WITH PL AT 0, RADIUS OF APOCENTER IN MPAC AND RADIUS OF PERICENTER IN 0D\n#\tL+2\tSTODL\tAPOAPSE\n#\tL+3\t\t0D\n#\tL+4\tSTORE\tPERIAPSE\t# APOAPSE AND PERIAPSE ARE SYMBOLIC REPRESENTATIONS OF THE USERS LOCATIONS\n#\tL+5\t...\t\t\t# CONTINUE\n#\n# OUTPUT --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tMPAC\t\t+29 FOR EARTH\t\tDP RADIUS OF APOCENTER IN METERS\n#\t\t\t+27 FOR MOON\n#\t0D-1D\t\t+29 FOR EARTH\t\tDP RADIUS OF PERICENTER IN METERS\n#\t\t\t+27 FOR MOON\n#\tECC\t\t+3\t\t\tDP ECCENTRICITY OF CONIC TRAJECTORY\n#\n#\tFOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n#\n# DEBRIS --\n#\tPARAMETERS WHICH MAY BE OF USE --\n#\t\t\t SCALE FACTOR\n#\tVARIABLE\tIN POWERS OF 2\t\tDESCRIPTION AND REMARKS\n#\t--------\t--------------\t\t-----------------------\n#\tR1 (32D)\t+29 FOR EARTH\t\tDP MAGNITUDE OF INITIAL POSITION VECTOR, RVEC, IN METERS\n#\t\t\t+27 FOR MOON\n#\tR1A\t\t+6\t\t\tDP RATIO OF R1 TO SEMIMAJOR AXIS (NEG. FOR HYPERBOLIC TRAJECTORIES)\n#\tP\t\t+4\t\t\tDP RATIO OF SEMILATUS RECTUM TO R1\n#\tCOGA\t\t+5\t\t\tDP COTAN OF ANGLE BETWEEN RVEC AND VVEC\n#\tUR1\t\t+1\t\t\tDP UNIT VECTOR OF RVEC\n#\tU2\t\t+1\t\t\tDP UNIT VECTOR OF VVEC\n#\tUN\t\t+1\t\t\tDP UNIT VECTOR OF UR1*U2\n#\tMAGVEC2\t\t+7 FOR EARTH\t\tDP MAGNITUDE OF VVEC\n#\t\t\t+5 FOR MOON\n#\n#\tPARAMETERS OF NO USE --\n#\t\tSP PARAMETERS -- RTNAPSE, GOMSGN, RTNPRM, PLUS PUSHLIST LOCATIONS 0-5, 10D-11D, 14D-21D, 31D-38D.\n#\t\tADDITIONAL INTERPRETIVE SWITCHES USED -- NORMSW\n\n\t\tSETLOC\tCONICS\n# Page 1277\n\t\tBANK\n\n\t\tCOUNT\t12/CONIC\n\n\t\tEBANK=\tUR1\nKEPLERN\t\tSETPD\tBOV\n\t\t\t0\n\t\t\t+1\n\t\tVLOAD*\n\t\t\tMUTABLE,1\n\t\tSTOVL\t14D\n\t\t\tRRECT\n\t\tUNIT\tSSP\n\t\t\tITERCTR\n\t\t\t20D\n\t\tSTODL\tURRECT\n\t\t\t36D\n\t\tSTOVL\tR1\n\t\t\tRRECT\n\t\tDOT\tSL1R\n\t\t\tVRECT\n\t\tDMP\tSL1R\n\t\t\t1/ROOTMU\t# 1/ROOTMU (-17 OR -14)\n\t\tSTOVL\tKEPC1\t\t# C1=R.V/ROOTMU (+17 OR +16)\n\n\t\t\tVRECT\n\t\tVSQ\tDMPR\n\t\t\t1/MU\t\t# 1/MU (-34 OR -28)\n\t\tDMP\tSL3\n\t\t\tR1\n\t\tDSU\tROUND\n\t\t\tD1/64\n\t\tSTORE\tKEPC2\t\t# C2=RV.V/MU -1 (+6)\n\n\t\tBDSU\tSR1R\n\t\t\tD1/64\n\t\tDDV\n\t\t\tR1\n\t\tSTORE\tALPHA\t\t# ALPHA=(1-C2)/R1 (-22 OR -20)\n\n\t\tBPL\tDLOAD\t\t# MAXIMUM X DEPENDS ON TYPE OF CONIC\n\t\t\t1REV\n\t\t\t-50SC\t\t# -50SC (+12)\n\t\tDDV\tBOV\n\t\t\tALPHA\n\t\t\tSTOREMAX\n\t\tSQRT\tGOTO\n\t\t\tSTOREMAX\n# Page 1278\n1REV\t\tSQRT\tBDDV\n\t\t\t2PISC\t\t# 2PISC (+6)\n\t\tBOV\n\t\t\tSTOREMAX\nSTOREMAX\tSTORE\tXMAX\n\t\tDMP\tPDDL\n\t\t\t1/ROOTMU\n\t\t\tALPHA\n\t\tNORM\tPDDL\n\t\t\tX1\n\t\tSL*\tDDV\n\t\t\t0 \t-6,1\n\t\tBOV\tBMN\n\t\t\tMODDONE\n\t\t\tMODDONE\t\t# MPAC=PERIOD\nPERIODCH\tPDDL\tABS\t\t# 0D=PERIOD\n\t\t\tTAU.\n\t\tDSU\tBMN\n\t\t\t0D\n\t\t\tMODDONE\n\t\tSIGN\n\t\t\tTAU.\n\t\tSTODL\tTAU.\n\t\tGOTO\n\t\t\tPERIODCH\nMODDONE\t\tSETPD\tDLOAD\n\t\t\t0\n\t\t\tXKEPNEW\n\t\tSTORE\tX\n\t\tSIGN\tBZE\n\t\t\tTAU.\n\t\t\tBADX\n\t\tBMN\tABS\n\t\t\tBADX\n\t\tDSU\tBPL\n\t\t\tXMAX\n\t\t\tBADX\nSTORBNDS\tDLOAD\tBPL\n\t\t\tTAU.\n\t\t\tSTOREMIN\n\t\tDLOAD\tDCOMP\n\t\t\tXMAX\n\t\tSTODL\tXMIN\n\t\t\tKEPZERO\n\t\tSTCALL\tXMAX\n\t\t\tDXCOMP\nSTOREMIN\tDLOAD\n\t\t\tKEPZERO\n\t\tSTORE\tXMIN\nDXCOMP\t\tDLOAD\tDMPR\n# Page 1279\n\t\t\tTAU.\n\t\t\tBEE22\n\t\tABS\n\t\tSTODL\tEPSILONT\n\t\t\tXPREV\nXDIFF\t\tBDSU\n\t\t\tX\n\t\tSTORE\tDELX\n\nKEPLOOP\t\tDLOAD\tDSQ\n\t\t\tX\t\t# X=XKEP\n\t\tNORM\tPUSH\t\t# 0D=XSQ (+34 OR +32 -N1)\tPL AT 2\n\t\t\tX1\n\t\tDMP\tSRR*\n\t\t\tALPHA\n\t\t\t0 \t-6,1\n\t\tSTCALL\tXI\t\t# XI=ALPHA XSQ (+6)\n\t\t\tDELTIME\n\t\tBOV\tBDSU\n\t\t\tTIMEOVFL\t# UNLIKELY\n\t\t\tTAU.\n\t\tSTORE\tDELT\t\t# DELT=DELINDEP\n\t\tABS\tBDSU\n\t\t\tEPSILONT\n\t\tBPL\tDLOAD\n\t\t\tKEPCONVG\n\t\t\tT\n\t\tDSU\tNORM\n\t\t\tTC\n\t\t\tX1\n\t\tPDDL\tNORM\n\t\t\tDELX\n\t\t\tX2\n\t\tXSU,1\tDMP\n\t\t\tX2\n\t\t\tDELT\n\t\tSLR*\tDDV\n\t\t\t1,1\n\t\tSR1\tPUSH\t\t# 0D=TRIAL DELX\t\tPL AT 2\n\t\tBPL\tDLOAD\n\t\t\tPOSDELX\n\t\t\tX\n\t\tSTORE\tXMAX\t\t# MOVE MAX BOUND IN\n\t\tBDSU\tDSU\t\t#\t\t\tPL AT 0\n\t\t\tXMIN\n\t\tBOV\tBPL\n\t\t\tNDXCHNGE\n\t\t\tNDXCHNGE\n\t\tDLOAD\tGOTO\n# Page 1280\n\t\t\t0D\n\t\t\tNEWDELX\n\nNDXCHNGE\tDLOAD\tDSU\n\t\t\tXMIN\n\t\t\tX\n\t\tDMPR\tGOTO\t\t# TO FORCE MPAC +2 TO ZERO\n\t\t\tDP9/10\n\t\t\tNEWDELX\n\nPOSDELX\t\tDLOAD\n\t\t\tX\n\t\tSTORE\tXMIN\t\t# MOVE MIN BOUND IN\n\t\tBDSU\tDSU\t\t#\t\t\tPL AT 0\n\t\t\tXMAX\n\t\tBOV\tBMN\n\t\t\tPDXCHNGE\n\t\t\tPDXCHNGE\n\t\tDLOAD\n\t\t\t0D\nNEWDELX\t\tSTORE\tDELX\n\t\tBZE\tDAD\n\t\t\tKEPCONVG\n\t\t\tX\n\t\tSTODL\tX\n\t\t\tT\n\t\tSTORE\tTC\nBRNCHCTR\tRTB\tBHIZ\n\t\t\tCHECKCTR\n\t\t\tKEPCONVG\n\t\tGOTO\n\t\t\tKEPLOOP\t\t# ITERATE\n\nPDXCHNGE\tDLOAD\tDSU\n\t\t\tXMAX\n\t\t\tX\n\t\tDMPR\tGOTO\t\t# TO FORCE MPAC +2 TO ZERO\n\t\t\tDP9/10\n\t\t\tNEWDELX\n\nBADX\t\tDLOAD\tSR1\n\t\t\tXMAX\n\t\tSIGN\n\t\t\tTAU.\n\t\tSTCALL\tX\n\t\t\tSTORBNDS\n# Page 1281\nTIMEOVFL\tDLOAD\tBMN\t\t# X WAS TOO BIG\n\t\t\tX\n\t\t\tNEGTOVFL\n\t\tSTORE\tXMAX\nCMNTOVFL\tDLOAD\tSR1\n\t\t\tDELX\n\t\tSTORE\tDELX\n\t\tBZE\tBDSU\n\t\t\tKEPRTN\n\t\t\tX\n\t\tSTODL\tX\n\t\t\tTC\n\t\tSTCALL\tT\n\t\t\tBRNCHCTR\nNEGTOVFL\tSTCALL\tXMIN\n\t\t\tCMNTOVFL\nKEPCONVG\tDLOAD\tSR4R\n\t\t\tR1\n\t\tDSU\tVXSC\n\t\t\tXSQC(XI)\n\t\t\tURRECT\n\t\tVSL1\tPDDL\t\t# 0D=(R1-XSQC(XI))URRECT (+33 OR +31)\n\t\t\tX\n\t\tDSQ\tNORM\n\t\t\tX1\n\t\tDMPR\tDMPR\n\t\t\t1/ROOTMU\n\t\t\tX\n\t\tDMP\tSRR*\n\t\t\tS(XI)\n\t\t\t0 \t-7,1\n\t\tBDSU\n\t\t\tT\n\t\tSL1\tVXSC\n\t\t\tVRECT\n\t\tVSL1\tVAD\t\t#\t\t\t\tPL AT 0\n\t\tVSL4\n\t\tSTORE\tRCV\t\t# RCV (+29 OR +27)\n\n\t\tABVAL\tNORM\n\t\t\tX2\n\t\tSTODL\tRCNORM\n\t\t\tXI\n\t\tDMPR\tDSU\n\t\t\tS(XI)\n\t\t\tD1/128\n\t\tDMP\tSL1R\n\t\t\tROOTMU\n\t\tDMP\tSLR*\n# Page 1282\n\t\t\tX\n\t\t\t0 \t-3,2\n\t\tDDV\tVXSC\n\t\t\tRCNORM\n\t\t\tURRECT\n\t\tVSL1\tPDDL\t\t# 0D=URRECT(XI S(XI)-1)X ROOTMU/RCV (+15\n\t\t\tXSQC(XI)\t# OR +13)\t\t\tPL AT 6\n\t\tSLR*\tDDV\n\t\t\t0 \t-4,2\n\t\t\tRCNORM\n\t\tBDSU\tVXSC\n\t\t\tD1/256\n\t\t\tVRECT\n\t\tVAD\tVSL8\n\t\tSTADR\t\t\t#\t\t\t\tPL AT 0\n\t\tSTODL\tVCV\t\t# VCV (+7 OR +5)\n\t\t\tT\n\t\tSTODL\tTC\n\t\t\tX\n\t\tSTCALL\tXPREV\n\t\t\tKEPRTN\n\n# Page 1283\nDELTIME\t\tEXIT\t\t\t# MPAC=XI (+6), 0D=XSQ (+34 OR +32 -N1)\n\t\tTC\tPOLY\n\t\tDEC\t8\n\t\t2DEC\t.083333334\n\n\t\t2DEC\t-.266666684\n\n\t\t2DEC\t.406349155\n\n\t\t2DEC\t-.361198675\n\n\t\t2DEC\t.210153242\n\n\t\t2DEC\t-.086221951\n\n\t\t2DEC\t.026268812\n\n\t\t2DEC\t-.006163316\n\n\t\t2DEC\t.001177342\n\n\t\t2DEC\t-.000199055\n\n\t\tTC\tINTPRET\n\t\tSTODL\tS(XI)\n\t\t\tXI\n\t\tEXIT\n\t\tTC\tPOLY\n\t\tDEC\t8\n\t\t2DEC\t.031250001\n\n\t\t2DEC\t-.166666719\n\n\t\t2DEC\t.355555413\n\n\t\t2DEC\t-.406347410\n\n\t\t2DEC\t.288962094\n\n\t\t2DEC\t-.140117894\n\n\t\t2DEC\t.049247387\n\n\t\t2DEC\t-.013081923\n\n\t\t2DEC\t.002806389\n\n\t\t2DEC\t-.000529414\n\n\t\tTC\tINTPRET\n# Page 1284\n\t\tDMP\tSRR*\t\t#\t\t\t\tPL AT 0\n\t\t\t0D\n\t\t\t0 \t-5,1\n\t\tSTORE\tXSQC(XI)\t# XSQC(XI) (+33 OR +31)\n\t\tDMP\tSL1\n\t\t\tKEPC1\n\t\tRTB\tPDDL\t\t# XCH WITH PL. 0D=C1 XSQ C(XI) (+49 OR +46)\n\t\t\tTPMODE\t\t#\t\t\t\tPL AT 0,3\n\t\tDMP\tSRR*\n\t\t\tS(XI)\n\t\t\t0 \t-5,1\n\t\tDMP\tSL1\n\t\t\tKEPC2\n\t\tRTB\tPDDL\t\t# 3D=C2 XSQ S(XI) (+35 OR +33) \tPL AT 6\n\t\t\tTPMODE\n\t\t\tR1\n\t\tSR\tTAD\t\t#\t\t\t\tPL AT 3\n\t\t\t6\n\t\tNORM\tDMP\t\t# TO PRESERVE SIGNIF.\n\t\t\tX1\n\t\t\tX\n\t\tSR*\tTAD\t\t# X(C2 XSQ S(XI) +R1) (+49 OR +46)  PL AT 0\n\t\t\t0 \t-3,1\n\t\tSL4R\tDMPR\n\t\t\t1/ROOTMU\n\t\tSTORE\tT\n\t\tRVQ\n\n# Page 1285\nITERATOR\tBONCLR\tDLOAD\n\t\t\tSLOPESW\n\t\t\tFIRSTIME\n\t\t\tDEP\n\t\tDSU\tNORM\n\t\t\tDEPREV\n\t\t\tX1\n\t\tPDDL\tNORM\n\t\t\tDELINDEP\n\t\t\tX2\n\t\tXSU,1\tDMP\n\t\t\tX2\n\t\t\tDELDEP\n\t\tSLR*\tDDV\t\t#\t\t\t\tPL UP 2\n\t\t\t1,1\n\t\tSR1\tBOFF\n\t\t\tORDERSW\n\t\t\tSGNCHECK\n\t\tABS\tSIGN\t\t# IN CASE 2ND DERIV. CHANGED SIGN, MUST\n\t\t\tDELDEP\t\t# DISREGARD IT TO FIND MIN.\n\nSGNCHECK\tPUSH\tBPL\t\t# TRIAL DELINDEP\t\tPL DOWN 2\n\t\t\tPOSDEL\n\t\tDLOAD\tBON\n\t\t\tINDEP\n\t\t\tORDERSW\n\t\t\tMINCHECK\n\t\tSTORE\tMAX\t\t# IF NOT 2ND ORDER, CAN MOVE MAX BOUND IN.\n\nMINCHECK\tBDSU\tDSU\n\t\t\tMIN\n\t\tBOV\tBPL\n\t\t\tMODNGDEL\n\t\t\tMODNGDEL\n\t\tGOTO\n\t\t\tDELOK\n\nMODNGDEL\tDLOAD\tDSU\t\t# TRIAL DELINDEP WOULD EXCEED MIN BOUND\n\t\t\tMIN\n\t\t\tINDEP\n\t\tDMP\tGOTO\n\t\t\tDP9/10\n\t\t\tNEWDEL\n\nFIRSTIME\tDLOAD\tDMP\n\t\t\tMIN\n\t\t\tTWEEKIT\t\t# DLOAD TWEEKIT(40D) SENSITIVE TO CHANGE.\n\t\tPDDL\tDMP\t\t# S2(41D) SHOULDNT CONTAIN HI ORDER ONES\n# Page 1286\n\t\t\tMAX\n\t\t\tTWEEKIT\n\t\tDSU\n\t\tSIGN\tGOTO\n\t\t\tDELDEP\n\t\t\tSGNCHECK\n\nPOSDEL\t\tDLOAD\tBON\n\t\t\tINDEP\n\t\t\tORDERSW\n\t\t\tMAXCHECK\n\t\tSTORE\tMIN\t\t# IF NOT 2ND ORDER, CAN MOVE MIN BOUND IN.\n\nMAXCHECK\tBDSU\tDSU\n\t\t\tMAX\n\t\tBOV\tBMN\n\t\t\tMODPSDEL\n\t\t\tMODPSDEL\nDELOK\t\tDLOAD\n\t\t\t0D\nNEWDEL\t\tSTORE\tDELINDEP\n\t\tRVQ\n\nMODPSDEL\tDLOAD\tDSU\n\t\t\tMAX\n\t\t\tINDEP\n\t\tDMP\tGOTO\n\t\t\tDP9/10\n\t\t\tNEWDEL\n\nCHECKCTR\tCS\tONE\n\t\tINDEX\tFIXLOC\n\t\tAD\tITERCTR\n\t\tINDEX\tFIXLOC\n\t\tTS\tITERCTR\n\t\tTS\tMPAC\n\t\tTC\tDANZIG\n\n# Page 1287\nNEWSTATE\tDLOAD\tSR4R\n\t\t\tR1\n\t\tDSU\tVXSC\n\t\t\tXSQC(XI)\n\t\t\tUR1\n\t\tVSL1\tPDDL\t\t# 0D=(R1-XSQC(XI))UR1 (+33 OR 31) PL AT 6\n\t\t\tX\n\t\tDSQ\tNORM\n\t\t\tX1\n\t\tDMPR\tDMPR\n\t\t\t1/ROOTMU\n\t\t\tX\n\t\tDMP\tSRR*\n\t\t\tS(XI)\n\t\t\t0 \t-7,1\n\t\tBDSU\n\t\t\tT\n\t\tSL1\tVXSC\n\t\t\tVVEC\n\t\tVSL1\tVAD\t\t#\t\t\t\tPL AT 0\n\t\tVSL4\tPUSH\n\t\tABVAL\nLAMENTER\tNORM\n\t\t\tX1\n\t\tSTODL\tR2\n\t\t\tXI\n\t\tDMP\tDSU\n\t\t\tS(XI)\n\t\t\tD1/128\n\t\tDMP\tSL1R\n\t\t\tROOTMU\n\t\tDMP\tSLR*\n\t\t\tX\n\t\t\t0 -3,1\n\t\tDDV\tVXSC\n\t\t\tR2\n\t\t\tUR1\n\t\tVSL1\tPDDL\t\t# 6D=V2VEC PART (+15 OR 13)\tPL AT 12\n\t\t\tXSQC(XI)\n\t\tSLR*\tDDV\n\t\t\t0 -4,1\n\t\t\tR2\n\t\tBDSU\n\t\t\tD1/256\n\t\tVXSC\tVAD\t\t#\t\t\t\tPL AT 6\n\t\t\tVVEC\n\t\tVSL8\tRVQ\n\n# Page 1288\n\t\tSETLOC\tCONICS1\n\t\tBANK\n\n\t\tCOUNT\t04/CONIC\n# DO NOT DISTURB THE ORDER OF THESE CDS, OVERLAYS HAVE BEEN MADE.\nBEE17\t\tDEC\t0\t\t# KEEP WITH D1/8 2DEC 1.0B-17 (0000004000)\nD1/8\t\t2DEC\t1.0 B-3\n\nD1/128\t\t2DEC\t1.0 B-7\n\nD1/64\t\t2DEC\t1.0 B-6\n\nD1/4\t\t2DEC\t1.0 B-2\n\nD1/16\t\t2DEC\t1.0 B-4\n\nD1/32\t\t2DEC\t1.0 B-5\n\nD1/1024\t\t2DEC\t1.0 B-10\n\nD1/256\t\t2DEC\t1.0 B-8\n\nDP9/10\t\t2DEC\t.9\n\nKEPZERO\t\tEQUALS\tLO6ZEROS\n-50SC\t\t2DEC\t-50.0 B-12\n\n2PISC\t\t2DEC\t6.28318530 B-6\n\nBEE19\t\tEQUALS\tD1/32 -1\t# 2DEC 1.0 B-19 (00000 01000)\nBEE22\t\tEQUALS\tD1/256 -1\t# 2DEC 1.0 B-22 (00000 00100)\nONEBIT\t\t2DEC\t1.0 B-28\n\nCOGUPLIM\t2DEC\t.999511597\n\nCOGLOLIM\t2DEC\t-.999511597\n\n# Page 1289\n\t\tSETLOC\tCONICS\n\t\tBANK\n\n\t\tCOUNT\t12/CONIC\n\nTIMETHET\tSTQ\tSETPD\t\t#\t\t\t\tPL AT 0\n\t\t\tRTNTT\n\t\t\t0\n\t\tBOV\n\t\t\t+1\n\t\tVLOAD\tPDVL\t\t# SETUP FOR PARAM CALL\t\tPL AT 6\n\t\t\tRVEC\n\t\t\tVVEC\n\t\tCALL\n\t\t\tPARAM\n\t\tBOV\tCALL\t\t#\t\t\t\tPL AT 0\n\t\t\tCOGAOVFL\n\t\t\tGETX\nCOMMNOUT\tDLOAD\tBON\n\t\t\tXI\n\t\t\tINFINFLG\n\t\t\tABTCONIC\n\t\tCLEAR\tCALL\n\t\t\tCOGAFLAG\n\t\t\tDELTIME\n\t\tBON\tCALL\n\t\t\tRVSW\n\t\t\tRTNTT\n\t\t\tNEWSTATE\n\t\tGOTO\n\t\t\tRTNTT\n\nCOGAOVFL\tSETGO\n\t\t\tCOGAFLAG\n\t\t\tABTCONIC\n\t\tBANK\t4\n\t\tSETLOC\tCONICS1\n\t\tBANK\n\t\tCOUNT*\t$$/CONIC\nPARAM\t\tSTQ\tCLEAR\t\t# MPAC=V1VEC, 0D=R1VEC\t\tPL AT 6\n\t\t\tRTNPRM\n\t\t\tNORMSW\n\t\tCLEAR\n\t\t\tCOGAFLAG\n\t\tSSP\tCALL\n\t\t\tGEOMSGN\n\t\t\t37777\t\t# GAMMA ALWAYS LESS THAN 180DEG\n\t\t\tGEOM\t\t# MPAC=SNGA (+1), 0D=CSGA (+1)\tPL AT 2\n\t\tSTODL\t36D\t\t# 36D=SIN GAMMA (+1)\t\tPL AT 0\n# Page 1290\n\t\tSR\tDDV\n\t\t\t5\n\n\t\t\t36D\n\t\tSTOVL*\tCOGA\n\t\t\tMUTABLE,1\n\t\tSTODL\t1/MU\n\t\t\tMAGVEC2\n\t\tDSQ\tNORM\n\t\t\tX1\n\t\tDMPR\tDMP\n\t\t\t1/MU\n\t\t\tR1\n\t\tSRR*\n\t\t\t0 \t-3,1\n\t\tPUSH\tBDSU\t\t# 0D=R1 V1SQ/MU (+6)\t\tPL AT 2\n\t\t\tD1/32\n\t\tSTODL\tR1A\t\t# R1A (+6)\t\t\tPL AT 0\n\n\t\tDMP\tNORM\n\t\t\t36D\n\t\t\tX1\n\t\tDMP\tSR*\n\t\t\t36D\n\t\t\t0 \t-4,1\n\t\tSTCALL\tP\t\t# P (+4)\n\t\t\tRTNPRM\n\n# Page 1291\nGEOM\t\tUNIT\t\t\t# MPAC=V2VEC, 0D=R1VEC\t\tPL AT 6\n\t\tSTODL\tU2\t\t# U2 (+1)\n\t\t\t36D\n\t\tSTOVL\tMAGVEC2\t\t#\t\t\t\tPL AT 0\n\t\tUNIT\n\t\tSTORE\tUR1\t\t# UR1 (+1)\n\t\tDOT\tSL1\n\t\t\tU2\n\t\tPDDL\t\t\t# 0D=CSTH (+1)\t\t\tPL AT 2\n\t\t\t36D\n\t\tSTOVL\tR1\t\t# R1 (+29 OR +27)\n\t\t\tUR1\n\t\tVXV\tVSL1\n\t\t\tU2\n\t\tBON\tSIGN\n\t\t\tNORMSW\n\t\t\tHAVENORM\n\t\t\tGEOMSGN\n\t\tUNIT\tBOV\n\t\t\tCOLINEAR\nUNITNORM\tSTODL\tUN\t\t# UN (+1)\n\t\t\t36D\n\t\tSIGN\tRVQ\t\t# MPAC=SNTH (+1), 34D=SNTH.SNTH (+2)\n\t\t\tGEOMSGN\n\nCOLINEAR\tVSR1\tGOTO\n\t\t\tUNITNORM\n\nHAVENORM\tABVAL\tSIGN\n\t\t\tGEOMSGN\n\t\tRVQ\t\t\t# MPAC=SNTH (+1), 34D=SNTH.SNTH (+2)\n\n# Page 1292\n\t\tBANK\t12\n\t\tSETLOC\tCONICS\n\t\tBANK\n\n\t\tCOUNT\t12/CONIC\n\nGETX\t\tAXT,2\tSSP\t\t# ASSUMES P (+4) IN MPAC\n\t\t\t3\n\t\t\tS2\n\t\t\t1\n\t\tCLEAR\n\t\t\t360SW\n\t\tSQRT\tPDDL\t\t# 0D=SQRT(P)\t\t\tPL AT 2\n\t\t\tCSTH\n\t\tSR1\tBDSU\n\t\t\tD1/4\n\t\tPDDL\tSRR\t\t#\t\t\t\tPL AT 4D\n\t\t\tSNTH\n\t\t\t6\n\t\tDDV\t\t\t#\t\t\t\tPL AT 2\n\t\tBOV\n\t\t\t360CHECK\n\t\tDSU\tDMP\n\t\t\tCOGA\t\t#\t\t\t\tPL AT 0\n\t\tSL2R\tBOV\n\t\t\t360CHECK\nWLOOP\t\tPUSH\tDSQ\t\t# 0D=W (+5)\t\t\tPL AT 2\n\t\tTLOAD\tPDDL\t\t# 2D=WSQ (+10)\t\t\tPL AT 5\n\t\t\tMPAC\n\t\t\tR1A\n\t\tSR4\tTAD\t\t#\t\t\t\tPL AT 2\n\t\tBMN\tSQRT\n\t\t\tINFINITY\n\t\tROUND\tDAD\t\t#\t\t\t\tPL AT 0D\n\t\tBOV\tTIX,2\n\t\t\tRESETX2\n\t\t\tWLOOP\n\n\t\tBDDV\tBOV\n\t\t\tD1/128\n\t\t\tINFINITY\nPOLYCOEF\tBMN\tPUSH\t\t# 0D=1/W (+2) OR 16/W (+6)\tPL AT 2\n\t\t\tINFINITY\n\t\tDSQ\n\t\tNORM\tDMP\n\t\t\tX1\n\t\t\tR1A\n\t\tSRR*\tEXIT\n\t\t\t0 \t-10D,1\n# Page 1293\n\t\tTC\tPOLY\n\t\tDEC\t5\n\t\t2DEC\t.5\n\n\t\t2DEC\t-.166666770\n\n\t\t2DEC\t.100000392\n\n\t\t2DEC\t-.071401086\n\n\t\t2DEC\t.055503292\n\n\t\t2DEC\t-.047264098\n\n\t\t2DEC\t.040694204\n\n\t\tTC\tINTPRET\n\t\tDMP\tSL1R\t\t#\t\t\t\tPL AT 0D\n\t\tPUSH\tBON\n\t\t\t360SW\n\t\t\tTRUE360X\nXCOMMON\t\tDSQ\tNORM\n\t\t\tX1\n\t\tDMP\tSRR*\n\t\t\tR1A\n\t\t\t0 \t-12D,1\n\t\tSTODL\tXI\t\t# XI (+6)\n\n\t\t\tR1\n\t\tSR1\tSQRT\n\t\tROUND\tDMP\n\t\tSL4R\t\t\t#\t\t\t\tPL AT 0\n\t\tSTORE\tX\t\t# X (+17 OR +16)\n\n\t\tDSQ\tNORM\n\t\t\tX1\n\t\tPDDL\tDMP\t\t# 0D=XSQ (+34 OR +32 -N1)\tPL AT 2\n\t\t\tP\n\t\t\tR1\n\t\tSL3\tSQRT\n\t\tDMP\tSL3R\n\t\t\tCOGA\n\t\tSTODL\tKEPC1\n\t\t\tR1A\n\t\tBDSU\tCLEAR\n\t\t\tD1/64\n\t\t\tINFINFLG\n\t\tSTORE\tKEPC2\n# Page 1294\n\t\tRVQ\n\nRESETX2\t\tAXT,2\n\t\t\t3\n\n360CHECK\tSETPD\tBPL\n\t\t\t0D\n\t\t\tINVRSEQN\n\t\tSET\n\t\t\t360SW\n\nINVRSEQN\tDLOAD\tSQRT\n\t\t\tP\n\t\tPDDL\tDMP\t\t# 0D=SQRT(P) (+2)\t\tPL AT 2\n\t\t\tSNTH\n\t\t\tCOGA\n\t\tSL1\tPDDL\t\t# 2D=SNTH COGA (+5)\t\tPL AT 4\n\t\t\tCSTH\n\t\tSR4\tDAD\n\t\t\tD1/32\n\t\tDSU\tDMP\t\t#\t\t\t\tPL AT 2,0\n\t\tNORM\tBDDV\n\t\t\tX1\n\t\t\tSNTH\n\t\tSLR*\tABS\t\t# NOTE: NEAR 360 CASE TREATED DIFFERENTLY\n\t\t\t0 \t-5,1\n\t\tPUSH\tDSQ\t\t# 0D=1/W (-1)\t\t\tPL AT 2\n\t\tSTODL\t34D\n\t\t\tD1/16\n1/WLOOP\t\tPUSH\tDSQ\t\t# 2D=G (+4)\t\t\tPL AT 4\n\t\tRTB\tPDDL\t\t#\t\t\t\tPL AT 7\n\t\t\tTPMODE\n\t\t\tR1A\n\t\tDMP\tSR4\n\t\t\t34D\n\t\tTAD\t\t\t#\t\t\t\tPL AT 4\n\t\tBMN\tSQRT\n\t\t\tINFINITY\n\t\tDAD\t\t\t#\t\t\t\tPL AT 2\n\t\tTIX,2\tNORM\n\t\t\t1/WLOOP\n\t\t\tX1\n\t\tBDDV\t\t\t#\t\t\t\tPL AT 0\n\t\tSLR*\tGOTO\n\t\t\t0 \t-7,1\n\t\t\tPOLYCOEF\n\n# Page 1295\nTRUE360X\tDLOAD\tBMN\n\t\t\tR1A\n\t\t\tINFINITY\n\t\tSQRT\tNORM\n\t\t\tX1\n\t\tBDDV\tSL*\n\t\t\t2PISC\n\t\t\t0 \t-3,1\n\t\tDSU\tPUSH\t\t# 0D=2PI/SQRT(R1A) -X\t\tPL AT 0,2\n\t\tGOTO\n\t\t\tXCOMMON\nINFINITY\tSETPD\tBOV\t\t# NO SOLUTION EXISTS SINCE CLOSURE THROUGH\n\t\t\t0\t\t# INFINITY IS REQUIRED\n\t\t\tOVFLCLR\nOVFLCLR\t\tSET\tRVQ\n\t\t\tINFINFLG\n\n# Page 1296\nLAMBERT\t\tSTQ\tSETPD\n\t\t\tRTNLAMB\n\t\t\t0D\n\t\tBOV\n\t\t\t+1\n\t\tSSP\tVLOAD*\n\t\t\tITERCTR\n\t\t\t20D\n\t\t\tMUTABLE,1\n\t\tSTODL\t1/MU\n\t\t\tTDESIRED\n\t\tDMPR\n\t\t\tBEE19\n\t\tSTORE\tEPSILONL\n\t\tSET\tVLOAD\n\t\t\tSLOPESW\n\t\t\tR1VEC\n\t\tPDVL\tCALL\t\t# 0D=R1VEC (+29 OR +27)\t\tPL AT 6\n\t\t\tR2VEC\t\t# MPAC=R2VEC (+29 OR +27)\n\t\t\tGEOM\n\t\tSTODL\tSNTH\t\t# 0D=CSTH (+1)\t\t\tPL AT 2\n\t\t\tMAGVEC2\n\t\tNORM\tPDDL\t\t#\t\t\t\tPL AT 4\n\t\t\tX1\n\t\t\tR1\n\t\tSR1\tDDV\t\t#\t\t\t\tPL AT 2\n\t\tSL*\tPDDL\t\t# DXCH WITH 0D, 0D=R1/R2 (+7)\tPL AT 0,2\n\t\t\t0 \t-6,1\n\t\tSTADR\n\t\tSTORE\tCSTH\t\t# CSTH (+1)\n\t\tSR1\tBDSU\n\t\t\tD1/4\n\t\tSTORE\t1-CSTH\t\t# 1-CSTH (+2)\n\n\t\tROUND\tBZE\n\t\t\t360LAMB\n\t\tNORM\tPDDL\t\t#\t\t\t\tPL AT 4\n\t\t\tX1\n\t\t\t0D\n\t\tSR1\tDDV\t\t#\t\t\t\tPL AT 2\n\t\tSL*\tSQRT\n\t\t\t0 \t-3,1\n\t\tPDDL\tSR\t\t# 2D=SQRT(2R1/R2(1-CSTH)) (+5) \tPL AT 4\n\t\t\tSNTH\n\t\t\t6\n\t\tDDV\tDAD\t\t#\t\t\t\tPL AT 2\n\t\t\t1-CSTH\n\t\tSTADR\n\t\tSTORE\tCOGAMAX\n\t\tBOV\tBMN\t\t# IF OVFL, COGAMAX=COGUPLIM\n# Page 1297\n\t\t\tUPLIM\t\t# IF NEG, USE EVEN IF LT COGLOLIM, SINCE\n\t\t\tMAXCOGA\t\t# \tTHIS WOULD BE RESET IN LAMBLOOP\n\t\tDSU\tBMN\t\t# IF COGAMAX GT COGUPLIM, COGAMAX=COGUPLIM\n\t\t\tCOGUPLIM\n\t\t\tMAXCOGA\t\t# OTHERWISE OK, SO GO TO MAXCOGA\nUPLIM\t\tDLOAD\n\t\t\tCOGUPLIM\t# COGUPLIM=.999511597 = MAX VALUE OF COGA\n\t\tSTORE\tCOGAMAX\t\t#\tNOT CAUSING OVFL IN R1A CALCULATION\nMAXCOGA\t\tDLOAD\n\t\t\tCSTH\n\t\tSR\tDSU\t\t#\t\t\t\tPL AT 0\n\t\t\t6\n\t\tSTADR\n\t\tSTODL\tCSTH-RHO\n\t\t\tGEOMSGN\n\t\tBMN\tDLOAD\n\t\t\tLOLIM\n\t\t\tCSTH-RHO\n\t\tSL1\tDDV\n\t\t\tSNTH\n\t\tBOV\n\t\t\tLOLIM\nMINCOGA\t\tSTORE\tCOGAMIN\t\t# COGAMIN (+5)\n\t\tBON\tSSP\n\t\t\tGUESSW\n\t\t\tNOGUESS\n\t\t\tTWEEKIT\n\t\t\t00001\n\t\tDLOAD\n\t\t\tCOGA\n\nLAMBLOOP\tDMP\n\t\t\tSNTH\n\t\tSR1\tDSU\n\t\t\tCSTH-RHO\n\t\tNORM\tPDDL\t\t# 0D=SNTH COGA-(CSTH-RHO) (+7+C(XI)) PL=2\n\t\t\tX1\n\t\t\t1-CSTH\n\t\tSL*\tDDV\t\t# 1-CSTH (+2)\t\t\tPL AT 0\n\t\t\t0 -9D,1\n\t\tBMN\tBZE\n\t\t\tNEGP\n\t\t\tNEGP\n\t\tSTODL\tP\t\t# P=(1-CSTH)/(SNTH COGA-(CSTH-RHO)) (+4)\n\t\t\tCOGA\n\t\tDSQ\tDAD\n\t\t\tD1/1024\n\t\tNORM\tDMP\n\t\t\tX1\n# Page 1298\n\t\t\tP\n\t\tSR*\tBDSU\n\t\t\t0 \t-8D,1\n\t\t\tD1/32\n\t\tSTODL\tR1A\t\t# R1A=2-P(1+COGA COGA) (+6)\n\n\t\t\tP\n\t\tBOV\tCALL\n\t\t\tHIENERGY\n\t\t\tGETX\n\t\tDLOAD\n\t\t\tT\n\t\tSTODL\tTPREV\n\t\t\tXI\n\t\tBON\tCALL\n\t\t\tINFINFLG\n\t\t\tNEGP\t\t# HAVE EXCEEDED THEORETICAL BOUNDS\n\t\t\tDELTIME\n\t\tBOV\tBDSU\n\t\t\tBIGTIME\n\t\t\tTDESIRED\n\t\tSTORE\tTERRLAMB\n\t\tABS\tBDSU\n\t\t\tEPSILONL\n\t\tBPL\tRTB\n\t\t\tINITV\n\t\t\tCHECKCTR\n\t\tBHIZ\tCALL\n\t\t\tSUFFCHEK\n\t\t\tITERATOR\n\t\tDLOAD\tBZE\n\t\t\tMPAC\n\t\t\tSUFFCHEK\n\t\tDAD\n\t\t\tCOGA\n\t\tSTCALL\tCOGA\n\t\t\tLAMBLOOP\n\nNEGP\t\tDLOAD\tBPL\t\t# IMPOSSIBLE TRAJECTORY DUE TO INACCURATE\n\t\t\tDCOGA\t\t# BOUND CALCULATION.  TRY NEW COGA.\n\t\t\tLOENERGY\n\nHIENERGY\tSETPD\tDLOAD\t\t# HIGH ENERGY TRAJECTORY RESULTED.\n\t\t\t0\n\t\t\tCOGA\t\t# IN OVFL OF P OR R1A, OR XI EXCEEDING 50.\n\t\tSTORE\tCOGAMIN\t\t# THIS IS THE NEW BOUND.\nCOMMONLM\tDLOAD\tSR1\n\t\t\tDCOGA\n# Page 1299\n\t\tSTORE\tDCOGA\t\t# USE DCOGA/2 AS DECREMENT\n\t\tBZE\tBDSU\n\t\t\tSUFFCHEK\n\t\t\tCOGA\n\t\tSTCALL \tCOGA\n\t\t\tLAMBLOOP\n\nBIGTIME\t\tDLOAD\n\t\t\tTPREV\n\t\tSTORE\tT\n\nLOENERGY\tSETPD\tDLOAD\t\t# LOW ENERGY TRAJECTORY RESULTED\n\t\t\t0\n\t\t\tCOGA\t\t# IN OVERFLOW OF TIME.\n\t\tSTCALL\tCOGAMAX\t\t# THIS IS THE NEW BOUND.\n\t\t\tCOMMONLM\n\nSUFFCHEK\tDLOAD\tABS\n\t\t\tTERRLAMB\n\t\tPDDL\tDMP\t\t#\t\t\t\tPL AT 2D\n\t\t\tTDESIRED\n\t\t\tD1/4\n\t\tDAD\tDSU\t\t#\t\t\t\tPL AT 0D\n\t\t\tONEBIT\n\t\tBPL\tSETGO\n\t\t\tINITV\n\t\t\tSOLNSW\n\t\t\tRTNLAMB\n\n360LAMB\t\tSETPD\tSETGO\t\t# LAMBERT CANNOT HANDLE CSTH=1\n\t\t\t0\n\t\t\tSOLNSW\n\t\t\tRTNLAMB\n\nNOGUESS\t\tSSP\tDLOAD\n\t\t\tTWEEKIT\n\t\t\t20000\n\t\t\tCOGAMIN\n\t\tSR1\tPDDL\t\t#\t\t\t\tPL AT 2\n\t\t\tCOGAMAX\n\t\tSR1\tDAD\n\t\tSTADR\t\t\t#\t\t\t\tPL AT 0\n\t\tSTORE\tCOGA\n\t\tSTCALL\tDCOGA\n\t\t\tLAMBLOOP\n# Page 1300\nLOLIM\t\tDLOAD\tGOTO\n\t\t\tCOGLOLIM\t# COGLOLIM=-.999511597\n\t\t\tMINCOGA\n\nINITV\t\tDLOAD\tNORM\n\t\t\tR1\n\t\t\tX1\n\t\tPDDL\tSR1\t\t#\t\t\t\tPL AT 2\n\t\t\tP\n\t\tDDV\t\t\t#\t\t\t\tPL AT 0\n\t\tSL*\tSQRT\n\t\t\t0 \t-4,1\n\t\tDMP\tSL1\n\t\t\tROOTMU\n\t\tPUSH\tDMP\t\t# 0D=VTAN (+7)\t\t\tPL AT 2\n\t\t\tCOGA\n\t\tSL\tVXSC\n\t\t\t5\n\t\t\tUR1\n\t\tPDDL\t\t\t# XCH WITH 0D\t\t\tPL AT 0,6\n\t\tVXSC\tVSL1\n\t\t\tUN\n\t\tVXV\tVAD\t\t#\t\t\t\tPL AT 0\n\t\t\tUR1\n\t\tVSL1\tCLEAR\n\t\t\tSOLNSW\n\t\tSTORE\tVVEC\n\t\tSLOAD\tBZE\n\t\t\tVTARGTAG\n\t\t\tTARGETV\n\t\tGOTO\n\t\t\tRTNLAMB\n\nTARGETV\t\tDLOAD\tCALL\n\t\t\tMAGVEC2\n\t\t\tLAMENTER\n\t\tSTCALL\tVTARGET\n\t\t\tRTNLAMB\n\n# Page 1301\nTIMERAD\t\tSTQ\tSETPD\t\t#\t\t\t\tPL AT 0\n\t\t\tRTNTR\n\t\t\t0\n\t\tBOV\n\t\t\t+1\n\t\tVLOAD\tPDVL\t\t#\t\t\t\tPL AT 6\n\t\t\tRVEC\n\t\t\tVVEC\n\t\tCALL\n\t\t\tPARAM\n\t\tBOV\tDLOAD\t\t#\t\t\t\tPL AT 0\n\t\t\tCOGAOVFL\n\t\t\tD1/32\n\t\tDSU\tDMP\n\t\t\tR1A\n\t\t\tP\n\t\tSQRT\tDMP\n\t\t\tCOGA\n\t\tSL4\tVXSC\n\t\t\tU2\n\t\tPDDL\tDSU\t\t#\t\t\t\tPL AT 6\n\t\t\tD1/64\n\t\t\tR1A\n\t\tVXSC\tVSU\t\t#\t\t\t\tPL AT 0\n\t\t\tUR1\n\t\tVSL4\tUNIT\n\t\tBOV\n\t\t\tCIRCULAR\n\t\tPDDL\tNORM\t\t# 0D=UNIT(ECC) (+3)\t\tPL AT 6\n\t\t\tRDESIRED\t# 36D=ECC (+3)\n\t\t\tX1\n\t\tPDDL\tDMP\t\t#\t\t\t\tPL AT 8\n\t\t\tR1\n\t\t\tP\n\t\tSL*\tDDV\t\t#\t\t\t\tPL AT 6\n\t\t\t0,1\n\t\tDSU\tDDV\n\t\t\tD1/16\n\t\t\t36D\t\t# 36D=ECC (+3)\n\t\tSTORE\tCOSF\n\t\tBOV\tDSQ\n\t\t\tBADR2\n\t\tBDSU\tBMN\n\t\t\tD1/4\n\t\t\tBADR2\n\t\tSQRT\tSIGN\n\t\t\tSGNRDOT\n\t\tCLEAR\n\t\t\tAPSESW\n\n# Page 1302\nTERMNVEC\tVXSC\tVSL1\n\t\t\tUN\n\t\tVXV\tPDVL\t\t# VXCH WITH 0D\t\tPL AT 0,6\n\t\t\t0D\n\t\tVXSC\tVAD\t\t#\t\t\tPL AT 0\n\t\t\tCOSF\n\t\tVSL1\tPUSH\t\t# 0D=U2\t\t\tPL AT 6\n\n\t\tDOT\tDDV\t\t# LIMITS RESULT TO POSMAX OR NEGMAX\n\t\t\tUR1\n\t\t\tDP1/4\n\t\tSR1\tBOV\t\t# SCALE BACK DOWN TO NORMAL\n\t\t\t+1\t\t# CLEAR OVFIND IF SET\n\t\tSTOVL\tCSTH\t\t# CSTH (+1)\n\t\t\tUR1\n\t\tVXV\tVSL1\n\t\tDOT\tSL1\n\t\t\tUN\n\t\tSTODL\tSNTH\t\t# SNTH (+1)\n\t\t\tP\n\t\tCALL\n\t\t\tGETX\n\t\tCLRGO\n\t\t\tSOLNSW\n\t\t\tCOMMNOUT\n\nCIRCULAR\tSETPD\tSETGO\n\t\t\t0\n\t\t\tSOLNSW\n\t\t\tABTCONIC\n\nBADR2\t\tDLOAD\tSIGN\n\t\t\tLODPHALF\n\t\t\tCOSF\n\t\tSTODL\tCOSF\n\t\t\tKEPZERO\n\t\tSETGO\n\t\t\tAPSESW\n\t\t\tTERMNVEC\n\n# Page 1303\nAPSIDES\t\tSTQ\tSETPD\t\t#\t\t\tPL AT 0\n\t\t\tRTNAPSE\n\t\t\t0D\n\t\tBOV\n\t\t\t+1\n\t\tVLOAD\tPDVL\t\t#\t\t\tPL AT 6\n\t\t\tRVEC\n\t\t\tVVEC\n\t\tCALL\n\t\t\tPARAM\n\t\tBOV\t\t\t#\t\t\tPL AT 0\n\t\t\tGETECC\nGETECC\t\tDMP\tSL4\n\t\t\tR1A\n\t\tBDSU\tSQRT\n\t\t\tD1/64\n\t\tSTORE\tECC\n\t\tDAD\tPDDL\t\t#\t\t\tPL AT 2\n\t\t\tD1/8\n\t\t\tR1\n\t\tDMP\tSL1\n\t\t\tP\n\t\tDDV\t\t\t#\t\t\tPL AT 0\n\t\tPDDL\tNORM\t\t# 0D=RP (+29 OR +27)\tPL AT 2\n\t\t\tR1A\n\t\t\tX1\n\t\tPDDL\tSL*\t\t#\t\t\tPL AT 4\n\t\t\tR1\n\t\t\t0 \t-5,1\n\t\tDDV\tDSU\t\t#\t\t\tPL AT 2,0\n\t\tBOV\tBMN\n\t\t\tINFINAPO\n\t\t\tINFINAPO\n\t\tGOTO\n\t\t\tRTNAPSE\nINFINAPO\tDLOAD\tGOTO\t\t# RETURNS WITH APOAPSIS IN MPAC, PERIAPSIS\n\t\t\tLDPOSMAX\n\t\t\tRTNAPSE\t\t# THAT PL IS AT 0.\n\n# Page 1304\nABTCONIC\tEXIT\n\t\tTC\tPOODOO\n\t\tOCT\t00607\n\n# Page 1305\n\t\tSETLOC\tCONICS1\n\t\tBANK\n\n\t\tCOUNT\t04/CONIC\n\nMUTABLE\t\t2DEC*\t3.986032 E10 B-36*\t# MUE\n\n\t\t2DEC*\t.25087606 E-10 B+34*\t# 1/MUE\n\n\t\t2DEC*\t1.99650495 E5 B-18*\t# SQRT(MUE)\n\n\t\t2DEC*\t.50087529 E-5 B+17*\t# 1/SQRT(MUE)\n\n\t\t2DEC\t4.902778 E8 B-30\t# MUM\n\n\t\t2DEC\t.203966 E-8 B+28\t# 1/MUM\n\n\t\t2DEC*\t2.21422176 E4 B-15*\t# SQRT(MUM)\n\n\t\t2DEC*\t.45162595 E-4 B+14*\t# 1/SQRT(MUM)\n\nLDPOSMAX\tEQUALS \tLODPMAX\t\t\t# DPPOSMAX IN LOW MEMORY.\n\n# ERASABLE ASSIGNMENTS\n\n# KEPLER SUBROUTINE\n\n# INPUT --\n# RRECT\t\tERASE \t+5\n# VRECT\t\tERASE\t+5\n# TAU.\t\tERASE\t+1\n# XKEP\t\tERASE\t+1\n# TC\t\tERASE\t+1\n# XPREV\t\tERASE\t+1\n1/MU\t\tEQUALS\t14D\nROOTMU\t\tEQUALS\t16D\n1/ROOTMU\tEQUALS\t18D\n\n# OUTPUT --\n# RCV\t\tERASE\t+5\n# VCV\t\tERASE\t+5\n# RC\t\tERASE\t+1\n# XPREV\t\tERASE\t+1\n\n# DEBRIS --\nALPHA\t\tEQUALS\t8D\nXMAX\t\tEQUALS\t10D\n# Page 1306\nXMIN\t\tEQUALS\t12D\nX\t\tEQUALS\t20D\nXI\t\tEQUALS\t24D\nS(XI)\t\tEQUALS\t26D\nXSQC(XI)\tEQUALS\t28D\nT\t\tEQUALS\t30D\nR1\t\tEQUALS\t32D\nKEPC1\t\tEQUALS\t34D\nKEPC2\t\tEQUALS\t36D\n\n# DELX\t\tERASE\t+1\n# DELT\t\tERASE\t+1\n# URRECT\tERASE\t+5\n# RCNORM\tERASE\t+1\n# XPREV\t\tEQUALS\tXKEP\n\n\n# LAMBERT SUBROUTINE\n#\n# INPUT --\n# R1VEC \tERASE\t+5\n# R2VEC\t\tERASE \t+5\n# TDESIRED\tERASE\t+1\n# GEOMSGN\tERASE\t+0\n# GUESSW\t\t\t# 0 IF COGA GUESS AVAILABLE, 1 IF NOT\n# COGA\t\tERASE\t+1\t# INPUT ONLY IF GUESSW IS ZERO.\n# NORMSW\t\t\t# 0 IF UN TO BE COMPUTED, 1 IF UN INPUT\n# UN\t\tERASE\t+5\t# ONLY USED IF NORMSW IS 1\n# VTARGTAG\tERASE\t+0\n# TWEEKIT\tEQUALS\t40D\t# ONLY USED IF GUESSW IS 0\n\n# OUTPUT --\n# VTARGET\tERASE\t+5\t# AVAILABLE ONLY IF VTARGTAG IS ZERO.\n# V1VEC\t\tEQUALS\tMPAC\n\n# DEBRIS --\n# RTNLAMB\tERASE\t+0\n# U2\t\tERASE\t+5\n# MAGVEC2\tERASE\t+1\n# UR1\t\tERASE\t+5\n# R1\t\tEQUALS\t31D\n# UN\t\tERASE\t+5\n# SNTH\t\tERASE\t+1\n# CSTH\t\tERASE\t+1\n# 1-CSTH\tERASE\t+1\n# CSTH-RHO\tERASE\t+1\n\nCOGAMAX\t\tEQUALS\t14D\t# CLOBBERS 1/MU\nCOGAMIN\t\tEQUALS\t8D\nDCOGA\t\tEQUALS\t12D\n\n# TWEEKIT\tEQUALS\t40D\n# P\t\tERASE\t+1\n# Page 1307\n# COGA\t\tERASE\t+1\n# R1A\t\tERASE\t+1\n# X\t\tEQUALS\t20D\n# XSQ\t\tEQUALS\t22D\n# XI\t\tEQUALS\t24D\n# S(XI)\t\tEQUALS\t26D\n# XSQC(XI)\tEQUALS\t28D\n# T\t\tEQUALS\t30D\n# KEPC1\t\tEQUALS\t34D\n# KEPC2\t\tEQUALS\t36D\n# SLOPESW\n# SOLNSW\n\n# OTHERS --\n# RVEC\t\tEQUALS\tR1VEC\n# VVEC\t\tERASE\t+5\n# COGAFLAG\n# RVSW\n# INFINFLG\n# APSESW\n# 360SW\n# RTNTT\t\tEQUALS\tRTNLAMB\n# ECC\t\tERASE\t+1\n# RTNTR\t\tEQUALS\tRTNLAMB\n# RTNAPSE\tEQUALS\tRTNLAMB\n# R2\t\tEQUALS\tMAGVEC2\n\nCOSF\t\tEQUALS\t24D\n\n# RTNPRM\tERASE\t+0\n# SGNRDOT\tERASE\t+0\n# RDESIRED\tERASE\t+1\n\n\n# ITERATOR SUBROUTINE\n\n# ORDERSW\nMAX\t\tEQUALS\t14D\t\t# CLOBBERS 1/MU\nMIN\t\tEQUALS\t8D\n\n# INDEP\t\tERASE\t+1\n\nDELINDEP\tEQUALS\t12D\nITERCTR\t\tEQUALS\t22D\nDEP\t\tEQUALS\t30D\n\n# DELDEP\tERASE\t+1\n# DEPREV\tERASE\t+1\n\nTWEEKIT\t\tEQUALS\t40D\n\n\n# MORE KEPLER\n\n# EPSILONT\tERASE\t+1\n\n# Page 1308\n# MORE LAMBERT\n\n# TERRLAMB\tEQUALS\tDELDEP\n# TPREV\t\tEQUALS\tDEPREV\n\n# EPSILONL\tEQUALS\tEPSILONT +2\t# DOUBLE PRECISION WORD\n\n\n"
  },
  {
    "path": "Comanche055/CONTRACT_AND_APPROVALS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tCONTRACT_AND_APPROVALS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Mod history:\t2009-05-06 RSB\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n\n# Page 1\n\n\n# ************************************************************************\n# *                                                                      *\n# *\t     THIS AGC PROGRAM SHALL ALSO BE REFERRED TO AS:              *\n# *\t\t\t\t\t\t\t\t\t *\n# *                                                                      *\n# *\t\t\t   COLOSSUS 2A                                   *\n# *                                                                      *\n# *                                                                      *\n# *\t  THIS PROGRAM IS INTENDED FOR USE IN THE CM AS SPECIFIED\t *\n# *       IN REPORT R-577. THIS PROGRAM WAS PREPARED UNDER DSR\t\t *\n# *       PROJECT 55-23870, SPONSORED BY THE MANNED SPACECRAFT\t\t *\n# *       CENTER OF THE NATIONAL AERONAUTICS AND SPACE\t\t\t *\n# *       ADMINISTRATION THROUGH CONTRACT NAS 9-4065 WITH THE\t\t *\n# *       INSTRUMENTATION LABORATORY, MASSACHUSETTS INSTITUTE OF\t *\n# *       TECHNOLOGY, CAMBRIDGE, MASS.\t\t\t\t\t *\n# *                                                                      *\n# ************************************************************************\n\n\n#         SUBMITTED:\tMARGARET H. HAMILTON\t\t  DATE:\t 28 MAR 69\n#             M.H.HAMILTON, COLOSSUS PROGRAMMING LEADER\n#             APOLLO GUIDANCE AND NAVIGATION\n\n#         APPROVED:\tDANIEL J. LICKLY                  DATE:\t 28 MAR 69\n#             D.J.LICKLY, DIRECTOR, MISSION PROGRAM DEVELOPMENT\n#             APOLLO GUIDANCE AND NAVIGATION PROGRAM\n\n#\t  APPROVED: FRED H. MARTIN                  \t  DATE:\t 28 MAR 69\n#             FRED H. MARTIN, COLOSSUS PROJECT MANGER\n#             APOLLO GUIDANCE AND NAVIGATION PROGRAM\n\n#         APPROVED: NORMAN E.SEARS                 \t  DATE:\t 28 MAR 69\n#             N.E. SEARS, DIRECTOR, MISSION DEVELOPMENT\n#             APOLLO GUIDANCE AND NAVIGATION PROGRAM\n\n#         APPROVED: RICHARD H. BATTIN               \t  DATE:\t 28 MAR 69\n#             R.H. BATTIN, DIRECTOR, MISSION DEVELOPMENT\n#             APOLLO GUIDANCE AND NAVIGATION PROGRAM\n\n#         APPROVED: DAVID G. HOAG\t\t\t  DATE:\t 28 MAR 69\n#             D.G. HOAG, DIRECTOR\n#             APOLLO GUIDANCE AND NAVIGATION PROGRAM\n\n#         APPROVED: RALPH R. RAGAN\t\t\t  DATE:\t 28 MAR 69\n#             R.R. RAGAN, DEPUTY DIRECTOR\n#             INSTRUMENTATION LABORATORY\n"
  },
  {
    "path": "Comanche055/CSM_GEOMETRY.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tCSM_GEOMETRY.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t285-296\n# Mod history:\t2009-05-08 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 285\n\t\tBANK\t22\n\t\tSETLOC\tCOMGEOM1\n\t\tBANK\n\n# THIS ROUTINE TAKES THE SHAFT AND TRUNNION ANGLES AS READ BY THE CM OPTICAL SYSTEM AND CONVERTS THEM INTO A  UNIT\n# VECTOR REFERENCED TO THE NAVIGATION BASE COORDINATE SYSTEM AND COINCIDENT WITH THE SEXTANT LINE OF SIGHT.\n#\n# THE INPUTS ARE  1) THE SEXTANT SHAFT AND TRUNNION ANGLES ARE STORED SP IN LOCATIONS 3 AND 5 RESPECTIVELY OF THE\n# MARK VAC AREA.  2) THE COMPLEMENT OF THE BASE ADDRESS OF THE MARK VAC AREA IS STORED SP AT LOCATION X1 OF YOUR\n# JOB VAC AREA.\n#\n# THE OUTPUT IS A HALF-UNIT VECTOR IN NAVIGATION BASE COORDINATES AND STORED AT LOCATION 32D OF THE VAC AREA. THE\n# OUTPUT IS ALSO AVAILABLE AT MPAC.\n\n\n\t\tCOUNT\t23/GEOM\n\nSXTNB\t\tSLOAD*\tRTB\t\t# PUSHDOWN  00,02,04,(17D-19D),32D-36D\n\t\t\t5,1\t\t# TRUNNION = TA\n\t\t\tCDULOGIC\n\t\tRTB\tPUSH\n\t\t\tSXTLOGIC\n\t\tSIN\tSL1\n\t\tPUSH\tSLOAD*\t\t# PD2 = SIN(TA)\n\t\t\t3,1\t\t# SHAFT = SA\n\t\tRTB\tPUSH\t\t# PD4 = SA\n\t\t\tCDULOGIC\n\n\t\tCOS\tDMP\n\t\t\t2\n\t\tSTODL\tSTARM\t\t# COS(SA)SIN(TA)\n\n\t\tSIN\tDMP\n\t\tSTADR\n\t\tSTODL\tSTARM\t+2\t# SIN(SA)SIN(TA)\n\n\t\tCOS\n\t\tSTOVL\tSTARM\t+4\n\t\t\tSTARM\t\t# STARM = 32D\n\t\tMXV\tVSL1\n\t\t\tNB1NB2\n\t\tSTORE\t32D\n\t\tRVQ\n\n\nSXTLOGIC\tCAF\t10DEGS-\t\t# CORRECT FOR 19.775 DEGREE OFFSET\n\t\tADS\tMPAC\n\t\tCAF\tQUARTER\n\t\tTC\tSHORTMP\n\t\tTC\tDANZIG\n# Page 286\n# CALCSXA COMPUTES THE SEXTANT SHAFT AND TRUNNION ANGLES REQUIRED TO POSITION THE OPTICS SUCH THAT A STAR LINE-\n# OF-SIGHT LIES ALONG THE STAR VECTOR.  THE ROUTINE TAKES THE GIVEN STAR VECTOR AND EXPRESSES IT AS A VECTOR REF-\n# ERENCED TO THE OPTICS COORDINATE SYSTEM.  IN ADDITION IT SETS UP THREE UNIT VECTORS DEFINING THE X,Y, AND Z AXES\n# REFERENCED TO THE OPTICS COORDINATE SYSTEM.\n#\n# THE INPUTS ARE  1) THE STAR VECTOR REFERRED TO PRESENT STABLE MEMBER COORDINATES STORED AT STAR.  2) SAME ANGLE\n# INPUT AS *SMNB*, I.E. SINES AND COSINES OF THE CDU ANGLES, IN THE ORDER Y Z X, AT SINCDU AND COSCDU.  A CALL\n# TO CDUTRIG WILL PROVIDE THIS INPUT.\n#\n# THE OUTPUTS ARE THE SEXTANT SHAFT AND TRUNNION ANGLES STORED DP AT SAC AND PAC RESPECTIVELY.  (LOW ORDER PART\n# EQUAL TO ZERO).\n\n\nCALCSXA\t\tITA\tVLOAD\t\t# PUSHDOWN 00-26D,28D,30D,32D-36D\n\t\t\t28D\n\t\t\tSTAR\n\t\tCALL\n\t\t\t*SMNB*\n\t\tMXV\tVSL1\n\t\t\tNB2NB1\n\t\tSTOVL\tSTAR\n\t\t\tHIUNITX\n\t\tSTOVL\tXNB1\n\t\t\tHIUNITY\n\t\tSTOVL\tYNB1\n\t\t\tHIUNITZ\n\t\tSTCALL\tZNB1\n\t\t\tSXTANG1\n# Page 287\n# SXTANG COMPUTES THE SEXTANT SHAFT AND TRUNNION ANGLES REQUIRED TO POSITION THE OPTICS SUCH THAT A STAR LINE-OF-\n# SIGHT LIES ALONG THE STAR VECTOR.\n#\n# THE INPUTS ARE  1) THE STAR VECTOR REFERRED TO ANY COORDINATE SYSTEM STORED AT STAR.  2) THE NAVIGATION BASE\n# COORDINATES REFERRED TO THE SAME COORDINATE SYSTEM.  THESE THREE HALF-UNIT VECTORS ARE STORED AT XNB, YNB, AND\n# ZNB.\n#\n# THE OUTPUTS ARE THE SEXTANT SHAFT AND TRUNNION ANGLES STORED DP AT SAC AND PAC RESPECTIVELY.  (LOW ORDER PART\n# EQUAL TO ZERO).\n\n\nSXTANG\t\tITA\tRTB\t\t# PUSHDOWN  16D,18D,22D-26D,28D\n\t\t\t28D\n\t\t\tTRANSP1\t\t# EREF WRT NB2\n\t\tVLOAD\tMXV\n\t\t\tXNB\n\t\t\tNB2NB1\n\t\tVSL1\n\t\tSTOVL\tXNB1\n\t\t\tYNB\n\t\tMXV\tVSL1\n\t\t\tNB2NB1\n\t\tSTOVL\tYNB1\n\t\t\tZNB\n\t\tMXV\tVSL1\n\t\t\tNB2NB1\n\t\tSTORE\tZNB1\n\n\t\tRTB\tRTB\n\t\t\tTRANSP1\n\t\t\tTRANSP2\n\nSXTANG1\t\tVLOAD\tVXV\n\t\t\tZNB1\n\t\t\tSTAR\n\t\tBOV\n\t\t\t+1\n\t\tUNIT\tBOV\n\t\t\tZNB=S1\n\t\tSTORE\tPDA\t\t# PDA = UNIT(ZNB X S)\n\n\t\tDOT\tDCOMP\n\t\t\tXNB1\n\t\tSTOVL\tSINTH\t\t# SIN(SA) = PDA . -XNB\n\t\t\tPDA\n\n\t\tDOT\n\t\t\tYNB1\n\t\tSTCALL\tCOSTH\t\t# COS(SA) = PDA . YNB\n\t\t\tARCTRIG\n# Page 288\n\t\tRTB\n\t\t\t1STO2S\n\t\tSTOVL\tSAC\n\t\t\tSTAR\n\t\tBOV\n\t\t\t+1\n\t\tDOT\tSL1\n\t\t\tZNB1\n\t\tACOS\n\t\tBMN\tSL2\n\t\t\tSXTALARM\t# TRUNNION ANGLE NEGATIVE\n\t\tBOV\tDSU\n\t\t\tSXTALARM\t# TRUNNION ANGLE GREATER THAN 90 DEGREES\n\t\t\t20DEG-\n\t\tRTB\n\t\t\t1STO2S\n\t\tSTORE\tPAC\t\t# FOR FLIGHT USE, CULTFLAG IS ON IF\n\t\tCLRGO\t\t\t# TRUNION IS GREATER THAN 90 DEG\n\t\t\tCULTFLAG\n\t\t\t28D\nSXTALARM\tSETGO\t\t\t# ALARM HAS BEEN REMOVED FROM THIS\n\t\t\tCULTFLAG\n\t\t\t28D\t\t# SUBROUTINE,ALARM WILL BE SET BY MPI\nZNB=S1\t\tDLOAD\n\t\t\t270DEG\n\t\tSTODL\tSAC\n\t\t\t20DEGS-\n\t\tSTORE\tPAC\n\t\tCLRGO\n\t\t\tCULTFLAG\n\t\t\t28D\n# Page 289\n# THESE TWO ROUTINES COMPUTE THE ACTUAL STATE VECTOR FOR LM, CSM BY ADDING\n# THE CONIC R,V AND THE DEVIATIONSR,V.  THE STATE VECTORS ARE CONVERTED TO\n# METERS B-29 AND METERS/CSEC B-7 AND STORED APPROPRIATELY IN RN,VN OR\n# R-OTHER , V-OTHER FOR DOWNLINK.  THE ROUTINES NAMES ARE SWITCHED IN THE\n# OTHER VEHICLES COMPUTER.\n#\n# INPUT\n#\tSTATE VECTOR IN TEMPORARY STORAGE AREA\n#\tIF STATE VECTOR IS SCALED POS B27 AND VEL B5\n#\t\tSET X2 TO +2\n#\tIF STATE VECTOR IS SCALED POS B29 AND VEL B7\n#\t\tSET X2 TO 0\n#\n# OUTPUT\n#\tR(T) IN RN, V(T) IN VN, T IN PIPTIME\n#\t\tOR\n#\tR(T) IN R-OTHER, V(T) IN V-OTHER\t(T IS DEFINED BY T-OTHER)\n\n\n\t\tBANK\t23\n\t\tSETLOC\tCOMGEOM2\n\t\tBANK\n\t\tCOUNT\t10/GEOM\nSVDWN1\t\tBOF\tRVQ\t\t\t# SW=1=AVETOMID DOING W-MATRIX INTEG\n\t\t\tAVEMIDSW\n\t\t\t+1\n\t\tVLOAD\tVSL*\n\t\t\tTDELTAV\n\t\t\t0\t-7,2\n\t\tVAD\tVSL*\n\t\t\tRCV\n\t\t\t0,2\n\t\tSTOVL\tRN\n\t\t\tTNUV\n\t\tVSL*\tVAD\n\t\t\t0\t-4,2\n\t\t\tVCV\n\t\tVSL*\n\t\t\t0,2\n\t\tSTODL\tVN\n\t\t\tTET\n\t\tSTORE\tPIPTIME\n\t\tRVQ\n\nSVDWN2\t\tVLOAD\tVSL*\n\t\t\tTDELTAV\n\t\t\t0\t-7,2\n\t\tVAD\tVSL*\n\t\t\tRCV\n# Page 290\n\t\t\t0,2\n\t\tSTOVL\tR-OTHER\n\t\t\tTNUV\n\t\tVSL*\tVAD\n\t\t\t0\t-4,2\n\t\t\tVCV\n\t\tVSL*\n\t\t\t0,2\n\t\tSTORE\tV-OTHER\n\t\tRVQ\n# Page 291\n# SUBROUTINE TO COMPUTE THE NATURAL LOG OF C(MPAC, MPAC +1).\n#\n#\tENTRY:\tCALL\n#\t\t\tLOG\n#\n# SUBROUTINE RETURNS WITH -LOG IN DP MPAC.\n#\n# EBANK IS ARBITRARY..\n\n\t\tBANK\t14\n\t\tSETLOC\tPOWFLIT2\n\t\tBANK\n\t\tCOUNT\t23/GEOM\n\nLOG\t\tNORM\tBDSU\t\t# GENERATES LOG BY SHIFTING ARG\n\t\t\tMPAC\t+3\t# UNTIL IT LIES BETWEEN .5 AND 1.\n\t\t\tNEARLY1\t\t# THE LOG OF THIS PART IS FOUND AND THE\n\t\tEXIT\t\t\t# LOG OF THE SHIFTED PART IS COMPUTED\n\n\t\tTC\tPOLY\t\t# AND ADDED IN.  SHIFT COUNT STORED\n\n\t\tDEC\t2\t\t# (N-1, SUPPLIED BY SMERZH)\n\t\t2DEC\t0\t\t# IN MPAC +3.\n\t\t2DEC\t.031335467\n\t\t2DEC\t.0130145859\n\t\t2DEC\t.0215738898\n\n\t\tCAF\tZERO\n\t\tTS\tMPAC\t+2\n\t\tEXTEND\n\t\tDCA\tCLOG2/32\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC\t+3\n\t\tCOM\t\t\t# LOAD POSITIVE SHIFT COUNT IN A.\n\t\tTC\tSHORTMP\t\t# MULTIPLY BY SHIFT COUNT.\n\n\t\tDXCH\tMPAC\t+1\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC\t+3\n\t\tDAS\tMPAC\n\t\tTC\tINTPRET\t\t# RESULT IN MPAC, MPAC +1\n\n\t\tRVQ\n\nNEARLY1\t\t2DEC\t.999999999\n\n# Page 292\nCLOG2/32\t2DEC\t.0216608494\n\n# Page 293\n# SUBROUTINE NAME: \tEARTH ROTATOR\t(EARROT1 OR EARROT2)\t\tDATE:  \t\t15 FEB 67\n# MOD NO:  N +1\t\t\t\t\t\t\t\tLOG SECTION:  \tPOWERED FLIGHT SUBROS\n# MOD BY:  ENTRY GROUP (BAIRNSFATHER)\n# FUNCTIONAL DESCRIPTION: \tTHIS ROUTINE PROJECTS THE INITIAL EARTH TARGET VECTOR RTINIT AHEAD THROUGH\n#\tTHE ESTIMATED TIME OF FLIGHT.  INITIAL CALL RESOLVES THE INITIAL TARGET VECTOR RTINIT INTO EASTERLY\n#\tAND NORMAL COMPONENTS RTEAST AND RTNORM .  INITIAL AND SUBSEQUENT CALLS ROTATE THIS VECTOR\n#\tABOUT THE (FULL) UNIT POLAR AXIS UNITW THROUGH THE ANGLE WIE DTEAROT TO OBTAIN THE ROTATED\n#\tTARGET VECTOR RT .  ALL VECTORS EXCEPT UNITW ARE HALF UNIT.\n#\tTHE EQUATIONS ARE\n#\t\t-    -        -                      -\n#\t\tRT = RTINIT + RTNORM (COS(WT) - 1) + RTEAST SIN(WT)\n#\tWHERE\tWT = WIE DTEAROT\n#\t\tRTINIT = INITIAL TARGET VECTOR\n#\t\t-        -       -\n#\t\tRTEAST = UNITW*RTINIT\n#\t\t-        -        -\n#\t\tRTNORM = RTEAST*UNITW\n#\n#\tFOR CONTINUOUS UPDATING, ONLY ONE ENTRY TO EARROT1 IS REQUIRED, WITH SUBSEQUENT ENTRIES AT EARROT2.\n# CALLING SEQUENCE:\tFIRST CALL\t\t\tSUBSEQUENT CALL\n#\t\t\tSTCALL\tDTEAROT\t\t\tSTCALL\tDTEAROT\n#\t\t\t\tEARROT1\t\t\t\tEARROT2\n#\t\t\tC(MPAC) UNSPECIFIED\t\tC(MPAC) = DTEAROT\n#\tPUSHLOC = PDL+0, ARBITRARY.  6 LOCATIONS USED.\n#\n# SUBROUTINES USED:  NONE\n# NORMAL EXIT MODES:  RVQ\n# ALARMS:  NONE\n# OUTPUT:  RTEAST (-1)\t\t.5 UNIT VECTOR EAST, COMPNT OF RTINIT\tLEFT BY FIRST CALL\n#\t   RTNORM (-1)\t\t.5 UNIT VECTOR NORML, COMPNT OF RTINIT\tLEFT BY FIRST CALL\n#\t   RT\t  (-1)\t\t.5 UNIT TARGET VECTOR, ROTATED\t\tLEFT BY ALL CALLS\n#\t   DTEAROT  (-28) CS\tMAY BE CHANGED BY EARROT2, IF OVER 1 DAY\n# ERASABLE INITIALIZATION REQUIRED:\n#\t   UNITW  (0)\t\tUNIT POLAR VECTOR\t\t\tPAD LOADED\n#\t   RTINIT (-1)\t\t.5 UNIT INITIAL TARGET VECTOR\t\tLEFT BY ENTRY\n#\t   DTEAROT  (-28) CS\tTIME OF FLIGHT\t\t\t\tLEFT BY CALLER\n# DEBRIS:  QPRET, PDL+0 ... PDL+5\n# Page 294\n\t\tEBANK=\tRTINIT\n\nEARROT1\t\tVLOAD\tVXV\n\t\t\tUNITW\t\t# FULL UNIT VECTOR\n\t\t\tRTINIT\t\t# .5 UNIT\n\t\tSTORE\tRTEAST\t\t# .5 UNIT\n\n\t\tVXV\n\t\t\tUNITW\t\t# FULL UNIT\n\t\tSTODL\tRTNORM\t\t# .5 UNIT\n\t\t\tDTEAROT\t\t# (-28) CS\n\nEARROT2\t\tBOVB\tDDV\n\t\t\tTCDANZIG\t# RESET OVFIND, IF ON\n\t\t\t1/WIE\n\t\tBOV\tPUSH\n\t\t\tOVERADAY\n\t\tCOS\tDSU\n\t\t\tHIDPHALF\n\t\tVXSC\tPDDL\t\t# XCH W PUSH LIST\n\t\t\tRTNORM\t\t# .5 UNIT\n\t\tSIN\tVXSC\n\t\t\tRTEAST\t\t# .5 UNIT\n\t\tVAD\tVSL1\n\t\tVAD\tUNIT\t\t# INSURE THAT RT IS 'UNIT'.\n\t\t\tRTINIT\t\t# .5 UNIT\n\t\tSTORE\tRT\t\t# .5 UNIT TARGET VECTOR\n\n\t\tRVQ\n\nOVERADAY\tDLOAD\tSIGN\n\t\t\t1/WIE\n\t\t\tDTEAROT\n\t\tBDSU\n\t\t\tDTEAROT\n\t\tSTORE\tDTEAROT\n\n\t\tGOTO\n\t\t\tEARROT2\n\n#WIE\t\t2DEC\t.1901487997\n1/WIE\t\t2DEC\t8616410\nNB2NB1\t\t2DEC\t+.8431756920 B-1\n\t\t2DEC\t0\n\t\t2DEC\t-.5376381241 B-1\n# Page 295\nZERINFLT\t2DEC\t0\nHALFNFLT\t2DEC\t.5\n\t\t2DEC\t0\n\t\t2DEC\t+.5376381241 B-1\n\t\t2DEC\t0\n\t\t2DEC\t+.8431756920 B-1\nNB1NB2\t\t2DEC\t+.8431756920 B-1\n\t\t2DEC\t0\n\t\t2DEC\t+.5376381241 B-1\n\t\t2DEC\t0\n\t\t2DEC\t.5\n\t\t2DEC\t0\n\t\t2DEC\t-.5376381241 B-1\n\t\t2DEC\t0\n\t\t2DEC\t+.8431756920 B-1\n\n# Page 296\n10DEGS-\t\tDEC\t3600\n\n270DEG\t\tOCT\t60000\t\t# SHAFT 270 DEGREES\t2S COMP.\n\t\tOCT\t00000\n\n20DEGS-\t\tDEC\t-07199\n\t\tDEC\t-00000\n\n20DEG-\t\tDEC\t03600\n\t\tDEC\t00000\n"
  },
  {
    "path": "Comanche055/DISPLAY_INTERFACE_ROUTINES.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     DISPLAY_INTERFACE_ROUTINES.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 1452-1484\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-07 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname, and page images. Corrected various\n#\t\t\t\ttypos in the transcription of program\n#\t\t\t\tcomments, and these should be back-ported\n#\t\t\t\tto Colossus249.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 1452\n# DISPLAYS CAN BE CLASSIFIED INTO THE FOLLOWING CATEGORIES-\n#\t1.  PRIORITY DISPLAYS- DISPLAYS WHICH TAKE PRIORITY OVER ALL OTHER DISPLAYS. USUALLY THESE DISPLAYS ARE SENT\n#\t    OUT UNDER CRITICAL ALARM CONDITIONS.\n#\t2.  EXTENDED VERB DISPLAYS- ALL EXTENDED VERBS AND MARK ROUTINES SHOULD USE EXTENDED VERB (MARK) DISPLAYS.\n#\t3.  NORMAL DISPLAYS- ALL MISSION PROGRAM DISPLAYS WHICH INTERFACE WITH THE ASTRONAUT DURING THE NORMAL\n#\t    SEQUENCE OF EVENTS.\n#\t4.  MISC. DISPLAYS- ALL DISPLAYS NOT HANDLED BY THE DISPLAY INTERFACEROUTINES. THESE INCLUDE SUCH DISPLAYS AS\n#\t    MM DISPLAYS AND SPECIAL PURPOSE DISPLAYS HANDLED BY PINBALL.\n#\t5.  ASTRONAUT INITIATED DISPLAYS- ALL DISPLAYS INITIATED EXTERNALLY.\n#\n# THE FOLLOWING TERMS ARE USED TO DESCRIBE THE STATUS OF DISPLAYS-\n#\t1.  ACTIVE-THE DISPLAY WHICH IS (1) BEING DISPLAYED TO THE ASTRONAUT AND WAITING FOR A RESPONSE OR\n#\t    (2) WAITING FIRST IN LINE FOR THE ASTRONAUT TO FINISH USING THE DSKY OR (3) BEING DISPLAYED ON THE DSKY\n#\t    BUT NOT WAITING FOR A RESPONSE.\n#\t2.  INACTIVE -A DISPLAY WHICH HAS (1) BEEN ACTIVE BUT WAS INTERRUPTED BY A DISPLAY OF HIGHER PRIORITY,\n#\t    (2) BEEN PUT INTO THE WAITING LIST AT TIME IT WAS REQUESTED DUE TO THE FACT A HIGHER PRIORITY DISPLAY\n#\t    WAS ALREADY GOING, (3) BEEN INTERRUPTED BY THE ASTRONAUT (CALLED A PINBRANCH CONDITION, SINCE THIS TYPE\n#\t    OF INACTIVE DISPLAY IS USUALLY REACTIVATED ONLY BY PINBALL) OR (4) A DISPLAY WHICH HAS FINISHED BUT STILL\n#\t    HAS INFO SAVED FOR RESTART PURPOSES.\n#\n# DISPLAY PRIORITIES WORK AS FOLLOWS-\n#\tINTERRUPTS-\n#\t\t1.  THE ASTRONAUT CAN INTERRUPT ANY DISPLAY WITH AN EXTERNAL DISPLAY REQUEST.\n#\t\t2.  INTERNAL DISPLAYS CAN NOT BE SENT OUT WHEN THE ASTRONAUT IS USING THE DSKY.\n#\t\t3.  PRIORITY DISPLAYS INTERRUPT ALL OTHER TYPES OF INTERNAL DISPLAYS.  A PRIORITY DISPLAY INTERRUPTING ANOTHER\n#\t\t    PRIORITY DISPLAY WILL CAUSE AN ABORT UNLESS BIT14 IS SET FOR THE LINUS ROUTINE.\n#\t\t4.  A MARK DISPLAY INTERRUPTS ANY NORMAL DISPLAY.\n#\t\t5.  A MARK THAT INTERRUPTS A MARK COMPLETELY REPLACES IT.\n#\n# \tORDER OF WAITING DISPLAYS-\n#\t\t1.  ASTRONAUT EXTERNAL USE\n#\t\t2.  PRIORITY\n#\t\t3.  INTERRUPTED MARK\n#\t\t4.  INTERRUPTED NORMAL\n#\t\t5.  MARK TO BE REQUESTED (SEE DESCRIPTION OF ENDMARK)\n#\t\t6.  MARK WAITING\n#\t\t7.  NORMAL WAITING\n#\n# Page 1453\n# THE DISPLAY ROUTINES ARE INTENDED TO SERVE AS AN INTERFACE BETWEEN THE USER AND PINBALL.  THE\n# FOLLOWING STATEMENTS CAN BE MADE ABOUT NORMAL DISPLAYS AND PRIORITY DISPLAYS (A DESCRIPTION OF MARK ROUTINES\n# WILL FOLLOW LATER):\n#\t1.  ALL ROUTINES THAT END IN R HAVE AN IMMEDIATE RETURN TO THE USER.  FOR ALL FLASHING DISPLAYS THIS RETURN\n#\t    IS TO THE USERS CALL CADR +4.  FOR THE ONLY NON FLASHING IMMEDIATE RETURN DISPLAY (GODSPR) THIS RETURN\n#\t    IS TO THE USERS CALLING LOC +1.\n#\t2.  ALL ROUTINES NOT ENDING IN R DO NOT DO AN IMMEDIATE RETURN TO THE USER.\n#\t3.  ALL ROUTINES THAT END IN R START A SEPARATE JOB (MAKEPLAY) WITH USERS JOB PRIORITY.\n#\t4.  ALL ROUTINES NOT ENDING IN R BRANCH DIRECTLY TO MAKEPLAY WHICH MAKES THESE DISPLAYS A PART OF THE\n#\t    USERS JOB.\n#\t5.  ALL DISPLAY ROUTINES ARE CALLED VIA BANKCALL.\n#\t6.  TO RESTART A DISPLAY THE USER WILL GENERALLY USE A PHASE OF ONE WITH DESIRED RESTART GROUP (SEE\n#\t    DESCRIPTION OF RESTARTS).\n#\t7.  ALL FLASHING DISPLAYS HAVE 3 RETURNS TO THE USER FROM ASTRONAUT RESPONSES.  A TERMINATE (V34) BRANCHES\n#\t    TO THE USERS CALL CADR +1.  A PROCEED (V33) BRANCHES TO THE USERS CALL CADR +2.  AN ENTER OR RECYCLE\n#\t    (V32) BRANCHES TO THE USERS CALL CADR +3.\n#\t8.  ALL ROUTINES MUST BE USED UNDER EXECUTIVE CONTROL.\n#\n# A DESCRIPTION OF EACH ROUTINE WITH AN EXAMPLE FOLLOWS:\n#\tGODSP IS USED TO DISPLAY A VERB NOUN ARRIVING IN A.  NO RETURN IS MADE TO THE USER.\n#\t\t1.  GODSP IS NOT RESTARTABLE\n#\t\t2.  A VERB PASTE WITH GODSP ALWAYS TURNS ON THE FLASH.\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGODSP\n#\t\t\tVXXNYY\tOCT\tOXXYY\n\n#\tGODSPR IS THE SAME AS GODSP ONLY RETURN IS TO THE USER.\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGODSPR\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN OF GODSPR\n\n#\tGOFLASH DISPLAYS A FLASHING VERB NOUN WITH NO IMMEDIATE RETURN TO THE USER. 3 RETURNS ARE POSSIBLE FORM\n#\tTHE ASTRONAUT (SEE NO. 7 ABOVE).\n#\t\t\t\tCAF\tVXXNYY\t\t# VXX NYY WILL BE A FLASHING VERB NOUN.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOFLASH\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n\n#\tGOPERF1 IS ENTERED WITH DESIRED CHECKLIST VALUE IN A.  GOPERF1 WILL DISPLAY THIS VALUE IN R1 BY MEANS OF A\n# Page 1454\n# \tV01 N25.A FLASHING PLEASE PERFORM ON CHECKLIST (V50 N25) IS THEN DISPLAYED.  NO IMMEDIATE RETURN IS MADE TO\n# \tUSER (SEE NO. 7 ABOVE).\n#\tGOPERF1 BLANKS REGISTERS R2 AND R3\n#\t\t\t\tCAF\tOCTXX\t\t# CODE FOR CHECKLIST VALUE XX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF1\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\tGOPERF2 IS ENTERED WITH A VARIABLE NOUN AND V01 (V00 FOR N10 OR N11) IN A.  GOPERF2 WILL FIRST DISPLAY THE\n# \tREQUESTED NOUN BY MEANS OF A V01NYY OR A V00NYY. PLEASE PERFORM ON NOUN (V50 NYY) THEN BECOMES A FLASHING\n#\tDISPLAY.  NO IMMEDIATE RETURN IS MADE TO THE USER (SEE NO. 7 ABOVE).\n#\tGOPERF2 DOES NOT BLANK ANY REGISTERS\n#\t\t\t\tCAF\tVXXNYY\t\t# VARIABLE NOUN YY. XX=00 OR 01.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF2\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\tGOPERF3 IS USED FOR A PLEASE PERFORM ON A PROGRAM NUMBER.  THE DESIRED PROGRAM NO. IS ENTERED IN A.  GOPERF3\n#\tDISPLAYS THE NO. BY MEANS OF A V06 N07 FOLLOWED BY A FLASHING V50 N07 FOR A PLEASE PERFORM. NO IMMEDIATE RETURN\n#\tIS MADE TO THE USER (SEE NO. 7 ABOVE).\n#\tGOPERF3 BLANKS REGISTERS R2 AND R3\n#\t\t\t\tCAF\tDECXX\t\t# REQUEST PERFORM ON PXX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF3\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n\n#\tGOPERF4 IS USED FOR A PLEASE PERFORM ON AN OPTION. THE DESIRED OPTION IS ENTERED IN A AND STORED IN OPTION1.\n#\tGOPERF4 DISPLAYS R1 AND R2 BY MEANS OF A V04N06 FOLLOWED BY A FLASHING V50N06 FOR A PLEASE PERFORM.  NO\n#\tIMMEDIATE RETURN IS MADE TO THE USER (SEE NO. 7 ABOVE).\n#\t\t\t\tCAF\tOCTXX\t\t# REQUEST PERFORM ON OPTION XX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF4\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\tGOPERF4 BLANKS REGISTER R3\n#\n# Page 1455\n#\tGODSPRET IS USED TO DISPLAY A VERB NOUN ARRIVING IN A WITH A RETURN TO THE USER AFTER THE DISPLAY HAS BEEN SENT\n#\tOUT.\n#\t\t\t\tCAF\tVXXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGODSPRET\n#\t\t\t\t...\t...\t\t# RETURN TO USER\n\n#\tREGODSP IS USED TO DISPLAY A VERB NOUN ARRIVING IN A.  REGODSP IS THE SAME AS GODSP ONLY REGODSP REPLACES ANY\n# \tACTIVE NORMAL DISPLAY IF ONE WAS ACTIVE.\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tREGODSP\n\n#\tREFLASH IS THE SAME AS GOFLASH ONLY REFLASH REPLACES ANY ACTIVE NORMAL DISPLAY IF ONE WAS ACTIVE.\n#\t\t\t\tCAF\tVXXNYY\t\t# VXX NYY WILL BE A FLASHING VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tREFLASH\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n\n# \tGOFLASHR IF SAME AS GOFLASH ONLY AN IMMEDIATE RETURN IS MADE TO THE USERS CALL CADR +4.\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOFLASHR\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN FROM GOFLASHR\n\n#\tGOPERF1R IS THE SAME AS GOPERF1 ONLY GOPERF1R HAS AN IMMEDIATE RETURN TO USERS CALL CADR +4.\n#\tGOPERF1R BLANKS REGISTERS R2 AND R3\n#\t\t\t\tCAF\tOCTXX\t\t# CODE FOR CHECKLIST VALUE XX.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF1R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN FROM GOPERF1R\n\n#\tGOPERF2R IS THE SAME AS GOPERF2 ONLY AN IMMEDIATE RETURN IS MADE TO USERS CALL CADR +4.\n# Page 1456\n#\tGOPERF2R DOES NOT BLANK ANY REGISTERS\n#\t\t\t\tCAF\tVXXNYY\t\t# VARIABLE NOUN YY REQUESTED.  XX=00 OR 01\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF2R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN HERE FROM GOPERF2R\n\n# \tGOPERF3R IS THE SAME AS GOPERF3 ONLY AN IMMEDIATE RETURN IS MADE TO USERS CALL CADR +4.\n#\tGOPERF3R BLANKS REGISTERS R2 AND R3\n#\t\t\t\tCAF\tPROGXX\t\t# PERFORM PROGRAM XX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF3R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# GOPERF3R IMMEDIATELY RETURNS HERE\n\n#\tGOPERF4R IS THE SAME AS GOPERF4 ONLY AN IMMEDIATE RETURN IS MADE TO USERS CALL CADR +4.\n#\t\t\t\tCAF\tOCTXX\t\t# REQUEST PERFORM ON OPTIONXX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF4R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO USER\n#\tGOPERF4R BLANKS REGISTER R3\n#\n#\tREFLASHR IS THE SAME AS REFLASH ONLY AN IMMEDIATE RETURN IS MADE TO THE USERS CALL CADR +4.\n#\t\t\t\tCAF\tVXXNYY\t\t# VXX NYY WILL BE A FLASHING VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tREFLASHR\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO USER\n\n#\tREGODSPR IS THE SAME AS REGODSP ONLY A RETURN (IMMEDIATE) IS MADE TO THE USER.\n# Page 1457\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tREGODSPR\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO USER\n\n# Page 1458\n#\tGOMARK IS USED TO DISPLAY A MARK VERB NOUN ARRIVING IN A. NO RETURN IS MADE TO THE USER.\n#\tGOXDSP = GOMARK\n#\t\t\t\tCAF\tVXXNYY\t\t# VXXNYY CONTAINS VERB AND NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK\t\t# OTHER EXTENDED VERBS USE CADR GOXDSP\n\n#\tGOMARKR IS THE SAME AS GOMARK ONLY RETURN IS TO THE USER.\n#\tGOXDSPR = GOMARKR\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARKR\t\t# OTHER EXTENDED VERBS USE CADR GOXDSPR\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN OF GOMARKR\n\n#\tGOMARKF DISPLAYS A FLASHING MARK VERB NOUN WITH NO IMMEDIATE RETURN TO THE USER. 3 RETURNS ARE POSSIBLE FORM\n#\tTHE ASTRONAUT (SEE NO. 7 ABOVE).\n#\tGOXDSPF = GOMARKF\n#\t\t\t\tCAF\tVXXNYY\t\t# VXXNYY WILL BE A FLASHING MARK VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARKFR\t# OTHER EXTENDED VERBS USE CADR GOXDSPFR\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n\n#\tGOMARKFR IS THE SAME AS GOMARKF ONLY AN IMMEDIATE RETURN IS MADE TO THE USER CALL CADR +4.\n#\tGOXDSPFR = GOMARKFR\n#\t\t\t\tCAF\tVXXNYY\t\t# FLASHING MARK VERB NOUN\n#\t\t\t\tTCF\tBANKCALL\n#\t\t\t\tCADR\tGOMARKFR\t# OTHER EXTENDED VERBS USE CADR GOXDSPFR\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO THE USER\n\n#\tGOMARK1 IS USED FOR A PLEASE PERFORM ON A MARK REQUEST WITH ONLY 1 ASTRONAUT RETURN TO THE USER.  NO IMMEDIATE\n#\tRETURN IS MADE. THE DESIRED MARK PLEASE PERFORM VERB AND DESIRED NOUN IS ENTERED IN A.  GOMARK1 DISPLAYS R1, R2, R\n#\tMEANS OF A V05NYY FOLLOWED BY A FLASHING V5XNYY FOR A PLEASE PERFORM. THE ASTRONAUT WILL RESPOND WITH A MARK\n#\tOR MARK REJECT OR AN ENTER. THE ENTER IS THE ONLY ASTRONAUT RESPONSE THAT WILL COME BACK TO THE USER.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tYY= NOUN\n#\t\t\t\tTC\tBANKCALL\n# Page 1459\n#\t\t\t\tCADR\tGOMARK1\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n\n#\t*** IF BLANKING DESIRED ON NON R ROUTINES, NOTIFY DISPLAYER.\n#\n#\tGOMARK1R IS THE SAME AS A GOMARK1 ONLY AN IMMEDIATE RETURN IS MADE TO THE USERS CALL CADR +2.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tYY = NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK1R\n#\t\t\t\t...\t...\t\t# ASTRONAUT ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO USER\n\n#\tGOMARK2 IS THE SAME AS GOMARK1 ONLY 3 RETURNS ARE MADE TO THE USER FROM THE ASTRONAUT.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tYY=NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK2\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n\n#\tGOMARK2R IS THE SAME AS GOMARK1R ONLY 3 ASTRONAUT RETURNS ARE MADE TO THE USER.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=0,1,2,3,4\tYY=NOUN\n#\t\t\t\tTCF\tBANKCALL\n#\t\t\t\tCADR\tGOMARK2R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO THE USER\n\n#\tGOMARK3 IS USED FOR A PLEASE PERFORM ON A MARK REQUEST WITH A 3 COMP. DEC DISPLAY.  THE DESIRED MARK PLEASE\n#\tPERFORM VERB AND NOUN ARE ENTERED IN A.  GOMARK3 DISPLAYS R1, R2, R3 BY MEANS OF A V06NYY FOLLOWED BY A FLASHING\n#\tV5XNYY FOR A PLEASE PERFORM.  GOMARK3 HAS 3 ASTRONAUT RETURNS TO THE USER WITH NO IMMEDIATE RETURN.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tYY=NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK3\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n\n#\tGOMARK4 IS THE SAME AS GOMARK3 ONLY R2 AND R3 ARE BLANKED AND R1 IS DISPLAYED IN OCTAL.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tYY=NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK4\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n# Page 1460\n#\t\t\t...\t...\t\t\t# ENTER RETURN\n#\tEXDSPRET IS USED TO DISPLAY A VERB NOUN ARRIVING IN A WITH A RETURN MADE TO THE USER AFTER THE DISPLAY HAS BEEN\n#\tSENT OUT.\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tEXDSPRET\n#\t\t\t\t...\t...\t\t# RETURN TO USER\n\n#\tKLEENEX CLEANS OUT ALL MARK DISPLAYS (ACTIVE AND INACTIVE). A RETURN IS MADE TO THE USER AFTER THE MARK DISPLAYS\n#\tHAVE BEEN CLEANED OUT.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tKLEENEX\n#\t\t\t\t...\t...\t\t# RETURN TO USER\n\n#\tMARKBRAN IS A SPECIAL PURPOSE ROUTINE USED FOR SAVING JOB VAC AREAS (SEE DESCRIPTION OF MARKBRAN BELOW).\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tMARKBRAN\n#\t\t\t\t...\t...\t\t# BAD RETURN IF MARK DISPLAY NOT ACTIVE\n#\t\t\t\t\t\t\t# (GOOD RETURN TO IMMEDIATE RETURN LOC OF\n#\t\t\t\t\t\t\t# LAST FLASHING MARK R ROUTINE)\n\n#\tPINBRNCH REESTABLISHES THE LAST ACTIVE FLASHING DISPLAY.  IF THERE IS NO ACTIVE FLASHING DISPLAY, THE DSKY IS\n#\tBLANKED AND CONTROL IS SENT TO ENDOFJOB.\n#\t\t\t\tTC\tPOSTJUMP\n#\t\t\t\tCADR\tPINBRNCH\n\n#\tPRIODSP IS USED AS A PRIORITY DISPLAY.  IT WILL DISPLAY A GOFLASH TYPE DISPLAY WITH THREE POSSIBLE RETURNS FROM\n#\tTHE ASTRONAUT(SEE NO.7 ABOVE).\n#\n#\t\tTHE MAIN PURPOSE OF PRIODSP IS TO REPLACE THE PRESENT DISPLAY WITH A DISPLAY OF HIGHER PRIORITY AND TO\n#\tPROVIDE A MEANS FOR RESTORING THE OLD DISPLAY WHEN THE PRIORITY DISPLAY\n# \tIS RESPONDED TO BY THE ASTRONAUT.\n#\n#\t\tTHE FORMER DISPLAY IS RESTORED BY AN AUTOMATIC BRANCH TO WAKE UP THE DISPLAY THAT WAS INTERRUPTED BY THE\n#\tPRIO DISPLAY.\n#\t\t\t\tCAF\tVXXNYY\t\t# VXXNYY WILL BE A FLASHING VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tPRIODSP\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n# Page 1461\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n\n#\tPRIODSPR IS THE SAME AS PRIODSP ONLY AN IMMEDIATE RETURN IS MADE TO THE USERS CALL CADR +4.\n#\t\t\t\tCAF\tVXXNYY\t\t# VXXNYY WILL BE A FLASHING VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tPRIODSPR\n#\t\t\t\t...\t...\t\t# TERMINATE ACTION\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN\n\n#\tPRIOLARM DOES A V05N09 PRIODSPR.\n#\tCLEANDSP CLEANS OUT ALL NORMAL DISPLAYS (ACTIVE AND INACTIVE). A RETURN IS MADE TO THE USER AFTER NORMAL\n#\tDISPLAYS ARE CLEANED OUT.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tCLEANDSP\n#\t\t\t\t...\t...\t\t# RETURN TO USER\n# Page 1462\n#\n# GENERAL INFORMATION\n# -------------------\n#\n# ALARM OR ABORT EXIT MODES--\n#\t\t\t\t\tPRIOBORT\tTC\tABORT\n#\t\t\t\t\t\t\tOCT\t1502\n#\n#\tPRIOBORT IS BRANCED TO WHEN (1)  A NORMAL DISPLAY IS REQUESTED AND  ANOTHER NORMAL DISPLAY IS ALREADY ACTIVE\n#\t(REFLASH AND REGODSP ARE EXCEPTIONS) OR (2) A PRIORITY DISPLAY IS REQUESTED WHEN ANOTHER PRIORITY DISPLAY IS\n#\tALREADY ACTIVE (A PRIORITY WITH LINUS BIT14 IS AN EXCEPTION).\n#\n# ERASABLE INITIALIZATION REQUIRED--\n#\tACCOMPLISHED BY FRESH START-\t1.  FLAGWRD4 (USED EXCLUSIVELY BY DISPLAY INTERFACE ROUTINES)\n#\t\t\t\t\t2.  NVSAVE = NORMAL VERB AND NOUN REGISTER.\n#\t\t\t\t\t3.  EBANKTEM = NORMAL INACTIVE FLAGWORD (ALSO CONTAINS NORMALS EBANK).\n#\t\t\t\t\t5.  R1SAVE = MARKBRAN CONTROL WORD\n#\t\t\t\t\t4.  RESTREG = PRIORITY 30 AND SUPERBANK 3.\n#\n# OUTPUT--\n#\tNVWORD = PRIO VERB AND NOUN\n#\tNVWORD +1(MARKNV) = MARK VERB AND NOUN\n#\tNVWORD +2(NVSAVE) = NORMAL VERB AND NOUN\n#\tDSPFLG(EBANKSAV) = PRIO FLAGWORD (INCLUDING EBANK)\n#\tDSPFLG +1 (MARKEBAN) = MARK FLAGWORD (INCLUDING EBANK)\n#\tDSPFLG +2 (EBANKTEM) = NORMAL FLAGWORD (INCLUDING EBANK)\n#\tCADRFLSH = PRIO USERS CALL CADR +1 LOCATION\n#\tCADRFLSH +1 (MARKFLSH) = MARK USERS CALL CADR +1 LOCATION\n#\tCADRFLSH +2 (TEMPFLSH) = NORMAL USERS CALL CADR +1 LOCATION\n#\tPRIOTIME = TIME EACH PRIO REQUEST FIRST SENT OUT\n#\tOPTION1 = DESIRED OPTION FROM GOPERF4\n#\tFLAGWRD4 = BIT INFO FOR CONTROL OF ALL DISPLAY ROUTINES\n#\tDSPTEM1 = R1 INFO FOR ASTRONAUT FROM PERFORM DISPLAYS(NORMAL)\n#\n# SUBROUTINES USED-- NVSUB, FLAGUP, FLAGDOWN, ENDOFJOB, BLANKSUB, ABORT, JOBWAKE, JOBSLEEP, FINDVAC, PRIOCHNG,\n#\tJAMTERM, NVSUBUSY, FLASHON, ENDIDLE, CHANG1, BANKJUMP, MAKECADR, NOVAC,\n#\n# DEBRIS-- (STORED INTO)\n#\tTEMPORARY TEMPORARIES- A, Q, L, MPAC +2, MPAC +3, MPAC +4, MPAC +5, MPAC +6, RUPTREG2, RUPTREG3, CYL,\n#\t\tEBANK, RUPTREG4, LOC, BANKSET, MODE, MPAC, MPAC +1, FACEREG\n#\tERASABLES(SHARED AND USED WITH OTHER PROGRAMS) CADRSTOR, DSPLIST, LOC, DSPTEM1, OPTION1\n#\tERASABLES(USED ONLY BY DISPLAY ROUTINES)- NVWORD,+1,+2, DSPFLAG,+1,+2, CADRFLSH,+1,+2, PRIOTIME, FLAGWRD4,\n# Page 1463\n#\t\tR1SAVE, MARK2PAC\n#\n# DEBRIS-- (USED BUT NOT STORED INTO)- NOUNREG, VERBREG, LOCCTR, MONSAVE1\n#\n# FLAGWORD DESCRIPTIONS--\n#\tFLAGWRD4- SEE DESCRIPTION UNDER LOG SECTION ERASABLE ASSIGNMENTS\n#\n#\tDSPFLG, DSPFLG+1, DSPFLG+2\n#\t--------------------------\n#\tBITS 1\tBLANK R1\n#\t     2\tBLANK R2\n#\t     3\tBLANK R3\n#\t     4\tFLASHING DISPLAY REQUESTED\n#\t     5\tPERFORM DISPLAY REQUESTED\n#\t     6\t-----\t\t\tEXDSPRET\t\tGODSPRET\n#\t     7\tPRIO DISPLAY\t\t-----\t\t\t-----\n#\t     8\t-----\t\t\tDEC MARK PERFORM\t-----\n#\t     9\tEBANK\n#\t    10\tEBANK\n#\t    11\tEBANK\n#\t    12\t-----\t\t\t-----\t\t\tV99PASTE\n#\t    13\t2ND PART OF PERFORM\n#\t    14\tREFLASH OR REDO\t\t-----\t\t\tREFLASH OR REDO\n#\t    15\t-----\t\t\tMARK REQUEST\t\t-----\n#\n# RESTARTING DISPLAYS--\n#\n# RULES FOR THE DSKY OPERATOR--\n#\t1.  PROCEED AND TERMINATE SERVE AS RESPONSES TO REQUESTS FOR OPERATOR RESPONSE (FLASHING Y/N).  AS LONG\n#\t    AS THERE IS ANY REQUEST AWAITING OPERATOR RESPONSE, ANY USE OF PROCEED OR TERMINATE WILL SERVE AS\n#\t    RESPONSES TO THAT REQUEST.  CARE SHOULD BE EXERCISED IN ATTEMPTING TO KILL AN OPERATOR INITIATED MONITOR\n#\t    WITH PROCEED AND TERMINATE FOR THIS REASON.\n#\t2.  THE ASTRONAUT MUST RESPOND TO A PRIORITY DISPLAY NO SOONER THAN 5 SECS FROM THE TIME THE MISSION\n#\t    PROGRAM SENT OUT THE REQUEST FOR OPERATOR RESPONSE (THE ASTRONAUT WOULD SEE THIS DISPLAY FOR LESS TIME\n#\t    DUE TO TIME IT TAKES TO GET DISPLAY SENT OUT.) IF THE ASTRONAUT RESPONDS TOO SOON, THE PRIORITY DISPLAY\n#\t    IS SENT OUT AGAIN---AND AGAIN UNTIL AN ACCUMULATED 5 SECS FROM TIME THE FIRST PRIORITY DISPLAY WAS SENT\n#\t    OUT. THE SAME 5 SEC. DELAY WILL OCCUR AT 163.84 SECS OR IN ANY MULTIPLE OF THAT TIME DUE TO PROGRAM\n#\t    CONSIDERATION.\n#\t3.  KEY RELEASE BUTTON-\n#\t    A) IF THE KEY RELEASE LIGHT IS ON, IT SIMPLY RELEASES THE KEYBOARD AND DISPLAY FOR INTERNAL USE.\n#\t    B) IF THE KEY RELEASE LIGHT IS OFF, AND IF SOME REQUEST FOR OPERATOR RESPONSE (FLASHING V/N) IS STILL\n#\t       AWAITING RESPONSE THEN IT RE-ESTABLISHES THE DISPLAYS THAT ORIGINALLY REQUESTED RESPONSE.\n#\t    IF AN OPERATOR WANTS THEREFORE TO RE-ESTABLISH BUT CONDITION (A) IS ENCOUNTERED, A SECOND DEPRESSION OF\n#\t    KEY RELEASE BUTTON MAY BE NECESSARY.\n#\t4.  IT IS IMPORTANT TO ANSWER ALL REQUESTS FOR OPERATOR RESPONSE.\n#\t5.  IT IS ALWAYS GOOD PRACTICE TO TERMINATE AN EXTENDED VERB BEFORE ASKING FOR ANOTHER ONE OR THE SAME ONE\n#\t    OVER AGAIN.\n#\n# SPECIAL CONSIDERATIONS--\n# Page 1464\n#\t1.  MPAC +2 SAVED ONLY IN MARK DISPLAYS\n#\t2.  GODSP(R),REGODSP(R),GOMARK(R) ALWAYS TURN ON THE FLASH IF ENTERED WITH A PASTE VERB REQUEST.\n#\t3.  ALL NORMAL DISPLAYS ARE RESTARTABLE EXCEPT GODSP(R), REGODSP(R)\n#\t4.  ALL EXTENDED VERBS WITH DISPLAYS SHOULD START WITH A TC TESTXACT AND FINISH WITH A TC ENDEXT.\n#\t5.  GODSP(R) AND REGODSP(R) MUST BE IN THE SAME EBANK AND SUPERBANK AS THE LAST NORMAL DISPLAY RESTARTED\n#\t    BY A .1 RESTART PHASE CHANGE.\n#\t6.  IN ORDER TO SET UP A NON DISPLAY .1 RESTART POINT, THE USER MUST MAKE CERTAIN THAT RESTREG CONTAINS THE\n#\t    CORRECT PRIORITY AND SUPERBANK AND THAT EBANKTEM CONTAINS THE CO\n#\t7.  IF CLEANDSP IS RESTARTED VIA A .1 PHASE CHANGE, CAF ZERO SHOULD BE EXECUTED BEFORE THE TC BANKCALL.\n\n# Page 1465\n# CALLING SEQUENCE FOR BLANKING\n#\t\tCAF\tBITX\t\t# X=1,2,3 BLANK R1,R2,R3 RESPECTIVELY\n#\t\tTC\tBLANKET\n#\t\t...\t...\t\t# RETURN TO USER HERE\n# IN ORDER TO USE BLANKET CORRECTLY THE USER MUST USE A DISPLAY ROUTINE THAT ENDS IN R FIRST FOLLOWED BY THE CALL\n# TO BLANKET AT THE IMMEDIATE RETURN LOC.\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG4\n\t\tBANK\n\n\t\tCOUNT\t02/DSPLA\n\nBLANKET\t\tTS\tMPAC +6\n\t\tCS\tPLAYTEM4\n\t\tMASK\tMPAC +6\n\t\tINDEX\tMPAC +5\n\t\tADS\tPLAYTEM4\n\n\t\tTC\tQ\n\nENDMARK\t\tTC\tPOSTJUMP\n\t\tCADR\tMARKEND\n\nCLEARMRK\tCAF\tZERO\n\t\tTS\tEXTVBACT\n\n\t\tINHINT\n\t\tCS\tBIT1\n\t\tMASK\tFLAGWRD4\n\t\tTS\tFLAGWRD4\n\n\t\tRELINT\n\t\tTC\tQ\n\n# *** ALL EXTENDED VERB ROUTINES THAT HAVE AT LEAST ONE FLASHING DISPLAY MUST TCF ENDMARK OR TCF ENDEXT WHEN\n# FINISHED.\n\n\t\tBANK\t10\n\t\tSETLOC\tDISPLAYS\n\t\tBANK\n\n\t\tCOUNT\t10/DSPLA\n\n# NTERONLY IS USED TO DIFFERENTIATE THE MARK ROUTINE WITH ONLY ONE RETURN TO THE USER FROM THE MARKING ROUTINE WITH\n# 3 RETURNS TO THE USER.  THIS ROUTINE IS ONLY USED BY GOMARK1 AND GOMARK1R.\n\nMARKEND\t\tTC\tCLEARMRK\n\t\tTCF\tMARKOVER\n\n# Page 1466\nGOMARK\t\tTS\tPLAYTEM1\t# ENTRANCE FOR MARK GODSP\n\nGOMARS\t\tCAF\tBIT15\t\t# BIT15 SET FOR ALL MARK REQUESTS\n\t\tTCF\tGOFLASH2\n\nKLEENEX\t\tCAF\tZERO\t\t# CLEAN OUT EXTENDED VERBS\nGOMARKF\t\tTS\tPLAYTEM1\t# ENTRANCE FOR MARK GOFLASH\n\n\t\tCAF\tMARKFMSK\t# MARK, FLASH\n\t\tTCF\tGOFLASH2\n\nGOMARK2\t\tTS\tPLAYTEM1\t# MARK GOPERFS-3 AST. RETURNS\nMARKFORM\tCAF\tMPERFMSK\t# MARK, PERFORM, FLASH\n\t\tTCF\tGOFLASH2\n\nGOMARK3\t\tTS\tPLAYTEM1\t# USED FOR 3COMP DECIMAL PERFORM\n\t\tCAF\tMARK3MSK\n\t\tTCF\tGOFLASH2\n\nGOMARK4\t\tTS\tPLAYTEM1\n\t\tCAF\tMARK4MSK\t# MARK,PERFORM,FLASH,BLANK\n\t\tTCF\tGOFLASH2\n\nGOMARKR\t\tTS\tPLAYTEM1\t# ENTRANCE FOR MARK GODSPR\n\n\t\tCAF\tBIT15\n\t\tTCF\tGODSPR2\n\nGOMARKFR\tTS\tPLAYTEM1\t# ENTRANCE FOR MARK GOFLASHR\n\n\t\tCAF\tMARKFMSK\n\t\tTCF\tGODSPRS\n\nGOMARK2R\tTS\tPLAYTEM1\t# MARK GOPERFS-3 AST. RETS+ IMMEDIATE RET.\n\t\tCAF\tMPERFMSK\t# MARK, PERFORM, FLASH\n\t\tTCF\tGODSPRS\n\nGOMARK3R\tTS\tPLAYTEM1\n\t\tCAF\tMARK3MSK\n\t\tTCF\tGODSPRS\n\nMAKEMARK\tCAF\tONE\n\t\tTC\tCOPIES\n\n\t\tCA\tFLAGWRD4\t# IS NORM OR PRIO BUSY OR WAITING\n\t\tMASK\tOCT34300\n\t\tCCS\tA\n\t\tTCF\tCHKPRIO\n\n\t\tCA\tFLAGWRD4\t# IS MARK SLEEPING DUE TO ASTRO BUSY\n# Page 1467\n\t\tMASK\tBIT9\n\t\tEXTEND\n\t\tBZF\tMARKPLAY\t# NO\n\n\t\tTCF\tENDOFJOB\n\nMARKPLAY\tINHINT\n\t\tCS\tFIVE\t\t# RESET MARK OVER NORM, SET MARK\n\t\tMASK\tFLAGWRD4\n\t\tAD\tONE\n\t\tTS\tFLAGWRD4\n\t\tRELINT\n\nGOGOMARK\tCS\tMARKFLAG\t# PERFORM\n\t\tMASK\tBIT5\n\t\tCCS\tA\n\t\tTCF\tMARKCOP\n\t\tCS\tMARKNV\n\t\tTS\tMARKNV\n\nMARKCOP\t\tCAF\tONE\t\t# MARK INDEX\n\t\tTCF\tPRIOPLAY\n\nCOPYTOGO\tCA\tMPAC2SAV\n\t\tTS\tMPAC +2\n\nCOPYPACS\tINDEX\tCOPINDEX\n\t\tCAF\tPRIOOCT\n\t\tTS\tGENMASK\n\n\t\tINDEX\tCOPINDEX\n\t\tCAF\tEBANKSAV\n\t\tTS\tTEMPOR2\t\t# ACTIVE EBANK AND FLAG\n\n\t\tTS\tEBANK\n\n\t\tTC\tQ\n\n# PINCHEK CHECKS TO SEE IF THE CURRENT MARK REQUEST IS MADE BY THE ASTRONAUT WHILE INTERRUPTING A GOPLAY DISPLAY\n# (A NORMAL OR A PRIO). IF THE ASTRONAUT TRIES TO MARK DURING A PRIO, THE CHECK FAIL LIGHT GOES ON AND THE MARK\n# REQUEST IS ENDED. IF HE TRIES TO MARK DURING A NORM, THE MARK IS ALLOWED. IN THIS CASE THE NORM IS PUT TO SLEEP\n# UNTIL ALL MARKING IS FINISHED.\n#\n# \tIF THE MARK REQUEST COMES FROM THE PROGRAM DURING A TIME THE ASTRONAUT IS NOT INTERRUPTING A NORMAL OR A\n# PRIO, THE MARK REQUEST IS PUT TO SLEEP UNTIL THE PRESENT ACTIVE DISPLAY IS RESPONDED TO BY THE ASTRONAUT.\n\nCHKPRIO\t\tCA\tFLAGWRD4\t# MARK ATTEMPT DURING PRIO\n\t\tMASK\tOCT24100\n\t\tCCS\tA\n\t\tTCF\tMARSLEEP\n\n# Page 1468\n\t\tCS\tFLAGWRD4\n\t\tMASK\tBIT3\t\t# SET MARK OVER NORM\n\t\tINHINT\n\t\tADS\tFLAGWRD4\n\n\t\tTCF\tSETNORM\n\nMARKPERF\tCA\tMARKNV\n\t\tMASK\tVERBMASK\n\t\tTCF\tNV50DSP\n\nGODSP\t\tTS\tPLAYTEM1\n\nGODSP2\t\tCAF\tZERO\n\t\tTCF\tGOFLASH2\n\nGODSPRET\tTS\tPLAYTEM1\t# ENTRANCE FOR A GODSP WITH A PASTE\n\n\t\tCAF\tBIT6\t\t# SET BIT6 TO GO BACK TO USER AFTER NVSUB\n\t\tTCF\tGOFLASH2\n\nGODSPR\t\tTS\tPLAYTEM1\n\nGODSPR1\t\tCAF\tZERO\nGODSPR2\t\tTS\tPLAYTEM4\n\n\t\tCAF\tZERO\t\t# * DONT MOVE\n\t\tTCF\tGODSPRS1\n\n# \tCLEANDSP IS USED FOR CLEARING OUT A NORMAL DISPLAY THAT IS PRESENTLY ACTIVE OR A NORMAL DISPLAY THAT IS\n# SET UP TO BE STARTED OR RESTARTED.\n#\n# \tNORMALLY THE USER WILL NOT NEED TO USE THIS ROUTINE SINCE A NEW NORMAL DISPLAY AUTOMATICALLY CLEARS OUT AN\n# OLD DISPLAY.\n#\n# CALLING SEQUENCE FOR CLEANDSP-\n#\n#\t\tTC\tBANKCALL\n#\t\tCADR\tCLEANDSP\n\nCLEANDSP\tCAF\tZERO\nREFLASH\t\tTS\tPLAYTEM1\n\n\t\tCAF\tREDOMASK\t# FLASH AND PERMIT\n\t\tTCF\tGOFLASH2\n\nREGODSP\t\tTS\tPLAYTEM1\n\n\t\tCAF\tBIT14\n\t\tTCF\tGOFLASH2\n\n# Page 1469\n\nREGODSPR\tTS\tPLAYTEM1\n\t\tCAF\tBIT14\n\t\tTCF\tGODSPR2\n\nCLOCPLAY\tTS\tPLAYTEM1\n\t\tCAF\tCLOCKCON\n\t\tTCF\tGOFLASH2\nGOFLASH\t\tTS\tPLAYTEM1\n\n\t\tCAF\tBIT4\t\t# LEAVE ONLY FLASH BIT SET\nGOFLASH2\tTS\tPLAYTEM4\n\n\t\tTC\tSAVELOCS\n\n\t\tRELINT\n\n\t\tTCF\tMAKEPLAY\t# BRANCH DIRECT WITH NO SEPARATE JOB CALL\n\nPRIODSPR\tTS\tPLAYTEM1\n\n\t\tCAF\tBITS7+4\n\t\tTCF\tGODSPRS\n\nPRIODSP\t\tTS\tPLAYTEM1\n\nSETPRIO\t\tCAF\tBITS7+4\n\t\tTCF\tGOFLASH2\n\nMAKEPRIO\tCAF\tZERO\n\t\tTS\tCOPINDEX\n\n\t\tTC\tLINUSCHR\n\t\tTCF\tHIPRIO\t\t# LINUS RETURN\n\t\tCA\tFLAGWRD4\n\t\tMASK\tOCT20100\t# IS PRIO IN ENDIDLE OR BUSY\n\t\tCCS\tA\n\t\tTCF\tPRIOBORT\t# YES, ABORT\n\nHIPRIO\t\tCA\tFLAGWRD4\t# MARK ACTIVE\n\t\tMASK\tOCT40400\n\t\tEXTEND\n\t\tBZF\tASKIFNRM\t# NO\n\nSETMARK\t\tCAF\tZERO\n\t\tTCF\tJOBXCHS\n\nASKIFNRM\tCA\tFLAGWRD4\t# NORMAL ACTIVE\n\t\tMASK\tOCT10200\t# BITS 13+8\n\t\tEXTEND\n# Page 1470\n\t\tBZF\tOKTOCOPY\t# NO\n\nSETNORM\t\tCAF\tONE\n\t\tTCF\tJOBXCHS\n\nOKTOCOPY\tTC\tCOPYNORM\n\t\tTC\tWITCHONE\n\n\t\tTC\tJOBWAKE\n\n\t\tTC\tXCHTOEND\n\nREDOPRIO\tCA\tTIME1\t\t# SAVE TIME PRIODSP SENT OUT\n\t\tTS\tPRIOTIME\n\nKEEPPRIO\tCAF\tZERO\t\t# START UP PRIO DISPLAY\n\t\tTCF\tPRIOPLAY\n\nMAKEPLAY\tCA\tPRIORITY\t# SAVE USERS PRIORITY\n\t\tMASK\tPRIO37\n\t\tTS\tUSERPRIO\n\n\t\tCAF\tPRIO33\t\t# RAISE PRIORITY FOR FAST JOBS AFTER WAKE\n\t\tTC\tPRIOCHNG\n\n\t\tCA\tPLAYTEM4\t# IS IT MARK OR PRIO OR NORM\n\t\tMASK\tBITS15+7\n\t\tCCS\tA\n\t\tTCF\tMAKEPRIO\t# ITS PRIO\n\t\tTCF\tIFLEGAL\n\t\tTCF\tMAKEMARK\t# ITS MARK\n\nIFLEGAL\t\tCAF\tTWO\n\t\tTS\tCOPINDEX\n\n\t\tTC\tLINUSCHR\n\n\t\tTCF\tOKTOPLAY\t# LINUS RETURN\n\t\tCS\tEBANKTEM\n\t\tMASK\tBIT4\n\t\tCCS\tA\n\t\tTCF\tOKTOPLAY\t# NO\n\n\t\tCA\tFLAGWRD4\t# WAS NORM ASLEEP\n\t\tMASK\tNBUSMASK\t# ARE ANY NORMS ASLEEP\n\t\tEXTEND\n\t\tBZF\tOKTOPLAY\t# NO\n\nPRIOBORT\tTC\tPOODOO\n\t\tOCT\t1502\n# Page 1471\n\nOKTOPLAY\tTC\tCOPIES2\n\n\t\tCA\tUSERPRIO\n\t\tEXTEND\n\t\tROR\tSUPERBNK\n\t\tTS\tRESTREG\n\n\t\tCA\tFLAGWRD4\t# PRIO OR MARK GOING\n\t\tMASK\tPMMASK\n\t\tCCS\tA\n\t\tTCF\tGOSLEEPS\t# YES\n\n\t\tTCF\t+2\n\t\tTCF\tGOSLEEPS\t# MARK GOING\n\n# COULD PUT NORM BUSY CHECK HERE TO SAVE TIME\n\n\t\tTC\tWITCHONE\t# IS IT NVSUB BUSY, ENDIDLE OR NOONE\n\t\tTC\tJOBWAKE\n\n\t\tTC\tXCHTOEND\n\nPLAYJUM1\tCAF\tTWO\nPRIOPLAY\tTS\tCOPINDEX\n\n\t\tTCF\tGOPLAY\n\nEXDSPRET\tTS\tPLAYTEM1\n\n\t\tCAF\tBIT15+6\n\t\tTCF\tGOFLASH2\n\nGOPERF1\t\tTS\tNORMTEM1\t# STORE DESIRED CHECKLIST VALUE\n\t\tCAF\tV01N25\t\t# USED TO DISPLAY CHECKLIST VALUE IN R1\n\nGOPERFS\t\tTS\tPLAYTEM1\n\n\t\tCAF\tPERFMASK\t# LEAVE ONLY FLASH, PERFORM, BLANKING\n\t\tTCF\tGOFLASH2\n\nGOPERF2\t\tTS\tPLAYTEM1\t# DESIRED VERB-NOUN TO DISPLAY R1,R2,R3\n\n\t\tCAF\tPERF2MSK\n\t\tTCF\tGOFLASH2\n\nGOPERF4\t\tTC\tPURRS4\n\n\t\tTCF\tGOFLASH2\n\nGOFLASHR\tTS\tPLAYTEM1\n# Page 1472\n\t\tCAF\tBIT4\t\t# LEAVE ONLY FLASH BIT SET\nGODSPRS\t\tTS\tPLAYTEM4\n\n\t\tCAF\tTHREE\n\nGODSPRS1\tINHINT\t\t\t# IMMEDIATE RETURN IS CALL CADR +4\n\t\tTS\tRUPTREG3\n\n\t\tCA\tPRIORITY\t# MAKE DISPLAY ONE HIGHER THAN USER\n\t\tMASK\tPRIO37\n\t\tTS\tNEWPRIO\n\n\t\tCA\tPLAYTEM4\t# IS THIS A FLASHING R DISPLAY\n\t\tMASK\tBIT4\n\t\tCCS\tA\n\t\tTCF\tVACDSP\t\t# YES, MAKE DSPLAY JOB A VAC\n\t\tCA\tNEWPRIO\t\t# NO, MAKE DSPLAY JOB A NOVAC\n\t\tTC\tNOVAC\n\t\tEBANK=\tWHOCARES\n\t\t2CADR\tMAKEPLAY\n\n\t\tTCF\tBOTHJOBS\n\nVACDSP\t\tCA\tBBANK\n\t\tEXTEND\n\t\tROR\tSUPERBNK\n\t\tTS\tL\n\t\tCAF\tMAKEGEN\n\t\tTC\tSPVAC\n\nBOTHJOBS\tTC\tSAVELOCS\t# COPY TEMPS INTO PERMANENT REGISTERS\n\n\t\tEXTEND\t\t\t# SAVE NVWORD AND USERS MPAC +2\n\t\tDCA\tMPAC +1\n\t\tINDEX\tLOCCTR\n\t\tDXCH\tMPAC +1\n\n\t\tEXTEND\t\t\t# SAVE USERS CADR, FLAGS AND EBANK\n\t\tDCA\tMPAC +3\n\t\tINDEX \tLOCCTR\n\t\tDXCH\tMPAC +3\n\n\t\tCA\tLOCCTR\n\t\tTS\tMPAC +5\n\t\tTC\tSAVELOCR\n\t\tRELINT\n\t\tTCF\tBANKJUMP\t# CALL CADR +4\n\n# Page 1473\nGOPERF1R\tTS\tNORMTEM1\t# DESIRED CHECKLIST VALUE\n\n\t\tCAF\tV01N25\t\t# DISPLAYS CHECKLIST VALUE IN R1\n\nGOPERFRS\tTS\tPLAYTEM1\n\n\t\tCAF\tPERFMASK\t# LEAVE ONLY FLASH, PERFORM, BLANKING\n\t\tTCF\tGODSPRS\n\nGOPERF2R\tTS\tPLAYTEM1\t# DESIRED VERB-NOUN TO DISPLAY R1,R2,R3\n\n\t\tCAF\tPERF2MSK\n\t\tTCF\tGODSPRS\n\nGOPERF4R\tTC\tPURRS4\n\n\t\tTCF\tGODSPRS\n\nPURRS4\t\tTS\tOPTION1\t\t# DESIRED OPTION CODE\n\n\t\tCAF\tV04N06\n\t\tTS\tPLAYTEM1\n\n\t\tCAF\tPERF4MSK\t# FLASH, PERFORM AND EBANK R3\n\t\tTC\tQ\n\nSAVELOCS\tINHINT\n\n\t\tCS\tOCT3400\t\t# EBANK BITS\n\t\tMASK\tPLAYTEM4\n\t\tAD\tEBANK\n\t\tTS\tPLAYTEM4\n\nSAVELOCR\tLXCH\tQ\n\n\t\tTC\tMAKECADR\n\t\tTS\tPLAYTEM3\n\n\t\tAD\tRUPTREG3\t# NOT USED FOR NON R ROUTINES\n\t\tTC\tL\n\nCOPYNORM\tCAF\tZERO\nCOPIES\t\tTS\tCOPINDEX\nCOPIES2\t\tINHINT\n\t\tCA\tPLAYTEM4\t# FLAGWORD\n\t\tINDEX\tCOPINDEX\n\t\tTS\tEBANKSAV\t# EQUIV TO DSPFLG\n\t\tMASK\tCADRMASK\t# FLASH AND GODSPRET\n\t\tEXTEND\n# Page 1474\n\t\tBZF\tSKIPADD\n\n\t\tCA\tPLAYTEM3\n\t\tINDEX\tCOPINDEX\n\t\tTS\tCADRFLSH\n\nSKIPADD\t\tCA\tPLAYTEM1\t# VERB NOUN\n\t\tINDEX\tCOPINDEX\n\t\tTS\tNVWORD\n\n\t\tTCF\tRELINTQ\n\nGOSLEEPS\tINDEX\tCOPINDEX\n\t\tCA\tPRIOOCT\n\t\tMASK\tWAITMASK\n\t\tTC\tUPENT2\nWAITMASK\tOCT\t3004\n\t\tCS\tONE\n\t\tAD\tCOPINDEX\n\t\tTS\tFACEREG\n\nXCHSLEEP\tINDEX\tFACEREG\n\t\tCAF\tWAKECADR\n\t\tINHINT\n\t\tTC\tJOBWAKE\t\t# FIND CADR IN JOB AREA\n\n\t\tTC\tXCHTOEND\t# CAUSES AWAKENED JOB TO GO TO ENDOFJOB\n\n\t\tINDEX\tFACEREG\t\t# REPLACE SAME CADR BUT NEW JOB AREA\n\t\tCAF\tWAKECADR\n\t\tTCF\tJOBSLEEP\n\nJOBXCHS\t\tTS\tFACEREG\t\t# CONTROLS TYPE OF DISPLAY PUT TO SLEEP\n\t\tTC\tWITCHONE\n\t\tTC\tJOBWAKE\n\t\tCA\tFACEREG\n\t\tINDEX\tLOCCTR\n\t\tTS\tFACEREG\n\n\t\tCAF\tXCHQADD\n\t\tTC\tXCHNYLOC\n\n\t\tINDEX\tFACEREG\n\t\tCA\tMARKOCT\n\t\tMASK\tIDLESLEP\n\t\tTC\tDOWNENT2\nIDLEMASK\tOCT\t74004\t\t# * DONT MOVE\n\t\tINDEX\tFACEREG\t\t# BIT SHOWS PRIO INTERRUPTED NORM OR MARK\n\t\tCA\tBIT5\t\t# BIT5 FOR MARK, BIT4 FOR NORMAL\n# Page 1475\n\t\tAD\tFOUR\n\t\tTC\tUPENT2\t\t# FLAG ROUTINE DOES RELINT\nXCHQADD\t\tGENADR\tXCHSLEEP\t# * DONT MOVE\n\t\tCA\tFLAGWRD4\n\t\tMASK\tBIT3\t\t# IF BIT3 THEN MARK OVER NORM\n\t\tCCS\tA\nGENMARK\t\tTC\tMARKPLAY\t# USED AS GENADR FOR JOBWAKE\n\t\tTCF\tOKTOCOPY\n\nMARKWAKE\tCAF\tZERO\nWAKEPLAY\tTS\tTEMPOR2\n\n\t\tINDEX\tTEMPOR2\n\t\tCA\tBITS5+11\n\t\tAD\tFOUR\n\t\tTC\tDOWNENT2\nMARKFMSK\tOCT\t40010\t\t# ***DONT MOVE\n\n\t\tINDEX\tTEMPOR2\n\t\tCAF\tWAKECADR\n\t\tINHINT\n\t\tTC\tJOBWAKE\n\n\t\tTCF\tENDRET\n\n# \tALL .1 RESTARTS BRANCH DIRECTLY TO INITDSP. NORMAL DISPLAYS ARE THE ONLY DISPLAYS ALLOWED TO USE .1 RESTARTS\n# INITDSP FIRST RESTORES THE EBANK AND THE SUPERBANK TO THE MOST RECENT NORMAL EBANK AND SUPERBANK.\n# \tIF THE MOST RECENT NORMAL DISPLAY REQUEST WAS NOT FINISHED, CONTROL IS SENT BACK TO THE LAST NORMAL USER.\n# OTHERWISE THE NORMAL DISPLAY SET UP IN THE NORMAL DISPLAY REGS IS STARTED UP IMMEDIATELY.\n\nINITDSP\t\tCA\tEBANKTEM\t# RESTORE MOST RECENT NORMAL EBANK\n\t\tTS\tEBANK\n\n\t\tCA\tRESTREG\t\t# SUPERBANK AND JOB PRIORITY\n\t\tTC\tSUPERSW\t\t# RESTORE SUPERBANK\n\n\t\tMASK\tPRIO37\n\t\tTC\tPRIOCHNG\n\n\t\tCS\tTHREE\n\t\tAD\tTEMPFLSH\n\t\tTCF\tBANKJUMP\n\nPINBRNCH\tRELINT\t\t\t# FOR GOPIN USERS\n\t\tCA\tMARK2PAC\t# NEEDED TO SAVE MPAC +2 FOR MARK USERS\n\t\tTS\tMPAC +2\t\t# ONLY\n\n\t\tCA\tFLAGWRD4\t# PINBRANCH CONDITION\n\t\tMASK\tPINMASK\n\t\tCCS\tA\n# Page 1476\n\t\tTCF\t+3\n\t\tTCF\tERASER\t\t# ** NOTHING IN ENDIDLE\n\t\tTCF\tMARKPLAY\n\nNORMBNCH\tTC\tUPFLAG\t\t# SET PINBRANCH BIT\n\t\tADRES\tPINBRFLG\n\n\t\tCAF\tBIT14\t\t# PRIO INTERRUPTED\n\t\tMASK\tFLAGWRD4\n\t\tCCS\tA\n\t\tTCF\tKEEPPRIO\n\n\t\tTCF\tPLAYJUM1\n\nNVDSP\t\tTC\tCOPYPACS\n\n\t\tCA\tTEMPOR2\t\t# SET UP BLANK BITS FOR NVMONOPT IN CASE\n\t\tMASK\tSEVEN\t\t# USER REQUESTS BLANKING MONITOR\n\t\tTS\tL\n\n\t\tCS\tBIT13\n\t\tINDEX\tCOPINDEX\n\t\tMASK\tDSPFLG\n\t\tINDEX\tCOPINDEX\n\t\tTS\tDSPFLG\n\n\t\tMASK\tBIT8\t\t# BIT8 SET IF DEC MARK PERFORM DISPLAY\n\t\tTS\tTEM1\n\n\t\tCA\tMPAC +2\n\t\tTS\tMPAC2SAV\n\n\t\tTS\tMARK2PAC\t# * FOR DISK ONLY *\n\t\tINDEX\tCOPINDEX\n\t\tCCS\tNVWORD\n\t\tTCF\tNVDSP1\n\t\tTCF\tCLEANEND\n\t\tCS\tMARKNV\n\t\tTS\tMARKNV\t\t# IN CASE MARKPLAY AWAKENED AFTER SLEEPING\n\t\tMASK\tLOW7\n\t\tAD\tV05N00M1\n\t\tAD\tTEM1\nNVDSP1\t\tAD\tONE\nNV50DSP\t\tTC\tNVMONOPT\n\t\tTCF\tREST\t\t# IF BUSY\n\t\tTC\tFLASHOFF\t# IN CASE OF EXTENDED VERB NON FLASH\n\n\t\tTC\tCOPYTOGO\t# MPACS DESTROYED BY NVSUB\n\t\tTC\tDOWNFLAG\t# UNSET SLEEPING BITS\n\t\tADRES\tMRKNVFLG\n# Page 1477\n\t\tTC\tDOWNFLAG\n\t\tADRES\tNRMNVFLG\n\t\tTC\tDOWNFLAG\n\t\tADRES\tPRONVFLG\nBLANKCHK\tCA\tTEMPOR2\t\t# BLANK BITS 1,2,3 IF SET\n\t\tTC\tBLANKSUB\n\t\tTCF\tNVDSP\nPERFCHEK\tCAF\tBIT5\t\t# BIT 5 FOR PERFORM\n\t\tMASK\tTEMPOR2\n\t\tCCS\tA\t\t# IS THIS A GOPERF DISPLAY\n\t\tTCF\t1STOR2ND\t# YES\n\nGOANIDLE\tCAF\tBIT4\n\t\tMASK\tTEMPOR2\n\t\tCCS\tA\n\t\tTCF\tFLASHSUB\t# IT IS\n\n\t\tCS\tTEMPOR2\t\t# IS THIS A GODSPRET\n\t\tMASK\tBIT6\n\t\tCCS\tA\n\t\tTCF\tISITN00\n\n\t\tINDEX\tCOPINDEX\n\t\tCA\tCADRFLSH\n\t\tTS\tMPAC +3\n\t\tTCF\tENDIT\n\nISITN00\t\tINDEX\tCOPINDEX\t# IS THIS A PASTE\n\t\tCA\tNVWORD\n\t\tMASK\tLOW7\t\t# CHECK MADE FOR PINBRNCH AND PRIO ON MARK\n\t\tEXTEND\n\t\tBZF\tFLASHSUB\t# YES, ASSUME PASTE ALWAYS ON FLASH\n\n\t\tTCF\tENDOFJOB\t# NOT FLASH, NOT GOPERF, THEREFORE EXIT\n\n1STOR2ND\tCA\tTEMPOR2\n\t\tMASK\tBIT13\n\t\tCCS\tA\n\t\tTCF\tGOANIDLE\t# SECOND\n\n\t\tCA\tBIT13\n\t\tINDEX\tCOPINDEX\n\t\tADS\tDSPFLG\n\n\t\tZL\n\t\tEXTEND\t\t\t# IS IT MARK\n\t\tBZMF\tMARKPERF\t# YES\n\t\tMASK\tBIT12\n\t\tEXTEND\n# Page 1478\n\t\tBZF\tV50PASTE\n\t\tCS\tNVWORD1\t\t# NVOWRD1= -0 IS V97. NVWORD1= -400 IS V99\n\t\tAD\tV97N00\n\t\tTCF\tNV50DSP\nV50PASTE\tCAF\tV50N00\n\t\tTCF\tNV50DSP\t\t# DISPLAY SECOND PART OF GOPERF\n\nWITCHONE\tCS\tBIT5\t\t# TURN OFF KEY RELEASE LIGHT\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\n\n\t\tCA\tFLAGWRD4\n\t\tMASK\tNVBUSMSK\t# IS IT NVSUB ASLEEP\n\t\tCCS\tA\n\t\tCAF\tONE\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tINDEX\tL\n\t\tXCH\tCADRSTOR\n\n\t\tINHINT\n\t\tTC\tQ\n\nXCHTOEND\tCAF\tENDINST\t\t# TC ENDOFJOB REPLACES GENADR IN LOC FOR\nXCHNYLOC\tXCH\tLOCCTR\t\t# WAS THIS ADDRESS SLEEPING\n\t\tEXTEND\n\t\tBZMF\tRELINTQ\t\t# NO\n\t\tXCH\tLOCCTR\t\t# YES\n\t\tINDEX\tLOCCTR\n\t\tTS\tLOC\n\nRELINTQ\t\tRELINT\n\t\tTC\tQ\t\t# BACK TO USER\n\nCLEANEND\tCAF\tPRIO32\t\t# ONE LOWER THAN DISPLAYS SLEEPING\n\t\tTC\tFINDVAC\n\t\tEBANK=\tNVSAVE\n\t\t2CADR\tJAMTERM\n\n\t\tTCF\tFLASHSUB +1\n\nISITPRIO\tCA\tFLAGWRD4\n\t\tMASK\tITISMASK\t# IS PINBRFLG, MARKIDFLG SET\n\t\tEXTEND\n\t\tBZF\tPRIOBORT\n\t\tTCF\tENDOFJOB\nREST\t\tCCS\tCADRSTOR\t# IS SOMEONE IN ENDIDLE\n\t\tTCF\tENDOFJOB\t# YES\n# Page 1479\n\t\tTCF\tRESTSLEP\n\n\t\tTCF\tENDOFJOB\n\nRESTSLEP\tCA\tGENMASK\t\t# SET NVSLEEP BITS\n\t\tMASK\tASTROMSK\n\t\tTC\tUPENT2\nOCT24100\tOCT\t24100\t\t# *** DONT MOVE\n\n\t\tINDEX\tCOPINDEX\n\t\tCAF\tNVCADR\n\t\tTC\tNVSUBUSY\t# BUSY OR ABORT IF ILLEGAL\n\nFLASHSUB\tTC\tFLASHON\n\n\t\tCA\tCOPINDEX\t# COPINDEX DESTROYED BY ENDIDLE\n\t\tTS\tCOPMPAC\n\n\t\tCA\tGENMASK\n\t\tMASK\tIDLEMASK\n\t\tTC\tUPENT2\nITISMASK\tOCT\t40040\t\t# *** ENDIDLE ALLOW *** DONT MOVE\n\n\t\tCA\tR1SAVE\t\t# IS THIS A REPEAT AND RETURN DISPLAY\n\t\tINDEX\tCOPINDEX\n\t\tMASK\tBIT3\n\t\tCCS\tA\n\t\tTCF\tUNSETR1\t\t# YES\n\n\t\tCCS\tCADRSTOR\t# SEE IF SOMEONE ALREADY IN ENDIDLE\n\t\tTCF\tISITPRIO\n\t\tTCF\t+2\n\t\tTCF\tISITPRIO\n\n\t\tTC\tENDIDLE\nIDLERET1\tTCF\tTERMATE\n\n\t\tTCF\tPROCEED\t\t# ENDIDLE RETURNS HERE ON PROCEED\n\n\t\tCS\tLOWLOAD\n\t\tAD\tMPAC\t\t# VERBREG\n\t\tEXTEND\n\t\tDIM\tA\n\t\tEXTEND\n\t\tBZF\tLOADITIS\t# V21 OR V22 OR V23 ON DSKY\n\nOKTOENT\t\tCAF\tTWO\nENDOUT\t\tTS\tOUTHERE\n\t\tCA\tFLAGWRD4\t# CHECK NATURE OF ENDIDLE RETURN\n\t\tMASK\tOCT60000\n# Page 1480\n\t\tCCS\tA\n\t\tTCF\tTIMECHEK\t# PRIO ENDIDLE RETURN\n\t\tTCF\tNORMRET\t\t# NORMAL ENDIDLE RETURN\n\t\tTCF\tMARKRET\t\t# MARK ENDIDLE RETURN\n\nTIMECHEK\tCS\tTIME1\n\t\tAD\tPRIOTIME\n\t\tCCS\tA\n\t\tCOM\n\t\tAD\tOCT37776\n\t\tAD\tONE\n\t\tAD\t-2SEC\n\t\tEXTEND\n\t\tBZMF\tKEEPPRIO\n\n\t\tTCF\tNORMRET\n\nNORMWAKE\tCAF\tONE\n\t\tTCF\tWAKEPLAY\n\nENDRET\t\tCCS\tOUTHERE\n\t\tAD\tONE\n\t\tTCF\t+2\t\t# NORMAL ENDIDLE EXIT\n\t\tTCF\tENDOFJOB\n\t\tINDEX\tCOPMPAC\n\t\tAD\tCADRFLSH\n\t\tTS\tMPAC +3\n\n\t\tCA\tGENMASK\t\t# REMOVE ENDIDLE AND PINBRANCH BITS\n\t\tMASK\tPINIDMSK\n\t\tTC\tDOWNENT2\nPINIDMSK\tOCT\t74044\t\t# *** DONT MOVE\n\n\t\tCS\tTHREE\t\t# BLANK EVERYTHING EXCEPT MM\n\t\tTC\tNVSUB\n\t\tTCF\t+1\n\nENDIT\t\tCA\tUSERPRIO\t# RETURN TO USERS PRIORITY\n\t\tMASK\tPRIO37\n\t\tTC\tPRIOCHNG\n\t\tCA\tMPAC +3\n\t\tTCF\tBANKJUMP\n\nUNSETR1\t\tINDEX\tCOPINDEX\t# RESET REPEAT AND RETURN REQUEST\n\t\tCS\tBIT3\n\t\tMASK\tR1SAVE\n\t\tTS\tR1SAVE\n\t\tCAF\tZERO\t\t# *** 205 ONLY MARKBRAN USERS IN\n\t\tTC\tSUPERSW\t\t# SUPERBANK 0\n# Page 1481\n\n-1\t\tCAF\tTHREE\t\t# RETURN TO USERS IMMEDIATE RETURN LOC\nIMMEDRET\tINDEX\tCOPINDEX\n\t\tAD\tCADRFLSH\n\t\tTCF\tBANKJUMP\n\nTERMATE\t\tCAF\tZERO\t\t# ASTRONAUT TERMINATE (V34) RETURNS TO\n\t\tTCF\tENDOUT\n\nLINUSCHR\tCS\tPLAYTEM4\t# IS THIS A LINUS\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tTCF\tQ+1\t\t# NO\n\t\tCS\tPLAYTEM3\t# YES, IS IT ALREADY IN ENDIDLE\n\t\tINDEX\tCOPINDEX\n\t\tAD\tCADRFLSH\n\t\tEXTEND\n\t\tBZF\t+2\t\t# YES\n\n\t\tTC\tQ\t\t# NO\n\t\tCCS\tDSPLOCK\t\t# IS THE ASTRONAUT BUSY\n\t\tTC\tENDOFJOB\t# END THE NEW DISPLAY, ITS ALREADY ACTIVE\n\t\tTC\tQ\n\n# MORE LOGIC COULD BE INCORPORATED HERE TO MAKE SURE A RECYCLE IS A RECYCLE AND CONVERSELY THAT A LOAD IS A LOAD.\n\nPROCEED\t\tCAF\tONE\t\t# ASTRONAUT PROCEED (V33) RETURNS\n\t\tTCF\tENDOUT\n\n# \tLASTPLAY CHECKS TO SEE IF (1) THE LAST NORMAL DISPLAY WAS EITHER INTERRUPTED BY A PRIO OR A MARK (MARK\n# COULD ONLY HAPPEN DURING PINBRANCH) OR IF (2) THE LAST NORMAL DISPLAY WAS REQUESTED WHILE A HIGHER PRIORITY\n# DISPLAY WAS GOING, RESULTING IN THE NORMAL BEING PUT TO SLEEP.\n#\n# \tIF EITHER OF THE ABOVE 2 CONDITIONS EXISTS, THE NORMAL DISPLAY IS AWAKENED TO GO TO PLAYJUM1 WHICH STARTS\n# UP THE MOST RECENT VALID NORMAL DISPLAY.  IF THESE 2 CONDITIONS DO NOT EXIST, CONTROL GOES TO PLAYJUM1 WHICH IS\n# STARTED IMMEDIATELY WITH THE ASSUMPTION THAT THE MOST RECENT NORMAL DISPLAY IS ALREADY IN-ENDIDLE (DURING A\n# PINBRNCH) OR THAT A RESTART HAS OCCURRED AND THE DISPLAY CAN BE STARTED AS A .1 RESTART.\n\nMARKRET\t\tCS\tSIX\n\t\tMASK\tFLAGWRD4\n\t\tINHINT\t\t\t# *** MAY MOVE DISPLAY FLAGWORD OUT OF\n\t\tTS\tFLAGWRD4\n\n\t\tRELINT\t\t\t# INHINT REALM\n\t\tTCF\tENDRET\n\nMARKOVER\tCAF\tMINUS1\t\t# RUPTREG2 IS - MEANS ENDOFJOB TO ENDRET\n\t\tTS\tOUTHERE\n\t\tCA\tFLAGWRD4\t# IS ENDIDFLG SET\n\t\tMASK\tPRIO30\t\t# IS NORMAL OR PRIO IN ENDIDLE\n\t\tCCS\tA\n# Page 1482\n\t\tTCF\tNORMBNCH\n\nNORMRET\t\tCA\tFLAGWRD4\t# IS MARK SLEEPING\n\t\tMASK\tBITS5+11\t# OR WAITING\n\t\tCCS\tA\n\t\tTCF\tMARKWAKE\n\n\t\tCA\tFLAGWRD4\t# NO\n\t\tMASK\tBITS4+10\t# IS NORMAL INTERRUPTED OR WAITING\n\t\tCCS\tA\n\t\tTCF\tNORMWAKE\t# YES\n\n\t\tCA\tEBANKTEM\t# NO, WAS IT A FLASH REQUEST\n\t\tMASK\tOCT50\t\t# OR A GODSPRET\n\t\tCCS\tA\n\t\tTCF\tENDRET\t\t# YES\n\t\tCA\tNVSAVE\n\t\tEXTEND\n\t\tBZF\tENDRET\n\n\t\tCAF\tPRIO15\n\t\tINHINT\n\t\tTC\tNOVAC\n\t\tEBANK=\tNVWORD\n\t\t2CADR\tPLAYJUM1\n\n\t\tTCF\tENDRET\n\nMARSLEEP\tCA\tFLAGWRD4\t# IS MARK ALREADY ON\n\t\tMASK\tBITS5+11\n\t\tCCS\tA\n\t\tTCF\tENDOFJOB\t# YES\n\t\tTCF\tGOSLEEPS\n\nLOADITIS\tINDEX\tCOPMPAC\n\t\tCA\tNVWORD\n\t\tMASK\tLOW7\n\t\tCOM\n\t\tAD\tMPAC +1\t\t# NOUNREG\n\t\tEXTEND\n\t\tBZF\tOKTOENT\t\t# NO, THEN LOAD IS VALID\n\t\tTCF\tPINBRNCH\t# YES, ACCEPT LOAD BUT ASK FOR LAST AGAIN\n\nERASER\t\tCS\tTHREE\t\t# BLANK EVERYTHING EXCEPT MM\n\t\tTC\tNVSUB\n\t\tTCF\tENDOFJOB\n\t\tTCF\tENDOFJOB\n\nPERFMASK\tOCT\t0036\t\t# FLASH,PERFORM,BLANK R2 AND R3\n# Page 1483\nV01N25\t\tVN\t00125\nV06N07\t\tVN\t00607\t\t# GOPERF3 VN DISPLAY BEFORE V50\nV50N00\t\tVN\t5000\nPERF2MSK\tOCT\t00030\t\t# FLASH, PERFORM\nV04N06\t\tVN\t00406\nPERF4MSK\tOCT\t14\t\t# FLASH, BLANK R3\nGOAGIN\t\tEQUALS\tPINBRNCH\nREDOMASK\tOCT\t20010\t\t# BITS 4 AND 14\nMARK3MSK\tOCT\t40230\t\t# MARK,DECIMAL NOUN, PERFORM,FLASH\nMARK4MSK\tOCT\t40036\t\t# MARK,PERFORM,FLASH,BLANK 2 AND 3\nNVCADR\t\tCADR\tREDOPRIO\nWAKECADR\tCADR\tMARKPLAY\n\t\tCADR\tPLAYJUM1\n\nOCT3400\t\tOCT\t3400\t\t# EBANK MASK\nNBUSMASK\tOCT\t11210\nPMMASK\t\tOCT\t66521\nVERBMASK\t=\tMID7\t\t# (OCT 37600)\nV05N00M1\tOCT\t1177\t\t# V05 MINUS ONE\nGOXDSP\t\tEQUALS\tGOMARK\nGOXDSPR\t\tEQUALS\tGOMARKR\nGOXDSPF\t\tEQUALS\tGOMARKF\nGOXDSPFR\tEQUALS\tGOMARKFR\nENDEXT\t\tEQUALS\tENDMARK\nMPAC2SAV\tEQUALS\tBANKSET\nNVBUSMSK\tOCT\t700\nASTROMSK\tOCT\t704\nMPERFMSK\tOCT\t40030\t\t# BIT 15,5,4 FOR MARK,PERFORM,FLASH\nOCT34300\tOCT\t34300\nBITS15+7\tOCT\t40100\nBITS7+4\t\tOCT\t110\nDSPFLG\t\tEQUALS\tEBANKSAV\nMARKFLAG\tEQUALS\tMARKEBAN\nSAVEFLAG\tEQUALS\tEBANKTEM\nBITS5+11\tOCT\t2020\t\t# * DONT MOVE\nBITS4+10\tOCT\t1010\t\t# * DONT MOVE\nLOWLOAD\t\tDEC\t22\nBUSYMASK\tOCT\t77730\nCADRMASK\tOCT\t50\nPINMASK\t\tEQUALS\t13,14,15\nGOPLAY\t\tEQUALS\tNVDSP\nPRIOSAVE\tEQUALS\tR1SAVE\nCOPMPAC\t\tEQUALS\tMPAC +3\nTEMPOR2\t\tEQUALS\tMPAC +4\nOUTHERE\t\tEQUALS\tMPAC +5\nCOPINDEX\tEQUALS\tLOC\nUSERPRIO\tEQUALS\tMODE\nGENMASK\t\tEQUALS\tMPAC +6\nPRIOOCT\t\tOCT\t20144\t\t# PRIO\nMARKOCT\t\tOCT\t42424\t\t# MARK\n# Page 1484\n\t\tOCT\t11254\t\t# NORM\n\nIDLESLEP\tOCT\t74704\nOCT67777\tOCT\t67777\nLINUS\t\tEQUALS\tBLANKET\nFACEREG\t\tEQUALS\tMPAC\nPLAYTEM1\tEQUALS\tMPAC +1\nPLAYTEM3\tEQUALS\tMPAC +3\nPLAYTEM4\tEQUALS\tMPAC +4\nOCT40420\tOCT\t40420\nMAKEGEN\t\tGENADR\tMAKEPLAY\nOCT10200\tOCT\t10200\nV97N00\t\tVN\t09700\t\t# PASTE FOR V97 OR V99\nOCT20100\tOCT\t20100\nCLOCKCON\tOCT\t24030\t\t# FLASH, PERFORM, V99 OR V97 PASTE,REFLASH\n\n\n"
  },
  {
    "path": "Comanche055/DOWN-TELEMETRY_PROGRAM.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     DOWN-TELEMETRY_PROGRAM.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 1093-1102\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-08 RSB\tAdapted from Colossus249/ file of same name\n#\t\t\t\tand page images. Corrected various typos\n#\t\t\t\tin the transcription of program comments,\n#\t\t\t\tand these should be back-ported to\n#\t\t\t\tColossus249.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 1093\n# PROGRAM NAME- DOWN TELEMETRY PROGRAM\n# MOD NO.- 0\t\tTO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE\n#\t\t\tPURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE.\n#\t\t\tTHIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS.  REFER TO DOWNLINK\n#\t\t\tLISTS LOG SECTION FOR MORE DETAILS.  HOWEVER THIS CHANGES WILL NOT AFFECT THE GROUND PROCESSING\n#\t\t\tOF DOWN TELEMETRY DATA.\n# MOD BY-  KILROY, SMITH, DEWITT\n# DATE-\t   02OCT67\n# AUTHORS- KILROY, SMITH, DWWITT, DEWOLF, FAGIN\n# LOG SECTION- DOWN-TELEMETRY PROGRAM\n# FUNCTIONAL DESCRIPTION- THIS ROUTINE IS INITIATED BY TELEMETRY END\n#\tPULSE FROM THE DOWNLINK TELEMETRY CONVERTER.  THIS PULSE OCCURS\n#\tAT 50 TIMES PER SEC(EVERY 20 MS) THEREFORE DODOWNTM IS\n#\tEXECUTED AT THESE RATES.  THIS ROUTINE SELECTS THE APPROPRIATE\n#\tAGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT\n#\tCHANNELS 34 AND 35.  THE INFORMATION IS THEN GATED OUT FROM THE\n#\tLGC IN SERIAL FASHION.\n#\tTHIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST.  SINCE DOWNRUPTS\n#\tOCCUR EVERY 20MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN\n#\tCHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE\n# \tOF SENDING 200 AGC WORDS EVERY 2 SECONDS.\n# CALLING SEQUENCE- NONE\n#\tPROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A\n#\tRESULT OF A DOWNRUPT.  CONTROL IS RETURNED VIA TCF RESUME WHICH\n#\tIN EFFECT IS A RESUME.\n# SUBROUTINES CALLED- NONE\n# NORMAL EXIT MODE- TCF RESUME\n# ALARM OR ABORT EXIT MODE- NONE\n# RESTART PROTECTION:\n#\tON A FRESH START AND RESTART THE 'STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER(ACTUALLY\n#\tDNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST(I.E., CURRENT CONTENTS OF DNLSTADR).  THIS HAS THE\n#\tEFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN\n#\tTHE RESTART(OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT\n#\tDOWNLIST.\n#\tALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35.\n# DOWNLINK LIST SELECTION:\n#\tTHE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING:\n#\t1. FRESH START\n#\t2. V37EXXE WHERE XX = THE MAJOR MODE BEING SELECTED.\n#\t3. UPDATE PROGRAM(P27)\n#\t4.\tNON-V37 SELECTABLE TYPE PROGRAMS(E.G. AGS INITIALIZATION(SUNDANCE,LUMINARY) AND P61-P62\n#\t\tTRANSITION(COLOSSUS) ETC.).\n# DOWNLINK LIST RULES AND LIMITATIONS:\n#\tREAD SECTION(S) WHICH FOLLOW 'DEBRIS' WRITEUP.\n# OUTPUT- EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS(I.E. 200 LGC\n#\tCOMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK.\n# ERASABLE INITIALIZATION REQUIRED- NONE\n#\t'DNTMGOTO' AND 'DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM.\n# DEBRIS(ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM)-\n#\tLDATALST,DNTMBUFF TO DNTMBUFF +21D,TMINDEX,DNQ.\n# Page 1094\n# (No source on this page of the original assembly listing.)\n\n# Page 1095\n# DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE\n# RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER.\n#\n# NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM:\n# 1. DOWNLISTS.  - DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE\n#    DOWN-TELEMETRY PROGRAM.  THIS IS DONE FOR EASE OF CODING, FASTER\n#    EXECUTION.\n# 2. EACH DOWNLINK LIST CONSISTS OF A CONTROL LIST AND A NUMBER OF\n#    SUBLISTS.\n# 3. A SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER\n#    DOWNLINK LISTS.  ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE\n#    CODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS.\n# 4. SNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENOUS DATA WHICH MUST BE\n#    SAVED IN A BUFFER DURING ONE DOWNRUPT.\n# 5. THE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END\n#    OF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD\n#    IMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER.\n# 6. ALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS\n#    CREATED FOR THE DOWNLIST PROGRAM.\n#    A. 1DNADR\t\t\t1-WORD DOWNLIST ADDRESS.\n#\tSAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT\n#\tHALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY.\n#    B. 2DNADR - 6DNADR\t\tN-WORD DOWNLIST ADDRESS, N = 2 - 6.\n#\tSAME AS 1DNADR, BUT WITH THE 4 UNUSED BITS OF THE ECADR FORMAT\n#\tFILLED IN WITH 0001-0101.  USED TO POINT TO A LIST OF N DOUBLE-\n#\tPRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY.\n#    C. DNCHAN\t\t\tDOWNLIST CHANNEL ADDRESS.\n#\tSAME AS 1DNADR, BUT WITH PREFIX BITS 0111.  USED TO POINT TO\n#\tA PAIR OF CHANNELS FOR DOWN TELEMETRY.\n#    D. DNPTR\t\t\tDOWN TELEMETRY SUBLIST POINTER.\n#\tSAME AS CAF BUT TAGGES AS A CONSTANT.  USED IN CONTROL LIST TO POINT TO A SUBLIST.\n#\tCAUTION--- A DNPTR CANNOT BE USED IN A SUBLIST.\n# 7. THE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E., CONTROL LIST) AND WHEN\n#    A '1DNADR TIME2' IS DETECTED IN THE CONTROL LIST(ONLY).\n# 8. IN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK.\n#\n# DOWNLINK LIST RESTRICTIONS:\n# (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE\n# DONE)\n#\n# 1. SNAPSHOT DOWNLIST:\n#    (A) CANNOT CONTAIN THE FOLLOWING ECADRS(I.E. 1DNADR'S): 0, 400, 1000, 1400, 2000, 2400, 3000, 3400.\n#    (B) CAN CONTAIN ONLY 1DNADR'S\n#\n# 2. ALL DOWNLINKED DATA(EXCEPT CHANNELS) IS PICKED UP BY A <DCA<SO DOWNLINK LISTS CANNOT CONTAIN THE\n#    EQUIVALENT OF THE FOLLOWING ECADRS(I.E. IDNADRS): 377, 777, 1377, 1777, 2377, 2777, 3377, 3777.\n#\n#    (NOTE: THE TERM EQUIVALENT ' MEANT THAT THE IDNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS)\n#\n# 3. CONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777\n# Page 1096\n# 4. THE '1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINK PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE\n#    CONTROL SECTION OF THE DOWNLIST.\n#\n# 5. 'DNCHAN 0' CANNOT BE USED.\n#\n# 6. 'DNPTR 0' CANNOT BE USED.\n#\n# 7. DNPTR CANNOT APPEAR IN A SUBLIST.\n#\n#\n#\n#\n# EBANK SETTINGS\n#\tIN THE PROCESS OF SETTING THE EBANK(WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS\n#\t'GARBAGE' INTO BITS15-12 OF EBANK.  HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME\n#\tSIGNIFICANT SOMEDAY IN THE FUTURE.  IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE(BY MASKING ETC.)\n#\tTHAT BITS 15-12 OF EBANK ARE ZERO.\n# INITIALIZATION REQUIRED- TO INTERRUPT CURRENT LIST AND START A NEW ONE..\n#\t1. ADRES OF DOWNLINK LIST INTO DNLSTADR\n#\t2. NEGONE INTO SUBLIST\n#\t3. NEGONE INTO DNECADR\n\n\t\tBANK\t22\n\t\tSETLOC\tDOWNTELM\n\t\tBANK\n\n\t\tEBANK=\tDNTMBUFF\n\n\t\tCOUNT\t05/DPROG\n\nDODOWNTM\tTS\tBANKRUPT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\t\t# SAVE Q\n\t\tCA\tBIT7\t\t# SET WORD ORDER CODE TO 1.  EXCEPTION- AT\n\t\tEXTEND\t\t\t# THE BEGINNING OF EACH LIST THE WORD\n\t\tWOR\tCHAN13\t\t# CODE WILL BE SET BACK TO 0.\n\t\tTC\tDNTMGOTO\t# GO TO APPROPRIATE PHASE OF PROGRAM\n\nDNPHASE1\tCA\tNEGONE\t\t# INITIALIZE ALL CONTROL WORDS\n\t\tTS\tSUBLIST\t\t# WORDS TO MINUS ONE\n\t\tTS\tDNECADR\n\t\tCA\tLDNPHAS2\t# SET DNTMGOTO =0 ALL SUBSEQUENT DOWNRUPTS\n\t\tTS\tDNTMGOTO\t# GO TO DNPHASE2\n\t\tTCF\tNEWLIST\nDNPHASE2\tCCS\tDNECADR\t\t# SENDING OF DATA IN PROGRESS\nDODNADR\t\tTC\tFETCH2WD\t# YES - THEN FETCH THE NEXT 2 SP WORDS\nMINTIME2\t-1DNADR\tTIME2\t\t# NEGATIVE OF TIME2 1DNADR\n\t\tTCF\t+1\t\t# (ECADR OF 3776 + 74001 = 77777)\n\n\t\tCCS\tSUBLIST\t\t# IS THE SUBLIST IN CONTROL\n# Page 1097\n\t\tTCF\tNEXTINSL\t# YES\nDNADRDCR\tOCT\t74001\t\t# DNADR COUNT AND ECADR DECREMENTER\n\nCHKLIST\t\tCA\tCTLIST\n\t\tEXTEND\n\t\tBZMF\tNEWLIST\t\t# IT WILL BE NEGATIVE AT END OF LIST\n\t\tTCF\tNEXTINCL\nNEWLIST\t\tINDEX\tDNLSTCOD\n\t\tCA\tDNTABLE\t\t# INITIALIZE CTLIST WITH\n\t\tTS\tCTLIST\t\t#\tSTARTING ADDRESS OF NEW LIST\n\t\tCS\tDNLSTCOD\n\t\tTCF\tSENDID +3\nNEXTINCL\tINDEX\tCTLIST\n\t\tCA\t0\n\t\tCCS\tA\n\t\tINCR\tCTLIST\t\t# SET POINTER TO PICK UP NEXT CTLIST WORD\n\t\tTCF\t+4\t\t# ON NEXT ENTRY TO PROG.  (A SHOULD NOT =0)\n\t\tXCH\tCTLIST\t\t# SET CTLIST TO NEGATIVE AND PLACE(CODING)\n\t\tCOM\t\t\t# UNCOMPLEMENTED DNADR INTO A.    (FOR LA)\n\t\tXCH\tCTLIST\t\t#                                 (ST IN )\n\t+4\tINCR\tA\t\t#                                 (CTLIST)\n \t\tTS\tDNECADR\t\t# SAVE DNADR\n\t\tAD\tMINTIME2\t# TEST FOR TIME2 (NEG. OF ECADR)\n\t\tCCS\tA\n\t\tTCF\tSETWO +1\t# DON'T SET WORD ORDER CODE\nMINB1314\tOCT\t47777\t\t# MINUS BIT 13 AND 14 (CAN'T GET HERE)\n\t\tTCF\tSETWO +1\t# DON'T SET WORD ORDER CODE\nSETWO\t\tTC\tWOZERO\t\t# GO SET WORD ORDER CODE TO ZERO.\n \t+1\tCA\tDNECADR\t\t# RELOAD A WITH THE DNADR.\n \t+2\tAD\tMINB1314\t# IS THIS A REGULAR DNADR?\n \t\tEXTEND\n\t\tBZMF\tFETCH2WD\t# YES.  (A MUST NEVER BE ZERO)\n\t\tAD\tMINB12\t\t# NO-\tIS IT A POINTER (DNPTR) OR A\n\t\tEXTEND\t\t\t# \tCHANNEL(DNCHAN)\n\t\tBZMF\tDODNPTR\t\t# IT'S A POINTER.  (A MUST NEVER BE ZERO)\n\nDODNCHAN\tTC\t6\t\t# (EXECUTED AS EXTEND)  IT S A CHANNEL\n\t\tINDEX\tDNECADR\n\t\tINDEX\t0 -4000\t\t# (EXECUTED AS READ)\n\t\tTS\tL\n\t\tTC\t6\t\t# (EXECUTED AS EXTEND)\n\t\tINDEX\tDNECADR\n\t\tINDEX\t0 -4001\t\t# (EXECUTED AS READ)\n\t\tTS\tDNECADR\t\t# SET DNECADR\n\t\tCA\tNEGONE\t\t#\tTO MINUS\n\t\tXCH\tDNECADR\t\t#\t\tWHILE PRESERVING A.\n\t\tTCF\tDNTMEXIT\t# GO SEND CHANNELS\n\nWOZERO\t\tCS\tBIT7\n\t\tEXTEND\n# Page 1098\n\t\tWAND\tCHAN13\t\t# SET WORD ORDER CODE TO ZERO\n\t\tTC\tQ\t\t# RETURN TO CALLER\n\nDODNPTR\t\tINDEX\tDNECADR\t\t# DNECADR CONTAINS ADRES OF SUBLIST\n\t\t0\t0\t\t# CLEAR AND ADD LIST ENTRY INTO A.\n\t\tCCS\tA\t\t# IS THIS A SNAPSHOT SUBLIST\n\t\tCA\tDNECADR\t\t# NO, IT IS A REGULAR SUBLIST.\n\t\tTCF\tDOSUBLST\t# A MUST NOT BE ZERO.\n\n\t\tXCH\tDNECADR\t\t# YES, IT IS A SNAPSHOT SUBLIST.\n\t\tTS\tSUBLIST\t\t# C(DNECADR) INTO SUBLIST\n\t\tCAF\tZERO\t\t#\tA    INTO     A\n\t\tXCH\tTMINDEX\t\t# (NOTE.. TMINDEX = DNECADR)\n\n# THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND)IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS.\n# THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY.\n# THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED\n# TO MINIMIZE TIME.  THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST.\n# THESE RULES ARE......\n#\t1.\tONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST\n#\t2.\tTHE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK.\n\nSNAPLOOP\tTS\tEBANK\t\t# SET EBANK\n\t\tMASK\tLOW8\t\t# ISOLATE RELATIVE ADDRESS\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tEBANK=\t1401\n\t\tDCA\t1401\t\t# PICK UP 2 SNAPSHOT WORDS.\n\t\tEBANK=\tDNTMBUFF\n\t\tINDEX\tTMINDEX\n\t\tDXCH\tDNTMBUFF\t# STORE 2 SNAPSHOT WORDS IN BUFFER\n\t\tINCR\tTMINDEX\t\t# SET BUFFER INDEX FOR NEXT 2 WORDS.\n\t\tINCR\tTMINDEX\nSNAPAGN\t\tINCR\tSUBLIST\t\t# SET POINTER TO NEXT 2 WORDS OF SNAPSHOT\n\t\tINDEX\tSUBLIST\n\t\t0\t0\t\t# = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)\n\t\tCCS\tA\t\t# TEST FOR LAST TWO WORDS OF SNAPSHOT.\n\t\tTCF\tSNAPLOOP\t# NOT LAST TWO.\nLDNPHAS2\tGENADR\tDNPHASE2\n\t\tTS\tSUBLIST\t\t# YES, LAST.  SAVE A.\n\t\tCA\tNEGONE\t\t# SET DNECADR AND\n\t\tTS\tDNECADR\t\t#\tSUBLIST POINTERS\n\t\tXCH\tSUBLIST\t\t#\t\tTO NEGATIVE VALUES.\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tEBANK=\t1401\n# Page 1099\n\t\tDCA\t1401\t\t# PICK UP FIRST 2 WORDS OF SNAPSHOT.\n\t\tEBANK=\tDNTMBUFF\nSNAPEND\t\tTCF\tDNTMEXIT\t# \tNOW GO SEND THEM.\n\nFETCH2WD\tCA\tDNECADR\n\t\tTS\tEBANK\t\t# SET EBANK\n\t\tMASK\tLOW8\t\t# ISOLATE RELATIVE ADDRESS\n\t\tTS\tL\n\t\tCA\tDNADRDCR\t# DECREMENT COUNT AND ECADR\n\t\tADS\tDNECADR\n\t\tEXTEND\n\t\tINDEX\tL\n\t\tEBANK=\t1400\n\t\tDCA\t1400\t\t# PICK UP 2 DATA WORDS\n\t\tEBANK=\tDNTMBUFF\n\t\tTCF\tDNTMEXIT\t# \tNOW GO SEND THEM.\n\nDOSUBLST\tTS\tSUBLIST\t\t# SET SUBLIST POINTER\nNEXTINSL\tINDEX\tSUBLIST\n\t\t0\t0\t\t# = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)\n\t\tCCS\tA\t\t# IS IT THE END OF THE SUBLIST\n\t\tINCR\tSUBLIST\t\t# NO-\n\t\tTCF\t+4\n\t\tTS\tSUBLIST\t\t# SAVE A.\n\t\tCA\tNEGONE\t\t# SET SUBLIST TO MINUS\n\t\tXCH\tSUBLIST\t\t# RETRIEVE A.\n\t+4\tINCR\tA\n \t\tTS\tDNECADR\t\t# SAVE DNADR\n\t\tTCF\tSETWO +2\t# GO USE COMMON CODING(PROBLEMS WOULD\n\t\t\t\t\t# OCCUR IF THE PROGRAM ENCOUNTERED A\n\t\t\t\t\t# DNPTR NOW)\n\nDNTMEXIT\tEXTEND\t\t\t# DOWN-TELEMETRY EXIT\n\t\tWRITE\tDNTM1\t\t# TO SEND A + L TO CHANNELS 34 + 35\n\t\tCA\tL\t\t# RESPECTIVELY\nTMEXITL\t\tEXTEND\n\t\tWRITE\tDNTM2\nTMRESUME\tTCF\tRESUME\t\t# EXIT TELEMETRY PROGRAM VIA RESUME.\n\nMINB12\t\tEQUALS\t-1/8\nDNECADR\t\tEQUALS\tTMINDEX\nCTLIST\t\tEQUALS\tLDATALST\nSUBLIST\t\tEQUALS \tDNQ\n\n# Page 1100\n# SUBROUTINE NAME- DNDUMP\n# FUNCTIONAL DESCRIPTION - TO SEND(DUMP) ALL ERASABLE STORAGE 'N' TIMES.(N = 1 TO 4).  BANKS ARE SENT ONE AT A TIME\n#\tEACH BANK IS PRECEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH\n#\tEBANK.  EBANKS ARE DUMPED IN ORDER(I.E. EBANK 0 FIRST, THEN EBANK1 ETC.)\n# CALLING SEQUENCE- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP.\n#\tAFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP\n#\tWILL BEGIN.\n#\tONCE INITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY\n#\tBY THE FOLLOWING:\n#\t1. A FRESH START\n#\t2. COMPLETION OF ALL DOWNLINK DUMPS REQUESTED (ACCORDING TO BITS SET IN DUMPCNT).  NOTE THAT DUMPCNT\n#\t   CAN BE ALTERED BY A V21N01.\n#\t3. AND INVOLUNTARILY BY A RESTART.\n# NORMAL EXIT MODE- TCF DNPHASE1\n# ALARM OR ABORT MODE- NONE\n# *SUBROUTINES CALLED- NONE.\n# ERASABLE INITIALIZATION REQUIRED --\n#\tDUMPCNT\tOCT 20000\tIF 4 COMPLETE ERASABLE DUMPS ARE DESIRED\n#\tDUMPCNT OCT 10000\tIF 2 COMPLETE ERASABLE DUMPS ARE DESIRED\n#\tDUMPCNT\tOCT 04000\tIF 1 COMPLETE ERASABLE DUMP  IS  DESIRED\n# DEBRIS- DUMPLOC, DUMPSW, DNTMGOTO, EBANK AND CENTRAL REGISTERS\n# TIMING-\tTIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)* (WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC\n#\t\tTIME (IN SECS) =  (   4    )*(    8    )* (    256     +     4   )  /     100\n#\t   THUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS\n#\n# STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM-\n#\t(REMINDER-THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP)\n#\t DOWNLIST\t\t\t\tW\n#\t  WORD\tTAKEN FROM CONTENTS OF\tEXAMPLE\tO\tCOMMENTS\n#\n#\t    1\tERASID\t\t\t 0177X\t0\tDOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM)\n#\t    2\tLOWIDCOD\t\t 77340 \t1\tDOWNLINK SYNCH BITS.(SAME ONE USED IN ALL OTHER DOWNLISTS)\n#\t    3\tDUMPLOC\t\t\t 13400\t1\t(SEE NOTES ON DUMPLOC)1= 3RD ERAS DUMP, 3400=ECADR OF 5TH WD\n#\t    4\tTIME1\t\t\t 14120\t1\tTIME IN CENTISECONDS\n#\t    5\tFIRST WORD OF EBANK X\t 03400\t1\tIN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400)\n#\t    6\t2ND   WORD OF EBANK X\t 00142\t1\tIN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401)\n#\t    7.  3RD   WORD OF EBANK X\t 00142\t1\tIN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402)\n#\t    .\t\t\t\t\t1\n#\t    .\t\t\t\t\t1\n#\t    .\t\t\t\t\t1\n#\t 260D\t256TH WORD OF EBANK X\t 03777\t1\tIN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777)\n#\n# NOTE-\tDUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT.\n#\tTHE BIT STRUCTURE OF DUMPLOC IS FOLLOWS--\n#\t\t\t\t\t\tX = NOT USED\n#\t\tX ABC EEE RRRRRRRR\t      ABC = ERASABLE DUMP COUNTER(I.E. ABC = 0,1,2, OR 3 WHICH MEANS THAT\n#\t\t\t\t\t\t    COMPLETE ERASABLE DUMP NUMBER 1,2,3, OR 4 RESPECTIVELY IS IN PROGRESS)\n#\t\t\t\t\t      EEE = EBANK BITS\n#\t\t\t\t\t RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK.\n\n# Page 1101\nDNDUMPI\t\tCA\tZERO\t\t# INITIALIZE DOWNLINK\n\t\tTS\tDUMPLOC\t\t# ERASABLE DUMP\n\t+2\tTC\tSENDID\t\t# GO SEND ID AND SYNCH BITS\n\t\tCA\tLDNDUMP1\t# SET DNTMGOTO\n\t\tTS\tDNTMGOTO\t# TO LOCATION FOR NEXT PASS\n\t\tCA\tTIME1\t\t# PLACE TIME1\n\t\tXCH\tL\t\t# INTO L\n\t\tCA\tDUMPLOC\t\t# AND ECADR OF THIS EBANK INTO A\n\t\tTCF\tDNTMEXIT\t# SEND DUMPLOC AND TIME1\n\nLDNDUMP\t\tADRES\tDNDUMP\nLDNDUMP1\tADRES\tDNDUMP1\n\nDNDUMP\t\tCA\tTWO\t\t# INCREMENT ECADR IN DUMPLOC\n\t\tADS\tDUMPLOC\t\t# TO NEXT DP WORD TO BE\n\t\tMASK\tLOW8\t\t# DUMPED AND SAVE IT.\n\t\tCCS\tA\t\t# IS THIS THE BEGINNING OF A NEW EBANK\n\t\tTCF\tDNDUMP2\t\t# NO- THEN CONTINUE DUMPING\n\t\tCA\tDUMPLOC\t\t# YES- IS THIS THE END OF THE\n\t\tMASK\tDUMPCNT\t\t# N TH(N = 1 TO 4) COMPLETE ERASABLE\n\t\tMASK\tPRIO34\t\t# DUMP(BIT14 FOR 4, BIT13 FOR 2 OR BIT12\n\t\tCCS\tA\t\t# FOR 1 COMPLETE ERASABLE DUMP(S)).\n\t\tTCF\tDNPHASE1\t# YES- START SENDING INTERRUPTED DOWNLIST\n\t\t\t\t\t# AGAIN\n\t\tTCF\tDNDUMPI +2\t# NO- GO BACK AND INITIALIZE NEXT BANK\n\nDNDUMP1\t\tCA\tLDNDUMP\t\t# SET DNTMGOTO\n\t\tTS\tDNTMGOTO\t# FOR WORDS 3 TO 256D OF CURRENT EBANK\n\nDNDUMP2\t\tCA\tDUMPLOC\n\t\tTS\tEBANK\t\t# SET EBANK\n\t\tMASK\tLOW8\t\t# ISOLATE RELATIVE ADDRESS.\n\t\tTS\tQ\t\t# (NOTE: MASK INSTRUCTION IS USED TO PICK\n\t\tCA\tNEG0\t\t# UP ERASABLE REGISTERS SO THAT EDITING\n\t\tTS\tL\t\t# REGISTERS 20-23 WILL NOT BE ALTERED.)\n\t\tINDEX\tQ\n\t\tEBANK=\t1400\t\t# PICK UP LOW ORDER REGISTER OF PAIR\n\t\tMASK\t1401\t\t# OF ERASABLE REGISTERS.\n\t\tXCH\tL\n\t\tINDEX\tQ\t\t# PICK UP HIGH ORDER REGISTER OF PAIR\n\t\tMASK\t1400\t\t# OF ERASABLE REGISTERS.\n\t\tEBANK=\tDNTMBUFF\n\t\tTCF\tDNTMEXIT\t# GO SEND THEM\n\n\nSENDID\t\tEXTEND\t\t\t# **ENTRANCE USED BY ERASABLE DUMP PROG.**\n\t\tQXCH\tDNTMGOTO\t# SET DNTMGOTO SO NEXT TIME PROG WILL GO\n\t\tCAF\tERASID\t\t# TO LOCATION FOLLOWING :TC SENDID:\n\n\t\tTS\tL\t\t# **ENTRANCE USED BY REGULAR DOWNLINK PG**\n# Page 1102\n\t\tTC\tWOZERO\t\t# GO SET WORD ORDER CODE TO ZERO\n\t\tCAF\tLOWIDCOD\t# PLACE SPECIAL ID CODE INTO L\n\t\tXCH\tL\t\t# AND ID BACK INTO A\n\t\tTCF\tDNTMEXIT\t# SEND DOWNLIST ID CODE(S).\n"
  },
  {
    "path": "Comanche055/DOWNLINK_LISTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tDOWNLINK_LISTS.agc\n# Purpose:\tPart of the source code for Comanche, build 055. It\n#\t\tis part of the source code for the Command Module's\n#\t\t(CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 170-180\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t10/05/09 FB\tTranscription of Batch FB-1 Assignment.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 170\n\t\tBANK\t22\n\t\tSETLOC\tDOWNTELM\n\t\tBANK\n\n\t\tEBANK=\tDNTMBUFF\n\n# SPECIAL DOWNLINK OP CODES\n#\tOP CODE\t\tADDRESS(EXAMPLE)\tSENDS...\t\tBIT 15\t\tBITS 14-12\tBITS 11-0\n#\t-------\t\t----------------\t----------\t\t------\t\t----------\t---------\n#\t1DNADR\t\tTIME2\t\t\t(2 AGC WDS)\t\t0\t\t0\t\tECADR\n#\t2DNADR\t\tTEPHEM\t\t\t(4 AGC WDS)\t\t0\t\t1\t\tECADR\n#\t3DNADR\t\tVGBODY\t\t\t(6 AGC WDS)\t\t0\t\t2\t\tECADR\n#\t4DNADR\t\tSTATE\t\t\t(8 AGC WDS)\t\t0\t\t3\t\tECADR\n#\t5DNADR\t\tUPBUFF\t\t\t(10AGC WDS)\t\t0\t\t4\t\tECADR\n#\t6DNADR\t\tDSPTAB\t\t\t(12AGC WDS)\t\t0\t\t5\t\tECADR\n#\tDNCHAN\t\t30\t\t\tCHANNELS\t\t0\t\t7\t\tCHANNEL ADDRESS\n#\tDNPTR\t\tNEXTLIST\t\tPOINTS TO NEXT LIST.\t0\t\t6\t\tADRES\n#\n# DOWNLIST FORMAT DEFINITIONS AND RULES -\n# 1. END OF A LIST = -XDNADR (X = 1 TO 6), -DNPTR, OR -DNCHAN.\n# 2. SNAPSHOT SUBLIST = LIST WHICH STARTS WITH A -1DNADR.\n# 3. SNAPSHOT SUBLIST CAN ONLY CONTAIN 1DNADRS.\n# 4. TIME2 1DNADR MUST BE LOCATED IN THE CONTROL LIST OF A DOWNLIST.\n# 5. ERASABLE DOWN TELEMETRY WORDS SHOULD BE GROUPED IN SEQUENTIAL\n#    LOCATIONS AS MUCH AS POSSIBLE TO SAVE STORAGE USED BY DOWNLINK LISTS.\n# 6. THE DOWNLINK LISTS (INCLUDING SUBLISTS) ARE ORGANIZED SUCH THAT THE ITEMS LISTED FIRST (IN FRONT OF FBANK) ARE\n#    SENT FIRST.  EXCEPTION--- SNAPSHOT SUBLISTS.  IN THE SNAPSHOT SUBLISTS THE DATA REPRESENTED BY THE FIRST\n#    11 1DNADRS IS PRESERVED (IN ORDER) IN DNTMBUFF AND SENT BY THE NEXT 11 DOWNRUPTS. THE DATA REPRESENTED BY THE\n#    LIST IS SENT IMMEDIATELY.\n\n\t\tCOUNT\t05/DLIST\nERASZERO\tEQUALS\t7\nSPARE\t\tEQUALS\tERASZERO\t\t\t# USE SPARE TO INDICATE AVAILABLE SPACE\nLOWIDCOD\tOCT\t77340\t\t\t\t# LOW ID CODE\n\nNOMDNLST\tEQUALS\tCMCSTADL\t\t\t# FRESH START AND POST P27 DOWNLIST\nUPDNLIST\tEQUALS\tCMENTRDL\t\t\t# UPDATE PROGRAM (P27) DOWNLIST\n\n# Page 171\n# CSM POWERED FLIGHT DOWNLIST\n#\n# --------------------- CONTROL LIST -------------------------\n\nCMPOWEDL\tEQUALS\n\t\tDNPTR\tCMPOWE01\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMPOWE02\t\t\t# COLLECT SECOND SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMPOWE03\t\t\t# COMMON DATA\n\t\t1DNADR\tTIG\t\t\t\t# TIG,+1\n\t\t1DNADR\tDELLT4\t\t\t\t# DELLT4,+1\n\t\t3DNADR\tRTARG\t\t\t\t# RTARG,+1,+2,...+5\n\t\t1DNADR\tTGO\t\t\t\t# TGO,+1\n\t\t1DNADR\tPIPTIME1\t\t\t# PIPTIME1,+1\n\t\t3DNADR\tDELV\t\t\t\t# DELV,+1,...+4,+5\n\t\t1DNADR\tPACTOFF\t\t\t\t# PACTOFF,YACTOFF\n\t\t1DNADR\tPCMD\t\t\t\t# PCMD,YCMD\n\t\t1DNADR\tCSTEER\t\t\t\t# CSTEER,+1\n\t\t3DNADR\tDELVEET1\t\t\t# CSI DELTA VELOCITY COMPONENTS   (31-33)\n\t\t6DNADR\tREFSMMAT\t\t\t# REFSMMAT,+1,...+10,+11\n\t\tDNPTR\tCMPOWE04\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2,TIME1\n\t\tDNPTR\tCMPOWE05\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMPOWE02\t\t\t# COLLECT SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMPOWE03\t\t\t#\n\t\tDNPTR\tCMPOWE06\t\t\t# COMMON DATA\n\t\t1DNADR\tELEV\t\t\t\t# ELEV,+1\n\t\t1DNADR\tCENTANG\t\t\t\t# CENTANG,+1\n\t\t1DNADR\tDELTAR\t\t\t\t# DELTAR,+1\n\t\t1DNADR\tSTATE +10D\t\t\t# FLAGWRDS 10 AND 11\n\t\t1DNADR\tTEVENT\t\t\t\t# TEVENT,+1\n\t\t1DNADR\tPCMD\t\t\t\t# PCMD,YCMD\n\t\t1DNADR\tOPTMODES\t\t\t# OPTMODES,HOLDFLAG\n\t\tDNPTR\tCMPOWE07\t\t\t# COMMON DATA\n\t\t3DNADR\tVGTIG\t\t\t\t# VGTIG,+1,...+4,+5\n\t\t-3DNADR DELVEET2\t\t\t# CDH DELTA VELOCITY COMPONENTS   (98-100)\n# --------------------- SUB LISTS ---------------------------\n\nCMPOWE01\t-1DNADR\tRN\t+2\t\t\t# RN+2,+3\t\t\tSNAPSHOT DATA\n\t\t1DNADR\tRN\t+4\t\t\t# RN+4,+5\n\t\t1DNADR\tVN\t\t\t\t# VN,+1\n\t\t1DNADR\tVN\t+2\t\t\t# VN+2,+3\n\t\t1DNADR\tVN\t+4\t\t\t# VN+4,+5\n\t\t1DNADR\tPIPTIME\t\t\t\t# PIPTIME,+1\n\t\t-1DNADR\tRN\t\t\t\t# RN,+1\n\nCMPOWE02\t-1DNADR\tCDUZ\t\t\t\t# CDUZ,CDUT\t\t\tSNAPSHOT DATA\n# Page 172\n\t\t1DNADR\tADOT\t\t\t\t# ADOT,+1/OGARATE,+1\n\t\t1DNADR\tADOT\t+2\t\t\t# ADOT+2,+3/OMEGAB+2,+3\n\t\t1DNADR\tADOT\t+4\t\t\t# ADOT+4,+5/OMEGAB+4,+5\n\t\t-1DNADR\tCDUX\t\t\t\t# CDUX,CDUY\n\nCMPOWE03\t2DNADR\tAK\t\t\t\t# AK,AK1,AK2,RCSFLAGS\t\tCOMMON DATA\n\t\t-2DNADR\tTHETADX\t\t\t\t# THETADX,THETADY,THETADZ,GARBAGE\n\nCMPOWE04\t5DNADR\tSTATE\t\t\t\t# FLAGWRD0 THRU FLAGWRD9\tCOMMON DATA\n\t\t-6DNADR\tDSPTAB\t\t\t\t# DISPLAY TABLES\n\nCMPOWE05\t-1DNADR\tR-OTHER\t+2\t\t\t# R-OTHER+2,+3\t\t\tSNAPSHOT DATA\n\t\t1DNADR\tR-OTHER\t+4\t\t\t# R-OTHER+4,+5\n\t\t1DNADR\tV-OTHER\t\t\t\t# V-OTHER,+1\n\t\t1DNADR\tV-OTHER\t+2\t\t\t# V-OTHER+2,+3\n\t\t1DNADR\tV-OTHER\t+4\t\t\t# V-OTHER+4,+5\n\t\t1DNADR\tT-OTHER\t\t\t\t# T-OTHER,+1\n\t\t-1DNADR\tR-OTHER\t\t\t\t# R-OTHER,+1\n\nCMPOWE06\t1DNADR\tRSBBQ\t\t\t\t# RSBBQ,+1\t\t\tCOMMON DATA\n\t\t3DNADR\tCADRFLSH\t\t\t# CADRFLSH,+1,+2,FAILREG,+1,+2\n\t\t-2DNADR\tCDUS\t\t\t\t# CDUS,PIPAX,PIPAY,PIPAZ\n\nCMPOWE07\t1DNADR\tLEMMASS\t\t\t\t# LEMMASS,CSMMASS\t\tCOMMON DATA\n\t\t1DNADR\tDAPDATR1\t\t\t# DAPDATR1,DAPDATR2\n\t\t2DNADR\tERRORX\t\t\t\t# ERRORX,ERRORY,ERRORZ,GARBAGE\n\t\t3DNADR\tWBODY\t\t\t\t# WBODY,...+5/OMEGAC,...+5\n\t\t2DNADR\tREDOCTR\t\t\t\t# REDOCTR,THETAD,+1,+2\n\t\t1DNADR\tIMODES30\t\t\t# IMODES30,IMODES33\n\t\tDNCHAN\t11\t\t\t\t# CHANNELS 11,12\n\t\tDNCHAN\t13\t\t\t\t# CHANNELS 13,14\n\t\tDNCHAN\t30\t\t\t\t# CHANNELS 30,31\n\t\t-DNCHAN\t32\t\t\t\t# CHANNELS 32,33\n\n# -----------------------------------------------------------\n\n# Page 173\n# CSM COAST AND ALIGNMENT DOWNLIST\n\n# --------------------- CONTROL LIST ------------------------\n\nCMCSTADL\tEQUALS\t\t\t\t\t# SEND ID BY SPECIAL CODING\n\t\tDNPTR\tCMCSTA01\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMCSTA02\t\t\t# COLLECT SECOND SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMCSTA03\t\t\t# COMMON DATA\n\t\t1DNADR\tTIG\t\t\t\t# TIG,+1\n\t\t1DNADR\tBESTI\t\t\t\t# BESTI,BESTJ\n\t\t4DNADR\tMARKDOWN\t\t\t# MARKDOWN,+1,...+5,+6,GARBAGE\n\t\t4DNADR\tMARK2DWN\t\t\t# MARK2DWN,+1,...+5,+6\n\t\t2DNADR\tHAPOX\t\t\t\t# APOGEE AND PERIGEE FROM R30   (28-29)\n\t\t1DNADR\tPACTOFF\t\t\t\t# PACTOFF, YACTOFF                 (30)\n\t\t3DNADR\tVGTIG\t\t\t\t# VGTIG,...+5\n\t\t6DNADR\tREFSMMAT\t\t\t# REFSMMAT,+1,...+10,+11\n\t\tDNPTR\tCMCSTA04\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2,TIME1\n\t\tDNPTR\tCMCSTA05\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMCSTA02\t\t\t# COLLECT SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMCSTA03\t\t\t# COMMON DATA\n\t\tDNPTR\tCMCSTA06\t\t\t# COMMON DATA\n\t\t3DNADR\tOGC\t\t\t\t# OGC,+1,IGC,+1,MGC,+1\n\t\t1DNADR\tSTATE +10D\t\t\t# FLAGWRDS 10 AND 11\n\t\t1DNADR\tTEVENT\t\t\t\t# TEVENT,+1\n\t\t1DNADR\tLAUNCHAZ\t\t\t# LAUNCHAZ,+1\n\t\t1DNADR\tOPTMODES\t\t\t# OPTMODES,HOLDFLAG\n\t\tDNPTR\tCMCSTA07\t\t\t# COMMON DATA\n\t\t-6DNADR\tDSPTAB\t\t\t\t# DISPLAY TABLES\n\n# --------------------- SUB LISTS ---------------------------\n\nCMCSTA01\tEQUALS\tCMPOWE01\t\t\t# COMMON DOWNLIST DATA\n\nCMCSTA02\tEQUALS\tCMPOWE02\t\t\t# COMMON DOWNLIST DATA\n\nCMCSTA03\tEQUALS\tCMPOWE03\t\t\t# COMMON DOWNLIST DATA\n\nCMCSTA04\tEQUALS\tCMPOWE04\t\t\t# COMMON DOWNLIST DATA\n\nCMCSTA05\tEQUALS\tCMPOWE05\t\t\t# COMMON DOWNLIST DATA\n\nCMCSTA06\tEQUALS\tCMPOWE06\t\t\t# COMMON DOWNLIST DATA\n\nCMCSTA07\tEQUALS\tCMPOWE07\t\t\t# COMMON DOWNLIST DATA\n# Page 174\n# -----------------------------------------------------------\n\n# Page 175\n# CSM RENDEZVOUS AND PRETHRUST LIST\n\n# --------------------- CONTROL LIST ------------------------\n\nCMRENDDL\tEQUALS\t\t\t\t\t# SEND ID BY SPECIAL CODING\n\t\tDNPTR\tCMREND01\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMREND02\t\t\t# COLLECT SECOND SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMREND03\t\t\t# COMMON DATA\n\t\t1DNADR\tTIG\t\t\t\t# TIG,+1\n\t\t1DNADR\tDELLT4\t\t\t\t# DELLT4,+1\n\t\t3DNADR\tRTARG\t\t\t\t# RTARG,+1,...+4,+5\n\t\t1DNADR\tVHFTIME\t\t\t\t# VHFTIME,+1\n\t\t4DNADR\tMARKDOWN\t\t\t# MARKTIME(DP),YCDU,SCDU,ZCDU,TCDU,XCDU,RM\n\t\t1DNADR\tVHFCNT\t\t\t\t# VHFCNT,+1\n\t\t1DNADR\tTTPI\t\t\t\t# TTPI,+1\n\t\t1DNADR\tECSTEER\t\t\t\t# ECSTEER,+1\n\t\t1DNADR\tDELVTPF\t\t\t\t# DELVTPF,+1\n\t\t2DNADR  TCDH\t\t\t\t# CDH AND CSI TIME                      (32-33)\n\t\t1DNADR\tTPASS4\t\t\t\t# TPASS4,+1\n\t\t3DNADR\tDELVSLV\t\t\t\t# DELVSLV,+1...+4,+5\n\t\t2DNADR\tRANGE\t\t\t\t# RANGE,+1,RRATE,+1\n\t\tDNPTR\tCMREND04\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2,TIME1\n\t\tDNPTR\tCMREND05\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMREND02\t\t\t# COLLECT SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMREND03\t\t\t# COMMON DATA\n\t\tDNPTR\tCMREND06\t\t\t# COMMON DATA\n\t\t1DNADR\tDIFFALT\t\t\t\t# CDH DELTA ALTITUDE\n\t\t1DNADR\tCENTANG\t\t\t\t# CENTANG,+1\n\t\t1DNADR\tDELTAR\t\t\t\t# DELTAR,+1\n\t\t3DNADR\tDELVEET3\t\t\t# DELVEET3,+1,...+4,+5\n\t\t1DNADR\tOPTMODES\t\t\t# OPTMODES,HOLDFLAG\n\t\tDNPTR\tCMREND07\t\t\t# COMMON DATA\n\t\t1DNADR\tRTHETA\t\t\t\t# RTHETA,+1\n\t\t2DNADR\tLAT(SPL)\t\t\t# LAT(SPL),LNG(SPL),+1\n\t\t2DNADR\tVPRED\t\t\t\t# VPRED,+1,GAMMAEI,+1\n\t\t-1DNADR\tSTATE +10D\t\t\t# FLAGWRDS 10 AND 11\n\n# --------------------- SUB LISTS ----------------------------\n\nCMREND01\tEQUALS\tCMPOWE01\t\t\t# COMMON DOWNLIST DATA\n\nCMREND02\tEQUALS\tCMPOWE02\t\t\t# COMMON DOWNLIST DATA\n\nCMREND03\tEQUALS\tCMPOWE03\t\t\t# COMMON DOWNLIST DATA\n\nCMREND04\tEQUALS\tCMPOWE04\t\t\t# COMMON DOWNLIST DATA\n# Page 176\nCMREND05\tEQUALS\tCMPOWE05\t\t\t# COMMON DOWNLIST DATA\n\nCMREND06\tEQUALS\tCMPOWE06\t\t\t# COMMON DOWNLIST DATA\n\nCMREND07\tEQUALS\tCMPOWE07\t\t\t# COMMON DOWNLIST DATA\n\n# ------------------------------------------------------------\n\n# Page 177\n# CSM ENTRY AND UPDATE DOWNLIST\n#\n# --------------------- CONTROL LIST -------------------------\n\nCMENTRDL\tEQUALS\t\t\t\t\t# SEND ID BY SPECIAL CODING\n\t\tDNPTR\tCMENTR01\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMENTR02\t\t\t# COLLECT SECOND SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMENTR03\t\t\t# COMMON DATA\n\t\t2DNADR\tCMDAPMOD\t\t\t# CMDAPMOD,PREL,QREL,RREL\n\t\t1DNADR\tL/D1\t\t\t\t# L/D1,+1\n\t\t6DNADR\tUPBUFF\t\t\t\t# UPBUFF,+1,...+10,+11\n\t\t4DNADR\tUPBUFF +12D\t\t\t# UPBUFF+12,13,...+18,+19D\n\t\t2DNADR\tCOMPNUMB\t\t\t# COMPNUMB,UPOLDMOD,UPVERB,UPCOUNT\n\t\t1DNADR\tPAXERR1\t\t\t\t# PAXERR1,ROLLTM\n\t\t3DNADR\tLATANG\t\t\t\t# LATANG,+1,RDOT,+1,THETAH,+1\n\t\t2DNADR\tLAT(SPL)\t\t\t# LAT(SPL),+1,LNG(SPL),+1\n\t\t1DNADR\tALFA/180\t\t\t# ALFA/180,BETA/180\n\t\tDNPTR\tCMENTR04\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2,TIME1\n\t\tDNPTR\tCMENTR05\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMENTR02\t\t\t# COLLECT SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\t2DNADR\tAK\t\t\t\t# AK,AK1,AK2,RCSFLAGS\n\t\t3DNADR\tERRORX\t\t\t\t# ERRORX/Y/Z,THETADX/Y/Z\n\t\t2DNADR\tCMDAPMOD\t\t\t# CMDAPMOD,PREL,QREL,RREL\n\t\t6DNADR\tUPBUFF\t\t\t\t# UPBUFF+0,+1,...+10,+11D\n\t\t4DNADR\tUPBUFF +12D\t\t\t# UPBUFF+12,+13,...+18,+19D\n\t\t1DNADR\tLEMMASS\t\t\t\t# LEMMASS,CSMMASS\n\t\t1DNADR\tDAPDATR1\t\t\t# DAPDATR1,DAPDATR2\n\t\t1DNADR\tROLLTM\t\t\t\t# ROLLTM,ROLLC\n\t\t1DNADR\tOPTMODES\t\t\t# OPTMODES,HOLDFLAG\n\t\t3DNADR\tWBODY\t\t\t\t# WBODY,...+5/OMEGAC,...+5\n\t\t2DNADR\tREDOCTR\t\t\t\t# REDOCTR,THETAD+0,+1,+2\n\t\t1DNADR\tIMODES30\t\t\t# IMODES30,IMODES33\n\t\tDNCHAN\t11\t\t\t\t# CHANNELS 11,12\n\t\tDNCHAN\t13\t\t\t\t# CHANNELS 13,14\n\t\tDNCHAN\t30\t\t\t\t# CHANNELS 30,31\n\t\tDNCHAN\t32\t\t\t\t# CHANNELS 32,33\n\t\t1DNADR\tRSBBQ\t\t\t\t# RSBBQ,+1\n\t\t3DNADR\tCADRFLSH\t\t\t# CADRFLSH,+1,+2,FAILREG,+1,+2\n\t\t1DNADR\tSTATE +10D\t\t\t# FLAGWRDS 10 AND 11\n\t\t-1DNADR\tGAMMAEI\t\t\t\t# GAMMAEI,+1\n\n# --------------------- SUB LISTS ----------------------------\n\nCMENTR01\tEQUALS\tCMPOWE01\t\t\t# COMMON DOWNLIST DATA\n# Page 178\nCMENTR02\tEQUALS\tCMPOWE02\t\t\t# COMMON DOWNLIST DATA\n\nCMENTR03\tEQUALS\tCMPOWE03\t\t\t# COMMON DOWNLIST DATA\n\nCMENTR04\tEQUALS\tCMPOWE04\t\t\t# COMMON DOWNLIST DATA\n\nCMENTR05\t-1DNADR\tDELV\t\t\t\t# DELV,+1\t\tSNAPSHOT DATA\n\t\t1DNADR\tDELV +2\t\t\t\t# DELV+2,+3\n\t\t1DNADR\tDELV +4\t\t\t\t# DELV+4,+5\n\t\t1DNADR\tTTE\t\t\t\t# TTE,+1\n\t\t1DNADR\tVIO\t\t\t\t# VIO,+1\n\t\t1DNADR\tVPRED\t\t\t\t# VPRED,+1\n\t\t-1DNADR\tPIPTIME1\t\t\t# PIPTIME1,+1\n\nCMENTR07\tEQUALS\tCMPOWE07\t\t\t# COMMON DOWNLIST DATA\n\n# -------------------------------------------------------------\n\n# Page 179\n# P22 DOWNLISTS\n#\n# --------------------- CONTROL LIST --------------------------\n\nCMPG22DL\tEQUALS\t\t\t\t\t# SEND ID BY SPECIAL CODING\n\t\tDNPTR\tCMPG2201\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMPG2202\t\t\t# COLLECT SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMPG2203\t\t\t# COMMON DATA\n\t\t6DNADR\tSVMRKDAT\t\t\t# LANDING SITE MARK DATA\n\t\t6DNADR\tSVMRKDAT +12D\t\t\t# SVMRKDAT+0...+34\n\t\t6DNADR\tSVMRKDAT +24D\t\t\t# LANDING SITE MARK DATA\n\t\t1DNADR\tLANDMARK\t\t\t# LANDMARK,GARBAGE\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\tDNPTR\tCMPG2204\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2,TIME1\n\t\tDNPTR\tCMPG2205\t\t\t# COLLECT SNAPSHOT\n\t\t2DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\tDNPTR\tCMPG2202\t\t\t# COLLECT SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tCMPG2203\t\t\t# COMMON DATA\n\t\tDNPTR\tCMPG2206\t\t\t# COMMON DATA\n\t\t1DNADR\t8NN\t\t\t\t# 8NN,GARBAGE\n\t\t1DNADR\tSTATE +10D\t\t\t# FLAGWRDS 10 AND 11\n\t\t3DNADR\tRLS\t\t\t\t# RLS,+1,...+4,+5\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tOPTMODES\t\t\t# OPTMODES,HOLDFLAG\n\t\tDNPTR\tCMPG2207\t\t\t# COMMON DATA\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\t-1DNADR\tSPARE\n\n# --------------------- SUB LISTS --------------------------\n\nCMPG2201\tEQUALS\tCMPOWE01\t\t\t# COMMON DOWNLIST DATA\n\nCMPG2202\tEQUALS\tCMPOWE02\t\t\t# COMMON DOWNLIST DATA\n\nCMPG2203\tEQUALS\tCMPOWE03\t\t\t# COMMON DOWNLIST DATA\n# Page 180\nCMPG2204\tEQUALS\tCMPOWE04\t\t\t# COMMON DOWNLIST DATA\n\nCMPG2205\t-1DNADR\tLONG\t\t\t\t# LONG,+1\t\t\tSNAPSHOT DATA\n\t\t1DNADR\tALT\t\t\t\t# ALT,+1\n\t\t-1DNADR\tLAT\t\t\t\t# LAT,+1\n\nCMPG2206\tEQUALS\tCMPOWE06\t\t\t# COMMON DOWNLIST DATA\n\nCMPG2207\tEQUALS\tCMPOWE07\t\t\t# COMMON DOWNLIST DATA\n\n# -----------------------------------------------------------\n\nDNTABLE\t\tGENADR\tCMCSTADL\n\t\tGENADR\tCMENTRDL\n\t\tGENADR\tCMRENDDL\n\t\tGENADR\tCMPOWEDL\n\t\tGENADR\tCMPG22DL\n\n# -----------------------------------------------------------\n\n"
  },
  {
    "path": "Comanche055/ENTRY_LEXICON.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     ENTRY_LEXICON.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 837-843\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-12 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname and Comanche 055 page images.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 837\n# VARIABLE\tDESCRIPTION\t\t\t\tMAXIMUM VALUE *\t\tCOMPUTER NAME\n# --------\t-----------\t\t\t\t------- -------\t\t-------- ----\n#\n# _\n# URT0\t\tINITIAL TARGET VECTOR\t\t\t2 (UNIT VECTOR)\t\t= RTINIT\n# _\n# UZ\t\tUNIT VECTOR NORTH\t\t\t1\t\t\t= UNITW\n# _\n# V\t\tVELOCITY VECTOR\t\t\t\t2 VSAT\t\t\t= VEL\n# _\n# R\t\tPOSITION VECTOR\t\t\t\t2 EXP 29 METERS\t\t= RN\n# _\n# VI \t\tINERTIAL VELOCITY\t\t\t128 M/CENTISEC\t\t= VN\n# _\n# RTE\t\tVECTOR EAST AT INITIAL TARGET\t\t2\t\t\t= RTEAST\n# _\n# UTR\t\tNORMAL TO RTE AND UZ\t\t\t2\t\t\t= RTNORM\n# _\n# URT\t\tTARGET VECTOR\t\t\t\t2\t\t\t= RT\n# _\n# UNI\t\tUNIT NORMAL TO TRAJECTORY PLANE\t\t2\n# _\n# DELV\t\tINTEGRATED ACCEL. FROM PIPAS\t\t5.85 16384 CM/S\n# _\n# G\t\tGRAVITY VECTOR\t\t\t\t128 M/CENTISEC\t\t= GDT/2\n#\n# A0\t\tINITIAL DRAG FOR UPCONTRL\t\t805 FPSS\t\tFPSS=FT/SEC/SEC\n# AHOOKDV\tTERM IN GAMMAL CALC. = AHOOK DVL\t16\n# A1\t\tDRAG VALUE IN FACTOR CALCULATION\t805 FPSS\n# ALP\t\tCONST FOR UPCONTRL\t\t\t1\n# ASKEP\t\tKEPLER RANGE\t\t\t\t21600 NM\t\tNM = NAUTICAL MILE\n# ASP1\t\tFINAL PHASE RANGE\t\t\t21600 NM\n# ASPUP\t\tUP-RANGE\t\t\t\t21600 NM\n# ASP3\t\tGAMMA CORRECTION\t\t\t21600 NM\n# ASPDWN\tRANGE DOWN TO PULL-UP\t\t\t21600 NM\n# ASP\t\tPREDICTED RANGE\t\t\t\t21600 NM\t\t  NOT STORED\n# COSG\t\tCOSINE(GAMMAL)\t\t\t\t2\t\t\t= COSG/2\n# C/D0\t\tRECIPROCAL DRAG, -4/D0 B-8\t\t64/FPSS\n# D\t\tTOTAL ACCELERATION\t\t\t805 FPSS\n# D0\t\tCONTROLLED CONSTANT D\t\t\t805 FPSS\n# DHOOK\t\tTERM IN GAMMAL COMPUTATION\t\t805 FPSS\n# DIFF\t\tTHETNM-ASP (RANGE DIFFERENCE)\t\t21600\tNM\n# DIFFOLD\tPREVIOUS VALUE OF DIFF\t\t\t21600\tNM\n# DLEWD\t\tCHANGE IN LEWD\t\t\t\t1\n# DR\t\tREFERENCE DRAG FOR DOWNCONTROL\t\t805 FPSS\t\t  NOT STORED\n# DREFR\t\tREFERENCE DRAG\t\t\t\t805 FPSS\t\t  NOT STORED\n# DVL\t\tVS1-VL\t\t\t\t\t2 VSAT\n# E\t\tECCENTRICITY\t\t\t\t4\t\t\t  NOT STORED\n# F1\t\tDRANGE/D DRAG\t(FINAL PHASE)\t\t2700/805\t\t= FX +5\n# F2\t\tDRANGE/D RDOT\t(FINAL PHASE)\t\t2700/2VS NM/FPS\t\t= FX +4\n# Page 838\n# F3\t\tDRANGE/D (L/D)\t\t\t\t2700 NM\t\t\t\t= FX\n# FACT1\t\tCONST FOR UPCONTRL\t\t\t805 FPSS\n# FACT2\t\tCONST FOR UPCONTRL\t\t\t1/805 FPSS\n# FACTOR\tUSED IN UPCONTRL\t\t\t1\t\t\t* MAXIMUM VALUE DENOTES UNSCALED\n# GAMMAL\tFLIGHT PATH ANGLE AT VL\t\t\t1 RADIAN\t\t  VARIABLE VALUE WHEN SCALED\n# GAMMAL1\tSIMPLE FORM OF GAMMAL\t\t\t1 RADIAN\t\t  VARIABLE HAS MAXIMUM VALUE OF ONE.\n# Page 839\n#\n# HEADSUP\tINDICATOR FOR INITIAL ROLL\t\t1\n# KA\t\tDRAG TO LIFT UP IF DOWN\t\t\t805 FPSS\t\t= KAT\n# KLAT\t\tLATERAL SWITCH GAIN\t\t\t1\t\t(NOM = .0125)\n# K2ROLL\tINDICATOR FOR ROLL SWITCH\n# LAD\t\tMAX L/D (MIN ACTUAL VEHICLE L/D)\t1\n# LADPAD\tNOMINAL VEHICLE L/D, SP PAD LOAD\t1\t\t(NOM = 0.3)\n# LATANG\tLATERAL RANGE\t\t\t\t4 RADIANS\n# LEQ\t\tEXCESS C.F. OVER GRAV=(VSQ-1)GS\t\t128.8 FPSS\n# LEWD\t\tUPCONTROL REFERENCE L/D\t\t\t1\n# LOD\t\tFINAL PHASE L/D\t\t\t\t1\t\t(NOM = 0.18)\n# LODPAD\tFINAL PHASE L/D, SP PAD LOAD\t\t1\n# L/D\t\tDESIRED LIFT TO DRAG RATIO\t\t1\n#\t\t(VERTICAL PLANE)\n# L/D1\t\tTEMP STORAGE FOR L/D IN LATERAL\t\t1\n# L/DCMINR\tLAD COS(15DEG)\t\t\t\t1\t\t(NOM = 0.2895)\n# PREDANGL\tPREDICTED RANGE\t(FINAL PHASE)\t\t2700 NM\t\t\t= PREDANG\n# Q2\t\tFINAL PHASE RANGE -23500 Q3\t\t21600\tNM\n#\t\tQ2 = FCN(LAD)\n# Q7\t\tMINIMUM DRAG FOR UPCONTROL\t\t805 FPSS\n# RDOT\t\tALTITUDE RATE\t\t\t\t2 VSAT\n# RDOTREF\tREFERENCE RDOT FOR UPCONTROL\t\t2 VSAT\n# RDTR\t\tREFERENCE RDOT FOR DOWNCONT\t\t2 VSAT\t\t\t  NOT SAVED\n# ROLLC\t\tROLL COMMAND\t\t\t\t1 REVOLUTION\n# RTOGO\t\tRANGE TO GO (FINAL PHASE)\t\t2700 NM\t\t\t= FX +2\n# SL\t\tSINE OF LATITUDE\t\t\t1\t\t\t  NOT SAVED\n# T\t\tTIME\t\t\t\t\tB 28 CENTISEC\t\t= TIME2,TIME1\n# THETA\t\tDESIRED RANGE (RADIANS)\t\t\t2 PI RADIANS\t\t= THETAH\n# THETNM\tDESIRED RANGE (NM)\t\t\t21600 NM\t\t  NON EXISTENT\n# V\t\tVELOCITY MAGNITUDE\t\t\t2 VSAT\n# V1\t\tINITIAL VELOCITY FOR UPCONTROL\t\t2 VSAT\n# VL\t\tEXIT VELOCITY FOR UPCONTROL\t\t2 VSAT\n# VREF\t\tREFERENCE VELOCITY FOR UPCONTROL\t2 VSAT\n# VS1\t\tVSAT OR V1, WHICHEVER IS SMALLER\t2 VSAT\n#\t\t  2     2\n# VBARS\t\tVL /VSAT\t\t\t\t4\n#\t\t\t\t\t   2     2\n# VSQ\t\tNORMALISED VEL. SQUARED = V /VSAT\t4\t\t\t= VSQUARE\n# WT\t\tEARTH RATE TIMES TIME\t\t\t1 REVOLUTION\t\t  NOT SAVED\n#\t\t\t\t\t\t\t\t\t\t= WIE (DTEAROT)\n# X\t\tINTERMEDIATE VARIABLE IN G-LIMITER\t2 VSAT\t \t\t  NOT SAVED\n# Y\t\tLATERAL MISS LIMIT\t\t\t4 RADIANS\t\t  NOT SAVED\n\n# Page 840\n# EXTRA COMPUTER ERASABLE LOCATIONS NOT SHOWN ON FLOW CHARTS\n# ----------------------------------------------------------\n#\n# VARIABLE\tDESCRIPTION\t\t\t\tMAXIMUM VALUE\n# --------\t-----------\t\t\t\t-------------\n#\n# GOTOADDR\tADDRESS SELECTED BY SEQUENCER\n# XPIPBUF\tBUFFER TO STORE X PIPA COUNTS\n# YPIPBUF\tBUFFER TO STORE Y PIPA COUNTS\n# ZPIPBUF\tBUFFER TO STORE Z PIPA COUNTS\n# PIPCTR\tCOUNTS PASSES THRU PIPA READ ROUTINE\n# JJ\t\tINDEX IN FINAL PHASE TABLE LOOK-UP\n# MM\t\tINDEX IN FINAL PHASE TABLE LOOK-UP\n# GRAD\t\tINTERPOLATION FACTOR IN FINAL PHASE\n# FX\t\tDRANGE/D L/D = F3\t\t\t2700 NM\n# FX +1\t\tAREF\t\t\t\t\t805 FPSS\n# FX +2\t\tRTOGO\t\t\t\t\t2700 NM\n# FX +3\t\tRDOTREF\t\t\t\t\tVSAT/4\n# FX +4\t\tDRANGE/D RDOT = F2\t\t\t21600/2VS NM/FPS\n# FX +5\t\tDRANGE/D DRAG = F1\t\t\t2700/805 NM/FPSS\n# TEM1B\t\tTEMPORARY LOCATION\n# TIME/RTO\tTIME OF INITIAL TARGET RTINIT\t\tB 28 CENTISEC\n# DTEAROT\tEST TIME BETWEEN RTINIT AND RT\t\tB 28 CENTISEC\n#\n# _\n# UNITV\t\tUNIT  V VECTOR\t\t\t\t2\n# _\n# UNITR\t\tUNIT R VECTOR\t\t\t\t2\n#  _\n# -VREL\t\tNEGATIVE VELOCITY REL TO ATMOSP\t\t2 VSAT\n#\n# COMPUTER SWITCHES\t\t\t\t\tINITIAL STATE\t\tCM/FLAGS = STATE +6\n# -----------------\t\t\t\t\t-------------\t\t-------------------\n#\n# ENTRYDSP\tDO ENTRY DISPLAY, IF SET\t\tNON-BRANCH (1)\t\t 92D, BIT13\n# GONEPAST\tINDICATES OVERSHOOT OF TARGET\t\tNON-BRANCH (0)\t\t 95D, BIT10\n# RELVELSW\tRELATIVE VELOCITY SWITCH\t\tNON-BRANCH (0)\t\t 96D, BIT 9\n# EGSW\t\tFINAL PHASE SWITCH\t\t\tNON-BRANCH (0)\t\t 97D, BIT 8\n# FIRSTPAS\tINITIAL PASS THRU HUNTEST\t\tNON-BRANCH (0)\t\t 98D, BIT 7\n# HIND\t\tINDICATES ITERATION IN HUNTEST\t\tNON-BRANCH (0)\t\t 99D, BIT 6\n# INRLSW\tINDICATES INIT ROLL ATTITUDE SET\tNON-BRANCH (0)\t\t100D, BIT 5\n# LATSW\t\tINHIBIT DOWNLIFT SWITCH IF NOT SET\t    BRANCH (1)\t\t101D, BIT 4\n# .05GSW\tINDICATES DRAG EXCEEDS .05 GS\t\t    BRANCH (0)\t\t102D, BIT 3\n#\n# GONEBY\tINDICATES GONE PAST TARGET (SET)\tSELF-INITIALIZING\t112D, BIT 8\n\n# Page 841\n# CONSTANTS AND GAINS\t\t\t\t\t\t\tVALUE\n# -------------------\t\t\t\t\t\t\t-----\n#\n# C1\t\tFACTOR IN ALP COMPUTATION\t\t\t\t1.25\n# C16\t\tCONSTD GAIN ON DRAG\t\t\t\t\t.01\n# C17\t\tCONSTD GAIN ON RDOT\t\t\t\t\t.001\n# C18\t\tBIAS VEL. FOR FINAL PHASE START\t\t\t\t500\tFPS\n# C20\t\tMAX DRAG FOR DOWN-LIFT\t\t\t\t\t175\tFPSS\n# CHOOK\t\tFACTOR IN AHOOK COMPUTATION\t\t\t\t.25\n# CH1\t\tFACTOR IN GAMMAL COMPUTATION\t\t\t\t1.0\n# COS15\t\tCOS( 15 DEG)\t\t\t\t\t\t.965\n# DLEWD0\tINITIAL VARIATION IN LEWD\t\t\t\t-.05\n# D2\t\tDRAG TO CHANGE LEWD\t\t\t\t\t175\tFPSS\n# DT\t\tCOMPUTATION CYCLE TIME INTERVAL\t\t\t\t2\tSEC.\n# GMAX\t\tMAXIMUM ACCELERATION\t\t\t\t\t257.6\tFPSS\t(8 G-S)\n# KA1\t\tFACTOR IN KA CALC\t\t\t\t\t1.3 GS\n# KA2\t\tFACTOR IN KA CALC\t\t\t\t\t.2  GS\n# KA3\t\tFACTOR IN D0 CALC\t\t\t\t\t90  FPSS\n# KA4\t\tFACTOR IN D0 CALC\t\t\t\t\t40  FPSS\n# KB1\t\tOPTIMIZED UPCONTROL GAIN\t\t\t\t3.4\n# KB2\t\tOPTIMIZED UPCONTROL GAIN\t\t\t\t.0034\n# KDMIN\t\tINCREMENT ON Q7 TO DETECT END OF KEPLER PHASE\t\t.5\tFPSS\n# KTETA\t\tTIME OF FLIGHT CONSTANT\t\t\t\t\t1000\n# KLAT1\t\tFACTOR IN KLAT CALC\t\t\t\t\t1/24\n# K44\t\tGAIN USED IN INITIAL ROLL SECTION\t\t\t19749550 FPS\n# LATBIAS\tLATERAL SWITCH BIAS TERM\t\t\t\t.41252961  NM\n# LEWD1\t\tNOMINAL UPCONTROL L/D\t\t\t\t\t.15\n# POINT1\tFACTOR TO REDUCE UPCONTROL GAIN\t\t\t\t.1\n# Q2\t\tFINAL PHASE RANGE - 23500 Q3\t\t\t\t-1002\tNM\n# Q3\t\tFINAL PHASE DRANGE/D V\t\t\t\t\t.07\tNM/FPS\n# Q5\t\tFINAL PHASE DRANGE/D GAMMA\t\t\t\t7050\tNM/RAD\n# Q6\t\tFINAL PHASE INITIAL FLIGHT PATH ANGLE\t\t\t.0349\tRAD\n# Q7F\t\tMIN DRAG FOR UPCONTROL\t\t\t\t\t6\tFPSS\n# Q7MIN\t\tMIN VALUE FOR Q7 IN FACTOR CALCULATION\t\t\t40\tFPSS\n# Q19\t\tFACTOR IN GAMMAL1 CALCULATION\t\t\t\t.5\n# Q21\t\tFACTOR IN Q2 CALCULATION.\t\t\t\t1000\tNM\n# Q22\t\tFACTOR IN Q2 CALCULATION.\t\t\t\t-1302\tNM\n# VFINAL1\tVELOCITY TO START FINAL PHASE ON INITIAL ENTRY\t\t27000\tFPS\n# VFINAL\tFACTOR IN INITIAL UP-DOWN CALC\t\t\t\t26600\tFPS\n# VLMIN\t\tMINIMUM VL\t\t\t\t\t\t18000\tFPS\n# VMIN\t\tVELOCITY TO SWITCH TO RELATIVE VEL\t\t\tVSAT/2\n# VRCONTRL\tRDOT TO START INTO HUNTEST\t\t\t\t700\tFPS\n#\t\tVRCONT = COMPUTER NAME\n# 25NM\t\tTOLERANCE TO STOP RANGE ITERATION\t\t\t25\tNM\n# VQUIT\t\tVELOCITY TO STOP STEERING\t\t\t\t1000\tFPS\n\n# Page 842\n# CONVERSION FACTORS AND SCALING CONSTANTS\n# ---------- ------- --- ------- ---------\n#\n# ATK\tANGLE IN RAD TO NM\t\t\t\t\t\t3437.7468\tNM/RAD\n# G5\tNOMINAL G VALUE FOR SCALING\t\t\t\t\t32.2\t\tFPSS\n# H5\tATMOSPHERE SCALE HEIGHT\t\t\t\t\t\t28500\t\tFT\n# J\tGRAVITY HARMONIC COEFFICIENT\t\t\t\t\t.00162346\n# KWE\tEQUATORIAL EARTH RATE\t\t\t\t\t\t1546.70168\tFPS\n# MUE\tEARTH GRAVITATIONAL CONSTANT\t\t\t\t\t3.986032233 \tE 14 CUBIC M/ SEC SEC\n# RE\tEARTH RADIUS\t\t\t\t\t\t\t21202900\tFT\n# REQ\tEARTH EQUATORIAL RADIUS\t\t\t\t\t\t20925738.2\tFT\n# VSAT\tSATELLITE VELOCITY AT RE\t\t\t\t\t25766.1973\tFPS\n# WIE\tEARTH RATE\t\t\t\t\t\t\t.0000729211505\tRAD/SEC\n#\n#\t\t\t\t\t\t(END GSOP AS-278, VOL 1, FIG. 5.6-3 \tCONSTANTS,GAINS, ETC.)\n#\n#\n# DISPLAY QUANTITIES\n# ------------------\n#\n# (SEE SECTION 4 OF THE GSOP FOR SIGN CONVENTIONS.)\n#\n# VARIABLE\tDESCRIPTION\t\t\t\tMAXIMUM VALUE\n# --------\t-----------\t\t\t\t-------------\n#\n# GMAX\t\tPREDICTED MAXIMUM ENTRY ACCEL\t\t163.84 GS\tN 60\n# VPRED\t\tPREDICTED VELOCITY AT ALTITUDE\t\t128 M/CENTISEC\tN 60\n# \t\t400K FT ABOVE FISCHER RADIUS.\n# GAMMAEI\tPREDICTED GAMMA AT ALTITUDE\t\t1 REVOLUTION\tN 60\n#\t\t400K FT ABOVE FISCHER RADIUS.\n# D\t\tDRAG ACCELERATION\t\t\t805 FPSS\tN 64\n# VMAGI\t\tINERTIAL VELOCITY MAGNITUDE\t\t128 M/CENTISEC\tN 64, N 68\n# THETAH\tDESIRED RANGE ANGLE NM\t\t\t1 REVOLUTION\tN 64, N 67\n# LAT\t\tPRESENT LATITUDE\t\t\t1 REVOLUTION\tN 67\n# LONG\t\tPRESENT LONGITUDE\t\t\t1 REVOLUTION\tN 67\n# RTOGO\t\tRANGE ANGLE TO SPLASH FROM\t\t1 REVOLUTION\tN 63\n# \t\tEMSALT FT ABOVE FISCHER RADIUS. (IN NM)\n# VIO\t\tPREDICTED VELOCITY AT ALTITUDE\t\t128 M/CENTISEC\tN 63\n#\t\tEMSALT FT ABOVE FISCHER RADIUS.\n# TTE\t\tTIME OF FREE FALL TO ALT\t\tB 28 CENTISEC\tN 63\n# \t\tEMSALT FT ABOVE FISCHER RADIUS.\n# ROLLC\t\tROLL COMMAND\t\t\t\t1 REVOLUTION\tN 66, N 68, N 69\n# LATANG\tCROSS-RANGE ERROR (XRNGERR)\t\t4 RADIANS\tN 66\n# DNRNGERR\tDOWN RANGE ERROR\t\t\t1 REVOLUTION\tN 66\n#\t\t(PREDANG - THETAH\tIN NM)\n# HDOT\t\tALTITUDE RATE\t\t\t\t128 M/CENTISEC\t\tN 68\n# Q7\t\tMINIMUM DRAG FOR UPCONTROL\t\t805 FPSS\tN 69\n# VL\t\tEXIT VELOCITY FOR UP-CONTROL\t\t2 VSAT\t\tN 69\n\n# Page 843\n# BODY ATTITUDE QUANTITIES (CM/POSE)\n# ----------------------------------\n#\n# VARIABLE\tDESCRIPTION\t\t\t\tMAXIMUM VALUE\n# --------\t----------\t\t\t\t------- -----\n#\n#  _\n# -VREL\t\tNEGATIVE VELOCITY REL TO ATMOS.\t\t2 VSAT\n# _\n# OLDUYA\tUSED FOR UYA BELOW 1000 FPS\t\t2\n# _\n# UXA/2\t\tUNIT VECTOR TRIAD\t\t\t2\n# _\n# UYA/2\t\t\tBASED ON\t\t\t2\n# _\n# UZA/2\t\t\t\tTHE TRAJECTORY.\t\t2\n# _\n# UBX/2\t\tUNIT VECTOR\t\t\t\t2\n# _\n# UBY/2\t\t\tBODY TRIAD\t\t\t2\n# _\n# UBZ/2\t\t\t\tFOR CM.\t\t\t2\n"
  },
  {
    "path": "Comanche055/ERASABLE_ASSIGNMENTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tERASABLE_ASSIGNMENTS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Mod history:\t2009-05-06 RSB\tStarted adapting from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages. Only through page 51 so far.\n#\t\t2009-05-07 RSB\tThrough page 92 so far.\n#\t\t2009-05-07 RSB\t(Again!) First draft completed.\n#\t\t2009-05-20 RSB\tFixed some bugs uncovered in trial assemblies:\n#\t\t\t\tEMDOT, STATEXIT, VGDISP, DVPREV, POSTCDH,\n#\t\t\t\tRETROFLG not defined correctly, changed the\n#\t\t\t\ttyping of labels 9X9LOC1 and 9X9LOC2,\n#\t\t\t\tR32FLBIT -> R31FLBIT.\n#\t\t2009-05-21 RSB\tCorrected definition of DELBRTMP, which\n#\t\t\t\tchained to quite a lot of off-by-one errors.\n#\t\t\t\tChanged a +8 to a +8D.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n\n# Page 37\n# CONVENTIONS AND NOTATIONS UTILIZED FOR ERASABLE ASSIGNMENTS.\n\n#\tEQUALS\tIS USED IN TWO WAYS.  IT IS OFTEN USED TO CHAIN A GROUP\n#\t\tOF ASSIGNMENTS SO THAT THE GROUP MAY BE MOVED WITH THE\n#\t\tCHANGING OF ONLY ONE CARD.  EXAMPLE:\n#\n#\t\t\tX\tEQUALS\tSTART\n#\t\t\tY\tEQUALS\tX\t+SIZE.X\n#\t\t\tZ\tEQUALS\tY\t+SIZE.Y\n#\n#\t\t(X, Y, AND Z ARE CONSECUTIVE AND BEGIN AT START.\n#\t\tSIZE.X AND SIZE.Y ARE THE RESPECTIVE SIZES OF X AND Y.\n#\t\tUSUALLY NUMERIC, IE. 1, 2, 6, 18D, ETC.)\n\n#\tEQUALS\tOFTEN IMPLIES THE SHARING OF REGISTERS (DIFFERENT NAMES\n#\t\tAND DIFFERENT DATA).  EXAMPLE:\n#\n#\t\t\tX\tEQUALS\tY\n\n#\t=\tMEANS THAT MULTIPLE NAMES HAVE BEEN GIVEN TO THE SAME DATA.\n#\t\t(THIS IS LOGICAL EQUIVALENCE, NOT SHARING.)  EXAMPLE:\n#\n#\t\t\tX\t=\tY\n\n#\tTHE SIE AND UTILIZATION OF AN ERASABLE ARE OFTEN INCLUDED IN\n#\tTHE COMMENTS IN THE FOLLOWING FORM:  M(SIZE)N.\n#\n#\t\tM\tREFERS TO THE MOBILITY OF THE ASSIGNMENT.\n#\t\t\tB\tMEANS THAT THE SYMBOL IS REFERENCED BY BASIC\n#\t\t\t\tINSTRUCTIONS AND THUS IS E-BANK SENSITIVE.\n#\t\t\tI\tMEANS THAT THE SYMBOL IS REFERENCED ONLY BY\n#\t\t\t\tINTERPRETIVE INSTRUCTIONS, AND IS THUS E-BANK\n#\t\t\t\tINSENSITIVE AND MAY APPEAR IN ANY E-BANK.\n#\n#\t\tSIZE\tIS THE NUMBER OF REGISTERS INCLUDED BY THE SYMBOL.\n#\n#\t\tN\tINDICATES THE NATURE OF PERMANENCE OF THE CONTENTS.\n#\t\t\tPL\tMEANS THAT THE CONTENTS ARE PAD LOADED.\n#\t\t\tDSP\tMEANS THAT THE REGISTER IS USED FOR A DISPLAY.\n#\t\t\tPRM\tMEANS THAT THE REGISTER IS PERMANENT.  IE., IT\n#\t\t\t\tIS USED DURING THE ENTIRE MISSION FOR ONE\n#\t\t\t\tPURPOSE AND CANNOT BE SHARED.\n#\t\t\tTMP\tMEANS THAT THE REGISTER IS USED TEMPORARILY OR\n#\t\t\t\tIS A SCRATCH REGISTER FOR THE ROUTINE TO WHICH\n#\t\t\t\tIT IS ASSIGNED.  THAT IS, IT NEED NOT BE SET\n#\t\t\t\tPRIOR TO INVOCATION OF THE ROUTINE NOR DOES IT\n#\t\t\t\tCONTAIN USEFUL OUTPUT TO ANOTHER ROUTINE.  THUS\n# Page 38\n#\t\t\t\tIT MAY BE SHARED WITH ANY OTHER ROUTINE WHICH\n#\t\t\t\tIS NOT ACTIVE IN PARALLEL\n#\t\t\tIN\tMEANS INPUT TO THE ROUTINE AND IT IS PROBABLY\n#\t\t\t\tTEMPORARY FOR A HIGHER-LEVEL ROUTINE/PROGRAM.\n#\t\t\tOUT\tMEANS OUTPUT FROM THE ROUTINE, PROBABLY\n#\t\t\t\tTEMPORARY FOR A HIGHER-LEVEL ROUTINE/PROGRAM.\n\n# Page 39\n\n# SPECIAL REGISTERS.\n\nA\t\tEQUALS\t0\nL\t\tEQUALS\t1\t\t# L AND Q ARE BOTH CHANNELS AND REGISTERS\nQ\t\tEQUALS\t2\nEBANK\t\tEQUALS\t3\nFBANK\t\tEQUALS\t4\nZ\t\tEQUALS\t5\t\t# ADJACENT TO FBANK AND BBANK FOR DXCH Z\nBBANK\t\tEQUALS\t6\t\t# (DTCB) AND DXCH FBANK (DTCF).\n\t\t\t\t\t# REGISTER 7 IS A ZERO-SOURCE, USED BY ZL.\n\nARUPT\t\tEQUALS\t10\t\t# INTERRUPT STORAGE\nLRUPT\t\tEQUALS\t11\nQRUPT\t\tEQUALS\t12\nSAMPTIME\tEQUALS\t13\t\t# SAMPLED TIME 1 & 2.\nZRUPT\t\tEQUALS\t15\t\t# (13 AND 14 ARE SPARES.)\nBANKRUPT\tEQUALS\t16\t\t# USUALLY HOLDS FBANK OR BBANK.\nBRUPT\t\tEQUALS\t17\t\t# RESUME ADDRESS AS WELL.\n\nCYR\t\tEQUALS\t20\nSR\t\tEQUALS\t21\nCYL\t\tEQUALS\t22\nEDOP\t\tEQUALS\t23\t\t# EDITS INTERPRETIVE OPERATION CODE PAIRS.\n\nTIME2\t\tEQUALS\t24\nTIME1\t\tEQUALS\t25\nTIME3\t\tEQUALS\t26\nTIME4\t\tEQUALS\t27\nTIME5\t\tEQUALS\t30\nTIME6\t\tEQUALS\t31\nCDUX\t\tEQUALS\t32\nCDUY\t\tEQUALS\t33\nCDUZ\t\tEQUALS\t34\nCDUT\t\tEQUALS\t35\t\t# OPTICS TRUNNION CDU (WAS OPTY).\nOPTY\t\t=\tCDUT\nCDUS\t\tEQUALS\t36\t\t# OPTICS SHAFT CDU (WAS OPTX).\nOPTX\t\t=\tCDUS\nPIPAX\t\tEQUALS\t37\nPIPAY\t\tEQUALS\t40\nPIPAZ\t\tEQUALS\t41\nBMAGX\t\tEQUALS\t42\nBMAGY\t\tEQUALS\t43\nBMAGZ\t\tEQUALS\t44\nINLINK\t\tEQUALS\t45\nRNRAD\t\tEQUALS\t46\nGYROCTR\t\tEQUALS\t47\nGYROCMD\t\tEQUALS\t47\nCDUXCMD\t\tEQUALS\t50\nCDUYCMD\t\tEQUALS\t51\n\n# Page 40\n\nCDUZCMD\t\tEQUALS\t52\nCDUTCMD\t\tEQUALS\t53\t\t# OPTICS TRUNNION COMMAND (WAS OPTYCMD)\nOPTYCMD\t\t=\tCDUTCMD\nTVCYAW\t\tEQUALS\tCDUTCMD\t\t# SPS YAW COMMAND IN TVC MODE\nCDUSCMD\t\tEQUALS\t54\t\t# OPTICS SHAFT COMMAND (WAS OPTXCMD).\nTVCPITCH\tEQUALS\tCDUSCMD\t\t# SPS PITCH COMMAND IN TVC MODE\nOPTXCMD\t\t=\tCDUSCMD\nEMSD\t\tEQUALS\t55\nTHRUST\t\tEQUALS\t55\nLEMONM\t\tEQUALS\t56\nLOCALARM\tEQUALS\t57\nBANKALRM\tEQUALS\t60\n\n# INTERPRETIVE REGISTERS ADDRESSED RELATIVE TO VAC AREA.\n\nLVSQUARE\tEQUALS\t34D\t\t# SQUARE OF VECTOR INPUT TO ABVAL AND UNIT\nLV\t\tEQUALS\t36D\t\t# LENGTH OF VECTOR INPUT TO UNIT.\nX1\t\tEQUALS\t38D\t\t# INTERPRETIVE SPECIAL REGISTER RELATIVE\nX2\t\tEQUALS\t39D\t\t# TO THE WORK AREA.\nS1\t\tEQUALS\t40D\nS2\t\tEQUALS\t41D\nQPRET\t\tEQUALS\t42D\n\n# Page 41\n\n# INPUT/OUTPUT CHANNELS\n\n# *** CHANNEL ZERO IS TO BE USED IN AN INDEXED OPERATION ONLY. ***\nLCHAN\t\tEQUALS\tL\nQCHAN\t\tEQUALS\tQ\nHISCALAR\tEQUALS\t3\nLOSCALAR\tEQUALS\t4\nPYJETS\t\tEQUALS\t5\nROLLJETS\tEQUALS\t6\nSUPERBNK\tEQUALS\t7\nOUT0\t\tEQUALS\t10\nDSALMOUT\tEQUALS\t11\nCHAN12\t\tEQUALS\t12\nCHAN13\t\tEQUALS\t13\nCHAN14\t\tEQUALS\t14\nMNKEYIN\t\tEQUALS\t15\nNAVKEYIN\tEQUALS\t16\nCHAN30\t\tEQUALS\t30\nCHAN31\t\tEQUALS\t31\nCHAN32\t\tEQUALS\t32\nCHAN33\t\tEQUALS\t33\nDNTM1\t\tEQUALS\t34\nDNTM2\t\tEQUALS\t35\n\n# END OF CHANNEL ASSIGNMENTS\n\n# Page 42\n\n# FLAGWORDS\n#\n# FLAGWRD0\tSTATE +0\t(000-014)\n# FLAGWRD1\tSTATE +1\t(015-029)\n# FLAGWRD2\tSTATE +2\t(030-044)\n# FLAGWRD3\tSTATE +3\t(045-059)\n# FLAGWRD4\tSTATE +4\t(060-074)\n# FLAGWRD5\tSTATE +5\t(075-089)\n# FLAGWRD6\tSTATE +6\t(090-104)\n# FLAGWRD7\tSTATE +7\t(105-119)\n# FLAGWRD8\tSTATE +8D\t(120-134)\n# FLAGWRD9\tSTATE +9D\t(135-149)\n\n#\tSORTED LIST OF\n#\tINTERPRETIVE SWITCH BIT ASSIGNMENTS\n\n# INTERPRETIVE SWITCH BIT ASSIGNMENTS\n#\n# FLAGWORD\tDEC NUM\t\tBIT & FLAG\tEQUIVALENT FLAGWORDS\n#\n# 22DSPFLG\t032D\t\tBIT 13 FLAG 2\n# 360SW\t\t134D\t\tBIT 1 FLAG 8\n# 3AXISFLG\t084D\t\tBIT 6 FLAG 5\n# ADVTRK\t125D\t\tBIT 10 FLAG 8\n# AMOONFLG\t13D\t\tBIT 2 FLAG 0\n# APSESW\t130D\t\tBIT 5 FLAG 8\n# ASTNFLAG\t108D\t\tBIT 12 FLAG 7\n# ATTCHFLG\t118D\t\tBIT 2 FLAG 7\n# AVEGFLAG\t029D\t\tBIT 1 FLAG 1\n# AVEMIDSW\t149D\t\tBIT 1 FLAG 9\n# AVFLAG\t040D\t\tBIT 5 FLAG 2\n# CALCMAN2\t043D\t\tBIT 2 FLAG 2\n# CMDAPARM\t093D\t\tBIT 12 FLAG 6\n# CMOONFLG\t123D\t\tBIT 12 FLAG 8\n# CM/DSTBY\t103D\t\tBIT 2 FLAG 6\n# COGAFLAG\t131D\t\tBIT 4 FLAG 8\n# COMPUTER\t082D\t\tBIT 8 FLAG 5\n# CPHIFLAG\t000D\t\tBIT 15 FLAG 0\n# CULTFLAG\t053D\t\tBIT 7 FLAG 3\n# D6OR9FLG\t058D\t\tBIT 2 FLAG 3\n# DAPBIT1\t090D\t\tBIT 15 FLAG 6\n# DAPBIT2\t091D\t\tBIT 14 FLAG 6\n# DIM0FLAG\t059D\t\tBIT 1 FLAG 3\n# DMENFLAG\t081D\t\tBIT 9 FLAG 5\n# DRIFTFLG\t030D\t\tBIT 15 FLAG 2\n# DSKYFLAG\t075D\t\tBIT 15 FLAG 5\n# EGSW\t\t097D\t\tBIT 8 FLAG 6\tKNOTNFLG R57FLAG\n\n# Page 43\n\n# ENG1FLAG\t018D\t\tBIT 12 FLAG 1\n# ENG2FLAG\t019D\t\tBIT 11 FLAG 1\n# ENGONFLG\t083D\t\tBIT 7 FLAG 5\n# ERADFLAG\t017D\t\tBIT 13 FLAG 1\n# ETPIFLAG\t038D\t\tBIT 7 FLAG 2\tFIRSTFLG OPTNSW\n# F2RTE\t\t010D\t\tBIT 5 FLAG 0\n# FINALFLG\t039D\t\tBIT 6 FLAG 2\n# FIRSTFLG\t038D\t\tBIT 7 FLAG 2\tETPIFLAG OPTNSW\n# FREEFLAG\t012D\t\tBIT 3 FLAG 0\n# GAMDIFSW\t094D\t\tBIT 11 FLAG 6\n# GLOKFAIL\t046D\t\tBIT 14 FLAG 3\n# GONEBY\t112D\t\tBIT 8 FLAG 7\n# GONEPAST\t095D\t\tBIT 10 FLAG 6\n# GRRBKFLG\t085D\t\tBIT 5 FLAG 5\n# GUESSW\t028D\t\tBIT 2 FLAG 1\n# GYMDIFSW\t104D\t\tBIT 1 FLAG 6\n# .05GSW\t102D\t\tBIT 3 FLAG 6\n# HIND\t\t099D\t\tBIT 6 FLAG 6\n# IDLEFAIL\t024D\t\tBIT 6 FLAG 1\n# IDLEFLAG\t113D\t\tBIT 7 FLAG 7\n# IGNFLAG\t107D\t\tBIT 13 FLAG 7\n# IMPULSW\t036D\t\tBIT 9 FLAG 2\n# IMUSE\t\t007D\t\tBIT 8 FLAG 0\n# INCORFLG\t079D\t\tBIT 11 FLAG 5\n# INFINFLG\t128D\t\tBIT 7 FLAG 8\n# INRLSW\t100D\t\tBIT 5 FLAG 6\n# INTFLAG\t151D\t\tBIT 14 FLAG 10\n# INTYPFLG\t056D\t\tBIT 4 FLAG 3\n# ITSWICH\t106D\t\tBIT 14 FLAG 7\n# KFLAG\t\t014D\t\tBIT 1 FLAG 0\n# KNOWNFLG\t097D\t\tBIT 8 FLAG 6\tEGSW R57FLAG\n# LATSW\t\t101D\t\tBIT 4 FLAG 6\n# LMOONFLG\t124D\t\tBIT 11 FLAG 8\n# LUNAFLAG\t048D\t\tBIT 12 FLAG 3\n# MAXDBFLG\t138D\t\tBIT 12 FLAG 9\n# MGLVFLAG\t088D\t\tBIT 2 FLAG 5\n# MID1FLAG\t147D\t\tBIT 3 FLAG 9\n# MIDAVFLG\t148D\t\tBIT 2 FLAG 9\n# MIDFLAG\t002D\t\tBIT 13 FLAG 0\n# MKOVFLAG\t072D\t\tBIT 3 FLAG 4\n# MOONFLAG\t003D\t\tBIT 12 FLAG 0\n# MRKIDFLG\t060D\t\tBIT 15 FLAG 4\n# MRKNVFLG\t066D\t\tBIT 9 FLAG 4\n# MRUPTFLG\t070D\t\tBIT 5 FLAG 4\n# MWAITFLG\t064D\t\tBIT 11 FLAG 4\n# N22ORN17\t144D\t\tBIT 6 FLAG 9\n# NEEDLFLG\t006D\t\tBIT 9 FLAG 0\n# NEWIFLG\t122D\t\tBIT 13 FLAG 8\n# NJETSFLG\t015D\t\tBIT 15 FLAG 1\n# NODOFLAG\t044D\t\tBIT 1 FLAG 2\n\n# Page 44\n\n# NODOP01\t018D\t\tBIT 12 FLAG 1\n# NORFHOR\t004D\t\tBIT 11 FLAG 0\n# NORMSW\t110D\t\tBIT 10 FLAG 7\n# NOSWITCH\t098D\t\tBIT 7 FLAG 6\n# NRMIDFLG\t062D\t\tBIT 13 FLAG 4\n# NRMNVFLG\t067D\t\tBIT 8 FLAG 4\n# NRUPTFLG\t071D\t\tBIT 4 FLAG 4\n# NWAITFLG\t065D\t\tBIT 10 FLAG 4\n# OPTNSW\t038D\t\tBIT 7 FLAG 2\tETPIFLAG FIRSTFLG\n# ORBWFLAG\t054D\t\tBIT 6 FLAG 3\n# ORDERSW\t129D\t\tBIT 6 FLAG 8\n# P21FLAG\t033D\t\tBIT 12 FLAG 2\n# P22MKFLG\t049D\t\tBIT 11 FLAG 3\n# P39/79SW\t126D\t\tBIT 9 FLAG 8\n# PDSPFLAG\t063D\t\tBIT 12 FLAG 4\n# PFRATFLG\t041D\t\tBIT 4 FLAG 2\n# PINBRFLG\t069D\t\tBIT 6 FLAG 4\n# PRECIFLG\t052D\t\tBIT 8 FLAG 3\n# PRFTRKAT\t060D\t\tBIT 10 FLAG 5\n# PRIODFLG\t061D\t\tBIT 14 FLAG 4\n# PRONVFLG\t068D\t\tBIT 7 FLAG 4\n# QUITFLAG\t145D\t\tBIT 5 FLAG 9\n# R21MARK\t031D\t\tBIT 14 FLAG 2\n# R22CAFLG\t143D\t\tBIT 7 FLAG 9\n# R23FLG\t021D\t\tBIT 9 FLAG 1\n# R31FLAG\t146D\t\tBIT 4 FLAG 9\n# R53FLAG\t009D\t\tBIT 6 FLAG 0\n# R57FLAG\t097D\t\tBIT 8 FLAG 6\tKNOWNFLG EGSW\n# R60FLAG\t086D\t\tBIT 4 FLAG 5\n# REFSMFLG\t047D\t\tBIT 13 FLAG 3\n# REINTFLG\t158D\t\tBIT 7 FLAG 10\n# RELVELSW\t096D\t\tBIT 9 FLAG 6\n# RENDWFLG\t089D\t\tBIT 1 FLAG 5\n# RNDVZFLG\t008D\t\tBIT 7 FLAG 0\n# RPQFLAG\t120D\t\tBIT 15 FLAG 6\n# RVSW\t\t111D\t\tBIT 9 FLAG 7\n# SAVECFLG\t140D\t\tBIT 10 FLAG 9\n# SKIPVHF\t035D\t\tBIT 10 FLAG 2\n# SLOPESW\t027D\t\tBIT 3 FLAG 1\n# SOLNSW\t087D\t\tBIT 3 FLAG 5\n# SOURCFLG\t142D\t\tBIT 8 FLAG 9\n# STATEFLG\t055D\t\tBIT 5 FLAG 3\n# STEERSW\t034D\t\tBIT 11 FLAG 2\n# STIKFLAG\t016D\t\tBIT 14 FLAG 1\n# STRULLSW\t092D\t\tBIT 13 FLAG 6\n# SURFFLAG\t127D\t\tBIT 8 FLAG 8\n# SWTOVER\t135D\t\tBIT 15 FLAG 9\n# TARG1FLG\t020D\t\tBIT 10 FLAG 1\n\n# Page 45\n\n# TARG2FLG\t021D\t\tBIT 9 FLAG 1\n# TERMIFLG\t105D\t\tBIT 15 FLAG 7\n# TFFSW\t\t119D\t\tBIT 1 FLAG 7\n# TIMRFLAG\t109D\t\tBIT 11 FLAG 7\n# TRACKFLG\t025D\t\tBIT 5 FLAG 1\n# TRM03FLG\t026D\t\tBIT 4 FLAG 1\n# TRUNFLAG\t011D\t\tBIT 4 FLAG 0\n# UPDATFLG\t023D\t\tBIT 7 FLAG 1\n# UPLOCKFL\t116D\t\tBIT 4 FLAG 7\n# V37FLAG\t114D\t\tBIT 6 FLAG 7\n# V59FLAG\t078D\t\tBIT 12 FLAG 5\n# V67FLAG\t136D\t\tBIT 14 FLAG 9\n# V82EMFLG\t137D\t\tBIT 13 FLAG 9\n# V94FLAG\t139D\t\tBIT 11 FLAG 9\n# V96ONFLG\t132D\t\tBIT 3 FLAG 8\n# VEHUPFLG\t022D\t\tBIT 8 FLAG 1\n# VERIFLAG\t117D\t\tBIT 3 FLAG 7\n# VFLAG\t\t050D\t\tBIT 10 FLAG 3\n# VHFRFLAG\t141D\t\tBIT 9 FLAG 9\n# VINTFLAG\t057D\t\tBIT 3 FLAG 3\n# XDELVFLG\t037D\t\tBIT 8 FLAG 2\n# XDSPFLAG\t074D\t\tBIT 1 FLAG 4\n\n# Page 46\n\n# INTERPRETIVE SWITCH BIT ASSIGNMENTS\nFLAGWRD0\t=\tSTATE +0\t# (000-014)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n# BIT 15 FLAG 0\nCPHIFLAG\t=\t000D\t\t# OUTPUT OF CALCGA IS\tOUTPUT OF CALCGA IS\n\t\t\t\t\t# CPHIX\t\t\tTHETAD\nCPHIBIT\t\t=\tBIT15\n\n# BIT 14 FLAG 0\nJSWITCH\t\t=\t001D\t\t# INTEGRATION OF W\tINTEGRATION OF STATE\n\t\t\t\t\t# MATRIX\t\tVECTOR\nJSWCHBIT\t=\tBIT14\n\n# BIT 13 FLAG 0\nMIDFLAG\t\t=\t002D\t\t# INTEGRATION WITH\tINTEGRATION WITHOUT\n\t\t\t\t\t# SOLAR PERTURBATIONS\tSOLAR PERTURBATIONS\n\nMIDFLBIT\t=\tBIT13\n\n# BIT 12 FLAG 0\nMOONFLAG\t=\t003D\t\t# MOON IS SPHERE OF \tEARTH IS SPHERE OF\n\t\t\t\t\t# INFLUENCE\t\tINFLUENCE\n\nMOONBIT\t\t=\tBIT12\n\n# BIT 11 FLAG 0\nNORFHOR\t\t=\t004D\t\t# FAR HORIZON\t\tNEAR HORIZON\n\nNORFBIT\t\t=\tBIT11\n\n# BIT 10 FLAG 0\nZMEASURE\t=\t005D\t\t# MEASUREMENT PLANET\tMEASUREMENT PLANET\n\t\t\t\t\t# AND PRIMARY PLANET\tAND PRIMARY PLANET\n\t\t\t\t\t# DIFFERENT\t\tSAME\n\nZMEASBIT\t=\tBIT10\n\n# BIT 9 FLAG 0\nNEEDLFLG\t=\t006D\t\t# TOTAL ATTITUDE\tA/P FOLLOWING ERROR\n\t\t\t\t\t# ERROR DISPLAYED\tDISPLAYED\n\nNEEDLBIT\t=\tBIT9\n\n# BIT 8 FLAG 0\nIMUSE\t\t=\t007D\t\t# IMU IN USE\t\tIMU NOT IN USE\n\n# Page 47\n\nIMUSEBIT\t=\tBIT8\n\n# BIT 7 FLAG 0\nRNDVZFLG\t=\t008D\t\t# P20 RUNNING\t\tP20 NOT RUNNING\n\nRNDVZBIT\t=\tBIT7\n\n# BIT 6 FLAG 0\nR53FLAG\t\t=\t009D\t\t# V51 INITIATED\t\tV51 NOT INITIATED\n\nR53FLBIT\t= \tBIT8\n\n# BIT 5 FLAG 0\nF2RTE\t\t=\t010D\t\t# IN TIME CRITICAL\tNOT IN TIME CRITICAL\n\t\t\t\t\t# MODE\t\t\tMODE\n\nF2RTEBIT\t=\tBIT5\n\n# BIT 4 FLAG 0\nTRUNFLAG\t=\t011D\t\t# DRIVING OF TRUNNION\tDRIVING OF TRUNNION\n\t\t\t\t\t# ALLOWED\t\tNOT ALLOWED\n\nTRUNBIT\t\t=\tBIT4\n\n# BIT 3 FLAG 0\nFREEFLAG\t=\t012D\t\t# (TEMPORARY FLAG USED IN MANY ROUTINES)\n\nFREEFBIT\t=\tBIT3\n\n# BIT 2 FLAG 0\nAMOONFLG\t=\t13D\t\t# STATE VECTOR IN\tSTATE VECTOR IN\nAMOONBIT\t=\tBIT2\t\t# LUNAR SPHERE AT\tEARTH SPHERE AT\n\t\t\t\t\t# MIDTOAVE\t\tMIDTOAVE\n\n# BIT 1 FLAG 0\nKFLAG\t\t=\t014D\t\t# SEARCH SECTOR MORE\tSEARCH SECTOR LESS\n\t\t\t\t\t# THAN 180 DEGREES\tTHAN 180 DEGREES\n\nKBIT\t\t=\tBIT1\n\nFLAGWRD1\t=\tSTATE +1\t# (015-029)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 1\nNJETSFLG\t=\t015D\t\t# TWO JET RCS BURN\tFOUR JET RCS BURN\n\nNJETSBIT\t=\tBIT15\n\n# Page 48\n\n# BIT 14 FLAG 1\nSTIKFLAG\t=\t016D\t\t# RHC CONTROL\t\tCMC CONTROL\nSTIKBIT\t\t=\tBIT14\n\n# BIT 13 FLAG 1\nERADFLAG\t=\t017D\t\t# EARTH, COMPUTE\tEARTH, USED FIXED\n\t\t\t\t\t#   FISCHER ELLIPSOID\t  RADIUS\n\t\t\t\t\t#   RADIUS\n\t\t\t\t\t# MOON, USE FIXED\tMOON, USE RLS FOR\n\t\t\t\t\t#   RADIUS\t\t  LUNAR RADIUS\n\nERADFBIT\t=\tBIT13\n\n# BIT 12 FLAG 1\nNODOP01\t\t=\t018D\t\t# P01 NOT ALLOWED\tP01 ALLOWED\nNOP01BIT\t=\tBIT12\n\n# BIT 11 FLAG 1\nENG2FLAG\t=\t019D\t\t# RCS BURN\t\tSPS BURN\n\nENG2BIT\t\t=\tBIT11\n\n# BIT 10 FLAG 1\nTARG1FLG\t=\t020D\t\t# SIGHTING LEM\t\tNOT SIGHTING LEM\n\nTARG1BIT\t=\tBIT10\n\n# BIT 9 FLAG 1\nTARG2FLG\t= \t021D\t\t# SIGHTING LANDMARK\tSIGHTING STAR\n\nTARG2BIT\t= \tBIT9\n\n# BIT 9 FLAG 1\nR23FLG\t\t=\t021D\t\t# R23 MARKING\n\nR23BIT\t\t=\tBIT9\n\n# BIT 8 FLAG 1\nVEHUPFLG\t=\t022D\t\t# CSM STATE VECTOR\tLEM STATE VECTOR\n\t\t\t\t\t# BEING UPDATED\t\tBEING UPDATED\n\nVEHUPBIT\t=\tBIT8\n\n# BIT 7 FLAG 1\nUPDATFLG\t=\t023D\t\t# UPDATING BY MARKS\tUPDATING BY MARKS\n\t\t\t\t\t# ALLOWED\t\tNOT ALLOWED\n# Page 49\n\nUPDATBIT\t=\tBIT7\n\n# BIT 6 FLAG 1\nIDLEFAIL\t=\t024D\t\t# INHIBIT R41\t\tENABLE R41 (ENGFAIL)\n\nIDLEBIT\t\t=\tBIT6\n\n# BIT 5 FLAG 1\nTRACKFLG\t=\t025D\t\t# TRACKING ALLOWED\tTRACKING NOT ALLOWED\n\nTRACKBIT\t=\tBIT5\n\n# BIT 4 FLAG 1\nTRM03FLG\t=\t026D\t\t# REQUEST TO\t\tNO REQUEST TO\n\t\t\t\t\t# TERMINATE P03 HAS\tTERMINATE P03 HAS\n\t\t\t\t\t# BEEN ENTERED\t\tBEEN ENTERED\n\nTRM03BIT\t=\tBIT4\n\n# BIT 3 FLAG 1\nSLOPESW\t\t= \t027D\t\t# ITERATE WITH BIAS\tITERATE WITH REGULA\n\t\t\t\t\t# METHOD IN ITERATOR\tFALSI METHOD IN\n\t\t\t\t\t#\t\t\tITERATOR\n\nSLOPEBIT\t=\tBIT3\n\n# BIT 2 FLAG 1\nGUESSW\t\t=\t028D\t\t# NO STARTING VALUE\tSTARTING VALUE FOR\n\t\t\t\t\t# FOR ITERATION\t\tITERATION EXISTS\n\nGUESSBIT\t=\tBIT2\n\n# BIT 1 FLAG 1\nAVEGFLAG\t=\t029D\t\t# AVERAGEG (SERVICER)\tAVERAGEG (SERVICER)\n\t\t\t\t\t# TO CONTINUE\t\tTO CEASE\n\nAVEGBIT\t\t=\tBIT1\n\nFLAGWRD2\t=\tSTATE +2\t# (030-044)\n\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 2\nDRIFTFLG\t=\t030D\t\t# T3RUPT CALLS GYRO\tT3RUPT DOES NO GYRO\n\t\t\t\t\t# COMPENSATION\t\tCOMPENSATION\n\nDRFTBIT\t\t=\tBIT15\n\n# Page 50\n\n# BIT 14 FLAG 2\nR21MARK\t\t=\t031D\t\t# OPTION ONE FOR\tOPTION TWO FOR\n\t\t\t\t\t# MARKRUPT\t\tMARKRUPT\n\nR21BIT\t\t=\tBIT14\n\n# BIT 13 FLAG 2\n22DSPFLG\t=\t032D\t\t# DISPLAY DR,DV\t\tDO NOT DISPLAY DR,DV\n\n22DSPBIT\t=\tBIT13\n\n# BIT 12 FLAG 2\nP21FLAG\t\t=\t033D\t\t# SUCCEEDING PASS\t1ST PASS THRU P21,\n\t\t\t\t\t# THRU P21, USE BASE\tCALCULATE BASE\nP21BIT\t\t=\tBIT12\t\t# VECTOR FOR CALC.\tVECTOR\n\nSTEERSW\t\t=\t034D\t\t# STEERING TO BE DONE\tSTEERING OMITTED\n\nSTEERBIT\t=\tBIT11\n\n# BIT 10 FLAG 2\nSKIPVHF\t\t=\t035D\t\t# DISREGARD RADAR\tRADAR READ TO\n\t\t\t\t\t# READ BECAUSE OF\tPROCEED NORMALLY\nSKIPVBIT\t=\tBIT10\t\t# SFTWRE OR HDWRE\n\t\t\t\t\t# RESTART\n\n# BIT 9 FLAG 2\nIMPULSW\t\t=\t036D\t\t# MINIMUM IMPULSE\tSTEERING BURN (NO\n\t\t\t\t\t# BURN (CUTOFF TIME\tCUTOFF TIME YET\n\t\t\t\t\t# SPECIFIED)\t\tAVAILABLE)\n\nIMPULBIT\t=\tBIT9\n\n# BIT 8 FLAG 2\nXDELVFLG\t=\t037D\t\t# EXTERNAL DELTAV VG\tLAMBERT (AIMPOINT)\n\t\t\t\t\t# COMPUTATION\t\tVG COMPUTATION\n\nXDELVBIT\t=\tBIT8\n\n# BIT 7 FLAG 2\nETPIFLAG\t=\t038D\t\t# ELEVATION ANGLE\tTPI TIME SUPPLIED\n\t\t\t\t\t# SUPPLIED FOR P34,74\tFOR P34,74\n\n# BIT 7 FLAG 2\nFIRSTFLG\t=\tETPIFLAG\t# FIRST PASS\t\tSUCCEEDING PASS THRU\n\t\t\t\t\t# THRU S40.9\t\tS40.9\n\nFIRSTBIT\t=\tBIT7\n\n# BIT 7 FLAG 2\n# Page 51\nOPTNSW\t\t=\tETPIFLAG\t# SOI PHASE P38/P78\tSOR PHASE OF P38/P78\n\nFINALBIT\t=\tBIT6\n\n# BIT 6 FLAG 2\nFINALFLG\t=\t039D\t\t# LAST PASS THROUGH\tINTERIM PASS THROUGH\n\t\t\t\t\t# RENDEZVOUS PROGRAM\tRENDEZVOUS PROGRAM\n\t\t\t\t\t# COMPUTATIONS\t\tCOMPUTATIONS\n\nAVFLBIT\t\t=\tBIT5\n\n# BIT 5 FLAG 2\nAVFLAG\t\t=\t040D\t\t# LEM IS ACTIVE\t\tCSM IS ACTIVE\n\t\t\t\t\t# VEHICLE\t\tVEHICLE\n\n# BIT 4 FLAG 2\nPFRATFLG\t=\t041D\t\t# PREFERRED ATTITUDE\tPREFERRED ATTITUDE\n\t\t\t\t\t# COMPUTED\t\tNOT COMPUTED\n\nPFRATBIT\t=\tBIT4\n\n# BIT 3 FLAG 2\n\t\t=\t042D\n\n# BIT 2 FLAG 2\nCALCMAN2\t=\t043D\t\t# PERFORM MANEUVER\tBYPASS STARTING\n\t\t\t\t\t# STARTING PROCEDURE\tPROCEDURE\n\nCALC2BIT\t=\tBIT2\n\n# BIT 1 FLAG 2\nNODOFLAG\t=\t044D\t\t# V37 NOT PERMITTED \tV37 PERMITTED\n\nNODOBIT\t\t=\tBIT1\n\nFLAGWRD3\t=\tSTATE +3\t# (045-059)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 3\n\t\t=\t045D\n\n# BIT 14 FLAG 3\nGLOKFAIL\t=\t046D\t\t# GIMBAL LOCK HAS\tNOT IN GIMBAL LOCK\n\t\t\t\t\t# OCCURRED\n\nGLOKFBIT\t=\tBIT14\n\n# Page 52\n\n# BIT 13 FLAG 3\nREFSMFLG\t=\t047D\t\t# REFSMMAT GOOD\t\tREFSMMAT NO GOOD\n\nREFSMBIT\t=\tBIT13\n\n# BIT 12 FLAG 3\nLUNAFLAG\t=\t048D\t\t# LUNAR LAT-LONG\tEARTH LAT-LONG\n\nLUNABIT\t\t=\tBIT12\n\n# BIT 11 FLAG 3\nP22MKFLG\t=\t049D\t\t# P22 DOWNLINKED MARK\tP22 DOWNLINK MARK\n\t\t\t\t\t# DATA WAS JUST TAKEN\tDATA NOT JUST TAKEN\n\nP22MKBIT\t=\tBIT11\n\n# BIT 10 FLAG 3\nVFLAG\t\t=\t050D\t\t# LESS THAN TWO STARS\tTWO STARS IN FIELD\n\t\t\t\t\t# IN FIELD OF VIEW\tOF VIEW\n\nVFLAGBIT\t=\tBIT10\n\n# BIT 9 FLAG 3\n\t\t=\t051D\n\n# BIT 8 FLAG 3\nPRECIFLG\t=\t052D\t\t# CSMPREC OR LEMPREC\tINTEGRV\n\t\t\t\t\t# OR INTEGRVS CALLED\tCALLED\n\nPRECIBIT\t=\tBIT8\n\n# BIT 7 FLAG 3\nCULTFLAG\t=\t053D\t\t# STAR OCCULTED\t\tSTAR NOT OCCULTED\n\nCULTBIT\t\t=\tBIT7\n\n# BIT 6 FLAG 3\nORBWFLAG\t=\t054D\t\t# W MATRIX VALID FOR\tW MATRIX INVALID FOR\n\t\t\t\t\t# ORBITAL NAVIGATION\tORBITAL NAVIGATION\n\nORBWFBIT\t=\tBIT6\n\n# BIT 5 FLAG 3\nSTATEFLG\t=\t055D\t\t# PERMANENT STATE\tPERMANENT STATE\n\t\t\t\t\t# VECTOR UPDATED\tVECTOR NOT UPDATED\n\nSTATEBIT\t=\tBIT5\n\n# BIT 4 FLAG 3\nINTYPFLG\t=\t056D\t\t# CONIC INTEGRATION\tENCKE INTEGRATION\n# Page 53\nINTYBIT\t\t=\tBIT4\n\n# BIT 3 FLAG 3\nVINTFLAG\t=\t057D\t\t# CSM STATE VECTOR\tLEM STATE VECTOR\n\t\t\t\t\t# BEING INTEGRATED\tBEING INTEGRATED\n\nVINTFBIT\t=\tBIT3\n\n# BIT 2 FLAG 3\nD6OR9FLG\t=\t058D\t\t# DIMENSION OF W IS 9\tDIMENSION OF W IS 6\n\t\t\t\t\t# FOR INTEGRATION\tFOR INTEGRATION\n\nD6OR9BIT\t=\tBIT2\n\n# BIT 1 FLAG 3\nDIM0FLAG\t=\t059D\t\t# W MATRIX IS TO BE\tW MATRIX IS NOT TO\n\t\t\t\t\t# USED\t\t\tBE USED\n\nFLAGWRD4\t=\tSTATE +4\t# (060-074)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\nDIM0BIT\t\t=\tBIT1\n\n# BIT 15 FLAG 4\nMRKIDFLG\t=\t060D\t\t# MARK DISPLAY IN \tNO MARK DISPLAY IN\n\t\t\t\t\t# ENDIDLE\t\tENDIDLE\n\nMRKIDBIT\t=\tBIT15\n\n# BIT 14 FLAG 4\nPRIODFLG\t=\t061D\t\t# PRIORITY DISPLAY IN\tNO PRIORITY DISPLAY\n\t\t\t\t\t# ENDIDLE\t\tIN ENDIDLE\n\nPRIODBIT\t=\tBIT14\n\n# BIT 13 FLAG 4\nNRMIDFLG\t=\t062D\t\t# NORMAL DISPLAY IN\tNO NORMAL DISPLAY\n\t\t\t\t\t# ENDIDLE\t\tIN ENDIDLE\n\nNRMIDBIT\t=\tBIT13\n\n# BIT 12 FLAG 4\nPDSPFLAG\t=\t063D\t\t# CAN'T INTERRUPT\tSEE M. HAMILTON\n\t\t\t\t\t# PRIORITY DISPLAY\n\nPDSPFBIT\t=\tBIT12\n\n# BIT 11 FLAG 4\nMWAITFLG\t=\t064D\t\t# HIGHER PRIORITY\tNO HIGHER PRIORITY\n# Page 54\n\t\t\t\t\t# DISPLAY OPERATING\tDISPLAY OPERATING\n\t\t\t\t\t# WHEN MARK DISPLAY\tWHEN MARK DISPLAY\n\t\t\t\t\t# INITIATED\t\tINITIATED\nMWAITBIT\t=\tBIT11\n\n# BIT 10 FLAG 4\nNWAITFLG\t=\t065D\t\t# HIGHER PRIORITY\tNO HIGHER PRIORITY\n\t\t\t\t\t# DISPLAY OPERATING\tDISPLAY OPERATING\n\t\t\t\t\t# WHEN NORMAL\t\tWHEN NORMAL DISPLAY\n\t\t\t\t\t# DISPLAY INITIATED\tINITIATED\n\nNWAITBIT\t=\tBIT10\n\n# BIT 9 FLAG 4\nMRKNVFLG\t=\t066D\t\t# ASTRONAUT USING\tASTRONAUT NOT USING\n\t\t\t\t\t# KEYBOARD WHEN MARK\tKEYBOARD WHEN MARK\n\t\t\t\t\t# DISPLAY INITIATED\tDISPLAY INITIATED\n\nMRKNVBIT\t=\tBIT9\n\n# BIT 8 FLAG 4\nNRMNVFLG\t=\t067D\t\t# ASTRONAUT USING\tASTRONAUT NOT USING\n\t\t\t\t\t# KEYBOARD WHEN\t\tKEYBOARD WHEN\n\t\t\t\t\t# NORMAL DISPLAY\tNORMAL DISPLAY\n\t\t\t\t\t# INITIATED\t\tINITIATED\n\nNRMNVBIT\t=\tBIT8\n\n# BIT 7 FLAG 4\nPRONVFLG\t=\t068D\t\t# ASTRONAUT USING\tASTRONAUT NOT USING\n\t\t\t\t\t# KEYBOARD WHEN\t\tKEYBOARD WHEN\n\t\t\t\t\t# PRIORITY DISPLAY\tPRIORITY DISPLAY\n\t\t\t\t\t# INITIATED\t\tINITIATED\n\nPRONVBIT\t=\tBIT7\n\n# BIT 6 FLAG 4\nPINBRFLG\t=\t069D\t\t# ASTRONAUT HAS\t\tASTRONAUT HAS NOT\n\t\t\t\t\t# INTERFERED WITH\tINTERFERED WITH\n\t\t\t\t\t# EXISTING DISPLAY\tEXISTING DISPLAY\n\nPINBRBIT\t=\tBIT6\n\n# BIT 5 FLAG 4\nMRUPTFLG\t=\t070D\t\t# MARK DISPLAY\t\tMARK DISPLAY NOT\n\t\t\t\t\t# INTERRUPTED BY\tINTERRUPTED BY\n\t\t\t\t\t# PRIORITY DISPLAY\tPRIORITY DISPLAY\n\nMRUPTBIT\t=\tBIT5\n# Page 55\n\n# BIT 4 FLAG 4\nNRUPTFLG\t=\t071D\t\t# NORMAL DISPLAY\tNORMAL DISPLAY NOT\n\t\t\t\t\t# INTERRUPTED BY\tINTERRUPTED BY\n\t\t\t\t\t# PRIORITY OR MARK\tPRIORITY OR MARK\n\t\t\t\t\t# DISPLAY\t\tDISPLAY\n\nNRUPTBIT\t=\tBIT4\n\n# BIT 3 FLAG 4\nMKOVFLAG\t=\t072D\t\t# MARK DISPLAY OVER\tNO MARK DISPLAY OVER\n\t\t\t\t\t# NORMAL\t\tNORMAL\n\nMKOVBIT\t\t=\tBIT3\n\n# BIT 2 FLAG 4\t\t\t\t# DISPLAY BIT\n\t\t=\t073D\t\t# CLEARED AT INTERVALS\n\n# BIT 1 FLAG 4\nXDSPFLAG\t=\t074D\t\t# MARK DISPLAY NOT TO\tNO SPECIAL MARK\n\t\t\t\t\t# BE INTERRUPTED\tINFORMATION\n\nXDSPBIT\t\t=\tBIT1\n\nFLAGWRD5\t=\tSTATE +5\t# (075-099)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 5\nDSKYFLAG\t=\t075D\t\t# DISPLAYS SENT TO\tNO DISPLAYS TO DSKY\n\t\t\t\t\t# DSKY\nDSKYBIT\t\t=\tBIT15\n\n# BIT 14 FLAG 5\nRETROFLG\t=\t076D\t\t# P37 PREMANEUVER\tORBIT NOT RETROGRADE\nRETROBIT\t=\tBIT14\t\t# ORBIT IS RETROGRADE\n\n# BIT 13 FLAG 5\nSLOWFLG\t\t=\t077D\t\t# P37 TRANSEARTH\tSLOW DOWN IS NOT\nSLOWBIT\t\t=\tBIT13\t\t# COAST SLOW DOWN\tDESIRED\n\t\t\t\t\t# IS DESIRED\n\n# BIT 12 FLAG 5\nV59FLAG\t\t=\t078D\t\t# CALIBRATING FOR\tNORMAL MARKING FOR\n\t\t\t\t\t# P23\t\t\tP23\n\nV59FLBIT\t=\tBIT12\n\n# BIT 11 FLAG 5\n# Page 56\nINCORFLG\t=\t079D\t\t# FIRST INCORPORATION\tSECOND INCORPORATION\n\nINCORBIT\t=\tBIT11\n\n# BIT 10 FLAG 5\nRNGSCFLG\t=\t080D\t\t# ANOTHER TAG FOR PRFTRKAT\n\n# BIT 10 FLAG 5\nPRFTRKAT\t=\tRNGSCFLG\t# PREF TRACK ATT\t+K AXIS TRACK ATT\n\nPRFTRBIT\t=\tBIT10\n\n# BIT 9 FLAG 5\nDMENFLG\t\t=\t081D\t\t# DIMENSION OF W IS 9\tDIMENSION OF W IS 6\n\t\t\t\t\t# FOR INCORPORATION\tFOR INCORPORATION\n\nDMENFBIT\t=\tBIT9\n\n# BIT 8 FLAG 5\nCOMPUTER\t=\t082D\t\t# COMPUTER IS CMC\tCOMPUTER IS LGC\n\nCOMPTBIT\t=\tBIT8\n\n# BIT 7 FLAG 5\nENGONFLG\t=\t083D\t\t# ENGINE TURNED ON\tENGINE TURNED OFF\n\nENGONBIT\t=\tBIT7\n\n# BIT 6 FLAG 5\n3AXISFLG\t=\t084D\t\t# MANEUVER SPECIFIED\tMANEUVER SPECIFIED\n\t\t\t\t\t# BY THREE AXES\t\tBY ONE AXIS\n\n3AXISBIT\t=\tBIT6\n\n# BIT 5 FLAG 5\nGRRBKFLG\t=\t085D\t\t# BACKUP GRR RECEIVED\tBACKUP GRR NOT\n\t\t\t\t\t#\t\t\tRECEIVED\n\nGRRBKBIT\t=\tBIT5\n\n# BIT 4 FLAG 5\nR60FLAG\t\t=\t086D\t\t# R61 MUST USE R60\tNORMAL R61\n\nR60FLBIT\t=\tBIT4\n\n# BIT 3 FLAG 5\nSOLNSW\t\t=\t087D\t\t# LAMBERT DOES NOT\tLAMBERT CONVERGES OR\n# Page 57\n\t\t\t\t\t# CONVERGE, OR TIME-\tTIME-RADIUS NON\n\t\t\t\t\t# RADIUS NEARLY CIRC.\tCIRCULAR.\nSOLNSBIT\t=\tBIT3\n\n# BIT 2 FLAG 5\nMGLVFLAG\t=\t088D\t\t# LOCAL VERTICAL\tMIDDLE GIMBAL ANGLE\n\t\t\t\t\t# COORDINATES \t\tCOMPUTED\n\t\t\t\t\t# COMPUTED\n\nMGLVFBIT\t=\tBIT2\n\n# BIT 1 FLAG 5\nRENDWFLG\t=\t089D\t\t# W MATRIX VALID\tW MATRIX INVALID\n\t\t\t\t\t# FOR RENDEZVOUS\tFOR RENDEZVOUS\n\t\t\t\t\t# NAVIGATION\t\tNAVIGATION\n\nRENDWBIT\t=\tBIT1\n\nFLAGWRD6\t=\tSTATE +6\t# (090-104)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 6\nDAPBIT1\t\t=\t090D\t\t# 1 SATURN 1 TVC\t0 RCS\t0 NO\n\nDAP1BIT\t\t=\tBIT15\n\n# BIT 14 FLAG 6\nDAPBIT2\t\t=\t091D\t\t# 1 A/P    0 A/P\t1 A/P\t0 A/P\n\nDAP2BIT\t\t=\tBIT14\n\n# BIT 13 FLAG 6\nSTRULLSW\t=\t092D\t\t# DO STEERULL\t\tDO ULAGEOFF ONLY\n\nSTRULBIT\t=\tBIT13\n\n# BIT 13 FLAG 6\nENTRYDSP\t=\tSTRULLSW\t# DO ENTRY DISPLAY\tOMIT ENTRY DISPLAY\n\t\t\t\t\t# VIA ENTRYVN.\n\nENDSPBIT\t=\tBIT13\n\n# BIT 12 FLAG 6\nCMDAPARM\t=\t093D\t\t# ALLOW ENTRY FIRINGS\tINHIBIT ENTRY FIRING\n\t\t\t\t\t# AND CALCULATIONS\tAND CONTROL FUNCTION\n# Page 58\nCMDARMBIT\t=\tBIT12\n\n# BIT 11 FLAG 6\nGAMDIFSW\t=\t094D\t\t# CALCULATE GAMDOT\tGAMDOT NOT TO BE\n\t\t\t\t\t#\t\t\tCALCULATED\n\nGMDIFBIT\t=\tBIT11\n\n# BIT 10 FLAG 6\nGONEPAST\t=\t095D\t\t# LATERAL CONTROL\tLATERAL CONTROL\n\t\t\t\t\t# CALCULATIONS TO BE\tCALCULATIONS TO BE\n\t\t\t\t\t# OMITTED\t\tDONE\n\nGONEBIT\t\t=\tBIT10\n\n# BIT 9 FLAG 6\nRELVELSW\t=\t096D\t\t# TARGETING USES\tTARGETING USES\n\t\t\t\t\t# EARTH-RELATIVE\tINERTIAL VELOCITY\n\t\t\t\t\t# VELOCITY.\n\nRELVBIT\t\t=\tBIT9\n\n# BIT 8 FLAG 6\nEGSW\t\t=\t097D\t\t# IN FINAL PHASE\tNOT IN FINAL PHASE\n\nEGFLGBIT\t=\tBIT8\n\n# BIT 8 FLAG 6\nKNOWNFLG\t=\tEGSW\t\t# LANDMARK KNOWN\tLANDMARK UNKNOWN\n\nKNOWNBIT\t=\tBIT8\n\n# BIT 8 FLAG 6\nR57FLAG\t\t=\tKNOWNFLG\t# DO NOT DO R57\t\tDO R57, TRUNION\n\t\t\t\t\t# TRUNION BIAS HAS\tBIAS NEEDED\n\t\t\t\t\t# BEEN OBTAINED.\n\nR57BIT\t\t=\tBIT8\n\n# BIT 7 FLAG 6\nNOSWITCH\t=\t098D\t\t# LATERAL ROLL\t\tLATERAL ROLL MANEUVER\n\t\t\t\t\t# MANEUVER INHIBITED\tPERMITTED IN ENTRY\n\t\t\t\t\t# IN ENTRY\n\nNOSWBIT\t\t=\tBIT7\n\n# BIT 6 FLAG 6\nHIND\t\t=\t099D\t\t# ITERATING HUNTEST\tITERATING OF HUNTEST\n\t\t\t\t\t# CALCULATIONS TO BE\tCALCULATIONS TO BE\n\t\t\t\t\t# DONE AFTER RANGE\tOMITTED AFTER RANGE\n\t\t\t\t\t# PREDICTION\t\tPREDICTION\n# Page 59\n\nHINDBIT\t\t= \tBIT6\n\n# BIT 5 FLAG 6\nINRLSW\t\t=\t100D\t\t# INITIAL ROLL\t\tINITIAL ROLL\n\t\t\t\t\t# V(LV)\t\t\tV(LV)\n\nINRLBIT\t\t=\tBIT5\n\n\t\t\t\t\t# ATTITUDE NOT HELD\tATTITUDE HELD\n\n# BIT 4 FLAG 6\nLATSW\t\t=\t101D\t\t# DOWNLIFT NOT\t\tDOWNLIFT INHIBITED\n\t\t\t\t\t# INHIBITED\n\nLATSWBIT\t=\tBIT4\n\n# BIT 3 FLAG 6\n.05GSW\t\t=\t102D\t\t# DRAG OVER .05G\tDRAG LESS THAN .05G\n\n.05GBIT\t\t=\tBIT3\n\n# BIT 3 FLAG 6\n\t\t=\t102D\n\n# BIT 2 FLAG 6\nCM/DSTBY\t=\t103D\t\t# ENTRY DAP ACTIVATED\tENTRY DAP NOT\n\t\t\t\t\t#\t\t\tACTIVATED\n\nCM/DSBIT\t=\tBIT2\n\n# BIT 1 FLAG 6\nGYMDIFSW\t=\t104D\t\t# CDU DIFFERENCES AND \tCDU DIFFERENCES AND\n\t\t\t\t\t# BODY RATES COMPUTED\tBODY RATES NOT\n\t\t\t\t\t#\t\t\tCOMPUTED\n\nGYMDIBIT\t=\tBIT1\n\nFLAGWRD7\t=\tSTATE +7\t# (105-119)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 7\nTERMIFLG\t=\t105D\t\t# TERMINATE R52\t\tDO NOT TERMINATE R52\n\nTERMIBIT\t=\tBIT15\n\n# BIT 14 FLAG 7\nITSWICH\t\t=\t106D\t\t# ACCEPT NEXT LAMBERT\tTEST LAMBERT ANSWER\n\t\t\t\t\t# TPI SEARCH SOLUTION\tAGAINST LIMITS\n# Page 60\n\nITSWBIT\t\t=\tBIT14\n\n# BIT 13 FLAG 7\nIGNFLAG\t\t=\t107D\t\t# TIG HAS ARRIVED\tTIG HAS NOT ARRIVED\n\nIGNFLBIT\t=\tBIT13\n\n# BIT 12 FLAG 7\nASTNFLAG\t=\t108D\t\t# ASTRONAUT HAS\t\tASTRONAUT HAS NOT\n\t\t\t\t\t# OKAYED IGNITION\tOKAYED IGNITION\n\nASTNBIT\t\t=\tBIT12\n\n# BIT 11 FLAG 7\nTIMRFLAG\t=\t109D\t\t# CLOKTASK OPERATING\tCLOKTASK INOPERATIVE\n\nTIMRBIT\t\t=\tBIT11\n\n# BIT 10 FLAG 7\nNORMSW\t\t=\t110D\t\t# UNIT NORMAL INPUT\tLAMBERT COMPUTE ITS\n\t\t\t\t\t# TO LAMBERT.\t\tOWN UNIT NORMAL.\n\nNORMSBIT\t=\tBIT10\n\n# BIT 9 FLAG 7\nRVSW\t\t=\t111D\t\t# DO NOT COMPUTE FINAL\tCOMPUTE FINAL STATE\n\t\t\t\t\t# STATE VECTOR IN\tVECTOR IN TIME-THETA\n\t\t\t\t\t# TIME-THETA\n\nRVSWBIT\t\t=\tBIT9\n\n# BIT 8 FLAG 7\nGONEBY\t\t=\t112D\t\t# PASSED TARGET\t\tAPPROACHING TARGET\n\nGONBYBIT\t=\tBIT8\n\n# BIT 7 FLAG 7\n\t\t=\t113D\n\n# BIT 6 FLAG 7\nV37FLAG\t\t=\t114D\t\t# AVERAGEG (SERVICER)\tAVERAGEG (SERVICER)\n\t\t\t\t\t# RUNNING\t\tOFF\n\nV37FLBIT\t=\tBIT6\n\n# BIT 5 FLAG 7\n\t\t=\t115D\n# Page 61\n\t\t=\tBIT5\n\n# BIT 4 FLAG 7\nUPLOCKFL\t=\t116D\t\t# K-KBAR-K FAIL\t\tNO K-KBAR-K FAIL\n\nUPLOCBIT\t=\tBIT4\n\n# BIT 3 FLAG 7\nVERIFLAG\t=\t117D\t\t# CHANGED WHEN V33E OCCURS AT END OF P27\n\nVERIFBIT\t=\tBIT3\n\n# BIT 2 FLAG 7\nATTCHFLG\t=\t118D\t\t# LM,CM ATTACHED\tLM,CM NOT ATTACHED\n\nATTCHBIT\t=\tBIT2\n\n# BIT 1 FLAG 7\nTFFSW\t\t=\t119D\t\t# CALCULATE TPERIGEE\tCALCULATE TFF\n\nTFFSWBIT\t=\tBIT1\n\nFLAGWRD8\t=\tSTATE +8D\t# (120-134)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 8\nRPQFLAG\t\t=\t120D\t\t# RPQ NOT COMPUTED\tRPQ COMPUTED\n\nRPQFLBIT\t=\tBIT15\n\n# BIT 14 FLAG 8\n\t\t=\t121D\n\n# BIT 13 FLAG 8\nNEWIFLG\t\t=\t122D\t\t# FIRST PASS THROUGH\tSUCCEEDING ITERATION\n\t\t\t\t\t# INTEGRATION\t\tOF INTEGRATION\n\nNEWIBIT\t\t=\tBIT13\n\n# BIT 12 FLAG 8\nCMOONFLG\t=\t123D\t\t# PERMANENT CSM STATE\tPERMANENT CSM STATE\n\t\t\t\t\t# IN LUNAR SPHERE\tIN EARTH SPHERE\n\nCMOONBIT\t=\tBIT12\n\n# BIT 11 FLAG 8\nLMOONFLG\t=\t124D\t\t# PERMANENT LM STATE\tPERMANENT LM STATE\n\t\t\t\t\t# IN LUNAR SPHERE\tIN EARTH SPHERE\n\nLMOONBIT\t=\tBIT11\n\n# Page 62\n\n# BIT 10 FLAG 8\nADVTRK\t\t=\t125D\t\t# ADVANCE GROUND TRACK\tNOT ADVANCED\n\t\t\t\t\t# SIGHTING WANTED\tGROUND TRACK\n\nADVTKBIT\t=\tBIT10\n\n# BIT 9 FLAG 8\nP39/79SW\t=\t126D\t\t# P39/79 OPERATING\tP38/78 OPERATING\n\nP39SWBIT\t=\tBIT9\n\n# BIT 8 FLAG 8\nSURFFLAG\t=\t127D\t\t# LM ON LUNAR SURFACE\tLM NOT ON LUNAR\n\t\t\t\t\t#\t\t\tSURFACE\n\nSURFFBIT\t=\tBIT8\n\n# BIT 7 FLAG 8\nINFINFLG\t=\t128D\t\t# NO CONIC SOLUTION\tCONIC SOLUTION\n\t\t\t\t\t# (CLOSURE THROUGH\tEXISTS.\n\t\t\t\t\t# INFINITY REQUIRED).\n\nINFINBIT\t=\tBIT7\n\n# BIT 6 FLAG 8\nORDERSW\t\t=\t129D\t\t# ITERATOR USES 2ND\tITERATOR USES 1ST\n\t\t\t\t\t# ORDER MINIMUM MODE\tORDER STANDARD MODE\n\nORDERBIT\t=\tBIT6\n\n# BIT 5 FLAG 8\nAPSESW\t\t=\t130D\t\t# RDESIRED OUTSIDE\tRDESIRED INSIDE\n\t\t\t\t\t# PERICENTER-APOCENTER\tPERICENTER-APOCENTER\n\t\t\t\t\t# RANGE IN TIME-RAD\tRANGE IN TIME-RADIUS\n\nAPSESBIT\t=\tBIT5\n\n# BIT 4 FLAG 8\nCOGAFLAG\t=\t131D\t\t# NO CONIC SOLUTION \tCONIC SOLUTION\n\t\t\t\t\t# TOO CLOSE TO\t\tEXISTS (COGA DOES\n\t\t\t\t\t# RECTILINEAR (COGA\tNOT OVERFLOW).\n\t\t\t\t\t# OVERFLOWS).\nCOGAFBIT\t=\tBIT4\n\n# Page 63\n\n# BIT 3 FLAG 8\nV96ONFLG\t=\t132D\t\t# P00 INTEGRATION HAS\tP00 INTEGRATION IS\n\t\t\t\t\t# BEEN INHIBITED BY\tPROCEEDING REGULARLY\n\t\t\t\t\t# V96\n\n# BIT 2 FLAG 8\n\t\t=\t133D\n\n# BIT 1 FLAG 8\n360SW\t\t=\t134D\t\t# TRANSFER ANGLE NEAR\tTRANSFER ANGLE NOT\n\t\t\t\t\t# 360 DEGREES\t\tNEAR 360 DEGREES\n\n360SWBIT\t=\tBIT1\n\nFLAGWRD9\t=\tSTATE +9D\t# (135-149)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 9\nSWTOVER\t\t=\t135D\t\t# SWITCHOVER HAS\tNO SWITCHOVER YET\n\t\t\t\t\t# OCCURRED.\n\nSWTOVBIT\t=\tBIT15\n\n# BIT 14 FLAG 9\n\t\t=\t136D\n\nV67FLBIT\t=\tBIT14\n\n# BIT 13 FLAG 9\nV82EMFLG\t=\t137D\t\t# MOON VICINITY\t\tEARTH VICINITY\n\nV82EMBIT\t=\tBIT13\n\n# BIT 12 FLAG 9\nMAXDBFLG\t=\t138D\t\t# MAX DB SELECTED\tMIN DB SELECTED\n\nMAXDBBIT\t=\tBIT12\n\n# BIT 11 FLAG 9\nV94FLAG\t\t=\t139D\t\t# V94 ALLOWED DURING\tV94 NOT ALLOWED\n\t\t\t\t\t# P23\n\nV94FLBIT\t=\tBIT11\n\n# BIT 10 FLAG 9\nSAVECFLG\t=\t140D\t\t# P23 DISPLAY AND\tP23 DISPLAY AND\n\t\t\t\t\t# DATA STORAGE AFTER\tDATA STORAGE BEFORE\n# Page 64\n\t\t\t\t\t# MARK IS DONE\t\tMARK IS DONE\n\nSAVECBIT\t=\tBIT10\n\n# BIT 9 FLAG 9\nVHFRFLAG\t=\t141D\t\t# ALLOW R22 TO \t\tSTOP ACCEPTANCE\n\t\t\t\t\t# ACCEPT RANGE\t\tOF RANGE DATA\n\t\t\t\t\t# DATA\n\nVHFRBIT\t\t=\tBIT9\n\n# BIT 8 FLAG 9\nSOURCFLG\t=\t142D\t\t# SOURCE OF INPUT\tSOURCE OF INPUT\n\t\t\t\t\t# DATA IS FROM\t\tDATA IS FROM\n\t\t\t\t\t# VHF RADAR\t\tOPTICS MARK\n\nSOURCBIT\t=\tBIT8\n\n# BIT 7 FLAG 9\nR22CAFLG\t=\t143D\t\t# R-22 CALCULATIONS\tR-22 CALCULATIONS\n\t\t\t\t\t# ARE GOING ON\t\tARE NOT GOING ON\n\nR22CABIT\t=\tBIT7\n\n# BIT 6 FLAG 9\nN22ORN17\t=\t144D\t\t# COMPUTE TOTAL\t\tCOMPUTE TOTAL\n\t\t\t\t\t# ATTITUDE ERRORS\tATTITUDE ERRORS\n\t\t\t\t\t# W.R.T. N22 (V62)\tW.R.T. N17 (V63)\n\nN2217BIT\t=\tBIT6\n\n# BIT 5 FLAG 9\nQUITFLAG\t=\t145D\t\t# TERMINATE AND EXIT\tCONTINUE INTEGRATION\nQUITBIT\t\t=\tBIT5\t\t# FROM INTEGRATION\n\n# BIT 4 FLAG 9\nR31FLAG\t\t=\t146D\t\t# R31 SELECTED (V63)\tR34 SELECTED (V65)\n\nR31FLBIT\t=\tBIT4\n\n# BIT 3 FLAG 9\nMID1FLAG\t=\t147D\t\t# INTEGRATE TO TDEC\tINTEGRATE TO THE\n\t\t\t\t\t#\t\t\tTHEN-PRESENT TIME\n\nMID1FBIT\t=\tBIT3\n\n# BIT 2 FLAG 9\nMIDAVFLG\t=\t148D\t\t# INTEGRATION ENTERED\tINTEGRATION WAS\n\t\t\t\t\t# FROM ONE OF MIDTOAV\tNOT ENTERED VIA\n\t\t\t\t\t# PORTALS\t\tMIDTOAV\n# Page 65\n\nMIDAVBIT\t=\tBIT2\n\n# BIT 1 FLAG 9\nAVEMIDSW\t=\t149D\t\t# AVETOMID CALLING\tNO AVETOMID W INTEGER\n\t\t\t\t\t# FOR W MATRIX INTEGR\tALLOW SET UP RN,VN,\n\t\t\t\t\t# DON'T WRITE OVER RN,\tPIPTIME\n\t\t\t\t\t# VN,PIPTIME\n\nAVEMDBIT\t=\tBIT1\n\nFLGWRD10\t=\tSTATE\t+10D\t# (150-164)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\nRASFLAG\t\t=\tSTATE\t+10D\n\n# BIT 15 FLAG 10\n\t\t=\t150D\n\n# BIT 14 FLAG 10\nINTFLAG\t\t=\t151D\t\t# INTEGRATION IN\tINTEGRATION NOT IN\n\t\t\t\t\t# PROGRESS\t\tPROGRESS\n\nINTFLBIT\t=\tBIT14\n\n# BIT 13 FLAG 10\n\t\t=\t152D\n\n# BIT 12 FLAG 10\n\t\t=\t153D\n\n# BIT 11 FLAG 10\n\t\t=\t154D\n\n# BIT 10 FLAG 10\n\t\t=\t155D\n\n# BIT 9 FLAG 10\n\t\t=\t156D\n\n# BIT 8 FLAG 10\n\t\t=\t157D\n# Page 66\n\n# BIT 7 FLAG 10\nREINTFLG\t=\t158D\t\t# INTEGRATION ROUTINE\tINTEGRATION ROUTINE\n\t\t\t\t\t# TO BE RESTARTED\tNOT TO BE RESTARTED\nREINTBIT\t=\tBIT7\n\n# BIT 6 FLAG 10\n\t\t=\t159D\n\n# BIT 5 FLAG 10\n\t\t=\t160D\n\n# BIT 4 FLAG 10\n\t\t=\t161D\n\n# BIT 3 FLAG 10\n\t\t=\t162D\n\n# BIT 2 FLAG 10\n\t\t=\t163D\n\n# BIT 1 FLAG 10\n\t\t=\t164D\n\nFLGWRD11\t=\tSTATE\t+11D\t# (165-179)\n\t\t\t\t\t# (SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 11\nS32.1F1\t\t=\t165D\t\t# DELTAN AT CSI TIME\tDVT1 LESS THAN MAX\nS32BIT1\t\t=\tBIT15\t\t# ONE EXCEEDS MAX\n\n# BIT 14 FLAG 11\nS32.1F2\t\t=\t166D\t\t# FIRST PASS OF \tREITERATION OF\nS32BIT2\t\t=\tBIT14\t\t# NEWTON INTEGRATION\tNEWTON\n\n# BIT 13 FLAG 11\nS32.1F3A\t=\t167D\t\t# BIT 13 AND BIT 12 FUNCTION AS AN ORDERED\nS32BIT3A\t=\tBIT13\t\t# PAIR (13,12) INDICATING THE POSSIBLE OC-\n\t\t\t\t\t# CURRENCE OF 2NEWTON ITERATIONS FOR S32.1\n# BIT 12 FLAG 11\t\t\t# IN THE PROGRAM IN THE FOLLOWING ORDER:\nS32.1F3B\t=\t168D\t\t# (0,1) (I.E. BIT 13 RESET, BIT 12 SET)\n# Page 67\nS3229T3B\t=\tBIT12\t\t#      = FIRST NEWTON ITERATION BEING DONE\n\t\t\t\t\t# (0,0)= FIRST PASS OF 2ND NEWTON ITER.\n\t\t\t\t\t# (1,1)= 50 FPS STAGE OF 2ND NEWT ITER.\n\t\t\t\t\t# (1,0)= REMAINDER OF 2ND NEWT ITER.\n\n# BIT 11 FLAG 11\n\t\t=\t169D\n\n# BIT 10 FLAG 11\n\t\t=\t170D\n\n# BIT 9 FLAG 11\n\t\t=\t171D\n\n# BIT 8 FLAG 11\n\t\t=\t172D\n\n# BIT 7 FLAG 11\n\t\t=\t173D\n\n# BIT 6 FLAG 11\n\t\t=\t174D\n\n# BIT 5 FLAG 11\n\t\t=\t175D\n\n# BIT 4 FLAG 11\n\t\t=\t176D\n\n# BIT 3 FLAG 11\n\t\t=\t177D\n\n# BIT 2 FLAG 11\n\t\t=\t178D\n\n# BIT 1 FLAG 11\n\t\t=\t179D\n\n# Page 68\n# GENERAL ERASABLE ASSIGNMENTS\n\n\t\tSETLOC\t61\n# INTERRUPT TEMPORARY STORAGE POOL.\t(11D)\n\n# (ITEMP1 THROUGH RUPTREG4)\n\n# ANY OF THESE MAY BE USED AS TEMPORARIES DURING INTERRUPT OR WITH INTERRUPT INHIBITED. THE ITEMP SERIES\n# IS USED DURING CALLS TO THE EXECUTIVE AND WAITLIST -- THE RUPTREGS ARE NOT.\n\nITEMP1\t\tERASE\nWAITEXIT\tEQUALS\tITEMP1\nEXECTEM1\tEQUALS\tITEMP1\n\nITEMP2\t\tERASE\nWAITBANK\tEQUALS\tITEMP2\nEXECTEM2\tEQUALS\tITEMP2\n\nITEMP3\t\tERASE\nRUPTSTOR\tEQUALS\tITEMP3\nWAITADR\t\tEQUALS\tITEMP3\nNEWPRIO\t\tEQUALS\tITEMP3\n\nITEMP4\t\tERASE\nLOCCTR\t\tEQUALS\tITEMP4\nWAITTEMP\tEQUALS\tITEMP4\n\nITEMP5\t\tERASE\nNEWLOC\t\tEQUALS\tITEMP5\n\nITEMP6\t\tERASE\nNEWLOC+1\tEQUALS\tITEMP6\t\t# DP ADDRESS.\n\n\t\tSETLOC\t67\nNEWJOB\t\tERASE\t\t\t# MUST BE AT LOC 67 DUE TO WIRING.\n\nRUPTREG1\tERASE\nRUPTREG2\tERASE\nRUPTREG3\tERASE\nRUPTREG4\tERASE\nKEYTEMP1\tEQUALS\tRUPTREG4\nDSRUPTEM\tEQUALS\tRUPTREG4\n\n# FLAGWORD RESERVATIONS.\t\t(12D)\n\nSTATE\t\tERASE\t+11D\n\n# PAD LOAD FOR DAPS\nEMDOT\t\tERASE\t\t\t# I(1)PL (SPS FLOW RATE, SC AT B+3 KG/CS)\n\n# Page 69\n\n# EXIT FOR V83\nSTATEXIT\tERASE\t\t\t# I(1) STQ ADDRESS FOR STATEXIT\n\n# UNUSED ERASABLES ********(2)\nERASFILL\tERASE\t+1\n\n# EXEC TEMPORARIES WHICH MAY BE USED BETWEEN CCS NEWJOBS\n# (INTB15+ THROUGH RUPTMXTM)\t\t(32D)\nINTB15+\t\tERASE\t\t\t# REFLECTS 15TH BIT OF INDEXABLE ADDRESSES\nDSEXIT\t\tEQUALS\tINTB15+\t\t# RETURN FOR DSPIN\nEXITEM\t\tEQUALS\tINTB15+\t\t# RETURN FOR SCALE FACTOR ROUTINE SELECT\nBLANKRET\tEQUALS\tINTB15+\t\t# RETURN FOR 2BLANK\n\nINTBIT15\tERASE\t\t\t# SIMILAR TO ABOVE.\nWRDRET\t\tEQUALS\tINTBIT15\t# RETURN FOR 5BLANK.\nWDRET\t\tEQUALS\tINTBIT15\t# RETURN FOR DSPWD\nDECRET\t\tEQUALS\tINTBIT15\t# RETURN FOR PUTCOM(DEC LOAD)\n21/22REG\tEQUALS\tINTBIT15\t# TEMP FOR CHARIN\n\n# THE REGISTERS BETWEEN ADDRWD AND PRIORITY MUST STAY IN THE FOLLOWING ORDER FOR INTERPRETIVE TRACE.\n\nADDRWD\t\tERASE\t\t\t# 12 BIT INTERPRETIVE OPERAND SUB-ADDRESS.\nPOLISH\t\tERASE\t\t\t# HOLDS CADR MADE FROM POLISH ADDRESSE.\nUPDATRET\tEQUALS\tPOLISH\t\t# RETURN FOR UPDATNN, UPDATVB\nCHAR\t\tEQUALS\tPOLISH\t\t# TEMP FOR CHARIN\nERCNT\t\tEQUALS\tPOLISH\t\t# COUNTER FOR ERROR LIGHT RESET\nDECOUNT\t\tEQUALS\tPOLISH\t\t# COUNTER FOR SCALING AND DISPLAY (DEC)\n\nFIXLOC\t\tERASE\t\t\t# WORK AREA ADDRESS\nOVFIND\t\tERASE\t\t\t# SET NON-ZERO ON OVERFLOW.\n\nVBUF\t\tERASE\t+5\t\t# TEMPORARY STORAGE USED FOR VECTORS.\nSGNON\t\tEQUALS\tVBUF\t\t# TEMP FOR +,- ON\nNOUNTEM\t\tEQUALS\tVBUF\t\t# COUNTER FOR MIXNOUN FETCH\nDISTEM\t\tEQUALS\tVBUF\t\t# COUNTER FOR OCTAL DISPLAY VERB\nDECTEM\t\tEQUALS\tVBUF\t\t# COUNTER FOR FETCH (DEC DISPLAY VERBS)\n\nSGNOFF\t\tEQUALS\tVBUF +1\t\t# TEMP FOR +,- ON\nNVTEMP\t\tEQUALS\tVBUF +1\t\t# TEMP FOR NVSUB\nSFTEMP1\t\tEQUALS\tVBUF +1\t\t# STORAGE FOR SF CONST HI PART (=SFTEMP2-1)\nHITEMIN\t\tEQUALS\tVBUF +1\t\t# TEMP FOR LOAD OF HRS,MIN,SEC\n\t\t\t\t\t# MUST = LOTEMIN-1.\n\nCODE\t\tEQUALS\tVBUF +2\t\t# FOR DSPIN\nSFTEMP2\t\tEQUALS\tVBUF +2\t\t# STORAGE FOR SF CONST LO PART (=SFTEMP1+1)\nLOTEMIN\t\tEQUALS\tVBUF +2\t\t# TEMP FOR LOAD OF HRS,MIN,SEC\n# Page 70\n\t\t\t\t\t# \tMUST = HITEMIN+1\nMIXTEMP\t\tEQUALS\tVBUF +3\t\t# FOR MIXNOUN DATA\nSIGNRET\t\tEQUALS\tVBUF +3\t\t# RETURN FOR +,- ON\n\n# ALSO MIXTEMP+1 = VBUF+4, MIXTEMP+2 = VBUF+5\n\nBUF\t\tERASE\t+2\t\t# TEMPORARY SCALAR STORAGE\nBUF2\t\tERASE\t+1\nINDEXLOC\tEQUALS\tBUF\t\t# CONTAINS ADDRESS OF SPECIFIED INDEX.\nSWWORD\t\tEQUALS\tBUF\t\t# ADDRESS OF SWITCH WORD\nSWBIT\t\tEQUALS\tBUF +1\t\t# SWITCH BIT WITHIN THE SWITCH WORD\nMPTEMP\t\tERASE\t\t\t# TEMPORARY USED IN MULTIPLY AND SHIFT\nDMPNTEMP\tEQUALS\tMPTEMP\t\t# DMPSUB TEMPORARY\nDOTINC\t\tERASE\t\t\t# COMPONENT INCREMENT FOR DOT SUBROUTINE\nDVSIGN\t\tEQUALS\tDOTINC\t\t# DETERMINES SIGN OF DDV RESULT\nESCAPE\t\tEQUALS\tDOTINC\t\t# USED IN ARCSIN/ARCCOS.\nENTRET\t\tEQUALS\tDOTINC\t\t# EXIT FROM ENTER\n\nDOTRET\t\tERASE\t\t\t# RETURN FROM DOT SUBROUTINE\nDVNORMCT\tEQUALS\tDOTRET\t\t# DIVIDEND NORMALIZATION COUNT IN DDV.\nESCAPE2\t\tEQUALS\tDOTRET\t\t# ALTERNATE ARCSIN/ARCCOS SWITCH\nWDCNT\t\tEQUALS\tDOTRET\t\t# CHAR COUNTER FOR DSPWD\nINREL\t\tEQUALS\tDOTRET\t\t# INPUT BUFFER SELECTOR ( X,Y,Z, REG )\n\nMATINC\t\tERASE\t\t\t# VECTOR INCREMENT IN MXV AND VXM\nMAXDVSW\t\tEQUALS\tMATINC\t\t# +0 IF DP QUOTIENT IS NEAR ONE -- ELSE -1.\nPOLYCNT\t\tEQUALS\tMATINC\t\t# POLYNOMIAL LOOP COUNTER\nDSPMMTEM\tEQUALS\tMATINC\t\t# DSPCOUNT SAVE FOR DSPMM\nMIXBR\t\tEQUALS\tMATINC\t\t# INDICATOR FOR MIXED OR NORMAL NOUN\n\nTEM1\t\tERASE\t\t\t# EXEC TEMP\nPOLYRET\t\tEQUALS\tTEM1\nDSREL\t\tEQUALS\tTEM1\t\t# REL ADDRESS FOR DSPIN\n\nTEM2\t\tERASE\t\t\t# EXEC TEMP\nDSMAG\t\tEQUALS\tTEM2\t\t# MAGNITUDE STORE FOR DSPIN\nIDADDTEM\tEQUALS\tTEM2\t\t# MIXNOUN INDIRECT ADDRESS STORAGE\n\nTEM3\t\tERASE\t\t\t# EXEC TEMP\nCOUNT\t\tEQUALS\tTEM3\t\t# FOR DSPIN\n\nTEM4\t\tERASE\t\t\t# EXEC TEMP\nLSTPTR\t\tEQUALS\tTEM4\t\t# LIST POINTER FOR GRABUSY\nRELRET\t\tEQUALS\tTEM4\t\t# RETURN FOR RELDSP\nFREERET\t\tEQUALS\tTEM4\t\t# RETURN FOR FREEDSP\nDSPWDRET\tEQUALS\tTEM4\t\t# RETURN FOR DSPSIGN\nSEPSCRET\tEQUALS\tTEM4\t\t# RETURN FOR SEPSEC\nSEPMNRET\tEQUALS\tTEM4\t\t# RETURN FOR SEPMIN\n\nTEM5\t\tERASE\t\t\t# EXEC TEMP\n# Page 71\nNOUNADD\t\tEQUALS\tTEM5\t\t# TEMP STORAGE FOR NOUN ADDRESS\n\nNNADTEM\t\tERASE\t\t\t# TEMP FOR NOUN ADDRESS TABLE ENTRY\nNNTYPTEM\tERASE\t\t\t# TEMP FOR NOUN TYPE TABLE ENTRY\nIDAD1TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n\t\t\t\t\t# MUST = IDAD2TEM-1, = IDAD3TEM-2\nIDAD2TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n\t\t\t\t\t# MUST = IDAD1TEM+1, IDAD3TEM-1.\nIDAD3TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n\t\t\t\t\t# MUST = IDAD1TEM+2, IDAD2TEM+1.\nRUTMXTEM\tERASE\t\t\t# TEMP FOR SF ROUT TABLE ENTRY (MIXNN ONLY)\n\n# AX*SR*T STORAGE.\t\t\t(6D)\nDEXDEX\t\tEQUALS\tTEM2\t\t# B(1)TMP\nDEX1\t\tEQUALS\tTEM3\t\t# B(1)TMP\nDEX2\t\tEQUALS\tTEM4\t\t# B(1)TMP\nRTNSAVER\tEQUALS\tTEM5\t\t# B(1)TMP\nTERM1TMP\tEQUALS\tBUF2\t\t# B(2)TMP\n\nDEXI\t\t=\tDEX1\n\n# Page 72\n# DYNAMICALLY ALLOCATED CORE SETS FOR JOBS\t(84D)\n\nMPAC\t\tERASE\t+6\t\t# MULTI-PURPOSE ACCUMULATOR.\nMODE\t\tERASE\t\t\t# +1 FOR TP, +0 FOR DP, OR -1 FOR VECTOR.\nLOC\t\tERASE\t\t\t# LOCATION ASSOCIATED WITH JOB.\nBANKSET\t\tERASE\t\t\t# USUALLY CONTAINS BBANK SETTING.\nPUSHLOC\t\tERASE\t\t\t# WORD OF PACKED INTERPRETIVE PARAMETERS.\nPRIORITY\tERASE\t\t\t# PRIORITY OF PRESENT JOB AND WORK AREA.\n\n\t\tERASE\t+71D\t\t# SEVEN SETS OF 12 REGISTERS EACH\n\n# SPECIAL DOWNLINK BUFFER. -- OVERLAYED BY P27 STORAGE --\n\n# P27 (UPDATE PROGRAM) STORAGE. -- OVERLAYS SPEC DNLNK BUFF -- (24D)\n\nCOMPNUMB\tERASE\t+23D\t\t# B(1)TMP NUMBER OF ITEMS TO BE UPLINKED.\nUPOLDMOD\tEQUALS\tCOMPNUMB +1\t# B(1)TMP HOLDS INTERRUPTED PROGRAM NUMBER\nUPVERB\t\tEQUALS\tUPOLDMOD +1\t# B(1)TMP VERB NUMBER\nUPCOUNT\t\tEQUALS\tUPVERB +1\t# B(1)TMP UPBUFF INDEX\nUPBUFF\t\tEQUALS\tUPCOUNT +1\t# B(20D)\n\n# MORE P27 STORAGE.\t\t\t(2D)\n\nUPTEMP\t\tERASE\t\t\t# B(1)TMP SCRATCH\nUPVERBSV\tERASE\t\t\t# B(1)TMP\nINTWAK1Q\tEQUALS\tUPTEMP\t\t# (06D)\n# (20 REGISTERS OF ENTRY DOWNLINK WILL GO HERE.)\n\n# THE FOLLOWING ARE INDEXED FOR TM. IN ENTRY DAP.\n\nCMTMTIME\t=\tUPBUFF\t\t# B(1) (VEHICLE BODY RATE INFO IS\nSW/NDX\t\t=\tCMTMTIME +1\t# B(1)  TELEMETERED EACH 0.2 SEC. DURING\nENDBUF\t\t=\tCMTMTIME +16D\t# B(1)  ENTRY.)\n\nV1\t\t=\tENDBUF +1\t# I(2) REENTRY, P64-P65\nA0\t\t=\tV1 +2\t\t# I(2) REENTRY, P64-P65\n\t\t\t\t\t# HI-ORDER WORD ONLY ON DNLNK.\n\n# ALIGNMENT STORAGE.\t\t\t(5D)\n# (CANNOT SHARE WITH PRECISION INTEGRATION OR KEPLER STORAGE.)\n\nQMAJ\t\tEQUALS\tCOMPNUMB\t# B(1)TMP\nMARKINDX\tEQUALS\tQMAJ\t+1\t# B(1)TMP\nBESTI\t\tEQUALS\tMARKINDX +1\t# I(1)TMP\nBESTJ\t\tEQUALS\tBESTI\t+1\t# I(1)TMP\nSTARIND\t\tEQUALS\tBESTJ\t+1\t# I(1)TMP\n\n# Page 73\n# ALIGNMENT/S40.2,3 COMMON STORAGE.\t(18D)\n\nXSMD\t\tEQUALS\tUPBUFF\t+2\t# I(6)TMP\nYSMD\t\tEQUALS\tXSMD\t+6\t# I(6)TMP\nZSMD\t\tEQUALS\tYSMD\t+6\t# I(6)TMP\n\nXSCREF\t\t=\tXSMD\t\t# SPACE CRAFT AXES IN REF COORDS.\nYSCREF\t\t=\tYSMD\nZSCREF\t\t=\tZSMD\nZPRIME\t\t=\t22D\nPDA\t\t=\t22D\nCOSTH\t\t=\t16D\nSINTH\t\t=\t18D\nTHETA\t\t=\t20D\nSTARM\t\t=\t32D\n\n# DOWNLINK STORAGE\t\t\t(18D)\n\nDNLSTADR\tEQUALS\tDNLSTCOD\t# CONTENTS NO LONGER AN ADDR BUT A CODE\n\nDNLSTCOD\tERASE\t\t\t# B(1)PRM ID CODE OF DOWNLIST\nDUMPCNT\t\tERASE\t\t\t# B(1)PRM\nLDATALST\tERASE\t\t\t# B(1)\nDNTMGOTO\tERASE\t\t\t# B(1)\nTMINDEX\t\tERASE\t\t\t# B(1)\nDUMPLOC\t\tEQUALS\tTMINDEX\t\t# CONTAINS ECADR OF AGC DP WORD BEING DUMPED\n\t\t\t\t\t# AND COUNT OF COMPLETE DUMPS ALREADY\n\t\t\t\t\t# SENT.\nDNQ\t\tERASE\t\t\t# B(1)\nDNTMBUFF\tERASE\t+11D\t\t# B(12)PRM DOWNLINK SNAPSHOT BUFFER\n\n# OPTICS MARKING, UNSHARED.\t\t(8D)\n\nMKNDX\t\tERASE\nMKT2T1\t\tERASE\t+1\nMKCDUY\t\tERASE\nMKCDUS\t\tERASE\nMKCDUZ\t\tERASE\nMKCDUT\t\tERASE\nMKCDUX\t\tERASE\n\n# FOR EXCLUSIVE USE OF SYS TEST STANDARD LEAD INS\t(2)\nEBUF2\t\tERASE\t+1\t\t# B(2) UNSHARED\n\n# Page 74\n# UNSWITCHED FOR DISPLAY INTERFACE ROUTINES.\t(10D)\n\nRESTREG\t\tERASE\t\t\t# B(1)PRM FOR DISPLAY RESTARTS.\nNVWORD\t\tERASE\nMARKNV\t\tERASE\nNVSAVE\t\tERASE\n# (RETAIN THE ORDER OF CADRFLSH TO FAILREG +2 FOR DOWNLINK PURPOSES)\nCADRFLSH\tERASE\t\t\t# B(1)TMP\nCADRMARK\tERASE\t\t\t# B(1)TMP\nTEMPFLSH\tERASE\t\t\t# B(1)TMP\nFAILREG\t\tERASE\t+2\t\t# B(3)PRM 3 ALARM CODE REGISTERS\n\n\t\tSETLOC\t400\n\n# VAC AREAS. -- BE CAREFUL OF PLACEMENT --\t(220D)\n\nVAC1USE\t\tERASE\t\t\t# B(1)PRM\nVAC1\t\tERASE\t+42D\t\t# B(43)PRM\nVAC2USE\t\tERASE\t\t\t# B(1)PRM\nVAC2\t\tERASE\t+42D\t\t# B(43)PRM\nVAC3USE\t\tERASE\t\t\t# B(1)PRM\nVAC3\t\tERASE\t+42D\t\t# B(43)PRM\nVAC4USE\t\tERASE\t\t\t# B(1)PRM\nVAC4\t\tERASE\t+42D\t\t# B(43)PRM\nVAC5USE\t\tERASE\t\t\t# B(1)PRM\nVAC5\t\tERASE\t+42D\t\t# B(43)PRM\n\n# WAITLIST REPEAT FLAG.\t\t\t(1D)\nRUPTAGN\t\tERASE\t\t\t# B(1)PRM\nKEYTEMP2\t=\tRUPTAGN\n\n# STARALIGN ERASABLES.\t\t\t\t(13D)\n\nSTARCODE\tERASE\t\t\t# B(1)DSP NOUN 70 FOR P22,51 AND R52,53\nSTARALGN\tERASE\t+11D\nSINCDU\t\t=\tSTARALGN\nCOSCDU\t\t=\tSTARALGN +6\n\nSINCDUX\t\t=\tSINCDU +4\nSINCDUY\t\t=\tSINCDU\nSINCDUZ\t\t=\tSINCDU +2\nCOSCDUX\t\t=\tCOSCDU +4\nCOSCDUY\t\t=\tCOSCDU\nCOSCDUZ\t\t=\tCOSCDU +2\n\n# PHASE TABLE AND RESTART COUNTERS\t\t(12D)\n# Page 75\n\n-PHASE1\t\tERASE\t\t\t# B(1)PRM\nPHASE1\t\tERASE\t\t\t# B(1)PRM\n-PHASE2\t\tERASE\t\t\t# B(1)PRM\nPHASE2\t\tERASE\t\t\t# B(1)PRM\n-PHASE3\t\tERASE\t\t\t# B(1)PRM\nPHASE3\t\tERASE\t\t\t# B(1)PRM\n-PHASE4\t\tERASE\t\t\t# B(1)PRM\nPHASE4\t\tERASE\t\t\t# B(1)PRM\n-PHASE5\t\tERASE\t\t\t# B(1)PRM\nPHASE5\t\tERASE\t\t\t# B(1)PRM\n-PHASE6\t\tERASE\t\t\t# B(1)PRM\nPHASE6\t\tERASE\t\t\t# B(1)PRM\n\n# A**SR*T STORAGE\t\t\t(6D)\n\nCDUSPOT\t\tERASE\t+5\t\t# B(6)\n\nCDUSPOTY\t=\tCDUSPOT\nCDUSPOTZ\t=\tCDUSPOT +2\nCDUSPOTX\t=\tCDUSPOT +4\n\n# VERB 37 STORAGE\t\t\t(2D)\n\nMINDEX\t\tERASE\t\t\t# B(1)TMP INDEX FOR MAJOR MODE\nMMNUMBER\tERASE\t\t\t# B(1)TMP MAJOR MODE REQUESTED BY V37\n\n# PINBALL INTERRUPT ACTION\t\t(1D)\n\nDSPCNT\t\tERASE\t\t\t# B(1)PRM COUNTER FOR DSPOUT\n\n# PINBALL EXECUTIVE ACTION\t\t(44D)\n\nDSPCOUNT\tERASE\t\t\t# DISPLAY POSITION INDICATOR\nDECBRNCH\tERASE\t\t\t# +DEC, -DEC, OCT INDICATOR\nVERBREG\t\tERASE\t\t\t# VERB CODE\nNOUNREG\t\tERASE\t\t\t# NOUN CODE\nXREG\t\tERASE\t\t\t# R1 INPUT BUFFER\nYREG\t\tERASE\t\t\t# R2 INPUT BUFFER\nZREG\t\tERASE\t\t\t# R3 INPUT BUFFER\nXREGLP\t\tERASE\t\t\t# LO PART OF XREG (FOR DEC CONV ONLY)\nYREGLP\t\tERASE\t\t\t# LO PART OF YREG (FOR DEC CONV ONLY)\nHITEMOUT\t=\tYREGLP\t\t# TEMP FOR DISPLAY OF HRS,MIN,SEC\n\t\t\t\t\t# \tMUST = LOTEMOUT-1.\nZREGLP\t\tERASE\t\t\t# LO PART OF ZREG (FOR DEC CONV ONLY)\nLOTEMOUT\t=\tZREGLP\t\t# TEMP FOR DISPLAY OF HRS,MIN,SEC\n\t\t\t\t\t# \tMUST = HITEMOUT+1\n# Page 76\nMODREG\t\tERASE\t\t\t# MODE CODE\nDSPLOCK\t\tERASE\t\t\t# KEYBOARD/SUBROUTINE CALL INTERLOCK\nREQRET\t\tERASE\t\t\t# RETURN REGISTER FOR LOAD\nLOADSTAT\tERASE\t\t\t# STATUS INDICATOR FOR LOADTST\nCLPASS\t\tERASE\t\t\t# PASS INDICATOR FOR CLEAR\nNOUT\t\tERASE\t\t\t# ACTIVITY COUNTER FOR DSPTAB\nNOUNCADR\tERASE\t\t\t# MACHINE CADR FOR NOUN\nMONSAVE\t\tERASE\t\t\t# N/V CODE FOR MONITOR. (= MONSAVE1-1)\nMONSAVE1\tERASE\t\t\t# NOUNCADR FOR MONITOR (MATBS) = MONSAVE+1\nMONSAVE2\tERASE\t\t\t# B(1)PRM NVMONOPT OPTIONS\nDSPTAB\t\tERASE\t+11D\t\t# 0-10D, DISPLAY PANEL BUFF.  11D, C/S LTS.\nNVQTEM\t\tERASE\t\t\t# NVSUB STORAGE FOR CALLING ADDRESS\n\t\t\t\t\t# MUST = NVBNKTEM-1.\nNVBNKTEM\tERASE\t\t\t# NVSUB STORAGE FOR CALLING BANK\n\t\t\t\t\t# MUST = NVQTEM+1\nVERBSAVE\tERASE\t\t\t# NEEDED FOR RECYCLE\nCADRSTOR\tERASE\t\t\t# ENDIDLE STORAGE\nDSPLIST\t\tERASE\t\t\t# WAITING REG FOR DSP SYST INTERNAL USE\nEXTVBACT\tERASE\t\t\t# EXTENDED VERB ACTIVITY INTERLOCK\nDSPTEM1\t\tERASE\t+2\t\t# BUFFER STORAGE AREA 1 (MOSTLY FOR TIME)\nDSPTEM2\t\tERASE\t+2\t\t# BUFFER STORAGE AREA 2 (MOSTLY FOR DEG)\n\nDSPTEMX\t\tEQUALS\tDSPTEM2 +1\t# B(2) S-S DISPLAY BUFFER FOR EXT. VERBS\nNORMTEM1\tEQUALS\tDSPTEM1\t\t# B(3)DSP NORMAL DISPLAY REGISTERS.\n\n# DISPLAY FOR EXTENDED VERBS\t\t(2D)\n\nOPTIONX\t\tEQUALS\tDSPTEMX\t\t# B(2) EXTENDED VERB OPTION CODE  N12(V82)\n\n# TBASE'S AND PHSPRDT'S.\t\t(12D)\n\nTBASE1\t\tERASE\t\t\t# B(1)PRM\nPHSPRDT1\tERASE\t\t\t# B(1)PRM\nTBASE2\t\tERASE\t\t\t# B(1)PRM\nPHSPRDT2\tERASE\t\t\t# B(1)PRM\nTBASE3\t\tERASE\t\t\t# B(1)PRM\nPHSPRDT3\tERASE\t\t\t# B(1)PRM\nTBASE4\t\tERASE\t\t\t# B(1)PRM\nPHSPRDT4\tERASE\t\t\t# B(1)PRM\nTBASE5\t\tERASE\t\t\t# B(1)PRM\nPHSPRDT5\tERASE\t\t\t# B(1)PRM\nTBASE6\t\tERASE\t\t\t# B(1)PRM\nPHSPRDT6\tERASE\t\t\t# B(1)PRM\n\n# UNSWITCHED FOR DISPLAY INTERFACE ROUTINES.\t(5D)\n# Page 77\nEBANKSAV\tERASE\nMARKEBAN\tERASE\nEBANKTEM\tERASE\nMARK2PAC\tERASE\nR1SAVE\t\tERASE\n\n# IMU COMPENSATION UNSWITCHED ERASABLE.\t(1D)\n\n1/PIPADT\tERASE\t\t\t# B(1)PRM\nOLDBT1\t\t=\t1/PIPADT\n\n# SINGLE PRECISION SUBROUTINE TEMPORARIES\t(3D)\n\t\t\t\t\t# SPSIN, SPCOS, SPROOT VARIABLES.\n\t\t\t\t\t# DO NOT SHARE.  THESE ARE USED BY DAPS IN INTERRUPT\n\t\t\t\t\t# AND CURRENTLY ARE NOT PROTECTED.  IF OTHER USERS\n\t\t\t\t\t# MATERIALIZE, THEN THIS CAN BE CHANGED.\n\nHALFY\t\tERASE\nROOTRET\t\tERASE\nSQRARG\t\tERASE\nTEMK\t\tEQUALS\tHALFY\nSQ\t\tEQUALS\tROOTRET\n\n# Page 78\n# UNSWITCHED FOR ORBIT INTEGRATION\t(21D)\n\nTDEC\t\tERASE\t+20D\t\t# I(2)\nCOLREG\t\tEQUALS\tTDEC +2\t\t# I(1)\nLAT\t\tEQUALS\tCOLREG +1\t# I(2)DSP NOUN 43,67 FOR P20,22,51 R52,53.\nLANDLAT\t\t=\tLAT\t\t#\t  NOUN 89    FOR P22.\nLONG\t\tEQUALS\tLAT +2\t\t# I(2)DSP NOUN 43,67 FOR P20,22,51 R52,53\nALT\t\tEQUALS\tLONG +2\t\t# I(2)DSP NOUN 43    FOR P20,22,51 R52,53.\nYV\t\tEQUALS\tALT +2\t\t# I(6)\nZV\t\tEQUALS\tYV +6\t\t# I(6)\n\n# MARK STORAGE.\t\t\t\t(2)\n\nVHFCNT\t\tERASE\t\t\t# B(1)PRM NO. OF VHF MARKS (P20 (R22)).\nTRKMKCNT\tERASE\t\t\t# B(1)PRM NO. OF VHF MARKS (P20 (R22)).\n\nMARKCTR\t\t=\tTRKMKCNT\t# B(1) MARK COUNTER USED BY R32\n\n# MISCELLANEOUS UNSWITCHED.\t\t(16D)\n\nIRETURN1\tERASE\t\t\t# B(1) RET ADDR USED BY MIDTOAV1 AND 2\n\t\t\t\t\t# CALLED BY P40,P41,P42, P61,P62\nRATEINDX\tERASE\t\t\t#  (1) USED BY KALCMANU\nOPTION1\t\tERASE\t\t\t# B(1) NOUN 06 USES THIS.\nOPTION2\t\tERASE\t\t\t# B(1) NOUN 06 USES THIS.\nLONGCADR\tERASE \t+1\t\t# B(2) LONGCALL REGISTER.\nLONGBASE\tERASE \t+1\t\t# B(2) LONGCALL REGISTER.\nLONGTIME\tERASE \t+1\t\t# B(2) LONGCALL REGISTER.\nDELAYLOC\tERASE \t+3\nNVWORD1\t\tERASE\t\t\t# B(1)\nTEMPR60\t\tERASE\t\t\t# B(1)\nPRIOTIME\tERASE\t\t\t# B(1)\nP30/RET\t\tEQUALS\tIRETURN1\n\n# MISC. INCLUDING RESTART COUNTER, GIMBAL ANGLE SAVE AND\n# STANDBY VERB ERASABLES.  REDOCTR BEFORE THETAD (DWNLNK)\t(16D)\n\nTIME2SAV\tERASE\t+1\t\t# B(2)TMP\nSCALSAVE\tERASE\t+1\t\t# B(2)TMP\nREDOCTR\t\tERASE\t\t\t# B(1)PRM CONTAINS NUMBER OF RESTARTS\nTHETAD\t\tERASE\t+2\t\t# B(3)PRM DESIRED GIM ANGLES FOR MANEUVER\nCPHI\t\t=\tTHETAD\t\t#\t(OUTER)\nCTHETA\t\t=\tTHETAD +1\t#\t(INNER)\nCPSI\t\t=\tTHETAD +2\t#\t(MIDDLE)\n# Page 79\n# ENTRY VARIABLES SHARED FOR TM.\nRDOTREF\t\t=\tTHETAD\t\t# I(2)\tP65\nVREF\t\t=\tRDOTREF +2\t# I(2)\tP65\tHI-ORDER WORD ONLY DNLNK'D\nDESOPTT\t\tERASE\t\t\t# B(1)DSP NOUN 92 FOR P20,22,52, R52.\nDESOPTS\t\tERASE\t\t\t# B(1)DSP NOUN 92 FOR P20,22,52, R52.\n\nDELV\t\tERASE\t+5\t\t# I(6)\nDELVX\t\t=\tDELV\nDELVY\t\t=\tDELV\t+2\nDELVZ\t\t=\tDELV\t+4\n\n# P20, CONICS\t(SHARING WITH TIME 2 SAV AND SCAL SAV ONLY)\t(3D)\nPOINTEX\t\tEQUALS\tTIME2SAV\t# I(1) POINT AXS EXIT\nVHFTIME\t\tEQUALS\tPOINTEX\t+1\t# I(2) DOWNLINK OF VHF RANGE TIME +1M\n\n# PERM STATE VECTORS FOR BOOST AND DOWNLINK -- WHOLE MISSION --\t(14D)\n\nRN\t\tERASE\t+5\t\t# B(6)PRM\nVN\t\tERASE\t+5\t\t# B(6)PRM\nPIPTIME\t\tERASE\t+1\t\t# B(2)PRM (MUST BE FOLLOWED BY GDT/2)\n\n# SERVICER STORAGE.\t\t\t\t(45D)\n\n# (SERVICER STORAGE AND P11 STORAGE IN UNSWITCHED SHOULD NOT\n# OVERLAY EACH OTHER AND THE TOTAL ERASABLE REQUIRED SHOULD NOT\n# EXCEED THE ERASABLE STORAGE REQUIRED BY RENDEZVOUS GUIDANCE.)\n\nGDT/2\t\tEQUALS\tPIPTIME\t+2\t# B(6)TMP\t** MUST FOLLOW PIPTIME **\nGOBL/2\t\tEQUALS\tGDT/2\t+6\t# B(6)TMP\nAVEGEXIT\tEQUALS\tGOBL/2\t+6\t# B(2)TMP\nAVGEXIT\t\t=\tAVEGEXIT\nTEMX\t\tEQUALS\tAVEGEXIT +2\t# B(1)TMP\nTEMY\t\tEQUALS\tTEMX +1\t\t# B(1)TMP\nTEMZ\t\tEQUALS\tTEMY +1\t\t# B(1)TMP\nPIPCTR\t\tEQUALS\tTEMZ +1\t\t# B(1)TMP\nPIPAGE\t\tEQUALS\tPIPCTR +1\t# B(1)TMP\nRN1\t\tEQUALS\tPIPAGE +1\t# B(6)TMP\nVN1\t\tEQUALS\tRN1 +6\t\t# B(6)TMP\nPIPTIME1\tEQUALS\tVN1 +6\t\t# B(2)TMP\nGDT1/2\t\tEQUALS\tPIPTIME1 +2\t# B(6)TMP\nGOBL1/2\t\tEQUALS\tGDT1/2 +6\t# B(6)TMP\n\n# Page 80\n# ENTRY STORAGE\t\t\t\t(1D)\nENTRYVN\t\tEQUALS\tGOBL1/2 +6\t# B(1)TMP VN CODE FOR ENTRY DISPLAYS P60'S.\n\n# P11 STORAGE.\t\t\t\t(9D)\nPADLONG\t\tEQUALS\tENTRYVN\t\t# (2)PL\tLONGITUDE OF LAUNCH PAD.\nLIFTTEMP\tEQUALS\tPADLONG +2\t# (2)TMP\nTEPHEM1\t\tEQUALS\tLIFTTEMP +2\t# (3)TMP\nPGNCSALT\tEQUALS\tTEPHEM1 +3\t# (2)PL\tALTITUDE\n\n# RENDEZVOUS NAVIGATION STORAGE.  (SEE COMMENT IN SERVICER STORAGE)\t(58D)\nCSMPOS\t\tERASE\t+57D\t\t# I(6)TMP\nLEMPOS\t\tEQUALS\tCSMPOS\t+6\t# I(6)TMP\nRCL\t\tEQUALS\tLEMPOS\t+6\t# I(2)TMP\nMARKTIME\tEQUALS\tRCL\t+2\t# B(2)TMP\nVTEMP\t\tEQUALS\tMARKTIME +2\t# B(6)TMP\nUM\t\tEQUALS\tVTEMP\t+6\t# I(6)TMP\nMARKDATA\tEQUALS\tUM\t+6\t# B(2)TMP\nUSTAR\t\tEQUALS\tMARKDATA +2\t# I(6)TMP\nWIXA\t\tEQUALS\tUSTAR\t+6\t# B(1)TMP\nWIXB\t\tEQUALS\tWIXA\t+1\t# B(1)TMP\nZIXA\t\tEQUALS\tWIXB\t+1\t# B(1)TMP\nZIXB\t\tEQUALS\tZIXA\t+1\t# B(1)TMP\nDELTAX\t\tEQUALS\tZIXB\t+1\t# I(18)TMP\n\nVHFRANGE\tEQUALS\tDELTAX\t\t# (2)\nUCL\t\tEQUALS\tDELTAX\t+12D\t# (6)\tLM-CSM LINE OF SIGHT 1/2 UNIT V\n\n# **** CONICSEX (MEAS INC) ****\nTRIPA\t\tEQUALS\tDELTAX\nTEMPVAR\t\tEQUALS\tDELTAX\t+3\n\nTEMPOR1\t\tERASE\t+1\t\t# B(2)TMP\n\n# T4RUPT ERASABLE\t\t\t(6D)\n\nDSRUPTSW\tERASE\nOPTIND\t\tERASE\nLGYRO\t\tERASE\nCOMMANDO\tERASE\t+1\n\n# Page 81\nZONE\t\tERASE\t\t\t# B(1)PRM USED IN SHAFT STOP MONITOR\nLASTYCMD\t=\tOPTY\t\t# DUMMY TO MAKE RR BENCH TEST ASSEMBLE\nLASTXCMD\t=\tOPTY\t\t# DUMMY TO MAKE RR BENCH TEST ASSEMBLE\n\n# UNSWITCHED DAP ERASABLE.\t\t(4D)\nT6LOC\t\tERASE\nT6ADR\t\tERASE\nT5LOC\t\tERASE\t+1\n\n# MODE SWITCHING ERASABLE\t\t(14D)\nSWSAMPLE\tERASE\t\t\t# B(1)PRM\nDESOPMOD\tERASE\t\t\t# B(1)PRM\nWTOPTION\tERASE\t\t\t# B(1)PRM\nZOPTCNT\t\tERASE\t\t\t# B(1)PRM\nIMODES30\tERASE\t\t\t# B(1)PRM\nIMODES33\tERASE\t\t\t# B(1)PRM\nMODECADR\tERASE\t+2\t\t# B(3)TMP\nIMUCADR\t\t=\tMODECADR\nOPTCADR\t\t=\tMODECADR +1\nRADCADR\t\t=\tMODECADR +2\nATTCADR\t\tERASE\t+2\t\t# B(3)PRM\nATTPRIO\t\t=\tATTCADR +2\nMARKSTAT\tERASE\t\t\t# B(1)PRM\nOPTMODES\tERASE\t\t\t# B(1)PRM\n\n# RCSDAP ERASABLE\t\t\t(1D)\nHOLDFLAG\tERASE\t\t\t# B(1)PRM\n\n# CRS61.1 STORAGE.  -- USED IN R63 (VERB 89) --\t(5D)\nCPHIX\t\tERASE\t+2\t\t# B(3)DSP NOUN 95 CALCULATED BY CRS61.1\n\nTEVENT\t\tERASE\t+1\t\t# B(2) TIME OF EVENT FOR DOWNLIST\nTLIFTOFF\t=\tTEVENT\n\n# Page 82\n# P34-P35 STORAGE\t\t\t(1D)\nNORMEX\t\tERASE\n\n# SELF-CHECK ASSIGNMENTS\t\t(17D)\n\nSELFERAS\tERASE \t1357 - 1377\t# *** MUST NOT BE MOVED *** #\nSFAIL\t\tEQUALS\tSELFERAS\t# B(1)\nERESTORE\tEQUALS\tSFAIL +1\t# B(1)\nSELFRET\t\tEQUALS\tERESTORE +1\t# B(1) RETURN\nSMODE\t\tEQUALS\tSELFRET +1\t# B(1)\nALMCADR\t\tEQUALS\tSMODE +1\t# B(2) ALARM ABORD USER'S 2CADR\nERCOUNT\t\tEQUALS\tALMCADR +2\t# B(1)\nSCOUNT\t\tEQUALS\tERCOUNT +1\t# B(3)\nSKEEP1\t\tEQUALS\tSCOUNT +3\t# B(1)\nSKEEP2\t\tEQUALS\tSKEEP1 +1\t# B(1)\nSKEEP3\t\tEQUALS\tSKEEP2 +1\t# B(1)\nSKEEP4\t\tEQUALS\tSKEEP3 +1\t# B(1)\nSKEEP5\t\tEQUALS\tSKEEP4 +1\t# B(1)\nSKEEP6\t\tEQUALS\tSKEEP5 +1\t# B(1)\nSKEEP7\t\tEQUALS\tSKEEP6 +1\t# B(1)\n\n# USED BY P30 ROUTINES TO WRITE ONLY NEVER READ IN COLOSSUS\n\nDISPDEX\t\tEQUALS\tA\n\n# ERASABLE FOR SXTMARK CDU CHECK DELAY.  -- PAD LOADED --\t(1D)\n\nCDUCHKWD\tERASE\t\t\t# B(1)PL\n\n# R57 STORAGE. -- MUST BE UNSHARED EXCEPT IN BOOST OR ENTRY --\t(1D)\n\nTRUNBIAS\tERASE\t\t\t# B(1)PRM RESULT OF R57 CALIBR OF TRUNION\n\n# KEPLER STORAGE\t\t\t\t(6D)\n\nXMODULO\t\tERASE\t+1\t\t# I(2) GREATER 2PI KEPLER\nTMODULO\t\tERASE\t+1\t\t# I(2) GREATER 2 KEPLER\nEPSILONT\tERASE\t+1\t\t# I(2)TMP\n\n# Page 83\n# P37\t** RETURN TO EARTH (PAD LOAD ****\t(2D)\n\nRTED1\t\tERASE\t+1\t\t# I(2)PL VGAMMA POLY COEF\t\tB-3\n\n# P40\t*** STEERING ROUTINE *** PAD LOAD\t(1D)\n\nDVTHRESH\tERASE\t\t\t# I(1)PL DELTA VTHRESHOLD FOR LOW THRUST\n\t\t\t\t\t#        ROUTINE\t\t\tB-2\n\n# P23\t*** PAD LOAD ****\t\t(2D)\n\nHORIZALT\tERASE\t+1\t\t# I(2)PL HORIZON ALTITUDE\t     M B-29\n\n# P20\tALTERNATE LOS VARIANCE\tPAD LOAD ****\t(1D)\n\t\t\t\t\t\t\t\t\t  -16\nALTVAR\t\tERASE\t\t\t# I(2)PL MILLARD, SQUARED SCALED 2\nEND-UE\t\tEQUALS\tSELFERAS +16D\t# LAST USED UNSWITCHED ERASABLE\n\n# Page 84\n# EBANK-3 ASSIGNMENTS\n\n\t\tSETLOC\t1400\n\n# WAITLIST TASK LISTS.\t\t\t(26D)\n\nLST1\t\tERASE\t+7\t\t# B(8D)PRM DELTA T'S.\nLST2\t\tERASE\t+17D\t\t# B(18D)PRM TASK 2CADR ADDRESSES.\n\n# RESTART STORAGE.\t\t\t(2D)\n\nRSBBQ\t\tERASE\t+1\t\t# B(2)PRM SAVE BB AND Q FOR RESTARTS\n\n# MORE LONGCALL STORAGE.  (MUST BE IN LST1'S BANK.\t(2D)\n\nLONGEXIT\tERASE\t+1\t\t# B(2)TMP MAY BE SELDOM OVERLAYED\n\n# PHASE-CHANGE LISTS PART II.\t\t(12D)\n\n\nPHSNAME1\tERASE\t\t\t# B(1)PRM\nPHSBB1\t\tERASE\t\t\t# B(1)PRM\nPHSNAME2\tERASE\t\t\t# B(1)PRM\nPHSBB2\t\tERASE\t\t\t# B(1)PRM\nPHSNAME3\tERASE\t\t\t# B(1)PRM\nPHSBB3\t\tERASE\t\t\t# B(1)PRM\nPHSNAME4\tERASE\t\t\t# B(1)PRM\nPHSBB4\t\tERASE\t\t\t# B(1)PRM\nPHSNAME5\tERASE\t\t\t# B(1)PRM\nPHSBB5\t\tERASE\t\t\t# B(1)PRM\nPHSNAME6\tERASE\t\t\t# B(1)PRM\nPHSBB6\t\tERASE\t\t\t# B(1)PRM\n\n# IMU COMPENSATION PARAMETERS\t\t(22D)\n\nPBIASX\t\tERASE\t\t\t# B(1)\tPIPA BIAS, PIPA SCALE FACTOR TERMS\nPIPABIAS\t=\tPBIASX\t\t#\tINTERMIXED.\nPIPASCFX\tERASE\nPIPASCF\t\t=\tPIPASCFX\nPBIASY\t\tERASE\nPIPASCFY\tERASE\nPBIASZ\t\tERASE\nPIPASCFZ\tERASE\n\nNBDX\t\tERASE\t\t\t# GYRO BIAS DRIFT\nGBIASX\t\t=\tNBDX\nNBDY\t\tERASE\n# Page 85\nNBDZ\t\tERASE\n\nADIAX\t\tERASE\t\t\t# ACCELERATION SENSITIVE DRIFT ALONG THE\nADIAY\t\tERASE\t\t\t# INPUT AXIS\nADIAZ\t\tERASE\n\nADSRAX\t\tERASE\t\t\t# ACCELERATION SENSITIVE DRIFT ALONG THE\nADSRAY\t\tERASE\t\t\t# SPIN REFERENCE AXIS\nADSRAZ\t\tERASE\n\nGCOMP\t\tERASE\t+5\t\t# CONTAINS COMPENSATING TORQUES\n\nGCOMPSW\t\tERASE\nCOMMAND\t\tEQUALS\tGCOMP\nCDUIND\t\tEQUALS\tGCOMP\t+3\n\n# STATE VECTORS FOR ORBIT INTEGRATION.\t(44D)\n\n#\t\t(DIFEQCNT THUR XKEP MUST BE IN THE SAME\n#\t\tEBANK AS RRECTCSM, RRECTLEM ETC\n#\t\tBECAUSE THE COPY CYCLES (ATOPCSM,\n#\t\tPTOACSM ETC) ARE EXECUTED IN BASIC.\n#\t\tALL OTHER REFERENCES TO THIS GROUP\n#\t\tARE BY INTERPRETIVE INSTRUCTIONS.)\n#\n\nDIFEQCNT\tERASE\t+43D\t\t# B(1)TMP\n# (UPSVFLAG...XKEP MUST BE KEPT IN ORDER).\n\nUPSVFLAG\tEQUALS\tDIFEQCNT +1\t# B(1)PRM UPDATE FLAG\nRRECT\t\tEQUALS\tUPSVFLAG +1\t# B(6)TMP POS AT RECT\t\tKM*2(-14)\nVRECT\t\tEQUALS\tRRECT \t+6\t# B(6)TMP VEL AT RECT\t\tKM(-1/2)*2(6)\nTET\t\tEQUALS\tVRECT \t+6\t# B(2)TMP TIME OF STATE VECT\tCSPCS*2(-28)\nTDELTAV\t\tEQUALS\tTET \t+2\t# B(6)TMP POSITION DEVIATION\tKM*2(14)\nTNUV\t\tEQUALS\tTDELTAV +6\t# B(6)TMP VEL DEVIATION\t\tKM(-1/2)*2(14)\nRCV\t\tEQUALS\tTNUV \t+6\t# B(6)TMP CONIC POSITION\tKM*2(-14)\nVCV\t\tEQUALS\tRCV \t+6\t# B(6)TMP CONIC VELOCITY\tKM(-1/2)*2(6)\nTC\t\tEQUALS\tVCV \t+6\t# B(2)TMP TIME SINCE RECTIFICATION\nXKEP\t\tEQUALS\tTC \t+2\t# B(2)TMP ROOT OF KEPLER EQ\tKM(1/2)*2(-10)\n\n# **** TEMP -- IN VAC AREA ****\nRRECT1\t\tEQUALS\t18D\nVRECT1\t\tEQUALS\t24D\nTET1\t\tEQUALS\t30D\n\n# PERMANENT STATE VECTORS AND TIMES.\t(101D)\n\n# (DO NOT OVERLAY WITH ANYTHING AFTER BOOST)\n\n# Page 86\n# (RRECTCSM...XKEPCSM MUST BE KEPT IN THIS ORDER)\n\nRRECTCSM\tERASE\t+5\t\t# B(6)PRM CSM VARIABLES\nRRECTHIS\t=\tRRECTCSM\nVRECTCSM\tERASE\t+5\t\t# B(6)PRM\nTETCSM\t\tERASE\t+1\t\t# B(2)PRM\nTETTHIS\t\t=\tTETCSM\nDELTACSM\tERASE\t+5\t\t# B(6)PRM\nNUVCSM\t\tERASE\t+5\t\t# B(6)PRM\nRCVCSM\t\tERASE\t+5\t\t# B(6)PRM\nVCVCSM\t\tERASE\t+5\t\t# B(6)PRM\nTCCSM\t\tERASE\t+1\t\t# B(2)PRM\nXKEPCSM\t\tERASE\t+1\t\t# B(2)PRM\n\n# (RRECTLEM...XKEPLEM MUST BE KEPT IN THIS ORDER)\n\nRRECTLEM\tERASE\t+5\t\t# B(6)PRM LEM VARIABLES\nRRECTOTH\t=\tRRECTLEM\nVRECTLEM\tERASE\t+5\t\t# B(6)PRM\nTETLEM\t\tERASE\t+1\t\t# B(2)PRM\nTETOTHER\t=\tTETLEM\nDELTALEM\tERASE\t+5\t\t# B(6)PRM\nNUVLEM\t\tERASE\t+5\t\t# B(6)PRM\nRCVLEM\t\tERASE\t+5\t\t# B(6)PRM\nVCVLEM\t\tERASE\t+5\t\t# B(6)PRM\nTCLEM\t\tERASE\t+1\t\t# B(2)PRM\nXKEPLEM\t\tERASE\t+1\t\t# B(2)PRM\n\nX789\t\tERASE\t+5\nTEPHEM\t\tERASE\t+2\nAZO\t\tERASE\t+1\nUNITW\t\tERASE\t+5\n-AYO\t\tEQUALS\tUNITW\t\t# (2)\nAXO\t\tEQUALS\tUNITW +2\t# (2)\n\n# STATE VECTORS FOR DOWNLINK\t\t(12D)\n\nR-OTHER\t\tERASE\t+5\t\t# B(6)PRM POS VECT (OTHER VECH) FOR DNLINK\nV-OTHER\t\tERASE\t+5\t\t# B(6)PRM VEL VECT (OTHER VECH) FOR DNLINK\n\nT-OTHER\t\t=\tTETLEM\t\t# \t      TIME (OTHER VECH) FOR DNLINK\n\n# REFSMMAT.\t\t\t\t(18D)\n\nREFSMMAT\tERASE\t+17D\t\t# I(18D)PRM\n\n# Page 87\n# AVERAGEG INTEGRATOR STORAGE.\t\t(8D)\nUNITR\t\tERASE\t+5\nRMAG\t\tERASE\t+1\n\n# P40 PAD LOADS\t\t\t\t(6D)\nEK1VAL\t\tERASE\t+1\t\t# I(2)PL 1-SEC SPS IMPULSE NEWTSEC/100/B23\nEK2VAL\t\tERASE\t+1\t\t# I(2)PL  B+23 NEWTON-SEC/E+2\nEK3VAL\t\tERASE\t\t\t# I(1)PL  B+09 NEWTONS/E+4\nFANG\t\tERASE\t\t\t# I(1)PL SPS THRUST USED BY IMPULSIVE BURN\n\n# **********LUNAR MODULE CHANGE  ***********\nE3J22R2M\tEQUALS\tFANG\t+2\nE32C31RM\tEQUALS\tE3J22R2M +1\n\n# **** CONICSEX (PLANETARY INERT. ORIEN.) ****\nTIMSUBO\t\tEQUALS\tTEPHEM\t\t# CSEC B-14 (TRIPLE PREC)\nEND-E3\t\tEQUALS\tE32C31RM\t# NEXT UNUSED E3 ADDRESS\n\n# Page 88\n# EBANK-4 ASSIGNMENTS\n\n\t\tSETLOC\t2000\n\n# P20 STORAGE.  -- PAD LOADED --\t(4D)\n\nWRENDPOS\tERASE\t\t\t# B(1)PL\tM B-14\nWRENDVEL\tERASE\t\t\t# B(1)PL\tM/CSECB0\nRMAX\t\tERASE\t\t\t# B(1)PL\tMETERS*2(-19)\nVMAX\t\tERASE\t\t\t# B(1)PL\tM/CSEC*2(-7)\n\n# P22 STORAGE.  -- PAD LOADED --\t(5D)\nWORBPOS\t\tERASE\t\t\t# B(1)PL\tM B-14\nWORBVEL\t\tERASE\t\t\t# B(1)PL\tM/CSECB0\nS22WSUBL\tERASE\t\t\t# B(1)PL\tM B-14\nRPVAR\t\tERASE\t+1\t\t# B(2)PL\n\n# CONISEX STORAGE.  -- PAD LOADED --\t(6D)\n\n504LM\t\tERASE\t+5\t\t# I(6) MOON LIBRATION VECTOR\n\n# ENTRY STORAGE\t    -- PAD LOADED --\t(2D)\nEMSALT\t\tERASE\t+1\t\t# I(2)PL\n\n# P35 CONSTANTS.    -- PAD LOADED --\t(4D)\nATIGINC\t\tERASE\t+1\t\t# B(2)PL\nPTIGINC\t\tERASE\t+1\t\t# B(2)PL\n\n# LUNAR LANDING SIGHT DATA.  -- PAD LOADED --\t(6D)\n# (USED BY INTEGRATION INITIALIZATION, LAT-LONG SUBROUTINES, P30'S)\n\nRLS\t\tERASE\t+5\t\t# I(6) LANDING SIGHT VECTOR\n\n# CONISEX (LUNAR AND SOLAR EPHEM) STORAGE.  -- PAD LOADED --\t(77D)\nTIMEMO\t\tERASE\t+76D\nVECOEM\t\tEQUALS\tTIMEMO \t+3\nRESO\t\tEQUALS\tVECOEM \t+60D\n# Page 89\nVESO\t\tEQUALS\tRESO \t+6\nOMEGAES\t\tEQUALS\tVESO \t+6\n\n# INTEGRATION STORAGE.\t\t\t(95D)\n\nPBODY\t\tERASE\t\t\t# I(1)\nALPHAV\t\tEQUALS\tPBODY \t+1\t# I(6)TMP\nBETAV\t\tEQUALS\tALPHAV \t+6\t# I(6)TMP\nPHIV\t\tEQUALS\tBETAV \t+6\t# I(6)TMP\nPSIV\t\tEQUALS\tPHIV \t+6\t# I(6)TMP\nFV\t\tEQUALS\tPSIV \t+6\t# I(6)TMP\nBETAM\t\tEQUALS\tFV \t+6\t# I(6)TMP\nH\t\tEQUALS\tBETAM \t+2\t# I(2)TMP\nGMODE\t\tEQUALS\tH \t+2\t\t# I(1)TMP\nIRETURN\t\tEQUALS\tGMODE \t+1\t# I(1)TMP\nNORMGAM\t\tEQUALS\tIRETURN +1\t# I(1)TMP\nVECTAB\t\tEQUALS\tNORMGAM +1\t# I(36)TMP\nRPQV\t\tEQUALS\tVECTAB \t+36D\t#  (6)TMP VECTOR PRIMARY TO SECONDARY BODY\nORIGEX\t\tEQUALS\tRPQV\t+6\t# B(1)TMP QSAVE FOR COORD. SWITCH ROUTINE\nKEPRTN\t\tEQUALS\tORIGEX\t\t# \t  QSAVE FOR KEPLER\nRQVV\t\tEQUALS\tORIGEX \t+1\t#  (6)    SEC. BODY TO VEH.VETOR (USED P23)\nRPSV\t\tEQUALS\tRQVV \t+6\t\t#  (6)TMP SUN TO PRIMARY BODY VECTOR\nXKEPNEW\t\tEQUALS\tRPSV \t+6\t\t#  (2)TMP ROOT OF KEPLER'S EQU FOR TIME TAU\n\n# THESE PROBABLY CAN SHARE INTEGRATION VARIABLES\t(9D)\n\nVACX\t\tEQUALS\tVECTAB \t+6\t# I(2)TMP\nVACY\t\tEQUALS\tVACX \t+2\t# I(2)TMP\nVACZ\t\tEQUALS\tVACY \t+2\t# I(2)TMP\n\nERADM\t\tEQUALS\tVECTAB\t+18D\t# I(2)TMP\nINCORPEX\tEQUALS\tERADM\t+2\t# I(1)TMP\n\n# R31 (V83) STORAGE. -- SHARES WITH INTEGRATION STORAGE --\t(24D)\n\nBASEOTP\t\tEQUALS\tVECTAB +6\t# I(6) BASE POS VECTOR OTHER VEH\nBASEOTV\t\tEQUALS\tVECTAB +18D\t# I(6) BASE VEL VECTOR OTHER VEH\nBASETHP\t\tEQUALS\tVECTAB +30D\t# I(6) BASE POS VECTOR THIS VEH\nBASETHV\t\tEQUALS\tRPQV\t\t# I(6) BASE VEL VECTOR THIS VEH\n\n# CONIC INTEGRATION STORAGE. -- MAY NOT SHARE WITH SERVICER --\t(6D)\nALPHAM\t\tEQUALS\tXKEPNEW\t+2\t# I(2)TMP\nTAU.\t\tEQUALS\tALPHAM \t+2\t# I(2)TMP\nDT/2\t\tEQUALS\tTAU.\t+2\t# I(2)TMP\n\n# Page 90\n\n# P21, R61 STORAGE.\t\t\t(2D)\nP21TIME\t\tEQUALS\tDT/2\t+2\t# B(2)TMP\n\n# INTEGRATION STORAGE\t\t\t(1D)\nEGRESS\t\tEQUALS\tP21TIME\t+2\t# I(1)TMP SAVES RETURNS.\n\n# VERB 83 STORAGE.\t\t\t(20D)\n\nRANGE\t\tEQUALS\tEGRESS \t+1\t# I(2)DSP NOUN 54 DISTANCE TO OPTICAL SUBJ\nRRATE\t\tEQUALS\tRANGE\t+2\t# I(2)DSP NOUN 54 RATE OF APPROACH\nRTHETA\t\tEQUALS\tRRATE \t+2\t# I(2)DSP NOUN 54.\nRONE\t\tEQUALS\tRTHETA \t+2\t# I(6)TMP VECTOR STORAGE.  (SCRATCH)\nVONE\t\tEQUALS\tRONE \t+6\t# I(6)TMP VECTOR STORAGE.  (SCRATCH)\nBASETIME\tEQUALS\tVONE\t+6\t# I(2)    BASE TIME ASSOC WITH BASE VECS\n\n# S-BAND ANTENNA GIMBAL ANGLES.  DISPLAYED BY R05 (V64).\t(4D)\n#\t\t\t(OPERATES DURING P00 ONLY)\nRHOSB\t\tEQUALS\tRANGE\t\t# B(2)DSP NOUN 51. PITCH ANGLE\nGAMMASB\t\tEQUALS\tRHOSB\t+2\t# B(2)DSP NOUN 51. YAWANGLE\n\n# R36 SCRATCHPAD STORAGE\t\t(13D)\nRPASS36\t\tEQUALS\tRONE\t\t# I(6) S-S\nUNP36\t\tEQUALS\tRPASS36 +6\t# I(6) S-S\nOPTIONY\t\tEQUALS\tUNP36\t+6\t# I(1)TMP VEHICLE CODE\n\n# EXTENDED VERB 82 STORAGE.\t\t(6D)\n\nHPERMIN\t\tEQUALS\tRANGE\t\t# I(2) SET TO 300KFT OR 35KFT FOR SR30.1\nRPADTEM\t\tEQUALS\tHPERMIN +2\t# I(2) PAD OR LANDING RADIUS FOR SR30.1\nTSTART82\tEQUALS\tRPADTEM +2\t# I(2) TEMP TIME STORAGE VOR V82.\n\n# MORE VERB 82 NOT SHARING WITH VERB 83\t(9D)\nV82FLAGS\tEQUALS\tVONE\t+6\t#  (1) FOR V 82 BITS\nTFF\t\tEQUALS\tV82FLAGS +1\t# I(2)DSP NOUN 50,44\n-TPER\t\tEQUALS\tTFF\t+2\t# I(2)DSP NOUN 32\nTHETA(1)\tEQUALS\t-TPER\t+2\t# I(2)TMP SET AT END OF V82\n# Page 91\nRSP-RREC\tEQUALS\tAOPTIME\t\t# DSP NOUN 50 FOR V82 DURING P00 AND P11\n\n# REENTRY CONICS\t\t\t(6D)\nURONE\t\tEQUALS\tV82FLAGS\t# I(6) SAVE ACTUAL FOR CALCULATIONS\n\n# V82 DISPLAY\t\t\t\t(4D)\nHAPOX\t\tEQUALS\tTHETA(1) +2\t# I(2)DSP NOUN 44\nHPERX\t\tEQUALS\tHAPOX\t+2\t# I(2)DSP NOUN 44\n\n# P22 DISPLAY REGISTERS\t\t\t(06D)\nAOPTIME\t\tEQUALS\tHPERX\t+2\t# I(2)TMP FOR SR52.1.ADVTRACK\nLANDLONG\tEQUALS\tAOPTIME\t+2\t# I(2)DSP NOUN 89 FOR P22\nLANDALT\t\tEQUALS\tLANDLONG +2\t# I(2)DSP NOUN 89 FOR P22\n\n# S34/35.5,P34-P35 STORAGE.\t\t(6D)\nKT\t\tEQUALS\tLANDALT\t+2\t# B(2)\nVERBNOUN\tEQUALS\tKT\t+2\t# B(1)TMP\nQSAVED\t\tEQUALS\tVERBNOUN +1\t# B(1)TMP HOLDS RETURN\nRTRN\t\tEQUALS\tQSAVED\t+1\t# B(1) RETURN\nSUBEXIT\t\tEQUALS\tRTRN\t+1\t# B(1)TMP\n\t\t\t\t\t# RGEXIT CAN'T SHARE WITH HPER,HAPO\nRGEXIT\t\tEQUALS\tSUBEXIT\t\t# I(1)TMP Q SAVE MODE 1 AND 2 TO RTRN MAIN\n\n# P30 DISPLAY\t\t\t\t(4D)\nHAPO\t\tEQUALS\tKT\t\t# I(2)DSP NOUN 42, FOR P30.\nHPER\t\tEQUALS\tHAPO\t+2\t# I(2)DSP NOUN 42, FOR P30.\n\n# SOME P34 STORAGE.\t(OVERLAYS P35.1 STORAGE)\t(2D)\nNOMTPI\t\tEQUALS\tKT\t\t# I(2)TMP NOMINAL TPI TIME FOR RECYCLE.\n\n# THE FOLLOWING ARE ERASABLES USED BY THE SYSTEM TESTS.  205 USES TRANSM1.  G'S ARE NOT USED IN 205 NOR ARE THEY\n# WHILE 504 USES TRANSM1 AND ALFDK.\n# Page 92\n# RSB 2009.  The definition of TRANSM1 was previously just \"TRANSM1 EQUALS 2000\",\n# this messes up the label typing system in yaYUL.\n\t\tSETLOC\t2000\nTRANSM1\t\tEQUALS\t\t\t# (18) INITIALIZATION FOR IMU TESTS\nALFDK\t\t=\tTRANSM1 +18D\t# (144) ERASABLE LOAD IN 504\n\n# END OF PERF. TEST ERASABLE IN BANK 4\n\n# *-*-* V82 *-*-*\t\t\t(6D)\n\nVONE'\t\tEQUALS\tRGEXIT\t+1\t# I(6)TMP NORMAL VELOCITY VONE/ SQ RT MU\n\n# PAD LOAD INTEGRATION ERROR INCLUDED IN VARIANCE BY P20\t(1D)\n\nINTVAR\t\tEQUALS\tVONE'\t+6\t# I(1)PL\tSQUARE OF EXPECTED INTEGRATION\n\t\t\t\t\t#\t\tPOSITION EXTRAPOLATION ERROR.\n\t\t\t\t\t#\t\tSCALED METERS(2) 2(15)\nEND-E4\t\tEQUALS\tINTVAR\t\t# LAST USED ERASABLE IN E4.\n\n# Page 93\n# EBANK-5 ASSIGNMENTS\n\n\t\tSETLOC\t2400\n\n# *-*-*-*- OVERLAY 1 IN EBANK 5 -*-*-*-*\n\n# W-MATRIX STORAGE.\t\t\t(162D)\n\n# RSB 2009.  The following 3 lines have been replaced to be consistent with yaYUL's\n# label-typing system.  They *were* \"W EQUALS 2400\", \"9X9LOC1 EQUALS 2444\",\n# \"9X9LOC2 EQUALS 2532\".\nW\t\tEQUALS\t\t\t# B(162)\n9X9LOC1\t\tEQUALS\tW\t+44\n9X9LOC2\t\tEQUALS\t9X9LOC1\t+66\n\nEMATRIX\t\t=\tW\t+120D\t# B(42) USED TO CONVERT W TO 6X6\nEND-W\t\tEQUALS\tW \t+162D\t# **NEXT AVAILABLE LOC AFTER W MATRIX**\n\n# AUTO-OPTICS STORAGE -R52-\n\n# DO NOT MOVE FROM E5,1554.  A DELICATE BALANCE EXISTS BETWEEN THIS AND P03\nXNB1\t\tEQUALS\tW\t+108D\t# B(6D)TMP\nYNB1\t\tEQUALS\tXNB1\t+6\t# B(6)TMP\nZNB1\t\tEQUALS\tYNB1\t+6\t# B(6)TMP\nSAVQR52\t\tEQUALS\tZNB1\t+6\t# I(2)TMP\nPLANVEC\t\tEQUALS\tSAVQR52\t+2\t# B(6) S-S SIGHTING VECTOR IN REF. COOR.\nTSIGHT\t\tEQUALS\tPLANVEC\t+6\t# B(2) S-S TIME OF SIGHTING\n\n# RENDEZVOUS -P34-35\t\t\t(26D)\nDVLOS\t\tEQUALS\tTSIGHT\t+2\t# I(6) S-S DELTA VELOCITY, LOS COORD-DISPLAY\nDELTAR\t\tEQUALS\tDVLOS\t\t# I(2)\nTINTSOI\t\tEQUALS\tDELTAR\t\t# I(2) INTERCEPT TIME FOR SOI MANEUVER\nDELTTIME\tEQUALS\tDVLOS\t+2\t# I(2)\nTARGTIME\tEQUALS\tDVLOS\t+4\t# I(2)\nUNRM\t\tEQUALS\tDVLOS\t+6\t# I(6) S-S\nULOS\t\tEQUALS\tUNRM\t+6\t# I(6) S-S UNIT LINE OF SIGHT VECTOR\nACTCENT\t\tEQUALS\tULOS\t+6\t# I(2) S-S CENTRAL ANGLE BETWEEN ACTIVE\n\t\t\t\t\t#      VEH AT TPI IGNITION TIME AND\n\t\t\t\t\t#      TARGET VECTOR.\nDELVTPI\t\tEQUALS\tACTCENT\t+2\t# I(2) NOUN 58 FOR P34\nDELVTPF\t\tEQUALS\tDELVTPI\t+2\t# I(2) NOUN 58,59 FOR P34,35\nPOSTTPI\t\tEQUALS\tDELVTPF\t+2\t# I(2) NOUN 58 FOR P34.\nTDEC2\t\tEQUALS\tDELVTPI\t\t#  (2)\n\n# ALIGNMENT\t\t\t\t(12D)\n# Page 94\nSTARSAV1\tEQUALS\tDVLOS\t\t# I(6)TMP RESTART STAR SAVE.\nSTARSAV2\tEQUALS\tSTARSAV1 +6\t# I(6)TMP RESTART STAR SAVE.\nUS\t\t=\tSTARSAV2\t# \t  (CISLUNAR TAG FOR STARSAV2).\n\n# TPI SEARCH\t\t\t\t(26D)\nIT\t\tEQUALS\tDVLOS\t\t#  (6)\nTHETZERO\tEQUALS\tIT\t+6\t#  (2)\nTFI\t\tEQUALS\tTHETZERO +2\t#  (2)\nDELVEE\t\tEQUALS\tTFI\t+2\t#  (2)\nHP\t\tEQUALS\tDELVEE\t+2\t#  (2)\nTFO\t\tEQUALS\tHP\t+2\t#  (2)\nHPO\t\tEQUALS\tTFO\t+2\t#  (2)\nDELVEO\t\tEQUALS\tHPO\t+2\t#  (2)\nMAGVTPI\t\tEQUALS\tDELVEO\t+2\t# I(2)TMP MAG OF DELTAVTPI OR VMID\nRELDELV\t\tEQUALS\tMAGVTPI\t+2\t# I(2)TMP MAG OF DELTAVTPF\nT3TOT4\t\tEQUALS\tRELDELV\t+2\t# I(2)DSP NOUN 39 FOR P34,35.  TPI TO TINT\n\t\t\t\t\t# (CANNOT SHARE WITH RETURN TO EARTH)\n# Page 95\n# ALIGNMENT/SYSTEST/CALCSMSC/CRS61.1 COMMON STORAGE\t(36D)\n# (CALCSMSC IS A SUBSET OF S41.1 AT LEAST)\n# (CRS61.1 IS A SUBSET OF P20)\n\nXSM\t\tEQUALS\tEND-W\t+23D\t# B(6)\nYSM\t\tEQUALS\tXSM\t+6\t# B(6)TMP\nZSM\t\tEQUALS\tYSM\t+6\t# B(6)TMP\n\nXDC\t\tEQUALS\tZSM\t+6\t# B(6)TMP\nYDC\t\tEQUALS\tXDC\t+6\t# B(6)TMP\nZDC\t\tEQUALS\tYDC\t+6\t# B(6)TMP\n\nXNB\t\t=\tXDC\nYNB\t\t=\tYDC\nZNB\t\t=\tZDC\n\n# OVERLAYS WITHIN ALIGNMENT/SYSTEST/CALCSMSC COMMON STORAGE\n\n-COSB\t\tEQUALS\tXSM \t+2\t# (2)TMP\nSINB\t\tEQUALS\t-COSB \t+2\t# (2)TMP\n\n# ALIGNMENT/SYSTEST COMMON STORAGE\t(18D)\n\nSTARAD\t\tEQUALS\tZDC \t+6\t# I(18D)TMP\n\n# ALIGNMENT/SYSTEST/AUTO OPTICS COMMON STORAGE.\t(17D)\n\nOGC\t\tEQUALS\tSTARAD \t+18D\t# I(2)TMP\nIGC\t\tEQUALS\tOGC\t+2\t# I(2)TMP\nMGC\t\tEQUALS\tIGC \t+2\t# I(2)TMP\nSTAR\t\tEQUALS\tMGC \t+2\t# I(6)TMP\nSAC\t\tEQUALS\tSTAR \t+6\t# I(2)TMP\nPAC\t\tEQUALS\tSAC \t+2\t# I(2)TMP\nQMIN\t\tEQUALS\tPAC \t+2\t# B(1)TMP\n\n# **** COLP50'S ****\t\t\t(1D)\nCULTRIX\t\tEQUALS\tVEARTH\t\t# VEARTH, VSUN, VMOON\n\n# OVERLAYS WITHIN ALIGNMENT/SYSTEST COMMON STORAGE\t(24D)\n\nVEARTH\t\tEQUALS\tSTARAD\t\t# (6)TMP\nVSUN\t\tEQUALS\tVEARTH \t+6\t# (6)TMP\nVMOON\t\tEQUALS\tVSUN \t+6\t# (6)TMP\nSAX\t\tEQUALS\tVMOON \t+6\t# (6)TMP\n\n# Page 96\n# *-*-*-*- OVERLAY NUMBER 2 IN EBANK 5 -*-*-*-*\n\n# CONICS ROUTINE STORAGE.\t\t\t(87D)\n\nDELX\t\tEQUALS\tEND-W\t\t# I(2)TMP\nDELT\t\tEQUALS\tDELX \t+2\t# I(2)TMP\nURRECT\t\tEQUALS\tDELT \t+2\t# I(6)TMP\nRCNORM\t\tEQUALS\tURRECT \t+6\t# I(2)TMP\nXPREV\t\tEQUALS\tXKEP\t\t# I(2)TMP\nR1VEC\t\tEQUALS\tRCNORM \t+2\t# I(6)TMP\nR2VEC\t\tEQUALS\tR1VEC \t+6\t# I(6)TMP\nTDESIRED\tEQUALS\tR2VEC \t+6\t# I(2)TMP\nGEOMSGN\t\tEQUALS\tTDESIRED +2\t# I(1)TMP\nUN\t\tEQUALS\tGEOMSGN +1\t# I(6)TMP\nVTARGTAG\tEQUALS\tUN \t+6\t# I(1)TMP\nVTARGET\t\tEQUALS\tVTARGTAG +1\t# I(6)TMP\nRTNLAMB\t\tEQUALS\tVTARGET +6\t# I(1)TMP\nU2\t\tEQUALS\tRTNLAMB +1\t# I(6)TMP\nMAGVEC2\t\tEQUALS\tU2 \t+6\t# I(2)TMP\nUR1\t\tEQUALS\tMAGVEC2 +2\t# I(6)TMP\nSNTH\t\tEQUALS\tUR1 \t+6\t# I(2)TMP\nCSTH\t\tEQUALS\tSNTH \t+2\t# I(2)TMP\n1-CSTH\t\tEQUALS\tCSTH \t+2\t# I(2)TMP\nCSTH-RHO\tEQUALS\t1-CSTH \t+2\t# I(2)TMP\nP\t\tEQUALS \tCSTH-RHO +2\t# I(2)TMP\nR1A\t\tEQUALS \tP \t+2\t# I(2)TMP\nRVEC\t\tEQUALS\tR1VEC\t\t# I(6)TMP\nVVEC\t\tEQUALS\tR1A \t+2\t# I(6)TMP\nRTNTT\t\tEQUALS\tRTNLAMB\t\t# I(1)TMP\nECC\t\tEQUALS\tVVEC \t+6\t# I(2)TMP\nRTNTR\t\tEQUALS\tRTNLAMB\t\t# I(1)TMP\nRTNAPSE\t\tEQUALS\tRTNLAMB\t\t# I(1)TMP\nR2\t\tEQUALS\tMAGVEC2\t\t# I(2)TMP\nRTNPRM\t\tEQUALS\tECC \t+2\t# I(1)TMP\nSGNRDOT\t\tEQUALS\tRTNPRM +1\t# I(1)TMP\nRDESIRED\tEQUALS\tSGNRDOT +1\t# I(2)TMP\nDELDEP\t\tEQUALS\tRDESIRED +2\t# I(2)TMP\nDEPREV\t\tEQUALS\tDELDEP \t+2\t# I(2)TMP\nTERRLAMB\tEQUALS\tDELDEP\t\t# I(2)TMP\nTPREV\t\tEQUALS\tDEPREV\t\t# I(2)TMP\n\n# Page 97\n# *-*-*-*- OVERLAY NUMBER 3 IN EBANK 5 -*-*-*-*\n\n# MEASUREMENT INCORPORATION STORAGE.\t(66D)\n# (CALLED BY P20, P22, P23)\n\nOMEGAM1\t\tEQUALS\tEND-W\t\t# I(6)TMP\nOMEGAM2\t\tEQUALS\tOMEGAM1\t+6\t# I(6)TMP\nOMEGAM3\t\tEQUALS\tOMEGAM2 +6\t# I(6)TMP\nHOLDW\t\tEQUALS\tOMEGAM3 +6\t# I(18)TMP\nTDPOS\t\tEQUALS\tHOLDW \t+18D\t# I(6)TMP\nTDVEL\t\tEQUALS\tTDPOS \t+6\t# I(6)TMP\n\nZI\t\tEQUALS\tTDVEL\t+6\t# I(18)\n\n# P22-P23 STORAGE.\t\t\t(8D)\n\n22SUBSCL\tEQUALS\tZI \t+18D\t# DE OF ABCDE LANDMARK ID NO.\nCXOFF\t\tEQUALS\t22SUBSCL +1\t# B OF ABCDE OFFSET INDICATOR\n8KK\t\tEQUALS\tCXOFF \t+1\t# B(1)TMP INDEX OF PRESENT MARK\n8NN\t\tEQUALS\t8KK \t+1\t# B(1)TMP\nS22LOC\t\tEQUALS\t8NN \t+1\t# I(1)TMP MARK DATA LOC\nLANDMARK\tEQUALS\tS22LOC +1\t# B(1)DSP NOUN 70 FOR P22,51, R52,53\nHORIZON\t\tEQUALS\tLANDMARK +1\t# B(1)DSP NOUN 70 FOR P22,51, R52,53\nIDOFLMK\t\tEQUALS\tHORIZON +1\t# B(1)\n\n# ******P23***\t\t\t\t(1D)\nTRUNION\t\tEQUALS\tIDOFLMK +1\t# B(1)\n\n# Page 98\n\n# *-*-*-*- OVERLAY NUMBER 0 IN EBANK 5 -*-*-*-*\n\n# SYSTEM TEST STORAGE.\t\t\t\t(174)\n\nAZIMUTH\t\tERASE\t+1\nLATITUDE\tERASE\t+1\n\nTRUNA\t\tEQUALS\tDESOPTT\nSHAFTA\t\tEQUALS\tDESOPTS\n\nERVECTOR\tERASE\t+5\nLENGTHOT\tERASE\nLOSVEC\t\tERASE\t+5\n\nSXTOPTN\t\t=\tLOSVEC\nNDXCTR\t\tERASE\nPIPINDEX\tERASE\nPOSITON\t\tERASE\nQPLAC\t\tERASE\nQPLACE\t\tERASE\nQPLACES\t\tERASE\nRUN\t\tERASE\nSTOREPL\t\tERASE\nSOUTHDR\t\tERASE\nTARG1/2\t\t=\tSOUTHDR\nTAZEL1\t\tERASE\t+5\nTEMPTIME\tERASE\t+1\nTMARK\t\tERASE\t+1\nGENPL\t\tERASE\t+134D\nCDUTIMEI\t=\tGENPL\nCDUTIMEF\t=\tGENPL +2\nIMU/OPT\t\t=\tGENPL +4\nCDUREADF\t=\tGENPL +5\nCDUREADI\t=\tGENPL +6\nCDULIMIT\t=\tGENPL +7\n\nTEMPADD\t\t=\tGENPL +4\nTEMP\t\t=\tGENPL +5\nNOBITS\t\t=\tGENPL +6\nCHAN\t\t=\tGENPL +7\n\nLOS1\t\t=\tGENPL +8D\nLOS2\t\t=\tGENPL +14D\n\nCALCDIR\t\tEQUALS\tGENPL +20D\nCDUFLAG\t\tEQUALS\tGENPL +21D\nGYTOBETQ\tEQUALS\tGENPL +22D\nOPTNREG\t\tEQUALS\tGENPL +23D\nSAVE\t\tEQUALS\tGENPL +24D\t# THREE CONSEC LOC\nSFCONST1\tEQUALS\tGENPL +27D\n# Page 99\nTIMER\t\tEQUALS\tGENPL \t+28D\n\nDATAPL\t\tEQUALS\tGENPL \t+30D\nRDSP\t\tEQUALS\tGENPL\t\t# FIX LATER\tPOSSIBLY KEEP1\nMASKREG\t\tEQUALS\tGENPL \t+64D\nCDUNDX\t\tEQUALS\tGENPL \t+66D\nRESULTCT\tEQUALS\tGENPL \t+67D\nCOUNTPL\t\tEQUALS\tGENPL \t+70D\n\nCDUANG\t\tEQUALS\tGENPL \t+71D\nAINLA\t\t=\tGENPL\t\t# OPTIMUM CALIB. AND ALIGNMENT\nWANGO\t\tEQUALS\tAINLA\nWANGI\t\tEQUALS\tAINLA \t+2D\nWANGT\t\tEQUALS\tAINLA \t+4D\nTORQNDX\t\t=\tWANGT\nDRIFTT\t\tEQUALS\tAINLA \t+6D\nALX1S\t\tEQUALS\tAINLA \t+8D\nCMPX1\t\tEQUALS\tAINLA \t+9D\nALK\t\tEQUALS\tAINLA \t+10D\nVLAUNS\t\tEQUALS\tAINLA \t+22D\nTHETAX\t\t=\tALK \t+2\nWPLATO\t\tEQUALS\tAINLA \t+24D\nINTY\t\tEQUALS\tAINLA \t+28D\nTHETAN\t\t=\tTHETAX \t+6\nANGZ\t\tEQUALS\tAINLA \t+30D\nINTZ\t\tEQUALS\tAINLA \t+32D\nANGY\t\tEQUALS\tAINLA \t+34D\nANGX\t\tEQUALS\tAINLA \t+36D\nDRIFTO\t\tEQUALS\tAINLA \t+38D\nDRIFTI\t\tEQUALS\tAINLA \t+40D\nVLAUN\t\tEQUALS\tAINLA \t+44D\nFILDELV\t\t=\tTHETAN \t+6\nACCWD\t\tEQUALS\tAINLA \t+46D\nINTVEC\t\t=\tFILDELV +2\nPOSNV\t\tEQUALS\tAINLA \t+52D\nDPIPAY\t\tEQUALS\tAINLA \t+54D\nDPIPAZ\t\tEQUALS\tAINLA \t+58D\nALTIM\t\tEQUALS\tAINLA \t+60D\nALTIMS\t\tEQUALS\tAINLA \t+61D\nALDK\t\tEQUALS\tAINLA \t+62D\nDELM\t\tEQUALS\tAINLA \t+76D\nWPLATI\t\tEQUALS\tAINLA \t+84D\nRESTARPT\t=\tAINLA \t+91D\nGEOSAVED\t=\tAINLA \t+117D\nPREMTRXC\t=\tAINLA \t+118D\nLAUNCHAZ\t=\tAINLA \t+119D\nNEWAZMTH\t=\tAINLA \t+121D\nOLDAZMTH\t=\tAINLA \t+123D\n# Page 100\nTOLDAZMT\t=\tAINLA \t+125D\nGEOCOMPS\t=\tAINLA \t+127D\n1SECXT\t\t=\tAINLA \t+128D\nGTSXTLST\t=\tAINLA \t+129D\nERECTIME\t=\tAINLA \t+130D\nERCOMP\t\t=\tAINLA \t+131D\nZERONDX\t\t=\tAINLA \t+137D\nGTSOPNDZ\t=\tZERONDX\n\n# THE FOLLOWING TAGS ARE USED BY THE 504 IMU CALIBRATION AND ALIGNMENT PROGRAM ONLY.\n\nTHETAX1\t\tEQUALS\tALK\t+2\nTHETAN1\t\tEQUALS\tTHETAX1\t+6\nFILDELV1\tEQUALS\tTHETAN1\t+6\nINTVEC1\t\tEQUALS\tFILDELV1 +2\nGEOSAVE1\tEQUALS\tAINLA\t+117D\nPREMTRX1\tEQUALS\tAINLA\t+118D\nLUNCHAZ1\tEQUALS\tAINLA\t+119D\nNEWAZ1\t\tEQUALS\tLUNCHAZ1 +2\nOLDAZ1\t\tEQUALS\tLUNCHAZ1 +4\nTOLDAZ1\t\tEQUALS\tLUNCHAZ1 +6\nGEOCOMP1\tEQUALS\tAINLA\t+127D\n1SECXT1\t\tEQUALS\tAINLA\t+128D\nGTSWTLT1\tEQUALS\tAINLA\t+129D\nERECTIM1\tEQUALS\tAINLA\t+130D\nERCOMP1\t\tEQUALS\tAINLA\t+131D\t# I(6)\nZERONDX1\tEQUALS\tAINLA\t+137D\nPERFDLAY\tEQUALS\tAINLA\t+138D\t# B(2)..........\n\n# END OF 504 + ALIGN ERASE.\n\n# Page 101\n\n# *-*-*-*-  OVERLAY 4 IN EBANK 5  -*-*-*-*\n#\n# P32 --- P33\t\t\t\t(26D)\nUP1\t\tEQUALS\tDVLOS\t\t# I(6)\nVPASS2\t\tEQUALS\tUP1\t+6\t# I(6)\nRPASS2\t\tEQUALS\tVPASS2\t+6\t# I(6)\nDIFFALT\t\tEQUALS\tRPASS2\t+6\t# I(2)\nTCDH\t\tEQUALS\tDIFFALT\t+2\t# I(2)\nTCSI\t\tEQUALS\tTCDH\t+2\t# I(2)\nTTPIO\t\tEQUALS\tTCSI\t+2\t# I(2)\n\n# P32,P33 STORAGE OVERLAYING 9X9 W-MATRIX LOCATIONS\t(26D)\nDELVEET1\tEQUALS\t9X9LOC1\t\t# I(6) DELV FOR CSI\nRACT2\t\tEQUALS\tDELVEET1 +6\t# I(6) POS. ACTIVE VEH. AT CDH TIME\nVACT2\t\tEQUALS\t9X9LOC2\t\t# I(6) VEL. ACTIVE VEH. AT CDH TIME\nRACT1\t\tEQUALS\tVACT2\t+6\t# I(6) POS. ACTIVE VEH. AT CSI TIME\nT1TOT2\t\tEQUALS\tRACT1\t+6\t# I(2) TCDH - TCSI\nEND-E5\t\tEQUALS\tQMIN\t\t# LAST USED E5 ADDRESS\n\n# Page 102\n\n# EBANK-6 ASSIGNMENTS.\n\n\t\tSETLOC\t3000\n# P23\tPAD LOADS ***\t\t\t(2D).\nWMIDPOS\t\tERASE\t\t\t# I(1)PL INITIAL VALUES FOR W-MATRIX IN\nWMIDVEL\t\tERASE\t\t\t# I(1)PL CISLUNAR (P23) NAVIGATION\n\n# R22\tPAD LOADS\t\t\t(5D).\nRVAR\t\tERASE\t+1\t\t# I(2)PL VHF RADAR\nRVARMIN\t\tERASE\t+2\t\t# I(3)PL VHF RADAR\n\n# ***** PAD LOADED ENTRY DAP STEERING VARIABLES *****\t(3D)\nLADPAD\t\tERASE\t\t\t# I(1)PL FOR ENTRY. HOLDS CM NOMINAL L/D\nLODPAD\t\tERASE\t\t\t# I(1)PL FOR ENTRY. HOLDS CM NOMINAL LOD\nALFAPAD\t\tERASE\t\t\t# B(1)PL ALFA TRIM / 180\n\n# ***** PAD LOADED TVC DAP VARIABLES ****************\t(26D)\nETDECAY\t\tERASE\t\t\t# I(1)PL\nESTROKER\tERASE\t\t\t# B(1)PL\nEKPRIME\t\tERASE\t+1\t\t# B(2)PL\nEKTLX/I\t\tERASE\t+2\t\t# B(3)PL\nEREPFRAC\tERASE\t+1\t\t# B(2)PL\nPACTOFF\t\tERASE\t\t\t# B(1)PL, DSP N48 R01 = PTRIM, R02 = YTRIM\nYACTOFF\t\tERASE\t\t\t# B(1)PL, CONSECUTIVE WITH PACTOFF\nHBN10\t\tERASE\t\t\t# B(1)\nHBN11/2\t\tERASE\t\t\t# B(1)\nHBN12\t\tERASE\t\t\t# B(1)\nHBD11/2\t\tERASE\t\t\t# B(1)\nHBD12\t\tERASE\t\t\t# B(1)\nHBN20\t\tERASE\t\t\t# B(1)\nHBN21/2\t\tERASE\t\t\t# B(1)\nHBN22\t\tERASE\t\t\t# B(1)\nHBD21/2\t\tERASE\t\t\t# B(1)\nHBD22\t\tERASE\t\t\t# B(1)\nHBN30\t\tERASE\t\t\t# B(1)\nHBN31/2\t\tERASE\t\t\t# B(1)\nHBN32\t\tERASE\t\t\t# B(1)\n# Page 103\nHBD31/2\t\tERASE\t\t\t# B(1)\nHBD32\t\tERASE\t\t\t# B(1)\n\n# **** EXCLUSIVE TVC DAP VARIABLES. *****************\t(5D)\nV97VCNTR\tERASE\t\t\t# B(1)\nTEMPDAP\t\tERASE\t+1\t\t# B(2)\nMRKRTMP\t\t=\tTEMPDAP\t\t#\t((B(1)))\nCNTR\t\tERASE\t\t\t# B(1)\nOGAD\t\tERASE\t\t\t# B(1)\n\n# **** EXCLUSIVE RCS DAP VARIABLES ******************\t(13D)\nRWORD1\t\tERASE\t+12D\t\t# B(1)\nRWORD2\t\tEQUALS\tRWORD1\t+1\t# B(1)\nPWORD1\t\tEQUALS\tRWORD2\t+1\t# B(1)\nPWORD2\t\tEQUALS\tPWORD1\t+1\t# B(1)\nYWORD1\t\tEQUALS\tPWORD2\t+1\t# B(1)\nYWORD2\t\tEQUALS\tYWORD1\t+1\t# B(1)\nBLAST\t\tEQUALS\tYWORD2\t+1\t# B(2)\nBLAST1\t\tEQUALS\tBLAST\t+2\t# B(2)\nBLAST2\t\tEQUALS\tBLAST1\t+2\t# B(2)\nT5PHASE\t\tEQUALS\tBLAST2\t+2\t# B(1)\n\n# **** RCS/TVC DAP COMMON STORAGE. ******************\t(16D)\nDAPDATR1\tERASE\t\t\t# B(1)DSP NOUN 46(R1)\nDAPDATR2\tERASE\t\t\t# B(1)DSP NOUN 46(R2)\n\nIXX\t\tERASE\t\t\t# B(1) CONSECUTIVE WITH IAVG, IAVG/TLX FOR\nIAVG\t\tERASE\t\t\t# B(1)\t\t\t\t  MASSPROP\nIAVG/TLX\tERASE\t\t\t# B(1)\n\nLEMMASS\t\tERASE\t\t\t# B(1)DSP NOUN 47 (R2)\nCSMMASS\t\tERASE\t\t\t# B(1)DSP NOUN 47 (R1)\nWEIGHT/G\tERASE\t\t\t# B(1)\nMASS\t\t=\tWEIGHT/G\n\nAK\t\tERASE\nAK1\t\tERASE\nAK2\t\tERASE\n\nRCSFLAGS\tERASE\t\t\t# B(1) CONSECUTIVE WITH AK2 DOWNLINK\nT5TEMP\t\tERASE\t\t\t# B(1)\nEDRIVEX\t\tERASE\nEDRIVEY\t\tERASE\n# Page 104\nEDRIVEZ\t\tERASE\n\n# INTEMP THRU INTEMP+14D ARE RESERVED FOR OVERLAYED TVC/RCS INTERUP TRUE TEMPORARIES\nINTTEMP\t\tERASE\t+14D\t\t# (15)\n\n# TVC/RCS THRU TVCRCS +11D RESERVED FOR DOWNLINKED VARIABLES\nTVCRCS\t\tERASE\t+11D\t\t# (12)\n\t\t\t\t\t# RCS (WBODYS,ADOTS)\n\t\t\t\t\t# TVC(OMEGACS,OMEGABS)\n\n# TVC DAP TEMPORARY VARIABLES*********************************\n\n# TVC DAP INTERRUPT TRUE TEMPORARIES**************************\n\nPHI333\t\tEQUALS\tINTTEMP\t\t# B(1) TEMPORARY REGISTER\nPSI333\t\tEQUALS\tPHI333 \t+1\t# B(1) COUNTING REGISTER\nTEMP333\t\tEQUALS\tPSI333 \t+1\t# B(1) COUNTING REGISTER\nVARST0\t\tEQUALS\tTEMP333 +1\t# B(8) BREAKPOINTS AND SLOPES\nVARST5\t\t=\tVARST0 \t+5\nLASTMASP\tEQUALS\tVARST0 \t+9D\t# LAST VARST0 WORD\nTVCTMP1\t\tEQUALS\tLASTMASP +1\t# B(1)\n\n# *******REGULAR TVC TEMPORARIES*************\n\n# TVC ZEROING STARTS HERE\n\nOMEGAC\t\tEQUALS\tTVCRCS\t\t# I(6)\nOMEGAXC\t\t=\tOMEGAC\nOMEGAYC\t\t= \tOMEGAC \t+2\nOMEGAZC\t\t=\tOMEGAC \t+4\n\nOMEGAB\t\tEQUALS\tTVCRCS \t+6\t# B(6)\nOMEGAXB\t\t=\tOMEGAB\nOMEGAYB\t\t=\tOMEGAB \t+2\nOMEGAZB\t\t=\tOMEGAB \t+4\n\nPTMP1\t\tEQUALS\tOMEGAC\t+12D\t# B(2)\nPTMP2\t\tEQUALS\tPTMP1\t+2\t# B(2)\nPTMP3\t\tEQUALS\tPTMP2\t+2\t# B(2)\nPTMP4\t\tEQUALS\tPTMP3\t+2\t# B(2)\nPTMP5\t\tEQUALS\tPTMP4\t+2\t# B(2)\n# Page 105\nPTMP6\t\tEQUALS\tPTMP5\t+2\t# B(2)\n\nYTMP1\t\tEQUALS\tPTMP6\t+2\t# B(2)\nYTMP2\t\tEQUALS\tYTMP1\t+2\t# B(2)\nYTMP3\t\tEQUALS\tYTMP2\t+2\t# B(2)\nYTMP4\t\tEQUALS\tYTMP3\t+2\t# B(2)\nYTMP5\t\tEQUALS\tYTMP4\t+2\t# B(2)\nYTMP6\t\tEQUALS\tYTMP5\t+2\t# B(2)\n\nROLLFIRE\tEQUALS\tYTMP6\t+2\t# B(1)\nROLLWORD\tEQUALS\tROLLFIRE +1\t# B(1)\nTEMREG\t\tEQUALS\tROLLWORD +1\t# B(1)\n\nSTROKER\t\tEQUALS\tTEMREG\t+1\t# B(1)\n\nPERRB\t\tEQUALS\tSTROKER +1\t# B(2)\nYERRB\t\tEQUALS\tPERRB\t+2\t# B(2)\n\nDELPBAR\t\tEQUALS\tYERRB\t+2\t# B(2)\nDELYBAR\t\tEQUALS\tDELPBAR\t+2\t# B(2)\n\nPDELOFF\t\tEQUALS\tDELYBAR\t+2\t# B(2)\nYDELOFF\t\tEQUALS\tPDELOFF\t+2\t# B(2)\n\n# TVC ZEROING LOOP ENDS HERE\nTTMP1\t\tEQUALS\tYDELOFF\t+2\t# B(2)\nTTMP2\t\tEQUALS\tTTMP1\t+2\t# B(2)\nDAP1\t\tEQUALS\tTTMP2\t+2\t# B(2)\nDAP2\t\tEQUALS\tDAP1\t+2\t# B(2)\nDAP3\t\tEQUALS\tDAP2\t+2\t# B(2)\n\nPCMD\t\tEQUALS\tDAP3\t+2\t# B(1)\nYCMD\t\tEQUALS\tPCMD\t+1\t# B(1), CONSECUTIVE WITH PCMD\nT5TVCDT\t\tEQUALS\tYCMD\t+1\t# B(1)\nMDT\t\tEQUALS\tT5TVCDT\t+1\t# I(6)\nKPRIMEDT\tEQUALS\tMDT\t+6\t# I(2)\nKTLX/I\t\tEQUALS\tKPRIMEDT +2\t# B(1)\nTENMDOT\t\tEQUALS\tKTLX/I\t+1\t# B(1)\n1/CONACC\tEQUALS\tTENMDOT\t+1\t# B(1)\nVARK\t\tEQUALS\t1/CONACC +1\t# B(1)\nREPFRAC\t\tEQUALS\tVARK\t+1\t# B(1)\nVCNTR\t\tEQUALS\tREPFRAC\t+1\t# B(1)\nTVCPHASE\tEQUALS\tVCNTR\t+1\t# B(1)\nPCDUYPST\tEQUALS\tTVCPHASE +1\t# B(1)\nPCDUZPST\tEQUALS\tPCDUYPST +1\t# B(1)\nMCDUYDOT\tEQUALS\tPCDUZPST +1\t# B(1)\nMCDUZDOT\tEQUALS\tMCDUYDOT +1\t# B(1)\n# Page 106\nTVCEXPHS\tEQUALS\tMCDUZDOT +1\t# B(1)\nMASSTMP\t\tEQUALS\tTVCEXPHS +1\t# B(1)\tPROTECT\nVCNTRTMP\tEQUALS\tMASSTMP\t+1\t# B(1)\t  *PROTECT***\n\n# STROKE TEST VARIABLES\nSTRKTIME\tEQUALS\tVCNTRTMP +1\t# B(1)\nCADDY\t\tEQUALS\tSTRKTIME +1\t# B(1)\nN\t\tEQUALS\tCADDY\t+1\t# B(1)\nBUNKER\t\tEQUALS\tN\t+1\t# B(1)\nREVS\t\tEQUALS\tBUNKER\t+1\t# B(1)\nCARD\t\tEQUALS\tREVS\t+1\t# B(1)\n\n# TVC ROLL DAP VARIABLES\nOGANOW\t\tEQUALS\tCARD\t+1\t# B(1)\nOGAPAST\t\tEQUALS\tOGANOW\t+1\t# B(1)\nOGA\t\tEQUALS\tOGAPAST\t+1\t# B(1)TMP\nOGAERR\t\t=\tOGA\t\t# (ROLL DAP USES OGA, MEANS OGAERROR)\nDELOGART\tEQUALS\tOGA\t+1\t# B(1)TMP\nSGNRT\t\tEQUALS\tDELOGART +1\t# SIGN OF CGA RATE\nDELOGA\t\tEQUALS\tSGNRT\t+1\t# USED IN ROLL LOGIC\nI\t\tEQUALS\tDELOGA\t+1\t# USED IN ROLL LOGIC\nIOGARATE\tEQUALS\tI\t+1\t# USED IN ROLL LOGIC\n\n# TVC DAP RESTART TEMPORARIES.\nPACTTMP\t\tEQUALS\tIOGARATE +1\t# B(2)\nYACTTMP\t\tEQUALS\tPACTTMP\t+2\t# B(2)\nCNTRTMP\t\tEQUALS\tYACTTMP\t+2\t# B(1)\nSTRKTTMP\tEQUALS\tCNTRTMP\t+1\t# B(1)\nDELBRTMP\tEQUALS\tSTRKTTMP +1\t# B(2)\nERRBTMP\t\tEQUALS\tDELBRTMP +2\t# B(2)\nCMDTMP\t\tEQUALS\tERRBTMP\t+2\t# B(2)\n\nTMP1\t\tEQUALS\tCMDTMP\t+2\t# B(2)\nTMP2\t\tEQUALS\tTMP1\t+2\t# B(2)\nTMP3\t\tEQUALS\tTMP2\t+2\t# B(2)\nTMP4\t\tEQUALS\tTMP3\t+2\t# B(2)\nTMP5\t\tEQUALS\tTMP4\t+2\t# B(2)\nTMP6\t\tEQUALS\tTMP5\t+2\t# B(2)\n\n# TVC DAP FILTER COEFFICIENTS TEMPORARIES\nCOEFFADR\tEQUALS\tTMP6\t+2\t# B(1)\nN10\t\tEQUALS\tCOEFFADR +1\t# I(15)\n# Page 107\n\n# OVERLAYS WITHIN TVC DAP\n\nOGARATE\t\t=\tOMEGAB\t\t# B(2)\n\nPHASETMP\t=\tTTMP1\t\t# B(1) RESTART FOR CSM/LM V46 SWITCH-OVER\nRTRNLOC\t\t=\tTTMP2\t\t# B(1) RESTART FOR CSM/LM V46 SWITCH-OVER\nBZERO\t\t=\tERRBTMP\nCZERO\t\t=\tERRBTMP\nJZERO\t\t=\tCMDTMP\nYZERO\t\t=\tCMDTMP\n\n# 540.9 STORAGE .............\n\nNBRCYCLS\tEQUALS\tN10\t+15D\t# B(1) COUNTER FOR P40,41 STEERING\nNBRCYCLP\tEQUALS\tNBRCYCLS +1\t# B(1) MAINTAIN ORDER\nDELVSUM\t\tEQUALS\tNBRCYCLP +1\t# I(6) P40,P41\nDELVSUMP\tEQUALS\tDELVSUM\t+6\t# I(6) P40,P41\n\n# Page 108\n# **** RCS DAP TEMPORARY VARIABLES. ********************\t(95D)\n\n# ** RCS INTERRUPT TRUE TEMPS ***************\t(15D)\nSPNDX\t\tEQUALS\tINTTEMP\t\t# B(1)\nDPNDX\t\tEQUALS\tSPNDX\t+1\t# B(1)TMP\nKMPAC\t\tEQUALS\tDPNDX\t+1\t# B(2)TMP\nKMPTEMP\t\tEQUALS\tKMPAC\t+2\t# B(1)TMP\n\nXNDX1\t\tEQUALS\tKMPTEMP\t+1\t# B(1)TMP XNDX1 THRU NYJETS ARE OVERLAYED\nXNDX2\t\tEQUALS\tXNDX1\t+1\t# B(1)TMP BY OTHER DAP ERASABLES SO\nYNDX\t\tEQUALS\tXNDX2\t+1\t# B(1)TMP SHOULD ALWAYS BE DEFINED IN\nZNDX\t\tEQUALS\tYNDX\t+1\t# B(1)TMP A BLOCK\nRINDEX\t\tEQUALS\tZNDX\t+1\t# B(1)TMP\nPINDEX\t\tEQUALS\tRINDEX\t+1\t# B(1)TMP\nYINDEX\t\tEQUALS\tPINDEX\t+1\t# B(1)TMP\nNRJETS\t\tEQUALS\tYINDEX\t+1\t# B(1)TMP\nNPJETS\t\tEQUALS\tNRJETS\t+1\t# B(1)TMP\nNYJETS\t\tEQUALS\tNPJETS\t+1\t# B(1)TMP\n\nWTEMP\t\tEQUALS\tXNDX1\t\t# B(2)TMP WTEMP THRU DELTEMPZ OVERLAY\nDELTEMPX\tEQUALS\tWTEMP\t+2\t# B(2)TMP XNDX1 THRU NRJETS AND EDOT THRU\nDELTEMPY\tEQUALS\tDELTEMPX +2\t# B(2)TMP ADBVEL\nDELTEMPZ\tEQUALS\tDELTEMPY +2\t# B(2)TMP\n\nEDOT\t\tEQUALS\tYNDX\t\t# B(2)TMP EDOT THRU ADBVEL OVERLAY\nAERR\t\tEQUALS\tEDOT\t+2\t# B(1)TMP YNDX THRU NPJETS AND DELTEMPX\nEDOTVEL\t\tEQUALS\tAERR\t+1\t# B(2)TMP THRU DELTEMPZ\nAERRVEL\t\tEQUALS\tEDOTVEL\t+2\t# B(1)TMP\nADBVEL\t\tEQUALS\tAERRVEL\t+1\t# B(1)TMP\n\n# *** REGULAR RCS TEMPS *********************\t(   ).\n\n# *** RCS ZEROING LOOP STARTS HERE **********\t(37)\nWBODY\t\tEQUALS\tTVCRCS\t\t# B(2)TMP\nWBODY1\t\tEQUALS\tWBODY\t+2\t# B(2)TMP\nWBODY2\t\tEQUALS\tWBODY\t+4\t# B(2)TMP\nADOT\t\tEQUALS\tWBODY2\t+2\t# B(2)TMP\nADOT1\t\tEQUALS\tADOT\t+2\t# B(2)TMP\nADOT2\t\tEQUALS\tADOT1\t+2\t# B(2)TMP\n\nMERRORX\t\tEQUALS\tADOT2\t+2\t#  (2)\nMERRORY\t\tEQUALS\tMERRORX\t+2\t#  (2)\nMERRORZ\t\tEQUALS\tMERRORY\t+2\t#  (2)\nDFT\t\tEQUALS\tMERRORZ\t+2\t# B(1)TMP\nDFT1\t\tEQUALS\tDFT\t+1\t# B(1)TMP\nDFT2\t\tEQUALS\tDFT1\t+1\t# B(1)TMP\nDRHO\t\tEQUALS\tDFT2\t+1\t# B(2)TMP\nDRHO1\t\tEQUALS\tDRHO\t+2\t# B(2)TMP\n# Page 109\nDRHO2\t\tEQUALS\tDRHO1\t+2\t# B(2)TMP\nATTSEC\t\tEQUALS\tDRHO2\t+2\t# B(1)TMP\nTAU\t\tEQUALS\tATTSEC\t+1\t# B(1)TMP\nTAU1\t\tEQUALS\tTAU\t+1\t# B(1)TMP\nTAU2\t\tEQUALS\tTAU1\t+1\t# B(1)TMP\nBIAS\t\tEQUALS\tTAU2\t+1\t# B(1)TMP\nBIAS1\t\tEQUALS\tBIAS\t+1\t# B(1)TMP\nBIAS2\t\tEQUALS\tBIAS1\t+1\t# B(1)TMP\nERRORX\t\tEQUALS\tBIAS2\t+1\t# B(1)TMP\nERRORY\t\tEQUALS\tERRORX\t+1\t# B(1)TMP\nERRORZ\t\tEQUALS\tERRORY\t+1\t# B(1)TMP\n\n# RCS ZERO LOOP ENDS HERE\n#\tMORE RCS\t\t\t(69D)\nTHETADX\t\tEQUALS\tERRORZ\t+1\t# B(1)TMP MUST BE CONSECUTIVE WITH ERRORZ\nTHETADY\t\tEQUALS\tTHETADX\t+1\t# B(1)TMP\nTHETADZ\t\tEQUALS\tTHETADY\t+1\t# B(1)TMP\n\nDELCDUX\t\tEQUALS\tTHETADZ\t+1\t# B(2)TMP\nDELCDUY\t\tEQUALS\tDELCDUX\t+2\t# B(2)TMP\nDELCDUZ\t\tEQUALS\tDELCDUY\t+2\t# B(2)TMP\n\nDCDU\t\tEQUALS\tDELCDUZ\t+2\t# B(6)TMP USED DURING P20\nDTHETASM\tEQUALS\tDCDU\t+6\t# B(6)TMP STEER LOW OUTPUT.\n\nATTKALMN\tEQUALS\tDTHETASM +6\t# B(1)TMP\nKMJ\t\tEQUALS\tATTKALMN +1\t# B(1)TMP\nKMJ1\t\tEQUALS\tKMJ\t+1\t# B(1)TMP\nKMJ2\t\tEQUALS\tKMJ1\t+1\t# B(1)TMP\nJ/M\t\tEQUALS\tKMJ2\t+1\t# B(1)TMP\nJ/M1\t\tEQUALS\tJ/M\t+1\t# B(1)TMP\nJ/M2\t\tEQUALS\tJ/M1\t+1\t# B(1)TMP\nRACFAIL\t\tEQUALS\tJ/M2\t+1\t# B(1)TMP\nRBDFAIL\t\tEQUALS\tRACFAIL\t+1\t# B(1)TMP\nACORBD\t\tEQUALS\tRBDFAIL\t+1\t# B(1)TMP\nXTRANS\t\tEQUALS\tACORBD\t+1\t# B(1)TMP\nCH31TEMP\tEQUALS\tXTRANS\t+1\t# B(1)TMP\nCHANTEMP\tEQUALS\tCH31TEMP +1\t# B(1)TMP\nT5TIME\t\tEQUALS\tCHANTEMP +1\t# B(1)TMP\nRHO\t\tEQUALS\tT5TIME\t+1\t# B(1)TMP\nRHO1\t\tEQUALS\tRHO\t+1\t# B(1)TMP\nRHO2\t\tEQUALS\tRHO1\t+1\t# B(1)TMP\nAMGB1\t\tEQUALS\tRHO2\t+1\t# B(1)TMP\nAMGB4\t\tEQUALS\tAMGB1\t+1\t# B(1)TMP\n# Page 110\nAMGB5\t\tEQUALS\tAMGB4\t+1\t# B(1)TMP\nAMGB7\t\tEQUALS\tAMGB5\t+1\t# B(1)TMP\nAMGB8\t\tEQUALS\tAMGB7\t+1\t# B(1)TMP\nCAPSI\t\tEQUALS\tAMGB8\t+1\t# B(1)TMP\nCDUXD\t\tEQUALS\tCAPSI\t+1\t# B(2)TMP\nCDUYD\t\tEQUALS\tCDUXD\t+2\t# B(2)TMP\nCDUZD\t\tEQUALS\tCDUYD\t+2\t# B(2)TMP\nSLOPE\t\tEQUALS\tCDUZD\t+2\t# B(1)TMP\nADB\t\tEQUALS\tSLOPE\t+1\t# B(1)TMP\nRMANNDX\t\tEQUALS\tADB\t+1\t# B(1)TMP\nPMANNDX\t\tEQUALS\tRMANNDX\t+1\t# B(1)TMP\nYMANNDX\t\tEQUALS\tPMANNDX\t+1\t# B(1)TMP MUST BE LAST VARIABLE IN RCS\n\n# Page 111\n# ********** ENTRY DAP TEMPORARY VARIABLES. *********************\t(69D)\n\n# ANGLE REGISTERS FOR ENTRY DAPS\nAOG\t\tEQUALS\tBCDU\t\t# 1P\nAIG\t\tEQUALS\tAOG\t+1\t# 1P\nAMG\t\tEQUALS\tAIG\t+1\t# 1P\nROLL/180\tEQUALS\tAMG\t+1\t# 1P\nALFA/180\tEQUALS\tROLL/180 +1\t# 1P\nBETA/180\tEQUALS\tALFA/180 +1\t# 1P\nAOG/PIP\t\tEQUALS\tBETA/180 +1\t# 1P\nAIG/PIP\t\tEQUALS\tAOG/PIP\t+1\t# 1P\nAMG/PIP\t\tEQUALS\tAIG/PIP\t+1\t# 1P\nROLL/PIP\tEQUALS\tAMG/PIP\t+1\t# 1P\nALFA/PIP\tEQUALS\tROLL/PIP +1\t# 1P\nBETA/PIP\tEQUALS\tALFA/PIP +1\t# 1P\n\n# GYMBAL DIFFERENCES OVER INTERNAL TCDU = .1 SEC.\n-DELAOG\t\tEQUALS\tBETA/PIP +1\t# 1P\n-DELAIG\t\tEQUALS\t-DELAOG\t+1\t# 1P\n-DELAMG\t\tEQUALS\t-DELAIG\t+1\t# 1P\n\n# ESTIMATED BODY RATES\nCMDAPMOD\tEQUALS\t-DELAMG\t+1\t# 1P GOES BEFORE PREL FOR TM.\n\nPREL\t\tEQUALS\tCMDAPMOD +1\t# 1P P TCDU/180\t\t(ROLLDOT)\nQREL\t\tEQUALS\tPREL\t+1\t# 1P Q TCDU/180\t\t(PITCHDOT)\nRREL\t\tEQUALS\tQREL\t+1\t# 1P R TCDU/180\t\t(YAWDOT)\n\nBETADOT\t\tEQUALS\tRREL\t+1\t# 1P MUST FOLLOW RREL. BETADOT TCDU/180\nPHIDOT\t\tEQUALS\tBETADOT\t+1\t# 1P\n\n# OLD (UNAVERAGED) BODY RATE MEASURE\nOLDELP\t\tEQUALS\tPHIDOT\t+1\t# 1P\nOLDELQ\t\tEQUALS\tOLDELP\t+1\t# 1P\nOLDELR\t\tEQUALS\tOLDELQ\t+1\t# 1P\n\nJETAG\t\tEQUALS\tOLDELR\t+1\t# 1P\nTUSED\t\tEQUALS\tJETAG\t+1\t# 1P ELAPSED TIME SINCE NOMINAL UPDATE.\n\n# FOLLOWING 3 SP WORDS IN DOWNLINK.  ROLLTM SENT EACH 1 SEC.\nPAXERR1\t\tEQUALS\tTUSED\t+1\t# 1P INTEGRATED ROLL ERROR/360.\nROLLTM\t\tEQUALS\tPAXERR1\t+1\t# 1P ROLL/180 FOR TM.\nROLLC\t\tEQUALS\tROLLTM\t+1\t# 2P ROLLCOM/360 FROM ENTRY (FOR TM)\n\t\t\t\t\t# KEEP ROLLC & ROLLHOLD ADJACENT FOR TP\n# Page 112\nROLLHOLD\tEQUALS\tROLLC\t+2\t# 1P FOR ATTITUDE HOLD IN CMDAPMOD = +1\n\n# ENTRY DAP QUANTITIES THAT SHARE WITH RCS DAP.\nALFACOM\t\tEQUALS\tDCDU\t\t# 1P KEEP ADJACENT TO BETACOM. <<\nBETACOM\t\tEQUALS\tALFACOM +1\t# 1P\n\n# JET LIST.  DT, JETBITS IN THIS ORDER.\nTOFF\t\tEQUALS\tBETACOM +1\t# 1P DP PAIR\nTBITS\t\tEQUALS\tTOFF\t+1\t# 1P\nTON2\t\tEQUALS\tTBITS\t+1\t# 1P DP PAIR\nT2BITS\t\tEQUALS\tTON2\t+1\t# 1P\n\n# MISCELLANEOUS PERMANENT ERASABLE.\nOUTTAG\t\tEQUALS\tT2BITS\t+1\t# 1P\nNUJET\t\tEQUALS\tOUTTAG\t+1\t# 1P\n\n# MORE ENTRY DAP QUANTITIES THAT DO NOT SHARE WITH RCS DAP.\nJETEM\t\tEQUALS\tROLLHOLD +1\t# 2P THIS DP USED IN RATEAVG\nGAMA\t\tEQUALS\tJETEM\t+2\t# 1P\nGAMDOT\t\tEQUALS\tGAMA\t+1\t# 1P\nPOSEXIT\t\tEQUALS\tGAMDOT\t+1\t# 1P\nCM/GYMDT\tEQUALS\tPOSEXIT\t+1\t# 1P\nHEADSUP\t\tEQUALS\tCM/GYMDT +1\t# 1P DSP NOUN 61 FOR P62,63,64,67.\nP63FLAG\t\tEQUALS\tHEADSUP\t+1\t# 1P INTERLOCK FOR WAKEP62\n\n\t\t\t\t\t#>> SHARE BELOW WITH RCS RUPT TEMPS (< 15D) <<<\nCALFA\t\tEQUALS\tSPNDX\t\t# 1P\nSALFA\t\tEQUALS\tCALFA\t+1\t# 1P\n\nSINM\t\tEQUALS\tSALFA\t+1\t# 1P\nCOSM\t\tEQUALS\tSINM\t+1\t# 1P\nSINO\t\tEQUALS\tCOSM\t+1\t# 1P\nCOSO\t\tEQUALS\tSINO\t+1\t# 1P\nSINOCOSM\tEQUALS\tCOSO\t+1\t# 1P\nCOSOCOSM\tEQUALS\tSINOCOSM +1\t# 1P\n\t\t\t\t\t#>> SHARE ABOVE WITH RCS RUPT TEMPS <<<\n\n# THE FOLLOWING FEW REGISTERS USED ONCE EACH 2 SEC\n-VT/180\t\tEQUALS\tNUJET\t+1\t# 1P\nLCX/360\t\tEQUALS\t-VT/180\t+1\t# 1P\nXD/360\t\tEQUALS\tLCX/360\t+1\t# 1P\nVSQ/4API\tEQUALS\tXD/360\t+1\t# 1P\nJNDX\t\tEQUALS\tVSQ/4API +1\t# 1P\nJNDX1\t\tEQUALS\tJNDX\t+1\t# 1P\n# Page 113\nTON1\t\tEQUALS\tJNDX1\t+1\t# 1P DP PAIR\nT1BITS\t\tEQUALS\tTON1\t+1\t# 1P\n\n# MISCELLANEOUS REGISTERS USED EACH UPDATE.\nCM/SAVE\t\tEQUALS\tT1BITS\t+1\t# 1P\nJETEM2\t\tEQUALS\tCM/SAVE\t+1\t# 1P TEMPORARY STORAGE\n\n# DAP QUANTITIES SHARED WITH RCS DAP FOR TM & FLIGHT RECORDER.\nVDT/180\t\t=\tERRORX\t\t# 1P (EDIT)\n-VT/180E\t=\tERRORY\t\t# 1P (EDIT)\n\nPAXERR\t\tEQUALS\tAK\t\t# 1P ROLL ERROR FOR NEEDLES\nQAXERR\t\t=\tTHETADX\t\t# 1P SINCE AK1 IS ZEROED IN ATM DAP.\nRAXERR\t\t=\tQAXERR\t+1\t# 1P SINCE AK2 IS ZEROED IN TM DAP.\n\n# *** COLMANU (R60,R62) ****\nVECQTEMP\tEQUALS\tCOFSKEW\n\n# Page 114\n# ******** KALCMANU VARIABLES. (71D) *******************************\nBCDU\t\tEQUALS\tYMANNDX\t+1\t# B(3)TMP\nKSPNDX\t\tEQUALS\tBCDU\t+3\t# B(1)TMP\nKDPNDX\t\tEQUALS\tKSPNDX\t+1\t# B(1)TMP\n\nTMIS\t\tEQUALS\tKDPNDX\t+1\t# I(18) MUST BE IN THE SAME BANK AS RCS DAP\nCOFSKEW\t\tEQUALS\tTMIS\t+18D\t# I(6) MUST BE IN THE SAME BANK AS RCS DAP\nCAM\t\tEQUALS\tCOFSKEW\t+6\t# I(2) MUST BE IN THE SAME BANK AS RCS DAP\n\nMIS\t\tEQUALS\tCAM\t+2\t# I(18)\t(THE REST MAY GO ANYWHERE)\nCOF\t\tEQUALS\tMIS\t+18D\t# I(6)TMP\nSCAXIS\t\tEQUALS\tCOF\t+6\t# I(6)TMP\nPOINTVSM\tEQUALS\tSCAXIS\t+6\t# I(6)TMP\nAM\t\tEQUALS\tPOINTVSM +6\t# I(2)TMP\nRAD\t\tEQUALS\tAM\t+2\t# I(2)TMP\n\n# FIRST-ORDER OVERLAYS IN KALCMANU\nKV1\t\tEQUALS\tTMIS\t\t# I(6)TMP\nMFISYM\t\tEQUALS\tTMIS\t\t# I   TMP\nTMFI\t\tEQUALS\tTMIS\t\t# I   TMP\nNCDU\t\tEQUALS\tTMIS\t\t# B   TMP\nNEXTIME\t\tEQUALS\tTMIS\t+3\t# B   TMP\nTTEMP\t\tEQUALS\tTMIS\t+4\t# B   TMP\nKV2\t\tEQUALS\tTMIS\t+6\t# I(6)TMP\nBIASTEMP\tEQUALS\tTMIS\t+6\t# B   TMP\nKV3\t\tEQUALS\tTMIS\t+12D\t# I(6)TMP\nCGF\t\tEQUALS\tTMIS\t+12D\t# I   TMP\n\nBRATE\t\tEQUALS\tCOFSKEW\t\t# B   TMP\nTM\t\tEQUALS\tCAM\t\t# B   TMP\n\n# SECOND-ORDER OVERLAYS IN KALCMANU\nP21\t\tEQUALS\tKV1\t\t# I(2)TMP\nD21\t\tEQUALS\tKV1\t+2\t# I(2)TMP\nG21\t\tEQUALS\tKV1\t+4\t# I(2)TMP\n\n# SATURN BOOST STORAGE.  SAVE TILL RCS DAP OPERATION.\t(17D)\nPOLYNUM\t\tEQUALS\tBCDU\t\t# B(15) PAD LOADED\nPOLYLOC\t\t=\tPOLYNUM\t+10D\nSATRLRT\t\tEQUALS\tPOLYNUM\t+15D\t# B(2)  PAD LOADED\n\n# MORE P11 STORAGE --PAD LOADED--\t(2D)\n# Page 115\n# (NOTE:  THIS PAD LOAD WILL NOT BE PRESERVED THROUGHOUT THE MISSION AS IT SHARES STORAGE WITH KALCMANU,\n# ENTRY DAP AND TVC DAP)\nRPSTART \tEQUALS\tSATRLRT\t+2\t# B(1) PITCH ROLL START TIME\nPOLYSTOP\tEQUALS\tRPSTART\t+1\t# B(1) POLYCUT OFF MINUS RPSTART SEC\n\n# STORAGE FOR VHHDOT AND ATTDSP\nBODY3\t\tEQUALS\tPOLYSTOP +1\t# B(1)OUT\nBODY2\t\tEQUALS\tBODY3\t+1\t# B(1)OUT\nBODY1\t\tEQUALS\tBODY2\t+1\t# B(1)OUT\nSPOLYARG\tEQUALS\tBODY1\t+1\t# B(1)TMP ARGUMENT FOR POLLY\n\nOLDBODY1\t=\tEDRIVEX\t\t# 1 PULSE = 0.0432 DEGREES\nOLDBODY2\t=\tEDRIVEY\nOLDBODY3\t=\tEDRIVEZ\n\n# STORAGE FOR S11.1\nVDISP\t\tEQUALS\tSPOLYARG +1\t# I(2)OUT\t2(7) M/CS\nHDISP\t\tEQUALS\tVDISP\t+2\t# I(2)OUT\t2(29) M\nHDOTDISP\tEQUALS\tHDISP\t+2\t# I(2)OUT\t2(7) M/CS\nBOOSTEMP\tEQUALS\tHDOTDISP +2\t# B(3)TEMP\n\n# P11 SATURN I/F\t\t\t(9D)\nSATRATE\t\tEQUALS\tBOOSTEMP +3\t# B(4)PL MANEUVER RATES FOR SATURN STICK\nSATSW\t\tEQUALS\tSATRATE\t+4\t# B(1)TEM STATUS SW FOR BOOST TAKEOVER\nBIASAK\t\tEQUALS\tSATSW\t+1\t# B(3)TEM STOR AKBIAS FOR BOOST TAKEOVER\nSATSCALE\tEQUALS\tBIASAK\t+3\t# B(1) SCALE FACTOR FOR SATURN STEERING\n\n# P21 STORAGE.\t\t\t\t(1D)\nGENRET\t\tEQUALS\tRAD\t+2\t# B(1)TMP\n\n# R61CSM STORAGE.\t\t\t(1D)\nSAVBNK\t\tEQUALS\tGENRET\t+1\t# B(1) S-S SAVE EBANK FOR R61 SUBROUTINE\n\n# CRS61.1 STORAGE FOR AUTOPILOT BANK.\t(3D)\nSAVEDCDU\tEQUALS\tSAVBNK\t+1\t# B(3)TMP\n\n# R61 STORAGE.\t\t\t\t(1D)\n# Page 116\nR61CNTR\t\tEQUALS\tSAVEDCDU +3\t#  (1)TMP\n\n# ENTRY RESTART PROTECTION STORAGE.  --KEEP TEMPS IN ORDER--\t(12D)\nTEMPROLL\tEQUALS\tGENRET\t\t# B(1)TMP COPY CYCLE REGISTER\nTEMPALFA\tEQUALS\tTEMPROLL +1\t# B(1)TMP COPY CYCLE REGISTER\nTEMPBETA\tEQUALS\tTEMPALFA +1\t# B(1)TMP COPY CYCLE REGISTER\n60GENRET\tEQUALS\tTEMPBETA +1\t# B(1)TMP QSAVE FOR S61.1 AND ENTRY.\nS61DT\t\tEQUALS\t60GENRET +1\t# B(1)TMP VARIABLE DT FOR S61.1 RESTART.\n\n# ENTRY TM SHARING FOR ACCELERATION PROFILE.\nXPIPBUF\t\tEQUALS\tADOT\t\t# B(1) PIPA BUFFER FOR TM DURING ENTRY.\nYPIPBUF\t\tEQUALS\tXPIPBUF\t+1\t# B(1) PIPS FILED HERE EACH .5 SEC APPEAR\nZPIPBUF\t\tEQUALS\tYPIPBUF\t+1\t# B(1) ON DOWNLIST ONCE PER SECOND DURING\nXOLDBUF\t\tEQUALS\tZPIPBUF +1\t# B(1) ENTRY AFTER RCS DAP HAS BEEN DIS-\nYOLDBUF\t\tEQUALS\tXOLDBUF +1\t# B(1) ABLED.  NEWEST PIP VALUE REPLACES\nZOLDBUF\t\tEQUALS\tYOLDBUF\t+1\t# B(1) PIPBUF, WHICH IS MOVED INTO OLDBUF.\n\n# REENTRY VARIABLES SHARED WITH RCS DAP FOR TM & FLIGHT RECORDER.\nQ7\t\t=\tTHETADZ\t\t# I(2) HI-WORD ONLY ON DNLIST.\nASPS(TM)\t=\tWBODY\t\t# I(6)DWN\n\t\t\t\t\t#\tASKEP, ASP1, ASPUP, ASPDN, ASP3, ASP3+1\n\n# P37 PAD LOADS\t\t\t\t(1)\nP37RANGE\tEQUALS\tR61CNTR\t+1\t# I(1)PL\t*****\n\nEND-E6\t\t=\tP37RANGE +1\t# FIRST UNUSED ERASABLE LOCATION IN E6\n\n# Page 117\n# EBANK-7 ASSIGNMENTS\n\n\t\tSETLOC\t3400\n\n# *-*-*-*- OVERLAY NUMBER 0 IN EBANK 7 -*-*-*-*\n\n# EXTERNAL DELTA-V UPDATE.\t\t(21D)\n# (MUST BE IN ORDER FOR UPDATE PROGRAM.  ALSO ENTRY PROGRAM PICK UP 'LAT(SPL' WITH A VLOAD.)\n\nLAT(SPL)\tERASE\t+20D\t\t# I(2)DSP NOUN 61 FOR P62,63,64,67\nLNG(SPL)\tEQUALS\tLAT(SPL) +2\t# I(2)DSP NOUN 61 FOR P62,63,64,67\n\nDELVSLV\t\tEQUALS\tLNG(SPL) +2\t# I(6)TMP DELTA VEL VECT, LOC VER COORDS\nTIG\t\tEQUALS\tDELVSLV\t+6\t# B(2)DSP NOUN 33 FOR X-V84(R32),P30,40.\nRTARG\t\tEQUALS\tTIG\t+2\t# I(6)IN DESIRED VEHICLE RADIUS VECTOR\nDELLT4\t\tEQUALS\tRTARG\t+6\t# I(2)IN TIME DIFFERENCE FOR INITVEL\nECSTEER\t\tEQUALS\tDELLT4\t+2\t# I(1)PL FOR P40'S\nDELVLVC\t\t=\tDELVSLV\nEND-DELV\tERASE\t\t\t# *NEXT AVAIL LOC AFTER UNSHARED E7*\n\n# SERVICER STORAGE.\t\t\t(13D)\nDVTOTAL\t\tEQUALS\tEND-DELV\t# B(2)DSP NOUN 40,99 FOR P30,34,35,40\nTGO\t\tEQUALS\tDVTOTAL\t+2\t# B(2)\nDVCNTR\t\tEQUALS\tTGO\t+2\t# B(1)TMP\nDELVREF\t\tEQUALS\tDVCNTR\t+1\t# I(6)TMP\n\nNOMTIG\t\tEQUALS\tEND-KALC\t# I(2) (CANNOT SHARE WITH KALCMANU\n\t\t\t\t\t#       OR DELVREF)\nEND-SVCR\tEQUALS\tNOMTIG\t+2\t# ***NEXT AVAILABLE AFTER SERVICER\n\n# ALIGNMENT STORAGE.\t\t\t(25D)\nXSCD\t\tEQUALS\tEND-SVCR\t# I(6)TMP\nYSCD\t\tEQUALS\tXSCD\t+6\t# I(6)TMP\nZSCD\t\tEQUALS\tYSCD\t+6\t# I(6)TMP\nVEL/C\t\tEQUALS\tZSCD\t+6\t# I(6)TMP\nR53EXIT\t\tEQUALS\tVEL/C\t+6\t# I(1)TMP\n\n# ALIGNMENT MARKDATA (DOWNLINK) *******\t(7D)\nMARK2DWN\tEQUALS\tR53EXIT\t+1\t#  (7) USED BY ALIGNMENT P50'S\n\n# Page 118\n# *-*-*-*- OVERLAY NUMBER 1 IN EBANK 7 -*-*-*-*\n\n# REENTRY ERASABLES.\t\t\t(206D)\nRTINIT\t\tEQUALS\tEND-SVCR\t# 6P\nRTEAST\t\tEQUALS\tRTINIT\t+6\t# 6P\nRTNORM\t\tEQUALS\tRTEAST\t+6\t# 6P\nRT\t\tEQUALS\tRTNORM\t+6\t# 6P\nUNI\t\tEQUALS\tRT\t+6\t# 6P\nUNITV\t\tEQUALS\tUNI\t+6\t# 6P\nVEL\t\tEQUALS\tUNITV\t+6\t# 6P\n\nTIME/RTO\tEQUALS\tVEL\t+6\t# 2P TIME OF INITIAL TARGET, RTO.\n-VREL\t\tEQUALS\tTIME/RTO +2\t# 6P\nOLDUYA\t\tEQUALS\t-VREL \t+6\t# 6P USED BY CM/POSE\t(ENTRY DAP)\nUXA/2\t\tEQUALS\tOLDUYA\t+6\t# 6P USED BY CM/POSE\t(ENTRY DAP) -UVA\nURH\t\t=\tUXA/2\t\t#\tP67 DISPLAY NOUN\nUYA/2\t\tEQUALS\tUXA/2\t+6\t# 6P USED BY CM/POSE\t(ENTRY DAP) UYA\nUZA/2\t\tEQUALS \tUYA/2\t+6\t# 6P USED BY CM/POSE\t(ENTRY DAP) UNA\nUBX/2\t\tEQUALS\tUZA/2\t+6\t# 6P USED BY CM/POSE\t(ENTRY DAP)\nUBY/2\t\tEQUALS\tUBX/2\t+6\t# 6P USED BY CM/POSE\t(ENTRY DAP)\nUBZ/2\t\tEQUALS\tUBY/2\t+6\t# 6P USED BY CM/POSE\t(ENTRY DAP)\n\nDTEAROT\t\tEQUALS\tUBZ/2\t+6\t# 2P\nDIFF\t\tEQUALS\tDTEAROT\t+2\t# 2P\nDIFFOLD\t\tEQUALS\tDIFF\t+2\t# 2P\nFACTOR\t\tEQUALS\tDIFFOLD\t+2\t# 2P\nFACT1\t\tEQUALS\tFACTOR\t+2\t# 2P\nFACT2\t\tEQUALS\tFACT1\t+2\t# 2P\n#Q7\t\t=\tTHETAD2\t\t# 2P SHARED FOR TM.  P64-P66\nVSQUARE\t\tEQUALS\tFACT2\t+2\t# 2P\nLAD\t\tEQUALS\tVSQUARE\t+2\t# 2P\nLOD\t\tEQUALS\tLAD\t+2\t# 2P\nL/DCMINR\tEQUALS\tLOD\t+2\t# 2P\nKLAT\t\tEQUALS\tL/DCMINR +2\t# 2P\nL/D\t\tEQUALS\tKLAT\t+2\t# 2P\nL/D1\t\tEQUALS\tL/D\t+2\t# 2P\nLEWD\t\t=\tVIO\t\t# 2P SHARED FOR TM.  P64-P65\nD\t\tEQUALS\tL/D1\t+2\t# 2P DSP NOUN 64,66,68 FOR P63,64,67\n#V1\t\t=\tENDBUF\t+1\t# 2P SHARED FOR TM. P64-P65\nDLEWD\t\tEQUALS\tD\t+2\t# 2P\nK2ROLL\t\tEQUALS\tDLEWD\t+2\t# 2P\nGOTOADDR\tEQUALS\tK2ROLL\t+2\t# 1P\nTEM1B\t\tEQUALS\tGOTOADDR +1\t# 2P\nMM\t\tEQUALS\tTEM1B\t+2\t# 2P\nGRAD\t\tEQUALS\tMM\t+1\t# 2P\nFX\t\tEQUALS\tGRAD\t+1\t# 1P OVERWRITES NEXT 5 LOCS IN P67\nLEQ\t\tEQUALS\tFX\t+1\t# 2P\nDHOOK\t\tEQUALS\tLEQ\t+2\t# 2P\nAHOOKDV\t\tEQUALS\tDHOOK\t+2\t# 2P\n# Page 119\nDVL\t\tEQUALS\tAHOOKDV\t+2\t# 2P\n#A0\t\t=\tENDBUF\t+3\t# 2P SHARED FOR TM. (HI-WD) P84-P85\nA1\t\tEQUALS\tDVL\t+2\t# 2P\nVBARS\t\tEQUALS\tA1\t+2\t# 2P\nCOSG/2\t\tEQUALS\tVBARS\t+2\t# 2P\n#GAMMAL\t\t=\tGAMMAEI\t\t# 2P SHARED FOR TM.  P64\nGAMMAL1\t\t=\t22D\t\t# 2P\nVS1\t\tEQUALS\tCOSG/2\t+2\t# 2P\nVL\t\t=\tVPRED\t\t# 2P SHARED FOR TM.  P64-P65\nV\t\tEQUALS\tVS1\t+2\t# 2P\n#VREF\t\t=\tTHETAD\t+2\t# 2P SHARED FOR TM.  P65\nLATANG\t\tEQUALS\tV\t+2\t# 2P ADJACENT FOR TM.\nRDOT\t\tEQUALS\tLATANG\t+2\t# 2P ADJACENT FOR TM.\nTHETAH\t\tEQUALS\tRDOT\t+2\t# 2P DSP NOUN 64,67 FOR P63,64,67\n#RDOTREF\t=\tTHETAD\t\t# 2P SHARED FOR TM.  P65\nALP\t\tEQUALS\tTHETAH\t+2\t# 2P\n\nASKEP\t\t=\tASPS\t\t# 2P)\t\t     THESE ARE STORED IN\nASP1\t\t=\tASPS\t+1\t# 2P)\t\t     SEQUENCE, OVERLAPPING\nASPUP\t\t=\tASPS\t+2\t# 2P)>HI-WD OF EACH< HI-WORD ONLY APPEARING\nASPDWN\t\t=\tASPS\t+3\t# 2P)\t\t     ON DOWNLIST, EXCEPT\nASP3\t\t=\tASPS\t+4\t# 2P)\t\t     ASP3 IS COMPLETE.\n\nC/D0\t\tEQUALS\tALP\t+2\t# 2P\t-1/D0\nD0\t\tEQUALS\tC/D0\t+2\t# I(2)\tCONSTANT DRAG\nQ2\t\tEQUALS\tD0\t+2\t# 2P\n\n# ROLLC IS LOCATED IN EBANK= AOG TO AID ENTRY DAP.\nRTGO\t\tEQUALS\tQ2\t+2\t# 2P DSP NOUN 66 FOR P64,P67\nDNRNGERR\tEQUALS\tRTGO\t+2\t# 2P DSP NOUN 66 FOR P64,67\nXRNGERR\t\t=\tLATANG\t\t#\tFOR DISKY DISPLAY\nKAT\t\tEQUALS\tDNRNGERR +2\t# 2P\nGMAX\t\tEQUALS\tKAT\t+2\t# 1P DSP NOUN 60 FOR P61,62,63\n\t\t\t\t\t# GMAX IS LOADED IN DOUBLE PRECISION.\nL/DCALC\t\t=\tTTE\t\t# 2P CALCULATED L/D FOR TM: P64-P67.\nGAMMAL\t\t=\tGAMMAEI\t\t# 2P SHARED FOR TM.  P64.\nPREDANG\t\t=\tGAMMAEI\t\t#\tFOR TM IN P67.\nJJ\t\t=\tPREDANG\t+1\t#\tFOR TM IN P67.\nVMAGI\t\tEQUALS\tGMAX\t+1\t# 2P DSP NOUN 62,64,66 FOR P11,63,64.\nVIO\t\tEQUALS\tVMAGI\t+2\t# 2P DSP NOUN 63 FOR P61.\nTTE\t\tEQUALS\tVIO\t+2\t# 2P DSP NOUN 63 FOR P61.\nASPS\t\tEQUALS\tTTE\t+2\t# I(2) HI-WORD ONLY ON DNLIST FOR TEMP\nTTE1\t\tEQUALS\tASPS\t+2\t# I(2)TMP HOLDS UNDECREMENTED TTE VALUE\n\n# **** P6O'S ****\nRTGON64\t\tEQUALS\tRTGO\t\t# RANGE ERRORS NEGATIVE IF FALLS SHORT\n# Page 120\nRTGON67\t\tEQUALS\tRTGO\t\t# DSP NOUN 67\n\n# REENTRY, RETURN TO EARTH COMMON DISPLAY\t(4D)\nVPRED\t\tEQUALS\tBETA12\t+2\t# DSP NOUN 60 FOR P61,62,63\nGAMMAEI\t\tEQUALS\tVPRED\t+2\t# DSP NOUN 60 FOR P61,62,63\n\n# DISPLAY REGISTER FOR VG\t\t(2D)\nVGDISP\t\tEQUALS\tGAMMAEI\t+2\t# B(2)DSP N.40,42,99 FOR P30,34,35,37,40,\n\t\t\t\t\t#\t    41 VG DISPLAY\n\n# SOME P11 DISPLAY REGISTERS\t\t(6D)\nALTI\t\tEQUALS\tTTE1\t+2\t# 2P DSP NOUN 62 FOR P11.\nHDOT\t\tEQUALS\tALTI\t+2\t# 2P DSP NOUN 62 FOR P11.\n\n# Page 121\n# *-*-*-*- OVERLAY NUMBER 2 IN EBANK 7 -*-*-*-*\n\n# KALCMANU STORAGE.\t\t\t\t(18D)\nMFS\t\tEQUALS\tEND-DELV\t# I(18)\nMFI\t\tEQUALS\tMFS\t\t# I    TMP\nDEL\t\tEQUALS\tMFS\t\t# I    TMP\nEND-KALC\tEQUALS\tMFS\t+18D\t# **NEXT AVAIL LOC AFTER KALCMANU**\n\n# MEASUREMENT INCORPORATION STORAGE (R22) STORAGE.\t(56D)\n\nTX789\t\tEQUALS\tEND-KALC\t# I(6)TMP\nGAMMA\t\tEQUALS\tTX789 \t+6\t# I(3)TMP\nOMEGA\t\tEQUALS\tGAMMA \t+2\t# I(18)TMP\nBVECTOR\t\tEQUALS\tOMEGA \t+18D\t# I(18)TMP\nDELTAQ\t\tEQUALS\tBVECTOR +18D\t# I(2)TMP\nVARIANCE\tEQUALS\tDELTAQ \t+2\t# I(3)TMP\nRCLP\t\tEQUALS\tVARIANCE +3\t# I(6)TMP\nGRP2SVQ\t\tEQUALS\tRCLP \t+6\t# I(1)TMP QSAVE FOR RESTARTS\n\n# P20, P22, P23 DSP NOUN\t\t(5D)\nN49DISP\t\tEQUALS\tBVECTOR\t\t# B(5)TMP\n\n# S22.1 STORAGE.\t\t\t(36D)\nSVMRKDAT\tEQUALS\tGRP2SVQ\t+1\t# I(36)TMP 5 SETS OF MARK DATA +PAD OF ONE\n\n# **** CISLUNAR NAV.  ERAS.  (P20'S) ****\t(45D)\nTRUNX\t\tEQUALS\tSVMRKDAT +36D\nDATATEST\tEQUALS\tTRUNX\t\t#  (1)\nUBAR0\t\tEQUALS\tTRUNX\t+1\nUBAR1\t\tEQUALS\tUBAR0\t+6\nUBAR2\t\tEQUALS\tUBAR1\t+6\nRZC\t\tEQUALS\tUBAR2\t+6\nVZC\t\tEQUALS\tRZC\t+6\nUCLSTAR\t\tEQUALS\tVZC\t+6\nUSSTAR\t\tEQUALS\tUCLSTAR\t+6\nSRRETURN\tEQUALS\tUSSTAR\t+6\n\n# Page 122\n# *-*-*-*- OVERLAY NUMBER 3 IN EBANK 7 -*-*-*-*\n\n# RENDEZVOUS GUIDANCE STORAGE. -- P32 ... P35 --\t(8D)\nDELTEEO\t\tEQUALS\tEND-KALC\t# I(2) S-S BACK VALUES OF DELTA TIME\nDELEL\t\tEQUALS\tDELTEEO\t+2\t# I(2) S-S\nSECMAX\t\tEQUALS\tDELEL\t+2\t# I(2) S-S MAX STOP SIZE FOR ROUTINE\nXXXALT\t\tEQUALS\tSECMAX\t+2\t# I(2)\n\n# S40.9 STORAGE\t\t\t\t(16D)\nVG\t\tEQUALS\tXXXALT\t+2\t# I(6)TMP\nVRPREV\t\tEQUALS\tVG\t+6\t# I(6)\nTNIT\t\tEQUALS\tVRPREV\t+6\t# I(2)\nTNITPREV\tEQUALS\tTNIT\t+2\t# I(2)\n\n# S40.2,3 STORAGE.\t\t\t(1D)\nAXISCODE\tEQUALS\tTNITPREV +2\t# I(1)IN\n\n# P30'S-P17 COMMON STORAGE.\t\t(24D)\nRACT3\t\tEQUALS\tGRP2SVQ\t+1\t# I(6)TMP POSITION OF ACTIVE AT TPI TIME.\nVACT3\t\tEQUALS\tRACT3\t+6\t# I(6)TMP VELOCITY OF ACTIVE AT TPI TIME.\nRPASS3\t\tEQUALS\tVACT3\t+6\t# I(6)TMP POSITION OF PASSIVE AT TPI TIME.\nVPASS3\t\tEQUALS\tRPASS3\t+6\t# I(6)TMP VELOCITY OF PASSIVE AT TPI TIME.\n\n# P76, N84 DISPLAY\t\t\t(6D)\nDELVOV\t\tEQUALS\tRACT3\t\t# I(6)DSP NOUN 84 FOR X-V84, P34-35\n\n# INITVEL/MIDGIM STORAGE.\t\t(34D)\n#\t(CALLED BY S34.1,2, S35.1,2, AND S40.9)\n#\t(CALLS LAMBERT, CONIC SUBROUTINES)\nRINIT\t\tEQUALS\tVPASS3\t+6\t# I(6)IN ACTIVE VEHICLE RADIUS VECTOR\nVINIT\t\tEQUALS\tRINIT\t+6\t# I(6)IN ACTIVE VEHICLE VELOCITY VECTOR\nRTARG1\t\tEQUALS\tVINIT\t+6\t# I(6)TMP SHIFTED RTARG\nVIPRIME\t\tEQUALS\tRTARG1\t+6\t# I(6)OUT NEW VEL REQ AT INITIAL RADIUS\nVTPRIME\t\tEQUALS\tVIPRIME\t+6\t# I(6)OUT TOTAL VELOCITY AT DESIRED RADIUS\n+MGA\t\tEQUALS\tVTPRIME\t+6\t# I(2)DSP NOUN 45 FOR P30,34,35.  +MID GIM.\nCOZY4\t\tEQUALS\t+MGA\t+2\t# I(2)TMP COSINE OF ANGLE WHEN ROT STARTS\n\n# THE FOLLOWING OVERLAYS MEASUREMENT INCORP AND CANNOT SHARE WITH TPI\n# Page 123\nINTIME\t\tEQUALS\tAXISCODE +3\nITCTR\t\tEQUALS\tINTIME\t+2\t# I(1)TMP ITERATION COUNTER\nEND-IN/M\tEQUALS\tCOZY4\t+2\t# ** NEXT AVAIL LOC AFTER INITVEL/MIDGIM **\n\n# P34 AND P33 STORAGE.  (OVERLAYS INITVEL/MIDGIM)\t(24D)\nVAPREC\t\tEQUALS\tRINIT\t\t# I(6) S-S PREC VEC FOR NOM TPI TIME (ACT V)\nRAPREC\t\tEQUALS\tVINIT\t\t# I(6) S-S PREC VEC FOR NOM TPI TIME (ACT V)\nVPPREC\t\tEQUALS\tVIPRIME\t\t# I(6) S-S PREC VEC FOR NOM TPI TIME (PASS)\nRPPREC\t\tEQUALS\tVTPRIME\t\t# I(6) S-S PREC VEC FOR NOM TPI TIME (PASS)\n\n# P30, P40 INTERFACE.\t\t\t(20D)\nRTIG\t\tEQUALS\tEND-IN/M\t# I(6)TMP\nVTIG\t\tEQUALS\tRTIG\t+6\t# I(6)TMP\nDELVSIN\t\tEQUALS\tVTIG\t+6\t# I(6)TMP\nDELVEET3\tEQUALS\tDELVSIN\t\t#     TMP DELTA VEL VECT INERTIAL COORDS.\nVGTEMP\t\tEQUALS\tDELVEET3\nDELVSAB\t\tEQUALS\tDELVSIN\t+6\t# I(2)TMP\n\n# P35-P40 INTERFACE STORAGE.  (OVERLAYS P30-P40 I/F STORAGE)\t(12D)\nRPASS4\t\tEQUALS\tRTIG\t\t# I(6)TMP POSITION OF PASSIVE AT INTERCEPT\nVPASS4\t\tEQUALS\tRPASS4\t+6\t# I(6)TMP VELOCITY OF PASSIVE AT INTERCEPT\n\n# TPI SEARCH (P17)\t\t\t(6D)\nE2\t\tEQUALS\tVPASS4\t+6\t# I(6)TMP\n\n# P30-P40 COMMON STORAGE.\t\t(3D)\nTPASS4\t\tEQUALS\tDELVSAB\t+2\t# I(2)TMP\nTINT\t\t=\tTPASS4\t\t# I(2)\nQTEMP\t\tEQUALS\tTPASS4\t+2\t# I(1)TMP\n\n# P30-P40 STORAGE.\t\t\t(4D)\nTTOGO\t\tEQUALS\tQTEMP\t+1\t# B(2)DSP NOUN 35,40,45,59,99\n\t\t\t\t\t#\t  FOR P30,34,35,40,41,47, R30.\nTTPI\t\tEQUALS\tTTOGO\t+2\t# B(2)DSP NOUN 37 FOR P34 TPI TIME, CSECS.\n# Page 124\nEND-P30S\tEQUALS\tTTPI\t+2\t# ** NEXT AVAIL LOC AFTER P30-40 STORAGE. **\n\n# P40 STORAGE.\t\t\t\t(8D)\nVGBODY\t\tEQUALS\tEND-P30S\t# B(6)DSP NOUN 85 FOR P40,41,42 VG-SC COOR\nDELVCTL\t\t=\tVGBODY\nP40TMP\t\tEQUALS\tVGBODY\t+6\t# B(2)TMP\n\n# P47 STORAGE.\nDV47TEMP\tEQUALS\tVG\nDELVIMU\t\tEQUALS\tP40TMP\t+2\t# I(6)DSP NOUN 83 FOR P47 DELTAV(IMU).\n\n# S40.1 STORAGE.\t\t\t(23D)\nCSTEER\t\tEQUALS\tDELVIMU\t+6\t# I(2)IN\nBDT\t\tEQUALS\tCSTEER\t+2\t# I(6)IN\nUT\t\tEQUALS\tBDT\t+6\t# I(6)OUT THRUST DIRECTION\nVGTIG\t\tEQUALS\tUT\t+6\t# I(6)OUT\nVGPREV\t\t=\tVGTIG\nF\t\tEQUALS\tVGTIG\t+6\t# I(2)OUT S40.3 NEEDS THIS\n\nQTEMP1\t\tEQUALS\tF\t+2\t# I(1)TMP HOLDS RETURN\n\n# R41\t\t\t\t\t(2D)\nT-TO-ADD\tEQUALS\tQTEMP1\t+1\t# I(1D) FOR MIDTOAVE\n\n# Page 125\n# *-*-*-*- OVERLAY NUMBER 4 IN EBANK 7 -*-*-*-*\n\n# S35.1 STORAGE.\t\t\t(2D)\nTSTRT\t\tEQUALS\tEND-P30S\t# I(2)IN MIDCOURSE START TIME\n\n# S34.1 STORAGE.  (OVERLAYS S35.1 STORAGE)\t(1)\nTITER\t\tEQUALS\tTSTRT\t\t# I(1)TMP ITERATION COUNTER\n\n# (P30-31 Q-SAVES)\t\t\t(1)\nP30/31RT\tEQUALS\tTITER\t\t# B(1) RETURN POINT\n\n# P22 STORAGE.\t\t\t\t(6D)\nS22WUNL\t\tEQUALS\tTSTRT\t+2\t# 1\tWUNL W8 UNKNOWN INIT VALUE.\nS22TOFF\t\tEQUALS\tS22WUNL\t+1\t# 2\tT SUB OFF\nS22TPRIM\tEQUALS\tS22TOFF\t+2\t# 2\tSAVE TF\nS22EORM\t\tEQUALS\tS22TPRIM +2\t# 0 = EARTH -- NON-ZERO = MOON\n\n# DOWNLINK ERASABLES FOR P22, P20 MARK DATA.\t(8D)\nMARKDOWN\tEQUALS\tS22EORM\t+1\t# B(1)\nRM\t\tEQUALS\tS22RTNEX\t# DOWNLINK OF VHF RANGE\n\n# S22.1\t\t\t\t\t(1D)\nS22RTNEX\tEQUALS\tMARKDOWN +7\t# B(1)\n\n# P22 STORAGE\t\t\t\t(6D)\nSTARSAV3\tEQUALS\tS22RTNEX +1\t# I(6)TMP\n\n# CRS61.1 STORAGE.  --A SUBSET OF P20--\t(14D)\nQ611\t\tEQUALS\tRM\t+1\t# I(1)TMP QSAVE\nQ6111\t\tEQUALS\tQ611\t+1\t# I(1)TMP QSAVE\nSAVEPOS\t\tEQUALS\tQ6111\t+1\t# I(6)TMP LEM POSITION VECTOR\n# Page 126\nSAVEVEL\t\tEQUALS\tSAVEPOS\t+6\t# I(6)TMP LEM VELOCITY VECTOR\n\n# ATTITUDE MANEUVER -- CALLED BY P20,R61,R63,CRS61.1\t(3D)\nPRAXIS\t\tEQUALS\tSAVEVEL\t+6\t# B(3) S-S DISP RES FOR PREF AXIS N95.\n\n# MARK ROUTINE (R21) STORAGE.  -- IS SUBSET OF R22 --\t(14D)\nMRKBUF1\t\tEQUALS\tPRAXIS\t+3\t# B(7)TMP R21 MARK BUFFER.\nMRKBUF2\t\tEQUALS\tMRKBUF1\t+7\t# B(7)TMP R21 MARK BUFFER.\n\n# MORE CONICS STORAGE.\t\t\t(4)\nCOGA\t\tEQUALS\t3774\t\t# I(2) COTAN OF INITIAL FLIGHT PATH ANGLE\nINDEP\t\tEQUALS\tCOGA\t\t# I(1) USED BY SUBROUTINE 'ITERATOR'\nEPSILONL\tEQUALS\tCOGA\t+2\t# I(2)TMP\n\n# RENDEZVOUS GUIDANCE STORAGE.  -- P32...P35 --\t(10D)\nELEV\t\tEQUALS\tMRKBUF2\t+7\t# I(2)TMP\nRTX1\t\tEQUALS\tELEV\t+2\t#  (1)\nRTX2\t\tEQUALS\tRTX1\t+1\t#  (1)\nRTMU\t\tEQUALS\tRTX2\t+1\t#  (2)\nRTSR1/MU\tEQUALS\tRTMU\t+2\t#  (2)\nCENTANG\t\tEQUALS\tRTSR1/MU +2\t# I(2) S-S CENTRAL ANGLE COVERED (TPI-TFF)\n\n# TPI SEARCH (S17.1, S17.2) P17 STORAGE.(10D)\nDELTEE\t\tEQUALS\tMRKBUF2\t+7\t# I(2)\nXRS\t\tEQUALS\tDELTEE\t+2\t# I(2)\nTHETL\t\tEQUALS\tXRS\t+2\t# I(2)\nTF\t\tEQUALS\tTHETL\t+2\t# I(2)\nDELHITE\t\tEQUALS\tTF\t+2\t#  (2)\n\n# Page 127\n# *-*-*-*- OVERLAY NUMBER 5 IN EBANK 7 -*-*-*-*\n\n# P17,P34\t\t\t\t(2D)\nNN1\t\t=\tNN\t\t# I(2)DSP NOUN 55,R1\n\n# ********* THE FOLLOWING ARE FOR FLIGHT 504 ONLY *************\n\n# RETURN-TO-EARTH STORAGE.\t\t(93D)\nRTEDVD\t\tEQUALS\tEND-IN/M\t# I(2)IN DELTA VELOCITY DESIRED\t\tM/CS B7\nRTEGAM2D\tEQUALS\tRTEDVD\t+2\t# I(2)IN REENTRY ANGLE DESIRED\t\tREVS B0\nRCON\t\tEQUALS\tRTEGAM2D +2\t# I(2)TMP CONIC R2 RADIUS\t\tM B29\nR(T1)/\t\tEQUALS\tRCON\t+2\t# I(6)TMP POSITION VECTOR AT TIG\tM B29/B27\nR(T1)\t\tEQUALS\tR(T1)/\t+6\t# I(2)TMP MAGNITUDE OF R(T1)/\t\tM B29/B27\nDT21PR\t\tEQUALS\tR(T1)\t+2\t# I(2)TMP PREVIOUS DT21\t\t\tCS B30\nMAMAX1\t\tEQUALS\tDT21PR\t+2\t# I(2)TMP MAJ AXIS LOW BOUND LMT\tM B30\nMAMAX2\t\tEQUALS\tMAMAX1\t+2\t# I(2)TMP MAJ AXIS UP BOUND LMT\t\tM B30\nR(T2)/\t\tEQUALS\tMAMAX2\t+2\t# I(6)TMP FINAL POSITION VECTOR\t\tM B29/B27\nRD\t\tEQUALS\tR(T2)/\t+6\t# I(2)TMP FINAL R DESIRED\t\tM B29/B27\nDRCON\t\tEQUALS\tRD\t+2\t# I(2)TMP RCON SLOPE ITERATOR\t\tM B29/B27\nRPRE'\t\tEQUALS\tDRCON\t+2\t# I(2)TMP PREVIOUS RPRE\t\t\tM B29/B27\nV(T1)/\t\tEQUALS\tRPRE'\t+2\t# I(6)TMP VEL VECTOR AT TIG\t\tM/CS B7/B5\nV2(T1)/\t\tEQUALS\tV(T1)/\t+6\t# I(6)TMP POST IMP VEL AT TIG\t\tM/CS B7/B5\nDV\t\tEQUALS\tV2(T1)/\t+6\t# I(2)TMP DELTA VELOCITY AT TIG\t\tM/CS B7/B5\nV(T2)/\t\tEQUALS\tDV\t+2\t# I(6)TMP FINAL VELOCITY VECTOR\t\tM/CS B7/B5\nT1\t\tEQUALS\tV(T2)/\t+6\t# I(2)TMP INITIAL VECTOR TIME\t\tCS B28\nPCON\t\tEQUALS\tT1\t+2\t# I(2)TMP SEMI-LATUS RECTUM\t\tM B29\nX(T1)\t\tEQUALS\tPCON\t+2\t# I(2)TMP COTANGENT GAMMA1\t\tB5\nT12\t\tEQUALS\tX(T1)\t+2\t# I(2)TMP INIT TO FINAL POSIT TIME\tCS B28\nDELTAT\t\tEQUALS\tT12\t+2\t# I(2)TMP DELTA T IN SAVE PERILUNE\tCS B28\nNN1A\t\tEQUALS\tDELTAT\t+2\t# I(2)TMP ITERATION COUNTER 1\nNN2\t\tEQUALS\tNN1A\t+2\t# I(2)TMP ITERATION COUNTER 2\nRTENCKEX\tEQUALS\tNN2\t+2\t# I(1)TMP RTENCK RETURN ADDRESS\nCONICX1\t\tEQUALS\tRTENCKEX +1\t# I(1)TMP CONICS MU TABLE INDEX\nT2\t\tEQUALS\tCONICX1\t+1\t# I(2)TMP FINAL TIME\t\t\tCS B28\nUR1/\t\tEQUALS\tT2\t+2\t# I(6)TMP UNIT R(T1)/\t\t\tB1\nUV1/\t\tEQUALS\tUR1/\t+6\t# I(6)TMP UNIT V(T1)/\t\t\tB1\nBETA1\t\tEQUALS\tUV1/\t+6\t# I(2)TMP 1+X(T2)**2\t\t\tB1\nP(T1)\t\tEQUALS\tBETA1\t+2\t# I(1)TMP PRIMARY BODY STATE TIME 1\tB14\nCFPA\t\tEQUALS\tP(T1)\t+1\t# I(2)TMP COSINE FLIGHT PATH ANGLE\tB1\nPHI2\t\tEQUALS\tCFPA\t+2\t# I(2)TMP PERI OR APO INDICATOR\t\tB2\nSPRTEX\t\tEQUALS\tPHI2\t+2\t# I(1)TMP ROUTINE RETURN ADDRESS\nVNSTORE\t\tEQUALS\tSPRTEX\t+1\t# I(1)TMP VERBNOUN STORAGE\nBETA12\t\tEQUALS\tVNSTORE\t+1\t# I(2)TMP SIGN FOR TIMERAD\n\n# OVERLAYS WITHIN RETURN-TO-EARTH STORAGE.\n# Page 128\nRPRE\t\tEQUALS\t24D\t\t# I(2)TMP COMPUTED PREC RADIUS\t\tM B29/B27\nP/RPRE\t\tEQUALS\t26D\t\t# I(2)TMP P/R\t\t\t\tB4\nR/APRE\t\tEQUALS\t28D\t\t# I(2)TMP R/A\t\t\t\tB6\nX(T2)PRE\tEQUALS\tT12\t\t# I(2)TMP PREC COTAN GAMMA2\t\tB0\nX(T2)\t\tEQUALS\tDELTAT\t\t# I(2)TMP COTAN GAMMA2\t\t\tB0\nUH/\t\tEQUALS\tUV1/\t\t# I(2)TMP UNIT HORIZONTAL VECTOR.\tB1\nSPRTETIG\tEQUALS\tTIG\t\t# I(2)IN TIME OF IGNITION\t\tCS B28\n\n# Page 129\n# *-*-*-*- OVERLAY 6 IN EBANK 7 -*-*-*-*\n# P32,P33\n\n# THE FOLLOWING OVERLAY MEAS. INCORP. ARE AND IN USE ONLY WHEN (32D)\nPOSTCSI\t\tEQUALS\tVG\t\t# I(2)\nDELVCSI\t\tEQUALS\tPOSTCSI\t+2\t# I(2)\nDELDV\t\tEQUALS\tDELVCSI\t+2\t# I(2)\nGAMPREV\t\tEQUALS\tDELDV\t+2\t# I(2)\nDVPREV\t\tEQUALS\tGAMPREV +2\t# I(2)\nPOSTCDH\t\tEQUALS\tDVPREV\t+2\t# I(2)\nHAFPA1\t\tEQUALS\tPOSTCDH\nVACT4\t\tEQUALS\tPOSTCDH\t+2\t# I(6)\nRDOTV\t\tEQUALS\tVACT4\t+6\t# I(2)\nVACT1\t\tEQUALS\tRDOTV\t+2\t# I(6)\nVPASS1\t\tEQUALS\tVACT1\t+6\t# I(6) VEL. PASSIVE VEH. AT CSI TIME\n\nUNVEC\t\tEQUALS\tVACT3\n\nT2TOT3\t\tEQUALS\tTPASS4\t\t# I(2) TPI - TCDH\n\nCSIALRM\t\tEQUALS\tTITER\t\t# I(2) ALARM INDEX\n\nDELVEET2\tEQUALS\tS22WUNL\t\t# I(6) VACT3 - VACT2 = DVCDH REF. COORD.\n\n# ADDITIONAL CSI - CDH STORAGE.\t\t(10D)\nRPASS1\t\tEQUALS\tCENTANG\t+2\t# I(6) POS. PASSIVE VEH. AT CSI TIME.\nLOOPCT\t\tEQUALS\tRPASS1\t+6\t# I(2) ITERATION COUNTER\nNN\t\tEQUALS\tLOOPCT\t+2\t# I(2)\n\n# P21 STORAGE\t\t\t\t(19D)\nP21ORIG\t\tEQUALS\tTRUNX\t\t# I(1)\nP21BASER\tEQUALS\tP21ORIG\t+1\t# I(6)\nP21BASEV\tEQUALS\tP21BASER +6\t# I(6)\nP21ALT\t\tEQUALS\tP21BASEV +6\t# I(2) NOUN 73 R1 ALTITUDE\nP21VEL\t\tEQUALS\tP21ALT\t+2\t# I(2) NOUN 73 R2 VELOCITY\nP21GAM\t\tEQUALS\tP21VEL\t+2\t# I(2) NOUN 73 R3 FLIGHT PATH ANGLE\n\n# The following two statements had been just \"WHOCARES = 3777\".---RSB 2009\n\t\tSETLOC\t3777\nWHOCARES\tEQUALS\t\t\t# A DUMMY FOR E-BANK INSENSITIVE 2CADRS.\nEND-E7\t\tEQUALS\tWHOCARES\t# ***** LAST LOCATION IN E7\n\n# Page 130 ... is empty.\n\n"
  },
  {
    "path": "Comanche055/EXECUTIVE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tEXECUTIVE.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1208-1220\n# Mod history:\t2009-05-14 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1208\n\t\tBLOCK\t02\n\n# TO ENTER A JOB REQUEST REQUIRING NO VAC AREA:\n\n\t\tCOUNT\t02/EXEC\n\nNOVAC\t\tINHINT\n\t\tAD\tFAKEPRET\t# LOC(MPAC +6) - LOC(QPRET)\n\t\tTS\tNEWPRIO\t\t# PRIORITY OF NEW JOB + NOVAC C(FIXLOC)\n\n\t\tEXTEND\n\t\tINDEX\tQ\t\t# Q WILL BE UNDISTURBED THROUGHOUT.\n\t\tDCA\t0\t\t# 2CADR OF JOB ENTERED.\n\t\tDXCH\tNEWLOC\n\t\tCAF\tEXECBANK\n\t\tXCH\tFBANK\n\t\tTS\tEXECTEM1\n\t\tTCF\tNOVAC2\t\t# ENTER EXECUTIVE BANK.\n\n# TO ENTER A JOB REQUEST REQUIRING A VAC AREA - E.G., ALL (PARTIALLY) INTERPRETIVE JOBS.\n\nFINDVAC\t\tINHINT\n\t\tTS\tNEWPRIO\n\t\tEXTEND\n\t\tINDEX\tQ\n\t\tDCA\t0\nSPVACIN\t\tDXCH\tNEWLOC\n\t\tCAF\tEXECBANK\n\t\tXCH\tFBANK\n\t\tTCF\tFINDVAC2\t# OFF TO EXECUTIVE SWITCHED-BANK.\n\n# TO ENTER A FINDVAC WITH THE PRIORITY IN NEWPRIO TO THE 2CADR ARRIVING IN A AND L:\n# USERS OF SPVAC MUST INHINT BEFORE STORING IN NEWPRIO.\n\nSPVAC\t\tXCH\tQ\n\t\tAD\tNEG2\n\t\tXCH\tQ\n\t\tTCF\tSPVACIN\n\n# TO SUSPEND A BASIC JOB SO A HIGHER PRIORITY JOB MAY BE SERVICED:\n\nCHANG1\t\tLXCH\tQ\n\t\tCAF\tEXECBANK\n\t\tXCH\tBBANK\n\t\tTCF\tCHANJOB\n\n# TO SUSPEND AN INTERPRETIVE JOB:\n\nCHANG2\t\tCS\tLOC\t\t# NEGATIVE LOC SHOWS JOB = INTERPRETIVE.\n# ITRACE (4) REFERS TO \"CHANG2\".\n# Page 1209\n\t\tTS\tL\n\t+2\tCAF\tEXECBANK\n \t\tTS\tBBANK\n\t\tTCF\tCHANJOB -1\n\n# Page 1210\n# TO VOLUNTARILY SUSPEND A JOB UNTIL THE COMPLETION OF SOME ANTICIPATED EVENT (I/O EVENT ETC.):\n\nJOBSLEEP\tTS\tLOC\n\t\tCAF\tEXECBANK\n\t\tTS\tFBANK\n\t\tTCF\tJOBSLP1\n\n# TO AWAKEN A JOB PUT TO SLEEP IN THE ABOVE FASHION:\n\nJOBWAKE\t\tINHINT\n\t\tTS\tNEWLOC\n\t\tCS\tTWO\t\t# EXIT IS VIA FINDVAC/NOVAC PROCEDURES.\n\t\tADS\tQ\n\t\tCAF\tEXECBANK\n\t\tXCH\tFBANK\n\t\tTCF\tJOBWAKE2\n\n# TO CHANGE THE PRIORITY OF A JOB CURRENTLY UNDER EXECUTION:\n\nPRIOCHNG\tINHINT\t\t\t# NEW PRIORITY ARRIVES IN A. RETURNS TO\n\t\tTS\tNEWPRIO\t\t# CALLER AS SOON AS NEW JOB PRIORITY IS\n\t\tCAF\tEXECBANK\t# HIGHEST. PREPARE FOR POSSIBLE BASIC-\n\t\tXCH\tBBANK\t\t# STYLE CHANGE-JOB.\n\t\tTS\tBANKSET\n\t\tCA\tQ\n\t\tTCF\tPRIOCH2\n\n# TO REMOVE A JOB FROM EXECUTIVE CONSIDERATIONS:\n\nENDOFJOB\tCAF\tEXECBANK\n\t\tTS\tFBANK\n\t\tTCF\tENDJOB1\n\nENDFIND\t\tCA\tEXECTEM1\t# RETURN TO CALLER AFTER JOB ENTRY\n\t\tTS\tFBANK\t\t# COMPLETE.\n\t\tTCF\tQ+2\nEXECBANK\tCADR\tFINDVAC2\n\nFAKEPRET\tADRES\tMPAC -36D\t# LOC(MPAC +6) - LOC(QPRET)\n\n# Page 1211\n# LOCATE AN AVAILABLE VAC AREA.\n\n\t\tBANK\t01\n\t\tCOUNT\t01/EXEC\n\nFINDVAC2\tTS\tEXECTEM1\t# (SAVE CALLER'S BANK FIRST.)\n\t\tCCS\tVAC1USE\n\t\tTCF\tVACFOUND\n\t\tCCS\tVAC2USE\n\t\tTCF\tVACFOUND\n\t\tCCS\tVAC3USE\n\t\tTCF\tVACFOUND\n\t\tCCS\tVAC4USE\n\t\tTCF\tVACFOUND\n\t\tCCS\tVAC5USE\n\t\tTCF\tVACFOUND\n\t\tTC\tBAILOUT\n\t\tOCT\t1201\t\t# NO VAC AREAS.\n\nVACFOUND\tAD\tTWO\t\t# RESERVE THIS VAC AREA BY STORING A ZERO\n\t\tZL\t\t\t# IN ITS VAC USE REGISTER AND STORE THE\n\t\tINDEX\tA\t\t# ADDRESS OF THE FIRST WORD OF IT IN THE\n\t\tLXCH\t0 -1\t\t# LOW NINE BITS OF THE PRIORITY WORD.\n\t\tADS\tNEWPRIO\n\nNOVAC2\t\tCAF\tZERO\t\t# NOVAC ENTERS HERE. FIND A CORE SET.\n\t\tTS\tLOCCTR\n\t\tCAF\tNO.CORES\t# SEVEN SETS OF ELEVEN REGISTERS EACH.\nNOVAC3\t\tTS\tEXECTEM2\n\t\tINDEX\tLOCCTR\n\t\tCCS\tPRIORITY\t# EACH PRIORITY REGISTER CONTAINS -0 IF\n\t\tTCF\tNEXTCORE\t# THE CORRESPONDING CORE SET IS AVAILABLE.\nNO.CORES\tDEC\t6\n\t\tTCF\tNEXTCORE\t# AN ACTIVE JOB HAS A POSITIVE PRIORITY\n\t\t\t\t\t# BUT A DORMANT JOB'S PRIORITY IS NEGATIVE\n\n# Page 1212\nCORFOUND\tCA\tNEWPRIO\t\t# SET THE PRIORITY OF THIS JOB IN THE CORE\n\t\tINDEX\tLOCCTR\t\t# SET'S PRIORITY REGISTER AND SET THE\n\t\tTS\tPRIORITY\t# JOB'S PUSH-DOWN POINTER AT THE BEGINNING\n\t\tMASK\tLOW9\t\t# OF THE WORK AREA AND OVERFLOW INDICATOR\n\t\tINDEX\tLOCCTR\n\t\tTS\tPUSHLOC\t\t# OFF TO PREPARE FOR INTERPRETIVE PROGRAMS\n\n\t\tCCS\tLOCCTR\t\t# IF CORE SET ZERO IS BEING LOADED, SET UP\n\t\tTCF\tSETLOC\t\t# OVFIND AND FIXLOC IMMEDIATELY.\n\t\tTS\tOVFIND\n\t\tCA\tPUSHLOC\n\t\tTS\tFIXLOC\n\nSPECTEST\tCCS\tNEWJOB\t\t# SEE IF ANY ACTIVE JOBS WAITING (RARE).\n\t\tTCF\tSETLOC\t\t# MUST BE AWAKENED BUT UNCHANGED JOB.\n\t\tTC\tCCSHOLE\n\t\tTC\tCCSHOLE\n\t\tTS\tNEWJOB\t\t# +0 SHOWS ACTIVE JOB ALREADY SET.\n\t\tDXCH\tNEWLOC\n\t\tDXCH\tLOC\n\t\tTCF\tENDFIND\n\nSETLOC\t\tDXCH\tNEWLOC\t\t# SET UP THE LOCATION REGISTERS FOR THIS\n\t\tINDEX\tLOCCTR\n\t\tDXCH\tLOC\n\t\tINDEX\tNEWJOB\t\t# THIS INDEX INSTRUCTION INSURES THAT THE\n\t\tCS\tPRIORITY\t# HIGHEST ACTIVE PRIORITY WILL BE COMPARED\n\t\tAD\tNEWPRIO\t\t# WITH THE NEW PRIORITY TO SEE IF NEWJOB\n\t\tEXTEND\t\t\t# SHOULD BE SET TO SIGNAL A SWITCH.\n\t\tBZMF\tENDFIND\n\t\tCA\tLOCCTR\t\t# LOCCTR IS LEFT SET AT THIS CORE SET IF\n\t\tTS\tNEWJOB\t\t# THE CALLER WANTS TO LOAD ANY MPAC\n\t\tTCF\tENDFIND\t\t# REGISTERS, ETC.\n\nNEXTCORE\tCAF\tCOREINC\n\t\tADS\tLOCCTR\n\t\tCCS\tEXECTEM2\n\t\tTCF\tNOVAC3\n\t\tTC\tBAILOUT\t\t# NO CORE SETS.\n\t\tOCT\t1202\n# Page 1213\n# THE FOLLOWING ROUTINE SWAPS CORE SET 0 WITH THAT WHOSE RELATIVE ADDRESS IS IN NEWJOB.\n\n\t-2\tLXCH\tLOC\n\t-1\tCAE\tBANKSET\t\t# BANKSET, NOT BBANK, HAS RIGHT CONTENTS.\nCHANJOB\t\tINHINT\n\t\tEXTEND\n\t\tROR\tSUPERBNK\t# PICK UP CURRENT SBANK FOR BBCON\n\t\tXCH\tL\t\t# LOC IN A AND BBCON IN L.\n\t+4\tINDEX\tNEWJOB\t\t# SWAP LOC AND BANKSET.\n\t\tDXCH\tLOC\n\t\tDXCH\tLOC\n\n\t\tCAE\tBANKSET\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# SET SBANK FOR NEW JOB.\n\t\tDXCH\tMPAC\t\t# SWAP MULTI-PURPOSE ACCUMULATOR AREAS.\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC +2\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tMPAC +2\n\t\tDXCH\tMPAC +2\n\t\tDXCH\tMPAC +4\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tMPAC +4\n\t\tDXCH\tMPAC +4\n\t\tDXCH\tMPAC +6\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tMPAC +6\n\t\tDXCH\tMPAC +6\n\n\t\tCAF\tZERO\n\t\tXCH\tOVFIND\t\t# MAKE PUSHLOC NEGATIVE IF OVFIND NZ.\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tCS\tPUSHLOC\n\t\tTS\tPUSHLOC\n\n\t\tDXCH\tPUSHLOC\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tPUSHLOC\n\t\tDXCH\tPUSHLOC\t\t# SWAPS PUSHLOC AND PRIORITY.\n\t\tCAF\tLOW9\t\t# SET FIXLOC TO BASE OF VAC AREA.\n\t\tMASK\tPRIORITY\n\t\tTS\tFIXLOC\n\n\t\tCCS\tPUSHLOC\t\t# SET OVERFLOW INDICATOR ACCORDING TO\n\t\tCAF\tZERO\n\t\tTCF\tENDPRCHG -1\n\n# Page 1214\n\t\tCS\tPUSHLOC\n\t\tTS\tPUSHLOC\n\t\tCAF\tONE\n\t\tXCH\tOVFIND\n\t\tTS\tNEWJOB\n\nENDPRCHG\tRELINT\n\t\tDXCH\tLOC\t\t# BASIC JOBS HAVE POSITIVE ADDRESSES, SO\n\t\tEXTEND\t\t\t# DISPATCH WITH A DTCB.\n\t\tBZMF\t+2\t\t# IF INTERPRETIVE, SET UP EBANK, ETC.\n\t\tDTCB\n# Page 1215\n\t\tCOM\t\t\t# EPILOGUE TO JOB CHANGE FOR INTERPRETIVE\n\t\tAD\tONE\n\t\tTS\tLOC\t\t# RESUME.\n\t\tTCF\tINTRSM\n\n# COMPLETE JOBSLEEP PREPARATIONS.\n\nJOBSLP1\t\tINHINT\n\t\tCS\tPRIORITY\t# NNZ PRIORITY SHOWS JOB ASLEEP.\n\t\tTS\tPRIORITY\n\t\tCAF\tLOW7\n\t\tMASK\tBBANK\n\t\tEXTEND\n\t\tROR\tSUPERBNK\t# SAVE OLD SUPERBANK VALUE.\n\t\tTS\tBANKSET\n\t\tCS\tZERO\nJOBSLP2\t\tTS\tBUF +1\t\t# HOLDS - HIGHEST PRIORITY.\n\t\tTCF\tEJSCAN\t\t# SCAN FOR HIGHEST PRIORITY ALA ENDOFJOB.\n\nNUCHANG2\tINHINT\t\t\t# QUICK... DONT LET NEWJOB CHANGE TO +0 .\n\t\tCCS\tNEWJOB\n\t\tTCF\t+3\t\t# NEWJOB STILL PNZ\n\t\tRELINT\t\t\t# NEWJOB HAS CHANGED TO +0. WAKE UP JOB\n\t\tTCF\tADVAN +2\t# VIA NUDIRECT.  (VERY RARE CASE.)\n\n\t\tCAF\tTWO\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# TURN ON ACTIVITY LIGHT\n\t\tDXCH\tLOC\t\t# AND SAVE ADDRESS INFO FOR BENEFIT OF\n\t\tTCF\tCHANJOB + 4\t#  POSSIBLE SLEEPING JOB.\n\n# Page 1216\n# TO WAKE UP A JOB, EACH CORE SET IS FOUND TO LOCATE ALL JOBS WHICH ARE ASLEEP.  IF THE FCADR IN THE\n# LOC REGISTER OF ANY SUCH JOB MATCHES THAT SUPPLIED BY THE CALLER, THAT JOB IS AWAKENED.  IF NO JOB IS FOUND,\n# LOCCTR IS SET TO -1 AND NO FURTHER ACTION TAKES PLACE.\n\nJOBWAKE2\tTS\tEXECTEM1\n\t\tCAF\tZERO\t\t# BEGIN CORE SET SCAN.\n\t\tTS\tLOCCTR\n\t\tCAF\tNO.CORES\nJOBWAKE4\tTS\tEXECTEM2\n\t\tINDEX\tLOCCTR\n\t\tCCS\tPRIORITY\n\t\tTCF\tJOBWAKE3\t# ACTIVE JOB - CHECK NEXT CORE SET.\nCOREINC\t\tDEC\t12\t\t# 12 REGISTERS PER CORE SET.\n\t\tTCF\tWAKETEST\t# SLEEPING JOB - SEE IF CADR MATCHES.\n\nJOBWAKE3\tCAF\tCOREINC\n\t\tADS\tLOCCTR\n\t\tCCS\tEXECTEM2\n\t\tTCF\tJOBWAKE4\n\t\tCS\tONE\t\t# EXIT IF SLEEPING JOB NOT FOUND.\n\t\tTS\tLOCCTR\n\t\tTCF\tENDFIND\n\nWAKETEST\tCS\tNEWLOC\n\t\tINDEX\tLOCCTR\n\t\tAD\tLOC\n\t\tEXTEND\n\t\tBZF\t+2\t\t# IF MATCH.\n\t\tTCF \tJOBWAKE3\t# EXAMINE NEXT CORE SET IF NO MATCH.\n\n\t\tINDEX\tLOCCTR\t\t# RE-COMPLEMENT PRIORITY TO SHOW JOB AWAKE\n\t\tCS\tPRIORITY\n\t\tTS\tNEWPRIO\n\t\tINDEX\tLOCCTR\n\t\tTS\tPRIORITY\n\n\t\tCS\tFBANKMSK\t# MAKE UP THE 2CADR OF THE WAKE ADDRESS\n\t\tMASK\tNEWLOC\t\t# USING THE CADR IN NEWLOC AND THE EBANK\n\t\tAD\t2K\t\t# HALF OF BBANK SAVED IN BANKSET.\n\t\tXCH\tNEWLOC\n\t\tMASK\tFBANKMSK\n\t\tINDEX\tLOCCTR\n\t\tAD\tBANKSET\n\t\tTS\tNEWLOC +1\n\n\t\tCCS\tLOCCTR\t\t# SPECIAL TREATMENT IF THIS JOB WAS\n\t\tTCF\tSETLOC\t\t# ALREADY IN THE RUN (0) POSITION.\n\t\tTCF\tSPECTEST\n\n# Page 1217\n# PRIORITY CHANGE. CHANGE THE CONTENTS OF PRIORITY AND SCAN FOR THE JOB OF HIGHEST PRIORITY.\n\nPRIOCH2\t\tTS\tLOC\n\t\tCAF\tZERO\t\t# SET FLAG TO TELL ENDJOB SCANNER IF THIS\n\t\tTS\tBUF\t\t# JOB IS STILL HIGHEST PRIORITY.\n\t\tCAF\tLOW9\n\t\tMASK\tPRIORITY\n\t\tAD\tNEWPRIO\n\t\tTS\tPRIORITY\n\t\tCOM\n\t\tTCF\tJOBSLP2\t\t# AND TO EJSCAN.\n\n# Page 1218\n# RELEASE THIS CORE SET AND VAC AREA AND SCAN FOR THE JOB OF HIGHEST ACTIVE PRIORITY.\n\nENDJOB1\t\tINHINT\n\t\tCS\tZERO\n\t\tTS\tBUF +1\n\t\tXCH\tPRIORITY\n\t\tMASK\tLOW9\n\t\tTS\tL\n\n\t\tCS\tFAKEPRET\n\t\tAD\tL\n\n\t\tEXTEND\n\t\tBZMF\tEJSCAN\t\t# NOVAC ENDOFJOB\n\n\t\tCCS\tL\n\t\tINDEX\tA\n\t\tTS\t0\n\nEJSCAN\t\tCCS\tPRIORITY +12D\n\t\tTC\tEJ1\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +24D\t# EXAMINE EACH PRIORITY REGISTER TO FIND\n\t\tTC\tEJ1\t\t# THE JOB OF HIGHEST ACTIVE PRIORITY.\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +36D\n\t\tTC\tEJ1\n-CCSPR\t\t-CCS\tPRIORITY\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +48D\n\t\tTC\tEJ1\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +60D\n\t\tTC\tEJ1\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +72D\n\t\tTC\tEJ1\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n# Page 1219\n# EVALUATE THE RESULTS OF THE SCAN.\n\n\t\tCCS\tBUF +1\t\t# SEE IF THERE ARE ANY ACTIVE JOBS WAITING\n\t\tTC\tCCSHOLE\n\t\tTC\tCCSHOLE\n\n\t\tTCF\t+2\n\t\tTCF\tDUMMYJOB\n\t\tCCS\tBUF\t\t# BUF IS ZERO IF THIS IS A PRIOCHNG AND\n\t\tTCF\t+2\t\t# CHANGED PRIORITY IS STILL HIGHEST.\n\t\tTCF\tENDPRCHG -1\n\n\t\tINDEX\tA\t\t# OTHERWISE, SET NEWJOB TO THE RELATIVE\n\t\tCAF\t0 -1\t\t# ADDRESS OF THE NEW JOB'S CORE SET.\n\t\tAD\t-CCSPR\n\t\tTS\tNEWJOB\n\t\tTCF\tCHANJOB -2\n\nEJ1\t\tTS\tBUF +2\n\t\tAD\tBUF +1\t\t# - OLD HIGH PRIORITY.\n\t\tCCS\tA\n\t\tCS\tBUF \t+2\n\t\tTCF\tEJ2\t\t# NEW HIGH PRIORITY.\n\t\tNOOP\n\t\tINDEX\tQ\n\t\tTC\t2\t\t# PROCEED WITH SEARCH.\n\nEJ2\t\tTS\tBUF +1\n\t\tEXTEND\n\t\tQXCH\tBUF\t\t# FOR LOCATING CCS PRIORITY + X INSTR.\n\t\tINDEX\tBUF\n\t\tTC\t2\n\n# Page 1220\n# IDLING AND COMPUTER ACTIVITY (GREEN) LIGHT MAINTENANCE. THE IDLING ROUTINE IS NOT A JOB IN ITSELF,\n# BUT RATHER A SUBROUTINE OF THE EXECUTIVE.\n\n\t\tEBANK=\tSELFRET\t\t# SELF-CHECK STORAGE IN EBANK.\n\nDUMMYJOB\tCS\tZERO\t\t# SET NEWJOB TO -0 FOR IDLING.\n\t\tTS\tNEWJOB\n\t\tRELINT\n\t\tCS\tTWO\t\t# TURN OFF THE ACTIVITY LIGHT.\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\nADVAN\t\tCCS\tNEWJOB\t\t# IS A NEWJOB ACTIVE ?\n\t\tTCF\tNUCHANG2\t# YES... ONE REQUIRING A CHANGE JOB.\n\t\tCAF\tTWO\t\t# NEW JOB ALREADY IN POSITION FOR\n\t\tTCF\tNUDIRECT\t# EXECUTION.\n\n\t\tCA\tSELFRET\n\t\tTS\tL\t\t# PUT RETURN ADDRESS IN L.\n\t\tCAF\tSELFBANK\n\t\tTCF\tSUPDXCHZ + 1\t# AND DISPATCH JOB.\n\n\t\tEBANK=\tSELFRET\nSELFBANK\tBBCON\tSELFCHK\n\nNUDIRECT\tEXTEND\t\t\t# TURN THE GREEN LIGHT BACK ON.\n\t\tWOR\tDSALMOUT\n\t\tDXCH\tLOC\t\t# JOBS STARTED IN THIS FASHION MUST BE\n\t\tTCF\tSUPDXCHZ\n\n\t\tBLOCK\t2\t\t# IN FIXED-FIXED SO OTHERS MAY USE.\n\n\t\tCOUNT\t02/EXEC\n\n# SUPDXCHZ - ROUTINE TO TRANSFER TO SUPERBANK.\n# CALLING SEQUENCE\n#\t\tTCF\tSUPDXCHZ\t# WITH 2CADR OF DESIRED LOCATION IN A + L.\n\nSUPDXCHZ\tXCH\tL\t\t# BASIC.\n+1\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\t\tTS\tBBANK\n\t\tTC\tL\n\nNEG100\t\tOCT\t77677\n\n\n\n"
  },
  {
    "path": "Comanche055/EXTENDED_VERBS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tEXTENDED_VERBS.agc\n# Purpose:\tPart of the source code for Comanche, build 055. It\n#\t\tis part of the source code for the Command Module's\n#\t\t(CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 236-267\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t2009-05-18 FB\tTranscription Batch 3 Assignment.\n#\t\t2009-05-20 RSB\tCorrections:  POODOO -> P00DOO,\n#\t\t\t\tGOTOPOOH -> GOTOPOOH, added a couple of\n#\t\t\t\tmissing instructions in Verb 96.\n#\t\t2009-05-23 RSB\tIn SYSTEST, corrected TC FLAGWRD1 to\n#\t\t\t\tCA FLAGWRD1.  Added a variety of SBANK=\n#\t\t\t\tstatements prior to 2CADRs.  One day I'll\n#\t\t\t\thave to figure out what yaYUL is doing\n#\t\t\t\twrong with those ....\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 236\n\t\tBANK\t7\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tEBANK=\tOGC\n\n\t\tCOUNT*\t$$/EXTVB\n\n# FAN-OUT\n\nGOEXTVB\t\tINDEX\tMPAC\t\t# VERB-40 IS IN MPAC\n\t\tTC\tLST2FAN\t\t# FAN AS BEFORE.\n\nLST2FAN\t\tTC\tVBZERO\t\t# VB40 ZERO (USED WITH NOUN 20 ONLY).\n\t\tTC\tVBCOARK\t\t# VB41 COARSE ALIGN (USED WITH NOUN 20 OR\n\t\t\t\t\t#\t\t\t\t91 ONLY)\n\t\tTC\tIMUFINEK\t# VB42 FINE ALIGN IMU\n\t\tTC\tIMUATTCK\t# VB43 LOAD IMU ATTITUDE ERROR METERS.\n\t\tTC\tSETSURF\t\t# VB44 SET SURFACE FLAG\n\t\tTC\tRESTSRF\t\t# VB45 RESET SURFACE FLAG\n\t\tTC\tSTABLISH\t# VB46 ESTABLISH G+C CONTROL.\n\t\tTC\tLMTOCMSV\t# VB47 MOVE LM STATE VECTOR INTO CM\n\t\tTC\tDAPDISP\t\t# VB48 LOAD A/P DATA.\n\t\tTCF\tCREWMANU\t# VB 49 START AUTOMATIC ATTITUDE MANEUVER\n\t\tTC\tGOLOADLV\t# VB50 PLEASE PERFORM\n\t\tTC\tGOLOADLV\t# VB51 PLEASE MARK\n\t\tTC\tV52\t\t# VB52 SET OFFSET NO. FOR P22\n\t\tTC\tGOLOADLV\t# VB 53 PLEASE PERFORM COAS MARK\n\t\tTC\tGOTOR23\t\t# VB54 PLEASE MARK (R-21-BACKUP)\n\t\tTC\tALINTIME\t# VB55 ALIGN TIME\n\t\tTC\tTRACKTRM\t# VB56 TERMINATE TRACKING (P20 +P25)\n\t\tTC\tGOTOR21\t\t# V57 START R21 REND TRACK SIGHT MARK ROUT\n\t\tTC\tENATMA\t\t# VB58 ENABLE AUTOMATIC ATTITUDE MANEUVER\n\t\tTC\tGOLOADLV\t# VB59 PLEASE CALIBRATE\n\t\tTC\tV60\t\t# VB60 SET CPHIX (N17) EQUAL TO CDU\n\t\tTC\tV61\t\t# VB61 SELECT MODE I\n\t\tTC\tV62\t\t# VB62 SELECT MODE II, ERROR WRT N22\n\t\tTC\tV63\t\t# VB63 SELECT MODE III, ERROR WRT N17\n\t\tTC\tVB64\t\t# VB64 CALCULATE,DISPLAY S-BAND ANT ANGLES\n\t\tTC\tCKOPTVB\t\t# V 65 E OPTICAL VERIFICATION FOR PRELAUNC\n\t\tTC\tATTACHED\t# VB 66 ATTACHED. MOVE THIS TO OTHER STATE\n\t\tTC\tV67\t\t# VB67 WMATRIX MONITOR\n\t\tTC\tSTROKON\t\t# VB68 CSM STROKE TEST ON.\nVERB69\t\tTC\tVERB69\t\t# VB 69 CAUSE RESTART\n\t\tTC\tV70UPDAT\t# VB70 UPDATE LIFTOFF TIME.\n\t\tTC\tV71UPDAT\t# VB71 UNIVERSAL UPDATE - BLOCK ADDRESS.\n\t\tTC\tV72UPDAT\t# VB72 UNIVERSAL UPDATE - SINGLE ADDRESS.\n\t\tTC\tV73UPDAT\t# VB73 UPDATE AGC TIME (OCTAL).\n\t\tTC\tDNEDUMP\t\t# VB74 INITIALIZE DOWN-TELEMETRY PROGRAM\n\t\t\t\t\t#\tFOR ERASABLE DUMP.\n\t\tTC\tLFTFLGON\t# VB75 SET LIFTOFF FLAG.\n# Page 237\n\t\tTC\tSETPRFLG\t# VB76 SET PREFERRED ATTITUDE FLAG\n\t\tTC\tRESETPRF\t# VB77 RESET PREFERRED ATT. FLAG\n\t\tTC\tCHAZFOGC\t# CHANGE GYROCOMPASS LAUNCH AZIMUTH V78\n\t\tTC\tALM/END\t\t# V79 SPARE\n\t\tTC\tLEMVEC\t\t# VB80 UPDATE LEM STATE VECTOR\n\t\tTC\tCSMVEC\t\t# VB81 UPDATE CSM STATE VECTOR\n\t\tTC\tV82PERF\t\t# VB82 REQUEST ORBIT PARAM DISPLAY (R30)\n\t\tTC\tV83PERF\t\t# VB83 RANGE, RANGE RATE, +X AXIS  (R31)\n\t\tTC\tALM/END\t\t# V84  SPARE\n\t\tTC\tV85PERF\t\t# VB85 RANGE, RANGE RATE, SLOS\t   (R32)\n\t\tTC\tV86PERF\t\t# VB86 BACKUP MARK REJECT\n\t\tTC\tSETVHFLG\t# VB87 SET VHF RANGE FLAG\n\t\tTC\tRESETVHF\t# VB88 RESET VHF RANGE FLAG\n\t\tTC\tV89PERF\t\t# V89-ALIGN X OR PRF CSM AXIS TO LOS (R63)\n\t\tTC\tV90PERF\t\t# VB90-OUT OF PLAN PARAMETERS %R36\"\n\t\tTC\tGOSHOSUM\t# VB91 TEMP FOR HYBRID AND STG.\n\t\tTC\tSYSTEST\t\t# VB92 OPERATE IMU PERFORMANCE TEST\n\t\tTC\tWMATRXNG\t# VB93 CLEAR RENDWFLG\n\t\tTC\tVERB94\t\t# VB94 DO R64\n\t\tTC\tALM/END\t\t# VB95 SPARE\n\t\tTCF\tVERB96\t\t# VB96 SET QUITFLAG TO STOP INTEGRATION\n\t\tTC\tGOLOADLV\t# VB97 PLEASE PERFORM ENGINE-FAIL (R41)\n\t\tTC\tALM/END\t\t# VB98 SPARE\n\t\tTC\tGOLOADLV\t# VB99 PLEASE ENABLE ENGINE\n\n# END OF EXTENDED VERB FAN\n\n\nTESTXACT\tCCS\tEXTVBACT\n\t\tTC\tALM/END\t\t# YES, TURN ON OPERATOR ERROR LIGHT\n\t\tCA\tFLAGWRD4\t# ARE PRIOS USING DSKY\n\t\tMASK\tOC24100\n\t\tCCS\tA\n\t\tTC\tALM/END\n\n\t\tCAF\tOCT24\t\t# SET BITS 3 AND 5\nSETXTACT\tTS\tEXTVBACT\t# NO. SET FLAG TO SHOW EXT VERB DISPLAY\n\t\t\t\t\t# SYSTEM BUSY\n\n\t\tCA\tQ\n\t\tTS\tMPAC +1\n\n\t\tCS\tTWO\t\t# BLANK EVERYTHING EXCEPT MM AND VERB\n\t\tTC\tNVSUB\n\t\tTC\t+1\n\t\tTC\tMPAC +1\n\nXACTALM\t\tTC\tFALTON\t\t# TURN ON OPERATOR ERROR LIGHT.\n\t\tTC\tENDEXT\t\t# RELEASE MARK AND EXT. VERB DISPLAY SYS.\n# Page 238\nTERMEXTV \tEQUALS \tENDEXT\nENDEXTVB\tEQUALS\tENDEXT\n\nXACT0\t\tCAF\tZERO\t\t# RELEASE MARK AND EXT. VERB DISPLAY SYS.\n\t\tTC\tSETXTACT\n\nALM/END\t\tTC\tFALTON\t\t# TURN ON OPERATOR ERROR LIGHT\nGOPIN\t\tTC\tPOSTJUMP\n\t\tCADR\tPINBRNCH\n\nOC24100\t\tOCT\t24100\n\n# Page 239\n# VBZERO\tVERB 40\t\tDESCRIPTION\n#\tZERO\n#\t1. REQUIRE NOUN 20 (ICDU ANGLES)\n#\t2. REQUIRE AVAILABILITY OF EXT VERB DISPLAY SYSTEM\n#\t3. IF EITHER OF ABOVE CONDITIONS NOT PRESENT, TURN ON OPERATOR ERROR LIGHT AND GO TO PINBRNCH.\n#\t4. SET EXT VERB DISPLAY ACTIVE FLAG.\n#\t5. EXECUTE IMUZERO (ZERO IMU CDU ANGLES).\n#\t6. EXECUTE IMUSTALL (ALLOW TIME FOR DATA TRANSFER).\n#\t7. RELEASE EXT. VERB DISPLAY SYSTEM.\n\nVBZERO\t\tTC\tOP/INERT\n\t\tTC\tIMUZEROK\t# RETURN HERE IF NOUN = ICDU(20)\n\t\tTC\tALM/END\t\t# RETURN HERE IF NOUN = OCDU(91)\n\t\t\t\t\t#\t(NOT IN USE YET)\n\nIMUZEROK\tTC\tCKMODCAD\t# KEYBOARD REQUEST FOR ISS CDUZERO\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUZERO\n\n\t\tTC\tBANKCALL\t# STALL\n\t\tCADR\tIMUSTALL\n\t\tTC\t+1\n\n\t\tTC\tGOPIN\n\nOP/INERT\tCS\tOCT24\n\t\tAD\tNOUNREG\n\t\tEXTEND\n\t\tBZF\tXACT0Q\t\t# IF = 20.\n\n\t\tINCR\tQ\n\t\tAD\tOPIMDIFF\t# -71\n\t\tEXTEND\n\t\tBZF\tXACT0Q\n\n\t\tTC\tALM/END\t\t# ILLEGAL.\n\nOPIMDIFF\tDEC\t-71\n\n# Page 240\n# VBCOARK\tVERB 41\t\tDESCRIPTION\n#\tCOARSE ALIGN IMU OR RADAR\n#\t1. REQUIRE NOUN 20 OR NOUN 91 OR TURN ON OPERATOR ERROR\n#\t2. REQUIRE EXT VERB DISPLAY SYS AVAILABLE OR TURN ON OPERATOR ERROR LIGHT AND GO TO PINBRNCH.\n#\tCASE 1\tNOUN 20\t(ICDU ANGLES)\n#\t3. SET EXT VERB DISPLAY ACTIVE FLAG.\n#\t4. DISPLAY FLASHING V25,N22 (LOAD NEW ICDU ANGLES).\n#\t   RESPONSES\n#\t\tA. TERMINATE\n#\t\t   1. RELEASE EXT VERB DISPLAY SYSTEM\n#\t\tB. PROCEED\n#\t\t   1. DISPLAY FLASHING V25,N23 (LOAD DELTA ICDU ANGLES).\n#\t\t\tRESPONSES\n#\t\t\t\tA. TERMINATE\n#\t\t\t\t   1. RELEASE EXT VERB DISPLAY SYSTEM.\n#\t\t\t\tB. PROCEED\n#\t\t\t\t   1. EXECUTE ICORK2.\n#\t\t\t\tC. ENTER\n#\t\t\t\t   1. INCREMENT CDU ANGLES\n#\t\t\t\t   2. EXECUTE ICORK2.\n#\t\tC. ENTER\n#\t\t   1. EXECUTE ICORK2.\n# \tICORK2\n#\t\t1. RE-DISPLAY VERB 41.\n#\t\t2. EXECUTE IMUCCARS (IMU COARSE ALIGN).\n#\t\t3. EXECUTE IMUSTALL (ALLOW TIME FOR DATA TRANSFER).\n#\t\t4. RELEASE EXT VERB DISPLAY SYSTEM.\n#\tCASE 2\tNOUN 91\t(OCDU ANGLES)\n#\t5. (REQUIRE OPTICS SWITCH TO BE AT COMPUTER OR TURN ON OPERATOR ERROR AND ALARM 115) AND (REQUIRE\n#\t   OPTICS AVAILABLE AND DISPLAY FLASHING V24,N92....LOAD NEW OPTICS ANGLES....OR TURN ON ALARM 117\n#\t   AND RELEASE EXT VERB DISPLAY SYSTEM).\n#\t6. RESPONSES TO V29,N92.\n#\t   A. TERMINATE\n#\t      RELEASE EXT VERB DISPLAY SYSTEM\n#\t   B. PROCEED OR ENTER\n#\t      RE-DISPLAY V41,\tSET SWITCH TO INDICATE COURSE ALIGN OPTICS WORKING.\n#\t      RELEASE EXT VERB DISPLAY SYSTEM.\n\nVBCOARK\t\tTC\tOP/INERT\n\t\tTC\tIMUCOARK\t\t# RETURN HERE IF NOUN = ICDU(20)\n\t\tTC\tOPTCOARK\t\t# RETURN HERE IF NOUN = OCDU(91)\n# RETURNS TO L+1 IF NOUN 20 - TO L+2 IF NOUN 91.\nIMUCOARK\tTC\tCKMODCAD\t\t# COARSE ALIGN FROM KEYBOARD\n\t\tTC\tTESTXACT\n\t\tCAF\tVNLODCDU\t\t# CALL FOR THETAD LOAD\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tTERMEXTV\n\t\tTCF\t+1\n# Page 241\n\nICORK2\t\tCAF\tIMUCOARV\t\t# RE-DISPLAY COARSE ALIGN VERB.\n\t\tTC\tBANKCALL\n\t\tCADR\tEXDSPRET\n\n\t\tTC\tBANKCALL\t\t# CALL MODE SWITCHING PROG\n\t\tCADR\tIMUCOARS\n\n\t\tTC\tBANKCALL\t\t# STALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tENDEXTVB\n\t\tTC\tENDEXTVB\n\nVNLODCDU\tVN\t2522\nIMUCOARV\tVN\t4100\n\n# Page 242\n# TEMPORARY ROUTINE TO RUN THE OPTICS CDUS FROM THE KEYBOARD\n\nOPTCOARK\tCA\tOPTCADR\n\t\tTC\tCKMODCAD +1\n\t\tTC\tTESTXACT\n\t\tCAF\tEBANK5\n\t\tTS\tEBANK\n\n\t\tCCS\tSWSAMPLE\t\t# SEE IF SWITCH AT COMPUTER\n\t\tTC\t+5\t\t\t# SWITCH AT COMPUTER\n\t\tTC\t+1\t\t\t# NOT ON COMPUTER\n\t\tTC\tFALTON\t\t\t# TURN ON OPERATOR ERR\n\t\tTC\tALARM\t\t\t# AND ALARM\n\t\tOCT\t00115\n\n\t\tCCS\tOPTIND\t\t\t# SEE IF OPTICS AVAILABLE\n\t\tTC\tOPTC1\t\t\t# IN USE\n\t\tTC\tOPTC1\t\t\t# IN USE\n\t\tTC\tOPTC1\t\t\t# IN USE\n\n\t\tTC\tALARM\t\t\t# OPTICS RESERVED (OPTIND=-0)\n\t\tOCT\t00117\n\t\tTC\tENDEXT\n\nOPTC1\t\tCAF\tVNLD0CDU\t\t# VERB-NOUN TO LOAD OPTICS CDUS\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tTERMEXTV\n\t\tTC\t+1\t\t\t# PROCEED\n\n\t\tCA\tSAC\n\t\tTS\tDESOPTS\n\t\tCA\tPAC\n\t\tTS\tDESOPTT\n\t\tCAF\tOPTCOARV\t\t# RE-DISPLAY OUR OWN VERB\n\t\tTC\tBANKCALL\n\t\tCADR\tEXDSPRET\n\n\t\tCAF\tONE\n\t\tTS\tOPTIND\t\t\t# SET COARS WORKING\n\n\t\tTC\tENDEXTVB\n\t\tTC\tENDEXTVB\n\nVNLD0CDU\tVN\t2492\nOPTCOARV\tEQUALS\tIMUCOARV\t\t# DIFFERENT NOUNS.\n\n# Page 243\n# IMUFINEK\tVERB 42\t\tDESCRIPTION\n#\tFINE ALIGN IMU\n#\t1. REQUIRE EXT VERB DISPLAY AVAILABLE AND SET BUSY FLAG OR TURN ON OPER ERROR AND GO TO PINBRNCH.\n#\t2. DISPLAY FLASHING V25,N93....LOAD DELTA GYRO ANGLES....\n#\t   RESPONSES\n#\t   A. TERMINATE\n#\t      1. RELEASE EXT VERB DISPLAY SYSTEM.\n#\t   B. PROCEED OR ENTER\n#\t      1. RE-DISPLAY VERB 42\n#\t      2. EXECUTE IMUFINE (IMU FIVE ALIGN MODE SWITCHING).\n#\t      3. EXECUTE IMUSTALL (ALLOW FOR DATA TRANSFER)\n#\t\t A. FAILED\n#\t\t    1. RELEASE EXT VERB DISPLAY SYSTEM.\n#\t\t B. GOOD\n#\t\t    1. EXECUTE IMUPULSE (TORQUE IRIGS).\n#\t\t    2. EXECUTE IMUSTALL AND RELEASE EXT VERB DISPLAY SYSTEM.\n\nIMUFINEK\tTC\tCKMODCAD\t\t# FINE ALIGN WITH GYRO TORQUING\n\t\tTC\tTESTXACT\n\t\tCAF\tVNLODGYR\t\t# CALL FOR LOAD OF GYRO COMMANDS\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tTERMEXTV\n\t\tTC\t+1\t\t\t# PROCEED WITHOUT A LOAD\n\n\t\tCAF\tIMUFINEV\t\t# RE-DISPLAY OUR OWN VERB\n\t\tTC\tBANKCALL\n\t\tCADR\tEXDSPRET\n\n\t\tTC\tBANKCALL\t\t# CALL MODE SWITCH PROG\n\t\tCADR\tIMUFINE\n\n\t\tTC\tBANKCALL\t\t# HIBERNATION\n\t\tCADR\tIMUSTALL\n\t\tTC\tENDEXTVB\n\nFINEK2\t\tCAF\tLGYROBIN\t\t# PINBALL LEFT COMMANDS IN OGC REGIST5RS\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\n\t\tTC\tBANKCALL\t\t# WAIT FOR PULSES TO GET OUT.\n\t\tCADR\tIMUSTALL\n\t\tTC\tENDEXTVB\n\t\tTC\tENDEXTVB\n\nLGYROBIN\tECADR\tOGC\nVNLODGYR\tVN\t2593\nIMUFINEV\tVN\t4200\t\t\t# FINE ALIGN VERB\n\nCKMODCAD\tCA\tMODECADR\n# Page 244\n\t\tEXTEND\n\t\tBZF\tTCQ\n\t\tTC\tALM/END\t\t\t# SOMEBODY IS USING MODECADR SO EXIT\n# GOLOADLV\tVERB 50\t\tDESCRIPTION\n#\t\tAND OTHER PLEASE\n#\t\tDO SOMETHING VERBS\n# \tPLEASE PERFORM, MARK, CALIBRATE, ETC.\n#\t1. PRESSING ENTER ON DSKY INDICATES REQUESTED ACTION HAS BEEN PERFORMED, AND THE PROGRAM DOES THE\n#\t   SAME RECALL AS A COMPLETED LOAD.\n#\t2. THE EXECUTION OF A VERB 33 (PROCEED WITHOUT DATA) INDICATES THE REQUESTED ACTION IS NOT DESIRED.\n\nGOLOADLV\tTC\tFLASHOFF\n\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# TURN ON FE7\n\t\tTC\tPOSTJUMP\n\t\tSBANK=\tPINSUPER\n\t\tCADR\tLOADLV1\n\n# V60\tVERB 60\nV60\t\tEXTEND\t\t\t# SET ASTRONAUT TOTAL ATTITUDE (N17) EQUAL\n\t\tDCA\tCDUX\t\t# TO PRESENT ATTITUDE\n\t\tDXCH\tCPHIX\n\t\tCA\tCDUZ\n\t\tTS\tCPHIX\t+2\n\t\tTC\tGOPIN\n\n# V61\tVERB 61\nV61\t\tTC\tDOWNFLAG\t# SET NEEDLFLG TO 0 (FLAGWRD0,BIT9), PHASE\n\t\tADRES\tNEEDLFLG\t# PLANE A/P FOLLOWING ERROR DISPLAYED\n\t\tTC\tGOPIN\n\n# V62\tVERB 62\nV62\t\tTC\tUPFLAG\t\t# SET NEEDLFLG TO 1 (FLAGWRD0,BIT9),\n\t\tADRES\tNEEDLFLG\t# TOTAL ATTITUDE ERROR DISPLAYED\n\n\t\tTC\tUPFLAG\t\t# SET N22ORN17 TO 1 (FLAGWRD9,BIT6),\n\t\tADRES\tN22ORN17\t# COMPUTE TOTAL ATTITUDE ERROR WRT N22\n\t\tTC\tGOPIN\n\n# V63\tVERB 63\nV63\t\tTC\tUPFLAG\t\t# SET NEEDLFLG TO 1 (FLAGWRD0,BIT9),\n\t\tADRES\tNEEDLFLG\t# TOTAL ATTITUDE ERROR DISPLAYED\n\n\t\tTC\tDOWNFLAG\t# SET N22ORN17 TO 0 (FLAGWRD9,BIT6,\n# Page 245\n\t\tADRES\tN22ORN17\t# COMPUTE TOTAL ASTRONAUT ATTITUDE ERROR\n\t\tTC\tGOPIN\n\n# Page 246\n# ALINTIME\tVERB 55\t\tDESCRIPTION\n#\t1. SET EXT VERB DISPLAY BUSY FLAG.\n#\t2. DISPLAY FLASHING V25,N24 (LOAD DELTA TIME FOR AGC CLOCK.\n#\t3. REQUIRE EXECUTION OF VERB 23.\n#\t4. ADD DELTA TIME, RECEIVED FROM INPUT REGISTER, TO THE COMPUTER TIME.\n#\t5. RELEASE EXT VERB DISPLAY SYSTEM\n\n\t\tCOUNT\t04/R33\n\nALINTIME\tTC\tTESTXACT\n\n\t\tCAF\tVNLODDT\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKF\n\t\tTC\tENDEXT\t\t# TERMINATE\n\t\tTC\tENDEXT\t\t# PROCEED\n\t\tCS\tDEC23\t\t# DATA IN OR RESEQUENCE(UNLIKELY)\n\t\tAD\tMPAC\t\t# RECALL LEFT VERB IN MPAC\n\t\tEXTEND\n\t\tBZF\tUPDATIME\t# GO AHEAD WITH UPDATE ONLY IF RECALL\n\t\tTC\tENDEXT\t\t#\tWITH V23 (DATA IN).\nUPDATIME\tINHINT\t\t\t# DELTA TIME IS IN DSPTEM1, +1.\n\t\tCAF\tZERO\n\t\tTS\tMPAC +2\t\t# NEEDED FOR TP AGREE\n\t\tTS\tL\t\t# ZERO T1 & 2 WHILE ALIGNING.\n\t\tDXCH\tTIME2\n\t\tDXCH\tMPAC\n\t\tDXCH\tDSPTEM2 +1\t# INCREMENT\n\t\tDAS\tMPAC\n\n\t\tTC\tTPAGREE\t\t# FORCE SIGN AGREEMENT.\n\t\tDXCH\tMPAC\t\t# NEW CLOCK.\n\t\tDAS\tTIME2\n\t\tRELINT\nUPDTMEND\tTC\tENDEXT\nDEC23\t\tDEC\t23\t\t# V 23\n\nVNLODDT\t\tVN\t2524\t\t# V25N24 FOR LOAD DELTA TIME\n\n# Page 247\n# SYSTEST\tVERB 92\t\tDESCRIPTION\n#\tOPERATE SELECTED SYSTEM TEST\n#\t1. REQUIRE P00 OR P00- OR TURN ON OPERATOR ERROR.\n#\t2. TURN OFF DAP IF IT IS ON.\n#\t3. DISPLAY FLASHING V21,N01 (LOAD TEST NUMBER 1 THRU 17).\n#\t4. UPON ENTRY OF TEST NUMBER, SCHEDULE TSELECT WITH PRIORITY 20.\n# \tTSELECT\n#\t\t1. IF LOADED TEST NUMBER IS VALID, GO TO THAT TEST ROUTINE, OTHERWISE TURN ON OPERATOR ERROR AND\n#\t\t   REPEAT LOAD REQUEST DISPLAY.  (NO. 3 ABOVE)\n\n\t\tEBANK=\tQPLACE\n\n\t\tCOUNT\t04/EXTVB\n\nSYSTEST\t\tTC\tCHKPOOH\n\t\tCA\tFLAGWRD1\t# IS NODOP01 FLAGBIT ON? (SET BY P11)\n\t\tMASK\tNOP01BIT\n\t\tEXTEND\n\t\tBZF\tV92CONT\t\t# IF IT'S NOT YET SET, CONTINUE\n\t\tTC\tPOODOO\t\t# IT'S ON. SEND NODO ALARM FOR P07\n\t\tOCT\t1521\nV92CONT\t\tTC\tEXDAPOFF\t# TURN DAP OFF IF IT'S ON\n\t\tCAF\tPRIO20\n\t\tTC\tFINDVAC\n\t\tEBANK=\tQPLACE\n\t\tSBANK=\tIMUSUPER\n\t\t2CADR\tREDO\n\n\t\tTC\tGOPIN\n\n\n# REDO AND TSELECT ARE NOW IN SYSTEM TEST.\n\n\t\tCOUNT*\t$$/EXTVB\n# CKOPTVB\tVERB 65\t\tDESCRIPTION\n#\tOPTICAL VERIFICATION FOR PRELAUNCH.\n#\t1.\tSCHEDULE GCOMPVER, OPTICAL VERIFICATION SUBPROGRAM, WITH PRIORITY 17.\n\nCKOPTVB\t\tTC\tCHECKMM\n\t\tMM\t02\t\t# I WONDER IF PRELAUNCH IS RUNNING\n\t\tTC\tALM/END\t\t# NOT RUNNING OPERATOR ERROR\n\t\tINHINT\n\t\tCAF\tPRIO16\t\t# PRELAUNCH OPTICAL VERIFICATION\n\t\tTC\tFINDVAC\n\t\tEBANK=\tQPLACE\n\t\t2CADR\tCOMPVER\t\t# STANDARD LEADIN TO GCOMPVER.\n\n\t\tTC\tGOPIN\n\n# Page 248\n# V 78....\tTO CHANGE GYROCOMPASS AZIMUTH\n\nCHAZFOGC\tTC\tCHECKMM\t\t# IS IT PRELAUNCH\n\t\tMM\t02\n\t\tTC\tALM/END\t\t# NO - OPERA TOR ERROR\n\n\t\tCAF\tPRIO16\t\t#  PRELAUNCH AZIMUTH CHANGE\n\t\tTC\tFINDVAC\n\t\tEBANK=\tXSM\n\t\t2CADR\tAZMTHCG1\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t00174\n\t\tTC\tGOPIN\n# Page 249\n# IMUATTCK\tVERB 43\t\tDESCRIPTION\n#\tLOAD IMU ATTITUDE ERROR METERS\n#\t1. REQUIRE PROGRAM 00 ACTIVE, COARSE ALIGN ENABLE BIT OFF AND ZERO ICDU BIT OFF.\n#\t2. IF GUID REF RELEASE OR LIFTOFF HAS OCCURRED REQUIRE EXT VERB DISPLAY AVAILABLE AND SET BUSY\n#\t   FLAG, OTHERWISE ALLOW CURRENT EXT VERB DISPLAY TO BE OVER-RIDDEN.\n#\t3.  REMOVE COARSE ALIGN ENABLE AND IMU ERROR COUNTER ENABLE\n#\t4. DISPLAY FLASHING V25,N22 (LOAD NEW ICDU ANGLES).\n#\t5. UPON PROCEED OR ENTER RESPONSE, INITIALIZE CURRENT DAC AND COMMAND VALUES, ENABLE ERROR COUNTERS\n#\t   TRANSFER LOADED VALUES TO REGISTERS, AND SEND COMMANDS.\n#\t6. IF BUSY FLAG SET, RESET IT TO RELEASE EXT VERB DISPLAY.\n\nIMUATTCK\tTC\tCHKPOOH\n\n\t\tCAF\tOCTAL30\t\t# CHECK IF IMU ZERO AND IMU COARSE ARE ON\n\t\tEXTEND\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTCF\tALM/END\t\t# NOT ALLOWED IF IMU COARSE OR IMU ZERO ON\n\n\t\tTC\tCKLFTBTS\t# IS IT BEFORE OR AFTER LIFTOFF\n\t\tTC\tTESTXACT\t# AFTER\n\t\tCS\tOCT50\t\t# REMOVE COARSE AND ECTR ENABLE.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCAF\tVNLODCDU\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTCF\tTRMATTCK\n\t\tTC\t+1\n\t\tCAF\tEBANK6\n\t\tTS\tEBANK\t\t# SET E6 FOR NEEDLES.\n\n\t\tEBANK=\tAK\n\n\t\tTC\tBANKCALL\t# INITIALIZE CURRENT DAC AND\n\t\tCADR\tNEEDLE11\t# COMMAND VALUES\n\n\t\tTC\tBANKCALL\t# ENABLE ERROR COUNTERS.\n\t\tCADR\tNEEDLER2\n\n\t\tCAF\tTWO\t\t# 4 MS MIN.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tAK\n\t\t2CADR\tATTCK1\n\nTRMATTCK\tTC\tCKLFTBTS\t# IS IT BEFORE OR AFRER LIFTOFF\n\t\tTCF\tENDEXT\t\t# AFTER\n\t\tTC\tGOPIN\n# Page 250\nATTCK1\t\tEXTEND\t\t\t# TRANSFER LOADED VALUES TO DESIRED REGS.\n\t\tDCA\tTHETAD\n\t\tDXCH\tAK\n\t\tCAE\tTHETAD\t+2\n\t\tTS\tAK\t+2\n\n\t\tTC\tIBNKCALL\t# SENDS COMMANDS LIMITED TO +,- 384 PULSES\n\t\tCADR\tNEEDLES\t\t# AND LEAVES ERROR COUNTERS ENABLED.\n\n\t\tTC\tTASKOVER\n\nCKLFTBTS\tCAF\tGRRBKBIT\t# HAS LIFTOFF OCCURRED\n\t\tMASK\tFLAGWRD5\n\t\tCCS\tA\n\t\tTC\tQ\t\t# YES\n\t\tCAF\tBIT5\n\t\tEXTEND\n\t\tRAND\tCHAN30\n\t\tCCS\tA\n\t\tTCF\tQ+1\nXACT0Q\t\tTC\tQ\t\t# YES\n\nOCTAL30\t\tOCT\t30\nVB64\t\tTC\tCHKPOOH\t\t# DEMAND PROGRAM 00.\n\t\tTC\tTESTXACT\t# IF DISPLAY SYS. NOT BUSY,MAKE IT BUSY.\n\t\tINHINT\n\t\tCAF\tPRIO4\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRHOSB\n\t\t2CADR\tSBANDANT\t# CALC.,DISPLAY S-BAND ANTENNA ANGLES.\n\n\t\tTC\tENDOFJOB\n\n# \tENATMA\t\tVERB 58\t\tDESCRIPTION\n#\t\tENABLE AUTOMATIC ATTITUDE MANEUVER\n\n# VERB58 RESETS STIKFLAG TO ENABLE R61 TO PERFORM AUTOMATIC TRACKING MANEUVERS, AFTER INTERRUPTS BY THE RHC ACT-\n# IVITY.\n\nENATMA\t\tTC\tDOWNFLAG\t# RESET STIKFLAG.\n\t\tADRES\tSTIKFLAG\t# BIT 14 FLAG 1\n\t\tTC\tGOPIN\n\n# Page 251\n# STROKON\tVERB 68\t\tDESCRIPTION\n\n#\tSTROKE TEST SETUP/ENABLE\n#\t1. SET EXT VERB DISPLAY BUSY FLAG\n#\t2. SCHEDULE STRKTST1 WITH PRIORITY 30.\n#\t3. RELEASE EXT VERB DISPLAY.\n\n\t\tEBANK=\tT5TVCDT\nSTROKON\t\tCS\tFLAGWRD6\t# V68\tPERMITTED ONLY DURING TVC\n\t\tMASK\tOCT60000\n\t\tEXTEND\n\t\tBZMF\tALM/END\t\t# NOT TVC....FLASH OP ERROR LIGHT\n\t\tCAF\tPRIO30\t\t# JOB REQUEST, TO SET UP STROKE TEST,\n\t\tTC\tNOVAC\t\t#\tINCLUDING INITIALIZATIONS\n\t\tEBANK=\tSTROKER\n\t\t2CADR\tSTRKTSTI\n\n\t\tTC\tGOPIN\n\n\n# STABLISH\tVERB 46\t\tDESCRIPTION\n#\tESTABLISH G & N AUTOPILOT CONTROL\n#\t1. SETS UP EITHER RCS, ENTRY, OR SATURN\n#\t2. IF TVC IS ON, SETS UP CSM/LM SWITCH-OVER\n#\t\tFROM HIGH BW TO LOW BW\n\n\nSTABLISH\tCAF\tEBANK6\t\t# V46 \t- SET EBANK TO E6\n\t\tTS\tEBANK\n\n\t\tCS\tFLAGWRD6\t# \tTEST FOR TVC\n\t\tMASK\tOCT60000\n\t\tEXTEND\n\t\tBZMF\t+8\n\n\t\tCAE\tDAPDATR1\t# \tTEST FOR CSM/LM\n\t\tMASK\tBIT14\n\t\tEXTEND\n\t\tBZMF\t+3\n\n\t\tTC\tPOSTJUMP\t# CSM/LM, SO PERFORM HB TO LB SWITCH-OVER\n\t\tCADR\tPRESWTCH\n\n+3\t\tTC\tALM/END\t\t# CSM, SO ALARM AND EXIT\n\n+8\t\tTC\tPOSTJUMP\t# SET UP RCS, ENTRY, OR SATURN-STICK DAP\n\t\tCADR\tDAPFIG\n# Page 252\n# CREMANU\tVERB 49\t\tDESCRIPTION\n#\tSTART AUTOMATIC ATTITUDE MANEUVER\n#\t1. REQUIRE PROGRAM 00 ACTIVE.\n#\t2. SET EXT VERB DISPLAY BUSY FLAG.\n#\t3. SCHEDULE R62DISP WITH PRIORITY 10.\n#\t4. RELEASE EXT VERB DISPLAY.\n\n#\tR62DISP\n#\t1. DISPLAY FLASHING V06,N22 (DECIMAL DISPLAY NEW ICDU ANGLES).  UPON IMMEDIATE RETURN, SET-UP GROUP\n#\t   4 FOR RESTART OF DISPLAY SEQUENCE.\n#\t   RESPONSES\n#\t   A. TERMINATE\n#\t      1. GO TO GOTOPOOH.\n#\t   B. PROCEED\n#\t      1. SET 3AXISFLG TO INDICATE MANEUVER IS SPECIFIED BY 3 AXIS.\n#\t      2. EXECUTE R60CSM (ATTITUDE MANEUVER).\n#\t      3. ZERO GROUP 4 (END R62).\n#\t   C. ENTER\n#\t      1. REPEAT FLASHING V06,N22.\n\nCREWMANU\tTC\tCHKPOOH\t\t# DEMAND P00\n\n\t\tTC\tTESTXACT\n\n\t\tCAF\tPRIO10\n\t\tTC\tFINDVAC\n\t\tEBANK=\tCPHI\n\t\t2CADR\tR62DISP\n\n\t\tTC\tENDOFJOB\n\n# Page 253\n# DAPDISP\tVERB 48\t\tDESCRIPTION\n#\tLOAD AUTOPILOT DATA (ROUTINE R03)\n#\t0. CHECKFAIL AND RETURN IF TVC.\n#\t1. REQUIRE EXT VERB DISPLAY AVAILABLE AND SET BUSY FLAG.\n#\t2. LOWER PRIORITY TO 10.\n#\t3. DISPLAY FLASHING V04,N46 (DISPLAY AUTOPILOT CONFIGURATION)\n#\t4. UPON PROCEED RESPONSE, EXECUTE S41.2.\n#\t5. DISPLAY FLASHING V06,N47 (DISPLAY CSM WGT.. LEM WGT.)\n#\t6. UPON PROCEED RESPONSE EXECUTE S40.14.\n#\t7. DISPLAY FLASHING V06,N48 (DISPLAY PITCH TRIM, YAW TRIM)\n#\t8. UPON PROCEED RESPONSE, RELEASE EXTENDED VERB DESPLAY SYSTEM\n\t\tCOUNT*\t$$/EXTVB\n\nDAPDISP\t\tCS\tFLAGWRD6\n\t\tMASK\tOCT60000\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# TVC = 10, CS YIELDS 01, BZMF TO CONTINUE\n\t\tTC\tALM/END\t\t# RETURN IF TVC\n\n\t\tTC\tTESTXACT\n\t\tTC\tBANKCALL\n\t\tCADR\tDAPDISP1\n\t\tBANK\t42\n\t\tSETLOC\tEXTVBS\n\t\tBANK\n\t\tCOUNT\t24/R03\n\nDAPDISP1\tCAF\tEBANK6\n\t\tTS\tEBANK\n\n\t\tCAF\tPRIO10\n\t\tTC\tPRIOCHNG\n\nDONOUN46\tCAF\tV04N46\t\t#\t  R1\t\t  R2\n\t\tTC\tBANKCALL\t#\tDAPDATR1\tDAPDATR2\n\t\tCADR\tGOXDSPF\t\t# GOXDSP ROUTINES USED FOR EXTENDED VERBS.\n\n\t\tTC\tENDEXT\t\t# EXT. VBS GO TO ENDEXT, NOT ENDOFJOB.\n\t\tTC\t+2\n\t\tTC\tDONOUN46\n\n\t\tCA\tDAPDATR1\n\t\tMASK\tBIT4\n\t\tCCS\tA\n\t\tTCF\tMAXIN\n\t\tTC\tDOWNFLAG\n\t\tADRES\tMAXDBFLG\nMAXOUT\t\tTC\tBANKCALL\n\t\tCADR\tS41.2\n\nDONOUN47\tCAF\tV06N47\t\t#\tR1\t\tR2\t\tR3\n# Page 254\n\t\tTC\tBANKCALL\t#\tCSM WGT.\tLEM WGT.\tBLANK\n\t\tCADR\tGOXDSPF\n\n\t\tTC\tENDEXT\n\t\tTC\t+2\n\t\tTC\tDONOUN47\n\t\tCAE\tDAPDATR1\t# DO MASS PROPERTIES CALCULATION ONLY IF\n\t\tMASK\tPRIO30\t\t# CONFIG = 1(CSM), 2(CSM/LM), 6(CSM/LMA)\n\t\tEXTEND\n\t\tBZF\tDONOUN48\t# SKIP IF 0, 4\n\t\tCOM\n\t\tMASK\tPRIO30\n\t\tEXTEND\n\t\tBZF\tDONOUN48\t# SKIP IF 3, 7\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tMASSPROP\t# UPDATE IXX, IAVG, IAVG/TLX\n\n\t\tRELINT\n\t\tTC\tBANKCALL\n\t\tCADR\tS40.14\t\t# COMPUTE RCS DAP STUFF\n\nDONOUN48\tCAF\tV0648\t\t#\t R1\t\t R2\t\t R3\n\t\tTC\tBANKCALL\t#\tPTRIM\t\tYTRIM\t\tBLANK\n\t\tCADR\tGOXDSPF\n\n\t\tTC\tENDEXT\n\t\tTC\tENDEXT\n\t\tTC\tDONOUN48\n\nMAXIN\t\tTC\tUPFLAG\n\t\tADRES\tMAXDBFLG\n\t\tTC\tMAXOUT\n\nV0648\t\tVN\t0648\nV06N47\t\tVN\t0647\nV04N46\t\tVN\t0446\n\t\tBANK\t43\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tCOUNT*\t$$/EXTVB\n\n# \tV82PERF\t\tVERB82\t\tDESCRIPTION\n#\t\tREQUEST ORBIT PARAMETERS DISPLAY (R30)\n# 1. IF AVERAGE G IS OFF:\n#\tFLASH DISPLAY V04N06.  R2 INDICATES WHICH SHIP'S STATE VECTOR IS\n#\tTO BE UPDATED.  INITIAL CHOICE IS THIS SHIP (R2=1).  ASTRONAUT\n#\tCAN CHANGE TO OTHER SHIP BY V22EXE, WHERE X NOT EQ 1.\n#\tSELECTED STATE VECTOR UPDATED BY THISPREC (OTHPREC).\n#\tCALLS SR30.1 (WHICH CALLS TFFCONMU + TFFRP/RA) TO CALCULATE\n# Page 255\n#\tRPER (PERIGEE RADIUS), RAP0 (APOGEE RADIUS), HPER (PERIGEE\n#\tHEIGHT ABOVE LAUNCH PAD OR LUNAR LANDING SITE), HAPO (APOGEE\n#\tHEIGHT AS ABOVE), TPER (TIME TO PERIGEE), TFF (TIME TO\n#\tINTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE).\n#\tFLASH MONITOR V16N44 (HAPO, HPER, TFF).  TFF IS -59M59S IF IT WAS\n#\tNOT COMPUTABLE, OTHERWISE IT INCREMENTS ONCE PER SECOND.\n#\tASTRONAUT HAS OPTION TO MONITOR TPER BY KEYING IN N 32 E.\n#\tDISPLAY IS IN HMS, IS NEGATIVE (AS WAS TFF), AND INCREMENTS\n#\tONCE PER SECOND ONLY IF TFF DISPLAY WAS -59M59S.\n#\n# 2. IF AVERAGE G IS ON:\n#\tCALLS SR30.1 APPROX EVERY TWO SECS.  STATE VECTOR IS ALWAYS\n#\tFOR THIS VEHICLE.  V82 DOES NOT DISTURB STATE VECTOR.  RESULTS\n#\tOF SR30.1 ARE RAPO, RPER, HAPO, HPER, TPER, TFF.\n#\tFLASH MONITOR V16N44 (HAPO, HPER, TFF).\n#\tIF MODE IS P11, THEN CALL DELRSPL SO ASTRONAUT CAN MONITOR\n#\tRESULTS BY N50E.  SPLASH COMPUTATION DONE ONCE PER TWO SECS.\n\n\n# ADDENDUM: HAPO AND HPER SHOULD BE CHANGED TO READ HAPOX AND HPERX IN THE\n#\t    ABOVE REMARKS.\nV82PERF\t\tTC\tTESTXACT\n\n\t\tCAF\tPRIO7\n\t\tTC\tPRIOCHNG\n\t\tTC\tPOSTJUMP\n\t\tCADR\tV82CALL\t\t# ***** V82CALL MUST NOT BE A FINDVAC JOB.\n\n\n# \tVB83PERF\tVERB 83\t\tDESCRIPTION\n#\t\tREQUEST RENDEZVOUS PARAMETER DISPLAY (R31)\n#\t\t1. SET EXT VERB DISPLAY BUSY FLAG.\n#\t\t2. SCHEDULE V83CALL WITH PRIORITY 10.\n#\t\t   A. DISPLAY\n#\t\t\tR1\tRANGE\n#\t\t\tR2\tRANGE RATE\n#\t\t\tR3\tTHETA\n\nV83PERF\t\tTC\tTESTXACT\n\t\tINHINT\n\t\tCS\tFLAGWRD9\t# SET R31 FLAG-BIT 4 FLAGWRD9\n\t\tMASK\tR31FLBIT\n\t\tADS\tFLAGWRD9\n\t\tCAF\tPRIO5\n\t\tTC\tNOVAC\n\t\tEBANK=\tSUBEXIT\n\t\t2CADR\tR31CALL\n\n\t\tTC\tENDOFJOB\n\n# Page 256\nV85PERF\t\tTC\tTESTXACT\n\t\tINHINT\n\t\tCS\tR31FLBIT\t# RESET R31 FLAG TO INDICATE R34\n\t\tMASK\tFLAGWRD9\n\t\tTS\tFLAGWRD9\n\t\tTC\tV83PERF\t+5\n# Page 257\n#\tGOTOR21\t\tVERB 57\n#\tGOTOR23-\tVERB 54\t\tDESCRIPTION\n# SET UP MARKING FOR R22(REND TRACK DATA PROC)\n# 1. SET EXT VERB DISPLAY BUSY FLAG\n# 2. IF REND (P20 RUNNING) + TRACK (TRACKING ALLOWED) FLAGS ARE SET,\n#    SCHEDULE R21 OR R23 WITH PRIORITY 16, OTHERWISE TURN ON ALARM 406\n# 3. RELEASE EXT VERB DISPLAY SYSTEM\nGOTOR21\t\tTC\tDOWNFLAG\t# CLEAR R23FLG\n\t\tADRES\tR23FLG\t\t# BIT 9 FLAG 1\n\t\tTC\t+3\nGOTOR23\t\tTC\tUPFLAG\t\t# SET R23FLG\n\t\tADRES\tR23FLG\t\t# BIT 9 FLAG 1\n\t\tTC\tTESTXACT\n\t\tCA\tFLAGWRD0\t# VB 57\tUNACCEPTABLE UNLESS BOTH\n\t\tMASK\tRNDVZBIT\t#\tRENDEZVOUS AND TRACK FLAGS ON\n\t\tEXTEND\n\t\tBZF\tR22ALARM\n\n\t\tCA\tFLAGWRD1\n\t\tMASK\tTRACKBIT\n\t\tEXTEND\n\t\tBZF\tR22ALARM\n\n\t\tCA\tFLAGWRD1\t# TEST R23FLG\n\t\tMASK\tR23BIT\n\t\tEXTEND\n\t\tBZF\tREGR21\t\t# R21\n\t\tCAF\tPRIO16\n\t\tTC\tNOVAC\n\t\tEBANK=\tMRKBUF1\n\t\t2CADR\tR23CSM\n\n\t\tTC\tENDOFJOB\nREGR21\t\tCAF\tPRIO16\n\t\tTC\tNOVAC\n\t\tEBANK=\tMRKBUF1\n\t\t2CADR\tR21CSM\n\n\t\tTC\tENDOFJOB\nR22ALARM\tTC\tALARM\t\t# VERB 57 WAS SELECTED AND NEITHER REND\n\t\tOCT\t00406\t\t#\tNOR TRACK FLAG WERE ON.\n\t\tTC\tENDEXT\n\n# Page 258\n# VERB 86\tDESCRIPTION\n#\tV86 IS TO R23 AS MARK REJECT IS TO R21\n#\tV86 IS THE MARK REJECT FOR R23(THE BACKUP MARKING ROUTINE)\n\t\tEBANK=\tMRKBUF1\nV86PERF\t\tCAF\tEBANK7\t\t# BACKUP MARK REJECT (R23)\n\t\tXCH\tEBANK\n\t\tCA\tNEGONE\n\t\tTS\tMRKBUF1\n\t\tTC\tGOPIN\n\n# Page 259\n# TRACKTRM\tVERB 56\t\tDESCRIPTION\n#\tTERMINATE TRACKING (P20)\n#\t1. KNOCK DOWN RENDEZVOUS, TRACK, AND UPDATE FLAGS.\n#\t2. REQUIRE P20 NOT RUNNING ALONE OR GO TO GOTOPOOH (REQUEST PROGRAM 00).\n#\t3. REQUIRE R22 RUNNING OR GO TO PINBRNCH.\n#\t4. IF INTEGRATION RUNNING, STALL UNTIL IT IS COMPLETED, THEN ZERO GROUPS 2 AND 3 TO KILL R21 + R22.\n#\t3. KNOCK DOWN RENDEZFOUS, R22, R21, TRACK, UPDATE, AND TARG1 FLAGS.\n#\t4. GO TO ENEMA (SOFTWARE RESTART).\n#\tREFERENCE\n#\t\tP20\tRENDEZVOUS\tNAVIGATION.\n#\t\tR21\tRENDEZVOUS\tTRACKING SIGHTING MARK.\n#\t\tR22\tRENDEZVOUS\tTRACKING DATA PROCESSING.\n\nTRACKTRM\tCA\tRNDVZBIT\t# IS REND FLAG ON\n\t\tMASK\tFLAGWRD0\n\t\tEXTEND\n\t\tBZF\tGOPIN\t\t# NO\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tRNDVZFLG\n\n\t\tCA\tTRACKBIT\t# IS TRACK FLAG ON\n\t\tMASK\tFLAGWRD1\n\t\tEXTEND\n\t\tBZF\tGOPIN\t\t# NO\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tTRACKFLG\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tUPDATFLG\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tIMUSE\n\n\t\tCAF\tEBANK6\n\t\tTS\tEBANK\n\n\t\tINHINT\n\t\tTC\tSTOPRATE\n\n\t\tCAF\tNEGONE\n\t\tTS\tOPTIND\n\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tINTSTALL\t# DONT INTERRUPT INTEGRATION\n\t\tEXIT\n\n\t\tTC\t2PHSCHNG\n# Page 260\n\t\tOCT\t2\t\t# KILL GROUP 2 TO HALT P20 ACTIVITY\n\t\tOCT\t1\t\t# ALSO KILL GROUP 1\n\nCLEANOUT \tINHINT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tENEMA\t\t# CAUSE RESTART\n\n# LEMVEC\tVERB 80\t\tDESCRIPTION\n#\tUPDATE LEM STATE VECTOR\n#\t\tRESET VEHUPFLG TO 0\n\nLEMVEC\t\tTC\tDOWNFLAG\n\t\tADRES\tVEHUPFLG\t# VEHUPFLG DOWN INDICATES LEM\n\n\t\tTCF\tGOPIN\n\n# CSMVEC\tVERB 81\t\tDESCRIPTION\n#\tUPDATE CSM STATE VECTOR\n#\t\tSET VEHUPFLG TO 1\n\nCSMVEC\t\tTC\tUPFLAG\n\t\tADRES\tVEHUPFLG\t# VEHUPFLG UP INDICATES CM.\n\n\t\tTCF\tGOPIN\n\n# DNEDUMP\tVERB 74\t\tDESCRIPTION\n#\tINITIALIZE DOWN-TELEMETRY PROGRAM FOR ERASABLE MEMORY DUMP.\n#\t1. SET EXT VERB DISPLAY BUSY FLAG.\n#\t2. REPLACE CURRENT DOWNLIST WITH ERASABLE MEMORY.\n#\t3. RELEASE EXT VERB DISPLAY.\n\n\t\tEBANK=\t10\nDNEDUMP\t\tCAF\tLDNDUMPI\n\t\tTS\tDNTMGOTO\n\t\tTC\tGOPIN\n\nV74\t\tEQUALS\tDNEDUMP\nLDNDUMPI\tREMADR\tDNDUMPI\n\n# LFTFLGON\tVERB 75\t\tDESCRIPTION\n#\tSET LIFT-OFF FLAG\n#\t1. SETUP GGRBKFLG, GUIDANCE REFERENCE RELEASE BACK-UP FLAG.\n#\t2. RETURN VIA PINBRNCH\n\nLFTFLGON\tTC\tUPFLAG\t\t# VB 75 - SET LIFTOFF FLAG BIT\n\t\tADRES\tGRRBKFLG\t# BIT 5  FLAG 5\n\t\tTC\tGOPIN\n\n# Page 261\nCHKPOOH\t\tCA\tMODREG\n\t\tEXTEND\n\t\tBZF\tTCQ\n\t\tTCF\tALM/END\n\nEXDAPOFF\tEXTEND\n\t\tDCA\tIDLECADR\t# SET T5 TO IDLE.\n\t\tDXCH\tT5LOC\n\t\tCS\tOCT60000\n\t\tMASK\tFLAGWRD6\t# RESET DAPBITS 1 AND 2.\n\t\tTS\tFLAGWRD6\n\t\tTC\tQ\n\n\t\tEBANK=\tPACTOFF\nIDLECADR\t2CADR\tT5IDLOC\n\n# Page 262\n# VERB 89\tDESCRIPTION\tRENDEZVOUS FINAL ATTITUDE ROUTINE (R63)\n\n# CALLED BY VERB 89 ENTER DURING P00.  PRIO 10 IS USED.  CALCULATES AND\n# DISPLAYS FINAL GIMBAL ANGLES TO POINT CSM +X AXIS OR PREFERRED AXIS\n# (UNIT(Z)COS55 DEG + UNIT(X)SIN55 DEG) AT LM.\n\n# 1. KEY IN V 89 E ONLY IF IN PROG 00.  IF NOT IN P00, OPERATOR ERROR AND\n# EXIT R63, OTHERWISE CONTINUE.\n\n# 2. IF IN P00, DO IMU STATUS CHECK ROUTINE (R02BOTH).  IF IMU ON AND ITS\n# ORIENTATION KNOWN TO CGC, CONTINUE.\n\n# 3. FLASH DISPLAY V 04 N 06.  R2 INDICATES WHICH SPACECRAFT AXIS IS TO\n# BE POINTED AT LM.  INITIAL CHOICE IS PREFERRED AXIS.  (R2=1).\n# ASTRONAUT CAN CHANGE TO (+X) AXIS (R2 NOT= 1) BY V 22 E 2 E.  CONTINUE\n# AFTER KEYING IN PROCEED.\n\n# 4. SET PREFERRED ATTITUDE FLAG ACCORDING TO OPTION DESIRED.  SET FLAG\n# FOR PREFERRED AXIS.  RESET FLAG FOR X AXIS.\n\n# 5. CURRENT TIME IS STORED AND R63COMP IS CALLED\n\n#\tR63COMP JOB:\n\n#\t\tUPDATES CSM AND LM STATE VECTORS USING CONIC EQUATIONS\n\n#\t\tCALCULATES BOTH PREFERRED AND X AXIS TRACKING ATT FROM CSM TO LM.\n\n#\t\tDESIRED GIMBAL ANGLES AS INDICATED BY PREFERRED ATTITUDE FLAG\n#\t\tARE STORED FOR LATER R60CSM CALL.\n\n# 6. FLASH DISPLAY V 06 N18 AND AWAIT RESPONSE.\n\n# 7. RECYCLE- RETURN TO STEP 5.\n#    TERMINATE-  EXIT R63 ROUTINE\n#    PROCEED-  RESET 3AXISFLG AND CALL R60CSM FOR ATTITUDE MANEUVER.\n\nV89PERF\t\tTC\tCHKPOOH\t\t# DEMAND P00\n\t\tTC\tTESTXACT\n\t\tINHINT\n\t\tCAF\tPRIO10\n\t\tTC\tFINDVAC\n\t\tEBANK=\tP21TIME\n\t\t2CADR\tV89CALL\n\n\t\tTCF\tENDOFJOB\n\nWMATRXNG\tTC\tDOWNFLAG\t# RESET RENDWFLG\n\t\tADRES\tRENDWFLG\n# Page 263\n\n\t\tTC\tDOWNFLAG\t# RESET ORBWFLAG\n\t\tADRES\tORBWFLAG\n\t\tTC\tGOPIN\n\nGOSHOSUM\tEQUALS\tSHOWSUM\n\nSHOWSUM\t\tTC\tCHKPOOH\n\t\tTC\tTESTXACT\t# *\n\t\tCAF\tS+1\t\t# *\n\t\tTS\tSKEEP6\t\t# * SHOWSUM OPTION\n\t\tCAF\tS+ZERO\t\t# *\n\t\tTS\tSMODE\t\t# * TURN OFF SELF-CHECK\n\t\tCA\tSELFADRS\t# *\n\t\tTS\tSELFRET\t\t# *\n\t\tTC\tSTSHOSUM\t# * ENTER ROPECHK\n\nSDISPLAY\tLXCH\tSKEEP2\t\t# * BNK NO FOR DSP\n\t\tLXCH\tSKEEP3\t\t# * BUGGER WORD FOR DSP\nNOKILL\t\tCA\tADRS1\t\t# *\n\t\tTS\tMPAC\t+2\t# *\n\t\tCA\tVNCON\t\t# * 0501\n\t\tTC\tBANKCALL\t# *\n\t\tCADR\tGOXDSPF\t\t# *\n\t\tTC\t+3\t\t# *\n\t\tTC\tNXTBNK\t\t# *\n\t\tTC\tNOKILL\t\t# *\n\t\tCA\tSELFADRS\n\t\tTS\tSKEEP1\n\n\t\tTC\tENDEXT\t\t# *\n\nVNCON\t\tVN\t501\t\t# *\n\nENDSUMS\t\tCA\tSKEEP6\t\t# *\n\t\tEXTEND\t\t\t# *\n\t\tBZF\tSELFCHK\t\t# * ROPECHK, START SELFCHK AGAIN.\n\t\tTC\tSTSHOSUM\t# * START SHOWSUM AGAIN.\n\n\n# VB 76 SET PREFERRED ATTITUDE FLAG - DRIVE TO PREFERRED.\n\nSETPRFLG\tTC\tUPFLAG\n\t\tADRES\tPRFTRKAT\t# BIT 10 FLAG 5\n\t\tTC\tGOPIN\n\n\n# VB 77 RESET PREFERRED ATTITUDE FLAG - DRIVE TO +X-AXIS ATT.\n\nRESETPRF\tTC\tDOWNFLAG\n\t\tADRES\tPRFTRKAT\t# BIT 10 FLAG 5\n\t\tTC\tGOPIN\n\n# Page 264\n# VB 87 SET VHF RANGE FLAG - ALLOWS R22 TO ACCEPT RANGE DATA.\n\nSETVHFLG\tTC\tINTPRET\n\t\tSET\tEXIT\n\t\t\tVHFRFLAG\n\t\tTC\tGOPIN\n\n\n# VB 88 RESET VHF RANGE FLAG - STOPS ACCEPTANCE OF RANGE DATA.\n\nRESETVHF\tTC\tINTPRET\n\t\tCLEAR\tEXIT\n\t\t\tVHFRFLAG\n\t\tTC\tTRFAILOF\t# TRACKER FAIL LIGHT\n\n\t\tTC\tGOPIN\n\n\n# VERB 66. VEHICLES ARE ATTACHED.- MOVE THIS VEHICLE STATE VECTOR TO\n#\t   OTHER VEHICLE STATE VECTOR.\n\n# \tUSE SUBROUTINE GENTRAN.\n\n\t\tEBANK=\tRRECTHIS\nATTACHED\tCAF\tPRIO10\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRRECTHIS\n\t\t2CADR\tATTACHIT\n\n\t\tTC\tENDOFJOB\n\nATTACHIT\tTC\tINTPRET\n\t\tCALL\n\t\t\tINTSTALL\n\t\tSET\tBON\n\t\t\tMOONOTH\n\t\t\tMOONTHIS\n\t\t\t+3\n\t\tCLEAR\n\t\t\tMOONOTH\n\t\tEXIT\n\t\tCAF\tOCT51\n\t\tTC\tGENTRAN\n\t\tADRES\tRRECTHIS\t# OUR STATE VECTOR INTO OTHER VIA GENTRAN\n\t\tADRES\tRRECTOTH\n\nTACHEXIT\tRELINT\n\t\tTC\tINTPRET\n\t\tCALL\t\t\t# UPDATE RN, VN, R-OTHER, V-OTHER\n\t\t\tPTOACSM\n# Page 265\n\t\tLXA,2\tCALL\n\t\t\tPBODY\n\t\t\tSVDWN1\n\t\tCALL\n\t\t\tSVDWN2\n\t\tEXIT\n\n\t\tCAF\tTCPINAD\n\t\tINDEX\tFIXLOC\n\t\tTS\tQPRET\n\t\tTC\tPOSTJUMP\n\t\tCADR\tINTWAKE\n\nTCPIN\t\tRTB\n\t\t\tPINBRNCH\n\nOCT51\t\tOCT\t51\nTCPINAD\t\tCADR\tTCPIN\n\n# VERB 47 MOVE LM STATE VECTOR INTO CSM STATE VECTOR.\n\nLMTOCMSV\tCAF\tPRIO10\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRRECTHIS\n\t\t2CADR\tLMTOCM\n\n\t\tTC\tENDOFJOB\n\nLMTOCM\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tINTSTALL\n\t\tSET\tBON\n\t\t\tMOONTHIS\n\t\t\tMOONOTH\n\t\t\t+3\n\t\tCLEAR\n\t\t\tMOONTHIS\n\t\tEXIT\n\n\t\tCAF\tOCT51\n\t\tTC\tGENTRAN\n\t\tADRES\tRRECTOTH\t# LM STATE VECTOR INTO CM VIA GENTRAN\n\t\tADRES\tRRECTHIS\n\n\t\tTCF\tTACHEXIT\n\n# VERB 94 DO R64 VIA ENEMA TO PICK UP IN P23.\n\nVERB94\t\tCAF\tV94FLBIT\n\t\tMASK\tFLAGWRD9\t# IS V94FLAG SET\n# Page 266\n\t\tEXTEND\n\t\tBZF\tALM/END\t\t# NO - OPERATOR ERROR\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tV94FLAG\n\n\t\tTC\tCHECKMM\t\t# IS IT P23\n\t\tMM\t23\n\t\tTC\tALM/END\t\t# NO - OPERATOR ERROR\n\t\tTC\tPHASCHNG\n\t\tOCT\t112\t\t# SET GROUP 2 TO DO R64\n\n\t\tTC\tCLEANOUT\t# CAUSE RESTART\n\n# V90PERF\tVERB 90\t\tDESCRIPTION\n#\tREQUEST RENDEZVOUS OUT-OF-PLANE DISPLAY (R36)\n#\t1. SET EXT VERB DISPLAY BUSY FLAG.\n#\t2. SCHEDULE R36 CALL WITH PRIORITY 10\n#\t   A. DISPLAY\n#\t\tTIME OF EVENT - HOURS , MINUTES , SECONDS\n#\t\tY OUT-OF-PLANE POSITION - NAUTICAL MILES\n#\t\tYDOT \t OUT-OF-PLANE VELOCITY - FEET/SECOND\n#\t\tPSI \tANGLE BTW LINE OF SIGHT AND FORWARD\n#\t\t\tDIRECTION VECTOR IN HORIZONTAL PLANE - DEGREES\nV90PERF\t\tTC\tTESTXACT\n\t\tCAF\tPRIO7\t\t# R36,V90\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRPASS36\n\t\t2CADR\tR36\n\n\t\tTCF\tENDOFJOB\n# VERB 96 SET QUITFLAG TO STOP INTEGRATION.\n\nVERB96\t\tTC\tUPFLAG\t\t# QUITFLAG WILL CAUSE INTEGRATION TO EXIT\n\t\tADRES\tQUITFLAG\t# \tAT NEXT TIMESTEP\n\n\t\tTC\tUPFLAG\n\t\tADRES\tV96ONFLG\n\t\tCAF\tZERO\n\t\tTC\tPOSTJUMP\n\t\tCADR\tV37\t\t# GO TO P00\n\n\t\tEBANK=\tLANDMARK\nV52\t\tTC\tCHECKMM\t\t# IS P22 OPERATING\n\t\tMM\t22\n\t\tTC\tALM/END\t\t# NO\n\t\tCAF\tLANDBANK\n\t\tTS\tEBANK\n\n# Page 267\n\t\tCS\tPRIO7\t\t# YES\tSET BITS 12,11,10 OF LANDMARK =\n\t\tMASK\tLANDMARK\t#\tBITS 14,13,12 OF MARKSTAT AFTER\n\t\tTS\tLANDMARK\t#\tSUBT. THEM FROM 5 TO GET OFFSET\n\t\tCA\tMARKSTAT\t#\tMARK NO.\n\t\tTS\tSR\n\t\tCA\tSR\n\t\tCA\tSR\n\t\tMASK\tPRIO7\n\t\tCS\tA\n\t\tAD\tPRIO5\n\t\tADS\tLANDMARK\n\t\tTC\tGOPIN\nLANDBANK\tECADR\tLANDMARK\n#\n\n# VERB 67 ASTRONAUT DISPLAY OF W MATRIX\n\nV67\t\tTC\tTESTXACT\n\t\tCAF\tPRIO5\n\t\tTC\tFINDVAC\n\t\tEBANK=\tW\n\t\t2CADR\tV67CALL\n\n\t\tTC\tENDOFJOB\n# VB 44. SET SURFACE FLAG.\n\nSETSURF\t\tTC\tUPFLAG\n\t\tADRES\tSURFFLAG\n\t\tTCF\tGOPIN\n\n\n# VB 45. RESET SURFACE FLAG.\n\nRESTSRF\t\tTC\tDOWNFLAG\n\t\tADRES\tSURFFLAG\n\t\tTCF\tGOPIN\n"
  },
  {
    "path": "Comanche055/FIXED_FIXED_CONSTANT_POOL.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tFIXED_FIXED_CONSTANT_POOL.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1200-1204\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1200\n\t\tBLOCK\t02\n\n\t\tCOUNT\t02/FCONS\n\n# THE FOLLOWING TABLE OF 18 VALUES IS INDEXED.  DO NOT INSERT OR REMOVE ANY QUANTITIES.\n\nDPOSMAX\t\tOCT\t37777\t\t# MUST PRECEDE POSMAX\nPOSMAX\t\tOCT\t37777\n\nLIMITS\t\t=\tNEG1/2\n\nNEG1/2\t\tOCT\t-20000\t\t# USED BY SIN ROUTINE (MUST BE TWO\n\t\t\t\t\t# LOCATIONS IN FRONT OF BIT14)\n# BIT TABLE\n\nBIT15\t\tOCT\t40000\nBIT14\t\tOCT\t20000\nBIT13\t\tOCT\t10000\nBIT12\t\tOCT\t04000\nBIT11\t\tOCT\t02000\nBIT10\t\tOCT\t01000\nBIT9\t\tOCT\t00400\nBIT8\t\tOCT\t00200\nBIT7\t\tOCT\t00100\nBIT6\t\tOCT\t00040\nBIT5\t\tOCT\t00020\nBIT4\t\tOCT\t00010\nBIT3\t\tOCT\t00004\nBIT2\t\tOCT\t00002\nBIT1\t\tOCT\t00001\n\n\n# DO NOT DESTROY THIS COMBINATION, SINCE IT IS USED IN DOUBLE PRECISION INSTRUCTIONS.\nNEG0\t\tOCT\t-0\t\t# MUST PRECEDE ZERO\nZERO\t\tOCT\t0\t\t# MUST FOLLOW NEG0\n# BIT1\t\tOCT\t00001\n# NO.WDS\tOCT\t2\t\t# INTERPRETER\n# OCTAL3\tOCT\t3\t\t# INTERPRETER\n# R3D1\t\tOCT\t4\t\t# PINBALL\nFIVE\t\tOCT\t5\n# REVCNT\tOCT\t6\t\t# INTERPRETER\nSEVEN\t\tOCT\t7\n# BIT4\t\tOCT\t00010\n# R2D1\t\tOCT\t11\t\t# PINBALL\nOCT11\t\t=\tR2D1\t\t# P20S\n# BINCON\tDEC\t10\t\t# PINBALL\t\t(OCTAL 12)\nELEVEN\t\tDEC\t11\n# OCT14\t\tOCT\t14\t\t# ALARM AND ABORT (FILLER)\nOCT15\t\tOCT\t15\n# R1D1\t\tOCT\t16\t\t# PINBALL\n# Page 1201\nLOW4\t\tOCT\t17\n# BIT5\t\tOCT\t00020\n# ND1\t\tOCT\t21\t\t# PINBALL\n# VD1\t\tOCT\t23\t\t# PINBALL\n# OCT24\t\tOCT\t24\t\t# SERVICE ROUTINES\n# MD1\t\tOCT\t25\t\t# PINBALL\nBITS4&5\t\tOCT\t30\n# OCT31\t\tOCT\t31\t\t# SERVICE ROUTINES\nCALLCODE\tOCT\t00032\n# LOW5\t\tOCT\t37\t\t# PINBALL\n# 33DEC\t\tDEC\t33\t\t# PINBALL\t\t(OCTAL 41)\n# 34DEC\t\tDEC\t34\t\t# PINBALL\t\t(OCTAL 42)\nTBUILDFX\tDEC\t37\t\t# BUILDUP FOR CONVIENCE IN DAPTESTING\nTDECAYFX\tDEC\t38\t\t# CONVENIENCE FOR DAPTESTING\n# BIT6\t\tOCT\t00040\nOCT50\t\tOCT\t50\nDEC45\t\tDEC\t45\nSUPER011\tOCT\t60\t\t# BITS FOR SUPERBNK SETTING 011.\n.5SEC\t\tDEC\t50\n# BIT7\t\tOCT\t00100\n\nSUPER100\t=\tBIT7\t\t# BITS FOR SUPERBNK SETTING 100\n\t\t\t\t\t# (LAST 4K OF ROPE)\nSUPER101\tOCT\t120\t\t# BITS FOR SUPERBNK SETTING 101\n# OCT121\tOCT\t121\t\t# SERVICE ROUTINES\n\t\t\t\t\t# (FIRST 8K OF ACM)\nSUPER110\tOCT\t140\t\t# BITS FOR SUPERBNK SETTING 110.\n\t\t\t\t\t# (LAST 8K OF ACM)\n1SEC\t\tDEC\t100\n# LOW7\t\tOCT\t177\t\t# INTERPRETER\n# BIT8\t\tOCT\t00200\n# OT215\t\tOCT\t215\t\t# ALARM AND ABORT\n# 8,5\t\tOCT\t00220\t\t# P20-P25 SUNDANCE\n2SECS\t\tDEC\t200\n# LOW8\t\tOCT\t377\t\t# PINBALL\n# BIT9\t\tOCT\t00400\nGN/CCODE\tOCT\t00401\t\t# SET S/C CONTROL SWITCH TO G/N\n3SECS\t\tDEC\t300\n4SECS\t\tDEC\t400\nLOW9\t\tOCT\t777\n# BIT10\t\tOCT\t01000\n# 5.5DEGS\tDEC\t.03056\t\t# P20-P25 SUNDANCE \t(OCTAL 00765)\n# OCT1103\tOCT\t1103\t\t# ALARM AND ABORT\nC5/2\t\tDEC\t.0363551\t#\t\t   \t(OCTAL 01124)\nV05N09\t\tVN\t0509\t\t# (SAME AS OCTAL 1211)\nOCT1400\t\tOCT\t01400\nV06N22\t\tVN\t0622\n# MID5\t\tOCT\t1740\t\t# PINBALL\nBITS2-10\tOCT\t1776\nLOW10\t\tOCT\t1777\n# Page 1202\n# BIT11\t\tOCT\t02000\n# 2K+3\t\tOCT\t2003\t\t# PINBALL\nLOW7+2K\t\tOCT\t2177\t\t# OP CODE MASK + BANK 1 FBANK SETTING.\nEBANK5\t\tOCT\t02400\nPRIO3\t\tOCT\t03000\nEBANK7\t\tOCT\t03400\n# LOW11\t\tOCT\t3777\t\t# PINBALL\n# BIT12\t\tOCT\t04000\n# RELTAB\tOCT\t04025\t\t# T4RUPT\nPRIO5\t\tOCT\t05000\nPRIO6\t\tOCT\t06000\nPRIO7\t\tOCT\t07000\n\n# BIT13\t\tOCT\t10000\n#\t\tOCT\t10003\t\t# T4RUPT\tRELTAB +1D\n# 13,7,2\tOCT\t10102\t\t# P20-P25 SUNDANCE\nPRIO11\t\tOCT\t11000\n# PRIO12\tOCT\t12000\t\t# BANKCALL\nPRIO13\t\tOCT\t13000\nPRIO14\t\tOCT\t14000\n#\t\tOCT\t14031\t\t# T4RUPT\tRELTAB +2D\nPRIO15\t\tOCT\t15000\nPRIO16\t\tOCT\t16000\n# 85DEGS\tDEC\t.45556\t\t# P20-P25 SUNDANCE\t(OCTAL 16450)\nPRIO17\t\tOCT\t17000\nOCT17770\tOCT\t17770\n# BIT14\t\tOCT\t20000\n#\t\tOCT\t20033\t\t# T4RUPT\tRELTAB +3D\nPRIO21\t\tOCT\t21000\n\t\tBLOCK\t03\n\t\tCOUNT\t03/FCONS\n\nPRIO22\t\tOCT\t22000\t\t# SERVICE ROUTINES\nPRIO23\t\tOCT\t23000\nPRIO24\t\tOCT\t24000\n# 5/8+1\t\tOCT\t24001\t\t# SINGLE PRECISION SUBROUTINES\n#\t\tOCT\t24017\t\t# T4RUPT\tRELTAB +4D\nPRIO25\t\tOCT\t25000\nPRIO26\t\tOCT\t26000\nPRIO27\t\tOCT\t27000\n# CHRPRIO\tOCT\t30000\t\t# PINBALL\n#\t\tOCT\t30036\t\t# T4RUPT\tRELTAB +5D\nPRIO31\t\tOCT\t31000\nC1/2\t\tDEC\t.7853134\t#\t\t\t(OCTAL 31103)\nPRIO32\t\tOCT\t32000\nPRIO33\t\tOCT\t33000\nPRIO34\t\tOCT\t34000\n#\t\tOCT\t34034\t\t# T4RUPT\tRELTAB +6D\nPRIO35\t\tOCT\t35000\nPRIO36\t\tOCT\t36000\n# Page 1203\nPRIO37\t\tOCT\t37000\n63/64+1\t\tOCT\t37401\n# MID7\t\tOCT\t37600\t\t# PINBALL\nOCT37766\tOCT\t37766\nOCT37774\tOCT\t37774\nOCT37776\tOCT\t37776\n# DPOSMAX\tOCT\t37777\n# BIT15\t\tOCT\t40000\n# OCT40001\tOCT\t40001\t\t# INTERPRETER (CS 1 INSTRUCTION)\nDLOADCOD\tOCT\t40014\nDLOAD*\t\tOCT\t40015\n#\t\tOCT\t40023\t\t# T4RUPT\tRELTAB +7D\nBIT15+6\t\tOCT\t40040\nOCT40200\tOCT\t40200\n#\t\tOCT\t44035\t\t# T4RUPT\tRELTAB +8D\n#\t\tOCT\t50037\t\t# T4RUPT\tRELTAB +9D\n#\t\tOCT\t54000\t\t# T4RUPT\tRELTAB +10D\n-BIT14\t\tOCT\t57777\n# RELTAB11\tOCT\t60000\t\t# T4RUPT\nC3/2\t\tDEC\t-.3216147\t#\t\t\t(OCTAL 65552)\n13,14,15\tOCT\t70000\n-1/8\t\tOCT\t73777\nHIGH4\t\tOCT\t74000\n-ENDERAS\tDEC\t-2001\t\t#\t\t\t(OCTAL 74056)\n# HI5\t\tOCT\t76000\t\t# PINBALL\nHIGH9\t\tOCT\t77700\n# -ENDVAC\tDEC\t-45\t\t# INTERPRETER\t\t(OCTAL 77722)\n# -OCT10\tOCT\t-10\t\t#\t\t\t(OCT 77767)\n# NEG4\t\tDEC\t-4\t\t#\t\t\t(OCTAL 77773)\nNEG3\t\tDEC\t-3\nNEG2\t\tOCT\t77775\nNEGONE\t\tDEC\t-1\n\n# Page 1204\n\n# DEFINED BY EQUALS\n\n# IT WOULD BE TO THE USERS ADVANTAGE TO OCCASIONALLY CHECK ANY OF THESE SYMBOLS IN ORDER TO PREVENT ANY\n# ACCIDENTAL DEFINITION CHANGES.\n\nMINUS1\t\t=\tNEG1\nNEG1\t\t=\tNEGONE\nONE\t\t=\tBIT1\nTWO\t\t=\tBIT2\nTHREE\t\t=\tOCTAL3\nLOW2\t\t=\tTHREE\nFOUR\t\t=\tBIT3\nSIX\t\t=\tREVCNT\nLOW3\t\t=\tSEVEN\nEIGHT\t\t=\tBIT4\nNINE\t\t=\tR2D1\nTEN\t\t=\tBINCON\nNOUTCON\t\t=\tELEVEN\nOCT23\t\t=\tVD1\nOCT25\t\t=\tMD1\nPRIO1\t\t=\tBIT10\nEBANK3\t\t=\tOCT1400\nPRIO2\t\t=\tBIT11\nOCT120\t\t=\tSUPER101\nOCT140\t\t=\tSUPER110\n2K\t\t=\tBIT11\nEBANK4\t\t=\tBIT11\nPRIO4\t\t=\tBIT12\nEBANK6\t\t=\tPRIO3\nQUARTER\t\t=\tBIT13\nPRIO10\t\t=\tBIT13\nOCT10001\t=\tCCSL\nPOS1/2\t\t=\tHALF\nPRIO20\t\t=\tBIT14\nHALF\t\t=\tBIT14\nPRIO30\t\t=\tCHRPRIO\nBIT13-14\t=\tPRIO30\t\t# INTERPRETER USES IN PROCESSING STORECODE\nOCT30002\t=\tTLOAD +1\nB12T14\t\t=\tPRIO34\nNEGMAX\t\t=\tBIT15\nVLOADCOD\t=\tBIT15\nVLOAD*\t\t=\tOCT40001\nOCT60000\t=\tRELTAB11\nBANKMASK\t=\tHI5\n\n"
  },
  {
    "path": "Comanche055/FRESH_START_AND_RESTART.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tFRESH_START_AND_RESTART.agc\n# Purpose:\tPart of the source code for Comanche, build 055. It\n#\t\tis part of the source code for the Command Module's\n#\t\t(CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 181-210\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t2009-05-16 FB\tTranscription Batch 2 Assignment.\n#\t\t2009-05-20 RSB\tRemoved an extraneous \"TC STARTSUB\".\n#\t\t2009-05-21 RSB\tChanged a \"TC BANKCALL\" to \"TC STOPRATE\"\n#\t\t\t\tin INITSUB.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 181\n# PROGRAM DESCRIPTION\t\t\t\t\t\t8 APRIL, 1967\n#\t\t\t\t\t\t\t\tSUNDISK REV 120\n# FUNCTIONAL DESCRIPTION\n\n#     SLAP1\tMAN INITIATED FRESH START\n#\t1. EXECUTE STARTSUB\n#\t2. TURN OFF DSKY DISCRETE-LAMPS\n#\t3. CLEAR FAIL REGISTERS,SELF-CHECK ERROR COUNTER AND RESTART\n#\t   COUNTER\n#\t4. EXECUTE DOFSTART\n\n#     DOFSTART\tMACHINE INITIATED FRESH START\n\n#\t1. CLEAR SELF-CHECK REGISTERS, MODE REGISTER AND CDUZ REGISTER\n#\t2. CLEAR PHASE TABLE\n#\t3. INITIALIZE IMU FLAGS\n#\t4. INITIALIZE FLAGWORDS\n#\t5. TRANSFER CONTROL TO IDLE LOOP IN DUMMYJOB\n\n#     GOPROG\tHARDWARE RESTART\n\n#\t0. EXECUTE STARTSUB\n#\t1. TRANSFER CONTROL TO DOFSTART IF ANY OF THE FOLLOWING CONDITIONS\n#\t   EXIST.\n#\t   A. RESTART OCCURED DURING EXECUTION OF ERASCHK\n#\t   B. BOTH OSCILLATOR FAIL AND AGC WARNING ARE ON\n#\t   C. MARK REJECT AND EITHER NAV OR MAIN DSKY ERROR LIGHT RESET\n#\t      ARE ON.\n#\t2. SCHEDULE A T5RUPT PROGRAM FOR THE DAP\n#\t3. SET FLAGWRD5 BITS FOR INTWAKE ROUTINE\n#\t4. EXTINGUISH ALL DSKY LAMPS, EXCEPT FOR PROGRAM ALARM,GIMBAL LOCK AND\n#\t   NO ATT\n#\t5. INITIALIZE IMU FLAGS\n#\t6. IF ENGINE COMMAND IS ON (FLAGWRD5,BIT 7), SET ENGINE ON (CHAN-\n#\t   NEL 11, BIT 13)\n#\t7. TRANSFER CONTROL TO GOPROG3\n\n#     ENEMA\tSOFTWARE RESTART\tINITIATED BY MAJOR MODE CHANGE\n\n#\t1. EXECUTE STARTSB2\n#\t2. KILL PROGRAMS THAT WERE INTEGRATING OR WAITING FOR INTEGRATION\n#\t   ROUTINE\n#\t3. TRANSFER CONTROL TO GOPROG3\n\n#     GOPROG3\tSUBROUTINE COMMON TO GOPROG AND ENEMA\n\n#\t1. TEST PHASE TABLES - IF INCORRECT, DISPLAY ALARM 1107 AND\n#\t   TRANSFER CONTROL TO DOFSTART\n#\t2. DISPLAY MAJOR MODE\n#\t3. IF ANY GROUPS WERE ACTIVE UPON RESTART,TRANSFER CONTROL TO THE\n# Page 182\n#\t   RESTARTS SUBROUTINE TO RESCHEDULE PENDING TASKS, LONGCALLS, AND\n#\t   JOBS (P20 IS RESTARTED VIA FINDVAC)\n#\t4. IF NO GROUPS WERE ACTIVE UPON RESTART, DISPLAY ALARM CODE\n#\t   1110 (RESTART WITH NO ACTIVE GROUPS).\n#\t5. TRANSFER CONTROL TO IDLE LOOP IN DUMMYJOB\n\n#     STARTSUB\tSUBROUTINE COMMON TO SLAP1 AND GOPROG\n\n#\t1. CLEAR OUTBIT CHANNELS 5 AND 6\n#\t2. INITIALIZE TIME5,TIME4,TIME3\n#\t3. TRANSFER CONTROL TO STARTSB2\n\n#     STARTSB2\tSUBROUTINE COMMON TO STARTSUB AND ENEMA\n\n#\t1. INTIALIZE OUTBIT CHANNELS 11,12,13, AND 14\n#\t2. REPLACE ALL TASKS ON WAITLIST WITH ENDTASK\n#\t3. MAKE ALL EXECUTIVE REGISTERS AVAILABLE\n#\t4. MAKE ALL VAC AREAS AVAILABLE\n#\t5. CLEAR DSKY REGISTERS\n#\t6. ZERO NUMEROUS SWITCHES\n#\t7. INITIALIZE OPTICS FLAGS\n#\t8. INITIALIZE PIPA AND TELEMETRY FAIL FLAGS\n#\t9. INITIALIZE DOWN TELEMETRY\n\n\n# INPUT/OUTPUT INITIALIZATION\n\n#\tA. CALLING SEQUENCE\n\n#\t\tSLAP1 -\tTC\tPOSTJUMP\tOR\tVERB 36,ENTER\n#\t\t\tCADR \tSLAP1\n\n#\t\tENEMA -\tTC \tPOSTJUMP\t*** DO NOT CALL ENEMA WITHOUT ***\n#\t\t\tCADR \tENEMA\t\t*** CONSULTING POOH PEOPLE   ***\n\n#\tB. OUTPUT\n\n#\t\tERASABLE MEMORY INITIALIZATION\n\n# PROGRAM ANALYSIS\n\n#\tA. SUBROUTINES CALLED\n\n#\t\tMR.KLEAN,WAITLIST,DSPMM,ALARM,RESTARTS,FINDVAC\n\n#\tB. ALARMS\n\n#\t\t1107 PHASE TABLE ERROR\n#\t\t1110 RESTART WITH NO ACTIVE GROUPS\n\n# Page 183\n\t\tBANK\t10\n\t\tSETLOC\tFRANDRES\n\t\tBANK\n\n\t\tEBANK=\tLST1\n\n\t\tCOUNT\t05/START\n\nSLAP1\t\tINHINT\t\t\t# FRESH START.  COMES HERE FROM PINBALL.\n\t\tTC\tSTARTSUB\t# SUBROUTINE DOES MOST OF THE WORK.\n\nSTARTSW\t\tTCF\tSKIPSIM\t\t# PATCH....TCF STARTSIM...FOR SIMULATION\nSTARTSIM\tCAF\tBIT14\n\t\tTC\tFINDVAC\nSIM2CADR\tOCT\t77777\t\t# PATCH 2CADR (AND EBANK DESIGNATION) OF\n\t\tOCT\t77777\t\t# SIMULATION START ADDRESS.\n\nSKIPSIM\t\tCA\tDSPTAB +11D\n\t\tMASK\tBITS4&6\n\t\tAD\tBIT15\n\t\tTS\tDSPTAB +11D\t# REQUESTED FRESH START.\n\n\t\tCA\tZERO\t\t# SAME STORY ON ZEROING FAILREG.\n\t\tTS\tERCOUNT\n\t\tTS\tFAILREG\n\t\tTS\tFAILREG +1\n\t\tTS\tFAILREG +2\n\t\tTS\tREDOCTR\n\n\t\tCS\tPRIO12\n\t\tTS\tDSRUPTSW\n\nDOFSTART\tCAF\tZERO\t\t# DO A FRESH START.\n\t\tTS\tERESTORE\t# ***** MUST NOT BE REMOVED FROM DOFSTART\n\t\tTS\tSMODE\t\t# ***** MUST NOT BE REMOVED FROM DOFSTART\n\t\tTS\tUPSVFLAG\t# UPDATE STATE VECTOR REQUEST FLAGWORD\n\t\tEXTEND\n\t\tWRITE\tCHAN5\t\t# TURN OFF RCS JETS\n\t\tEXTEND\n\t\tWRITE\tCHAN6\t\t# TURN OFF RCS JETS\n\t\tEXTEND\n\t\tWRITE\tDSALMOUT\t# ZERO CHANNEL 11\n\t\tEXTEND\n\t\tWRITE\tCHAN12\t\t# ZERO CHANNEL 12\n\t\tEXTEND\n\t\tWRITE\tCHAN13\t\t# ZERO CHANNEL 13\n\t\tEXTEND\n\t\tWRITE\tCHAN14\t\t# ZERO CHANNEL 14\n\t\tTS\tWTOPTION\n\t\tTS\tDNLSTCOD\n# Page 184\n\t\tTS\tNVSAVE\n\t\tTS\tEBANKTEM\n\t\tTS\tRATEINDX\n\t\tTS\tTRKMKCNT\n\t\tTS\tVHFCNT\n\t\tTS\tEXTVBACT\n\n\t\tCS\tDSPTAB +11D\n\t\tMASK\tBITS4&6\n\t\tCCS\tA\n\t\tTC\t+4\n\t\tCA\tBITS4&6\n\t\tEXTEND\t\t\t# THE IMU WAS IN COARSE ALIGN IN GIMBAL\n\t\tWOR\tCHAN12\t\t# LOCK, SO PUT IT BACK INTO COARSE ALIGN.\n\t\tTC\tMR.KLEAN\n\n\t\tCS\tZERO\n\t\tTS\tMODREG\n\n\t\tCAF\tPRIO30\n\t\tTS\tRESTREG\n\n\t\tCAF\tIM30INIF\t# FRESH START IMU INITIALIZATION.\n\t\tTS\tIMODES30\n\n\t\tCAF\tNEGONE\n\t\tTS\tOPTIND\t\t# KILL COARSE OPTICS\n\n\t\tCAF\tOPTINITF\n\t\tTS\tOPTMODES\n\n\t\tCAF\tIM33INIT\n\t\tTS\tIMODES33\n\n\t\tEXTEND\t\t\t# LET T5 IDLE.\n\t\tDCA\tT5IDLER\n\t\tDXCH\tT5LOC\n\n\t\tCA\tSWINIT\n\t\tTS\tSTATE\n\n\t\tCA\tFLAGWRD1\n\t\tMASK\tNOP01BIT\t# LEAVE NODOP01 FLAG UNTOUCHED\n\t\tAD\tSWINIT +1\n\t\tTS\tFLAGWRD1\n\n\t\tCA \tSWINIT +2\n\t\tTS\tSTATE +2\n\n\t\tCA\tFLAGWRD3\n# Page 185\n\t\tMASK\tBIT13\t\t# REFSMMAT FLAG\n\t\tAD\tSWINIT +3\n\t\tTS\tFLAGWRD3\n\n\t\tEXTEND\n\t\tDCA\tSWINIT +4\n\t\tDXCH\tSTATE +4\n\t\tEXTEND\n\t\tDCA\tSWINIT +6\n\t\tDXCH\tSTATE +6\n\t\tCA\tFLAGWRD8\n\t\tMASK\tOCT6200\t\t# CMOONFLG, LMOONFLG, AND SUFFLAG\n\t\tAD\tSWINIT\t+8D\n\t\tTS\tFLAGWRD8\n\n\t\tCA\tSWINIT +9D\n\t\tTS\tSTATE +9D\n\n\t\tEXTEND\n\t\tDCA\tSWINIT +10D\n\t\tDXCH\tSTATE +10D\n\nENDRSTRT\tTC\tPOSTJUMP\n\t\tCADR\tDUMMYJOB +2\t# DOES A RELINT.  (IN A SWITCHED BANK.)\n\nMR.KLEAN\tINHINT\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE2\nP00KLEAN\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE4\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE1\nV37KLEAN\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE3\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE5\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE6\n\t\tTC\tQ\n\nOCT6200\tOCT\t6200\n\n# Page 186\n# COMES HERE FROM LOCATION 4000, GOJAM, RESTART ANY PROGRAMS WHICH MAY HAVE BEEN RUNNING AT THE TIME.\n\nGOPROG\t\tINCR\tREDOCTR\t\t# ADVANCE RESTART COUNTER.\n\n\t\tLXCH\tQ\n\t\tEXTEND\n\t\tROR\tSUPERBNK\n\t\tDXCH\tRSBBQ\n\t\tTC\tBANKCALL\t# STORE ERASABLES FOR DEBUGGING PURPOSES.\n\t\tCADR\tVAC5STOR\n\t\tCA\tBIT15\t\t# TEST OSC FAIL BIT TO SEE IF WE HAVE\n\t\tEXTEND\t\t\t# HAD A POWER TRANSIENT.  IF SO, ATTEMPT\n\t\tWAND\tCHAN33\t\t# A RESTART.  IF NOT, CHECK THE PRESENT\n\t\tEXTEND\t\t\t# STATE OF AGC WARNING BIT.\n\t\tBZF\tBUTTONS\n\n\t\tCA\tBIT14\t\t# IF AGC WARNING ON (BIT = 0), DO A\n\t\tEXTEND\t\t\t# FRESH START ON THE ASSUMPTION THAT\n\t\tRAND\tCHAN33\t\t# WE ARE IN A RESTART LOOP.\n\t\tEXTEND\n\t\tBZF\tNONAVKEY +1\n\nBUTTONS\t\tTC\tLIGHTSET\t# MAKE FRESH START CHECKS BEFORE ERESTORE.\n\n# ERASCHK TEMPORARILY STORES THE CONTENTS OF TWO ERASABLE LOCATIONS, X\n# AND X+1 INTO SKEEP5 AND SKEEP6.  IT ALSO STORES X INTO SKEEP7 AND\n# ERESTORE.  IF ERASCHK IS INTERRUPTED BY A RESTART, C(ERESTORE) SHOULD\n# EQUAL C(SKEEP7),AND SHOULD BE A + NUMBER LESS THAN 2000 OCT.  OTHERWISE\n# C(ERESTORE) SHOULD EQUAL +0.\n\n\t\tCAF\tHI5\n\t\tMASK\tERESTORE\n\t\tEXTEND\n\t\tBZF\t+2\t\t# IF ERESTORE NOT = +0 OR +N LESS THAN 2K,\n\t\tTCF\tNONAVKEY +1\t# DOUBT E MEMORY AND DO A FRESH START.\n\t\tCS\tERESTORE\n\t\tEXTEND\n\t\tBZF\tELRSKIP -1\n\t\tAD\tSKEEP7\n\t\tEXTEND\n\t\tBZF\t+2\t\t# = SKEEP7, RESTORE E MEMORY.\n\t\tTCF\tNONAVKEY +1\t# NOT=SKEEP7, DOUBT EMEM, DO FRESH START\n\t\tCA\tSKEEP4\n\t\tTS\tEBANK\t\t# EBANK OF E MEMORY THAT WAS UNDER TEST.\n\t\tEXTEND\t\t\t# (NOT DXCH SINCE THIS MIGHT HAPPEN AGAIN)\n\t\tDCA\tSKEEP5\n\t\tINDEX\tSKEEP7\n\t\tDXCH\t0000\t\t# E MEMORY RESTORED.\n\t\tCA\tZERO\n\t\tTS\tERESTORE\n# Page 187\n\t\tTC\tSTARTSUB\t# DO INITIALIZATION AFTER ERASE RESTORE.\nELRSKIP\t\tCA\tFLAGWRD6\t# RESTART AUTOPILOTS\n\t\tEXTEND\n\t\tMP\tBIT3\t\t# BITS 15,14\t00 T5IDLOC\n\t\tMASK\tSIX\t\t#\t\t01 REDORCS\n\t\tEXTEND\t\t\t#\t\t10 REDOTVC\n\t\tINDEX\tA\t\t#\t\t11 REDOSAT\n\t\tDCA\tT5IDLER\n\t\tDXCH\tT5LOC\n\n\t\tCS\tINTFLBIT\n\t\tMASK\tRASFLAG\n\t\tTS\tRASFLAG\n\n\t\tCA\tOPTMODES\n\t\tMASK\tOPTINITR\n\t\tAD\tBIT7\n\t\tTS\tOPTMODES\n\n\t\tCAF\tBIT6\n\t\tMASK\tIMODES33\n\t\tAD\tIM33INIT\n\t\tTS\tIMODES33\n\n\t\tCA\t9,6,4\t\t# LEAVE PROG ALARM,GIMBAL LOCK, NO ATT\n\t\tMASK\tDSPTAB +11D\t# LAMPS INTACT ON HARDWARE RESTART\n\t\tAD\tBIT15\n\t\tXCH\tDSPTAB +11D\n\t\tMASK\tBIT4\t\t# IF NO ATT LAMP WAS ON, LEAVE ISS IN\n\t\tEXTEND\t\t\t# COURSE ALIGN\n\t\tBZF\tNOCOARSE\n\t\tTC\tIBNKCALL\t# IF NO ATT LAMP ON, RETURN ISS TO\n\t\tCADR\tSETCOARS\t#\tCOARSE ALIGN.\n\n\t\tCAF\tSIX\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tCA+ECE\n\nNOCOARSE\tCAF\tIFAILINH\t# LEAVE FAILURE INHIBITS INTACT ON\n\t\tMASK\tIMODES30\t#\tHARDWARE RESTART.  RESET ALL\n\t\tAD\tIM30INIR\t#\tFAILURE CODES.\n\t\tTS\tIMODES30\n\n\t\tCS\tFLAGWRD5\n\t\tMASK\tENGONBIT\n\t\tCCS\tA\n\t\tTCF\tGOPROG3\n\t\tCAF\tBIT13\n\t\tEXTEND\n# Page 188\n\t\tWOR\tDSALMOUT\t# TURN ENGINE ON\n\t\tTCF\tGOPROG3\n\nENEMA\t\tINHINT\n\t\tTC\tLIGHTSET\t# EXIT TO DOFSTART IF ERROR RESET AND\n\t\tTC\tSTARTSB2\t# MARK REJECT DEPRESSED SIMULTANEOUSLY\n\t\tCS\tINTMASK\t\t# RESET INTEGRATION BITS\n\t\tMASK\tRASFLAG\n\t\tTS\tRASFLAG\n\n\t\tCS\tFLAGWRD6\t# IS TVC ON\n\t\tMASK\tOCT60000\n\t\tEXTEND\n\t\tBZMF\tGOPROG3\t\t# NO\n\n\t\tCAF\t.5SEC\t\t# YES, CALL TVCEXEC TASK WHICH WAS KILLED\n\t\tTC\tWAITLIST\t# \tIN STARTSB2.\n\t\tEBANK=\tBZERO\n\t\t2CADR\tTVCEXEC\n\nGOPROG3\t\tCAF\tNUMGRPS\t\t# VERIFY PHASE TABLE AGREEMENTS\nPCLOOP\t\tTS\tMPAC +5\n\t\tDOUBLE\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\t-PHASE1\t\t# COMPLEMENT INTO A, DIRECT INTO L.\n\t\tEXTEND\n\t\tRXOR\tLCHAN\t\t# RESULT MUST BE -0 FOR AGREEMENT.\n\t\tCCS\tA\n\t\tTCF\tPTBAD\t\t# RESTART FAILURE.\n\t\tTCF\tPTBAD\n\t\tTCF\tPTBAD\n\n\t\tCCS\tMPAC +5\t\t# PROCESS ALL RESTART GROUPS.\n\t\tTCF\tPCLOOP\n\n\t\tTS\tMPAC +6\t\t# SET TO +0.\n\t\tTC\tMMDSPLAY\t# DISPLAY MAJOR MODE\n\n\t\tINHINT\t\t\t# RELINT DONE IN MMDSPLAY\n\n\t\tCAE\tFLAGWRD6\t# IS RCS DAP RUNNING (BITS 15 14 OF\n\t\tMASK\tOCT60000\t# FLAGWORD6 = 01)\n\t\tEXTEND\t\t\t# YES, DO STOPRATE\n\t\tBZMF\tNXTRST -1\t# NO, SKIP TO NXTRST -1\n\t\tCAF\tEBANK6\t\t# STOPRATE IS DONE IN EBANK 6\n\t\tTS\tEBANK\n\t\tTC\tSTOPRATE\t# ZERO DELCDUS, WBODYS, AND BIASES THUS\n\t\t\t\t\t# STOPPING AUTOMATIC MANEUVERING\n\n\t\tCAF\tEBANK3\n\t\tTS\tEBANK\n# Page 189\n\t\tCAF\tNUMGRPS\t\t# SEE IF ANY GROUPS RUNNING.\nNXTRST\t\tTS\tMPAC +5\n\t\tDOUBLE\n\t\tINDEX\tA\n\t\tCCS\tPHASE1\n\t\tTCF\tPACTIVE\t\t# PNZ - GROUP ACTIVE.\n\t\tTCF\tPINACT\t\t# +0 - GROUP NOT RUNNING.\n\nPACTIVE\t\tTS\tMPAC\n\t\tINCR\tMPAC\t\t# ABS OF PHASE.\n\t\tINCR\tMPAC +6\t\t# INDICATE GROUP DEMANDS PRESENT.\n\t\tCA\tRACTCADR\n\t\tTC\tSWCALL\t\t# MUST RETURN TO SWRETURN.\n\nPINACT\t\tCCS\tMPAC +5\t\t# PROCESS ALL RESTART GROUPS.\n\t\tTCF\tNXTRST\n\n\t\tCCS\tMPAC +6\t\t# NO, CHECK PHASE ACTIVITY FLAG\n\t\tTCF\tENDRSTRT\t# PHASE ACTIVE\n\t\tCAF\tBIT15\t\t# IS MODE -0\n\t\tMASK\tMODREG\n\t\tEXTEND\n\t\tBZF\tGOTOPOOH\t# NO\n\t\tTCF\tENDRSTRT\t# YES\nPTBAD\t\tTC\tALARM\t\t# SET ALARM TO SHOW PHASE TABLE FAILURE.\n\t\tOCT\t1107\n\n\t\tTCF\tDOFSTART\t# IN R2).\n\n# ******** ****** ******\n#\n# DO NOT USE GOPROG2 OR ENEMA WITHOUT CONSULTING POOH PEOPLE\n#\nGOPROG2\t\tEQUALS\tENEMA\nOCT10000\t=\tBIT13\nOCT30000\t=\tPRIO30\nOCT7777\t\tOCT\t7777\nRACTCADR\tCADR\tRESTARTS\n\nLIGHTSET\tCAF\tBIT7\t\t# DOFSTART IF MARK REJECT AND EITHER\n\t\tEXTEND\t\t\t# ERROR LIGHT RESET BUTTONS ARE DEPRESSED\n\t\tRAND\tNAVKEYIN\n\t\tEXTEND\n\t\tBZF\tNONAVKEY\t# NO MARK REJECT\n\t\tCAF\tOCT37\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\t# NAV DSKY KEYCODES,MARK,MARK REJECT\n\t\tAD\t-ELR\n\t\tEXTEND\n\t\tBZF\tNONAVKEY +1\n\t\tEXTEND\n# Page 190\n\t\tREAD\tMNKEYIN\t\t# MAIN DSKY KEYCODES\n\t\tAD\t-ELR\n\t\tEXTEND\n\t\tBZF\t+2\n\nNONAVKEY\tTC\tQ\n\n\t\tTC\tSTARTSUB\n\t\tTCF\tDOFSTART\nSTARTSUB\tCAF\tLDNPHAS1\t# SET POINTER SO NEXT 20MS DOWNRUPT WILL\n\t\tTS\tDNTMGOTO\t# CAUSE THE CURRENT DOWNLIST TO BE\n\t\t\t\t\t# INTERRUPTED AND START SENDING FROM THE\n\t\t\t\t\t# BEGINNING OF THE CURRENT DOWNLIST.\n\t\tCAF\tPOSMAX\n\t\tTS\tTIME3\t\t# 37777 TO TIME3.\n\t\tAD\tMINUS2\n\t\tTS\tTIME4\t\t# 37775 TO TIME4.\n\t\tAD\tNEGONE\n\t\tTS\tTIME5\t\t# 37774 TO TIME5.\n\nSTARTSB2\tCAF\tOCT77603\t# TURN OFF UPLINK ACTY, TEMP CAUTION, KR,\n\t\tEXTEND\t\t\t# FLASH, OP. ERROR, LEAVE OTHERS UNCHANGED\n\t\tWAND\tDSALMOUT\n\n\t\tCAF\tOCT74777\t# TURN OFF TEST ALARMS, STANDBY ENABLE.\n\t\tEXTEND\n\t\tWAND\tCHAN13\n\t\tCS\tPRIO25\t\t# CLEAR R21MARK, P21FLAG, AND SKIPVHF BIT.\n\t\tMASK\tFLAGWRD2\n\t\tAD\tSKIPVBIT\t# NOW SET SKIPVHF FLAG.\n\t\tTS\tFLAGWRD2\n\t\tEBANK=\tLST1\n\t\tCAF\tSTARTEB\n\t\tTS\tEBANK\t\t# SET FOR E3\n\n\t\tCAF\tNEG1/2\t\t# INITIALIZE WAITLIST DELTA-TS.\n\t\tTS\tLST1 +7\n\t\tTS\tLST1 +6\n\t\tTS\tLST1 +5\n\t\tTS\tLST1 +4\n\t\tTS\tLST1 +3\n\t\tTS\tLST1 +2\n\t\tTS\tLST1 +1\n\t\tTS\tLST1\n\n\t\tCS\tENDTASK\n\t\tTS\tLST2\n\t\tTS\tLST2 +2\n\t\tTS\tLST2 +4\n# Page 191\n\t\tTS\tLST2 +6\n\t\tTS\tLST2 +8D\n\t\tTS\tLST2 +10D\n\t\tTS\tLST2 +12D\n\t\tTS\tLST2 +14D\n\t\tTS\tLST2 +16D\n\t\tCS\tENDTASK +1\n\t\tTS\tLST2 +1\n\t\tTS\tLST2 +3\n\t\tTS\tLST2 +5\n\t\tTS\tLST2 +7\n\t\tTS\tLST2 +9D\n\t\tTS\tLST2 +11D\n\t\tTS\tLST2 +13D\n\t\tTS\tLST2 +15D\n\t\tTS\tLST2 +17D\n\n\t\tCS\tZERO\t\t# MAKE ALL EXECUTIVE REGISTER SETS\n\t\tTS\tPRIORITY\t# AVAILABLE.\n\t\tTS\tPRIORITY +12D\n\t\tTS\tPRIORITY +24D\n\t\tTS\tPRIORITY +36D\n\t\tTS\tPRIORITY +48D\n\t\tTS\tPRIORITY +60D\n\t\tTS\tPRIORITY +72D\n\n\t\tTS\tDSRUPTSW\n\t\tTS\tNEWJOB\t\t# SHOWS NO ACTIVE JOBS.\n\n\t\tCAF\tVAC1ADRC\t# MAKE ALL VAC AREAS AVAILABLE.\n\t\tTS\tVAC1USE\n\t\tAD\tLTHVACA\n\t\tTS\tVAC2USE\n\t\tAD\tLTHVACA\n\t\tTS\tVAC3USE\n\t\tAD\tLTHVACA\n\t\tTS\tVAC4USE\n\t\tAD\tLTHVACA\n\t\tTS\tVAC5USE\n\n\t\tCAF\tTEN\t\t# BLANK DSKY REGISTERS (PROGRAM,VERB,NOUN,\n\t\t\t\t\t# R1,R2,R3)\nDSPOFF\t\tTS\tMPAC\n\t\tCS\tBIT12\n\t\tINDEX\tMPAC\n\t\tTS\tDSPTAB\n\t\tCCS\tMPAC\n\t\tTCF\tDSPOFF\n\n\t\tTS\tDELAYLOC\n# Page 192\n\t\tTS\tDELAYLOC +1\n\t\tTS\tDELAYLOC +2\n\t\tTS\tDELAYLOC +3\n\t\tTS\tR1SAVE\n\t\tTS\tINLINK\n\t\tTS\tDSPCNT\n\t\tTS\tCADRSTOR\n\t\tTS\tREQRET\n\t\tTS\tCLPASS\n\t\tTS\tDSPLOCK\n\t\tTS\tMONSAVE\t\t# KILL MONITOR\n\t\tTS\tMONSAVE1\n\t\tTS\tVERBREG\n\t\tTS\tNOUNREG\n\t\tTS\tDSPLIST\n\t\tTS\tMARKSTAT\n\t\tTS\tIMUCADR\n\t\tTS\tOPTCADR\n\t\tTS\tRADCADR\n\t\tTS\tATTCADR\n\t\tTS\tLGYRO\n\t\tTS\tFLAGWRD4\t# KILL INTERFACE DISPLAYS\n\t\tCAF\tNOUTCON\n\t\tTS\tNOUT\n\n\t\tCAF\tBIT14\n\t\tMASK\tEXTVBACT\n\t\tTS\tEXTVBACT\n\t\tCAF\tLESCHK\t\t# SELF CHECK GO-TO REGISTER.\n\t\tTS\tSELFRET\n\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\n\t\tTC\tQ\n\nT5IDLOC\t\tCA\tL\t\t# T5RUPT COMES HERE EVERY 163.84 SECS\n\t\tTCF\tNOQRSM\t+1\t# WHEN NOBODY IS USING IT.\n\n\t\tEBANK=\tOGANOW\nT5IDLER\t\t2CADR\tT5IDLOC\n\n\t\tEBANK=\tOGANOW\n\t\t2CADR\tREDORCS\n\n\t\tEBANK=\tOGANOW\n\t\t2CADR\tREDOTVC\n\n\t\tEBANK=\tOGANOW\n\t\t2CADR\tREDOSAT\n# Page 193\n\nIFAILINH\tOCT\t435\nLDNPHAS1\tGENADR\tDNPHASE1\nLESCHK\t\tGENADR\tSELFCHK\nVAC1ADRC\tADRES\tVAC1USE\nLTHVACA\t\tDEC\t44\n\nINTMASK\t\tOCT\t20100\nOCT77603\tOCT\t77603\nOCT74777\tOCT\t74777\nSTARTEB\t\tECADR\tLST1\nNUMGRPS\t\tEQUALS\tFIVE\n-ELR\t\tOCT\t-22\t\t# -ERROR LIGHT RESET KEY CODE.\nIM30INIF\tOCT\t37411\t\t# INHIBITS IMU FAIL FOR 5 SEC AND PIP ISSW\nIM30INIR\tOCT\t37000\nIM33INIT\t=\tPRIO16\t\t# NO PIP OR TM FAIL SIGNALS.\n9,6,4\t\tOCT\t450\nOPTINITF\tOCT\t130\nOPTINITR\tOCT\t430\nSWINIT\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n\n\t\tOCT\t0\n\t\tOCT\t00200\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n# Page 194\n# PROGRAM NAME\t\tGOTOPOOH\tASSEMBLY\tSUNDISK\n# LOG SECTION\t\tFRESH START AND RESTART\n\n# FUNCTIONAL DESCRIPTION\n\n#\t1. DISPLAY MAJOR MODE NUMBER 00 IN DSKY REGISTER R1 AND R3.  FLASH V50 N07 ON DSKY.  (M M CHANGE REQUEST)\n#\t2. PERMIT A CURRENT PENDING REQUEST (FLASH ON DSKY) TO BE REPLACED (WITHOUT AN ABORT) BY THE MAJOR MODE\n#\t   CHANGE REQUEST.\n\n# INPUT/OUTPUT INFORMATION\n\n#\tA. CALLING SEQUENCE\t\tTC GOTOPOOH\n\n#\tB. ERASABLE INITIALIZATION\t\tNONE\n\n#\tC. OUTPUT \t\tFLASH VERB 50 NOUN 07 ON DSKY\n\n#\tD. DEBRIS\t\tL\n\n# PROGRAM ANALYSIS\n\n#\tA. SUBROUTINES CALLED\t\tGOPERF3, LINUS\n\n#\tB. NORMAL EXIT\t\t    TCF ENDOFJOB\n\n#\tC. ALARM AND ABORT EXITS\t\tNONE\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG10\n\t\tBANK\n\n\t\tCOUNT\t02/P00\n\nGOTOPOOH\tTC\tPHASCHNG\t\t# RESTART GOTOPOOH\n\t\tOCT\t14\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tGOP00FIX\n\t\tBANK\t10\n\t\tSETLOC\tVERB37\n\t\tBANK\n\n\t\tCOUNT\t04/P00\n\nGOP00FIX\tTC\tINITSUB\n\t\tTC\tCLEARMRK +2\n\t\tCAF\tV37N99\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\t-3\n# Page 195\n\t\tTCF\t-4\n\t\tTCF\t-5\nV37N99\t\tVN\t3799\n\n# Page 196\n# PROGRAM NAME\tV37\t\t\tASSEMBLY\tSUNDISK\n# LOG SECTION\tFRESH START AND RESTART\n\n# FUNCTIONAL DESCRIPTION\n\n#\t1. CHECK IF NEW PROGRAM ALLOWED.  IF BIT 1 OF FLAGWRD2(NODOFLAG) ISSET, AN ALARM 1520 IS CALLED.\n#\t2. CHECK FOR VALIDITY OF PROGRAM SELECTED.  IF AN INVALID PROGRAM IS SELECTED, THE OPERATOR ERROR LIGHT IS\n#\t   SET AND CURRENT ACTIVITY, IF ANY, CONTINUES.\n#\t3. SERVICER IS TERMINATED IF IT HAS BEEN RUNNING.\n#\t4. INSTALL IS EXECUTED TO AVOID INTERRUPTING INTEGRATION.\n#\t5. THE ENGINE IS TURNED OFF AND THE DAP IS INITIALIZED FOR COAST.\n#\t6. TRACK, UPDATE AND TARG1 FLAGS ARE SET TO ZERO.\n#\t7. DISPLAY SYSTEM IS RELEASED.\n#\t8. THE FOLLOWING ARE PERFORMED FOR EACH OF THE THREE CASES.\n#\t   A. PROGRAM SELECTED IS P00.\n#\t      1. RENDEZVOUS FLAG IS RESET (KILL P20).\n#\t      2. STATINT1\tIS SCHEDULED BY SETTING RESTART GROUP 2.\n#\t      3. MAJOR MODE 00 IS STORED IN THE MODE REGISTER(MODREG).\n#\t      4. SUPERBANK 3 IS SELECTED.\n#\t      5. NODOFLAG IS RESET.\n#\t      6. ALL RESTART GROUPS EXCEPT GROUP 2 ARE CLEARED.  CONTROL ISTRANSFERRED TO RESTART PROGRAM (GOPROG2)\n#\t\t WHICH CAUSES ALL CURRENT ACTIVITY TO BE DISCONTINUED AND A 9 MINUTE INTEGRATION CYCLE TO BE\n#\t\t INITIATED.\n#\t   B. PROGRAM SELECTES IS P20.\n#\t      1. IF THE CURRENT MAJOR MODE IS THE SAME AS THE SELECTED NEWPROGRAM.  THE PROGRAM IS RE-INITIALIZED\n#\t\t VIA V37XEQ, ALL RESTART GROUPS, EXCEPT GROUP 4 ARE CLEARED.\n#\t      2. IF THE CURRENT MAJOR MODE IS NOT EQUAL TO THE NEW REQUEST, A CHECK IS MADE TO SEE IF THE REQUEST-\n#\t\t ED MAJOR MODE HAS BEEN RUNNING THE BACKGROUND,\n#\t\t AND IF IT HAS, NO NEW PROGRAM IS SCHEDULED, THE EXISTING\n#\t\t P20 IS RESTARTED TO CONTINUE, AND ITS MAJOR MODE IS SET.\n#\t      3. CONTROL IS TRANSFERRED TO GOPROG2.\n#\t   C. PROGRAM SELECTED IS NEITHER P00 NOR P20\n#\t      1. V37XEQ IS SCHEDULED (AS A JOB) BY SETTING RESTART GROUP 4\n#\t      2. ALL CURRENT ACTIVITY EXCEPT RENDEZVOUS AND TRACKING IS DISCONTINUED BY CLEARING ALL RESTART\n#\t\t GROUPS.  GROUP 2 IS CLEARED.  IF THE RENDEZVOUS FLAG IS ON P20 IS RESTARTED IN GOPROG2 VIA REDOP20,\n#\t\t TO CONTINUE.\n\n# INPUT/OUTPUT INFORMATION\n\n#\t   A. CALLING SEQUENCE\n\n#\t\tCONTROL IS DIRECTED TO V37 BY THE VERBFAN ROUTINE.\n#\t\t\tVERBFAN GOES TO C(VERBTAB+C(VERBREG)).  VERB 37 = MMCHANG.\n#\t\t\tMMCHANG EXECUTES A\tTC POSTJUMP, CADR V37.\n\n#\t   B. ERASABLE INITIALIZATION\t\tNONE\n\n# \t   C. OUTPUT\n#\t\tMAJOR MODE CHANGE\n# Page 197\n#\n#\t   D. DEBRIS\n#\t\tMMNUMBER, MPAC +1, MINDEX, BASETEMP +C(MINDEX), FLAGWRD0, FLAGWRD1, FLAGWRD2, MODREG, GOLOC -1,\n#\t\tGOLOC, GOLOC +1, GOLOC +2, BASETEMP, -PHASE2, PHASE2, -PHASE4\n\n# PROGRAM ANALYSIS\n\n#\t   A. SUBROUTINES CALLED\n#\t\tALARM, RELDSP, PINBRNCH, INTSTALL, ENGINOF2, ALLCOAST, V37KLEAN, GOPROG2, FALTON, FINDVAC, SUPERSW,\n#\t\tDSPMM\n\n#\t   B. NORMAL EXIT\t\tTC ENDOFJOB\n\n#\t   C. ALARMS\t\t1520 (MAJOR MODE CHANGE NOT PERMITTED)\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG10\n\t\tBANK\n\n\t\tCOUNT\t02/V37\n\nOCT24\t\tMM\t20\nOCT31\t\tMM\t25\n\t\tBANK\t27\n\t\tSETLOC\tVERB37\n\t\tBANK\n\n\t\tCOUNT\t04/V37\n\nV37\t\tTS\tMMNUMBER\t\t# SAVE MAJOR MODE\n\t\tCAF\tPRIO30\t\t\t# RESTART AT PINBALL PRIORITY\n\t\tTS\tRESTREG\n\n\t\tCA\tIMODES30\t\t# IS IMU BEING INITIALIZED\n\t\tMASK\tBIT6\n\t\tCCS\tA\n\t\tTCF\tCANTR00\n\n\t\tCAF\tBIT13\t\t\t# IS ENGINE ON\n\t\tEXTEND\n\t\tRAND\tDSALMOUT\n\t\tCCS\tA\n\t\tTCF\tR00TOP00\t\t# YES, SET UP FOR P00\n\n\t\tCS\tFLAGWRD6\t\t# NO, IS TVC DAP ON\n\t\tMASK\tOCT60000\n\t\tEXTEND\n\t\tBZMF\tISITP00\t\t\t# NO, CONTINUE WITH R00\n\nR00TOP00\tINHINT\n\t\tCAF\tEBANK6\n# Page 198\n\t\tTS\tEBANK\n\t\tEBANK=\tDAPDATR1\n\t\tCAE\tCSMMASS\n\t\tTS\tMASSTMP\n\t\tTC\tIBNKCALL\n\t\tCADR\tSPSOFF\n\t\tTC\tIBNKCALL\n\t\tCADR\tMASSPROP\n\t\tCAF\t3.1SEC\n\t\tTC\tIBNKCALL\n\t\tCADR\tRCSDAPON +1\n\n\t\tTC\tIBNKCALL\n\t\tCADR\tTVCZAP\t\t\t# DISABLE TVC\n\t\tCAF\tZERO\n\t\tTS\tMMNUMBER\n\t\tRELINT\n\t\tCAF\tFIVE\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tCAF\tZERO\n\t\tEXTEND\n\t\tWRITE\t5\n\t\tEXTEND\n\t\tWRITE\t6\nISITP00\t\tCA\tMMNUMBER\n\t\tEXTEND\n\t\tBZF\tISSERVON\t\t# YES, CHECK SERVICER STATUS\n\n\t\tCS\tFLAGWRD2\t\t# NO, IS NODO V37 FLAG SET\n\t\tMASK\tNODOBIT\n\t\tCCS\tA\n\t\tTCF\tCHECKTAB\t\t# NO\nCANTR00\t\tTC\tALARM\n\t\tOCT\t1520\n\nV37BAD\t\tTC\tRELDSP\t\t\t# RELEASES DISPLAY FROM ASTRONAUT\n\n\t\tTC\tPOSTJUMP\t\t# BRING BACK LAST NORMAL DISPLAY IF THERE\n\t\tCADR\tPINBRNCH\t\t# WAS ONE.  OY\n\nCHECKTAB\tCA\tNOV37MM\t\t\t# THE NO.  OF MM\nAGAINMM\t\tTS\tMPAC +1\n\t\tNDX\tMPAC +1\n\t\tCA\tPREMM1\t\t\t# OBTAIN WHICH MM THIS IS FOR\n\t\tMASK\tLOW7\n\t\tCOM\n\t\tAD\tMMNUMBER\n\t\tCCS\tA\n\t\tCCS\tMPAC +1\t\t\t# IF GR, SEE IF ANY MORE IN LIST\n# Page 199\n\t\tTCF\tAGAINMM\t\t\t# YES, GET NEXT ONE\n\t\tTCF\tV37NONO\t\t\t# LAST TIME OR PASSED MM\n\n\t\tCA\tMPAC +1\n\t\tTS\tMINDEX\t\t\t# SAVE INDEX FOR LATER\n\nISSERVON\tCS\tFLAGWRD7\t\t# V37 FLAG SET - I.E. IS SERVICER GOING\n\t\tMASK\tV37FLBIT\n\t\tCCS\tA\n\t\tTCF\tCANV37\t\t\t# NO\n\n\t\tINHINT\n\t\tCS\tAVEGBIT\t\t\t#   YES TURN OFF AVERAGE G FLAG AND WAIT\n\t\tMASK\tFLAGWRD1\t\t# FOR SERVICER TO RETURN TO CANV37\n\t\tTS\tFLAGWRD1\n\n\t\tTCF\tENDOFJOB\n\nCANV37\t\tCAF\tR00AD\n\t\tTS\tTEMPFLSH\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t14\n\nROC\t\tTC\tINTPRET\n\n\t\tCALL\t\t\t\t# WAIT FOR INTEGRATION TO FINISH\n\t\t\tINTSTALL\nDUMMYAD\t\tEXIT\n\n\t\tCS\tOCT1400\t\t\t# CLEAR CAUTION RESET\n\t\tEXTEND\t\t\t\t#   AND TEST CONNECTOR OUTBIT\n\t\tWAND\t11\n\n\t\tCAF\tOCT44571\t\t# CLEAR ENABLE OPTICS ERROR COUNTER, STAR\n\t\tEXTEND\t\t\t\t# TRAKERS ON BIT, TVC ENABLE, ZERO OPTICS,\n\t\tWAND\t12\t\t\t# DISENGAGE OPTICS DAP, SIVB IN J SEQUENCE\n\t\t\t\t\t\t# START, AND SIVB CUTOFF BIT.\n\n\t\tCS\tOCT600\t\t\t# CLEAR UNUSED BITS\n\t\tEXTEND\n\t\tWAND\t13\n\n\t\tTC\tINITSUB\n\n\t\tTC\tCLEARMRK\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tSTIKFLAG\n\n# Page 200\n\t\tTC\tBANKCALL\n\t\tCADR\tUPACTOFF\t\t# TURN OFF UPLINK ACTIV LIGHT\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tVHFRFLAG\n\t\tTC\tDOWNFLAG\n\t\tADRES\tR21MARK\n\n\t\tCCS\tMMNUMBER\t\t# IS THIS A POOH REQUEST\n\t\tTCF\tNOUVEAU\t\t\t# NO, PICK UP NEW PROGRAM\n\n\t\tCOUNT\t04/P00\n\nPOOH\t\tTC\tRELDSP\t\t\t# RELEASE DISPLAY SYSTEM\n\n\t\tCAF\tPRIO5\t\t\t# SET VARIABLE RESTART REGISTER FOR P00.\n\t\tTS\tPHSPRDT2\n\n\t\tINHINT\n\n\t\tCS\tNODOBIT\t\t\t# TURN OFF NODOFLAG\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\n\n\t\tCA\tFIVE\t\t\t# SET 2.5 RESTART FOR STATEINT1\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE2\n\n\t\tCS\tBIT7-8\t\t\t# RESET IMUSE + KILL P20 BY TURNING OFF\n\t\tMASK\tFLAGWRD0\n\t\tTS\tFLAGWRD0\t\t#\t\t\t RENDFLG\n\n\t\tCAF\tDNLADP00\n\n\t\tCOUNT\t04/V37\n\nSEUDOP00\tTS\tDNLSTCOD\t\t# SET UP APPROPRIATE DOWNLIST.\n\n\t\t\t\t\t\t#   (OLD ONE WILL BE FINISHED FIRST)\n\t\tCS\tOCT01120\t\t# TURN OFF TRACK, TARG1, UPDATE FLAGS\n\t\tTS\tEBANKTEM\n\t\tMASK\tFLAGWRD1\n\t\tTS\tFLAGWRD1\n\nGROUPKIL\tTC\tIBNKCALL\t\t# KILL GROUPS 3(5,6\n\t\tCADR\tV37KLEAN\n\n\t\tCCS\tMMNUMBER\t\t# IS IT POOH\n\t\tTCF\tRENDV00\t\t\t# NO\n# Page 201\n\t\tTC\tIBNKCALL\n\t\tCADR\tP00KLEAN\t\t# REDUNDANT EXCEPT FOR GROUP 4.\n\nGOMOD\t\tCA\tMMNUMBER\n\t\tTS\tMODREG\n\nGOGOPROG\tTC\tPOSTJUMP\n\t\tCADR\tGOPROG2\n\nRENDV00\t\tCS\tMMNUMBER\t\t# IS NEW PROG = 20\n\t\tAD\tOCT24\t\t\t# 20\n\t\tEXTEND\n\t\tBZF\tRENDN00\t\t\t# YES\n\t\tTCF\tP00FIZZ\nRENDN00\t\tCS\tMMNUMBER\n\t\tAD\tMODREG\n\t\tEXTEND\n\t\tBZF\tKILL20\n\n\t\tCA\tFLAGWRD0\t\t# IS RENDEZVOO FLAG SET\n\t\tMASK\tRNDVZBIT\n\t\tCCS\tA\n\t\tTCF\tSTATQUO\n\nP00FIZZ\t\tCAF\tRNDVZBIT\n\t\tMASK\tFLAGWRD0\n\t\tCCS\tA\n\t\tTCF\tREV37\nKILL20\t\tEXTEND\t\t\t\t# NO, KILL GROUPS 1 + 2\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE1\n\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE2\n\nREV37\t\tCAF\tV37QCAD\t\t\t# SET RESTART POINT\n\t\tTS\tTEMPFLSH\n\n\t\tTCF\tGOGOPROG\n\n\nSTATQUO\t\tCS\tFLAGWRD1\t\t# SET TRACKFLAG AND UPDATE FLAG\n\t\tMASK\tOCT120\n\t\tADS\tFLAGWRD1\n\n\t\tEXTEND\t\t\t\t# KILL GROUP 4\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE4\n\n# Page 202\n\t\tTCF\tGOMOD\n\nNOUVEAU\t\tCAF\tRNDVZBIT\n\t\tMASK\tFLAGWRD0\n\t\tCCS\tA\n\t\tTCF\t+3\n\t\tTC\tDOWNFLAG\t\t# NO, RESET IMUSE FLAG.\n\t\tADRES\tIMUSE\t\t\t# BIT 8 FLAG 0\n\t+3\tINDEX\tMINDEX\n\t\tCAF\tDNLADMM1\t\t# OBTAIN NEW DOWNLIST ADDRESS\n\n\t\tINHINT\n\t\tTCF\tSEUDOP00\n\nV37NONO\t\tTC\tFALTON\t\t\t# COME HERE IF MM REQUESTED DOESNT EXIST\n\t\tTCF\tV37BAD\n\nOCT00010\tEQUALS\tBIT4\nV37XEQ\t\tINHINT\n\t\tINDEX\tMINDEX\n\t\tCAF\tPREMM1\n\t\tTS\tMMTEMP\t\t\t# OBTAIN PRIORITY BITS 15 - 11\n\t\tTS\tCYR\t\t\t# SHIFT RIGHT TO BITS 14 - 10\n\n\t\tCA\tCYR\n\t\tMASK\tPRIO37\n\t\tTS\tPHSPRDT4\t\t# PRESET GROUP4 RESTART PRIORITY\n\t\tTS\tNEWPRIO\t\t\t# STORE PRIO FOR SPVAC\n\n\t\tCA\tMMTEMP\t\t\t# OBTAIN EBANK - BITS 8, 9, 10 OF MMTEMP.\n\t\tEXTEND\n\t\tMP\tBIT8\n\t\tMASK\tLOW3\n\t\tTS\tL\n\t\tINDEX\tMINDEX\n\t\tCAF\tFCADRMM1\n\t\tTS\tBASETEMP\n\t\tMASK\tHI5\n\t\tADS\tL\n\n\t\tCA\tBASETEMP\t\t# OBTAIN GENADR PORTION OF 2CADR.\n\t\tMASK\tLOW10\n\t\tAD\tBIT11\n\n\t\tTC\tSPVAC\n\nV37XEQC\t\tCA\tMMTEMP\t\t\t# UPON RETURN FROM FINDVAC PLACE THE\n\t\tMASK\tLOW7\t\t\t# NEW MM IN MODREG (THE LOW 7 BITS OF\n\t\tTC\tNEWMODEA\t\t# PHSBRDT1)\n\n# Page 203\n# FOR SUNDISK ONLY\n\t\tTC\tRELDSP\t\t\t# RELEASE DISPLAY\n\t\tTC\tENDOFJOB\t\t# AND EXIT\n\nINITSUB\t\tEXTEND\n\t\tQXCH\tMPAC\t+1\n\n\t\tCAF\tEBANK6\t\t\t# SET E6 FOR DEADBAND CODING\n\t\tTS\tEBANK\t\t\t# WILL BE RESET IN STARTSB2.\n\t\tINHINT\n\t\tTC\tSTOPRATE\n\n\t\tCA\tFLAGWRD9\t\t# RESTORE DEADBAND\n\t\tMASK\tMAXDBBIT\n\t\tCCS\tA\n\t\tTCF\tSETMAXER\t\t# MAX DB SELECTED\n\t\tTC\tBANKCALL\t\t# MIN DB SELECTED\n\t\tCADR\tSETMINDB\n\t\tTCF\tRAKE\nSETMAXER\tTC\tBANKCALL\n\t\tCADR\tSETMAXDB\n\nRAKE\t\tCAF\tELEVEN\t\t\t# THIS PART CLEARS FLAGWORD BITS.\n\t+1\tTS\tMPAC\t\t\t# LOOP COMES HERE.\n\t\tINDEX\tMPAC\n\t\tCS\tFLAGTABL\n\t\tINDEX\tMPAC\n\t\tMASK\tFLAGWRD0\n\t\tINDEX\tMPAC\t\t\t# PUT REVISED FLAGWORD BACK.\n\t\tTS\tFLAGWRD0\n\t\tCCS\tMPAC\n\t\tTCF\tRAKE\t+1\t\t# GET THE NEXT FLAGWORD.\n\t\tRELINT\n\n\t\tTC\tUPFLAG\t\t\t# NOW SET IMPULSW\n\t\tADRES\tIMPULSW\n\n\t\tCA\tNEGONE\n\t\tTS\tOPTIND\n\t\tTC\tMPAC\t+1\t\t# RETURN FROM INITSUB\n\nFLAGTABL\tOCT\t0\n\t\tOCT\t00040\t\t\t# IDLEFAIL\n\t\tOCT\t06000\t\t\t# P21FLAG, STEERSW\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t04140\t\t\t# V59FLAG, ENGONFLG, 3AXISFLG\n\t\tOCT\t10000\t\t\t# STRULLSW\n\t\tOCT\t16000\n\t\tOCT\t0\n# Page 204\n\t\tOCT\t42000\t\t\t# SWTOVER, V94FLAG\n\t\tOCT\t0\n\t\tOCT\t0\n\n\t\tSETLOC\tVAC5LOC\n\t\tBANK\nVAC5STOR\tCA\tZERO\t\t\t# INITIALIZE INDEX REGISTERS\n\t\tTS\tITEMP1\n\t\tTS\tITEMP2\n\nV5LOOP1\t\tEXTEND\t\t\t\t# LOOP TO STORE LOCS, BANKSETS, AND PRIOS.\n\t\tINDEX\tITEMP1\n\t\tDCA\tLOC\n\t\tINDEX\tITEMP2\n\t\tDXCH\tVAC5\n\n\t\tINDEX\tITEMP1\n\t\tCA\tPRIORITY\n\t\tINDEX\tITEMP2\n\t\tTS\tVAC5 +2\n\n\t\tCS\tITEMP2\t\t\t# HAVE WE STORED THEM ALL?\n\t\tAD\tEIGHTEEN\n\t\tEXTEND\n\t\tBZF\tV5OUT1\t\t\t# YES, GET PHASE INFORMATION.\n\n\t\tCA\tTWELVE\t\t\t# NO, INCREMENT INDEXES AND LOOP.\n\t\tADS\tITEMP1\n\t\tCA\tTHREE\n\t\tADS\tITEMP2\n\t\tTCF\tV5LOOP1\n\n\t\tEBANK=\tPHSNAME1\nV5OUT1\t\tCA\tEBANK3\t\t\t# PHSNAME REGISTERS ARE IN EBANK3.\n\t\tTS\tEBANK\n\n\t\tCA\tELEVEN\t\t\t# GET PHASE 2CADRS.\n\t\tTC\tGENTRAN\n\t\tADRES\tPHSNAME1\n\t\tADRES\tVAC5 +21D\n\n\t\tCA\tZERO\t\t\t# NOW INITIALIZE INDEXES AGAIN.\n\t\tTS\tITEMP1\n\t\tTS\tITEMP2\n\nV5LOOP2\t\tINDEX\tITEMP1\t\t\t# LOOP TO GET PHASE TABLES.\n\t\tCA\tPHASE1\n\t\tINDEX\tITEMP2\n\t\tTS\tVAC5 +33D\n\n# Page 205\n\t\tCS\tITEMP2\t\t\t# DO WE HAVE THEM ALL?\n\t\tAD\tFIVE\n\t\tEXTEND\n\t\tBZF\tV5OUT2\t\t\t# YES, GO FINISH UP.\n\n\t\tCA\tTWO\t\t\t# NO, INCREMENT INDEXES AND LOOP.\n\t\tADS\tITEMP1\n\t\tINCR\tITEMP2\n\t\tTCF\tV5LOOP2\n\nV5OUT2\t\tCA\tMPAC +3\n\t\tTS\tVAC5 +39D\n\n\t\tEXTEND\n\t\tDCA\tNEWLOC\n\t\tDXCH\tVAC5 +40D\n\n\t\tCA\tNEWJOB\n\t\tTS\tVAC5 +22D\n\n\t\tCA\tNEWPRIO\n\t\tTS\tVAC5 +26D\n\n\t\tTC\tSWRETURN\n\nEIGHTEEN\tOCT\t22\n\t\tSETLOC\tVERB37\n\t\tBANK\n\nNEG7\t\tEQUALS\tOCT77770\n\nOCT44571\tOCT\t44571\t\t\t# CONSTANTS TO CLEAR CHANNEL BITS IN V37\nOCT600\t\tOCT\t600\n\t\tEBANK=\tPACTOFF\nP00DAPAD\t2CADR\tT5IDLOC\n\nMMTEMP\t\tEQUALS\tPHSPRDT3\nBASETEMP\tEQUALS\tTBASE4\nBIT7-8\t\tOCT\t300\nOCT01120\tOCT\t01120\n\nV37QCAD\t\tCADR\tV37XEQ +3\nR00AD\t\tCADR\tDUMMYAD\n\t\tEBANK=\tDAPDATR1\nRCSADDR4\t2CADR\tRCSATT\n\n3.1SEC\t\tOCT\t37312\t\t\t# 2.5 + 0.6 SEC\n\n# FOR VERB 37 TWO TABLES ARE MAINTAINED.  EACH TABLE HAS AN ENTRY FOR EACH\n# MAJOR MODE THAT CAN BE STARTED FROM THE KEYBOARD.  THE ENTRIES ARE PUT\n# INTO THE TABLE WITH THE ENTRY FOR THE HIGHEST MAJOR MODE COMING FIRST,\n# Page 206\n# TO THE LOWEST MAJOR MODE WHICH IS THE LAST ENTRY IN EACH TABLE.\n\n# \tTHE FCADRMM TABLE CONTAINS THE FCADR OF THE STARTING JOB OF\n# THE MAJOR MODE.  FOR EXAMPLE,\n\n#\tFCADRMM1\tFCADR\tP79\t\t# START OF P 79\n#\t\t\tFCADR\tPROG18\t\t# START OF P 18\n#\t\t\tFCADR\tP01\t\t# START OF P 01\n\nFCADRMM1\tEQUALS\n\t\tFCADR\tP79\n\t\tFCADR\tP78\n\t\tFCADR\tP77\n\t\tFCADR\tP76\n\t\tFCADR\tP75\n\t\tFCADR\tP74\n\t\tFCADR\tP73\n\t\tFCADR\tP72\n\t\tFCADR\tP62\n\t\tFCADR\tP61\n\t\tFCADR\tP54\n\t\tFCADR\tP53\n\t\tFCADR\tPROG52\n\t\tFCADR\tP51\n\t\tFCADR\tP47CSM\n\t\tFCADR\tP41CSM\n\t\tFCADR\tP40CSM\n\t\tFCADR\tP39\n\t\tFCADR\tP38\n\t\tFCADR\tP37\n\t\tFCADR\tP35\n\t\tFCADR\tP34\n\t\tFCADR\tP33\n\t\tFCADR\tP32\n\t\tFCADR\tP31\n\t\tFCADR\tP30\n\t\tFCADR\tP23\n\t\tFCADR\tPROG22\n\t\tFCADR\tPROG21\n\t\tFCADR\tPROG20\n\t\tFCADR\tP17\n\t\tFCADR\tP06\n\t\tFCADR\tGTSCPSS1\t\t\t# GYROCOMPASS STANDARD LEAD IN.\n\n# THE PREMM TABLE CONTAINS THE E-BANK,MAJOR MODE, AND PRIORITY\n# INFORMATION, IT IS IN THE FOLLOWING FORM,\n\n#\tPPP PPE EEM MMM MMM\n#\n# Page 207\n#\tWHERE THE 7 M BITS CONTAIN THE MAJOR MODE NUMBER\n#\t\t   3 E BITS CONTAIN THE E-BANK NUMBER\n#\t\t   5 P BITS CONTAIN THE PRIORITY AT WHICH THE JOB IS\n#\t\t\tTO BE STARTED\n\n#\tFOR EXAMPLE,\n\n#\t\tPREMM1\t\tOCT\t67213\t\t# PRIORITY\t33\n#\t\t\t\t\t\t\t# E-BANK\t 5\n#\t\t\t\t\t\t\t# MAJOR MODE\t11\n#\t\t\t\tOCT\t25437\t\t# PRIORITY\t 12\n#\t\t\t\t\t\t\t# E-BANK\t 6\n#\t\t\t\t\t\t\t# MAJOR MODE\t31\n\nPREMM1\t\tEQUALS\n\t\tOCT\t27117\t\t# MM 79\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27116\t\t# MM 78\t\tEBANK 4\t\tPR23 13\n\t\tOCT\t27115\t\t# MM 77\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27714\t\t# MM 76\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27113\t\t# MM 75\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27112\t\t# MM 74\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27111\t\t# MM 73\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27110\t\t# MM 72\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27476\t\t# MM 62\t\tEBANK 6\t\tPRIO 13\n\t\tOCT\t27475\t\t# MM 61\t\tEBANK 6\t\tPRIO 13\n\t\tOCT\t27266\t\t# MM 54\t\tEBANK 5\t\tPRIO 13\n\t\tOCT\t27265\t\t# MM 53\t\tEBANK 5\t\tPRIO 13\n\t\tOCT\t27264\t\t# MM 52\t\tEBANK 5\t\tPRIO 13\n\t\tOCT\t27263\t\t# MM 51\t\tEBANK 5\t\tPRIO 13\n\t\tOCT\t27657\t\t# MM 47\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27451\t\t# MM 41\t\tEBANK 6\t\tPRIO 13\n\t\tOCT\t27450\t\t# MM 40\t\tEBANK 6\t\tPRIO 13\n\t\tOCT\t27047\t\t# MM 39\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27046\t\t# MM 38\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27645\t\t# MM 37\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27043\t\t# MM 35\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27042\t\t# MM 34\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27041\t\t# MM 33\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27040\t\t# MM 32\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27637\t\t# MM 31\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27636\t\t# MM 30\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27227\t\t# MM 23\t\tEBANK 5\t\tPRIO 13\n\t\tOCT\t27226\t\t# MM 22\t\tEBANK 5\t\tPRIO 13\n\t\tOCT\t27025\t\t# MM 21\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t27424\t\t# MM 20\t\tEBANK 6\t\tPRIO 13\n\t\tOCT\t27021\t\t# MM 17\t\tEBANK 6\t\tPRIO 13\n\t\tOCT\t27006\t\t# MM 06\t\tEBANK 4\t\tPRIO 13\n\t\tOCT\t41201\t\t# MM 01\t\tEBANK 5\t\tPRIO 20\n\n# Page 208\n# THE FOLLOWING LIST IS FOR THE PURPOSE OF VERIFYING THAT THE EBA\n\n\t\tEBANK=\tTIG\t\t# EBANK SETTING REQUIRED BY MM 76\n\t\tEBANK=\tKT\t\t# EBANK SETTING REQUIRED BY MM 75\n\t\tEBANK=\tSUBEXIT\t\t# EBANK SETTING REQUIRED BY MM 74\n\t\tEBANK=\tSUBEXIT\t\t# EBANK SETTING REQUIRED BY MM 73\n\t\tEBANK=\tSUBEXIT\t\t# EBANK SETTING REQUIRED BY MM 72\n\t\tEBANK=\tAOG\t\t# EBANK SETTING REQUIRED BY MM 62\n\t\tEBANK=\tAOG\t\t# EBANK SETTING REQUIRED BY MM 61\n\t\tEBANK=\tBESTI\t\t# EBANK SETTING REQUIRED BY MM 54\n\t\tEBANK=\tSTARIND\t\t# EBANK SETTING REQUIRED BY MM 53\n\t\tEBANK=\tBESTI\t\t# EBANK SETTING REQUIRED BY MM 52\n\t\tEBANK=\tSTARIND\t\t# EBANK SETTING REQUIRED BY MM 51\n\t\tEBANK=\tP40TMP\t\t# EBANK SETTING REQUIRED BY MM 47\n\t\tEBANK=\tDAPDATR1\t# EBANK SETTING REQUIRED BY MM 41\n\t\tEBANK=\tKMPAC\t\t# EBANK SETTING REQUIRED BY MM 40\n\t\tEBANK=\tKT\t\t# EBANK SETTING REQUIRED BY MM 35\n\t\tEBANK=\tSUBEXIT\t\t# EBANK SETTING REQUIRED BY MM 34\n\t\tEBANK=\tSUBEXIT\t\t# EBANK SETTING REQUIRED BY MM 33\n\t\tEBANK=\tSUBEXIT\t\t# EBANK SETTING REQUIRED BY MM 32\n\t\tEBANK=\t+MGA\t\t# EBANK SETTING REQUIRED BY MM 30\n\t\tEBANK=\tLANDMARK\t# EBANK SETTING REQUIRED BY MM 23\n\t\tEBANK=\tMARKINDX\t# EBANK SETTING REQUIRED BY MM 22\n\t\tEBANK=\tWHOCARES\t# EBANK SETTING REQUIRED BY MM 21\n\t\tEBANK=\tESTROKER\t# EBANK SETTING REQUIRED BY MM 20\n\t\tEBANK=\tTIME2SAV\t# EBANK SETTING REQUIRED BY MM 06\n\t\tEBANK=\tQPLACE\t\t# EBANK SETTING REQUIRED BY MM 01\n\n\n# NOTE,\t\tTHE FOLLOWING CONSTANT IS THE NUMBER OF ENTRIES IN EACH OF\n# ----\t\tTHE ABOVE LISTS-1(IE, THE NUMBER OF MAJOR MODES(EXCEPT P00)\n#\t\tTHAT CAN BE CALLED FROM THE KEYBOARD MINUS ONE)\n\nEPREMM1\t\tEQUALS\t\t\t# END OF PREMM1 TABLE\n\t\tSETLOC\tPREMM1\t\t# THIS CODING WILL AUTOMATICALLY CHANGE\nNO.MMS\t\t=MINUS\tEPREMM1\t\t# THE \"NOV37MM\" CONSTANT AS ENTRIES ARE\n\t\tSETLOC\tVERB37\t\t# INSERTED(IN) OR DELETED(FROM) THE\n\t\tBANK\t\t\t# \"PREMM1\" TABLE.\n\nNOV37MM\t\tADRES\tNO.MMS\t-1\t# ITEMS IN \"PREMM1\"TABLE - 1.  *DON'T MOVE*\n\n\nDNLADMM1\tEQUALS\n\t\tADRES\tRENDEZVU\t# P79\n\t\tADRES\tRENDEZVU\t# P78\n\t\tADRES\tRENDEZVU\t# P77\n\t\tADRES\tRENDEZVU\t# P76\n\t\tADRES\tRENDEZVU\t# P75\n\t\tADRES\tRENDEZVU\t# P74\n\t\tADRES\tRENDEZVU\t# P73\n# Page 209\n\t\tADRES\tRENDEZVU\t# P72\n\t\tADRES\tENTRYUPD\t# P62\n\t\tADRES\tPOWERED\t\t# P61\n\t\tADRES\tCOSTALIN\n\t\tADRES\tCOSTALIN\n\t\tADRES\tCOSTALIN\t# P52\n\t\tADRES\tCOSTALIN\t# P51\n\t\tADRES\tPOWERED\t\t# P47\n\t\tADRES\tPOWERED\t\t# P41\n\t\tADRES\tPOWERED\t\t# P40\n\t\tADRES\tRENDEZVU\t# P39\n\t\tADRES\tRENDEZVU\t# P38\n\t\tADRES\tRENDEZVU\t# P37\n\t\tADRES\tRENDEZVU\t# P35\n\t\tADRES\tRENDEZVU\t# P34\n\t\tADRES\tRENDEZVU\t# P33\n\t\tADRES\tRENDEZVU\t# P32\n\t\tADRES\tRENDEZVU\n\t\tADRES\tRENDEZVU\t# P30\n\t\tADRES\tRENDEZVU\t# P23\n\t\tADRES\tP22DNLST\t# P22\n\t\tADRES\tRENDEZVU\t# P21\n\t\tADRES\tRENDEZVU\t# P20\n\t\tADRES\tRENDEZVU\t# P17\n\t\tADRES\tCOSTALIN\t# P06\n\t\tADRES\tCOSTALIN\t# P01\nDNLADP00\t=\tZERO\nCOSTALIN\t=\t0\nENTRYUPD\t=\t1\nRENDEZVU\t=\t2\nPOWERED\t\t=\t3\n\nP22DNLST\t=\t4\n# ORBITAL INTEGRATION CONSTANTS\n\n# THESE CONSTANTS ARE USED IN COMPUTING THE SETTING OF MIDFLAG.\nRMM\t\t2DEC\t2538.09 E3 B-27\t# 800 KM ABOVE LUNAR SURFACE\n\nRME\t\t2DEC\t7178165 B-29\t# 800 KM ABOVE EQ. RADIUS\n\n\t\tBANK\t13\n\t\tSETLOC\tINTINIT\n\t\tBANK\n\n\t\tCOUNT*\t$$/INTIN\n\n\t\tEBANK=\tRRECTCSM\n\nSTATEUP\t\tSET\tBOF\t\t# EXTRAPOLATE CM STATE VECTOR\n\t\t\tVINTFLAG\n# Page 210\n\t\t\tORBWFLAG\t# ALSO 6X6 W-MATRIX IF VALID\n\t\t\t+3\t\t# \tFOR ORBITAL NAVIGATION\n\t\tSET\n\t\t\tDIM0FLAG\n\t\tCLEAR\tCALL\n\t\t\tPRECIFLG\n\t\t\tINTEGRV\n\t\tBON\tDLOAD\n\t\t\tSURFFLAG\n\t\t\tSTATEND\n\t\t\tTETCSM\n\t\tSTCALL\tTDEC1\n\t\t\tINTSTALL\n\t\tCLEAR\tCALL\t\t# EXTRAPOLATE LM STATE VECTOR\n\t\t\tVINTFLAG\n\t\t\tSETIFLGS\t# \tAND 6X6 W-MATRIX IF VALID\n\t\tBOF\tSET\n\t\t\tRENDWFLG\t#\tFOR RENDEZVOUS NAVIGATION\n\t\t\t+2\n\t\t\tDIM0FLAG\n\t\tSET\tCALL\n\t\t\tPRECIFLG\n\t\t\tINTEGRV\nSTATEND\t\tCLRGO\n\t\t\tNODOFLAG\n\t\t\tENDINT\n\n\n# THISVINT IS CALLED BY MIDTOAV1 AND2\n\nTHISVINT\tSET\tRVQ\n\t\t\tVINTFLAG\n"
  },
  {
    "path": "Comanche055/GIMBAL_LOCK_AVOIDANCE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tGIMBAL_LOCK_AVOIDANCE.agc\n# Purpose:\tPart of the source code for Comanche, build 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 412-413\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Mod history:\t05/07/09 OH\tTranscription Batch 1 Assignment\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further information.\n# Please report any errors to info@sandroid.org.\n\n# Page 412\n\t\tBANK\t15\n\t\tSETLOC\tKALCMON1\n\t\tBANK\n\n\t\tEBANK=\tBCDU\n# DETECTING GIMBAL LOCK\nLOCSKIRT\tEQUALS\tWCALC\nWCALC\t\tLXC,1\tDLOAD*\n\t\t\tRATEINDX\n\t\t\tARATE,1\n\t\tSR4\tCALL\t\t# COMPUTE THE INCREMENTAL ROTATION MATRIX\n\t\t\tDELCOMP\t\t# DEL CORRESPONDING TO A 1 SEC ROTATION\n\t\t\t\t\t# ABOUT COF\n\t\tDLOAD*\tVXSC\n\t\t\tARATE,1\n\t\t\tCOF\n\t\tMXV\n\t\t\tQUADROT\n\t\tSTODL\tBRATE\n\t\t\tAM\n\t\tDMP\tDDV*\n\t\t\tANGLTIME\n\t\t\tARATE,1\n\t\tSR\n\t\t\t5\n\t\tSTOVL\tTM\n\t\t\tBRATE\n\t\tVXSC\n\t\t\tBIASCALE\n\t\tSTORE\tBIASTEMP\t# ATTITUDE ERROR BIAS TO PREVENT OVERSHOOT\n\t\t\t\t\t# IN SYSTEM\n\t\tSETGO\t\t\t# STATE SWITCH CALCMAN2 (43D)\n\t\t\tCALCMAN2\t# 0(OFF) = BYPASS STARTING PROCEDURE\n\t\t\tNEWANGL +1\t# 1(ON) = START MANEUVER\n\n\nARATE\t\t2DEC\t.0022222222\t# = .05 DEG/SEC\n\n\t\t2DEC\t.0088888889\t# = .2 DEG/SEC\n\n\t\t2DEC\t.0222222222\t# = .5 DEG/SEC\n\n\t\t2DEC\t.0888888889\t# = 2 DEG/SEC                $22.5 DEG/SEC\n\nANGLTIME\t2DEC\t.000190735\t# = 100B - 19\n\n\t\t\t\t\t# MANEUVER ANGLE TO MANEUVER TIME\n\nQUADROT\t\t2DEC\t.1\t\t# ROTATION MATRIX FROM S/C AXES TO CONTROL\n\n# Page 413\n\t\t2DEC\t0\t\t# AXES\t(X ROT = -7.25 DEG)\n\n\t\t2DEC\t0\n\n\t\t2DEC\t0\n\n\t\t2DEC\t.099200\t\t# =(.1)COS7.25\n\n\t\t2DEC\t-.012620\t# =-(.1)SIN7.25\n\n\t\t2DEC\t0\n\n\t\t2DEC\t.012620\t\t# (.1)SIN7.25\n\n\t\t2DEC\t.099200\t\t# (.1)COS7.25\n\nBIASCALE\t2DEC\t.0002543132\t# = (450/180)(1/0.6)(1/16384)\n"
  },
  {
    "path": "Comanche055/GROUND_TRACKING_DETERMINATION_PROGRAM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tGROUND_TRACKING_DETERMINATION_PROGRAM.agc\n# Purpose:\tPart of the source code for Comanche, build 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 456-459\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Mod history:\t2009-05-07 OH\tTranscription Batch 1 Assignment\n#\t\t2009-05-20 RSB\tCorrected a couple of DIMOFLAG to DIM0FLAG.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further information.\n# Please report any errors to info@sandroid.org.\n\n# Page 456\n# GROUND TRACKING DETERMINATION PROGRAM P21\n# PROGRAM DESCRIPTION\n# MOD NO - 1\n# MOD BY - N.M.NEVILLE\n# FUNCTIONAL DECRIPTION-\n#\n# TO PROVIDE THE ASTRONAUT DETAILS OF THE LM OR CSM GROUND TRACK WITHOUT\n# THE NEED FOR GROUND COMMUNICATION (REQUESTED BY DSKY).\n# CALLING SEQUENCE -\n#\n# ASTRONAUT REQUEST THROUGH DSKY V37E21E\n# SUBROUTINES CALLED-\n#\n# GOPERF4\n# GOFLASH\n# THISPREC\n# OTHPREC\n# LAT-LONG\n# NORMAL EXIT MODES-\n#\n# ASTRONAUT REQUEST THROUGH DSKY TO TERMINATE PROGRAM V34E\n# ALARM OR ABORT EXIT MODES-\n#\n# NONE\n# OUTPUT -\n#\n# OCTAL DISPLAY OF OPTION CODE AND VEHICLE WHOSE GROUND TRACK IS TO BE\n# COMPUTED\n#\tOPTION CODE\t00002\n#\tTHIS\t\t00001\n#\tOTHER\t\t00002\n# DECIMAL DISPLAY OF TIME TO BE INTEGRATED TO HOURS , MINUTES , SECONDS\n# DECIMAL DISPLAY OF LAT,LONG,ALT\n# ERASABLE INITIALIZATION REQUIRED\n#\n# AX0\t\t2DEC\t4.652459653 E-5\t\tRADIANS\t\t\"68-69 CONSTANTS\"\n#\n# -AY0\t\t2DEC\t2.147535898 E-5\t\tRADIANS\n#\n# AZ0\t\t2DEC\t.7753206164\t\tREVOLUTIONS\n# FOR LUNAR ORBITS 504LM VECTOR IS NEEDED\n#\n# 504LM\t\t2DEC\t-2.700340600 E-5\tRADIANS\n#\n# 504LM _2\t2DEC\t-7.514128400 E-4\tRADIANS\n#\n# 504LM _4\t2DEC\t_2.553198641 E-4\tRADIANS\n#\n# NONE\n# DEBRIS\n\n# Page 457\n# CENTRALS-A,Q,L\n# OTHER-THOSE USED BY THE ABOVE LISTED SUBROUTINES\n# SEE LEMPREC,LAT-LONG\n\t\tSBANK=\tLOWSUPER\t# FOR LOW 2CADR'S.\n\n\t\tBANK\t33\n\t\tSETLOC\tP20S\n\t\tBANK\n\n\t\tEBANK=\tP21TIME\n\t\tCOUNT\t24/P21\n\nPROG21\t\tCAF\tONE\n\t\tTS\tOPTION2\t\t# ASSUMED VEHICLE IS LM , R2 = 00001\n\t\tCAF\tBIT2\t\t#  OPTION 2\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF4\n\t\tTC\tGOTOPOOH\t# TERMINATE\n\t\tTC\t+2\t\t# PROCEED VALUE OF ASSUMED VEHICLE OK\n\t\tTC\t-5\t\t# R2 LOADED THROUGH DSKY\nP21PROG1\tCAF\tV6N34\t\t# LOAD DESIRED TIME OF LAT-LONG.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# TERM\n\t\tTC\t+2\t\t# PROCEED VALUES OK\n\t\tTC\t-5\t\t# TIME LOADED THROUGH DSKY\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tDSPTEM1\n\t\tSTCALL\tTDEC1\t\t# INTEG TO TIME SPECIFIED IN TDEC\n\t\t\tINTSTALL\n\t\tBON\tSET\n\t\t\tP21FLAG\n\t\t\tP21CONT\t\t# ON...RECYCLE USING BASE VECTOR\n\t\t\tVINTFLAG\t# OFF..1ST PASS CALC BASE VECTOR\n\t\tSLOAD\tSR1\n\t\t\tOPTION2\n\t\tBHIZ\tCLEAR\n\t\t\t+2\t\t# ZERO..THIS VEHICLE (CM)\n\t\t\tVINTFLAG\t# ONE...OTHER VEHICLE(LM)\n\t\tCLEAR\tCLEAR\n\t\t\tDIM0FLAG\n\t\t\tINTYPFLG\t# PRECISION\n\t\tCALL\n\t\t\tINTEGRV\t\t# CALCULATE\n\t\tGOTO\t\t\t# .AND\n\t\t\tP21VSAVE\t# ..SAVE BASE VECTOR\nP21CONT\t\tVLOAD\t\t\t# RECYCLE..INTEG FROM BASE VECTOR\n\t\t\tP21BASER\n# Page 458\n\t\tSTOVL\tRCV\t\t# ..POS\n\t\t\tP21BASEV\n\t\tSTODL\tVCV\t\t# ..VEL\n\t\t\tP21TIME\n\t\tSTORE\tTET\t\t# ..TIME\n\t\tCLEAR\tCLEAR\n\t\t\tDIM0FLAG\n\t\t\tMOONFLAG\n\t\tSLOAD\tBZE\n\t\t\tP21ORIG\n\t\t\t+3\t\t# ZERO = EARTH\n\t\tSET\t\t\t# ...2 = MOON\n\t\t\tMOONFLAG\n\t\tCALL\n\t\t\tINTEGRVS\nP21VSAVE\tDLOAD\t\t\t# SAVE CURRENT BASE VECTOR\n\t\t\tTAT\n\t\tSTOVL\tP21TIME\t\t# ..TIME\n\t\t\tRATT1\n\t\tSTOVL\tP21BASER\t# ..POS B-29 OR B-27\n\t\t\tVATT1\n\t\tSTORE\tP21BASEV\t# ..VEL B-7  OR B-5\n\t\tABVAL\tSL*\n\t\t\t0,2\n\t\tSTOVL\tP21VEL\t\t# /VEL/ FOR N73 DSP\n\t\t\tRATT\n\t\tUNIT\tDOT\n\t\t\tVATT\t\t# U(R).(V)\n\t\tDDV\tASIN\t\t# U(R).U(V)\n\t\t\tP21VEL\n\t\tSTORE\tP21GAM\t\t# SIN-1 U(R).U(V), -90 TO +90\n\t\tSXA,2\tSET\n\t\t\tP21ORIG\t\t# 0 = EARTH  2 = MOON\n\t\t\tP21FLAG\nP21DSP\t\tCLEAR\tSLOAD\t\t# GENERATE DISPLAY DATA\n\t\t\tLUNAFLAG\n\t\t\tX2\n\t\tBZE\tSET\n\t\t\t+2\t\t# 0 = EARTH\n\t\t\tLUNAFLAG\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTODL\tALPHAV\n\t\t\tTAT\n\t\tCLEAR\tCALL\n\t\t\tERADFLAG\n\t\t\tLAT-LONG\n\t\tDMP\t\t\t# MPAC = ALT, METERS B-29\n\t\t\tK.01\n\t\tSTORE\tP21ALT\t\t# ALT/100 FOR N73 DSP\n# Page 459\n\t\tEXIT\n\t\tCAF\tV06N43\t\t# DISPLAY LAT,LONG,ALT\n\t\tTC\tBANKCALL\t# LAT,LONG = REVS B0 BOTH EARTH/MOON\n\t\tCADR\tGOFLASH\t\t# ALT = METERS B-29  BOTH EARTH/MOON\n\t\tTC\tGOTOPOOH\t# TERM\n\t\tTC\tGOTOPOOH\n\t\tTC\tINTPRET\t\t# V32E RECYCLE\n\t\tDLOAD\tDAD\n\t\t\tP21TIME\n\t\t\t600SEC\t\t# 600 SECONDS OR 10 MIN\n\t\tSTORE\tDSPTEM1\n\t\tRTB\n\t\t\tP21PROG1\n600SEC\t\t2DEC\t60000\t\t# 10 MIN\n\nP21ONENN\tOCT\t00001\t\t# NEEDED TO DETERMINE VEHICLE\n\t\tOCT\t00000\t\t# TO BE INTEGRATED\nV06N43\t\tVN\t00643\nV6N34\t\tVN\t00634\nK.01\t\t2DEC\t.01\n\n"
  },
  {
    "path": "Comanche055/IMU_CALIBRATION_AND_ALIGNMENT.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tIMU_CALIBRATION_AND_ALIGNMENT.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 423-455\n# Contact:      Onno Hommes <ohommes@cmu.edu>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-10 OH\tBatch 1 Assignment Comanche Transcription\n#\t\t2009-05-20 RSB\tCorrections: P00D00H -> P00DOOH, definition\n#\t\t\t\tof 25DECML fixed.\n#\t\t2009-05-23 RSB\tAt SPECSTS, corrected to PRIO22.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 423\n# NAME- IMU PERFORMANCE TESTS 2\n\n# DATE- MARCH 20,1967\n#\n# BY- SYSTEM TEST GROUP 864-6900 EXT. 1274\n\n# MODNO.- ZERO\n\n# FUNCTIONAL DESCRIPTION\n\n# POSITIONING ROUTINES FOR THE IMU PERFORMANCE TESTS AS WELL AS SOME OF\n# THE TESTS THEMSELVES.  FOR A DESCRIPTION OF THESE SUBROUTINES AND THE\n# OPERATING PROCEDURES (TYPICALLY) SEE STG MEMO 685.THEORETICAL REF.E-1973\n\n\t\tBANK\t33\n\t\tSETLOC\tIMUCAL\n\t\tBANK\n\n\t\tEBANK=\tPOSITON\nIMUTEST\t\tCA\tZERO\n\t\tTS\tDRIFTT\n\t\tTS\tGEOCOMP1\n\t\tCAF\tTESTTIME\n\t\tTS\tLENGTHOT\n\t\tTC\tCOAALIGN\t\t# TAKE CARE OF DRIFT FLAG\n\t\tCAF\t1SECX\n\t\tTS\t1SECXT1\n\n\t\tCA\tOC14400\n\t\tTS\t1/PIPADT\nGUESS\t\tTC\tINTPRET\t\t\t# CALCULATE -COS LATITUDE AND SIN LATITUDE\n\t\tCALL\n\t\t\tLATAZCHK\n\t\tCOS\tDCOMP\n\t\tSL1\n\t\tSTODL\tWANGI\n\t\t\tLATITUDE\n\t\tSIN\tSL1\n\t\tSTORE\tWANGO\n\t\tEXIT\nGEOIMUTT\tTC\tBANKCALL\t\t# GYROCOMPASS COMES IN HERE\n\t\tCADR\tIMUZERO\n\t\tTC\tIMUSTLLG\nIMUBACK\t\tCA\tZERO\n\t\tTS\tNDXCTR\n\t\tTS\tTORQNDX\n\t\tTS\tTORQNDX\t+1\nNBPOSPL\t\tCA\tDEC17\n\t\tTS\tZERONDX1\n\t\tCA\tXNBADR\n# Page 424\n\t\tTC\tZEROING\n\t\tCA\tHALF\n\t\tTS\tXNB\n\t\tTC\tINTPRET\n\t\tDLOAD\tSIN\n\t\t\tAZIMUTH\n\t\tSTORE\tYNB\t+2\n\t\tSTODL\tZNB\t+4\n\t\t\tAZIMUTH\n\t\tCOS\n\t\tSTORE\tYNB\t+4\n\t\tDCOMP\n\t\tSTORE\tZNB\t+2\n\t\tEXIT\n\t\tTC\tCHECKMM\n\t\tMM\t03\t\t\t#   SEE IF IN OPTICAL VERIFICATION\n\t\tTCF\t+2\t\t\t#  NO\n\t\tTCF\tSETNBPOS +1\t\t#    YES\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tCALCGA\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUCOARS\n\t\tCAF\tGLOKFBIT\t\t# IF GLOKFAIL SET, GIMBAL LOCK\n\t\tMASK\tFLAGWRD3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tINCR\tNDXCTR\t\t\t# +1 IF IN GIMBAL LOCK,OTHERWISE 0\n\t\tTC\tDOWNFLAG\t\t# RESET GIMBAL LOCK FLAG\n\t\tADRES\tGLOKFAIL\t\t# BIT 14 FLAG 3\n\t\tTC\tIMUSTLLG\n\t\tCCS\tNDXCTR\t\t\t# IF ONE GO AND DO A PIPA TEST ONLY\n\t\tTC\tPIPACHK\t\t\t# ALIGN AND MEASURE VERTICAL PIPA RATE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUFINE\n\t\tTC\tIMUSTLLG\n\t\tEXTEND\n\t\tDCA\tPERFDLAY\n\t\tTC\tLONGCALL\n\t\tEBANK=\tPOSITON\n\t\t2CADR\tGOESTIMS\n\n\t\tCA\tESTICADR\n\t\tTC\tJOBSLEEP\nGOESTIMS\tCA\tESTICADR\n\t\tTC\tJOBWAKE\n\t\tTC\tTASKOVER\nESTICADR\tCADR\tESTIMS\n# Page 425\nTORQUE\t\tCA\tZERO\n\t\tTS\tDSPTEM2\n\t\tCA\tDRIFTI\n\t\tTS\tDSPTEM2\t+1\n\t\tINDEX\tPOSITON\n\t\tTS\tSOUTHDR\t-1\n\t\tTC\tSHOW\n\nPIPACHK\t\tINDEX\tNDXCTR\t\t# PIPA TEST\n\t\tTC\t+1\n\t\tTC\tEARTHR*\n\t\tCA\tDEC57\n\t\tTS\tLENGTHOT\n\t\tCA\tONE\n\t\tTS\tRESULTCT\n\t\tCA\tZERO\n\t\tINDEX\tPIPINDEX\n\t\tTS\tPIPAX\n\t\tTS\tDATAPL\n\t\tTS\tDATAPL +4\n\t\tTC\tCHECKG\t\t# PIP PULSE CATCHING ROUTINE\n\t\tINHINT\n\t\tCAF\tTWO\n\t\tTC\tTWIDDLE\n\t\tEBANK=\tXSM\n\t\tADRES\tPIPATASK\n\t\tTC\tENDOFJOB\nPIPATASK\tEXTEND\n\t\tDIM\tLENGTHOT\n\t\tCA\tLENGTHOT\n\t\tEXTEND\n\t\tBZMF\tSTARTPIP\n\t\tCAF\tBIT10\n\t\tTC\tTWIDDLE\n\t\tEBANK=\tXSM\n\t\tADRES\tPIPATASK\nSTARTPIP\tCAF\tPRIO20\n\t\tTC\tFINDVAC\n\t\tEBANK=\tXSM\n\t\t2CADR\tPIPJOBB\n\n\t\tTC\tTASKOVER\n\nPIPJOBB\t\tINDEX\tNDXCTR\n\t\tTC\t+1\n\t\tTC\tEARTHR*\n\t\tCA\tLENGTHOT\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTC\tENDOFJOB\n\t\tCA\tFIVE\n# Page 426\n\t\tTS\tRESULTCT\n\t\tTC\tCHECKG\n\t\tEXTEND\n\t\tDCS\tDATAPL\n\t\tDAS\tDATAPL \t+4\n\n\t\tTC\tINTPRET\n\t\tDLOAD\tDSU\n\t\t\tDATAPL\t+6\n\t\t\tDATAPL \t+2\n\t\tBPL\tCALL\n\t\t\tAINGOTN\n\t\t\tOVERFFIX\nAINGOTN\t\tPDDL\tDDV\n\t\t\tDATAPL \t+4\n\t\tSL4\tDMPR\n\t\t\tDEC585\t\t# DEC585 HAS BEEN REDEFINED FOR LEM\n\t\tRTB\n\t\t\tSGNAGREE\n\t\tSTORE\tDSPTEM2\n\t\tEXIT\n\t\tCCS\tNDXCTR\n\t\tTC\tCOAALIGN\t# TAKE PLATFORM OUT OF GIMBAL LOCK\n\t\tTC\tSHOW\nVERTDRFT\tCA\t3990DEC\t\t# ABOUT 1 HOUR VERTICAL DRIFT TEST\n\t\tTS\tLENGTHOT\n\t\tINDEX\tPOSITON\n\t\tCS\tSOUTHDR -2\n\t\tTS\tDRIFTT\n\t\tCA\tXSM\t+4\t# 0 IF POSN 4\n\t\tEXTEND\n\t\tBZF\tPON2\nPON4\t\tCS\tBIT5\t\t# \tOFFSET PLATFORM\n\t\tADS\tERCOMP1\t+2\n\t\tCA\tBIT5\n\t\tADS\tERCOMP1\n\t\tTCF\tPONG\nPON2\t\tCS\tBIT5\n\t\tADS\tERCOMP1 +2\n\t\tCA\tBIT5\n\t\tADS\tERCOMP1 +4\nPONG\t\tTC\tEARTHR*\n\t\tCA\tZERO\t\t# ALLOW ONLY SOUTH GYRO EARTH RATE COMPENS\n\t\tTS\tERVECTOR\n\t\tTS\tERVECTOR +1\nGUESS1\t\tCAF\tPOSMAX\n\t\tTS\tTORQNDX\n\t\tTS\tTORQNDX +1\n\t\tCA\tCDUX\n\t\tTS\tLOSVEC\n# Page 427\n\t\tTC\tESTIMS\nVALMIS\t\tCA\tDRIFTO\n\t\tTS\tDSPTEM2 +1\n\t\tCA\tZERO\n\t\tTS\tDSPTEM2\n\t\tTC\tSHOW\n\nENDTEST1\tTC\tDOWNFLAG\t# IMU NOT IN USE\n\t\tADRES\tIMUSE\t\t# BIT 8 FLAG 0\n\t\tCS\tZERO\n\t\tTC\tNEWMODEX +3\n\t\tTC\tBANKCALL\n\t\tCADR\tMKRELEAS\n\t\tTC\tENDEXT\n# Page 428\n\nOVERFFIX\tDAD\tDAD\n\t\t\tDPPOSMAX\n\t\t\tONEDPP\n\t\tRVQ\n\nCOAALIGN\tEXTEND\t\t\t# COARSE ALIGN SUBROUTINE\n\t\tQXCH\tQPLACE\n\t\tCA\tZERO\n\t\tTS\tTHETAD\n\t\tTS\tTHETAD +1\n\t\tTS\tTHETAD +2\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUCOARS\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tSOMERR2\n\t\tTC\tQPLACE\n\nIMUSTLLG\tEXTEND\n\t\tQXCH\tQPLACE\n\t\tTC\tCOAALIGN +10\n\nCHECKG\t\tEXTEND\t\t\t# PIP PULSE CATCHING ROUTINE\n\t\tQXCH\tQPLACE\n\t\tTC\t+6\nCHECKG1\t\tRELINT\n\t\tCA\tNEWJOB\n\t\tEXTEND\n\t\tBZMF\t+6\n\t\tTC\tCHANG1\n\t\tINHINT\n\t\tINDEX\tPIPINDEX\n\t\tCS\tPIPAX\n\t\tTS\tZERONDX\n\t\tINHINT\n\t\tINDEX\tPIPINDEX\n\t\tCA\tPIPAX\n\t\tAD\tZERONDX\n\t\tEXTEND\n\t\tBZF\tCHECKG1\n\t\tINDEX\tPIPINDEX\n\t\tCA\tPIPAX\n\t\tINDEX\tRESULTCT\n\t\tTS\tDATAPL\n\t\tTC\tFINETIME\n\t\tINDEX\tRESULTCT\n\t\tTS\tDATAPL +1\n# Page 429\n\t\tINDEX\tRESULTCT\n\t\tLXCH\tDATAPL +2\n\t\tRELINT\nENDCHKG\t\tTC\tQPLACE\n\nZEROING\t\tTS\tL\n\t\tTCF\t+2\nZEROING1\tTS\tZERONDX1\n\t\tCAF\tZERO\n\t\tINDEX\tL\n\t\tTS\t0\n\t\tINCR\tL\n\t\tCCS\tZERONDX1\n\t\tTCF\tZEROING1\n\t\tTC\tQ\n\n# Page 430\n\t\tSETLOC\tIMUCAL3\n\t\tBANK\nERTHRVSE\tDLOAD\tPDDL\n\t\t\tSCHZEROS\t# PD24 = (SIN\t\t-COS\t0)(OMEG/MS)\n\t\t\tLATITUDE\n\t\tCOS\tDCOMP\n\t\tPDDL\tSIN\n\t\t\tLATITUDE\n\t\tVDEF\tVXSC\n\t\t\tOMEG/MS\n\t\tSTORE\tERVECTOR\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTOVL\tTMARK\n\t\t\tSCHZEROS\n\t\tSTORE\tERCOMP1\n\t\tRVQ\n\t\tSETLOC\tIMUCAL\n\t\tBANK\nEARTHR\t\tITA\tRTB\t\t# CALCULATES AND COMPENSATES EARTH RATE\n\t\t\tS2\n\t\t\tLOADTIME\n\t\tSTORE\tTEMPTIME\n\t\tDSU\tBPL\n\t\t\tTMARK\n\t\t\tERTHR\n\t\tCALL\n\t\t\tOVERFFIX\nERTHR\t\tSL\tVXSC\n\t\t\t9D\n\t\t\tERVECTOR\n\t\tMXV\tVAD\n\t\t\tXSM\n\t\t\tERCOMP1\n\t\tSTODL\tERCOMP1\n\t\t\tTEMPTIME\n\t\tSTORE\tTMARK\n\t\tAXT,1\tRTB\n\t\tECADR\tERCOMP1\n\t\t\tPULSEIMU\n\t\tGOTO\n\t\t\tS2\n\nEARTHR*\t\tEXTEND\n\t\tQXCH\tQPLACES\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tEARTHR\nPROUT\t\tEXIT\n\t\tTC\tIMUSTLLG\n\t\tTC\tQPLACES\n# Page 431\n\nSHOW\t\tEXTEND\n\t\tQXCH\tQPLACE\nSHOW1\t\tCA\tPOSITON\n\t\tTS\tDSPTEM2 +2\n\t\tCA\tVB06N98\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tENDTEST1\t# V 34\n\t\tTC\tQPLACE\t\t#  V33\n\t\tTCF\tSHOW1\n\n\nOC14400\t\tOCT\t14400\n3990DEC\t\t=\tOMEG/MS\nVB06N98\t\tVN\t0698\nTESTTIME\tOCT\t01602\nDEC17\t\t=\tND1\nOGCPL\t\tECADR\tOGC\n1SECX\t\t=\t1SEC\nDEC57\t\t=\tVD1\nXNBADR\t\tGENADR\tXNB\nXSMADR\t\tGENADR\tXSM\nOMEG/MS\t\t2DEC\t.24339048\n\n\nP11OUT\t\tTC\tBANKCALL\n\t\tCADR\tMATRXJOB\t# RETURN TO P11\n\n\t\tCOUNT\t02/COMST\n\n\t\tBLOCK\t2\nFINETIME\tINHINT\t\t\t# RETURNS WITH INTERRUPT INHIBITED\n\t\tEXTEND\n\t\tREAD\tLOSCALAR\n\t\tTS\tL\n\t\tEXTEND\n\t\tRXOR\tLOSCALAR\n\t\tEXTEND\n\t\tBZF\t+4\n\t\tEXTEND\n\t\tREAD\tLOSCALAR\n\t\tTS\tL\n\t+4\tCS\tPOSMAX\n\t\tAD\tL\n\t\tEXTEND\n\t\tBZF\tFINETIME +1\n\t\tEXTEND\n\t\tREAD\tHISCALAR\n\t\tTC Q\n\n# Page 432\n# PROGRAM NAME-OPTIMUM PRELAUNCH ALIGNMENT CALIBRATION\n# DATE- NOVEMBER 2 1966\n# BY- GEORGE SCHMIDT IL 7-146 EXT. 126\n# MOD NO 3\n# FUNCTIONAL DESCRIPTION\n\n# THIS\tSECTION CONSISTS OF PRELAUNCH ALIGNMENT AND GYRO DRIFT TESTS\n# INTEGRATED TOGETHER TO SAVE WORDS.  COMPASS IS COMPLETELY RESTART\n# PROOFED EXCEPT FOR THE FIRST 30 SECONDS OR SO.  PERFORMANCE TESTS OF\n# THE IRIGS IS RESTART PROOFED ENOUGH TO GIVE 75 PERCENT CONFIDENCE THAT\n# IF A RESTART OCCURS THE DATA WILL STILL BE GOOD.  GOOD PRACTICE TO RECYCL\n# WHEN A RESTART OCCURS UNLESS IT HAPPENS NEAR THE END OF A TEST-THEN WAIT\n# FOR THE DATA TO FLASH.\n# A RESTART IN GYROCOMPASS DURING GYRO TORQUING CAUSES PULSES TO BE LOST\n# THE PRELAUNCH ALIGNMENT TECHNIQUE IS BASICALLY THE SAME AS IN BLOCK 1\n# EXCEPT THAT IT HAS BEEN SIMPLIFIED IN THE SENSE THAT SMALL ANGLE APPROX.\n# HAVE BEEN USED.  THE DRIFT TESTS USE A UNIQUE IMPLEMENTATION OF THE\n# OPTIMUM STATISTICAL FILTER.  FOR A DESCRIPTION SEE E-1973.BOTH OF THESE\n# ROUTINES USE STANDARD SYSTEM TEST LEADIN PROCEDURES.  THE INITIALIZATION\n# PROCEDURE THE DRIFT TESTS IS IN THE JDC S.  THE INITIALIZATION METHOD\n# FOR GYROCOMPASS IS AN ERAS LOAD THEN A MISSION PHASE CALL.\n# THE COMPASS ALIGNS TO Z DOWN,X DOWNRANGE, HAS THE CAPABILITY\n# CHANGE AZIMUTH WHILE RUNNING , IS COMPENSATED FOR\n# COMPONENT ERRORS,IS CAPABLE OF OPTICAL VERIFICATION( CSM ONLY).\n\n# COMPASS ERASABLE LOAD REQUIRED\n\n#  1-LAUNCHAZ -DP AZIMUTH IN REV FROM NORTH OF XSM DESIRED\t(NOM=.2)\n# 2- LATITUDE -DP-OF LAUNCH PAD\n# 3- AZIMUTH-DP-OF ZNB OF VEHICLE\n# 4- IMU COMPENSATION PARAMETERS\n# 5-AZ AND ELEVATION OF TARGETS 1,2\t\t****OPTIONAL****\n\n# TO PERFORM AS PART OF COMPASS\n\n# 1-OPTICAL VERIFICATION- V 65 E\n# 2-AZIMUTH CHANGE-V 78 E\n\n# SUBROUTINES CALLED\n\n# DURING OPTICAL VERIFICATION (CSM ONLY) ESSENTIALLY ALL OF INFLIGHT ALIGN\n# IS CALLED IN ONE WAY OR ANOTHER.  SEE THE LISTING.\n\n# NORMAL EXIT\n\n# DRIFT TESTS-  LENGTHOT GOES TO ZERO-RETURN TO IMU PERF TEST2 CONTROL\n# GYROCOMPASS-MANY, SEE THE LISTING\n# ALARMS\n\n# 1600\tOVERFLOW IN DRIFT TEST\n# Page 433\n# 1601\tBAD IMU TORQUE ABORT\n# 1602\tBAD OPTICS DURING VERIFICATION-RETURN TO COMPASS\tCSM ONLY\n\n# OUTPUT\n\n# DRIFT TESTS- FLASHING DISPLAYS OF RESULTS-CONTROLLED IN IMU PERF TESTS 2\n# COMPASS-PROGRAM MODE LIGHTS TELL YOU WHAT PHAS OF PROGRAM YOU ARE IN\n#   01\tINITIALIZING THE PLATFORM POSITION AND ERASABLE\n#   02\tGYROCOMPASSING\n#   03\tDOING OPTICAL VERIFICATION (CSM)\n#\n#\n# DEBRIS\n\n# ALL CENTRALS,ALL OF EBANK XSM\n\n# Page 434\n# MOST OF THE ROUTINES COMMON TO ALIGNMENT AND CALIBRATION APPEAR\n# ON THE NEXT FEW PAGES.\n\n\n\t\tCOUNT\t33/P02\n\n\t\tEBANK=\tXSM\n\t\tBANK\t33\n\t\tSETLOC\tIMUCAL\n\t\tBANK\n\nESTIMS\t\tTC\t2PHSCHNG\t# COMES HERE FROM IMU2\n\t\tOCT\t00075\n\t\tOCT\t00004\t\t# TURN OFF GROUP 4 IF ON\nRSTGTS1\t\tINHINT\t\t\t# COMES HERE PHASE1 RESTART\n\t\tCA\tTIME1\n\t\tTS\tGTSWTLT1\n\t\tCAF\tZERO\t\t# ZERO THE PIPAS\n\t\tTS\tPIPAX\n\t\tTS\tPIPAY\n\t\tTS\tPIPAZ\n\t\tRELINT\n\t\tCA\t77DECML\t\t# ZERO ALL NECESSARY LOCATIONS\n\t\tTS\tZERONDX1\n\t\tCA\tALXXXZ\n\t\tTC\tZEROING\n\t\tTC\tINTPRET\n\t\tSLOAD\n\t\t\tSCHZEROS\n\t\tSTOVL\tGCOMPSW -1\n\t\t\tINTVAL +2\t# LOAD SOME INITIAL DRIFT GAINS\n\t\tSTOVL\tALX1S\n\t\t\tSCHZEROS\n\t\tSTORE\tGCOMP\n\t\tSTORE\tDELVX\t\t# GCOMPZER SUBROUTINE NO LONGER NEEDED\n\t\tEXIT\n\n\t\tCCS\tGEOCOMP1\t# NON ZERO IF COMPASS.\n\t\tTC\t+2\n\t\tTC\tSLEEPIE\t+1\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tERTHRVSE\n\t\tEXIT\n\t\tCA\tLENGTHOT\t# TIMES FIVE IS THE NUM OF SEC ERECTING\n\t\tTS\tERECTIME\n\n\t\tTC\tNEWMODEX\n\t\tMM\t02\n\t\tTC\tBANKCALL\t# SET UP PIPA FAIL TO CAUSE ISS ALARM\n# Page 435\n\t\tCADR\tPIPUSE\t\t# COMPASS NEVER TURNS THIS OFF\n\t\tTC\tANNNNNN\t\t# END OF FIRST TIME THROUGH\n\n# Page 436\n# COMES HERE AT THE END OF EVERY ITERATION THROUGH DRIFT TEST OR COMPASS\n\n# SET UP WAITLIST SECTION\nSLEEPIE\t\tTS\tLENGTHOT\t# TEST NOT OVER-DECREMENT LENGTHOT\n\t\tTC\tPHASCHNG\t# CHANGE PHASE\n\t\tOCT\t00135\n\t\tCCS\tTORQNDX\t\t# ARE WE DOING VERTDRIFT\n\t\tTC\tEARTHR*\t\t# TRUE TORQUE SOUTH GYRO\nWTLISTNT\tTC\tCHKCOMED\t# \tSEE IF COMPASS OVER\n\t\tTC\tSETGWLST\n\t\tTC\tENDOFJOB\n\nSETGWLST\tEXTEND\n\t\tQXCH\tMPAC\t\t# CALLED EVERY WAITLIST OR AZIMUTH CHANGE\n\t\tINHINT\n\t\tCS\tTIME1\n\t\tAD\tGTSWTLT1\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tAD\tNEGMAX\t\t# 10 MS ERROR OK\n\t\tAD\t1SECXT1\t\t# 1 SEC FOR CALIBRATION, .5 SEC IN COMPASS\n\t\tEXTEND\n\t\tBZMF\tRIGHTGTS\nWTGTSMPL\tTC\tTWIDDLE\n\t\tEBANK=\tALTIM\n\t\tADRES\tALLOOP\n\t\tTC\tMPAC\nRIGHTGTS\tCAF\tFOUR\t\t# SET UP NEXT WAITLIST-ALLOW SOME TIME\n\t\tTC\tWTGTSMPL\t# END OF WAITLIST SECTION\n\n\n# STORE AND LOAD DATA SECTIONS FOR RESTART PROOFING\n\n25DECML\t\tEQUALS\tOCT31\nSTOREDTA\tCAF\t25DECML\n\t\tTS\tMPAC\n\t\tINDEX\tMPAC\n\t\tCAE\tTHETAX1\n\t\tINDEX\tMPAC\n\t\tTS\tRESTARPT\n\t\tCCS\tMPAC\n\t\tTCF\tSTOREDTA +1\n\t\tTC\tQ\n\nLOADSTDT\tCAF\t25DECML\n\t\tTS\tMPAC\n\t\tINDEX\tMPAC\n\t\tCA\tRESTARPT\n\t\tINDEX\tMPAC\n\n# Page 437\n\t\tTS\tTHETAX1\n\t\tCCS\tMPAC\n\t\tTCF\tLOADSTDT +1\n\t\tTC\tQ\n\n\n# COMES HERE EVERY ITERATION BY A WAITLIST CALL SET IN SLEEPIE\n\nALLOOP\t\tCA\tTIME1\n\t\tTS\tGTSWTLT1\t# STORE TIME TO SET UP NEXT WAITLIST.\nALLOOP3\t\tCA\tALTIM\n\t\tTS\tGEOSAVE1\n\t\tTC\tPHASCHNG\n\t\tOCT\t00115\nALLOOP1\t\tCAE\tGEOSAVE1\n\t\tTS\tALTIM\n\t\tCCS\tA\n\t\tCA\tA\t\t# SHOULD NEVER HIT THIS LOCATION\n\t\tTS\tALTIMS\n\t\tCS\tA\n\t\tTS\tALTIM\n\t\tCAF\tZERO\n\t\tXCH\tPIPAX\n\t\tTS\tDELVX\n\t\tCAF\tZERO\n\t\tXCH\tPIPAY\n\t\tTS\tDELVY\n\t\tCAF\tZERO\n\t\tXCH\tPIPAZ\n\t\tTS\tDELVZ\n\t\tCAF\t19DECML\t\t# 23 OCT\n\t\tTC\tNEWPHASE\n\t\tOCT\t00005\nSPECSTS\t\tCAF\tPRIO22\n\t\tTC\tFINDVAC\n\t\tEBANK=\tGEOSAVE1\n\t\t2CADR\tALFLT\t\t# START THE JOB\n\n\t\tTC\tTASKOVER\n\n# Page 438\n# THIS IS PART OF THE JOB DONE EVERY ITERATION\n\nALFLT\t\tTC\tSTOREDTA\t# STORE DATA IN CASE OF RESTART IN JOB\n\t\tTC\tPHASCHNG\t# THIS IS THE JOB DONE EVERY ITERATION\n\t\tOCT\t00215\n\t\tTCF\t+2\nALFLT1\t\tTC\tLOADSTDT\t# COMES HERE ON RESTART\n\n\t\tCCS\tGEOCOMP1\n\t\tTC\t+2\n\t\tTC\tNORMLOP\n\t\tTC\tCHKCOMED\t# \tSEE IF PRELAUNCH OVER\n\t\tTC\tBANKCALL\t# COMPENSATION IF IN COMPASS\n\t\tCADR\t1/PIPA\nNORMLOP\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tINTVAL\n\t\tSTOVL\tS1\n\t\t\tDELVX\n\t\tVXM\tVSL1\n\t\t\tXSM\n\t\tDLOAD\tDCOMP\n\t\t\tMPAC +3\n\t\tSTODL\tDPIPAY\n\t\t\tMPAC +5\n\t\tSTORE\tDPIPAZ\n\n\t\tSETPD\tAXT,1\n\t\t\t0\n\t\t\t8D\n\t\tSLOAD\tDCOMP\n\t\t\tGEOCOMP1\n\t\tBMN\n\t\t\tALWAYSG\t\t# DO A QUICK COMPASS\n\n# Page 439\n# NOW WE HAVE JUST THE CALIBRATION PARTS OF THE PROGRAM-NEXT PAGES\n\n\t\tCOUNT\t33/COMST\n\nALCGKK\t\tSLOAD\tBMN\n\t\t\tALTIMS\n\t\t\tALFLT3\t\t# NO NEW GAINS NEEDED\nALKCG\t\tAXT,2\tLXA,1\t\t# LOADS SLOPES AND TIME CONSTANTS AT RQST\n\t\t\t12D\n\t\t\tALX1S\nALKCG2\t\tDLOAD*\tINCR,1\n\t\t\tALFDK +144D,1\n\t\tDEC\t-2\n\t\tSTORE\tALDK +10D,2\n\t\tTIX,2\tSXA,1\n\t\t\tALKCG2\n\t\t\tALX1S\n\nALFLT3\t\tAXT,1\t\t\t# MEASUREMENT INCORPORATION ROUTINES\n\t\t\t8D\t\t# AND GAIN UPDATES\nDELMLP\t\tDLOAD*\tDMP\n\t\t\tDPIPAY +8D,1\n\t\t\tPIPASC\n\t\tSLR\tBDSU*\n\t\t\t9D\n\t\t\tINTY +8D,1\n\t\tSTORE\tINTY +8D,1\n\t\tPDDL\tDMP*\n\t\t\tVELSC\n\t\t\tVLAUN +8D,1\n\t\tSL2R\n\t\tDSU\tSTADR\n\t\tSTORE\tDELM +8D,1\n\t\tSTORE\tDELM +10D,1\n\t\tTIX,1\tAXT,2\n\t\t\tDELMLP\n\t\t\t4\nALILP\t\tDLOAD*\tDMPR*\n\t\t\tALK +4,2\n\t\t\tALDK +4,2\n\t\tSTORE\tALK +4,2\n\t\tTIX,2\tAXT,2\n\t\t\tALILP\n\t\t\t8D\nALKLP\t\tLXC,1\tSXA,1\n\t\t\tCMPX1\n\t\t\tCMPX1\n\t\tDLOAD*\tDMPR*\n\t\t\tALK +1,1\n\t\t\tDELM +8D,2\n# Page 440\n\t\tDAD*\n\t\t\tINTY +8D,2\n\t\tSTORE\tINTY +8D,2\n\t\tDLOAD*\tDAD*\n\t\t\tALK +12D,2\n\t\t\tALDK +12D,2\n\t\tSTORE\tALK +12D,2\n\t\tDMPR*\tDAD*\n\t\t\tDELM +8D,2\n\t\t\tINTY +16D,2\n\t\tSTORE\tINTY +16D,2\n\t\tDLOAD*\tDMP*\n\t\t\tALSK +1,1\n\t\t\tDELM +8D,2\n\t\tSL1R\tDAD*\n\t\t\tVLAUN +8D,2\n\t\tSTORE\tVLAUN +8D,2\n\t\tTIX,2\tAXT,1\n\t\t\tALKLP\n\t\t\t8D\n\n\nLOOSE\t\tDLOAD*\tPDDL*\t\t# EXTRAPOLATE SWAY VARIABLES\n\t\t\tACCWD +8D,1\n\t\t\tVLAUN +8D,1\n\t\tPDDL*\tVDEF\n\t\t\tPOSNV +8D,1\n\t\tMXV\tVSL1\n\t\t\tTRANSM1\n\t\tDLOAD\n\t\t\tMPAC\n\t\tSTORE\tPOSNV +8D,1\n\t\tDLOAD\n\t\t\tMPAC +3\n\t\tSTORE\tVLAUN +8D,1\n\t\tDLOAD\n\t\t\tMPAC +5\n\t\tSTORE\tACCWD +8D,1\n\t\tTIX,1\n\t\t\tLOOSE\n\n\n\t\tAXT,2\tAXT,1\t\t# EVALUATE SINES AND COSINES\n\t\t\t6\n\t\t\t2\nBOOP\t\tDLOAD*\tDMPR\n\t\t\tANGX +2,1\n\t\t\tGEORGEJ\n\t\tSR2R\n\t\tPUSH\tSIN\n# Page 441\n\t\tSL3R\tXAD,1\n\t\t\tX1\n\t\tSTORE\t16D,2\n\t\tDLOAD\n\t\tCOS\n\t\tSTORE\t22D,2\t\t# COSINES\n\t\tTIX,2\n\t\t\tBOOP\n\nPERFERAS\tEXIT\n\t\tCA\tEBANK7\n\t\tEBANK=\tLAT(SPL)\n\t\tTS\tEBANK\n\t\tTC\tLAT(SPL)\t# GO TO ERASABLE ONLY TO RETURN\n\n# CAUTION\n\n# THE ERASABLE PROGRAM THAT DOES THE CALCULATIONS MUST BE LOADED\n# BEFORE ANY ATTEMPT IS MADE TO RUN THE IMU PERFORMANCE TEST\n\n\t\tEBANK=\tLENGTHOT\nONCEMORE\tCCS\tLENGTHOT\n\t\tTC\tSLEEPIE\t\t# TEST NOT OVER SET UP NEXT WAITLIST\n\t\tCCS\tTORQNDX\n\t\tTCF\t+2\n\t\tTC\tSETUPER1\n\t\tCA\tCDUX\n\t\tTS\tLOSVEC +1\t# FOR TROUBLESHOOTING POSNS 2$4 VD\nSETUPER1\tTC\tINTPRET\t\t# DRIFT TEST OVER\n\t\tDLOAD\tPDDL\t\t# ANGLES FROM DRIFT TEST ONLY\n\t\t\tANGZ\n\t\t\tANGY\n\t\tPDDL\tVDEF\n\t\t\tANGX\n\t\tVCOMP\tVXSC\n\t\t\tGEORGEJ\n\t\tMXV\tVSR1\n\t\t\tXSM\n\t\tSTORE\tOGC\n\t\tEXIT\n\nTORQINCH\tTC\tPHASCHNG\n\t\tOCT\t00005\n\t\tCA\tOGCPL\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTC\tIMUSTLLG\n\t\tCCS\tTORQNDX\t\t# + IF IN VERTICAL DRIFT TEST\n\t\tTC\tVALMIS\t\t# VERT DRIFT TEST OVER\n\t\tTC\tINTPRET\n# Page 442\n\t\tCALL\t\t\t# SET UP ERATE FOR PIP TEST OR COMPASS\n\t\t\tERTHRVSE\n\t\tEXIT\n\t\tTC\tTORQUE\t\t# GO TO IMU2 FOR A PIPA TEST AND DISPLAY\n\n\nSOMEERRR\tTC\tALARM\n\t\tOCT\t1600\n\t\tTC\t+3\nSOMERR2\t\tTC\tALARM\n\t\tOCT\t1601\n\t\tTC\tPHASCHNG\n\t\tOCT\t00005\n\t\tTC\tENDTEST1\n\n\n# THE FAMOUS MAGIC NUMBERS OF SCHMIDT ARE NOW PART OF AN ERASABLE LOAD.\n\n\nDEC585\t\tOCT\t02222\t\t# 1170 B+14 ORDER IS NOW IMPORTANT\nSCHZEROS\t2DEC\t.00000000\n\t\t2DEC\t.00000000\n\t\tOCT\t00000\nONEDPP\t\tOCT\t00000\n\t\tOCT\t00001\t\t# \tABOVE ORDER IS IMPORTANT\n\nINTVAL\t\tOCT\t4\n\t\tOCT\t2\n\t\tDEC\t144\n\t\tDEC\t-1\nSOUPLY\t\t2DEC\t.93505870\t# INITIAL GAINS FOR PIP OUTPUTS\n\t\t2DEC\t.26266423\t# INITIAL GAINS/4 FOR ERECTION ANGLES\n\n77DECML\t\tDEC\t77\nALXXXZ\t\tGENADR\tALX1S -1\n# GYROCOMPASS PORTIONS FINISH THIS LOG SECTION\n\n\n\t\tCOUNT\t33/P01\n\n# INITIALIZATION SECTION\n\nGTSCPSS\t\tCA\tFLAGWRD1\t# CALLED BY V37\n\t\tMASK\tNOP01BIT\n# Page 443\n\t\tEXTEND\n\t\tBZF\tGTSCPSSA\n\t\tTC\tPOODOO\n\t\tOCT\t1521\t\t# NODO ALARM FOR P01 - P11 ALREADY DONE\n\nGTSCPSSA\tCAF\tONE\n\t\tTS\tGEOCOMP1\t# THIS IS THE LEAD IN FOR COMPASS.\n\t\tCA\t1/PIPAGT\n\t\tTS\t1/PIPADT\nNXXTENN\t\tCA\tBIT8\n\t\tTS\tLENGTHOT\n\t\tCAF\t1/2SECX\t\t# COMPASS IS A .5 SEC LOOP\n\t\tTS\t1SECXT1\n\t\tCAF\tONE\n\t\tTS\tPREMTRX1\n\t\tTS\tPERFDLAY +1\n\t\tCAF\tZERO\n\t\tTS\tPERFDLAY\n\t\tEXTEND\n\t\tDCA\tLUNCHAZ1\n\t\tDXCH\tNEWAZ1\n\t\tEXTEND\n\t\tDCA\tLUNCHAZ1\n\t\tDXCH\tOLDAZMTH\nSETUPGC\t\tCA\tDEC17\n\t\tTS\tZERONDX1\n\t\tCA\tXSMADR\n\t\tTC\tZEROING\n\t\tTC\tPOSN17C\n\t\tTC\tGEOIMUTT\t# GO TO IMU2 FOR FURTHER INITIALIZATION\n\n\nPOSN17C\t\tEXTEND\t\t\t# COMPASS POSITION Z DOWN,X DOWNRANGE\n\t\tQXCH\tQPLACE\t\t# FROM NORTH IN REVOLUTIONS + CLOCKWISE\n\t\tCS\tHALF\t\t# ALL THIS TO INITIALIZE MATRIX\n\t\tTS\tZSM\n\t\tTC\tINTPRET\n\t\tDLOAD\tPUSH\n\t\t\tNEWAZ1\n\t\tSIN\n\t\tSTORE\tXSM\t+4\n\t\tSTODL\tYSM\t+2\n\t\tCOS\n\t\tSTORE\tYSM\t+4\n\t\tDCOMP\n\t\tSTORE\tXSM\t+2\n\t\tEXIT\n\t\tTC\tQPLACE\n\n# Page 444\n# JOB DONE EVERY ITERATION THROUGH COMPASS PROGRAM.SET BY TASK ALLOOP\n\n\t\tCOUNT\t33/P02\n\nALWAYSG\t\tDLOAD*\tDSU*\t\t# COMPASS AND ERECT\n\t\t\tDPIPAY +8D,1\n\t\t\tFILDELV1 +8D,1\n\t\tDMPR\tDAD*\n\t\t\tGEOCONS1\n\t\t\tFILDELV1 +8D,1\n\t\tSTORE\tFILDELV1 +8D,1\n\t\tDAD*\n\t\t\tINTVEC1 +8D,1\n\t\tSTORE\tINTVEC1 +8D,1\n\t\tDMPR\tDAD*\n\t\t\tGEOCONS2\n\t\t\tFILDELV1 +8D,1\n\t\tDMPR\tPUSH\n\t\t\tGEOCONS5\n\t\tTIX,1\tSLOAD\n\t\t\tALWAYSG\n\t\t\tERECTIM1\n\t\tBZE\tDLOAD\n\t\t\tCOMPGS\n\t\t\tTHETAN1 +2\n\t\tDSU\tSTADR\n\t\tSTODL\tTHETAN1 +2\t# ERECTION ONLY.\n\t\tBDSU\n\t\t\tTHETAN1 +4\n\t\tSTORE\tTHETAN1 +4\n\t\tGOTO\n\t\t\tADDINDRF\nCOMPGS\t\tDLOAD\tDAD\t\t# COMPASS\n\t\t\tTHETAN1\n\t\t\tFILDELV1\n\t\tSTODL\tTHETAN1\n\t\t\tFILDELV1\n\t\tDMPR\tBDSU\n\t\t\tGEOCONS3\n\t\t\tTHETAN1 +4\n\t\tSTODL\tTHETAN1 +4\n\t\t\tFILDELV1 +4\n\t\tDMPR\tBDSU\n\t\t\tGEOCONS3\n\t\t\tTHETAN1 +2\n\t\tPDDL\tDMPR\n\t\t\tINTVEC1 +4\n\t\t\tGEOCONS4\n\t\tBDSU\tSTADR\n\t\tSTORE\tTHETAN1 +2\n# Page 445\nADDINDRF\tEXIT\n\n\nENDGTSAL\tCCS\tLENGTHOT\t# IS 5 SEC OVER-THE TIME TO TORQ PLATFORM\n\t\tTC\tSLEEPIE\t\t# NO-SET UP NEXT WAITLIST CALL FOR .5 SEC\n\t\tTC\tCHKCOMED\n\t\tCCS\tLGYRO\t\t# YES BUT ARE GYROS BUSY\n\t\tTCF\tSLEEPIE +1\t# BUSY-GET THEM .5 SECONDS FROM NOW\n\nLASTGTS\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tERCOMP1\n\t\tSTODL\tTHETAX1\n\t\t\tTMARK\n\t\tSTORE\tALK\n\t\tEXIT\t\t\t# PREVIOUS SECTION WAS FOR RESTARTS\n\nRESTAIER\tTC\tPHASCHNG\n\t\tOCT\t00275\n\t\tTC\tINTPRET\t\t# ADD COMPASS COMMANDS INTO ERATE\n\t\tVLOAD\tMXV\n\t\t\tTHETAN1\n\t\t\tXSM\n\t\tVSL1\tVAD\n\t\t\tTHETAX1\n\t\tSTODL\tERCOMP1\n\t\t\tALK\n\t\tSTORE\tTMARK\n\t\tEXIT\n\t\tTC\tEARTHR*\t\t# TORQUE IT ALL IN\n\t\tCAE\tERECTIM1\n\t\tTS\tGEOSAVE1\n\t\tTC\tPHASCHNG\n\t\tOCT\t00155\nRESTEST1\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tSCHZEROS\n\t\tSTORE\tTHETAN1\n\t\tEXIT\n\t\tCCS\tPREMTRXC\n\t\tTC\tNOCHORLD\n\t\tTC\tPHASCHNG\n\t\tOCT\t00255\nRESTEST3\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tLAUNCHAZ\n\t\tDSU\tBZE\n\t\t\tOLDAZMTH\n\t\t\tNOAZCHGE\n\t\tSTORE\t0D\n# Page 446\n\t\tSLOAD\tDAD\n\t\t\tONEDPP +1\n\t\t\tPREMTRXC\t# DOES NOT CHANGE LAUNCHAZ\n\t\tSTODL\tPREMTRXC\n\t\t\tLAUNCHAZ\n\t\tSTODL\tNEWAZMTH\n\t\t\t0D\nADERCOMP\tSTORE\tERCOMP +4\n\t\tEXIT\n\t\tTC\tPOSN17C\n\t\tTC\tPHASCHNG\n\t\tOCT\t00335\nRESCHNG\t\tEXTEND\n\t\tDCA\tNEWAZMTH\n\t\tDXCH\tOLDAZMTH\n\t\tCA\tBIT7\t\t# SPEND 320 SEC ERECTING\n\t\tTS\tLENGTHOT\n\t\tTC\tPHASCHNG\n\t\tOCT\t00075\nSPITGYRO\tCA\tERCOMPPL\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tSOMERR2\n\t\tTC\tESTIMS\t\t# RE-INITIALIZE\n\n\nNOAZCHGE\tEXIT\n\t\tCA\tONE\n\t\tTS\tPREMTRXC\nNOCHORLD\tCCS\tGEOSAVE1\n\t\tTS\tERECTIM1\t# COUNTS DOWN FOR ERECTION.\n\nANNNNNN\t\tCAF\tNINE\n\t\tTS\tLENGTHOT\n\t\tTC\tSLEEPIE +1\n\n\nCHKCOMED\tINHINT\n\t\tCS \tMODREG\t\t# CHECK FOR MM 07 FIRST\n\t\tAD \tSEVEN\n\t\tEXTEND\n\t\tBZF \tGOBKCALB\t# IF MM 07 RETURN TO PERF TEST\n\t\tCS\tZERO\n\t\tEXTEND\n\t\tRXOR\tCHAN30\t\t# READ AND INVERT BITS IN CHANNEL 30\n\t\tMASK\tBIT5\t\t# LIFTOFF BIT\n\t\tCCS\tA\n\t\tTCF\tPRELTERM\t# LIFTOFF HAS OCCURRED\n\n# Page 447\n\t\tCA\tGRRBKBIT\t# CHECK FOR BACKUP LIFTOFF\n\t\tMASK\tFLAGWRD5\t# BIT5 FLAGWRD5\n\t\tCCS\tA\n\t\tTCF\tPRELTERM\t# BACKUP RECEIVED\n\n\t\tRELINT\nGOBKCALB\tTC\tQ\n\nPRELTERM\tCA\tPRIO22\t\t# PRELAUNCH DONE - SET UP P11\n\t\tTC\tPRIOCHNG\t# INCREASE PRIORITY HIGHER THAN SERVICER\n\t\tINHINT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tP11\n\n\nERCOMPPL\tECADR\tERCOMP\n\nGEOCONS5\tEQUALS\tHIDPHALF\n1/PIPAGT\tOCT\t06200\n17DECML\t\t=\tND1\t\t# OCT 21\n19DECML\t\t=\tVD1\t\t# OCT 23\n1/2SECX\t\t=\t.5SEC\n\n\n# Page 448\nGEOSTRT4\tEQUALS\tENDOFJOB\n\n# Page 449\n# OPTICAL VERIFICATION ROUTINES FOR GYROCOMPASS\n\n\t\tCOUNT\t33/P03\n\nGCOMPVER\tTC\tPHASCHNG\t# OPTICAL VERIFICATION ROUTINE\n\t\tOCT\t00154\n\t\tTC\tNEWMODEX\t# ENTERED BY VERB 65 ENTER\n\t\tMM\t03\nSETNBPOS\tTC\tNBPOSPL\n\t\tTC\tBANKCALL\n\t\tCADR\tMKRELEAS\nOPTDATA\t\tCAF\tBIT1\t\t# CALLS FOR AZIMUTH AND ELEVATION OF TARGE\n\t\tZL\t\t\t# T 1,THEN TARGET 2\n\t\tLXCH\tRUN\t\t# AZIMUTH CLOCKWSE FROM NORTH TO TARGET\n\t\tTS\tDSPTEM1 +2\t# ELEVATION MEASURED FROM HORIZONTAL\n\t\tEXTEND\n\t\tINDEX\tRUN\n\t\tDCA\tTAZEL1\n\t\tDXCH\tDSPTEM1\n\t\tCAF\tV05N30E\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPRET\n\t\tCAF\tVN0641\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGCOMP5\n\t\tTC\t+3\n\t\tTC\t-8D\nVN0641\t\tVN\t0641\n\t\tDXCH\tDSPTEM1\t\t# TAZEL1 TARGET 1 AZIMUTH\n\t\tINDEX\tRUN\n\t\tDXCH\tTAZEL1\t\t# TAZEL1 +2 TARGET 2 AZIMUTH\n\t\tCCS\tRUN\n\t\tTCF\t+4\n\t\tCAF\tTWO\n\t\tTS\tL\n\t\tTCF\tOPTDATA +2\t# MPAC\t1ST PASS=0 2ND PASS=2\n\n\n\t\tTC\tCONTIN33\n\nV05N30E\t\tVN\t0530\n\n\t\tTC\tINTPRET\t\t# UNDYNAMIC ASSEMBLER\nTAR/EREF\tAXT,1\tAXT,2\t\t# TARGET VECTOR\n\t\t\t2\t\t# SIN(EL)   -COS(AZ)COS(EL)   SIN(AZ)COS(EL\n\t\t\t12D\n\t\tSSP\tSETPD\n\t\t\tS2\n\t\t\t6\n# Page 450\n\t\t\t0\nTAR1\t\tSLOAD*\tSR2\t\t# X1=2 X2=12 S2=6 X1=0 X2=6 S2=6\n\t\t\tTAZEL1 +3,1\n\t\tSTORE\t0\t\t# PD00 ELEVATION PD00\n\t\tSIN\n\t\tSTORE\t18D,2\t\t# PD06 *** SIN(EL) ***PD12\n\t\tDLOAD\n\t\t\t0\n\t\tCOS\tPUSH\t\t# PD00 COS(EL) PD00\n\t\tSLOAD*\tRTB\n\t\t\tTAZEL1 +2,1\n\t\t\tCDULOGIC\n\t\tSTORE\t2\t\t# PD02 AZIMUTH PD02\n\t\tSIN\tDMP\n\t\t\t0\n\t\tSL1\n\t\tSTORE\t22D,2\t\t# PD10 *** SIN(AZ)COS(EL) ***PD16\n\t\tDLOAD\tCOS\n\t\t\t2\n\t\tDMP\tSL1\n\t\tDCOMP\tAXT,1\n\t\t\t0\n\t\tSTORE\t20D,2\t\t# PD08 *** -COS(AZ)COS(EL) ***PD14\n\t\tTIX,2\tRVQ\n\t\t\tTAR1\n\n\n\t\tBANK\t33\n\t\tSETLOC\tIMUCAL\n\t\tBANK\n\t\tCOUNT*\t$$/P03\n\nCONTIN33\tCA\tONE\n\t\tTS\tSTARCODE\n\t\tCA\tZERO\n\t\tTC\tTARGDRVE\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tTAR/EREF\nNEXTBNKS\tVLOAD\tMXV\n\t\t\t6D\n\t\t\tXSM\n\t\tVSL1\n\t\tSTOVL\tSTARAD\n\t\t\t12D\n\t\tMXV\tVSL1\n\t\t\tXSM\n\t\tSTCALL\tSTARAD +6\n\t\t\tLITTLSUB\n\t\tSTORE\tLOSVEC\n# Page 451\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tMKRELEAS\n\n\nNEXBNKSS\tCAF\tTWO\n\t\tTS\tSTARCODE\n\t\tCAF\tSIX\n\t\tTC\tTARGDRVE\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tLITTLSUB\n\t\tSTOVL\t12D\n\t\t\tLOSVEC\n\t\tSTCALL\t06D\n\t\t\tAXISGEN\n\t\tCALL\n\t\t\tCALCGTA\n\t\tEXIT\nGCOMP4\t\tCAF\tV06N93S\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGCOMP5\n\t\tTCF\t+2\n\t\tTCF\tGCOMP4\n\t\tTC\tINTPRET\n\t\tVLOAD\tVAD\n\t\t\tOGC\n\t\t\tERCOMP1\n\t\tSTORE\tERCOMP1\n\t\tEXIT\nGCOMP5\t\tTC\tBANKCALL\n\t\tCADR\tMKRELEAS\n\t\tTC\tDOWNFLAG\n\t\tADRES\tTRM03FLG\n\n\t\tTC\tNEWMODEX\n\t\tMM\t02\n\t\tTC\tPHASCHNG\n\t\tOCT\t00004\n\t\tTC\tENDOFJOB\nV06N93S\t\tVN\t0693\nGTSOPTCS\tTC\tALARM\nGTSOPTSS\tOCT\t01602\n\t\tTC\tGCOMP5\n\n\n\t\tBANK\t34\n\t\tSETLOC\tIMUCAL1\n\t\tBANK\n# Page 452\n\n\t\tCOUNT\t34/COMST\n\nLATAZCHK\tDLOAD\tSL2\t\t# CALLS FOR AZIMUTH AND LATITUDE\n\t\t\tLATITUDE\n\t\tSTODL\tDSPTEM1 +1\n\t\t\tAZIMUTH\n\t\tRTB\tEXIT\n\t\t\t1STO2S\n\t\tXCH\tMPAC\n\t\tTS\tDSPTEM1\n\t\tTC\tBANKCALL\n\t\tCADR\tCLEANDSP\n\t\tCAF\tVNG0641\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\t+2\t\t# NOT ALLOWED\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tTC\tINTPRET\n\t\tSLOAD\tRTB\n\t\t\tDSPTEM1\n\t\t\tCDULOGIC\n\t\tSTORE\tAZIMUTH\n\t\tSLOAD\tSR2\n\t\t\tDSPTEM1 +1\n\t\tSTORE\tLATITUDE\n\t\tRVQ\nVNG0641\t\tVN\t0641\n\t\tBANK\t33\n\t\tSETLOC\tIMUCAL\n\t\tBANK\n\n\n\t\tCOUNT*\t$$/P03\nTARGDRVE\tEXTEND\n\t\tQXCH\tQPLAC\n\t\tTS\tTARG1/2\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tTAR/EREF\n\t\tLXC,1\tVLOAD*\n\t\t\tTARG1/2\n\t\t\t6D,1\n\t\tSTCALL\tSTAR\n\t\t\tSXTANG\n\t\tEXIT\n\t\tCA\tSAC\n\t\tTS\tDESOPTS\n\n# Page 453\n\t\tCA\tPAC\n\t\tTS\tDESOPTT\nRETARG\t\tCAF\tZERO\n\t\tTS\tOPTIND\n\t\tCAF\tONE\n\t\tTC\tBANKCALL\n\t\tCADR\tSXTMARK\n\t\tTC\tBANKCALL\n\t\tCADR\tOPTSTALL\n\t\tTC\tGTSOPTCS\n\t\tCAE\tFLAGWRD1\n\t\tMASK\tTRM03BIT\n\t\tCCS\tA\n\t\tTC\tGCOMP5\n\n\t\tINDEX\tMARKSTAT\n\t\tCA\tQPRET\n\t\tEXTEND\n\t\tBZF\tRETARG1\n\t\tTC\tQPLAC\n\n\nRETARG1\t\tCA\tZERO\t\t# RELEASE PREVIOUSLY GRABBED VAC AREA\n\t\tXCH\tMARKSTAT\n\t\tCCS\tA\n\t\tINDEX\tA\n\t\tTS\tA\n\t\tTCF\tRETARG\t\t# GO DO SXTMARK AGAIN\n\t\tBANK\t33\n\t\tSETLOC\tIMUCAL\n\t\tBANK\n\t\tCOUNT*\t$$/P03\nPIPASC\t\t2DEC\t.76376833\n\nVELSC\t\t2DEC\t-.52223476\n\nALSK\t\t2DEC\t.17329931\n\n\t\t2DEC\t-.00835370\n\nGEORGEJ\t\t2DEC\t.63661977\n\nGEOCONS1\t2DEC\t.1\n\nGEOCONS2\t2DEC\t.005\n\nGEOCONS3\t2DEC\t.062\n\nGEOCONS4\t2DEC\t.0003\n\n# Page 454\n\n\t\tCOUNT\t33/P02\nLITTLSUB\tSTQ\n\t\t\tQPLAC\n\t\tLXC,1\tVLOAD*\n\t\t\tMARKSTAT\n\t\t\t2,1\n\t\tSTCALL\tCDUSPOT\n\t\t\tSXTNB\n\t\tCALL\n\t\t\tTRG*NBSM\n\t\tGOTO\n\t\t\tQPLAC\n\n\n\t\tEXIT\nAZMTHCG1\tTC\tINTPRET\n\t\tDLOAD\tRTB\n\t\t\tNEWAZMTH\n\t\t\t1STO2S\n\t\tEXIT\n\t\tXCH\tMPAC\n\t\tTS\tDSPTEM1\n\t\tTC\tBANKCALL\n\t\tCADR\tCLEANDSP\n\t\tCAF\tVN0629\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\t+2\n\t\tTCF\t+2\n\t\tTCF\t-5\n\t\tTC\tINTPRET\n\t\tSLOAD\tRTB\n\t\t\tDSPTEM1\n\t\t\tCDULOGIC\n\t\tSTORE\tLAUNCHAZ\n\t\tEXIT\n\t\tCA\tZERO\n\t\tTS\tPREMTRXC\n\t\tTC\tPHASCHNG\n\t\tOCT\t00004\n\t\tTC\tPOSTJUMP\n\t\tCADR\tPINBRNCH\n\nVN0629\t\tVN\t0629\n\n# Page 455\n# *** END OF COMAID .029 ***\n"
  },
  {
    "path": "Comanche055/IMU_COMPENSATION_PACKAGE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tIMU_COMPENSATION_PACKAGE.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t297-306\n# Mod history:\t2009-05-08 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images/\n#\t\t2009-05-21 RSB\tIn IRIGZ, PRIO17 corrected to PRIO21.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 297\n\t\tBANK\t7\n\t\tSETLOC\tIMUCOMP\n\t\tBANK\n\t\tEBANK=\tNBDX\n\n\t\tCOUNT\t06/ICOMP\n\n1/PIPA\t\tCAF\tLGCOMP\t\t# SAVE EBANK OF CALLING PROGRAM\n\t\tXCH\tEBANK\n\t\tTS\tMODE\n\n\t\tCCS\tGCOMPSW\t\t# BYPASS IF GCOMPSW NEGATIVE\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\tIRIG1\t\t# RETURN\n\n\t\tINHINT\t\t\t#  ASSURE COMPLETE COMPENSATION OF DELV'S\n\t\t\t\t\t# FOR DOWNLINK.\n1/PIPA1\t\tCAF\tFOUR\t\t# PIPAZ, PIPAY, PIPAX\n\t\tTS\tBUF +2\n\n\t\tINDEX\tBUF +2\n\t\tCA\tPIPASCF\t\t# (P.P.M.) X 2(-9)\n\t\tEXTEND\n\t\tINDEX\tBUF +2\n\t\tMP\tDELVX\t\t# (PP) X 2(+14) NOW (PIPA PULSES) X 2(+5)\n\t\tTS\tQ\t\t# SAVE MAJOR PART\n\n\t\tCA\tL\t\t# MINOR PART\n\t\tEXTEND\n\t\tMP\tBIT6\t\t# SCALE 2(+9)\tSHIFT RIGHT 9\n\t\tINDEX \tBUF +2\n\t\tTS\tDELVX +1\t# FRACTIONAL PIPA PULSES SCALED 2(+14)\n\n\t\tCA\tQ\t\t# MAJOR PART\n\t\tEXTEND\n\t\tMP\tBIT6\t\t# SCALE 2(+9)\tSHIFT RIGHT 9\n\t\tINDEX\tBUF +2\n\t\tDAS\tDELVX\t\t# (PIPAI) + (PIPAI)(SFE)\n\n\t\tINDEX\tBUF +2\n\t\tCS\tPIPABIAS\t# (PIPA PULSES)/(CS) X 2(-8)\t\t\t*\n\t\tEXTEND\n\t\tMP\t1/PIPADT\t# (CS) X 2(+8) NOW (PIPA PULSES) X 2(+0)\t*\n\t\tEXTEND\n\t\tMP\tBIT1\t\t# SCALE 2(+14) SHIFT RIGHT 14\t\t\t*\n\t\tINDEX\tBUF +2\n\t\tDAS\tDELVX\t\t# (PIPAI) + (PIPAI)(SFE) - (BIAS)(DELTAT)\n\n\t\tCCS\tBUF +2\t\t# PIPAZ, PIPAY, PIPAX\n# Page 298\n\t\tAD\tNEG1\n\t\tTCF\t1/PIPA1 +1\n\t\tNOOP\t\t\t# LESS THAN ZERO IMPOSSIBLE.\n\t\tRELINT\n# Page 299\n\nIRIGCOMP\tTS\tGCOMPSW\t\t# INDICATE COMMANDS 2 PULSES OR LESS.\n\t\tTS\tBUF\t\t# INDEX COUNTER - IRIGX, IRIGY, IRIGZ.\n\nIRIGX\t\tEXTEND\n\t\tDCS\tDELVX\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCA\tADIAX\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-3)\t\t*\n\t\tTC\tGCOMPSUB\t# -(ADIAX)(PIPAX)\t(GYRO PULSES) X 2(+14)\n\n\t\tEXTEND\t\t\t#\n\t\tDCS\tDELVY\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\t\t#\n\t\tCS\tADSRAX\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-3)\t*\n\t\tTC\tGCOMPSUB\t# +(ADSRAX)(PIPAY)\t(GYRO PULSES) X 2(+14)\n\n#\t\tEXTEND\t\t\t# ***\n#\t\tDCS\tDELVY\t\t# ***\t(PIPA PULSES) X 2(+14)\n#\t\tDXCH\tMPAC\t\t# ***\n#\t\tCA\tADOAX\t\t# ***\t(GYRO PULSES)/(PIPA PULSE) X 2(-3)\t*\n#\t\tTC\tGCOMPSUB\t# ***\t-(ADOAX)(PIPAZ)\t\t(GYRO PULSES) X 2(+14)\n\n\t\tCS\tNBDX\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tDRIFTSUB\t# -(NBDX)(DELTAT)\t(GYRO PULSES) X 2(+14)\n\nIRIGY\t\tEXTEND\n\t\tDCS\tDELVY\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCA\tADIAY\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-3)\t\t*\n\t\tTC\tGCOMPSUB\t# -(ADIAY)(PIPAY)\t(GYRO PULSES) X 2(+14)\n\n\t\tEXTEND\n\t\tDCS\tDELVZ\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCS\tADSRAY\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-3)\t\t*\n\t\tTC\tGCOMPSUB\t# +(ADSRAY)(PIPAZ)\t(GYRO PULSES) X 2(+14)\n\n#\t\tEXTEND\t\t\t# ***\n#\t\tDCS\tDELVX\t\t# ***\t(PIPA PULSES) X 2(+14)\n#\t\tDXCH\tMPAC\t\t# ***\n#\t\tCA\tADOAY\t\t# ***\t(GYRO PULSES)/(PIPA PULSE) X 2(-3)\t*\n#\t\tTC\tGCOMPSUB\t# ***\t-(ADOAY)(PIPAZ)\t(GYRO PULSES) X 2(+14)\n\n\t\tCS\tNBDY\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tDRIFTSUB\t# -(NBDY)(DELTAT)\t(GYRO PULSES) X 2(+14)\n\nIRIGZ\t\tEXTEND\n\t\tDCS\tDELVY\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCA\tADSRAZ\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-3)\t\t*\n# Page 300\n\t\tTC\tGCOMPSUB\t# -(ADSRAZ)(PIPAY)\t(GYRO PULSES) X 2(+14)\n\n\t\tEXTEND\n\t\tDCS\tDELVZ\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCA\tADIAZ\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-3)\t\t*\n\t\tTC\tGCOMPSUB\t# -(ADIAZ)(PIPAZ)\t(GYRO PULSES) X 2(+14)\n\n#\t\tEXTEND\t\t\t# ***\n#\t\tDCS\tDELVX\t\t# ***\t(PIPA PULSE) X 2(+14)\n#\t\tDXCH\tMPAC\t\t# ***\n#\t\tCS\tADOAZ\t\t# ***\t(GYRO PULSES)/(PIPA PULSE) X 2(-3)\t*\n#\t\tTC\tGCOMPSUB\t# ***\t+(ADOAZ)(PIPAX)\t(GYRO PULSES) X 2(+14)\n\n\t\tCA\tNBDZ\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tDRIFTSUB\t# +(NBDZ)(DELTAT)\t(GYRO PULSES) X 2(+14)\n\n# Page 301\n\t\tCCS\tGCOMPSW\t\t# ARE GYRO COMMANDS GREATER THAN 2 PULSES\n\t\tTCF\t+2\t\t# YES\n\t\tTCF\tIRIG1\t\t# NO\n\n\t\tCAF\tPRIO21\t\t# HIGHER THAN SERVICER-LESS THAN PRELAUNCH\n\t\tTC\tNOVAC\n\t\tEBANK=\tNBDX\n\t\t2CADR\t1/GYRO\n\n\t\tRELINT\nIRIG1\t\tCA\tMODE\t\t# SET EBANK FOR RETURN\n\t\tTS\tEBANK\n\t\tTCF\tSWRETURN\n\nGCOMPSUB\tXCH\tMPAC\t\t# ADIA OR ADSRA COEFFICIENT ARRIVES IN A\n\t\tEXTEND\t\t\t# C(MPAC) = (PIPA PULSES) X 2(+14)\n\t\tMP\tMPAC\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-3)\t\t*\n\t\tDXCH\tVBUF\t\t# NOW = (GYRO PULSES) X 2(+11)\t\t\t*\n\n\t\tCA\tMPAC +1\t\t# MINOR PART OF PIPA PULSES\n\t\tEXTEND\n\t\tMP\tMPAC\t\t# ADIA OR ADSRA\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tDAS\tVBUF\t\t# NOW = (GYRO PULSES) X 2(+11)\t\t\t*\n\n\t\tCA\tVBUF\t\t# PARTIAL RESULT - MAJOR\n\t\tEXTEND\n\t\tMP\tBIT12\t\t# SCALE 2(+3)\tSHIFT RIGHT 3\t\t\t*\n\t\tINDEX\tBUF\t\t# RESULT = (GYRO PULSES) X 2(+14)\n\t\tDAS\tGCOMP\t\t# HI(ADIA)(PIPAI) OR HI(ADSRA)(PIPAI)\n\n\t\tCA\tVBUF +1\t\t# PARTIAL RESULT - MINOR\n\t\tEXTEND\n\t\tMP\tBIT12\t\t# SCALE 2(+3)\tSHIFT RIGHT 3\t\t\t*\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tINDEX\tBUF\t\t# RESULT = (GYRO PULSES) X 2(+14)\n\t\tDAS\tGCOMP\t\t# (ADIA)(PIPAI)  OR  (ADSRA)(PIPAI)\n\n\t\tTC\tQ\n\n# Page 302\nDRIFTSUB\tEXTEND\n\t\tQXCH\tBUF +1\n\n\t\tEXTEND\t\t\t# C(A) = NBD\t(GYRO PULSES)/(CS) X 2(-5)\n\t\tMP\t1/PIPADT\t# (CS) X 2(+8)\tNO (GYRO PULSES) X 2(+3)\n\t\tLXCH\tMPAC +1\t\t# SAVE FOR FRACTIONAL COMPENSATION\n\t\tEXTEND\n\t\tMP\tBIT4\t\t# SCALE 2(+11)\tSHIFT RIGHT 11\n\t\tINDEX\tBUF\n\t\tDAS\tGCOMP\t\t# HI(NBD)(DELTAT)\t(GYRO PULSES) X 2(+14)\n\n\t\tCA\tMPAC +1\t\t# NOW MINOR PART\n\t\tEXTEND\n\t\tMP\tBIT4\t\t# SCALE 2(+11)\t\tSHIFT RIGHT 11\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tINDEX\tBUF\t\t# ADD IN FRACTIONAL COMPENSATION\n\t\tDAS\tGCOMP\t\t# (NBD)(DELTAT)\t\t(GYRO PULSES) X 2(+14)\n\nDRFTSUB2\tCAF\tTWO\t\t# PIPAX, PIPAY, PIPAZ\n\t\tAD\tBUF\n\t\tXCH\tBUF\n\t\tINDEX\tA\n\t\tCCS\tGCOMP\t\t# ARE GYRO COMMANDS 1 PULSE OR GREATER\n\t\tTCF\t+2\t\t# YES\n\t\tTC\tBUF +1\t\t# NO\n\n\t\tMASK\tNEGONE\n\t\tCCS\tA\t\t# ARE GYRO COMMANDS GREATER THAN 2 PULSES\n\t\tTS\tGCOMPSW\t\t# YES - SET GCOMPSW POSITIVE\n\t\tTC\tBUF +1\t\t# NO\n\n# Page 303\n1/GYRO\t\tCAF\tFOUR\t\t# PIPAZ, PIPAY, PIPAX\n\t\tTS\tBUF\n\n\t\tINDEX\tBUF\t\t# SCALE GYRO COMMANDS FOR IMUPULSE\n\t\tCA\tGCOMP +1\t# FRACTIONAL PULSES\n\t\tEXTEND\n\t\tMP\tBIT8\t\t# SHIFT RIGHT 7\n\t\tINDEX\tBUF\n\t\tTS\tGCOMP +1\t# FRACTIONAL PULSES SCALED\n\n\t\tCAF\tZERO\t\t# SET GCOMP = 0 FOR DAS INSTRUCTION\n\t\tINDEX\tBUF\n\t\tXCH\tGCOMP\t\t# GYRO PULSES\n\t\tEXTEND\n\t\tMP\tBIT8\t\t# SHIFT RIGHT 7\n\t\tINDEX\tBUF\n\t\tDAS\tGCOMP\t\t# ADD THESE TO FRACTIONAL PULSES ABOVE\n\n\t\tCCS\tBUF\t\t# PIPAZ, PIPAY, PIPAX\n\t\tAD\tNEG1\n\t\tTCF\t1/GYRO +1\nLGCOMP\t\tECADR\tGCOMP\t\t# LESS THAN ZERO IMPOSSIBLE\n\n\t\tCAF\tLGCOMP\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\t# CALL GYRO TORQUING ROUTINE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\t# WAIT FOR PULSES TO GET OUT\n\t\tTCF\tENDOFJOB\t# TEMPORARY\n\nGCOMP1\t\tCAF\tFOUR\t\t# PIPAZ, PIPAY, PIPAX\n\t\tTS\tBUF\n\n\t\tINDEX\tBUF\t\t# RESCALE\n\t\tCA\tGCOMP +1\n\t\tEXTEND\n\t\tMP\tBIT8\t\t# SHIFT MINOR PART LEFT 7 - MAJOR PART = 0\n\t\tINDEX\tBUF\n\t\tLXCH\tGCOMP +1\t# BITS 8-14 OF MINOR PART WERE = 0\n\n\t\tCCS\tBUF\t\t# PIPAZ, PIPAY, PIPAX\n\t\tAD\tNEG1\n\t\tTCF\tGCOMP1 +1\nV06N30S\t\tVN\t0630\n\t\tTCF\tENDOFJOB\n\n# Page 304\nNBDONLY\t\tCCS\tGCOMPSW\t\t# BYPASS IF GCOMPSW NEGATIVE\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\tENDOFJOB\n\n\t\tINHINT\n\t\tCCS\tFLAGWRD2\t# PREREAD T3RUPT MAY COINCIDE\n\t\tTCF\tENDOFJOB\n\t\tTCF\tENDOFJOB\n\t\tTCF\t+1\n\n\t\tCA\tTIME1\t\t# (CS) X 2(+14)\n\t\tXCH\t1/PIPADT\t# PREVIOUS TIME\n\t\tRELINT\n\t\tCOM\n\t\tAD\t1/PIPADT\nNBD2\t\tCCS\tA\t\t# CALCULATE ELAPSED TIME\n\t\tAD\tONE\t\t# NO TIME1 OVERFLOW\n\t\tTCF\tNBD3\t\t# RESTORE TIME DIFFERENCE AND JUMP\n\t\tTCF\t+2\t\t# TIME1 OVERFLOW\n\t\tTCF\tENDOFJOB\t# IF ELAPSED TIME = 0 (DIFFERENCE = -0)\n\n\t\tCOM\t\t\t# CALCULATE ABSOLUTE DIFFERENCE\n\t\tAD\tPOSMAX\n\nNBD3\t\tEXTEND\t\t\t# C(A) = DELTAT\t\t(CS) X 2(+14)\n\t\tMP\tBIT10\t\t# SHIFT RIGHT 5\n\t\tDXCH\tVBUF\n\t\tEXTEND\n\t\tDCA\tVBUF\n\t\tDXCH\tMPAC\t\t# DELTAT NOW SCALED (CS) X 2(+19)\n\n\t\tCAF\tZERO\n\t\tTS\tGCOMPSW\t\t# INDICATE COMMANDS 2 PULSES OR LESS\n\t\tTS\tBUF\t\t# PIPAX, PIPAY, PIPAZ\n\n\t\tCS\tNBDX\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tFBIASSUB\t# -(NBOX)(DELTAT) \t(GYRO PULSES) X 2(+14)\n\n\t\tEXTEND\n\t\tDCS\tVBUF\n\t\tDXCH\tMPAC\t\t# DELTAT SCALED (CS) X 2(+19)\n\t\tCA\tNBDY\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tFBIASSUB\t# -(NBDY)(DELTAT)\t(GYRO PULSES) X 2(+14)\n\n\t\tEXTEND\n\t\tDCS\tVBUF\n\t\tDXCH\tMPAC\t\t# DELTAT SCALED (CS) X 2(+19)\n\t\tCS\tNBDZ\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tFBIASSUB\t# +(NBDZ)(DELTAT)\t(GYRO PULSES) X 2(+14)\n# Page 305\n\t\tCCS\tGCOMPSW\t\t# ARE GYRO COMMANDS GREATER THAN 2 PULSES\n\t\tTCF\t1/GYRO\t\t# YES\n\t\tTCF\tENDOFJOB\t# NO\n\n# Page 306\nFBIASSUB\tXCH\tQ\n\t\tTS\tBUF +1\n\n\t\tCA\tQ\t\t# NBD SCALED (GYRO PULSES)/(CS) X 2(-5)\n\t\tEXTEND\n\t\tMP\tMPAC\t\t# DELTAT SCALED (CS) X 2(+19)\n\t\tINDEX\tBUF\n\t\tDAS\tGCOMP\t\t# HI(NBD)(DELTAT)\t(GYRO PULSES) X 2(+14)\n\n\t\tCA\tQ\t\t# NO FRACTIONAL PART\n\t\tEXTEND\n\t\tMP\tMPAC +1\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tINDEX\tBUF\n\t\tDAS\tGCOMP\t\t# (NBD)(DELTAT)\t\t(GYRO PULSES) X 2(+14)\n\n\t\tTCF\tDRFTSUB2\t# CHECK MAGNITUDE OF COMPENSATION\n\nLASTBIAS\tTC\tBANKCALL\n\t\tCADR\tPIPUSE\n\n\t\tCCS\tGCOMPSW\t\t# BYPASS IF GCOMPSW NEGATIVE\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\tENDOFJOB\n\n\t\tCAF\tPRIO31\t\t# 2 SECONDS SCALED (CS) X 2(+8)\n\t\tXCH\t1/PIPADT\n\t\tCOM\n\t\tAD\tPIPTIME1 +1\t# TIME AT PIPA1 =0\n\t\tTCF\tNBD2\n\n"
  },
  {
    "path": "Comanche055/IMU_MODE_SWITCHING_ROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tIMU_MODE_SWITCHING_ROUTINES.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1420-1448\n# Mod history:\t2009-05-10 SN\t(Sergio Navarro).  Started adapting from\n#\t\t\t\tthe Colossus249/ file of the same name,\n#\t\t\t\tusing Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 1420\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG3\n\t\tBANK\n\n\t\tEBANK=\tCOMMAND\n\n# FIXED-FIXED ROUTINES.\n\n\t\tCOUNT\t02/IMODE\n\nZEROICDU\tCAF\tZERO\t\t# ZERO ICDU COUNTERS.\n\t\tTS\tCDUX\n\t\tTS\tCDUY\n\t\tTS\tCDUZ\n\t\tTC\tQ\n\nSPSCODE\t\t=\tBIT9\n\n# Page 1421\n# IMU ZEROING ROUTINE.\n\n\t\tBANK\t11\n\t\tSETLOC\tMODESW\n\t\tBANK\n\n\t\tCOUNT\t07/IMODE\n\nIMUZERO\t\tINHINT\t\t\t# ROUTINE TO ZERO ICDUS.\n\t\tCS\tDSPTAB +11D\t# DONT ZERO CDUS IS IMU IN GIMBAL LOCK AND\n\t\tMASK\tBITS4&6\t\t# COARSE ALIGN (GIMBAL RUNAWAY PROTECTION)\n\t\tCCS\tA\n\t\tTCF\tIMUZEROA\n\n\t\tTC\tALARM\t\t# IF SO.\n\t\tOCT\t00206\n\n\t\tTCF\tCAGETSTJ +4\t# IMMEDIATE FAILURE.\n\nIMUZEROA\tTC\tCAGETSTJ\n# DO ALL THE WORK.\n\t\tCS\tIMODES33\t# DISABLE DAP AUTO AND HOLD MODES\n\t\tMASK\tSUPER011\t# \tBIT5 FOR GROUND\n\t\tADS\tIMODES33\n\n\t\tCS\tIMODES30\t# INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE\n\t\tMASK\tBITS3&4\t\t# JUST CAME OUT OF COARSE ALIGN).\n\t\tADS\tIMODES30\n\n\t\tCS\tBITS4&6\t\t# SEND ZERO ENCODE WITH COARSE AND ERROR\n\t\tEXTEND\t\t\t# COUNTER DISABLED.\n\t\tWAND \tCHAN12\n\n\t\tTC\tNOATTOFF\t# TURN OFF NO ATT LAMP.\n\n\t\tCAF\tBIT5\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tTC\tZEROICDU\n\t\tCAF\tBIT6\t\t# WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO\n\t\tTC\tWAITLIST\t# RECEIVE ITS PULSE TRAIN.\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tIMUZERO2\n\n\t\tCS\tIMODES30\t# SEE IF IMU OPERATING AND ALARM IF NOT.\n\t\tMASK\tBIT9\n\t\tCCS\tA\n\t\tTCF\tMODEEXIT\n# Page 1422\n\t\tTC\tALARM\n\t\tOCT\t210\n\nMODEEXIT\tRELINT\t\t\t# GENERAL MODE-SWITCHING EXIT.\n\t\tTCF\tSWRETURN\n\nIMUZERO2\tTC\tCAGETEST\n\t\tTC\tZEROICDU\t# ZERO CDUX, CDUY, CDUZ\n\n\t\tCS\tBIT5\t\t# REMOVE ZERO DISCRETE.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCAF\tBIT11\t\t# WAIT 10 SECS FOR CTRS TO FIND GIMBALS\n\t\tTC\tVARDELAY\n\nIMUZERO3\tTC\tCAGETEST\n\t\tCS\tBITS3&4\t\t# REMOVE IMUFAIL AND ICDUFAIL INHIBIT.\n\t\tMASK\tIMODES30\n\t\tTS\tIMODES30\n\n\t\tCS\tSUPER011\t# ENABLE DAP AUTO AND HOLD MODES\n\t\tMASK\tIMODES33\t#\tBIT5 FOR GROUND\n\t\tTS\tIMODES33\n\n\t\tTC\tIBNKCALL\t# SET ISS WARNING IF EITHER OF ABOVE ARE\n\t\tCADR\tSETISSW\t\t# PRESENT.\n\n\t\tTCF\tENDIMU\n\n# Page 1423\n# IMU COARSE ALIGN MODE.\n\nIMUCOARS\tINHINT\n\t\tTC\tCAGETSTJ\n\t\tTC\tSETCOARS\n\n\t\tCAF\tSIX\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tCOARS\n\n\t\tTCF\tMODEEXIT\n\nCOARS\t\tTC\tCAGETEST\n\t\tCAF\tBIT6\t\t# ENABLE ALL THREE ISS CDU ERROR COUNTERS\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tCAF\tTWO\t\t# SET CDU INDICATOR\nCOARS1\t\tTS\tCDUIND\n\n\t\tINDEX\tCDUIND\t\t# COMPUTE THETAD - THETAA IN 1:S\n\t\tCA\tTHETAD\t\t# \tCOMPLEMENT FORM\n\t\tEXTEND\n\t\tINDEX\tCDUIND\n\t\tMSU\tCDUX\n\t\tEXTEND\n\t\tMP\tBIT13\t\t# SHIFT RIGHT 2\n\t\tXCH\tL\t\t# ROUND\n\t\tDOUBLE\n\t\tTS\tITEMP1\n\t\tTCF\t+2\n\t\tADS\tL\n\n\t\tINDEX\tCDUIND\t\t# DIFFERENCE TO BE COMPUTED\n\t\tLXCH\tCOMMAND\n\t\tCCS\tCDUIND\n\t\tTC\tCOARS1\n\n\t\tCAF\tTWO\t\t# MINIMUM OF 4 MS WAIT\n\t\tTC \tVARDELAY\n\n# Page 1424\nCOARS2\t\tTC\tCAGETEST\t# DONT CONTINUE IF CAGED.\n\t\tTS\tITEMP1\t\t# SET TO +0.\n\t\tCAF\tTWO\t\t# SET CDU INDICATOR\n\t+3\tTS\tCDUIND\n\n\t\tINDEX\tCDUIND\n\t\tCCS\tCOMMAND\t\t# NUMBER OF PULSES REQUIRED\n\t\tTC\tCOMPOS\t\t# GREATER THAN MAX ALLOWED\n\t\tTC\tNEXTCDU +1\n\t\tTC\tCOMNEG\n\t\tTC\tNEXTCDU +1\n\nCOMPOS\t\tAD\t-COMMAX\t\t# COMMAX = MAX NUMBER OF PULSES ALLOWED\n\t\tEXTEND\t\t\t# \tMINUS ONE\n\t\tBZMF\tCOMZERO\n\t\tINDEX\tCDUIND\n\t\tTS\tCOMMAND\t\t# REDUCE COMMAND BY MAX NUMBER OF PULSES\n\t\tCS\t-COMMAX-\t# \tALLOWED\n\nNEXTCDU\t\tINCR\tITEMP1\n\t\tAD\tNEG0\n\t\tINDEX\tCDUIND\n\t\tTS\tCDUXCMD\t\t# SET UP COMMAND REGISTER.\n\n\t\tCCS\tCDUIND\n\t\tTC\tCOARS2 +3\n\n\t\tCCS\tITEMP1\t\t# SEE IF ANY PULSES TO GO OUT.\n\t\tTCF\tSENDPULS\n\n\t\tTC\tFIXDELAY\t# WAIT FOR GIMBALS TO SETTLE.\n\t\tDEC\t150\n\n\n\t\tCAF\tTWO\t\t# AT END OF COMMAND, CHECK TO SEE THAT\nCHKCORS\t\tTS\tITEMP1\t\t# GIMBALS ARE WITHIN 2 DEGREES OF THETAD.\n\t\tINDEX\tA\n\t\tCA\tCDUX\n\t\tEXTEND\n\t\tINDEX\tITEMP1\n\t\tMSU\tTHETAD\n\t\tCCS\tA\n\t\tTCF\tCOARSERR\n\t\tTCF\tCORSCHK2\n\t\tTCF\tCOARSERR\n\n# Page 1425\nCORSCHK2\tCCS\tITEMP1\n\t\tTCF\tCHKCORS\n\t\tTCF\tENDIMU\t\t# END OF COARSE ALIGNMENT.\n\nCOARSERR\tAD\tCOARSTOL\t# 2 DEGREES.\n\t\tEXTEND\n\t\tBZMF\tCORSCHK2\n\n\t\tTC\tALARM\t\t# COARSE ALIGN ERROR.\n\t\tOCT\t211\n\n\t\tTCF\tIMUBAD\n\nCOARSTOL\tDEC\t-.01111\t\t# 2 DEGREES SCALED AT HALF-REVOLUTIONS\n\n\nCOMNEG\t\tAD\t-COMMAX\n\t\tEXTEND\n\t\tBZMF\tCOMZERO\n\t\tCOM\n\t\tINDEX\tCDUIND\n\t\tTS\tCOMMAND\n\t\tCA\t-COMMAX-\n\t\tTC\tNEXTCDU\n\nCOMZERO\t\tCAF\tZERO\n\t\tINDEX\tCDUIND\n\t\tXCH\tCOMMAND\n\t\tTC\tNEXTCDU\n\nSENDPULS\tCAF\t13,14,15\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tCAF\t600MS\n\t\tTCF\tCOARS2 -1\t# THEN TO VARDELAY\n\n\nCA+ECE\t\tCAF\tBIT6\t\t# ENABLE ALL THREE ISS CDU ERROR COUNTERS\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\t\tTC\tTASKOVER\n\n# Page 1426\nSETCOARS\tCAF\tBIT4\t\t# BYPASS IF ALREADY IN COARSE ALIGN\n\t\tEXTEND\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTC\tQ\n\n\t\tCS\tBIT6\t\t# CLEAR ISS ERROR COUNTERS\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCS\tBIT10\t\t# KNOCK DOWN GYRO ACTIVITY\n\t\tEXTEND\n\t\tWAND\tCHAN14\n\t\tCS\tZERO\n\t\tTS\tGYROCMD\n\n\t\tCAF\tBIT4\t\t# PUT ISS IN COARSE ALIGN\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tCS\tDSPTAB +11D\t# TURN ON NO ATT LAMP\n\t\tMASK\tOCT40010\n\t\tADS\tDSPTAB +11D\n\n\t\tCS\tIMODES33\t# DISABLE DAP AUTO AND HOLD MODES\n\t\tMASK\tBIT6\n\t\tADS\tIMODES33\n\n\t\tCS\tIMODES30\t# DISABLE IMUFAIL\n\t\tMASK\tBIT4\n\t\tADS\tIMODES30\n\nRNDREFDR\tCS\tBIT5\t\t# KNOCK DOWN TRACK FLAG\n\t\tMASK\tFLAGWRD1\n\t\tTS\tFLAGWRD1\n\n\t\tCS\tBIT15\t\t# KNOCK DOWN DRIFT FLAG\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\n\n\t\tCS\tBIT13\t\t# KNOCK DOWN REFSMMAT FLAG\n\t\tMASK\tFLAGWRD3\n\t\tTS\tFLAGWRD3\n\n\t\tTC\tQ\n\nOCT40010\tOCT\t40010\n\n# Page 1427\n# IMU FINE ALIGN MODE SWITCH.\n\nIMUFINE\t\tINHINT\n\t\tTC\tCAGETSTJ\t# SEE IF IMU BEING CAGED.\n\n\t\tCS\tBITS4-5\t\t# RESET ZERO AND COARSE\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCS\tBIT6\t\t# INSURE DAP AUTO AND HOLD MODES ENABLED\n\t\tMASK\tIMODES33\n\t\tTS\tIMODES33\n\n\t\tTC\tNOATTOFF\n\n\t\tCAF\tBIT10\t\t# IMU FAIL WAS INHIBITED DURING THE\n\t\tTC\tWAITLIST\t# PRESUMABLY PRECEDING COARSE ALIGN.  LEAVE\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tIFAILOK\t\t# IT ON FOR THE FIRST 5 SECS OF FINE ALIGN\n\n\t\tCAF\t2SECS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tIMUFINED\n\n\t\tTCF\tMODEEXIT\n\nIMUFINED\tTC\tCAGETEST\t# SEE THAT NO ONE HAS CAGED THE IMU.\n\t\tTCF\tENDIMU\n\n# Page 1428\nIFAILOK\t\tTC\tCAGETSTQ\t# ENABLE IMU FIAL UNLESS IMU BEING CAGED.\n\t\tTCF\tTASKOVER\t# IT IS.\n\n\t\tCAF\tBIT4\t\t# DONT RESET IMU FAIL INHIBIT IF SOMEONE\n\t\tEXTEND\t\t\t# HAS GONE INTO COARSE ALIGN.\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTCF\tTASKOVER\n\n\t\tCS\tIMODES30\t# RESET IMUFAIL.\n\t\tMASK\tBIT13\n\t\tADS\tIMODES30\n\t\tCS\tBIT4\nPFAILOK2\tMASK\tIMODES30\n\t\tTS\tIMODES30\n\t\tTC\tIBNKCALL\t# THE ISS WARNING LIGHT MAY COME ON NOW\n\t\tCADR\tSETISSW\t\t# THAT THE INHIBIT WAS BEEN REMOVED.\n\t\tTCF\tTASKOVER\n\nPFAILOK\t\tTC\tCAGETSTQ\t# ENABLE PIP FAIL PROG ALARM.\n\t\tTCF\tTASKOVER\n\n\t\tCS\tIMODES30\t# RESET IMU AND PIPA FAIL BITS.\n\t\tMASK\tBIT10\n\t\tADS\tIMODES30\n\n\t\tCS\tIMODES33\n\t\tMASK\tBIT13\n\t\tADS\tIMODES33\n\n\t\tCS\tBIT5\n\t\tTCF\tPFAILOK2\n\nNOATTOFF\tCS\tOCT40010\t# SUBROUTINE TO TURN OFF NO ATT LAMP.\n\t\tMASK\tDSPTAB +11D\n\t\tAD\tBIT15\n\t\tTS\tDSPTAB +11D\n\t\tTC\tQ\n\n# Page 1429\n# ROUTINES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS.  NO IMUSTALL REQUIRED IN EITHER CASE.\n\nPIPUSE\t\tCS\tZERO\n\t\tTS\tPIPAX\n\t\tTS\tPIPAY\n\t\tTS\tPIPAZ\n\nPIPUSE1\t\tTC\tCAGETSTQ\t# DO NOT ENABLE PIPA FAIL IF IMU IS CAGED\n\t\tTCF\tSWRETURN\n\n\t\tINHINT\n\t\tCS\tBIT1\t\t# IF PIPA FAILS FROM NOW ON (UNTIL\n\t\tMASK\tIMODES30\t# PIPFREE), LIGHT ISS WARNING.\n\t\tTS\tIMODES30\n\nPIPFREE2\tTC\tIBNKCALL\t# ISS WARNING MIGHT COME ON NOW.\n\t\tCADR\tSETISSW\t\t# (OR GO OFF ON PIPFREE).\n\n\t\tTCF\tMODEEXIT\n\nPIPFREE\t\tINHINT\t\t\t# PROGRAM DONE WITH PIPAS.  DONT LIGHT\n\t\tCS\tIMODES30\t# ISS WARNING.\n\t\tMASK\tBIT1\n\t\tADS\tIMODES30\n\n\t\tMASK\tBIT10\t\t# IF PIP FAIL ON, DO PROG ALSRM AND RESET\n\t\tCCS\tA\t\t# ISS WARNING.\n\t\tTCF\tMODEEXIT\n\n\t\tTC\tALARM\n\t\tOCT\t212\n\n\t\tINHINT\n\n\t\tTCF\tPIPFREE2\n\n# Page 1430\n# \tTHE FOLLOWING ROUTINE TORQUES THE IRIGS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIX REGISTERS\n# BEGINNING AT THE ECADR ARRIVING IN A.  THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS).  THE\n# UNSENT PORTION OF THE COMMAND IS LEFT INTACT IN THE INPUT COMMAND REGISTERS.\n\n\t\tEBANK=\t1400\t\t# VARIABLE, ACTUALLY.\n\nIMUPULSE\tTS\tMPAC +5\t\t# SAVE ARRIVING ECADR.\n\t\tTC\tCAGETSTJ\t# DONT PROCEED IF IMU BEING CAGED.\n\n\t\tCCS\tLGYRO\t\t# SEE IF GYROS BUSY.\n\t\tTC\tGYROBUSY\t# SLEEP.\n\n\t\tTS\tMPAC +2\n\t\tCAF\tBIT6\t\t# ENABLE THE POWER SUPPLY.\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\n\t\tCAF\tFOUR\nGWAKE2\t\tTC\tWAITLIST\t# (IF A JOB WAS PUT TO SLEEP, THE POWER\n\t\tEBANK=\tCDUIND\t\t# SUPPLY IS LEFT ON BY THE WAKING JOB).\n\t\t2CADR\tSTRTGYRO\n\n\t\tCA\tMPAC +5\t\t# SET UP EBANK, SAVING CALLER'S EBANK FOR\n\t\tXCH\tEBANK\t\t# RESTORATION ON RETURN.\n\t\tXCH\tMPAC +5\n\t\tTS\tLGYRO\t\t# RESERVES GYROS.\n\t\tMASK\tLOW8\n\t\tTS\tITEMP1\n\n\t\tCAF\tTWO\t\t# FORCE SIGN AGREEMENT ON INPUTS.\nGYROAGRE\tTS\tMPAC +3\n\t\tDOUBLE\n\t\tAD\tITEMP1\n\t\tTS\tMPAC +4\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\t1400\n\t\tDXCH\tMPAC\n\t\tTC\tTPAGREE\n\t\tDXCH\tMPAC\n\t\tINDEX\tMPAC +4\n\t\tDXCH\t1400\n\n\t\tCCS\tMPAC +3\n\t\tTCF\tGYROAGRE\n\n\t\tCA\tMPAC +5\t\t# RESTORE CALLER'S EBANK.\n\t\tTS\tEBANK\n\t\tTCF\tMODEEXIT\n\n# Page 1431\n# ROUTINES TO ALLOW TORQUING BY ONLY ONE JOB AT A TIME.\n\nGYROBUSY\tEXTEND\t\t\t# SAVE RETURN 2FCADR.\n\t\tDCA\tBUF2\n\t\tDXCH\tMPAC\nREGSLEEP\tCAF\tLGWAKE\n\t\tTCF\tJOBSLEEP\n\nGWAKE\t\tCCS\tLGYRO\t\t# WHEN AWAKENED, SEE IF GYROS STILL BUSY.\n\t\tTCF\tREGSLEEP\t# IF SO, SLEEP SOME MORE.\n\n\t\tTS\tMPAC +2\n\t\tEXTEND\n\t\tDCA\tMPAC\n\t\tDXCH\tBUF2\t\t# RESTORE SWRETURN INFO.\n\t\tCAF\tONE\n\t\tTCF\tGWAKE2\n\nLGWAKE\t\tCADR\tGWAKE\n\n# Page 1432\n# GYRO-TORQUING WAITLIST TASKS.\n\nSTRTGYRO\tCS\tGDESELCT\t# DE-SELECT LAST GYRO.\n\t\tEXTEND\n\t\tWAND\tCHAN14\n\n\t\tTC\tCAGETEST\n\nSTRTGYR2\tCA\tLGYRO\t\t# JUMP ON PHASE COUNTER IN BITS 13-14.\n\t\tEXTEND\n\t\tMP\tBIT4\n\t\tINDEX\tA\n\t\tTCF\t+1\n\t\tTC\tGSELECT\t\t# =0.  DO Y GYRO.\n\t\tOCT\t00202\n\n\t\tTC\tGSELECT\t\t# =1.  DO Z GYRO.\n\t\tOCT\t00302\n\n\t\tTC\tGSELECT -2\t# =2.  DO X GYRO.\n\t\tOCT\t00100\n\n\t\tCAF\tZERO\t\t# =3.  DONE\n\t\tTS\tLGYRO\n\t\tCAF\tLGWAKE\t\t# WAKE A POSSIBLE SLEEPING JOB.\n\t\tTC\tJOBWAKE\n\nNORESET\t\tTCF\tIMUFINED\t# DO NOT RESET POWER SUPPLY\n# Page 1433\n\t-2\tCS\tFOUR\t\t# SPECIAL ENTRY TO REGRESS LGYRO FOR X.\n\t\tADS\tLGYRO\n\nGSELECT\t\tINDEX\tQ\t\t# SELECT GYRO.\n\t\tCAF\t0\t\t# PACKED WORD CONTAINS GYRO SELECT BITS\n\t\tTS\tITEMP4\t\t# AND INCREMENT TO LGYRO.\n\t\tMASK\tSEVEN\n\t\tAD\tBIT13\n\t\tADS\tLGYRO\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n\t\tTS\tITEMP1\n\n\t\tCS\tSEVEN\n\t\tMASK\tITEMP4\n\t\tTS\tITEMP4\n\n\t\tEXTEND\t\t\t# MOVE DP COMMAND TO RUPTREGS FOR TESTING.\n\t\tINDEX\tITEMP1\n\t\tDCA\t1400\n\t\tDXCH\tRUPTREG1\n\n\t\tCCS\tRUPTREG1\n\t\tTCF\tMAJ+\n\t\tTCF\t+2\n\t\tTCF\tMAJ-\n\n\t\tCCS\tRUPTREG2\n\t\tTCF\tMIN+\n\t\tTCF\tSTRTGYR2\n\t\tTCF\tMIN-\n\t\tTCF\tSTRTGYR2\n\n# Page 1434\nMIN+\t\tAD\t-GYROMIN\t# SMALL POSITIVE COMMAND.  SEE IF AT LEAST\n\t\tEXTEND\t\t\t# 16 GYRO PULSES.\n\t\tBZMF\tSTRTGYR2\n\nMAJ+\t\tEXTEND\t\t\t# DEFINITE POSITIVE OUTPUT.\n\t\tDCA\tGYROFRAC\n\t\tDAS\tRUPTREG1\n\n\t\tCA\tITEMP4\t\t# SELECT POSITIVE TORQUING FOR THIS GYRO.\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\n\t\tCAF\tLOW7\t\t# LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS\n\t\tMASK\tRUPTREG2\t# TO INITIAL COMMAND IN MAJOR PART OF LONG\n\t\tXCH\tRUPTREG2\t# TERM STORAGE AND TRUNCATED FRACTION\nGMERGE\t\tEXTEND\t\t\t# IN MINOR PART.  THE MAJOR PART WILL BE\n\t\tMP\tBIT8\t\t# COUNTED DOWN TO ZERO IN THE COURSE OF\n\t\tTS\tITEMP2\t\t# PUTTING OUT THE ENTIRE COMMAND.\n\t\tCA\tRUPTREG1\n\t\tEXTEND\n\t\tMP\tBIT9\n\t\tTS\tRUPTREG1\n\t\tCA\tL\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tADS\tITEMP2\t\t# INITIAL COMMAND.\n\n\t\tEXTEND\t\t\t# SEE IF MORE THAN ONE PULSE TRAIN NEEDED\n\t\tDCA\tRUPTREG1\t# (MORE THAN 16383 PULSES).\n\t\tAD\tMINUS1\n\t\tCCS\tA\n\t\tTCF\tLONGGYRO\n-GYROMIN\tOCT\t-176\t\t# MAY BE ADJUSTED TO SPECIFY MINIMUM CMD\n\t\tTCF\t+4\n\n\t\tCAF\tBIT14\n\t\tADS\tITEMP2\n\t\tCAF\tZERO\n\n\t+4\tINDEX\tITEMP1\n\t\tDXCH\t1400\n# Page 1435\n\t\tCA\tITEMP2\t\t# ENTIRE COMMAND.\nLASTSEG\t\tTS\tGYROCMD\n\t\tEXTEND\n\t\tMP\tBIT10\t\t# WAITLIST DT\n\t\tAD\tTHREE\t\t# TRUNCATION AND PHASE UNCERTAINTIES.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tSTRTGYRO\n\nGYROEXIT\tCAF\tBIT10\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tTCF\tTASKOVER\n\nLONGGYRO\tINDEX\tITEMP1\n\t\tDXCH\t1400\t\t# INITIAL COMMAND OUT PLUS N AUGMENTS OF\n\t\tCAF\tBIT14\t\t# 8192.  INITIAL COMMAND IS AT LEAST 8192.\n\t\tAD\tITEMP2\n\t\tTS\tGYROCMD\n\nAUG3\t\tEXTEND\t\t\t# GET WAITLIST DT TO TIME WHEN TRAIN IS\n\t\tMP\tBIT10\t\t# ALMOST OUT.\n\t\tAD\tNEG3\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCDUIND\n\t\t2CADR\t8192AUG\n\n\t\tTCF\tGYROEXIT\n\n8192AUG\t\tTC\tCAGETEST\n\n\t\tCAF\tBIT4\n\t\tEXTEND\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTCF\tIMUBAD\n\t\tCA\tLGYRO\t\t# ADD 8192 PULSES TO GYROCMD\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n\t\tTS\tITEMP1\n\n\t\tINDEX\tITEMP1\t\t# SEE IF THIS IS THE LAST AUG.\n\t\tCCS\t1400\n\t\tTCF\tAUG2\t\t# MORE TO COME.\n\n\t\tCAF\tBIT14\n\t\tADS\tGYROCMD\n\t\tTCF\tLASTSEG +1\n\n# Page 1436\nAUG2\t\tINDEX\tITEMP1\n\t\tTS\t1400\n\t\tCAF\tBIT14\n\t\tADS\tGYROCMD\n\t\tTCF\tAUG3\t\t# COMPUTE DT.\n\n# Page 1437\nMIN-\t\tAD\t-GYROMIN\t# POSSIBLE NEGATIVE OUTPUT.\n\t\tEXTEND\n\t\tBZMF\tSTRTGYR2\n\nMAJ-\t\tEXTEND\t\t\t# DEFINITE NEGATIVE OUTPUT.\n\t\tDCS\tGYROFRAC\n\t\tDAS\tRUPTREG1\n\n\t\tCA\tITEMP4\t\t# SELECT NEGATIVE TORQUING FOR THIS GYRO.\n\t\tAD\tBIT9\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\n\t\tCS\tRUPTREG1\t# SET UP RUPTREGS TO FALL INTO GMERGE.\n\t\tTS\tRUPTREG1\t# ALL NUMBERS PUT INTO GYROCMD ARE\n\t\tCS\tRUPTREG2\t# POSITIVE - BIT9 OF CHAN 14 DETERMINES\n\t\tMASK\tLOW7\t\t# THE SIGN OF THE COMMAND.\n\t\tCOM\n\t\tXCH\tRUPTREG2\n\t\tCOM\n\t\tTCF\tGMERGE\n\nGDESELCT\tOCT\t1700\t\t# TURN OFF SELECT AND ACTIVITY BITS.\n\nGYROFRAC\t2DEC\t.215 B-21\n\n# Page 1438\n# IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE.\n\nENDIMU\t\tEXTEND\t\t\t# MODE IS BAD IF CAGE HAS OCCURRED OR IF\n\t\tREAD\tDSALMOUT\t# ISS WARNING IS ON.\n\t\tMASK\tBIT1\n\t\tCCS\tA\n\t\tTCF\tIMUBAD\n\nIMUGOOD\t\tTCF\tGOODEND\t\t# WITH C(A) = 0.\n\nIMUBAD\t\tCAF\tZERO\n\t\tTCF\tBADEND\n\nCAGETEST\tCAF\tBIT6\t\t# SUBROUTINE TO TERMINATE IMU MODE\n\t\tMASK\tIMODES30\t# SWITCH IF IMU HAS BEEN CAGED.\n\t\tCCS\tA\n\t\tTCF\tIMUBAD\t\t# DIRECTLY.\n\t\tTC\tQ\t\t# WITH C(A) = +0.\n\nCAGETSTQ\tCS\tIMODES30\t# SKIP IF IMU NOT BEING CAGED.\n\t\tMASK\tBIT6\n\t\tCCS\tA\n\t\tINCR\tQ\n\t\tTC\tQ\n\nCAGETSTJ\tCS\tIMODES30\t# IF DURING MODE SWITCH INITIALIZATION.\n\t\tMASK\tBIT6\t\t# IT IS FOUND THAT THE IMU IS BEING CAGED.\n\t\tCCS\tA\t\t# SET IMUCADR TO -0 TO INDICATE OPERATION\n\t\tTC\tQ\t\t# COMPLETE BUT FAILED.  RETURN IMMEDIATELY\n\n\t\tCS\tZERO\t\t# TO SWRETURN.\n\t\tTS\tIMUCADR\n\t\tTCF\tMODEEXIT\n\n# Page 1439\n# \tGENERALIZED MODE SWITCHING TERMINATION.  ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION\n# OR AT BADEND FOR AN UNSUCCESSFUL ONE.  C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS.\n\nBADEND\t\tTS\tRUPTREG2\t# DEVICE INDEX.\n\t\tCS\tZERO\t\t# FOR FAILURE.\n\t\tTCF\tGOODEND +2\n\nGOODEND\t\tTS\tRUPTREG2\n\t\tCS\tONE\t\t# FOR SUCCESS.\n\n\t\tTS\tRUPTREG3\n\t\tINDEX\tRUPTREG2\t# SEE IF USING PROGRAM ASLEEP.\n\t\tCCS\tMODECADR\n\t\tTCF\t+2\t\t# YES - WAKE IT UP.\n\t\tTCF\tENDMODE\t\t# IF 0, PROGRAM NOT IN YET.\n\n\t\tCAF\tZERO\t\t# WAKE SLEEPING PROGRAM.\n\t\tINDEX\tRUPTREG2\n\t\tXCH\tMODECADR\n\t\tTC\tJOBWAKE\n\n\t\tCS\tRUPTREG3\t# ADVANCE LOC IF SUCCESSFUL.\n\t\tINDEX\tLOCCTR\n\t\tADS\tLOC\n\n\t\tTCF\tTASKOVER\n\nENDMODE\t\tCA\tRUPTREG3\t# -0 INDICATES OPERATION COMPLETE BUT\n\t\tINDEX\tRUPTREG2\t# UNSUCCESSFUL - -1 INDICATES COMPLETE AND\n\t\tTS\tMODECADR\t# SUCCESSFUL.\n\t\tTCF\tTASKOVER\n\n# Page 1440\n# \tGENERAL STALLING ROUTINE.  USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION.\n\n# PROGRAM DESCRIPTION\t\t\t\t\tDATE- 21 FEB 1967\n#\t\t\t\t\t\tLOG SECTION IMU MODE SWITCHING\n# MOD BY- R.MELANSON TO ADD DOCUMENTATION\t\tASSEMBLY SUNDISK REV. 82\n\n# FUNCTIONAL DESCRIPTION-\n#\tTO DELAY FURTHER EXECUTION OF THE CALLING ROUTINE UNTIL ITS SELECTED\n#\tI/O FUNCTION IS COMPLETE.  THE FOLLOWING CHECKS ON THE CALLING ROUTINES\n#\tMODECADR ARE MADE AND ACTED UPON.\n#\t1) +0 INDICATES INCOMPLETE I/O OPERATION.CALLING ROUTINE IS PUT TO\n#\t   SLEEP.\n#\t2) -1 INDICATES COMPLETED I/O OPERATION.  STALL BYPASSES JOBSLEEP\n#\t   CALL AND RETURNS TO CALLING ROUTINE AT L+3\n#\t3) -0 INDICATES COMPLETED I/O WITH FAILURE.  STALL CLEARS MODECADR\n#\t   AND RETURNS TO CALLING ROUTINE AT L+2.\n#\t4) VALUE GREATER THAN 0 INDICATES TWO ROUTINES CALLING FOR USE OF\n#\t   SAME DEVICE.  STALL EXITS TO ABORT WHICH EXECUTES A PROGRAM\n#\t   RESTART WHICH IN TURN CLEARS ALL MODECADR REGISTERS.\n\n# CALLING SEQUENCE-\n# L \tTC\tBANKCALL\n# L+1\tCADR\t(ONE OF 5 STALL ADDRESSES I.E. IMUSTALL,OPTSTALL,RADSTALL,\n#\t\tAOTSTALL,OR ATTSTALL)\n\n# NORMAL-EXIT MODE-\n# TCF\tJOBSLEEP OR TCF\tMODEXIT\n\n# ALARM OR ABORT EXIT MODE-\n# TC\tABORT\n\n# OUTPUT-\n#\tMODECADR= CADR \tIF JOBSLEEP\n#\tMODECADR=+0\tIF I/O COMPLETE\n#\tBUF2=L+3\tIF I/O COMPLETE AND GOOD.\n#\tBUF2=L+2 IF I/O COMPLETE BUT FAILED.\n\n# ERASABLE INITIALIZATION-\n#\tBUF2 CONTAINS RETURN ADDRESS PLUS 1,(L+2)\n#\tBUF2+1 CONTAINS FBANK VALUE OF CALLING ROUTINE.\n#\tMODECADR OF CALLING ROUTINE CONTAINS +0,-1,-0 OR CADR RETURN ADDRESS.\n#\n# DEBRIS-\n#\tRUPTREG2 AND CALLING ROUTINE MODECADR.\n\nAOTSTALL\tCAF\tONE\t\t# AOT.\n\t\tTC\tSTALL\n\nRADSTALL\tCAF\tTWO\n\t\tTCF\tSTALL\n\n# Page 1441\nOPTSTALL\tEQUALS\tAOTSTALL\n\nIMUSTALL\tCAF\tZERO\t\t# IMU.\n\nSTALL\t\tINHINT\n\t\tTS\tRUPTREG2\t# SAVE DEVICE INDEX.\n\t\tINDEX\tA\t\t# SEE IF OPERATION COMPLETE.\n\t\tCCS\tMODECADR\n\t\tTCF\tMODABORT\t# ALLOWABLE STATES ARE +0, -1, AND -0.\n\t\tTCF\tMODESLP\t\t# OPERATION INCOMPLETE.\n\t\tTCF\tMODEGOOD\t# COMPLETE AND GOOD IF = -1.\n\nMG2\t\tINDEX\tRUPTREG2\t# COMPLETE FAILED IF -0.  RESET TO +0.\n\t\tTS\tMODECADR\t# RETURN TO CALLER.\n\t\tTCF\tMODEEXIT\n\nMODEGOOD\tCCS\tA\t\t# MAKE SURE INITIAL STATE -1.\n\t\tTCF\tMODABORT\n\n\t\tINCR\tBUF2\t\t# IF SO, INCREMENT RETURN ADDRESS AND\n\t\tTCF\tMG2\t\t# RETURN IMMEDIATELY, SETTIN CADR = +0.\n\nMODESLP\t\tTC\tMAKECADR\t# CALL FROM SWITCHABLE FIXED ONLY.\n\t\tINDEX\tRUPTREG2\n\t\tTS\tMODECADR\n\t\tTCF\tJOBSLEEP\n\nMODABORT\tTC\tPOODOO\t\t# TWO PROGRAMS USING THE SAME DEVICE.\n\t\tOCT\t1210\n\n# Page 1442\n# CONSTANTS FOR MODE SWITCHING ROUTINES\n\nBITS3&4\t\t=\tOCT14\nBITS4&6\t\t=\tOCT50\nBITS4-5\t\tEQUALS\tBITS4&5\nIMUSEFLG\tEQUALS\tBIT8\t\t# INTERPRETER SWITCH 7.\n-COMMAX\t\tDEC\t-191\n-COMMAX-\tDEC\t-192\n600MS\t\tDEC\t60\nIMUFIN20\t=\tIMUFINE\nGOMANUR\t\tCA\tATTCADR\t\t# IS KALCMANU FREE\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tTC\tPOODOO\t\t# NO\n\t\tOCT\t1210\t\t# 2 TRYING TO USE SAME DEVICE\n\n\t+3\tEXTEND\n\t\tDCA\tBUF2\n\t\tDXCH\tATTCADR\t\t# SAVE FINAL RETURN FOR KALCMAN3\n\n\t\tCA\tBBANK\n\t\tMASK\tSEVEN\n\t\tADS\tATTCADR +1\n\n\t\tCA\tPRIORITY\n\t\tMASK\tPRIO37\n\t\tTS\tATTPRIO\t\t# SAVE USERS PRIO\n\n\t\tCAF\tKALEBCON\t# SET EBANK FOR KALCMAN3\n\t\tTS\tEBANK\n\t\tTC\tPOSTJUMP\n\t\tCADR\tKALCMAN3\nKALEBCON\tECADR\tBCDU\n\n# Page 1443\n# PROGRAM DESCRIPTION\n# IMU STATUS CHECK ROUTINE R02 (SUBROUTINE UTILITY)\n# MOD NO - 1\n# MOD BY - N.BRODEUR\n# FUNCTIONAL DESCRIPTION\n#\n# TO CHECK WHETHER IMU IS ON AND IF ON WHETHER IT IS ALIGNED TO AN\n# ORIENTATION KNOWN BY THE CMC.  TO REQUEST SELECTION OF THE APPROPRIATE\n# PROGRAM IF THE IMU IS OFF OR NOT ALIGNED TO AN ORIENTATION KNOWN BY THE\n# CMC.  CALLED THROUGH BANKCALL\n# CALLING SEQUENCE-\n#\n# L\tTC\tBANKCALL\n# L+1\tCADR\tR02BOTH\n# SUBROUTINES CALLED\n#\n#\tVARALARM\n#\tFLAGUP\n# NORMAL EXIT MODES\n#\n# AT L+2 OF CALLING SEQUENCE\n# ALARM OR ABORT EXIT MODES\n#\tGOTOPOOH, WITH ALARM\n# ERASABLE INITIALIZATION REQUIRED\n#\n# NONE\n# DEBRIS\n#\n# CENTRALS-A,Q,L\n\n\t\tBANK\t34\n\t\tSETLOC\tR02\n\t\tBANK\n\t\tCOUNT\t04/R02\t\t# COUNT*\n\nDEC51\t\tDEC\t51\nR02BOTH\t\tCAF\tBIT13\n\t\tMASK\tSTATE +3\t# REFSMFLG\n\t\tCCS\tA\n\t\tTC\tR02ZERO\t\t# ZERO IMUS\n\n\t\tCA\tIMODES30\n\t\tMASK\tBIT9\t\t# IS ISS INITIALIZED\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tCS\tBIT4\t\t# SEND IMU ALARM CODE 210\n\t\tAD\tOCT220\t\t# SEND REFSMM ALARM\n\t\tTC\tVARALARM\n\n\t\tTC\tGOTOPOOH\n\n# Page 1444\nR02ZERO\t\tTC\tUPFLAG\n\t\tADRES\tIMUSE\n\t\tTCF\tSWRETURN\nOCT220\t\tOCT\t220\n\n# Page 1445\n# PROGRAM DESCRIPTION\tP06\t10FEB67\n\n# TRANSFER THE ISS/CMC FROM THE OPERATE TO THE STANDBY CONDITION.\n\n# THE NORMAL CONDITION OF READINESS OF THE GNCS WHEN NOT IN USE IS STANDBY.  IN THIS CONDITION THE IMU\n# HEATER POWER IS ON.  THE IMU OPERATE POWER IS OFF.  THE COMPUTER POWER IS ON.  THE OPTICS POWER IS OFF.  THE\n# CMC STANDBY ON THE MAIN AND LEB DISKYS IS ON.\n\n# CALLING SEQUENCE:\n#\tASTRONAUT REQUEST THROUGH DSKY\tV37E 06E.\n\n# SUBROUTINES CALLED:\n#\tGOPERF1\n#\tBANKCALL\n#\tFLAGDOWN\n\n# Page 1446\n# PRESTAND PREPARES FOR STANDBY BY SNAPSHOTTING THE SCALER AND TIME1 TIME2\n# THE LOW 5 BITS OF THE SCALER ARE INSPECTED TO INSURE COMPATABILITY\n# BETWEEN THE SCALER READING AND THE TIME1 TIME2 READING.\n\n\t\tSETLOC\tP05P06\n\t\tBANK\n\n\t\tEBANK=\tTIME2SAV\n\t\tCOUNT*\t$$/P06\n\nP06\t\tTC\tUPFLAG\t\t# SET NODOV37 BIT\n\t\tADRES\tNODOFLAG\n\nPRESTAND\tINHINT\n\t\tEXTEND\n\t\tDCA\tTIME2\t\t# SNAPSHOT TIME1TIME2\n\t\tDXCH\tTIME2SAV\n\t\tTC\tSCALPREP\n\t\tTC\tPRESTAND\t# T1,T2,SCALER NOT COMPATIBLE\n\t\tDXCH\tMPAC\t\t# T1,T2 AND SCALER OK\n\t\tDXCH\tSCALSAVE\t# STORE SCALER\n\t\tINHINT\n\t\tTC\tBANKCALL\n\t\tCADR\tRNDREFDR\t# REFSMM, DRIFT, TRACK FLAGS DOWN\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tIMUSE\t\t# IMUSE DOWN\n\t\tTC\tDOWNFLAG\n\t\tADRES\tRNDVZFLG\t# RNDVZFLG DOWN\n\n\t\tCAF\tBIT11\n\t\tEXTEND\n\t\tWOR\tCHAN13\t\t# SET STANDBY ENABLE BIT\n\n\t\tTC\tPHASCHNG\t# SET RESTART TO POSTAND WHEN STANDBY\n\t\tOCT\t07024\t\t#\tRECOVERS\n\t\tOCT\t20000\n\t\tEBANK=\tSCALSAVE\n\t\t2CADR\tPOSTAND\n\n\t\tCAF\tOCT62\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTCF\t-3\n\t\tTCF\t-4\n\t\tTCF\t-5\n\nOCT62\t\tEQUALS\t.5SEC\t\t# DEC 50 = OCT 62\n\n# THE LOW 5 BITS OF THE SCALER READS 10000 FOR THE FIRST INTERVAL AFTER A\n# Page 1447.\n# T1 INCREMENT.  IF SCALPREP DETECTS THIS INTERVAL THE T1,T2 AND SCALER\n# DATA ARE NOT COMPATABLE AND RETURN IS TO L+1 FOR ANOTHER READING OF THE\n# DATA.  OTHERWISE, THE RETURN IS TO L+2 TO PROCEED.  ROUTINE ALSO PREPARES\n# THE SCALER READING FOR COMPUTATION OF THE INCREMENT TO UPDATE T1T2.  (THE\n# 10 MS BIT (BIT 6) OF THE SCALER IS INCREMENTED 5 MS OUT OF PHASE FROM\n# T1.) ADDITION OF 5 MS (BIT 5) TO THE SCALER READING HAS THE EFFECT OF\n# ADJUSTING BIT 6 IN THE SCALER TO BE IN PHASE WITH BIT 1 OF T1.  THE LOW 5\n# BITS OF THE SCALER READING ARE THEN SET TO ZERO, TO TRUNCATE THE SCALER\n# DATA TO 10 MS.  RESULTS ARE STORED IN MPAC, +1.\n\nSCALPREP\tEXTEND\n\t\tQXCH\tMPAC +2\n\t\tTC\tFINETIME +1\n\t\tRELINT\n\t\tDXCH\tMPAC\n\t\tCA\tBIT5\t\t# ADD 5 MS TO THE SCALER READING.\n\t\tTS\tL\n\t\tCA\tZERO\n\t\tDAS\tMPAC\n\t\tCS\tLOW5\t\t# SET LOW 5 BITS OF (SCALER+5MS) TO ZERO\n\t\tMASK \tMPAC +1\t\t# AND STORE RESULTS IN MPAC,+1.\n\t\tXCH\tMPAC +1\n\t\tMASK\tLOW5\t\t# TEST LOW 5 BITS OF SCALER FOR THE FIRST\n\t\t\t\t\t# INTERVAL AFTER THE T1 INCREMENT\n\t\t\t\t\t# (NOW = 00000, SINCE BIT 5 ADDED).\n\t\tCCS\tA\t\t# IS IT 1ST INTERVAL AFTER T1 INCREMENT\n\t\tINCR\tMPAC +2\t\t# NO\n\t\tTC\tMPAC +2\t\t# YES\n\n# POSTAND RECOVERS TIME AFTER STANDBY.THE SCALER IS SNAPSHOTTED AND THE\n# TIME1 TIME2 COUNTER IS SET TO ZERO.  THE LOW 5 BITS OF THE SCALER ARE\n# INSPECTED TO INSURE COMPATABILITY BETWEEN THE SCALER READING AND THE\n# CLEARING OF THE TIME COUNTER.  IT THEN COMPUTES THE DIFFERENCE IN SCALER\n# VALUES (IN DP) AND ADDS THIS TO THE PREVIOUSLY SNAPSHOTTED VALUES OF\n# TIME1 TIME2 AND PLACES THIS NEW TIME INTO THE TIME1 TIME2 COUNTER.\n\n\t\tCOUNT*\t$$/P05\n\nPOSTAND\t\tCS\tBIT11\t\t# RECOVER TIME AFTER STANDBY.\n\t\tEXTEND\n\t\tWAND\tCHAN13\t\t# CLEAR STANDBY ENABLE BIT\n\t\tINHINT\n\t\tCA\tZERO\n\t\tTS\tL\n\t\tDXCH\tTIME2\t\t# CLEAR TIME1 TIME2\n\t\tTC\tSCALPREP\t# STORE SCALER IN MPAC, MPAC+1\n\t\tTC\tPOSTAND +3\t# T1,T2,SCALER NOT COMPATIBLE\n\t\tEXTEND\t\t\t# T1,T2 AND SCALER OK\n\t\tDCS\tSCALSAVE\n\t\tDAS\tMPAC\t\t# FORM DP DIFFERENCE OF POSTSTANDBY SCALER\n# Page 1448\n\t\tCAF\tBIT10\t\t# MINUS PRESTANDBY SCALER AND SHIFT RIGHT\n\t\tTC\tSHORTMP\t\t# 5 TO ALIGN BITS WITH TIME1TIME2.\n\t\tCAF\tZERO\n\t\tTS\tMPAC +2\t\t# NEEDED FOR TP AGREE\n\t\tTC\tTPAGREE\t\t# MAKE DP DIFF AGREE\n\t\tCCS\tMPAC\n\t\tTC\tPOSTCOM\t\t# IF DP DIFF NET +, NO SCALER OVERFLOW\n\t\tTC\tPOSTCOM\t\t# BETWEEN PRE AND POST STANDBY.\n\t\tTC\t+1\t\t# IF DP DIFF NET -, SCALER OVERFLOWED.  ADD\n\t\tCAF\tBIT10\t\t# BIT 10 TO HIGH DIFF TO CORRECT.\n\t\tADS\tMPAC\nPOSTCOM\t\tEXTEND\t\t\t# C(MPAC,+1) IS MAGNITUDE OF DELTA SCALER.\n\t\tDCA\tTIME2SAV\t# PRE-STANDBY TIME1TIME2\n\t\tDAS\tMPAC\n\t\tTC\tTPAGREE\t\t# FORCE SIGN AGREEMENT\n\t\tDXCH\tMPAC\t\t# UPDATED VALUE FOR T1,T2.\n\t\tDAS\tTIME2\t\t# LOAD UPDATED VALUE INTO T1,T2, WITH\n\t\tTC\tDOWNFLAG\t# CLEAR NODOFLAG\n\t\tADRES\tNODOFLAG\n\n\t\tTC\tGOTOPOOH\n"
  },
  {
    "path": "Comanche055/INFLIGHT_ALIGNMENT_ROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINFLIGHT_ALIGNMENT_ROUTINES.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1355-1364\n# Mod history:\t2009-05-14 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1355\n\t\tBANK\t22\n\t\tSETLOC\tINFLIGHT\n\t\tBANK\n\n\t\tEBANK=\tXSM\n\n# CALCGTA COMPUTES THE GYRO TORQUE ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.\n#\n# THE INPUT IS THE DESIRED STABLE MEMBER COORDINATES REFERRED TO PRESENT STABLE MEMBER COORDINATES. THE THREE\n# HALF-UNIT VECTORS ARE STORED AT XDC, YDC, AND ZDC.\n#\n# THE OUTPUTS ARE THE THREE GYRO TORQUING ANGLES TO BE APPLIED TO THE Y, Z, AND X GYROS AND ARE STORED DP AT IGC,\n# MGC, AND OGC RESPECTIVELY.\n\n\t\tCOUNT\t23/INFLT\n\nCALCGTA\t\tITA\tDLOAD\t\t# PUSHDOWN  00-03,16D-27D,34D-37D\n\t\t\tS2\t\t# XDC = (XD1 XD2 XD3)\n\t\t\tXDC\t\t# YDC = (YD1 YD2 YD3)\n\t\tPDDL\tPDDL\t\t# ZDC = (ZD1 ZD2 ZD3)\n\t\t\tHI6ZEROS\n\t\t\tXDC \t+4\n\t\tDCOMP\tVDEF\n\t\tUNIT\n\t\tSTODL\tZPRIME\t\t# ZP = UNIT(-XD3 0 XD1) = (ZP1 ZP2 ZP3)\n\t\t\tZPRIME\n\n\t\tSR1\n\t\tSTODL\tSINTH\t\t# SIN(IGC) = ZP1\n\t\t\tZPRIME \t+4\n\t\tSR1\n\t\tSTCALL\tCOSTH\t\t# COS(IGC) = ZP3\n\t\t\tARCTRIG\n\n\t\tSTODL\tIGC\t\t# Y GYRO TORQUING ANGLE   FRACTION OF REV.\n\t\t\tXDC \t+2\n\t\tSR1\n\t\tSTODL\tSINTH\t\t# SIN(MGC) = XD2\n\t\t\tZPRIME\n\n\t\tDMP\tPDDL\n\t\t\tXDC \t+4\t# PD00 = (ZP1)(XD3)\n\t\t\tZPRIME \t+4\n\n\t\tDMP\tDSU\n\t\t\tXDC\t\t# MPAC = (ZP3)(XD1)\n\t\tSTADR\n\t\tSTCALL\tCOSTH\t\t# COS(MGC) = MPAC - PD00\n\t\t\tARCTRIG\n# Page 1356\n\t\tSTOVL\tMGC\t\t# Z GYRO TORQUING ANGLE   FRACTION OF REV.\n\t\t\tZPRIME\n\t\tDOT\n\t\t\tZDC\n\t\tSTOVL\tCOSTH\t\t# COS(OGC) = ZP . ZDC\n\t\t\tZPRIME\n\t\tDOT\n\t\t\tYDC\n\t\tSTCALL\tSINTH\t\t# SIN(OGC) = ZP . YDC\n\t\t\tARCTRIG\n\n\t\tSTCALL\tOGC\t\t# X GYRO TORQUING ANGLE   FRACTION OF REV.\n\t\t\tS2\n\n# Page 1357\n# ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE.\n#\n# THE INPUTS ARE SIN/4 AND COS/4 STORED DP AT SINTH AND COSTH.\n#\n# THE OUTPUT IS THE CALCULATED ANGLE BETWEEN +.5 AND -.5 REVOLUTIONS AND STORED AT THETA. THE OUTPUT IS ALSO\n# AVAILABLE AT MPAC.\n\nARCTRIG\t\tDLOAD\tABS\t\t# PUSHDOWN  16D-21D\n\t\t\tSINTH\n\t\tDSU\tBMN\n\t\t\tQTSN45\t\t# ABS(SIN/4) - SIN(45)/4\n\t\t\tTRIG1\t\t# IF (-45,45) OR (135,-135)\n\n\t\tDLOAD\tSL1\t\t# (45,135) OR (-135,-45)\n\t\t\tCOSTH\n\t\tACOS\tSIGN\n\t\t\tSINTH\n\t\tSTORE\tTHETA\t\t# X = ARCCOS(COS) WITH SIGN(SIN)\n\t\tRVQ\n\nTRIG1\t\tDLOAD\tSL1\t\t# (-45,45) OR (135,-135)\n\t\t\tSINTH\n\t\tASIN\n\t\tSTODL\tTHETA\t\t# X = ARCSIN(SIN) WITH SIGN(SIN)\n\t\t\tCOSTH\n\t\tBMN\n\t\t\tTRIG2\t\t# IF (135,-135)\n\n\t\tDLOAD\tRVQ\n\t\t\tTHETA\t\t# X = ARCSIN(SIN)   (-45,45)\n\nTRIG2\t\tDLOAD\tSIGN\t\t# (135,-135)\n\t\t\tHIDPHALF\n\t\t\tSINTH\n\t\tDSU\n\t\t\tTHETA\n\t\tSTORE\tTHETA\t\t# X = .5 WITH SIGN(SIN) - ARCSIN(SIN)\n\t\tRVQ\t\t\t#\t(+) - (+) OR (-) - (-)\n\n# Page 1358\n# SMNB, NBSM, AND AXISROT, WHICH USED TO APPEAR HERE, HAVE BEEN\n# COMBINED IN A ROUTINE CALLED AX*SR*T, WHICH APPEARS AMONG THE POWERED\n# FLIGHT SUBROUTINES.\n\n# Page 1359\n# CALCGA COMPUTES THE CDU DRIVING ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.\n#\n# THE INPUTS ARE  1) THE NAVIGATION BASE COORDINATES REFERRED TO ANY COORDINATE SYSTEM. THE THREE HALF-UNIT\n# VECTORS ARE STORED AT XNB, YNB, AND ZNB.  2) THE DESIRED STABLE MEMBER COORDINATES REFERRED TO THE SAME\n# COORDINATE SYSTEM ARE STORED AT XSM, YSM, AND ZSM.\n#\n# THE OUTPUTS ARE THE THREE CDU DRIVING ANGLES AND ARE STORED SP AT THETAD, THETAD +1, AND THETAD +2.\n\nCALCGA\t\tSETPD\t\t\t# PUSHDOWN  00-05, 16D-21D, 34D-37D\n\t\t\t0\n\t\tVLOAD\tVXV\n\t\t\tXNB\t\t# XNB = OGA (OUTER GIMBAL AXIS)\n\t\t\tYSM\t\t# YSM = IGA (INNER GIMBAL AXIS)\n\t\tUNIT\tPUSH\t\t# PD0 = UNIT(OGA X IGA) = MGA\n\n\t\tDOT\tITA\n\t\t\tZNB\n\t\t\tS2\n\t\tSTOVL\tCOSTH\t\t# COS(OG) = MGA . ZNB\n\t\t\t0\n\t\tDOT\n\t\t\tYNB\n\t\tSTCALL\tSINTH\t\t# SIN(OG) = MGA . YNB\n\t\t\tARCTRIG\n\t\tSTOVL\tOGC\n\t\t\t0\n\n\t\tVXV\tDOT\t\t# PROVISION FOR MG ANGLE OF 90 DEGREES\n\t\t\tXNB\n\t\t\tYSM\n\t\tSL1\n\t\tSTOVL\tCOSTH\t\t# COS(MG) = IGA . (MGA X OGA)\n\t\t\tYSM\n\t\tDOT\n\t\t\tXNB\n\t\tSTCALL\tSINTH\t\t# SIN(MG) = IGA . OGA\n\t\t\tARCTRIG\n\t\tSTORE\tMGC\n\n\t\tABS\tDSU\n\t\t\t.166...\n\t\tBPL\n\t\t\tGIMLOCK1\t# IF ANGLE GREATER THAN 60 DEGREES\n\nCALCGA1\t\tVLOAD\tDOT\n\t\t\tZSM\n\t\t\t0\n\t\tSTOVL\tCOSTH\t\t# COS(IG) = ZSM . MGA\n\t\t\tXSM\n# Page 1360\n\t\tDOT\tSTADR\n\t\tSTCALL\tSINTH\t\t# SIN(IG) = XSM . MGA\n\t\t\tARCTRIG\n\n\t\tSTOVL\tIGC\n\t\t\tOGC\n\t\tRTB\tBONCLR\n\t\t\tV1STO2S\n\t\t\tCPHIFLAG\n\t\t\tS2\n\t\tSTCALL\tTHETAD\n\t\t\tS2\n\nGIMLOCK1\tEXIT\n\t\tTC\tALARM\n\t\tOCT\t00401\n\t\tTC\tUPFLAG\t\t# GIMBAL LOCK HAS OCCURRED\n\t\tADRES\tGLOKFAIL\n\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tCALCGA1\n\n# Page 1361\n# AXISGEN COMPUTES THE COORDINATES OF ONE COORDINATE SYSTEM REFERRED TO ANOTHER COORDINATE SYSTEM.\n#\n# THE INPUTS ARE  1) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM A STORED AT STARAD.  2) THE STAR2 VECTOR\n# REFERRED TO COORDINATE SYSTEM A STORED AT STARAD +6.  3) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM B STORED\n# AT LOCATION 6 OF THE VAC AREA.  4) THE STAR2 VECTOR REFERRED TO COORDINATE SYSTEM B STORED AT LOCATION 12D OF\n# THE VAC AREA.\n#\n# THE OUTPUT DEFINES COORDINATE SYSTEM A REFERRED TO COORDINATE SYSTEM B.  THE THREE HALF-UNIT VECTORS ARE STORED\n# AT LOCATIONS XDC, XDC +6, XDC +12D, AND STARAD, STARAD +6, STARAD +12D.\n\nAXISGEN\t\tAXT,1\tSSP\t\t# PUSHDOWN  00-30D, 34D-37D\n\t\t\tSTARAD \t+6\n\t\t\tS1\n\t\t\tSTARAD \t-6\n\n\t\tSETPD\n\t\t\t0\nAXISGEN1\tVLOAD*\tVXV*\t\t# 06D\tUA = S1\n\t\t\tSTARAD \t+12D,1\t#\tSTARAD +00D\tUB = S1\n\t\t\tSTARAD \t+18D,1\n\t\tUNIT\t\t\t# 12D\tVA = UNIT(S1 X S2)\n\t\tSTORE\tSTARAD \t+18D,1\t#\tSTARAD +06D\tVB = UNIT(S1 X S2)\n\t\tVLOAD*\n\t\t\tSTARAD \t+12D,1\n\n\t\tVXV*\tVSL1\n\t\t\tSTARAD \t+18D,1\t# 18D\tWA = UA X VA\n\t\tSTORE\tSTARAD \t+24D,1\t#\tSTARAD +12D\tWB = UB X VB\n\n\t\tTIX,1\n\t\t\tAXISGEN1\n\n\t\tAXC,1\tSXA,1\n\t\t\t6\n\t\t\t30D\n\n\t\tAXT,1\tSSP\n\t\t\t18D\n\t\t\tS1\n\t\t\t6\n\n\t\tAXT,2\tSSP\n\t\t\t6\n\t\t\tS2\n\t\t\t2\n\nAXISGEN2\tXCHX,1\tVLOAD*\n\t\t\t30D\t\t# X1=-6 X2=+6\tX1=-6 X2=+4\tX1=-6 X2=+2\n\t\t\t0,1\n\n# Page 1362\n\t\tVXSC*\tPDVL*\t\t# J=(UA)(UB1)\tJ=(UA)(UB2)\tJ=(UA)(UB3)\n\t\t\tSTARAD \t+6,2\n\t\t\t6,1\n\t\tVXSC*\n\t\t\tSTARAD \t+12D,2\n\t\tSTOVL*\t24D\t\t# K=(VA)(VB1)\tJ=(VA)(VB2)\tJ=(VA)(VB3)\n\t\t\t12D,1\n\n\t\tVXSC*\tVAD\n\t\t\tSTARAD \t+18D,2\t# L=(WA)(WB1)\tJ=(WA)(WB2)\tJ=(WA)(WB3)\n\t\tVAD\tVSL1\n\t\t\t24D\n\t\tXCHX,1\tUNIT\n\t\t\t30D\n\t\tSTORE\tXDC \t+18D,1\t# XDC = L+J+K\tYDC = L+J+K\tZDC = L+J+K\n\n\t\tTIX,1\n\t\t\tAXISGEN3\n\nAXISGEN3\tTIX,2\n\t\t\tAXISGEN2\n\n\t\tVLOAD\n\t\t\tXDC\n\t\tSTOVL\tSTARAD\n\t\t\tYDC\n\t\tSTOVL\tSTARAD \t+6\n\t\t\tZDC\n\t\tSTORE\tSTARAD \t+12D\n\n\t\tRVQ\n\n# Page 1363\nQTSN45\t\t2DEC\t.1768\n.166...\t\t2DEC\t.1666666667\n\n# Page 1364 (empty page)\n\n\n"
  },
  {
    "path": "Comanche055/INTEGRATION_INITIALIZATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINTEGRATION_INITIALIZATION.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1309-1333\n# Mod history:\t2009-05-15 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrections:  fixed an interpreter instruction,\n#\t\t\t\tfixed a SETLOC.\n#\t\t2009-05-23 RSB\tIn SETCOAST, corrected MOONTHIS to AMOONFLG.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1309\n# 1.0 INTRODUCTION\n# ----------------\n#\n# FROM A USER'S POINT OF VIEW, ORBITAL INTEGRATION IS ESSENTIALLY THE SAME AS THE 278 INTEGRATION\n# PROGRAM.  THE SAME ENTRANCES TO THE PROGRAM WILL BE MAINTAINED, THE SAME STALLING ROUTINE WILL BE USED AND\n# OUTPUT WILL STILL BE VIA THE PUSHLIST.  THE PRIMARY DIFFERENCES TO A USER INVOLVE THE ADDED CAPABILITY OF\n# TERMINATING INTEGRATION AT A SPECIFIC FINAL RADIUS AND THE DIFFERENCE IN STATE VECTOR SCALING INSIDE AND OUT-\n# SIDE THE LUNAR SPHERE OF INFLUENCE.\n#\n# IN ORDER TO MAKE THE CSM(LEM)PREC AND CSM(LEM)CONIC ENTRANCES SIMILAR TO FLIGHT 278, THE INTEGRATION PROGRAM\n# WILL ITSELF SET THE FINAL RADIUS (RFINAL) TO 0 SO THAT REACHING THE DESIRED TIME ONLY WILL TERMINATE\n# INTEGRATION.  THE DP REGISTER RFINAL MUST BE SET BY USERS OF INTEGRVS AND INTEGRV, AND MUST BE DONE AFTER THE\n# CALL TO INTSTALL.\n#\n# WHEN THE LM IS ON THE LUNAR SURFACE (INDICATED BY LUNAR SURFACE FLAG SET) CALLS TO LEMCONIC, LEMPREC, AND\n# INTEGRV WITH VINFLAG = 0 WILL RESULT IN THE USE OF THE PLANETARY INERTIAL ORIENTATION SUBROUTINES TO PROVIDE\n# BOTH THE LMS POSITION AND VELOCITY IN THE REFERENCE COORDINATE SYSTEM.\n# THE PROGRAM WILL PROVIDE OUTPUT AS IF INTEGRATION WAS USED.  THAT IS, THE PUSHLIST WILL BE SET AS NOTED BELOW AND\n# THE PERMANENT STATE VECTOR UPDATED WHEN SPECIFIED BY AN INTEGRV CALL.\n#\n# USERS OF INTEGRVS DESIRING INTEGRATION (INTYPFLG = 0) SHOULD NOTE THAT THE OBLATENESS PERTURBATION COMPUTATION\n# IN LUNAR ORBIT IS TIME DEPENDENT.  THEREFORE, THE USER SHOULD SUPPLY AN INITIAL STATE VECTOR VALID AT SOME REAL\n# TIME AND THE DESIRED TIME (TDEC1) ALSO AT SOME REAL TIME.  FOR CONIC ,,INTEGRATION,, THE USER MAY STILL USE ZERO\n# AS THE INITIAL TIME AND DELTA TIME AS THE DESIRED TIME.\n#\n# 2.0 CENTRAL DESCRIPTION\n# -----------------------\n#\n# THE INTEGRATION PROGRAM OPERATES AS A CLOSED INTERPRETIVE SUBROUTINE AND PERFORMS THESE FUNCTIONS---\n#\t1) INTEGRATES (PRECISION OR CONIC) EITHER CSM OR LM STATE VECTOR\n#\t2) INTEGRATES THE W-MATRIX\n#\t3) PERMANENT OR TEMPORARY UPDATE OF THE STATE VECTOR\n#\n# THERE ARE SIX ENTRANCES TO THE INTEGRATION PROGRAM.  FOUR OF THESE (CSMPREC, LEMPREC, CSMCONIC, LEMCONIC) SET\n# ALL THE FLAGS REQUIRED IN THE INTEGRATION PROGRAM ITSELF TO CAUSE THE PRECISION OR CONIC INTEGRATION (KEPLER) OF\n# THE LM OR CSM STATE VECTOR, AS THE NAMES SUGGEST.  ONE ENTRANCE (INTEGRVS) PERMITS THE CALLING PROGRAM TO\n# PROVIDE A STATE VECTOR TO BE INTEGRATED.  THE CALLING PROGRAM MUST SET THE FLAGS INDICATING (1) PRECISION OR\n# CONIC INTEGRATION, (2) IN OR OUT OF LUNAR SPHERE, (3) MIDCOURSE OR NOT, AND THE INTEGRATION PROGRAM COMPLETES\n# THE FLAG SETTING TO BYPASS W-MATRIX INTEGRATION.  THE LAST ENTRANCE (INTEGRV, USED IN GENERAL BY THE\n# NAVIGATION PROGRAMS) PERMITS THE CALLER TO SET FIVE FLAGS (NOT MOONFLAG OR MIDFLAG) BUT NOT TO INPUT A STATE\n# VECTOR.  ANY PROGRAM WHICH CALLS INTEGRVS OR INTEGRV MUST CALL INTSTALL BEFORE IT SETS THE INTEGRATION FLAGS\n# AND/OR STATE VECTOR.\n#\n# THREE SETS OF 42 REGISTERS AND 2 FLAGS ARE USED FOR THE STATE VECTORS.  TWO SETS, WHICH MAY NOT BE OVERLAYED, ARE\n# USED FOR THE PERMANENT STATE VECTORS FOR THE CSM AND LM.  THE THIRD SET, WHICH MAY BE OVERLAYED WHEN INTEGRATION\n# IS NOT BEING DONE, IS USED IN THE COMPUTATIONS.\n#\n# THE PERMANENT STATE VECTORS WILL BE PERIODICALLY UPDATED SO THAT THE VECTORS WILL NOT BE OLDER THAN 4 TIMESTEPS.\n# THE PERMANENT STATE VECTORS WILL ALSO BE UPDATED WHENEVER THE W-MATRIX IS INTEGRATED OR WHEN A CALLER OF INTEGRV\n# SETS STATEFLG (THE NAVIGATION PROGRAMS P20, P22.)\n#\n# Page 1310\n# APPENDIX B OF THE USERS GUIDE LISTS THE STATE VECTOR QUANTITIES.\n#\n# 2.1 RESTARTS\n#\n# PHASE CHANGES WILL BE MADE IN THE INTEGRATION PROGRAM ONLY FOR THE INTEGRV ENTRANCE (I.E., WHEN THE W-MATRIX IS\n# INTEGRATED OR PERMANENT STATE VECTOR IS UPDATED.)  THE GROUP NUMBER USED WILL BE THAT FOR THE P20-25 PROGRAMS\n# (I.E., GROUP2) SINCE THE INTEGRV ENTRANCE WILL ONLY BE USED BY THESE PROGRAMS.  IF A RESTART OCCURS DURING AN\n# INTEGRATION OF THE STATE VECTOR ONLY, THE RECOVERY WILL BE TO THE LAST PHASE IN THE CALLING PROGRAM.  CALLING\n# PROGRAMS WHICH USE THE INTEGRV OR INTEGRVS ENTRANCE OF INTEGRATION SHOULD ENSURE THAT IF PHASE CHANGING IS DONE\n# THAT IT IS PRIOR TO SETTING THE INTEGRATION INPUTS IN THE PUSHLIST.\n# THIS IS BECAUSE THE PUSHLIST IS LOST DURING A RESTART.\n#\n# 2.2 SCALING\n#\n# THE INTEGRATION ROUTINE WILL MAINTAIN THE PERMANENT MEMORY STATE VECTORS IN THE SCALING AND UNITS DEFINED IN\n# APPENDIX B OF THE USERS GUIDE.  THE SCALING OF THE OUTPUT POSITION VECTORDEPENDS ON THE ORIGIN OF THE COORDINATE\n#  SYSTEM AT THE DESIRED INTEGRATION TIME.  THE COORDINATE SYSTEM TRANSFORMATION WILL BE DONE AUTOMATICALLY ON\n# MULTIPLE TIMESTEP ENCKE INTEGRATION ONLY.  THUS IT IS POSSIBLE TO HAVE OUTPUT FROM SUCCESSIVE INTEGRATIONS IN\n# DIFFERENT SCALING.\n# HOWEVER, RATT, VATT WILL ALWAYS BE SCALED THE SAME.\n#\n# 3.0 INPUT/OUTPUT\n# ----------------\n#\n# PROGRAM INPUTS ARE THE FLAGS DESCRIBED IN APPENDIX A AND THE PERMANENT STATE VECTOR QUANTITIES DESCRIBED IN AP-\n# PENDIX B OF THE USERS GUIDE, PLUS THE DESIRED TIME TO INTEGRATE TO IN TDEC1 (A PUSH LIST LOCATION).\n# FOR INTEGRVS, THE RCV,VCV, TET OR THE TEMPORARY STATE VECTOR MUST BE SET, PLUS MOONFLAG AND MIDFLAG\n#\n# FOR SIMULATION THE FOLLOWING QUANTITIES MUST BE PRESET ---\n#\n#\t\t\t\t\t\t\t\t\t\tEARTH\tMOON\n#\t\t\t\t\t\t\t\t\t\t 29\t 27\n#\tRRECTCSM(LEM) \t      - RECTIFIED POSITION VECTOR\tMETERS\t\t2\t2\n#\n#\t\t\t\t\t\t\t\t\t\t 7\t 5\n#\tVRECTCSM(LEM)\t      - RECTIFIED VELOCITY VECTOR\tM/CSEC\t\t2\t2\n#\n#\t\t\t\t\t\t\t\t\t\t 28\t 28\n#\tTETCSM(LEM)\t      - TIME STATE VECTOR IS VALID\tCSEC\t\t2\t2\n#\t\t\t\tCUSTOMARILY 0, BUT NOTE LUNAR\n#\t\t\t\tORBIT DEPENDENCE ON REAL TIME.\n#\n#\t\t\t\t\t\t\t\t\t\t 22\t 18\n#\tDELTAVCSM(LEM)\t      - POSITION DEVIATION\t\tMETERS\t\t2\t2\n#\t\t\t\t0 IF TCCSM(LEM) = 0\n#\n#\t\t\t\t\t\t\t\t\t\t 3\t -1\n#\tNUVCSM(LEM)\t      - VELOCITY DEVIATION\t\tM/CSEC\t\t2\t2\n#\t\t\t\t0 IF TCCSM(LEM) = 0\n# Page 1311\n#\t\t\t\t\t\t\t\t\t\t 29\t 27\n#\tRCVCSM(LEM)\t      - CONIC POSITION\t\t\tMETERS\t\t2\t2\n#\t\t\t\tEQUALS RRECTCSM(LEM) IF\n#\t\t\t\tTCCSM(LEM) = 0\n#\n#\t\t\t\t\t\t\t\t\t\t 7\t 5\n#\tVCVCSM(LEM)\t      - CONIC VELOCITY\t\t\tM/CSEC\t\t2\t2\n#\t\t\t\tEQUALS VRECTCSM(LEM) IF\n#\t\t\t\tTCCSM(LEM) = 0\n#\n#\t\t\t\t\t\t\t\t\t\t 28\t 28\n#\tTCCSM(LEM)\t      - TIME SINCE RECTIFICATION\tCSECS\t\t2\t2\n#\t\t\t\tCUSTOMARILY 0\n#\n#\t\t\t\t\t\t\t\t 1/2\t\t 17\t 16\n#\tXKEPCSM(LEM)\t      - RDOT OF KEPLER'S EQUATION\tM\t\t2\t2\n#\t\t\t\t0 IF TCCSM(LEM) = 0\n#\n#\tCMOONFLG\t      - PERMANENT FLAGS CORRESPONDING\t\t\t0\t0\n#\tCMIDFLAG\t\tTO MOONFLAG AND MIDFLAG\t\t\t\t0,1\t0,1\n#\tLMOONFLG\t\tC = CSM, L = LM\t\t\t\t\t0\t0\n#\tLMIDFLG\t\t\t\t\t\t\t\t\t0,1\t0,1\n#\n#\tSURFFLAG\t      - LUNAR SURFACE FLAG\t\t\t\t0,1\t0,1\n#\n# IN ADDITION, IF (L)CMIDFLAG IS SET, THE INITIAL INPUT VALUES FOR LUNAR\n# SOLAR EPHEMERIDES SUBROUTINE AND PLANETARY INERTIAL ORIENTATION SUB-\n# ROUTINE MUST BE PRESET.\n#\n# OUTPUT\n# AFTER EVERY CALL TO INTEGRATION\n#\t\t\t\t\t\t\t\t\tEARTH\tMOON\n#\t\t\t\t\t\t\t\t\t 29\t 29\n#\t0D\tRATT\tPOSITION\t\t\tMETERS\t\t2\t2\n#\t\t\t\t\t\t\t\t\t 7\t 7\n#\t6D\tVATT\tVELOCITY\t\t\tM/CSEC\t\t2\t2\n#\t\t\t\t\t\t\t\t\t 28\t 28\n#      12D\tTAT\tTIME\t\t\t\t\t\t2\t2\n#\t\t\t\t\t\t\t\t\t 29\t 27\n#      14D\tRATT1\tPOSITION\t\t\tMETERS\t\t2\t2\n#\t\t\t\t\t\t\t\t\t 7 \t 5\n#      20D\tVATT1\tVELOCITY\t\t\tM/CSEC\t\t2\t2\n#\t\t\t\t\t\t \t 3   2\t\t 36\t 30\n#      26D\tMU(P)\tMU\t\t\t\tM /CS\t\t2\t2\n#\n#      X1\t\tMUTABLE ENTRY\t\t\t\t\t-2\t-10D\n#\n#      X2\t\tCOORDINT\n#      X2\t\tCOORDINATE SYSTEM ORIGEN\t\t\t0\t2\n#\t\t\t(THIS, NOT MOONFLAG, SHOULD BE\n# Page 1312\n#\t\t\tUSED TO DETERMINE ORIGIN.)\n#\n# IN ADDITION TO THE ABOVE, THE PERMANENT STATE VECTOR IS UPDATED WHENEVER\n# STATEFLG WAS SET AND WHENEVER A W-MATRIX IS TO BE INTEGRATED.  THE PUSH\n# COUNTER IS SET TO 0 AND OVERFLOW IS CLEARED BEFORE RETURNING TO THE\n# CALLING PROGRAM.\n#\n# 4.0 CALLING SEQUENCES AND SAMPLE CODE\n# -------------------------------------\n#\n#\tA) PRECISION ORBITAL INTEGRATION.  CSMPREC,LEMPREC ENTRANCES\n#\t\tL-X\tSTORE TIME TO 96T5791T5 T  95  PUS  L9ST (T4531)\n#\t\tL\tCALL\n#\t\tL+1\t\tCSMPREC (OR LEMPREC)\n#\t\tL+2\tRETURN\n#\t   INPUT\t\t\t\t\t\t\t   28\n#\t\tTDEC1 (PD 32D) TIME TO INTEGRATE TO...CENTISECONDS SCALED 2\n#\t   OUTPUT\n#\t\tTHE DATA LISTED IN SECTION 3.0 PLUS\n#\t\tRQVV\tPOSITION VECTOR OF VEHICLE WITH RESPECT TO SECONDARY\n#\t\tBODY... METERS B-29 ONLY IF MIDFLAG = DIMOFLAG = 1\n#\tB) CONIC INTEGRATION.  CSMCONIC, LEMCONIC ENTRANCES\n#\t\tL-X\tSTORE TIME IN PUSH LIST (TDEC1)\n#\t\tL\tCALL\n#\t\tL+1\t\tCSMCONIC (OR LEMCONIC)\n#\t   INPUT/OUTPUT\n#\t\tSAME AS PRECISION INTEGRATION, EXCEPT RQVV NOT SET\n#\tC) INTEGRATE GIVEN STATE VECTOR.  INTEGRVS ENTRANCE\n#\t\tCALL\n#\t\t\t\tINTSTALL\n#\t\tVLOAD\n#\t\t\t\tPOSITION VECTOR\n#\t\tSTOVL\t\tRCV\n#\t\t\t\tVELOCITY VECTOR\n#\t\tSTODL\t\tVCV\n#\t\t\t\tTIME STATE VECTOR VALID\n#\t\tSTODL\t\tTET\n#\t\t\t\tFINAL RADIUS\n#\t\tSTORE\t\tRFINAL\n#\t\tSET(CLEAR)\tSET(CLEAR)\n#\t\t\t\tINTYPFLAG\n#\t\t\t\tMOONFLAG\n#\t\tSET(CLEAR)\tDLOAD\n#\t\t\t\tDESIRED TIME\n#\t\tSTCALL\t\tTDEC1\n#\t\t\t\tINTEGRVS\n#\t  INPUT\n#\t\tRCV\tPOSITION VECTOR\t\t\tMETERS\n#\t\tVCV\tVELOCITY VECTOR\t\t\tM/CSEC\n#\t\tTET\tTIME OF STATE VECTOR(MAY = 0)\tCSEC B-28\n# Page 1313\n#\t\tTDEC1\tTIME TO INTEGRATE TO\t\tCSEC B-28 (PD 32D)\n#\t\t\t(MAY BE INCREMENT IF TET=0)\n#\t  OUTPUT\n#\t\tSAME AS FOR PRECISION OR CONIC INTEGRATION,\n#\t\tDEPENDING ON INTYPFLG.\n#\tD) INTEGRATE STATE VECTOR.INTGRV ENTRANCE\n#\t\tL-X\tSTORE TIME IN PUSH LIST (TDEC1)(MAY BE DONE AFTER CALL TO INTSTALL)\n#\t\tL-8\tCALL\n#\t\tL-7\n#\t\tL-6\tSET(CLEAR)\tSET(CLEAR)\n#\t\tL-5\t\t\tVINTFLAG\t1=CSM, 0=LM\n#\t\tL-4\t\t\tINTYPFLAG\t1=CONIC, 0=PRECISION\n#\t\tL-3\tSET(CLEAR)\tSET(CLEAR)\n#\t\tL-2\t\t\tDIMOFLAG\t1=W-MATRIX, 0=NO W-MATRIX\n#\t\tL-1\t\t\tD6OR9FLG\t1=9X9, 0=6X6\n#\t\tL\tSET\t\tDLOAD\n#\t\tL+1\t\t\tSTATEFLG\tDESIRE PERMANENT UPDATE\n#\t\tL+2\t\t\tFINAL RAD. OF STATE VECTOR\n#\t\tL+3\tSTCALL\t\tRFINAL\n#\t\tL+4\t\t\tINTEGRV\n#\t\tL\tCALL\t\t\t\tNORMAL USE-- WILL UPDATE STATE\n#\t\tL+1\t\t\tINTEGRV\t\tVECTOR IF DIMOFLAG=1.(STATEFLG IS\n#\t\tL+2\tRETURN\t\t\t\tALWAYS RESET IN INTEGRATION AFTER\n#\t\t\t\t\t\t\tIT IS USED.)\n#\t  INPUT\n#\t\tTDEC1 (PD 32D) TIME TO INTEGRATE TO \tCSEC B-28\n#\t  OUTPUT\n#\t\tSAME AS FOR PRECISION OR CONIC INTEGRATION\n#\t  THE PROGRAM WILL SET MOONFLAG, MIDFLAG DEPENDING ON\n#\t  THE PERMANENT STATE VECTOR REPRESENTATION.\n\n\t\tBANK\t11\n\t\tSETLOC\tINTINIT\n\t\tBANK\n\t\tEBANK=\tRRECTCSM\n\t\tCOUNT\t13/INTIN\n\nSTATEINT\tTC\tPHASCHNG\n\t\tOCT\t00052\n\t\tCAF\tPRIO5\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRRECTCSM\n\t\t2CADR\tSTATINT1\n\n\t\tTC\tTASKOVER\nSTATINT1\tTC\tINTPRET\n\t\tBON\tRTB\n\t\t\tQUITFLAG\n\t\t\tNOINT\t\t# NO STATEINT IF V96\n\t\t\tLOADTIME\n# Page 1314\n\t\tSTORE\tTDEC1\n\t\tCLEAR\tCALL\n\t\t\tV96ONFLG\n\t\t\tINTSTALL\n\t\tSET\tCALL\n\t\t\tNODOFLAG\n\t\t\tSETIFLGS\n\t\tGOTO\n\t\t\tSTATEUP\n600SECS\t\t2DEC\t60000\n\nENDINT\t\tCLEAR\tEXIT\n\t\t\tSTATEFLG\n\t\tTC\tPHASCHNG\n\t\tOCT\t20032\n\t\tEXTEND\n\t\tDCA\t600SECS\n\t\tTC\tLONGCALL\n\t\tEBANK=\tRRECTHIS\n\t\t2CADR\tSTATEINT\n\n\t\tTC\tENDOFJOB\nSETIFLGS\tSET\tCLEAR\n\t\t\tSTATEFLG\n\t\t\tINTYPFLG\n\t\tCLEAR\tCLEAR\n\t\t\tDIM0FLAG\n\t\t\tD6OR9FLG\n\t\tRVQ\nNOINT\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t2\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tQUITFLAG\n\n\t\tTC\tENDOFJOB\n\n# ATOPCSM TRANSFERS RRECT TO RRECT +41 TO RRECTCSM TO RRECTCSM +41\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tATOPCSM\n#\n# NORMAL EXIT AT L+2\n\nATOPCSM\t\tSTQ\tRTB\n\t\t\tS2\n\t\t\tMOVEACSM\n\t\tSET\tCALL\n# Page 1315\n\t\t\tCMOONFLG\n\t\t\tSVDWN1\n\t\tBON\tCLRGO\n\t\t\tMOONFLAG\n\t\t\tS2\n\t\t\tCMOONFLG\n\t\t\tS2\nMOVEACSM\tTC\tSETBANK\n\t\tTS\tDIFEQCNT\t# INITIALIZE INDEX\n\t\tINDEX\tDIFEQCNT\n\t\tCA\tRRECT\n\t\tINDEX\tDIFEQCNT\n\t\tTS\tRRECTCSM\n\t\tCCS\tDIFEQCNT\t# IS TRANSFER COMPLETE\n\t\tTCF\tMOVEACSM +1\t# NO-LOOP\n\t\tTC\tDANZIG\t\t# COMPLETE- RETURN\n\n# PTOACSM TRANSFERS RRECTCSM TO RRECTCSM +41 TO RRECT TO RRECT +41\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\t\t\tPTOACSM\n#\n# NORMAL EXIT AT L+2\n\nPTOACSM\t\tRTB\tBON\n\t\t\tMOVEPCSM\n\t\t\tCMOONFLG\n\t\t\tSETMOON\nCLRMOON\t\tCLEAR\tSSP\n\t\t\tMOONFLAG\n\t\t\tPBODY\n\t\t\t0\n\t\tRVQ\nSETMOON\t\tSET\tSSP\n\t\t\tMOONFLAG\n\t\t\tPBODY\n\t\t\t2\n\t\tRVQ\nMOVEPCSM\tTC\tSETBANK\n\t\tTS\tDIFEQCNT\n\t\tINDEX\tDIFEQCNT\n\t\tCA\tRRECTCSM\n\t\tINDEX\tDIFEQCNT\n\t\tTS\tRRECT\n\t\tCCS\tDIFEQCNT\n\t\tTCF\tMOVEPCSM +1\n\t\tTC\tDANZIG\n\n# Page 1316\n# ATOPLEM TRANSFERS RRECT TO RRECT +41 TO RRECTLEM TO RRECTLEM +41\nATOPLEM\t\tSTQ\tRTB\n\t\t\tS2\n\t\t\tMOVEALEM\n\t\tSET\tCALL\n\t\t\tLMOONFLG\n\t\t\tSVDWN2\n\t\tBON\tCLRGO\n\t\t\tMOONFLAG\n\t\t\tS2\n\t\t\tLMOONFLG\n\t\t\tS2\nMOVEALEM\tTC\tSETBANK\n\t\tTS\tDIFEQCNT\n\t\tINDEX\tDIFEQCNT\n\t\tCA\tRRECT\n\t\tINDEX\tDIFEQCNT\n\t\tTS\tRRECTLEM\n\t\tCCS\tDIFEQCNT\n\t\tTCF\tMOVEALEM +1\n\t\tTC\tDANZIG\n\n# PTOALEM TRANSFERS RRECTLEM TO RRECTLEM +41 TO RRECT TO RRECT +41\n\nPTOALEM\t\tBON\tRTB\n\t\t\tSURFFLAG\n\t\t\tUSEPIOS\n\t\t\tMOVEPLEM\n\t\tBON\tGOTO\n\t\t\tLMOONFLG\n\t\t\tSETMOON\n\t\t\tCLRMOON\nMOVEPLEM\tTC\tSETBANK\n\t\tTS\tDIFEQCNT\n\t\tINDEX\tDIFEQCNT\n\t\tCA\tRRECTLEM\n\t\tINDEX\tDIFEQCNT\n\t\tTS\tRRECT\n\t\tCCS\tDIFEQCNT\n\t\tTCF\tMOVEPLEM +1\n\t\tTC\tDANZIG\n\nUSEPIOS\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tRLS\n\t\tPDDL\tPUSH\n\t\t\tTDEC1\n# Page 1317\n\t\tSTODL\tTET\n\t\t\t5/8\n\t\tCALL\n\t\t\tRP-TO-R\n\t\tSTOVL\tRCV\n\t\t\tZUNIT\n\t\tSTODL\t0D\n\t\t\tTET\n\t\tSTODL\t6D\n\t\t\t5/8\n\t\tSET\tCALL\t\t# NEEDED FOR SETTING X1 ON EXIT\n\t\t\tMOONFLAG\n\t\t\tRP-TO-R\n\t\tVXV\tVXSC\n\t\t\tRCV\n\t\t\tOMEGMOON\n\t\tSTOVL\tVCV\n\t\t\tZEROVEC\n\t\tSTORE\tTDELTAV\n\t\tAXT,2\tSXA,2\n\t\t\t2\n\t\t\tPBODY\n\t\tSTCALL\tTNUV\n\t\t\tA-PCHK\nOMEGMOON\t2DEC*\t2.66169947 E-8 B+23*\n\nSETBANK\t\tCAF\tINTBANK\n\t\tTS\tBBANK\n\t\tCAF\tFORTYONE\n\t\tTC\tQ\n\t\tEBANK=\tRRECTCSM\nINTBANK\t\tBBCON\tINTEGRV\n\n# SPECIAL PURPOSE ENTRIES TO ORBITAL INTEGRATION.  THESE ROUTINES PROVIDE ENTRANCES TO INTEGRATION WITH\n# APPROPRIATE SWITCHES SET OR CLEARED FOR THE DESIRED INTEGRATION.\n#\n# CSMPREC AND LEMPREC PERFORM ORBIT INTEGRATION BY THE ENCKE METHOD TO THE TIME INDICATED IN TDEC1\n# ACCELERATIONS DUE TO OBLATENESS ARE INCLUDED.  NO W-MATRIX INT. IS DONE.\n# THE PERMANENT STATE VECTOR IS NOT UPDATED.\n# CSMCONIC AND LEMCONIC PERFORM ORBIT INTEG. BY KEPLERS METHOD TO THE TIME INDICATED IN TDEC1\n# NO DISTURBING ACCELERATIONS ARE INCLUDED.  IN THE PROGRAM FLOW THE GIVEN\n# STATE VECTOR IS RECTIFIED BEFORE SOLUTION OF KEPLERS EQUATION\n#\n# THE ROUTINES ASSUME THAT THE CSM (LEM) STATE VECTOR IN P-MEM IS VALID.\n# SWITCHES SET PRIOR TO ENTRY TO THE MAIN INTEG. PROG ARE AS FOLLOWS\n#\t\t\tCSMPREC\t\tCSMCONIC\tLEMPREC\t\tLEMCONIC\n#\tVINTFLAG\tSET\t\tSET\t\tCLEAR\t\tCLEAR\n#\tINTYPFLG\tCLEAR\t\tSET\t\tCLEAR\t\tSET\n#\tDIM0FLAG\tCLEAR\t\tCLEAR\t\tCLEAR\t\tCLEAR\n# Page 1318\n#\n# CALLING SEQUENCE\n#\tL-X\tSTORE TDEC1\n#\tL\tCALL\t\t\t(STCALL TDEC1)\n#\tL+1\t\tCSMPREC\t\t(CSMCONIC, LEMPREC, LEMCONIC)\n#\n# NORMAL EXIT TO L+2\n#\n#\n# SUBROUTINES CALLED\n#\tINTEGRV1\n#\tPRECOUT FOR CSMPREC AND LEMPREC\n#\tCONICOUT FOR CSMCONIC AND LEMCONIC\n#\n# OUTPUT - SEE PAGE 2 OF THIS LOG SECTION\n#\n# INPUT\n#\tTDEC1\t\tTIME TO INTEGRATE TO . CSECS B-28\n\nCSMPREC\t\tSTQ\tCALL\n\t\t\tX1\n\t\t\tINTSTALL\n\t\tSXA,1\tSET\n\t\t\tIRETURN\n\t\t\tVINTFLAG\n\nIFLAGP\t\tSET\tCLEAR\n\t\t\tPRECIFLG\n\t\t\tDIM0FLAG\n\t\tCLRGO\n\t\t\tINTYPFLG\n\t\t\tINTEGRV1\nLEMPREC\t\tSTQ\tCALL\n\t\t\tX1\n\t\t\tINTSTALL\n\t\tSXA,1\tCLRGO\n\t\t\tIRETURN\n\t\t\tVINTFLAG\n\t\t\tIFLAGP\n\nCSMCONIC\tSTQ\tCALL\n\t\t\tX1\n\t\t\tINTSTALL\n\t\tSXA,1\tSET\n\t\t\tIRETURN\n\t\t\tVINTFLAG\nIFLAGC\t\tCLEAR\tSETGO\n\t\t\tDIM0FLAG\n\t\t\tINTYPFLG\n\t\t\tINTEGRV1\nLEMCONIC\tSTQ\tCALL\n\t\t\tX1\n# Page 1319\n\t\t\tINTSTALL\n\t\tSXA,1\tCLRGO\n\t\t\tIRETURN\n\t\t\tVINTFLAG\n\t\t\tIFLAGC\n\nINTEGRVS\tSET\tSSP\n\t\t\tPRECIFLG\n\t\t\tPBODY\n\t\t\t0\n\t\tBOF\tSSP\n\t\t\tMOONFLAG\n\t\t\t+3\n\t\t\tPBODY\n\t\t\t2\n\t\tSTQ\tVLOAD\n\t\t\tIRETURN\n\t\t\tZEROVEC\n\t\tSTORE\tTDELTAV\n\t\tSTCALL\tTNUV\n\t\t\tRECTIFY\n\t\tCLEAR\tSET\n\t\t\tDIM0FLAG\n\t\t\tNEWIFLG\n\t\tSETGO\n\t\t\tRPQFLAG\n\t\t\tALOADED\n\n# INTEGRV IS AN ENTRY TO ORBIT INTEGRATION WHICH PERMITS THE CALLER ,\n# NORMALLY THE NAVIGATION PROGRAM ,TO SET THE INTEG. FLAGS.  THE ROUTINE\n# IS ENTERED AT INTEGRV1 BY CSMPREC ET.AL. AND AT ALOADED BY INTEGRVS.\n# THE ROUTINE SETS UP A-MEMORY IF ENTERED AT INTEGRV,1 AND SETS THE INTEG.\n# PROGRAM FOR PRECISION OR CONIC.\n#\n# THE CALLER MUST FIRST CALL INTSTALL TO CHECK IF INTEG. IS IN USE BEFORE\n# SETTING ANY FLAGS.\n# THE FLAGS WHICH SHOULD BE SET OR CLEARED ARE\n#\tVINTFLAG\t(IGNORED WHEN ENTERED FROM INTEGRVS)\n#\tINTYPFLG\n#\tDIM0FLAG\n#\tD6OR9FLG\n# CALLING SEQUENCE\n#\tL-X\tCALL\n#\tL-Y\t\tINTSTALL\n#\tL-1\tSET OR CLEAR ALL FOUR FLAGS.  ALSO CAN SET STATEFLG IF DESIRED\n#\t\tAND DIM0FLAG IS CLEAR.\n#\tL\tCALL\n#\tL+1\t\tINTEGRV\n# INITIALIZATION\n#\tFLAGS AS ABOVE\n#\tSTORE TIME TO INTEGRATE TO IN TDEC1\n#\n# Page 1320\n# OUTPUT\n#\tRATT\tAS\n#\tVATT\t      DEFINED\n#\tTAT\t\t\tBEFORE\n\nINTEGRV\t\tSTQ\n\t\t\tIRETURN\nINTEGRV1\tSET\tSET\n\t\t\tRPQFLAG\n\t\t\tNEWIFLG\nINTEGRV2\tSSP\n\t\t\tQPRET\n\t\t\tALOADED\n\t\tBON\tGOTO\n\t\t\tVINTFLAG\n\t\t\tPTOACSM\n\t\t\tPTOALEM\n\t\tSETLOC\tINTINIT1\n\t\tBANK\nALOADED\t\tDLOAD\n\t\t\tTDEC1\n\t\tSTORE\tTDEC\n\t\tBOFF\tGOTO\n\t\t\tINTYPFLG\n\t\t\tTESTLOOP\n\t\t\tRVCON\n\t\tSETLOC\tINTINIT\n\t\tBANK\nA-PCHK\t\tBOF\tCALL\n\t\t\tMIDFLAG\n\t\t\tANDOUT\t\t# DONT MAKE ORIGIN CHANGE CHECK\n\t\t\tCHKSWTCH\n\t\tBPL\tCALL\n\t\t\tANDOUT\t\t# NO ORIGIN CHANGE\n\t\t\tORIGCHNG\t# MAKE THE SWITCH\nANDOUT\t\tBOFCLR\tEXIT\n\t\t\tSTATEFLG\n\t\t\tRECTOUT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tUPFLAG\t\t# PHASE CHANGE HAS OCCURRED BETWEEN\n\t\tADRES\tREINTFLG\t# INTSTALL AND INTWAKE\n\t\tTC\tINTPRET\n\t\tSSP\n\t\t\tQPRET\n\t\t\tPHEXIT\n\t\tBON\tGOTO\n\t\t\tVINTFLAG\n\t\t\tATOPCSM\n# Page 1321\n\t\t\tATOPLEM\nPHEXIT\t\tCALL\n\t\t\tGRP2PC\nRECTOUT\t\tSETPD\tCALL\n\t\t\t0\n\t\t\tRECTIFY\n\t\tVLOAD\tVSL*\n\t\t\tRRECT\n\t\t\t0,2\n\t\tPDVL\tVSL*\t\t# RATT TO PD0\n\t\t\tVRECT\n\t\t\t0,2\n\t\tPDDL\tPDVL\t\t# VATT TO PD6\tTAT TO PD12\n\t\t\tTET\n\t\t\tRRECT\n\t\tPDVL\tPDDL*\n\t\t\tVRECT\n\t\t\tMUEARTH,2\n\t\tPUSH\tAXT,1\n\t\tDEC\t-10\n\t\tBON\tAXT,1\n\t\t\tMOONFLAG\n\t\t\t+2\n\t\tDEC\t-2\nINTEXIT\t\tSETPD\tBOV\n\t\t\t0\n\t\t\t+1\n\t\tCLEAR\n\t\t\tMIDAVFLG\n\t\tCLEAR\tCLEAR\n\t\t\tAVEMIDSW\t# ALLOW UPDATE OF DOWNLINK STATE VECTOR\n\t\t\tPRECIFLG\n\t\tSLOAD\tEXIT\n\t\t\tIRETURN\n\t\tCA\tMPAC\n\t\tINDEX\tFIXLOC\n\t\tTS\tQPRET\n\t\tTC\tINTWAKE\n\n# RVCON SETS UP ORBIT INTEGRATION TO DO A CONIC SOLUTION FOR POSITION AND\n# VELOCITY FOR THE INTERVAL (TET-TDEC)\n\nRVCON\t\tDLOAD\tDSU\n\t\t\tTDEC\n\t\t\tTET\n\t\tSTCALL\tTAU.\n\t\t\tRECTIFY\n\t\tCALL\n\t\t\tKEPPREP\n\t\tDLOAD\tDAD\n\t\t\tTC\n# Page 1322\n\t\t\tTET\n\t\tSTCALL\tTET\n\t\t\tRECTOUT\n\n# Page 1323\nTESTLOOP\tBOF\tCLRGO\n\t\t\tQUITFLAG\n\t\t\t+3\n\t\t\tSTATEFLG\n\t\t\tINTEXIT\t\t# STOP INTEGRATION\n\t+3\tSETPD\tLXA,2\n\t\t\t10D\n\t\t\tPBODY\n\t\tVLOAD\tABVAL\n\t\t\tRCV\n\t\tPUSH\tCLEAR\t\t# RC TO 10D\n\t\t\tMIDFLAG\n\t\tDSU*\tBMN\t\t# MIDFLAG=0 IF R G.T. RMP\n\t\t\tRME,2\n\t\t\t+3\n\t\tSET\n\t\t\tMIDFLAG\nNORFINAL\tDLOAD\tDMP\n\t\t\t10D\n\t\t\t34D\n\t\tSR1R\tDDV*\n\t\t\tMUEARTH,2\n\t\tSQRT\tDMP\n\t\t\t.3D\n\t\tSR3\tSR4\t\t# DT    IS TRUNCATED TO A MULTIPLE\n\t\tDLOAD\tSL\n\t\t\tMPAC\n\t\t\t15D\t\t#\tOF 128 CSECS.\n\t\tPUSH\tBOV\n\t\t\tMAXDT\n\t\tBDSU\tBMN\n\t\t\tDT/2MAX\n\t\t\tMAXDT\nDT/2COMP\tDLOAD\tDSU\n\t\t\tTDEC\n\t\t\tTET\n\t\tRTB\tSL\n\t\t\tSGNAGREE\n\t\t\t8D\n\t\tSTORE\tDT/2\t\t# B-19\n\t\tBOV\tABS\n\t\t\tGETMAXDT\n\t\tDSU\tBMN\t\t# IS TIME TO INTEG. TO GR THAN MAXTIME\n\t\t\t12D\n\t\t\tPOOHCHK\nUSEMAXDT\tDLOAD\tSIGN\n\t\t\t12D\n\t\t\tDT/2\n# Page 1324\n\t\tSTCALL\tDT/2\n\t\t\tPOOHCHK\nMAXDT\t\tDLOAD\tPDDL\t\t# EXCHANGE DT/2MAX WITH COMPUTED MAX.\n\t\t\tDT/2MAX\n\t\tGOTO\n\t\t\tDT/2COMP\nGETMAXDT\tRTB\n\t\t\tSIGNMPAC\n\t\tSTCALL\tDT/2\n\t\t\tUSEMAXDT\nPOOHCHK\t\tDLOAD\tABS\n\t\t\tDT/2\n\t\tDSU\tBMN\n\t\t\tDT/2MIN\n\t\t\tA-PCHK\n\t\tSLOAD\tBHIZ\n\t\t\tMODREG\n\t\t\t+3\n\t\tGOTO\n\t\t\tTIMESTEP\n\t\tBON\t\t\t# WAS THIS CALL VIA CSM(LEM)PREC\n\t\t\tPRECIFLG\n\t\t\tTIMESTEP\t# YES\n\t\tDLOAD\tDSU\n\t\t\tDT/2\n\t\t\t12D\n\t\tBMN\tBOFCLR\n\t\t\tA-PCHK\n\t\t\tNEWIFLG\n\t\t\tTIMESTEP\n\t\tDLOAD\tDSU\n\t\t\tTDEC\n\t\t\tTET\n\t\tBMN\t\t\t# NO BACKWARD INTEGRATION\n\t\t\tINTEXIT\n\t\tPDDL\tSR4\n\t\t\tDT/2\t\t# IS 4(DT) LS(TDEC - TET)\n\t\tSR2R\tBDSU            # NO\n\t\tBMN\tGOTO\n\t\t\tINTEXIT\n\t\t\tTIMESTEP\nDT/2MIN\t\t2DEC\t3 B-20\n\nDT/2MAX\t\t2DEC\t4000 E2 B-20\n\nINTSTALL\tEXIT\n\t\tCAF\tZERO\nALLSTALL\tTS\tL\n\t\tCA\tRASFLAG\n\t\tINDEX\tL\n# Page 1325\n\t\tMASK\tINTBITAB\t# IS THIS STALL AREA FREE\n\t\tEXTEND\n\t\tBZF\tOKTOGRAB\t# YES\n\t\tINDEX\tL\n\t\tCAF\tWAKESTAL\n\t\tTC\tJOBSLEEP\nINTWAKE0\tEXIT\n\t\tTCF\tINTWAKE1\n\nINTWAKE\t\tCS\tRASFLAG\t\t# IS THIS INTSTALLED ROUTINE TO BE\n\t\tMASK\tREINTBIT\t#\tRESTARTED\n\t\tCCS\tA\n\t\tTC\tINTWAKE1\t# NO\n\n\t\tINDEX\tFIXLOC\n\t\tCA\tQPRET\n\t\tTS\tTBASE2\t\t# YES, DONT RESTART WITH SOMEONE ELSES Q\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\n\t\tCA\tTBASE2\n\t\tINDEX\tFIXLOC\n\t\tTS\tQPRET\n\n\t\tCAF\tREINTBIT\n\t\tMASK\tRASFLAG\n\t\tEXTEND\n\t\tBZF\tGOBAC\t\t# DONT INTWAKE IF WE CAME HERE VIA RESTART\n\nINTWAKE1\tCAF\tZERO\nWAKE\t\tTS\tSTALTEM\t\t# INDEX OF ANY STALL USER\nWAKE1\t\tINDEX\tSTALTEM\n\t\tCAF\tWAKESTAL\n\t\tINHINT\n\t\tTC\tJOBWAKE\n\t\tCCS\tLOCCTR\n\t\tTCF\tWAKE1\t\t# MAY BE MORE TO WAKE UP\nFORTYONE\tDEC\t41\n\t\tINDEX\tSTALTEM\n\t\tCS\tINTBITAB\n\t\tMASK\tRASFLAG\n\t\tTS\tRASFLAG\t\t# RELEASE STALL AREA\n\t\tRELINT\n\t\tTCF\tGOBAC\nOKTOGRAB\tINDEX\tL\t\t# NO, WAIT UNTIL AVAILABLE\n\t\tCAF\tINTFLBIT\n\t\tADS\tRASFLAG\nGOBAC\t\tTC\tINTPRET\n\t\tRVQ\n# Page 1326\nERASTAL1\tEXIT\n\t\tCAF\tONE\n\t\tTCF\tALLSTALL\nERASTAL2\tEXIT\n\t\tCAF\tTWO\n\t\tTCF\tALLSTALL\nERASWAK1\tCAF\tONE\n\t\tTCF\tWAKE\nERASWAK2\tCAF\tTWO\n\t\tTCF\tWAKE\nWAKESTAL\tCADR\tINTSTALL +1\n\t\tCADR\tERASTAL1 +1\n\t\tCADR\tERASTAL2 +1\nSTALTEM\t\tEQUALS\tMPAC\nINTBITAB\tOCT\t20100\n\t\tOCT\t10040\n\t\tOCT\t04020\n\n# Page 1327\n# AVETOMID\n#\n# THIS ROUTINE PERFORMS THE TRANSITION FROM A THRUSTING PHASE TO THE COAST\n# PHASE BY INITIALIZING THIS VEHICLES PERMANENT STATE VECTOR WITH THE\n# VALUES LEFT BY THE AVERAGEG ROUTINE IN RN,VN,PIPTIME.\n#\n# BEFORE THIS IS DONE THE W-MATRIX, IF ITS VALID (ORWFLAG OR RENDWFLT IS\n# SET) IS INTEGRATED FORWARD TO PIPTIME WITH THE PRE-THRUST STATE VECTOR.\n#\n# IN ADDITION, THE OTHER VEHICLE IS INTEGRATED (PERMANENT) TO PIPTIME.\n#\n# FINALLY TRKMKCNT IS ZEROED.\n\n\t\tSETLOC\tINTINIT2\n\t\tBANK\n\n\t\tCOUNT*\t$$/INTIN\nAVETOMID\tSTQ\tBON\n\t\t\tEGRESS\n\t\t\tRENDWFLG\n\t\t\tINT/W\t\t# W-MATRIX VALID ,GO INTEGRATE IT\n\t\tBON\n\t\t\tORBWFLAG\n\t\t\tINT/W\t\t# W-MATRIX VALID ,GO INTEGRATE IT\n\nSETCOAST\tAXT,2\tCALL\t\t# NOW MOVE PROPERLY SCALED RN,VN AND\n\t\t\t2\t\t# PIPTIME TO INTEGRATION ERASABLES.\n\t\t\tINTSTALL\n\t\tBON\tAXT,2\n\t\t\tAMOONFLG\n\t\t\t+2\n\t\t\t0\n\t\tVLOAD\tVSR*\n\t\t\tRN\n\t\t\t0,2\n\t\tSTORE\tRRECT\n\t\tSTODL\tRCV\n\t\t\tPIPTIME\n\t\tSTOVL\tTET\n\t\t\tVN\n\t\tVSR*\tCALL\n\t\t\t0,2\n\t\t\tMINIRECT\t# FINISH SETTING UP STATE VECTOR\n\t\tRTB\tSSP\n\t\t\tMOVATHIS\t# PUT TEMP STATE VECTOR INTO PERMANENT\n\t\t\tTRKMKCNT\n\t\t\t0\n\t\tSET\tBON\n\t\t\tCMOONFLG\n# Page 1328\n\t\t\tAMOONFLG\n\t\t\t+3\n\t\tCLEAR\n\t\t\tCMOONFLG\n\n\t\tBON\tDLOAD\t\t# NOW DO LM\n\t\t\tSURFFLAG\n\t\t\tFAZAB5\t\t# NO COASTING LM\n\t\t\tPIPTIME\n\t\tSTCALL\tTDEC1\n\t\t\tSETIFLGS\n\t\tCLEAR\tCALL\n\t\t\tVINTFLAG\n\t\t\tINTEGRV\n\t\tGOTO\n\t\t\tEGRESS\nINT/W\t\tDLOAD\tCALL\n\t\t\tPIPTIME\t\t# INTEGRATE W THRU BURN\n\t\t\tINTSTALL\n\t\tSET\tSET\n\t\t\tDIM0FLAG\t# DO W-MATRIX\n\t\t\tAVEMIDSW\t# SO WONT CLOBBER RN,VN,PIPTIME\n\t\tCLEAR\tSET\n\t\t\tD6OR9FLG\n\t\t\tVINTFLAG\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRV\n\t\tGOTO\n\t\t\tSETCOAST\n\n# Page 1329\n# MIDTOAV1\n#\n# THIS ROUTINE INTEGRATES (PRECISION) TO THE TIME SPECIFIED IN TDEC1.\n# IF, AT THE END OF AN INTEGRATION TIME STEP, CURRENT TIME PLUS A DELTA\n# TIME (SEE TIMEDELT.....BASED ON THE COMPUTATUON TIME FOR ONE TIME STEP)\n# IS GREATER THAN THE DESIRED TIME, ALARM 1703 IS SET AND THE INTEGRATION\n# IS DONE AS IT IS FOR MIDTOAV2.\n# RETURN IS IN BASIC TO THE RETURN ADDRESS PLUS ONE.\n#\n# IF THE INTEGRATION IS FINISHED TO THE DESIRED TIME, RETURN IS IN BASIC\n# TO THE RETURN ADDRESS.\n#\n# IN EITHER CASE , BEFORE RETURNING, THE EXTRAPOLATED STATE VECTOR IS TRAN\n# FERRED FROM R,VATT TO R,VN1-PIPTIME1 IS SET TO THE FINISHING INTEGRA-\n# TION TIME AND MPAC IS SET TO THE DELTA TIME---\n#\t\t\tTAT MINUS CURRENT TIME.\n\n# MIDTOAV2\n#\n# THIS ROUTINE INTEGRATES THE CSM STATE VECTOR TO CURRENT TIME PLUS\n# INCREMENTS OF TIMEDELT SUCH THAT THE DIFFERENCE BETWEEN CURRENT TIME\n# AND THE STATE VECTOR TIME AT THE END OF THE LAST STEP IS AT LEAST 5.6\n# SECS.\n# NO INPUTS ARE REQUIRED OF THE CALLER.  RETURN IS IN BASIC TO THE RETURN\n# ADDRESS WITH THE ABOVE TRANSFERS TO R,VN1-PIPTIME1-AND MPAC DONE\n\n\t\tSETLOC\tINTINIT\n\t\tBANK\n\t\tEBANK=\tIRETURN1\nMIDTOAV2\tSTQ\tCALL\n\t\t\tIRETURN1\n\t\t\tINTSTALL\n\t\tDLOAD\tCLEAR\n\t\t\tTIMEDELT\n\t\t\tMID1FLAG\n\t\tSTCALL\tT-TO-ADD\n\t\t\tENTMID2\n\nMIDTOAV1\tSTQ\tCALL\n\t\t\tIRETURN1\n\t\t\tINTSTALL\n\t\tSET\tRTB\n\t\t\tMID1FLAG\n\t\t\tLOADTIME\n\t\tDAD\tBDSU\t\t# INITIAL CHECK.IS TDEC1 IN THE FUTURE.\n\t\t\tTIMEDELT\n\t\t\tTDEC1\n\t\tBPL\tCALL\n\t\t\tENTMID1\n# Page 1330\n\t\t\tNOTIME\t\t# NO SET ALARM.SWITCH TO MIDTOAV2\n\nENTMID2\t\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\tT-TO-ADD\n\t\tSTORE\tTDEC1\n\nENTMID1\t\tCLEAR\tCALL\n\t\t\tDIM0FLAG\t# NO W-MATRIX\n\t\t\tTHISVINT\n\t\tCLEAR\tSET\n\t\t\tINTYPFLG\n\t\t\tMIDAVFLG\t# LET INTEG. KNOW THE CALL IS FOR MIDTOAV.\n\t\tCALL\n\t\t\tINTEGRV\t\t#  GO INTEGRATE\n\t\tSXA,2\tSXA,1\n\t\t\tRTX2\n\t\t\tRTX1\n\t\tCLEAR\tSLOAD\n\t\t\tAMOONFLG\n\t\t\tRTX2\n\t\tBZE\tSET\n\t\t\t+2\n\t\t\tAMOONFLG\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTOVL\tRN1\n\t\t\tVATT\n\t\tSTODL\tVN1\n\t\t\tTAT\n\t\tSTORE\tPIPTIME1\n\t\tEXIT\n\n\t\tINHINT\n\t\tEXTEND\n\t\tDCS\tTIME2\n\t\tDAS\tMPAC\n\t\tTC\tTPAGREE\n\n\t\tCA\tIRETURN1\n\t\tTC\tBANKJUMP\nCKMID2\t\tBOF\tRTB\n\t\t\tMID1FLAG\n\t\t\tMID2\n\t\t\tLOADTIME\n\t\tDAD\tBDSU\n\t\t\tTIMEDELT\n\t\t\tTDEC\n\t\tBPL\tCALL\n\t\t\tTESTLOOP\t# YES\n# Page 1331\n\t\t\tNOTIME\n\nTIMEINC\t\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\tT-TO-ADD\n\t\tSTCALL\tTDEC\n\t\t\tTESTLOOP\n\nMID2\t\tDLOAD\tDSU\n\t\t\tTDEC\n\t\t\tTET\n\t\tABS\tDSU\n\t\t\t3CSECS\n\t\tBPL\n\t\t\tTIMEINC\n\n\t\tRTB\tBDSU\t\t# SEE IF 5.6 SECS. AVAILABLE TO CALLER\n\t\t\tLOADTIME\n\t\t\tTET\n\t\tDSU\tBPL\n\t\t\t5.6SECS\n\t\t\tA-PCHK\t\t# YES,GET OUT.\n\n\t\tDLOAD\tDAD\t\t# NO,ADD TIMEDELT TO T-TO-ADD AND TRY\n\t\t\tT-TO-ADD\t# AGAIN.\n\t\t\tTIMEDELT\n\t\tSTCALL\tT-TO-ADD\n\t\t\tTIMEINC\nNOTIME\t\tCLEAR\tEXIT\t\t# TOO LATE\n\t\t\tMID1FLAG\n\t\tINCR\tIRETURN1\t# SET ERROR EXIT (CALLOC +2)\n\t\tTC\tALARM\t\t# INSUFFICIENT TIME FOR INTEGRATION --\n\t\tOCT\t1703\t\t#\tTIG WILL BE SLIPPED...\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tTIMEDELT\n\t\tSTORE\tT-TO-ADD\n\t\tRVQ\n\n3CSECS\t\t2DEC\t3\n\nTIMEDELT\t2DEC\t1250\n\n5.6SECS\t\t2DEC\t560\n\n\t\tBANK\t27\n\t\tSETLOC\tUPDATE2\n\t\tBANK\n\t\tEBANK=\tINTWAKUQ\n\n# Page 1332\n\t\tCOUNT*\t$$/INTIN\n\nINTWAKUQ\t=\tINTWAK1Q\t# TEMPORARY UNTIL NAME OF INTWAK1Q IS CHNG\n\nINTWAKEU\tRELINT\n\t\tEXTEND\n\t\tQXCH\tINTWAKUQ\t# SAVE Q FOR RETURN\n\n\t\tTC\tINTPRET\n\n\t\tSLOAD\tBZE\t\t# IS THIS A CSM/LEM STATE VECTOR UPDATE\n\t\t\tUPSVFLAG\t# REQUEST.  IF NOT GO TO INTWAKUP.\n\t\t\tINTWAKUP\n\n\t\tVLOAD\t\t\t# MOVE RRECT(6) AND VRECT(6) INTO\n\t\t\tRRECT\t\t#      RCV(6)   AND VCV(6)   RESPECTIVELY.\n\t\tSTOVL\tRCV\n\t\t\tVRECT\t\t# NOW GO TO 'RECTIFY +13D' TO\n\t\tCALL\t\t\t# STORE VRECT INTO VCV  AND ZERO OUT\n\t\t\tRECTIFY +13D\t# TDELTAV(6),TNUV(6),TC(2) AND XKEP(2)\n\t\tSLOAD\tABS\t\t# COMPARE ABSOLUTE VALUE OF 'UPSVFLAG'\n\t\t\tUPSVFLAG\t# TO 'UPDATE MOON STATE VECTOR CODE'\n\t\tDSU\tBZE\t\t# TO DETERMINE WHETHER THE STATE VECTOR TO\n\t\t\tUPMNSVCD\t# BE UPDATED IS IN THE EARTH OR LUNAR\n\t\t\tINTWAKEM\t# SPHERE OF INFLUENCE.........\n\t\tAXT,2\tCLRGO\t\t# EARTH SPHERE OF INFLUENCE.\n\t\tDEC\t0\n\t\t\tMOONFLAG\n\t\t\tINTWAKEC\nINTWAKEM\tAXT,2\tSET\t\t# LUNAR SPHERE OF INFLUENCE.\n\t\tDEC\t2\n\t\t\tMOONFLAG\nINTWAKEC\tSLOAD\tBMN\t\t# COMMON CODING AFTER X2 INITIALIZED AND\n\t\t\t\t\t# MOONFLAG SET (OR CLEARED).\n\t\t\tUPSVFLAG\t# IS THIS A REQUEST FOR A LEM OR CSM\n\t\t\tINTWAKLM\t#  STATE VECTOR UPDATE......\n\t\tCALL\t\t\t# UPDATE CSM STATE VECTOR\n\t\t\tATOPCSM\n\n\t\tCLEAR\tGOTO\n\t\t\tORBWFLAG\n\t\t\tINTWAKEX\n\nINTWAKLM\tCALL\t\t\t# UPDATE  LM STATE VECTOR\n\t\t\tATOPLEM\n\nINTWAKEX\tCLEAR\n\t\t\tRENDWFLG\n\nINTWAKUP\tSSP\tCALL\t\t# REMOVE :UPDATE STATE VECTOR INDICATOR:\n# Page 1333\n\t\t\tUPSVFLAG\n\t\t\t0\n\t\t\tINTWAKE0\t# RELEASE :GRAB: OF ORBIT INTEG\n\t\tEXIT\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04026\n\t\tTC\tINTWAKUQ\n\nUPMNSVCD\tOCT\t2\n\t\tOCT\t0\n\nGRP2PC\t\tSTQ\tEXIT\n\t\t\tGRP2SVQ\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tGRP2SVQ\n\n"
  },
  {
    "path": "Comanche055/INTER-BANK_COMMUNICATION.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     INTER-BANK_COMMUNICATION.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 1103-1106\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-08 RSB\tAdapted from Colossus249/ file of same name\n#\t\t\t\tand page images. Corrected various typos\n#\t\t\t\tin the transcription of program comments,\n#\t\t\t\tand these should be back-ported to\n#\t\t\t\tColossus249.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 1103\n# THE FOLLOWING ROUTINE CAN BE USED TO CALL A SUBROUTINE IN ANOTHER BANK. IN THE BANKCALL VERSION, THE\n# CADR OF THE SUBROUTINE IMMEDIATELY FOLLOWS THE TC BANKCALL INSTRUCTION, WITH C(A) AND C(L) PRESERVED.\n\n\t\tBLOCK\t02\n\t\tCOUNT\t02/BANK\n\nBANKCALL\tDXCH\tBUF2\t\t# SAVE INCOMING A,L.\n\t\tINDEX\tQ\t\t# PICK UP CADR.\n\t\tCA\t0\n\t\tINCR\tQ\t\t# SO WE RETURN TO THE LOC. AFTER THE CADR.\n\n# SWCALL IS  IDENTICAL TO BANKCALL, EXCEPT THAT THE CADR ARRIVES IN A.\n\nSWCALL\t\tTS\tL\n\t\tLXCH\tFBANK\t\t# SWITCH BANKS, SAVING RETURN.\n\t\tMASK\tLOW10\t\t# GET SUB-ADDRESS OF CADR.\n\t\tXCH\tQ\t\t# A,L NOW CONTAINS DP RETURN.\n\t\tDXCH\tBUF2\t\t# RESTORING INPUTS IF THIS IS A BANKCALL.\n\t\tINDEX\tQ\n\t\tTC\t10000\t\t# SETTING Q TO SWRETURN\n\nSWRETURN\tXCH\tBUF2 +1\t\t# COMES HERE TO RETURN TO CALLER. C(A,L)\n\t\tXCH\tFBANK\t\t# ARE PRESERVED FOR RETURN.\n\t\tXCH\tBUF2 +1\n\t\tTC\tBUF2\n\n# THE FOLLOWING ROUTINE CAN BE USED AS A UNILATERAL JUMP WITH C(A,L) PRESERVED AND THE CADR IMMEDIATELY\n# FOLLOWING THE TC POSTJUMP INSTRUCTION.\n\nPOSTJUMP\tXCH\tQ\t\t# SAVE INCOMING C(A).\n\t\tINDEX\tA\t\t# GET CADR.\n\t\tCA\t0\n\n# BANKJUMP IS THE SAME AS POSTJUMP, EXCEPT THAT THE CADR ARRIVES IN A.\n\nBANKJUMP\tTS\tFBANK\n\t\tMASK\tLOW10\n\t\tXCH\tQ\t\t# RESTORING INPUT C(A) IF THIS WAS A\nQ+10000\t\tINDEX\tQ\t\t# POSTJUMP.\nPRIO12\t\tTCF\t10000\t\t# PRIO12 = TCF\t10000 = 12000\n\n# Page 1104\n# THE FOLLOWING ROUTINE GETS THE RETURN CADR SAVED BY SWCALL OR BANKCALL AND LEAVES IT IN A.\n\nMAKECADR\tCAF\tLOW10\n\t\tMASK\tBUF2\n\t\tAD\tBUF2 +1\n\t\tTC\tQ\n\nSUPDACAL\tTS\tMPTEMP\n\t\tXCH\tFBANK\t\t# SET FBANK FOR DATA.\n\t\tEXTEND\n\t\tROR\tSUPERBNK\t# SAVE FBANK IN BITS 15-11, AND\n\t\tXCH\tMPTEMP\t\t# SUPERBANK IN BITS 7-5.\n\t\tMASK\tLOW10\n\t\tXCH\tL\t\t# SAVE REL. ADR. IN BANK, FETCH SUPERBITS.\n\t\tINHINT\t\t\t# BECAUSE RUPT DOES NOT SAVE SUPERBANK.\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# SET SUPERBANK FOR DATA.\n\t\tINDEX\tL\n\t\tCA\t10000\t\t# PINBALL (FIX MEM DISP) PREVENTS DCA HERE\n\t\tXCH\tMPTEMP\t\t# SAVE 1ST WD, FETCH OLD FBANK AND SBANK.\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# RESTORE SUPERBANK.\n\t\tRELINT\n\t\tTS\tFBANK\t\t# RESTORE FBANK.\n\t\tCA\tMPTEMP\t\t# RECOVER FIRST WORD OF DATA.\n\t\tRETURN\t\t\t# 24 WDS. DATACALL 516 MU, SUPDACAL 432 MU\n\n# Page 1105\n# THE FOLLOWING ROUTINES ARE IDENTICAL TO BANKCALL AND SWCALL EXCEPT THAT THEY ARE USED IN INTERRUPT.\n\nIBNKCALL\tDXCH\tRUPTREG3\t# USES RUPTREG3,4 FOR DP RETURN ADDRESS.\n\t\tINDEX\tQ\n\t\t# Was CAF --- RSB 2009\n\t\tCA\t0\n\t\tINCR\tQ\n\nISWCALL\t\tTS\tL\n\t\tLXCH\tFBANK\n\t\tMASK\tLOW10\n\t\tXCH\tQ\n\t\tDXCH\tRUPTREG3\n\t\tINDEX\tQ\n\t\tTC\t10000\n\nISWRETRN\tXCH\tRUPTREG4\n\t\tXCH\tFBANK\n\t\tXCH\tRUPTREG4\n\t\tTC\tRUPTREG3\n\n# 2. USPRCADR ACCESSES INTERPRETIVE CODING IN OTHER THAN THE USER'S FBANK.  THE CALLING SEQUENCE IS AS FOLLOWS:\n#\tL\tTC\tUSPRCADR\n#\tL+1\tCADR\tINTPRETX\t# INTPRETX IS THE INTERPRETIVE CODING\n#\t\t\t\t\t# RETURN IS TO L+2\n\nUSPRCADR\tTS\tLOC\t\t# SAVE A\n\t\tCA\tBIT8\n\t\tTS\tEDOP\t\t# EXIT INSTRUCTION TO EDOP\n\t\tCA\tBBANK\n\t\tTS\tBANKSET\t\t# USER'S BBANK TO BANKSET\n\t\tINDEX\tQ\n\t\tCA\t0\n\t\tTS\tFBANK\t\t# INTERPRETIVE BANK TO FBANK\n\t\tMASK\tLOW10\t\t# YIELDS INTERPRETIVE RELATIVE ADDRESS\n\t\tXCH\tQ\t\t# INTERPRETIVE ADDRESS TO Q, FETCHING L+1\n\t\tXCH\tLOC\t\t# L+1 TO LOC, RETRIEVING ORIGINAL A\n\t\tTCF\tQ+10000\n\n# Page 1106\n# THERE ARE FOUR POSSIBLE SETTINGS FOR CHANNEL 07.  (CHANNEL 07 CONTAINS SUPERBANK SETTING.)\n#\n#\t\t\t\t\tPSEUDO-FIXED\t OCTAL PSEUDO\n# SUPERBANK\tSETTING\tS-REG. VALUE\tBANK NUMBERS\t ADDRESSES\n# ----------\t-------\t------------\t------------ \t  ------------\n# SUPERBANK 3\t  0XX\t2000 - 3777\t   30 - 37\t 70000 - 107777\t\t(WHERE XX CAN BE ANYTHING AND\n#\t\t\t\t\t\t\t\t\t\tWILL USUALLY BE SEEN AS 11)\n# SUPERBANK 4\t  100\t2000 - 3777\t   40 - 47\t 110000 - 127777\t(AS FAR AS IT CAN BE SEEN,\n#\t\t\t\t\t\t\t\t\t\tONLY BANKS 40-43 WILL EVER BE\n#\t\t\t\t\t\t\t\t\t\tAND ARE PRESENTLY AVAILABLE)\n# SUPERBANK 5\t  101\t2000 - 3777\t   50 - 57\t 130000 - 147777\t(PRESENTLY NOT AVAILABLE TO\n#\t\t\t\t\t\t\t\t\t\tTHE USER)\n# SUPERBANK 6\t  110\t2000 - 3777\t   60 - 67\t 150000 - 167777\t(PRESENTLY NOT AVAILABLE TO\n#\t\t\t\t\t\t\t\t\t\tTHE USER)\n# ***  THIS ROUTINE MAYBE CALLED BY ANY PROGRAM LOCATED IN BANKS 00 - 27.  I.E., NO PROGRAM LIVING IN ANY\n# SUPERBANK SHOULD USE SUPERSW.  ***\n#\n# SUPERSW MAYBE CALLED IN THIS FASHION:\n#\tCAF\tABBCON\t\tWHERE  --  ABBCON   BBCON  SOMETHIN  --\n#\tTCR\tSUPERSW\t\t(THE SUPERBNK BITS ARE IN THE BBCON)\n#\t...\t  ...\n#\t .\t   .\n#\t .\t   .\n# OR IN THIS FASHION :\n#\tCAF\tSUPERSET\tWHERE SUPERSET IS ONE OF THE FOUR AVAILABLE\n#\tTCR\tSUPERSW\t\tSUPERBANK BIT CONSTANTS:\n#\t...\t  ...\t\t\tSUPER011 OCTAL  60\n#\t .\t   .\t\t\tSUPER100 OCTAL 100\n#\t .\t   .\t\t\tSUPER101 OCTAL 120\n#\t\t\t\t\tSUPER110 OCTAL 140\n\nSUPERSW\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# WRITE BITS 7-6-5 OF THE ACCUMULATOR INTO\n\t\t\t\t\t# CHANNEL 07\n\t\tTC\tQ\t\t# TC TO INSTRUCTION FOLLOWING\n\t\t\t\t\t# \tTC SUPERSW\n\n\n\n"
  },
  {
    "path": "Comanche055/INTERPRETER.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINTERPRETER.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1107-1199\n# Mod history:\t2009-05-08 RSB\tAdapted from the Luminary131/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrections:  P00D00 -> P00DOO, fixed a\n#\t\t\t\t\"Page N\" reference.\n#\t\t2009-05-21 RSB\tCorrected definition of 5B10, which overflowed\n#\t\t\t\tinteger arithmetic.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1107\n# SECTION 1:  DISPATCHER\n#\n# ENTRY TO THE INTERPRETER.  INTPRET SETS LOC TO THE FIRST INSTRUCTION, BANKSET TO THE BBANK OF THE\n# OBJECT INTERPRETIVE PROGRAM, AND INTBIT15 TO THE BIT15 CONTENTS OF FBANK.  INTERPRETIVE PROGRAMS MAY BE IN\n# VIRTUALLY ALL BANKS PRESENT UNDER ANY SUPER-BANK SETTING, WITH THE RESTRICTION THAT PROGRAMS IN HIGH BANKS\n# (BIT15 OF FBANK = 1) DO NOT REFER TO LOWBANKS, AND VICE-VERSA.  THE INTERPRETER DOES NOT SWITCH SUPERBANKS.\n# E-BANK SWITCHING OCCURS WHENEVER GENERAL ERASABLE (100-3777) IS ADDRESSED.\n\n\t\tBLOCK\t03\n\n\t\tCOUNT\t03/INTER\n\nINTPRET\t\tRELINT\n\t\tEXTEND\t\t\t\t# SET LOC TO THE WORD FOLLOWING THE TC.\n\t\tQXCH\tLOC\n\n\t+2\tCA\tBBANK\t\t\t# INTERPRETIVE BRANCHES FINISH HERE.\n\t\tTS\tBANKSET\n\t\tMASK\tBIT15\t\t\t# GET 15TH BIT FOR INDEXABLE ADDRESSES.\n\t\tTS\tINTBIT15\n\n\t\tTS\tEDOP\t\t\t# MAKE SURE NO INSTRUCTIONS LEFT OVER\n\n\t\tTCF\tNEWOPS\t\t\t# PICK UP OP CODE PAIR AND BEGIN.\n\n\nINTRSM\t\tLXCH\tBBANK\t\t\t# RESUME SUSPENDED INTERPRETIVE JOB\n\t\tTCF\tINTPRET +3\n# DLOAD LOADS MPAC, MPAC +1, LEAVING ZERO IN MPAC +2.\n\nDLOAD\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\t\t\t# LOAD DP C(C(ADDRWD)) INTO MPAC,MPAX +1\nSLOAD2\t\tDXCH\tMPAC\n\t\tCAF\tZERO\t\t\t# ZERO MPAC +2\n\n# Page 1108\n# AT THE END OF MOST INSTRUCTIONS, CONTROL IS GIVEN TO DANZIG TO DISPATCH THE NEXT OPERATION.\n\n\t\tTS\tMPAC +2\t\t\t# AND DECLARE DP MODE\n\nNEWMODE\t\tTS\tMODE\t\t\t# PROLOGUE FOR MODE-CHANGING INSTRUCTIONS.\n\nDANZIG\t\tCA\tBANKSET\t\t\t# SET BBANK BEFORE TESTING NEWJOB SO THAT\n\t\tTS \tBBANK\t\t\t# IT MAY BE SAVED DIRECTLY BY CHANJOB.\n\nNOIBNKSW\tCCS\tEDOP\t\t\t# SEE IF AN ORDER CODE IS LEFT OVER FROM\n\t\tTCF\tOPJUMP\t\t\t# THE LAST PAIR RETRIEVED.  IF SO, EXECUTE.\n\t\t\t\t\t\t# EDOP IS SET TO ZERO ON ITS RE-EDITING.\n\n\t\tCCS\tNEWJOB\t\t\t# SEE IF A JOB OF HIGHER PRIORITY IS\n\t\tTCF\tCHANG2\t\t\t# PRESENT, AND IF SO, CHANGE JOBS.\n\n\t\tINCR\tLOC\t\t\t# ADVANCE THE LOCATION COUNTER.\n\n# ITRACE (1) REFERS TO \"NEWOPS\".\nNEWOPS\t\tINDEX\tLOC\t\t\t# ENTRY TO BEGIN BY PICKING OP CODE PAIR.\n\t\tCA\t0\t\t\t# MAY BE AN OPCODE PAIR OR A STORE CODE.\n\t\tCCS\tA\t\t\t# TEST SIGN AND GET DABS(A).\n\t\tTCF\tDOSTORE\t\t\t# PROCESS STORE CODE.\n\nLOW7\t\tOCT\t177\n\n\t\tTS\tEDOP\t\t\t# OP CODE PAIR.  LEAVE THE OTHER IN EDOP\n\t\tMASK\tLOW7\t\t\t# WHERE CCS EDOP WILL HONOR IT NEXT.\n\nOPJUMP\t\tTS\tCYR\t\t\t# LOWWD ENTERS HERE IF A RIGHT-HAND OP\n\t\tCCS\tCYR\t\t\t# CODE IS TO BE PROCESSED.  TEST PREFICES.\n\t\tTCF\tOPJUMP2\t\t\t# TEST SECOND PREFIX BIT.\n\n\t\tTCF\tEXIT\t\t\t# +0 OP CODE IS EXIT\n\n# Page 1109\n# PROCESS ADDRESSES WHICH MAY BE DIRECT, INDEXED, OR REFERENCE THE PUSHDOWN LIST.\n\nADDRESS\t\tMASK\tBIT1\t\t\t# SEE IF ADDRESS IS INDEXED.  CYR CONTAINED\n\t\tCCS\tA\t\t\t# 400XX, SO BIT 1 IS NOW AS IT WAS IN CYR.\n\t\tTCF\tINDEX\t\t\t# FORM INDEXED ADDRESS.\n\nDIRADRES\tINDEX\tLOC\t\t\t# LOOK AHEAD TO NEXT WORD TO SEE IF\nOCT40001\tCS\t1\t\t\t# ADDRESS IS GIVEN.\n\t\tCCS\tA\n\t\tTCF\tPUSHUP\t\t\t# IF NOT.\n\nNEG4\t\tDEC\t-4\n\n\t\tINCR\tLOC\t\t\t# IF SO, TO SHOW WE PICKED UP A WORD.\n\t\tTS\tADDRWD\n\n# Page 1110\n# FINAL DIGESTION OF DIRECT ADDRESSES OF OP CODES WITH 01 PREFIX IS DONE HERE.  IN EACH CASE, THE\n# REQUIRED 12-BIT SUB-ADDRESS IS LEFT IN ADDRWD, WITH ANY REQUIRED E OR F BANK SWITCHING DONE.  ADDRESSES LESS\n# THAN 45D ARE TAKEN TO BE RELATIVE TO THE WORK AREA.  THE OP CODE IS NOW IN BITS 1-5 OF CYR WITH BIT 14 = 1.\n\n\t\tAD\t-ENDVAC\t\t\t# SEE IF ADDRESS RELATIVE TO WORK AREA.\n\t\tCCS\tA\n\t\tAD\t-ENDERAS\t\t# IF NOT, SEE IF IN GENERAL ERASABLE.\n\t\tTCF\tIERASTST\n\nNETZERO\t\tCA\tFIXLOC\t\t\t# IF SO, LEAVE THE MODIFIED ADDRESS IN\n\t\tADS\tADDRWD\t\t\t# ADDRWD AND DISPATCH.\nITR15\t\tINDEX\tCYR\t\t\t# THIS INDEX MAKES THE NEXT INSTRUCTION\n\t\t7\tINDJUMP -1\t\t# TCF INDJUMP + OP, EDITING CYR.\n\nIERASTST\tEXTEND\n\t\tBZMF\tGEADDR\t\t\t# GO PROCESS GENERAL-ERASABLE ADDRESS.\n\n\t\tMASK\tLOW10\t\t\t# FIXED BANK ADDRESS. RESTORE AND ADD B15.\n\t\tAD\tLOW10\t\t\t# SWITCH BANKS AND LEAVE SUBADDRESS IN\n\t\tXCH\tADDRWD\t\t\t# ADDRWD FOR OPERAND RETRIEVAL. (THIS\n\t\tAD\tINTBIT15\t\t# METHOD PRECLUDES USE OF THE LAST\n\t\tTS\tFBANK\t\t\t# LOCATION IN EACH FBANK.)\nITR12\t\tINDEX\tCYR\n\t\t7\tINDJUMP -1\n\nGEADDR\t\tMASK\tLOW8\n\t\tAD\tOCT1400\n\t\tXCH\tADDRWD\n\t\tTS\tEBANK\nITR10\t\tINDEX\tCYR\n\t\t7\tINDJUMP -1\n\n# Page 1111\n# THE FOLLOWING ROUTINE PROCESSES INTERPRETIVE INDEXED ADDRESSES.  AN INTERPRETER INDEX REGISTER MAY\n# CONTAIN THE ADDRESS OF ANY ERASABLE REGISTER (0-42 BEING RELATIVE TO THE VAC AREA) OR ANY INTERPRETIVE PROGRAM\n# BANK, OR ANY INTEGER IN THAT RANGE.\n\nDODLOAD*\tCAF\tDLOAD*\t\t\t# STODL* COMES HERE TO PROCESS LOAD ADR.\n\t\tTS\tCYR\t\t\t# (STOVL* ENTERS HERE).\n\nINDEX\t\tCA\tFIXLOC\t\t\t# SET UP INDEX LOCATION.\n\t\tTS\tINDEXLOC\n\t\tINCR\tLOC\t\t\t# (ADDRESS ALWAYS GIVEN).\n\t\tINDEX\tLOC\n\t\tCS\t0\n\t\tCCS\tA\t\t\t# INDEX 2 IF ADDRESS STORED COMPLEMENTED.\n\t\tINCR\tINDEXLOC\n\t\tNOOP\n\n\t\tTS \tADDRWD\t\t\t# 14 BIT ADDRESS TO ADDRWD.\n\t\tMASK\tHIGH4\t\t\t# IF ADDRESS GREATER THAN 2K, ADD INTBIT15\n\t\tEXTEND\n\t\tBZF \tINDEX2\n\t\tCA\tINTBIT15\n\t\tADS\tADDRWD\n\nINDEX2\t\tINDEX\tINDEXLOC\n\t\tCS\tX1\n\t\tADS\tADDRWD\t\t\t# DO AUGMENT, IGNORING AND CORRECTING OVF.\n\n\t\tMASK\tHIGH9\t\t\t# SEE IF ADDRESS IS IN WORK AREA.\n\t\tEXTEND\n\t\tBZF\tINDWORK\n\t\tMASK\tHIGH4\t\t\t# SEE IF IN FIXED BANK.\n\t\tEXTEND\n\t\tBZF\tINDERASE\n\n\t\tCA\tADDRWD\t\t\t# IN FIXED -- SWITCH BANKS AND CREATE\n\t\tTS\tFBANK\t\t\t# SUB-ADDRESS\n\t\tMASK\tLOW10\n\t\tAD\t2K\n\t\tTS\tADDRWD\nITR11\t\tINDEX\tCYR\n\t\t3\tINDJUMP -1\n\nINDWORK\t\tCA\tFIXLOC\t\t\t# MAKE ADDRWD RELATIVE TO WORK AREA.\n\t\tTCF\tITR13 -1\n\nINDERASE\tCA\tOCT1400\n\t\tXCH\tADDRWD\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n-1\t\tADS\tADDRWD\n# Page 1112\nITR13\t\tINDEX\tCYR\n\t\t3\tINDJUMP -1\n\n# Page 1113\n# PUSH-UP ROUTINES.  WHEN NO OPERAND ADDRESS IS GIVEN, THE APPROPRIATE OPERAND IS TAKEN FROM THE PUSH-DOWN\n# LIST.  IN MOST CASES THE MODE OF THE RESULT (VECTOR OR SCALAR) OF THE LAST ARITHMETIC OPERATION PERFORMED\n# IS THE SAME AS THE TYPE OF OPERAND DESIRED (ALL ADD/SUBTRACT ETC.).  EXCEPTIONS TO THIS GENERAL RULE ARE LISTED\n# BELOW (NOTE THAT IN EVERY CASE THE MODE REGISTER IS LEFT INTACT):\n#\n#\t1.\tVXSC AND V/SC WANT THE OPPOSITE TYPE OF OPERAND, E.G., IF THE LAST OPERATION YIELDED A VECTOR\n#\t\tRESULT, VXSC WANTS A SCALAR.\n#\n#\t2.\tTHE LOAD CODES SHOULD LOAD THE ACCUMULATOR INDEPENDENT OF THE RESULT OF THE LAST OPERATION.  THIS\n#\t\tINCLUDES VLOAD, DLOAD, TLOAD, PDDL, AND PDVL (NO PUSHUP WITH SLOAD).\n#\n#\t3.\tSOME ARITHMETIC OPERATIONS REQUIRE A STANDARD TYPE OF OPERAND REGARDLESS OF THE PREVIOUS OPERATION.\n#\t\tTHIS INCLUDES SIGN WANTING DP AND TAD REQUIRING TP.\n\nPUSHUP\t\tCAF\tOCT23\t\t# IF THE LOW 5 BITS OF CYR ARE LESS THAN\n\t\tMASK\tCYR\t\t# 20, THIS OP REQUIRES SPECIAL ATTENTION.\n\t\tAD\t-OCT10\t\t# (NO -0).\n\t\tCCS\tA\n\t\tTCF\tREGUP\t\t# FOR ALL CODES GREATER THAN OCT 7.\n\n-OCT10\t\tOCT\t-10\n\n\t\tAD\tNEG4\t\t# WE NOW HAVE 7 -- OP CODE (MOD4).  SEE IF\n\t\tCCS\tA\t\t# THE OP CODE (MOD4) IS THREE (REVERSE).\n\t\tINDEX\tA\t\t# NO -- THE MODE IS DEFINITE.  PICK UP THE\n\t\tCS\tNO.WDS\n\t\tTCF\tREGUP +2\n\n\t\tINDEX\tMODE\t\t# FOR VXSC AND V/SC WE WANT THE REQUIRED\n\t\tCS\tREVCNT\t\t# PUSHLOC DECREMENT WITHOUT CHANGING THE\n\t\tTCF\tREGUP +2\t# MODE AT THIS TIME.\n\nREGUP\t\tINDEX\tMODE\t\t# MOST ALL OP CODES PUSHUP HERE.\n\t\tCS\tNO.WDS\n\t+2\tADS\tPUSHLOC\n \t\tTS\tADDRWD\nITR14\t\tINDEX\tCYR\n\t\t7\tINDJUMP -1\t# (THE INDEX MAKES THIS A TCF.)\n\n\t\tOCT\t2\t\t# REVERSE PUSHUP DECREMENT. VECTOR TAKES 2\nREVCNT\t\tOCT\t6\t\t# WORDS, SCALAR TAKES 6.\n\t\tOCT\t6\nNO.WDS\t\tOCT\t2\t\t# CONVENTIONAL DECREMENT IS 6 WORDS VECTOR\nOCTAL3\t\tOCT\t3\t\t# 2 IN DP, AND 3 IN TP.\n\t\tOCT\t6\n\n# Page 1114\n# TEST THE SECOND PREFIX BIT TO SEE IF THIS IS A MISCELLANEOUS OR A UNARY/SHORT SHIFT OPERATION.\n\nOPJUMP2\t\tCCS\tCYR\t\t# TEST SECOND PREFIX BIT.\n\t\tTCF\tOPJUMP3\t\t# TEST THIRD BIT TO SEE IF UNARY OR SHIFT.\n\n-ENDVAC\t\tDEC\t-45\n\n# THE FOLLOWING ROUTINE PROCESSES ADDRESSES OF SUFFIX CLASS 10.  THEY ARE BASICALLY WORK AREA ADDRESSES\n# IN THE RANGE 0-52, ERASABLE ECADR CONSTANTS FROM 100-3777, AND FCADRS ABOVE THAT.  ALL 15 BITS ARE AVAILABLE\n# IN CONTRAST TO SUFFIX 1, IN WHICH ONLY THE LOW ORDER 14 ARE AVAILABLE.\n\n15BITADR\tINCR\tLOC\t\t# (ENTRY HERE FROM STCALL).\n\t\tINDEX\tLOC\t\t# PICK UP ADDRESS WORD.\n\t\tCA\t0\n\t\tTS\tPOLISH\t\t# WE MAY NEED A SUBADDRESS LATER.\n\n\t\tCAF\tLOW7+2K\t\t# THESE INSTRUCTIONS ARE IN BANK 1.\n\t\tTS\tFBANK\n\t\tMASK\tCYR\nITR7\t\tINDEX\tA\n\t\tTCF \tMISCJUMP\n\n# Page 1115\n# COMPLETE THE DISPATCHING OF UNARY AND SHORT SHIFT OPERATIONS.\n\nOPJUMP3\t\tTS\tFBANK\t\t# CALL IN BANK 0 (BITS 11-15 OF A ARE 0.)\n# ITRACE (6) REFERS TO \"OPJUMP3\".\n\t\tCCS\tCYR\t\t# TEST THIRD PREFIX BIT.\n\t\tINDEX\tA\t\t# THE DECREMENTED UNARY CODE IS IN BITS\n\t\tTCF\tUNAJUMP\t\t# 1-4 OF A (ZERO, EXIT, HAS BEEN DETECTED)\n\n\t\tCCS\tMODE\t\t# IT'S A SHORT SHIFT CODE.  SEE IF PRESENT\n\t\tTCF\tSHORTT\t\t# SCALAR OR VECTOR.\n\t\tTCF\tSHORTT\n\t\tTCF\tSHORTV\t\t# CALLS THE APPROPRIATE ROUTINE.\n\nFBANKMSK\tEQUALS\tBANKMASK\nLVBUF\t\tADRES\tVBUF\n\n# Page 1116\n# THE FOLLOWING IS THE JUMP TABLE FOR OP CODES WHICH MAY HAVE INDEXABLE ADDRESSES OR MAY PUSH UP.\n\nINDJUMP\t\tTCF\tVLOAD\t\t# 00 -- LOAD MPAC WITH A VECTOR.\n\t\tTCF\tTAD\t\t# 01 -- TRIPLE PRECISION ADD TO MPAC.\n\t\tTCF\tSIGN\t\t# 02 -- COMPLEMENT MPAC (V OR SC) IF X NEG.\n\t\tTCF\tVXSC\t\t# 03 -- VECTOR TIMES SCALAR.\n\t\tTCF\tCGOTO\t\t# 04 -- COMPUTED GO TO.\n\t\tTCF\tTLOAD\t\t# 05 -- LOAD MPAC WITH TRIPLE PRECISION.\n\t\tTCF\tDLOAD\t\t# 06 -- LOAD MPAC WITH A DP SCALAR.\n\t\tTCF\tV/SC\t\t# 07 -- VECTOR DIVIDED BY SCALAR.\n\n\t\tTCF\tSLOAD\t\t# 10 -- LOAD MPAC IN SINGLE PRECISION.\n\t\tTCF\tSSP\t\t# 11 -- SET SINGLE PRECISION INTO X.\n\t\tTCF\tPDDL\t\t# 12 -- PUSH DOWN MPAC AND RE-LOAD IN DP.\n\t\tTCF\tMXV\t\t# 13 -- MATRIX POST-MULTIPLIED BY VECTOR.\n\t\tTCF\tPDVL\t\t# 14 -- PUSH DOWN AND VECTORLOAD.\n\t\tTCF\tCCALL\t\t# 15 -- COMPUTED CALL.\n\t\tTCF\tVXM\t\t# 16 -- MATRIX PRE-MULTIPLIED BY VECTOR.\n\t\tTCF\tTSLC\t\t# 17 -- NORMALIZE MPAC (SCALAR ONLY).\n\n\t\tTCF\tDMPR\t\t# 20 -- DP MULTIPLY AND ROUND.\n\t\tTCF\tDDV\t\t# 21 -- DP DIVIDE BY.\n\t\tTCF\tBDDV\t\t# 22 -- DP DIVIDE INTO.\n\t\tTCF\tGSHIFT\t\t# 23 -- GENERAL SHIFT INSTRUCTION\n\t\tTCF\tVAD\t\t# 24 -- VECTOR ADD.\n\t\tTCF\tVSU\t\t# 25 -- VECTOR SUBTRACT.\n\t\tTCF\tBVSU\t\t# 26 -- VECTOR SUBTRACT FROM.\n\t\tTCF\tDOT\t\t# 27 -- VECTOR DOT PRODUCT.\n\n\t\tTCF\tVXV\t\t# 30 -- VECTOR CROSS PRODUCT.\n\t\tTCF\tVPROJ\t\t# 31 -- VECTOR PROJECTION.\n\t\tTCF\tDSU\t\t# 32 -- DP SUBTRACT.\n\t\tTCF\tBDSU\t\t# 33 -- DP SUBTRACT FROM.\n\t\tTCF\tDAD\t\t# 34 -- DP ADD.\n\t\tTCF\t\t\t# 35 -- AVAILABLE\n\t\tTCF\tDMP1\t\t# 36 -- DP MULTIPLY.\n\t\tTCF\tSETPD\t\t# 37 -- SET PUSH DOWN POINTER (DIRECT ONLY)\n\n# CODES 10 AND 14 MUST NOT PUSH UP.  CODE 04 MAY BE USED FOR VECTOR DECLARE BEFORE PUSHUP IF DESIRED.\n\n# Page 1117\n# THE FOLLOWING JUMP TABLE APPLIES TO INDEX, BRANCH, AND MISCELLANEOUS INSTRUCTIONS.\n\nMISCJUMP\tTCF\tAXT\t\t# 00 -- ADDRESS TO INDEX TRUE.\n\t\tTCF\tAXC\t\t# 01 -- ADDRESS TO INDEX COMPLEMENTED.\n\t\tTCF\tLXA\t\t# 02 -- LOAD INDEX FROM ERASABLE.\n\t\tTCF\tLXC\t\t# 03 -- LOAD INDEX FROM COMPLEMENT OF ERAS.\n\t\tTCF\tSXA\t\t# 04 -- STORE INDEX IN ERASABLE.\n\t\tTCF\tXCHX\t\t# 05 -- EXCHANGE INDEX WITH ERASABLE.\n\t\tTCF\tINCR\t\t# 06 -- INCREMENT INDEX REGISTER.\n\t\tTCF\tTIX\t\t# 07 -- TRANSFER ON INDEX.\n\n\t\tTCF\tXAD\t\t# 10 -- INDEX REGISTER ADD FROM ERASABLE.\n\t\tTCF\tXSU\t\t# 11 -- INDEX SUBTRACT FROM ERASABLE.\n\t\tTCF\tBZE/GOTO\t# 12 -- BRANCH ZERO AND GOTO.\n\t\tTCF\tBPL/BMN\t\t# 13 -- BRANCH PLUS AND BRANCH MINUS.\n\t\tTCF\tRTB/BHIZ\t# 14 -- RETURN TO BASIC AND BRANCH HI ZERO.\n\t\tTCF\tCALL/ITA\t# 15 -- CALL AND STORE QPRET.\n\t\tTCF\tSW/\t\t# 16 -- SWITCH INSTRUCTIONS AND AVAILABLE.\n\t\tTCF\tBOV(B)\t\t# 17 -- BRANCH ON OVERFLOW TO BASIC OR INT.\n\n# Page 1118\n# THE FOLLOWING JUMP TABLE APPLIES TO UNARY INSTRUCTIONS\n\n\t\tCOUNT\t00/INTER\n\n\t\tBANK\t0\t\t# 00 -- EXIT -- DETECTED EARLIER.\nUNAJUMP\t\tTCF\tSQRT\t\t# 01 -- SQUARE ROOT.\n\t\tTCF\tSINE\t\t# 02 -- SIN.\n\t\tTCF\tCOSINE\t\t# 03 -- COS.\n\t\tTCF\tARCSIN\t\t# 04 -- ARC SIN.\n\t\tTCF\tARCCOS\t\t# 05 -- ARC COS.\n\t\tTCF\tDSQ\t\t# 06 -- DP SQUARE.\n\t\tTCF\tROUND\t\t# 07 -- ROUND TO DP.\n\n\t\tTCF\tCOMP\t\t# 10 -- COMPLEMENT VECTOR OR SCALAR\n\t\tTCF\tVDEF\t\t# 11 -- VECTOR DEFINE.\n\t\tTCF\tUNIT\t\t# 12 -- UNIT VECTOR.\n\t\tTCF\tABVALABS\t# 13 -- LENGTH OF VECTOR OR MAG OF SCALAR.\n\t\tTCF\tVSQ\t\t# 14 -- SQUARE OF LENGTH OF VECTOR.\n\t\tTCF\tSTADR\t\t# 15 -- PUSH UP ON STORE CODE.\n\t\tTCF\tRVQ\t\t# 16 -- RETURN VIA QPRET.\n\t\tTCF\tPUSH\t\t# 17 -- PUSH MPAC DOWN.\n\n# Page 1119\n# SECTION 2\tLOAD AND STORE PACKAGE.\n#\n# A SET OF EIGHT STORE CODES IS PROVIDED AS THE PRIMARY METHOD OF STORING THE MULTI-PURPOSE\n# ACCUMULATOR (MPAC).  IF IN THE DANZIG SECTION LOC REFERS TO AN ALGEBRAICALLY POSITIVE WORD, IT IS TAKEN AS A\n# STORE CODE WITH A CORRESPONDING ERASABLE ADDRESS.  MOST OF THESE CODES ARE TWO ADDRESS, SPECIFYING THAT THE WORD\n# FOLLOWING THE STORE CODE IS TO BE USED AS AN ADDRESS FROM WHICH TO RE-LOAD MPAC.  FOUR OPTIONS ARE AVAILABLE:\n#\n#\t1. STORE\tSTORE MPAC.  THE E ADDRESS MAY BE INDEXED.\n#\t2. STODL\tSTORE MPAC AND RE-LOAD IT IN DP WITH THE NEXT ADDRESS (THE LOAD MAY BE INDEXED).\n#\t3. STOVL\tSTORE MPAC AND RE-LOAD A VECTOR (AS ABOVE).\n#\t4. STCALL\tSTORE AND DO A CALL (BOTH ADDRESSES MUST BE DIRECT HERE).\n#\n# STODL AND STOVL WILL TAKE FROM THE PUSH-DOWN LIST IF NO LOAD ADDRESS IS GIVEN.\n\n\t\tBLOCK\t3\n\n\t\tCOUNT\t03/INTER\n\nSTADR\t\tCA\tBANKSET\t\t# THE STADR CODE (PUSHUP UP ON STORE\n\t\tTS\tFBANK\t\t# ADDRESS) ENTERS HERE.\n\t\tINCR\tLOC\nITR1\t\tINDEX\tLOC\t\t# THE STORECODE WAS STORED COMPLEMENTED TO\n\t\tCS\t0\t\t# MAKE IT LOOK LIKE AN OPCODE PAIR.\n\t\tAD\tNEGONE\t\t# (YUL CANT REMOVE 1 BECAUSE OF EARLY CCS)\n\nDOSTORE\t\tTS\tADDRWD\n\t\tMASK \tLOW11\t\t# ENTRY FROM DISPATCHER.  SAVE THE ERASABLE\n\t\tXCH\tADDRWD\t\t# ADDRESS AND JUMP ON THE STORE CODE NO.\n\t\tMASK\tB12T14\n\t\tEXTEND\n\t\tMP\tBIT5\t\t# EACH TRANSFER VECTOR ENTRY IS TWO WORDS.\nITR0\t\tINDEX\tA\n\t\tTCF\tSTORJUMP\n\n# Page 1120\n# STORE CODE JUMP TABLE.  CALLS THE APPROPRIATE STORING ROUTINE AND EXITS TO DANZIG OR TO ADDRESS WITH\n# A SUPPLIED OPERATION CODE.\n#\n# STORE STORE,1 AND STORE,2 RETURN TO DANZIG, THUS RESETTING THE EBANK TO ITS STATE AT INTPRET.\n\nSTORJUMP\tTC\tSTORE\t\t# STORE.\n\t\tTCF\tDANZIG\t\t# PICK UP NEW OP CODE(S).\n\t\tTC\tSTORE,1\n\t\tTCF\tDANZIG\n\t\tTC\tSTORE,2\n\t\tTCF\tDANZIG\n\n\t\tTC\tSTORE\t\t# STODL.\n\t\tTCF\tDODLOAD\n\n\t\tTC\tSTORE\t\t# STODL WITH INDEXED LOAD ADDRESS.\n\t\tTCF\tDODLOAD*\n\n\t\tTC\tSTORE\t\t# STOVL.\n\t\tTCF\tDOVLOAD\n\n\t\tTC\tSTORE\t\t# STOVL WITH INDEXED LOAD ADDRESS.\n\t\tTCF\tDOVLOAD*\n\t\tTC\tSTORE\t\t# STOTC.\n\t\tCAF\tCALLCODE\n\t\tTS\tCYR\n\t\tTCF\t15BITADR\t# GET A 15 BIT ADDRESS.\n\n# Page 1121\n# STORE CODE ADDRESS PROCESSOR.\n\nSTORE,1\t\tINDEX\tFIXLOC\n\t\tCS\tX1\n\t\tTCF\tPRESTORE\n\nSTORE,2\t\tINDEX\tFIXLOC\n\t\tCS\tX2\nPRESTORE\tADS\tADDRWD\t\t# RESULTANT ADDRESS IS IN ERASABLE.\n\nSTORE\t\tCS\tADDRWD\n\t\tAD\tDEC45\n\t\tCCS\tA\t\t# DOES THE ADDRESS POINT TO THE WORK AREA?\n\t\tCA\tFIXLOC\t\t# YES.\n\t\tTCF\tAHEAD5\n\t\tCA\tOCT1400\t\t# NO.  SET EBANK & MAKE UP SUBADDRESS.\n\t\tXCH\tADDRWD\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\nAHEAD5\t\tADS\tADDRWD\n\n# Page 1122\n# STORING ROUTINES.  STORE DP, TP, OR VECTOR AS INDICATED BY MODE.\n\nSTARTSTO\tEXTEND\t\t\t# MPAC,+1 MUST BE STORED IN ANY EVENT.\n# ITRACE (5) REFERS TO \"STARTSTO\".\n\t\tDCA\tMPAC\n\t\tINDEX\tADDRWD\n\t\tDXCH\t0\n\n\t\tCCS\tMODE\n\t\tTCF\tTSTORE\n\t\tTC\tQ\n\nVSTORE\t\tEXTEND\n\t\tDCA\tMPAC +3\n\t\tINDEX \tADDRWD\n\t\tDXCH\t2\n\n\t\tEXTEND\n\t\tDCA\tMPAC +5\n\t\tINDEX\tADDRWD\n\t\tDXCH\t4\n\t\tTC\tQ\n\nTSTORE\t\tCA\tMPAC +2\n\t\tINDEX\tADDRWD\n\t\tTS\t2\n\t\tTC\tQ\n\n# Page 1123\n# ROUTINES TO BEGIN PROCESSING OF THE SECOND ADDRESS ASSOCIATED WITH ALL STORE-TYPE CODES EXCEPT STORE\n# ITSELF.\n\nDODLOAD\t\tCAF\tDLOADCOD\n\t\tTS\tCYR\n\t\tTCF\tDIRADRES\t# GO GET A DIRECT ADDRESS.\n\nDOVLOAD\t\tCAF\tVLOADCOD\n\t\tTS\tCYR\n\t\tTCF\tDIRADRES\n\nDOVLOAD*\tCAF\tVLOAD*\n\t\tTCF\tDODLOAD* +1\t# PROLOGUE TO INDEX ROUTINE.\n\n# Page 1124\n# THE FOLLOWING LOAD INSTRUCTIONS ARE PROVIDED FOR LOADING THE MULTI-PURPOSE ACCUMULATOR MPAC.\n\nTLOAD\t\tINDEX \tADDRWD\n\t\tCA\t2\t\t# LOAD A TRIPLE PRECISION ARGUMENT INTO\n\t\tTS\tMPAC +2\t\t# THE FIRST THREE MPAC REGISTERS, WITH THE\n\t\tEXTEND\t\t\t# CONTENTS OF THE OTHER FOUR IRRELEVANT.\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\nTMODE\t\tCAF\tONE\n\t\tTCF\tNEWMODE\t\t# DECLARE TRIPLE PRECISION MODE.\n\nSLOAD\t\tZL\t\t\t# LOAD A SINGLE PRECISION NUMBER INTO\n\t\tINDEX\tADDRWD\t\t# MPAC, SETTING MPAC+1,2 TO ZERO.  THE\n\t\tCA\t0\t\t# CONTENTS OF THE REMAINING MPAC REGISTERS\n\t\tTCF\tSLOAD2\t\t# ARE IRRELEVANT.\n\nVLOAD\t\tEXTEND\t\t\t# LOAD A DOUBLE PRECISION VECTOR INTO\n\t\tINDEX\tADDRWD\t\t# MPAC,+1, MPAC+3,4, AND MPAC+5,6.  THE\n\t\tDCA\t0\t\t# CONTENTS OF MPAC +2 ARE IRRELEVANT.\n\t\tDXCH\tMPAC\n\nENDVLOAD\tEXTEND\t\t\t# PDVL COMES HERE TO FINISH UP FOR DP, TP.\n\t\tINDEX\tADDRWD\n\t\tDCA\t2\n\t\tDXCH\tMPAC +3\n\n\t+4\tEXTEND\t\t\t# TPDVL FINISHES HERE.\n\t\tINDEX\tADDRWD\n\t\tDCA\t4\n\t\tDXCH\tMPAC +5\n\nVMODE\t\tCS\tONE\t\t# DECLARE VECTOR MODE.\n\t\tTCF\tNEWMODE\n\n# Page 1125\n# THE FOLLOWING INSTRUCTIONS ARE PROVIDED FOR STORING OPERANDS IN THE PUSHDOWN LIST:\n#\t1.\tPUSH\t\tPUSHDOWN AND NO LOAD.\n#\t2.\tPDDL\t\tPUSHDOWN AND DOUBLE PRECISION LOAD.\n#\t3.\tPDVL\t\tPUSHDOWN AND VECTOR LOAD.\n\nPDDL\t\tEXTEND\n\t\tINDEX\tADDRWD\t\t# LOAD MPAC,+1, PUSHING THE FORMER\n\t\tDCA\t0\t\t# CONTENTS DOWN.\n\t\tDXCH\tMPAC\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0\n\n\t\tINDEX\tMODE\t\t# ADVANCE THE PUSHDOWN POINTER APPRO-\n\t\tCAF\tNO.WDS\t\t# PRIATELY.\n\t\tADS\tPUSHLOC\n\n\t\tCCS\tMODE\n\t\tTCF\tENDTPUSH\n\t\tTCF\tENDDPUSH\n\n\t\tTS\tMODE\t\t# NOW DP.\nENDVPUSH\tTS\tMPAC +2\n\t\tDXCH\tMPAC +3\t\t# PUSH DOWN THE REST OF THE VECTOR HERE.\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 -4\n\n\t\tDXCH\tMPAC +5\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 -2\n\n\t\tTCF\tDANZIG\n\nENDDPUSH\tTS\tMPAC +2\t\t# SET MPAC +2 TO ZERO AND EXIT ON DP.\n\t\tTCF\tDANZIG\n\nENDTPUSH\tTS\tMODE\n\t\tXCH\tMPAC +2\t\t# ON TRIPLE, SET MPAC +2 TO ZERO, PUSHING\n\t+2\tINDEX\tPUSHLOC\t\t# DOWN THE OLD CONTENTS\n \t\tTS\t0 -1\n\t\tTCF\tDANZIG\n\n# Page 1126\n# PDVL -- PUSHDOWN AND VECTOR LOAD\n\nPDVL\t\tEXTEND\t\t\t# RELOAD MPAC AND PUSH DOWN ITS CONTENTS.\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0\n\n\t\tINDEX\tMODE\t\t# ADVANCE THE PUSHDOWN POINTER.\n\t\tCAF\tNO.WDS\n\t\tADS\tPUSHLOC\n\n\t\tCCS\tMODE\t\t# TEST PAST MODE.\n\t\tTCF\tTPDVL\n\t\tTCF\tENDVLOAD\t# JUST LOAD LAST FOUR REGISTERS ON DP.\n\nVPDVL\t\tEXTEND\t\t\t# PUSHDOWN AND RE-LOAD LAST TWO COMPONENTS\n\t\tINDEX\tADDRWD\n\t\tDCA\t2\n\t\tDXCH\tMPAC +3\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 -4\n\n\t\tEXTEND\n\t\tINDEX \tADDRWD\n\t\tDCA\t4\n\t\tDXCH\tMPAC +5\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 -2\n\n\t\tTCF\tDANZIG\n\nTPDVL\t\tEXTEND\t\t\t# ON TP, WE MUST LOAD THE Y COMPONENT\n\t\tINDEX\tADDRWD\t\t# BEFORE STORING MPAC +2 IN CASE THIS IS A\n\t\tDCA\t2\t\t# PUSHUP.\n\t\tDXCH\tMPAC +3\n\n\t\tCA\tMPAC +2\n\t\tINDEX\tPUSHLOC\t\t# IN DP.\n\t\tTS\t0 -1\n\t\tTCF\tENDVLOAD +4\n\n# SSP (STORE SINGLE PRECISION) IS EXECUTED HERE.\n\nSSP\t\tINCR\tLOC\t\t# PICK UP THE WORD FOLLOWING THE GIVEN\n\t\tINDEX\tLOC\t\t# ADDRESS AND STORE IT AT X.\n\t\tCA\t0\nSTORE1\t\tINDEX\tADDRWD\t\t# SOME INDEX AND MISCELLANEOUS OPS END\n\t\tTS\t0\t\t# HERE.\n# Page 1127\n\t\tTCF\tDANZIG\n\n# Page 1128\n# SEQUENCE CHANGING AND SUBROUTINE CALLING OPTIONS.\n#\n# THE FOLLOWING OPERATIONS ARE AVAILABLE FOR SEQUENCING CHANGING, BRANCHING, AND CALLING SUBROUTINES:\n#\t1.\tGOTO\t\tGO TO.\n#\t2.\tCALL\t\tCALL SUBROUTINE SETTING QPRET.\n#\t3.\tCGOTO\t\tCOMPUTED GO TO.\n#\t4.\tCCALL\t\tCOMPUTED CALL.\n#\t7.\tBPL\t\tBRANCH IF MPAC POSITIVE OR ZERO.\n#\t8.\tBZE\t\tBRANCH IF MPAC ZERO.\n#\t9.\tBMN\t\tBRANCH IF MPAC NEGATIVE NON-ZERO.\n\nCCALL\t\tINCR\tLOC\t\t# MAINTAIN LOC FOR QPRET COMPUTATION\n\t\tINDEX\tLOC\n\t\t# Was CAF --- RSB 2009.\n\t\tCA\t0\t\t# GET BASE ADDRESS OF CADR LIST.\n\t\tINDEX\tADDRWD\n\t\tAD\t0\t\t# ADD INCREMENT.\n\t\tTS\tFBANK\t\t# SELECT DESIRED CADR.\n\t\tMASK\tLOW10\n\t\tINDEX\tA\n\t\tCAF\t10000\n\t\tTS\tPOLISH\n\nCALL\t\tCA\tBANKSET\t\t# FOR ANY OF THE CALL OPTIONS, MAKE UP THE\n\t\tMASK\tBANKMASK\t# ADDRESS OF THE NEXT OP-CODE PAIR/STORE\n\t\tAD\tBANKMASK\t# CODE AND LEAVE IT IN QPRET.  NOTE THAT\n\t\tAD\tLOC\t\t# BANKMASK = -(2000 - 1).\n\t\tINDEX\tFIXLOC\n\t\tTS\tQPRET\n\nGOTO\t\tCA\tPOLISH\t\t# BASIC BRANCHING SEQUENCE.\n\t+1\tMASK \tHIGH4\n\t\tEXTEND\n\t\tBZF\tGOTOERS\t\t# SEE IF ADDRESS POINTS TO FIXED OR ERAS.\n\t+4\tCA\tBANKSET\t\t# SET EBANK PART OF BBANK.  NEXT, SET UP\n\t\tTS\tBBANK\t\t# FBANK.  THE COMBINATION IS PICKED UP &\n\t\tCA\tPOLISH\t\t# PUT INTO BANKSET AT INTPRET +2.\n\t\tTS\tFBANK\n\t\tMASK \tLOW10\n\t\tAD\t2K\n\t\tTS\tLOC\n\t\tTCF\tINTPRET +3\n\n\t\tEBANK=\t1400\t\t# SO YUL DOESN'T CUSS THE \"CA 1400\" BELOW.\n\nGOTOERS\t\tCA\tPOLISH\t\t# THE GIVEN ADDRESS IS IN ERASABLE -- SEE\n\t\tAD\t-ENDVAC\t\t# IF RELATIVE TO THE WORK ARA.\n\t\tCCS\tA\n\t\tCA\tPOLISH\t\t# GENERAL ERASABLE.\n\t\tTCF\tGOTOGE\n\n# Page 1129\n\t\tCA\tFIXLOC\t\t# WORK AREA.\n\t\tAD\tPOLISH\n\t\tINDEX\tA\t\t# USE THE GIVEN ADDRESS AS THE ADDRESS OF\n\t\tCA\t0\t\t# THE BRANCH ADDRESS.\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO +1\t\t# ALLOWS ARBITRARY INDIRECTNESS LEVELS.\n\nGOTOGE\t\tTS\tEBANK\n\t\tMASK\tLOW8\n\t\tINDEX\tA\t\t# USE THE GIVEN ADDRESS AS THE ADDRESS OF\n\t\tCA\t1400\t\t# THE BRANCH ADDRESS.\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO +1\n\nCGOTO\t\tINDEX\tLOC\t\t# COMPUTED GO TO.  PICK UP ADDRESS OF CADR\n\t\tCA\t1\t\t# LIST\n\t\tINDEX\tADDRWD\t\t# ADD MODIFIER.\n\t\tAD\t0\n\t\tTS\tFBANK\t\t# SELECT GOTO ADDRESS\n\t\tMASK\tLOW10\n\t\tINDEX\tA\n\t\tCA\t10000\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO +1\t\t# WITH ADDRESS IN A.\n\nSWBRANCH\tCA\tBANKSET\t\t# SWITCH INSTRUCTIONS WHICH ELECT TO\n\t\tTS\tFBANK\t\t# BRANCH COME HERE TO DO SO.\n\t\tINDEX\tLOC\n\t\tCA\t1\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO +1\n\n# Page 1130\n# TRIPLE PRECISION BRANCHING ROUTINE.  IF CALLING TC IS AT L, RETURN IS AS FOLLOWS:\n#\tL+1\tIF MPAC IS GREATER THAN ZERO.\n#\tL+2\tIF MPAC IS EQUAL TO +0 OR -0.\n#\tL+3\tIF MPAC IS LESS THAN ZERO.\n\nBRANCH\t\tCCS\tMPAC\n\t\tTC\tQ\n\t\tTCF\t+2\t\t# ON ZERO.\n\t\tTCF\tNEG\n\n\t\tCCS\tMPAC +1\n\t\tTC\tQ\n\t\tTCF\t+2\n\t\tTCF\tNEG\n\n\t\tCCS\tMPAC +2\n\t\tTC\tQ\n\t\tTCF\t+2\n\t\tTCF\tNEG\n\nQ+1\t\tINDEX\tQ\n\t\tTC\t1\n\nNEG\t\tINDEX\tQ\t\t# IF FIRST NON-ZERO REGISTER WAS NEGATIVE.\n\t\tTC\t2\n\nQ+2\t\t=\tNEG\n\n# ITRACE (3) REFERS TO \"EXIT\".\n\nEXIT\t\tCA\tBANKSET\t\t# RESTORE USER'S BANK SETTING, AND LEAVE\n\t\tTS\tBBANK\t\t# INTERPRETIVE MODE.\n\t\tINDEX\tLOC\n\t\tTC\t1\n\n# Page 1131\n# SECTION 3 -- ADD/SUBTRACT PACKAGE.\n#\n# THE FOLLOWING OPERATIONS ARE PROVIDED FOR ADDING TO AND SUBTRACTING FROM THE MULTI-PURPOSE ACCUMULATOR\n# MPAC:\n#\t1.\tDAD\tDOUBLE PRECISION ADD.\n#\t2.\tDSU\tDOUBLE PRECISION SUBTRACT.\n#\t3.\tBDSU\tDOUBLE PRECISION SUBTRACT FROM.\n#\t4.\tTAD\tTRIPLE PRECISION ADD.\n#\t5.\tVAD\tVECTOR ADD.\n#\t6.\tVSU\tVECTOR SUBTRACT.\n#\t7.\tBVSU\tVECTOR SUBTRACT FROM.\n# THE INTERPRETIVE OVERFLOW INDICATOR OVFIND IS SET NON-ZERO IF OVERFLOW OCCURS IN ANY OF THE ABOVE.\n\nVSU\t\tCAF\tBIT15\t\t# CHANGES 0 TO DCS.\n\t\tTCF\t+2\n\nVAD\t\tCAF\tPRIO30\t\t# CHANGES 0 TO DCA.\n\t\tADS\tADDRWD\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tREAD\tHISCALAR\t# DCA 2 OR DCS 2\n\t\tDAS \tMPAC +3\n\t\tEXTEND\t\t\t# CHECK OVERFLOW.\n\t\tBZF\t+2\n\t\tTC\tOVERFLWY\n\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tREAD\tCHAN5\t\t# DCA 4 OR DCS 4\n\t\tDAS\tMPAC +5\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWZ\n\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tREAD\tLCHAN\t\t# DCA 0 OR DCS 0\n\t\tTCF\tENDVXV\n\nDAD\t\tEXTEND\n\t\tINDEX \tADDRWD\n\t\tDCA\t0\nENDVXV\t\tDAS\tMPAC\t\t# VXV FINISHES HERE.\n\t\tEXTEND\n\t\tBZF\tDANZIG\n\n# Page 1132\nSETOVF\t\tTC\tOVERFLOW\n\t\tTCF\tDANZIG\n\n# Page 1133\nDSU\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCS\t0\n\t\tTCF\tENDVXV\n\nOVERFLWZ\tTS\tL\t\t# ENTRY FOR THIRD COMPONENT.\n\t\tCAF\tFIVE\n\t\tTCF\t+3\n\nOVERFLWY\tTS\tL\t\t# ENTRY FOR SECOND COMPONENT.\n\t\tCAF\tTHREE\n\t\tXCH\tL\n\nOVERFLOW\tINDEX\tA\t\t# ENTRY FOR 1ST COMP OR DP (L=0).\n\t\tCS\tLIMITS\t\t# PICK UP POSMAX OR NEGMAX.\n\t\tTS\tBUF\n\t\tEXTEND\n\t\tAUG\tA\n\t\tINDEX\tL\n\t\tADS\tMPAC +1\n\t\tTS\t7\n\t\tCAF\tZERO\n\t\tAD\tBUF\n\t\tINDEX\tL\n\t\tADS\tMPAC\n\t\tTS\t7\n\t\tTC\tQ\t\t# NO OVERFLOW EXIT.\n\t\tTCF\tSETOVF2\t\t# SET OVFIND AND EXIT.\n\nBVSU\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t2\n\t\tDXCH\tMPAC +3\n\t\tEXTEND\n\t\tDCOM\n\t\tDAS\tMPAC +3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWY\n\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t4\n\t\tDXCH\tMPAC +5\n\t\tEXTEND\n\t\tDCOM\n\t\tDAS\tMPAC +5\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWZ\n\n# Page 1134\nBDSU\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n\t\tEXTEND\n\t\tDCOM\n\t\tTCF\tENDVXV\n\n# Page 1135\n# TRIPLE PRECISION ADD ROUTINE.\n\nTAD\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t1\t\t# ADD MINOR PARTS FIRST.\n\t\tDAS\tMPAC +1\n\t\tINDEX\tADDRWD\n\t\tAD\t0\n\t\tAD\tMPAC\n\t\tTS\tMPAC\n\t\tTCF\tDANZIG\n\n\t\tTCF\tSETOVF\t\t# SET OVFIND IF SUCH OCCURS.\n\n# Page 1136\n# ARITHMETIC SUBROUTINES REQUIRED IN FIXED-FIXED.\n#\t1.  DMPSUB\tDOUBLE PRECISION MULTIPLY, MULTIPLY THE CONTENTS OF MPAC,+1 BY THE DP WORD WHOSE ADDRESS\n#\t\t\tIS IN ADDRWD AND LEAVE A TRIPLE-PRECISION RESULT IN MPAC.\n#\t2.  ROUNDSUB\tROUND THE TRIPLE PRECISION CONTENTS OF MPAC TO DOUBLE PRECISION.\n#\t3.  DOTSUB\tTAKE THE DOT PRODUCT OF THE VECTOR IN MPAC AND THE VECTOR WHOSE ADDRESS IS IN ADDRWD\n#\t\t\tAND LEAVE THE TRIPLE PRECISION RESULT IN MPAC.\n#\t4.  POLY\tUSING THE CONTENTS OF MPAC AS A DP ARGUMENT, EVALUATE THE POLYNOMIAL WHOSE DEGREE AND\n#\t\t\tCOEFFICIENTS IMMEDIATELY FOLLOW THE TC POLY INSTRUCTION (SEE ROUTINE FOR DETAILS).\n\nDMP\t\tINDEX\tQ\t\t# BASIC SUBROUTINE FOR USE BY PINBALL, ETC\n\t\t# Was CAF --- RSB 2009.\n\t\tCA\t0\n\t\tINCR\tQ\n\t-1\tTS\tADDRWD\t\t# (PROLOGUE FOR SETTING ADDRWD.)\n\nDMPSUB\t\tINDEX\tADDRWD\t\t# GET MINOR PART OF OPERAND AT C(ADDRWD).\n\t\tCA\t1\n\t\tTS\tMPAC +2\t\t# THIS WORKS FOR SQUARING MPAC AS WELL.\n\t\tCAF\tZERO\t\t# SET MPAC +1 TO ZERO SO WE CAN ACCUMULATE\n\t\tXCH\tMPAC +1\t\t# THE PARTIAL PRODUCTS WITH DAS\n\t\tTS\tMPTEMP\t\t# INSTRUCTIONS.\n\t\tEXTEND\n\t\tMP\tMPAC +2\t\t# MINOR OF MPAC X MINOR OF C(ADDRWD).\n\n\t\tXCH\tMPAC +2\t\t# DISCARD MINOR PART OF ABOVE RESULT AND\n\t\tEXTEND\t\t\t# FORM MAJOR OF MPAC X MINOR OF C(ADDRWD).\n\t\tMP\tMPAC\n\t\tDAS\tMPAC +1\t\t# GUARANTEED NO OVERFLOW.\n\n\t\tINDEX\tADDRWD\t\t# GET MAJOR PART OF ARGUMENT AT C(ADDRWD).\n\t\tCA\t0\n\t\tXCH\tMPTEMP\t\t# SAVE AND BRING OUT MINOR OF MPAC.\nDMPSUB2\t\tEXTEND\n\t\tMP\tMPTEMP\t\t# MAJOR OF C(ADDRWD) X MINOR OF MPAC.\n\t\tDAS\tMPAC +1\t\t# ACCUMULATE, SETTING A TO NET OVERFLOW.\n\n\t\tXCH\tMPAC\t\t# SETTING MPAC TO 0 OR +-1.\n\t\tEXTEND\n\t\tMP\tMPTEMP\t\t# MAJOR OF MPAC X MAJOR OF C(ADDRWD).\n\t\tDAS\tMPAC\t\t# GUARANTEED NO OVERFLOW.\n\t\tTC\tQ\t\t# 49 MCT = .573 MS. INCLUDING RETURN.\n\n# Page 1137\n# ROUND MPAC TO DOUBLE PRECISION, SETTING OVFIND ON THE RARE EVENT OF OVERFLOW.\n\nROUNDSUB\tCAF\tZERO\t\t# SET MPAC +2 = 0 FOR SCALARS AND CHANGE\n\t+1\tTS\tMODE\t\t# MODE TO DP.\n\nVROUND\t\tXCH\tMPAC +2\t\t# BUT WE NEEDN'T TAKE THE TIME FOR VECTORS.\n\t\tDOUBLE\n\t\tTS\tL\n\t\tTC\tQ\n\n\t\tAD\tMPAC +1\t\t# ADD ROUDING BIT IF MPAC +2 WAS GREATER\n\t\tTS\tMPAC +1\t\t# THAN .5 IN MAGNITUDE.\n\t\tTC\tQ\n\n\t\tAD\tMPAC\t\t# PROPAGATE INTERFLOW.\n\t\tTS\tMPAC\n\t\tTC\tQ\n\nSETOVF2\t\tTS\tOVFIND\t\t# (RARE).\n\t\tTC\tQ\n\n# Page 1138\n# THE DOT PRODUCT SUBROUTINE USUALLY FORMS THE DOT PRODUCT OF THE VECTOR IN MPAC WITH A STANDARD SIX\n# REGISTER VECTOR WHOSE ADDRESS IS IN ADDRWD.  IN THIS CASE C(DOTINC) ARE SET TO 2. VXM, HOWEVER, SETS C(DOTINC) TO\n# 6 SO THAT DOTSUB DOTS MPAC WITH A COLUMN VECTOR OF THE MATRIX IN QUESTION IN THIS CASE.\n\nPREDOT\t\tCAF\tTWO\t\t# PROLOGUE TO SET DOTINC TO 2.\n\t\tTS\tDOTINC\n\nDOTSUB\t\tEXTEND\n\t\tQXCH\tDOTRET\t\t# SAVE RETURN\n\t\tTC\tDMPSUB\t\t# DOT X COMPONENTS.\n\t\tDXCH\tMPAC +3\t\t# POSITION Y COMPONENT OF MPAC FOR\n\t\tDXCH\tMPAC\t\t# MULTIPLICATION WHILE SAVING RESULT IN\n\t\tDXCH\tBUF\t\t# THREE WORD BUFFER, BUF.\n\t\tCA\tMPAC +2\n\t\tTS\tBUF +2\n\n\t\tCA\tDOTINC\t\t# ADVANCE ADDRWD TO Y COMPONENT OF\n\t\tADS\tADDRWD\t\t# OTHER ARGUMENT.\n\t\tTC\tDMPSUB\n\t\tDXCH\tMPAC +1\t\t# ACCUMULATE PARTIAL PRODUCTS.\n\t\tDAS\tBUF +1\n\t\tAD\tMPAC\n\t\tAD\tBUF\n\t\tTS\tBUF\n\t\tTCF\t+2\n\t\tTS\tOVFIND\t\t# IF OVERFLOW OCCURS.\n\n\t\tDXCH\tMPAC +5\t\t# MULTIPLY Z COMPONENTS.\n\t\tDXCH\tMPAC\n\t\tCA\tDOTINC\n\t\tADS\tADDRWD\n\t\tTC\tDMPSUB\nENDDOT\t\tDXCH\tBUF +1\t\t# LEAVE FINAL ACCUMULATION IN MPAC.\n\t\tDAS\tMPAC +1\n\t\tAD\tMPAC\n\t\tAD\tBUF\n\t\tTS\tMPAC\n\t\tTC\tDOTRET\n\n\t\tTC\tOVERFLOW\t# ON OVERFLOW HERE.\n\t\tTC\tDOTRET\n\n# Page 1139\n# DOUBLE PRECISION POLYNOMIAL EVALUATOR\n#\t                          N        N-1\n#\tTHIS ROUTINE EVALUATES A X  + A   X    + ... + A  X + A  LEAVING THE DP RESULT IN MPAC ON EXIT.\n#\t                        N      N-1              1      0\n#\n# THE ROUTINE HAS TWO ENTRIES\n#\n#\t1\tENTRY THRU POWRSERS.  THE COEFFICIENTS MAY BE EITHER IN FIXED OR ERASABLE E.  THE CALL IS BY\n#\t\tTC POWRSERS, AND THE RETURN IS TO LOC(TC POWRSERS)+1.  THE ENTERING DATA MUST BE AS FOLLOWS:\n#\t\t\tA\tSP\tLOC-3\t\tADDRESS FOR REFERENCING COEF TABLE\n#\t\t\tL\tSP\tN-1\t\tN IS THE DEGREE OF THE POWER SERIES\n#\t\t\tMPAC\tDP\tX\t\tARGUMENT\n#\t\t\tLOC-2N\tDP\tA(0)\n#\t\t\t\t...\n#\t\t\tLOC\tDP\tA(N)\n#\n#\t2.\tENTRY THRU POLY.  THE CALL TO POLY AND THE ENTERING DATA MUST BE AS FOLLOWS\n#\t\t\tMPAC\t\tDP\t\tX\t\tARGUMENT\n#\t\t\tLOC\t\tTC\t\tPOLY\n#\t\t\tLOC+1\t\tDP\t\tA(0)\n#\t\t\t\t\t...\n#\t\t\tLOC+2N+2\tDP\t\tA(N)\t\tRETURN IS TO LOC+2N+4\n\nPOWRSERS\tEXTEND\n\t\tQXCH\tPOLYRET\t\t# RETURN ADDRESS\n\t\tTS\tPOLISH\t\t# POWER SERIES ADDRESS\n\t\tLXCH\tPOLYCNT\t\t# N-1 TO COUNTER\n\t\tTCF\tPOLYCOM\t\t# SKIP SET UP BY POLY\n\nPOLY\t\tINDEX\tQ\n\t\t# Was CAF --- RSB 2009.\n\t\tCA\t0\n\t\tTS\tPOLYCNT\t\t# N-1 TO COUNTER\n\t\tDOUBLE\n\t\tAD\tQ\n\t\tTS\tPOLISH\t\t# L(A(N))-3 TO POLISH\n\t\tAD\tFIVE\n\t\tTS\tPOLYRET\t\t# STORE RETURN ADDRESS\n\nPOLYCOM\t\tCAF\tLVBUF\t\t# INCOMING X WILL BE MOVED TO VBUF, SO\n\t\tTS\tADDRWD\t\t# SET ADDRWD SO DMPSUB WILL MPY BY VBUF.\n\n\t\tEXTEND\n\t\tINDEX\tPOLISH\n\t\tDCA\t3\n\n# Page 1140\n\t\tDXCH\tMPAC\t\t# LOAD A(N) INTO MPAC\n\t\tDXCH\tVBUF\t\t# SAVING X IN VBUF\n\t\tTCF\tPOLY2\n\nPOLYLOOP\tTS\tPOLYCNT\t\t# SAVE DECREMENTED LOOP COUNTER\n\t\tCS\tTWO\n\t\tADS\tPOLISH\t\t# REGRESS COEFFICIENT POINTER\n\nPOLY2\t\tTC\tDMPSUB\t\t# MULTIPLY BY X\n\t\tEXTEND\n\t\tINDEX\tPOLISH\n\t\tDCA\t1\t\t# ADD IN NEXT COEFFICIENT\n\t\tDAS\tMPAC\t\t# USER'S RESPONSIBILITY TO ASSURE NO OVFLOW\n\n\t\tCCS\tPOLYCNT\n\t\tTCF\tPOLYLOOP\n\t\tTC\tPOLYRET\t\t# RETURN CALLER\n\n# Page 1141\n# MISCELLANEOUS MULTI-PRECISION ROUTINES REQUIRED IN FIXED-FIXED BUT NOT USED BY THE INTERPRETER.\n\nDPAGREE\t\tCAF\tZERO\t\t# DOUBLE PRECISION ENTRY --\n\t\tTS\tMPAC +2\t\t# ZERO LOW-ORDER WORD\n\nTPAGREE\t\tLXCH\tQ\t\t# FORCE SIGN AGREEMENT AMONG THE TRIPLE\n\t\tTC\tBRANCH\t\t# PRECISION CONTENTS OF MPAC.  RETURNING\n\t\tTCF\tARG+\t\t# WITH SIGNUM OF THE INPUT IN A.\n\t\tTCF\tARGZERO\n\n\t\tCS\tPOSMAX\t\t# IF NEGATIVE.\n\t\tTCF\t+2\n\nARG+\t\tCAF\tPOSMAX\n\t\tTS\tQ\n\t\tEXTEND\n\t\tAUG\tA\t\t# FORMS +-1.0.\n\t\tAD\tMPAC +2\n\t\tTS\tMPAC +2\n\t\tCAF\tZERO\n\t\tAD\tQ\n\t\tAD\tMPAC +1\n\t\tTS\tMPAC +1\n\t\tCAF\tZERO\n\t\tAD\tQ\t\t# Q STILL HAS POSMAX OR NEGMAX IN IT.\n\t\tAD\tMPAC\nARGZERO2\tTS\tMPAC\t\t# ALWAYS SKIPPING UNLESS ARGZERO.\n\t\tTS\tMPAC +1\n\t\tTC\tL\t\t# RETURN VIA L.\n\nARGZERO\t\tTS\tMPAC +2\t\t# SET ALL THREE MPAC REGISTERS TO ZERO.\n\t\tTCF\tARGZERO2\n\n# SHORTMP MULTIPLIES THE TP CONTENTS OF MPAC BY THE SINGLE PRECISION NUMBER ARRIVING IN A.\n\nSHORTMP\t\tTS\tMPTEMP\n\t\tEXTEND\n\t\tMP\tMPAC +2\n\t\tTS\tMPAC +2\nSHORTMP2\tCAF\tZERO\t\t# SO SUBSEQUENT DAS WILL WORK.\n\t\tXCH\tMPAC +1\n\t\tTCF\tDMPSUB2\n\n# Page 1142\n# DMPNSUB MULTIPLIES THE DP FRACTION ARRIVING IN MPAC BY THE SP\n# INTEGER ARRIVING IN A.  THE DP PRODUCT DEPARTS BOTH IN MPAC AND IN\n# A AND L.  NOTE THAT DMPNSUB NORMALLY INCREASES THE MAGNITUDE OF THE\n# CONTENTS OF MPAC.  THE CUSTOMER MUST INSURE THAT B(A) X B(MPAC,MPAC+1)\n# AND B(A) X B(MPAC) ARE LESS THAN 1 IN MAGNITUDE, WHERE B, AS IS OBVIOUS,\n# INDICATES THE ARRIVING CONTENTS.\n\nDMPNSUB\t\tTS\tDMPNTEMP\n\t\tEXTEND\n\t\tMP\tMPAC +1\n\t\tDXCH\tMPAC\t\t# LOW PRODUCT TO MPAC, HIGH FACTOR TO A\n\t\tEXTEND\n\t\tMP\tDMPNTEMP\n\t\tCA\tL\n\t\tADS\tMPAC\t\t# COMPLETING THE PRODUCT IN MPAC\n\t\tEXTEND\n\t\tDCA\tMPAC\t\t# BRINGING THE PRODUCT INTO A AND L\n\t\tTC\tQ\n\n# Page 1143\n# MISCELLANEOUS VECTOR OPERATIONS.  INCLUDED HERE ARE THE FOLLOWING.\n#\t1.\tDOT\tDP VECTOR DOT PRODUCT.\n#\t2.\tVXV\tDP VECTOR CROSS PRODUCT.\n#\t3.\tVXSC\tDP VECTOR TIMES SCALAR.\n#\t4.\tV/SC\tDP VECTOR DIVIDED BY SCALAR.\n#\t5.\tVPROJ\tDP VECTOR PROJECTION.  ( (MPAC.X)MPAC ).\n#\t6.\tVXM\tDP VECTOR POST-MULTIPLIED BY MATRIX.\n#\t7.\tMXV\tDP VECTOR PRE-MULTIPLIED BY MATRIX.\n\nDOT\t\tTC\tPREDOT\t\t# DO THE DOT PRODUCT AND EXIT, CHANGING\nDMODE\t\tCAF\tZERO\t\t# THE MODE TO DP SCALAR.\n\t\tTCF\tNEWMODE\n\nMXV\t\tCAF\tTWO\t\t# SET UP MATINC AND DOTINC FOR ROW\n\t\tTS\tMATINC\t\t# VECTORS.\n\t\tTCF\tVXM/MXV\t\t# GO TO COMMON PORTION.\n\nVXM\t\tCS\tTEN\t\t# SET MATINC AND DOTINC TO REFER TO MATRIX\n\t\tTS\tMATINC\t\t# AS THREE COLUMN VECTORS.\n\t\tCAF\tSIX\n\n# Page 1144\n# COMMON PORTION OF MXV AND VXM.\n\nVXM/MXV\t\tTS\tDOTINC\n\n# ITRACE (2) REFERS TO \"VXM/MXV\".\n\n\t\tTC\tMPACVBUF\t# SAVE VECTOR IN MPAC FOR FURTHER USE.\n\n\t\tTC\tDOTSUB\t\t# GO DOT TO GET X COMPONENT OF ANSWER.\n\t\tEXTEND\n\t\tDCA\tVBUF\t\t# MOVE MPAC VECTOR BACK INTO MPAC, SAVING\n\t\tDXCH\tMPAC\t\t# NEW X COMPONENT IN BUF2.\n\t\tDXCH\tBUF2\n\t\tEXTEND\n\t\tDCA\tVBUF +2\n\t\tDXCH\tMPAC +3\n\t\tEXTEND\n\t\tDCA\tVBUF +4\n\t\tDXCH\tMPAC +5\n\t\tCA\tMATINC\t\t# INITIALIZE ADDRWD FOR NEXT DOT PRODUCT.\n\t\tADS\tADDRWD\t\t# FORMS HAS ADDRESS OF NEXT COLUMN(ROW).\n\n\t\tTC\tDOTSUB\n\t\tDXCH\tVBUF\t\t# MORE GIVEN VECTOR BACK TO MPAC, SAVING Y\n\t\tDXCH\tMPAC\t\t# COMPONENT OF ANSWER IN VBUF +2.\n\t\tDXCH\tVBUF +2\n\t\tDXCH\tMPAC +3\n\t\tDXCH\tVBUF +4\n\t\tDXCH\tMPAC +5\n\t\tCA\tMATINC\t\t# FORM ADDRESS OF LAST COLUMN OR ROW.\n\t\tADS\tADDRWD\n\n\t\tTC\tDOTSUB\n\t\tDXCH\tBUF2\t\t# ANSWER NOW COMPLETE. PUT COMPONENTS INTO\n\t\tDXCH\tMPAC\t\t# PROPER MPAC REGISTERS.\n\t\tDXCH\tMPAC +5\n\t\tDXCH\tVBUF +2\n\t\tDXCH\tMPAC +3\n\t\tTCF\tDANZIG\t\t# EXIT.\n\n# Page 1145\n# VXSC -- VECTOR TIMES SCALAR.\n\nVXSC\t\tCCS\tMODE\t\t# TEST PRESENT MODE.\n\t\tTCF\tDVXSC\t\t# SEPARATE ROUTINE WHEN SCALAR IS IN MPAC.\n\t\tTCF\tDVXSC\n\nVVXSC\t\tTC\tDMPSUB\t\t# COMPUTE X COMPONENT\n\t\tTC\tVROUND\t\t# AND ROUND IT.\n\t\tDXCH\tMPAC +3\t\t# PUT Y COMPONENT INTO MPAC SAVING MPAC IN\n\t\tDXCH\tMPAC\t\t# MPAC +3.\n\t\tDXCH\tMPAC +3\n\n\t\tTC\tDMPSUB\t\t# DO SAME FOR Y AND Z COMPONENTS.\n\t\tTC\tVROUND\n\t\tDXCH\tMPAC +5\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC +5\n\n\t\tTC\tDMPSUB\n\t\tTC\tVROUND\nVROTATEX\tDXCH\tMPAC\t\t# EXIT USED TO RESTORE MPAC AFTER THIS\n\t\tDXCH\tMPAC +5\t\t# TYPE OF ROTATION.  CALLED BY VECTOR SHIFT\n\t\tDXCH\tMPAC +3\t\t# RIGHT, V/SC, ETC.\n\t\tDXCH\tMPAC\n\t\tTCF\tDANZIG\n\n# Page 1146\n# DP VECTOR PROJECTION ROUTINE.\n\nVPROJ\t\tTC\tPREDOT\t\t# (MPAC.X)MPAC IS COMPUTED AND LEFT IN\n\t\tCS\tFOUR\t\t# MPAC.  DO DOT AND FALL INTO DVXSC.\n\t\tADS\tADDRWD\n\n# VXSC WHEN SCALAR ARRIVES IN MPAC AND VECTOR IS AT X.\n\nDVXSC\t\tEXTEND\t\t\t# SAVE SCALAR IN MPAC +3 AND GET X\n\t\tDCA\tMPAC\t\t# COMPONENT OF ANWER.\n\t\tDXCH\tMPAC +3\n\t\tTC\tDMPSUB\n\t\tTC\tVROUND\n\n\t\tCAF\tTWO\t\t# ADVANCE ADDRWD TO Y COMPONENT OF X.\n\t\tADS\tADDRWD\n\t\tEXTEND\n\t\tDCA\tMPAC +3\t\t# PUT SCALAR BACK INTO MPAC AND SAVE\n\t\tDXCH\tMPAC\t\t# X RESULT IN MPAC +5.\n\t\tDXCH\tMPAC +5\n\t\tTC\tDMPSUB\n\t\tTC\tVROUND\n\n\t\tCAF\tTWO\n\t\tADS\tADDRWD\t\t# TO Z COMPONENT.\n\t\tDXCH\tMPAC +3\t\t# BRING SCALAR BACK, PUTTING Y RESULT IN\n\t\tDXCH\tMPAC\t\t# THE PROPER PLACE.\n\t\tDXCH\tMPAC +3\n\t\tTC\tDMPSUB\n\t\tTC\tVROUND\n\n\t\tDXCH\tMPAC\t\t# PUT Z COMPONENT IN PROPER PLACE, ALSO\n\t\tDXCH\tMPAC +5\t\t# POSITIONING X.\n\t\tDXCH\tMPAC\n\n\t\tTCF\tVMODE\t\t# MODE HAS CHANGED TO VECTOR.\n\n# Page 1147\n# VECTOR CROSS PRODUCT ROUTINE CALCULATES (X M -X M ,X M -X M ,X M -X M ) WHERE M IS THE VECTOR IN\n#                                           3 2  2 3  1 3  3 1  2 1  1 2\n# MPAC AND X THE VECTOR AT THE GIVEN ADDRESS.\n\nVXV\t\tEXTEND\n\t\tDCA\tMPAC +5\t\t# FORM UP M3X1, LEAVING M1 IN VBUF.\n\t\tDXCH\tMPAC\n\t\tDXCH\tVBUF\n\t\tTC\tDMPSUB\t\t# BY X1.\n\n\t\tEXTEND\n\t\tDCS\tMPAC +3\t\t# CALCULATE -X1M2, SAVING X1M3 IN VBUF +2.\n\t\tDXCH\tMPAC\n\t\tDXCH\tVBUF +2\n\t\tTC\tDMPSUB\n\n\t\tCAF\tTWO\t\t# ADVANCE ADDRWD TO X2.\n\t\tADS\tADDRWD\n\t\tEXTEND\n\t\tDCS\tMPAC +5\t\t# PREPARE TO GET -X2M3, SAVING -X1M2 IN\n\t\tDXCH\tMPAC\t\t# MPAC +5.\n\t\tDXCH\tMPAC +5\n\t\tTC\tDMPSUB\n\n\t\tEXTEND\n\t\tDCA\tVBUF\t\t# GET X2M1, SAVING -X2M3 IN VBUF +4.\n\t\tDXCH\tMPAC\n\t\tDXCH\tVBUF +4\n\t\tTC\tDMPSUB\n\n\t\tCAF\tTWO\t\t# ADVANCE ADDRWD TO X3.\n\t\tADS\tADDRWD\n\t\tEXTEND\n\t\tDCS\tVBUF\t\t# GET -X3M1, ADDING X2M1 TO MPAC +5 TO\n\t\tDXCH\tMPAC\t\t# COMPLETE THE Z COMPONENT OF THE ANSWER.\n\t\tDAS\tMPAC +5\n\n\t\tEXTEND\n\t\tBZF\t +2\n\t\tTC\tOVERFLWZ\n\n\t\tTC\tDMPSUB\n\t\tDXCH\tVBUF +2\t\t# MOVE X1M3 TO MPAC +3 SETTING UP FOR X3M2\n\t\tDXCH\tMPAC +3\t\t# AND ADD -X3M1 TO MPAC +3 TO COMPLETE THE\n\t\tDXCH\tMPAC\t\t# Y COMPONENT OF THE RESULT.\n\t\tDAS\tMPAC +3\n\n\t\tEXTEND\n\t\tBZF\t+2\n# Page 1148\n\t\tTC OVERFLWY\n\n\t\tTC\tDMPSUB\n\t\tDXCH\tVBUF +4\t\t# GO ADD -X2M3 TO X3M2 TO COMPLETE THE X\n\t\tTCF\tENDVXV\t\t# COMPONENT (TAIL END OF DAD).\n\n# THE MPACVBUF SUBROUTINE SAVES THE VECTOR IN MPAC IN VBUF WITHOUT CLOBBERING MPAC.\n\nMPACVBUF\tEXTEND\t\t\t# CALLED BY MXV, VXM, AND UNIT.\n\t\tDCA\tMPAC\n\t\tDXCH\tVBUF\n\t\tEXTEND\n\t\tDCA\tMPAC +3\n\t\tDXCH\tVBUF +2\n\t\tEXTEND\n\t\tDCA\tMPAC +5\n\t\tDXCH\tVBUF +4\n\t\tTC\tQ\t\t# RETURN TO CALLER.\n\n# DOUBLE PRECISION SIGN AGREE ROUTINE.  ARRIVE WITH INPUT IN A+L.  OUTPUT IS IN A + L.\n\nALSIGNAG\tCCS\tA\t\t# TEST UPPER PART.\n\t\tTCF\tUPPOS\t\t# IT IS POSITIVE\n\t\tTC\tQ\t\t# ZERO\n\t\tTCF\tUPNEG\t\t# NEGATIVE\n\t\tTC\tQ\t\t# ZERO\n\nUPPOS\t\tXCH\tL\t\t# SAVE DECREMENTED UPPER PART.\n\t\tAD\tHALF\n\t\tAD\tHALF\n\t\tTS\tA\t\t# SKIPS ON OVERFLOW\n\t\tTCF\t+2\n\t\tINCR\tL\t\t# RESTORE UPPER TO ROIGINAL VALUE\n\t\tXCH\tL\t\t# SWAP A + L BACK.\n\t\tTC\tQ\n\nUPNEG\t\tXCH\tL\t\t# SAVE COMPLEMENTED + DECREMENTED UPPER PT\n\t\tAD\tNEGMAX\n\t\tAD\tNEGONE\n\t\tTS\tA\n\t\tTCF\t+2\t\t# DON'T INCREMENT IF NO OVERFLOW.\n\t\tINCR\tL\n\t\tXCH\tL\n\t\tCOM\t\t\t# MAKE NEGATIVE AGAIN.\n\t\tTC\tQ\n\n# Page 1149\n# INTERPRETIVE INSTRUCTIONS WHOSE EXECUTION CONSISTS OF PRINCIPALLY CALLING SUBROUTINES.\n\nDMP1\t\tTC\tDMPSUB\t\t# DMP INSTRUCTIONS\n\t\tTCF\tDANZIG\n\nDMPR\t\tTC\tDMPSUB\n\t\tTC\tROUNDSUB +1\t# (C(A) = +0).\n\t\tTCF\tDANZIG\n\nDDV\t\tEXTEND\n\t\tINDEX\tADDRWD\t\t# MOVE DIVIDEND INTO BUF.\n\t\tDCA\t0\n\t\tTCF\tBDDV +4\n\nBDDV\t\tEXTEND\t\t\t# MOVE DIVISOR INTO MPAC SAVING MPAC, THE\n\t\tINDEX\tADDRWD\t\t# DIVIDEND, IN BUF.\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n\t+4\tDXCH\tBUF\n \t\tCAF\tZERO\t\t# DIVIDE ROUTINES IN BANK 0.\n\t\tTS\tFBANK\n\t\tTCF\tDDV/BDDV\n\nSETPD\t\tCA\tADDRWD\t\t# MUST SET TO WORK AREA, OR EBANK TROUBLE.\n\t\tTS\tPUSHLOC\n\t\tTCF\tNOIBNKSW\t# NO FBANK SWITCH REQUIRED.\n\nTSLC\t\tCAF\tZERO\t\t# SHIFTING ROUTINES LOCATED IN BANK 00.\n\t\tTS\tFBANK\n\t\tTCF\tTSLC2\n\nGSHIFT\t\tCAF\tLOW7\t\t# USED AS MASK AT GENSHIFT. THIS PROCESSES\n\t\tTS\tFBANK\t\t# ANY SHIFT INSTRUCTION (EXCEPT TSLC) WITH\n\t\tTCF\tGENSHIFT\t# AN ADDRESS (ROUTINES IN BANK 0).\n\n# Page 1150\n# THE FOLLOWING IS THE PROLOGUE TO V/SC.  IF THE PRESENT MODE IS VECTOR, IT SAVES THE SCALAR AT X IN BUF\n# AND CALLS THE V/SC ROUTINE IN BANK 0.  IF THE PRESENT MODE IS SCALAR, IT MOVES THE VECTOR AT X INTO MPAC, SAVING\n# THE SCALAR IN MPAC IN BUF BEFORE CALLING THE V/SC ROUTINE IN BANK 0.\n\nV/SC\t\tCCS\tMODE\n\t\tTCF\tDV/SC\t\t# MOVE VECTOR INTO MPAC.\n\t\tTCF\tDV/SC\n\nVV/SC\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\nV/SC1\t\tDXCH\tBUF\t\t# IN BOTH CASES, VECTOR IS NOW IN MPAC AND\n\t\tCAF\tZERO\t\t# SCALAR IN BUF.\n\t\tTS\tFBANK\n\t\tTCF\tV/SC2\n\nDV/SC\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t2\n\t\tDXCH\tMPAC +3\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t4\n\t\tDXCH\tMPAC +5\n\n\t\tCS\tONE\t\t# CHANGE MODE TO VECTOR.\n\t\tTS\tMODE\n\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n\t\tTCF\tV/SC1\n\n# Page 1151\n# SIGN AND COMPLEMENT INSTRUCTIONS.\n\nSIGN\t\tINDEX \tADDRWD\t\t# CALL COMP INSTRUCTION IF WORD AT X IS\n\t\tCCS\t0\t\t# NEGATIVE NON-ZERO.\n\t\tTCF\tDANZIG\n\t\tTCF\t+2\n\t\tTCF\tCOMP\t\t# DO THE COMPLEMENT.\n\n\t\tINDEX\tADDRWD\nCCSL\t\tCCS\t1\n\t\tTCF\tDANZIG\n\t\tTCF\tDANZIG\n\t\tTCF\tCOMP\n\t\tTCF\tDANZIG\nCOMP\t\tEXTEND\t\t\t# COMPLEMENT DP MPAC IN EVERY CASE.\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\n\t\tCCS\tMODE\t\t# EITHER COMPLEMENT MPAC +3 OR THE REST OF\n\t\tTCF\tDCOMP\t\t# THE VECTOR ACCUMULATOR.\n\t\tTCF\tDCOMP\n\n\t\tEXTEND\t\t\t# VECTOR COMPLEMENT.\n\t\tDCS\tMPAC +3\n\t\tDXCH\tMPAC +3\n\t\tEXTEND\n\t\tDCS\tMPAC +5\n\t\tDXCH\tMPAC +5\n\t\tTCF\tDANZIG\n\nDCOMP\t\tCS\tMPAC +2\n\t\tTS\tMPAC +2\n\t\tTCF\tDANZIG\n\n# Page 1152\n# THE FOLLOWING SHORT SHIFT CODES REQUIRE NO ADDRESS WORD:\n#\t1.\tSR1 TO SR4\tSCALAR SHIFT RIGHT.\n#\t2.\tSR1R TO SR4R\tSCALAR SHIFT RIGHT AND ROUND.\n#\t3.\tSL1 TO SL4\tSCALAR SHIFT LEFT.\n#\t4.\tSL1R TO SL4R\tSCALAR SHIFT LEFT AND ROUND.\n#\t5.\tVSR1 TO VSR8\tVECTOR SHIFT RIGHT (ALWAYS ROUNDS).\n#\t6.\tVSL1 TO VSL8\tVECTOR SHIFT LEFT (NEVER ROUNDS).\n# THE FOLLOWING CODES REQUIRE AN ADDRESS WHICH MAY BE INDEXED:*\n#\t1.\tSR\t\tSCALAR SHIFT RIGHT.\n#\t2.\tSRR\t\tSCALAR SHIFT RIGHT AND ROUND.\n#\t3.\tSL\t\tSCALAR SHIFT LEFT.\n#\t4.\tSLR\t\tSCALAR SHIFT LEFT AND ROUND.\n#\t5.\tVSR\t\tVECTOR SHIFT RIGHT.\n#\t6.\tVSL\t\tVECTOR SHIFT LEFT.\n# * IF THE ADDRESS IS INDEXED, AND THE INDEX MODIFICATION RESULTS IN A NEGATIVE SHIFT COUNT, A SHIFT OF THE\n# ABSOLUTE VALUE OF THE COUNT IS DONE IN THE OPPOSITE DIRECTION.\n\n\t\tBANK\t00\n\n\t\tCOUNT\t00/INTER\n\nSHORTT\t\tCAF\tSIX\t\t# SCALAR SHORT SHIFTS COME HERE.  THE SHIFT\n\t\tMASK\tCYR\t\t# COUNT-1 IS NOW IN BITS 2-3 OF CYR.  THE\n\t\tTS\tSR\t\t# ROUNDING BIT IS IN BIT1 AT THIS POINT.\n\n\t\tCCS\tCYR\t\t# SEE IF RIGHT OR LEFT SHIFT DESIRED.\n\t\tTCF\tTSSL\t\t# SHIFT LEFT.\n\nSRDDV\t\tDEC\t20\t\t# MPTEMP SETTING FOR SR BEFORE DDV.\n\nTSSR\t\tINDEX\tSR\t\t# GET SHIFTING BIT.\n\t\tCAF\tBIT14\n\t\tTS\tMPTEMP\n\n\t\tCCS\tCYR\t\t# SEE IF A ROUND IS DESIRED.\nRIGHTR\t\tTC\tMPACSRND\t# YES -- SHIFT RIGHT AND ROUND.\n\t\tTCF\tNEWMODE\t\t# SET MODE TO DP (C(A) = 0).\nMPACSHR\t\tCA\tMPTEMP\t\t# DO A TRIPLE PRECISION SHIFT RIGHT.\n\t\tEXTEND\n\t\tMP\tMPAC +2\n\t+3\tTS\tMPAC +2\t\t# (EXIT FROM SQRT AND ABVAL).\n\t\tCA\tMPTEMP\n\t\tEXTEND\n# Page 1153\n\t\tMP\tMPAC\t\t# SHIFT MAJOR PART INTO A,L AND PLACE IN\n\t\tDXCH\tMPAC\t\t# MPAC,+1.\n\t\tCA\tMPTEMP\n\t\tEXTEND\n\t\tMP\tL\t\t# ORIGINAL C(MPAC +1).\n\t\tDAS\tMPAC +1\t\t# GUARANTEED NO OVERFLOW.\n\t\tTCF\tDANZIG\n\n# MPAC SHIFT RIGHT AND ROUND SUBROUTINES\n\nMPACSRND\tCA\tMPAC +2\t\t# WE HAVE TO DO ALL THREE MULTIPLIES SINCE\n\t\tEXTEND\t\t\t# MPAC +1 AND MPAC +2 MIGHT HAVE SIGN\n\t\tMP\tMPTEMP\t\t# DISAGREEMENT WITH A SHIFT RIGHT OF L.\n\t\tXCH\tMPAC +1\n\t\tEXTEND\n\t\tMP\tMPTEMP\n\t\tXCH\tMPAC +1\t\t# TRIAL MINOR PART.\n\t\tAD\tL\n\nVSHR2\t\tDOUBLE\t\t\t# (FINISH VECTOR COMPONENT SHIFT RIGHT\n\t\tTS\tMPAC +2\t\t# AND ROUND.)\n\t\tTCF\t+2\n\t\tADS\tMPAC +1\t\t# GUARANTEED NO OVERFLOW.\n\n\t\tCAF\tZERO\n\t\tTS\tMPAC +2\n\t\tXCH\tMPAC\t\t# SETTING TO ZERO SO FOLLOWING DAS WORKS.\n\t\tEXTEND\n\t\tMP\tMPTEMP\n\t\tDAS\tMPAC\t\t# AGAIN NO OVERFLOW.\n\t\tTC\tQ\n\nVSHRRND\t\tCA\tMPTEMP\t\t# ENTRY TO SHIFT RIGHT AND ROUND MPAC WHEN\n\t\tEXTEND\t\t\t# MPAC CONTAINS A VECTOR COMPONENT.\n\t\tMP\tMPAC +1\n\t\tTS\tMPAC +1\n\t\tXCH\tL\n\t\tTCF\tVSHR2\t\t# GO ADD ONE IF NECESSARY AND FINISH.\n\n# Page 1154\n# ROUTINE FOR SHORT SCALAR SHIFT LEFT (AND MAYBE ROUND).\n\nTSSL\t\tCA\tSR\t\t# GET SHIFT COUNT FOR SR.\n\t+1\tTS\tMPTEMP\n\n\t+2\tEXTEND\t\t\t# ENTRY HERE FROM SL FOR SCALARS.\n \t\tDCA\tMPAC +1\t\t# SHIFTING LEFT ONE PLACE AT A TIME IS\n\t\tDAS\tMPAC +1\t\t# FASTER THAN DOING THE WHOLE SHIFT WITH\n\t\tAD\tMPAC\t\t# MULTIPLIES ASSUMING THAT FREQUENCY OF\n\t\tAD\tMPAC\t\t# SHIFT COUNTS GOES DOWN RAPIDLY AS A\n\t\tTS\tMPAC\t\t# FUNCTION OF THEIR MAGNITUDE.\n\t\tTCF \t+2\n\t\tTS\tOVFIND\t\t# OVERFLOW.  (LEAVES OVERFLOW-CORRECTED\n\t\t\t\t\t# RESULT ANYWAY).\n\t\tCCS\tMPTEMP\t\t# LOOP ON DECREMENTED SHIFT COUNT.\n\t\tTCF\tTSSL +1\n\n\t\tCCS\tCYR\t\t# SEE IF ROUND WANTED.\nROUND\t\tTC\tROUNDSUB\t# YES -- ROUND AND EXIT.\n\t\tTCF\tDANZIG\t\t# SL LEAVES A ZERO IN CYR FOR NO ROUND.\n\t\tTCF\tDANZIG\t\t# NO -- EXIT IMMEDIATELY\n\n# Page 1155\n# VECTOR SHIFTING ROUTINES.\n\nSHORTV\t\tCAF\tLOW3\t\t# SAVE 3 BIT SHIFT COUNT -- 1 WITHOUT\n\t\tMASK\tCYR\t\t# EDITING CYR.\n\t\tTS\tMPTEMP\n\t\tCCS\tCYR\t\t# SEE IF LEFT OR RIGHT SHIFT.\n\t\tTCF\tVSSL\t\t# VECTOR SHIFT LEFT.\nOCT176\t\tOCT\t176\t\t# USED IN PROCESSED SHIFTS WITH - COUNT.\n\nVSSR\t\tINDEX\tMPTEMP\t\t# (ENTRY FROM SR).  PICK UP SHIFTING BIT.\n\t\tCAF\tBIT14\t\t# MPTEMP CONTAINS THE SHIFT COUNT - 1.\n\t\tTS\tMPTEMP\n\t\tTC\tVSHRRND\t\t# SHIFT X COMPONENT.\n\n\t\tDXCH\tMPAC\t\t# SWAP X AND Y COMPONENTS.\n\t\tDXCH\tMPAC +3\n\t\tDXCH\tMPAC\n\t\tTC\tVSHRRND\t\t# SHIFT Y COMPONENT.\n\n\t\tDXCH\tMPAC\t\t# SWAP Y AND Z COMPONENTS.\n\t\tDXCH\tMPAC +5\n\t\tDXCH\tMPAC\n\t\tTC\tVSHRRND\t\t# SHIFT Z COMPONENT.\n\n\t\tTCF\tVROTATEX\t# RESTORE COMPONENTS TO PROPER PLACES.\n\n# Page 1156\n# VECTOR SHIFT LEFT -- DONE ONE PLACE AT A TIME.\n\n\t-1\tTS\tMPTEMP\t\t# SHIFTING LOOP.\n\nVSSL\t\tEXTEND\n\t\tDCA\tMPAC\n\t\tDAS\tMPAC\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLOW\n\n\t\tEXTEND\n\t\tDCA\tMPAC +3\n\t\tDAS\tMPAC +3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWY\n\n\t\tEXTEND\n\t\tDCA\tMPAC +5\n\t\tDAS\tMPAC +5\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWZ\n\n\t\tCCS\tMPTEMP\t\t# LOOP ON DECREMENTED SHIFT COUNTER.\n\t\tTCF\tVSSL -1\n\t\tTCF\tDANZIG\t\t# EXIT.\n\n# Page 1157\n# TSLC -- TRIPLE SHIFT LEFT AND COUNT.  SHIFTS MPAC LEFT UNTIL GREATER THAN .5 IN MAGNITUDE, LEAVING\n# THE COMPLEMENT OF THE NUMBER OF SHIFTS REQUIRED IN X.\n\nTSLC2\t\tTS\tMPTEMP\t\t# START BY ZEROING SHIFT COUNT (IN A NOW).\n\t\tTC\tBRANCH\t\t# EXIT WITH NO SHIFTING IF ARGUMENT ZERO.\n\t\tTCF\t+2\n\t\tTCF\tENDTSLC\t\t# STORES ZERO SHIFT COUNT IN THIS CASE.\n\n\t\tTC\tTPAGREE\t\t# MAY CAUSE UPSHIFT OF ONE EXTRA PLACE.\n\n\t\tCA\tMPAC\t\t# BEGIN NORMALIZATION LOOP.\n\t\tTCF\tTSLCTEST\n\nTSLCLOOP\tINCR\tMPTEMP\t\t# INCREMENT SHIFT COUNTER.\n\t\tEXTEND\n\t\tDCA\tMPAC +1\n\t\tDAS\tMPAC +1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\nTSLCTEST\tDOUBLE\t\t\t# SEE IF (ANOTHER) SHIFT IS REQUIRED\n\t\tOVSK\n\t\tTCF\tTSLCLOOP\t# YES -- INCREMENT COUNT AND SHIFT AGAIN.\n\nENDTSLC\t\tCS\tMPTEMP\n\t\tTCF\tSTORE1\t\t# STORE SHIFT COUNT AND RETURN TO DANZIG.\n\n# Page 1158\n# THE FOLLOWING ROUTINE PROCESSES THE GENERAL SHIFT INSTRUCTIONS SR, SRR, SL, AND SLR.\n# THE GIVEN ADDRESS IS DECODED AS FOLLOWS:\n#\tBITS 1-7\tSHIFT COUNT (SUBADDRESS) LESS THAN 125 DECIMAL.\n#\tBIT 8\t\tPSEUDO SIGN BIT (DETECTS CHANGE IN SIGN IN INDEXED SHIFTS).\n#\tBIT 9\t\t0 FOR LEFT SHIFT, AND 1 FOR RIGHT SHIFT.\n#\tBIT 10\t\t1 FOR TERMINAL ROUND ON SCALAR SHIFTS, 0 OTHERWISE\n#\tBITS 11-13\t0.\n#\tBIT 14\t\t1.\n#\tBIT 15\t\t0.\n# THE ABOVE ENCODING IS DONE BY THE YUL SYSTEM.\n\nGENSHIFT\tMASK\tADDRWD\t\t# GET SHIFT COUNT, TESTING FOR ZERO.\n\t\tCCS\tA\t\t# (ARRIVES WITH C(A) = LOW7).\n\t\tTCF\tGENSHFT2\t# IF NON-ZERO, PROCEED WITH DECREMENTED CT\n\n\t\tCAF\tBIT10\t\t# ZERO SHIFT COUNT.  NO SHIFTS NEEDED BUT\n\t\tMASK\tADDRWD\t\t# WE MIGHT HAVE TO ROUND MPAC ON SLR AND\n\t\tCCS\tA\t\t# SRR (SCALAR ONLY).\n\t\tTC\tROUNDSUB\n\t\tTCF\tDANZIG\n\nGENSHFT2\tTS\tMPTEMP\t\t# DECREMENTED SHIFT COUNT TO MPTEMP.\n\t\tCAF\tBIT8\t\t# TEST MEANING OF LOW SEVEN BIT COUNT IN\n\t\tEXTEND\t\t\t# MPTEMP NOW.\n\t\tMP\tADDRWD\n\t\tMASK\tLOW2\t\t# JUMPS ON SHIFT DIRECTION (BIT8) AND\n\t\tINDEX\tA\n\t\tTCF\t+1\t\t# ORIGINAL SHIFT DIRECTION (BIT 9)\n\t\tTCF\tRIGHT-\t\t# NEGATIVE SHIFT COUNT FOR SL OR SLR.\n\t\tTCF\tLEFT\t\t# SL OR SLR.\n\t\tTCF\tLEFT-\t\t# NEGATIVE SHIFT COUNT WITH SR OR SRR.\n\n# Page 1159\n# GENERAL SHIFT RIGHT\n\nRIGHT\t\tCCS\tMODE\t\t# SET IF VECTOR OR SCALAR.\n\t\tTCF\tGENSCR\n\t\tTCF\tGENSCR\n\n\t\tCA\tMPTEMP\t\t# SEE IF SHIFT COUNT LESS THAN 14D.\nVRIGHT2\t\tAD\tNEG12\n\t\tEXTEND\n\t\tBZMF\tVSSR\t\t# IF SO, BRANCH AND SHIFT IMMEDIATELY.\n\n\t\tAD\tNEGONE\t\t# IF NOT, REDUCE MPTEMP BY A TOTAL OF 14.\n\t\tTS\tMPTEMP\t\t# AND DO A SHIFT RIGHT AND ROUND BY 14.\n\t\tCAF\tZERO\t\t# THE ROUND AT THIS STAGE MAY INTRODUCE A\n\t\tTS\tL\t\t# ONE BIT ERROR IN A SHIFT RIGHT 15D.\n\t\tXCH\tMPAC\n\t\tXCH\tMPAC +1\n\t\tTC\tSETROUND\t# X COMPONENT NOW SHIFTED, SO MAKE UP THE\n\t\tDAS\tMPAC\t\t# ROUNDING QUANTITY (0 IN A AND 0 OR +-1\n\t\t\t\t\t# IN L).\n\t\tXCH\tMPAC +3\t\t# REPEAT THE ABOVE PROCESS FOR Y AND Z/\n\t\tXCH\tMPAC +4\n\t\tTC\tSETROUND\n\t\tDAS\tMPAC +3\t\t# NO OVERFLOW ON THESE ADDS.\n\n\t\tXCH\tMPAC +5\n\t\tXCH\tMPAC +6\n\t\tTC\tSETROUND\n\t\tDAS\tMPAC +5\n\n\t\tCCS\tMPTEMP\t\t# SEE IF DONE, DOING FINAL DECREMENT.\n\t\tTS\tMPTEMP\n\t\tTCF\tVRIGHT2\nBIASLO\t\tDEC\t.2974 B-1\t# SQRT CONSTANT\n\n\t\tTCF\tDANZIG\n\nSETROUND\tDOUBLE\t\t\t# MAKES UP ROUNDING QUANTITY FROM ARRIVING\n\t\tTS\tMPAC +2\t\t# C(A).  L IS ZERO INITIALLY.\n\t\tCAF\tZERO\n\t\tXCH\tL\n\t\tTC\tQ\t\t# RETURN AND DO THE DAS, RESETTING L TO 0.\n\n# Page 1160\n# PROCESS SR AND SRR FOR SCALARS.\n\nGENSCR\t\tCA\tMPTEMP\t\t# SEE IF THE ORIGINAL SHIFT COUNT WAS LESS\n\t+1\tAD\tNEG12\t\t# THAN 14D.\n\t\tEXTEND\n\t\tBZMF\tDOSSHFT\t\t# DO THE SHIFT IMMEDIATELY IF SO.\n\n\t+4\tAD\tNEGONE\t\t# IF NOT, DECREMENT SHIFT COUNT BY 14D AND\n\t\tTS\tMPTEMP\t\t# SHIFT MPAC RIGHT 14 PLACES.\n\t\tCAF\tZERO\n\t\tXCH\tMPAC\n\t\tXCH\tMPAC +1\n\t\tTS\tMPAC +2\n\t\tCCS\tMPTEMP\t\t# SEE IF FINISHED, DO FINAL DECREMENT.\n\t\tTS\tMPTEMP\n\t\tTC\tGENSCR +1\nSLOPEHI\t\tDEC\t.5884\t\t# SQRT CONSTANT.\n\t\tCAF\tBIT10\t\t# FINISHED WITH SHIFT.  SEE IF ROUND\n\t\tMASK\tADDRWD\t\t# WANTED.\n\t\tCCS\tA\n\t\tTC\tROUNDSUB\n\t\tTCF\tDANZIG\t\t# DO SO AND/OR EXIT.\n\nDOSSHFT\t\tINDEX\tMPTEMP\t\t# PICK UP SHIFTING BIT.\n\t\tCAF\tBIT14\n\t\tTS\tMPTEMP\n\t\tCAF\tBIT10\t\t# SEE IF TERMINAL ROUND DESIRED.\n\t\tMASK\tADDRWD\n\t\tCCS\tA\n\t\tTCF\tRIGHTR\t\t# YES.\n\t\tTCF\tMPACSHR\t\t# JUST SHIFT RIGHT.\n\n# Page 1161\n# PROCESS THE RIGHT- (SL(R) WITH A NEGATIVE COUNT), LEFT-, AND LEFT OPTIONS.\n\nRIGHT-\t\tCS\tMPTEMP\t\t# GET ABSOLUTE VALUE - 1 OF SHIFT COUNT\n\t\tAD\tOCT176\t\t# UNDERSTANDING THAT BIT8 (PSEUDO-SIGN)\n\t\tTS\tMPTEMP\t\t# WAS 1 INITIALLY.\n\t\tTCF\tRIGHT\t\t# DO NORMAL SHIFT RIGHT.\n\nLEFT-\t\tCS\tOCT176\t\t# SAME PROLOGUE TO LEFT FOR INDEXED RIGHT\n\t\tAD\tMPTEMP\t\t# SHIFT WHOSE NET SHIFT COUNT IS NEGATIVE\n\t\tCOM\n\t\tTS\tMPTEMP\n\nLEFT\t\tCCS\tMODE\t\t# SINCE LEFT SHIFTING IS DONE ONE PLACE AT\n\t\tTCF\tGENSCL\t\t# A TIME, NO COMPARISON WITH 14 NEED BE\n\t\tTCF\tGENSCL\t\t# DONE.  FOR SCALARS, SEE IF TERMINAL ROUND\n\t\tTCF\tVSSL\t\t# DESIRED.  FOR VECTORS, SHIFT IMMEDIATELY.\n\nGENSCL\t\tCS\tADDRWD\t\t# PUT ROUNDING BIT (BIT 10 OF ADDRWD) INTO\n\t\tEXTEND\t\t\t# BIT 15 OF CYR WHERE THE ROUNDING BIT OF\n\t\tMP\tBIT6\t\t# A SHORT SHIFT LEFT WOULD BE\n\t\tTS\tCYR\n\t\tTCF\tTSSL +2\t\t# DO THE SHIFT.\n\n# Page 1162\n# SCALAR DIVISION INSTRUCTIONS, DDV AND BDDV, ARE EXECUTED HERE.  AT THIS POINT, THE DIVIDEND IS IN MPAC\n# AND THE DIVISOR IS IN BUF.\n\nDDV/BDDV\tCS\tONE\t\t# INITIALIZATION\n\t\tTS\tDVSIGN\t\t# +-1 FOR POSITIVE QUOTIENT -- -0 FOR NEG.\n\t\tTS\tDVNORMCT\t# DIVIDEND NORMALIZATION COUNT.\n\t\tTS\tMAXDVSW\t\t# NEAR-ONE DIVIDE FLAG.\n\n\t\tCCS\tBUF\t\t# FORCE BUF POSITIVE WITH THE MAJOR PART\n\t\tTCF\tBUFPOS\t\t# NON-ZERO.\n\t\tTCF\t+2\n\t\tTCF\tBUFNEG\n\nBUFZERO\t\tTS\tMPAC +2\t\t# ZERO THIS.\n\t\tTC\tTPAGREE\t\t# FORCE SIGN AGREEMENT BEFORE OVERFLOW\n\n\t\tCCS\tMPAC\t\t# TEST TO SEE IF MPAC NON-ZERO.  (TOO BIG)\n\t\tTCF\tOVF+\t\t# MAJOR PART OF DIVIDEND IS POSITIVE NON-0\n\t\tTCF\t+2\n\t\tTCF\tOVF+ -1\t\t# MAJOR PART OF DIVIDEND IS NEG. NON-ZERO\n\n\t\tXCH\tBUF +1\t\t# SHIFT DIVIDEND AND DIVISOR LEFT 14\n\t\tXCH\tBUF\n\t\tXCH\tMPAC +1\n\t\tXCH\tMPAC\n\t\tCCS\tBUF\t\t# TRY AGAIN ON FORMER MINOR PART.\n\t\tTCF\tBUF+\n\t\tTCF\t+2\t\t# OVERFLOW ON ZERO DIVISOR.\n\t\tTCF\tBUF-\n\n\t\tCS\tMPAC\t\t# SIGN OF MPAC DETERMINES SIGN OF RESULT.\nSGNDVOVF\tEXTEND\n\t\tBZMF\t+2\n\t\tINCR\tDVSIGN\t\t# NEGMAX IN MPAC PERHAPS.\nDVOVF\t\tCAF\tPOSMAX\t\t# ON DIVISION OVERFLOW OF ANY SORT, SET\n\t\tTS\tMPAC\t\t# SET DP MPAC TO +-POSMAX.\n\t\tTC\tFINALDV +3\n\t\tCAF\tONE\t\t# SET OVERFLOW INDICATOR AND EXIT.\n\t\tTS\tOVFIND\n\t\tTC\tDANZIG\n\n\t-1\tINCR\tDVSIGN\nOVF+\t\tCS\tBUF +1\t\t# LOAD LOWER ORDER PART OF DIVISOR.\n\t\tTCF\tSGNDVOVF\t# GET SIGN OF RESULT.\n\nBUF-\t\tEXTEND\t\t\t# IF BUF IS NEGATIVE, COMPLEMENT IT AND\n\t\tDCS\tBUF\t\t# MAINTAIN DVSIGN FOR FINAL QUOTIENT SIGN.\n\t\tDXCH\tBUF\n\t\tINCR\tDVSIGN\t\t# NOW -0.\n\n# Page 1163\nBUF+\t\tCCS\tMPAC\t\t# FORCE MPAC POSITIVE, CHECKING FOR ZERO\n\t\tTCF\tMPAC+\t\t# DIVIDEND IN THE PROCESS.\n\t\tTCF\t+2\n\t\tTCF\tMPAC-\n\t\tCCS\tMPAC +1\n\t\tTCF\tMPAC+\n\t\tTCF\tDANZIG\t\t# EXIT IMMEDIATELY ON ZERO DIVIDEND.\n\t\tTCF\tMPAC-\n\t\tTCF\tDANZIG\n\nMPAC-\t\tEXTEND\t\t\t# FORCE MPAC POSITIVE AS BUF IN BUF-.\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\t\tINCR\tDVSIGN\t\t# NOW +1 OR -0.\n\n# Page 1164\nMPAC+\t\tCS\tMPAC\t\t# CHECK FOR DIVISION OVERFLOW.  IF THE\n\t\tAD\tNEGONE\t\t# MAJOR PART OF THE DIVIDEND IS LESS THAN\n\t\tAD\tBUF\t\t# THE MAJOR PART OF THE DIVISOR BY AT\n\t\tCCS\tA\t\t# LEAST TWO, WE CAN PROCEED IMMEDIATELY\n\t\tTCF\tDVNORM\t\t# WITHOUT NORMALIZATION PRODUCING A DVMAX.\n-1/2+2\t\tOCT\t60001\t\t# USED IN SQRTSUB.\n\n\t\tTCF\t+1\t\t# IF THE ABOVE DOES NOT HOLD, FORCE SIGN\n\t\tCAF\tHALF\t\t# AGREEMENT IN NUMERATOR AND DENOMINATOR\n\t\tDOUBLE\t\t\t# TO FACILITATE OVERFLOW AND NEAR-ONE\n\t\tAD\tMPAC +1\t\t# CHECKING.\n\t\tTS\tMPAC +1\n\t\tCAF\tZERO\n\t\tAD\tPOSMAX\n\t\tADS\tMPAC\n\n\t\tCAF\tHALF\t\t# SAME FOR BUF.\n\t\tDOUBLE\n\t\tAD\tBUF +1\n\t\tTS\tBUF +1\n\t\tCAF\tZERO\n\t\tAD\tPOSMAX\n\t\tADS\tBUF\n\n\t\tCS\tMPAC\t\t# CHECK MAGNITUDE OF SIGN-CORRECTED\n\t\tAD\tBUF\t\t# OPERANDS.\n\t\tCCS\tA\n\t\tTCF\tDVNORM\t\t# DIVIDE OK -- WILL NOT BECOME MAXOV CASE.\nLBUF2\t\tADRES \tBUF2\n\t\tTCF\tDVOVF\t\t# DIVISOR NOT LESS THAN DIVIDEND -- OVF.\n\n\t\tTS\tMAXDVSW\t\t# IF THE MAJOR PARTS OF THE DIVIDEND AND\n\t\tCS\tMPAC +1\t\t# DIVISOR ARE EQUAL, A SPECIAL APPROXIMA-\n\t\tAD\tBUF +1\t\t# TION IS USED (PROVIDED THE DIVISION IS\n\t\tEXTEND\t\t\t# POSSIBLE, OF COURSE).\n\t\tBZMF\tDVOVF\n\t\tTCF\tDVNORM\t\t# IF NO OVERFLOW.\n\n# Page 1165\nBUFNORM\t\tEXTEND\t\t\t# ADD -1 TO AUGMENT SHIFT COUNT AND SHIFT\n\t\tAUG\tDVNORMCT\t# LEFT ONE PLACE.\n\t\tEXTEND\n\t\tDCA\tBUF\n\t\tDAS\tBUF\n\nDVNORM\t\tCA\tBUF\t\t# SEE IF DIVISOR NORMALIZED YET.\n\t\tDOUBLE\n\t\tOVSK\n\t\tTCF\tBUFNORM\t\t# NO -- SHIFT LEFT ONE AND TRY AGAIN.\n\n\t\tDXCH\tMPAC\t\t# CALL DIVIDEND NORMALIZATION SEQUENCE\n\t\tINDEX\tDVNORMCT\t# PRIOR TO DOING THE DIVIDE.\n\t\tTC\tMAXTEST\n\n\t\tTS\tMPAC +2\t\t# RETURNS WITH DIVISION DONE AND C(A) = 0.\n\t\tTCF\tDANZIG\n\nBUFPOS\t\tCCS\tA\n\t\tTCF\tBUF+\t\t# TO BUF+ IF BUF IS GREATER THAN +1.\n\n\t\tCS\tBUF +1\t\t# IF BUF IS +1, FORCING SIGN AGREEMENT\n\t\tEXTEND\t\t\t# MAY CAUSE BUF TO BECOME ZERO.\n\t\tBZMF\tBUF+\t\t# BRANCH IF SIGNS AGREE.\n\n\t\tCA\tHALF\t\t# SIGNS DISAGREE.  FORCE AGREEMENT.\n\t+6\tDOUBLE\n\t\tADS\tBUF +1\n\t\tCA\tZERO\n\t\tTS\tBUF\n\t\tTCF\tBUFZERO\n\nBUFNEG\t\tCCS\tA\n\t\tTCF\tBUF-\t\t# TO BUF- IF BUF IS LESS THAN -1.\n\n\t\tCA\tBUF +1\t\t# IF BUF IS -1, FORCING SIGN AGREEMENT\n\t\tEXTEND\t\t\t# MAY CAUSE BUF TO BECOME ZERO.\n\t\tBZMF\tBUF-\t\t# BRANCH IF SIGNS AGREE.\n\n\t\tCS\tHALF\t\t# SIGNS DISAGREE.  FORCE AGREEMENT.\n\t\tTCF\tBUFPOS +6\n\n# Page 1166\n# THE FOLLOWING ARE PROLOGUES TO SHIFT THE DIVIDEND ARRIVING IN A AND L BEFORE THE DIVIDE.\n\n\t-21D\tLXCH\tSR\t\t# SPECIAL PROLOGUE FOR UNIT WHEN THE\n\t\tEXTEND\t\t\t# LENGTH OF THE ARGUMENT WAS NOT LESS THAN\n\t\tMP\tHALF\t\t# .5.  IN THIS CASE, EACH COMPONENT MUST BE\n\t\tXCH\tL\t\t# SHIFTED RIGHT ONE TO PRODUCE A HALF-UNIT\n\t\tAD\tSR\t\t# VECTOR.\n\t\tXCH\tL\n\t\tTCF\tGENDDV +1\t# WITH DP DIVIDEND IN A,L.\n\n\t\tDDOUBL\t\t\t# PROLOGUE WHICH NORMALIZES THE DIVIDEND\n\t\tDDOUBL\t\t\t# WHEN IT IS KNOWN THAT NO DIVISION\n\t\tDDOUBL\t\t\t# OVERFLOW WILL OCCUR.\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDXCH\tMPAC\n\nMAXTEST\t\tCCS\tMAXDVSW\t\t# 0 IF MAJORS MIGHT BE =, -1 OTHERWISE.\nBIASHI\t\tDEC\t.4192 B-1\t# SQRT CONSTANTS.\n\n\t\tTCF\tMAXDV\t\t# CHECK TO SEE IF THEY ARE NOW EQUAL.\n\n# Page 1167\n# THE FOLLOWING IS A GENERAL PURPOSE DOUBLE PRECISION DIVISION ROUTINE.  IT DIVIDES MPAC BY BUF AND LEAVES\n# THE RESULT IN MPAC.  THE FOLLOWING CONDITIONS MUST BE SATISFIED:\n#\n#\t1.\tTHE DIVISOR (BUF) MUST BE POSITIVE AND NOT LESS THAN .5.\n#\n#\t2.\tTHE DIVIDEND (MPAC) MUST BE POSITIVE WITH THE MAJOR PART OF MPAC STRICTLY LESS THAN THAT OF BUF\n#\t\t(A SPECIAL APPROXIMATION, MAXDV, IS USED WHEN THE MAJOR PARTS ARE EQUAL).\n#\n# UNDERSTANDING THAT A/B = Q + S(R/B) WHERE S = 2(-14) AND Q AND R ARE QUOTIENT AND REMAINDER, RESPEC-\n# TIVELY, THE FOLLOWING APPROXIMATION IS OBTAINED BY MULTIPLYING ABOVE AND BELOW BY C - SD AND NEGLECTING TERMS OF\n# ORDER S-SQUARED (POSSIBLY INTRODUCING ERROR INTO THE LOW TWO BITS OF THE RESULT).  SIGN AGREEMENT IS UNNECESSARY.\n#\n#\tA + SB .      (R - CD)                                             A + SB\n#\t------ = Q + S(------) WHERE Q AND R ARE QUOTIENT AND REMAINDER OF ------ RESPECTIVELY.\n#\tC + SD        (  C   }                                                C\n\nGENDDV\t\tDXCH\tMPAC\t\t# WE NEED A AND B ONLY FOR FIRST DV.\n\t+1\tEXTEND\t\t\t# (SPECIAL UNIT PROLOGUE ENTERS HERE).\n\t\tDV\tBUF\t\t# A NOW CONTAINS Q AND L, R.\n\t\tDXCH\tMPAC\n\n\t\tCS\tMPAC\t\t# FORM DIVIDEND FOR MINOR PART OF RESULT.\n\t\tEXTEND\n\t\tMP\tBUF +1\n\t\tAD\tMPAC +1\t\t# OVERFLOW AT THIS POINT IS POSITIVE SINCE\n\t\tOVSK\t\t\t# R IS POSITIVE IN EVERY CASE.\n\t\tTCF\t+5\n\n\t\tEXTEND\t\t\t# OVERFLOW CAN BE REMOVED BY SUBTRACTING C\n\t\tSU\tBUF\t\t# (BUF) ONCE SINCE R IS ALWAYS LESS THAN C\n\t\tINCR\tMPAC\t\t# IN THIS CASE.  INCR COMPENSATES SUBTRACT.\n\t\tTCF\t+DOWN\t\t# (SINCE C(A) IS STILL POSITIVE).\n\n\t+5\tEXTEND\t\t\t# C(A) CAN BE MADE LESS THAN C IN MAGNI-\n\t\tBZMF\t-UP\t\t# TUDE BY DIMINISHING IT BY C (SINCE C IS\n\t\t\t\t\t# NOT LESS THAN .5) UNLESS C(A) = 0.\n\n# Page 1168\n+DOWN\t\tEXTEND\n\t\tSU\tBUF\t\t# IF POSITIVE, REDUCE ONLY IF NECESSARY\n\t\tEXTEND\t\t\t# SINCE THE COMPENSATING INCR MIGHT CAUSE\n\t\tBZF\t+3\t\t# OVERFLOW.\n\t\tEXTEND\t\t\t# DON'T SUBTRACT UNLESS RESULT IS POSITIVE\n\t\tBZMF\tENDMAXDV\t# OR ZERO.\n\n\t+3\tINCR\tMPAC\t\t# KEEP SUBTRACT HERE AND COMPENSATE.\n\t\tTCF\tFINALDV\n\n-UP\t\tEXTEND\t\t\t# IF ZERO, SET MINOR PART OF RESULT TO\n\t\tBZF\tFINALDV +3\t# ZERO.\n\n\t\tEXTEND\t\t\t# IF NEGATIVE, ADD C TO A, SUBTRACTING ONE\n\t\tDIM\tMPAC\t\t# TO COMPENSATE.  DIM IS OK HERE SINCE THE\nENDMAXDV\tAD\tBUF\t\t# MAJOR PART NEVER GOES NEGATIVE.\n\n# Page 1169\nFINALDV\t\tZL\t\t\t# DO DV TO OBTAIN MINOR PART OF RESULT.\n\t\tEXTEND\n\t\tDV\tBUF\n\t+3\tTS\tMPAC +1\n\n\t\tCCS\tDVSIGN\t\t# LEAVE RESULT POSITIVE UNLESS C(DVSIGN).\n\t\tTC\tQ\n\t\tTC\tQ\n\t\tTC\tQ\n\n\t\tEXTEND\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\t\tCAF\tZERO\t\t# SO WE ALWAYS RETURN WITH C(A) = 0.\n\t\tTC\tQ\n\n# Page 1170\n# IF THE MAJOR PARTS OF THE DIVISOR AND DIVIDEND ARE EQUAL, BUT THE MINOR PARTS ARE SUCH THAT THE\n# DIVIDEND IS STRICTLY LESS THAN THE DIVISOR IN MAGNITUDE, THE FOLLOWING APPROXIMATION IS USED.  THE ASSUMPTIONS\n# ARE THE SAME AS THE GENERAL ROUTINE WITH THE ADDITION THAT SIGN AGREEMENT IS NECESSARY (B, C, & D POSITIVE).\n#\n#\tC + SB .          (C + B - D)\n#\t------ = 37777 + S(---------)\n#\tC + SD            (    C    )\n#\n# THE DIVISION MAY BE PERFORMED IMMEDIATELY SINCE B IS STRICTLY LESS THAN D AND C IS NOT LESS THAN .5.\n\nMAXDV\t\tCS\tMPAC\t\t# SEE IF MAXDV CASE STILL HOLDS AFTER\n\t\tAD\tBUF\t\t# NORMALIZATION.\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tGENDDV\t\t# MPAC NOW LESS THAN BUFF -- DIVIDE AS USUAL.\n\n\t+2\tCAF\tPOSMAX\t\t# SET MAJOR PART OF RESULT.\n\t\tTS\tMPAC\n\n\t\tCS\tBUF +1\t\t# FORM DIVIDEND OF MINOR PART OF RESULT.\n\t\tAD\tMPAC +1\n\t\tTCF\tENDMAXDV\t# GO ADD C AND DO DIVIDE, ATTACHING SIGN\n\t\t\t\t\t# BEFORE EXITING.\n\n# Page 1171\n# VECTOR DIVIDED BY SCALAR, V/SC, IS EXECUTED HERE.  THE VECTOR IS NOW IN MPAC WITH SCALAR IN BUF.\n\nV/SC2\t\tCS\tONE\t\t# INITIALIZE DIVIDEND NORMALIZATION COUNT\n\t\tTS\tDVNORMCT\t# AND DIVISION SIGN REGISTER.\n\t\tTS\tVBUF +5\n\n\t\tTC\tVECAGREE\t# FORCE SIGN AGREEMENT IN VECTOR\n\n\t\tDXCH\tBUF\n\t\tTC\tALSIGNAG\t# SIGN AGREE BUF\n\t\tDXCH\tBUF\n\t\tCCS\tBUF\t\t# FORCE DIVISOR POSITIVE WITH MAJOR PART\n\t\tTCF\t/BUF+\t\t# NON-ZERO (IF POSSIBLE).\n\t\tTCF\t+2\n\t\tTCF\t/BUF-\n\n\t\tXCH\tBUF +1\t\t# SHIFT VECTOR AND SCALAR LEFT 14.\n\t\tXCH\tBUF\n\t\tXCH\tMPAC +1\n\t\tXCH\tMPAC\n\t\tEXTEND\t\t\t# CHECK FOR OVERFLOW IN EACH CASE.\n\t\tBZF\t+2\n\t\tTCF\tDVOVF\n\n\t\tXCH\tMPAC +4\n\t\tXCH\tMPAC +3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tDVOVF\n\n\t\tXCH\tMPAC +6\n\t\tXCH\tMPAC +5\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tDVOVF\n\n\t\tCCS\tBUF\n\t\tTCF\t/BUF+\n\t\tTCF\tDVOVF\t\t# ZERO DIVISOR - OVERFLOW.\n\t\tTCF\t/BUF-\n\t\tTCF\tDVOVF\n\n/BUF-\t\tEXTEND\t\t\t# ON NEGATIVE, COMPLEMENT BUF AND MAINTAIN\n\t\tDCS\tBUF\t\t# DVSIGN IN VBUF +5.\n\t\tDXCH\tBUF\n\t\tINCR\tVBUF +5\n\n# Page 1172\n/BUF+\t\tEXTEND\n\t\tDCA\tBUF\t\t# LEAVE ABS(ORIG DIVISOR) IN BUF2\n\t\tDXCH\tBUF2\t\t# FOR OVERFLOW TESTING\n\t\tTCF\t/NORM\t\t# NORMALIZE DIVISOR IN BUF.\n\n/NORM2\t\tEXTEND\t\t\t# IF LESS THAN .5, AUGMENT DVNORMCT AND\n\t\tAUG\tDVNORMCT\t# DOUBLE DIVISOR.\n\t\tEXTEND\n\t\tDCA\tBUF\n\t\tDAS\tBUF\n\n/NORM\t\tCA\tBUF\t\t# SEE IF DIVISOR NORMALIZED.\n\t\tDOUBLE\n\t\tOVSK\n\t\tTCF\t/NORM2\t\t# DOUBLE AND TRY AGAIN IF NOT.\n\n\t\tTC\tV/SCDV\t\t# DO X COMPONENT DIVIDE.\n\t\tDXCH\tMPAC +3\t\t# SUPPLY ARGUMENTS IN USUAL SEQUENCE.\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC +3\n\n\t\tTC\tV/SCDV\t\t# Y COMPONENT.\n\t\tDXCH\tMPAC +5\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC +5\n\n\t\tTC\tV/SCDV\t\t# Z COMPONENT.\n\t\tTCF\tVROTATEX\t# GO RE-ARRANGE COMPONENTS BEFORE EXIT.\n\n# Page 1173\n# SUBROUTINE USED BY V/SC TO DIVIDE VECTOR COMPONENT IN MPAC,+1 BY THE SCALAR GIVEN IN BUF.\n\nV/SCDV\t\tCA\tVBUF +5\t\t# REFLECTS SIGN OF SCALAR.\n\t\tTS\tDVSIGN\n\n\t\tCCS\tMPAC\t\t# FORCE MPAC POSITIVE, EXITING ON ZERO.\n\t\tTCF\t/MPAC+\n\t\tTCF\t+2\n\t\tTCF\t/MPAC-\n\n\t\tCCS\tMPAC +1\n\t\tTCF\t/MPAC+\n\t\tTC\tQ\n\t\tTCF\t/MPAC-\n\t\tTC\tQ\n\n/MPAC-\t\tEXTEND\t\t\t# USUAL COMPLEMENTING AND SETTING OF SIGN.\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\t\tINCR\tDVSIGN\n\n/MPAC+\t\tCS\tONE\t\t# INITIALIZE NEAR-ONE SWITCH.\n\t\tTS\tMAXDVSW\n\n\t\tCS\tMPAC\t\t# CHECK POSSIBLE OVERFLOW.\n\t\tAD\tBUF2\t\t# UNNORMALIZED INPUT DIVISOR.\n\t\tCCS\tA\n\t\tTCF\tDDVCALL\t\t# NOT NEAR-ONE\n\t\tTCF\t+2\t\t# +0 IS JUST POSSIBLE\n\t\tTCF\tDVOVF\t\t# NO HOPE\n\t\tTS\tMAXDVSW\t\t# SIGNAL POSSIBLE NEAR-ONE CASE\n\t\tCS\tMPAC +1\t\t# SEE IF DIVISION CAN BE DONE\n\t\tAD\tBUF2 +1\n\t\tEXTEND\n\t\tBZMF\tDVOVF\n\nDDVCALL\t\tDXCH\tMPAC\t\t# CALL PRE-DIVIDE NORMALIZATION.\n\t\tINDEX\tDVNORMCT\n\t\tTCF\tMAXTEST\n\n# Page 1174\nSLOPELO\t\tDEC\t.8324\n\nVECAGREE\tXCH\tQ\t\t# SAVE Q IN A\n\t\tDXCH\tMPAC\n\t\tTC\tALSIGNAG\t# SIGNAGREE MPAC\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC +3\n\t\tTC\tALSIGNAG\t# SIGN AGREE MPAC +3\n\t\tDXCH\tMPAC +3\n\t\tDXCH\tMPAC +5\n\t\tTC\tALSIGNAG\t# SIGNAGREE MPAC +5\n\t\tDXCH\tMPAC +5\n\t\tTC\tA\n\n# Page 1175\n# THE FOLLOWING ROUTINE EXECUTES THE UNIT INSTRUCTION, WHICH TAKES THE UNIT OF THE VECTOR IN MPAC.\n\nUNIT\t\tTC\tVECAGREE\t# FORCE SIGN AGREEMENT IN VECTOR\n\t\tTC\tMPACVBUF\t# SAVE ARGUMENT IN VBUF\n\t\tCAF\tZERO\t\t# MUST SENSE OVERFLOW IN FOLLOWING DOT.\n\t\tXCH\tOVFIND\n\t\tTS\tTEM1\n\t\tTC\tVSQSUB\t\t# DOT MPAC WITH ITSELF.\n\t\tCA\tTEM1\n\t\tXCH\tOVFIND\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tDVOVF\n\t\tEXTEND\n\t\tDCA\tMPAC\t\t# LEAVE THE SQUARE OF THE LENGTH OF THE\n\t\tINDEX\tFIXLOC\t\t# ARGUMENT IN LVSQUARE.\n\t\tDXCH\tLVSQUARE\n\n\t\tTC\tSQRTSUB\t\t# GO TAKE THE NORMALIZED SQUARE ROOT.\n\n\t\tCCS\tMPAC\t\t# CHECK FOR UNIT OVERFLOW.\n\t\tTCF\t+5\t\t# MPAC IS NOT LESS THAN .5 UNLESS\n\t\tTS\tL\n\t\tINDEX\tFIXLOC\n\t\tDXCH\tLV\n\t\tTCF\tDVOVF\t\t# INPUT TO SQRTSUB WAS 0.\n\n\t\tCS\tFOURTEEN\t# SEE IF THE INPUT WAS SO SMALL THAT THE\n\t\tAD\tMPTEMP\t\t# FIRST TWO REGISTERS OF THE SQUARE WERE 0\n\t\tCCS\tA\n\t\tCOM\t\t\t# IF SO, SAVE THE NEGATIVE OF THE SHIFT\n\t\tTCF\tSMALL\t\t# COUNT -15D.\n\n\t\tTCF\tLARGE\t\t# (THIS IS USUALLY THE CASE.)\n\n\t\tCS\tTHIRTEEN\t# IF THE SHIFT COUNT WAS EXACTLY 14, SET\n\t\tTS\tMPTEMP\t\t# THE PRE-DIVIDE NORM COUNT TO -13D.\n\n\t\tCA\tMPAC\t\t# SHIFT THE LENGTH RIGHT 14 BEFORE STORING\nSMALL2\t\tTS\tL\t\t# (SMALL EXITS TO THIS POINT).\n\t\tCAF\tZERO\n\t\tTCF\tLARGE2\t\t# GO TO STORE LENGTH AND PROCEED.\n\nLARGE\t\tCCS\tMPTEMP\t\t# MOST ALL CASES COME HERE.\n\t\tTCF\tLARGE3\t\t# SEE IF NO NORMALIZATION WAS REQUIRED BY\n\t\tCS\tSRDDV\t\t# SQRT, AND IF SO, SET UP FOR A SHIFT\n\t\tTS\tMPTEMP\t\t# RIGHT 1 BEFORE DIVIDING TO PRODUCE\n\t\tEXTEND\t\t\t# THE DESIRED HALF UNIT VECTOR.\n\t\tDCA\tMPAC\n# Page 1176\n\t\tTCF\tLARGE2\n\n# Page 1177\nLARGE3\t\tCOM\t\t\t# LEAVE NEGATIVE OF SHIFT COUNT-1 FOR\n\t\tTS\tMPTEMP\t\t# PREDIVIDE LEFT SHIFT.\n\n\t\tCOM\t\t\t# PICK UP REQUIRED SHIFTING BIT TO UNNORM-\n\t\tINDEX\tA\t\t# ALIZE THE SQRT RESULT.\n\t\tCAF\tBIT14\n\t\tTS\tBUF\n\t\tEXTEND\n\t\tMP\tMPAC +1\n\t\tXCH\tBUF\n\t\tEXTEND\t\t\t# (UNNORMALIZE THE SQRT FOR LV).\n\t\tMP\tMPAC\n\t\tXCH\tL\n\t\tAD\tBUF\n\t\tXCH\tL\n\nLARGE2\t\tINDEX\tFIXLOC\n\t\tDXCH\tLV\t\t# LENGTH NOW STORED IN WORK AREA.\n\n\t\tCS\tONE\n\t\tTS\tMAXDVSW\t\t# NO MAXDV CASES IN UNIT.\n\n\t\tDXCH\tVBUF\t\t# PREPARE X COMPONENT FOR DIVIDE, SETTING\n\t\tDXCH\tMPAC\t\t# LENGTH OF VECTOR AS DIVISOR IN BUF.\n\t\tDXCH\tBUF\n\t\tTC\tUNITDV\n\n\t\tDXCH\tVBUF +2\t\t# DO Y AND Z IN USUAL FASHION SO WE CAN\n\t\tDXCH\tMPAC\t\t# EXIT THROUGH VROTATEX.\n\t\tDXCH\tMPAC +3\n\t\tTC\tUNITDV\n\n\t\tDXCH\tVBUF +4\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC +5\n\t\tTC\tUNITDV\n\t\tTCF\tVROTATEX\t# AND EXIT.\n\n# Page 1178\n# IF THE LENGTH OF THE ARGUMENT VECTOR WAS LESS THAN 2(-28), EACH COMPONENT MUST BE SHIFTED LEFT AT LEAST\n# 14 PLACES BEFORE THE DIVIDE, NOTE THAT IN THIS CASE, THE MAJOR PART OF EACH COMPONENT IS ZERO.\n\nSMALL\t\tTS\tMPTEMP\t\t# NEGATIVE OF PRE-DIVIDE SHIFT COUNT.\n\n\t\tCAF\tZERO\t\t# SHIFT EACH COMPONENT LEFT 14.\n\t\tXCH\tVBUF +1\n\t\tXCH\tVBUF\n\t\tXCH\tVBUF +3\n\t\tXCH\tVBUF +2\n\t\tXCH\tVBUF +5\n\t\tXCH\tVBUF +4\n\n\t\tCS\tMPTEMP\n\t\tINDEX\tA\n\t\tCAF\tBIT14\n\t\tEXTEND\n\t\tMP\tMPAC\n\t\tTCF\tSMALL2\n\nTHIRTEEN\t=\tOCT15\nFOURTEEN\t=\tOCT16\nOCT16\t\t=\tR1D1\n\n# Page 1179\n# THE FOLLOWING ROUTINE SETS UP THE CALL TO THE DIVIDE ROUTINES.\n\nUNITDV\t\tCCS\tMPAC\t\t# FORCE MPAC POSITIVE IF POSSIBLE, SETTING\n\t\tTCF\tUMPAC+\t\t# DVSIGN ACCORDING TO THE SIGN OF MPAC\n\t\tTCF\t+2\t\t# SINCE THE DIVISOR IS ALWAYS POSITIVE\n\t\tTCF\tUMPAC-\t\t# HERE.\n\n\t\tCCS\tMPAC +1\n\t\tTCF\tUMPAC+\n\t\tTC\tQ\t\t# EXIT IMMEDIATELY ON ZERO.\n\t\tTCF\tUMPAC-\n\t\tTC\tQ\n\nUMPAC-\t\tCS\tZERO\t\t# IF NEGATIVE, SET -0 IN DVSIGN FOR FINAL\n\t\tTS\tDVSIGN\t\t# COMPLEMENT.\n\t\tEXTEND\n\t\tDCS\tMPAC\t\t# PICK UP ABSOLUTE VALUE OF ARG AND JUMP.\n\t\tINDEX\tMPTEMP\n\t\tTCF\tMAXTEST -1\n\nUMPAC+\t\tTS\tDVSIGN\t\t# SET DVSIGN FOR POSITIVE QUOTIENT.\n\t\tDXCH\tMPAC\n\t\tINDEX\tMPTEMP\n\t\tTCF\tMAXTEST -1\n\n# Page 1180\n# MISCELLANEOUS UNARY OPERATIONS.\n\nDSQ\t\tTC\tDSQSUB\t\t# SQUARE THE DP CONTENTS OF MPAC.\n\t\tTCF\tDANZIG\n\nABVALABS\tCCS\tMODE\t\t# ABVAL OR ABS INSTRUCTION.\n\t\tTCF\tABS\t\t# DO ABS ON SCALAR.\n\t\tTCF\tABS\n\nABVAL\t\tTC\tVSQSUB\t\t# DOT MPAC WITH ITSELF.\n\t\tLXCH\tMODE\t\t# MODE IS NOW DP (L ZERO AFTER DAS).\n\n\t\tEXTEND\t\t\t# STORE SQUARE OF LENGTH IN WORK AREA.\n\t\tDCA\tMPAC\n\t\tINDEX\tFIXLOC\n\t\tDXCH\tLVSQUARE\n\n# Page 1181\n# PROGRAM DESCRIPTION -- SUBROUTINE SQRT\n#\n# FUNCTIONAL DESCRIPTION -- DOUBLE PRECISION SQUARE ROOT ROUTINE\n#\tTHIS PROGRAM TAKES THE SQUARE ROOT OF THE 27 OR 28 MOST SIGNIFICANT BITS IN THE TRIPLE PRECISION SET OF\n#\tNUMBERS -- MPAC, MPAC+1, AND MPAC+2.  THE ROOT IS RETURNED DOUBLE PRECISION IN MPAC AND MPAC+1.\n#\n# WARNING -- THIS SUBROUTINE USES A TRIPLE PRECISION INPUT.  THE PROGRAMMER MUST ASSURE THE CONTENTS OF MPAC+2\n#\tESPECIALLY IF THE CONTENTS OF MPAC IS SMALL OR ZERO.  FOR DETAILS SEE STG MEMO NO.949.\n#\n# CALLING SEQUENCE -- IN INTERPRETIVE MODE, I.E., FOLLOWING `TC INTPRET', `SQRT', NO ADDRESS IS ALLOWED.\n#\tINPUT SCALING: THE BINARY POINT IS ASSUMED TO THE RIGHT OF BIT 15.  THE ANSWER IS RETURNED WITH THE SAME SCALING.\n#\n# SUBROUTINES -- GENSCR, MPACSHR, SQRTSUB, ABORT\n#\n# ABORT EXIT MODE -- ABORTS ON NEGATIVE INPUT -1.2X10E-4 (77775 OCTAL) OR LESS.\n#\tDISPLAYS ERROR CODE 1302\n#\t\tTC\tABORT\n#\t\tOCT\t1302\n#\n# DEBRIS -- LOCATIONS BUF, MPTEMP, ADDRWD ARE USED\n\nSQRT\t\tTC\tSQRTSUB\t\t# TAKE THE SQUARE ROOT OF MPAC.\n\t\tCCS\tMPTEMP\t\t# RETURNED NORMALIZED SQUARE ROOT.  SEE IF\n\t\tTCF\t+2\t\t# ANY UN-NORMALIZATION REQUIRED AND EXIT\n\t\tTCF\tDANZIG\t\t# IF NOT.\n\n\t\tAD\tNEG12\t\t# A RIGHT SHIFT OF MORE THAN 13 COULD BE\n\t\tEXTEND\t\t\t# REQUIRED IF INPUT WAS ZERO IN MPAC,+1.\n\t\tBZMF\tSQRTSHFT\t# GOES HERE IN MOST CASES.\n\t\tZL\t\t\t# IF A LONG SHIFT IS REQUIRED, GO TO\n\t\tLXCH\tADDRWD\t\t# GENERAL RIGHT SHIFT ROUTINES.\n\t\tTCF\tGENSCR +4\t# ADDRWD WAS ZERO TO PREVENT ROUND.\n\nSQRTSHFT\tINDEX\tMPTEMP\t\t# SELECT SHIFTING BIT AND EXIT THROUGH\n\t\tCAF\tBIT15\t\t# SHIFT ROUTINES.\n\t\tTS\tMPTEMP\n\t\tCAF\tZERO\t\t# TO ZERO MPAC +2 IN THE PROCESS.\n\t\tTCF\tMPACSHR +3\n\nABS\t\tTC\tBRANCH\t\t# TEST SIGN OF MPAC AND COMPLEMENT IF\n\t\tTCF\tDANZIG\n\t\tTCF\tDANZIG\n\t\tTCF\tCOMP\n\n# Page 1182\nVDEF\t\tCS\tFOUR\t\t# VECTOR DEFINE -- ESSENTIALLY TREATS\n\t\tADS\tPUSHLOC\t\t# SCALAR IN MPAC AS X COMPONENT, PUSHES UP\n\t\tEXTEND\t\t\t# FOR Y AND THEN AGAIN FOR Z.\n\t\tINDEX\tA\n\t\tDCA\t2\n\t\tDXCH\tMPAC +3\n\t\tEXTEND\n\t\tINDEX\tPUSHLOC\n\t\tDCA\t0\n\t\tDXCH\tMPAC +5\n\t\tTCF\tVMODE\t\t# MODE IS NON VECTOR.\n\nVSQ\t\tTC\tVSQSUB\t\t# DOT MPAC WITH ITSELF.\n\t\tTCF\tDMODE\t\t# MODE IS NOW DP.\n\nPUSH\t\tEXTEND\t\t\t# PUSH DOWN MPAC LEAVING IT LOADED.\n\t\tDCA\tMPAC\n\t\tINDEX\tPUSHLOC\t\t# PUSH DOWN FIRST TWO REGISTERS IN EACH\n\t\tDXCH\t0\n\n\t\tINDEX\tMODE\t\t# INCREMENT PUSHDOWN POINTER.\n\t\tCAF\tNO.WDS\n\t\tADS\tPUSHLOC\n\n\t\tCCS\tMODE\n\t\tTCF\tTPUSH\t\t# PUSH DOWN MPAC +2.\n\t\tTCF\tDANZIG\t\t# DONE FOR DP.\n\n\t\tEXTEND\t\t\t# ON VECTOR, PUSH DOWN Y AND Z COMPONENTS.\n\t\tDCA\tMPAC +3\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 -4\n\t\tEXTEND\n\t\tDCA\tMPAC +5\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 -2\n\t\tTCF\tDANZIG\n\nTPUSH\t\tCA\tMPAC +2\n\t\tTCF\tENDTPUSH +2\n\nRVQ\t\tINDEX\tFIXLOC\t\t# RVQ -- RETURN IVA QPRET.\n\t\tCA\tQPRET\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO +4\t\t# (ASSUME QPRET POINTS TO FIXED ONLY.)\n\n# Page 1183\n# THE FOLLOWING SUBROUTINES ARE USED IN SQUARING MPAC, IN BOTH THE SCALAR AND VECTOR SENSE.  THEY ARE\n# SPECIAL CASES OF DMPSUB AND DOTSUB, PUT IN TO SAVE SOME TIME.\n\nDSQSUB\t\tCA\tMPAC +1\t\t# SQUARES THE SCALAR CONTENTS OF MPAC.\n\t\tEXTEND\n\t\tSQUARE\n\t\tTS\tMPAC +2\n\t\tCAF\tZERO\t\t# FORM 2(CROSS TERM).\n\t\tXCH\tMPAC +1\n\t\tEXTEND\n\t\tMP\tMPAC\n\t\tDDOUBL\t\t\t# AND MAYBE OVEFLOW.\n\t\tDAS\tMPAC +1\t\t# AND SET A TO NET OVERFLOW.\n\t\tXCH\tMPAC\n\t\tEXTEND\n\t\tSQUARE\n\t\tDAS\tMPAC\n\t\tTC\tQ\n\nVSQSUB\t\tEXTEND\t\t\t# DOTS THE VECTOR IN MPAC WITH ITSELF.\n\t\tQXCH\tDOTRET\n\t\tTC\tDSQSUB\t\t# SQUARE THE X COMPONENT.\n\t\tDXCH\tMPAC +3\n\t\tDXCH\tMPAC\n\t\tDXCH\tBUF\t\t# SO WE CAN END IN DOTSUB.\n\t\tCA\tMPAC +2\n\t\tTS\tBUF +2\n\n\t\tTC\tDSQSUB\t\t# SQUARE Y COMPONENT.\n\t\tDXCH\tMPAC +1\n\t\tDAS\tBUF +1\n\t\tAD\tMPAC\n\t\tAD\tBUF\n\t\tTS\tBUF\n\t\tTCF\t+2\n\t\tTS\tOVFIND\t\t# IF OVERFLOW.\n\n\t\tDXCH\tMPAC +5\n\t\tDXCH\tMPAC\n\t\tTC\tDSQSUB\t\t# SQUARE Z COMPONENT.\n\t\tTCF\tENDDOT\t\t# END AS IN DOTSUB.\n\n# Page 1184\n# DOUBLE PRECISION SQUARE ROOT ROUTINE.  TAKE THE SQUARE ROOT OF THE TRIPLE PRECISION (MPAC +2 USED ONLY\n# IN NORMALIZATION) CONTENTS OF MPAC AND LEAVE THE NORMALIZED RESULT IN MPAC (C(MPAC) GREATER THAN OR EQUAL TO\n# .5).  THE RIGHT SHIFT COUNT (TC UNNORMALIZE) IS LEFT IN MPTEMP.\n\nSQRTSUB\t\tCAF\tZERO\t\t# START BY ZEROING RIGHT SHIFT COUNT.\n\t\tTS\tMPTEMP\n\n\t\tCCS\tMPAC\t\t# CHECK FOR POSITIVE ARGUMENT, SHIFTING\n\t\tTCF\tSMPAC+\t\t# FIRST SIGNIFICANT MPAC REGISTER INTO\n\t\tTCF\t+2\t\t# MPAC ITSELF.\n\t\tTCF\tSQRTNEG\t\t# SEE IF MAG OF ARGUMENT LESS THAN 10(-4).\n\n\t\tXCH\tMPAC +2\t\t# MPAC IS ZERO -- SHIFT LEFT 14.\n\t\tXCH\tMPAC +1\n\t\tTS\tMPAC\n\t\tCAF\tSEVEN\t\t# AUGMENT RIGHT SHIFT COUNTER.\n\t\tTS\tMPTEMP\n\n\t\tCCS\tMPAC\t\t# SEE IF MPAC NOW PNZ.\n\t\tTCF\tSMPAC+\n\t\tTCF\t+2\n\t\tTCF\tZEROANS\t\t# NEGATIVE BUT LESS THAN 10(-4) IN MAG.\n\n\t\tXCH\tMPAC +1\t\t# XERO -- SHIFT LEFT 14 AGAIN.\n\t\tTS\tMPAC\n\t\tCAF\tSEVEN\t\t# AUGMENT RIGHT SHIFT COUNTER.\n\t\tADS\tMPTEMP\n\n\t\tCCS\tMPAC\n\t\tTCF\tSMPAC+\n\t\tTC\tQ\t\t# SQRT(0) = 0.\n\t\tTCF\tZEROANS\n\t\tTCF\tFIXROOT\t\t# DO NOT LEAVE SQRTSUB WITH -0 IN MPAC.\n\nSQRTNEG\t\tCCS\tA\t\t# ARGUMENT IS NEGATIVE, BUT SEE IF SIGN-\n\t\tTCF\tSQRTABRT\t# CORRECTED ARGUMENT IS LESS THAN 10(-4)\n\n\t\tCCS\tMPAC +1\t\t# IN MAGNITUDE.  IF SO, CALL ANSWER ZERO.\nZEROANS\t\tCAF\tZERO\t\t# FORCE ANSWER TO ZERO HERE.\n\t\tTCF\tFIXROOT\n\t\tTCF\tSQRTABRT\n\t\tTCF\tFIXROOT\n\nSQRTABRT\tTC\tPOODOO\n\t\tOCT\t1302\n\n# Page 1185\nSMPAC+\t\tAD\t-1/2+2\t\t# SEE IF ARGUMENT GREATER THAN OR EQUAL TO\n\t\tEXTEND\t\t\t# .5.\n\t\tBZMF\tSRTEST\t\t# IF SO, SEE IF LESS THAN .25.\n\n\t\tDXCH\tMPAC\t\t# WE WILL TAKE THE SQUARE ROOT OF MPAC/2.\n\t\tLXCH\tSR\t\t# SHIFT RIGHT 1 AND GO TO THE SQRT ROUTINE\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tDXCH\tMPAC\n\t\tXCH\tSR\n\t\tADS\tMPAC +1\t\t# GUARANTEED NO OVERFLOW.\n\nARGHI\t\tCAF\tSLOPEHI\t\t# ARGUMENT BETWEEN .25 AND .5, GET A\n\t\tEXTEND\t\t\t# LINEAR APPROXIMATION FOR THIS RANGE.\n\t\tMP\tMPAC\n\t\tAD\tBIASHI\t\t# X0/2 = (MPAC/2)(SLOPHI) + BIASHI/2.\n\n\t+4\tTS\tBUF\t\t# X0/2 (ARGLO ENTERS HERE).\n\t\tCA\tMPAC\t\t# SINGLE-PRECISION THROUGHOUT.\n\t\tZL\n\t\tEXTEND\n\t\tDV\tBUF\t\t# (MPAC/2)/(X0/2)\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tADS\tBUF\t\t# X1 = X0/2 + .5(MPAX/2)/(X0/2)\n\n\t\tEXTEND\n\t\tMP\tHALF\t\t# FORM UP X1/2.\n\t\tDXCH\tMPAC\t\t# SAVE AND BRING OUT ARGUMENT.\n\t\tEXTEND\t\t\t# TAKE DP QUOTIENT WITH X1.\n\t\tDV\tBUF\n\t\tTS\tBUF +1\t\t# SAVE MAJOR PART OF QUOTIENT.\n\t\tCAF\tZERO\t\t# FORM MINOR PART OF QUOTIENT USING\n\t\tXCH\tL\t\t# (REMAINDER,0).\n\t\tEXTEND\n\t\tDV\tBUF\n\t\tTS\tL\t\t# IN PREPARATION FOR DAS.\n\t\tCA\tBUF +1\n\t\tDAS\tMPAC\t\t# X2 = X1/2 + (MPAC/2)X1\n\n\t\tEXTEND\t\t\t# OVERFLOWS IF ARG. NEAR POSMAX.\n\t\tBZF\tTCQBNK00\n\t\tCAF\tPOSMAX\nFIXROOT\t\tTS\tMPAC\n\t\tTS\tMPAC +1\nTCQBNK00\tTC\tQ\t\t# RETURN TO CALLER TO UNNORMALIZE, ETC.\n\n# Page 1186\nSRTEST\t\tAD\tQUARTER\t\t# ARGUMENT WAS LESS THAN .5, SEE IF LESS\n\t\tEXTEND\t\t\t# THAN .25.\n\t\tBZMF\tSQRTNORM\t# IF SO, BEGIN NORMALIZATION.\n\n\t\tDXCH\tMPAC\t\t# IF BETWEEN .5 AND .25, SHIFT RIGHT 1 AND\n\t\tLXCH\tSR\t\t# START AT ARGLO.\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tDXCH\tMPAC\n\t\tXCH\tSR\n\t\tADS\tMPAC +1\t\t# NO OVERFLOW.\n\nARGLO\t\tCAF\tSLOPELO\t\t# (NORMALIZED) ARGUMENT BETWEEN .125 AND\n\t\tEXTEND\t\t\t# .25\n\t\tMP\tMPAC\n\t\tAD\tBIASLO\n\t\tTCF\tARGHI +4\t# BEGIN SQUARE ROOT.\n\nSQRTNM2\t\tEXTEND\t\t\t# SHIFT LEFT 2 AND INCREMENT RIGHT SHIFT\n\t\tDCA\tMPAC +1\t\t# COUNT (FOR TERMINAL UNNORMALIZATION).\n\t\tDAS\tMPAC +1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\t\t# (NO OVERFLOW).\n\nSQRTNORM\tINCR\tMPTEMP\t\t# FIRST TIME THROUGH, JUST SHIFT LEFT 1\n\t\tEXTEND\t\t\t# (PUTS IN EFFECTIVE RIGHT SHIFT SINCE\n\t\tDCA\tMPAC +1\t\t# WE WANT MPAC/2).\n\t\tDAS\tMPAC +1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\t\t# (AGAIN NO OVERFLOW).\n\t\tDOUBLE\n\t\tTS\tCYL\n\nNORMTEST\tCCS\tCYL\t\t# SEE IF ARGUMENT NOW NORMALIZED AT\n\t\tCCS\tCYL\t\t# GREATER THAN .125.\n\t\tTCF\tSQRTNM2\t\t# NO -- SHIFT LEFT 2 MORE AND TRY AGAIN.\n\t\tTCF\tARGHI\t\t# YES -- NOW BETWEEN .5 AND .25.\n\t\tTCF\tARGLO\t\t# ARGUMENT NOW BETWEEN .25 AND .125.\n\n# Page 1187\n# TRIGONOMETRIC FUNCTION PACKAGE.\n#\tTHE FOLLOWING TRIGONOMETRIC FUNCTIONS ARE AVAILABLE AS INTERPRETIVE OPERATIONS:\n#\t1.\tSIN\t\tCOMPUTES (1/2)SINE(2 PI MPAC).\n#\t2.\tCOS\t\tCOMPUTES (1/2)COSINE(2 PI MPAC).\n#\t3.\tASIN\t\tCOMPUTES (1/2PI)ARCSINE(2 MPAC).\n#\t4.\tACOS\t\tCOMPUTES (1/2PI)ARCCOSINE(2 MPAC).\n#\n# SIN-ASIN AND COS-ACOS ARE MUTUALLY INVERSE, I.E., SIN(ASIN(X)) = X.\n\nCOSINE\t\tTC\tBRANCH\t\t# FINDS COSINE USING THE IDENTITY\n\t\tTCF\t+3\t\t# COS(X) = SIN(PI/2 - ABS(X)).\n\t\tTCF\tPRESINE\n\t\tTCF\tPRESINE\n\n\t+3\tEXTEND\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\nPRESINE\t\tCAF\tQUARTER\t\t# PI/2 SCALED.\n\t\tADS\tMPAC\n\nSINE\t\tDXCH\tMPAC\t\t# DOUBLE ARGUMENT.\n\t\tDDOUBL\n\t\tOVSK\t\t\t# SEE IF OVERFLOW PRESENT.\n\t\tTCF\t+3\t\t# IF NOT, ARGUMENT OK AS IS.\n\n\t\tEXTEND\t\t\t# IF SO, WE LOST (OR GAINED) PI, SO\n\t\tDCOM\t\t\t# COMPLEMENT MPAC USING THE IDENTITY\n\t\t\t\t\t# SIN(X-(+)PI) = SIN(-X).\n\t+3\tDXCH\tMPAC\n\t\tCA\tMPAC\t\t# SEE IF ARGUMENT GREATER THAN .5 IN\n\t\tDOUBLE\t\t\t# MAGNITUDE.  IF SO, REDUCE IT TO LESS THAN\n\t\tTS\tL\t\t# .5 (+-PI/2 SCALED) AS FOLLOWS:\n\t\tTCF\tSN1\n\n\t\tINDEX\tA\t\t# IF POSITIVE, FORM PI - X, IF NEGATIVE\n\t\tCAF\tNEG1/2 +1\t# USE -PI -X.\n\t\tDOUBLE\n\t\tEXTEND\n\t\tSU\tMPAC\t\t# GUARANTEED NO OVERFLOW.\n\t\tTS\tMPAC\n\t\tCS\tMPAC +1\n\t\tTS\tMPAC +1\n\n# Page 1188\nSN1\t\tEXTEND\t\t\t# SET UP TO EVALUATE HASTINGS POLYNOMIAL\n\t\tDCA\tMPAC\n\t\tDXCH\tBUF2\n\t\tTC\tDSQSUB\t\t# SQUARE MPAC.\n\n\t\tTC\tPOLY\t\t# EVALUATE FOURTH ORDER POLYNOMIAL.\n\t\tDEC\t3\n\t\t2DEC\t+.3926990796\n\t\t2DEC\t-.6459637111\n\t\t2DEC\t+.318758717\n\t\t2DEC\t-.074780249\n\t\t2DEC\t+.009694988\n\n\t\tCAF\tLBUF2\t\t# MULTIPLY BY ARGUMENT AND SHIFT LEFT 2.\n\t\tTC\tDMPSUB -1\n\n\t\tEXTEND\n\t\tDCA\tMPAC +1\n\t\tDAS\tMPAC +1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\t\t# NEITHER SHIFT OVERFLOWS.\n\t\tEXTEND\n\t\tDCA\tMPAC +1\n\t\tDAS\tMPAC +1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\n\t\tTCF\tDANZIG\n\n# Page 1189\n# ARCSIN/ARCCOS ROUTINE.\n\nARCSIN\t\tCAF\tLASINEX\t\t# COMPUTE ARCSIN BY USING THE IDENTITY\n\t\tTCF\t+2\t\t# ARCSIN(X) = PI/2 - ARCCOS(X).\n\nARCCOS\t\tCAF\tLDANZIG\t\t# (EXITS IMMEDIATELY).\n\t\tTS\tESCAPE\n\t\tTC\tBRANCH\t\t# TEST SIGN OF INPUT.\n\t\tTCF\tACOSST\t\t# START IMMEDIATELY IF POSITIVE.\n\t\tTCF\tACOSZERO\t# ARCCOS(0) = PI/2 = .25.\n\t\tEXTEND\t\t\t# IF NEGATIVE, USE THE IDENTITY\n\t\tDCS\tMPAC\t\t# ARCCOS(X) = PI - ARCCOS(-X), FORCING\n\t\tDXCH\tMPAC\t\t# ARGUMENT POSITIVE.\n\t\tCAF\tTCSUBTR\t\t# SET EXIT TO DO ABOVE BEFROE\n\t\tXCH\tESCAPE\t\t# ARCSIN/ARCCOS CONSIDERATIONS.\n\t\tTS\tESCAPE2\n\nACOSST\t\tCS\tHALF\t\t# TEST MAGNITUDE OF INPUT.\n\t\tAD\tMPAC\n\t\tCCS\tA\n\t\tTCF\tACOSOVF\t\t# THIS IS PROBABLY AN OVERFLOW CASE.\n\nLASINEX\t\tTCF\tASINEX\n\n\t\tTCF\tACOSST2\t\t# NO OVERFLOW -- PROCEED.\n\n\t\tCCS\tMPAC +1\t\t# IF MAJOR PART IS .5, CALL ANSWER 0\n\t\tCAF\tZERO\t\t# UNLESS MINOR PART NEGATIVE.\n\t\tTCF\tACOS=0\n\n\t\tTCF\tACOSST2\n\nACOS=0\t\tTS\tMPAC +1\n\t\tTS\tMPAC\n\t\tTC\tESCAPE\n\nACOSST2\t\tEXTEND\t\t\t# NOW THAT ARGUMENT IS IN PROPER RANGE,\n\t\tDCS\tMPAC\t\t# BEGIN COMPUTATION.  USE HASTINGS\n\t\tAD\tHALF\t\t# APPROXIMATION ARCCOS(X) = SQRT(1-X)P(X)\n\t\tDXCH\tMPAC\t\t# IN A SCALED VERSION WHERE P(X) IS A\n\t\tDXCH\tBUF2\t\t# SEVENTH ORDER POLYNOMIAL.\n\n\t\tTC\tSQRTSUB\t\t# RETURNS WITH NORMALIZED SQUARE ROOT.\n\n\t\tCCS\tMPTEMP\t\t# SEE IF UN-NORMALIZATION REQUIRED.\n\t\tTCF\tACOSSHR\n\n# Page 1190\nACOS3\t\tDXCH\tMPAC\t\t# SET UP FOR POLYNOMIAL EVALUATION.\n\t\tDXCH\tBUF2\n\t\tDXCH\tMPAC\n\n\t\tTC\tPOLY\n\t\tDEC\t6\n\t\t2DEC\t+.353553385\t# COEFFICIENTS ARE C 2(+I)/PISQRT(2) WHERE\n\t\t2DEC*\t-.0483017006 B+1*\t# I\n\t\t2DEC*\t+.0200273085 B+2*\t# WEHRE C STANDS FOR ORIGINAL COEFFS.\n\t\t2DEC*\t-.0112931863 B+3*\n\t\t2DEC*\t+.00695311612 B+4*\n\t\t2DEC*\t-.00384617957 B+5*\n\t\t2DEC*\t+.001501297736 B+6*\n\t\t2DEC*\t-.000284160334 B+7*\n\n\t\tCAF\tLBUF2\t\t# DO FINAL MULTIPLY AND GO TO ANY\n\t\tTC\tDMPSUB -1\t# EPILOGUE SEQUENCES.\n\t\tTC\tESCAPE\n\nSUBTR\t\tEXTEND\t\t\t# EPILOGUE FOR NEGATIVE INPUTS TO ARCCOS.\n\t\tDCS\tMPAC\n\t\tAD\tHALF\t\t# FORMS PI - ARCCOS(-X) = ARCCOS(X).\n\t\tDXCH\tMPAC\n\t\tTC\tESCAPE2\t\t# GO TO POSSIBLE ARCSIN EPILOGUE.\n\nASINEX\t\tEXTEND\n\t\tDCS\tMPAC\t\t# ARCSIN EPILOGUE -- GET ARCSIN(X)\n\t\tAD\tQUARTER\t\t# = PI/2 - ARCCOS(X).\n\t\tDXCH\tMPAC\nLDANZIG\t\tTCF\tDANZIG\n\n# Page 1191\nACOSSHR\t\tINDEX\tA\t\t# THE SHIFT RIGHT IS LESS THAN 14 SINCE\n\t\tCAF\tBIT14\t\t# THE INPUT WAS NON-ZERO DP.\n\t\tTS\tMPTEMP\n\t\tTC\tVSHRRND\t\t# DP SHIFT RIGHT AND ROUND.\n\t\tTCF\tACOS3\t\t# PROCEED.\n\nACOSOVF\t\tEXTEND\t\t\t# IF MAJOR PART WAS ONLY 1 MORE THAN .5,\n\t\tBZF\tACOS=0\t\t# CALL ANSWER ZERO.\n\nACOSABRT\tTC\tALARM\t\t# IF OVERFLOW, CALL ANSWER ZERO BUT\n\t\tOCT\t1301\t\t# SOUND AN ALARM.\n\n\t\tCAF\tZERO\n\t\tTCF\tACOS=0\n\nACOSZERO\tCAF\tQUARTER\t\t# ACOS(0) = PI/2.\n\t\tTCF\tACOS=0 +1\t# SET MPAC AND EXIT VIA ESCAPE.\n\nNEG12\t\tDEC\t-12\nTCSUBTR\t\tTCF\tSUBTR\n\n# Page 1192\n# THE FOLLOWING INSTRUCTIONS ARE AVAILABLE FOR SETTING, MODIFYING, AND BRANCHING ON INDEX REGISTERS:\n#\t1.\tAXT\tADDRESS TO INDEX TRUE.\n#\t2.\tAXC\tADDRESS TO INDEX COMPLEMENTED.\n#\t3.\tLXA\tLOAD INDEX FROM ERASABLE.\n#\t4.\tLXC\tLOAD INDEX COMPLEMENTED FROM ERASABLE.\n#\t5.\tSXA\tSTORE INDEX IN ERASABLE.\n#\t6.\tXCHX\tEXCHANGE INDEX REGISTER WITH ERASABLE.\n#\t7.\tINCR\tINCREMENT INDEX REGISTER.\n#\t8.\tXAD\tERASABLE ERASABLE ADD TO INDEX REGISTER.\n#\t9.\tXSU\tERASABLE SUBTRACT FROM INDEX REGISTER.\n#\t10.\tTIX\tBRANCH ON INDEX REGISTER AND DECREMENT.\n\n\t\tBANK\t01\n\n\t\tCOUNT\t01/INTER\n\nAXT\t\tTC\tTAGSUB\t\t# SELECT APPROPRIATE INDEX REGISTER.\n\t\tCA\tPOLISH\nXSTORE\t\tINDEX\tINDEXLOC\t# CONTAINS C(FIXLOC) OR C(FIXLOC)+1\n\t\tTS\tX1\n\t\tTCF\tDANZIG\n\nAXC\t\tTC\tTAGSUB\n\t\tCS\tPOLISH\n\t\tTC\tXSTORE\n\nLXA\t\tTC\t15ADRERS\t# LOAD INDEX REGISTER FROM ERASABLE.\n\t\tINDEX\tPOLISH\n\t\tCA\t0\n\t\tTCF\tXSTORE\n\nLXC\t\tTC\t15ADRERS\t# LOAD NDX REG FROM ERASABLE COMPLEMENTED.\n\t\tINDEX\tPOLISH\n\t\tCS\t0\n\t\tTCF\tXSTORE\n\nSXA\t\tTC\t15ADRERS\t# STORE INDEX REGISTER IN ERASABLE.\n\t\tINDEX\tINDEXLOC\n\t\tCA\tX1\nMSTORE1\t\tINDEX\tPOLISH\n\t\tTS\t0\n\t\tTCF\tDANZIG\n\n# Page 1193\nXCHX\t\tTC\t15ADRERS\t# EXCHANGE INDEX REGISTER WITH ERASABLE.\n\t\tINDEX\tPOLISH\n\t\tCA\t0\n\t\tINDEX\tINDEXLOC\n\t\tXCH\tX1\n\t\tTCF\tMSTORE1\n\nXAD\t\tTC\t15ADRERS\t# ADD ERASABLE TO INDEX REGISTER.\n\t\tINDEX\tPOLISH\n\t\tCA\t0\nXAD2\t\tINDEX\tINDEXLOC\n\t\tADS\tX1\t\t# IGNORING OVERFLOWS.\n\t\tTCF\tDANZIG\n\nINCR\t\tTC\tTAGSUB\t\t# INCREMENT INDEX REGISTER.\n\t\tCA\tPOLISH\n\t\tTCF\tXAD2\n\nXSU\t\tTC\t15ADRERS\t# SUBTRACT ERASABLE FROM INDEX REGISTER.\n\t\tINDEX\tPOLISH\n\t\tCS\t0\n\t\tTCF\tXAD2\n\nTIX\t\tTC\tTAGSUB\t\t# BRANCH AND DECREMENT ON INDEX.\n\t\tINDEX\tINDEXLOC\n\t\tCS\tS1\n\t\tINDEX\tINDEXLOC\n\t\tAD\tX1\n\t\tEXTEND\t\t\t# NO OPERATION IF DECREMENTED INDEX IS\n\t\tBZMF\tDANZIG\t\t# NEGATIVE OR ZERO.\n\nDOTIXBR\t\tINDEX\tINDEXLOC\n\t\tXCH\tX1\t\t# IGNORING OVERFLOWS.\n\n\t\tTCF\tGOTO\t\t# DO THE BRANCH USING THE CADR IN POLISH.\n\n# Page 1194\n# SUBROUTINE TO CONVERT AN ERASABLE ADDRESS (11 BITS) TO AN EBANK SETTING AND SUBADDRESS.\n\n15ADRERS\tCS\tPOLISH\n\t\tAD\tDEC45\n\t\tCCS\tA\t\t# DOES THE ADDRESS POINT TO THE WORK AREA?\n\t\tCA\tFIXLOC\t\t# YES.  ADD FIXLOC.  EBANK OK AS IS.\n\t\tTCF\t+5\n\n\t\tCA\tOCT1400\t\t# NO. SET EBANK & MAKE UP SUBADDRESS.\n\t\tXCH\tPOLISH\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n\t+5\tADS\tPOLISH\t\t# FALL INTO TAGSUB, AND RETURN VIA Q.\n\n# SUBROUTINE WHICH SETS THE ADDRESS OF THE SPECIFIED INDEX IN INDEXLOC.  (ACTUALLY, THE ADDRESS -38D.)\n\nTAGSUB\t\tCA\tFIXLOC\n\t\tTS\tINDEXLOC\n\n\t\tCCS\tCYR\t\t# BIT 15 SPECIFIES INDEX.\n\t\tINCR\tINDEXLOC\t# 0 MEANS USE X2.\n\t\tTC\tQ\n\t\tTC\tQ\t\t# 1 FOR X1.\n\n# Page 1195\n# MISCELLANEOUS OPERATION CODES WITH DIRECT ADDRESSES.  INCLUDED HERE ARE:\n#\t1.\tITA\tSTORE CPRET (RETURN ADDRESS) IN ERASABLE.\n#\t2.\tCALL\tCALL A SUBROUTINE, LEAVING RETURN IN QPRET.\n#\t3.\tRTB\tRETURN TO BASIC LANGUAGE AT THE GIVEN ADDRESS.\n#\t4.\tBHIZ\tBRANCH IF THE HIGHORDER OF MPAC IS ZERO (SINGLE PRECISION).\n#\t5.\tBOV\tBRANCH ON OVERFLOW.\n#\t6.\tGOTO\tSIMPLE SEQUENCE CHANGE.\n\nRTB/BHIZ\tCCS\tCYR\nRTB\t\tCA\tPOLISH\n\t\tTC\tSWCALL \t-1\t# SO A \"TC Q\" FROM ROUTINE LEADS TO DANZIG\n\nBHIZ\t\tCCS\tMPAC\n\t\tTCF\tDANZIG\n\t\tTCF\tGOTO\n\t\tTCF\tDANZIG\n\t\tTCF\tGOTO\n\nBOV(B)\t\tCCS\tOVFIND\t\t# BRANCH ON OVERFLOW TO BASIC OR INTERP.\n\t\tTCF\t+2\n\t\tTCF\tDANZIG\n\t\tTS\tOVFIND\n\t\tCCS\tCYR\n\t\tTCF\tRTB\t\t# IF BASIC.\nB5TOBB\t\tOCT\t360\n\t\tTCF\tGOTO\n\n# Page 1196\nBZE/GOTO\tCCS\tCYR\t\t# SEE WHICH OP-CODE IS DESIRED.\n\t\tTC\tBRANCH\t\t# DO BZE.\n\t\tTCF\tDANZIG\n\t\tTCF\tGOTO\t\t# DO GOTO.\n\t\tTCF\tDANZIG\n\nBPL/BMN\t\tCCS\tCYR\n\t\tTCF\tBPL\n5B10\t\t#DEC\t5 \tB+10\t# SHIFTS OP CODE IN SWITCH INSTRUCTION ADR\n\t\tDEC\t5\tB-4\t# RSB 2009\n\n\t\tTC\tBRANCH\t\t# DO BMN\n\t\tTCF\tDANZIG\n\t\tTCF\tDANZIG\n\t\tTCF\tGOTO\t\t# ONLY IF NNZ.\n\nBPL\t\tTC\tBRANCH\n\t\tTCF\tGOTO\t\t# IF POSITIVE OR ZERO.\n\t\tTCF\tGOTO\n\t\tTCF\tDANZIG\n\nCALL/ITA\tCCS\tCYR\n\t\tTCF\tCALL\n\n\t\tTC\tCCSHOLE\n\t\tTC\t15ADRERS\t# STORE QPRET.  (TAGSUB AFTER 15ADRERS IS\n\t\tINDEX\tFIXLOC\t\t# SLOW IN THIS CASE, BUT SAVES STORAGE.)\n\t\tCA\tQPRET\n\t\tTCF\tMSTORE1\n\n# Page 1197\n# THE FOLLOWING OPERATIONS ARE AVAILABLE FOR ALTERING AND TESTING INTERPRETATIVE SWITCHES:\n#\t00\tBONSET\t\tSET A SWITCH AND DO A GOTO IF IT WAS ON.\n#\t01\tSETGO\t\tSET A SWITCH AND DO A GOTO.\n#\t02\tBOFSET\t\tSET A SWITCH AND DOA GOTO IF IT WAS OFF\n#\t03\tSET\t\tSET A SWITCH.\n#\t04\tBONINV\t\tINVERT A SWITCH AND BRANCH IF IT WAS ON.\n#\t05\tINVGO\t\tINVERT A SWITCH AND DO A GOTO.\n#\t06\tBOFINV\t\tINVERT A SWITCH AND BRANCH IF IT WAS OFF\n#\t07\tINVERT\t\tINVERT A SWITCH.\n#\t10\tBONCLR\t\tCLEAR A SWITCH AND BRANCH IF IT WAS ON.\n#\t11\tCLRGO\t\tCLEAR A SWITCH AND DO A GOTO.\n#\t12\tBOFCLR\t\tCLEAR A SWITCH AND BRANCH IF IT WAS OFF.\n#\t13\tCLEAR\t\tCLEAR A SWITCH.\n#\t14\tBON\t\tBRANCH IF A SWITCH WAS ON.\n#\t16\tBOFF\t\tBRANCH IF A SWITCH WAS OFF.\n# THE ADDRESS SUPPLIED WITH THE SWITCH INSTRUCTION IS INTERPRETED AS FOLLOWS:\n#\tBITS 1-4\tSWITCH BIT NUMBER (1-15).\n#\tBITS 5-8\tSWITCH OPERATION NUMBER\n#\tBITS 9-\t\tSWITCH WORD NUMBER (UP TO 64 SWITCH WORDS).\n# THE ADDRESS ITSELF IS MADE UP BY THE YUL SYSTEM ASSEMBLER.  THE BRANCH INSTRUCTIONS REQUIRE TWO\n# ADDRESSES, THE SECOND TAKEN AS THE DIRECT (OR INDIRECT IF IN ERASABLE) ADDRESS OF THE BRANCH.\n\nSWITCHES\tCAF\tLOW4\t\t# LEAVE THE SWITCH BIT IN SWBIT.\n\t\tMASK\tPOLISH\n\t\tINDEX\tA\n\t\tCAF\tBIT15\t\t# (NUMBER FROM LEFT TO RIGHT.)\n\t\tTS\tSWBIT\n\n\t\tCAF\tBIT7\t\t# LEAVE THE SWITCH NUMBER IN SWWORD.\n\t\tEXTEND\n\t\tMP\tPOLISH\n\t\tTS\tSWWORD\n\n\t\tINHINT\t\t\t# DURING SWITCH CHANGE SO RUPT CAN USE TOO\n\t\tINDEX\tA\t\t# LEAVE THE SWITCH WORD ITSELF IN L.\n\t\tCA\tSTATE\n\t\tTS\tQ\t\t# Q WILL BE USED AS A CHANNEL.\n# Page 1198\n\t\tCAF\tBIT11\n\t\tEXTEND\t\t\t# DISPATCH SWITCH BIT OPERATION AS IN BITS\n\t\tMP\tPOLISH\t\t# 7-8 OF POLISH.\n\t\tMASK\tB3TOB4\t\t# GETS 4X2-BIT CODE.\n\t\tINDEX\tA\n\t\tTCF\t+1\n\n\t+1\tCA\tSWBIT\t\t# 00 -- SET SWITCH IN QUESTION.\n\t\tEXTEND\n\t\tROR\tQCHAN\n\t\tTCF\tSWSTORE\n\n\t+5\tCA\tSWBIT\t\t# 01 -- INVERT SWITCH.\n\t\tEXTEND\n\t\tRXOR\tQCHAN\n\t\tTCF\tSWSTORE\n\n\t+9D\tCS\tSWBIT\t\t# 10 -- CLEAR.\n\t\tMASK\tQ\nSWSTORE\t\tINDEX\tSWWORD\n\t\tTS\tSTATE\t\t# NEW SWITCH WORD.\n\n# Page 1199\n\t+13D\tRELINT\t\t\t# 11 -- NOOP.\n\t\tCAF\tBIT13\n\t\tEXTEND\t\t\t# DISPATCH SEQUENCE CHANGING OR BRANCING\n\t\tMP\tPOLISH\t\t# CODE.\n\t\tMASK\tB3TOB4\n\t\tINDEX\tA\n\t\tTCF\t+1\t\t# ORIGINALLY STORED IN BITS 5-6\n\n\t+1\tCS\tQ\t\t# 00 -- BRANCH IF ON.\nTEST\t\tMASK\tSWBIT\n\t\tCCS\tA\n\t\tTCF\tSWSKIP\n\n\t+5\tTCF\tSWBRANCH\t# 01 -- GO TO.\n\n\t\tTCF\tSWSKIP\t\t# HERE ONLY ON BIT 15.\n\n\t\tTC\tCCSHOLE\n\t\tTC\tCCSHOLE\n\n\t+9D\tCA\tQ\t\t# 10 -- BRANCH IF OFF.\n\t\tTCF\tTEST\n\nB3TOB4\t\tOCT\t0014\nSWSKIP\t\tINCR\tLOC\n\nSW/\t\tEQUALS\tSWITCHES\n\n\t+13D\tTCF\tDANZIG\t\t# 11 -- NOOP.\n\n"
  },
  {
    "path": "Comanche055/INTERPRETIVE_CONSTANTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINTERPRETIVE_CONSTANTS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1205-1206\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1205\n\t\tSETLOC\tINTPRET1\n\t\tBANK\n\n\t\tCOUNT\t23/ICONS\n\nDP1/4TH\t\t2DEC\t.25\n\nUNITZ\t\t2DEC\t0\n\nUNITY\t\t2DEC\t0\n\nUNITX\t\t2DEC\t.5\n\nZEROVECS\t2DEC\t0\n\n\t\t2DEC\t0\n\n\t\t2DEC\t0\n\nDPHALF\t\t=\tUNITX\nDPPOSMAX\tOCT\t37777\n\t\tOCT\t37777\n\n# Page 1206\n# INTERPRETIVE CONSTANTS IN THE OTHER HALF-MEMORY\n\n\t\tSETLOC\tINTPRET2\n\t\tBANK\n\n\t\tCOUNT\t14/ICONS\n\nZUNIT\t\t2DEC\t0\n\nYUNIT\t\t2DEC\t0\n\nXUNIT\t\t2DEC\t.5\n\nZEROVEC\t\t2DEC\t0\n\n\t\t2DEC\t0\n\n\t\t2DEC\t0\n\n\t\tOCT\t77777\t\t# -0,-6,-12 MUST REMAIN IN THIS ORDER\nDEC-6\t\tDEC\t-6\nDEC-12\t\tDEC\t-12\nLODPMAX\t\t2OCT\t3777737777\t# THESE TWO CONSTANTS MUST REMAIN\n\nLODPMAX1\t2OCT\t3777737777\t# ADJACENT AND THE SAME FOR INTEGRATION\n\nZERODP\t\t=\tZEROVEC\nHALFDP\t\t=\tXUNIT\n"
  },
  {
    "path": "Comanche055/INTERRUPT_LEAD_INS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINTERRUPT_LEAD_INS.agc\n# Purpose:\tPart of the source code for Comanche, build 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 131-132\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t09/05/09 FB\tTranscription of Batch FB-1 Assignment.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 131\n\t\tSETLOC\t4000\n\n\t\tCOUNT\t02/RUPTS\n\n\t\tINHINT\t\t\t# GO\n\t\tCAF\tGOBB\n\t\tXCH\tBBANK\n\t\tTCF\tGOPROG\n\n\t\tDXCH\tARUPT\t\t# T6RUPT\n\t\tEXTEND\n\t\tDCA\tT6LOC\n\t\tDTCB\n\n\t\tDXCH\tARUPT\t\t# T5RUPT\n\t\tCS\tTIME5\n\t\tAD\t.5SEC\n\t\tTCF\tT5RUPT\n\n\t\tDXCH\tARUPT\t\t# T3RUPT\n\t\tCAF\tT3RPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tT3RUPT\n\n\t\tDXCH\tARUPT\t\t# T4RUPT\n\t\tCAF\tT4RPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tT4RUPT\n\n\t\tDXCH\tARUPT\t\t# KEYRUPT1\n\t\tCAF\tKEYRPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tKEYRUPT1\n\n\t\tDXCH\tARUPT\t\t# KEYRUPT2\n\t\tCAF\tMKRUPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tMARKRUPT\n\n\t\tDXCH\tARUPT\t\t# UPRUPT\n\t\tCAF\tUPRPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tUPRUPT\n\n\t\tDXCH\tARUPT\t\t# DOWNRUPT\n\t\tCAF\tDWNRPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tDODOWNTM\n\n\t\tDXCH\tARUPT\t\t# RADAR RUPT\n# Page 132\n\t\tCAF\tRDRPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tVHFREAD\n\n\t\tDXCH\tARUPT\t\t# HAND CONTROL RUPT\n\t\tCAF\tHCRUPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tRESUME +3\t# NOT USED\n\t\tEBANK=\tLST1\t\t# RESTART USES E0,E3\nGOBB\t\tBBCON\tGOPROG\n\n\t\tEBANK=\tLST1\nT3RPTBB\t\tBBCON\tT3RUPT\n\n\t\tEBANK=\tKEYTEMP1\nKEYRPTBB\tBBCON\tKEYRUPT1\n\n\t\tEBANK=\tMRKBUF1\nMKRUPTBB\tBBCON\tMARKRUPT\n\nUPRPTBB\t\t=\tKEYRPTBB\n\n\t\tEBANK=\tDNTMBUFF\nDWNRPTBB\tBBCON\tDODOWNTM\n\n\t\tEBANK=\tDATATEST\nRDRPTBB\t\tBBCON\tVHFREAD\n\t\tEBANK=\tTIME1\nHCRUPTBB\tBBCON\tRESUME\t\t# NOT USED\n\t\tEBANK=\tDSRUPTSW\nT4RPTBB\t\tBBCON\tT4RUPT\n\t\tEBANK=\tTIME1\nT5RPTBB\t\tBBCON\tT5RUPT\n\nT5RUPT\t\tEXTEND\n\t\tBZMF\tNOQBRSM\n\t\tEXTEND\n\t\tDCA\tT5LOC\n\t\tDTCB\n\n"
  },
  {
    "path": "Comanche055/JET_SELECTION_LOGIC.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tJET_SELECTION_LOGIC.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1039-1062\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1039\n\t\tBANK\t21\n\t\tSETLOC\tDAPS4\n\t\tBANK\n\n\t\tCOUNT\t17/DAPJS\n\n\t\tEBANK=\tKMPAC\n\n# EXAMINE CHANNEL 31 FOR TRANSLATION COMMANDS\n\nJETSLECT\tLXCH\tBANKRUPT\n\t\tCAF\tDELTATT3\t# = 60 MS  RESET TO EXECUTE PHASE1\n\t\tAD\tT5TIME\n\t\tTS\tTIME5\n\t\tTCF\t+3\n\t\tCAF\tDELATT20\t# = 20 MS  TO ASSURE A T5RUPT\n\t\tTS\tTIME5\n\t\tCAF\t=14MS\t\t# RESET T6 TO INITIALIZE THE JET CHANNELS\n\t\tTS\tTIME6\t\t# IN 14 MS\n\t\tCAF\tNEGMAX\n\t\tEXTEND\n\t\tWOR\tCHAN13\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\t\tCAF\tXLNMASK\t\t# = 7700 OCT\n\t\tEXTEND\t\t\t# EXAMINE THE TRANSLATION\n\t\tRXOR\tCHAN31\t\t# HAND CONTROLLER\n\t\tMASK\tXLNMASK\n\t\tEXTEND\n\t\tBZF\tNOXLNCMD\n\t\tTS\tT5TEMP\n\t\tEXTEND\n\t\tMP\tBIT9\n\t\tMASK\tTHREE\n\t\tTS\tXNDX1\t\t# AC QUAD  X-TRANSLATION INDEX\n\t\tTS\tXNDX2\t\t# BD QUAD  X-TRANSLATION INDEX\n\t\tCA\tT5TEMP\n\t\tEXTEND\t\t\t# 1 = + XLN\n\t\tMP\tBIT7\t\t# 2 = - XLN\n\t\tMASK\tTHREE\t\t# 3 = NO XLN\n\t\tTS\tYNDX\t\t# Y-TRANSLATION INDEX\n\n\t\tCA\tT5TEMP\n\t\tEXTEND\n\t\tMP\tBIT5\n\t\tMASK\tTHREE\n\t\tTS\tZNDX\t\t# Z-TRANSLATION INDEX\n\n\t\tCA\tDAPDATR1\t# SET ATTKALMN TO PICK UP FILTER GAINS FOR\n\t\tMASK\tBIT14\t\t# TRANSLATIONS.\n\t\tEXTEND\t\t\t# CHECK DAPDATR1 BIT 14 FOR LEM ATTACHED.\n# Page 1040\n\t\tBZF\tNOLEM\n\t\tCS\tTHREE\t\t# IF LEM IS ON, SET ATTKALMN = -3\n\t\tTCF\t+2\nNOLEM\t\tCS\tTWO\t\t# IF LEM IS OFF, SET ATTKALMN = -2.\n\t\tTS\tATTKALMN\n\t\tCCS\tXTRANS\t\t# (+, -1, 0)\n\t\tTS\tXNDX1\t\t# USING BD-X  ZERO XNDX1\n\t\tTCF\tPWORD\n\t\tTS\tXNDX2\t\t# USING AC-X  ZERO XNDX2\n\t\tTCF\tPWORD\nXLNMASK\t\tOCT\t7700\n\nDELTATT3\tDEC\t16378\t\t# = 60 MS\nDELATT20\tDEC\t16382\t\t# = 20 MS\n\nNOXLNCMD\tTS\tXNDX1\t\t# ZERO ALL REQUESTS FOR TRANSLATION\n\t\tTS\tXNDX2\n\t\tTS\tYNDX\n\t\tTS\tZNDX\n\n# PITCH COMMANDS  TIMING(NO X-TRANS, NO QUAD FAILS) 32MCT\n\nPWORD\t\tCCS\tTAU1\t\t# CHECK FOR PITCH COMMANDS\n\t\tCAF\tONE\n\t\tTCF\t+2\t\t#  0 = NO PITCH\n\t\tCAF\tTWO\t\t# +1 =  + PITCH\n\t\tTS\tPINDEX\t\t# +2 =  - PITCH\n\n\t\tCCS\tRACFAIL\t\t# FLAG FOR REAL AC QUAD FAILURES\n\t\tTCF\tAFAILP\n\t\tTCF\tTABPCOM\t\t# 0 = NO REAL AC FAILURES\n\t\tTCF\tCFAILP\t\t# + = A QUAD FAILED\n\t\tTCF\tTABPCOM\t\t# - = C QUAD FAILED\n\t\t\t\t\t# IF FAILURES ARE PRESENT IGNORE\n\t\t\t\t\t# X-TRANSLATIONS ON THIS AXIS\n\nAFAILP\t\tCAF\tNINE\t\t# IF FAILURE IS PRESENT 1JET OPERATION\n\t\tTCF\tTABPCOM +2\t# IS ASSUMED.  IGNORE X-TRANSLATION\nCFAILP\t\tCAF\tTWELVE\n\t\tTCF\tTABPCOM +2\n\nXLNNDX\t\tDEC\t0\t\t# INDICES FOR TRANSLATION COMMANDS\n\t\tDEC\t3\t\t# FOR USE IN TABLE LOOK UP\n\t\tDEC\t6\n\t\tDEC\t0\n\nTWELVE\t\t=\tOCT14\n# TABLE LOOK UP FOR PITCH COMMANDS WITH AND WITHOUT X-TRANSLATION AND AC QUAD FAILURES PRESENT.\n# BITS 9, 10 CONTAIN THE NUMBER OF PITCH JETS USED TO PERFORM THE PITCH ROTATION\n# Page 1041\n\nTABPCOM\t\tINDEX\tXNDX1\n\t\tCA\tXLNNDX\n\t\tAD\tPINDEX\n\t\tINDEX\tA\n\t\tCA\tPYTABLE\n\t\tMASK\tPJETS\t\t# =1417 OCT\n\t\tTS\tPWORD1\n\t\tEXTEND\n\t\tMP\tBIT7\n\t\tTS\tNPJETS\t\t# = NO. OF PITCH JETS\n\n# YAW JET COMMANDS  TIMING(NO X-TRANS, NO QUAD FAILURES)  32MCT\n\nYWORD\t\tCCS\tTAU2\t\t# CHECK FOR YAW COMMANDS\n\t\tCAF\tONE\n\t\tTCF\t+2\n\t\tCAF\tTWO\n\t\tTS\tYINDEX\t\t# YAW ROTATION INDEX\n\n\t\tCCS\tRBDFAIL\t\t# FLAG FOR B OR D QUAD FAILURES\n\t\tTCF\tBFAILY\t\t# 0 = NO BD FAILURE\n\t\tTCF\tTABYCOM\t\t# + = B QUAD FAILED\n\t\tTCF\tDFAILY\t\t# - = D QUAD FAILED\n\t\tTCF\tTABYCOM\n\nBFAILY\t\tCAF\tNINE\n\t\tTCF\tTABYCOM +2\nDFAILY\t\tCAF\tTWELVE\n\t\tTCF\tTABYCOM +2\n\n# Page 1042\n# TABLE FOR PITCH(YAW) COMMANDS\n# BITS 4,3,2,1 = PITCH, X-TRANSLATION JETS SELECTED\n# BITS     10,9 = NO. PITCH JETS USED TO PERFORM ROTATION\n# BITS 8,7,6,5 = YAW, X-TRANSLATION JETS SELECTED\n# BITS 12,11 : NO. YAW JETS USED TO PERFORM ROTATION\n\n\t\t\t\t\t# ROT\tTRANS\tQUAD\tBIAS\nPYTABLE\t\tOCT\t0\t\t# 0\t0\t\t0\n\t\tOCT\t5125\t\t# +\t0\t\t0\n\t\tOCT\t5252\t\t# -\t0\t\t0\n\t\tOCT\t0231\t\t# 0\t+\t\t3\n\t\tOCT\t2421\t\t# +\t+\t\t3\n\t\tOCT\t2610\t\t# -\t+\t\t3\n\t\tOCT\t0146\t\t# 0\t-\t\t6\n\t\tOCT\t2504\t\t# +\t-\t\t6\n\t\tOCT\t2442\t\t# -\t-\t\t6\n\t\tOCT\t0\t\t# 0\t\tA(B)\t9\n\t\tOCT\t2421\t\t# +\t\tA(B)\t9\n\t\tOCT\t2442\t\t# -\t\tA(B)\t9\n\t\tOCT\t0\t\t# 0\t\tC(D)\t12\n\t\tOCT\t2504\t\t# +\t\tC(D)\t12\n\t\tOCT\t2610\t\t# -\t\tC(D)\t12\n\n# MASKS FOR PITCH AND YAW COMMANDS\n\nPJETS\t\tOCT\t1417\nYJETS\t\tOCT\t6360\n\n# TABLE LOOK UP FOR YAW COMMANDS WITH AND WITHOUT X-TRANSLATION AND AC QUAD FAILURES PRESENT\n# BITS 11, 12 CONTAIN THE NUMBER OF YAW JETS USED TO PERFORM THE YAW ROTATION\n\nTABYCOM\t\tINDEX\tXNDX2\n\t\tCA\tXLNNDX\n\t\tAD\tYINDEX\n\t\tINDEX\tA\n\t\tCA\tPYTABLE\n\t\tMASK\tYJETS\t\t# = 6360 OCT\n\t\tTS\tYWORD1\n\t\tEXTEND\n\t\tMP\tBIT5\n\t\tTS\tNYJETS\t\t# NO. OF YAW JETS USED TO PERFORM ROTATION\n\n# Page 1043\n# ROLL COMMANDS  TIMING(NO Y,Z TRANS, NO QUAD FAILS)  45MCT\n\nRWORD\t\tCCS\tTAU\t\t# CHECK FOR ROLL COMMANDS\n\t\tCAF\tONE\n\t\tTCF\t+2\n\t\tCAF\tTWO\n\t\tTS\tRINDEX\n\n\t\tCCS\tACORBD\t\t# FLAG FOR AC OR BD QUAD SELECTION FOR\n\t\tTCF\tBDROLL\t\t# ROLL COMMANDS\n\t\tTCF\tBDROLL\t\t# +, +0 = BD ROLL\n\t\tTCF\t+1\t\t# -, -0 = AC ROLL\n\nACROLL\t\tCCS\tRACFAIL\t\t# CHECK FOR REAL FAILURES\n\t\tTCF\tRAFAIL\t\t# ON AC QUADS\n\t\tTCF\tRXLNS\n\t\tTCF\tRCFAIL\n\t\tTCF\tRXLNS\n\nRAFAIL\t\tCAF\tNINE\t\t# QUAD FAILURE WILL GET\n\t\tTCF\tTABRCOM\t\t# 1-JET OPERATION\nRCFAIL\t\tCAF\tTWELVE\n\t\tTCF\tTABRCOM\n\nXLN1NDX\t\tDEC\t0\n\t\tDEC\t1\t\t# INDECES FOR TRANSLATION\n\t\tDEC\t2\n\t\tDEC\t0\n\n# TABLE LOOK UP FOR AC-ROLL COMMANDS WITH AND WITHOUT Y-TRANSLATION AND ACQUAD FAILURES PRESENT\n# BITS 9,10,11 CONTAIN THE MAGNITUDE AND DIRECTION OF THE ROLL\n\nRXLNS\t\tINDEX\tYNDX\t\t# NO AC QUAD FAILURES\n\t\tCA\tXLNNDX\t\t# INCLUDE +,-,0, Y-TRANSLATION\nTABRCOM\t\tAD\tRINDEX\n\t\tINDEX\tA\n\t\tCA\tRTABLE\n\t\tMASK\tACRJETS\t\t# = 3760 OCT\n\t\tTS\tRWORD1\n\n# CHECK FOR Z-TRANSLATIONS ON BD\n\nBDZCHECK\tCA\tZNDX\n\t\tEXTEND\n\t\tBZMF\tNOBDZ\t\t# NO Z-TRANSLATION\n\n# Page 1044\n# \tTABLE LOOK UP FOR BD Z-TRANSLATION WITH AND WITHOUT REAL BD QUAD FAILURES.  Z-TRANSLATION WILL BE POSS-\n# IBLE AS LONG AS ROLL COMMANDS CAN BE SATISFIED WITH THE AC ROLL JETS.  CRITERION..  IF THE RESULTANT NET ROLL\n# COMMANDS = 0 (WITH Z-TRANSLATION) AND IF TAU = 0, THEN INCLUDE THE BD Z-TRANSLATION COMMANDS.  IF THE RESULTANT\n# ROLL COMMAND = 0, AND IF TAU NZ, THEN IGNORE THE BD Z-TRANSLATION\n\n\t\tCCS\tRBDFAIL\n\t\tCAF\tTHREE\n\t\tTCF\t+2\n\t\tCAF\tSIX\n\t\tINDEX\tZNDX\n\t\tAD\tXLN1NDX\n\t\tINDEX\tA\n\t\tCA\tYZTABLE\n\t\tMASK\tBDZJETS\t\t# = 3417 OCT\n\t\tAD\tRWORD1\t\t# ADD TO ROLL COMMANDS\n\t\tTS\tT5TEMP\t\t# IF POSSIBLE.  MUST CHECK TAU FIRST\n\n\t\tEXTEND\n\t\tMP\tBIT7\t\t# DETERMINE THE NET ROLL COMMAND WITH\n\t\tAD\t=-4\t\t# Z-TRANSLATION ADDED ON\n\t\tTS\tNRJETS\t\t# NET NO. OF +,- ROLL JETS ON\n\t\tEXTEND\n\t\tBZF\tTAUCHECK\n\nACRBDZ\t\tCA\tT5TEMP\t\t# Z-TRANSLATION ACCEPTED EVEN THO WE MAY\n\t\tTS\tRWORD1\t\t# HAVE INTRODUCED AN UNDESIREABLE ROLL\n\t\tTCF\tROLLTIME\t# BRANCH TO JET ON-TIME CALCULATIONS\n\nTAUCHECK\tCCS\tTAU\n\t\tTCF\tNOBDZ\n\t\tTCF\tACRBDZ\n\t\tTCF\tNOBDZ\n\t\tTCF\tACRBDZ\n\nNOBDZ\t\tCA\tRWORD1\t\t# Z-TRANSLATION NOT ACCEPTED\n\t\tEXTEND\n\t\tMP\tBIT7\n\t\tAD\t=-2\n\t\tTS\tNRJETS\n\t\tTCF\tROLLTIME\t# BRANCH TO JET ON-TIME CALCULATION\n\n# Page 1045\n# BD QUAD SELECTION FOR ROLL COMMANDS\n\nBDROLL\t\tCCS\tRBDFAIL\n\t\tTCF\tRBFAIL\n\t\tTCF\tRZXLNS\n\t\tTCF\tRDFAIL\n\t\tTCF\tRZXLNS\nRBFAIL\t\tCAF\tNINE\n\t\tTCF\tTABRZCMD\nRDFAIL\t\tCAF\tTWELVE\n\t\tTCF\tTABRZCMD\n\nRZXLNS\t\tINDEX\tZNDX\t\t# NO BD FAILURES\n\t\tCA\tXLNNDX\t\t# +,-,0 Z-TRANSLATION PRESENT\nTABRZCMD\tAD\tRINDEX\n\t\tINDEX\tA\n\t\tCA\tRTABLE\n\t\tMASK\tBDRJETS\t\t# = 34017 OCT\n\t\tTS\tRWORD1\n\nACYCHECK\tCA\tYNDX\t\t# ANY Y-TRANSLATION\n\t\tEXTEND\n\t\tBZF\tNOACY\t\t# NO Y-TRANSLATION\n\t\tCCS\tRACFAIL\n\t\tCAF\tTHREE\n\t\tTCF\t+2\n\t\tCAF\tSIX\n\t\tINDEX\tYNDX\n\t\tAD\tXLN1NDX\n\t\tINDEX\tA\n\t\tCA\tYZTABLE\n\t\tMASK\tACYJETS\t\t# = 34360 OCT\n\t\tAD\tRWORD1\n\t\tTS\tT5TEMP\n\t\tEXTEND\t\t\t# FOR EXPLANATION SEE CODING ON RTABLE\n\t\tMP\tBIT4\n\t\tAD\t=-4\n\t\tTS\tNRJETS\t\t# NO. OF NET ROLL JETS\n\t\tEXTEND\n\t\tBZF\tTAUCHCK\t\t# IF NRJETS = 0\n\nBDRACZ\t\tCA\tT5TEMP\t\t# Y-TRANSLATION ACCEPTED\n\t\tTS\tRWORD1\n\t\tTCF\tROLLTIME\t# BRANCH TO JET ON-TIME CALCULATIONS\n\nTAUCHCK\t\tCCS\tTAU\n\t\tTCF\tNOACY\n\t\tTCF\tBDRACZ\n\t\tTCF\tNOACY\n\t\tTCF\tBDRACZ\n\n# Page 1046\nNOACY\t\tCA\tRWORD1\t\t# Y-TRANSLATION NOT ACCEPTED\n\t\tEXTEND\n\t\tMP\tBIT4\n\t\tAD\t=-2\n\t\tTS\tNRJETS\n\t\tTCF\tROLLTIME\n\n# Page 1047\n# \t\tTABLE FOR ROLL, Y AND Z-TRANSLATION COMMANDS\n\n# \tEITHER AC OR BD ROLL MAY BE SELECTED.  IF AC ROLL IS SELECTED, Y-TRANSLATIONS MAY BE SATISFIED SIMULTANEOUSLY\n# PROVIDED THAT THERE ARE NO AC QUAD FAILURES.  IF THERE ARE AC FAILURES, Y-TRANSLATION COMMANDS WILL BE IGNORED,\n# IN WHICH CASE THE ASTRONAUT SHOULD SWITCH TO BD ROLL.\n# \tIF BDROLL IS SELECTED, Z-TRANSLATIONS MAY BE SATISFIED SIMULTANEOUSLY PROVIDED THAT THERE ARE NO BD QUAD\n# FAILURES.  IF THERE ARE BD FAILURES, Z-TRANSLATION COMMANDS WILL BE IGNORED, IN WHICH CASE THE ASTRONAUT SHOULD\n# SWITCH TO AC ROLL.\n# \tNOTE THAT IF ONE QUAD FAILS (E.G. B FAILED), Z-TRANSLATION IS STILL POSSIBLE AND THAT THE UNDESIRABLE ROLL\n# INTRODUCED BY THIS TRANSLATION WILL BE COMPENSATED BY THE TWO AC ROLL JETS ACTUATED BY THE AUTOPILOT LOGIC.\n\n# \t\tWORD MAKE UP....RTABLE\n\n# \tTWO WORDS, CORRESPONDING TO AC OR BD ROLL SELECTION, HAVE BEEN COMBINED INTO ONE TABLE.  THE WORD CORRESPOND-\n# ING TO AC ROLL HAS THE FOLLOWING INTERPRETATION..\n#\tBITS 9,10,11 ARE CODED TO GIVE THE NET ROLL TORQUE FOR THE WORD SELECTED.  THE CODING IS..\n#\t\t\tBIT NO. 11  10   9\t\tNO. OF ROLL JETS\n\n#\t\t\t\t 0   0   0\t\t\t-2\n#\t\t\t\t 0   0   1\t\t\t-1\n#\t\t\t\t 0   1   0\t\t\t 0\n#\t\t\t\t 0   1   1\t\t\t+1\n#\t\t\t\t 1   0   0\t\t\t+2\n\n# \tTHIS WORD MAY THEN BE ADDED TO THE WORD SELECTED FROM THE YZ-TRANSLATION TABLE, WHICH HAS THE SAME TYPE OF\n# CODING AS ABOVE, AND THE NET ROLL DETERMINED BY SHIFTING THE RESULTANT WORD RIGHT 8 PLACES AND SUBTRACTING FOUR.\n\n# \tTHE WORD CORRESPONDING TO THE BD ROLL HAS A SIMILAR INTERPRETATION, EXCEPT THAT BITS 12, 13, 14 ARE CODED\n# (AS ABOVE) TO GIVE THE NET ROLL TORQUE.\n\n\t\t\t\t\t# ROLL \t\tTRANS\t\tQUADFAIL\tBIAS\n\nRTABLE\t\tOCT\t11000\t\t#   0\t\t\t\t\t\t  0\n\t\tOCT\t22125\t\t#   +\t\t\t\t\t\t  0\n\t\tOCT\t00252\t\t#   -\t\t\t\t\t\t  0\n\t\tOCT\t11231\t\t#   0\t\t+Y(+Z)\t\t\t\t  3\n\t\tOCT\t15421\t\t#   +\t\t+Y(+Z)\t\t\t\t  3\n\t\tOCT\t04610\t\t#   -\t\t+Y(+Z)\t\t\t\t  3\n\t\tOCT\t11146\t\t#   0\t\t-Y(-Z)\t\t\t\t  6\n\t\tOCT\t15504\t\t#   +\t\t-Y(-Z)\t\t\t\t  6\n\t\tOCT\t04442\t\t#   -\t\t-Y(-Z)\t\t\t\t  6\n\t\tOCT\t11000\t\t#   0\t\t\t\t  A(B)\t\t  9\n\t\tOCT\t15504\t\t#   +\t\t\t\t  A(B)\t\t  9\n\t\tOCT\t04610\t\t#   -\t\t\t\t  A(B)\t\t  9\n\t\tOCT\t11000\t\t#   0\t\t\t\t  C(D)\t\t 12\n\t\tOCT\t15421\t\t#   +\t\t\t\t  C(D)           12\n\t\tOCT\t04442\t\t#   -\t\t\t\t  C(D)\t\t 12\n\n# Page 1048\n# RTABLE MASKS -\n\nACRJETS\t\tOCT\t03760\nBDRJETS\t\tOCT\t34017\n\n# Page 1049\n#\t\tY, Z TRANSLATION TABLE\n\n# \tONCE AC OR BD ROLL IS SELECTED THE QUAD PAIR WHICH IS NOT BEING USED TO SATISFY THE ROLL COMMANDS MAY BE\n# USED TO SATISFY THE REMAINING TRANSLATION COMMANDS.  HOWEVER, WE MUST MAKE SURE THAT ROLL COMMANDS ARE SATISFIED\n# WHEN THEY OCCUR.  THEREFORE, THE Y-Z TRANSLATIONS FROM THIS TABLE WILL BE IGNORED IF THE NET ROLL TORQUE OF THE\n# COMBINED WORD IS ZERO AND THE ROLL COMMANDS ARE NON-ZERO.  THIS SITUATION WOULD OCCUR, FOR EXAMPLE, IF WE EN-\n# COUNTER SIMULTANEOUS +R +Y -Z COMMANDS AND A QUAD D FAILURE WHILE USING AC FOR ROLL.\n# \tTO FACILITATE THE LOGIC, THE Y-Z TRANSLATION TABLE HAS BEEN CODED IN A MANNER SIMILAR TO THE ROLL TABLE\n# ABOVE.\n# \tBITS 9,10,11 ARE CODED TO GIVE THE NET ROLL TORQUE INCURRED BY Z-TRANSLATIONS.  THE WORD SELECTED CAN THEN BE\n# ADDED TO THE AC-ROLL WORD AND THE RESULTANT ROLL TORQUE DETERMINED FROM THE COMBINED WORD.  SIMILIARLY BITS\n# 12,13,14 ARE CODED TO GIVE THE NET ROLL TORQUE INCURRED BY Y-TRANSLATIONS WHEN BD-ROLL IS SELECTED.\n\n\t\t\t\t\t# TRANSLATION\tQUADFAIL\tBIAS\n\t\t\t\t\t#\nYZTABLE\t\tOCT\t11000\t\t# \t0\t\t\t0\n\t\tOCT\t11231\t\t#    +Z(+Y)\t\t\t0\n\t\tOCT\t11146\t\t#    -Z(-Y)\t\t\t0\n\t\tOCT\t11000\t\t#\t0\t  B(A)\t\t3\n\t\tOCT\t04610\t\t#    +Z(+Y)\t  B(A)\t\t3\n\t\tOCT\t15504\t\t#    -Z(-Y)\t  B(A)\t\t3\n\t\tOCT\t11000\t\t#  \t0\t  D(C)\t\t6\n\t\tOCT\t15421\t\t#    +Z(+Y)\t  D(C)\t\t6\n\t\tOCT\t04442\t\t#    -Z(-Y)\t  D(C)\t\t6\n\n# YZ-TABLE MASKS-\n\nBDZJETS\t\tOCT\t03417\nACYJETS\t\tOCT\t34360\n\n# ADDITIONAL CONSTANTS\n\n=-2\t\t=\tNEG2\n=-4\t\t=\tNEG4\n\n# Page 1050\n# \t\tCALCULATION OF JET ON-TIMES\n#\n# \tTHE ROTATION COMMANDS (TAU:S), WHICH WERE DETERMINED FROM THE JET SWITCHING LOGIC ON THE BASIS OF SINGLE JET\n# OPERATION, MUST NOW BE UPDATED BY THE ACTUAL NUMBER OF JETS TO BE USED IN SATISFYING THESE COMMANDS.  TAU MUST\n# ALSO BE DECREMENTED ACCORDING TO THE EXPECTED TORQUE GENERATED BY THE NEW COMMANDS ACTING OVER THE NEXT T5 INT-\n# ERVAL.\n# \tIN ORDER TO MAINTAIN ACCURATE KNOWLEDGE OF VEHICLE ANGULAR RATES, WE MUST ALSO PROVIDE EXPECTED FIRING TIMES\n# (DFT:S, ALSO IN TERMS OF 1-JET OPERATION) FOR THE RATE FILTER.\n# \tNOTE THAT TRANSLATIONS CAN PRODUCE ROTATIONS EVEN THOUGH NO ROTATIONS WERE CALLED FOR.  NEVERTHELESS, WE MUST\n# UPDATE DFT.\n# \tWHEN THE ROTATIONS HAVE FINISHED, WE MUST PROVIDE CHANNEL INFORMATION TO THE T6 PROGRAM TO CONTINUE ON WITH\n# THE TRANSLATIONS.  THIS WILL BE DONE IN THE NEXT SECTION.  HOWEVER, TO INSURE THAT JETS ARE NOT FIRED FOR LESS\n# THAN A MINIMUM IMPULSE (14MS), ALL JET CHANNEL COMMANDS WILL BE HELD FIXED FROM THE START OF THE T5 PROGRAM FOR\n# ATLEAST 14MS UNTIL THE INITIALIZATION OF NEW COMMANDS.  MOREOVER, A 14MS ON-TIME WILL BE ADDED TO ANY ROTATIONAL\n# COMMANDS GENERATED BY THE MANUAL CONTROLS OR THE JET SWITCHING LOGIC, AND ALL TRANSLATION COMMANDS WILL BE\n# ACTIVE FOR ATLEAST ONE CYCLE OF THE T5 PROGRAM (.1SEC)\n\n# \t\tPITCH JET ON-TIME CALCULATION\n\nPITCHTIM\tCCS\tTAU1\n\t\tTCF\tPTAUPOS\n\t\tTCF\t+2\n\t\tTCF\tPTAUNEG\n\t\tTS\tDFT1\t\t# NO PITCH ROTATION\n\t\tTCF\tPBYPASS\t\t# COMMANDS\n\nPTAUNEG\t\tCS\tNPJETS\n\t\tTS\tNPJETS\nPTAUPOS\t\tCA\tTAU1\n\t\tEXTEND\n\t\tINDEX\tNPJETS\n\t\tMP\tNJET\n\t\tTS\tBLAST1\n\t\tAD\t=-.1SEC\n\t\tEXTEND\n\t\tBZMF\tAD14MSP\n\t\tINDEX\tNPJETS\n\t\tCA\tDFTMAX\t\t# THE PITCH ON-TIME IS GREATER THAN .1 SEC\n\t\tTS\tDFT1\n\t\tCOM\n\t\tADS\tTAU1\t\t# UPDATE TAU1\n\t\tCAF\t=+.1SEC\t\t# LIMIT THE LENGTH OF PITCH ROTATION\n\t\tTS\tBLAST1\t\t# COMMANDS TO 0.1 SEC SO THAT ONLY\n\t\tTCF\tASMBLWP\t\t# X-TRANSLATIONS WILL CONTINUE ON SWITCH\n\t\t\t\t\t# OVER TO TVC\nAD14MSP\t\tCS\tBLAST1\t\t# SEE IF JET ON TIME IS LESS THAN\n\t\tAD\t=14MS\t\t# MINIMUM IMPULSE TIME\n\t\tEXTEND\n\t\tBZMF\tPBLASTOK\t# IF SO LIMIT MINIMUM ON TIME TO 14 MS\n\t\tCAF\t=14MS\n# Page 1051\n\t\tTS\tBLAST1\nPBLASTOK\tCA\tBLAST1\n\t\tEXTEND\t\t\t# THE PITCH COMMANDS WILL BE COMPLETED\n\t\tMP\tNPJETS\t\t# WITHIN THE TS-CYCLE TIME\n\t\tLXCH\tDFT1\t\t# FOR USE IN UPDATING RATE FILTER\n\t\tTS\tTAU1\t\t# ZERO TAU1 (ACC CONTAINS ZERO)\n\t\tTCF\tASMBLWP\n\n# Page 1052\n# YAW JET ON-TIME CALCULATION\n\nYAWTIME\t\tCCS\tTAU2\n\t\tTCF\tYTAUPOS\n\t\tTCF\t+2\n\t\tTCF\tYTAUNEG\n\t\tTS\tDFT2\t\t# NO YAW ROTATION COMMANDS\n\t\tTCF\tYBYPASS\n\nYTAUNEG\t\tCS\tNYJETS\n\t\tTS\tNYJETS\nYTAUPOS\t\tCA\tTAU2\n\t\tEXTEND\n\t\tINDEX\tNYJETS\n\t\tMP\tNJET\n\t\tTS\tBLAST2\n\t\tAD\t=-.1SEC\n\t\tEXTEND\n\t\tBZMF\tAD14MSY\n\t\tINDEX\tNYJETS\n\t\tCA\tDFTMAX\t\t# YAW COMMANDS WILL LAST LONGER THAN .1SEC\n\t\tTS\tDFT2\n\t\tCOM\n\t\tADS\tTAU2\t\t# DECREMENT TAU2\n\t\tCAF\t=+.1SEC\t\t# LIMIT THE LENGTH OF YAW ROTATION COMMAND\n\t\tTS\tBLAST2\t\t# TO 0.1 SEC SO THAT ONLY X-TRANSLATION\n\t\tTCF\tASMBLWY\t\t# WILL CONTINUE ON SWITCH OVER TO TVC\n\nAD14MSY\t\tCS\tBLAST2\t\t# SEE IF JET ON-TIME LESS THAN\n\t\tAD\t=14MS\t\t# MINIMUM IMPULSE TIME\n\t\tEXTEND\n\t\tBZMF\tYBLASTOK\t# IF SO, LIMIT MINIMUM ON-TIME TO 14 MS\n\t\tCAF\t=14MS\n\t\tTS\tBLAST2\nYBLASTOK\tCA\tBLAST2\t\t# YAW COMMANDS WILL BE COMPLETED WITHIN\n\t\tEXTEND\t\t\t# THE T5CYCLE TIME\n\t\tMP\tNYJETS\n\t\tLXCH\tDFT2\n\t\tTS\tTAU2\t\t# ZERO TAU2\n\t\tTCF\tASMBLWY\n\n# Page 1053\n# ROLL ON-TIME CALCULATION-\n\nROLLTIME\tCCS\tTAU\n\t\tTCF\tRBLAST\n\t\tTCF\t+2\n\t\tTCF\tRBLAST\n\t\tINDEX\tNRJETS\n\t\tCA\tDFTMAX\t\t# UPDATE DFT EVEN THO NO ROLL COMMANDS ARE\n\t\tTS\tDFT\t\t# PRESENT\n\t\tTCF\tRBYPASS\n\n\t\tDEC\t-480\t\t# = -.3SEC\n\t\tDEC\t-320\t\t# = -.2SEC\n=-.1SEC\t\tDEC\t-160\t\t# = -.1SEC\nDFTMAX\t\tDEC\t0\t\t#     0\n=+.1SEC\t\tDEC\t160\t\t# = +.1SEC\n\t\tDEC\t320\t\t# = +.2SEC\n\t\tDEC\t480\t\t# = +.3SEC\n=14MS\t\tDEC\t23\t\t# =14MS\n\nRBLAST\t\tCA\tTAU\n\t\tEXTEND\n\t\tINDEX\tNRJETS\n\t\tMP\tNJET\n\t\tTS\tBLAST\t\t# BLAST IS AN INTERMEDIATE VARIABLE\n\t\t\t\t\t# USED IN DETERMINING THE JET ON-TIMES\n\t\tAD\t=-.1SEC\n\t\tEXTEND\n\t\tBZMF\tAD14MSR\n\t\tINDEX\tNRJETS\t\t# THE ROLL ROTATION WILL LAST LONGER\n\t\tCA\tDFTMAX\t\t# THAN THE T5 CYCLE TIME\n\t\tTS\tDFT\n\t\tCOM\n\t\tADS\tTAU\n\t\tCAF\t=+.1SEC\t\t# LIMIT THE LENGTH OF ROLL ROTATION\n\t\tTS\tBLAST\t\t# COMMANDS TO 0.1 SEC SO THAT ONLY Y-Z\n\t\tTCF\tASMBLWR\t\t# TRANSLATION COMMANDS CONTINUE\n\nAD14MSR\t\tCS\tBLAST\t\t# SEE IF THE JET ON-TIME LESS THAN\n\t\tAD\t=14MS\t\t# MINIMUM IMPULSE TIME\n\t\tEXTEND\n\t\tBZMF\tRBLASTOK\n\t\tCAF\t=14MS\t\t# IF SO, LIMIT MINIMUM ON-TIME TO 14 MS\n\t\tTS\tBLAST\nRBLASTOK\tCA\tBLAST\n\t\tEXTEND\n\t\tMP\tNRJETS\n\t\tLXCH\tDFT\n\t\tTS\tTAU\t\t# ZERO TAU\n\t\tTCF\tASMBLWR\n\n# Page 1054\n\t\tDEC\t-.333333\t# = -1/3\n\t\tDEC\t-.500000\t# = -1/2\n\t\tDEC\t-.999999\t# = -1 (NEGMAX)\nNJET\t\tDEC\t0\n\t\tDEC\t.999999\t\t# = +1 (POSMAX)\n\t\tDEC\t.500000\t\t# = +1/2\n\t\tDEC\t.333333\t\t# = +1/3\n\n# Page 1055\n# \tWHEN THE ROTATION COMMANDS ARE COMPLETED, IT IS NECESSARY TO REPLACE THESE COMMANDS BY NEW COMMANDS WHICH\n# CONTINUE ON WITH THE TRANSLATIONS IF ANY ARE PRESENT.\n# \tIN THIS SECTION THESE NEW COMMANDS ARE GENERATED AND STORED FOR REPLACEMENT OF THE CHANNEL COMMANDS WHEN THE\n# CORRESPONDING ROTATIONS ARE COMPLETED.\n\n# GENERATION OF THE SECOND PITCH(X-TRANS) WORD...PWORD2\n\nASMBLWP\t\tCCS\tRACFAIL\n\t\tTCF\tFPX2\t\t# IF FAILURE ON AC IGNORE X-TRANSLATION\n\t\tTCF\t+2\n\t\tTCF\tFPX2\n\t\tINDEX\tXNDX1\n\t\tCA\tXLNNDX\n\t\tINDEX\tA\nFPX2\t\tCA\tPYTABLE\n\t\tMASK\tPJETS\n\t\tTS\tPWORD2\n\t\tTCF\tYAWTIME\n\nPBYPASS\t\tCA\tPWORD1\t\t# THE T6 PROGRAM WILL LOAD PWORD2\n\t\tTS\tPWORD2\t\t# UPON ENTRY\n\t\tCAF\tZERO\n\t\tTS\tBLAST1\t\t# THERE IS NO PWORD2\n\t\tTCF\tYAWTIME\n\n# Page 1056\n# GENERATION OF THE SECOND ROLL (Y,Z) WORD (RWORD2)\n\nASMBLWR\t\tCCS\tYNDX\t\t# CHECK FOR Y-TRANS\n\t\tTCF\tACBD2Y\nNO2Y\t\tCAF\tZERO\n\t\tTS\tRWORD2\n\t\tCCS\tZNDX\t\t# CHECK FOR Z-TRANS\n\t\tTCF\tACBD2Z\nNO2Z\t\tCAF\tZERO\n\t\tADS\tRWORD2\n\t\tTCF\tPITCHTIM\t# RWORD2 ASSEMBLED\n\nACBD2Y\t\tCCS\tACORBD\n\t\tTCF\tAC2Y\t\t# CAN DO Y-TRANS\n\t\tTCF\tAC2Y\n\t\tTCF\t+1\t\t# USING AC FOR ROLL\n\t\tCCS\tRACFAIL\n\t\tTCF\tNO2Y\t\t# USING AC AND AC HAS FAILED\n\t\tTCF\t+2\n\t\tTCF\tNO2Y\t\t# DITTO\n\n\t\tINDEX\tYNDX\t\t# NO FAILURES, CAN DO Y\n\t\tCA\tXLNNDX\n\t\tINDEX\tA\n\t\tCA\tRTABLE\n\t\tMASK\tACRJETS\n\t\tTCF\tNO2Y +1\n\nAC2Y\t\tCCS\tRACFAIL\n\t\tCAF\tTHREE\n\t\tTCF\t+2\n\t\tCAF\tSIX\n\t\tINDEX\tYNDX\n\t\tAD\tXLN1NDX\n\t\tINDEX\tA\n\t\tCA\tYZTABLE\n\t\tMASK\tACYJETS\n\t\tTS\tRWORD2\n\t\tEXTEND\n\t\tMP\tBIT4\n\t\tAD\t=-2\n\t\tTS\tNRJETS\n\t\tCS\tBLAST\n\t\tAD\t=+.1SEC\n\t\tEXTEND\n\t\tMP\tNRJETS\n\t\tCA\tL\n\t\tADS\tDFT\n\t\tTCF\tNO2Y +2\n# Page 1057\nACBD2Z\t\tCCS\tACORBD\n\t\tTCF\tBDF2Z\t\t# USING BD-ROLL\n\t\tTCF\tBDF2Z\t\t# MUST CHECK FOR BD FAILURES\n\t\tTCF\t+1\n\t\tCCS\tRBDFAIL\t\t# USING AC FOR ROLL, CAN DO Z-TRANS\n\t\tCAF\tTHREE\n\t\tTCF\t+2\n\t\tCAF\tSIX\n\t\tINDEX\tZNDX\n\t\tAD\tXLN1NDX\n\t\tINDEX\tA\n\t\tCA\tYZTABLE\n\t\tMASK\tBDZJETS\n\t\tADS\tRWORD2\n\t\tEXTEND\n\t\tMP\tBIT7\n\t\tAD\t=-2\n\t\tTS\tNRJETS\n\t\tCS\tBLAST\n\t\tAD\t=+.1SEC\n\t\tEXTEND\n\t\tMP\tNRJETS\n\t\tCA\tL\n\t\tADS\tDFT\n\t\tTCF\tPITCHTIM\n\nBDF2Z\t\tCCS\tRBDFAIL\n\t\tTCF\tNO2Z\t\t# USING BD-ROLL AND BD HAS FAILED\n\t\tTCF\t+2\n\t\tTCF\tNO2Z\t\t# DITTO\n\t\tINDEX\tZNDX\n\t\tCA\tXLNNDX\n\t\tINDEX\tA\n\t\tCA\tRTABLE\n\t\tMASK\tBDRJETS\n\t\tTCF\tNO2Z +1\n\nRBYPASS\t\tCA\tRWORD1\n\t\tTS\tRWORD2\n\t\tCAF\tZERO\n\t\tTS\tBLAST\n\t\tTCF\tPITCHTIM\n\n# Page 1058\n# GENERATION OF THE SECOND YAW (X-TRANS) WORD...YWORD2\n\nASMBLWY\t\tCCS\tRBDFAIL\n\t\tTCF\tFYX2\t\t# IF FAILURE ON BD IGNORE X-TRANSLATION\n\t\tTCF\t+2\n\t\tTCF\tFYX2\n\t\tINDEX\tXNDX2\n\t\tCA\tXLNNDX\n\t\tINDEX\tA\nFYX2\t\tCA\tPYTABLE\n\t\tMASK\tYJETS\n\t\tTS\tYWORD2\n\t\tTCF\tT6SETUP\n\nYBYPASS\t\tCA\tYWORD1\n\t\tTS\tYWORD2\n\t\tCAF\tZERO\n\t\tTS\tBLAST2\n\n# Page 1059\n#\t\tSORT THE JET ON-TIMES\n\n# \tAT THIS POINT ALL THE CHANNEL COMMANDS AND JET ON-TIMES HAVE BEEN DETERMINED.  IN SUMMARY THESE ARE-\n\n#\t\tRWORD1\n#\t\tRWORD2\t\tBLAST\n\n#\t\tPWORD1\n#\t\tPWORD2\t\tBLAST1\n\n#\t\tYWORD1\n#\t\tYWORD2\t\tBLAST2\n\n# \tIN THIS SECTION THE JET ON-TIMES ARE SORTED AND THE SEQUENCE OF T6 INTERRUPTS IS DETERMINED.  TO FACILITATE\n# THE SORTING PROCESS AND THE T6 PROGRAM, THE VARIABLES BLAST, BLAST1, BLAST2, ARE RESERVED AS DOUBLE PRECISION\n# WORDS.  THE LOWER PART OF THESE WORDS CONTAIN A BRANCH INDEX ASSOCIATED WITH THE ROTATION AXIS OF THE HIGHER\n# ORDER WORD.\n\nT6SETUP\t\tCAF\tZERO\t\t# BRANCH INDEX FOR ROLL\n\t\tTS\tBLAST +1\n\t\tCAF\tFOUR\t\t# BRANCH INDEX FOR PITCH\n\t\tTS\tBLAST1 +1\n\t\tCAF\tELEVEN\t\t# BRANCH INDEX FOR YAW\n\t\tTS\tBLAST2 +1\n\n\t\tCS\tBLAST\n\t\tAD\tBLAST1\n\t\tEXTEND\n\t\tBZMF\tDXCHT12\t\t# T1 GR T2\nCHECKT23\tCS\tBLAST1\n\t\tAD\tBLAST2\n\t\tEXTEND\n\t\tBZMF\tDXCHT23\nCALCDT6\t\tCS\tBLAST1\n\t\tADS\tBLAST2\n\t\tCS\tBLAST\n\t\tADS\tBLAST1\t\t# END OF SORTING PROCEDURE\n\t\tEXTEND\t\t\t# RESET T5LOC TO BEGIN PHASE1\n\t\tDCA\tRCS2CADR\n\t\tDXCH\tT5LOC\nENDJETS\t\tCS\tBIT1\t\t# RESET BIT1 FOR INITIALIZATION OF\n\t\tMASK\tRCSFLAGS\t# T6 PROGRAM\n\t\tTS\tRCSFLAGS\n\t\tCS\tZERO\t\t# RESET T5PHASE FOR PHASE1\n\t\tTS\tT5PHASE\n\t\tTCF\tRESUME\t\t# RESUME INTERRUPTED PROGRAM\n\n\t\tEBANK=\tKMPAC\nRCS2CADR\t2CADR\tRCSATT\n\n# Page 1060\nDXCHT12\t\tDXCH\tBLAST\n\t\tDXCH\tBLAST1\n\t\tDXCH\tBLAST\n\t\tTCF\tCHECKT23\n\nDXCHT23\t\tDXCH\tBLAST1\n\t\tDXCH\tBLAST2\n\t\tDXCH\tBLAST1\n\t\tCS\tBLAST\n\t\tAD\tBLAST1\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\tCALCDT6\n\t\tDXCH\tBLAST\n\t\tDXCH\tBLAST1\n\t\tDXCH\tBLAST\n\t\tTCF\tCALCDT6\n\n# Page 1061\n# T6 PROGRAM AND CHANNEL SETUP\n\n\t\tBANK\t21\n\t\tSETLOC\tDAPS5\n\t\tBANK\n\nT6START\t\tLXCH\tBANKRUPT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\t\tCCS\tTIME6\t\t# CHECK TO SEE IF TIME6 WAS RESET\n\t\tTCF\tRESUME\t\t# AFTER T6RUPT OCCURED(IN T5RUPT)\n\t\tTCF\t+2\t\t# IF SO WAIT FOR NEXT T6RUPT BEFORE\n\t\tTCF\tRESUME\t\t# TAKING ACTION\n\n\t\tCS\tRCSFLAGS\n\t\tMASK\tBIT1\t\t# IF BIT1 IS 0 RESET TO 1\n\t\tEXTEND\t\t\t# AND INITIALIZE CHANNEL\n\t\tBZF\tT6RUPTOR\n\t\tADS\tRCSFLAGS\n\t\tCA\tRWORD1\n\t\tEXTEND\t\t\t# INITIALIZE CHANNELS 5,6 WITH WORD1\n\t\tWRITE\tCHAN6\n\t\tCA\tPWORD1\n\t\tAD\tYWORD1\n\t\tEXTEND\n\t\tWRITE\tCHAN5\n\nT6RUPTOR\tCCS\tBLAST\n\t\tTCF\tZBLAST\t\t# ZERO BLAST1\n\t\tTCF\tREPLACE\t\t# REPLACE WORD1\n\t\tTCF\t+2\n\t\tTCF\tREPLACE\nT6L1\t\tCCS\tBLAST1\n\t\tTCF\tZBLAST1\n\t\tTCF\tREPLACE1\n\t\tTCF\t+2\n\t\tTCF\tREPLACE1\nT6L2\t\tCCS\tBLAST2\n\t\tTCF\tZBLAST2\n\t\tTCF\tREPLACE2\n\t\tTCF\tRESUME\n\t\tTCF\tREPLACE2\n\nREPLACE\t\tINDEX\tBLAST +1\n\t\tTC\tREPLACER\n\t\tCS\tONE\n\t\tTS\tBLAST\n\t\tTCF\tT6L1\n\nREPLACE1\tINDEX\tBLAST1 +1\n# Page 1062\n\t\tTC\tREPLACER\n\t\tCS\tONE\n\t\tTS\tBLAST1\n\t\tTCF\tT6L2\n\nREPLACE2\tINDEX\tBLAST2 +1\n\t\tTC\tREPLACER\n\t\tCS\tONE\n\t\tTS\tBLAST2\n\t\tTCF\tRESUME\n\nREPLACER\tCA\tRWORD2\n\t\tEXTEND\t\t\t# INITIALIZE CHANNELS 5,6 WITH WORD2\n\t\tWRITE\tCHAN6\n\t\tTC\tQ\n\nREPLACEP\tCA\tYJETS\n\t\tEXTEND\n\t\tRAND\tCHAN5\n\t\tAD\tPWORD2\n\t\tEXTEND\n\t\tWRITE\tCHAN5\n\t\tTC\tQ\n\nREPLACEY\tCA\tPJETS\n\t\tEXTEND\n\t\tRAND\tCHAN5\n\t\tAD\tYWORD2\n\t\tEXTEND\n\t\tWRITE\tCHAN5\n\t\tTC\tQ\n\nZBLAST\t\tCAF\tZERO\n\t\tXCH\tBLAST\n\t\tTCF\tENABT6\nZBLAST1\t\tCAF\tZERO\n\t\tXCH\tBLAST1\n\t\tTCF\tENABT6\nZBLAST2\t\tCAF\tZERO\n\t\tXCH\tBLAST2\nENABT6\t\tTS\tTIME6\n\t\tCAF\tNEGMAX\n\t\tEXTEND\n\t\tWOR\tCHAN13\t\t# ENABLE T6RUPT\n\t\tTCF\tRESUME\n\n# END OF T6 INTERRUPT\n\nENDSLECT\tEQUALS\n"
  },
  {
    "path": "Comanche055/KALCMANU_STEERING.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tKALCMANU_STEERING.agc\n# Purpose:\tPart of the source code for Comanche, build 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 414-419\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Mod history:\t05/07/09 OH\tTranscription Batch 1 Assignment\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further information.\n# Please report any errors to info@sandroid.org.\n\n# Page 414\n# GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS\n#\n# NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER\n\n\t\tBANK\t15\n\n\t\tSETLOC\tKALCMON1\n\t\tBANK\n\n\t\tEBANK=\tBCDU\n\n\t\tCOUNT\t22/KALC\n\nNEWDELHI\tCS\tHOLDFLAG\t# SEE IF MANEUVER HAS BEEN INTERRUPTED\n\t\tEXTEND\t\t\t# BY ASTRONAUT\n\t\tBZMF\tNOGO\t-2\t# IF SO, TERMINATE KALCMANU\nNEWANGL\t\tTC\tINTPRET\n\t\tAXC,1\tAXC,2\n\t\t\tMIS\t\t# COMPUTE THE NEW MATRIX FROM S/C TO\n\t\t\tDEL\t\t# STABLE MEMBER AXES\n\t\tCALL\n\t\t\tMXM3\n\t\tVLOAD\tSTADR\n\t\tSTOVL\tMIS +12D\t# CALCULATE NEW DESIRED CDU ANGLES\n\t\tSTADR\n\t\tSTOVL\tMIS +6D\n\t\tSTADR\n\t\tSTORE\tMIS\n\t\tAXC,1\tCALL\n\t\t\tMIS\n\t\t\tDCMTOCDU\t# PICK UP THE NEW CDU ANGLES FROM MATRIX\n\t\tRTB\n\t\t\tV1STO2S\n\t\tSTORE\tNCDU\t\t# NEW CDU ANGLES\n\t\tBONCLR\tEXIT\n\t\t\tCALCMAN2\n\t\t\tMANUSTAT\t# TO START MANEUVER\n\t\tCAF\tTWO\t\t# \t   +0 OTHERWISE\nINCRDCDU\tTS\tKSPNDX\n\t\tDOUBLE\n\t\tTS\tKDPNDX\n\t\tINDEX\tKSPNDX\n\t\tCA\tNCDU\t\t# NEW DESIRED CDU ANGLES\n\t\tEXTEND\n\t\tINDEX\tKSPNDX\n\t\tMSU\tBCDU\t\t# INITIAL S/C ANGLE OR PREVIOUS DESIRED\n\t\tEXTEND\t\t\t# CDU ANGLES\n\t\tMP\tQUADROT\n\t\tINDEX\tKDPNDX\n\t\tDXCH\tDELCDUX\t\t# ANGEL INCREMENTS TO BE ADDED TO\n# Page 415\n\t\tINDEX\tKSPNDX\t\t# DCDU EVERY TENTH SEC\n\t\tCA\tNCDU\t\t# BY LEM DAP\n\t\tINDEX\tKSPNDX\n\t\tXCH\tBCDU\n\t\tINDEX\tKDPNDX\n\t\tTS\tCDUXD\n\t\tCCS\tKSPNDX\n\t\tTCF\tINCRDCDU\t# LOOP FOR THREE AXES\n\n\t\tRELINT\n# COMPARE PRESENT TIME WITH TIME TO TERMINATE MANEUVER\n\nTMANUCHK\tTC\tTIMECHK\n\t\tTC\tPOSTJUMP\n\t\tCADR\tCONTMANU\n\n\t\tCAF\tONE\nMANUSTAL\tTC\tWAITLIST\n\t\tEBANK=\tBCDU\n\t\t2CADR\tMANUSTOP\n\n\t\tRELINT\n\t\tTCF\tENDOFJOB\n\n\nTIMECHK\t\tEXTEND\n\t\tDCS\tTIME2\n\t\tDXCH\tTTEMP\n\t\tEXTEND\n\t\tDCA\tTM\n\t\tDAS\tTTEMP\n\t\tCCS\tTTEMP\n\t\tTC\tQ\n\t\tTCF\t+2\n\t\tTCF\t2NDRETRN\n\t\tCCS\tTTEMP +1\n\t\tTC\tQ\n\t\tTCF\tMANUOFF\n\t\tCOM\nMANUOFF\t\tAD\t1SEC\n\t\tEXTEND\n\t\tBZMF\t2NDRETRN\n\t\tINCR\tQ\n2NDRETRN\tINCR\tQ\n\t\tINCR\tQ\n\t\tTC\tQ\n\n\t\tSETLOC\tMANUSTUF\n\t\tBANK\n# Page 416\nMANUSTAT\tEXIT\t\t\t# INITIALIZATION ROUTINE\n\t\tEXTEND\t\t\t# FOR AUTOMATIC MANEUVERS\n\t\tDCA\tTIME2\n\t\tDAS\tTM\t\t# TM+T0    MANEUVER COMPLETION TIME\n\t\tCS\t1SEC\n\t\tTS\tL\n\t\tCS\tZERO\n\t\tDAS\tTM\t\t# (TM+T0)-1\n\t\tINHINT\n\t\tCS\tONE\t\t# ENABLE AUTOPILOT TO PERFORM\n\t\tTS\tHOLDFLAG\t# AUTOMATIC MANEUVERS\n\t\tCS\tRATEINDX\t# SEE IF MANEUVERING AT HIGH RATE\n\t\tAD\tSIX\n\t\tEXTEND\n\t\tBZMF\tHIGHGAIN\n\t\tTCF\t+4\nHIGHGAIN\tCS\tRCSFLAGS\t# IF SO, SET HIGH RATE FLAG (BIT 15 OF\n\t\tMASK\tBIT15\t\t# RCSFLAGS)\n\t\tADS\tRCSFLAGS\n\t\tDXCH\tBRATE\t\t# X-AXIS MANEUVER RATE\n\t\tDXCH\tWBODY\n\t\tDXCH\tBRATE +2\t# Y-AXIS MANEUVER RATE\n\t\tDXCH\tWBODY1\n\t\tDXCH\tBRATE +4\t# Z-AXIS MANEUVER RATE\n\t\tDXCH\tWBODY2\n\t\tCA\tBIASTEMP +1\t# INSERT ATTITUDE ERROR BIASES\n\t\tTS\tBIAS\t\t# INTO AUTOPILOT\n\t\tCA\tBIASTEMP +3\n\t\tTS\tBIAS1\n\t\tCA\tBIASTEMP +5\n\t\tTS\tBIAS2\n\t\tCA\tTIME1\n\t\tAD\t1SEC\n\t\tXCH\tNEXTIME\n\t\tTC\tPOSTJUMP\n\t\tCADR\tINCRDCDU -1\n\nCONTMANU\tINHINT\t\t\t# CONTINUE WITH UPDATE PROCESS\n\t\tCS\tTIME1\n\t\tAD\tNEXTIME\n\t\tCCS\tA\n\t\tAD\tONE\n\t\tTCF\tMANUCALL\n\t\tAD\tNEGMAX\n\t\tCOM\nMANUCALL\tTC\tWAITLIST\n\t\tEBANK=\tBCDU\n\t\t2CADR\tUPDTCALL\n\n\t\tRELINT\n# Page 417\n\t\tCAF\t1SEC\t\t# INCREMENT TIME FOR NEXT UPDATE\n\t\tADS\tNEXTIME\n\t\tTCF\tENDOFJOB\n\n\nUPDTCALL\tCAF\tPRIO26\t\t# CALL FOR UPDATE\n\t\tTC\tFINDVAC\t\t# OF STEERING COMMANDS\n\t\tEBANK=\tBCDU\n\t\t2CADR\tNEWDELHI\n\n\t\tTC\tTASKOVER\n\n# Page 418\n# ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS\n\n\t\tSETLOC\tKALCMON3\n\t\tBANK\n\nMANUSTOP\tTC\tSTOPYZ\n\t\tTC\tIBNKCALL\n\t\tCADR\tLOADYZ\n\nENDROLL\t\tCA\tCPHI\n\t\tTS\tCDUXD\t\t# SET CDUXD TO THE COMMANDED OUTER GIMBAL\n\t\tTC\tSTOPRATE\nENDMANU\t\tCA\tATTPRIO\t\t# RESTORE USERS PRIORITY\n\t\tTS\tNEWPRIO\n\n\t\tCA\tZERO\t\t# ZERO ATTCADR\n\t\tDXCH\tATTCADR\n\n\t\tTC\tSPVAC\t\t# RETURN TO USER OF GOMANUR\n\n\t\tTC\tTASKOVER\n\n\t\tSETLOC\tSTOPRAT\n\t\tBANK\nSTOPRATE\tCAF\tZERO\n\t\tTS\tDELCDUX\n\t\tTS\tDELCDUX\t+1\t# ZERO ROLL INCREMENTAL ANGLES\n\t\tTS\tWBODY\t\t# RATE\n\t\tTS\tWBODY +1\n\t\tTS\tBIAS\t\t# BIAS\n\n\t\tCS\tBIT15\t\t# MAKE SURE HIGH RATE FLAG (BIT 15 OF\n\t\tMASK\tRCSFLAGS\t# RCSFLAGS) IS RESET.\n\t\tTS\tRCSFLAGS\n\nSTOPYZ\t\tCAF\tZERO\n\t\tTS\tDELCDUY\t\t# ZERO PITCH, YAW\n\t\tTS\tDELCDUY\t+1\t# INCREMENTAL ANGLES\n\t\tTS\tDELCDUZ\n\t\tTS\tDELCDUZ\t+1\n\t\tTS\tWBODY1\t\t# RATES\n\t\tTS\tWBODY1 +1\n\t\tTS\tWBODY2\n\t\tTS\tWBODY2 +1\n\t\tTS\tBIAS1\t\t# BIASES\n\t\tTS\tBIAS2\n\t\tTC\tQ\n\n\t\tSETLOC MANUSTUF\n\t\tBANK\n\n# Page 419\nZEROERROR\tCA\tCDUX\t\t# PICK UP CDU ANGLES AND STORE IN\n\t\tTS\tCDUXD\t\t# CDU DESIRED\n\t\tCA\tCDUY\n\t\tTS\tCDUYD\n\t\tCA\tCDUZ\n\t\tTS\tCDUZD\n\t\tTC\tQ\n\n\t\tSETLOC\tKALCMON1\n\t\tBANK\n\nLOADCDUD\tCA\tCPHI\t\t# STORE TERMINAL ANGLES INTO\n\t\tTS\tCDUXD\t\t# COMMAND ANGLES\nLOADYZ\t\tCA\tCTHETA\n\t\tTS\tCDUYD\n\t\tCA\tCPSI\n\t\tTS\tCDUZD\n\t\tTC\tQ\n"
  },
  {
    "path": "Comanche055/KEYRUPT_UPRUPT.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     KEYRUPT_UPRUPT.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 1449-1451\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-07 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname, and page images. Corrected various\n#\t\t\t\ttypos in the transcription of program\n#\t\t\t\tcomments, and these should be back-ported\n#\t\t\t\tto Colossus249.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 1449\n\t\tBANK\t14\n\t\tSETLOC\tKEYRUPT\n\t\tBANK\n\t\tCOUNT*\t$$/KEYUP\n\nKEYRUPT1\tTS\tBANKRUPT\n\t\tXCH\tQ\n\t\tTS\tQRUPT\n\t\tTC\tLODSAMPT\t# TIME IS SNATCHED IN RUPT FOR NOUN 65.\n\t\tCAF\tLOW5\n\t\tEXTEND\n\t\tRAND\tMNKEYIN\t\t# CHECK IF KEYS 5M-1M ON\nKEYCOM\t\tTS\tRUPTREG4\n\t\tCS\tFLAGWRD5\n\t\tMASK\tBIT15\n\t\tADS\tFLAGWRD5\n\nACCEPTUP\tCAF\tCHRPRIO\t\t# (NOTE: RUPTREG4 = KEYTEMP1)\n\t\tTC\tNOVAC\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tCHARIN\n\n\t\tCA\tRUPTREG4\n\t\tINDEX\tLOCCTR\n\t\tTS\tMPAC\t\t# LEAVE 5 BIT KEY CDE IN MPAC FOR CHARIN\n\t\tTC\tRESUME\n\n# Page 1450\n# UPRUPT PROGRAM\n\nUPRUPT\t\tTS\tBANKRUPT\n\t\tXCH\tQ\n\t\tTS\tQRUPT\n\t\tTC\tLODSAMPT\t# TIME IS SNATCHED IN RUPT FOR NOUN 65.\n\t\tCAF\tZERO\n\t\tXCH\tINLINK\n\t\tTS\tKEYTEMP1\n\t\tCAF\tBIT3\t\t# TURN ON UPACT LIGHT\n\t\tEXTEND\t\t\t# (BIT 3 OF CHANNEL 11)\n\t\tWOR\tDSALMOUT\nUPRPT1\t\tCAF\tLOW5\t\t# TEST FOR TRIPLE CHAR REDUNDANCY\n\t\tMASK\tKEYTEMP1\t# LOW5 OF WORD\n\t\tXCH\tKEYTEMP1\t# LOW5 INTO KEYTEMP1\n\t\tEXTEND\n\t\tMP\tBIT10\t\t# SHIFT RIGHT 5\n\t\tTS\tKEYTEMP2\n\t\tMASK\tLOW5\t\t# MID 5\n\t\tAD\tHI10\n\t\tTC\tUPTEST\n\t\tCAF\tBIT10\n\t\tEXTEND\n\t\tMP\tKEYTEMP2\t# SHIFT RIGHT 5\n\t\tMASK\tLOW5\t\t# HIGH 5\n\t\tCOM\n\t\tTC\tUPTEST\n\nUPOK\t\tCS\tELRCODE\t\t# CODE IS GOOD. IF CODE = 'ERROR RESET',\n\t\tAD\tKEYTEMP1\t# CLEAR UPLOCKFL(SET BIT4 OF FLAGWRD7 = 0)\n\t\tEXTEND\t\t\t# IF CODE DOES NOT = 'ERROR RESET', ACCEPT\n\t\tBZF\tCLUPLOCK\t# CODE ONLY IF UPLOCKFL IS CLEAR (=0).\n\n\t\tCAF\tBIT4\t\t# TEST UPLOCKFL FOR 0 OR 1.\n\t\tMASK\tFLAGWRD7\n\t\tCCS\tA\n\t\tTC\tRESUME\t\t# UPLOCKFL = 1\n\t\tTC\tACCEPTUP\t# UPLOCKFL = 0\n\nCLUPLOCK\tCS\tBIT4\t\t# CLEAR UPLOCKFL (I.E., SET BIT 4 OF\n\t\tMASK\tFLAGWRD7\t# FLAGWRD7 = 0)\n\t\tTS\tFLAGWRD7\n\t\tTC\tACCEPTUP\n\n\t\t\t\t\t# CODE IS BAD\nTMFAIL2\t\tCS\tFLAGWRD7\t# LOCK OUT FURTHER UPLINK ACTIVITY\n\t\tMASK\tBIT4\t\t# (BY SETTING UPLOCKFL = 1) UNTIL\n\t\tADS\tFLAGWRD7\t# 'ERROR RESET' IS SENT VIA UPLINK.\n\t\tTC\tRESUME\nUPTEST\t\tAD\tKEYTEMP1\n# Page 1451\n\t\tCCS\tA\n\t\tTC\tTMFAIL2\nHI10\t\tOCT\t77740\n\t\tTC\tTMFAIL2\n\t\tTC\tQ\n\nELRCODE\t\tOCT\t22\n\n# 'UPLINK ACTIVITY LIGHT' IS TURNED OFF BY .....\n#\t1.\tVBRELDSP\n#\t2.\tERROR RESET\n#\t3.\tUPDATE PROGRAM(P27) ENTERED BY V70,V71,V72,AND V73.\n#\n#\n#\t\t\t\t\t-\n# THE RECEPTION OF A BAD CODE(I.E. CCC FAILURE) LOCKS OUT FURTHER UPLINK ACTIVITY BY SETTING BIT4 OF FLAGWRD7 = 1.\n# THIS INDICATION WILL BE TRANSFERRED TO THE GROUND BY THE DOWNLINK WHICH DOWNLINKS ALL FLAGWORDS.\n# WHEN UPLINK ACTIVITY IS LOCKED OUT ,IT CAN BE ALLOWED WHEN THE GROUND UPLINKS AND 'ERROR RESET' CODE.\n# (IT IS RECOMMENDED THAT THE 'ERROR LIGHT RESET' CODE IS PRECEEDED BY 16 BITS THE FIRST OF WHICH IS 1 FOLLOWED\n# BY 15 ZEROS. THIS WILL ELIMINATE EXTRANEOUS BITS FROM INLINK WHICH MAY HAVE BEEN LEFT OVER FROM THE ORIGINAL\n# FAILURE).\n# UPLINK ACTIVITY IS ALSO ALLOWED(UNLOCKED) DURING FRESH START WHEN FRESH START SETS BIT4 OF FLAGWRD7 = 0.\n\n"
  },
  {
    "path": "Comanche055/LATITUDE_LONGITUDE_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tLATITUDE_LONGITUDE_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1236-1242\n# Mod history:\t2009-05-14 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1236\n# SUBROUTINE TO CONVERT RAD VECTOR AT GIVEN TIME TO LAT,LONG AND ALT\n#\n# CALLING SEQUENCE\n#\n#\tL-1\tCALL\n#\tL\t\tLAT-LONG\n# SUBROUTINES USED\n#\n#\tR-TO-RP,ARCTAN,SETGAMMA,SETRE\n# ERASABLE INIT. REQ.\n#\n#\tAXO,-AYO,AZO,TEPHEM (SET AT LAUNCH TIME)\n# ALPHAV = POSITION VECTOR METERS B-29\n#\tMPAC-- TIME (CSECS B-28)\n#\tERADFLAG =1, TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS\n#\tLUNAFLAG=0 FOR EARTH,1 FOR MOON\n# OUTPUT\n#\n#\tLATITUDE IN LAT \t(REVS. B-0)\n#\tLONGITUDE IN LONG\t(REVS. B-0)\n#\tALTITUDE IN ALT METERS\tB-29\n\n\t\tBANK\t30\n\t\tSETLOC\tLATLONG\n\t\tBANK\n\n\t\tCOUNT\t13/LT-LG\n\n\t\tEBANK=\tALPHAV\nLAT-LONG\tSTQ\tSETPD\n\t\t\tINCORPEX\n\t\t\t0D\n\t\tSTOVL\t6D\t\t# SAVE TIME IN 6-7D FOR R-TO-RP\n\t\t\tALPHAV\n\t\tPUSH\tABVAL\t\t# 0-5D= R FOR R-TO-RP\n\t\tSTODL\tALPHAM\t\t# ABS. VALUE OF R FOR ALT FORMULA BELOW\n\t\t\tZEROVEC\t\t# SET MPAC=0 FOR EARTH,NON-ZERO FOR MOON\n\t\tBOFF\tCOS\t\t# USE COS(0) TO GET NON-ZERO IN MPAC\n\t\t\tLUNAFLAG\t# 0=EARTH,1=MOON\n\t\t\tCALLRTRP\nCALLRTRP\tCALL\n\t\t\tR-TO-RP\t\t# RP VECTOR CONVERTED FROM R B-29\n\t\tUNIT\t\t\t# UNIT RP B-1\n\t\tSTCALL\tALPHAV\t\t# U2= 1/2 SINL FOR SETRE SUBR BELOW\n\t\t\tSETGAMMA\t#\tSET GAMMA=B2/A2 FOR EARTH,=1 FOR MOON\n\t\tCALL\t\t\t#\tSCALED B-1\n\t\t\tSETRE\t\t# CALC RE METERS B-29\n\t\tDLOAD\tDSQ\n\t\t\tALPHAV\n\t\tPDDL\tDSQ\n\t\t\tALPHAV +2\n# Page 1237\n\t\tDAD\tSQRT\n\t\tDMP\tSL1R\n\t\t\tGAMRP\n\t\tSTODL\tCOSTH\t\t# COS(LAT) B-1\n\t\t\tALPHAV +4\n\t\tSTCALL\tSINTH\t\t# SIN(LAT) B-1\n\t\t\tARCTAN\n\t\tSTODL\tLAT\t\t# LAT B0\n\t\t\tALPHAV\n\t\tSTODL\tCOSTH\t\t# COS(LONG) B-1\n\t\t\tALPHAV +2\n\t\tSTCALL\tSINTH\t\t# SIN(LONG) B-1\n\t\t\tARCTAN\n\t\tSTODL\tLONG\t\t# LONG. REVS B-0 IN RANGE -1/2 TO 1/2\n\t\t\tALPHAM\n\t\tDSU\t\t\t# ALT= R-RE METERS B-29\n\t\t\tERADM\n\t\tSTCALL\tALT\t\t# EXIT WITH ALT METERS B-29\n\t\t\tINCORPEX\n# Page 1238\n# SUBROUTINE TO CONVERT LAT,LONG.ALT AT GIVEN TIME TO RADIUS VECTOR\n# CALLING SEQUENCE\n\n#\tL-1\tCALL\n#\tL\t\tLALOTORV\n# SUBROUTINES USED\n#\tSETGAMMA,SETRE,RP-TO-R\n# ERASABLE INIT. REQ.\n\n#\tAXO,AYO,AZO,TEPHEM SET AT LAUNCH TIME\n#\tLAT-- LATITUDE (REVS B0)\n#\tLONG-- LONGITUDE (REVS B0)\n# ALT--ALTITUDE (METERS) B-29\n#\tMPAC-- TIME (CSECS B-28)\n#\tERADFLAG =1 TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS\n# \tLUNAFLAG=0 FOR EARTH,1 FOR MOON\n# OUTPUT\n\n# R-VECTOR IN ALPHAV (METERS B-29)\nLALOTORV\tSTQ\tSETPD\t\t# LAT,LONG,ALT TO R VECTOR\n\t\t\tINCORPEX\n\t\t\t0D\n\t\tSTCALL\t6D\t\t# 6-7D= TIME FOR RP-TO-R\n\t\t\tSETGAMMA\t# GAMMA=B2/A2 FOR EARTH,1 FOR MOON B-1\n\t\tDLOAD\tSIN\t\t# \t\tCOS(LONG)COS(LAT) IN MPAC\n\t\t\tLAT\t\t#    UNIT RP= SIN(LONG)COS(LAT)    2-3D\n\t\tDMPR\tPDDL\t\t# PD 2\t\tGAMMA*SIN(LAT)\t     0-1D\n\t\t\tGAMRP\n\t\t\tLAT\t\t# \t0-1D = GAMMA*SIN(LAT) B-2\n\t\tCOS\tPDDL\t\t# PD4 2-3D=COS(LAT) B-1 TEMPORARILY\n\t\t\tLONG\n\t\tSIN\tDMPR\t\t# PD 2\n\t\tPDDL\tCOS\t\t# PD 4 2-3D=SIN(LONG)COS(LAT) B-2\n\t\t\tLAT\n\t\tPDDL\tCOS\t\t# PD 6 4-5D=COS(LAT) B-1 TEMPORARILY\n\t\t\tLONG\n\t\tDMPR\tVDEF\t\t# PD4 MPAC= COS(LONG)COS(LAT) B-2\n\t\tUNIT\tPUSH\t\t# 0-5D= UNIT RP FOR RP-TO-R SUBR.\n\t\tSTCALL\tALPHAV\t\t# ALPHAV +4= SINL FOR SETRE SUBR.\n\t\t\tSETRE\t\t# RE METERS B-29\n\t\tDLOAD\tBOFF\t\t# SET MPAC=0 FOR EARTH,NON-ZERO FOR MOON\n\t\t\tZEROVEC\n\t\t\tLUNAFLAG\n\t\t\tCALLRPRT\n\t\tCOS\t\t\t# USE COS(0) TO GET NON-ZERO IN MPAC\nCALLRPRT\tCALL\n\t\t\tRP-TO-R\t\t# EXIT WITH UNIT R VECTOR IN MPAC\n\t\tSTODL\tALPHAV\n\t\t\tERADM\n# Page 1239\n\t\tDAD\tVXSC\t\t# (RE + ALT)(UNIT R) METERS B-30\n\t\t\tALT\n\t\t\tALPHAV\n\t\tVSL1\t\t\t# R METERS B-29\n\t\tSTCALL\tALPHAV\t\t# EXIT WITH R IN METERS B-29\n\t\t\tINCORPEX\n# SUBROUTINE TO COMPUTE EARTH RADIUS\n\n# INPUT\n\n#\t1/2 SIN LAT IN ALPHAV +4\n\n# OUTPUT\n\n#\tEARTH RADIUS IN ERADM AND MPAC (METERS B-29)\n\nGETERAD\t\tDLOAD\tDSQ\n\t\t\tALPHAV \t+4\t# SIN**2(L)\n\t\tSL1\tBDSU\n\t\t\tDP1/2\t\t# COS**2(L)\n\t\tDMPR\tBDSU\n\t\t\tEE\n\t\t\tDP1/2\n\t\tBDDV\tSQRT\n\t\t\tB2XSC\n\t\tSR4R\n\t\tSTORE\tERADM\n\t\t\tRVQ\n\n# THE FOLLOWING CONSTANTS WERE COMPUTED WITH A=6378166,B=6356784 METERS\n# B2XSC= B**2 SCALED B-51\n# B2/A2= B**2/A**2 SCALED B-1\n# EE=(1-B**2/A**2) SCALED B-0\n\nB2XSC\t\t2DEC\t.0179450689\t# B**2 SCALED B-51\n\nDP1/2\t\t=\tXUNIT\nB2/A2\t\t2DEC\t.9933064884 B-1\t# GAMMA= B**2/A**2 B-1\n\nEE\t\t2DEC\t6.6935116 E-3\t# (1-B**2/A**2) B-0\n\nERAD\t\t2DEC\t6373338 B-29\t# PAD RADIUS\n\n# Page 1240\n# ARCTAN SUBROUTINE\n\n\n# CALLING SEQUENCE\n\n#\tSIN THETA IN SINTH B-1\n#\tCOS THETA IN COSTH B-1\n#\tCALL ARCTAN\n\n# OUTPUT\n#\tARCTAN THETA IN MPAC AND THETA B-0 IN RANGE -1/2 TO +1/2\n\nARCTAN\t\tBOV\n\t\t\tCLROVFLW\nCLROVFLW\tDLOAD\tDSQ\n\t\t\tSINTH\n\t\tPDDL\tDSQ\n\t\t\tCOSTH\n\t\tDAD\n\t\tBZE\tSQRT\n\t\t\tARCTANXX\t# ATAN=0/0  SET THETA=0\n\t\tBDDV\tBOV\n\t\t\tSINTH\n\t\t\tATAN=90\n\t\tSR1\tASIN\n\t\tSTORE\tTHETA\n\t\tPDDL\tBMN\n\t\t\tCOSTH\n\t\t\tNEGCOS\n\t\tDLOAD\tRVQ\nNEGCOS\t\tDLOAD\tDCOMP\n\t\tBPL\tDAD\n\t\t\tNEGOUT\n\t\t\tDP1/2\nARCTANXX\tSTORE\tTHETA\n\t\tRVQ\n\nNEGOUT\t\tDSU\tGOTO\n\t\t\tDP1/2\n\t\t\tARCTANXX\nATAN=90\t\tDLOAD\tSIGN\n\t\t\tLODP1/4\n\t\t\tSINTH\n\t\tSTORE\tTHETA\n\t\tRVQ\n\n2DZERO\t\t=\tDPZERO\n\n# Page 1241\n# ***** SETGAMMA SUBROUTINE *****\n# SUBROUTINE TO SET GAMMA FOR THE LAT-LONG AND LALOTORV SUBROUTINES\n\n# GAMMA = B**2/A**2 FOR EARTH (B-1)\n# GAMMA = 1 FOR MOON (B-1)\n\n# CALLING SEQUENCE\n# \tL\tCALL\n# \tL+1\t\tSETGAMMA\n\n# INPUT\n# \tLUNAFLAG=0 FOR EARTH,=1 FOR MOON\n\n# OUTPUT\n# \tGAMMA IN GAMRP (B-1)\n\nSETGAMMA\tDLOAD\tBOFF\t\t# BRANCH FOR EARTH\n\t\t\tB2/A2\t\t# EARTH GAMMA\n\t\t\tLUNAFLAG\n\t\t\tSETGMEX\n\t\tSLOAD\n\t\t\t1B1\t\t# MOON GAMMA\nSETGMEX\t\tSTORE\tGAMRP\n\t\tRVQ\nGAMRP\t\t=\t8D\n\n# Page 1242\n# ***** SETRE SUBROUTINE *****\n# SUBROUTINE TO SET RE (EARTH OR MOON RADIUS)\n\n#\tRE= RM FOR MOON\n#\tRE= RREF FOR FIXED EARTH RADIUS OR COMPUTED RF FOR FISCHER ELLIPSOID\n\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tSETRE\n\n# SUBROUTINES USED\n#\tGETERAD\n\n# INPUT\n#\tERADFLAG=0 FOR FIXED RE, 1 FOR COMPUTED RE\n#\tALPHAV +4= 1/2 SINL IF GETERAD IS CALLED\n#\tLUNAFLAG=0 FOR EARTH,=1 FOR MOON\n\n# OUTPUT\n#\tERADM= 504RM FOR MOON (METERS B-29)\n#\tERADM= ERAD OR COMPUTED RF FOR EARTH (METERS B-29)\n\nSETRE\t\tSTQ\tDLOAD\n\t\t\tSETREX\n\t\t\t504RM\n\t\tBON\tDLOAD\t\t# BRANCH FOR MOON\n\t\t\tLUNAFLAG\n\t\t\tTSTRLSRM\n\t\t\tERAD\n\t\tBOFF\tCALL\t\t# ERADFLAG=0 FOR FIXED RE,1 FOR COMPUTED\n\t\t\tERADFLAG\n\t\t\tSETRXX\n\t\t\tGETERAD\nSETRXX\t\tSTCALL\tERADM\t\t# EXIT WITH RE OR RM METERS B-29\n\t\t\tSETREX\nTSTRLSRM\tBON\tVLOAD\t\t# ERADFLAG=0,SET R0=RLS\n\t\t\tERADFLAG\t#         =1      R0=RM\n\t\t\tSETRXX\n\t\t\tRLS\n\t\tABVAL\tSR2R\t\t# SCALE FROM B-27 TO B-29\n\t\tGOTO\n\t\t\tSETRXX\nSETREX\t\t=\tS2\n504RM\t\t2DEC\t1738090 B-29\t# METERS B-29 (MOON RADIUS)\n\n"
  },
  {
    "path": "Comanche055/LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 785-788\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-12 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname and Comanche 055 page images.\n#\t\t2009-07-26 RSB\tAdded annotations related to computation\n#\t\t\t\tof the ephemeral(?) polynomials.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 785\n# LUNAR AND SOLAR EPHEMERIDES SUBROUTINES\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tTHESE SUBROUTINES ARE USED TO DETERMINE THE POSITION AND VELOCITY\n#\tVECTORS OF THE SUN AND THE MOON RELATIVE TO THE EARTH AT THE\n#\tSPECIFIED GROUND ELAPSED TIME INPUT BY THE USER.\n#\n#\tTHE POSITION OF THE MOON IS STORED IN THE COMPUTER IN THE FORM OF\n#\tA NINTH DEGREE POLYNOMIAL APPROXIMATION WHICH IS VALID OVER A 15\n#\tDAY INTERVAL BEGINNING SHORTLY BEFORE LAUNCH.  THEREFORE THE TIME\n#\tINPUT BY THE USER SHOULD FALL WITHIN THIS 15 DAY INTERVAL.\n#\n#\tLSPOS COMPUTES THE POSITION VECTORS OF THE SUN AND THE MOON.\n#\n#\tLUNPOS COMPUTES THE POSITION VECTOR OF THE MOON.\n#\n#\tLUNVEL COMPUTES THE VELOCITY VECTOR OF THE MOON.\n#\n#\tSOLPOS COMPUTES THE POSITION VECTOR OF THE SUN.\n#\n# CALLING SEQUENCE\n#\n#\tDLOAD\tCALL\n#\t\tTIME\t\tGROUND ELAPSED TIME\n#\t\tSUBROUTINE\tLSPOS OR LUNPOS OR LUNVEL OR SOLPOS\n#\n# INPUT\n#\n#\t1) SPECIFIED GROUND ELAPSED TIME IN CS x B-28 LOADED IN MPAC.\n#\n#\t2) TIMEMO - TIME AT THE CENTER OF THE RANGE OVER WHICH THE LUNAR\n#\t   POSITION POLYNOMIAL IS VALID IN CS x B-42.\n#\n#\t3) VECOEM - VECTOR COEFFICIENTS OF THE LUNAR POSITION POLYNOMIAL\n#\t   LOADED IN DESCENDING SEQUENCE IN METERS/CS**N x B-2\n#\n#\t4) RESO - POSITION VECTOR OF THE SUN RELATIVE TO THE EARTH AT\n#\t   TIMEMO IN METERS x B-38.\n#\n#\t5) VESO - VELOCITY VECTOR OF THE SUN RELATIVE TO THE EARTH AT\n#\t   TIMEMO IN METERS/CS x B-9.\n#\n#\t6) OMEGAES - ANGULAR VELOCITY OF THE VECTOR RESO AT TIMEMO IN\n#\t   REV/CS x B+26.\n#\n#\tALL EXCEPT THE FIRST INPUT ARE INCLUDED IN THE PRE-LAUNCH\n#\tERASABLE DATA LOAD.\n#\n# OUTPUT - LSPOS\n# Page 786\n#\t1) 2D OF VAC AREA CONTAINS THE POSITION VECTOR OF THE SUN RELATIVE\n#\t   TO THE EARTH AT TIME INPUT BY THE USER IN METERS x B-38.\n#\n#\t2) MPAC CONTAINS THE POSITION VECTOR OF THE MOON RELATIVE TO THE\n#\t   EARTH AT TIME INPUT BY THE USER IN METERS x B-29.\n#\n# OUTPUT - LUNPOS\n#\n#\tMPAC CONTAINS THE POSITION VECTOR OF THE MOON RELATIVE TO THE\n#\tEARTH AT THE TIME INPUT BY USER IN METERS x B-29.\n#\n# OUTPUT - LUNVEL\n#\n#\tMPAC CONTAINS THE VELOCITY VECTOR OF THE MOON RELATIVE TO THE\n#\tEARTH AT THE TIME INPUT BY THE USER IN METERS/CS x B-7.\n#\n# OUTPUT - SOLPOS\n#\n#\tMPAC CONTAINS THE POSITION VECTOR OF THE SUN RELATIVE TO THE EARTH\n#\tAT TIME INPUT BY THE USER IN METERS x B-38.\n#\n# SUBROUTINES USED\n#\n#\tNONE\n#\n# REMARKS\n#\n#\tTHE VAC AREA IS USED FOR STORAGE OF INTERMEDIATE AND FINAL RESULTS\n#\tOF COMPUTATIONS.\n#\n#\tS1, X1 AND X2 ARE USED BY THESE SUBROUTINES.\n#\tPRELAUNCH ERASABLE DATA LOAD ARE ONLY ERASABLE STORAGE USED BY\n#\tTHESE SUBROUTINES.\n#\tRESTARTS DURING OPERATION OF THESE SUBROUTINES MUST BE HANDLED BY\n#\tTHE USER.\n\n\t\tBANK\t36\n\t\tSETLOC\tEPHEM\n\t\tBANK\n\n\t\tCOUNT*\t$$/EPHEM\n\t\tEBANK=\tEND-E7\nLSPOS\t\tAXT,2\t\t\t# COMPUTES POSITION VECTORS OF BOTH THE\n\t\t\tRESA\t\t# SUN AND THE MOON.  THE POSITION VECTOR\n\t\tAXT,1\tGOTO\t\t# OF THE SUN IS STORED IN 2D OF THE VAC\n\t\t\tRES\t\t# AREA.  THE POSITION VECTOR OF THE MOON\n\t\t\tLSTIME\t\t# IS STORED IN MPAC.\nLUNPOS\t\tAXT,1\tGOTO\t\t# COMPUTES THE POSITION VECTOR OF THE MOON\n\t\t\tREM\t\t# AND STORES IT IN MPAC.\n\t\t\tLSTIME\n# Page 787\nLUNVEL\t\tAXT,1\tGOTO\t\t# COMPUTES THE VELOCITY VECTOR OF THE MOON\n\t\t\tVEM\t\t# AND STORES IT IN MPAC.\n\t\t\tLSTIME\nSOLPOS\t\tSTQ\tAXT,1\t\t# COMPUTES THE POSITION VECTOR OF THE SUN\n\t\t\tX2\t\t# AND STORES IT IN MPAC.\n\t\t\tRES\nLSTIME\t\tSETPD\tSR\n\t\t\t0D\n\t\t\t14D\n\t\tTAD\tDCOMP\n\t\t\tTEPHEM\n\t\tTAD\tDCOMP\n\t\t\tTIMEMO\n\t\tSL\tSSP\n\t\t\t16D\n\t\t\tS1\n\t\t\t6D\n\t\tGOTO\n\t\t\tX1\nRES\t\tPUSH\tDMP\t\t#\t\t\t\t\tPD- 2\n\t\t\tOMEGAES\n\t\tPUSH\tCOS\t\t#\t\t\t\t\tPD- 4\n\t\tVXSC\tPDDL\t\t#\t\t\t\t\tPD- 8\n\t\t\tRESO\n\t\tSIN\tPDVL\t\t#\t\t\t\t\tPD-10\n\t\t\tRESO\n\t\tPUSH\tUNIT\t\t#\t\t\t\t\tPD-16\n\t\tVXV\tUNIT\n\t\t\tVESO\n\t\tVXV\tVSL1\t\t#\t\t\t\t\tPD-10\n\t\tVXSC\tVAD\t\t#\t\t\t\t\tPD-02\n\t\tVSL1\tGOTO\t\t# RES IN METERS x B-38 IN MPAC.\n\t\t\tX2\nRESA\t\tSTODL\t2D\t\t# RES IN METERS x B-38 IN 2D OF VAC.\tPD- 0\nREM\t\tAXT,1\tPDVL\t\t#\t\t\t\t\tPD- 2\n\t\t\t54D\n\t\t\tVECOEM\nREMA\t\tVXSC\tVAD*\n\t\t\t0D\n\t\t\tVECOEM +60D,1\n\t\tTIX,1\tVSL2\t\t# REM IN METERS x B-29 IN MPAC.\n\t\t\tREMA\n\t\tRVQ\nVEM\t\tAXT,1\tPDDL\t\t#\t\t\t\t\tPD- 2\n\t\t\t48D\n\t\t\tNINEB4\n\t\tPUSH\tVXSC\t\t#\t\t\t\t\tPD- 4\n\t\t\tVECOEM\nVEMA\t\tVXSC\n\t\t\t0D\n# Page 788\n\t\tSTODL\t4D\t\t#\t\t\t\t\tPD- 2\n\t\tDSU\tPUSH\t\t#\t\t\t\t\tPD- 4\n\t\t\tONEB4\n\t\tVXSC*\tVAD\n\t\t\tVECOEM +54D,1\n\t\t\t4D\n\t\tTIX,1\tVSL2\t\t# VEM IN METERS/CS x B-7 IN MPAC.\n\t\t\tVEMA\n\t\tRVQ\nNINEB4\t\t2DEC\t9.0 B-4\n\nONEB4\t\t2DEC\t1.0 B-4\n"
  },
  {
    "path": "Comanche055/LUNAR_LANDMARK_SELECTION_FOR_CM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tLUNAR_LANDMARK_SELECTION_FOR_CM.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim.lawton@gmail.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t936\n# Mod history:\t2009-05-11 JVL\tAdapted from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 936\n\n\n# *** END OF TROUBLE .043 ***\n\n"
  },
  {
    "path": "Comanche055/MAIN.agc",
    "content": "$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\t# pp. 27-35\n\n\t\t\t\t\t\t# p. 36 contains no code.\n# COMERASE\n$ERASABLE_ASSIGNMENTS.agc\t\t\t# pp. 37-130\n\n# COMAID\n$INTERRUPT_LEAD_INS.agc\t\t\t\t# pp. 131-132\n$T4RUPT_PROGRAM.agc\t\t\t\t# pp. 133-169\n$DOWNLINK_LISTS.agc\t\t\t\t# pp. 170-180\n$FRESH_START_AND_RESTART.agc\t\t\t# pp. 181-210\n$RESTART_TABLES.agc\t\t\t\t# pp. 211-221\n$SXTMARK.agc \t\t\t\t\t# pp. 222-235\n$EXTENDED_VERBS.agc\t\t\t\t# pp. 236-267\n$PINBALL_NOUN_TABLES.agc\t\t\t# pp. 268-284\n$CSM_GEOMETRY.agc\t\t\t\t# pp. 285-296\n$IMU_COMPENSATION_PACKAGE.agc\t\t\t# pp. 297-306\n$PINBALL_GAME_BUTTONS_AND_LIGHTS.agc\t\t# pp. 307-389\n$R60_62.agc\t\t\t\t\t# pp. 390-398\n$ANGLFIND.agc\t\t\t\t\t# pp. 399-411\n$GIMBAL_LOCK_AVOIDANCE.agc\t\t\t# pp. 412-413\n$KALCMANU_STEERING.agc\t\t\t\t# pp. 414-419\n$SYSTEM_TEST_STANDARD_LEAD_INS.agc\t\t# pp. 420-422\n$IMU_CALIBRATION_AND_ALIGNMENT.agc\t\t# pp. 423-455\n\n# COMEKISS\n$GROUND_TRACKING_DETERMINATION_PROGRAM.agc\t# pp. 456-459\n$P34-35_P74-75.agc\t\t\t\t# pp. 460-504\n$R31.agc\t\t\t\t\t# pp. 505-510\n$P76.agc\t\t\t\t\t# pp. 511-513\n$R30.agc\t\t\t\t\t# pp. 514-524\n$STABLE_ORBIT.agc\t\t\t\t# pp. 525-532\n\n# TROUBLE\n$P11.agc\t\t\t\t\t# pp. 533-550\n$TPI_SEARCH.agc\t\t\t\t\t# pp. 551-561\n$P20-P25.agc\t\t\t\t\t# pp. 562-634\n$P30-P37.agc\t\t\t\t\t# pp. 635-648\n$P32-P33_P72-P73.agc\t\t\t\t# pp. 649-683\n$P40-P47.agc\t\t\t\t\t# pp. 684-736\n$P51-P53.agc\t\t\t\t\t# pp. 737-784\n$LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc\t# pp. 785-788\n$P61-P67.agc\t\t\t\t\t# pp. 789-818\n$SERVICER207.agc\t\t\t\t# pp. 819-836\n$ENTRY_LEXICON.agc\t\t\t\t# pp. 837-843\n$REENTRY_CONTROL.agc\t\t\t\t# pp. 844-882\n$CM_BODY_ATTITUDE.agc\t\t\t\t# pp. 883-889\n$P37_P70.agc\t\t\t\t\t# pp. 890-933\n$S-BAND_ANTENNA_FOR_CM.agc\t\t\t# pp. 934-935\n$LUNAR_LANDMARK_SELECTION_FOR_CM.agc\t\t# pp. 936\n\n# TVCDAPS\n$TVCINITIALIZE.agc\t\t\t\t# pp. 937-944\n$TVCEXECUTIVE.agc\t\t\t\t# pp. 945-950\n$TVCMASSPROP.agc\t\t\t\t# pp. 951-955\n$TVCRESTARTS.agc\t\t\t\t# pp. 956-960\n$TVCDAPS.agc\t\t\t\t\t# pp. 961-978\n$TVCSTROKETEST.agc\t\t\t\t# pp. 979-983\n$TVCROLLDAP.agc\t\t\t\t\t# pp. 984-998\n$MYSUBS.agc\t\t\t\t\t# pp. 999-1001\n$RCS-CSM_DIGITAL_AUTOPILOT.agc\t\t\t# pp. 1002-1024\n$AUTOMATIC_MANEUVERS.agc\t\t\t# pp. 1025-1036\n$RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc\t\t# pp. 1037-1038\n$JET_SELECTION_LOGIC.agc\t\t\t# pp. 1039-1062\n$CM_ENTRY_DIGITAL_AUTOPILOT.agc\t\t\t# pp. 1063-1092\n\n# CHIEFTAN\n$DOWN-TELEMETRY_PROGRAM.agc\t\t\t# pp. 1093-1102\n$INTER-BANK_COMMUNICATION.agc\t\t\t# pp. 1103-1106\n$INTERPRETER.agc\t\t\t\t# pp. 1107-1199\n$FIXED_FIXED_CONSTANT_POOL.agc\t\t\t# pp. 1200-1204\n$INTERPRETIVE_CONSTANTS.agc\t\t\t# pp. 1205-1206\n$SINGLE_PRECISION_SUBROUTINES.agc\t\t# p.  1207\n$EXECUTIVE.agc\t\t\t\t\t# pp. 1208-1220\n$WAITLIST.agc\t\t\t\t\t# pp. 1221-1235\n$LATITUDE_LONGITUDE_SUBROUTINES.agc\t\t# pp. 1236-1242\n$PLANETARY_INERTIAL_ORIENTATION.agc\t\t# pp. 1243-1251\n$MEASUREMENT_INCORPORATION.agc\t\t\t# pp. 1252-1261\n$CONIC_SUBROUTINES.agc\t\t\t\t# pp. 1262-1308\n$INTEGRATION_INITIALIZATION.agc\t\t\t# pp. 1309-1333\n$ORBITAL_INTEGRATION.agc\t\t\t# pp. 1334-1354\n$INFLIGHT_ALIGNMENT_ROUTINES.agc\t\t# pp. 1355-1364\n$POWERED_FLIGHT_SUBROUTINES.agc\t\t\t# pp. 1365-1372\n$TIME_OF_FREE_FALL.agc\t\t\t\t# pp. 1373-1388\n$STAR_TABLES.agc\t\t\t\t# pp. 1389-1393\n$AGC_BLOCK_TWO_SELF-CHECK.agc\t\t\t# pp. 1394-1403\n$PHASE_TABLE_MAINTENANCE.agc\t\t\t# pp. 1404-1413\n$RESTARTS_ROUTINE.agc\t\t\t\t# pp. 1414-1419\n$IMU_MODE_SWITCHING_ROUTINES.agc\t\t# pp. 1420-1448\n$KEYRUPT_UPRUPT.agc\t\t\t\t# pp. 1449-1451\n$DISPLAY_INTERFACE_ROUTINES.agc\t\t\t# pp. 1452-1484\n$SERVICE_ROUTINES.agc\t\t\t\t# pp. 1485-1492\n$ALARM_AND_ABORT.agc\t\t\t\t# pp. 1493-1496\n$UPDATE_PROGRAM.agc\t\t\t\t# pp. 1497-1507\n$RT8_OP_CODES.agc\t\t\t\t# pp. 1508-1516\n\n\t\t\t\t\t\t# pp. 1517-1751: GAP-generated tables.\n"
  },
  {
    "path": "Comanche055/MEASUREMENT_INCORPORATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tMEASUREMENT_INCORPORATION.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1252-1261\n# Mod history:\t2009-05-14 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1252\n#  INCORP1--PERFORMS THE SIX DIMENSIONAL STATE VECTOR DEVIATION FOR POSITI\n# ON AND VELOCITY OR THE NINE DIMENSIONAL DEVIATION OF POSITION,VELOCITY,A\n# ND RADAR OR LANDMARK BIAS.THE OUTPUT OF THE BVECTOR ROUTINE ALONG WITH T\n# HE ERROR TRANSITION MATRIX(W) ARE USED AS INPUT TO THE ROUTINE.THE DEVIA\n# TION IS OBTAINED BY COMPUTING AN ESTIMATED TRACKING MEASUREMENT FROM THE\n# CURRENT STATE VECTOR AND COMPARING IT WITH AN ACTUAL TRACKING MEASUREMEN\n# T AND APPLYING A STATISTICAL WEIGHTING VECTOR.\n# INPUT\n#   DMENFLG = 0 6DIMENSIONAL BVECTOR  1= 9DIMENSIONAL\n#          W = ERROR TRANSITION MATRIX 6X6 OR 9X9\n#   VARIANCE = VARIANCE (SCALAR)\n#     DELTAQ = MEASURED DEVIATION(SCALAR)\n#    BVECTOR = 6 OR 9 DIMENSIONAL BVECTOR\n#\n# OUTPUT\n#      DELTAX = STATE VECTOR DEVIATIONS 6 OR 9 DIMENSIONAL\n#\t   ZI = VECTOR USED FOR THE INCORPORATION 6 OR 9 DIMENSIONAL\n#     GAMMA = SCALAR\n#     OMEGA = OMEGA WEIGHTING VECTOR 6 OR 9 DIMENSIONAL\n#\n# CALLING SEQUENCE\n#    L  CALL INCORP1\n#\n# NORMAL EXIT\n#    L+1 OF CALLING SEQUENCE\n\n\t\tBANK\t37\n\t\tSETLOC\tMEASINC\n\t\tBANK\n\n\t\tCOUNT*\t$$/INCOR\n\n\t\tEBANK=\tW\n\nINCORP1\t\tSTQ\n\t\t\tEGRESS\n\t\tAXT,1\tSSP\n\t\t\t54D\n\t\t\tS1\n\t\t\t18D\t\t# IX1 = 54 \tS1= 18\n\t\tAXT,2\tSSP\n\t\t\t18D\n\t\t\tS2\n\t\t\t6\t\t# IX2 = 18\tS2=6\nZ123\t\tVLOAD\tMXV*\n\t\t\tBVECTOR\t\t# BVECTOR (0)\n\t\t\tW +54D,1\n\t\tSTORE\tZI +18D,2\n\t\tVLOAD\n\t\t\tBVECTOR +6\t# BVECTOR (1)\n# Page 1253\n\t\tMXV*\tVAD*\n\t\t\tW +108D,1\n\t\t\tZI +18D,2\n\t\tSTORE\tZI +18D,2\n\t\tVLOAD\n\t\t\tBVECTOR +12D\t# BVECTOR (2)\n\t\tMXV*\tVAD*\n\t\t\tW +162D,1\n\t\t\tZI +18D,2\t# B(0)*W+B(1)*(W+54)+B(2)*(W+108)FIRST PAS\n\t\tSTORE\tZI +18D,2\t# ZI THEN Z2 THEN Z3\n\t\tTIX,1\n\t\t\tINCOR1\nINCOR1\t\tTIX,2\tBON\n\t\t\tZ123\t\t# LOOP FOR Z1,Z2,Z3\n\t\t\tDMENFLG\n\t\t\tINCOR1A\n\t\tVLOAD\n\t\t\tZEROVECS\n\t\tSTORE\tZI +12D\nINCOR1A\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tZI\n\t\tVSQ\tRTB\n\t\t\tTPMODE\n\t\tPDVL\tVSQ\n\t\t\tZI +6\n\t\tRTB\tTAD\n\t\t\tTPMODE\n\t\tPDVL\tVSQ\n\t\t\tZI +12D\n\t\tRTB\tTAD\n\t\t\tTPMODE\n\t\tTAD\tAXT,2\n\t\t\tVARIANCE\n\t\t\t0\n\t\tSTORE\tTRIPA\t\t# ZI*2 + Z2*2 + Z3*2 + VARIANCE\n\t\tTLOAD\tBOV\n\t\t\tVARIANCE\t# CLEAR OVFIND\n\t\t\t+1\n\t\tSTORE\tTEMPVAR\t\t# TEMP STORAGE FOR VARIANCE\n\t\tBZE\n\t\t\tINCOR1C\nINCOR1B\t\tSL2\tBOV\n\t\t\tINCOR1C\n\t\tSTORE\tTEMPVAR\n\t\tINCR,2\tGOTO\n\t\tDEC\t1\n\t\t\tINCOR1B\nINCOR1C\t\tTLOAD\tROUND\n\t\t\tTRIPA\n# Page 1254\n\t\tDMP\tSQRT\n\t\t\tTEMPVAR\n\t\tSL*\tTAD\n\t\t\t0,2\n\t\t\tTRIPA\n\t\tNORM\tINCR,2\n\t\t\tX2\n\t\tDEC\t-2\n\t\tSXA,2\tAXT,2\n\t\t\tNORMGAM\t\t# NORMALIZATION COUNT -2 FOR GAMMA\n\t\t\t162D\n\t\tBDDV\tSETPD\n\t\t\tDP1/4TH\n\t\t\t0\n\t\tSTORE\tGAMMA\n\t\tTLOAD\tNORM\n\t\t\tTRIPA\n\t\t\tX1\n\t\tDLOAD\tPDDL\t\t# PD 0-1 = NORM (A)\n\t\t\tMPAC\n\t\t\tDELTAQ\n\t\tNORM\n\t\t\tS1\n\t\tXSU,1\tSR1\n\t\t\tS1\n\t\tDDV\tPUSH\t\t# PD 0-1 = DELTAQ/A\n\t\tGOTO\n\t\t\tNEWZCOMP\n   -3\t\tSSP\n\t\t\tS2\n\t\t\t54D\nINCOR2\t\tVLOAD\tVXM*\t\t# COMPUT OMEGA1,2,3\n\t\t\tZI\n\t\t\tW +162D,2\n\t\tPUSH\tVLOAD\n\t\t\tZI +6\n\t\tVXM*\tVAD\n\t\t\tW +180D,2\n\t\tPUSH\tVLOAD\n\t\t\tZI +12D\n\t\tVXM*\tVAD\n\t\t\tW +198D,2\n\t\tPUSH\tTIX,2\t\t# PD 2-7=OMEGA1,8-13=OMEGA2,14-19=OMEGA3\n\t\t\tINCOR2\n\t\tVLOAD\tSTADR\n\t\tSTORE\tOMEGA +12D\n\t\tVLOAD\tSTADR\n\t\tSTORE\tOMEGA +6\n\t\tVLOAD\tSTADR\n\t\tSTORE\tOMEGA\n# Page 1255\n\t\tBON\tVLOAD\n\t\t\tDMENFLG\n\t\t\tINCOR2AB\n\t\t\tZEROVECS\n\t\tSTORE\tOMEGA +12D\nINCOR2AB\tAXT,2\tSSP\n\t\t\t18D\n\t\t\tS2\n\t\t\t6\nINCOR3\t\tVLOAD*\n\t\t\tOMEGA +18D,2\n\t\tVXSC\tVSL*\n\t\t\t0\t\t# DELTAQ/A\n\t\t\t0,1\n\t\tSTORE\tDELTAX +18D,2\n\t\tTIX,2\tVLOAD\n\t\t\tINCOR3\n\t\t\tDELTAX +6\n\t\tVSL3\n\t\tSTORE\tDELTAX +6\n\t\tGOTO\n\t\t\tEGRESS\n\n# Page 1256\n#  INCORP2 -INCORPORATES THE COMPUTED STATE VECTOR DEVIATIONS INTO THE\n# ESTIMATED STATE VECTOR. THE STATE VECTOR UPDATED MAY BE FOR EITHER THE\n# LEM OR THE CSM.DETERMINED BY FLAG VEHUPFLG.(ZERO = LEM) (1 = CSM)\n# INPUT\n#    PERMANENT STATE VECTOR FOR EITHER THE LEM OR CSM\n#    VEHUPFLG = UPDATE VEHICLE C=LEM  1=CSM\n#    W = \tERROR TRANSITION MATRIX\n#    DELTAX  = \tCOMPUTED STATE VECTOR DEVIATIONS\n#    DMENFLG = \tSIZE OF W MATRIX (ZERO=6X6) (1=9X9)\n#    GAMMA   = \tSCALAR FOR INCORPORATION\n#    ZI      = \tVECTOR USED IN INCORPORATION\n#    OMEGA   = \tWEIGHTING VECTOR\n#\n# OUTPUT\n#    UPDATED PERMANENT STATE VECTOR\n#\n# CALLING SEQUENCE\n#    L\t CALL INCORP2\n#\n# NORMAL EXIT\n#    L+1 OF CALLING SEQUENCE\n#\n\n\t\tSETLOC\tMEASINC1\n\t\tBANK\n\n\t\tCOUNT*\t$$/INCOR\n\nINCORP2\t\tSTQ\tCALL\n\t\t\tEGRESS\n\t\t\tINTSTALL\n\t\tVLOAD\tVXSC\t\t# CALC. GAMMA * OMEGA1,2,3\n\t\t\tOMEGA\n\t\t\tGAMMA\n\t\tSTOVL\tOMEGAM1\n\t\t\tOMEGA +6\n\t\tVXSC\n\t\t\tGAMMA\n\t\tSTOVL\tOMEGAM2\n\t\t\tOMEGA +12D\n\t\tVXSC\n\t\t\tGAMMA\n\t\tSTORE\tOMEGAM3\n\t\tEXIT\n\t\tCAF\t54DD\t\t# INITIAL IX 1 SETTING FOR W MATRIX\n\t\tTS\tWIXA\n\t\tTS\tWIXB\n\t\tCAF\tZERO\n\t\tTS\tZIXA\t\t# INITIAL IX 2 SETTING FOR Z COMPONENT\n\t\tTS\tZIXB\nFAZA\t\tTC\tPHASCHNG\n# Page 1257\n\t\tOCT\t04022\n\t\tTC\tUPFLAG\n\t\tADRES\tREINTFLG\nFAZA1\t\tCA\tWIXB\t\t# START FIRST PHASE OF INCORP2\n\t\tTS\tWIXA\t\t#  TO UPDATE 6 OR 9 DIM. W MATRIX IN TEMP\n\t\tCA\tZIXB\n\t\tTS\tZIXA\n\t\tTC\tINTPRET\n\t\tLXA,1\tLXA,2\n\t\t\tWIXA\n\t\t\tZIXA\n\t\tSSP\tDLOAD*\n\t\t\tS1\n\t\t\t6\n\t\t\tZI,2\n\t\tDCOMP\tNORM\t\t# CALC UPPER 3X9 PARTITION OF W MATRIX\n\t\t\tS2\n\t\tVXSC\tXCHX,2\n\t\t\tOMEGAM1\n\t\t\tS2\n\t\tLXC,2\tXAD,2\n\t\t\tX2\n\t\t\tNORMGAM\n\t\tVSL*\tXCHX,2\n\t\t\t0,2\n\t\t\tS2\n\t\tVAD*\n\t\t\tW +54D,1\n\t\tSTORE\tHOLDW\n\t\tDLOAD*\tDCOMP\t\t# CALC MIDDLE 3X9 PARTITION OF W MATRIX\n\t\t\tZI,2\n\t\tNORM\tVXSC\n\t\t\tS2\n\t\t\tOMEGAM2\n\t\tXCHX,2\tLXC,2\n\t\t\tS2\n\t\t\tX2\n\t\tXAD,2\tVSL*\n\t\t\tNORMGAM\n\t\t\t0,2\n\t\tXCHX,2\tVAD*\n\t\t\tS2\n\t\t\tW +108D,1\n\t\tSTORE\tHOLDW +6\n\t\tBOFF\n\t\t\tDMENFLG\t\t# BRANCH IF 6 DIMENSIONAL\n\t\t\tFAZB\n\t\tDLOAD*\tDCOMP\t\t# CALC LOWER 3X9 PARTITION OF W MATRIX\n\t\t\tZI,2\n\t\tNORM\tVXSC\n# Page 1258\n\t\t\tS2\n\t\t\tOMEGAM3\n\t\tXCHX,2\tLXC,2\n\t\t\tS2\n\t\t\tX2\n\t\tXAD,2\tVSL*\n\t\t\tNORMGAM\n\t\t\t0,2\n\t\tXCHX,2\tVAD*\n\t\t\tS2\n\t\t\tW +162D,1\n\t\tSTORE\tHOLDW +12D\nFAZB\t\tCALL\n\t\t\tGRP2PC\n\t\tEXIT\nFAZB1\t\tCA\tWIXA\t\t# START 2ND PHASE OF INCORP2 TO TRANSFER\n\t\tAD\t6DD\t\t#     TEMP REG TO PERM W MATRIX\n\t\tTS\tWIXB\n\t\tCA\tZIXA\n\t\tAD\tMINUS2\n\t\tTS\tZIXB\n\t\tTC\tINTPRET\n\t\tLXA,1\tSSP\n\t\t\tWIXA\n\t\t\tS1\n\t\t\t6\n\t\tVLOAD\n\t\t\tHOLDW\n\t\tSTORE\tW +54D,1\n\t\tVLOAD\n\t\t\tHOLDW +6\n\t\tSTORE\tW +108D,1\n\t\tBOFF\tVLOAD\n\t\t\tDMENFLG\n\t\t\tFAZB5\n\t\t\tHOLDW +12D\n\t\tSTORE\tW +162D,1\nFAZB2\t\tTIX,1\tGOTO\n\t\t\t+2\n\t\t\tFAZC\t\t# DONE WITH W MATRIX. UPDATE STATE VECTOR\n\t\tRTB\n\t\t\tFAZA\nFAZB5\t\tSLOAD\tDAD\n\t\t\tZIXB\n\t\t\t12DD\n\t\tBHIZ\tGOTO\n\t\t\tFAZC\n\t\t\tFAZB2\nFAZC\t\tCALL\n\t\t\tGRP2PC\n# Page 1259\n\t\tVLOAD\tVAD\t\t# START 3RD PHASE OF INCORP2\n\t\t\tX789\t\t# 7TH,8TH,9TH,COMPONENT OF STATE VECTOR\n\t\t\tDELTAX +12D\t# INCORPORATION FOR X789\n\t\tSTORE\tTX789\n\t\tBON\tRTB\n\t\t\tVEHUPFLG\n\t\t\tDOCSM\n\t\t\tMOVEPLEM\nFAZAB\t\tBOVB\tAXT,2\n\t\t\tTCDANZIG\n\t\t\t0\n\t\tBOFF\tAXT,2\n\t\t\tMOONTHIS\n\t\t\t+2\n\t\t\t2\n\t\tVLOAD\tVSR*\n\t\t\tDELTAX\t\t# B27 IF MOON ORBIT, B29 IF EARTH\n\t\t\t0 -7,2\n\t\tVAD\tBOV\n\t\t\tTDELTAV\n\t\t\tFAZAB1\n\t\tSTOVL\tTDELTAV\n\t\t\tDELTAX +6\t# B5 IF MOON ORBIT, B7 IF EARTH\n\t\tVSR*\tVAD\n\t\t\t0 -4,2\n\t\t\tTNUV\n\t\tBOV\n\t\t\tFAZAB2\n\t\tSTCALL\tTNUV\n\t\t\tFAZAB3\nFAZAB1\t\tVLOAD\tVAD\n\t\t\tRCV\n\t\t\tDELTAX\n\t\tSTORE\tRCV\nFAZAB2\t\tVLOAD\tVAD\n\t\t\tVCV\n\t\t\tDELTAX +6\n\t\tSTORE\tVCV\n\t\tSXA,2\tCALL\n\t\t\tPBODY\n\t\t\tRECTIFY\nFAZAB3\t\tCALL\n\t\t\tGRP2PC\n\t\tBON\tRTB\n\t\t\tVEHUPFLG\n\t\t\tDOCSM1\n\t\t\tMOVEALEM\n\t\tCALL\n\t\t\tSVDWN2\t\t# STORE DOWNLINK STATE VECTOR\nFAZAB4\t\tCALL\n# Page 1260\n\t\t\tGRP2PC\t\t# PHASE CHANGE\n\t\tBOFF\tVLOAD\n\t\t\tDMENFLG\n\t\t\tFAZAB5\t\t# 6 DIMENSIONAL\n\t\t\tTX789\t\t# 9 DIMENSIONAL\n\t\tSTORE\tX789\nFAZAB5\t\tLXA,1\tSXA,1\n\t\t\tEGRESS\n\t\t\tQPRET\n\t\tEXIT\n\t\tTC\tPOSTJUMP\t# EXIT\n\t\tCADR\tINTWAKE\nDOCSM\t\tRTB\tGOTO\n\t\t\tMOVEPCSM\n\t\t\tFAZAB\nDOCSM1\t\tRTB\tCALL\n\t\t\tMOVEACSM\n\t\t\tSVDWN1\t\t# STORE DOWNLINK STATE VECTOR\n\t\tGOTO\n\t\t\tFAZAB4\nZEROD\t\t=\tZEROVECS\n54DD\t\tDEC\t54\n6DD\t\tDEC\t-6\n12DD\t\tDEC\t12\n\t\tSETLOC\tMEASINC2\n\t\tBANK\n\t\tCOUNT*\t$$/INCOR\n\nNEWZCOMP\tVLOAD\tABVAL\n\t\t\tZI\n\t\tSTOVL\tNORMZI\n\t\t\tZI +6\n\t\tABVAL\tPUSH\n\t\tDSU\tBMN\n\t\t\tNORMZI\n\t\t\t+3\n\t\tDLOAD\tSTADR\n\t\tSTORE\tNORMZI\n\t\tVLOAD\tABVAL\n\t\t\tZI +12D\n\t\tPUSH\tDSU\n\t\t\tNORMZI\n\t\tBMN\tDLOAD\n\t\t\tNEWZCMP1\n\t\tSTADR\n\t\tSTCALL\tNORMZI\t\t# LARGEST ABVAL\n\t\t\tNEWZCMP1\n\n\t\tSETLOC\tMEASINC3\n\t\tBANK\n# Page 1261\nNEWZCMP1\t\tDLOAD\tSXA,1\n\t\t\tNORMZI\n\t\t\tNORMZI\t\t# SAVE X1\n\t\tNORM\tINCR,1\n\t\t\tX1\n\t\tDEC\t2\n\t\tVLOAD\tVSL*\n\t\t\tZI\n\t\t\t0,1\n\t\tSTOVL\tZI\n\t\t\tZI +6\n\t\tVSL*\n\t\t\t0,1\n\t\tSTOVL\tZI +6\n\t\t\tZI +12D\n\t\tVSL*\tSXA,1\n\t\t\t0,1\n\t\t\tNORMZI +1\t# SAVE SHIFT\n\t\tSTORE\tZI +12D\n\t\tLXA,1\tXSU,1\n\t\t\tNORMGAM\n\t\t\tNORMZI +1\n\t\tXSU,1\n\t\t\tNORMZI +1\n\t\tSXA,1\tLXC,1\n\t\t\tNORMGAM\n\t\t\tNORMZI +1\n\t\tXAD,1\tSETPD\n\t\t\tNORMZI\n\t\t\t2D\n\t\tGOTO\n\t\t\tINCOR2 -3\nNORMZI\t\t=\t36D\n"
  },
  {
    "path": "Comanche055/MYSUBS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tMYSUBS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t999-1001\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrections: EBANK= changed from MPAC to KMPAC.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 999\n\t\tBANK\t20\n\t\tSETLOC\tMYSUBS\n\t\tBANK\n\n\t\tEBANK=\tKMPAC\nSPCOS1\t\tEQUALS\tSPCOS\nSPSIN1\t\tEQUALS\tSPSIN\nSPCOS2\t\tEQUALS\tSPCOS\nSPSIN2\t\tEQUALS\tSPSIN\n\n\n\t\tCOUNT\t21/DAPMS\n\n# ONE AND ONE HALF PRECISION MULTIPLICATION ROUTINE\n\nSMALLMP\t\tTS\tKMPTEMP\t\t# A(X+Y)\n\t\tEXTEND\n\t\tMP\tKMPAC \t+1\n\t\tTS\tKMPAC \t+1\t# AY\n\t\tCAF\tZERO\n\t\tXCH\tKMPAC\n\t\tEXTEND\n\t\tMP\tKMPTEMP\t\t# AX\n\t\tDAS\tKMPAC\t\t# AX+AY\n\t\tTC\tQ\n\n\n# SUBROUTINE FOR DOUBLE PRECISION ADDITIONS OF ANGLES\n# A AND L CONTAIN A DP(1S) ANGLE SCALED BY 180 DEGS TO BE ADDED TO KMPAC.\n# RESULT IS PLACED IN KMPAC.  TIMING = 6 MCT (22 MCT ON OVERFLOW)\n\nDPADD\t\tDAS\tKMPAC\n\t\tEXTEND\n\t\tBZF\tTSK \t+1\t# NO OVERFLOW\n\t\tCCS\tKMPAC\n\t\tTCF\tDPADD+\t\t# + OVERFLOW\n\t\tTCF\t+2\n\t\tTCF\tDPADD-\t\t# - OVERFLOW\n\t\tCCS\tKMPAC \t+1\n\t\tTCF\tDPADD2+\t\t# UPPER = 0, LOWER +\n\t\tTCF\t+2\n\t\tCOM\t\t\t# UPPER = 0, LOWER -\n\t\tAD\tPOSMAX\t\t# LOWER = 0, A=0\n\t\tTS\tKMPAC \t+1\t# CAN NOT OVERFLOW\n\t\tCA\tPOSMAX\t\t# UPPER WAS = 0\nTSK\t\tTS\tKMPAC\n\t\tTC\tQ\n\nDPADD+\t\tAD\tNEGMAX\t\t# KMPAC GREATER THAN 0\n\t\tTCF\tTSK\n\n# Page 1000\nDPADD-\t\tCOM\n\t\tAD\tPOSMAX\t\t# KMPAC LESS THAN 0\n\t\tTCF\tTSK\n\nDPADD2+\t\tAD\tNEGMAX\t\t# CAN NOT OVERFLOW\n\t\tTS\tKMPAC \t+1\n\t\tCA\tNEGMAX\t\t# UPPER WAS = 0\n\t\tTCF\tTSK\n\n# Page 1001 (empty page)\n"
  },
  {
    "path": "Comanche055/ORBITAL_INTEGRATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tORBITAL_INTEGRATION.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1334-1354\n# Mod history:\t2009-05-14 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrections:  DAT -> DAD in one place,\n#\t\t\t\tBWM -> BMN, DEFEQCNT -> DIFEQCNT.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1334\n# ORBITAL INTEGRATION\n\n# DELETE\n\t\tBANK\t13\n\t\tSETLOC\tORBITAL\n\t\tBANK\n\t\tCOUNT\t11/ORBIT\n\n# DELETE\nKEPPREP\t\tLXA,2\tSETPD\n\t\t\tPBODY\n\t\t\t0\n\t\tDLOAD*\tSQRT\t\t# SQRT(MU) (+18 OR +15) 0D\t\tPL 2D\n\t\t\tMUEARTH,2\n\t\tPDVL\tUNIT\t\t#\t\t\t\t\tPL 8D\n\t\t\tRCV\n\t\tPDDL\tNORM\t\t# NORM R (+29 OR +27 - N1) 2D\t\tPL 4D\n\t\t\t36D\n\t\t\tX1\n\t\tPDVL\n\t\tDOT\tPDDL\t\t# F*SQRT(MU)(+7 OR +5) 4D\tPL 6D\n\t\t\tVCV\n\t\t\tTAU.\t\t# (+28)\n\t\tDSU\tNORM\n\t\t\tTC\n\t\t\tS1\n\t\tSR1\n\t\tDDV\tPDDL\n\t\t\t2D\n\t\tDMP\tPUSH\t\t# FS(+6 +N1-N2) 6D\t\tPL 8D\n\t\t\t4D\n\t\tDSQ\tPDDL\t\t# (FS)SQ(+12 +2(N1-N2)) 8D\tPL 10D\n\t\t\t4D\n\t\tDSQ\tPDDL*\t\t# SSQ/MU(-2OR +2(N1-N2)) 10D\t\tPL 12D\n\t\t\tMUEARTH,2\n\t\tSR3\tSR4\n\t\tPDVL\tVSQ\t\t# PREALIGN MU (+43 OR +37) 12D\tPL 14D\n\t\t\tVCV\n\t\tDMP\tBDSU\t\t#\t\t\t\tPL 12D\n\t\t\t36D\n\t\tDDV\tDMP\t\t#\t\t\t\tPL 10D\n\t\t\t2D\t\t# -(1/R-ALPHA)(+12 +3N1-2N2)\n\t\tDMP\tSL*\n\t\t\tDP2/3\n\t\t\t0 \t-3,1\t# 10L(1/R-ALPHA)(+13 +2(N1-N2))\n\t\tXSU,1\tDAD\t\t# 2(FS)SQ - ETCETERA\tPL 8D\n\t\t\tS1\t\t# X1 = N2-N1\n\t\tSL*\tDSU\t\t# -FS+2(FS)SQ ETC (+6 +N1-N2)\tPL 6D\n\t\t\t8D,1\n\t\tDMP\tDMP\n\t\t\t0D\n\t\t\t4D\n\t\tSL*\tSL*\n# Page 1335\n\t\t\t8D,1\n\t\t\t0,1\t\t# S(-FS(1-2FS)-1/6...)(+17 OR +16)\n\t\tDAD\tPDDL\t\t#\t\t\t\tPL 6D\n\t\t\tXKEP\n\t\tDMP\tSL*\t\t# S(+17 OR +16)\n\t\t\t0D\n\t\t\t1,1\n\t\tBOVB\tDAD\n\t\t\tTCDANZIG\n\t\tSTADR\n\t\tSTORE\tXKEPNEW\n\t\tSTQ\tAXC,1\n\t\t\tKEPRTN\n\t\tDEC\t10\n\t\tBON\tAXC,1\n\t\t\tMOONFLAG\n\t\t\tKEPLERN\n\t\tDEC\t2\n\t\tGOTO\n\t\t\tKEPLERN\n\n# Page 1336\nFBR3\t\tLXA,1\tSSP\n\t\t\tDIFEQCNT\n\t\t\tS1\n\t\tDEC\t-13\n\t\tDLOAD\tSR\n\t\t\tDT/2\n\t\t\t9D\n\t\tTIX,1\tROUND\n\t\t\t+1\n\t\tPUSH\tDAD\n\t\t\tTC\n\t\tSTODL\tTAU.\n\t\tDAD\n\t\t\tTET\n\t\tSTCALL\tTET\n\t\t\tKEPPREP\n\n# Page 1337\n# AGC ROUTINE TO COMPUTE ACCELERATION COMPONENTS.\n\nACCOMP\t\tLXA,1\tLXA,2\n\t\t\tPBODY\n\t\t\tPBODY\n\t\tVLOAD\n\t\t\tZEROVEC\n\t\tSTOVL\tFV\n\t\t\tALPHAV\n\t\tVSL*\tVAD\n\t\t\t0 -7,2\n\t\t\tRCV\n\t\tSTORE\tBETAV\n\t\tBOF\tXCHX,2\n\t\t\tDIM0FLAG\n\t\t\t+5\n\t\t\tDIFEQCNT\n\t\tSTORE\tVECTAB,2\n\t\tXCHX,2\n\t\t\tDIFEQCNT\n\t\tVLOAD\tUNIT\n\t\t\tALPHAV\n\t\tSTODL\tALPHAV\n\t\t\t36D\n\t\tSTORE\tALPHAM\n\t\tCALL\n\t\t\tGAMCOMP\n\t\tVLOAD\tSXA,1\n\t\t\tBETAV\n\t\t\tS2\n\t\tSTODL\tALPHAV\n\t\t\tBETAM\n\t\tSTORE\tALPHAM\n\t\tBOF\tDLOAD\n\t\t\tMIDFLAG\n\t\t\tOBLATE\n\t\t\tTET\n\t\tCALL\n\t\t\tLSPOS\n\t\tAXT,2\tLXA,1\n\t\t\t2\n\t\t\tS2\n\t\tBOF\n\t\t\tMOONFLAG\n\t\t\t+3\n\t\tVCOMP\tAXT,2\n\t\t\t0\n\t\tSTORE\tBETAV\n\t\tSTOVL\tRPQV\n# Page 1338\n\t\t\t2D\n\t\tSTORE\tRPSV\n\t\tBOF\tVLOAD\n\t\t\tDIM0FLAG\n\t\t\tGETRPSV\n\t\t\tALPHAV\n\t\tVXSC\tVSR*\n\t\t\tALPHAM\n\t\t\t1,2\n\t\tVSU\tXCHX,2\n\t\t\tBETAV\n\t\t\tDIFEQCNT\n\t\tSTORE\tVECTAB +6,2\n\t\tXCHX,2\n\t\t\tDIFEQCNT\nGETRPSV\t\tVLOAD\tINCR,1\n\t\t\tRPQV\n\t\t\t4\n\t\tCLEAR\tBOF\n\t\t\tRPQFLAG\n\t\t\tMOONFLAG\n\t\t\t+5\n\t\tVSR\tVAD\n\t\t\t9D\n\t\t\tRPSV\n\t\tSTORE\tRPSV\n\t\tCALL\n\t\t\tGAMCOMP\n\t\tAXT,2\tINCR,1\n\t\t\t4\n\t\t\t4\n\t\tVLOAD\n\t\t\tRPSV\n\t\tSTCALL\tBETAV\n\t\t\tGAMCOMP\n\t\tGOTO\n\t\t\tOBLATE\nGAMCOMP\t\tVLOAD\tVSR1\n\t\t\tBETAV\n\t\tVSQ\tSETPD\n\t\t\t0\n\t\tNORM\tROUND\n\t\t\t31D\n\t\tPDDL\tNORM\t\t# NORMED B SQUARED TO PD LIST\n\t\t\tALPHAM\t\t# NORMALIZE (LESS ONE) LENGTH OF ALPHA\n\t\t\t32D\t\t# SAVING NORM SCALE FACTOR IN X1\n\t\tSR1\tPDVL\n\t\t\tBETAV\t\t# C(PDL+2) = ALMOST NORMED ALPHA\n\t\tUNIT\n\t\tSTODL\tBETAV\n# Page 1339\n\t\t\t36D\n\t\tSTORE\tBETAM\n\t\tNORM\tBDDV\t\t# FORM NORMALIZED QUOTIENT ALPHAM/BETAM\n\t\t\t33D\n\t\tSR1R\tPUSH\t\t# C(PDL+2) = ALMOST NORMALIZED RHO.\n\t\tDLOAD*\n\t\t\tASCALE,1\n\t\tSTORE\tS1\n\t\tXCHX,2\tXAD,2\n\t\t\tS1\n\t\t\t32D\n\t\tXSU,2\tDLOAD\n\t\t\t33D\n\t\t\t2D\n\t\tSR*\tXCHX,2\n\t\t\t0 \t-1,2\n\t\t\tS1\n\t\tPUSH\tSR1R\t\t# RHO/4 TO 4D\n\t\tPDVL\tDOT\n\t\t\tALPHAV\n\t\t\tBETAV\n\t\tSL1R\tBDSU\t\t# (RHO/4) - 2(ALPHAV/2.BETAV/2)\n\t\tPUSH\tDMPR\t\t# TO PDL+6\n\t\t\t4\n\t\tSL1\n\t\tPUSH\tDAD\n\t\t\tDQUARTER\n\t\tPUSH\tSQRT\n\t\tDMPR\tPUSH\n\t\t\t10D\n\t\tSL1\tDAD\n\t\t\tDQUARTER\n\t\tPDDL\tDAD\t\t# (1/4)+2((Q+1)/4)\tTO PD+14D\n\t\t\t10D\n\t\t\tHALFDP\n\t\tDMPR\tSL1\n\t\t\t8D\n\t\tDAD\tDDV\n\t\t\tTHREE/8\n\t\t\t14D\n\t\tDMPR\tVXSC\n\t\t\t6\n\t\t\tBETAV\n\t\tPDVL\tVSR3\t\t# (G/2)(C(PD+4))B/2 TO PD+16D\n\t\t\tALPHAV\n\t\tVAD\tPUSH\t\t# A12 + C(PD+16D) TO PD+16D\n\t\tDLOAD\tDMP\n\t\t\t0\n\t\t\t12D\n\t\tNORM\tROUND\n# Page 1340\n\t\t\t30D\n\t\tBDDV\tDMP*\n\t\t\t2\n\t\t\tMUEARTH,2\n\t\tDCOMP\tVXSC\n\t\tXCHX,2\tXAD,2\n\t\t\tS1\n\t\t\tS2\n\t\tXSU,2\tXSU,2\n\t\t\t30D\n\t\t\t31D\n\t\tBOV\t\t\t# CLEAR OVIND\n\t\t\t+1\n\t\tVSR*\tXCHX,2\n\t\t\t0 \t-1,2\n\t\t\tS1\n\t\tVAD\n\t\t\tFV\n\t\tSTORE\tFV\n\t\tBOV\tRVQ\t\t# RETURN IF NO OVERFLOW\n\t\t\t+1\nGOBAQUE\t\tVLOAD\tABVAL\n\t\t\tTDELTAV\n\t\tBZE\n\t\t\tINT-ABRT\n\t\tDLOAD\tSR\n\t\t\tH\n\t\t\t9D\n\t\tPUSH\tBDSU\n\t\t\tTC\n\t\tSTODL\tTAU.\n\t\t\tTET\n\t\tDSU\tSTADR\n\t\tSTCALL\tTET\n\t\t\tKEPPREP\n\t\tCALL\n\t\t\tRECTIFY\n\t\tSETGO\n\t\t\tRPQFLAG\n\t\t\tTESTLOOP\n\nINT-ABRT\tEXIT\n\t\tTC\tPOODOO\n\t\tOCT\t00430\n\n# Page 1341\n# THE OBLATE ROUTINE COMPUTES THE ACCELERATION DUE TO OBLATENESS.  IT USES THE UNIT OF THE VEHICLE\n# POSITION VECTOR FOUND IN ALPHAV AND THE DISTANCE TO THE CENTER IN ALPHAM.  THIS IS ADDED TO THE SUM OF THE\n# DISTURBING ACCELERATIONS IN FV AND THE PROPER DIFEQ STAGE IS CALLED VIA X1.\nOBLATE\t\tLXA,2\tDLOAD\n\t\t\tPBODY\n\t\t\tALPHAM\n\t\tSETPD\tDSU*\n\t\t\t0\n\t\t\tRDE,2\n\t\tBPL\tBOF\t\t# GET URPV\n\t\t\tNBRANCH\n\t\t\tMOONFLAG\n\t\t\tCOSPHIE\n\t\tVLOAD\tPDDL\n\t\t\tALPHAV\n\t\t\tTET\n\t\tPDDL\tCALL\n\t\t\t3/5\n\t\t\tR-TO-RP\n\t\tSTORE\tURPV\n\t\tVLOAD\tVXV\n\t\t\t504LM\n\t\t\tZUNIT\n\t\tVAD\tVXM\n\t\t\tZUNIT\n\t\t\tMMATRIX\n\t\tUNIT\t\t\t# POSSIBLY UNNECESSARY\nCOMTERM\t\tSTORE\tUZ\n\t\tDLOAD\tDMPR\n\t\t\tCOSPHI/2\n\t\t\t3/32\n\t\tPDDL\tDSQ\t\t# P2/64 TO PD0\n\t\t\tCOSPHI/2\n\t\tDMPR\tDSU\n\t\t\t15/16\n\t\t\t3/64\n\t\tPUSH\tDMPR\t\t# P3/32 TO PD2\n\t\t\tCOSPHI/2\n\t\tDMP\tSL1R\n\t\t\t7/12\n\t\tPDDL\tDMPR\n\t\t\t0\n\t\t\t2/3\n\t\tBDSU\tPUSH\t\t# P4/128 TO PD4\n\t\tDMPR\tDMPR\n\t\t\tCOSPHI/2\t# BEGIN COMPUTING P5/1024\n\t\t\t9/16\n\t\tPDDL\tDMPR\n\t\t\t2\n\t\t\t5/128\n# Page 1342\n\t\tBDSU\n\t\tDMP*\n\t\t\tJ4REQ/J3,2\n\t\tDDV\tDAD\t\t#              -3\n\t\t\tALPHAM\t\t# (((P5/256)B 2 /R+P4/32)  /R+P3/8)ALPHAV\n\t\t\t4\t\t#            4             3\n\t\tDMPR*\tDDV\n\t\t\t2J3RE/J2,2\n\t\t\tALPHAM\n\t\tDAD\tVXSC\n\t\t\t2\n\t\t\tALPHAV\n\t\tSTODL\tTVEC\n\t\tDMP*\tSR1\n\t\t\tJ4REQ/J3,2\n\t\tDDV\tDAD\n\t\t\tALPHAM\t\t#\t\t\t-3\n\t\tDMPR*\tSR3\n\t\t\t2J3RE/J2,2\t#\t3\t4\n\t\tDDV\tDAD\n\t\t\tALPHAM\n\t\tVXSC\tVSL1\n\t\t\tUZ\n\t\tBVSU\n\t\t\tTVEC\n\t\tSTODL\tTVEC\n\t\t\tALPHAM\n\t\tNORM\tDSQ\n\t\t\tX1\n\t\tDSQ\tNORM\n\t\t\tS1\t\t#         4\n\t\tPUSH\tBDDV*\t\t# NORMED R  TO 0D\n\t\t\tJ2REQSQ,2\n\t\tVXSC\tBOV\n\t\t\tTVEC\n\t\t\t+1\t\t# (RESET OVERFLOW INDICATOR)\n\t\tXAD,1\tXAD,1\n\t\t\tX1\n\t\t\tX1\n\t\tXAD,1\tVSL*\n\t\t\tS1\n\t\t\t0\t-22D,1\n\t\tVAD\tBOV\n\t\t\tFV\n\t\t\tGOBAQUE\n\t\tSTCALL\tFV\n\t\t\tQUALITY1\nQUALITY3\tDSQ\t\t\t# J22 TERM X R**4 IN 2D.  SCALED B61\n\t\t\t\t\t# AS VECTOR.\n\t\tPUSH\tDMP\t\t# STORE COSPHI**2 SCALED B2 IN 8D\n# Page 1343\n\t\t\t5/8\t\t# 5 SCALED B3\n\t\tPDDL\tSR2\t\t# PUT 5 COSPHI**2, D5, IN 8D. GET\n\t\t\t\t\t# COSPHI**2 D2 FROM 8D\n\t\tDAD\tBDSU\t\t# END UP WITH (1-7 COSPHI**2), B5\n\t\t\t8D\t\t# ADDING COSPHI**2 B4 SAME AS COSPHI**2\n\t\t\t\t\t# X 2 D5\n\t\t\tD1/32\t\t# 1 SCALED B5\n\t\tDMP\tDMP\n\t\t\tURPV\t\t# X COMPONENT\n\t\t\t5/8\t\t# 5 SCALED B3\n\t\tVXSC\tVSL5\t\t# AFTER SHIFT, SCALED B5\n\t\t\tURPV\t\t# VECTOR, B1.\n\t\tPDDL\t\t\t# VECTOR INTO 8D, 10D, 12D, SCALED B5.\n\t\t\t\t\t# GET 5 COSPHI**2 OUT OF 8D\n\t\tDSU\tDAD\n\t\t\tD1/32\t\t# 1 B5\n\t\t\t8D\t\t# X COMPONENT (SAME AS MULTIPLYING\n\t\t\t\t\t# BY UNITX)\n\t\tSTODL\t8D\n\t\t\tURPV\t\t# X COMPONENT\n\t\tDMP\tDMP\n\t\t\tURPV\t+4\t# Z COMPONENT\n\t\t\t5/8\t\t# 5 B3 ANSWER B5\n\t\tSL1\tDAD\t\t# FROM 12D FOR Z COMPONENT (SL1 GIVES 10\n\t\t\t\t\t# INSTEAD OF 5 FOR COEFFICIENT)\n\t\tPDDL\tNORM\t\t# BACK INTO 12D FOR Z COMPONENT.\n\t\t\tALPHAM\t\t# SCALED B27 FOR MOON\n\t\t\tX2\n\t\tPUSH\tSLOAD\t\t# STORE IN 14D, DESTROYING URPV\n\t\t\t\t\t# X COMPONENT\n\t\t\tE32C31RM\n\t\tDDV\tVXSC\t\t# IF X2 = 0, DIVISION GIVES B53, VXSC\n\t\t\t\t\t# OUT OF 8D B5 GIVES B58\n\t\tVSL*\tVAD\t\t# SHIFT MAKES B61, FOR ADDITION OF\n\t\t\t\t\t# VECTOR IN 2D\n\t\t\t0\t-3,2\n\t\tVSL*\tV/SC\t\t# OPERAND FROM 0D, B108 FOR X1 = 0\n\t\t\t0\t-27D,1\t# FOR X1 = 0, MAKES B88, GIVING B-20\n\t\t\t\t\t# FOR RESULT.\n\t\tPDDL\tPDDL\n\t\t\tTET\n\t\t\t\t5/8\t# ANY NON-ZERO CONSTANT\n\t\tLXA,2\tCALL\t\t# POSITION IN 0D, TIME IN 6D. X2 LEFT\n\t\t\t\t\t# ALONE.\n\t\t\tPBODY\n\t\t\tRP-TO-R\n\t\tVAD\tBOV\t\t# OVERFLOW INDICATOR RESET IN \"RP-TO-R\"\n\t\t\tFV\n\t\t\tGOBAQUE\n\t\tSTORE\tFV\n# Page 1344\nNBRANCH\t\tSLOAD\tLXA,1\n\t\t\tDIFEQCNT\n\t\t\tMPAC\n\t\tDMP\tCGOTO\n\t\t\t-1/12\n\t\t\tMPAC\n\t\t\tDIFEQTAB\nCOSPHIE\t\tDLOAD\n\t\t\tALPHAV +4\n\t\tSTOVL\tCOSPHI/2\n\t\t\tZUNIT\n\t\tGOTO\n\t\t\tCOMTERM\nDIFEQTAB\tCADR\tDIFEQ+0\n\t\tCADR\tDIFEQ+1\n\t\tCADR\tDIFEQ+2\n\nTIMESTEP\tBOF\tCALL\n\t\t\tMIDFLAG\n\t\t\tRECTEST\t\t# SKIP ORIGIN CHANGE LOGIC\n\t\t\tCHKSWTCH\n\t\tBMN\n\t\t\tDOSWITCH\n\nRECTEST\t\tVLOAD\tABVAL\t\t# RECTIFY IF\n\t\t\tTDELTAV\n\t\tBOV\n\t\t\tCALLRECT\n\t\tDSU\tBPL\t\t#\t1) EITHER TDELTAV OR TNUV EQUALS OR\n\t\t\t3/4\t\t#\t   EXCEEDS 3/4 IN MAGNITUDE\n\t\t\tCALLRECT\t#\n\t\tDAD\tSL*\t\t#\t\t\tOR\n\t\t\t3/4\t\t#\n\t\t\t0 -7,2\t\t#\t2) ABVAL(TDELTAV) EQUALS OR EXCEEDS\n\t\tDDV\tDSU\t\t#\t   .01(ABVAL(RCV))\n\t\t\t10D\n\t\t\tRECRATIO\n\t\tBPL\tVLOAD\n\t\t\tCALLRECT\n\t\t\tTNUV\n\t\tABVAL\tDSU\n\t\t\t3/4\n\t\tBOV\n\t\t\tCALLRECT\n\t\tBMN\n\t\t\tINTGRATE\nCALLRECT\tCALL\n\t\t\tRECTIFY\nINTGRATE\tVLOAD\n\t\t\tTNUV\n# Page 1345\n\t\tSTOVL\tZV\n\t\t\tTDELTAV\n\t\tSTORE\tYV\n\t\tCLEAR\n\t\t\tJSWITCH\nDIFEQ0\t\tVLOAD\tSSP\n\t\t\tYV\n\t\t\tDIFEQCNT\n\t\t\t0\n\t\tSTODL\tALPHAV\n\t\t\tDPZERO\n\t\tSTORE\tH\t\t# START H AT ZERO.  GOES 0(DELT/2)DELT.\n\t\tBON\tGOTO\n\t\t\tJSWITCH\n\t\t\tDOW..\n\t\t\tACCOMP\n\nCHKSWTCH\tSTQ\tBOF\n\t\t\tORIGEX\n\t\t\tRPQFLAG\n\t\t\tRPQOK\t\t# MOON POSITION IS AVAILABLE\n\t\tDLOAD\tCALL\n\t\t\tTET\n\t\t\tLUNPOS\t\t# GET MOON POSITION\n\t\tBOF\tVCOMP\n\t\t\tMOONFLAG\n\t\t\t+1\n\t\tSTORE\tRPQV\n\nRPQOK\t\tLXA,2\tVLOAD\t\t# RESTORE X2 AFTER USING LUNPOS\n\t\t\tPBODY\n\t\t\tTDELTAV\t\t#  _\n\t\tVSL*\tVAD\t\t# |RQC|-RSPHERE WHEN OUTSIDE THE SPHERE.\n\t\t\t0\t-7,2\t# _   _            _\n\t\t\tRCV\t\t# R = RDEVIATION + RCONIC\n\t\tBOF\tABVAL\n\t\t\tMOONFLAG\n\t\t\tEARSPH\n\t\tSR2\tBDSU\t\t# INSIDE\n\t\t\tRSPHERE\n\t\tGOTO\n\t\t\tORIGEX\nEARSPH\t\tVSU\tABVAL\t\t# OUTSIDE\n\t\t\tRPQV\n\t\tDSU\tGOTO\n\t\t\tRSPHERE\n\t\t\tORIGEX\n\nDOSWITCH\tCALL\n\t\t\tORIGCHNG\n\t\tGOTO\n\t\t\tINTGRATE\n\n# Page 1346\nORIGCHNG\tSTQ\tCALL\n\t\t\tORIGEX\n\t\t\tRECTIFY\n\t\tVLOAD\tVSL*\n\t\t\tRCV\n\t\t\t0,2\n\t\tVSU\tVSL*\n\t\t\tRPQV\n\t\t\t2,2\n\t\tSTORE\tRRECT\n\t\tSTODL\tRCV\n\t\t\tTET\n\t\tCALL\n\t\t\tLUNVEL\n\t\tBOF\tVCOMP\n\t\t\tMOONFLAG\n\t\t\t+1\n\t\tPDVL\tVSL*\n\t\t\tVCV\n\t\t\t0,2\n\t\tVSU\n\t\tVSL*\n\t\t\t0 +2,2\n\t\tSTORE\tVRECT\n\t\tSTORE\tVCV\n\t\tLXA,2\tSXA,2\n\t\t\tORIGEX\n\t\t\tQPRET\n\t\tBON\tGOTO\n\t\t\tMOONFLAG\n\t\t\tCLRMOON\n\t\t\tSETMOON\n# Page 1347\n# THE RECTIFY SUBROUTINE IS CALLED BY THE INTEGRATION PROGRAM AND OCCASIONALLY BY THE MEASUREMENT INCORPORATION\n# ROUTINES TO ESTABLISH A NEW CONIC.\n\n\nRECTIFY\t\tLXA,2\tVLOAD\n\t\t\tPBODY\n\t\t\tTDELTAV\n\t\tVSL*\tVAD\n\t\t\t0 \t-7,2\n\t\t\tRCV\n\t\tSTORE\tRRECT\n\t\tSTOVL\tRCV\n\t\t\tTNUV\n\t\tVSL*\tVAD\n\t\t\t0 \t-4,2\n\t\t\tVCV\nMINIRECT\tSTORE\tVRECT\n\t\tSTOVL\tVCV\n\t\t\tZEROVEC\n\t\tSTORE\tTDELTAV\n\t\tSTODL\tTNUV\n\t\t\tZEROVEC\n\t\tSTORE\tTC\n\t\tSTORE\tXKEP\n\t\tRVQ\n\n# Page 1348\n# THE THREE DIFEQ ROUTINES - DIFEQ+0, DIFEQ+12, DIFEQ+24 - ARE ENTEREDTO PROCESS THE CONTRIBUTIONS AT THE\n# BEGINNING, MIDDLE, AND END OF THE TIMESTEP, RESPECTIVELY.  THE UPDATING IS DONE BY THE NYSTROM METHOD.\nDIFEQ+0\t\tVLOAD\tVSR3\n\t\t\tFV\n\t\tSTCALL\tPHIV\n\t\t\tDIFEQCOM\nDIFEQ+1\t\tVLOAD\tVSR1\n\t\t\tFV\n\t\tPUSH\tVAD\n\t\t\tPHIV\n\t\tSTOVL\tPSIV\n\t\tVSR1\tVAD\n\t\t\tPHIV\n\t\tSTCALL\tPHIV\n\t\t\tDIFEQCOM\nDIFEQ+2\t\tDLOAD\tDMPR\n\t\t\tH\n\t\t\tDP2/3\n\t\tPUSH\tVXSC\n\t\t\tPHIV\n\t\tVSL1\tVAD\n\t\t\tZV\n\t\tVXSC\tVAD\n\t\t\tH\n\t\t\tYV\n\t\tSTOVL\tYV\n\t\t\tFV\n\t\tVSR3\tVAD\n\t\t\tPSIV\n\t\tVXSC\tVSL1\n\t\tVAD\n\t\t\tZV\n\t\tSTORE\tZV\n\t\tBOFF\tCALL\n\t\t\tJSWITCH\n\t\t\tENDSTATE\n\t\t\tGRP2PC\n\t\tLXA,2\tVLOAD\n\t\t\tCOLREG\n\t\t\tZV\n\t\tVSL3\t\t\t# ADJUST W-POSITION FOR STORAGE\n\t\tSTORE\tW \t+54D,2\n\t\tVLOAD\n\t\t\tYV\n\t\tVSL3\tBOV\n\t\t\tWMATEND\n\t\tSTORE\tW,2\n\n\t\tCALL\n\t\t\tGRP2PC\n# Page 1349\n\t\tLXA,2\tSSP\n\t\t\tCOLREG\n\t\t\tS2\n\t\t\t0\n\t\tINCR,2\tSXA,2\n\t\t\t6\n\t\t\tYV\n\t\tTIX,2\tCALL\n\t\t\tRELOADSV\n\t\t\tGRP2PC\n\t\tLXA,2\tSXA,2\n\t\t\tYV\n\t\t\tCOLREG\n\nNEXTCOL\t\tCALL\n\t\t\tGRP2PC\n\t\tLXA,2\tVLOAD*\n\t\t\tCOLREG\n\t\t\tW,2\n\t\tVSR3\t\t\t# ADJUST W-POSITION FOR INTEGRATION\n\t\tSTORE\tYV\n\t\tVLOAD*\tAXT,1\n\t\t\tW \t+54D,2\n\t\t\t0\n\t\tVSR3\t\t\t# ADJUST W-VELOCITY FOR INTEGRATION\n\t\tSTCALL\tZV\n\t\t\tDIFEQ0\n\nENDSTATE\tBOV\tVLOAD\n\t\t\tGOBAQUE\n\t\t\tZV\n\t\tSTOVL\tTNUV\n\t\t\tYV\n\t\tSTORE\tTDELTAV\n\t\tBON\tBOFF\n\t\t\tMIDAVFLG\n\t\t\tCKMID2\t\t# CHECK FOR MID2 BEFORE GOING TO TIMEINC\n\t\t\tDIM0FLAG\n\t\t\tTESTLOOP\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\t\t# PHASE 1\n\t\tTC\tUPFLAG\t\t# PHASE CHANGE HAS OCCURRED BETWEEN\n\t\tADRES\tREINTFLG\t# INTSTALL AND INTWAKE\n\t\tTC\tINTPRET\n\t\tSSP\n\t\t\tQPRET\n\t\t\tAMOVED\n\t\tBON\tGOTO\n\t\t\tVINTFLAG\n# Page 1350\n\t\t\tATOPCSM\n\t\t\tATOPLEM\nAMOVED\t\tSET\tSSP\n\t\t\tJSWITCH\n\t\t\tCOLREG\n\t\tDEC\t-30\n\t\tBOFF\tSSP\n\t\t\tD6OR9FLG\n\t\t\tNEXTCOL\n\t\t\tCOLREG\n\t\tDEC\t-48\n\t\tGOTO\n\t\t\tNEXTCOL\n\nRELOADSV\tDLOAD\t\t\t# RELOAD TEMPORARY STATE VECTOR\n\t\t\tTDEC\t\t# FROM PERMANENT IN CASE OF\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRV2\t# BY STARTING AT INTEGRV2.\nDIFEQCOM\tDLOAD\tDAD\t\t# INCREMENT H AND DIFEQCNT.\n\t\t\tDT/2\n\t\t\tH\n\t\tINCR,1\tSXA,1\n\t\tDEC\t-12\n\t\t\tDIFEQCNT\t# DIFEQCNT SET FOR NEXT ENTRY.\n\t\tSTORE\tH\n\t\tVXSC\tVSR1\n\t\t\tFV\n\t\tVAD\tVXSC\n\t\t\tZV\n\t\t\tH\n\t\tVAD\n\t\t\tYV\n\t\tSTORE\tALPHAV\n\t\tBON\tGOTO\n\t\t\tJSWITCH\n\t\t\tDOW..\n\t\t\tFBR3\n\nWMATEND\t\tCLEAR\tCLEAR\n\t\t\tDIM0FLAG\t# DONT INTEGRATE W THIS TIME\n\t\t\tORBWFLAG\t# INVALIDATE W\n\t\tCLEAR\n\t\t\tRENDWFLG\n\t\tSET\tEXIT\n\t\t\tSTATEFLG\t# PICK UP STATE VECTOR UPDATE\n\t\tTC\tALARM\n\t\tOCT\t421\n\t\tTC\tINTPRET\n# Page 1351\n\t\tGOTO\n\t\t\tTESTLOOP\t# FINISH INTEGRATING STATE VECTOR\n\n# Page 1352\n# ORBITAL ROUTINE FOR EXTRAPOLATION OF THE W MATRIX.  IT COMPUTES THE SECOND DERIVATIVE OF EACH COLUMN POSITION\n# VECTOR OF THE MATRIX AND CALLS THE NYSTROM INTEGRATION ROUTINES TO SOLVETHE DIFFERENTIAL EQUATIONS.  THE PROGRAM\n# USES A TABLE OF VEHICLE POSITION VECTORS COMPUTED DURING THE INTEGRATION OF THE VEHICLES POSITION AND VELOCITY.\nDOW..\t\tLXA,2\tDLOAD*\n\t\t\tPBODY\n\t\t\tMUEARTH,2\n\t\tSTCALL\tBETAM\n\t\t\tDOW..1\n\t\tSTORE\tFV\n\t\tBOF\tINCR,1\n\t\t\tMIDFLAG\n\t\t\tNBRANCH\n\t\tDEC\t-6\n\t\tLXC,2\tDLOAD*\n\t\t\tPBODY\n\t\t\tMUEARTH \t-2,2\n\t\tSTCALL\tBETAM\n\t\t\tDOW..1\n\t\tBON\tVSR6\n\t\t\tMOONFLAG\n\t\t\t+1\n\t\tVAD\n\t\t\tFV\n\t\tSTCALL\tFV\n\t\t\tNBRANCH\nDOW..1\t\tVLOAD\tVSR4\n\t\t\tALPHAV\n\t\tPDVL*\tUNIT\n\t\t\tVECTAB,1\n\t\tPDVL\tVPROJ\n\t\t\tALPHAV\n\t\tVXSC\tVSU\n\t\t\t3/4\n\t\tPDDL\tNORM\n\t\t\t36D\n\t\t\tS2\n\t\tPUSH\tDSQ\n\t\tDMP\n\t\tNORM\tPDDL\n\t\t\t34D\n\t\t\tBETAM\n\t\tSR1\tDDV\n\t\tVXSC\n\t\tLXA,2\tXAD,2\n\t\t\tS2\n\t\t\tS2\n\t\tXAD,2\tXAD,2\n\t\t\tS2\n\t\t\t34D\n\t\tVSL*\tRVQ\n# Page 1353\n\t\t\t0 -8D,2\n\n\t\tSETLOC\tORBITAL1\n\t\tBANK\n\n3/5\t\t2DEC\t.6 B-2\n\nTHREE/8\t\t2DEC\t.375\n\n.3D\t\t2DEC\t.3 B-2\n\n3/64\t\t2DEC\t3 B-6\n\nDP1/4\t\t2DEC\t.25\n\nDQUARTER\tEQUALS\tDP1/4\nPOS1/4\t\tEQUALS\tDP1/4\n3/32\t\t2DEC\t3 B-5\n\n15/16\t\t2DEC\t15. B-4\n\n3/4\t\t2DEC\t3.0 B-2\n\n7/12\t\t2DEC\t.5833333333\n\n9/16\t\t2DEC\t9 B-4\n\n5/128\t\t2DEC\t5 B-7\n\nDPZERO\t\tEQUALS\tZEROVEC\nDP2/3\t\t2DEC\t.6666666667\n\n2/3\t\tEQUALS\tDP2/3\nOCT27\t\tOCT\t27\n\n\t\tBANK\t13\n\t\tSETLOC\tORBITAL2\n\t\tBANK\n# IT IS VITAL THAT THE FOLLOWING CONSTANTS NOT BE SHUFFLED\n\t\tDEC\t-11\n\t\tDEC\t-2\n\t\tDEC\t-9\n\t\tDEC\t-6\n\t\tDEC\t-2\n\t\tDEC\t-2\n\t\tDEC\t0\n\t\tDEC\t-12\n\t\tDEC\t-9\n\t\tDEC\t-4\nASCALE\t\tDEC\t-7\n\t\tDEC\t-6\n# Page 1354\n\t\t2DEC*\t1.32715445 E16 B-54*\t# S\n\n\t\t2DEC*\t4.9027780 E8 B-30*\t# M\n\nMUEARTH\t\t2DEC*\t3.986032 E10 B-36*\n\n\t\t2DEC\t0\n\nJ4REQ/J3\t2DEC*\t.4991607391 E7 B-26*\n\n\t\t2DEC\t-176236.02 B-25\n\n2J3RE/J2\t2DEC*\t-.1355426363 E5 B-27*\n\n\t\t2DEC*\t.3067493316 E18 B-60*\n\nJ2REQSQ\t\t2DEC*\t1.75501139 E21 B-72*\n\n3J22R2MU\t2DEC*\t9.20479048 E16 B-58*\n\n5/8\t\t2DEC\t5 B-3\n\n-1/12\t\t2DEC\t-.1\n\nMUM\t\t=\tMUEARTH -2\nRECRATIO\t2DEC\t.01\n\nRSPHERE\t\t2DEC\t64373.76 E3 B-29\n\nRDM\t\t2DEC\t16093.44 E3 B-27\n\nRDE\t\t2DEC\t80467.20 E3 B-29\n\nRATT\t\tEQUALS \t00\nVATT\t\tEQUALS\t6D\nTAT\t\tEQUALS\t12D\nRATT1\t\tEQUALS\t14D\nVATT1\t\tEQUALS\t20D\nMU(P)\t\tEQUALS\t26D\nTDEC1\t\tEQUALS\t32D\nURPV\t\tEQUALS\t14D\nCOSPHI/2\tEQUALS\tURPV \t+4\nUZ\t\tEQUALS\t20D\nTVEC\t\tEQUALS\t26D\n"
  },
  {
    "path": "Comanche055/P11.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     P11.agc\n# Purpose:      Part of the source code for Colossus 2A, AKA Comanche 055.\n#               It is part of the source code for the Command Module's (CM)\n#               Apollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:    yaYUL\n# Contact:      Hartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:      www.ibiblio.org/apollo.\n# Pages:\t533-550\n# Mod history:  2009-05-13 HG   Started adapting from the Colossus249/ file\n#                \t\tof the same name, using Comanche055 page\n#                \t\timages 0533.jpg - 0550.jpg.\n#\t\t2009-05-20 RSB\tCorrections: ERTHALT -> EARTHALT,\n#\t\t\t\tSTATSW -> SATSW.\n#\t\t2009-05-23 RSB\tAt end of RESCALES, corrected TC 0 to TC Q.\n#\t\t\t\tAdded an SBANK= prior to a 2CADR.\n#\t\t2010-08-24 JL\tFixed page numbers. Added missing comment character on p537.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n# Page 533\n# EARTH ORBIT INSERTION MONITOR PROGRAM\n# *************************************\n\n# PROGRAM DESCRIPTION -P11-\n\n#\tMOD NO. 1\n#\tMOD BY ELIASSEN\n\n# FUNCTIONAL DESCRIPTION\n\n#\tP11 IS INITIATED BY\n\n#\t\tA) GYROCOMPASS PRG P02 WHEN LIFTOFF DISCRETE IS RECEIVED OR\n#\t\tB) BACKUP THRU VERB 75 ENTER\n\n#\tPROGRAM WILL\n#\t\t1. ZERO CMC CLOCK AT LIFTOFF (OR UPON RECEIPT OF BACKUP)\n#\t\t2. UPDATE TEPHEM TO TIME CMC CLOCK WAS ZEROED\n#\t\t3. INITIATE SERVICER AT PREREAD1\n#\t\t4. CHANGE MAJOR MODE TO 11\n#\t\t5. CLEAR DSKY IN CASE OF V 75\n#\t\t6. STORE LIFTOFF IMU-CDU ANGLES FOR ATT. ERROR DISPLAY\n#\t\t7. TERMINATE GYROCOMPASSING\t-  -\n#\t\t8. COMPUTE INITIAL VECTORS\tRN, VN            -  -  -\n#\t\t9. COMPUTE REFSMMAT FOR PRELAUNCH ALIGNMENT WHERE U ,U ,U ARE\n#\t\t\t-         -                                X  Y  Z\n#\t\t\tU =(UNIT(-R) LOCAL VERTICAL AT TIME OF LIFTOFF\n#\t\t\tZ\n#\t\t\t-\t-   -\n#\t\t\tU =UNIT(A), A=HOR VECTOR AT LAUNCH AZIMUTH\n#\t\t\tX\n#\t\t\t-  -   -\n#\t\t\tU =U * U\n#\t\t\t U  Z   X\n\n#\t\t10. SET REFSMMAT KNOWN FLAG\n#\t\t11. SET AVGEXIT IN SERVICER TO VHHDOT TO\n#\t\t    COMPUTE AND DISPLAY NOUN 62 EVERY 2 SECONDS\n\n#\t\t    R1\tV1  - INERTIAL VELOCITY MAGNITUDE IN FPS\n#\t\t    R2\tHDOT - RATE OF CHANGE OF VEHICLE VEL IN FPS\n#\t\t    R3\tH    - VEHICLE ALTITUDE ABOVE PAD IN NM\n\n#\t\t12. DISPLAY BODY AXES ATT. ERRORS ON FDAI NEEDLES\n#\n#\t\t    A) FROM L.O. TO RPSTART (APPROX. 0 TO +10SECS AFTER L.O.)\n#\t\t       DESIRED ATTITUDE IS AS STORED AT L.O.\n#\t\t    B) FROM RPSTART TO POLYSTOP(APPROX.+10 TO +133SECS AFTER LO)\n#\t\t       DESIRED ATTITUDE IS SPECIFIED BY CMC PITCH AND ROLL\n#\t\t       POLYNOMIALS DURING SATURN ROLLOUT AND PITCHOVER\n# Page 534\n#\t\t\tTHE DISPLAY IS RUN AS LOW PRIORITY JOB APPROX.\n#\t\t\tEVERY 1/2 SEC OR LESS AND IS DISABLED UPON OVFLO OF TIME1\n\n# SUBROUTINES CALLED\n\n#\t\t2PHSCHNG\tBANKCALL\tCALCGRA\t\tCDUTRIG\t\tCLEANDSP\tDANZIG\n#\t\tDELAYJOB\tEARTHR\t\tENDOFJOB\tFINDVAC\t\tIBNKCALL\n#\t\tINTPRET\t\tLALOTORV\tNEEDLER\t\tNEWMODEX\tPHASCHNG\n#\t\tPOSTJUMP\tPOWRSERS\tPREREAD1\tREGODSPR\tS11.1\n#\t\tSERVEXIT\tTASKOVER\tTCDANZIG\tV1STO2S\t\tWAITLIST\n\n# ASTRONAUT REQUESTS (IF ALTITUDE ABOVE 300,000 FT)\n#\n#\tDSKY -\n#\t     MONITOR DISPLAY OF TIME TO PERIGEE R1 HOURS\n#\t\t\t\t\t\tR2 MINUTES\n\n#\tDSKY -\n#\t     MONITOR DISPLAY OF R1 APOGEE ALTITUDE IN NAUTICAL MILES\n#\t\t\t\tR2 PERIGEE ALTITUDE IN NAUTICAL MILES\n#\t\t\t\tR3 TFF IN MINUTES/SECS\n\n#\tIF ASTRONAUT HAS REQUESTED ANY OF THESE DISPLAYS HE MUST\n# HIT PROCEED TO RETURN TO NORMAL NOUN 62 DISPLAY.\n# NORMAL EXIT MODE\n\n#\tASTRONAUT\tVERB 37 ENTER 00 ENTER\n\n# ALARM MODES - NONE\n\n# ABORT EXIT MODES -\n\n# OUTPUT\n\n#\tTLIFTOFF (DP)\tTEPHEM (TP)\n#\tREFSMMAT\n#\tDSKY DISPLAY\n#\tFDAI DISPLAY\n\n# ERASABLE INITIALIZATION\n\n#\tAZO, AXO, -AYO\n#\tLATITUDE\n#\tPADLONG\n#\tTEPHEM\n#\tPGNCSALT\n#\tPOLYNUM THRU POLYNUM +14D)\n#\tRPSTART\n#\tPOLYSTOP\n# FLAGS SET OR RESET\n# Page 535\n#\tSET REFSMFLG\n#\tSET DVMON IDLE FLAG\n#\tCLEAR ERADFLAG\n\n# DEBRIS\n\n#\tLIFTTEMP\n#\tPOLYNUM THRU POLYNUM +7\n#\tSPOLYARG\n#\tBODY1, BODY2, BODY3\n#\tVMAG2, ALTI, HDOT\n#\tCENTRALS, CORE SET AND VAC AREAS\n\t\tCOUNT\t34/P11\n\nBITS5-6\t\t=\tSUPER011\n\t\tBANK\t42\n\t\tSETLOC\tP11ONE\n\t\tBANK\n\n\t\tEBANK=\tTEPHEM\nP11\t\tCA\tEBANK3\n\t\tTS\tEBANK\n\n\t\tEXTEND\n\t\tDCA\tREP11S\t\t# DIRECT RESTARTS TO REP11\n\t\tDXCH\t-PHASE3\n\t\tCS\tZERO\n\t\tZL\n\t\tTS\tLIFTTEMP\n\t\tDXCH\t-PHASE5\t\t# INACTIVE GROUP 5, PRELAUNCH PROTECTION\nP11+7\t\tEXTEND\n\t\tDCA\tREP11SA\n\t\tDXCH\tTLIFTOFF\n\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tLIFTTEMP\t# FOR RESTARTS\n\n\t\tCA\tZERO\n\t\tZL\n\t\tDXCH\tTIME2\nREP11A-2\tDXCH\tTLIFTOFF\nREP11A-1\tDXCH\t-PHASE3\t\t# RESET PHASE\n\n\nREP11A\t\tINHINT\n\t\tEXTEND\n\t\tDCA\tTEPHEM\t+1\n\t\tDXCH\tTEPHEM1\t+1\n\t\tCA\tTEPHEM\n# Page 536\n\t\tXCH\tTEPHEM1\n\n\t\tEXTEND\n\t\tDCA\tTLIFTOFF\n\t\tDAS\tTEPHEM1\t+1\n\t\tADS\tTEPHEM1\t\t# CORRECTFOR OVERFLOW\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t05023\n\t\tOCT\t22000\n\n\t\tINHINT\n\t\tEXTEND\n\t\tDCA\tTEPHEM1\n\t\tDXCH\tTEPHEM\n\t\tCA\tTEPHEM1\t+2\n\t\tXCH\tTEPHEM\t+2\n\n\t\tCAF\tEBDVCNT\n\t\tTS\tEBANK\n\t\tEBANK=\tDVCNTR\n\t\tTC\tIBNKCALL\n\t\tCADR\tPREREAD1\t# ZERO PIPS AND INITIALIZE AVERAGEG\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t05023\t\t# CONTINUE HERE ON RESTART\n\t\tOCT\t22000\n\n\t\tCAF\t.5SEC\t\t# START ATT ERROR DISPLAY\n\t\tTC\tWAITLIST\t# IN .5 SEC\n\t\tEBANK=\tBODY3\n\t\t2CADR\tATERTASK\n\n\t\tTC\tNEWMODEX\t# DISPLAY MM 11\n\t\tMM\t11\n\n\t\tTC\tUPFLAG\n\t\tADRES   NODOP01\n\n\t\tCA      POWDNCOD        # SWITCH TO POWERED FLIGHT DOWNLIST\n\t\tTS      DNLSTCOD\n\n\t\tTC      BANKCALL\n\t\tCADR\tCLEANDSP\t# CLEAR DSKY IN CASE OF V75\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40514\t\t# PROTECT ATERTASK\n\t\tOCT\t00073\n\t\tCAF\tEBQPLACE\n# Page 537\n\t\tTS\tEBANK\n\n\t\tEBANK=\tQPLACES\n\t\tCA\tP11XIT\t\t# SET EXIT FROM PROUT IN EARTHR\n\t\tTS\tQPLACES\n\t\tTC      INTPRET\n\t\tVLOAD\tMXV\n\t\t\tTHETAN\n\t\t\tXSM\n\t\tVSL1\tVAD\n\t\t\tERCOMP\n\t\tSTODL\tERCOMP\n\t\t\tTLIFTOFF\n\t\tSSP\tGOTO\n\t\t\tS2\n\t\tCADR\tPROUT\t\t# RETURN FROM EARTHR\n\t\t\tEARTHR\t+3\nMATRXJOB\tZL\t                # STORE DP GIMBAL ANGLES FOR ATTITUDE\n\t\tCA      CDUX            #       ERROR DISPLAY AFTER LIFTOFF\n\t\tDXCH    OGC\n\t\tZL\n\t\tCA      CDUY\n\t\tDXCH    IGC\n\t\tZL\n\t\tCA      CDUZ\n\t\tDXCH    MGC\n                TC      INTPRET         #       -\n\t\tVLOAD   VSR1            # SCALE OGC B-1\n\t\t\tOGC\n\t\tSTORE   OGC\n\t\tSSP\t\t\t# ZERO RTX2\n\t\t\tRTX2\t\t# FOR\n\t\t\t0\t\t# EARTH\n\t\tDLOAD\tPDDL\n\t\t\tPGNCSALT\t# ALTITUDE OF PGNCS\n\t\t\tPADLONG\t\t# LONGITUDE\n\t\tPDDL\tVDEF\n\t\t\tLATITUDE\t# GEODETIC LATITUDE\n\t\tSTODL\tLAT\t\t# LAT,LONG,ALT ARE CONSECUTIVE\n\t\t\tHI6ZEROS\t# TIME = 0\n\t\tCLEAR\tCALL\n\t\t\tERADFLAG\n\t\t\tLALOTORV\t# CONVERT TO POSITION VECTOR IN REF.COORDS\n\n\t\tSTCALL\tRN1             #              -\n\t\t\tGETDOWN \t# RETURN WITH VECTOR FOR DOWN DIRECTION\n\t\tVCOMP   UNIT\n\t\tSTOVL\tREFSMMAT +12D\t# UNITZ = UNIT(GRAV)\n\t\t\tRN1\n\t\tVXV\tVXSC\n# Page 538\n\t\t\tUNITW\t\t# SCALED AT 1\n\t\t\t-ERTHRAT\t# V = EARTHRATE X R\n\t\tVSL4\t\t\t# SCALE TO 2(7) M/CS\n\t\tSTOVL\tVN1\n\t\t\tREFSMMAT +12D\n\t\tVXV\tUNIT\n\t\t\tUNITW\t\t# (REF3 X UNITW) = EAST\n\t\tPUSH\tVXV\n\t\t\tREFSMMAT +12D\t# (EAST X REF3) = -SOUTH\n\t\tUNIT\tPDDL\n\t\t\tLAUNCHAZ\t# COS(AZ)*SOUTH\n\t\tCOS\tVXSC\n\t\tSTADR\n\t\tSTODL\tREFSMMAT\t# TEMPORARY STORAGE\n\t\t\tLAUNCHAZ\n\t\tSIN\tVXSC\t\t# SIN(AZ)*EAST\n\t\tVAD\tUNIT\t\t# SIN(AZ)*EAST - COS(AZ)*SOUTH = REF1\n\t\t\tREFSMMAT\n\t\tSTORE\tREFSMMAT\n\n\t\tVXV\tUNIT\t\t# (REF1 X REF3) = -REF3\n\t\t\tREFSMMAT +12D\n\t\tVCOMP\n\t\tSTORE\tREFSMMAT +6\n\t\tDLOAD\tDSU\n\t\t\tDPHALF\t\t# 1/2 REV\n\t\t\tLAUNCHAZ\n\t\tDAD\tPDDL\n\t\t\tAZIMUTH\n\t\t\tSATRLRT\t\t# SET\tSATRLRT = -SATRLRT IF\n\t\tSIGN\tSTADR\t\t# (1/2REV -LAVNCHAZ +AZIMUTH) IS NEGATIVE\n\t\tSTORE\tSATRLRT\t\t# FOR ROLL CALC IN FDAI ATT. ERROR DISPLAY\n\t\tSET\tEXIT\n\t\t\tREFSMFLG\t# SET REFSMMAT KNOWN FLAG\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04023\n\n\t\tEXTEND\n\t\tDCA\tP11SCADR\n\t\tDXCH\tAVGEXIT\t\t# SET AVGEXIT\n\n\t\tCA\tPRIO31\t\t# 2 SECONDS AT 2(+8)\n\t\tTS\t1/PIPADT\n\n\t\tEBANK=\tRCSFLAGS\n\t\tCA\tEBANK6\n\t\tTS\tEBANK\n\n\t\tINHINT\n# Page 539\n\t\tCS\tZERO\n\t\tTS\tTBASE5\t\t# RESTART READACCS 2 SECONDS AFTER LIFTOFF\n\n\t\tCS\tTIME1\n\t\tAD\t2SECS\t\t# DO READACCS 2 SECONDS AFTER LIFTOFF\n\n\t\tCCS\tA\t\t# CHECK TO INSURE DT IS POSITIVE\n\t\tTCF\t+3\t\t# TIME POSITIVE\n\t\tTCF\t+2\t\t# CANNOT GET HERE\n\t\tCA\tZERO\t\t# TIME NEGATIVE - SET TO 1\n\t\tAD\tONE\t\t# RESTORE TIME  -  OR MAKE POSITIVE\n\n\t\tTC\tWAITLIST\n\t\tEBANK=\tAOG\n\t\t2CADR\tREADACCS\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00003\t\t# TURN OFF GROUP 3\n\t\tOCT\t00025\t\t# PROTECT NORMLIZE AND READACCS\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tNORMLIZE\t# DO NORMLIZE AND ENDOFJOB\n\n\n\t\tEBANK=\tTEPHEM\nREP11\t\tINHINT\n\t\tCCS\tPHASE5\n\t\tTC\tENDOFJOB\n\n\t\tCCS\tLIFTTEMP\n\t\tTCF\t+4\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\tP11+7\n\n\t\tCS\tTLIFTOFF\n\t\tEXTEND\n\t\tBZMF\tENDREP11\n\n\t\tCCS\tTIME2\t\t# **TIME2 MUST BE NON-ZERO AT LIFTOFF**\n\t\tTCF\tREP11A\t-5\t# T2,T1 NOT YET ZEROED, GO AND DO IT\n\n\t\tEXTEND\t\t\t# T2,T1 ZEROED, SET TLIFTOFF\n\t\tDCA\tLIFTTEMP\n\t\tTCF\tREP11A-2\n\nENDREP11\tEXTEND\n\t\tDCA\tREP11SA\n\t\tTCF\tREP11A-1\n# Page 540\nREP11S\t\t2OCT\t7776600011\n\nREP11SA\t\t2OCT\t7776400013\n\nP11XIT\t\tGENADR\tP11OUT\n-ERTHRAT\t2DEC*\t-7.292115138 E-7 B18*\t# - EARTH RATE AT 2(18)\n\n\t\tEBANK=\tBODY3\nP11SCADR\t2CADR\tVHHDOT\n\nPOWDNCOD        EQUALS  THREE\n\n\t\tEBANK=\tBODY3\n# VHHDOT IS EXECUTED EVERY 2 SECONDS TO DISPLAY ON DSKY\n#\t\t\tVI INERTIAL VELOCITY MAGNITUDE\n#\t\t\tHDOT  RATE OF CHANGE OF ALT ABOVE L PAD RADIUS\n#\t\t\tH  ALTITUDE ABOVE L PAD RADIUS\n\nVHHDOT\t\tTC\tINTPRET\n\t\tCALL\t\t\t# LOAD VMAGI, ALTI,\n\t\t\tS11.1\t\t# HDOT FOR DISPLAY\n\t\tEXIT\n\t\tTC      PHASCHNG\n\t\tOCT     00035\n\n\t\tCAF\tV06N62\t\t# DISPLAY IN R1\tR2\tR3\n\t\tTC\tBANKCALL\t#            VI\tHDOT\tH\n\t\tCADR\tREGODSP\n\nATERTASK\tCAF\tPRIO1\t\t# ESTABLISH JOB TO DISPLAY ATT ERRORS\n\t\tTC\tFINDVAC\t\t# COMES HERE AT L.O. + .33 SEC\n\t\tEBANK=\tBODY3\n\t\t2CADR\tATERJOB\n\n\t\tCS\tRCSFLAGS\t# SET BIT3 FOR\n\t\tMASK\tBIT3\t\t# NEEDLER\n\t\tADS\tRCSFLAGS\t# INITIALIZATION PASS\n\t\tTC\tIBNKCALL\t# AND GO\n\t\tCADR\tNEEDLER\t\t# DO IT\n\t\tCA      BIT1            # SET SW\n\t\tTS      SATSW           # FOR DISPLAY\n\t\tTC\tTASKOVER\nGETDOWN         STQ     SETPD\n\t\t\tINCORPEX\n\t\t\t0D\n\t\tDLOAD\n\t\t\tHI6ZEROS\n# Page 541\n\t\tSTODL   6D\n\t\t        DPHALF\n\t\tSTCALL  8D\n\t\t        LALOTORV +5\n# THIS SECTION PROVIDES ATTITUDE ERROR DISPLAYS TO THE FDAI DURING SONE BOOST\n\n#\t\t\t\t\tCOMPUTE DESIRED PITCH W.R.T. PAD LOCAL VERTICAL AT LIFTOFF\n#\t\t\t\t\t\t\t2    3    4    5    6\n#\t\t\t\t\tPITCH = A0+A1T+A2T +A3T +A4T +A5T +A6T\n#\t\t\t\t\t\tSCALED TO 32 REVS.                                   -14\n#\t\t\t\t\tIF TL = TIME IN SECS FROM L.O., THEN\tT = 100(TL-RPSTART)2\n#\t\t\t\t\tWHERE\tTL GE RPSTART\n#\t\t\t\t\t\tTL LE (-POLYSTOP + RPSTART)\n#\t\t\t\t\tCOMPUTE DESIRED ROLL WHERE ROLL EQUALS ANGLE FROM\n#\t\t\t\t\tLAUNCHAZ TO -Z(S/C) AS SEEN FROM X(S/C).\n#\t\t\t\t\tROLL = LAUNCHAZ-AZIMUTH-.5 +SATRLRT*T\tIN REV\n#\t\t\t\t\tSATRLRT = RATE OF ROLL IN REV/CENTI-SEC\n#\t\t\t\t\tT,IN CENTI-SEC,IS DEFINED AS ABOVE,INCLUSIVE OF TIME RESTRICTIONS\n\n#\t\t\t\t\tFOR SIMPLICITY, LET\tP = 2*PI*PITCH\n#\t\t\t\t\t\t\t\tR = 2*PI*ROLL\n\n#\t\t\t\t\tCONSTRUCT THE TRANSFORMATION MATRIX, TSMV, GIVING DESIRED S/C AXES IN\n#\t\t\t\t\tTERMS OF SM COORDINATES.  LET THE RESULTING ROWS EQUAL THE VECTORS XDC,\n#\t\t\t\t\tYDC,AND ZDC.\n\n#\t\t\t\t\t *     (    SIN(P)                 0               -COS(P)    )   (XDC)\n#\t\t\t\t\tTSMV = (-SIN(R)*COS(P)\t\t-COS(R)\t\t-SIN(R)*SIN(P)) = (YDC)\n#\t\t\t\t\t       (-COS(R)*COS(P)           SIN(R)         -COS(R)*SIN(P))   (ZDC)\n\n#\t\t\t\t\tXDC,YDC,ZDC ARE USED AS INPUT TO CALCGTA FOR THE EXTRACTION OF THE\n#\t\t\t\t\tEULER SET OF ANGLES WHICH WILL BRING THE SM INTO THE DESIRED\n#\t\t\t\t\tORIENTATION.  THIS EULER SET, OGC, IGC, AND MGC, MAY BE IDENTIFIED\n#\t\t\t\t\tAS THE DESIRED CDU ANGLES.\n\n#\t\t\t\t\t(XDC)\t\t\t(OGC)\n#\t\t\t\t\t(YDC) ---) CALCGTA ---) (IGC)\n#\t\t\t\t\t(ZDC)\t\t\t(MGC)\n\n#\t\t\t\t\t\t\t   -\n#\t\t\t\t\tDEFINE THE VECTOR DELTACDU.\n\n#\t\t\t\t\t -         (OGC)   (CDUX)\n#\t\t\t\t\tDELTACDU = (IGC) - (CDUY)\n#\t\t\t\t\t           (MGC)   (CDUZ)\n\n#\t\t\t\t\t\t\t\t -\t\t-    *    -\n#\t\t\t\t\tCOMPUTE ATTITUDE ERRORS, A, WHERE\tA = TGSC*DELTACDU\n#\n#\t\t\t\t\t *     (1\t      SIN(CDUZ)             0    )   THE GIMBAL ANGLES\n# Page 542\n#\tTGSC = (0\tCOS(CDUX)*COS(CDUZ)\tSIN(CDUX)) = TO SPACECRAFT AXES\n#\t       (0      -SIN(CDUX)*COS(CDUZ)\tCOS(CDUX))   CONVERSION MATRIX\n\n#\t\t\t     -\n#\tTHE ATTITUDE ERRORS, A, ARE STORED ONE HALF SINGLE PRECISION IN\n#\tTHE REGISTERS AK, AK1, AK2 AS INPUT TO NEEDLER, THE FDAI ATTITUDE\n#\tERROR DISPLAY ROUTINE.\n\nATERJOB\t\tCAE\tFLAGWRD6\t# CHECK FLAGWRD6\n\t\tMASK    OCT60000        # BITS 14, 15\n\t\tEXTEND\n\t\tBZF     +2              # OK - CONTINUE\n\t\tTC      ENDOFJOB\t# SATURN STICK ON - KILL JOB\n\t\tCAF     BIT10           # CHECK IF S/C CONTROL\n\t\tEXTEND                  # OF SATURN PANEL\n\t\tRAND    CHAN30          # SWITCH IS ON\n\t\tEXTEND\n\t\tBZF     STRSAT          # IT IS - GO STEER\n\t\tCCS     SATSW           # IT IS NOT - WAS IT ON LAST CYCLE\n\t\tTC      ATTDISP         # NO - CONTINUE\n\t\tTC      ATRESET         # YES - REINITIALIZE NEEDLER\n\t\tTC      ATRESET         # YES - REINITIALIZE NEEDLER\nATTDISP\t\tCS\tRPSTART\t\t# PITCH/ROLL START TIME\n\t\tAD\tTIME1\n\t\tEXTEND\n\t\tBZMF\tNOPOLY\t\t# IF MINUS THEN ATTITUDE HOLD\n\t\tTS\tMPAC\t\t# MPAC=TIME1-RPSTART\n\t\tTS\tSPOLYARG\t# SAVE FOR USE IN ROLL CALCULATION\n\t\tAD\tPOLYSTOP\t# NEG PITCHOVER TIME IN CSECS\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTC      NOPOLY          # GO TO ATTITUDE HOLD\n\t\tCA      TIME2\n\t\tEXTEND\n\t\tBZMF    +2\n\t\tTC      NOPOLY          # GO TO ATTITUDE HOLD\n\t\tCAE\tPOLYNUM\n\t\tTS\tL\n\t\tCAF\tCOEFPOLY\t# EVALUATE PITCH POLYNOMIAL\n\t\tTC\tPOWRSERS\t# SCALED TO 32 REVOLUTIONS\n\n\t\tCA      ZERO            # RETURN WITH PITCH(32REV)\n\t\tTS\tMODE\t\t# STORED MPAC, MPAC +1\n\t\tTC\tINTPRET\n\t\tSETPD\tSL\t\t# 32(PITCH(32REV))=PITCH(REV)\n\t\t\t0\n\t\t\t5\n\t\tPUSH\t\t\t# LET P(RAD)=2*PI*PITCH(REV)\n\t\tGOTO\n\t\t\tATTDISP1\t# AROUND SETLOC\n# Page 543\n#\t\t\t\t     *\n#\tCONSTRUCT SM TO S/C MATRIX, TSMV\n\n\t\tSETLOC\tP11TWO\n\t\tBANK\t\t\t# 36 IN COL., 34 IN DISK\n\n\t\tCOUNT\t36/P11\n\nATTDISP1\tCOS\tDCOMP\n\t\tSTODL\t14D\t\t# -.5*COS(P)\n\t\tSIN\n\t\tSTODL\t10D\t\t# .5*SIN(P)\n\t\t\tZEROVECS\n\t\tSTORE\t12D\t\t# 0\n\n#\tEVALUATE ROLL = LAUNCHAZ-AZIMUTH-.5+SATRLRT*T\n\t\tSLOAD\tDMP\n\t\t\tSPOLYARG\t# TIME1 - RSPSTART ,CSECS B-14.\n\t\t\tSATRLRT\n\t\tSL\tDSU\n\t\t\t14D\n\t\t\tDPHALF\n\t\tDAD\tDSU\t\t# ASSUMING X(SM) ALONG LAUNCH AZIMUTH,\n\t\t\tLAUNCHAZ\t# LAUNCHAZ = ANGLE FROM NORTH TO X(SM).\n\t\t\tAZIMUTH\t\t# AZIMUTH = -ANGLE FROM NORTH TO Z(S/C)\n\t\tRTB\t\t\t# DETERMINE IF ROLLOUT\n\t\t\tRLTST\t\t# IS COMPLETED\nATTDISPR\tPUSH\tCOS\t\t# CONTINUE COMPUTING TSMV\n\t\tPUSH\t\t\t# LET\tR(RAD) = 2*PI*ROLL(REV)\n\t\tDMP\tSL1\n\t\t\t14D\n\t\tSTODL\t22D\t\t# -.5*COS(R)*COS(P)\n\t\tDCOMP\n\t\tSTORE\t18D\t\t# -.5*COS(R)\n\t\tDMP\tSL1\n\t\t\t10D\n\t\tSTODL\t26D\t\t# -.5*COS(R)*SIN(P)\n\t\tSIN\tPUSH\n\t\tSTORE\t24D\t\t# .5*SIN(R)\n\t\tDMP\tSL1\n\t\t\t14D\n\t\tSTODL\t16D\t\t# -.5*SIN(R)*COS(P)\n\t\tDCOMP\n\t\tDMP\tSL1\n\t\t\t10D\n\t\tSTOVL\t20D\t\t# -.5*SIN(R)*SIN(P)\n\t\t\t10D\n\n#\tFROM TSMV FIND THE HALF UNIT VECTORS XDC,YDC,ZDC = INPUT TO CALCGTA\n# Page 544\n\t\tUNIT\n\t\tSTOVL\tXDC\t\t# XDC = .5*UNIT(SIN(P),0,-COS(P))\n\t\t\t16D\n\t\tUNIT\n\t\tSTOVL\tYDC\t\t# YDC = .5*UNIT(-SIN(R)*COS(P),-COS(R),\n\t\t\t22D\t\t#\t\t\t-SIN(R)*SIN(P))\n\t\tUNIT\n\t\tSTCALL\tZDC\t\t# ZDC = .5*UNIT(-COS(R)*COS(P),SIN(R),\n\t\t\tCALCGTA\t\t#\t\t\t-COS(R)*SIN(P))\n\n#\tCALL CALCGTA TO COMPUTE DESIRED SM ORIENTATION\tOGC,IGC,AND MGC\n#\t\t\t\t -          -   -\n#\tFIND DIFFERENCE VECTOR\tDELTACDU = OGC-CDUX\n\n#\tENTER HERE IF ATTITUDE HOLD\n\nNOPOLYM\t\tVLOAD\tPUSH\t\t#        OGC      IGC\n\t\t\tOGC\t\t# CHANGE IGC  TO  MGC FOR COMPATIBILITY\n\t\tPUSH\tCALL\t\t#        MGC      OGC\n\t\t\tCDUTRIG\t\t# WITH Y,Z,X ORDER OF CDUSPOT\n\t\tVLOAD\tRTB\t\t#  -         DPHI     OGC-CDUX ,PD4\n\t\t\t2\t\t# DELTACDU = DTHETA = IGC-CDUY ,   0\n\t\t\tV1STO2S\t\t#            DPSI     MGC-CDUZ ,   2\n\t\tSTOVL\tBOOSTEMP\n\t\t\tZEROVECS\n\t\tSTOVL\t0\n\t\t\tCDUSPOT\n\t\tRTB\tRTB\n\t\t\tV1STO2S\n\t\t\tDELSTOR\n\t\tSTODL\t10D\n\t\t\tSINCDUZ\n\t\tDMP\tSL1\n\t\t\t0\n\t\tDAD\tSR2\t\t# CHANGE SCALE OF AK TO 2REVS\n\t\t\t4\n\t\tGOTO\n\t\t\tATTDISP2\n\n\t\tSETLOC\tP11ONE\n\t\tBANK\n\t\tCOUNT\t34/P11\n\nATTDISP2\tSTODL\t16D\t\t# 16D, .5(DPHI + DTHETA*SIN(CDUZ))\n\t\t\tCOSCDUZ\n\t\tDMP\tPUSH\n\t\t\t0\n\t\tDMP\tSL1\n\t\t\tCOSCDUX\n\t\tPDDL\tDMP\n# Page 545\n\t\t\tSINCDUX\n\t\t\t2\n\t\tDAD\tSL1\n\t\tSTADR\n\t\tSTODL\t17D\t\t# 17D,\t.5(DTHETA*COS(CDUX)*COS(CDUZ)\n\t\tDMP\tSL1\t\t#\t\t\t+DPSI*SIN(CDUX))\n\t\t\tSINCDUX\n\t\tPDDL\tDMP\n\t\t\tCOSCDUX\n\t\t\t2\n\t\tDSU\tSL1\n\t\tSTADR\n\t\tSTORE\t18D\t\t# 18D,\t.5(-DTHETA*SIN(CDUX)*COS(CDUZ)\n\t\tTLOAD\t\t\t#\t\t\t+DPSI*COS(CDUX))\n\t\t\t16D\n\t\tSTORE\tAK\t\t# STORE ATTITUDE ERRORS IN AK,AK1,AK2\n\t\tEXIT\n\n\t\tCA      SATSW\n\t\tCCS     A               # CHK TAKEOVER STATUS\n\t\tTC      SATOUT          # POS - DISPLAY ONLY\n\t\tTC      AKLOAD          # 0     STORE BIAS\nSTEERSAT        TC      INTPRET         # NEG   STEER L/V\n\t\tTLOAD   TAD\n\t\t\tBIASAK\n\t\t\tAK\n\t\tSTORE   AK              # AKS = AKS - STORED BIAS\n\t\tEXIT\n\t\tCA      AK\n\t\tTC      RESCALES\n\t\tTS      AK\n\t\tCA      AK1\n\t\tTC      RESCALES\n\t\tTS      AK1\n\t\tCA      AK2\n\t\tTC      RESCALES\n\t\tTS      AK2\n# DISPLAY ATTITUDE ERRORS ON FDAI VIA NEEDLER\n\nSATOUT\t\tTC\tBANKCALL\n\t\tCADR\tNEEDLER\nATERSET\t\tCAF\tOCT31\t\t# DELAY .25 SEC\n\t\tTC\tBANKCALL\t# EXECUTION + DELAY =.56SEC APPROX\n\t\tCADR\tDELAYJOB\n\t\tTC\tATERJOB\t\t# END OF ATT ERROR DISPLAY CYCLE\n\nAKLOAD          CS      AK              # STORE AKS\n\t\tTS      BIASAK          # INTO BIAS\n\t\tCS      AK1             # COMPLEMENTED\n\t\tTS      BIASAK +1\n# Page 546\n\t\tCS      AK2\n\t\tTS      BIASAK +2\n\t\tCS      BIT1            # SET SW\n\t\tTS      SATSW           # TO STEER\n\t\tTC      STEERSAT        # GO STEER\nSTRSAT\t\tCA      SATSW           # CHECK IF NEEDLER\n\t\tEXTEND                  # HAS BEEN INITIALIZED\n\t\tBZMF    ATTDISP         # YES - CONTINUE\nATRESET\t\tCS      RCSFLAGS        # NO - SET\n\t\tMASK    BIT3            # INITIALIZATION SW\n\t\tADS     RCSFLAGS        # FOR NEEDLER\n\t\tTC      BANKCALL        # AND GO\n\t\tCADR    NEEDLER         # DO IT\n\t\tCAF     REVCNT          # OCT 6\n\t\tTC      BANKCALL        # DELAY JOB\n\t\tCADR    DELAYJOB        # 60 MS -WAIT TILL IMUERRCNTR ZEROED\n\t\tCCS     SATSW          \t# CHECK SW STATUS\n\t\tTC      TAKEON          # POS   STEER INIT.\n\t\tTC      +1              # 0     RETURN TO DISPLAY\n\t\tCA      BIT1            # NEG   RETURN TO DISPLAY\n\t\tTS      SATSW           # SW = DISPLAY ON\n\t\tCS      BIT9            # DISABLE\n\t\tEXTEND                  # SIVB\n\t\tWAND    CHAN12          # TAKEOVER\n\t\tTC      SATOUT          # DISPLAY\nTAKEON          CAF     BIT9            # ENABLE\n\t\tEXTEND                  # SIVB\n\t\tWOR     CHAN12          # TAKEOVER\n\t\tCA      ZERO            # INDICATE NEEDLER\n\t\tTS      SATSW           # WAS INITIALIZED\n\t\tTC      SATOUT\nS11.1\t\tVLOAD\tABVAL\n\t\t\tVN\n\t\tSTOVL\tVMAGI\t\t# VI\tSCALED 2(7) IN METERS/CSEC\n\t\t\tRN\n\t\tUNIT    DOT\n\t\t        VN\n\t\tSL1\n\t\tSTODL   HDOT\n\t\t        RPAD\n\t\tBOF     VLOAD\n\t\t        AMOONFLG\n\t\t        EARTHALT\n\t\t        RLS\n\t\tABVAL\tSR2\nEARTHALT         BDSU\n\t\t        36D\n\t\tSTORE   ALTI\n\t\tRVQ\nDELSTOR\t\tCA\tBOOSTEMP\n# Page 547\n\t\tEXTEND\t\t\t# STORE DELTACDU INTO PDL 0,2,4\n\t\tMSU\tMPAC\n\t\tINDEX\tFIXLOC\n\t\tTS\t0\n\t\tCA\tBOOSTEMP +1\n\t\tEXTEND\n\t\tMSU\tMPAC +1\n\t\tINDEX\tFIXLOC\n\t\tTS\t2\n\t\tCA\tBOOSTEMP +2\n\t\tEXTEND\n\t\tMSU\tMPAC +2\n\t\tINDEX\tFIXLOC\n\t\tTS\t4\n\t\tTCF\tDANZIG\nRLTST\t\tCA\tMPAC\t\t# DETERMINE IF ROLLOUT\n\t\tEXTEND\t\t\t# IS COMPLETED\n\t\tMP\tSATRLRT +1\n\t\tEXTEND\n\t\tBZMF\tDANZIG\t\t# UNLIKE SIGNS STILL ROLLING\n\t\tEXTEND\t\t\t# ROLLOUT COMPLETED\n\t\tDCA\tMBDYTCTL +2\t# ZERO OUT ROLL CONTRIBUTION\n\t\tDXCH\tMPAC\n\t\tTC\tDANZIG\nNOPOLY\t\tTC\tINTPRET\t\t# COMES HERE IF\n\t\tSETPD\tGOTO\t\t# ATTITUDE HOLD\n\t\t\t0\n\t\t\tNOPOLYM\nCOEFPOLY\tADRES\tPOLYLOC\nV06N62\t\tVN\t0662\nRESCALES        EXTEND                  # RESCALE AK S FOR\n\t\tMP      SATSCALE        # NEW HARDWARE\n\t\tDDOUBL                  # SCALING FOR\n\t\tDDOUBL                  # STEERING\n\t\tTC      Q               # SATURN\n# SATURN TAKEOVER FUNCTION\n# ************************\n\n# PROGRAM DESCRIPTION\n\n#\tMOD NUMBER 1\n#\tMOD BY ELIASSEN\n\n# FUNCTIONAL DESCRIPTION\n\n#\tDURING THE COASTING PHASE OF SIVB ATTACHED, THE\n#\tASTRONAUT MAY REQUEST SATURN TAKEOVER THROUGH\n#\tEXTENDED VERB 46 (BITS 13,14 OF DAPDATR1 SET ).\n#\tTHE CMC REGARDS RHC COMMANDS AS BODY-AXES RATE\n#\tCOMMANDS AND IT TRANSMITS THESE TO SATURN AS DC\n# Page 548\n#\tVOLTAGES.  THE VALUE OF THE CONSTANT RATE COMMAND\n#\tIS 0.5 DEG/SEC.  AN ABSENCE OF RHC ACTIVITY RE-\n#\tSULTS IN A ZERO RATE COMMAND.\n\n#\tTHE FDAI ERROR NEEDLES WILL INDICATE THE VALUE\n#\tOF THE RATE COMMAND.\n\n# CALLING SEQUENCE\n#\n#\tDAPFIG +9D\tTC\tPOSTJUMP\n#\t\t\tCADR\tSATSTKON\n\n# SUBROUTINES CALLED\n\n#\tENDEXT\n#\tIBNKCALL\n#\tSTICKCHK\n#\tNEEDLER\n#\tT5RUPT\n#\tRESUME\n\n# ASTRONAUT REQUESTS\n\n#\tENTRY\t- VERB 46 ENTER\n#\t\t  (CONDITION - BITS 13, 14 OF DAPDATR1 SET)\n#\n#\tEXIT\t- VERB 48 ENTER\t(FLASH V06N46)\n#\t\t  VERB 21 ENTER\tAXXXX ENTER WHERE A=0 OR 1\n#\t\t  VERB 34 ENTER\n#\t\t  VERB 46 ENTER\n\n# NORMAL EXIT MODE\n\n#\t\tVERB 46 ENTER\t(SEE ASTRONAUT ABOVE)\n\n# ALARM OR ABORT EXIT MODES\n\n#\tNONE\n\n# OUTPUT\n\n#\tSATURN RATES IN CDUXCMD, CDUYCMD, CDUZCMD\n\n# ERASABLE INITIALIZATION\n\n#\tDAPDATR1\t(BITS 13,14 MUST BE SET)\n\n# DEBRIS\n\n#\tCENTRALS\n# Page 549\n#\tCDUXCMD, CDUYCMD, CDUZCMD\n\n\t\tBANK\t43\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tCOUNT\t23/STTKE\nSATSTKON\tEXTEND\n\t\tDCA\t2REDOSAT\n\t\tINHINT\n\t\tDXCH\tT5LOC\n\t\tCAF\tPOSMAX\n\t\tTS\tTIME5\n\t\tCS\tFLAGWRD6\t# TURN ON BITS 15,14 OF\n\t\tMASK\tRELTAB11\t# FLAGWRD6\n\t\tADS\tFLAGWRD6\t#\tSATSTICK CONTROL OF T5\n\t\tTC\tIBNKCALL\t# ZERO JET CHANNELS IN 14 MS AND THEN\n\t\tCADR\tZEROJET\t\t# LEAVE THE T6 CLOCK DISABLED\n\t\tRELINT\n\t\tTC\tGOPIN\t\t# EXIT THUS BECAUSE WE CAME VIA V46\n\n\t\tEBANK=\tBODY3\n2REDOSAT\t2CADR\tREDOSAT\n\n\n\t\tSBANK=  LOWSUPER\n\t\tBANK\t32\n\t\tSETLOC\tP11FOUR\n\t\tBANK\n\nREDOSAT\t\tLXCH\tBANKRUPT\t# ALSO COMES HERE FOR RESTARTS\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\t\tCS\tRCSFLAGS\t# TURN ON BIT3 OF RCSFLAGX\n\t\tMASK\tBIT3\t\t# FOR\n\t\tADS\tRCSFLAGS\t# NEEDLER INITIALIZATION\n\t\tTC\tIBNKCALL\n\t\tCADR\tNEEDLER\t\t# DISABLE IMU ERR COUNTERS ETC.\n\t\tCAF\tBIT9\t\t# SIVB\n\t\tEXTEND\t\t\t# TAKEOVER\n\t\tWOR\tCHAN12\t\t# ENABLE\n\t\tEXTEND\t\t\t# SET UP T5 CYCLE\n\t\tDCA\t2SATSTCK\n\t\tDXCH\tT5LOC\n\t\tCAF\t100MST5\t\t# IN 100 MSECS\n\t\tTS\tTIME5\n\t\tTCF\tRESUME\t\t# END OF SATURN STICK INITIALIZATION\n\n#\tTHIS SECTION IS EXECUTED EVERY 100 MSECS\n# Page 550\nSATSTICK\tLXCH\tBANKRUPT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tCAF\t2SATSTCK\t# SET UP RUPT\n\t\tTS\tT5LOC\t\t# LO ORDER LOC SET\n\t\tCAF\t100MST5\t\t# 100 MSECS\n\t\tTS\tTIME5\n\t\tCAF\tSTIKBITS\n\t\tEXTEND\n\t\tRXOR\tCHAN31\t\t# CHECK IF MAN ROT BITS SAME\n\t\tMASK\tSTIKBITS\n\t\tTC\tIBNKCALL\t# SET RATE INDICES\n\t\tCADR\tSTICKCHK\t# FOR PITCH YAW AND ROLL\n\n\t\tINDEX\tRMANNDX\t\t# SET SATURN RATES\n\t\tCA\tSATRATE\n\t\tTS\tAK\t\t#\t\tROLL\n\t\tINDEX\tPMANNDX\n\t\tCA\tSATRATE\n\t\tTS\tAK1\t\t#\t\tPITCH\n\t\tINDEX\tYMANNDX\n\t\tCA\tSATRATE\n\t\tTS\tAK2\t\t#\t\tYAW\n\n\t\tTC\tIBNKCALL\t# FOR SATURN INTERFACE AND FDAI DISPLAY\n\t\tCADR\tNEEDLER\n\t\tTCF\tRESUME\t\t# END OF SATURN STICK CONTROL\n\nSTIKBITS\tOCT\t00077\n100MST5\t\tDEC\t16374\n\t\tEBANK=\tBODY3\n2SATSTCK\t2CADR\tSATSTICK\n"
  },
  {
    "path": "Comanche055/P20-P25.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP20-P25.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t562-534\n# Mod history:\t2009-05-10 RSB\tAdapted from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.\n#\t\t2009-05-20 RSB\tCorrections:  P2OS -> P20S, STO -> STQ,\n#\t\t\t\tGOTOPOOH -> GOTOPOOH, a duplicated EXTEND\n#\t\t\t\twas fixed, P23.10 -> R23.10,\n#\t\t\t\tS22B0X44 -> S22BOX44, S22SUBSCL -> 22SUBSCL,\n#\t\t\t\tS22DPP -> S22DSPP, changed some instructions in\n#\t\t\t\tP23.152.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 562\n# RENDEZVOUS NAVIGATION PROGRAM 20\n#\n# PROGRAM DESCRIPTION\n#\n# \tMOD NO -- 1\n# \tMOD BY -- N. BRODEUR\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tTO CONTROL THE CSM ATTITUDE AND OPTICS TO ACQUIRE THE LEM IN THE S+T\n#\tFIELD AND TO POINT THE CSM TRANSPONDER AT THE LEM.  TO UPDATE EITHER THE\n#\tLEM OR CSM STATE VECTOR (AS SPECIFIED BY THE ASTRONAUT BY THE DSKY\n#\tENTRY) ON THE BASIS OF OPTICAL TRACKING DATA (REQUESTED BY DSKY)\n#\n# CALLING SEQUENCE --\n#\n# \tASTRONAUT REQUEST THROUGH DSKY V37E20E\n#\n# SUBROUTINES CALLED\n#\n#\tR02BOTH\t(IMU STATUS CHECK)\t\t\t\tBANKCALL\n#\tFLAGUP\t\t\t\t2PHCHNG\t\t\tLOADTIME\n#\tR61CSM (PREFERRED TRACKING ATTITUDE)\t\t\tFLAGDOWN\n#\tR52 (AUTO OPTICS POSITIONING ROUT)\t\t\tSETINTG\n#\tR22 (REND TRACK DATA PROC ROUT)\t\t\t\tPRIOCHNG\n#\tENDOFJOB\t\t\tINTEGRV\t\t\tGRP2PC\n#\tINTPRET\t\t\t\tMKRLEES\t\t\tFINDVAC\n#\n# NORMAL EXIT MODES --\n#\n# \tP20 MAY BE TERMINATED IN TWO WAYS -- ASTRONAUT SELECTION OF IDLING\n#\tPROGRAM (P00) BY KEYING V37E00E OR BY KEYING IN V56E\n#\n# ALARM OR ABORT EXIT MODES --\n#\n# \tNONE DIRECTLY FROM P20\n#\n# OUTPUT\n#\n# \tTRKMKCNT = NO OF RENDEZVOUS TRACKING MARKS TAKEN (COUNTER)\n#\tVHFCNT = NO OF VHF RANGING MARKS INCORPORATED (COUNTER)\n#\n# FLAGS SET + RESET\n#\n#\tRNDVZFLG,VEHUPFLG,UPDATFLG,TRACKFLG,TARG1FLG\n#\tHOLDFLAG,WBODY,WBODY1,WBODY2,DELCDUX,DELCDUY,DELCDUZ\n#\tSTIKFLAG,PRFTRKAT,VINTFLAG,DIM0FLAG,R60FLAG,R61CNTR\n\n\t\tBANK\t33\n\t\tSETLOC\tP20S\n\t\tBANK\n\n\t\tEBANK=\tESTROKER\n\t\tCOUNT*\t$$/P20\n\nPROG20\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\t\t# IMU STATUS CHECK\n\t\t\t\t\t# BLOCKING OF UPLINK IS DONE BY UPLINK PRG\n\t\tCAF\tZERO\n\t\tTS\tTRKMKCNT\t# ZERO REND TRACKING MARK COUNTER\n\t\tTS\tVHFCNT\t\t# ZERO REND VHF RNG MRK COUNTER\n\t\tTC\tUPFLAG\t\t# SET PREF TRACK ATT FLAG\n\t\tADRES\tPRFTRKAT\t# BIT 10 FLAG 5\n\t\tTC\tDOWNFLAG\t# LEM TO BE UPDATED.  VEHUPFLG RESET.\n\t\tADRES\tVEHUPFLG\t# BIT 8 FLAG 1\n# Page 563\n\t\tTC\tUPFLAG\t\t# SET TRACKFLAG\n\t\tADRES\tTRACKFLG\t# BIT 5 FLAG 1\n\t\tTC\tUPFLAG\t\t# SET UPDATFLG\n\t\tADRES\tUPDATFLG\t# BIT 7 FLAG 1\n\t\tTC\tUPFLAG\t\t# SET RNDVZFLG\n\t\tADRES\tRNDVZFLG\t# BIT 7 FLAG 0\n\t\tTC\t2PHSCHNG\n\t\tOCT\t4\n\t\tOCT\t05022\n\t\tOCT\t26000\n\t\tTC\tINTPRET\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTCALL\tMARKTIME\n\t\t\tSETINTG\t\t# SET INTEGRATION FLAGS\n\t\tBOFF\tSET\n\t\t\tRENDWFLG\n\t\t\tP20.1\n\t\t\tDIM0FLAG\t# SET TO INTEGRATE THE W MATRIX\nP20.1\t\tBON\tCLEAR\n\t\t\tVEHUPFLG\n\t\t\tP20.2\n\t\t\tVINTFLAG\t# SET FOR LM INTEGRATION\nP20.2\t\tCALL\n\t\t\tINTEGRV\n\t\tCALL\n\t\t\tGRP2PC\t\t# GROUP 2 PHASE CHANGE\n\t\tCALL\n\t\t\tSETINTG\t\t# SET INTEGRATION FLAGS\n\t\tBOFF\tCLEAR\n\t\t\tVEHUPFLG\n\t\t\tP20.3\n\t\t\tVINTFLAG\t# SET FOR LM INTEGRATION\nP20.3\t\tCALL\n\t\t\tINTEGRV\n\t\tEXIT\n\t\tCAF\tPRIO26\n\t\tTC\tFINDVAC\n\t\tEBANK=\tMRKBUF2\n\t\t2CADR\tR22\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00072\n\t\tOCT\t00111\nPIKUP20\t\tCAF\tPRIO14\t\t# ALLOW HIGHER PRIO THAN LAMBERT\n\t\tTC\tPRIOCHNG\n\t\tCAF\tBIT5\t\t# IS TRACK FLAG SET\n\t\tMASK\tSTATE\t+1\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\t# NO\n# Page 564\n\t\tCAF\tBIT13\n\t\tMASK\tSTATE\t+3\t# IS REFSMFLG SET\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\n\t\tCAF\tZERO\n\t\tTS\tR61CNTR\t\t# INITIALIZE R61 COUNTER\n\t\tTC\tBANKCALL\n\t\tCADR\tR61CSM\n\t\tEBANK=\tQMIN\n\t\tCAF\tEBANK5\n\t\tTS\tEBANK\n\t\tTC\tUPFLAG\t\t# SET TARGET FLAG TO LEM\n\t\tADRES\tTARG1FLG\t# BIT 10 FLAG 1\nP20R52JB\tTC\tINTPRET\n\t\tCALL\n\t\t\tR52\t\t# SET UP AUTO OPTICS JOB\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tMKRLEES\n\t\tCAF\tONE\t\t# HOLD PRESENT ATTITUDE\n\t\tTS\tHOLDFLAG\n\t\tTC\tENDOFJOB\nOCT203\t\tOCT\t00203\nFIRST3\t\tEQUALS\tFURST3\n\n# Page 565\n# ORBITAL NAVIGATION PROGRAM 22\n\n\t\tBANK\t31\n\t\tSETLOC\tP20S1\n\t\tBANK\n\n\t\tEBANK=\tLANDMARK\n\t\tCOUNT*\t$$/P22\n\nPROG22\t\tTC\tDOWNFLAG\t# RESET RNDVZFLG BIT 7 FLAG 0\n\t\tADRES\tRNDVZFLG\n\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\t\t# IMU STATUS CHECK\n\t\tTC\tINTPRET\t\t# COMPUTE ANGLE BETWEEN Y AND VXR SM\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTCALL\tTDEC1\n\t\t\tCSMCONIC\t# INTEGRATE TO PRESENT TIME\n\t\tVLOAD\tVXV\t\t# CROSS PRODUCT BETWEEN V AND R\n\t\t\tVATT\n\t\t\tRATT\n\t\tUNIT\tDOT\n\t\t\tREFSMMAT +6\n\t\tABS\n\t\tSL1\tARCCOS\n\t\tSTORE\t+MGA\n\t\tCLEAR\tEXIT\n\t\t\tRENDWFLG\n\t\tCAF\tV06N45B\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tGOTOPOOH\t# TERM P22\n\t\tTC\tPROG22A\t\t# PROC\n\t\tTC\t-5\t\t# ENTER\n\t\tCAF\tTHREE\n\t\tTC\tBLANKET\t\t# BLANK OUT R1 + R2\n\t\tTC\tENDOFJOB\nPROG22A\t\tCS\tPRIO7\t\t# RESULT=70777  SET OFFSET NO.=0\n\t\tMASK\tLANDMARK\n\t\tTS\tLANDMARK\n\t\tTC\tINTPRET\n\t\tCLEAR\n\t\t\tP22MKFLG\n\t\tSET\tBOFF\n\t\t\tERADFLAG\n\t\t\tCMOONFLG\n\t\t\tPROG22B\t\t# EARTH\n\t\tSET\t\t\t# MOON\n\t\t\tLUNAFLAG\n\t\tDLOAD\tCALL\t\t# MPAC=V05N70,MPAC+1=NONZERO FOR N70\n\t\t\tV05N7022\n# Page 566\n\t\t\tS22N7071\n\t\tGOTO\n\t\t\tCALLR52\nPROG22B\t\tCLEAR\tSET\t\t# EARTH ORBIT\n\t\t\tLUNAFLAG\n\t\t\tKNOWNFLG\n\t\tCALL\t\t\t# GET LAT/LONG/ALT FROM ASTRO\n\t\t\tP22SUBRB\nCALLR52\t\tEXIT\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00004\n\t\tOCT\t05022\n\t\tOCT\t13000\n\t\tCAF\tFIVE\n\t\tTS\tMARKINDX\t# SET MARK INDEX=5 FOR R52\n\t\tTC\tUPFLAG\n\t\tADRES\tTARG2FLG\t# SET FOR SIGHTING LMK\n\t\tTC\tDOWNFLAG\n\t\tADRES\tTARG1FLG\t# CLEAR FOR NON-LEM\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tR52\nDOV5N71\t\tSLOAD\tCALL\t\t# MPAC=V05N71,MPAC+1=0 FOR N71\n\t\t\tV05N7122\n\t\t\tS22N7071\nPROG22C\t\tLXC,2\tSLOAD*\n\t\t\tMARKSTAT\n\t\t\tQPRET,2\n\t\tSTCALL\t8NN\n\t\t\tS22.1\t\t# ESTABLISH LANDMARK -- COMPUTE ORBITAL\nP22OVER\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tPROG22A\t\t# POINT A ON GSOP\nV06N45B\t\tVN\t0645\nV05N7022\tVN\t00570\nV05N7122\tVN\t00571\n\t\tSETLOC\tP20S\n\t\tBANK\n\n\t\tSETLOC\tP20S1\n\t\tBANK\n\nS22LSITE\tRTB\t\t\t# CONVERT RLS FROM MOON-FIXED TO BASIC REF\n\t\t\tLOADTIME\n\t\tSTOVL\t6D\t\t# 6-7D= TIME\n\t\t\tRLS\n\t\tSTODL\t0D\t\t# 0-5D= LANDING SITE VECTOR\n\t\t\tHIDPHALF\t# MPAC= ANY NON-ZERO FOR MOON\n\t\tCALL\n# Page 567\n\t\t\tRP-TO-R\t\t# RLS IN BASIC REF B-27 IN MPAC\n\t\tVSR2\t\t\t# LUNAFLAG AND ERADFLAG SET ABOVE\n\t\tSTORE\tALPHAV\t\t# SCALE RLS B-29 FOR LAT-LONG\n\t\tRTB\n\t\t\tLOADTIME\t# SET PRESENT TIME IN MPAC FOR LAT-LONG\n\t\tCALL\n\t\t\tLAT-LONG\n\t\tGOTO\n\t\t\tS22TOFF\t\t# EXIT\nOBTAINLL\tCALL\t\t\t# GET LAT/LONG/ALT FROM ASTRO\n\t\t\tP22SUBRB\n\t\tGOTO\n\t\t\tS22TOFF\t\t# EXIT\nP22SUBRB\tSTQ\tEXIT\t\t# GET LAT/LONG/ALT FROM ASTRO\n\t\t\tS22TOFF +1\n\t\tCAF\tV06N89B\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# TERMINATE\n\t\tTC\t+2\t\t# PROCEED\n\t\tTC\t-5\t\t# ENTER OR RECYCLE\n\t\tTC\tINTPRET\n\t\tDLOAD\tABS\t\t# TEST LAT/LONG GREATER THAN 90\n\t\t\tLANDLAT\n\t\tBDSU\tBMN\t\t# 1/4 REV - LAT\n\t\t\tDP1/4TH\n\t\t\tN89ERRX\n\t\tDLOAD\tABS\n\t\t\tLANDLONG\n\t\tBDSU\tBPL\n\t\t\tDP1/4TH\n\t\t\t+4\n\nN89ERRX\t\tEXIT\n\t\tTC\tFALTON\n\t\tTC\tP22SUBRB +2\t# LONG GR. THAN 90  REDISPLAY\n\t\tCALL\n\t\t\tLLASRDA\n\t\tGOTO\n\t\t\tS22TOFF +1\t# EXIT\nS22N7071\tSTORE\t8KK\t\t# 8KK=V05N71,V05N70 8KK+1=0 N71, NOT 0 N70\n\t\tSTQ\tEXIT\n\t\t\tS22TOFF\nS22DSPPA\tCA\t8KK\t\t# V05N70 OR V05N71\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tGOTOPOOH\t# V34E TERMINATE\n\t\tTC\t+5\t\t# V33E PROCEED\n\t\tTC\t-5\t\t# V32E RECYCLE\n\t\tCAF\tFIVE\t\t# IMMEDIATE RETURN BLANK OUT R1,R3\n\t\tTC\tBLANKET\n# Page 568\n\t\tTC\tENDOFJOB\n\t\tCA\tLANDMARK\n\t\tMASK\tPRIO7\t\t# 07000\n\t\tTS\tCXOFF\t\t# 08000 = OFFSET INDICATOR\n\t\tCS\tPRIO5\t\t# 5 8-5\n\t\tAD\tCXOFF\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# OFF=0 THRU 5 OK\n\t\tTC\tS22DSPP\t\t# OFF=6.7 ILLEGAL REDISPLAY\n\t\tTC\tDOWNFLAG\n\t\tADRES\tKNOWNFLG\t# CLEAR KNOWNFLG\n\t\tCA\tLANDMARK\t# MASK A FROM ABCDE\n\t\tMASK\t13,14,15\n\t\tEXTEND\n\t\tBZMF\tS22DSPP\t\t# A=0,4,5,6,7  ILLEGAL REDISPLAY\n\t\tTS\t22SUBSCL\t# TEMP\n\t\tCS\tBIT14\n\t\tAD\t22SUBSCL\n\t\tCCS\tA\nS22DSPP\t\tTC\tFALTON\t\t# + A=3 ILLEGAL REDISPLAY\n\t\tTC\tS22DSPPA\t# COMMON ERROR EXIT BACK TO DISPLAY\n\t\tTC\t+2\t\t# - A=1 KNOWN LMK  CHECK DE\n\t\tTC\tS22ABDE\t\t# -0 A=2 UNKNOWN LMK, DE MEANINGLESS\n\t\tTC \tUPFLAG\n\t\tADRES\tKNOWNFLG\t# SET KNOWNFLG\n\t\tCS\tHIGH9\t\t# RESULT= 00077\n\t\tMASK\tLANDMARK\n\t\tTS\t22SUBSCL\t# 000DE\n\t\tCS\tBIT1\n\t\tAD\t22SUBSCL\n\t\tEXTEND\n\t\tBZMF\tS22ABDE\t\t# DE=0,1 OK FOR BOTH N70,N71\n\t\tCA\t8KK\t+1\t# =0 FOR N71, NOT =0 FOR N70\n\t\tEXTEND\n\t\tBZF\tS22DSPP\t\t# N71 REDISPLAY  DE MUST= 0 OR 1\n\t\tCA\tBIT5\t\t# N70 TEST DE= 50-57 OCTAL FOR ADV. ORBIT\n\t\tAD\tOCT50\t\t# SUM=00070\n\t\tMASK\t22SUBSCL\t# 00D0\n\t\tCS\tA\n\t\tAD\tOCT50\n\t\tEXTEND\n\t\tBZF\tDE-GR-50\t# D=5 OR DE=50-57, OK FOR N70\n\t\tTC\tS22DSPP\t\t# DE NOT 50-57  ILLEGAL, REDISPLAY\nS22ABDE\t\tTC\tINTPRET\n\t\tBOFF\tSLOAD\n\t\t\tKNOWNFLG\t# UNKNOWN LMK, DE MEANINGLESS\n\t\t\tS22TOFF\n\t\t\t22SUBSCL\t# =0 GET LLA FROM ASTRO, NOT=0 USE RLS\n\t\tBHIZ\tGOTO\n\t\t\tOBTAINLL\t# GET LAT/LONG/ALT FROM ASTRO  N89\n# Page 569\n\t\t\tS22LSITE\t# GET LAT/LONG/ALT FROM RLS\nDE-GR-50\tTC\t2PHSCHNG\n\t\tOCT\t00004\n\t\tOCT\t05022\n\t\tOCT\t13000\n\t\tCA\tFIVE\n\t\tTS\tMARKINDX\n\t\tTC\tUPFLAG\n\t\tADRES\tTARG2FLG\n\t\tTC\tDOWNFLAG\n\t\tADRES\tTARG1FLG\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tADVORB\n\t\tGOTO\n\t\t\tDOV5N71\n\n# Page 570\n# PROGRAM NAME:  OPTICS CALIBRATION ROUTINE\n# MOD NO:  1\n# MOD BY:  TOM KNATT\n#\n# FUNCTIONAL DESCRIPTION:  TO MEASURE THE EFFECT OF SOLAR RADIATION ON\n#\tTHE SXT TRUNNON ANGLE AND STORE THE MEASURED TRUNNION BIAS FOR P23\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tR57\n#\n# SUBROUTINES CALLED:  DISPLAY ROUTINES\n#\n# NORMAL EXIT MODES:  VIA EGRESS\n#\n# ALARMS:  NONE\n#\n# ABORT MODES:  P23 ABORT IF MARKING SYSTEM OR EXTENDED VERB ACTIVE\n#\n# INPUT:  NONE REQUIRED, NORMALLY CALLED BY P23\n#\n# OUTPUT:  TRUNNION BIAS ANGLE: ANGLE DETERMINED WHEN SHAFT LINE OF SIGHT\n#\t(SLOS) AND LANDMARK LINE OF SIGHT (LLOS) ARE SUPERIMPOSED.  THIS ANGLE\n#\tMAY NOT BE EXACTLY ZERO BECAUSE OF UNEVEN HEATING OF THE OPTICS, FOR\n#\tEXAMPLE.\n#\n# ERASABLE INITIALIZATION REQUIRED:  MRKBUF1, EXTVBACT\n#\n# DEBRIS:  RUPTREGS USED BY MARKRUPT AND ERASABLES USED BY DISPLAYS.\n\n\t\tBANK\t33\n\t\tSETLOC\tP20S\n\t\tBANK\n\t\tCOUNT*\t$$/R57\n\t\tEBANK=\tMRKBUF1\nR57\t\tSTQ\tEXIT\n\t\t\tEGRESS\n\t\tCAF\tEBANK7\n\t\tTS\tEBANK\n\t\tCAF\tSIX\t\t# BIT2 = MARKING SYSTEM IN USE\n\t\tMASK\tEXTVBACT\t# BIT3 = EXTENDED VERB IN PROGRESS\n\t\tCCS\tA\n\t\tTC\tP23ABRT\t\t# SET, THEREFORE ABORT\n\t\tCAF\tBIT2\t\t# NOT SET\n\t\tADS\tEXTVBACT\t# SET IT\nR57A\t\tTC\tUPFLAG\t\t# SET V59FLAG (BIT 12 FLAG 5 TO INDICATE\n\t\tADRES\tV59FLAG\t\t# CALIBRATION MARK\n\t\tCAF\tV59NB\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKFR\n\t\tTC\tGOTOPOOH\t# TERMINATE\n\t\tTC\tENDR57\n\t\tTC\tENDR57\n\t\tCAF\tSEVEN\n# Page 571\n\t\tTC\tBLANKET\t\t# BLANK OUT R1,R2,R3\n\t\tTC\tENDOFJOB\n# STORE TRUNNION ANGLE (OCDU)\nMARKDISP\tCAF\tV06N87NB\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKFR\n\t\tTC\tGOTOPOOH\t# TERMINATE\n\t\tTC\tR57B\t\t# PROCEED\n\t\tTC\tR57A\t\t# ENTER (RECYCLE)\n\t\tCAF\tFIVE\n\t\tTC\tBLANKET\t\t# BLANK OUT R1,R3\n\t\tTC\tENDOFJOB\nR57B\t\tCA\t19.77DEG\t# PUT FIXED INTO ERASABLE FOR MSU\n\t\tTS\tL\t\t# INSTRUCTION COMING UP\n\t\tCA\tMRKBUF1 +5\t# CONTAINS TRUNNION\n\t\tEXTEND\n\t\tMSU\tL\t\t# CONNECTS TRUNBIAS FROM 2'S TO 1'S\n\t\tTS\tTRUNBIAS\nENDR57\t\tTC\tDOWNFLAG\t# RESET V59FLAG\n\t\tADRES\tV59FLAG\t\t# BIT 12 FLAG 5\n\t\tCAF\tEBANK5\n\t\tTS\tEBANK\n\t\tCAF\tPRIO14\n\t\tTC\tNOVAC\t\t# THIS JOB CLEARS BIT IN\n\t\tEBANK=\tMARKSTAT\n\t\t2CADR\tENDMARK\t\t# MARKING IN R57 SO R53 CAN TAKE OVER\n\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tEGRESS\nP23ABRT\t\tTC\tBAILOUT\n\t\tOCT\t01211\nV06N87NB\tVN\t0687\nV59NB\t\tVN\t5900\nV51NB\t\tVN\t5100\n19.77DEG\tOCT\t61740\n\n# Page 572\n# PROGRAM DESCRIPTION\n# MOD NO:  1\n# MOD BY:  N. BRODEUR\n#\n# FUNCTIONAL DESCRIPTION\n#\n# TO PERFORM SIGHTING MARKS IN CONJUNCTION WITH THE RENDEZVOUS NAVIG-\n# ATION PROGRAM.  CALLED BY ASTRONAUT VIA EXTENDED VERB.\n#\n# CALLING SEQUENCE:\n#\n#\tR21 VIA V57\n#\tR23 VIA V 54\n#\n# SUBROUTINES CALLED:\n#\n#\tFLAGUP\t\tFLAGDOWN\tBANKCALL\n#\tENDOFJOB\tGOMARK2\t\tGOMARKF\n#\tINTPRET\t\tGENTRAN\t\tKLEENEX\n#\tENDMARK\n#\n# NORMAL EXIT MODES:\n#\n# MARKRUPT USED BY SXTMARK HAS BEEN MODIFIED TO STORE MARK IN MRKBUF2\n# FOR USE BY R22.  WHEN ASTRONAUT IS FINISHED TAKING MARKS, HE HITS AN\n# PROCEED, R21 IS TERMINATED THUS CAUSING THE FINAL MARK TO BE TRANSFRD\n# TO MRKBUF2 FOR PROCESSING BY R22\n#\n# ALARM OR ABORT EXIT MODES:\n#\n#\tNONE\n#\n# OUTPUT:\n#\n#\t7 REGISTER MRKBUF2 CONTAINING TIME2,TIME1,CDUY,OPTICS X,CDUZ, OPTICS Y,\n#\tCDUX.\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n# FLAGS SET AND RESET\n#\tR21MARK\t\t(COMMUNICATION TO MARKRUPT TO STORE MARKS IN MRKBUF1 +2)\n#\tR23FLG\t\tINDICATES COAS MARKING\n#\n# DEBRIS\n\n\t\tEBANK=\tMRKBUF1\n\t\tSETLOC\tRENDEZ\n\t\tBANK\n\n\t\tCOUNT*\t$$/R21\n\nR21CSM\t\tTC\tUPFLAG\t\t# SET R21MARK\n\t\tADRES\tR21MARK\t\t# BIT 14 FLAG 2\nR23CSM\t\tCA\tNEGONE\n\t\tTS\tMRKBUF1\n\t\tTS\tMRKBUF2\n\t\tCA\tFLAGWRD1\n\t\tMASK\tR23BIT\t\t# TEST R23FLG\n\t\tEXTEND\n\t\tBZF\tR21C1\t\t# NOT SET REGULAR R21 MARKING\n\t\tCAF\tV0694\t\t# R23 BACKUP MARKING\n\t\tTC\tBANKCALL\t# DISPLAY SHAFT + TRUNNION\n\t\tCADR\tGOMARKF\n\t\tTC\tR21END\t\t# TERM\n\t\tTC\t+2\t\t# PROC\n# Page 573\n\t\tTC\t-5\t\t# ENTER\nR23CSM1\t\tCAF\tV53\t\t# PERFORM ALT LOST SIGHT MARK\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARK2\n\t\tTC\tR21END\t\t# V34: TERMINATE R23\n\t\tTCF\tR21CSMA\t\t# PROCEED: END BACK UP MARKING (R23)\n\t\tCAF\tSIX\t\t# TRANSFER MRKBUF1 TO MRKBUF2\n\t\tTC\tGENTRAN\n\t\tADRES\tMRKBUF1\n\t\tADRES\tMRKBUF2\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tMRKBUF1\t\t# READ TIME\n\t\tCA\tCDUY\t\t# READ CDU ANGLES\n\t\tTS\tMRKBUF1 +2\n\t\tCA\tCDUZ\n\t\tTS\tMRKBUF1 +4\n\t\tCA\tCDUX\n\t\tTS\tMRKBUF1 +6\n\t\tRELINT\n\t\tTC\tR23CSM1\nR21C1\t\tCAF\tV51NB\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARK2\n\t\tTC\tR21END\t\t# V34: TERMINATE R21\n\t\tTCF\tR21CSMA\t\t# PROCEED: END R21\n\t\tTCF\tR21C1\t\t# RECYCLE\n\nR21CSMA\t\tCA\tMRKBUF1\t\t# IF -1 NO MARK\n\t\tAD\tONE\n\t\tEXTEND\n\t\tBZF\tR21END\t\t# ZERO = NO MARK\n\t\tCAF\tSIX\t\t# MARK THEREFORE TRANSFER IT TO MRKBUF2\nR21CSM1\t\tTC\tGENTRAN\t\t# TRANSFER MRKBUF1 TO MRKBUF2\n\t\tADRES\tMRKBUF1\n\t\tADRES\tMRKBUF2\n\t\tRELINT\nR21END\t\tTC\tBANKCALL\n\t\tCADR\tKLEENEX\n\t\tTC\tDOWNFLAG\t# RESET R21MARK\n\t\tADRES\tR21MARK\t\t# BIT 14 FLAG 2\n\t\tTC\tENDMARK\t\t# END MARKING AND ENDJOB\nV53\t\tVN\t5300\nV0694\t\tVN\t0694\n\n# Page 574\n# PREFERRED TRACKING ATTITUDE ROUTINE R61CSM\n#\n# PROGRAM DESCRIPTION\n#\tMOD NO:  2\n#\tMOD BY:  N. BRODEUR\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tTO COMPUTE THE PREFERRED TRACKING ATTITUDE OF THE CSM TO ENABLE OPTICS\n#\tTRACKING OF THE LM AND TO PERFORM THE MANEUVER TO THE PREFERRED\n#\tOR X-AXIS TRACKING ATTITUDE.\n#\n# CALLING SEQUENCE:\n#\n#\tTC\tBANKCALL\n#\tCADR\tR61CSM\n#\n# SUBROUTINE CALLED\n#\n#\tMAKECADR\tBANKCALL\n#\tINTPRET\t\tFLAGUP\t\tFLAGDOWN\n#\tBANKJUMP\tCRS61.1\t\tR60CSM\n#\tPHASCHNG\n#\n# NORMAL EXIT MODES:\n#\n#\tNORMAL RETURN TO CALLER + 1\n#\n# OUTPUT:\n#\n#\tSEE OUTPUT FOR CRS61.1 & ATTITUDE MANEUVER ROUTINE (R60CSM)\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tGENRET USED TO SAVE Q FOR RETURN\n#\tR61CNTR MUST BE PRESET TO ZERO\n#\n# FLAGS SET + RESET\n#\n#\t3-AXIS FLAG\n#\n# DEBRIS\n#\n#\tSEE SUBROUTINES\n\n\t\tEBANK=\tGENRET\n\t\tCOUNT*\t$$/R61\t\t# ROUTINES -- NAVIGATION -- PREF. TR. 9TT=\n\nR61CSM\t\tCAF\tEBANK6\t\t# SWITCH TO EBANK 6\n\t\tXCH\tEBANK\n\t\tTS\tSAVBNK\t\t# SAVE EBANK\n\t\tTC\tMAKECADR\n\t\tTS\tGENRET\n\t\tCCS\tR61CNTR\t\t# TEST R61DNTR\n\t\tTC\tDECRM61\t\t# NOT READY TO DO R61\n\t\tTC\t+2\t\t# DO R61\n\t\tTC\tDECRM61 +1\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tCRS61.1\t\t# LOS DETERMINATION + VEH ATTITUDE\n\t\tEXIT\n\t\tINDEX\tMPAC\n\t\tTC\t+1\n\t\tTC\tR61END\t\t# SUBROUTINE DRIVING DAP\t(EXIT R61)\n\t\t\t\t\t# OR AUTO MODE NOT SET\t\t(EXIT R61)\n\t\t\t\t\t# OR SKIKFLAG SET\t\t(EXIT R61)\nR61C1\t\tTC\tDOWNFLAG\t# RESET 3-AXIS FLAG\n\t\tADRES\t3AXISFLG\t# BIT 6 FLAG 5\n# Page 575\n\t\tCS\tONE\t\t# SET R61CNTR NEG. TO INDICATE KALCMANU\n\t\tTS\tR61CNTR\n\n\t\tTC\tUPFLAG\t\t# SET FLAG FOR PRIORITY DISPLAYS FOR R60\n\t\tADRES\tPDSPFLAG\t# BIT 12 FLAG 4\n\t\tTC\tBANKCALL\n\t\tCADR\tR60CSM\n\t\tTC\tDOWNFLAG\t# RESET FLAG FOR PRIORITY DISPLAYS IN R60\n\t\tADRES\tPDSPFLAG\t# BIT 12 FLAG 4\n\t\tTC\tPHASCHNG\n\t\tOCT\t00111\n\t\tCAF\tZERO\n\t\tTC\tDECRM61\nR61END\t\tCAF\tTHREE\n\nDECRM61\t\tTS\tR61CNTR\n\n\t\tCAE\tGENRET\n\t\tLXCH\tA\t\t# RETURN IS IN L\n\t\tCA\tSAVBNK\t\t# RESTORE EBANK\n\t\tXCH\tEBANK\n\t\tLXCH\tA\t\t# RETURN IS NOW BACK IN A\n\t\tTC\tBANKJUMP\t# EXIT R61\n\t\tBANK\t13\n\t\tSETLOC\tP20S2\n\t\tBANK\n\n\t\tEBANK=\tMRKBUF1\n# Page 576\n# BVECTOR PERFORMS COMPUTATIONS FOR\n#\n# \tDELTAQ, THE MEASURED DEVIATION BASED ON THE DIFFERENCE BETWEEN THE CSM-LEM\n# \tSTATE VECTOR ESTIMATES AND THE ACTUAL TRACKING MEASUREMENT.\n#\n# \tUS, THE MODIFIED FICTITIOUS STAR DIRECTION VECTOR\n#\tGEOMETRY VECTORY B ASSOCIATED WITH EACH TRACKING MEASUREMENT.\n#\n# INPUT\n#\n#\tUM,1/2 UNIT VECTOR ALONG THE CSM-LM LINE-OF-SIGHT (BASIC REF. SYSTEM)\n#\n#\tUSTAR,FICTITIOUS STAR DIRECTION (1/2 UNIT VECTOR)\n#\n#\tRCLP,RELATIVE CSM TO LM POSITION VECTOR\n#\n# OUTPUT\n#\n#\tUSTAR,MODIFIED FICTITIOUS STAR DIRECTION (1/2 UNIT VECTOR)\n#\n#\tBVECTOR = 9 DIMENSIONAL BVECTOR (1/2 UNIT VEC.)\n#\n#\tDELTAQ = MEASURED DEVIATION\n#\n# CALLING SEQUENCE\n#\n#\tL\tCALL BVECTORS\n#\n# NORMAL EXIT\n#\n#\tL+1 OF CALLING SEQUENCE\n\n\t\tCOUNT\t23/20SUB\n\nBVECTORS\tSTQ\n\t\t\tEGRESS\n\t\tVLOAD\tUNIT\n\t\t\tRCLP\t\t# RELATIVE POSITION VECTOR\n\t\tSTODL\t26D\t\t# RCLP UNIT VEC\n\t\t\t36D\t\t# RCLP ABS VALUE\n\t\tSTOVL\tTEMPOR1\t\t# MOVE TO SAFE LOCATION\n\t\t\tUSTAR\n\t\tVXV\tUNIT\n\t\t\t26D\t\t# USTAR = UNIT(US X UCL)\n\t\tSTCALL\tBVECTOR\n\t\t\tGRP2PC\t\t# PHASE CHANGE\n\t\tVLOAD\n\t\t\tBVECTOR\n\t\tSTORE\tUSTAR\n\t\tDOT\tSL1\n\t\t\tUM\t\t# USTAR DOT UM\n\t\tACOS\tDSU\n\t\t\tDP1/4TH\n\t\tNORM\tDMP\n\t\t\tX1\n\t\t\tPI/4.0\n\t\tDMP\tSRR*\n\t\t\tTEMPOR1\t\t# RCLP ABS VALUE\n\t\t\t0 -3,1\t\t# ADJUST SCALING\n\t\tSTOVL\tDELTAQ\n\t\t\tZEROVECS\n\t\tSTORE\tBVECTOR +6\n\t\tSTORE\tBVECTOR +12D\n\t\tGOTO\n# Page 577\n\t\t\tEGRESS\nPI/4.0\t\t2DEC\t.785398164\n\n# Page 578\n# GETUM:  DETERMINES THE LINE OF SIGHT UNIT VECTOR UM IN THE BASIC REFERENCE\n# COORDINATE SYSTEM FROM THE OPTICS SHAFT AND TRUNNION ANGLES AND THE IMU\n# GIMBAL ANGLES.\n#\n# INPUT\n#\n#\tMARKDATA, BASE ADDRESS OF MARK DATA\n#\tREFSMMAT, ROTATION MATRIX FROM STABLE MEMBER TO BASIC REF. COORD. SYSTEM\n#\n# SUBROUTINES CALLED-\n#\n#\tSXTNB -- SEXT. ANGULAR READINGS TO NAV. BASE COOR.\n#\tNBSM -- TRANSFORM FROM NAV. BASE TO STABLE MEMBER\n#\n# OUTPUT\n#\n#\tMPAC = LINE OF SIGHT 1/2 UNIT VECTOR IN BASIC REFERENCE SYSTEM\n#\n# CALLING SEQUENCE\n#\n#\tL\tCALL GETUM\n#\n# NORMAL EXIT\n#\n#\tL+1 OF CALLING SEQUENCE\n\nGETUM\t\tSTQ\tSETPD\n\t\t\tEGRESS\n\t\t\t0\n\t\tLXC,1\tVLOAD*\n\t\t\tMARKDATA\t# CONTAINS ADDRESS OF MARK DATA\n\t\t\t1,1\n\t\tSTODL*\tMARKDOWN +1\t# TRANSFER DATA FROM WORKING STORAGE\n\t\t\t0,1\t\t# TO MARKDOWN ARRAY FOR DOWNLINK\n\t\tSTORE\tMARKDOWN\n\t\tAXT,2\n\t\t\t2\n\t\tXSU,2\tSXA,2\n\t\t\tX1\t\t# X1 = MARKDATA\n\t\t\tS1\t\t# S1 = MARKDATA(ADR) +2\n\t\tCALL\n\t\t\tSXTNB\t\t# SEXT. ANGULAR READINGS TO NAV. BASE COOR.\n\t\tCALL\n\t\t\tNBSM\t\t# TRANSFORM FROM NAV. BASE TO STABLE MEM.\n\t\tVXM\tVSL1\n\t\t\tREFSMMAT\n\t\tGOTO\t\t\t# MPAC = (UM) LINE OF SIGHT VECTOR\n\t\t\tEGRESS\t\t# EXIT\n\n# Page 579\n# RENDEZVOUS TRACKING DATA PROCESSING ROUTINE (R22)\n#\n# PURPOSE\t(1) TO PROCESS RENDEZVOUS SIGHTING MARK DATA TO UPDATE THE STATE VECTOR OF EITHER THE CSM OR LM AS\n#\t\tDEFINED BY THE RENDEZVOUS NAVIGATION PROGRAM (P20).\n#\n# ASSUMPTIONS\t(1) THIS ROUTINE IS MANUALLY SELECTED BY THE ASTRONAUT BY V55E WHENEVER RENDEZVOUS SIGHTING MARKS\n#\t\tARE DESIRED.  ITS SELECTION, HOWEVER, IS LIMITED TO PERIODS WHEN THE CMC IS HOLDING FOR A V/N FLASHING\n#\t\tDATA DISPLAY.  THIS ROUTINE RETURNS TO THE ORIGINAL PROGRAM AT THE INTERRUPTED DISPLAY.\n\n\t\tBANK\t34\n\t\tSETLOC\tP20S3\n\t\tBANK\n\n\t\tCOUNT\t34/R22\n\nR22\t\tCAF\tPRIO26\n\t\tTS\tPHSPRDT2\n\t\tTC\tPRIOCHNG\n\t\tCA\tNEG3\n\t\tTS\tMRKBUF2\n\t\tTC\tINTPRET\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTORE\tVHFTIME\t\t# PRESENT TIME\nREND1\t\tCALL\n\t\t\tGRP2PC\n\t\tCALL\n\t\t\tWAITONE\nREND1A\t\tEXIT\n\t\tCA\tMRKBUF2\n\t\tEXTEND\n\t\tBZF\tREND2\n\t\tEXTEND\n\t\tBZMF\tREND3A\nREND2\t\tCAF\tSIX\n\t\tTC\tGENTRAN\n\t\tADRES\tMRKBUF2\n\t\tADRES\tMARKTIME\t# MARKTIME MUST BE CONTIGUOUS WITH VTEMP\n\t\tCAF\tNEG3\t\t# NEG VALUE TO INDICATE VALUES USED\n\t\tTS\tMRKBUF2\n\t\tRELINT\n\t\tTC\tINTPRET\n\t\tCLEAR\tCALL\n\t\t\tSOURCFLG\t# 0 = OPTICS DATA\n\t\t\tGRP2PC\n\t\tSSP\tGOTO\n\t\t\tMARKDATA\n\t\tECADR\tVTEMP -2\n\t\t\tREND4\nREND3A\t\tTC\tINTPRET\nREND3\t\tCALL\n# Page 580\n\t\t\tGRP2PC\n\t\tCALL\n\t\t\tWAITONE\n\t\tBOFF\n\t\t\tVHFRFLAG\n\t\t\tREND1A\n\t\tRTB\n\t\t\tLOADTIME\t# PRESENT TIME\n\t\tDSU\tDSU\n\t\t\t60SECDP\t\t# 1 MIN\n\t\t\tVHFTIME\t\t# LAST READING OF RADAR\n\t\tBMN\tCALL\n\t\t\tREND1A\n\t\t\tRANGERD\t\t# READ RADAR RANGE\n\t\tDLOAD\n\t\t\tMARKTIME\n\t\tSTORE\tVHFTIME\t\t# FOR DOWNLINK\nREND4\t\tCALL\n\t\t\tSETINTG\t\t# SET INTEGRV FLAGS\n\t\tBON\tCALL\n\t\t\tVEHUPFLG\n\t\t\tCSMUPP\t\t# BRANCH IF CSM UPDATE\n\t\t\tINTEGRV\n\t\tCALL\n\t\t\tGRP2PC\t\t# PHASE CHANGE\n\t\tCALL\n\t\t\tSETINTG\t\t# SET INTEGRV FLAGS\n\t\tCLEAR\n\t\t\tVINTFLAG\t# SET INTEGRATION VEHICLE TO LM\nREND5\t\tBOFF\tSET\n\t\t\tRENDWFLG\n\t\t\tREND5A\t\t# DO NOT INTEGRATE W IF FLAG = 0\n\t\t\tDIM0FLAG\nREND5A\t\tCALL\n\t\t\tINTEGRV\n\t\tCALL\n\t\t\tSHIFTNDX\t# SET EARTH MOON SCALING INDEX\n\t\tCALL\n\t\t\tCMPOS\t\t# SET CSM POSITION\n\t\tSET\tCALL\n\t\t\tINCORFLG\t# SET FOR 1ST PASS\n\t\t\tLMPOS\t\t# SET LM POSITION\n\t\tCLEAR\tBON\n\t\t\tORBWFLAG\t# CLEAR FOR ORBITAL AND CISLUNAR\n\t\t\tRENDWFLG\n\t\t\tREND6\n\t\tDLOAD\n\t\t\tWRENDPOS\n\t\tSTCALL\t0\t\t# 0 = WRENDPOS\t1 = WRENDVEL\n\t\t\tINITIALW\t# INTIIALIZE W MATRIX\n# Page 581\n\t\tDLOAD\n\t\t\tZEROVECS\n\t\tSTORE\tVHFCNT\t\t# ZERO OUT VHFCNT AND TRKMKCNT\nREND6\t\tSET\n\t\t\tRENDWFLG\n\t\tVLOAD\tVSU\n\t\t\tLEMPOS\n\t\t\tCSMPOS\n\t\tSTORE\tRCLP\t\t# LM - CSM\nREND7\t\tUNIT\tBON\n\t\t\tSOURCFLG\n\t\t\tREND14\t\t# BRANCH IF DATA IS RADAR\n\t\tSTORE\tUCL\n\t\tBOFF\tCALL\n\t\t\tINCORFLG\n\t\t\tREND9\n\t\t\tGETUM\t\t# CALCULATE UM LINE OF SIGHT\n\t\tSTOVL\tUM\n\t\t\tUCL\n\t\tVXV\tBOV\n\t\t\tUM\t\t# UCL X UM\n\t\t\tREND8\nREND8\t\tUNIT\tBOV\n\t\t\tREND3\t\t# BRANCH IF OVERFLOW IGNORE MARK\n\t\tSTORE\tUSTAR\nREND9\t\tCALL\n\t\t\tBVECTORS\n\t\tBON\tVLOAD\n\t\t\tVEHUPFLG\n\t\t\tREND9A\n\t\t\tBVECTOR\n\t\tVCOMP\n\t\tSTORE\tBVECTOR\nREND9A\t\tCALL\n\t\t\tGRP2PC\n\t\tBON\n\t\t\tR23FLG\n\t\t\tREND15\t\t# BRANCH IF BACKUP OPTICS (R23 WORKING)\n\t\tDLOAD\tDAD\n\t\t\tSXTVAR\n\t\t\tIMUVAR\nREND10\t\tSTOVL\tVARIANCE\t# TEMP STORAGE FOR VARIANCE CALC.\n\t\t\tRCLP\n\t\tABVAL\tNORM\n\t\t\tX1\n\t\tDSQ\tDMP\n\t\t\tVARIANCE\n\t\tXAD,1\tCALL\n\t\t\tX1\n\t\t\tSHIFTNDX\t# GET EARTH MOON SCALING INDEX\n# Page 582\n\t\tXAD,1\tXAD,1\n\t\t\tX2\n\t\t\tX2\n\t\tSR*\tTLOAD\n\t\t\t0 -2,1\t\t# ADJUST SCALING TO B-40\n\t\t\tMPAC\n\t\tSTORE\tVARIANCE\n\t\tSLOAD\tSR\n\t\t\tINTVAR\t\t# INTEGRATION VARIANCE SCALED B-15\n\t\t\t25D\t\t# SCALE IT B-40\n\t\tTAD\tRTB\n\t\t\tVARIANCE\n\t\t\tTPMODE\n\t\tSTORE\tVARIANCE\n\t\tBOFF\tTAD\n\t\t\tSOURCFLG\t# BRANCH IF NOT VHF RADAR\n\t\t\tREND10A\n\t\t\tRVARMIN\t\t# VHF RADAR MIN. VARIANCE\n\t\tBPL\tTLOAD\n\t\t\tREND10A\n\t\t\tRVARMIN\n\t\tABS\t\t\t# MIN. VALUE WAS STORED AS NEG.\n\t\tSTORE\tVARIANCE\t# STORE MIN. VALUE\nREND10A\t\tCLEAR\tCALL\n\t\t\tDMENFLG\t\t# CLEAR FOR 6 X 6 W MATRIX\n\t\t\tINCORP1\t\t# CALCULATE UPDATE\n\t\tCALL\n\t\t\tGRP2PC\n\t\tBOFF\tCALL\n\t\t\tINCORFLG\n\t\t\tREND12\n\t\t\tSHIFTNDX\t# GET EARTH MOON SCALING INDEX\n\t\tVLOAD\tABVAL\n\t\t\tDELTAX +6\n\t\tSR*\n\t\t\t0,2\n\t\tSTOVL\tN49DISP +2\n\t\t\tDELTAX\n\t\tABVAL\tSR*\n\t\t\t0,2\n\t\tSTORE\tN49DISP\n\t\tSLOAD\n\t\t\tRMAX\n\t\tSR\tDSU\n\t\t\t10D\n\t\t\tN49DISP\n\t\tBMN\tSLOAD\n\t\t\tRENDISP\t\t# BRANCH IF POS UP. GREATER THAN MAX.\n\t\t\tVMAX\n\t\tDSU\tBMN\n# Page 583\n\t\t\tN49DISP +2\n\t\t\tRENDISP\t\t# BRANCH IF VEL. UPDATE GREATER THAN MAX.\nREND12\t\tCALL\n\t\t\tINCORP2\t\t# INCORPORATE UPDATE VALUES INTO STATE VEC\n\t\tBON\tBOFF\n\t\t\tSOURCFLG\n\t\t\tREND16\t\t# BRANCH IF DATA IS RADAR\n\t\t\tINCORFLG\n\t\t\tREND17\n\t\tCALL\n\t\t\tSHIFTNDX\t# GET EARTH MOON SCALING INDEX\n\t\tBON\tCALL\n\t\t\tVEHUPFLG\n\t\t\tREND18\t\t# BRANCH IF CSM UPDATE\n\t\t\tLMPOS\t\t# GET LM POSITION\nREND13\t\tCALL\n\t\t\tGRP2PC\t\t# PHASE CHANGE\n\t\tVLOAD\tVSU\n\t\t\tLEMPOS\n\t\t\tCSMPOS\n\t\tSTORE\tRCLP\t\t# LM - CSM\n\t\tCLRGO\n\t\t\tINCORFLG\n\t\t\tREND7\t\t# BRANCH FOR 2ND PASS THIS OPTICS MARK\nCSMUPP\t\tCLEAR\tCALL\n\t\t\tVINTFLAG\t# SET INTEGRATION VEHICLE EQ LM\n\t\t\tINTEGRV\n\t\tCALL\n\t\t\tGRP2PC\t\t# PHASE CHANGE\n\t\tCALL\n\t\t\tSETINTG\t\t# SET FLAGS FOR INTEGRATION\n\t\tGOTO\n\t\t\tREND5\nREND14\t\tSTOVL\tBVECTOR\t\t# VHF RADAR BVECTOR\n\t\t\tZEROVECS\n\t\tSTORE\tBVECTOR +6\n\t\tSTOVL\tBVECTOR +12D\n\t\t\tRCLP\n\t\tUNIT\tDLOAD\n\t\t\tVHFRANGE\t# VHFRANGE SCALED B-27\n\t\tBON\tSR2\n\t\t\tMOONTHIS\n\t\t\t+1\n\t\tDSU\tSET\n\t\t\t36D\t\t# ABVAL (RCLP)\n\t\t\tINCORFLG\n\t\tSTORE\tDELTAQ\n\t\tBOFF\tVLOAD\n\t\t\tVEHUPFLG\n\t\t\tREND14A\n# Page 584\n\t\t\tBVECTOR\n\t\tVCOMP\n\t\tSTORE\tBVECTOR\nREND14A\t\tCALL\n\t\t\tGRP2PC\n\t\tDLOAD\tGOTO\n\t\t\tRVAR\n\t\t\tREND10\nREND15\t\tSLOAD\tDAD\t\t# GET ALT LOS VARIANCE\n\t\t\tALTVAR\t\t# BACKUP OPTICS\n\t\t\tIMUVAR\t\t# IMU VARIANCE\n\t\tGOTO\n\t\t\tREND10\nREND16\t\tLXA,1\tINCR,1\n\t\t\tVHFCNT\t\t# VHF RADAR UPDATE COUNT\n\t\tDEC\t1\n\t\tSXA,1\tGOTO\n\t\t\tVHFCNT\t\t# UPDATE COUNT\n\t\t\tREND1\nREND17\t\tLXA,1\tINCR,1\n\t\t\tTRKMKCNT\t# OPTICS MARK COUNT\n\t\tDEC\t1\n\t\tSXA,1\tGOTO\n\t\t\tTRKMKCNT\t# UPDATE COUNT\n\t\t\tREND3\nREND18\t\tCALL\n\t\t\tCMPOS\t\t# GET CSM POSITION\n\t\tGOTO\n\t\t\tREND13\nCMPOS\t\tVLOAD\tVSR*\n\t\t\tDELTACSM\n\t\t\t7,2\n\t\tVAD\n\t\t\tRCVCSM\n\t\tSTORE\tCSMPOS\t\t# CSM POSITION SCALED B-27 OR B-29\n\t\tRVQ\nLMPOS\t\tVLOAD\tVSR*\n\t\t\tDELTALEM\n\t\t\t7,2\n\t\tVAD\n\t\t\tRCVLEM\n\t\tSTORE\tLEMPOS\t\t# LM POSITION SCALED B-27 OR B-29\n\t\tRVQ\nRENDISP\t\tEXIT\n\t\tCA\tFLAGWRD9\n\t\tMASK\tSOURCBIT\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tCA\tBIT2\n\t\tTC\t+2\n# Page 585\n\t\tCA\tBIT1\n\t\tTS\tN49DISP +4\n\t\tCAF\tZERO\t\t# SET TEMPOR1 > ZERO TO INDICATE\n\t\tTS\tTEMPOR1\t\t# V06 N49 DISPLAY HASN'T BEEN ANSWERED\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCAF\tPRIO27\t\t# SET UP DISPLAY JOB WITH HIGHER PRIORITY\n\t\tTC\tNOVAC\n\t\tEBANK=\tMRKBUF1\t\t# THAN PRESENT JOB\n\t\t2CADR\tRENDISP2\n\nRENDISP7\tTC\tINTPRET\n\t\tSTORE\tMPAC\n\t\tSLOAD\tBZE\n\t\t\tTEMPOR1\n\t\t\tRENDISP7 +1\t# DISPLAY HAS NOT BEEN ANSWERED YET\n\t\tBMN\tGOTO\n\t\t\tREND12\t\t# NEG INDICATES PROCEED\n\t\t\tRENDISP3\t# POS INDICATES RECYCLE\nRENDISP2\tCAF\tV06N49\n\t\tTC\tBANKCALL\n\t\tCADR\tPRIODSP\n\t\tTC\tGOTOV56\t\t# TERM EXIT P20 VIA V56\n\t\tCS\tONE\t\t# NEG INDICATES PROCEED RENDISP7 JOB\n\t\tTS\tTEMPOR1\t\t# POS INDICATES RECYCLE RENDISP7 JOB\n\t\tTC\tENDOFJOB\t# GO COMPLETE ABOVE JOB\nRENDISP3\tBON\n\t\t\tSOURCFLG\n\t\t\tREND1\t\t# DATA WAS RADAR GO LOOK FOR OPTICS NEXT\n\t\tEXIT\n\t\tEBANK=\tMRKBUF1\n\t\tINHINT\n\t\tCAF\tBUFBANK\n\t\tTS\tBBANK\n\t\tCA\tNEGONE\n\t\tTS\tMRKBUF1\t\t# ERASE MARK ONE BUFFER\n\t\tTS\tMRKBUF2\t\t# ERASE MARK TWO BUFFER\n\t\tRELINT\nRENDISP4\tTC\tINTPRET\n\t\tGOTO\n\t\t\tREND3\nSXTVAR\t\t2DEC\t0.04 E-6 B+16\t# SXT ERROR VARIANCE = .04 (MR)SQ\n\nIMUVAR\t\t2DEC\t0.04 E-6 B+16\t# IMU ERROR VARIANCE = .04 (MR)SQ\n\nV06N49\t\tVN\t0649\n\t\tEBANK=\tMRKBUF1\nBUFBANK\t\tBBCON\tRENDISP3\n\t\tBANK\t31\n\t\tSETLOC\tR22S1\n# Page 586\n\t\tBANK\nSETINTG\t\tSTQ\tCALL\n\t\t\tEGRESS\n\t\t\tINTSTALL\t# RESERVE INTEGRATION\n\t\tDLOAD\tSET\n\t\t\tMARKTIME\n\t\t\tSTATEFLG\n\t\tSTORE\tTDEC1\t\t# MARKTIME\n\t\tCLEAR\tCLEAR\n\t\t\tINTYPFLG\t# PRECISION INTEGRATION\n\t\t\tDIM0FLAG\n\t\tSET\tCLRGO\n\t\t\tVINTFLAG\t# SET VEHICLE EQ. CSM\n\t\t\tD6OR9FLG\t# SET W MATRIX DIM. EQ 6\n\t\t\tEGRESS\t\t# EXIT\nCNTCHK\t\tSTQ\n\t\t\tPOINTEX\nCONTCHK\t\tBOFF\n\t\t\tREFSMFLG\t# BRANCH TO END OF JOB IF REFSMMAT NO GOOD\n\t\t\tENDPLAC\n\t\tSLOAD\tBMN\n\t\t\tR61CNTR\n\t\t\tWAITONE1\n\t\tBON\tBOFF\t\t# IS TRACK FLAG SET\n\t\t\tUPDATFLG\n\t\t\tPOINTEX\n\t\t\tTRACKFLG\n\t\t\tENDPLAC\n\t\tEXIT\nREDOR22\t\tTC\tPHASCHNG\n\t\tOCT\t00132\n\t\tCAF\tPRIO26\n\t\tTC\tPRIOCHNG\n\t\tTC\tWAITONE +3\nWAITONE\t\tSTQ\n\t\t\tPOINTEX\nWAITONE1\tEXIT\n\t\tCAF\t4SECS\t\t# WAIT 4 SECS.\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tCONTCHK\t\t# CHECK AGAIN NOW\nRANGERD\t\tEXIT\n\t\tINHINT\n\t\tCS\tOCT17\n\t\tEXTEND\n\t\tWAND \tCHAN13\t\t# ZERO OUT BITS 1-4 OF CHANNEL 13\n\t\tCAF\tOCT11\n\t\tEXTEND\n# Page 587\n\t\tWOR\tCHAN13\t\t# GENERAGE SHIFT PULSES TO RADR, SET R. BIT\n\t\tRELINT\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tMARKTIME\t# READ PRESENT TIME\n\t\tTC\tDOWNFLAG\n\t\tADRES\tSKIPVHF\n\t\tTC\tBANKCALL\n\t\tCADR\tRADSTALL\t# WAIT FOR RANGE COMPLETE\n\t\tTC\tLIGHTON\t\t# BAD DATA GOOD BIT\n\t\tTC\tTRFAILOF\t# TURN TRACKER LIGHT OFF\nRANGERD1\tCCS\tRM\t\t# 15 BIT UNSIGNED RANGE\n\t\tTC\tRANGERD4\t# GR + 0\n\t\tTC\tLIGHTON\t+4\t# = + 0\n\t\tTC\tRANGERD3\t# L - 0\n\t\tTC\tRANGERD3\t# = - 0\nRANGERD4\tTC\tINTPRET\n\t\tSLOAD\tDMP\n\t\t\tRM\n\t\t\tCONVRNGE\t# CONVERT RANGE TO METERS B-27\nRANGERD2\tSTORE\tVHFRANGE\n\t\tSET\tRVQ\n\t\t\tSOURCFLG\t# SOURCE OF DATA TO VHF RADAR\nRANGERD3\tCA\tRM\n\t\tMASK\tPOSMAX\n\t\tTS\tMPAC\t\t# MASK OUT NEG. SIGN BIT\n\t\tTC\tINTPRET\n\t\tDMP\n\t\t\tCONVRNGE\t# CONVERT FROM NM TO METERS AND SCALE B-27\n\t\tDAD\tGOTO\n\t\t\tRANGEB14\t# VALUE IN METERS OF SIGN BIT SCALED B-27\n\t\t\tRANGERD2\nLIGHTON\t\tCA\tVHFRANGE\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tTRFAILON\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tMARKTIME\n\t\tSTORE\tVHFTIME\n\t\tGOTO\n\t\t\tREND1\nRANGEB14\t2DEC\t303431.7 B-27\t# 16384 X 18.52 SCALED B-27\n\nOCT17\t\tOCT\t00017\nOC40200\t\tOCT\t40200\nCONVRNGE\t2DEC\t18.52 B-13\t# VHF INPUT RANGE CONV. FROM .01 NM TO M\n\nVHFREAD\t\tEXTEND\n\t\tROR\tSUPERBNK\t# MUST SAVE SBANK BECAUSE OF RUPT\n# Page 588\n\t\tTS\tBANKRUPT\t# EXITS VIA TASKOVER BADEND OR GOODEND\n\t\tCS\tZERO\n\t\tTS\tRUPTAGN\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\t\tCS\tSTATE\t+2\n\t\tMASK\tSKIPVBIT\t# SKIPVHF FLAG\n\t\tEXTEND\n\t\tBZF\tTASKOVER\t# BRANCH IF VHF RESTART BIT SET\n\t\tCAF\tUPDATBIT\n\t\tMASK\tSTATE +1\t# UPDATEFLG\n\t\tEXTEND\n\t\tBZF\tBYPASS1\n\t\tCS\tSTATE\t+4\n\t\tMASK\tPDSPFBIT\t# PDSPFLAG\n\t\tEXTEND\n\t\tBZF\tBYPASS1\n\t\tCA\tRNRAD\n\t\tTS\tRM\t\t# SAVE RANGE\n\t\tCAF\tBIT2\n\t\tEXTEND\n\t\tRAND\tCHAN33\t\t# READ DATA GOOD BIT\n\t\tEXTEND\n\t\tBZF\tVHFGOOD\t\t# BRANCH IF DATA GOOD BIT EQUALS GOOD\nBYPASS\t\tTS\tVHFRANGE\t# STORE NON ZERO VALUE\n\t\tCAF\tTWO\n\t\tTC\tPOSTJUMP\n\t\tCADR\tBADEND\nBYPASS1\t\tCAF\tZERO\n\t\tTC\tBYPASS\nVHFGOOD\t\tCAF\tTWO\n\t\tTC\tPOSTJUMP\n\t\tCADR\tGOODEND\nSHIFTNDX\tAXT,2\tBON\n\t\t\t0\n\t\t\tVEHUPFLG\n\t\t\tSHIFTA\t\t# VEHICLE IS CSM\n\t\tBON\tRVQ\n\t\t\tLMOONFLG\n\t\t\t+1\n\t\tINCR,2\tRVQ\n\t\tDEC\t-2\nSHIFTA\t\tBON\tRVQ\n\t\t\tCMOONFLG\n\t\t\t+1\t\t# MOON ORB.\n\t\tINCR,2\tRVQ\n\t\tDEC\t-2\nINITIALW\tAXT,1\tSSP\n\t\t\t36D\n\t\t\tS1\n# Page 589\n\t\t\t6\n\t\tVLOAD\n\t\t\tZEROVECS\nINITA\t\tSTORE\tW +36D,1\t# CLEAR 0 - 35\n\t\tTIX,1\tAXT,1\n\t\t\tINITA\n\t\t\t36D\nINITB\t\tSTORE\tW +90D,1\t# CLEAR 54 - 89\n\t\tTIX,1\tSLOAD\n\t\t\tINITB\n\t\t\t0\t\t# POSITION VALUE\n\t\tSTORE\tW\t\t# INITIALIZE DIAGONAL W POSITION\n\t\tSTORE\tW +8D\n\t\tSTORE\tW +16D\n\t\tSLOAD\n\t\t\t1\t\t# VELOCITY VALUE\n\t\tSTORE\tW +72D\t\t# INITIALIZE DIAGONAL W VELOCITY\n\t\tSTORE\tW +80D\n\t\tSTORE\tW +88D\n\t\tRVQ\n# Page 590\n# CRS61.1\tR/10/68\n#\n# TO COMPUTE THE PREFERRED TRACKING ATTITUDE OF THE CSM WHICH ENABLES\n# OPTICS TRACKING OF THE LEM AND LM TRACKING OF THE CSM RADAR TRANSPONDER\n# AND TO COMPUTE THE X-AXIS TRACKING ATTITUDE OF THE CSM WHICH ENABLES\n# COAS TRACKING OF THE LM.\n#\n# TO PERFORM THE MANEUVER TO THE SELECTED TRACKING ATTITUDE IF THE\n# MANEUVER IS LESS THAN 10 DEGREES BUT TO CALL R60 IF THE MANEUVER IS\n# GREATER THAN 10 DEGREES BUT TO CALL R60 IF THE MANEUVER IS\n# GREATER THAN 10 DEGREES OR IF THE R60 FLAG IS SET.\n#\n#\t(1)\tEXTRAPOLATE LM AND CSM STATE VECTORS TO PRESENT TIME USING\n#\t\tCONIC EQUATIONS.\n#\n#\t(2)\tCALCULATE LOS FROM CSM TO LM = RL - RC.\n#\n#\t(3)\tTHE PRERFERRED TRACKING ATTITUDE IS DEFINED AS FOLLOWS:\n#\t\tTHE TRACK AXIS (I) IS ALIGNED ALONG THE LOS TO THE LM.  THE\n#\t\tTRACK AXIS (I) IS DEFINED AS:\n#\n#\t\tUNIT(I)=UNIT(Z  )COS55  &  UNIT(X  )SIN55\n#\t\t     -       -SC                -SC\n#\n#\t(4)\tCOMPUTE DESIRED CDU ANGLES, USING VECPOINT.\n#\n# (Sorry, I don't know where (5) and (6) are. --- RSB 2009.)\n#\t(7)\tFORM DIFFERENCE BETWEEN DESIRED AND ACTUAL CDUS.\n#\t\tIF ANY OF THE THREE ANGLE DIFFERENCES EXCEEDS 10 DEGREES,\n#\t\tGROSS MANEUVER IS REQUIRED.  SIGNAL R61 (SET MPAC=1) TO\n#\t\tOPERATE KALCMANU AND EXIT CRS61.1.\n#\t\tIF ALL DIFFERENCES ARE LESS THAN 10 DEGREES, CONTINUE.\n#\n#\t(8)\tCALCULATE ORTHOGONAL LOS RATE IN REF COORDS AS\n#\n#\t\tOMEGATH = (UNITLOS(B1) X UNITDV(B1))(ABSDV(B7)/ABSLOS(B29))\n#\n#\t\tCONVERSION FACTOR OF 100/2PI (B4) REV CSEC PER RAD SEC IS\n#\t\tAPPLIED TO YIELD UNITS OF REVS/SEC.  SCALE IS CARRIED AS\n#\t\tB+1+1+7-29+4+1 PLUS RESULTS OF NORMALIZING ABSDV, ABSLOS.\n#\t\tTHE EXTRA B+1 RESULTS FROM RESCALING ABSDV B8 AFTER NORM\n#\t\tTO AVOID OVFLOW ON DIVIDE.\n#\n#\t\tUNITLOS = UNIT( RL - RC ) B1.\n#\t\tUNITDY  = UNIT( VL - VC ) B1.\n#\t\tABSLOS  = LENGTH OF LOS, METERS B29.\n#\t\tABSDV   = LENGTH OF DV, METERS/CSEC B7.\n#\n#\t(9)\tOBTAIN RATE IN SM COORDS.\n#\n#\t\tOMETATHSM = (REFSMMAT)(OMEGATH).\n#\n#\t(10)\tOBTAIN GIMBAL ANGLE INCREMENTS FOR 0.1 SECOND.\n#\n#\t\tDTHETASM = (0.1)(OMEGATHSM)\n#\n#\t(11)\tOBTAIN DELCDUX,Y,Z USING SUBR SMCDURES.\n# Page 591\n#\t\tINPUT CONSISTS OF\n#\n#\t\t(A)\tVECTOR OF ANGULAR INCREMENTS, DTHETASM, STORED\n#\t\t\tIN V(DTHETASM).\n#\t\t(B)\tSIN,COS CDUX,Y,Z FROM SUBR CDUTRIG.\n#\n#\t\tTRANSFER OUTPUT OF SMCDURES FROM V(DCDU) TO VAC14D.\n#\n#\t(12)\tCALCULATE ANG LOS RATE IN BODY(NB) COORDS USING SUBR SMNB.\n#\n#\t\tOMEGANB = (SMNB)(OMETATHSM)\n#\n#\t\tSUBR SMNB REQUIRES OMEGATHSM IN V(VAC32D) AND ACTUAL CDUS\n#\t\t(Y,X,Z ORDER) IN V(VAC20D) WITH S1 OF VAC = BASE ADDRESS\n#\t\tOF CDUS (FIXLOC + 20D).\n#\n#\t(13)\tCALCULATE ANG LOS RATE IN CONTROL COORDS AS FOLLOWS\n#\n#\t\tWBODY = (MBDYTCTL)(OMEGANB)\tUNITS=REVS/SEC(B0) (?).\n#\n#\t\t\t       ( 0.5       0              0      )   BODY TO\n#\t\tMBDYTCTL(B1) = (  0   COS(7.25)B1   -SIN(7.25)B1 ) = CONTROL\n#\t\t\t       (  0   SIN(7.25)B1    COS(7.25)B1 )   AXES\n#\t\t\t\t\t\t\t\t     CONVERSION\n#\t\t\t\t\t\t\t\t     MATRIX\n#\n#\t(14)\tRESCALE WBODY TO UNITS OF 460 DEG/SEC BY APPLYING FACTOR\n#\t\tOF 0.8 TO REVS/SEC.\n#\n#\t(15)\tADDRESS LIVE AUTOPILOT REGISTERS IN BASIC (UNDER INHINT).\n#\n#\t\tTRANSFER DESIRED CDUS, SCALED 180 DEGREES, FROM T(SAVEDCDU)\n#\t\tTO V(CDUXD).\n#\n#\t\tTRANSFER DELCDUS, SCALED 180 DEG, FROM V(VAC14D)\n#\t\tTO V(DELCDUX).\n#\n#\t\tTRANSFER OMEGA CONTROL, SCALED 450 DEG/SEC, FROM V(MPAC)\n#\t\tTO V(WBODY).\n#\n#\t\tRELINT, SET MPAC=0, EXIT CRS61.1.\n#\n# CALL:\t\tL\tCALL\tCRS61.1\n#\n# RETURNS:\tALL TO L+1.\n#\n#\t\t(1)\tS(MPAC)=0.  NORMAL EXIT.  3 SETS OF INPUTS FED TO DAP.\n#\t\t(2)\tS(MPAC)=1.  CALCULATED DESIRED CDUS,SP, SET IN T(CPHI)\n#\t\t\tFOR KALCMANU.  ABS(ACDU - DCDU) EXCEEDS 10 DEGREES.\n#\t\t(3)\tS(MPAC)=2.  GNCS AUTO MODE NOT SELECTED (BIT10=1).\n#\t\t(4)\tS(MPAC)=3.  DAP HOLD FLAG (HOLDFLAG) NOT EQUAL -1.\n# Page 592\n#\n# INPUT:\t(1)\tTIME2,TIME1.  COMPUTER CLOCK TIME,DP, CENTISEC B28.\n#\t\t(2)\tCDUX,Y,Z.  PRESENT CDU ANGLES,SP,2S COMPL HALF-REVS B0.\n#\t\t(3)\tM(REFSMMAT), STABLE MEMBER COORDS B1.\n#\n# OUTPUT:\tNORMAL.  EXIT WITH S(MPAC) = 0.\n#\n#\t\t(1)\tCDUXD,CDUYD,CDUZD, DESIRED OUTER, INNER, MIDDLE CDU ANGLES,\n#\t\t\tDP, IS COMPL, SCALED 180 DEGREES (HALF-REVS B0).\n#\t\t(2)\tDELCDUX,DELCDUY,DELCDUZ.  0.1 SEC DCU ANGULAR INCREMENTS,\n#\t\t\tDP, IS COMPL, SCALED 180 DEG.\n#\t\t(3)\tWBODY,WBODY1,WBODY2.  LOS ANGULAR RATE IN CONTROL COORDS,\n#\t\t\tDP, IS COMPL, SCALED 450 DEG/SEC.\n#\n#\t\tSPECIAL.  EXIT WITH S(MPAC) = 1.\n#\n#\t\t(1)\tCPHI,CTHETA,CPSI.  DESIRED OUTER, INNER, MIDDLE CDU ANGLES,\n#\t\t\tSP, 2'S COMPL, SCALED 180 DEGREES.\n#\n# EXTERNAL SUBROUTINES USED\t(B)=BASIC\n#\n#\t(1) CALCGA\t\t(5) LOADTIME(B)\t\t(9) SMNB\n#\t(2) CDUTRIG\t\t(6) MATMOVE\n#\t(3) CSMCONIC\t\t(7) RCDUS(B)\n#\t(4) LEMCONIC\t\t(8) SMCDURES\n#\n# ERASABLE\n#\n#\t(1) S(Q611),EBANK7\tCRS61.1 EXIT.\n#\t(2) S(Q6111),EBANK7\tCALCDCDU EXIT.\n#\t(3) T(SAVEDCDU),E6\tSP VECTOR OF CDUDS.\n#\t(4) V(SAVEPOS),E7\tCSM POS VEC AND D(SAVEPOS)= LENGTH OF LOS.\n#\t(5) V(SAVEVEL),E7\tCSM VEL VEC.\n#\n# FLAGWDS:\tHOLDFLAG.  USED, NOT SET.\n#\n# MISC:\t(1) ERASABLE ITEMP1 USED TO TEMP STORE EBANK UNDER INHINT.\n#\t(2) ERASABLE P21TIME USED AS TEMP STORE DURING CRS61.1\n#\t(3) ERAS DTHETASM USED AS TEMP STORE DURING EARLY CRS61.1\n#\n# DEBRIS -- CURRENT VAC AREA, CRS61.1 ERASABLES, ITEMP1, P21TIME\n\n\t\tBANK\t24\n\t\tSETLOC\tP20S4\n\t\tBANK\n\n\t\tEBANK=\tCDUXD\n\t\tCOUNT*\t$/CRS61\n\nCRS61.1\t\tSTQ\tSETPD\n\t\t\tQ611\n\t\t\t0\n\t\tRTB\n# Page 593\n\t\t\tLOADTIME\t# LOAD CLOCK TIME2,1 INTO MPAC.\n\nSTORT\t\tSTCALL\tP21TIME\t\t# STORE CLOCK TIME FOR SUBR R63\n\t\t\tR63\t\t# SUBR TO CALC DCDU (T=PRESENT,PASS1)\n\t\tTLOAD\n\t\t\tTHETAD\t\t# SAVE DCDU(T) FROM CALCDCDU FOR STEP4.\n\t\tSTORE\tSAVEDCDU\n\n\t\tEXIT\n\t\tTC\tSTEP2CK\nAUTOCK\t\tCAF\tPRIO30\n\t\tEXTEND\n\t\tRXOR\tCHAN31\n\t\tMASK\tFURST3\n\t\tEXTEND\t\t\t# AUTO MODE SELECTED (BITS 15-13=011)\n\t\tBZF\tDAPCK\t\t#\tYES -- CONTINUE.\n\t\tTC\tASET\n\nDAPCK\t\tCS\tFLAGWRD1\t# IS STIKFLAG SET (I.E., IS SOMEONE ON RHC)\n\t\tMASK\tSTIKBIT\n\t\tCCS\tA\n\t\tTC\tSTEP3CK\nASET\t\tCAF\tZERO\n\t\tTS\tMPAC\n\t\tTC\tINTPRET\t\t# EXIT CRS61.1\n\t\tGOTO\n\t\t\tQ611\n\nSTEP2CK\t\tTC\tBANKCALL\n\t\tCADR\tUPACTOFF\n\n\t\tCAF\tTWO\t\t# SET TEMPORARY INDEX DTHETASM = 2\nCDULOOP\t\tTS\tDTHETASM\n\t\tINDEX\tDTHETASM\n\t\tCA\tCDUX\t\t# SET A = ACTUAL CDU (ACDU).\n\t\tEXTEND\n\t\tINDEX\tDTHETASM\t# SET INDEX TO ACCESS DESIRED CDU (DCDU).\n\t\tMSU\tTHETAD\t\t# A = DIFF = ACDU - DCDU.\n\t\tTS\tMPAC\t\t# RETURN TO INTERPRETER FOR 10 DEGREE CK.\n\t\tTC\tINTPRET\t\t# (DP APPROX SP OK FOR ROUGH CHECK)\n\t\tABS\tDSU\n\t\t\tDEGREE10\t# IS (ACDU - DCDU) MORE THAN 10 DEGREES.\n\t\tBPL\tEXIT\t\t# NO -- OK, CONTINUE CHECKING OTHER ANGLES.\n\t\t\tSTKTEST\t\t# TEST STICK FLAG\n\t\tCCS\tDTHETASM\t# HAVE ALL 3 ANGLE DIFFS BEEN CHECKED.\n\t\tTC\tCDULOOP\t\t# NO -- DIM COUNT, CHECK NEXT ANGLE DIFF.\n\t\tTC\tAUTOCK\nSTKTEST\t\tEXIT\n\t\tCS\tFLAGWRD1\n\t\tMASK\tSTIKBIT\n# Page 594\n\t\tCCS\tA\n\t\tTC\tMANUEXIS\t# STIKFLAG IS NOT SET (DO R63)\n\t\tCAF\tBIT3\n\t\tEXTEND\t\t\t# STIKFLG IS SET\n\t\tWOR\tDSALMOUT\t# TURN ON UPACTY LIGHT\n\n\t\tTC\tASET\t\t# EXIT AND SET R61CNTR\nSTEP3CK\t\tTC\tINTPRET\n\t\tSETPD\n\t\t\t0\t\t# *\n\t\t\t\t\t# NOW HAVE DCDUS STORED IN T(SAVEDCDU).\n\t\t\t\t\t# GO CALC OTHER DAP INPUTS (DELCDU,WBODY)\nCRS61.2\t\tVLOAD\tVSU\n\t\t\tDCDU\n\t\t\tSAVEVEL\t\t# DV = VL - VC\n\t\tUNIT\tVCOMP\t\t# V(MPAC)=-UNITDV. VAC36D=ABSDV.\n\t\tVXV\tVXSC\t\t# (-UNITDV)CROSS(UNITLOS).\n\t\t\tSAVEPOS\n\t\t\tRVCS/RDS\t# (UNITLOS B1)(UNITDV B1)(CONST B4)=CROSS.\n\t\tPUSH\t\t\t# HOLD CROSS IN PUSHLIST0.  SCALED B6.\n\t\tDLOAD\tNORM\t\t# OBTAIN ABS VALUE OF LOS.\n\t\t\tP21TIME\t\t# P21TIME IS TEMP STORE FOR ABSLOS.\n\t\t\tX1\n\t\tPUSH\t\t\t# NORM ABSLOS(DENOM) AND HOLD IN PUSH1.\n\n\t\tDLOAD\tNORM\n\t\t\t36D\t\t# NORM ABS VALUE OF DV(NUM).\n\t\t\tS1\n\n\t\tXSU,1\tSR1\t\t# X1 = X1(N DENOM)-S1(N NUM).\n\t\t\tS1\t\t# SR1 TO AVOID OFLOW ON DOV.\n\t\tDDV\tVXSC\t\t# ABSDV(MPAC)/ABSLOS(PUSH1) = QUOT.\n\t\tSXA,1\t\t\t# QUOT(MPAC) X CROSS(PUSH0)\n\t\t\tQ6111\t\t# SAVE SCALE OF RESULT (R-15,1X).\n\t\t\t\t\t# X1= NORM OF QUOT. QTUOT SCALE B7-B29=B-22\n\t\t\t\t\t# CROSS IS SCALED B6.  NEED SL1 TO RECOVER\n\t\t\t\t\t# SR1 SO THAT -22+6+1=-15.  MPAC NOW HOLDS\n\t\t\t\t\t# ORTHO LOS RATE (OMEGA TH, B-15,X1).\n\t\tMXV\tVSL1\t\t# OBTAIN RATE IN SM COORDS (OMEGTHSM) AND\n\t\t\tREFSMMAT\t# ADJUST FOR REFSMMAT SCALE OF B1.\n\t\tSTORE\t20D\t\t# OMEGTHSM = VAC20D\n\t\t\t\t\t# DELTA THETA SM = OMEGTHSM * .1B-3.\n\t\tVXSC\n\t\t\tTENTH\n\t\tSTORE\tDTHETASM\t# STORE SM INCREM ANGLES FOR SMCDURES.\n\t\tCALL\n\t\t\tCDUTRIG\t\t# OBTAIN SIN,COSCDUS FOR SMCDURES.\n\t\tSETPD\tCALL\t\t# SMCDURES USES PUSH\n\t\t\t0\n\t\t\tSMCDURES\t# OBTAIN DELCDU IN V(DCDU).\n# Page 595\n\t\tLXA,1\t\t\t# RELOAD X1\n\t\t\tQ6111\n\t\tVLOAD\tVSL*\t\t# RECOVER SCALE.\n\t\t\tDCDU\t\t# (B-15,X1) + TENTH(B-3) + HALFREVS(B1)\n\t\t\t0 -17D,1\t# EQUALS B-17D,1 TO OBTAIN HALFREVS B0.\n\t\tSTORE\t14D\t\t# HOLD DELS IN V(VAC14D) FOR AUTOPILOT.\n\n\t\tCALL\t\t\t# COMPUTES SINES AND COSINES FOR *SMNB*\n\t\t\tCDUTRIG\n\t\tVLOAD\tCALL\t\t# LOAD VECTOR AND CALL TRANSFORMATION\n\t\t\t20D\t\t# VECTOR FOR TRG*SMNB INTO MPAC\n\t\t\t*SMNB*\t\t# OBTAIN ANG. RATE REFERRED TO NB (BODY)\n\t\tMXV\n\t\t\tMBDYTCTL\t# CONVERT RATE(OMEGA) TO CONTROL COORDS.\n\t\tVXSC\t\t\t# MULT. BY 0.8 TO RESCALE REVS TO 450 DEG.\n\t\t\tPOINT8\t\t# RECOVER SCALE.\n\t\tLXA,1\tVSL*\t\t# RELOAD X1 TO RECOVER NORMALIZ.\n\t\t\tQ6111\t\t# (B-15,X1) + MBDYTCTL(B1) = B-14D,1 TO\n\t\t\t0 -14D,1\t# OBTAIN REVS SCALED AT 450 DEGREES.\n\nCRS61.2A\tEXIT\n\t\tINHINT\n\t\tCAF\tZERO\t\t# TRANSFER DESIRED GIMBAL ANGLES\n\t\tTS\tCDUXD\t+1\t# FROM T(SAVEDCDU) TO V(CDUXD).\n\t\tTS\tCDUYD\t+1\n\t\tTS\tCDUZD\t+1\n\t\tCA\tSAVEDCDU\n\t\tTS\tCDUXD\n\t\tCA\tSAVEDCDU +1\n\t\tTS\tCDUYD\n\t\tCA\tSAVEDCDU +2\n\t\tTS\tCDUZD\n\n\t\tEXTEND\t\t\t# TRANSFER OMEGA CONTROL (ANG. LOS RATE)\n\t\tDCA\tMPAC\t\t# FROM V(MPAC) TO V(WBODY)\n\t\tDXCH\tWBODY\n\t\tEXTEND\n\t\tDCA\tMPAC\t+3\n\t\tDXCH\tWBODY1\n\t\tEXTEND\n\t\tDCA\tMPAC\t+5\n\t\tDXCH\tWBODY2\n\n\t\tEXTEND\t\t\t# TRANSFER CDU INCREMENTS\n\t\tINDEX\tFIXLOC\t\t# FROM V(VAC14D) TO V(DELCDUX)\n\t\tDCA\t14D\n\t\tDXCH\tDELCDUX\n\t\tEXTEND\n\t\tINDEX\tFIXLOC\n\t\tDCA\t16D\n# Page 596\n\t\tDXCH\tDELCDUY\n\t\tEXTEND\n\t\tINDEX\tFIXLOC\n\t\tDCA\t18D\n\t\tDXCH\tDELCDUZ\n\t\tCS\tONE\t\t# NOW DAP VARIABLES LOADED.  SET HOLDFLAG.\n\t\tTS\tHOLDFLAG\t# TO -1.\n\t\tRELINT\n\t\tTC\tASET\nMANUEXIS\tTC\tINTPRET\nMANUEXIT\tTLOAD\t\t\t# ENTER FROM STEP2.  ACDU-DCDU EXCEEDS\n\t\t\tSAVEDCDU\t# 10 DEG. STORE DCDU(T) IN CPHI,CTHETA,\n\t\tSTORE\tCPHI\t\t# CPSI FOR KALCMANU.\n\t\tSLOAD\tGOTO\t\t# SPECIAL RETURN (MPAC+0 = 1)\n\t\t\tLOONE\t\t# OCTAL 00001\n\t\t\tQ611\n\nR63\t\tSTQ\tDLOAD\t\t# SUBR TO CALC DCDUS(T)\n\t\t\tQ6111\n\t\t\tP21TIME\n\t\tSTCALL\tTDEC1\n\t\t\tCSMCONIC\nHOLDATT\t\tVLOAD\t\t\t# HOLD EXTRAPOLATED CSM POSITION AND\n\t\t\tRATT\t\t# VELOCITY\n\t\tSTOVL\tSAVEPOS\n\t\t\tVATT\n\t\tSTORE\tSAVEVEL\nCALCLEM\t\tDLOAD\t\t\t# EXTRAPOLATE LEM STATE VECTOR TO SAVE\n\t\t\tP21TIME\t\t# TIME AS CSM USING LEMCONIC\n\t\tSTCALL\tTDEC1\n\t\t\tLEMCONIC\n\t\tVLOAD\n\t\t\tVATT\n\t\tSTOVL\tDCDU\t\t# STORE VATT IN DCDU TEMPORARILY\n\t\t\tRATT\t\t# LOS = RL RC\n\t\tVSU\tUNIT\n\t\t\tSAVEPOS\n\t\tSTORE\tSAVEPOS\t\t# SAVE UNITLOS FOR CRS61.2 RATE CALC.\n\t\tMXV\tVSL1\n\t\t\tREFSMMAT\t# CONVERT TO STABLE MEMBER\n\t\tSTODL\tPOINTVSM\n\t\t\t36D\t\t# HOLD ABS VAL OF LOS (VAC 36D)\n\t\tSTORE\tP21TIME\t\t# IN D(P21TIME) FOR CRS61.2 RATE CALC.\n\t\tVLOAD\n\t\t\tUNITX\n\t\tSTCALL\tSCAXIS\t\t# TRACK AXIS UNIT VECTOR\n\t\t\tVECPOINT\t# FOR +X-AXIS TRACKING ATTITUDE\n\t\tSTORE \tCPHIX\t\t# STORE ANGLES FOR N96 DISPLAY\n\t\tVLOAD\n\t\t\tPRFUNIT\n# Page 597\n\t\tSTCALL\tSCAXIS\n\t\t\tVECPOINT\n\t\tSTORE\tPRAXIS\t\t# STORE ANGLES FOR N95 DISPLAY\n\t\tBOFF\n\t\t\tPRFTRKAT\n\t\t\tCRSTOR1\nCRSTOR\t\tSTORE\tTHETAD\t\t# STORE ANGLES FOR N18 DISPLAY\n\t\tGOTO\n\t\t\tQ6111\nCRSTOR1\t\tVLOAD\n\t\t\tUNITX\n\t\tSTORE\tSCAXIS\n\t\tTLOAD\tGOTO\n\t\t\tCPHIX\n\t\t\tCRSTOR\nPRFUNIT\t\t2DEC\t.40957602\t# 55 DEG TRACK AXIS UNIT VECTOR\n\n\t\t2DEC\t0.0\t\t# FOR USE WITH VECPOINT\n\n\t\t2DEC\t.28678822\n\nDEGREE10\tDEC\t.05556\t\t# 10 DEG IN REVS\t\tSTEP2\nRVCS/RDS\t2DEC\t15.915494 B-4\t# 100/2PI REV-CSEC/RAD-SEC.\n\nTENTH\t\t2DEC\t.1 B+3\t\t# .1 B-3 (TO SCALE ANG. RATE TO .1 INREMS)\n\nMAT1B1\t\t2DEC\t1.0 B-1\n\nMBDYTCTL\t2DEC\t.5\t\t# \t\t7.25 DEG NEGATIVE\n\n\t\t2DEC\t0\t\t#\t\tX-AXIS ROTATION MATRIX\n\n\t\t2DEC\t0\t\t#\t\tCONVERTS BODY TO CTL\n\n\t\t2DEC\t0\t\t#\t\tAXES.  CAME AS QUADROT\n\n\t\t2DEC\t.99200495 B-1\t# COS7.25 B1\tBUT SCALED B\n\n\t\t2DEC\t-.12619897 B-1\t# -SIN7.25 B1\n\n\t\t2DEC\t0\n\n\t\t2DEC\t.12619897 B-1\t# SIN7.25 B1\n\n\t\t2DEC\t.99200495 B-1\t# COS7.25 B1\n\nLOONE\t\tOCT\t00001\t\t# TO SET MPAC = 00001 FOR SPECIAL EXIT.\nFURST3\t\tEQUALS\t13,14,15\t# CONSTANT FOR AUTOCK (OCT 70000).\n\n# Page 598\n# ..... S22.1 ORBITAL NAVIGATION ROUTINE\n# MOD 1\n#\n# FUNCTIONAL DESCRIPTION\n#\t1.  UPDATE CSM STATE VECTOR\n#\t2.  UPDATE LANDMARK POSITION\n#\t3.  CONVERT W MATRIX FROM 9 TO 6 DIMENSIONS\n#\n# SUBROUTINES CALLED\n#\tINTSTALL,INTEGRV,GETNUM,SETRE,R-TO-TP,RP-TO-R,BVECTORS,INCORP1,INCORP2\n#\tLALOTORV,S22F2410,LAT-LONG,ROWDOT\n#\n# ERASABLE INITIALIZATION\n#\tW=9X9 MATRIX\n#\tORBWFLAG=0 FOR INVALID W MATRIX, =1 FOR VALID W MATRIX\n#\tASTRONAUT ENTRY OF KNOWN,L,OFF\n#\t8NN= NUMBER OF MARKS, DECIMAL INTEGER B-14\n#\tREFSMMAT= TRANSFORMATION MATRIX\n#\tMARKSTAT= ADDRESS OF START OF MARK DATA (MARK DATA OF EACH MARK IS\n#\t\t  STORED AS FOLLOWS: TIME,AIG,SA,AMG,PA,AOG) TIME IS IN DOUBLE\n#\t\t  PRECISION, ALL OTHERS ARE IN SINGLE PRECISION\n#\tCSM STATE VECTOR\n#\n# OUTPUT\n#\tUPDATED CSM STATE VECTOR\n#\tUPDATED LANDMARK POSITION\n#\tNEW 6 DIMENSIONAL W MATRIX\n#\n# DEBRIS\n#\tPUSH LIST,CSMPOS,ALPHAV,ERADM,UM,RCLP,USTAR,VARIANCE,X789,BVECTOR,8KK,\n#\tS22LOC,SVMRKDAT TABLE,22SUBSCL,LANDMARK,CXOFF,S22C,LAT,LOG,ALT,\n#\tTEMPOR1,S22TOFF,S221OFF,DSPTEM1,S22EORM,S22TPRIM\n\n\t\tBANK\t13\n\n\t\tSETLOC\tP20S6\n\t\tBANK\n\n\t\tEBANK=\tLANDMARK\n\t\tCOUNT\t35/LUORB\n\nS22.1\t\tSTQ\tSSP\n\t\t\tS22RTNEX\n\t\t\tS1\n\t\tDEC\t6\n\t\tSSP\tSSP\t\t# SET I=1\tITEM 8KK IS I\n\t\t\t8KK\n\t\tDEC\t1\n\t\t\tS22LOC\n\t\tECADR\tSVMRKDAT\t# SET MARK DATA ADDRESS INTO S22LOC\n# Page 599\n\t\tLXC,2\tAXT,1\n\t\t\tMARKSTAT\n\t\tDEC\t36\nS22.111\t\tVLOAD*\t\t\t# MOVE MARK DATA (5 SETS FROM ADDR. IN\n\t\t\t0,2\t\t# MARKSTAT TO SVMRKDAT TABLE TO AVOID LOSS\n\t\tSTORE\tSVMRKDAT +36D,1\t# IF RESTART OCCURS\n\t\tINCR,2\tTIX,1\n\t\tDEC\t-6\n\t\t\tS22.111\n\t\tSET\tEXIT\n\t\t\tP22MKFLG\t# DOWNLINKED SVMRKDAT HOLDS PRESENT MARKS\n\t\tTC\tBANKCALL\t# RELEASE VAC AREA WHERE MARK DATA WAS\n\t\tCADR\tMKRELEAS\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00004\n\t\tOCT\t05022\n\t\tOCT\t13000\n\t\tTC\tINTPRET\n\t\tAXT,1\tBOFF\n\t\t\t0D\n\t\t\tCMOONFLG\t# =0 EARTH, =1 MOON\n\t\t\tS22SHIFT\n\t\tINCR,1\n\t\tDEC\t-2\nS22SHIFT\tSXA,1\tSETPD\n\t\t\tS22EORM\t\t# SET =0 EARTH, =-2 MOON FOR SHIFTING\n\t\t\t0D\nFIG2EXIT\tCALL\n\t\t\tINTSTALL\n\t\tCALL\n\t\t\tS22FLGS\n#\tFLOWCHART D=0\tTHEN DIM0FLAG=0, D6O9FLG NOT TESTED\n#\tFLOWCHART D=6\tTHEN DIM0FLAG=1, D60R9FLG=0\n#\tFLOWCHART D=9\tTHEN DIM0FLAG=1, D6OR9FLG=1\n\n\t\tBOFF\tCLRGO\n\t\t\tORBWFLAG\n\t\t\tSETWW5D\t\t# BRANCH TO SET W0-W5,ORBWFLAG,D\n\t\t\tD6OR9FLG\t# FLOWCHART D=6 PATH\n\t\t\tSETVANDI\nSETWW5D\t\tCLEAR\n\t\t\tDIM0FLAG\t# FLOWCHART D=0 PATH\n\t\tAXT,1\tSSP\n\t\tDEC\t108\n\t\t\tS1\n\t\tDEC\t6\n\t\tCLEAR\tVLOAD\n\t\t\tRENDWFLG\t# GSOP CHANGE 8/18/67\n\t\t\tZEROVECS\nCLEARWW5\tSTORE\tW +108D,1\n# Page 600\n\t\tTIX,1\tSLOAD\n\t\t\tCLEARWW5\n\t\t\tWORBPOS\n\t\tSTORE\tW\t\t# SET DIAGONALS OF W0\n\t\tSTORE\tW +8D\n\t\tSTORE\tW +16D\n\t\tSLOAD\n\t\t\tWORBVEL\n\t\tSTORE\tW +72D\t\t# SET DIAGONALS OF W4\n\t\tSTORE\tW +80D\n\t\tSTORE\tW +88D\nSETVANDI\tCLEAR\n\t\t\tDMENFLG\t\t# 0=6X6W, 1=9X9W\nS22NXTIN\tCALL\n\t\t\tGETTF\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRV\n\t\tCALL\n\t\t\tS22CALRC\t# CALC. RC B-29 OR B-27 (CSMPOS)\n\t\tLXA,1\tSXA,1\n\t\t\tS22LOC\t\t# SETUP ADDR. OF MARK DATA FOR GETUM SUBR.\n\t\t\tMARKDATA\n\t\tCALL\t\t\t# COMPUTE UM\nS2GETUM\t\t\tGETUM\n\t\tSTORE\tUM\nDMPINTEG\tSLOAD\tPUSH\t\t# TEST OFF=I\n\t\t\t8KK\n\t\tSLOAD\tSR3\t\t# CXOFF SCALED B-5, MUST MOVE TO B-14\n\t\t\tCXOFF\t\t# BEFORE SUBT.\n\t\tSR3\tSR3\n\t\tDSU\n\t\tBHIZ\tBON\n\t\t\tS22OFF=I\t# BRANCH HERE IF OFF=I\n\t\t\tDMENFLG\t\t# 0=6X6W, 1=9X9W\n\t\t\tS22D=9\n\t\tCALL\n\t\t\tGRP2PC\n\t\tSET\n\t\t\tORBWFLAG\n\t\tSET\tSET\n\t\t\tDMENFLG\t\t# =0 ON FIRST PASS THRU HERE FOR D=0, OR 6\n\t\t\t22DSPFLG\t# =1 TO DISPLAY DR,DV ON FIRST PASS\n\t\tSET\tBON\n\t\t\tERADFLAG\t# =1 TO COMPUTE FISCHER RADIUS\n\t\t\tKNOWNFLG\n\t\t\tS22BOX22\n\t\tVLOAD\tUNIT\t\t# UNIT ALSO PUTS ABVAL(RC) IN 36D\n\t\t\tCSMPOS\n\t\tSTORE\tALPHAV\t\t# ALPHAV +4=SINL FOR SETRE\n\t\tCLEAR\tBOFF\n# Page 601\n\t\t\tLUNAFLAG\n\t\t\tCMOONFLG\n\t\t\tS22C=I\n\t\tSET\n\t\t\tLUNAFLAG\nS22C=I\t\tCALL\t\t\t# ERADM= R0 METERS B-29 BOTH EARTH/MOON\n\t\t\tSETRE\n\t\tCALL\t\t\t# COMPUTE RL FROM EQUATION 2.4.10\n\t\t\tS22F2410\t# STORED IN X789,MPAC B-27,B-29\n\t\tBOFF\tVSR2\t\t# SCALE RL B-29 FOR BOTH EARTH/MOON\n\t\t\tCMOONFLG\n\t\t\t+1\n\t\tSTORE\tS22RL\n\t\tDOT\tSL1\n\t\t\tUM\n\t\tSTOVL\tS22D\t\t# D=UM RL B-29\n\t\t\tZEROVECS\n\t\tSETPD\tPUSH\n\t\t\t0D\n\t\tPUSH\tPDDL\t\t# SET 0-18D = I BACKWARDS\n\t\t\tHIDPHALF\t# PD 18\n\t\tSR2\t\t\t# B-3\n\t\tSTORE\t4D\n\t\tSTORE\t8D\n\t\tSTOVL\t12D\n\t\t\tUM\t\t# B-1\n\t\tSTOVL\tS223X1\n\t\t\tS22RL\t\t# B-29\n\t\tCALL\t\t\t# (UM)(RL T) B-30 STORED IN S22UMRL THRU\n\t\t\tS2231X13\t# S22UMRL +17D\n\t\tAXT,1\tSSP\n\t\tDEC\t18\n\t\t\tS1\n\t\tDEC\t6\nS22NXTU\t\tVLOAD*\tVSR2\t\t# (UM)(RL T) B-32\n\t\t\tS22UMRL +18D,1\n\t\tV/SC\n\t\t\tS22D\t\t# D B-29\n\t\tBVSU\tSTADR\t\t# SUBTRACT FROM I B-3\n\t\tSTORE\tS22UMRL +18D,1\t# U MATRIX B-3\n\t\tTIX,1\tAXT,1\t\t# PD 0 AFTER TIX\n\t\t\tS22NXTU\n\t\tDEC\t36\t\t# S1 STILL 6 FROM ABOVE\nS22NXTWI\tVLOAD*\tMXV\n\t\t\tW +36D,1\t# B-19\n\t\t\tS22UMRL\t\t# B-3\n\t\tVSL3\n\t\tSTORE\tW +144D,1\t# W(I+18)= UW(I) B-19\n\t\tTIX,1\tDLOAD\n\t\t\tS22NXTWI\n# Page 602\n\t\t\tS22RHO\t\t# B-28,B-30\n\t\tBOFF\tSR2\t\t# MAKE RHO B-30\n\t\t\tCMOONFLG\n\t\t\t+1\n\t\tNORM\tXAD,2\n\t\t\tX2\n\t\t\tX2\n\t\tDSQ\tDMP\n\t\t\tSCTVAR\t\t# B+16\n\t\tSR1\t\t\t# ACCOUNTS FOR 1/2 IN NEXT FORMULA\n\t\tSTORE\tS22RHO\t\t# 1/2(RHO SQ)(VARSCT)\n\t\tAXT,1\n\t\tDEC\t18\t\t# S1 STILL 6 FROM ABOVE\nS22NXXA\t\tVLOAD*\tMXV\n\t\t\tS22UMRL +18D,1\t# B-3\n\t\t\tS22UMRL\t\t# B-3\n\t\tVXSC\tVSR*\n\t\t\tS22RHO\n\t\t\t0 -12D,2\t# WITH VARRP SCALED B-28\n\t\tSTORE\tS22UUT +18D,1\t# 1/2(RHO SQ)(VARSCT)(U)(U T)\n\t\tTIX,1\tVLOAD\n\t\t\tS22NXXA\n\t\t\tUM\n\t\tSTCALL\tS223X1\t\t# UM ALSO IN MPAC FOR S2231X13 SUBR.\n\t\t\tS2231X13\t# (UM)(UM T) B-2 IN S22UMRL,P17D\n\t\tDLOAD\tSR3\n\t\t\tERADM\t\t# B0 B-29\n\t\tDDV\tDSQ\n\t\t\tS22D\t\t# B-29\n\t\tDMP\n\t\t\tRPVAR\t\t# ***** METERS SQ\n\t\tSTORE\tS22RHO\t\t# TEMP (VARRP)(R0/D)\n\t\tAXT,1\n\t\tDEC\t18\t\t# S1 STILL 6 FROM ABOVE\nS22NXXB\t\tVLOAD*\tVXSC\n\t\t\tS22UMRL +18D,1\t# (UM)(UM T) B-2\n\t\t\tS22RHO\n\t\tVAD*\n\t\t\tS22UUT +18D,1\n\t\tSTORE\tS22UUT +18D,1\t# SMALL E MATRIX\n\t\tVLOAD\n\t\t\tZEROVECS\n\t\tSTORE\tW +162D,1\t# CLEAR W8\n\t\tTIX,1\tBOV\n\t\t\tS22NXXB\n\t\t\t+1\n\t\tDLOAD\tBMN\n\t\t\tS22UUT +16D\t# E5\n\t\t\tS22W76X\n\t\tSQRT\tBZE\n# Page 603\n\t\t\tS22W76X\n\t\tSTODL\tW +148D\t\t# W74= SQ ROOT E5\n\t\t\tS22UUT +14D\t# E4\n\t\tDDV\tBOV\n\t\t\tW +148D\n\t\t\tS22W72X\n\t\tSTORE\tW +146D\t\t# W73= E4/W74\nS22W72X\t\tDLOAD\tDDV\n\t\t\tS22UUT +12D\t# E3\n\t\t\tW +148D\n\t\tBOV\n\t\t\tS22W76X\n\t\tSTORE\tW +144D\t\t# W72= E4/W74\nS22W76X\t\tDLOAD\tDSQ\n\t\t\tW +146D\t\t# W73\n\t\tBDSU\tBMN\n\t\t\tS22UUT +8D\t# E2\n\t\t\tS22W78X\n\t\tSQRT\tBZE\n\t\t\tS22W78X\n\t\tSTODL\tW +152D\t\t# W76= SQ ROOT (E2-W73 SQ)\n\t\t\tW +144D\t\t# W72\n\t\tDMP\tBDSU\n\t\t\tW +146D\t\t# W73\n\t\t\tS22UUT +6D\t# E1\n\t\tDDV\tBOV\n\t\t\tW +152D\t\t# W76\n\t\t\tS22W78X\n\t\tSTORE\tW +150D\t\t# W75= (E1-W72W73)/W76\nS22W78X\t\tDLOAD\tDSQ\n\t\t\tW +150D\n\t\tPDDL\tDSQ\n\t\t\tW +144D\t\t# W72\n\t\tDAD\n\t\tBDSU\tBMN\n\t\t\tS22UUT\t\t# E0\n\t\t\tS22SCLW\n\t\tSQRT\n\t\tSTORE\tW +156D\t\t# W78= SQ RT(E0-W72 SQ-W75 SQ)\nS22SCLW\t\tVLOAD\tVSR1\t\t# SCALE W6 METERS B-19\n\t\t\tW +144D\n\t\tSTOVL\tW +144D\n\t\t\tW +150D\n\t\tVSR1\n\t\tSTOVL\tW +150D\n\t\t\tW +156D\n\t\tVSR1\n\t\tSTORE\tW +156D\nS22SAVET\tCALL\n\t\t\tGETTF\n# Page 604\n\t\tSTORE\tS22TPRIM\t# SAVE PRESENT TIME FOR PIOS\nS22I=N\t\tEXIT\t\t\t# TEST I=N\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCS\t8KK\n\t\tAD\t8NN\n\t\tEXTEND\n\t\tBZMF\tS22F244X\t# EXIT TO FIGURE 2.4-4\n\t\tCA\t8KK\t\t# I=I+1\n\t\tAD\tONE\n\t\tTS\tTEMPOR1\n\t\tCA\tS22LOC\t\t# ADD 7 TO LOC TO GET ADDR. OF NEXT MARK\n\t\tAD\tSEVEN\n\t\tTS\tTEMPOR1 +1\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCA\tTEMPOR1\n\t\tTS\t8KK\n\t\tCA\tTEMPOR1 +1\n\t\tTS\tS22LOC\n\t\tTC\tINTPRET\n\t\tCALL\t\t\t# FOR ALL INTEGRATIONS OTHER THAN FIRST\nS2INTS1\t\t\tINTSTALL\n\t\tCALL\n\t\t\tS22FLGS\n\t\tBON\tCLEAR\n\t\t\tDMENFLG\n\t\t\tS22NXTIN\t# RETURN ALWAYS EXCEPT OFFSET POINT MARK 1\n\t\t\tDIM0FLAG\n\t\tBOFF\tSET\n\t\t\tORBWFLAG\n\t\t\tS22NXTIN\t# OFFSET POINT MARK 1, NO W INTEGRATION\n\t\t\tDIM0FLAG\n\t\tCLRGO\n\t\t\tD6OR9FLG\n\t\t\tS22NXTIN\t# OFFSET POINT MARK 1, INTEGRATE W 6X6\nS22OFF=I\tCALL\n\t\t\tGETTF\n\t\tSTOVL\tS22TOFF\t\t# TIME SUB OFF\n\t\t\tUM\n\t\tSTCALL\tS22UOFF\t\t# U SUB OFF\n\t\t\tS22I=N\t\t# TEST I=N\nS22D=9\t\tVLOAD\t\t\t# D=9 PATH\n\t\t\tX789\n\t\tSTODL\t0D\t\t# CALL PIOS TWICE TO TRANSFORM RL TO TIME\n\t\t\tS22TPRIM\t# T(SUB F) FROM TIME T PRIME\n\t\tSTORE\t6D\n\t\tSLOAD\tCALL\n\t\t\tS22EORM\t\t# 0=EARTH, NON-ZERO=MOON\nS2RTRP\t\t\tR-TO-RP\n# Page 605\n\t\tPUSH\tCALL\t\t# R-TO-RP LEAVES PUSHLOC AT 0\n\t\t\tGETTF\n\t\tSTORE\t6D\n\t\tSLOAD\tCALL\n\t\t\tS22EORM\nS2RPTR\t\t\tRP-TO-R\nS22BOX32\tSTORE\tX789\n\t\tSET\tBOV\n\t\t\tINCORFLG\t# FLAG=1\n\t\t\t+1\t\t# CLEAR OVERFLOW\n\t\tVSU\n\t\t\tCSMPOS\n\t\tSTORE\tRCLP\t\t# RCL=RL-RC\n\t\tUNIT\tVXV\t\t# USTAR=UNIT(UNIT(RCL)XUM)\n\t\t\tUM\n\t\tUNIT\tBOV\n\t\t\tS22SAVET\t# COMPUTATION OVERFLOW, SAVE TF\n\t\tSTORE\tUSTAR\nS22BOX12\tSET\tSET\n\t\t\tDMENFLG\t\t# =1 FOR 9X9 W\n\t\t\tVEHUPFLG\t# =1 FOR CSM\n\t\tDLOAD\tDAD\n\t\t\tSCTVAR\t\t# B+18\n\t\t\tIMUVARR\t\t# B+18\n\t\tSTOVL\tVARIANCE\n\t\t\tRCLP\t\t# B-29 OR B-27\n\t\tABVAL\tNORM\n\t\t\tX1\n\t\tDSQ\tDMP\n\t\t\tVARIANCE\n\t\tXAD,1\tXAD,1\n\t\t\tX1\t\t# DOUBLE NORM SHIFT SINCE RCLP WAS SQUARED\n\t\t\tS22EORM\t\t# DOUBLE EARTH OR MOON SHIFT, SAME REASON\n\t\tXAD,1\tSR*\n\t\t\tS22EORM\n\t\t\t0,1\t\t# SCALE VARIANCE B-40 FOR BOTH EARTH, MOON\n\t\tTLOAD\t\t\t# CHANGE MODE TO TRIPLE\n\t\t\tMPAC\n\t\tSTCALL\tVARIANCE\t# CALC B0,B1,DELTAQ, NEW USTAR\nS2BVTRS\t\t\tBVECTORS\n\t\tVLOAD\tVCOMP\n\t\t\tBVECTOR\n\t\tSTCALL\tBVECTOR +12D\t# B2=-B0\nS2INCP1\t\t\tINCORP1\n\t\tCALL\n\t\t\tGRP2PC\n\t\tBOFF\tCLEAR\n\t\t\t22DSPFLG\t# =1 DISPLAY DELTA R,V\t  =0 DO NOT\n\t\t\tS22BOX42\n\t\t\t22DSPFLG\n# Page 606\n\t\tCALL\n\t\t\tGRP2PC\n\t\tVLOAD\tABVAL\n\t\t\tDELTAX\t\t# DELTA R\n\t\tLXA,1\tSR*\n\t\t\tS22EORM\t\t# SCALE DELTA R ALWAYS METERS B-29\n\t\t\t0,1\n\t\tSTOVL\tN49DISP\n\t\t\tDELTAX +6\t# DELTA V\n\t\tABVAL\tSR*\t\t# DELTA V=METERS/CSEC B-7 ALWAYS\n\t\t\t0,1\n\t\tSTORE\tN49DISP +2\n\t\tEXIT\n\t\tCAF\tV06N49EE\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tGOTOPOOH\t# V34E TERMINATE\n\t\tTC\t+5\t\t# INCORPORATE CHANGES\n\t\tTC\tS22EXEX\t\t# V32E RECYCLE\n\t\tCAF\tBIT3\n\t\tTC\tBLANKET\n\t\tTC\tENDOFJOB\n\t\tTC\tINTPRET\nS22BOX42\tCALL\n\t\t\tINCORP2\n\t\tCALL\t\t\t# CSMPOS=RC B-29 OR B-27\n\t\t\tS22CALRC\nDMPINCP2\tBOFF\tCALL\n\t\t\tINCORFLG\n\t\t\tS22SAVET\t# SAVE TF AND TEST I=N\n\t\t\tGRP2PC\n\t\tCLEAR\tVLOAD\n\t\t\tINCORFLG\t# FLAG=0\n\t\t\tX789\n\t\tVSU\n\t\t\tCSMPOS\n\t\tSTCALL\tRCLP\t\t# RCL=RL-RC\n\t\t\tS22BOX12\nS22BOX22\tAXT,1\tSSP\t\t# CLEAR W6,W7,W8.  (27 ELEMENTS 54 REGS)\n\t\tDEC\t54\n\t\t\tS1\n\t\tDEC\t6\n\t\tVLOAD\n\t\t\tZEROVECS\nCLRW678\t\tSTORE\tW +162D,1\n\t\tTIX,1\tSLOAD\n\t\t\tCLRW678\n\t\t\tS22WSUBL\n\t\tSTORE\tW +144D\n\t\tSTORE\tW +152D\n# Page 607\n\t\tSTORE\tW +160D\n\t\tCLEAR\tBOFF\t\t# SET LUNAFLAG, TIME FOR LALOTORV\n\t\t\tLUNAFLAG\t# ERADFLAG,LAT,LONG,ALT SET PREVIOUSLY\n\t\t\tCMOONFLG\t# CHECK SCALING OF ITEMS,ALT INPUT AND\n\t\t\tS22BX22A\t# RL OUTPUT IN ALPHAV BOTH B-29\n\t\tSET\n\t\t\tLUNAFLAG\nS22BX22A\tCALL\n\t\t\tGETTF\n\t\tCALL\t\t\t# COMPUTE RL\n\t\t\tLALOTORV\n\t\tVLOAD\tBOFF\n\t\t\tALPHAV\t\t# RL B-29\n\t\t\tCMOONFLG\n\t\t\tS22BX22B\n\t\tVSL2\t\t\t# SCALE RL B-27 FOR MOON\nS22BX22B\tGOTO\n\t\t\tS22BOX32\nS22F244X\tTC\tINTPRET\nS22F244\t\tSLOAD\tBHIZ\t\t# FIG 2.4-4\tTEST OFF=0\n\t\t\tCXOFF\n\t\t\tS22BOX44\n\t\tSR\t\t\t# SCALE OFFSET B-14 THEN GET GR. 8NN\n\t\t\t9D\n\t\tSTORE\tALPHAV\t\t# TEMP\n\t\tSLOAD\tDSU\n\t\t\t8NN\n\t\t\tALPHAV\n\t\tBMN\tCALL\t\t# OFFSET GR. NO. MARKS.  FORGET IT\n\t\t\tS22BOX44\n\t\t\tGRP2PC\t\t# GROUP 2 PHASE CHANGE\n\t\tDLOAD\n\t\t\tS22TOFF\n\t\tSTCALL\tTDEC1\t\t# CALC RC AT OFFSET TIME\n\t\t\tCSMPREC\n\t\tVLOAD\n\t\t\tRATT1\t\t# RC METERS B-29 OR B-27\n\t\tSTOVL\tCSMPOS\n\t\t\tS22UOFF\n\t\tSTOVL\tUM\t\t# U=UOFF\n\t\t\tX789\n\t\tABVAL\tBOFF\n\t\t\tCMOONFLG\n\t\t\t+2\n\t\tSR2\t\t\t# SCALE MOON R0 B-29 FOR S22F2410 SUBR\n\t\tSTCALL\tERADM\n\t\t\tS22F2410\n\t\tGOTO\n\t\t\tS22BX44A\nS22BOX44\tCALL\n# Page 608\n\t\t\tGETTF\n\t\tSTORE\tS22TOFF\t\t# PRESENT TIME FOR LAT-LONG SETUP\nS22BX44A\tCLEAR\tVLOAD\n\t\t\tLUNAFLAG\n\t\t\tX789\n\t\tBOFF\tSET\n\t\t\tCMOONFLG\n\t\t\tS22BX44B\n\t\t\tLUNAFLAG\t# SET = 1 FOR LAT-LONG\n\t\tVSR2\t\t\t# SCALE RL MOON B-29 FOR LAT-LONG\nS22BX44B\tSTODL\tALPHAV\t\t# RL SCALED B-29 FOR LAT-LONG\n\t\t\tS22TOFF\t\t# EITHER PRESENT OR OFFSET TIME\n\t\tCALL\n\t\t\tLAT-LONG\t# **** ALT OUTPUT ALWAYS B-29\n\t\tCALL\t\t\t# DISPLAY LAT/LONG/ALT\n\t\t\tLLASRD\n\t\tEXIT\n\t\tCAF\tV06N89B\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tS22GTP\t\t# V34E TERMINATE\n\t\tTC\t+2\t\t# PROCEED\tSAVE LANDING SITE COORD\n\t\tTC\tS22.981X\t# RECYCLE\tPOINT A IN GSOP\n\t\tTC \tINTPRET\n\t\tDLOAD\n\t\t\tS22TOFF\t\t# EITHER PRESENT OR OFFSET TIME\n\t\tSTOVL\t6D\t\t# 6-7D= LANDING SITE TIME FOR R-TO-RP\n\t\t\tX789\n\t\tSTORE\t0D\t\t# 0-5D= LANDING SITE VEC FOR R-TO-RP\n\t\tSLOAD\tCALL\n\t\t\tHIDPHALF\t# ANY NON-ZERO FOR MOON\n\t\t\tR-TO-RP\t\t# CONVERT RLS TO MOON-FIXED COORD\n\t\tSTORE\tRLS\t\t# LANDING SITE VECTOR\n\t\tEXIT\nS22.981X\tTC\tINTPRET\n\t\tCALL\n\t\t\t9DWTO6DW\n\t\tEXIT\t\t\t# GO TO POINT A IN CHAPTER 5\nS22EXEX\t\tTC\tINTPRET\t\t# WITHOUT CONVERTING W\n\t\tGOTO\n\t\t\tS22RTNEX\n\nS22GTP\t\tTC\tINTPRET\t\t# CONVERT W BEFORE TC GOTOPOOH\n\t\tCALL\n\t\t\t9DWTO6DW\n\t\tEXIT\n\t\tTC\tGOTOPOOH\nS22F2410\tSETPD\tVLOAD\t\t# COMPUTE FORMULA 2.4.10\n\t\t\t0D\n\t\t\tCSMPOS\t\t# RC B-29 EARTH, B-27 MOON\n# Page 609\n\t\tUNIT\tDOT\t\t# UNIT ALSO SETS 36D=ABVAL(RC) USED BELOW\n\t\t\tUM\n\t\tSL1\tDCOMP\t\t# GSOP CHANGE 8/18/67\n\t\tPUSH\t\t\t# PD 2D 8D=COSA=-(UM.RC)/ABVAL(RC) \tB-1\n\t\tDSQ\tBDSU\n\t\t\tDEC1B2\n\t\tPDDL\tBOFF\t\t# PD 4D 2D=1-COSA SQ=SINA SQ \t\tB-2\n\t\t\tERADM\t\t# R0 ALWAYS B-29 FROM SETRE\n\t\t\tCMOONFLG\n\t\t\t+2\n\t\tSL2\t\t\t# SCALE R0 B-27 FOR MOON\n\t\tSR1R\tDDV\t\t# (R0/RC) \tB-1\n\t\t\t36D\n\t\tDSQ\tDSU\t\t# PD 2D (RP/RC) SQ - SINA SQ\t\tB-2\n\t\tSQRT\tBDSU\t\t# PD 0D COSA-SQRT((R0/RC)SQ-SINA SQ)\tB-1\n\t\tDMP\t\t\t# DMP RESULT B-28 MOON, B-30 EARTH\n\t\t\t36D\t\t# VXSC RESULT B-29 MOON, B-31 EARTH\n\t\tSTORE\tS22RHO\t\t# RHO FOR W INIT. OF UNKNOWN LMK B-28,B-30\n\t\tVXSC\n\t\t\tUM\n\t\tVSL2\tVAD\t\t# SCALE B-27 MOON, B-29 EARTH AND ADD RC\n\t\t\tCSMPOS\n\t\tSTORE\tX789\n\t\tRVQ\t\t\t# B-27 FOR EARTH OR B-29 FOR MOON\nS22CALRC\tLXA,1\tVLOAD\t\t# COMPUTE RC B-29 OR B-27\n\t\t\tS22EORM\t\t# =0 FOR EARTH, -2 FOR MOON\n\t\t\tDELTACSM\n\t\tVSR*\tVAD\n\t\t\t7,1\n\t\t\tRCVCSM\n\t\tSTORE\tCSMPOS\n\t\tRVQ\n\t\tSETLOC\tP22S\n\t\tBANK\n\nS2231X13\tSTORE\tS221X3\t\t# MULT 3X1 BY 1X3, STORE RESULTING 3X3 IN\n\t\tSSP\tAXT,2\t\t# S22UMRL - S22UMRL+17D\n\t\t\tS2\n\t\tDEC\t2\n\t\tDEC\t6\n\t\tAXT,1\n\t\tDEC\t18\nS2231NXT\tVLOAD\tVXSC*\n\t\t\tS221X3\n\t\t\tS223X1 \t+6,2\n\t\tSTORE\tS22UMRL +18D,1\n\t\tINCR,1\tTIX,2\n\t\tDEC\t-6\n\t\t\tS2231NXT\n\t\tRVQ\n# Page 610\nGETTF\t\tLXC,1\tDLOAD*\t\t# SET MPAC= TF\n\t\t\tS22LOC\n\t\t\t0,1\n\t\tRVQ\nS22FLGS\t\tSET\tSET\t\t# INTEGRATION FLAGS\n\t\t\tDIM0FLAG\n\t\t\tD6OR9FLG\n\t\tSET\tSET\n\t\t\tVINTFLAG\n\t\t\tSTATEFLG\n\t\tCLEAR\tRVQ\n\t\t\tINTYPFLG\n\n# SUBROUTINE TO MODIFY ALT AND STORE LAT TO LAT+5 IN LANDLAT TO LANDLAT+5\n# PRIOR TO DISPLAY.\n\nLLASRD\t\tDLOAD\t\t\t# ALT, LANDALT METERS B-29\n\t\t\tALT\n\t\tSTODL\tLANDALT\n\t\t\tLONG\n\t\tSR1\n\t\tSTORE\tLANDLONG\n\t\tRVQ\n\n# SUBROUTINE TO MODIFY LANDALT AND STORE LANDALT TO LANDALT+5 IN LAT TO\n# LAT+5 AFTER LMK DATA LOADED BY ASTRONAUT.\n\nLLASRDA\t\tDLOAD\t\t\t# ALT, LANDALT METERS B-29\n\t\t\tLANDALT\n\t\tSTODL\tALT\n\t\t\tLANDLONG\n\t\tSL1\n\t\tSTORE\tLONG\n\t\tRVQ\n\t\tSETLOC\tP20S6\n\t\tBANK\n\n9DWTO6DW\tSTQ\tSETPD\n\t\t\t9DWXX\n\t\t\t0D\n\t\tVLOAD\tPUSH\t\t# CLEAR WORKING AREA OF PUSHLIST\n\t\t\tHI6ZEROS\t# INCLUDING P\n\t\tPUSH\tPUSH\t\t# PD 18D\n\t\tSSP\n\t\t\t9DWJ\t\t# J=29\tUSE 2*29 FOR DP WORDS\n\t\tDEC\t58\n9DWI=J\t\tLXA,1\tSXA,1\t\t# SET I=J\n\t\t\t9DWJ\n\t\t\t9DWI\n9DWEPCAL\tCALL\n# Page 611\n\t\t\tROWDOT\n\t\tLXA,1\t\t\t# P VARIES 0-20 INSTEAD OF 20-0\n\t\t\t9DWP\n\t\tSTORE\tEMATRIX +40D,1\n\t\tINCR,1\tSXA,1\n\t\tDEC\t2\n\t\t\t9DWP\n\t\tSLOAD\tBHIZ\t\t# TEST I=0\n\t\t\t9DWI\n\t\t\t9DWTESTJ\n\t\tDSU\t\t\t# I=I-1\n\t\t\t9DWID\n\t\tSTORE\t9DWI\n\t\tDSU\tBHIZ\t\t# TEST I=26\n\t\t\t9DW26D\n\t\t\t9DWSETI2\n\t\tGOTO\t\t\t# NEXT E SUB P\n\t\t\t9DWEPCAL\n9DWSETI2\tSSP\tGOTO\t\t# I=2\n\t\t\t9DWI\n\t\tDEC\t4\n\t\t\t9DWEPCAL\n9DWTESTJ\tSLOAD\tBHIZ\t\t# TEST J=0\n\t\t\t9DWJ\n\t\t\t9DWFIG6\n\t\tDSU\n\t\t\t9DWID\n\t\tSTORE\t9DWJ\t\t# J=J-1\n\t\tDSU\tBHIZ\t\t# TEST J=26\n\t\t\t9DW26D\n\t\t\t9DWSETJ2\n\t\tGOTO\n\t\t\t9DWI=J\n9DWSETJ2\tSSP\tGOTO\t\t# SET J=2\n\t\t\t9DWJ\n\t\tDEC\t4\n\t\t\t9DWI=J\n9DWFIG6\t\tCALL\n\t\t\tGRP2PC\n\t\tSSP\tVLOAD\t\t# START OF FIGURE 2.4-6\n\t\t\t9DWJ\t\t# J=29\n\t\tDEC\t58\n\t\t\tHI6ZEROS\n\t\tSTORE\t9DWP\t\t# P,N,I=0\n\t\tAXT,1\tSSP\n\t\tDEC\t108\t\t# CLEAR W0 TO W54\n\t\t\tS1\n\t\t\t6\nCLEARW54\tSTORE\tW +108D,1\n\t\tTIX,1\n# Page 612\n\t\t\tCLEARW54\n9DWI=JA\t\tLXA,1\tSXA,1\t\t# I=J\n\t\t\t9DWJ\n\t\t\t9DWI\n\t\tCALL\n\t\t\tROWDOT\n\t\tLXA,1\tBDSU*\n\t\t\t9DWP\n\t\t\tEMATRIX +40D,1\n\t\tINCR,1\tSXA,1\t\t# -(P+1)\n\t\t\t2\n\t\t\t9DWP\n\t\tLXC,1\tXSU,1\t\t# -(I+N)\n\t\t\t9DWI\n\t\t\t9DWN\n\t\tBPL\tDLOAD\t\t# TEST WSQ LTE 0\n\t\t\t9DWAAA\n\t\t\tHI6ZEROS\t# W=0\n\t\tGOTO\n\t\t\t9DWAAB\n9DWAAA\t\tSQRT\t\t\t# W= SQRT(WSQ)\n9DWAAB\t\tSTORE\tW,1\n\t\tSTODL\tWORKW\n\t\t\t9DWJ\t\t# TEST J=0\n\t\tBHIZ\n\t\t\t9DWEXITX\t# EXIT\nTST2I=0\t\tSLOAD\tBHIZ\t\t# TEST I=0\n\t\t\t9DWI\n\t\t\t9DWN=N+3\n\t\tDSU\n\t\t\t9DWID\n\t\tSTORE\t9DWI\t\t# I=I-1\n\t\tDSU\tBHIZ\t\t# TEST I=26\n\t\t\t9DW26D\n\t\t\t9DWAAC\n\t\tGOTO\n\t\t\t9DWNEXEP\n9DWAAC\t\tSSP\t\t\t# I=2\n\t\t\t9DWI\n\t\t\t4\n9DWNEXEP\tCALL\n\t\t\tROWDOT\n\t\tLXA,1\tBDSU*\t\t# (EP-ROWI*ROWJ)/W\n\t\t\t9DWP\n\t\t\tEMATRIX +40D,1\n\t\tDDV\tINCR,1\t\t# P=P+1\n\t\t\tWORKW\n\t\t\t2\n\t\tSXA,1\tLXC,1\n\t\t\t9DWP\n# Page 613\n\t\t\t9DWI\n\t\tXSU,1\tBOV\t\t# -(I+N)\n\t\t\t9DWN\n\t\t\tSETWIN=0\n\t\tGOTO\n\t\t\t9DWSETWX\nSETWIN=0\tDLOAD\t\t\t# W(I+N)=0\n\t\t\tHI6ZEROS\n9DWSETWX\tSTORE\tW,1\n\t\tGOTO\n\t\t\tTST2I=0\n9DWN=N+3\tLXA,1\tINCR,1\t\t# N=N+3\n\t\t\t9DWN\n\t\t\t6\n\t\tSXA,1\tSLOAD\t\t# J=J-1\n\t\t\t9DWN\n\t\t\t9DWJ\n\t\tDSU\n\t\t\t9DWID\n\t\tSTORE\t9DWJ\n\t\tDSU\tBHIZ\t\t# TEST J=26\n\t\t\t9DW26D\n\t\t\tSETJ=2A\n\t\tGOTO\n\t\t\t9DWI=JA\nSETJ=2A\t\tSSP\tGOTO\t\t# J=2\n\t\t\t9DWJ\n\t\t\t4\n\t\t\t9DWI=JA\n9DWEXITX\tCALL\n\t\t\tGRP2PC\n\t\tAXT,1\tSSP\t\t# CLEAR W6,W7,W8 USED TEMP FOR EMATRIX\n\t\tDEC\t54\n\t\t\tS1\n\t\t\t6\n\t\tVLOAD\n\t\t\tHI6ZEROS\n9DWEXXXA\tSTORE\tW +162D,1\n\t\tTIX,1\tGOTO\n\t\t\t9DWEXXXA\n\t\t\t9DWXX\nROWDOT\t\tSSP\tBOV\n\t\t\tXTMP1\n\t\tOCT\t377\n\t\t\t+1\n\t\tLXC,1\tLXC,2\n\t\t\t9DWI\n\t\t\t9DWJ\n\t\tDLOAD\tPUSH\n\t\t\tHI6ZEROS\n# Page 614\nROWDOT1\t\tDLOAD*\tDMPR*\n\t\t\tW,1\n\t\t\tW,2\n\t\tDAD\tPUSH\n\t\tBOV\tINCR,1\n\t\t\tROWDOT3\n\t\tDEC\t-6\n\t\tINCR,2\tSLOAD\n\t\tDEC\t-6\n\t\t\tXTMP1\n\t\tBHIZ\tSR1\n\t\t\tROWDOT2\n\t\tSTORE\tXTMP1\n\t\tGOTO\n\t\t\tROWDOT1\nROWDOT2\t\tDLOAD\n\t\tRVQ\nROWDOT3\t\tCLRGO\n\t\t\tORBWFLAG\n\t\t\tROWDOT2\nWORKW\t\t=\t0D\nXTMP1\t\t=\t6D\n9DWP\t\t=\t8D\t\t# P\n9DWI\t\t=\t10D\t\t# I\n9DWN\t\t=\t12D\t\t# N\n9DWJ\t\t=\t14D\t\t# J\n9DWXX\t\t=\tS22UOFF\nS22UMRL\t\t=\tBVECTOR\t\t# 18\nS22UUT\t\t=\tDELTAX\t\t# 18\nS223X1\t\t=\t18D\t\t# 6\nS221X3\t\t=\t24D\t\t# 6\nS22D\t\t=\t30D\t\t# 2\nS22RHO\t\t=\t32D\t\t# 2\nS22RL\t\t=\tW +156D\t\t# 6\n9DW26D\t\t2DEC\t52 B-14\n\n9DWID\t\t2DEC\t2 B-14\n\nSCTVAR\t\t2DEC\t1.0 E-6 B+18\n\nIMUVARR\t\t2DEC\t0.04 E-6 B+18\n\nDEC1B2\t\t2DEC\t1 B-2\n\nV06N49EE\tVN\t00649\nV06N89B\t\tVN\t00689\nS22UOFF\t\t=\tLEMPOS\t\t# 6\tU SUB OFF\n\t\tSETLOC\tP20S2\n\t\tBANK\n# Page 615\n# Nothing on this page. --- RSB 2009.\n\n# Page 616\n# SUBROUTINE NAME:  V89CALL\n# MOD NO:  0\t\t\t\t\tDATE: 8 FEB 1968\n# MOD BY:  DIGITAL DEVEL GROUP\t\t\tLOG SECTION:  P20-P25\n#\n# FUNCTIONAL DESCRIPTION:\n#\n# CALLED BY VERB 89 ENTER DURING P00.  PRIO 10 USED.  CALCULATES AND\n# DISPLAYS FINAL GIMBAL ANGLES TO POINT CSM +X AXIS OR PREFERRED AXIS\n# (UNIT(Z)COS55 DEG + UNIT(X)SIN55 DEG) AT LM.\n#\n# 1. KEY IN V89 E ONLY IF IN PROG 00. IF NOT IN P00, OPERATOR ERROR AND\n# EXIT R63, OTHERWISE CONTINUE.\n#\n# 2. IF IN P00, DO IMU STATUS CHECK (R02BOTH).  IF IMU ON AND ITS\n# ORIENTATION KNOWN TO CGC, CONTINUE.\n#\n# 3. FLASH DISPLAY V 04 N 06.  R2 INDICATES WHICH SPACECRAFT AXIS IS TO\n# BE POINTED AT LM.  INITIAL CHOICE IS PREFERRED AXIS.  (R2=1).\n# ASTRONAUT CAN CHANGE TO (+X) AXIS (R2 NOT= 1) BY V22 E 2 E.  CONTINUE\n# AFTER KEYING IN PROCEED.\n#\n# 4. SET PREFERRED ATTITUDE FLAG ACCORDING TO OPTION DESIRED.  SET FLAG\n# FOR PREFERRED AXIS.  RESET FLAG FOR X AXIS.\n#\n# 5. CURRENT TIME IS STORED AND R63COMP IS CALLED\n#\n#\tR63COMP JOB:\n#\n#\t\tUPDATE CSM AND LM STATE VECTORS USING CONIC EQUATIONS\n#\n#\t\tCALCULATES BOTH PREFERRED AND X AXIS TRACKING ATT FROM CSM TO LM.\n#\n#\t\tDESIRED GIMBAL ANGLES AS INDICATED BY PREFERRED ATTITUDE FLAG\n#\t\tARE STORED FOR LATER R60CSM CALL.\n#\n# 6. FLASH DISPLAY V 06 N18 AND AWAIT RESPONSE.\n#\n# 7. RECYCLE: RETURN TO STEP 5.\n#    TERMINATE: EXIT R63 ROUTINE\n#    PROCEED:  RESET 3AXISFLG AND CALL R60CSM FOR ATTITUDE MANEUVER.\n#\n# CALLING SEQUENCE:\tV 89 E\n#\n# SUBROUTINES CALLED:  CHKPOOH, R02BOTH, GOXDSPF, R63COMP, R60CSM\n#\n# ALARMS\t1.  OPERATOR ERROR IF NOT IN P00\n#\t\t2.  PROGRAM ALARM IF IMU IS OFF\n#\t\t3.  PROGRAM ALARM IF IMU ORIENTATION IS UNKNOWN\n# Page 617\n#\n# ERASABLE INITIALIZATION REQUIRED:  NONE\n#\n# DEBRIS:  OPTION1, OPTION1+1, PRFTEXAT(PREF ATT FLAG), P21TIME, 3AXISFLG\n\nDP1MIN\t\t2DEC\t6000\n\n\t\tEBANK=\tP21TIME\n\t\tBANK\t34\n\t\tSETLOC\tP20S4\n\t\tBANK\n\t\tCOUNT*\t$$/R63\n\nV89CALL\t\tTC\tBANKCALL\t# IMU STATUS CHECK. RETURNS IF ORIENTATION\n\t\tCADR\tR02BOTH\t\t# KNOWN.  ALARMS IF NOT.\n\t\tCAF\tTHREE\t\t# ALLOW ASTRONAUT TO SELECT DESIRED\n\t\tTS\tOPTION1\t\t# TRACKING ATTITUDE AXIS.\n\t\tCAF\tONE\n\t\tTS\tOPTION1 +1\n\t\tCAF\tVB04N06\t\t# V 04 N 06\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tENDEXT\t\t# TERMINATE\n\t\tTC\t+2\t\t# PROCEED\n\t\tTC\t-5\t\t# DATA IN.  OPTION1 +1 = 1 FOR PREF AXIS\n\t\t\t\t\t#\t\t       = 2 FOR X AXIS\n\t\tCS\tOPTION1 +1\t# 1 FOR PREF AXIS.  2 FOR X AXIS.\n\t\tAD\tONE\n\t\tEXTEND\n\t\tBZF\tSETPAF\nRSTPAF\t\tTC\tDOWNFLAG\t# RESET PREF ATT FLAG FOR R63COMP\n\t\tADRES\tRNGSCFLG\t# TO DO X AXIS.  RESET BIT 10 FLAG 5\nV89RECL\t\tTC\tINTPRET\n\t\tRTB\tDAD\n\t\t\tLOADTIME\t# READ PRESENT TIME\n\t\t\tDP1MIN\t\t# INTEGRATE TO 1 MIN FROM NOW\n\t\tSTCALL\tP21TIME\t\t# STORE TIME FOR CALL TO R63COMP.  R63COMP\n\t\t\tR63COMP\t\t# LEAVES DESIRED GIM ANGS IN THETAD, LOS IN\n\t\tEXIT\t\t\t# POINTVSM, AND SELECTED AXIS IN SCAXIS.\n\t\tCAF\tVB06N18\t\t# V 06 N 18\n\t\tTC\tBANKCALL\t# NOUN 18 REFERS TO THE DESIRED GIMBAL\n\t\tCADR\tGOFLASH\n\t\tTC\tENDEXT\t\t# TERMINATE\n\t\tTC\t+2\t\t# PROCEED\n\t\tTC\tV89RECL\t\t# RECYCLE\n\t\tTC\tDOWNFLAG\t# RESET 3 AXIS FLAG\n\t\tADRES\t3AXISFLG\t# RESET BIT 6 FLAG 5\n# Page 618\n\t\tTC\tBANKCALL\t# PERFORMS CSM MANEUVER TO ALIGN SELECTED\n\t\tCADR\tR60CSM\t\t# SPACECRAFT AXIS TO LOS.\n\t\tTCF\tENDEXT\n\nSETPAF\t\tTC\tUPFLAG\t\t# SET PREFERRED ATT FLAG FOR R63COMP\n\t\tADRES\tRNGSCFLG\t# TO DO PREF AXIS.  SET BIT 10 FLAG 5.\n\t\tTC\tV89RECL\n\nVB04N06\t\tVN\t0406\nVB06N18\t\tVN\t0618\n\nR63COMP\t\tEQUALS\tR63\n\n# Page 619\n# PROGRAM NAME:  P23 CISLUNAR MIDCOURSE NAVIGATION\n# MOD NO:\n# MOD BY:  TOM KNATT\n#\n# FUNCTIONAL DESCRIPTION:  DO MIDCOURSE NAVIGATION BY INCORPORATION OF\n# STAR/EARTH AND STAR/MOON OPTICAL MEASUREMENTS.\n#\n# CALLING SEQUENCE:  ASTRONAUT OPERATED\n#\n# SUBROUTINES CALLED:  R52,R53,R57,R60,ORBITAL INTEGRATION (INTEGRV)\n# INCORP1,INCORP2,LALOTORV,LUNLMKLD, AND DISPLAY INTERFACE ROuTINES.\n#\n# N0RMAL EXIT MODES:  VIA R00\n#\n# ALARMS:  NONE\n#\n# ABORT MODES:  NONE\n#\n# ERASABLE INITIALIZATION REQUIRED:  PAD-LOADED ERASABLES, ORBWFLAG RESET,\n# REFSMFLG=0 IF IMU OFF AND REFSMFLG=1 IF IMU ONE\n#\n# INPUTS BY USER REQUIRED:  STAR NUMBER, LANDMARK LAT, LONG/2, ALT OR ID NUMB.\n# IF LANDMARK IS USED, NEAR OR FAR HORIzON IF HORIZON IS USED, AND\n# BODY TO BE MARKED ON (EARTH OR MOON).  SEE GSOP CHAPT 4.\n#\n# OUTPUT:  UPDATED CMC STATE VECTOR.  VECTOR FROM S/C TO HORIZON OR LANDMARK\n# IN POINTAXS.  POINTAXS CAN BE USED TO GENERATE THIS VECTOR APART FROM\n# P23 IF DESIRED.\n#\n# DEBRIS:  NO USABLE DEBRIS IS GENERATED.  RENDWFLG IS RESET FOR P20 UPON\n# COMPLETION OF P23.  RUPTREGS AND ERASABLES USED BY DISPLAYS ARE DEBRIS.\n\n\t\tBANK\t31\n\t\tSETLOC\tRT23\n\t\tBANK\n\t\tCOUNT\t31/S23\n\t\tEBANK=\tW\nP23\t\tTC\tDOWNFLAG\n\t\tADRES\tRNDVZFLG\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00004\t\t# LEAVE GROUP 4\n\t\tOCT\t00012\t\t# ENTER GROUP 2\n\t\tCAF\tPRIO13\n\t\tTS\tPHSPRDT2\n\t\tTC\tINTPRET\n\t\tSSP\tCLEAR\n\t\t\tMARKINDX\n\t\t\t1\n\t\t\tTARG2FLG\t# TARGET FLAG USED R52 AND R53\n\t\tCLEAR\tSSP\n\t\t\tTARG1FLG\n\t\t\tSTARIND\n\t\t\t0\n\t\tSSP\tCLEAR\n\t\t\tBESTI\n\t\t\t0\n\t\t\tR57FLAG\t\t# SET = DO NOT REPERFORM R57\n\t\tCLEAR\tEXIT\n\t\t\tV94FLAG\t\t# SET = ALLOW V94\nP23.00\t\tTC\tINTPRET\n# Page 620\n\t\tBON\tCALL\n\t\t\tREFSMFLG\t# SET NOW AS INPUT, NORMALLY EXTERNAL CONT\n\t\t\tP23.05\t\t# WHEN ALIGNED, PERFORM MEASUREMENT\n\t\t\tR57\t\t# DO OPTICS CALIBRATION IF IMU NOT ALIGNED.\n\t\tCALL\n\t\t\tR53\n\t\tGOTO\n\t\t\tP23.60\nP23.05\t\tCLEAR\tEXIT\n\t\t\tSAVECFLG\t# USED TO SAVE SPACE IN P23.65\nP23.06\t\tCAF\tV05N70\n\t\tTC\tBANKCALL\t# IDENTIFICATION:  STAR, HOR  IDENT.\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# TERMINATE\n\t\tTC\tP23.15\n\t\tTC\t-5\t\t# REDISPLAY\nP23.15\t\tCA\tLANDMARK\t# IF C=2, LUNAFLAG=1.  IF C=1, LUNAFLAG=0\n\t\tEXTEND\n\t\tBZF\tP23.151\n\t\tCA\tHORIZON\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tR23.10\t\t# OPERATOR DSKY ERROR\n\t\tCA\tLANDMARK\n\t\tTC\tP23.152\nP23.151\t\tCA\tHORIZON\n\t\tEXTEND\n\t\tBZF\tR23.10\nP23.152\t\tMASK\tBITS7-9\t\t# IS C EQUAL TO 1 OR 2\n\t\tAD\tNEG100\n\t\tEXTEND\n\t\tBZF\tP23.16\n\t\tAD\tNEG100\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tR23.10\n\t\tTC\tUPFLAG\n\t\tADRES\tLUNAFLAG\n\t\tTCF\t+3\nP23.16\t\tTC\tDOWNFLAG\n\t\tADRES\tLUNAFLAG\n\t\tCA\tSTARCODE\t# IS STARCODE GREATER THAN OR\n\t\tEXTEND\t\t\t# EQUAL TO 0 AND LESS THAN 37\n\t\tBZF\tP23.176\n\t\tEXTEND\n\t\tBZMF\tR23.10\n\t\tAD\tNEG37\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTC\tR23.10\n# Page 621\n\n\t\tTC\tINTPRET\nP23.17\t\tSLOAD\tBZE\n\t\t\tSTARCODE\n\t\t\tP23.175\n\t\tPUSH\n\t\tSLOAD\tDMP\n\t\t\tSPSIX\n\t\tLXA,1\tSXA,1\n\t\t\tMPAC +1\n\t\t\tBESTI\t\t# BESTI = 6 X STAR NUMBER\n\t\tCALL\n\t\t\tLOWMEMRY\t# NEEDED TO RETRIEVE STAR VECTOR FROM LOW\n\t\tSTORE\tSTARSAV2\t# STORE FOR R53,P23.  US(IN P23)=STARSAV2\nP23.175\t\tEXIT\nP23.176\t\tCA\tHORIZON\n\t\tEXTEND\n\t\tBZF\tP23.20\n\t\tMASK\tBITS4-6\n\t\tAD\t-OCT10\n\t\tEXTEND\n\t\tBZF\tP23.18\n\t\tAD\t-OCT10\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tR23.10\n\t\tTC\tUPFLAG\n\t\tADRES\tNORFHOR\n\t\tTC\tP23.30\nP23.18\t\tTC\tDOWNFLAG\n\t\tADRES\tNORFHOR\n\t\tTC\tP23.30\nP23.20\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tP22SUBRB\n\t\tEXIT\nP23.30\t\tTC\tINTPRET\n\t\tSLOAD\tBZE\n\t\t\tSTARCODE\n\t\t\tLDPLANET\nP23.31\t\tBON\tEXIT\n\t\t\tSAVECFLG\n\t\t\tP23.85\n\t\tCAF\tV50N25P\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\t\t# GOPERF1 BLANKS OUT R2 AND R3\n\t\tTC\tGOTOPOOH\n\t\tTC\tV94ENTER\t# PROCEED.  AUTOCONTROL CMC\nP23.55\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tP23.56\n# Page 622\n\n# VERB 94 BEGINS HERE\nV94ENTER\tTC\tINTPRET\n\t\tRTB\n\t\t\tLOADTIME\t# READ CLOCK\n\t\tSTCALL\tMARKTIME\n\t\t\tPOINTAXS\t# RETURN LOS IN RCLL AND MPAC\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTOVL\tPOINTVSM\n\t\t\tJCAXIS\n\t\tSTORE\tSCAXIS\n\t\tEXIT\n\t\tTC\tDOWNFLAG\t# CLEAR AND GO TO VECPOINT IN R60\n\t\tADRES\t3AXISFLG\t# BIT 6 FLAG 5\n\t\tCAF\tR60ADRS\n\t\tTS\tTEMPFLSH\n\t\tTC\tPHASCHNG\n\t\tOCT\t00012\nR60CALL\t\tTC\tBANKCALL\n\t\tCADR\tR60CSM\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tINTPRET\n\t\tBON\n\t\t\tR57FLAG\n\t\t\tP23.57\t\t# DO NOT REPERFORM R57\nP23.56\t\tCALL\n\t\t\tR57\nP23.57\t\tSET\tSET\n\t\t\tV94FLAG\n\t\t\tR57FLAG\n\t\tCALL\n\t\t\tR52\n\t\tCLEAR\tCLEAR\n\t\t\tV94FLAG\n\t\t\tR57FLAG\nP23.60\t\tEXIT\n\t\tINHINT\n\t\tCA\tMARKSTAT\n\t\tMASK\tLOW10\n\t\tTS\tMARKDATA\n\t\tEXTEND\n\t\tINDEX\tMARKDATA\n\t\tDCA\t0\n\t\tDXCH\tMARKTIME\n\t\tINDEX\tMARKDATA\n\t\tCA\t5\n\t\tXCH\tTRUNION\n\t\tRELINT\n\t\tTC\tINTPRET\n# Page 623\n\t\tLXC,1\tVLOAD*\n\t\t\tMARKDATA\n\t\t\t1,1\n\t\tSTODL*\tMARKDOWN +1\n\t\t\t0,1\n\t\tSTORE\tMARKDOWN\n\t\tEXIT\n\t\tCAF\tV05N71\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# TERMINATE\n\t\tTC\tP23.65\t\t# STORE DATA\n\t\tTC\t-5\t\t# REDISPLAY\nP23.65\t\tTC\tINTPRET\n\t\tSET\tEXIT\n\t\t\tSAVECFLG\n\t\tTC\tP23.15\nP23.85\t\tCLEAR\tCALL\n\t\t\tRENDWFLG\n\t\t\tPOINTAXS\n\t\tGOTO\n\t\t\tR23.55\n\n# WE BEGIN CALCULATIONS HERE\n# POINTAXIS SUBROUTINE\n\nPOINTAXS\tSTQ\n\t\t\tPOINTEX\nR23.05\t\tBON\tDLOAD\n\t\t\tORBWFLAG\n\t\t\tR23.1\n\t\t\tWMIDPOS\n\t\tSTCALL\t0\n\t\t\tINITIALW\t# INITIALIZE W-MATRIX FIRST PASS IN P23\nR23.1\t\tCALL\n\t\t\tSETINTG\t\t# SETUP FOR CSM INTEGRATION\n\t\tBOF\tSET\n\t\t\tORBWFLAG\n\t\t\tR23.2\n\t\t\tDIM0FLAG\nR23.2\t\tSET\tCALL\n\t\t\tORBWFLAG\n\t\t\tINTEGRV\t\t# INTEGRATE CSM STATE VEC. TO MARKTIME\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tRECT.1\t\t# PICKUP CSM STATE VECTOR FROM PERM\n\t\tBOFF\n\t\t\tZMEASURE\t# IN SPHERE OF INFLUENCE OF PRIMARY BODY\n\t\t\tR23.3\n# Page 624\n\t\tDLOAD\tCALL\n\t\t\tMARKTIME\n\t\t\tLUNPOS\n\t\tBON\tVCOMP\n\t\t\tCMOONFLG\n\t\t\t+1\n\t\tVAD\n\t\t\tRZC\n\t\tSTORE\tRZC\nR23.3\t\tSLOAD\tBHIZ\n\t\t\tLANDMARK\t# IF LANDMARK = 0, USE HORIZ SUBR\n\t\t\tR23.4\n\t\tSET\n\t\t\tERADFLAG\n\t\tDLOAD\tCALL\n\t\t\tMARKTIME\n\t\t\tLALOTORV\n\t\tGOTO\n\t\t\tR23.5\nR23.4\t\tCALL\n\t\t\tHORIZ\nR23.5\t\tVSU\tSETPD\n\t\t\tRZC\n\t\t\t0\n\t\tGOTO\n\t\t\tPOINTEX\n# Page 625\nR23.55\t\tUNIT\tPUSH\t\t# RCLL IS IN MPAC\n\t\tVLOAD\n\t\t\t34D\t\t# RCLL * RCLL\n\t\tSTOVL\t30D\t\t# PUSH 30-31 =RCLL*RCLL 32-33=ABVAL RCLL\n\t\t\tVZC\n\t\tVXSC\tVSR\n\t\t\tONE/C\n\t\t\t15D\n\t\tVAD\t\t\t# PUSH UP RCLL(UNIT)\n\t\tUNIT\n\t\tSTOVL\tUCLSTAR\n\t\t\tVZC\n\t\tVSR2\tVSU\n\t\t\tVESO\n\t\tVXSC\tVSR\n\t\t\tONE/C\n\t\t\t13D\n\t\tVAD\tUNIT\n\t\t\tUS\n\t\tSTORE\tUSSTAR\n\t\tDOT\tSL1\n\t\t\tUCLSTAR\n\t\tPUSH\tVLOAD\t\t# PD 0,1 = USSTAR(DOT)UCLSTAR\n\t\t\tUCLSTAR\n\t\tVXSC\tVCOMP\n\t\tVSL1\tVAD\n\t\t\tUSSTAR\n\t\tUNIT\n\t\tSTOVL\tBVECTOR\t\t# USSTAR - COSQ(UCLSTAR)\n\t\t\tZEROVECS\n\t\tSTORE\tBVECTOR +6\n\t\tSTODL\tBVECTOR +12D\n\t\t\t0\n\t\tACOS\tDCOMP\n\t\tPUSH\tDLOAD\n\t\t\tZEROVECS\n\t\tEXIT\n\t\tCA\tVARSUBL\t\t# PUT FIXED INTO ERASABLE FOR MSU\n\t\tTS\tL\t\t# INSTRUCTION COMING UP\n\t\tCA\tTRUNION\t\t# REQUIRED TO CHANGE 2'S COMPLEMENT\n\t\tEXTEND\t\t\t# TRUNION TO 1'S COMPLEMENT\n\t\tMSU\tL\t\t# TRUNION (2'S)-00000 CONVERTS TRUNION TO\n\t\tTS\tMPAC\t\t# 1'S.  VARSUBL=00000.\n\t\tTC\tINTPRET\n\t\tPUSH\tSLOAD\t\t# PUSH IS DP.  WHEN BDSU IS EXECUTED, 2ND\n\t\t\tTRUNBIAS\t# HALF OF PUSHLIST IS GUARANTEED ZERO FROM\n\t\tBDSU\t\t\t# DLOAD ZEROVECS ABOVE\n\t\tSR3\tDAD\n\t\tDAD\tDMP\n# Page 626\n\t\t\tTRUN19\n\t\t\t32D\n\t\tDMP\tSL3\n\t\t\tPI/4.0\n\t\tBOFF\tSL2\n\t\t\tCMOONFLG\n\t\t\tR23.51\nR23.51\t\tSTODL\tDELTAQ\n\t\t\t30D\t\t# RCLL * RCLL\n\t\tDMP\tRTB\n\t\t\tTRUNVAR\n\t\t\tTPMODE\n\t\tTAD\n\t\t\tVARSUBL\n\t\tSTORE\tVARIANCE\n\t\tCLEAR\tCALL\n\t\t\tDMENFLG\n\t\t\tINCORP1\n\t\tCALL\n\t\t\tGRP2PC\n\t\tVLOAD\tABVAL\n\t\t\tDELTAX +6\n\t\tBOF\tSR2\t\t# DISPLAY IS 2-27 IF IN LUNAR SPHERE.\n\t\t\tCMOONFLG\n\t\t\tR23.52\nR23.52\t\tSTOVL\tN49DISP +2\n\t\t\tDELTAX\n\t\tABVAL\n\t\tBOF\tSR2\n\t\t\tCMOONFLG\n\t\t\tR23.53\nR23.53\t\tSTORE\tN49DISP\n\t\tEXIT\nR23.6\t\tCAF\tV6N49\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tGOTOPOOH\n\t\tTC\tR23.7\t\t# INCORPORATE DATA\n\t\tTC\tGOTOPOOH\n\t\tCAF\tBIT3\t\t# BLAN OUT R3\n\t\tTC\tBLANKET\n\t\tTC\tPHASCHNG\n\t\tOCT\t00012\n\t\tTC\tENDOFJOB\nR23.7\t\tTC\tINTPRET\nR23.8\t\tSET\tCALL\n\t\t\tVEHUPFLG\n\t\t\tINCORP2\n\t\tEXIT\nR23.END\t\tTC\tGOTOPOOH\n\n# Page 627\nR23.10\t\tTC\tFALTON\n\t\tTC\tP23.06\nHORIZ\t\tSTQ\tSETPD\n\t\t\tSRRETURN\n\t\t\t0\n\t\tDLOAD\tPDDL\t\t# PUSH 0-1 = -AYO SCALED B0\n\t\t\t-AYO\n\t\t\tAXO\n\t\tPDDL\tPDVL\t\t# PUSH 2-3 = +AX SCALED B0\n\t\t\tDPPOSMAX\n\t\t\tUS\n\t\tVXV\tUNIT\n\t\t\tRZC\n\t\tSTOVL\tUBAR2\n\t\tVXV\tUNIT\t\t# PUSH UP\n\t\t\tUBAR2\n\t\tSTOVL\tUBAR0\n\t\t\tUBAR2\n\t\tVXV\tUNIT\n\t\t\tUBAR0\n\t\tSTORE\tUBAR1\n\t\tBON\tDOT\n\t\t\tLUNAFLAG\n\t\t\tHORIZ.6\n\t\t\t0\t\t# UBAR1 DOT UZ\n\t\tSTCALL\tALPHAV +4\n\t\t\tGETERAD\n\t\tDAD\tPDDL\t\t# MPAC HAS RADIUS OF FISCHER ELLIPSOID\n\t\t\tHORIZALT\t# PUSH 0-1 = BH SCALED B29\n\t\t\tAEARTH\n\t\tDAD\tPUSH\t\t# PUSH 2-3 = AH B29\n\t\t\tHORIZALT\nHORIZ.1\t\tVLOAD\tMXV\n\t\t\tRZC\t\t# B29\n\t\t\tUBAR0\t\t# B1\n\t\tVSL1\tPDVL\t\t# PUSH 4-9 = RH(XH,YH,ZH) B29\n\t\t\tUS\n\t\tMXV\tVSL1\n\t\t\tUBAR0\n\t\tPDDL\t\t\t# PUSH 10-15 = USH B1\n\t\t\t2\t\t# AH\n\t\tSTODL\t34D\n\t\t\t4\t\t# XH\n\t\tCALL\n\t\t\tDIVIDE\n\t\tSR*\tDMP\n\t\t\t8D,1\t\t# NOW SCALED B9\n\t\t\tMPAC\n\t\tSTODL\t30D\n\t\t\t0\n# Page 628\n\t\tSTODL\t34D\n\t\t\t6\t\t# YH\n\t\tCALL\n\t\t\tDIVIDE\n\t\tSR*\tDMP\n\t\t\t8D,1\t\t# B9\n\t\t\tMPAC\t\t# B18\n\t\tDAD\tPUSH\t\t# PUSH 16-17 =A SCALED B18\n\t\t\t30D\n\t\tDSU\tSQRT\n\t\t\t1.0B18\n\t\tPDDL\t\t\t# PUSH 18-19 SQRT(A-1) B9\n\t\t\t16D\n\t\tSTODL\t34D\n\t\t\t4\t\t# XH\n\t\tCALL\n\t\t\tDIVIDE\n\t\tSR*\tPDDL\n\t\t\t17D,1\t\t# PUSH 20-21 = XH/A B29\n\t\t\t6\t\t# YH\n\t\tCALL\n\t\t\tDIVIDE\n\t\tSR*\tPDDL\n\t\t\t17D,1\t\t# PUSH 22-23 = YH/A B29\n\t\t\t16D\t\t# A\n\t\tSTODL\t34D\n\t\t\t18D\t\t# SQRT(A-1)\n\t\tCALL\n\t\t\tDIVIDE\n\t\tSR*\n\t\t\t8D,1\n\t\tSTODL\t28D\n\t\t\t0\t\t# BH\n\t\tSTODL\t34D\n\t\t\t2\t\t# AH\n\t\tCALL\n\t\t\tDIVIDE\n\t\tSR*\tDMP\t\t# AH/BH SCALED B1\n\t\t\t0,1\n\t\t\t28D\t\t# SQRT(A-1)/A\n\t\tDMP\tSL1\n\t\t\t6\t\t# YH\n\t\tPDDL\n\t\t\t2\t\t# AH\n\t\tSTODL\t34D\n\t\t\t0\n\t\tCALL\n\t\t\tDIVIDE\n\t\tSR*\tDMP\t\t# BH/AH SCALED B1\n\t\t\t0,1\n# Page 629\n\t\t\t28D\t\t# SQRT (A-1)/A\n\t\tDMP\tSL1\n\t\t\t4\t\t# XH\n\t\tPDDL\tDAD\n\t\t\t20D\t\t# XH/A\n\t\t\t24D\t\t# ALPHA\n\t\tPDDL\tDSU\n\t\t\t22D\t\t# YH/A\n\t\t\t26D\t\t# BETA\n\t\tPUSH\tSETPD\n\t\t\t16D\n\t\tDLOAD\tDSU\n\t\t\t20D\t\t# XH/A\n\t\t\t24D\t\t# ALPHA\n\t\tPDDL\tDAD\n\t\t\t22D\t\t# YH/A\n\t\t\t26D\t\t# BETA\n\t\tPDDL\tPUSH\n\t\t\tZEROVECS\n\t\tSTOVL\t32D\t\t# ZERO THIRD COMP. OF T-0 VECTOR\n\t\t\t28D\n\t\tVSU\tUNIT\n\t\t\t4\t\t# RH VECTOR\n\t\tDOT\tPDVL\t\t# PUSH 22-23 A-SUB-ZERO\n\t\t\t10D\t\t# USH VECTOR\n\t\t\t16D\t\t# T1 VECTOR\n\t\tVSU\tUNIT\n\t\t\t4\t\t# RH VECTOR\n\t\tDOT\tPUSH\t\t# PUSH 24-25 A-SUB-ONE\n\t\t\t10D\n\t\tBDSU\tBMN\n\t\t\t22D\t\t# A-SUB-ZERO\n\t\t\tHORIZ.3\n\t\tBON\n\t\t\tNORFHOR\n\t\t\tHORIZ.4\nHORIZ.2\t\tVLOAD\tGOTO\n\t\t\t28D\t\t# T-0 VECTOR\n\t\t\tHORIZ.5\nHORIZ.3\t\tBON\tGOTO\n\t\t\tNORFHOR\n\t\t\tHORIZ.2\n\t\t\tHORIZ.4\nHORIZ.4\t\tVLOAD\n\t\t\t16D\t\t# T1 VECTOR\nHORIZ.5\t\tVXM\tVSL1\n\t\t\tUBAR0\n\t\tGOTO\n\t\t\tSRRETURN\nHORIZ.6\t\tDLOAD\tPUSH\n# Page 630\n\t\t\tRADMOON\n\t\tPUSH\tGOTO\n\t\t\tHORIZ.1\nDIVIDE\t\tNORM\tSR1\n\t\t\tX1\n\t\tSTODL\t36D\n\t\t\t34D\n\t\tNORM\tBDDV\n\t\t\tS1\n\t\t\t36D\n\t\tXSU,1\tRVQ\n\t\t\tS1\nRECT.1\t\tBOFF\tAXT,2\t\t# SR TO SET ZMEASURE = 0 IF MEASUREMENT\n\t\t\tCMOONFLG\t#   PLANET AND PRIMARY PLANET ARE THE SAME.\n\t\t\tRECT.3\t\t#     OTHERWISE = 1\n\t\tDEC\t-2\n\t\tBOFF\t\t\t#       VEC. AND SCALE B29 AND B7\n\t\t\tLUNAFLAG\n\t\t\tRECT.4\nRECT.2\t\tCLEAR\tGOTO\n\t\t\tZMEASURE\n\t\t\tRECT.5\nRECT.3\t\tAXT,2\tBOFF\n\t\t\t0\n\t\t\tLUNAFLAG\n\t\t\tRECT.2\nRECT.4\t\tSET\n\t\t\tZMEASURE\nRECT.5\t\tVLOAD\tVSR7\n\t\t\tDELTACSM\t# SCALED B22 OR B18\n\t\tVSR*\tVAD\n\t\t\t0,2\n\t\t\tRCVCSM\t\t# SCALED B29 OR B27\n\t\tVSR*\n\t\t\t0,2\n\t\tSTOVL\tRZC\t\t# NOW SCALED B29\n\t\t\tNUVCSM\t\t# SCALED B3 OR B-1\n\t\tVSR4\tVSR*\n\t\t\t0,2\n\t\tVAD\tVSR*\n\t\t\tVCVCSM\t\t# SCALED B7 OR B5\n\t\t\t0,2\n\t\tSTORE\tVZC\t\t# NOW SCALED B7\n\t\tRVQ\nONE/C\t\t2DEC*\t.333564049 E-6 B+21*\n\nAEARTH\t\t2DEC\t6378166 B-29\t# A AXIS OF EARTH (METERS B-29)\n\nRADMOON\t\t2DEC\t1738090 B-29\t# RADIUS MOON IN METERS\n\n# Page 631\n\nTRUN19\t\tOCT\t01604\nTRUN19A\t\tOCT\t00000\n1.0B18\t\t2DEC\t1.0 B-18\n\nVARSUBL\t\tDEC\t0\nVARSUBL3\t2DEC*\t3.4299040 E+6 B-26*\n\nTRUNVAR\t\t2DEC\t2.5 E-9 B+18\n\nV6N49\t\tVN\t0649\nV05N70\t\tVN\t0570\nV05N71\t\tVN\t0571\nOCT00077\tOCT\t00077\nV50N25P\t\tOCT\t00202\nSPSIX\t\tOCT\t00006\nJCAXIS\t\t2DEC\t.2688190620\t# 1/2(SIN 32.523 DEG)  TRACK AXIS\n\n\t\t2DEC\t0\n\n\t\t2DEC\t.4215878460\t# 1/2(COS 32.523 DEG)\n\nR60ADRS\t\tCADR\tR60CALL +3\nNEG37\t\tDEC\t-37\nBITS7-9\t\tOCT\t700\nBITS4-6\t\tOCT\t70\n\t\tSETLOC\tRT53\n\t\tBANK\nLOWMEMRY\tVLOAD*\tRVQ\n\t\t\tCATLOG,1\n\t\tBANK\t37\n\t\tSETLOC\tP23S1\n\t\tBANK\nLDPLANET\tEXIT\t\t\t# KEEP THIS OPEN SUBROUTINE IN EBANK=5\n\t\tCAF\tVNPLAN23\t# BECAUSE STAR IS EBANK=5\n\t\tTC\tBANKCALL\t# LDPLANET ALLOWS VECTOR TO PLANET TO BE\n\t\tCADR\tGOFLASH\t\t# STORED IN STARSAV2 IF STORED STARS ARE\n\t\tTC\tGOTOPOOH\t# NOT VISIBLE\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tSTARSAV3\n\t\tVXSC\tUNIT\n\t\t\t1/SQR3\n\t\tSTORE\tSTARSAV2\n\t\tGOTO\n\t\t\tP23.31\nVNPLAN23\tVN\t0688\n\t\tBLOCK\t02\nGOTOV56\t\tEXTEND\t\t\t# P20 TERMINATES BY GOTOV56 INSTEAD OF\n# Page 632\n\t\tDCA\tVB56CADR\t#\tGOTOPOOH\n\t\tTCF\tSUPDXCHZ\n\t\tEBANK=\tWHOCARES\nVB56CADR\t2CADR\tTRACKTRM\n\n\t\tSETLOC\tFFTAG2\n\t\tBANK\n\t\tCOUNT*\t$$/P20\n\t\tBANK\t40\n\t\tSETLOC\tENDPINS1\n\t\tBANK\n\t\tCOUNT*\t$$/EXTVB\nV67CALL\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tV67WW\n\t\tEXIT\nV06N99DS\tCAF\tV06N99A\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTCF\tENDEXT\n\t\tTC\tV06N9933\n\t\tTC\tV06N99DS\nV06N9933\tTC\tINTPRET\n\t\tSLOAD\tBHIZ\t\t# IF R3 OF V67 = 0 EXIT\n\t\t\tWWOPT\n\t\t\t+3\n\t\tGOTO\n\t\t\tV6N99INP\n\t\tEXIT\n\t\tTCF\tENDEXT\nV6N99INP\tLXA,1\tLXA,2\n\t\t\tWWPOS\n\t\t\tWWVEL\n\t\tSLOAD\tDSU\n\t\t\tWWOPT\n\t\t\tV67DEC2\n\t\tBHIZ\tBPL\n\t\t\tV67WORB\n\t\t\tV67WMID\n\t\tSXA,1\tSXA,2\n\t\t\tWRENDPOS\n\t\t\tWRENDVEL\n\t\tGOTO\n\t\t\tV67EXITX\nV67WORB\t\tSXA,1\tSXA,2\n\t\t\tWORBPOS\n\t\t\tWORBVEL\n\t\tGOTO\n\t\t\tV67EXITX\nV67WMID\t\tSXA,1\tSXA,2\n# Page 633\n\t\t\tWMIDPOS\n\t\t\tWMIDVEL\nV67EXITX\tCLEAR\tCLEAR\n\t\t\tORBWFLAG\n\t\t\tRENDWFLG\n\t\tEXIT\n\t\tTCF\tENDEXT\nV67WW\t\tSTQ\tBOV\n\t\t\tS2\n\t\t\t+1\n\t\tCALL\n\t\t\tINTSTALL\n\t\tSSP\tDLOAD\n\t\t\tS1\n\t\tDEC\t6\n\t\t\tZEROVECS\n\t\tSTORE\tWWPOS\n\t\tSTORE\tWWVEL\n\t\tSTORE\tWWOPT\n\t\tAXT,1\n\t\tDEC\t36\nNXPOSVEL\tVLOAD*\tVSQ\n\t\t\tW +36D,1\n\t\tDAD\n\t\t\tWWPOS\n\t\tSTORE\tWWPOS\n\t\tVLOAD*\tVSQ\n\t\t\tW +90D,1\n\t\tDAD\n\t\t\tWWVEL\n\t\tSTORE\tWWVEL\n\t\tTIX,1\tSQRT\n\t\t\tNXPOSVEL\n\t\tSTODL\tWWVEL\n\t\t\tWWPOS\n\t\tSQRT\n\t\tSTORE\tWWPOS\n\t\tBOV\tGOTO\n\t\t\t+2\n\t\t\tV67XXX\n\t\tDLOAD\n\t\t\tDPPOSMAX\n\t\tSTORE\tWWPOS\n\t\tSTORE\tWWVEL\nV67XXX\t\tDLOAD\tDSU\n\t\t\tWWPOS\n\t\t\tFT99999\n\t\tBMN\tDLOAD\n\t\t\t+3\n\t\t\tFT99999\n# Page 634\n\t\tSTORE\tWWPOS\n\t\tLXA,1\tSXA,1\n\t\t\tS2\n\t\t\tQPRET\n\t\tEXIT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tINTWAKE\nWWPOS\t\t=\tRANGE\nWWVEL\t\t=\tRRATE\nWWOPT\t\t=\tRTHETA\nV06N99A\t\tVN\t0699\nFT99999\t\t2DEC\t30479 B-19\n\nV67DEC2\t\t2DEC\t2 B-14\n\n\t\tSBANK=\tLOWSUPER\n\n"
  },
  {
    "path": "Comanche055/P30-P37.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP30-P37.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t635-648\n# Mod history:\t2009-05-10 RSB\tAdapted from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.\n#\t\t2009-05-20 RSB\tCorrected BDV -> BOV.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 635\n\t\tBANK\t32\n\n\t\tSETLOC\tP30S1\n\t\tBANK\n\n\t\tEBANK=\t+MGA\n\n\t\tCOUNT\t35/P34\n\nDISPMGA\t\tSTQ\tEXIT\t\t# USED IN P30\n\n\t\t\tRGEXIT\n\t\tTC\tCOMPTGO\n\nDISP45\t\tCAF\tV16N45\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tGOTOPOOH\n\t\tTC\tEND45\n\t\tTC\tDISP45\nP30PHSI\t\tTC\tPHASCHNG\n\t\tOCT\t14\n\t\tTCR\tENDOFJOB\nEND45\t\tTC\tINTPRET\n\t\tCLEAR\tGOTO\n\t\t\tTIMRFLAG\n\t\t\tRGEXIT\n\nCOMPTGO\t\tEXTEND\t\t\t# USED TO COMPUTE TTOGO\n\t\tQXCH\tPHSPRDT6\t# ** GROUP 6 TEMPORARY USED .. BEWARE **\n\n\t\tTC\tUPFLAG\t\t# SET TIMRFLAG\n\t\tADRES\tTIMRFLAG\t# BIT 11 FLAG 7\n\t\tCAF\tZERO\n\t\tTS\tNVWORD1\n\n\t\tCAF\tONE\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTIG\n\t\t2CADR\tCLOKTASK\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40036\t\t# 6.3SPOT FOR CLOKTASK\n\t\tOCT\t05024\t\t# GROUP 4 CONTINUES HERE\n\t\tOCT\t13000\n\n\t\tTC\tPHSPRDT6\n# Page 636\n# PROGRAM DESCRIPTION P30\tDATE 3-6-67\n\n# MOD.I BY S. ZELDIN-  TO ADD P31 AND AD APT P30 FOR P31 USE.\t22DEC67\n# FUNCTIONAL DESCRIPTION\n# +30(EXTERNAL DELTA-V TARGETTING PROGRAM)\n#\tACCEPTS ASTRONAUT INPUTS OF TIG,DELV(LV) AND COMPUTES,FOR DISPLAY,\n#\tAPOGEE,PERIGEE,DELV(MAG),MGA ASSOCIATED WITH DESIRED MANEUVER\n\n# P31(GENERAL LAMBERT AIMPOINT GUIDANCE)\n# A GROUND RULE FOR P31 IS THE ANGLE BETWEEN THE TARGET VECTOR AND\n# POSITION VECTOR AT TIG IS NOT 165-195 DEGREES APART\n#\tBASED ON STORED INPUT OF OFFSET TARGET(B+29) AND DELTA T TRANS,AND\n#\tASTRONAUT ENTRY OF TIG,P31 COMPUTES REQUIRED VELOCITY FOR MANEUVER\n#\tAND,FOR DISPLAY,APOGEE,PERIGEE,DELV(7AG),+MGA ASSOCIATED WITH\n#\tDESIRED MANEUVER\n\n# THE FOLLOWING SUBROUTINES ARE USED IN P30 AND P31\n#\tS30.1 (P30 ONLY)\n#\tS31.1 (P31 ONLY)\n#\tP30/P31 - DISPLAYS TIG\n#\tCNTUP30 - DISPLAYS DELV(LV)\n#\tPARAM30 - DISPLAYS APOGEE,PERIGEE,DELV(MAG),MGA,TIME FROM TIG,\n#\t\t  MARKS SINCE LAST THRUSTING MANEUVER\n\n# CALLING SEQUENCE VIA JOB FROM V37\n\n# EXIT VIA V37 OR GOTOPOOH\n\n# OUTPUT FOR POWERED FLIGHT\n#\tVTIG\tX\n#\tRTIG\t XSEE S30.1\n#\tDELVSIN\t X\n#\tVGDISP\n#\tRTARG\tX\n#\tTPASS4\t X SEE S31.1\n#\t\tX\n\n\n\t\tCOUNT\t35/P30\n\nP30\t\tTC\tP30/P31\n\t\tTC\tCNTNUP30\n\t\tTC\tDOWNFLAG\t# RESET UPDATFLG\n\t\tADRES\tUPDATFLG\t# BIT 7  FLAG 1\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tS30.1\n\t\tEXIT\n\t\tTC\tPARAM30\n\t\tTC\tUPFLAG\n# Page 637\n\t\tADRES\tXDELVFLG\t# SET XDELVFLG BIT 8 FLAG 2\n\t\tTCF\tGOTOPOOH\n\nP31\t\tTC\tP30/P31\n\t\tTC\tDOWNFLAG\n\t\tADRES\tUPDATFLG\t# RESET UPDATFLG BIT 7 FLAG 1\n\t\tTC\tDOWNFLAG\n\t\tADRES\tNORMSW\t\t# RESET NORMSW \t\tBIT 10 FLAG 7\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tS31.1\n\t\tEXIT\n\t\tTC\tCNTNUP30\n\t\tTC\tPARAM30\n\t\tTC\tDOWNFLAG\n\t\tADRES\tXDELVFLG\t# BIT 8 FLAG 2\n\t\tTCF\tGOTOPOOH\n\nP30/P31\t\tXCH\tQ\n\t\tTS\tP30/31RT\n\t\tTC\tUPFLAG\n\t\tADRES\tUPDATFLG\t# SET UPDATFLG BIT 7 FLAG 1\n\t\tTC\tUPFLAG\n\t\tADRES\tTRACKFLG\t# SET TRACKFLG BIT 5 FLAG 1\n\t\tCAF\tV06N33\t\t# T OF IGN\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTCF\tGOTOPOOH\n\t\tTC\tP30/31RT\n\t\tTCF\tP30/P31 +4\n\t\tTC\tPHASCHNG\n\t\tOCT\t00014\n\t\tTC\tENDOFJOB\n\nCNTNUP30\tXCH\tQ\n\t\tTS\tP30/RET\n\t\tCAF\tV06N81\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTC\tP30/RET\n\t\tTCF\tCNTNUP30 +2\nPARAM30\t\tXCH\tQ\n\t\tTS\tP30/31RT\n\t\tCAF\tV06N42\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# ON TERMINATION GOTOPOOH\n\t\tTCF\tREFTEST\t\t# ON PROCEED GO DO REFTEST\n# Page 638\n\t\tTCF\tPARAM30 +2\nREFTEST\t\tCAF\tBIT13\n\t\tMASK\tSTATE +3\t# REFSMFLAG\n\t\tEXTEND\n\t\tBZF\tNOTSET\t\t# REFSMFLAG =0 , THEN BRANCH TO NOTSET\n\t\tTC\tINTPRET\n\t\tVLOAD\tPUSH\n\t\t\tDELVSIN\n\t\tCALL\n\t\t\tGET+MGA\n\t\tGOTO\n\t\t\tFLASHMGA\nNOTSET\t\tEXTEND\n\t\tDCS\tMARSDP\n\t\tDXCH\t+MGA\t\t# +MGA, +MGA+1 CONTAINS (-00001)\n\t\tTC\tINTPRET\nFLASHMGA\tCALL\n\t\t\tDISPMGA\n\t\tEXIT\n\t\tTC\tP30/31RT\nMARSDP\t\tOCT\t00000\t\t# (00000) (16440) = (+00001)\n\t\tOCT\t35100\n\t\t\t\t\t# ( .01 ) DEGREES IN THE LOW ORDER REGISTE\n\nV06N33\t\tVN\t0633\nV06N42\t\tVN\t0642\nV16N35\t\tVN\t1635\nV06N45\t\tVN\t0645\n\n# Page 639\n# PROGRAM DESCRIPTION S30.1\tDATE 9NOV66\n\n# MOD NO 1\t\t\tLOG SECTION P30,P37\n# MOD BY RAMA AIYAWAR **\n# MOD.2 BY S.ZELDIN - TO CORRECT MOD.1 FOR COLOSSUS\t\t29DEC67\n# FUNCTIONAL DESCRIPTION\n#\tBASED ON STORED TARGET PARAMETERS(R OF IGNITION(RTIG),V OF\n# IGNITION(VTIG),TIME OF IGNITION(TIG),DELV(LV),COMPUTE PERIGEE ALTITUDE\n# A+OGEE ALTITUDE AND DELTA-V REQUIRED IN REF. COORDS.(DELVSIN)\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tS30.1\n# NORMAL EXIT MODE\n#\tAT L+2 OR CALLING SEQUENCE (GOTO L+2)\n# SUBROUTINES CALLED\n#\tTHISPREC\n#\tPERIAPO\n# ALARM OR ABORT EXIT MODES\n#\t\tNONE\n# ERASABLE INITIALIZATION REQUIRED\n#\tTIG\t\tTIME OF IGNITION\tDP\tB28CS\n#\tDELVSLV\t\tSPECIFIED DELTA-V IN LOCAL VERT.\n#\t\t\tCOORDS. OF ACTIVE VEHICLE AT\n#\tTIME OF IGNITION\t\t\tVCT.\tB+7M/CS\n#\n# OUTPUT\n#\tRTIG\t\tPOSITION AT TIG\t\tVCT. \tB+29M\n#\tVTIG\t\tVELOCITY AT TIG\t\tVCT. \tB+7M\n#\tHAPO\t\tAPOGEE ALT.\t\tDP \tB+29M\n#\tHPER\t\tPERIGEE ALT.\t\tDP \tB+29M\n#\tDELVSIN\t\tDELVSLV IN REF COORDS\tVCT. \tB+7M/CS\n#\tVGDISP\t\tMAG. OF DELVSIN\t\tDP \tB+7M/CS\n# DEBRIS\tQTEMP\tTEMP. ERASABLE\n#\t\tQPRET,MPAC\n#\t\tPUSHLIST\n\n\t\tSETLOC\tP30S1A\n\t\tBANK\n\n\t\tCOUNT\t35/S30S\n\nS30.1\t\tSTQ\tDLOAD\n\t\t\tQTEMP\n\t\t\tTIG\t\t# TIME IGNITION SCALED AT 2(+28)CS\n\t\tSTCALL\tTDEC1\n\t\t\tTHISPREC\t# ENCKE ROUTINE FOR\n\n\t\tVLOAD\tSXA,2\n\t\t\tVATT\n\t\t\tRTX2\n\t\tSTOVL\tVTIG\n# Page 640\n\t\t\tRATT\n\t\tSTORE\tRTIG\n\t\tSTORE\tRACT3\n\t\tVXV\tUNIT\n\t\t\tVTIG\n\t\tSTCALL\tUNRM\n\t\t\tLOMAT\n\t\tVLOAD\tVXM\n\t\t\tDELVSLV\n\t\t\t0\n\t\tVSL1\tSXA,1\n\t\t\tRTX1\n\t\tSTORE\tDELVSIN\n\t\tABVAL\n\t\tSTOVL\tVGDISP\t\t# MAG DELV\n\t\t\tRTIG\n\t\tPDVL\tVAD\n\t\t\tDELVSIN\n\t\t\tVTIG\n\t\tCALL\n\t\t\tPERIAPO1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tCALL\n\t\t\tMAXCHK\n\t\tSTODL\tHPER\t\t# PERIGEE ALT B+29\n\t\t\t4D\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tCALL\n\t\t\tMAXCHK\n\t\tSTCALL\tHAPO\t\t# APOGEE ALT B+29\n\t\t\tQTEMP\n\n# Page 641\n# S31.1 PROGRAM DESCRIPTION\t\t28DEC67\n# MOD.1 BY S.ZELDIN\n\n# S31.1 COMPUTES DELV IN REF AND LV COORDS,MAG OF DELV,INTERCEPT TIME,\n# APOGEE AND PERIGEE ALT FOR REQUIRED MANEUVER\n\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tS31.1\n\n# NORMAL EXIT MODE\n#\tAT L +2 OF CALLING SEQUENCE(GOTO L+2)\n# SUBROUTINES CALLED\n#\tAGAIN\n#\tPERIAPO1\n#\tSHIFTR1\n#\tMIDGIM\n# NO ALARM OR ABORT MODES\n# INPUT\n#\tDELLT4\t\tDP\t+28\n#\tTIG\t\tDP     +28\n#\tRTARG\t\tVCT\t+29\n# OUTPUT\n#\tDELVLVC\t\tVCT\t+7\n#\tVGDISP\t\tDP\t+7\n#\tHAPO\t\tDP\t+29\n#\tHPER\t\tDP\t+29\n#\tTPASS4\t\tDP\t+28\n# DEBRIS - QTEMP\n\nS31.1\t\tSTQ\tDLOAD\n\t\t\tQTEMP\n\t\t\tTIG\n\t\tSTCALL\tTDEC1\n\t\t\tAGAIN\t\t# RETURNS RTX2,RTX1,RATT,VATT,VIPRIME\n\t\tVLOAD\tPDVL\t\t# DELUEET3\n\t\t\tRTIG\n\t\t\tVIPRIME\n\t\tCALL\n\t\t\tPERIAPO1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tCALL\n\t\t\tMAXCHK\n\t\tSTODL\tHPER\t\t# B29\n\t\t\t4D\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tCALL\n\t\t\tMAXCHK\n\t\tSTOVL\tHAPO\t\t# B29\n# Page 642\n\t\t\tDELVEET3\n\t\tSTORE\t0\n\t\tSET\tCALL\n\t\t\tAVFLAG\n\t\t\tMIDGIM\t\t# GET DELVLVC B7 FORDISPLAY\n\t\tABVAL\n\t\tSTODL\tVGDISP\t\t# B+7 FOR DISPLAY\n\t\t\tDELLT4\n\t\tDAD\n\t\t\tTIG\n\t\tSTCALL\tTPASS4\t\t# FOR S40.1\n\t\t\tQTEMP\n\n# Page 643\n# SUBROUTINE NAME:\tDELRSPL\t\t(CONTINUATION OF V 82 IN CSM IF P11 ACTI\n# TRANSFERRED COMPLETELY FROM SUNDISK, P30S REV 33.  9 SEPT 67.\n# MOD NO: 0\t\tMOD BY: ZELDIN\t\tDATE:\n# MOD NO: 1\t\tMOD BY: RR BAIRNSFATHER\tDATE:  11 APR 67\n# MOD NO: 2\t\tMOD BY: RR BAIRNSFATHER\tDATE:  12 MAY 67\tADD UR.RT CALC WHEN BELOW 300K FT\n# MOD NO: 2.1\t\tMOD BY: RR BAIRNSFATHER\tDATE: 5 JULY 67\t\tFIX ERROR ON MOD. 2.\n# MOD NO: 3\t\tMOD BY: RR BAIRNSFATHER\tDATE:  12 JUL 67\tCHANGE SIGN OF DISPLAYED ERROR.\n# MOD 4\t\t\tMOD BY  S.ZELDIN\tDATE  3 APRIL 68\tCHANGE EQUATIONS FOR L/D=.18 WHICH REPLA\n# FUNCTION:\t\tCALCULATE (FOR DISPLAY ON CALL) AN APPROXIMATE MEASURE OF IN-PLANE SPLASH DOWN\n#\t\t\tERROR.  IF THE FREE-FALL TRANSFER ANGLE TO 300K FT ABOVE PAD RADIUS IS POSITIVE:\n#\t\t\tSPLASH ERROR= -RANGE TO TARGET + FREE-FALL TRANSFER ANGLE + ESTIMATED ENTRY ANGLE.\n#\t\t\tTHE TARGET LOCATION AT ESTIMATED TIME OF IMPACT IS USED.  IF THE FREE-FALL TRANSFER\n#\t\t\tANGLE IS NEGATIVE:  SPASH ERROR= -RANGE TO TARGET\n#\t\t\tTHE PRESENT TARGET LOCATION IS USED.\n# CALLING SEQUENCE\tCALLED AFTER SR30.1 IF IN CSM AND IF P11 OPERATING (UNDER CONTROL OF V82)\n# SUBROUTINES CALLED:  VGAMCALC, TFF/TRIG, LALOTORV.\n# EXIT:\t\t\tRETURN DIRECTLY TO V 82 PROG. AT SPLRET\n# ERASABLE INITIALIZATION  LEFT BY SR30.1 AND V82GON1\n# OUTPUT:\tRSP-RREC RANGE IN REVOLUTIONS.  \t\t\tDSKY DISPLAY IN N. MI.\n# DEBRIS:\tQPRET, PDL0 ...PDL7 ,PDL10\n\n# \t\tTHETA(1)\n\n\t\tBANK\t32\n\t\tSETLOC\tDELRSPL1\n\t\tBANK\n\t\tCOUNT*\t$$/P30\t\t# PROGRAMS: P30 EXTERNAL DELTA V\n\nDELRSPL\t\tSTORE\t8D\n\t\tBPL\tDSU\n\t\t\tCANTDO\t\t# GONE PAST 300K FT ALT\n\t\t\t1BITDP\n\t\tBOV\tCALL\n\t\t\tCANTDO\t\t# POSMAX INDICATES NO 300K FT SOLUTION.\n\t\t\tVGAMCALC\t# +GAMMA(REV) IN PMAC,V300 MAG(B-7)=PDL 0\n\t\tPUSH\tCALL\n\t\t\tTFF/TRIG\n\t\tCALL\n\t\t\tAUGEKUGL\n\t\tPDDL\tACOS\t\t# T ENTRY PDL 6\n\t\t\tCDELF/2\n\t\tDAD\n\t\t\t4\nGETARG\t\tSTOVL\tTHETA(1)\n\t\t\tLAT(SPL)\n\t\tSTODL\tLAT\n\t\t\tHI6ZEROS\n\t\tSTODL\tALT\t\t# ALT=0 = LAT +4\n\t\t\tPIPTIME\n# Page 644\n\t\tBON\tDLOAD\n\t\t\tV37FLAG\n\t\t\t+2\n\t\t\tTSTART82\n\t\tDSU\tDAD\n\t\t\t8D\n\t\tCLEAR\tCALL\n\t\t\tERADFLAG\n\t\t\tLALOTORV\t# R RECOV. IN ALPHAV AND MPAC\n\n\t\tUNIT\tPDVL\n\t\t\tRONE\n\t\tUNIT\tDOT\n\t\tSL1\tARCCOS\n\t\tBDSU\t\t\t# ERROR = THETA EST - THETA TARG\n\t\t\t\t\t# NEGATIVE NUMBER SIGNIFIES THAT WILL FALL SHORT.\n\t\t\t\t\t# POSITIVE NUMBER SIGNIFIES THAT WILL OVERSHOOT.\n\t\t\tTHETA(1)\nDELRDONE\tSTCALL\tRSP-RREC\t# DOWNRANGE RECOVERY RANGE ERROR\t/360\n\t\t\tINTWAKE0\n\t\tCALL\n\t\t\tSPLRET\nCANTDO\t\tDLOAD\tPDDL\t\t# INITIALIZE ERASE TO DOT TARGET AND UR\n\t\t\t\t\t# FOR RANGE ANGLE.\n\t\t\tHIDPHALF\t# TO PDL 0 FOR DEN IN DDV.\n\t\t\tHI6ZEROS\n\t\tPUSH\t\t\t# ZERO TO PDL 2 FOR PHI ENTRY\n\t\tSTCALL\t8D\n\t\t\tGETARG\t\t# GO SET RSP-RREC =0\n\nAUGEKUGL\tVLOAD\n\t\t\tX1CON -2\n\t\tSTODL\tX1 -2\n\t\t\t0\n\t\tDSU\tBMN\n\t\t\tV(21K)\n\t\t\tLOOPSET\n\t\tXSU,1\tXCHX,2\n\t\t\tS1\n\t\t\tX1\n\t\tXCHX,2\tDSU\n\t\t\tS1\n\t\t\tV(3K)\n\t\tBMN\tXCHX,2\n\t\t\tLOOPSET\n\t\t\tS1\n\t\tDSU\tBMN\n\t\t\tV(4K)\n\t\t\tLOOPSET\n\t\tXCHX,2\tXCHX,2\n# Page 645\n\t\t\tS1\n\t\t\tX1\n\t\tDSU\tBMN\n\t\t\tV(400)\n\t\t\tLOOPSET\n\t\tSXA,1\n\t\t\tS1\nLOOPSET\t\tINCR,1\tGOTO\n\t\tDEC\t1\n\t\t\tK1K2LOOP\nK2CALC\t\tSXA,1\n\t\t\tS1\nK1K2LOOP\tDLOAD\tDSU*\n\t\t\t0\n\t\t\tV(32K) +1,1\n\t\tDMP*\tDAD*\n\t\t\tYK1K2 +1,1\n\t\t\tCK1K2 +1,1\n\t\tPDDL\tTIX,1\n\t\t\t2\n\t\t\tK2CALC\n\t\tDSU\tBDDV\n\t\tPUSH\tBOV\n\t\t\tMAXPHI\n\t\tBMN\tDSU\n\t\t\tMAXPHI\n\t\t\tMAXPHIC\n\t\tBPL\n\t\t\tMAXPHI\nPHICALC\t\tDLOAD\tDSU\t\t# PHI ENTRY PDL 4D\n\t\t\t0\n\t\t\tV(26K)\n\t\tBPL\tDLOAD\n\t\t\tTGR26\n\t\t\tTLESS26\n\t\tDDV\n\t\t\t0\nTENT\t\tDMP\tRVQ\n\t\t\t4D\nTGR26\t\tDLOAD\tGOTO\n\t\t\tTGR26CON\n\t\t\tTENT\n\nMAXPHI\t\tDLOAD\tPDDL\n\t\t\tMAXPHIC\n\t\tGOTO\n\t\t\tPHICALC\nMAXPHIC\t\t2DEC\t.09259298\t# 2000 NM FOR MAXIMUM PHI ENTRY\n\n# Page 646\n\n\t\tCOUNT*\t$$/P30\n\n\t\t\t\t\t# \t\tBELOW\n\t\t\t\t\t# <<<< TABLE IS INDEXED. KEEP IN ORDER >>>>\n\n\t\t2DEC\t7.07304526 E-4\t# 5500\n\n\t\t2DEC\t3.08641975 E-4\t# 2400\n\n\t\t2DEC\t3.08641975 E-4\t# 2400\n\n\t\t2DEC\t-8.8888888 E-3\t# -3.2\n\n\t\t2DEC\t2.7777777 E-3\t# 1\n\nCK1K2\t\t2DEC\t6.6666666 E-3\t# 2.4\n\n\t\t2DEC\t0\t\t# 0\n\n\t\t2DEC*\t-1.86909989 E-5 B7* \t# -.443\n\n\t\t2DEC\t0\n\n\t\t2DEC*\t1.11639691 E-3 B7*\t# .001225\n\n\t\t2DEC*\t9.56911636 E-4 B7*\t# .00105\n\nYK1K2\t\t2DEC*\t2.59733157 E-4 B7*\t# \t.000285\n\nV(400)\t\t2DEC\t1.2192 B-7\n\nV(28K)\t\t2DEC\t85.344 B-7\n\nV(3K)\t\t2DEC\t9.144 B-7\n\nV(24K)\t\t2DEC\t73.152 B-7\n\n\t\t2DEC\t85.344 B-7\n\nV(32K)\t\t2DEC\t97.536 B-7\n\nV(4K)\t\t2DEC\t12.192 B-7\n\nV(21K)\t\t2DEC\t64.000 B-7\n\nTLESS26\t\t2DEC*\t5.70146688 E7 B-35*\t# 8660PHI/V\n\nTGR26CON\t2DEC\t7.2 E5 B-28\t# PHI/3\n\nV(26K)\t\t2DEC\t79.248 B-7\t# 26000\n\n# Page 647\n\nX1CON\t\tDEC\t10\n\n\t\tDEC\t8\n\n\t\tDEC\t6\n\t\t\t\t\t# <<<< TABLE IS INDEXED.  KEEP IN ORDER >>>>\n\t\t\t\t\t#\t\tABOVE\n# Page 648\n# ***** AVFLAGA/P *****\n\n# SUBROUTINES USED\n\n#\tUPFLAG\n#\tDOWNFLAG\n\t\tSETLOC\tP30SUBS\n\t\tBANK\n\t\tEBANK=\tSUBEXIT\nAVFLAGA\t\tEXTEND\t\t\t# AVFLAG = CSM\n\t\tQXCH\tSUBEXIT\n\t\tTC\tDOWNFLAG\n\t\tADRES\tAVFLAG\t\t# BIT 5 FLAG 2\n\t\tCAF\tEBANK7\n\t\tTS\tEBANK\n\t\tEBANK=\tECSTEER\n\t\tCAF\tBIT13\n\t\tTS\tECSTEER\t\t# SET ECSTEER = 1\n\t\tCAF\tEBANK4\n\t\tTS\tEBANK\n\t\tEBANK=\tSUBEXIT\n\t\tTC\tSUBEXIT\nAVFLAGP\t\tEXTEND\t\t\t# AVFLAG = LEM\n\t\tQXCH\tSUBEXIT\n\t\tTC\tUPFLAG\n\t\tADRES\tAVFLAG\t\t# BIT 5 FLAG 2\n\t\tTC\tSUBEXIT\nP20FLGON\tEXTEND\n\t\tQXCH\tSUBEXIT\n\t\tTC\tUPFLAG\n\t\tADRES\tTRACKFLG\n\t\tTC\tUPFLAG\n\t\tADRES\tUPDATFLG\n\t\tTC\tSUBEXIT\t\t# DP\tB4\n"
  },
  {
    "path": "Comanche055/P32-P33_P72-P73.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP32-P33_P72-P73.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t649-683\n# Mod history:\t2009-05-09 RSB\tAdapted from the Luminary131/ file\n#\t\t\t\tP32-P35_P72-P75.agc and Comanche055 page\n#\t\t\t\timages.\n#\t\t2009-05-20 RSB\tCorrected CSI/COM3 -> CSI/CDH3,\n#\t\t\t\tCSI/CDHI -> CSI/CDH1, CDHTAB -> CDHTAG,\n#\t\t\t\tchanged a SETLOC from CSI/CDH to CSI/CDH1,\n#\t\t\t\ta SETLOC CSI/CDH1 to CSIPROG.\n#\t\t2009-05-21 RSB\tChanged a P32/P72D to P32/P72E in\n#\t\t\t\tP32/P72D.  DP1/4TH changed to DP1/4 in\n#\t\t\t\tCDHMVR.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 649\n# COELLIPTIC SEQUENCE INITIATION (CSI) PROGRAMS (P32 AND P72)\n\n# MOD NO -1\t\tLOG SECTION - P32-P35, P72-P75\n# MOD BY WHITE.P\tDATE 1JUNE67\n\n# PURPOSE\n\n#\t (1) TO CALCULATE PARAMETERS ASSOCIATED WITH THE FOLLOWING\n#\t     CONCENTRIC FLIGHT PLAN MANEUVERS - THE CO-ELLIPTIC SEQUENCE\n#\t     INITIATION (CSI) MANEUVER AND THE CONSTANT DELTA ALTITUDE\n#\t     (CDH) MANEUVER.\n\n#\t (2) TO CALCULATE THESE PARAMETERS BASED UPON MANEUVER DATA\n#\t     APPROVED AND KEYED INTO THE DSKY BY THE ASTRONAUT.\n\n#\t (3) TO DISPLAY TO THE ASTRONAUT AND THE GROUND DEPENDENT VARIABLES\n#\t     ASSOCIATED WITH THE CONCENTRIC FLIGHT PLAN MANEUVERS FOR\n#\t     APPROVAL BY THE ASTRONAUT/GROUND.\n\n#\t (4) TO STORE THE CSI TARGET PARAMETERS FOR USE BY THE DESIRED\n#\t     THRUSTING PROGRAM.\n\n# ASSUMPTIONS\n\n#\t (1) AT A SELECTED TPI TIME THE LINE OF SIGHT BETWEEN THE ACTIVE\n#\t     AND PASSIVE VEHICLES IS SELECTED TO BE A PRESCRIBED ANGLE (E)\n#\t     FROM THE HORIZONTAL PLANE DEFINED BY THE ACTIVE VEHICLE\n#\t     POSITION.\n\n#\t (2) THE TIME BETWEEN CSI IGNITION AND CDH IGNITION MUST BE\n#\t     COMPUTED TO BE GREATER THAN 10 MINUTES FOR SUCCESSFUL\n#\t     COMPLETION OF THE PROGRAM.\n\n#\t (3) THE TIME BETWEEN CDH IGNITION AND TPI IGNITION MUST BE\n#\t     COMPUTED TO BE GREATER THAN 10 MINUTES FOR SUCCESSFUL\n#\t     COMPLETION OF THE PROGRAM.\n\n#\t (4) CDH DELTA V IS SELECTED TO MINIMIZE THE VARIATION OF THE\n#\t     ALTITUDE DIFFERENCE BETWEEN THE ORBITS.\n\n#\t (5) CSI BURN IS DEFINED SUCH THAT THE IMPULSIVE DELTA V IS IN THE\n#\t     HORIZONTAL PLANE DEFINED BY THE ACTIVE VEHICLE POSITION AT CSI\n#\t     IGNITION.\n\n#\t (6) THE PERICENTER ALTITUDE OF THE ORBIT FOLLOWING CSI AND CDH\n#\t     MUST BE GREATER THAN 35,000 FT (LUNAR ORBIT) OR 85 NM (EARTH\n#\t     ORBIT) FOR SUCCESSFUL COMPLETION OF THIS PROGRAM.\n\n#\t (7) THE CSI AND CDH MANEUVERS ARE ORIGINALLY ASSUMED TO BE\n#\t     PARALLEL TO THE PLANE OF THE CSM ORBIT.  HOWEVER, CREW\n# Page 650\n#\t     MODIFICATION OF DELTA V (LV) COMPONENTS MAY RESULT IN AN\n#\t     OUT-OF-PLANE CSI MANEUVER.\n\n#\t (8) STATE VECTOR UPDATES BY P27 ARE DISALLOWED DURING AUTOMATIC\n#\t     STATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION 10).\n\n#\t (9) COMPUTED VARIABLES MAY BE STORED FOR LATER VERIFICATION BY\n#\t     THE GROUND.  THESE STORAGE CAPABILITIES ARE NORMALLY LIMITED\n#\t     ONLY TO THE PARAMETERS FOR ONE THRUSTING MANEUVER AT A TIME\n#\t     EXCEPT FOR CONCENTRIC FLIGHT PLAN MANEUVER SEQUENCES.\n\n#\t(10) THE RENDEZVOUS RADAR MAY OR MAY NOT BE USED TO UPDATE THE LM\n#\t     OR CSM STATE VECTORS FOR THIS PROGRAM.  IF RADAR USE IS\n#\t     DESIRED THE RADAR WAS TURNED ON AND LOCKED BY THE CSM BY\n#\t     PREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS WILL BE MADE\n#\t     AUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN ENABLED BY THE\n#\t     TRACK AND UPDATE FLAGS (SEE P20).  THE RENDEZVOUS TRACKING\n#\t     MARK COUNTER IS ZEROED BY THE SELECTION OF P20 AND AFTER EACH\n#\t     THRUSTING MANEUVER.\n\n#\t(11) THE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.\n\n#\t(12) THE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS -\n\n#\t\tACTIVE VEHICLE FLAG - DESIGNATES THE VEHICLE WHICH IS\n#\t\tDOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH\n#\t\tCALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF\n#\t\tEACH RENDEZVOUS PRE-THRUSTING PROGRAM.\n\n#\t\tFINAL FLAG - SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS\n#\t\tCOMPLETED THE FINAL MANEUVER COMPUTATION AND DISPLAY\n#\t\tCYCLE.\n\n#\t\tEXTERNAL DELTA V STEERING FLAG - DESIGNATES THE TYPE OF\n#\t\tSTEERING REQUIRED FOR EXECUTION OF THIS MANEUVER BY THE\n#\t\tTHRUSTING PROGRAM SELECTED AFTER COMPLETION OF THIS\n#\t\tPROGRAM.\n\n#\t(13) IT IS NORMALLY REQUIRED THAT THE ISS BE ON FOR 1 HOUR PRIOR TO\n#\t     A THRUSTING MANEUVER.\n\n#\t(14) THIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY -\n\n#\t\tP32 IF THIS VEHICLE IS ACTIVE VEHICLE.\n\n#\t\tP72 IF THIS VEHICLE IS PASSIVE VEHICLE.\n\n# INPUT\n\n#\t (1) TCSI\tTIME OF THE CSI MANEUVER\n# Page 651\n#\t (2) NN\t\tNUMBER OF APSIDAL CROSSINGS THRU WHICH THE ACTIVE\n#\t\t\tVEHICLE ORBIT CAN BE ADVANCED TO OBTAIN THE CDH\n#\t\t\tMANEUVER POINT\n#\t (3) ELEV\tDESIRED LOS ANGLE AT TPI\n#\t (4) TTPI\tTIME OF THE TPI MANEUVER\n# OUTPUT\n\n#\t (1) TRKMKCNT\tNUMBER OF MARKS\n#\t (2) TTOGO\tTIME TO GO\n#\t (3) +MGA\tMIDDLE GIMBAL ANGLE\n#\t (4) DIFFALT\tDELTA ALTITUDE AT CDH\n#\t (5) T1TOT2\tDELTA TIME FROM CSI TO CDH\n#\t (6) T2TOT3\tDELTA TIME FROM CDH TO TPI\n#\t (7) DELVLVC\tDELTA VELOCITY AT CSI - LOCAL VERTICAL COORDINATES\n#\t (8) DELVLVC\tDELTA VELOCITY AT CDH - LOCAL VERTICAL COORDINATES\n\n# DOWNLINK\n\n#\t (1) TCSI\tTIME OF THE CSI MANEUVER\n#\t (2) TCDH\tTIME OF THE CDH MANEUVER\n#\t (3) TTPI\tTIME OF THE TPI MANEUVER\n#\t (4) TIG\tTIME OF THE CSI MANEUVER\n#\t (5) DELVEET1\tDELTA VELOCITY AT CSI - REFERENCE COORDINATES\n#\t (6) DELVEET2\tDELTA VELOCITY AT CDH - REFERENCE COORDINATES\n#\t (7) DIFFALT\tDELTA ALTITUDE AT CDH\n#\t (8) NN\t\tNUMBER OF APSIDAL CROSSINGS THRU WHICH THE ACTIVE\n#\t\t\tVEHICLE ORBIT CAN BE ADVANCED TO OBTAIN THE CDH\n#\t\t\tMANEUVER POINT\n#\t (9) ELEV\tDESIRED LOS ANGLE AT TPI\n\n# COMMUNICATION TO THRUSTING PROGRAMS\n\n#\t (1) TIG\tTIME OF THE CSI MANEUVER\n#\t (2) RTIG\tPOSITION OF ACTIVE VEHICLE AT CSI - BEFORE ROTATION\n#\t\t\tINTO PLANE OF PASSIVE VEHICLE\n#\t (3) VTIG\tVELOCITY OF ACTIVE VEHICLE AT CSE - BEFORE ROTATION\n#\t\t\tINTO PLANE OF PASSIVE VEHICLE\n#\t (4) DELVSIN\tDELTA VELOCITY AT CSI - REFERENCE COORDINATES\n#\t (5) DELVSAB\tMAGNITUDE OF DELTA VELOCITY AT CSI\n#\t (6) XDELVFLG\tSET TO INDICATE EXTERNAL DELTA V VG COMPUTATION\n\n# SUBROUTINES USED\n\n#\t AVFLAGA\n#\t AVFLAGP\n#\t P20FLGON\n#\t VARALARM\n#\t BANKCALL\n#\t GOFLASH\n#\t GOTOPOOH\n# Page 652\n#\t VNPOOH\n#\t GOFLASHR\n#\t BLANKET\n#\t ENDOFJOB\n#\t SELECTMU\n#\t ADVANCE\n#\t INTINT\n#\t PASSIVE\n#\t CSI/A\n#\t S32/33.1\n#\t DISDVLVC\n#\t VN1645\n\n\t\tBANK\t35\n\t\tSETLOC\tCSI/CDH1\n\t\tBANK\n\t\tEBANK=\tSUBEXIT\n\t\tCOUNT\t35/P3272\n\nP32\t\tTC\tAVFLAGA\n\t\tTC\tP32STRT\nP72\t\tTC\tAVFLAGP\nP32STRT\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tZEROVEC\n\t\tSTORE\tCENTANG\n\t\tEXIT\n\t\tTC\tP32/P72A\nALMXITA\t\tSXA,2\n\t\t\tCSIALRM\nALMXIT\t\tLXC,1\n\t\t\tCSIALRM\n\t\tSLOAD*\tEXIT\n\t\t\tALARM/TB -1,1\n\t\tCA\tMPAC\n\t\tTC\tVARALARM\n\t\tCAF\tV05N09\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t-4\nP32/P72A\tTC\tP20FLGON\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tZEROVEC\n\t\tSTORE\tNN\n\t\tEXIT\n\t\tCAF\tV06N11\t\t# TCSI\n\t\tTC\tVNPOOH\n\t\tCAF\tV06N55\t\t# NN. ELEV(RGL05)\n# Page 653\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tCAF\tV06N37\t\t# TTPI\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tTCSI\n\t\tSTCALL\tTIG\n\t\t\tSELECTMU\nP32/P72B\tCALL\n\t\t\tADVANCE\n\t\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tVPASS1\n\t\tPDVL\tPDDL\n\t\t\tRPASS1\n\t\t\tTCSI\n\t\tPDDL\tPDDL\n\t\t\tTTPI\n\t\t\t2PISC\n\t\tSL2\tPUSH\n\t\tCALL\n\t\t\tINTINT\n\t\tCALL\n\t\t\tPASSIVE\n\t\tCALL\n\t\t\tCSI/A\nP32/P72C\tBON\tSET\n\t\t\tFINALFLG\n\t\t\tP32/P72D\n\t\t\tUPDATFLG\nP32/P72D\tDLOAD\tGOTO\n\t\t\tT1TOT2\n\t\t\tP32/P72E\n\t\tSETLOC\tCSI/CDH3\n\t\tBANK\nP32/P72E\tSTORE\tT1TOT2\n\t\tDSU\tBPL\n\t\t\t60MIN\n\t\t\tP32/P72E\n\t\tDLOAD\tGOTO\n\t\t\tT2TOT3\n\t\t\tP32/P72F\n\t\tSETLOC\tCSI/CDH1\n\t\tBANK\nP32/P72F\tSTORE\tT2TOT3\n\t\tDSU\tBPL\n# Page 654\n\t\t\t60MIN\n\t\t\tP32/P72F\n\t\tEXIT\n\t\tCAF\tV06N75\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\n\t\t\tDELVEET1\n\t\t\tS32/33.1\n\t\tSTOVL\tDELVEET1\n\t\t\tRACT2\n\t\tSTOVL\tRACT1\n\t\t\tDELVEET2\n\t\tAXT,1\tCALL\n\t\tVN\t0682\n\t\t\tDISDVLVC\n\t\tDLOAD\n\t\t\tTTPI\n\t\tSTCALL\tTTPIO\n\t\t\tVN1645\n\t\tGOTO\n\t\t\tP32/P72B\n# Page 655\n# CONSTANT DELTA HEIGHT (CDH) PROGRAMS (P33 AND P73)\n\n# MOD NO -1\t\tLOC SECTION - P32-P35, P72-P75\n# MOD BY WHITE.P\tDATE 1JUNE67\n# PURPOSE\n\n#\t (1) TO CALCULATE PARAMETERS ASSOCIATED WITH THE CONSTANT DELTA\n#\t     ALTITUDE MANEUVER (CDH).\n\n#\t (2) TO CALCULATE THESE PARAMETERS BASED UPON MANEUVER DATA\n#\t     APPROVED AND KEYED INTO THE DSKY BY THE ASTRONAUT.\n\n#\t (3) TO DISPLAY TO THE ASTRONAUT AND THE GROUND DEPENDENT VARIABLES\n#\t     ASSOCIATED WITH THE CDH MANEUVER FOR APPROVAL BY THE\n#\t     ASTRONAUT/GROUND.\n\n#\t (4) TO STORE THE CDH TARGET PARAMETERS FOR USE BY THE DESIRED\n#\t     THRUSTING PROGRAM.\n\n# ASSUMPTIONS\n\n#\t (1) THIS PROGRAM IS BASED UPON PREVIOUS COMPLETION OF THE\n#\t     CO-ELLIPTIC SEQUENCE INITIATION (CSI) PROGRAM (P32/P72).\n#\t     THERFORE -\n\n#\t     (A) AT A SELECTED TPI TIME (NOW IN STORAGE) THE LINE OF SIGHT\n#\t\t BETWEEN THE ACTIVE AND PASSIVE VEHICLES WAS SELECTED TO BE\n#\t\t A PRESCRIBED ANGLE (E) (NOW IN STORAGE) FROM THE\n#\t\t HORIZONTAL PLANE DEFINED BY THE ACTIVE VEHICLE POSITION.\n\n#\t     (B) THE TIME BETWEEN CSI IGNITION AND CDH IGNITION WAS\n#\t\t COMPUTED TO BE GREATER THAN 10 MINUTES.\n\n#\t     (C) THE TIME BETWEEN CDH IGNITION AND TPI IGNITION WAS\n#\t\t COMPUTED TO BE GREATER THAN 10 MINUTES.\n\n#\t     (D) THE VARIATION OF THE ALTITUDE DIFFERENCE BETWEEN THE\n#\t\t ORBITS WAS MINIMIZED.\n\n#\t     (E) CSI BURN WAS DEFINED SUCH THAT THE IMPULSIVE DELTA V WAS\n#\t\t IN THE HORIZONTAL PLANE DEFINED BY ACTIVE VEHICLE\n\n#\t\t POSITION AT CSI IGNITION.\n\n#\t     (F) THE PERICENTER ALTITUDES OF THE ORBITS FOLLOWING CSI AND\n#\t\t CDH WERE COMPUTED TO BE GREATER THAN 35,000 FT FOR LUNAR\n#\t\t ORBIT OR 85 NM FOR EARTH ORBIT.\n\n#\t     (G) THE CSI AND CDH MANEUVERS WERE ASSUMED TO BE PARALLEL TO\n#\t\t THE PLANE OF THE PASSIVE VEHICLE ORBIT.  HOWEVER, CREW\n# Page 656\n#\t\t MODIFICATION OF DELTA V (LV) COMPONENTS MAY HAVE RESULTED\n#\t\t IN AN OUT-OF-PLANE MANEUVER.\n\n#\t (2) STATE VECTOR UPDATES BY P27 ARE DISALLOWED DURING AUTOMATIC\n#\t     STATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION 4).\n\n#\t (3) COMPUTED VARIABLES MAY BE STORED FOR LATER VERIFICATION BY\n#\t     THE GROUND.  THESE STORAGE CAPABILITIES ARE NORMALLY LIMITED\n#\t     ONLY TO THE PARAMETERS FOR ONE THRUSTING MANEUVER AT A TIME\n#\t     EXCEPT FOR CONCENTRIC FLIGHT PLAN MANEUVER SEQUENCES.\n\n#\t (4) THE RENDEZVOUS RADAR MAY OR MAY NOT BE USED TO UPDATE THE LM\n#\t     OR CSM STATE VECTORS FOR THIS PROGRAM.  IF RADAR USE IS\n#\t     DESIRED THE RADAR WAS TURNED ON AND LOCKED ON THE CSM BY\n#\t     PREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS WILL BE MADE\n#\t     AUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN ENABLED BY THE\n#\t     TRACK AND UPDATE FLAGS (SEE P20).  THE RENDEZVOUS TRACKING\n#\t     MARK COUNTER IS ZEROED BY THE SELECTION OF P20 AND AFTER EACH\n#\t     THRUSTING MANEUVER.\n\n#\t (5) THE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.\n\n#\t (6) THE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS -\n\n#\t\tACTIVE VEHICLE FLAG - DESIGNATES THE VEHICLE WHICH IS\n#\t\tDOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH\n#\t\tCALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF\n#\t\tEACH RENDEZVOUS PRE-THRUSTING PROGRAM.\n\n#\t\tFINAL FLAG - SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS\n#\t\tCOMPLETED THE FINAL MANEUVER COMPUTATION AND DISPLAY\n#\t\tCYCLE.\n\n#\t\tEXTERNAL DELTA V STEERING FLAG - DESIGNATES THE TYPE OF\n#\t\tSTEERING REQUIRED FOR EXECUTION OF THIS MANEUVER BY THE\n#\t\tTHRUSTING PROGRAM SELECTED AFTER COMPLETION OF THIS\n#\t\tPROGRAM.\n\n#\t (7) IT IS NORMALLY REQUIRED THAT THE ISS BE ON FOR 1 HOUR PRIOR TO\n#\t     A THRUSTING MANEUVER.\n\n#\t (8) THIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY -\n\n#\t\tP33 IF THIS VEHICLE IS ACTIVE VEHICLE.\n\n#\t\tP73 IF THIS VEHICLE IS PASSIVE VEHICLE.\n\n# INPUT\n\n#\t (1) TTPIO\tTIME OF THE TPI MANEUVER - SAVED FROM P32/P72\n# Page 657\n#\t (2) ELEV\tDESIRED LOS ANGLE AT TPI - SAVED FROM P32/P72\n#\t (3) TCDH\tTIME OF THE CDH MANEUVER\n\n# OUTPUT\n\n#\t (1) TRKMKCNT\tNUMBER OF MARKS\n#\t (2) TTOGO\tTIME TO GO\n#\t (3) +MGA\tMIDDLE GIMBAL ANGLE\n#\t (4) DIFFALT\tDELTA ALTITUDE AT CDH\n#\t (5) T2TOT3\tDELTA TIME FROM CDH TO COMPUTED TPI\n#\t (6) NOMTPI\tDELTA TIME FROM NOMINAL TPI TO COMPUTED TPI\n#\t (7) DELVLVC\tDELTA VELOCITY AT CDH - LOCAL VERTICAL COORDINATES\n\n# DOWNLINK\n\n#\t (1) TCDH\tTIME OF THE CDH MANEUVER\n#\t (2) TTPI\tTIME OF THE TPI MANEUVER\n#\t (3) TIG\tTIME OF THE CDH MANEUVER\n#\t (4) DELLVEET2\tDELTA VELOCITY AT CDH - REFERENCE COORDINATES\n#\t (5) DIFFALT\tDELTA ALTITUDE AT CDH\n#\t (6) ELEV\tDESIRED LOS ANGLE AT TPI\n# COMMUNICATION TO THRUSTING PROGRAMS\n\n#\t (1) TIG\tTIME OF THE CDH MANEUVER\n#\t (2) RTIG\tPOSITION OF ACTIVE VEHICLE AT CDH - BEFORE ROTATION\n#\t\t\tINTO PLANE OF PASSIVE VEHICLE\n#\t (3) VTIG\tVELOCITY OF ACTIVE VEHICLE AT CDH - BEFORE ROTATION\n#\t\t\tINTO PLANE OF PASSIVE VEHICLE\n#\t (4) DELVSIN\tDELTA VELOCITY AT CDH - REFERENCE COORDINATES\n#\t (5) DELVSAB\tMAGNITUDE OF DELTA VELOCITY AT CDH\n#\t (6) XDELVFLG\tSET TO INDICATE EXTERNAL DELTA V VG COMPUTATION\n\n# SUBROUTINES USED\n\n#\t AVFLAGA\n#\t AVFLAGP\n#\t P20FLGON\n#\t VNPOOH\n#\t SELECTMU\n#\t ADVANCE\n#\t CDHMVR\n#\t INTINT3P\n#\t ACTIVE\n#\t PASSIVE\n#\t S33/S34.1\n#\t ALARM\n#\t BANKCALL\n#\t GOFLASH\n#\t GOTOPOOH\n#\t S32/33.1\n# Page 658\n#\t VN1645\n\n\t\tCOUNT\t35/P3373\n\nP33\t\tTC\tAVFLAGA\n\t\tTC\tP33/P73A\nP73\t\tTC\tAVFLAGP\nP33/P73A\tTC\tP20FLGON\n\t\tCAF\tV06N13\t\t# TCDH\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tTTPIO\n\t\tSTODL\tTTPI\n\t\t\tTCDH\n\t\tSTCALL\tTIG\n\t\t\tSELECTMU\nP33/P73B\tCALL\n\t\t\tADVANCE\n\t\tCALL\n\t\t\tCDHMVR\n\t\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tVACT3\n\t\tPDVL\tCALL\n\t\t\tRACT2\n\t\t\tINTINT3P\n\t\tCALL\n\t\t\tACTIVE\n\t\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tVPASS2\n\t\tPDVL\tCALL\n\t\t\tRPASS2\n\t\t\tINTINT3P\n\t\tCALL\n\t\t\tPASSIVE\n\t\tDLOAD\tSET\n\t\t\tZEROVEC\n\t\t\tITSWICH\n\t\tSTCALL\tNOMTPI\n\t\t\tS33/34.1\n\t\tBZE\tEXIT\n\t\t\tP33/P73C\n\t\tTC\tALARM\n\t\tOCT\t611\n\t\tCAF\tV05N09\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n# Page 659\n\t\tTC\t+2\n\t\tTC\tP33/P73A\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tZEROVEC\n\t\tSTCALL\tNOMTPI\n\t\t\tP33/P73C\n\t\tSETLOC\tCSI/CDH2\n\t\tBANK\n\nP33/P73C\tBON\tSET\n\t\t\tFINALFLG\n\t\t\tP33/P73D\n\t\t\tUPDATFLG\nP33/P73D\tDLOAD\tDAD\n\t\t\tNOMTPI\n\t\t\tTTPI\n\t\tSTORE\tTTPI\n\t\tDSU\tGOTO\n\t\t\tTCDH\n\t\t\tP33/P73E\n\t\tSETLOC\tCSI/CDH1\n\t\tBANK\n\nP33/P73E\tDSU\tBPL\n\t\t\t60MIN\n\t\t\tP33/P73E\n\t\tDAD\n\t\t\t60MIN\n\t\tSTODL\tT1TOT2\n\t\t\tTTPI\n\t\tDSU\tPUSH\n\t\t\tTTPIO\nP33/P73F\tABS\tDSU\n\t\t\t60MIN\n\t\tBPL\tDAD\n\t\t\tP33/P73F\n\t\t\t60MIN\n\t\tSIGN\tSTADR\n\t\tSTORE\tT2TOT3\n\t\tEXIT\n\t\tCAF\tV06N75\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\n\t\t\tDELVEET2\n\t\t\tS32/33.1\n\t\tSTCALL\tDELVEET2\n\t\t\tVN1645\n\t\tGOTO\n# Page 660\n\t\t\tP33/P73B\n# Page 661\n# ..... AVFLAGA/P .....\n# Page 662\n# ..... DISDVLVC .....\n\n# SUBROUTINES USED\n\n#\t S32/33.X\n#\t VNPOOH\n\n\t\tSETLOC\tCDHTAG3\n\t\tBANK\n\nDISDVLVC\tSTORE\tDELVLVC\n\t\tSTQ\tCALL\n\t\t\tNORMEX\n\t\t\tS32/33.X\n\t\tVLOAD\tMXV\n\t\t\tDELVLVC\n\t\t\t0D\n\t\tVSL1\tSXA,1\n\t\t\tVERBNOUN\n\t\tSTORE\tDELVLVC\n\t\tEXIT\n\t\tCA\tVERBNOUN\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tNORMEX\n\t\tSETLOC\tFFTAG12\n\t\tBANK\n\nV06N11\t\tVN\t0611\nV06N13\t\tVN\t0613\nV06N75\t\tVN\t0675\n\nV06N50\t\tVN\t0650\n# Page 663\n# ..... CSI/A .....\n\n# SUBROUTINES USED\n\n#\t VECSHIFT\n#\t TIMETHET\n#\t PERIAPO\n#\t SHIFTR1\n#\t INTINT2C\n#\t CDHMVR\n#\t PERIAPO1\n#\t INTINT\n#\t ACTIVE\n\n\t\tBANK\t34\n\t\tSETLOC\tCSIPROG\n\t\tBANK\n\t\tEBANK=\tSUBEXIT\n\t\tCOUNT\t34/CSI\n\n60MIN\t\t2DEC\t360000\n\nALARM/TB\tOCT\t00600\t\t# NO 1\n\t\tOCT\t00601\t\t#    2\n\t\tOCT\t00602\t\t#    3\n\t\tOCT\t00603\t\t#    4\n\t\tOCT\t00604\t\t#    5\n\t\tOCT\t00605\t\t#    6\n\t\tOCT\t00606\t\t#    7\nLOOPMX\t\t2DEC\t16\n\nINITST\t\t2DEC\t.03048 B-7\t# INITIAL DELDV = 10 FPS\n\nDVMAX1\t\t2DEC\t3.0480 B-7\t# MAXIMUM DV1 = 1000 FPS\n\nDVMAX2\t\t2DEC\t3.014472 B-7\t#                989 FPS\n\n1DPB2\t\t2DEC\t1.08-2\n\n1DPB28\t\t2DEC\t1\n\nEPSILN1\t\t2DEC\t.0003048 B-7\t# .1 FPS\n\nFIFPSDP\t\t2DEC\t-.152400 B-7\t# 50  FPS\n\nDELMAX1\t\t2DEC\t.6096000 B-7\t# 200 FPS\n\n\t\tSETLOC\tCSI/CDH\n\t\tBANK\nPMINE\t\t2DEC\t157420 B-29\t# 84 NM. - MUST BE 8 WORDS BEFORE PMINM\n# Page 664\nNICKELDP\t2DEC\t.021336 B-7\t# 7 FPS\n\nINITST1\t\t2DEC\t.03048 B-7\t# INITIAL DELDV = 10 FPS\n\nONETHTH\t\t2DEC\t.0001 B-3\n\nPMINM\t\t2DEC\t10668 B-29\t# 35000 FT - MUST BE 8 WORDS AFTER PMINE.\n\n\t\tSETLOC\tCSIPROG\n\t\tBANK\n\nCSI/A\t\tCLEAR\tSET\t\t# INITIALIZE INDICATORS\n\t\t\tS32.1F1\t\t# DVT1 HAS EXCEEDED MAX INDICATOR\n\t\t\tS32.1F2\t\t# FIRST PASS FOR NEWTON ITERATION INDICATR\n\t\tCLEAR\tSET\n\t\t\tS32.1F3A\t# 00=1ST 2 PASSES 2ND CYCLE 01=FIRST CYCLE\n\t\t\tS32.1F3B\t# 10=2ND CYCLE, 11=50 FPS STAGE 2ND CYCLE\n\t\tDLOAD\n\t\t\tZEROVEC\n\t\tSTORE\tLOOPCT\n\t\tSTORE\tCSIALRM\nCSI/B\t\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tRACT1\n\t\tABVAL\tPUSH\t\t# RA1                            B29 PL02D\n\t\tNORM\tSR1\n\t\t\tX2\t\t#                         B29-N2+ B1 PL04D\n\t\tPDVL\tABVAL\n\t\t\tRPASS3\n\t\tNORM\tBDDV\t\t# RA1/RP3                         B1 PL02D\n\t\t\tX1\n\t\tXSU,2\tSR*\t\t#                                 B2\n\t\t\tX1\n\t\t\t1,2\n\t\tDAD\tDMP\t\t# (1+(RA1/RP3))RA1        B29+B2=B31 PL00D\n\t\t\t1DPB2\n\t\tNORM\tPDDL\t\t#                                    PL02D\n\t\t\tX1\n\t\t\tRTMU\n\t\tSR1\tDDV\t\t#                        B38-B31= B7 PL00D\n\t\tSL*\tSQRT\t\t#                                 B7\n\t\t\t0 -7,1\n\t\tPDVL\tUNIT\t\t#                                    PL02D\n\t\t\tRACT1\n\t\tPDVL\tVXV\n\t\t\tUP1\n\t\tUNIT\t\t\t# UNIT(URP1 X UVP1 X URA1) = UH1\n\t\tDOT\tSL1\t\t# VA1 . UH1                       B7\n\t\t\tVACT1\n\t\tBDSU\tSTADR\t\t#                                    PL00D\n# Page 665\n\t\tSTODL\tDELVCSI\n\t\t\tINITST\t\t# 10 FPS\n\t\tSTORE\tDELDV\nCSI/B1\t\tDLOAD\tDAD\t\t# IF LOOPCT = 16\n\t\t\tLOOPCT\n\t\t\t1DPB28\n\t\tSTORE\tLOOPCT\n\t\tDSU\tAXT,2\n\t\t\tLOOPMX\n\t\t\t6\n\t\tBPL\tGOTO\n\t\t\tSCNDSOL\n\t\t\tCSI/B2\n\n\t\tSETLOC\tCSIPROG2\n\t\tBANK\n\nCSI/B2\t\tSETPD\n\t\t\t0D\n\t\tDLOAD\tABS\n\t\t\tDELVCSI\n\t\tDSU\tBMN\n\t\t\tDVMAX1\n\t\t\tCSI/B23\n\t\tAXT,2\tBON\n\t\t\t7\n\t\t\tS32.1F1\n\t\t\tSCNDSOL\n\t\tBOFF\tBON\n\t\t\tS32.1F3A\n\t\t\tCSI/B22\t\t# FLAG 3 NEQ 3\n\t\t\tS32.1F3B\n\t\t\tSCNDSOL\nCSI/B22\t\tSET\tDLOAD\n\t\t\tS32.1F1\n\t\t\tDVMAX2\n\t\tSIGN\n\t\t\tDELVCSI\n\t\tSTCALL\tDELVCSI\n\t\t\tCSI/B23\n\n\t\tSETLOC\tCSIPROG3\n\t\tBANK\n\nCSI/B23\t\tVLOAD\tPUSH\n\t\t\tRACT1\n\t\tUNIT\tPDVL\n\t\t\tUP1\n\t\tVXV\tUNIT\t\t# UNIT(URP1 X UVP1 X URA1) = UH1\n\t\tVXSC\tVSL1\n# Page 666\n\t\t\tDELVCSI\n\t\tSTORE\tDELVEET1\n\t\tVAD\tBOV\n\t\t\tVACT1\n\t\t\tCSI/B23D\nCSI/B23D\tSTCALL\tVACT4\n\t\t\tVECSHIFT\n\t\tSTOVL\tVVEC\n\t\tSET\n\t\t\tRVSW\n\t\tSTOVL\tRVEC\n\t\t\tSN359+\n\t\tSTCALL\tSNTH\t\t# ALSO CSTH\n\t\t\tTIMETHET\n\t\tSR1\tLXA,1\n\t\t\tRTX1\n\t\tSTCALL\tHAFPA1\n\t\t\tPERIAPO\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSTODL\tPOSTCSI\n\t\t\tCENTANG\n\t\tBZE\tGOTO\n\t\t\t+2\n\t\t\tCIRCL\n\t\tDLOAD\n\t\t\tECC\n\t\tDSU\tBMN\n\t\t\tONETHTH\n\t\t\tCIRCL\n\t\tDLOAD\tCALL\n\t\t\tR1\n\t\t\tSHIFTR1\n\t\tSETPD\tNORM\n\t\t\t2D\n\t\t\tX1\n\t\tPDVL\tDOT\t\t#                                    PL04D\n\t\t\tRACT1\n\t\t\tVACT4\n\t\tABS\tDDV\n\t\t\t02D\t\t# (/RDOTV/)/R1\t\tB36-B29= B7\n\t\tSL*\tDSU\n\t\t\t0,1\n\t\t\tNICKELDP\n\t\tBMN\tDLOAD\n\t\t\tCIRCL\n\t\t\tP\n\t\tSL2\tDSU\n\t\t\t1RTEB2\t\t# 1.B.2\n\t\tSTODL\t14D\n# Page 667\n\t\t\tRTSR1/MU\n\t\tSR1\tDDV\t\t# (1/ROOTMU)/R1      B-16-B29 = B-45 PL02D\n\t\tPDDL\tDMP\n\t\t\tP\n\t\t\tR1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSL4\tSL1\n\t\tSQRT\tDMP\t\t# ((P/MU)**.5)/R1    B14+B-45 = B-31 PL02D\n\t\tBOFF\tSL3\n\t\t\tCMOONFLG\n\t\t\tCSI/B3\nCSI/B3\t\tPDVL\tDOT\n\t\t\tRACT1\n\t\t\tVACT4\n\t\tSTORE\tRDOTV\n\t\tABS\n\t\tNORM\tDMP\t\t# ((P/MU)**.5)RDOTV/R1               PL02D\n\t\t\tX2\n\t\tXSU,1\tSL*\t\t#\t\t\tB-31+B36-B3 = B2\n\t\t\tX2\n\t\t\t3,1\n\t\tSTODL\t12D\n\t\t\tZEROVECS\n\t\tSTORE\t16D\n\t\tVLOAD\tUNIT\n\t\t\t12D\n\t\tSTOVL\tSNTH\t\t# ALSO STORES CSTH AND 0\n\t\t\tRACT1\n\t\tPDVL\tSIGN\n\t\t\tVACT4\n\t\t\tRDOTV\n\t\tVCOMP\tCALL\n\t\t\tVECSHIFT\n\t\tSTOVL\tVVEC\n\t\tSETGO\n\t\t\tRVSW\n\t\t\tCSINEXT\n\nSN359+\t\t2DEC\t-.000086601\n\nCS359+\t\t2DEC\t+.499999992\n\n\t\tSETLOC\tCSIPROG4\n\t\tBANK\n\nCSINEXT\t\tSTCALL\tRVEC\n\t\t\tTIMETHET\n\t\tPDDL\tBPL\n\t\t\tRDOTV\n# Page 668\n\t\t\tNTP/2\n\t\tDLOAD\tDSU\n\t\t\tHAFPA1\n\t\tPUSH\tGOTO\n\t\t\tNTP/2\nCIRCL\t\tSETPD\tDLOAD\n\t\t\t00D\n\t\t\tZEROVECS\n\t\tPUSH\nNTP/2\t\tDLOAD\tDMP\n\t\t\tNN\n\t\t\tHAFPA1\n\t\tSL\tDSU\n\t\t\t14D\n\t\tDAD\n\t\t\tTCSI\n\t\tSTORE\tTCDH\n\t\tBDSU\tAXT,2\n\t\t\tTTPI\n\t\t\t5D\n\t\tBMN\tSETPD\n\t\t\tSCNDSOL\n\t\t\t0D\n\t\tVLOAD\tPDVL\n\t\t\tVACT4\n\t\t\tRACT1\n\t\tCALL\n\t\t\tINTINT2C\n\t\tSTOVL\tRACT2\n\t\t\tVATT\n\t\tSTOVL\tVACT2\n\t\t\tVPASS1\n\t\tSETPD\tPDVL\n\t\t\t0D\n\t\t\tRPASS1\n\t\tGOTO\n\t\t\tCSINEXT1\n\n\t\tSETLOC\tCSIPROG5\n\t\tBANK\n\nCSINEXT1\tCALL\n\t\t\tINTINT2C\n\t\tSTOVL\tRPASS2\n\t\t\tVATT\n\t\tSTCALL\tVPASS2\n\t\t\tCDHMVR\n\t\tVLOAD\tSETPD\n\t\t\tRACT2\n\t\t\t0D\n# Page 669\n\t\tPDVL\tCALL\n\t\t\tVACT3\n\t\t\tPERIAPO1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSTOVL\tPOSTCDH\n\t\t\tVACT3\n\t\tSETPD\tPDVL\n\t\t\t0D\n\t\t\tRACT2\n\t\tPDDL\tPDDL\n\t\t\tTCDH\n\t\t\tTTPI\n\t\tPDDL\tSL2\n\t\t\t2PISC\n\t\tPUSH\tCALL\n\t\t\tINTINT\n\t\tCALL\n\t\t\tACTIVE\n\t\tDLOAD\n\t\t\tELEV\n\t\tSETPD\tSINE\n\t\t\t6D\n\t\tPDVL\tUNIT\n\t\t\tRACT3\n\t\tSTORE\t00D\t\t# URA3 AT 00D\n\t\tPDVL\tVXV\t\t# PL14D,PL08D\n\t\t\tUP1\n\t\tUNIT\n\t\tPDDL\tCOSINE\t\t# UNIT(URA3XUVA3XURA3) = UH3      B1 PL14D\n\t\t\tELEV\n\t\tVXSC\tSTADR\t\t# (COSLOS)(UH3)                   B2 PL08D\n\t\tSTCALL\t18D\t\t#\t\tPLUS\n\t\t\tCSINEXT2\n\n\t\tSETLOC\tCSIPROG6\n\t\tBANK\n\nCSINEXT2\tDLOAD\tVXSC\t\t# (SINLOS)(URA3) = U              B2 PL00D\n\t\tVAD\tVSL1\n\t\t\t18D\t\t#                                 B1\n\t\tPUSH\tDOT\t\t#                                    PL06D\n\t\t\tRACT3\t\t# (U . RA3) = TEMP1      B1 +B29=B30\n\t\tSL1\tPUSH\t\t#                                B29 PL08D\n\t\tDSQ\tTLOAD\t\t# TEMP1**2                       B58\n\t\t\tMPAC\n\t\tPDVL\tDOT\t\t#                                    PL11D\n\t\t\tRACT3\n\t\t\tRACT3\n\t\tTLOAD\tDCOMP\t\t# RA3.RA3\n# Page 670\n\t\t\tMPAC\n\t\tPDVL\tDOT\t\t# RP3.RP3                        B58 PL14D\n\t\t\tRPASS3\n\t\t\tRPASS3\t\t#                                    PL11D\n\t\tTAD\tTAD\t\t# TEMP1**2+RA3.RA3+RP3.RP3=TEMP2     PL08D\n\t\tBPL\tDLOAD\n\t\t\tK10RK2\n\t\t\tLOOPCT\n\t\tDSU\tAXT,2\n\t\t\t1DPB28\n\t\t\t1D\n\t\tBZE\n\t\t\tALMXITA\n\t\tDLOAD\tSR1\n\t\t\tDELDV\n\t\tSTORE\tDELDV\n\t\tBDSU\n\t\t\tDVPREV\n\t\tSTCALL\tDELVCSI\n\t\t\tCSI/B1\nK10RK2\t\tSQRT\tPUSH\t\t# TEMP3 = TEMP2**.5              B29 PL10D\n\t\tDCOMP\tDSU\n\t\t\t06D\t\t# -TEMP1-TEMP3 =K2 AT 10D\n\t\tSTODL\t10D\t\t#                                    PL08D\n\t\tDSU\tSTADR\t\t#                                    PL06D\n\t\tSTORE\t12D\t\t# -TEMP1+TEMP3 =K1 AT 12D\n\t\tABS\n\t\tSTODL\t14D\n\t\t\t10D\n\t\tABS\tDSU\n\t\t\t14D\n\t\tBMN\tDLOAD\n\t\t\tK2.\n\t\t\t12D\n\t\tSTCALL\t10D\t\t# K EQUALS K1\n\t\t\tK2.\n\n\t\tSETLOC\tCSIPROG7\n\t\tBANK\n\nK2.\t\tDLOAD\n\t\t\t10D\n\t\tVXSC\tVSL1\n\t\tVAD\tUNIT\t\t# V=RA3+KU  UNIT                  B1\n\t\t\tRACT3\n\t\tPDVL\tUNIT\t\t#                                    PL06D\n\t\t\tRPASS3\n\t\tPDVL\tUNIT\t\t#                                    PL12D\n\t\t\tVPASS3\n\t\tVXV\tPDVL\t\t# UVP3 X URP3                        PL18D\n# Page 671\n\t\t\t06D\n\t\t\t06D\n\t\tVXV\tDOT\n\t\t\t00D\n\t\tSTADR\t\t\t#                                    PL12D\n\t\tSTOVL\t12D\t\t# (URP3XV).(UVP3XURP3)=TEMP          PL06D\n\t\tDOT\tSL1\t\t#                                    PL00D\n\t\tARCCOS\tSIGN\n\t\t\t12D\t\t#                                 B0\n\t\tSR1\tPUSH\t\t# GAMMA=SIGN(TEMP)ARCOS(UNITV.URP3)  PL02D\n\t\tBON\tDLOAD\n\t\t\tS32.1F2\n\t\t\tFRSTPAS\n\t\t\t00D\t\t# NOT THE FIRST PASS OF A CYCLE\n\t\tDSU\tPDDL\t\t# GAMMA-GAMPREV                   B1 PL04D\n\t\t\tGAMPREV\n\t\t\tDELVCSI\n\t\tDSU\tNORM\t\t#                                 B7\n\t\t\tDVPREV\n\t\t\tX1\n\t\tBDDV\tPDDL\t\t# (GAM-GAMPREV)/(DV-DVPREV)   B-6+N1 PL06D\n\t\t\t02D\t\t#\t= SLOPE\n\t\t\tDELVCSI\n\t\tSTORE\tDVPREV\n\t\tBOFF\tBOFF\n\t\t\tS32.1F3A\n\t\t\tTHRDCHK\n\t\t\tS32.1F3B\n\t\t\tTHRDCHK\n\t\tDLOAD\tDMP\n\t\t\t02D\n\t\t\tGAMPREV\n\t\tBPL\tDLOAD\n\t\t\tFIFTYFPS\n\t\t\tINITST1\n\t\tSIGN\n\t\t\tDELDV\n\t\tSTORE\tDELDV\n\t\tSET\tCLEAR\n\t\t\tS32.1F3A\n\t\t\tS32.1F3B\nFRSTPAS\t\tDLOAD\n\t\t\t00D\n\t\tSTODL\tGAMPREV\n\t\t\tDELVCSI\n\t\tSTCALL\tDVPREV\n\t\t\tCSINEXT3\n\n\t\tSETLOC\tCSIPROG8\n\t\tBANK\n# Page 672\nCSINEXT3\tDSU\tCLEAR\n\t\t\tDELDV\n\t\t\tS32.1F2\n\t\tSTCALL\tDELVCSI\n\t\t\tCSI/B1\nTHRDCHK\t\tBON\tBON\n\t\t\tS32.1F3A\n\t\t\tNEWTN\n\t\t\tS32.1F3B\n\t\t\tNEWTN\nFIFTYFPS\tDLOAD\tSIGN\n\t\t\tFIFPSDP\n\t\t\t04D\n\t\tSIGN\n\t\t\tGAMPREV\n\t\tSTORE\tDELDV\n\t\tDCOMP\tDAD\n\t\t\tDELVCSI\n\t\tSTODL\tDELVCSI\n\t\t\t00D\n\t\tSET\tSET\n\t\t\tS32.1F3B\n\t\t\tS32.1F3A\n\t\tSTCALL\tGAMPREV\n\t\t\tCSI/B2\nNEWTN\t\tDLOAD\tNORM\n\t\t\t04D\n\t\t\tX2\n\t\tBDDV\tXSU,1\n\t\t\t00D\n\t\t\tX2\n\t\tSR*\n\t\t\t0,1\n\t\tSTODL\tDELDV\n\t\t\t00D\n\t\tSTORE\tGAMPREV\n\t\tDLOAD\tABS\n\t\t\tDELDV\n\t\tPUSH\tDSU\t\t#                                    PL08D\n\t\t\tEPSILN1\n\t\tBMN\tDLOAD\n\t\t\tCSI/SOL\n\t\tDSU\tBMN\n\t\t\tDELMAX1\n\t\t\tCSISTEP\n\t\tDLOAD\tSIGN\n\t\t\tDELMAX1\n\t\t\tDELDV\n\t\tSTORE\tDELDV\nCSISTEP\t\tDLOAD\tDSU\n# Page 673\n\t\t\tDELVCSI\n\t\t\tDELDV\n\t\tSTCALL\tDELVCSI\n\t\t\tCSI/B1\nCSI/SOL\t\tDLOAD\tAXT,2\n\t\t\tPOSTCSI\n\t\t\t2\n\t\tLXA,1\tGOTO\n\t\t\tRTX1\n\t\t\tCSINEXT4\n\n\t\tSETLOC\tCSIPROG9\n\t\tBANK\n\nCSINEXT4\tDSU*\tBMN\n\t\t\tPMINE -2,1\n\t\t\tSCNDSOL\n\t\tAXT,2\tDLOAD\n\t\t\t3\n\t\t\tPOSTCDH\n\t\tDSU*\tBMN\n\t\t\tPMINE -2,1\n\t\t\tSCNDSOL\n\t\tDLOAD\tDSU\n\t\t\tTCDH\n\t\t\tTCSI\n\t\tSTORE\tT1TOT2\n\t\tAXT,2\tDSU\n\t\t\t4\n\t\t\t600SEC\n\t\tBMN\tAXT,2\n\t\t\tSCNDSOL\n\t\t\t5\n\t\tDLOAD\tDSU\n\t\t\tTTPI\n\t\t\tTCDH\n\t\tSTORE\tT2TOT3\n\t\tDSU\tBPL\n\t\t\t600SEC\n\t\t\tP32/P72C\nSCNDSOL\t\tBON\tBOFF\n\t\t\tS32.1F3A\n\t\t\tALMXIT\n\t\t\tS32.1F3B\n\t\t\tALMXIT\n\t\tSXA,2\tDLOAD\n\t\t\tCSIALRM\n\t\t\tZEROVECS\n\t\tCLEAR\tSET\n\t\t\tS32.1F1\n# Page 674\n\t\t\tS32.1F2\n\t\tCLEAR\tCLEAR\n\t\t\tS32.1F3A\n\t\t\tS32.1F3B\n\t\tSTCALL\tLOOPCT\n\t\t\tCSI/B\n# Page 675\n# ..... ADVANCE .....\n\n# SUBROUTINES USED\n\n#\t PRECSET\n#\t ROTATE\n\n\t\tSETLOC\tCDHTAG3\n\t\tBANK\n\nADVANCE\t\tSTQ\tDLOAD\n\t\t\tSUBEXIT\n\t\t\tTIG\n\t\tSTCALL\tTDEC1\n\t\t\tPRECSET\n\t\tSET\tVLOAD\n\t\t\tXDELVFLG\n\t\t\tVPASS3\n\t\tSTORE\tVPASS2\n\t\tSTOVL\tVPASS1\n\t\t\tRPASS3\n\t\tSTORE\tRPASS2\n\t\tSTORE\tRPASS1\n\t\tUNIT\tVXV\n\t\t\tVPASS1\n\t\tUNIT\n\t\tSTOVL\tUP1\n\t\t\tRACT3\n\t\tSTCALL\tRTIG\n\t\t\tROTATE\n\t\tSTORE\tRACT2\n\t\tSTOVL\tRACT1\n\t\t\tVACT3\n\t\tSTCALL\tVTIG\n\t\t\tROTATE\n\t\tSTORE\tVACT2\n\t\tSTCALL\tVACT1\n\t\t\tSUBEXIT\n# Page 676\n# ..... ROTATE .....\n\n\t\tSETLOC\tCDHTAG\n\t\tBANK\n\nROTATE\t\tPUSH\tPUSH\n\t\tDOT\tVXSC\n\t\t\tUP1\n\t\t\tUP1\n\t\tVSL2\tBVSU\n\t\tUNIT\tPDVL\n\t\tABVAL\tVXSC\n\t\tVSL1\tRVQ\n# Page 677\n# ..... INTINTNA .....\n\n\t\tSETLOC\tCDHTAG2\n\t\tBANK\n\nINTINT2C\tPDDL\tPDDL\n\t\t\tTCSI\n\t\t\tTCDH\n\t\tPDDL\tPUSH\n\t\t\tTWOPI\n\t\tGOTO\n\t\t\tINTINT\nINTINT3P\tPDDL\tPDDL\n\t\t\tTCDH\n\t\t\tTTPI\n\t\tPDDL\tPUSH\n\t\t\tZEROVECS\n\t\tGOTO\n\t\t\tINTINT\n# Page 678\n# ..... S32/33.1 .....\n\n# SUBROUTINES USED\n#\t S32/33.X\n\n\t\tSETLOC\tCSI/CDH\n\t\tBANK\n\nS32/33.1\tSTQ\tAXT,1\n\t\t\tSUBEXIT\n\t\tVN\t0681\n\t\tCALL\n\t\t\tDISDVLVC\n\t\tCALL\n\t\t\tS32/33.X\n\t\tVLOAD\tVXM\n\t\t\tDELVLVC\n\t\t\t0D\n\t\tVSL1\n\t\tSTORE\tDELVSIN\n\t\tPUSH\tABVAL\n\t\tSTOVL\tDELVSAB\n\t\tGOTO\n\t\t\tSUBEXIT\n# Page 679\n# ..... S32/33.X .....\n\n\t\tSETLOC\tCDHTAGS\n\t\tBANK\n\nS32/33.X\tSETPD\tVLOAD\n\t\t\t6D\n\t\t\tUP1\n\t\tVCOMP\tPDVL\n\t\t\tRACT1\n\t\tUNIT\tVCOMP\n\t\tPUSH\tVXV\n\t\t\tUP1\n\t\tVSL1\n\t\tSTORE\t0D\n\t\tRVQ\n# Page 680\n# ..... CDHMVR .....\n\n# SUBROUTINES USED\n\n#\t VECSHIFT\n#\t TIMETHET\n#\t SHIFTR1\n\n\t\tSETLOC\tCDHTAG\n\t\tBANK\n\nCDHMVR\t\tSTQ\tVLOAD\n\t\t\tSUBEXIT\n\t\t\tRACT2\n\t\tPUSH\tUNIT\n\t\tSTOVL\tUNVEC\t\t# UR SUB A\n\t\t\tRPASS2\n\t\tUNIT\tDOT\n\t\t\tUNVEC\n\t\tPUSH\tSL1\n\t\tSTODL\tCSTH\n\t\tDSQ\tPDDL\n\t\t\tDP1/4\n\t\tSR2\tDSU\n\t\tSQRT\tSL1\n\t\tPDVL\tVCOMP\n\t\tVXV\n\t\t\tRPASS2\n\t\tDOT\tPDDL\n\t\t\tUP1\n\t\tSIGN\tSTADR\n\t\tSTOVL\tSNTH\n\t\t\tRPASS2\n\t\tPDVL\tCALL\n\t\t\tVPASS2\n\t\t\tVECSHIFT\n\t\tSTOVL\tVVEC\n\t\tCLEAR\n\t\t\tRVSW\n\t\tSTCALL\tRVEC\n\t\t\tTIMETHET\n\t\tLXA,2\tVSL*\n\t\t\tRTX2\n\t\t\t0,2\n\t\tSTORE\t18D\n\t\tDOT\tSL1R\n\t\t\tUNVEC\n\t\tPDVL\tABVAL\t\t# 0D = V SUB PV\n\t\tSL*\tPDVL\n\t\t\t0,2\n# Page 681\n\t\t\tRACT2\n\t\tABVAL\tPDDL\t\t# 2D = LENGTH OF R SUB A\n\t\tDSU\n\t\t\t02D\n\t\tSTODL\tDIFFALT\t\t# DELTA H IN METERS\t\tB+29\n\t\t\tR1A\n\t\tNORM\tPDDL\t\t# 2 - R V**/MU\t\t\t\t04D\n\t\t\tX1\n\t\t\tR1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSR1R\tDDV\n\t\tSL*\tPUSH\n\t\t\t0 -5,1\n\t\tDSU\tPDDL\t\t# A SUB A\t\t\tB+29 \t04D\n\t\t\tDIFFALT\n\t\tSR2\tDDV\t\t# A SUB P\t\t\tB+31\n\t\t\t04D\t\t#\t\t\t\tB+2\n\t\tPUSH\tSQRT\t\t# A SUB P/A SUB A\t\t\t06D\n\t\tDMPR\tDMP\n\t\t\t06D\n\t\t\t00D\n\t\tSL3R\tPDDL\t\t# V SUB A V METERS/CS\t\tB+7 \t08D\n\t\t\t02D\t\t# R SUB A MAGNITUDE\t\tB+29\n\t\tNORM\tPDDL\n\t\t\tX1\n\t\t\tRTMU\n\t\tSR1\tDDV\t\t# 2MU \t\t\t\tB+38\n\t\tSL*\tPDDL\t\t# 2 MU/R SUBAA\t\t\tB+14 \t10D\n\t\t\t0 -5,1\n\t\t\t04D\t\t# ASUBA\t\t\t\tB+29\n\t\tNORM\tPDDL\n\t\t\tX2\n\t\t\tRTMU\n\t\tSR1\tDDV\n\t\tSL*\tBDSU\n\t\t\t0 -6,2\t\t# 2U/R - U/A\t\t B+14 (METERS/CS)SQ\n\t\tPDDL\tDSQ\t\t#\t\t\t\t\t10D\n\t\t\t08D\n\t\tBDSU\tSQRT\n\t\tPDVL\tVXV\t\t# SQRT(MU(2/R SUB A-1/A SUB A)-VSUBA2)\t10D\n\t\t\tUP1\n\t\t\tUNVEC\n\t\tUNIT\tVXSC\n\t\t\t10D\n\t\tPDVL\tVXSC\n\t\t\tUNVEC\n\t\t\t08D\n\t\tVAD\tVSL1\n\t\tSTADR\n# Page 682\n\t\tSTORE\tVACT3\n\t\tVSU\n\t\t\tVACT2\n\t\tSTCALL\tDELVEET2\t# DELTA VCDH - REFERENCE COORDINATES\n\t\t\tSUBEXIT\n# Page 683\n# ..... COMPTGO .....\n\n# SUBROUTINES USED\n\n#\t CLOKTASK\n#\t 2PHSCHNG\n\n\t\tBANK\t35\n\t\tSETLOC\tCSI/CDH\n\t\tBANK\n\n\t\tEBANK=\tRTRN\n\n\t\tCOUNT*\t$$/P3575\n"
  },
  {
    "path": "Comanche055/P34-35_P74-75.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP34-35_P74-75.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 460-504\n# Contact:      Onno Hommes <ohommes@cmu.edu>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-10 OH\tBatch 2 Assignment Comanche Transcription\n#\t\t2009-05-23 RSB\tIn DISPLAYE, corrected a CADR GOFLASHR\n#\t\t\t\tto CADR GOFLASH.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n\n# Page 460\n# TRANSFER PHASE INITIATION (TPI) PROGRAMS (P34 AND P74)\n# MOD NO -1\t\t\tLOG SECTION -- P32-P35, P72-P75\n# MOD BY WHITE, P.\t\tDATE: 1 JUNE 67\n#\n# PURPOSE\n#\t(1)\tTO CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL CONDITIONS\n#\t\tREQUIRED BY THE ACTIVE VEHICLE FOR EXECUTION OF THE TRANSFER\n#\t\tPHASE INITIATION (TPI) MANEUVER, GIVEN --\n#\t\t(A)\tTIME OF IGNITION TIG (TPI) OR THE ELEVATION ANGLE (E) OF\n#\t\t\tTHE ACTIVE/PASSIVE VEHICLE LOS AT TIG (TPI).\n#\t\t(B)\tCENTRAL ANGLE OF TRANSFER (CENTANG) FROM TIG (TPI) TO\n#\t\t\tINTERCEPT TIME (TIG (TPF)).\n#\t(2)\tTO CALCULATE TIG (TPI) GIVEN E OR E GIVEN TIG (TPI).\n#\t(3)\tTO CALCULATE THESE PARAMETERS BASED UPON MANEUVER DATA\n#\t\tAPPROVED AND KEYED INTO THE DSKY BY THE ASTRONAUT.\n#\t(4)\tTO DISPLAY TO THE ASTRONAUT AND THE GROUND CERTAIN DEPENDENT\n#\t\tVARIABLES ASSOCIATED WITH THE MANEUVER FOR APPROVAL BY THE\n#\t\tASTRONAUT/GROUND.\n#\t(5)\tTO STORE THE TPI TARGET PARAMETERS FOR USE BY THE DESIRED\n#\t\tTHRUSTING PROGRAM.\n#\n# ASSUMPTIONS\n#\t(1)\tLM ONLY -- THIS PROGRAM IS BASED UPON PREVIOUS COMPLETION OF\n#\t\tTHE CONSTANT DELTA ALTITUDE (CDH) PROGRAM (P33/P73).\n#\t\tTHEREFORE --\n#\t\t(A)\tAT A SELECTED TPI TIME (NOW IN STORAGE) THE LINE OF SIGHT\n#\t\t\tBETWEEN THE ACTIVE AND PASSIVE VEHICLES WAS SELECTED TO BE\n#\t\t\tA PRESCRIBED ANGLE (E) (NOW IN STORAGE) FROM THE\n#\t\t\tHORIZONTAL PLANE DEFINED BY THE ACTIVE VEHICLE POSITION.\n#\t\t(B)\tTHE TIME BETWEEN CDH IGNITION AND TPI IGNITION WAS\n#\t\t\tCOMPUTED TO BE GREATER THAN 10 MINUTES.\n#\t\t(C)\tTHE VARIATION OF THE ALTITUDE DIFFERENCE BETWEEN THE\n#\t\t\tORBITS WAS MINIMIZED.\n#\t\t(D)\tTHE PERICENTER ALTITUDES OF ORBITS FOLLOWING CSI AND\n#\t\t\tCDH WERE COMPUTED TO BE GREATER THAN 35,000 FT FOR LUNAR\n# Page 461\n#\t\t\tORBIT OR 85 NM FOR EARTH ORBIT.\n#\t\t(E)\tTHE CSI AND CDH MANEUVERS WERE ASSUMED TO BE PARALLEL TO\n#\t\t\tTHE PLANE OF THE PASSIVE VEHICLE ORBIT.  HOWEVER, CREW\n#\t\t\tMODIFICATION OF DELTA V (LV) COMPONENTS MAY HAVE RESULTED\n#\t\t\tIN AN OUT-OF-PLANE MANEUVER.\n#\t(2)\tSTATE VECTOR UPDATED BY P27 ARE DISALLOWED DURING AUTOMATIC\n#\t\tSTATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION (4)).\n#\t(3)\tTHIS PROGRAM MUST BE DONE OVER A TRACKING STATION FOR REAL\n#\t\tTIME GROUND PARTICIPATION IN DATA INPUT AND OUTPUT.  COMPUTED\n#\t\tVARIABLES MAY BE STORED FOR LATER VERIFICATION BY THE GROUND.\n#\t\tTHESE STORAGE CAPABILITIES ARE LIMITED ONLY TO THE PARAMETERS\n#\t\tFOR ONE THRUSTING MANEUVER AT A TIME EXCEPT FOR CONCENTRIC\n#\t\tFLIGHT PLAN MANEUVER SEQUENCES.\n#\t(4)\tTHE RENDEZVOUS RADAR MAY OR MAY NOT BE USED TO UPDATE THE LM\n#\t\tOR CSM STATE VECTORS FOR THIS PROGRAM.  IF RADAR USE IS\n#\t\tDESIRED THE RADAR WAS TURNED ON AND LOCKED ON THE CSM BY\n#\t\tPREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS WILL BE MADE\n#\t\tAUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN ENABLED BY THE\n#\t\tTRACK AND UPDATE FLAGS (SEE P20).  THE RENDEZVOUS TRACKING\n#\t\tMARK COUNTER IS ZEROED BY THE SELECTION OF P20 AND AFTER EACH\n#\t\tTHRUSTING MANEUVER.\n#\t(5)\tTHE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.\n#\t(6)\tTHE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS --\n#\n#\t\t\tACTIVE VEHICLE FLAG -- DESIGNATES THE VEHICLE WHICH IS\n#\t\t\tDOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH\n#\t\t\tCALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF\n#\t\t\tEACH RENDEZVOUS PRE-THRUSTING PROGRAM.\n#\n#\t\t\tFINAL FLAG -- SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS\n#\t\t\tSELECTED THE FINAL MANEUVER COMPUTATION CYCLE.\n#\n#\t\t\tEXTERNAL DELTA V FLAG -- DESIGNATES THE TYPE OF STEERING\n#\t\t\tREQUIRED FOR EXECUTION OF THIS MANEUVER BY THE THRUSTING\n#\t\t\tPROGRAM SELECTED AFTER COMPLETION OF THIS PROGRAM.\n#\n#\t(7)\tONCE THE PARAMETERS REQUIRED FOR COMPUTATION OF THE MANEUVER\n#\t\tHAVE BEEN COMPLETELY SPECIFIED, THE VALUE OF THE ACTIVE\n#\t\tVEHICLE CENTRAL ANGLE OF TRANSFER IS COMPUTED AND STORED.\n#\t\tTHIS NUMBER WILL BE AVAILABLE FOR DISPLAY TO THE ASTRONAUT\n#\t\tTHROUGH THE USE OF V06N52.\n#\n#\t\tTHE ASTRONAUT WILL CALL THIS DISPLAY TO VERIFY THAT THE\n#\t\tCENTRAL ANGLE OF TRANSFER OF THE ACTIVE VEHICLE IS NOT WITHIN\n# Page 462\n#\t\t170 TO 190 DEGREES.  IF THE ANGLE IS WITHIN THIS ZONE THE\n#\t\tASTRONAUT SHOULD REASSES THE INPUT TARGETING PARAMETERS BASED\n#\t\tUPON DELTA V AND EXPECTED MANEUVER TIME.\n#\t(8)\tTHIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY --\n#\n#\t\t\tP34 IF THIS VEHICLE IS ACTIVE VEHICLE.\n#\n#\t\t\tP74 IF THIS VEHICLE IS PASSIVE VEHICLE.\n#\n# INPUT\n#\t(1)\tTTPI\tTIME OF THE TPI MANEUVER.\n#\t(2)\tELEV\tDESIRED LOS ANGLE AT TPI\n#\t(3)\tCENTANG\tORBITAL CENTRAL ANGLE OF THE PASSIVE VEHICLE DURING\n#\t\t\tTRANSFER FROM TPI TO TIME OF INTERCEPT\n#\n# OUTPUT\n#\t(1)\tTRKMKCNT\tNUMBER OF MARKS\n#\t(2)\tTTOGO\t\tTIME TO GO\n#\t(3)\t+MGA\t\tMIDDLE GIMBAL ANGLE\n#\t(4)\tTTPI\t\tCOMPUTED TIME OF TPI MANEUVER\n#\t\t OR\n#\t\tELEV\t\tCOMPUTED LOS ANGLE AT TPI\n#\t(5)\tPOSTTPI\t\tPERIGEE ALTITUDE AFTER THE TPI MANEUVER\n#\t(6)\tDELVTPI\t\tMAGNITUDE OF DELTA V AT TPI\n#\t(7)\tDELVTPF\t\tMAGNITUDE OF DELTA V AT INTERCEPT\n#\t(8)\tDVLOS\t\tDELTA VELOCITY AT TPI -- LINE OF SIGHT\n#\t(9)\tDELVLVC\t\tDELTA VELOCITY AT TPI -- LOCAL VERTICAL COORDINATES\n#\n# DOWNLINK\n#\t(1)\tTTPI\t\tTIME OF TPI MANEUVER\n#\t(2)\tTIG\t\tTIME OF TPI MANEUVER\n#\t(3)\tELEV\t\tDESIRED LOS ANGLE AT TPI\n#\t(4)\tCENTANG\t\tORBITAL CENTRAL ANGLE OF THE PASSIVE VEHICLE DURING\n#\t\t\t\tTRANSFER FROM TPI TO TIME OF INTERCEPT\n#\t(5)\tDELVEET3\tDELTA VELOCITY AT TPI -- REFERENCE COORDINATES\n#\t(6)\tTPASS4\t\tTIME OF INTERCEPT\n#\n# COMMUNICATION TO THRUSTING PROGRAMS\n#\t(1)\tTIG\t\tTIME OF THE TPI MANEUVER\n#\t(2)\tRTARG\t\tOFFSET TARGET POSITION\n#\t(3)\tTPASS4\t\tTIME OF INTERCEPT\n#\t(4)\tXDELVFLG\tRESET TO INDICATE LAMBERT (AIMPOINT) VG COMPUTATION\n#\n# SUBROUTINES USED\n#\tAVFLAGA\n# Page 463\n#\tAVFLAGP\n#\tVNPOOH\n#\tDISPLAYE\n#\tSELECTMU\n#\tPRECSET\n#\tS33/34.1\n#\tALARM\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n#\tTIMETHET\n#\tS34/35.2\n#\tPERIAPO1\n#\tSHIFTR1\n#\tS34/35.5\n#\tVN1645\n\n\t\tSETLOC\tCSI/CDH\n\t\tBANK\n\t\tEBANK=\tSUBEXIT\n\t\tCOUNT\t35/P3474\n\nP34\t\tTC\tAVFLAGA\n\t\tTC\tP34/P74A\nP74\t\tTC\tAVFLAGP\nP34/P74A\tTC\tP20FLGON\t# SET UPDATFLG, TRACKFLG\n\t\tCAF\tV06N37\t\t# TTPI\n\t\tTC\tVNPOOH\t\t# Onno: The scans look like O not zero\n\t\tTC\tINTPRET\n\t\tSSP\tEXIT\n\t\t\tNN\n\t\t\t0\n\t\tTC\tDISPLAYE\t# ELEV AND CENTANG\n\t\tTC\tINTPRET\n\t\tCLEAR\tDLOAD\n\t\t\tETPIFLAG\n\t\t\tTTPI\n\t\tSTODL\tTIG\n\t\t\tELEV\n\t\tBZE\tSET\n\t\t\tP34/P74B\n\t\t\tETPIFLAG\nP34/P74B\tCALL\n\t\t\tSELECTMU\nDELELO\t\tEQUALS\t26D\nP34/P74C\tDLOAD\tSET\n\t\t\tZEROVECS\n\t\t\tITSWICH\n\t\tBON\tCLEAR\n\t\t\tETPIFLAG\n# Page 464\n\t\t\tSWCHSET\n\t\t\tITSWICH\nSWCHSET\t\tSTORE\tNOMTPI\nINTLOOP\t\tDLOAD\tDAD\n\t\t\tTTPI\n\t\t\tNOMTPI\n\t\tSTCALL\tTDEC1\n\t\t\tPRECSET\n\t\tCALL\n\t\t\tS33/34.1\n\t\tBZE\tEXIT\n\t\t\tSWCHCLR\n\t\tTC\tALARM\n\t\tOCT\t611\n\t\tCAF\tV05N09\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\tP34/P74A\t# PROCEED\n\t\tTC\t-7\t\t# V32\n\nSWCHCLR\t\tBONCLR\tBON\n\t\t\tITSWICH\n\t\t\tINTLOOP\n\t\t\tETPIFLAG\n\t\t\tP34/P74D\t# DISPLAY TTPI\n\t\tEXIT\n\t\tTC\tDISPLAYE\t# DISPLAY ELEV AND CENTANG\n\t\tTC\tP34/P74E\nP34/P74D\tEXIT\n\t\tCAF\tV06N37\t\t# TTPI\n\t\tTC\tVNPOOH\nP34/P74E\tTC\tINTPRET\n\t\tSETPD\tDLOAD\n\t\t\t0D\n\t\t\tRTX1\n\t\tSTODL\tX1\n\t\t\tCENTANG\n\t\tPUSH\tCOS\n\t\tSTODL\tCSTH\n\t\tSIN\n\t\tSTOVL\tSNTH\n\t\t\tRPASS3\n\t\tVSR*\n\t\t\t0,2\n\t\tSTOVL\tRVEC\n\t\t\tVPASS3\n\t\tVSR*\tSET\n\t\t\t0,2\n\t\t\tRVSW\n# Page 465\n\t\tSTCALL\tVVEC\n\t\t\tTIMETHET\n\t\tDLOAD\n\t\t\tTTPI\n\t\tSTORE\tINTIME\t\t# FOR INITVEL\n\t\tDAD\n\t\t\tT\t\t# RENDEZVOUS TIME\n\t\tSTCALL\tTPASS4\t\t# FOR INITVEL\n\t\t\tS34/35.2\n\t\tVLOAD\tABVAL\n\t\t\tDELVEET3\n\t\tSTOVL\tDELVTPI\n\t\t\tVPASS4\n\t\tVSU\tABVAL\n\t\t\tVTPRIME\n\t\tSTOVL\tDELVTPF\n\t\t\tRACT3\n\t\tPDVL\tCALL\n\t\t\tVIPRIME\n\t\t\tPERIAPO1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSTODL\tPOSTTPI\n\t\t\tTTPI\n\t\tSTORE\tTIG\n\t\tEXIT\n\t\tCAF\tV06N58\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tS34/35.5\n\t\tCALL\n\t\t\tVN1645\n\t\tGOTO\n\t\t\tP34/P74C\n\n# Page 466\n# RENDEZVOUS MID-COURSE MANEUVER PROGRAMS (P35 AND P75)\n# MOD NO -1\t\t\tLOG SECTION -- P32-P35, P72-P75\n# MOD BY WHITE, P.\t\tDATE:  1 JUNE 67\n#\n# PURPOSE\n#\t(1) \tTO CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL CONDITIONS\n#\t\tREQUIRED BY THE ACTIVE VEHICLE FOR EXECUTION OF THE NEXT\n#\t\tMID-COURSE CORRECTION OF THE TRANSFER PHASE OF AN ACTIVE\n#\t\tVEHICLE RENDEZVOUS.\n#\t(2)\tTO DISPLAY TO THE ASTRONAUT AND THE GROUND CERTAIN DEPENDENT\n#\t\tVARIABLES ASSOCIATED WITH THE MANEUVER FOR APPROVAL BY THE\n#\t\tASTRONAUT/GROUND.\n#\t(3)\tTO STORE THE TPM TARGET PARAMETERS FOR USE BY THE DESIRED\n#\t\tTHRUSTING PROGRAM.\n#\n# ASSUMPTIONS\n#\t(1)\tTHE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.\n#\t(2)\tSTATE VECTOR UPDATES BY P27 ARE DISALLOWED DURING AUTOMATIC\n#\t\tSTATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION (3)).\n#\t(3)\tTHE RENDEZVOUS RADAR IS ON AND IS LOCKED ON THE CSM.  THIS WAS\n#\t\tDONE DURING PREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS\n#\t\tWILL BE MADE AUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN\n#\t\tENABLED BY THE TRACK AND UPDATE FLAGS (SEE P20).  THE\n#\t\tRENDEZVOUS TRACKING MARK COUNTER IS ZEROED BY THE SELECTION OF\n#\t\tP20 AND AFTER EACH THRUSTING MANEUVER.\n#\t(4)\tTHE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS --\n#\n#\t\t\tACTIVE VEHICLE FLAG -- DESIGNATES THE VEHICLE WHICH IS\n#\t\t\tDOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH\n#\t\t\tCALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF\n#\t\t\tEACH RENDEZVOUS PRE-THRUSTING PROGRAM.\n#\n#\t\t\tFINAL FLAG -- SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS\n#\t\t\tSELECTED THE FINAL MANEUVER COMPUTATION CYCLE.\n#\n#\t\t\tEXTERNAL DELTA V FLAG -- DESIGNATES THE TYPE OF STEERING\n#\t\t\tREQUIRED FOR EXECUTION OF THIS MANEUVER BY THE THRUSTING\n#\t\t\tPROGRAM SELECTED AFTER COMPLETION OF THIS PROGRAM.\n#\n#\t(5)\tTHE TIME OF INTERCEPT (T(INT)) WAS DEFINED BY PREVIOUS\n#\t\tCOMPLETION OF THE TRANSFER PHASE INITIATION (TPI) PROGRAM\n#\t\t(P34/P74) AND IS PRESENTLY AVAILABLE IN STORAGE.\n# Page 467\n#\t(6)\tONCE THE PARAMETERS REQUIRED FOR COMPUTATION OF THE MANEUVER\n#\t\tHAVE BEEN COMPLETELY SPECIFIED, THE VALUE OF THE ACTIVE\n#\t\tVEHICLE CENTRAL ANGLE OF TRANSFER IS COMPUTED AND STORED.\n#\t\tTHIS NUMBER WILL BE AVAILABLE FOR DISPLAY TO THE ASTRONAUT\n#\t\tTHROUGH THE USE OF V06N52\n#\n#\t\tTHE ASTRONAUT WILL CALL THIS DISPLAY TO VERIFY THAT THE\n#\t\tCENTRAL ANGLE OF TRANSFER OF THE ACTIVE VEHICLE IS NOT WITHIN\n#\t\t170 TO 190 DEGREES.  IF THE ANGLE IS WITHIN THIS ZONE THE\n#\t\tASTRONAUT SHOULD REASSESS THE INPUT TARGETING PARAMETERS BASED\n#\t\tUPON DELTA V AND EXPECTED MANEUVER TIME.\n#\t(7)\tTHIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY --\n#\n#\t\t\tP35 IF THIS VEHICLE IS ACTIVE VEHICLE.\n#\n#\t\t\tP75 IF THIS VEHICLE IS PASSIVE VEHICLE.\n#\n# INPUT\n#\t(1)\tTPASS4\t\tTIME OF INTERCEPT -- SAVED FROM P34/P74\n#\n# OUTPUT\n#\t(1)\tTRKMKCNT\tNUMBER OF MARKS\n#\t(2)\tTTOGO\t\tTIME TO GO\n#\t(3)\t+MGA\t\tMIDDLE GIMBAL ANGLE\n#\t(4)\tDVLOS\t\tDELTA VELOCITY AT MID -- LINE OF SIGHT\n#\t(5)\tDELVLVC\t\tDELTA VELOCITY AT MID -- LOCAL VERTICAL COORDINATES\n#\n# DOWNLINK\n#\t(1)\tTIG\t\tTIME OF THE TPM MANEUVER\n#\t(2)\tDELVEET3\tDELTA VELOCITY AT TPM -- REFERENCE COORDINATES\n#\t(3)\tTPASS4\t\tTIME OF INTERCEPT\n#\n# COMMUNICATION TO THRUSTING PROGRAMS\n#\t(1)\tTIG\t\tTIME OF THE TPM MANEUVER\n#\t(2)\tRTARG\t\tOFFSET TARGET POSITION\n#\t(3)\tTPASS4\t\tTIME OF INTERCEPT\n#\t(4)\tXDELVFLG\tRESET TO INDICATE LAMBERT (AIMPOINT) VG COMPUTATION.\n#\n# SUBROUTINES USED\n#\tAVFLAGA\n#\tAVFLAGP\n#\tLOADTIME\n#\tSELECTMU\n#\tPRECSET\n#\tS34/35.1\n#\tS34/35.2\n# Page 468\n#\tS34/35.5\n#\tVN1645\n\n\t\tCOUNT\t35/P3575\n\t\tEBANK=\tKT\n\nP35\t\tTC\tAVFLAGA\n\t\tEXTEND\n\t\tDCA\tATIGINC\n\t\tTC\tP35/P75A\nP75\t\tTC\tAVFLAGP\n\t\tEXTEND\n\t\tDCA\tPTIGINC\nP35/P75A\tDXCH\tKT\n\t\tTC\tP20FLGON\t# SET UPDATFLG, TRACKFLG\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tSELECTMU\nP35/P75B\tRTB\n\t\t\tLOADTIME\n\t\tSTORE\tTSTRT\n\t\tDAD\n\t\t\tKT\n\t\tSTORE\tTIG\n\t\tSTORE\tINTIME\t\t# FOR INITVEL\n\t\tSTCALL\tTDEC1\n\t\t\tPRECSET\t\t# ADVANCE BOTH VEHICLES\n\t\tCALL\n\t\t\tS34/35.1\t# GET NORM AND LOS FOR TRANSFORM\n\t\tCALL\n\t\t\tS34/35.2\t# GET DELTA V(LV)\n\t\tCALL\n\t\t\tS34/35.5\n\t\tCALL\n\t\t\tVN1645\n\t\tGOTO\n\t\t\tP35/P75B\n# Page 469\n# ***** S33/34.1 *****\n\nS33/34.1\tSTQ\tSSP\n\t\t\tNORMEX\n\t\t\tTITER\n\t\tOCT\t40000\n\t\tDLOAD\tSETPD\n\t\t\tMAX250\n\t\t\t0D\n\t\tSTOVL\tSECMAX\n\t\t\tRACT3\n\t\tSTOVL\tRAPREC\n\t\t\tVACT3\n\t\tSTOVL\tVAPREC\n\t\t\tRPASS3\n\t\tSTOVL\tRPPREC\n\t\t\tVPASS3\n\t\tSTORE\tVPPREC\nELCALC\t\tCALL\n\t\t\tS34/35.1\t# NORMAL AND LOS\n\t\tVXV\tPDVL\n\t\t\tRACT3\t\t# (RA*VA)*RA 0D\n\t\tPDVL\tUNIT\t\t# ULOS AT 6D\n\t\t\tRACT3\n\t\tPDVL\tVPROJ\t\t# XCHNJ AND UP\n\t\tVSL2\tBVSU\n\t\t\tULOS\n\t\tUNIT\tPDVL\t\t# UP AT 0D\n\t\tDOT\tPDVL\t\t# UP.UN*RA AT 0D\n\t\t\t0D\t\t# UP IN MPAC\n\t\tDOT\tSIGN\n\t\t\tULOS\n\t\tSL1\tACOS\n\t\tPDVL\tDOT\t\t# EA AT 0D\n\t\t\tULOS\n\t\t\tRACT3\n\t\tBPL\tDLOAD\n\t\t\tTESTY\n\t\t\tDPPOSMAX\n\t\tDSU\tPUSH\nTESTY\t\tBOFF\tDLOAD\n\t\t\tITSWICH\n\t\t\tELEX\n\t\t\tDELEL\n\t\tSTODL\tDELELO\n\t\tDSU\n\t\t\tELEV\n\t\tSTORE\tDELEL\n\t\tABS\tDSU\n\t\t\tELEPS\n# Page 470\n\t\tBMN\n\t\t\tTIMEX\t\t# COMMERCIALS EVERYWHERE\nFIGTIME\t\tSLOAD\tSR1\n\t\t\tTITER\n\t\tBHIZ\tLXA,1\n\t\t\tNORMEX\t\t# TOO MANY ITERATIONS\n\t\t\tMPAC\n\t\tSXA,1\tVLOAD\n\t\t\tTITER\n\t\t\tRPASS3\n\t\tUNIT\tPDDL\n\t\t\t36D\n\t\tPDVL\tUNIT\n\t\t\tRACT3\n\t\tPDDL\n\t\tPDDL\tPUSH\n\t\t\t36D\n\t\tBDSU\n\t\t\t12D\n\t\tSTODL\t30D\t\t# RP-RA MAGNITUDES\n\t\t\tDPHALF\n\t\tDSU\tPUSH\n\t\t\tELEV\n\t\tSIGN\tBMN\n\t\t\t30D\n\t\t\tNORMEX\n\t\tDLOAD\tCOS\n\t\tDMP\tDDV\n\t\t\t14D\n\t\t\t12D\n\t\tDCOMP\t\t\t# SINCE COS(180-A)=-COS A\n\t\tSTORE\t28D\n\t\tABS\tBDSU\n\t\t\tDPHALF\n\t\tBMN\tVLOAD\n\t\t\tNORMEX\n\t\t\tUNRM\n\t\tVXV\tUNIT\n\t\t\t6D\t\t# UN*RA\n\t\tDOT\tDMP\n\t\t\tVACT3\n\t\t\t12D\n\t\tPDVL\tVXV\n\t\t\t0D\n\t\t\tVPASS3\n\t\tVXV\tUNIT\n\t\t\t0D\t\t# (RP*VP)*RP\n\t\tDOT\tDMP\n\t\t\tVPASS3\n\t\t\t14D\n# Page 471\n\t\tBDSU\n\t\tNORM\tPDVL\t\t# NORMALIZED WA-WP 12D\n\t\t\tX1\n\t\t\t6D\n\t\tVXV\tDOT\n\t\t\t0D\n\t\t\tUNRM\t\t# RA*RP.UN 14D\n\t\tPDVL\tDOT\n\t\t\t0D\n\t\t\t6D\n\t\tSL1\tACOS\n\t\tSIGN\n\t\tDSU\tDAD\t\t# ALPHA PI\n\t\t\tDPHALF\n\t\t\tELEV\n\t\tPDDL\tACOS\n\t\t\t28D\n\t\tBDSU\tSIGN\n\t\t\tDPHALF\n\t\t\t30D\t\t# CONTAINS RP-RA\n\t\tDAD\n\t\tDMP\tDDV\n\t\t\tTWOPI\n\t\tDMP\n\t\tSL*\tDMP\n\t\t\t0 -3,1\n\t\tPUSH\tABS\n\t\tDSU\tBMN\n\t\t\tSECMAX\n\t\t\tOKMAX\n\t\tDLOAD\tSIGN\t\t# REPLACE TIME WITH MAX TIME SIGNED\n\t\t\tSECMAX\n\t\tPUSH\nOKMAX\t\tSLOAD\tBPL\t\t# TEST FIRST ITERATION\n\t\t\tTITER\n\t\t\tREPETE\n\t\tSSP\tDLOAD\n\t\t\tTITER\n\t\tOCT\t37777\n\t\tGOTO\n\t\t\tSTORDELT\nREPETE\t\tDLOAD\tDMP\n\t\t\tDELEL\n\t\t\tDELELO\n\t\tBPL\tDLOAD\n\t\t\tNEXTES\n\t\t\tSECMAX\n\t\tDMP\n\t\t\tTHIRD\n\t\tSTODL\tSECMAX\n# Page 472\n\t\tABS\tSR1\t\t# CROSSED OVER SOLUTION\n\t\tDCOMP\tGOTO\t\t# DT=(-SIGN(DTO)//DT//)/2\n\t\t\tRESIGN\nNEXTES\t\tDLOAD\tABS\n\t\t\tDELEL\n\t\tPDDL\tABS\n\t\t\tDELELO\n\t\tDSU\n\t\tBMN\tDLOAD\n\t\t\tREVERS\t\t# WRONG DIRECTION\n\t\tABS\nRESIGN\t\tSIGN \tGOTO\n\t\t\tDELTEEO\n\t\t\tSTORDELT\nREVERS\t\tDLOAD\tDCOMP\n\t\t\tDELTEEO\n\t\tPUSH\tSR1\n\t\tSTORE\tDELTEEO\n\t\tDAD\n\t\tGOTO\n\t\t\tADTIME\nSTORDELT\tSTORE\tDELTEEO\nADTIME\t\tDAD\n\t\t\tNOMTPI\t\t# SUM OF DELTA T:S\n\t\tSTORE\tNOMTPI\n\t\tVLOAD\tPDVL\n\t\t\tVAPREC\n\t\t\tRAPREC\n\t\tCALL\n\t\t\tGOINT\n\t\tCALL\n\t\t\tACTIVE\t\t# STORE NEW RACT3 VACT3\n\t\tVLOAD\tPDVL\n\t\t\tVPPREC\n\t\t\tRPPREC\n\t\tCALL\n\t\t\tGOINT\n\t\tCALL\n\t\t\tPASSIVE\t\t# STORE NEW RPASS3 VPASS3\n\t\tGOTO\n\t\t\tELCALC\nELEX\t\tDLOAD\tDAD\n\t\t\tTTPI\n\t\t\tNOMTPI\n\t\tSTODL\tTTPI\n\t\tBON\n\t\t\tETPIFLAG\n\t\t\tTIMEX\n\t\tSTORE\tELEV\nTIMEX\t\tDLOAD\tGOTO\n# Page 473\n\t\t\tZEROVECS\n\t\t\tNORMEX\n\n# Page 474\n# ***** S34/35.1 *****\n\n# COMPUTE UNIT NORMAL AND LINE OF SIGHT VECTORS GIVEN THE ACTIVE AND\n# PASSIVE POS AND VEL AT TIME T3\n\t\tSETLOC\tS3435LOC\n\t\tBANK\n\nS34/35.1\tVLOAD\tVSU\n\t\t\tRPASS3\n\t\t\tRACT3\n\t\tUNIT\tPUSH\n\t\tSTOVL\tULOS\n\t\t\tRACT3\n\t\tVXV\tUNIT\n\t\t\tVACT3\n\t\tSTORE\tUNRM\n\t\tRVQ\n\n# Page 475\n# ***** S34/35.2 *****\n\n# ADVANCE PASSIVE VEH TO RENDEZVOUS TIME AND GET REQ VEL FROM LAMBERT\n\t\tSETLOC\tCSI/CDH\n\t\tBANK\n\nS34/35.2 \tSTQ\tVLOAD\n\t\t\tSUBEXIT\n\t\t\tVPASS3\n\t\tPDVL\tPDDL\n\t\t\tRPASS3\n\t\t\tINTIME\n\t\tPDDL\tPDDL\n\t\t\tTPASS4\n\t\t\tTWOPI\t\t# CONIC\n\t\tPDDL\tBHIZ\n\t\t\tNN\n\t\t\tS3435.23\n\t\tDLOAD\tPDDL\n\t\t\tZEROVECS\t# PRECISION\nS3435.23\tCALL\n\t\t\tINTINT\t\t# GET TARGET VECTOR\nS3435.25\tSTOVL\tRTARG\n\t\t\tVATT\n\t\tSTOVL\tVPASS4\n\t\t\tRTARG\n# COMPUTE PHI = PI + (ACOS(UNIT RA.UNIT RP) - PI) SIGN(RA*RP.U)\n\t\tUNIT\tPDVL\t\t# UNIT RP\n\t\t\tRACT3\n\t\tUNIT\tPUSH\t\t# UNIT RA\n\t\tVXV\tDOT\n\t\t\t0D\n\t\t\tUNRM\t\t# RA*RP.U\n\t\tPDVL\n\t\tDOT\tSL1\t\t# UNIT RA.UNIT RP\n\t\t\t0D\n\t\tACOS\tSIGN\n\t\tBPL\tDAD\n\t\t\tNOPIE\n\t\t\tDPPOSMAX\t# REASONABLE TWO PI\nNOPIE\t\tSTODL\tACTCENT\n\t\t\tTPASS4\n\t\tDSU\n\t\t\tINTIME\n\t\tSTORE\tDELLT4\n\t\tSLOAD\tSETPD\n\t\t\tNN\t\t# NUMBER OF OFFSETS\n\t\t\t0D\n\t\tPDDL\tPDVL\n\t\t\tEPSFOUR\n# Page 476\n\t\t\tRACT3\n\t\tSTOVL\tRINIT\n\t\t\tVACT3\n\t\tSTCALL\tVINIT\n\t\t\tINITVEL\n\t\tCALL\n\t\t\tLOMAT\n\t\tVLOAD\tMXV\n\t\t\tDELVEET3\n\t\t\t0D\n\t\tVSL1\n\t\tSTCALL\tDELVLVC\n\t\t\tSUBEXIT\n\n# Page 477\n# ***** S34/35.3 *****\n\nS34/35.3\tSTQ\tCALL\n\t\t\tNORMEX\n\t\t\tLOMAT\t\t# GET MATRIX IN PUSH LIST\n\t\tVLOAD\tVXM\n\t\t\tDELVLVC\t\t# NEW DEL V TPI\n\t\t\t0D\n\t\tVSL1\n\t\tSTORE\tDELVEET3\t# SAVE FOR TRANSFORM\n\t\tVAD\tPDVL\n\t\t\tVACT3\t\t# NEW V REQ\n\t\t\tRACT3\n\t\tPDDL\tPDDL\n\t\t\tTIG\n\t\t\tTPASS4\n\t\tPDDL\tPUSH\n\t\t\tDPPOSMAX\n\t\tCALL\t\t\t# INTEG. FOR NEW TARGET VEC\n\t\t\tINTINT\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTORE\tRTARG\nNOVRWRT\t\tVLOAD\tPUSH\n\t\t\tULOS\n\t\tVXV\tVCOMP\n\t\t\tUNRM\n\t\tUNIT\tPUSH\n\t\tVXV\tVSL1\n\t\t\tULOS\n\t\tPDVL\n\t\tPDVL\tMXV\n\t\t\tDELVEET3\n\t\t\t0D\n\t\tVSL1\n\t\tSTCALL\tDVLOS\n\t\t\tNORMEX\n\n# Page 478\n# ***** S34/35.4 *****\n\nS34/35.4\tSTQ\tSETPD\t\t# NO ASTRONAUT OVERWRITE\n\t\t\tNORMEX\n\t\t\t0D\n\t\tGOTO\n\t\t\tNOVRWRT\n\n# Page 479\n# ***** LOMAT *****\n\nLOMAT\t\tVLOAD\tVCOMP\n\t\t\tUNRM\n\t\tSTOVL\t6D\t\t# Y\n\t\t\tRACT3\n\t\tUNIT\tVCOMP\n\t\tSTORE\t12D\n\t\tVXV\tVSL1\n\t\t\tUNRM\t\t# Z*-Y\n\t\tSTORE\t0D\n\t\tSETPD\tRVQ\n\t\t\t18D\nGOINT\t\tPDDL\tPDDL\t\t# DO\n\t\t\tZEROVECS\t#\tNOT\n\t\t\tNOMTPI\t\t#\n\t\tPUSH\tPUSH\t\t#\t\tORDER OR INSERT BEFORE INTINT\nINTINT\t\tSTQ\tCALL\n\t\t\tRTRN\n\t\t\tINTSTALL\n\t\tCLEAR\tDLOAD\n\t\t\tINTYPFLG\n\t\tBZE\tSET\n\t\t\t+2\n\t\t\tINTYPFLG\n\t\tDLOAD\tSTADR\n\t\tSTODL\tTDEC1\n\t\tSET\tLXA,2\n\t\t\tMOONFLAG\n\t\t\tRTX2\n\t\tBON\tCLEAR\n\t\t\tCMOONFLG\n\t\t\tALLSET\n\t\t\tMOONFLAG\nALLSET\t\tSTOVL\tTET\n\t\tVSR*\n\t\t\t0,2\n\t\tSTOVL\tRCV\n\t\tVSR*\n\t\t\t0,2\n\t\tSTCALL\tVCV\n\t\t\tINTEGRVS\n\t\tVLOAD\tGOTO\n\t\t\tRATT\n\t\t\tRTRN\n\n# Page 480\n# ***** S34/35.5 *****\n#\n# SUBROUTINES USED\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n#\tS34/35.3\n#\tS34.35.4\n#\tVNPOOH\n\nS34/35.5\tSTQ\tBON\n\t\t\tSUBEXIT\n\t\t\tFINALFLG\n\t\t\tFLAGON\n\t\tSET\tGOTO\n\t\t\tUPDATFLG\n\t\t\tFLAGOFF\nFLAGON\t\tVLOAD\n\t\t\tDELVLVC\n\t\tSTORE\tDVLOS\t\t# SAVE DELTA V BEFORE DISPLAY\n\t\tEXIT\n \t\tCAF\tV06N81\n \t\tTC\tVNPOOH\n \t\tTC\tINTPRET\n \t\tVLOAD\tVSU\t\t# TEST FOR OVERWRITE OF COMPUTED\n \t\t\tDELVLVC\t\t#                      DELTA V\n \t\t\tDVLOS\n \t\tABVAL\tBZE\n \t\t\tNOCHG\t\t# NO OVERWRITE\n \t\tCALL\n \t\t\tS34/35.3\nNOCHG\t\tCLEAR\tVLOAD\n\t\t\tXDELVFLG\n\t\t\tDELVEET3\n\t\tSTORE\tDELVSIN\nFLAGOFF\t\tCALL\n\t\t\tS34/35.4\n\t\tEXIT\n\t\tCAF\tV06N59\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tSUBEXIT\n\n# Page 481\n# ***** VN1645 *****\n#\n# SUBROUTINES USED\n#\tP3XORP7X\n#\tGET+MGA\n#\tBANKCALL\n#\tDELAYJOB\n#\tCOMPTGO\n#\tGOFLASHR\n#\tGOTOPOOH\n#\tFLAGUP\n\nVN1645\t\tSTQ\tDLOAD\n\t\t\tSUBEXIT\n\t\t\tDP-.01\n\t\tSTORE\t+MGA\t\t# MGA = -.01\n\t\tBOFF\tDLOAD\n\t\t\tFINALFLG\n\t\t\tGET45\n\t\t\tDP-.01\n\t\tDAD\n\t\t\tDP-.01\n\t\tSTORE\t+MGA\t\t# MGA = -.02\n\t\tBOFF\tEXIT\n\t\t\tREFSMFLG\n\t\t\tGET45\n\t\tTC\tP3XORP7X\n\t\tTC\t+2\t\t# P3X\n\t\tTC\tGET45 +1\t# P7X\n\t\tTC\tINTPRET\n\t\tVLOAD\tPUSH\n\t\t\tDELVSIN\n\t\tCALL\t\t\t# COMPUTE MGA\n\t\t\tGET+MGA\nGET45\t\tEXIT\n\t\tTC\tCOMPTGO\t\t# INITIATE TASK TO UPDATE TTOGO\n\t\tCA\tSUBEXIT\n\t\tTS\tQSAVED\n\t\tCAF\t1SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tCAF\tV16N45\t\t# TRKMKCNT, TTOGO, +MGA\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tKILCLOCK\t# TERMINATE\n\t\tTC\tN45PROC\t\t# PROCEED\n\t\tTC\tCLUPDATE\t# RECYCLE -- RETURN FOR INITIAL COMPUTATION\nKILCLOCK\tCA\tZ\n\t\tTS\tDISPDEX\n# Page 482\n\t\tTC\tGOTOPOOH\nN45PROC\t\tCS\tFLAGWRD2\n\t\tMASK\tBIT6\n\t\tEXTEND\n\t\tBZF\tKILCLOCK\t# FINALFLG IS SET -- FLASH V37 -- AWAIT NEW PGM\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\t\tTC\tUPFLAG\t\t# SET\n\t\tADRES\tFINALFLG\t# FINALFLG\nCLUPDATE\tCA\tZ\n\t\tTS\tDISPDEX\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\t\tTC\tINTPRET\n\t\tCLEAR\tGOTO\n\t\t\tUPDATFLG\n\t\t\tQSAVED\n\n# Page 483\n# ***** DISPLAYE *****\n#\n# SUBROUTINES USED\n#\tBANKCALL\n#\tGOFLASHR\n#\tGOTOPOOH\n#\tBLANKET\n#\tENDOFJOB\n\nDISPLAYE\tEXTEND\n\t\tQXCH\tNORMEX\n\t\tCAF\tV06N55\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTC\tNORMEX\n\t\tTCF\t-5\n\n# Page 484\n# ***** P3XORP7X *****\n\nP3XORP7X\tCAF\tHIGH9\n\t\tMASK\tMODREG\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tINCR\tQ\n\t\tRETURN\n\n# ***** VNPOOH *****\n#\n# SUBROUTINES USED\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n\n\t\tSETLOC P30SUBS\n\t\tBANK\n\nVNPOOH\t\tEXTEND\n\t\tQXCH\tRTRN\n\t\tTS\tVERBNOUN\n\t\tCAF\tVNBANK\t\t# ***** THIS ROUTINE MUST REMAIN IN\n\t\tXCH\tFBANK\t\t#       FIXED-FIXED *****\n\t\tTS\tTBASE5\t\t# * WATCH OUT *\n\n\t\tCA\tVERBNOUN\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTCF\t+2\nVNBANK\t\tTC\t-5\n\n\t\tCA\tTBASE5\n\t\tTS\tFBANK\n\t\tTC\tRTRN\n\n# Page 485\n# ***** CONSTANTS *****\n\nV06N37\t\tVN\t0637\nV06N55\t\tVN\t0655\nV06N58\t\tVN\t0658\nV06N59\t\tVN\t0659\nV06N81\t\tVN\t0681\nV16N45\t\tVN\t1645\n\t\tSETLOC\tCSI/CDH\n\t\tBANK\n\nTWOPI\t\t2DEC\t6.283185307 B-4\nMAX250\t\t2DEC\t25 E3 B-28\t# RSB 2004 added the B-28. OH 2009 leave?\nTHIRD\t\t2DEC\t.333333333\nELEPS\t\t2DEC\t.27777777 E-3\nDECTWO\t\tOCT\t2\nDP-.01\t\tOCT\t77777\t\t# CONSTANTS\n\t\tOCT\t61337\t\t# ADJACENT\t-.01 FOR MGA DSP\nEPSFOUR\t\t2DEC\t.0416666666\n\n# Page 486\n# ***** INITVEL *****\n# MOD NO -1\t\t\tLOG SECTION -- P34-P35, P74-P75\n# MOD BY WHITE, P.\t\tDATE:  21 NOV 67\n#\n# FUNCTIONAL DESCRIPTION\n#\tTHIS SUBROUTINE COMPUTES THE REQUIRED INITIAL VELOCITY VECTOR FOR\n#\tA TRAJECTORY OF SPECIFIC TRANSFER TIME BETWEEN SPECIFIED INITIAL\n#\tAND TARGET POSITIONS.  THE TRAJECTORY MAY BE EITHER CONIC OR\n#\tPRECISION DEPENDING ON AN INPUT PARAMETER (NAMELY, NUMBER OF\n#\tOFFSETS).  IN ADDITION, IN THE PRECISION TRAJECTORY CASE, THE\n#\tSUBROUTINE ALSO COMPUTES AN OFFSET TARGET VECTOR, TO BE USED\n#\tDURING PURE-CONIC CROSS-PRODUCT STEERING.  THE OFFSET TARGET\n#\tVECTOR IS THE TERMINAL POSITION VECTOR OF A CONIC TRAJECTORY WHICH\n#\tHAS THE SAME INITIAL STATE AS A PRECISION TRAJECTORY WHOSE\n#\tTERMINAL POSITION VECTOR IS THE SPECIFIED TARGET VECTOR.\n#\n#\tIN ORDER TO AVOID THE INHERENT SINGULARITIES IN THE 180 DEGREE\n#\tTRANSFER CASE WHEN THE (TRUE OR OFFSET) TARGET VECTOR MAY BE\n#\tSLIGHTLY OUT OF THE ORBITAL PLANE, THIS SUBROUTINE ROTATES THIS\n#\tVECTOR INTO A PLANE DEFINED BY THE INPUT INITIAL POSITION VECTOR\n#\tAND ANOTHER INPUT VECTOR (USUALLY THE INITIAL VELOCITY VECTOR),\n#\tWHENEVER THE INPUT TARGET VECTOR LIES INSIDE A CONE WHOSE VERTEX\n#\tIS THE ORIGIN OF COORDINATES, WHOSE AXIS IS THE 180 DEGREE\n#\tTRANSFER DIRECTION, AND WHOSE CONE ANGLE IS SPECIFIED BY THE USER.\n#\n#\tTHE LAMBERT SUBROUTINE IS UTILIZED FOR THE CONIC COMPUTATIONS AND\n#\tTHE COASTING INTEGRATION SUBROUTINE IS UTILIZED FOR THE PRECISION\n#\tTRAJECTORY COMPUTATIONS.\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tINITVEL\n#\tL+2\t(RETURN -- ALWAYS)\n#\n# INPUT\n#\t(1)\tRINIT\t\tINITIAL POSITION RADIUS VECTOR\n#\t(2)\tVINIT\t\tINITIAL POSITION VELOCITY VECTOR\n#\t(3)\tRTARG\t\tTARGET POSITION RADIUS VECTOR\n#\t(4)\tDELLT4\t\tDESIRED TIME OF FLIGHT FROM RINIT TO RTARG\n#\t(5)\tINTIME\t\tTIME OF RINIT\n#\t(6)\t0D\t\tNUMBER OF ITERATIONS OF LAMBERT/INTEGRVS\n#\t(7)\t2D\t\tANGLE TO 180 DEGREES WHEN ROTATION STARTS\n#\t(8)\tRTX1\t\t-2 FOR EARTH, -10D FOR LUNAR\n#\t(9)\tRTX2\t\tCOORDINATE SYSTEM ORIGIN -- 0 FOR EARTH, 2 FOR LUNAR\n#\tPUSHLOC SET AT 4D\n#\n# Page 487\n# OUTPUT\n#\t(1)\tRTARG\t\tOFFSET TARGET POSITION VECTOR\n#\t(2)\tVIPRIME\t\tMANEUVER VELOCITY REQUIRED\n#\t(3)\tVTPRIME\t\tVELOCITY AT TARGET AFTER MANEUVER\n#\t(4)\tDELVEET3\tDELTA VELOCITY REQUIRED FOR MANEUVER\n#\n# SUBROUTINES USED\n#\tLAMBERT\n#\tINTSTALL\n#\tINTEGRVS\n\n\t\tSETLOC\tINTVEL\n\t\tBANK\n\n\t\tCOUNT\t11/INITV\nINITVEL\t\tSET\t\t\t# COGA GUESS NOT AVAILABLE\n\t\t\tGUESSW\nHAVEGUES\tVLOAD\tSTQ\n\t\t\tRTARG\n\t\t\tNORMEX\n\t\tSTORE\tRTARG1\n\t\tSLOAD\tBHIZ\n\t\t\tRTX2\n\t\t\tINITVEL1\n\t\tVLOAD\tVSL2\n\t\t\tRINIT\t\t# B29\n\t\tSTOVL\tRINIT\t\t# B27\n\t\t\tVINIT\t\t# B7\n\t\tVSL2\n\t\tSTOVL\tVINIT\t\t# B5\n\t\t\tRTARG1\n\t\tVSL2\n\t\tSTORE\tRTARG1\n\n# INITIALIZATION\n\nINITVEL1\tSSP\tDLOAD\t\t# SET ITCTR TO -1,LOAD MPAC WITH E4 (PL 2D)\n\t\t\tITCTR\n\t\t\t0 -1\n\t\tCOSINE\tSR1\t\t# CALCULATE COSINE (E4) (+2)\n\t\tSTODL\tCOZY4\t\t# SET COZY4 TO COSINE (E4) (PL 0D)\n\t\tLXA,2\tSXA,2\n\t\t\tMPAC\n\t\t\tVTARGTAG\t# SET VTARGTAG TO 0D (SP)\n\t\tVLOAD\n\t\t\tRINIT\n\t\tSTOVL\tR1VEC\t\t# R1VEC EQ RINIT\n\t\t\tRTARG1\n# Page 488\n\t\tSTODL\tR2VEC\t\t# R2VEC EQ RTARG\n\t\t\tDELLT4\n\t\tSTORE\tTDESIRED\t# TDESIRED EQ DELLT4\n\t\tSETPD\tVLOAD\n\t\t\t0D\t\t# INITIALIZE PL TO 0D\n\t\t\tRINIT\t\t# MPAC EQ RINIT (+29)\n\t\tUNIT\tPUSH\t\t# UNIT(RI) (+1)\t\t(PL 6D)\n\t\tVXV\tUNIT\n\t\t\tVINIT\t\t# MPAC EQ UNIT(RI) X VI (+8)\n\t\tSTOVL\tUN\n\t\t\tRTARG1\n\t\tUNIT\tDOT\t\t# TEMP=URT.URI (+2)\t(PL 0D)\n\t\tDAD\tCLEAR\n\t\t\tCOZY4\n\t\t\tNORMSW\n\t\tSTORE\tCOZY4\nINITVEL2\tBPL\tSET\n\t\t\tINITVEL3\t# UN CALCULATED IN LAMBERT\n\t\t\tNORMSW\n\n# ROTATE RC INTO YC PLANE -- SET UNIT NORMAL TO YC\n\n\t\tVLOAD\tPUSH\t\t#\t\t                   (PL 6D)\n\t\t\tR2VEC\t\t# RC TO 6D (+29)\n\t\tABVAL\tPDVL\t\t# RC TO MPAC, ABVAL(RC) (+29) TO OD(PL 2D)\n\t\tPUSH\tVPROJ\t\t#                                  (PL 8D)\n\t\t\tUN\n\t\tVSL2\tBVSU\n\t\tUNIT\tVXSC\t\t#                                  (PL 0D)\n\t\tVSL1\n\t\tSTORE\tR2VEC\n\t\tTLOAD\tSLOAD\n\t\t\tZEROVEC\n\t\t\tITCTR\n\t\tBPL\tVLOAD\n\t\t\tINITVEL3\n\t\t\tR2VEC\n\t\tSTORE\tRTARG1\nINITVEL3\tDLOAD\tPDVL\t\t#\t\t\t\t(PL 2D)\n\t\t\tMUEARTH\t\t# POSITIVE VALUE\n\t\t\tR2VEC\n\t\tUNIT\tPDVL\t\t# 2D = UNIT(R2VEC)\t\t(PL 8D)\n\t\t\tR1VEC\n\t\tUNIT\tPUSH\t\t# 8D = UNIT(R1VEC)\t\t(PL 14D)\n\t\tVXV\tVCOMP\t\t# -N = UNIT(R2VEC) X UNIT(R1VEC)\n\t\t\t2D\n\t\tPUSH\t\t\t#\t\t\t\t(PL 20D)\n\t\tLXA,1\tDLOAD\n\t\t\tRTX1\n\t\t\t18D\n\t\tBMN\tINCR,1\n# Page 489\n\t\t\t+2\n\t\tDEC\t-8\n\t\tINCR,1\tSLOAD\n\t\t\t10D\n\t\t\tX1\n\t\tBHIZ\tVLOAD\t\t#\t\t\t(PL 14D)\n\t\t\t+2\n\t\tVCOMP\tPUSH\t\t#\t\t\t(PL 20 D)\n\t\tVLOAD\t\t\t#\t\t\t(PL 14D)\n\t\tVXV\tDOT\t\t#\t\t\t(PL 2D)\n\t\tBPL\tDLOAD\t\t#\t\t\t(PL 0D)\n\t\t\tINITVEL4\n\t\tDCOMP\tPUSH\t\t#\t\t\t(PL 2D)\nINITVEL4\tLXA,2\tSXA,2\n\t\t\t0D\n\t\t\tGEOMSGN\n\n# SET INPUTS UP FOR LAMBERT\n\n\t\tLXA,1\tCALL\n\t\t\tRTX1\n#  OPERATE THE LAMBERT CONIC ROUTINE (COASTFLT SUBROUTINE)\n\n\t\t\tLAMBERT\n\n# ARRIVED AT SOLUTION IS GOOD ENOUGH ACCORDING TO SLIGHTLY WIDER BOUNDS.\n\n\t\tCLEAR\tVLOAD\n\t\t\tGUESSW\n\t\t\tVVEC\n\n# STORE CALCULATED INITIAL VELOCITY REQUIRED IN VIPRIME\n\n\t\tSTODL\tVIPRIME\t\t# INITIAL VELOCITY REQUIRED (+7)\n\n# IF NUMIT IS ZERO, CONTINUE AT INITVELB, OTHERWISE\n# SET UP INPUTS FOR ENCKE INTEGRATION (INTEGRVS).\n\n\t\t\tVTARGTAG\n\t\tBHIZ\tCALL\n\t\t\tINITVEL7\n\t\t\tINTSTALL\n\t\tSLOAD\tCLEAR\n\t\t\tRTX2\n\t\t\tMOONFLAG\n\t\tBHIZ\tSET\n\t\t\tINITVEL5\n\t\t\tMOONFLAG\nINITVEL5\tVLOAD\n\t\t\tRINIT\n\t\tSTORE\tR1VEC\n# Page 490\n\t\tSTOVL\tRCV\n\t\t\tVIPRIME\n\t\tSTODL\tVCV\n\t\t\tINTIME\n\t\tSTORE\tTET\n\t\tDAD\tCLEAR\n\t\t\tDELLT4\n\t\t\tINTYPFLG\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRVS\n\t\tVLOAD\n\t\t\tVATT1\n\t\tSTORE\tVTARGET\n\n# IF ITERATION COUNTER (ITCTR) EQ NO. ITERATIONS (NUMIT), CONTINUE AT\n# INITVELC, OTHERWISE REITERATE LAMBERT AND ENCKE\n\n\t\tLXA,2\tINCR,2\n\t\t\tITCTR\n\t\t\t1D\t\t# INCREMENT ITCTR\n\t\tSXA,2\tXSU,2\n\t\t\tITCTR\n\t\t\tVTARGTAG\n\t\tSLOAD\tBHIZ\t\t# IF SP(MPAC) EQ 0, CONTINUE AT INITVELC\n\t\t\tX2\n\t\t\tINITVEL6\n\n# OFFSET CONIC TARGET VECTGOR\n\n\t\tVLOAD\tVSU\n\t\t\tRTARG1\n\t\t\tRATT1\n\t\tVAD\n\t\t\tR2VEC\n\t\tSTODL\tR2VEC\n\t\t\tCOZY4\n\t\tGOTO\n\t\t\tINITVEL2\t# CONTINUE ITERATING AT INITVEL2\n\n# COMPUTE THE DELTA VELOCITY\n\nINITVEL6\tVLOAD\n\t\t\tR2VEC\n\t\tSTORE\tRTARG1\nINITVEL7\tVLOAD\tVSU\n\t\t\tVIPRIME\n\t\t\tVINIT\n\t\tSTOVL\tDELVEET3\t# DELVEET3 = VIPRIME-VINIT (+7)\n\t\t\tVTARGET\n\t\tSTORE\tVTPRIME\n\t\tSLOAD\tBHIZ\n\t\t\tRTX2\n# Page 491\n\t\t\tINITVELX\n\t\tVLOAD\tVSR2\n\t\t\tVTPRIME\n\t\tSTOVL\tVTPRIME\n\t\t\tVIPRIME\n\t\tVSR2\n\t\tSTOVL\tVIPRIME\n\t\t\tRTARG1\n\t\tVSR2\n\t\tSTOVL\tRTARG1\n\t\t\tDELVEET3\n\t\tVSR2\n\t\tSTORE\tDELVEET3\nINITVELX\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tRTARG1\n\t\tSTCALL\tRTARG\n\t\t\tNORMEX\n\n# ***** END OF INITVEL ROUTINE *****\n\n# Page 492\n# ***** MIDGIM *****\n# MOD NO. 0, BY WILLMAN, SUBROUTINE RENDGUID, LOG P34-P35, P74-P75\n# REVISION 03, 17 FEB 67\n#\n# IF THE ACTIVE VEHICLE IS DOING THE COMPUTATION, MIDGIM COMPUTES\n# THE POSITIVE MIDDLE GIMBAL ANGLE OF THE ACTIVE VEHICLE TO THE INPUT\n# DELTA VELOCITY VECTOR (0D IN PUSY LIST), OTHERWISE\n# MIDGIM CONVERTS THE INPUT DELTA VELOCITY VECTOR FROM INERTIAL COORDIN-\n# ATES TO LOCAL VERTICAL COORDINATES OF THE ACTIVE VEHICLE.\n#\n# ** INPUTS **\n#   NAME     MEANING\t\t\t\t\t  \tUNITS/SCALING/MODE\n#   AVFLAG   INT FLAG -- 0 IS CSM ACTIVE, 1 IS LEM ACTIVE\tBIT\n#   COMPUTER INT FLAG -- 0 IS LEM COMPUTER, 1 IS CSM COMPUTER\tBIT\n#   RINIT    ACTIVE VEHICLE RADIUS VECTOR\t\t\tMETERS/CSEC (+7) VT\n#   VINIT    ACTIVE VEHICLE VELOCITY VECTOR\t\t\tMETERS/CSEC (+7) VT\n#   0D(PL)   ACTIVE VEHICLE DELTA VELOCITY VECTOR\t\tMETERS/CSEC (+7) VT\n#\n# ** OUTPUTS **\n#   NAME     MEANING\t\t\t\t\t\tUNITS/SCALING/MODE\n#   +MGA     + MIDDLE GIMBAL ANGLE\t\t\t\tREVOLUTIONS (+0) DP\n#   DELVLVC  DELTA VELOCITY VECTOR IN LV COORD.\t\t\tMETERS/CSEC (+7) VT\n#   MGLVFLAG INT FLAG: 0 IS +MGA COMUTED, 1 IS DELVLVC COMP.\tBIT\n#\n# ** CALLING SEQUENCE **\n#\tL \tCALL\n#\tL+1\t\tMIDGIM\n#\tL+2\t(RETURN -- ALWAYS)\n#\n# ** NO SUBROUTINES CALLED **\n#\n# ** DEBRIS -- ERASABLE TEMPORARY USAGE **\n#\tA,Q,L, PUSH LIST, MPAC.\n#\n# ** ALARMS -- NONE **\n\n# Page 493\n# MIDDLE GIMBAL ANGLE COMPUTATION\n\t\tSETLOC\tMIDDGIM\n\t\tBANK\n\n\t\tCOUNT*\t$$/MIDG\n\nHALFREV\t\t2DEC\t1 B-1\n\nMIDGIM\t\tBON\tBOFF\n\t\t\tAVFLAG\n\t\t\tMIDGIM1\n\t\t\tCOMPUTER\n\t\t\tGET.LVC\n\n# COMPUTE +MGA IF AVFLAG AND COMPUTER HAVE OPPOSITE VALUES.\n\nGET+MGA\t\tVLOAD\tUNIT\t\t# (PL 0D) V (+7) TO MPAC UNITIZE UV (+1)\n\t\tDOT\tSL1\t\t# DOT UV WITH Y(STABLE MEMBER) AND RESCALE\n\t\t\tREFSMMAT +6\t# FROM +2 TO +1 FOR ASIN ROUTINE\n\t\tARCSIN\tBPL\n\t\t\tSETMGA\n\t\tDAD\tDAD\t\t# CONVERT -MGA TO +MGA BY\n\t\t\tHALFREV\t\t# ADDING ONE REVOLUTION\n\t\t\tHALFREV\nSETMGA\t\tSTORE\t+MGA\n\t\tCLR\tRVQ\t\t# CLEAR MGLVFLAG TO INDICATE +MGA CALC\n\t\t\tMGLVFLAG\t# AND EXIT\n\nMIDGIM1\t\tBOFF\n\t\t\tCOMPUTER\n\t\t\tGET+MGA\n\n# COMPUTE DELVLVC IF AVFLAG AND COMPUTER HAVE SAME VALUES\n\nGET.LVC\t\tVLOAD\tUNIT\t\t# (PL 6D) R (+29) IN MPAC UNITZE UR\n\t\t\tRINIT\n\t\tVCOMP\t\t\t# U(-R)\n\t\tSTORE\t18D\t\t# U(-R) TO 18D\n\t\tVXV\tUNIT\t\t# U(-R)*V EQ V*U(R), U(V*R)\n\t\t\tVINIT\n\t\tSTORE\t12D\t\t# U(V*R) TO 12D\n\t\tVXV\tUNIT\t\t# U(V*R)*U(-R), U((V*R)*(-R))\n\t\t\t18D\n\t\tSTOVL\t6D\t\t# TRANSFORMATION MATRIX IS IN 6D (+1)\n\t\t\t0D\t\t# DELTA V (+7) IN 0D\n\t\tMXV\tVSL1\t\t# CONVERT FROM INER COOR TO LV COOR (+8)\n\t\t\t6D\t\t# AND SCALE +7 IN MPAC\n\t\tSTORE\tDELVLVC\t\t# STORE IN DELVLVC (+7(\n\t\tSET\tRVQ\t\t# SET MGLVFLAG TO INDICATE LVC CALC\n\t\t\tMGLVFLAG\t# AND EXIT\n\n# ***** END OF MIDGIM ROUTINE *****\n\n# Page 494\nSELECTMU\tAXC,1\tAXT,2\n\t\t\t2D\n\t\t\t0D\n\t\tBOFF\n\t\t\tCMOONFLG\n\t\t\tSETMUER\n\t\tAXC,1\tAXT,2\n\t\t\t10D\n\t\t\t2D\nSETMUER\t\tDLOAD*\tSXA,1\n\t\t\tMUTABLE +4,1\n\t\t\tRTX1\n\t\tSTODL*\tRTSR1/MU\n\t\t\tMUTABLE -2,1\n\t\tBOFF\tSR\n\t\t\tCMOONFLG\n\t\t\tRTRNMU\n\t\t\t6D\nRTRNMU\t\tSTORE\tRTMU\n\t\tSXA,2\tCLEAR\n\t\t\tRTX2\n\t\t\tFINALFLG\n\t\tGOTO\n\t\t\tVN1645\n\n# Page 495\n# ***** PERIAPO *****\n# MOD NO -1       LOG SECTION - P34-P35, P74-P75\n# MOD BY WHITE.P  DATE  18JAN68\n#\n# FUNCTIONAL DESCRIPTION\n#\tTHIS SUBROUTINE COMPUTES THE TWO BODY APOCENTER AND PERICENTER\n#\tALTITUDES GIVEN THE POSITION AND VELOCITY VECTORS FOR A POINT ON\n#\tTHE TRAJECTORY AND THE PRIMARY BODY.\n#\n#\tSETRAD IS CALLED TO DETERMINE THE RADIUS OF THE PRIMARY BODY.\n#\n#\tAPSIDES IS CALLED TO SOVE FOR THE TWO BODY RADII OF APOCENTER AND\n#\tPERICENTER AND THE ECCENTRICITY OF THE TRAJECTORY.\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tPERIAPO\n#\tL+2\t(RETURN -- ALWAYS)\n#\n# INPUT\n#\t(1)\tRVEC\tPOSITION VECTOR IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(2)\tVVEC\tVELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\tSCALE FACTOR -- EARTH +7, MOON +5\n#\t(3)\tX1\tPRIMARY BODY INDICATOR\n#\t\t\tEARTH -2, MOON -10\n#\n# OUTPUT\n#\t(1)\t2D\tAPOCENTER RADIUS IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(2)\t4D\tAPOCENTER ALTITUDE IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(3)\t6D\tPERICENTER RADIUS IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(4)\t8D\tPERICENTER ALTITUDE IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(5)\tECC\tECCENTRICITY OF CONIC TRAJECTORY\n#\t\t\tSCALE FACTOR -- +3\n#\t(6)\tXXXALT\tRADIUS OF THE PRIMARY BODY IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(7)\tPUSHLOC\tEQUALS 10D\n#\n# SUBROUTINES USED\n#\tSETRAD\n# Page 496\n#\tAPSIDES\n\n\t\tSETLOC\tAPOPERI\n\t\tBANK\n\n\t\tCOUNT*\t$$/PERAP\n\nRPAD\t\t2DEC\t6373338 B-29\t# STANDARD RADIUS OF PAD 37-B.\n\t\t\t\t\t# = 20 909 901.57 FT\n\nPERIAPO1\tLXA,2\tVSR*\n\t\t\tRTX2\n\t\t\t0,2\n\t\tSTOVL\tVVEC\n\t\tLXA,1\tVSR*\n\t\t\tRTX1\n\t\t\t0,2\n\t\tSTORE\tRVEC\nPERIAPO\t\tSTQ\tCALL\n\t\t\tNORMEX\n\t\t\tSETRAD\n\t\tSTCALL\tXXXALT\n\t\t\tAPSIDES\n\t\tSETPD\tPUSH\t\t# 2D = APOCENTER RADIUS\t\tB29 OR B27\n\t\t\t2D\n\t\tDSU\tPDDL\t\t# 4D = APOGEE ALTITUDE \t\tB29 OR B27\n\t\t\tXXXALT\n\t\t\t0D\n\t\tPUSH\tDSU\t\t# 6D = PERICENTER RADIUS\tB29 OR B27\n\t\t\tXXXALT\n\t\tPUSH\tGOTO\t\t# 8D = PERIGEE ALTITUDE \tB29 OR B27\n\t\t\tNORMEX\n# Page 497\n# SETRAD\nSETRAD\t\tDLOAD\tPUSH\n\t\t\tRPAD\n\t\tSXA,1\tINCR,2\n\t\t\tX2\n\t\t\t2D\n\t\tSLOAD\tBHIZ\n\t\t\tX2\n\t\t\tSETRADX\n\t\tVLOAD\tABVAL\n\t\t\tRLS\n\t\tPDDL\nSETRADX\t\tDLOAD\tRVQ\n\n# Page 498\n# PRECSET\nPRECSET\t\tSTQ\n\t\t\tNORMEX\n\t\tSTCALL\tTDEC2\n\t\t\tLEMPREC\n\t\tCALL\n\t\t\tLEMSTORE\n\t\tDLOAD\n\t\t\tTDEC2\n\t\tSTCALL\tTDEC1\n\t\t\tCSMPREC\n\t\tCALL\n\t\t\tCSMSTORE\n\t\tGOTO\n\t\t\tNORMEX\nLEMSTORE\tVLOAD\tBOFF\n\t\t\tRATT\n\t\t\tAVFLAG\n\t\t\tPASSIVE\nACTIVE\t\tSTOVL\tRACT3\n\t\t\tVATT\n\t\tSTORE\tVACT3\n\t\tRVQ\nCSMSTORE\tVLOAD\tBOFF\n\t\t\tRATT\n\t\t\tAVFLAG\n\t\t\tACTIVE\nPASSIVE\t\tSTOVL\tRPASS3\n\t\t\tVATT\n\t\tSTORE\tVPASS3\n\t\tRVQ\n\n# Page 499\n# VECSHIFT\nVECSHIFT\tLXA,2\tVSR*\n\t\t\tRTX2\n\t\t\t0,2\n\t\tLXA,1\tPDVL\n\t\t\tRTX1\n\t\tVSR*\tPDVL\n\t\t\t0,2\n\t\tRVQ\n\n# Page 500\n# SHIFTR1\nSHIFTR1\t\tLXA,2\tSL*\n\t\t\tRTX2\n\t\t\t0,2\n\t\tRVQ\n\n# Page 501\n# PROGRAM DESCRIPTION\n#\n# SUBROUTINE NAME\tR36\tOUT-OF-PLANE RENDEZVOUS ROUTINE\n# MOD NO. 2\t\tDATE 2 JANUARY 1969\n# MOD BY A.W.BANCROFT\tLOG SECTION EXTENDED VERBS\n#\n# FUNCTIONAL DESCRIPTION\n#\n# TO DISPLAY AT ASTRONAUT REQUEST LGC CALCULATED RENDEZVOUS\n# OUT-OF-PLANE PARAMETERS (Y, YDOT, PSI).  (REQUESTED BY DSKY).\n#\n# CALLING SEQUENCE\n#\tASTRONAUT REQUEST THROUGH DSKY V 90 E\n#\n# SUBROUTINES CALLED\n#\tEXDSPRET\n#\tGOMARKF\n#\tCSMPREC\n#\tLEMPREC\n#\tSGNAGREE\n#\tLOADTIME\n#\n# NORMAL EXIT MODES\n#\tASTRONAUT REQUEST THROUGH DSKY TO TERMINATE PROGRAM V 34 E\n#\n# ALARM OR ABORT EXIT MODES\n#\tNONE\n#\n# OUTPUT\n#\tDECIMAL DISPLAY OF TIME, Y, YDOT AND PSI\n#\n#\tDISPLAYED VALUES Y, YDOT, AND PSI, ARE STORED IN ERASABLE\n#\tREGISTERS RANGE, RRATE, AND RTHETA RESPECTIVELY.\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\tCSM AND LEM STATE VECTORS\n#\n# DEBRIS\n#\tCENTRALS A,Q,L\n#\tOTHER:  THOSE USED BY THE ABOVE LISTED SUBROUTINES\n\n\t\tBANK\t20\n\t\tSETLOC\tR36CM\n\t\tBANK\n# Page 502\n\t\tEBANK=\tRPASS36\n\n\t\tSBANK=\tR36A\n\t\tCOUNT*\t$$/R36\n\nR36\t\tCAF\tTWO\n\t\tTS\tOPTIONX\n\t\tCAF\tONE\n\t\tTS\tOPTIONX +1\n\t\tCAF\tOPTION36\t# V 04 N 12\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tENDEXT\t\t# TERMINATE\n\t\tTC\t+2\t\t# PROCEED\n\t\tTC\t-5\t\t# R2 LOADED VIA DSKY\n\t\tTC \tPOSTJUMP\n\t\tCADR\tR36A\n\nOPTION36\tVN\t0412\n\n\t\tSETLOC\tR36LM\n\t\tBANK\n\nR36A\t\tZL\n\t\tCAF\tZERO\t\t# SET TIME OF EVENT TO ZERO FOR FIRST\n\t\tDXCH\tDSPTEMX\t\t# DISPLAY\n\t\tLXCH\tOPTIONY\t\t# SAVE VEH. OPTION\nR36P3\t\tCAF\tV06N16N\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKF\n\t\tTCF\tENDEXT\t\t# TERMINATE\n\t\tTCF\t+2\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE FOR ASTRONAUT INPUT TIME\n\t\tDXCH\tDSPTEMX\n\t\tEXTEND\n\t\tBZF\tLREGCHK\t\t# A-REG ZERO GOTO CHECK L-REG FOR ZERO\nASTROTIM\tDXCH\tMPAC\t\t# A-REG NON-ZERO, TIME = ASTRO INPUT TIME\n\t\tTC\tINTPRET\n\t\tRTB\tGOTO\n\t\t\tDPMODE\n\t\t\tR36INT\n\n\t\tSETLOC\tR36LM1\n\t\tBANK\n\nR36INT\t\tSTORE\tTDEC1\n\t\tSLOAD\tSR1\n\t\t\tOPTIONY\n\t\tBHIZ\tCALL\n\t\t\tR36PROG2\t# FOR CSM DISPLAY\n# Page 503\n\t\t\tTHISPREC\t# FOR LEM DISPLAY\n\t\tGOTO\n\t\t\tR36PROG3\nR36PROG2\tCALL\n\t\t\tOTHPREC\nR36PROG3\tVLOAD\tPDVL\n\t\t\tVATT\n\t\t\tRATT\t\t# _\n\t\tSTORE\tRPASS36\t\t# R\n\t\tUNIT\tPDVL\t\t#  P\n\t\tVXV\tUNIT\t\t# -\n\t\tSTADR\n\t\tSTODL\tUNP36\t\t# U\n\t\t\tTAT\n\t\tSTORE\tTDEC1\n\t\tSLOAD\tSR1\n\t\t\tOPTIONY\n\t\tBHIZ\tCALL\n\t\t\tR36PROG4\t# FOR CSM DISPLAY\n\t\t\tOTHPREC\t\t# FOR LEM DISPLAY\n\t\tGOTO\n\t\t\tR36PROG5\nR36PROG4\tCALL\n\t\t\tTHISPREC\nR36PROG5\tVLOAD\tPDVL\t\t#\t\t\t_\n\t\t\tVATT\t\t# VELOCITY VECTOR\tV\t00D\n\t\t\tRATT\t\t# \t\t\t A\n\t\tPDDL\n\t\t\tTAT\t\t# SAVE TIME IN LOCATION 30D FOR REDISPLAY\n\t\tSTOVL\t30D\t\t#\t\t        _\n\t\tPUSH\tPUSH\t\t# POSITION VECTOR\tR   IN\t06D AND 12D\n\t\tBVSU\tPDVL\t\t#\t\t\t_A  _\n\t\t\tRPASS36\t\t# LINE OF SIGHT VECTOR\tR - R\t12D\n\t\tDOT\tSL1\t\t#\t\t\t P   A\n\t\t\tUNP36\t\t#     _   _\n\t\tSTOVL\tRANGE\t\t# Y = U . R\n\t\t\t00D\t\t#          A\n\t\tDOT\tSL1\n\t\t\tUNP36\t\t# .   _   _\n\t\tSTOVL\tRRATE\t\t# Y = U . V\n\t\t\t06D\t\t# _        A\n\t\tUNIT\tPUSH\t\t# U  = UNIT ( R  )\t\t18D\n\t\tVXV\tVXV\t\t#  RA          A\n\t\t\t00D\t\t#  _    _     _     _\n\t\t\t18D\t\t# (U  X V ) X U   = U\n\t\tVSL2\tUNIT\t\t#   RA   A     RA    A\n\t\tUNIT\tGOTO\n\t\t\tR36B\n\n\t\tSETLOC\tR36CM1\n# Page 504\n\t\tBANK\n\nR36B\t\tSTOVL\t00D\t\t# UNIT HORIZONTAL IN FORWARD DIR. 00D\n\t\t\t18D\n\t\tDOT\tVXSC\t\t# _\n\t\t\t12D\t\t# U\n\t\tVSL2\t\t\t#  L\n\t\tBVSU\tUNIT\n\t\tUNIT\n\t\tPUSH\tDOT\t\t# LOS PROJECTED INTO HORIZONTAL  12D\n\t\t\t00D\t\t# PLANE\n\t\tSL1\tARCCOS\t\t#              _   _\n\t\tSTOVL\tRTHETA\t\t# PSI = ARCCOS(U . U )\n\t\tVXV\tDOT\t\t#               A   L\n\t\t\t00D\n\t\tBPL\tDLOAD\n\t\t\tR36TAG2\n\t\t\tDPPOSMAX\n\t\tDSU\n\t\t\tRTHETA\n\t\tSTCALL\tRTHETA\n\t\t\tR36TAG2\n\n\t\tSETLOC\tR36LM\n\t\tBANK\n\nR36TAG2\t\tDLOAD\tRTB\n\t\t\t30D\n\t\t\tSGNAGREE\n\t\tSTORE\tDSPTEMX\n\t\tEXIT\n\t\tCAF\tV06N90N\t\t# DISPLAY Y, YDOT, AND PSI.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKF\n\t\tTCF\tENDEXT\t\t# TERMINATE\n\t\tTCF\tENDEXT\t\t# PROCEED, END OF PROGRAM\n\t\tTCF\tR36P3\t\t# REDISPLAY OUTPUT\nLREGCHK\t\tXCH\tL\n\t\tEXTEND\n\t\tBZF\tENTTIM2\t\t# L-REG ZERO, SET TIME = PRESENT TIME\n\t\tXCH\tL\t\t# L-REG NON ZERO, TIME = ASTRO INPUT TIME\n\t\tTCF\tASTROTIM\nENTTIM2\t\tTC\tINTPRET\n\t\tRTB\tGOTO\n\t\t\tLOADTIME\n\t\t\tR36INT\nV06N16N\t\tVN\t00616\nV06N90N\t\tVN\t00690\n\t\tSBANK=\tLOWSUPER\n"
  },
  {
    "path": "Comanche055/P37_P70.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP37_P70.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim.lawton@gmail.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t890-933\n# Mod history:\t2009-05-11 JVL\tAdapted from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.\n#\t\t2009-05-20 RSB\tAdded missing label V2T179.  Fixed POODOO -> POODOO.\n#\t\t2009-05-23 RSB\tIn RTD18, corrected a STOVL DELVLVC to\n#\t\t\t\tSTODL DELVLVC and a STODL 02D to STORE 02D.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 890\n\t\tBANK\t31\n\t\tSETLOC\tRTE1\n\t\tBANK\n\n\t\tEBANK=\tRTEDVD\n\t\tCOUNT\t31/P37\n\n# PROGRAM DESCRIPTION:  P37, RETURN TO EARTH\n#\n# DESCRIPTION\n#\tA RETURN TO EARTH TRAJECTORY IS COMPUTED PROVIDED THE CSM IS OUTSIDE THE LUNAR SPHERE OF INFLUENCE AT THE\n#\tTIME OF IGNITION.  INITIALLY A CONIC TRAJECTORY IS DETERMINED AND RESULTING IGNITION AND REENTRY PARAMETERS ARE\n# \tDISPLAYED TO THE ASTRONAUT.  THEN IF THE ASTRONAUT SO DESIRES, A PRECISION TRAJECTORY IS DETERMINED WITH THE\n# \tRESULTING IGNITION AND REENTRY PARAMETERS DISPLAYED.  UPON FINAL ACCEPTANCE BY THE ASTRONAUT, THE PROGRAM\n# \tCOMPUTES AND STORES THE TARGET PARAMETERS FOR RETURN TO EARTH FOR USE BY SPS PROGRAM (P40) OR RCS PROGRAM (P41).\n#\n# CALLING SEQUENCE\n#\tL\tTC\tP37\n#\n# SUBROUTINES CALLED\n#\tPREC100\n#\t\tV2T100\n#\t\tRTENCK2\n#\t\tRTENCK3\n#\t\tTIMERAD\n#\t\tPARAM\n#\tV2T100\n#\t\tGAMDV10\n#\t\tXT1LIM\n#\t\tDVCALC\n#\tRTENCK1\n#\t\tINTSTALL\n#\t\tINTEGRVS\n#\tRTEVN\n#\t\tRTEDISP\n#\t\tTMRAD100\n#\t\tAUGEKUGL\n#\t\tLAT-LONG\n#\tTMRAD100\n#\t\tTIMERAD\n#\tINVC100\n#\t\tCSMPREC\n#\tGETERAD\n#\tTIMETHET\n#\tP370ALRM\n#\tVN1645\n#\tPOLY\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\tCSM STATE VECTOR\n# Page 891\n#\tNJETSFLG\tNUMBER OF JETS IF THE RCS PROPULSION SYSTEM SELECTED\tSTATE FLAG\t0=4 JETS  1=2 JETS\n#\n# ASTRONAUT INPUT\n#\tSPRTETIG\tTIME OF IGNITION (OVERLAYS TIG)\t\t\t\tDP\tB28\tCS\n#\tVPRED\t\tDESIRED CHANGE IN VELOCITY AT TIG(PROGRM COMPUTED IF 0)\tDP\tB7\tMETERS/CS\n#\tGAMMAEI\t\tDESIRED FLIGHT PATH ANGLE AT REENTRY (COMPUTED IF 0)\tDP\tB0\tREVS + ABOVE HORIZ.\n#\tOPTION2\t\tPROPULSION SYSTEM OPTION\t\t\t\tSP\tB14\t1=SPS, 2=RCS\n#\n# OUTPUT\n#    CONIC OR PRECISION TRAJECTORY DISPLAY\n#\tVPRED\t \tVELOCITY MAGNITUDE AT 400,000 FT. ENTRY ALTITUDE\tDP\tB7\tMETERS/CS\n#\tT3TOT4\t\tTRANSIT TIME TO 400,000 FT. ENTRY ALTITUDE\t\tDP\tB28\tCS\n#\tGAMMAEI\t\tFLIGHT PATH ANGLE AT 400,00 FT. ENTRY ALTITUDE\t\tDP\tB0\tREVS + ABOVE HORIZON\n#\tDELVLVC\t\tINITIAL VELOCITY CHANGE VECTOR IN LOCAL VERTICAL COORD.\tVECTOR\tB7\tMETERS/CS\n#\tLAT(SPL)\tLATITUDE OF THE LANDING SITE\t\t\t\tDP\tB0\tREVS\n#\tLNG(SPL)\tLONGITUDE OF THE LANDING SITE\t\t\t\tDP\tB0\tREVS\n#    TARGETING COMPUTATION DISPLAY\n#\tTIG\t\tRECOMPUTED TIG BASED ON THRUST OPTION\t\t\tDP\tB28\tCS\n#\tTTOGO\t\tTIME FROM TIG\t\t\t\t\t\tDP\tB28\tCS\n#\t+MGA\t\tPOSITIVE MIDDLE GIMBAL ANGLE\t\t\t\tDP\tB0\tREVS -.02 IF REFSMFLG=0\n#    THRUST PROGRAM COMMUNICATION\n#\tXDELVFLG\tEXTERNAL DELTA V FLAG\t\t\t\t\tSTATE\tFLAG\tSET 0 FOR LAMBERT AIMPT\n#\tNORMSW\t\tLAMBERT AIMPT ROTATION SWITCH\t\t\t\tSTATE\tFLAG\tSET 0 FOR NO ROTATION\n#\tECSTEER\t\tCROSS PRODUCT STEERING CONSTANT\t\t\t\tSP\tB2\tSET 1\n#\tRTARG\t\tCONICALLY INTEGRATED REENTRY POSITION VECTOR\t\tVECTOR\tB29\tMETERS\n#\tTPASS4\t\tREENTRY TIME\t\t\t\t\t\tDP\tB28\tCS\n\nP37\t\tTC\tPHASCHNG\t# P37 IS NOT RESTARTABLE\n\t\tOCT\t4\n\n\t\tTC\tINTPRET\n\t\tAXT,1\tSXA,1\n\t\tOCT\t04000\n\t\t\tECSTEER\n\t\tDLOAD\n\t\t\tZEROVECS\n\t\tSTORE\tVPRED\n\t\tSTORE\tGAMMAEI\n\t\tEXIT\n\t\tCAF\tV6N33RTE\t# INPUT TIG\tSTORED IN SPRTETIG\n\t\tTCR\tP370GOF\t\t#\t\tOVERLAYED WITH TIG\n\t\tTCF\t-2\t\t# DISPLAY NEW DATA\n\t\tCAF\tV6N60RTE\t# INPUT REENTRY ANGLE IN GAMMAEI\n\t\tTCR\tP37GFRB1\t#\tAND DESIRED DELTA V IN RTEDVD\n\t\tTCF\t-2\t\t# DISPLAY NEW DATA\nRTE299\t\tTC\tINTPRET\n\t\tSSP\tDLOAD\n\t\t\tOVFIND\n\t\t\t0\n\t\t\tVPRED\n# Page 892\n\t\tSTODL\tRTEDVD\n\t\t\tGAMMAEI\n\t\tSTODL\tRTEGAM2D\n\t\t\t1RTEB13\n\t\tSTODL\tCONICX1\n\t\t\tC4RTE\n\t\tSTCALL\tMAMAX1\n\t\t\tINVC100\t\t# GET R(T1)/,V(T1)/,UR1/,UH/\n\t\tCLEAR\tDLOAD\n\t\t\tSLOWFLG\n\t\t\tRTEDVD\n\t\tBPL\tABS\n\t\t\tRTE317\n\t\tSTORE\tRTEDVD\n\t\tDLOAD\tDSU\n\t\t\tR(T1)\n\t\t\tK1RTE\n\t\tBMN\tSET\n\t\t\tRTE317\n\t\t\tSLOWFLG\nRTE317\t\tDLOAD\tEXIT\n\t\t\tR(T1)\n\t\tTC\tPOLY\n\t\tDEC\t2\n\t\t2DEC\t181000434. B-31\n\t\t2DEC\t1.50785145 B-2\n\t\t2DEC*\t-6.49993057 E-9 B27*\n\t\t2DEC*\t9.76938926 E-18 B56*\n\t\tTC\tINTPRET\n\t\tSL1\n\t\tSTODL\tMAMAX2\t\t# C0+C1*R+C2*R**2+C3*R**3=MAMAX2 B30\n\t\t\tM9RTEB28\n\t\tSTODL\tNN1A\n\t\t\tK2RTE\nRTE320\t\tSTODL\tRCON\t\t# RCON=K2\n\t\t\tRTEGAM2D\n\t\tBZE\tBDSU\n\t\t\tRTE340\t\t# GOTORTE340 IF REENTRY ANGLE NOT INPUT\n\t\t\t1RTEB2\n\t\tPUSH\tCOS\t\t#\t\t\t\t\tPL02D\n\t\tPDDL\tSIN\n\t\tBDDV\tSTADR\t\t#\t\t\t\t\tPL00D\n\t\tSTCALL\tX(T2)\t\t# X(T2)=COT(GAM2D)\t\t\tB0\n\t\t\tRTE360\nRTE340\t\tDLOAD\tDSU\n\t\t\tR(T1)\n# Page 893\n\t\t\tK1RTE\n\t\tBMN\tDLOAD\n\t\t\tRTE350\n\t\t\tK4RTE\n\t\tSTCALL\tX(T2)\t\t# X(T2)=K4\n\t\t\tRTE360\nRTE350\t\tDLOAD\n\t\t\tK3RTE\n\t\tSTORE\tX(T2)\t\t# X(T2)=K3\nRTE360\t\tCALL\n\t\t\tV2T100\n\t\tBZE\tGOTO\n\t\t\tRTE367\n\t\t\tRTEALRM\nRTE367\t\tVLOAD\n\t\t\tR(T1)/\n\t\tSTODL\tRVEC\n\t\t\tRCON\n\t\tSTOVL\tRDESIRED\n\t\t\tV2(T1)/\n\t\tSTCALL\tVVEC\n\t\t\tTMRAD100\n\t\tDAD\n\t\t\tT1\n\t\tSTODL\tT2\n\t\t\tRTEGAM2D\n\t\tBZE\tGOTO\n\t\t\tRTE369\n\t\t\tRTE372\nRTE369\t\tVLOAD\tABVAL\n\t\t\tV(T2)/\n\t\tEXIT\n\t\tTC\tPOLY\n\t\tDEC\t2\n\t\t2DEC\t0\n\t\t2DEC\t-4.8760771 E-2 B4\n\t\t2DEC\t4.5419476 E-4 B11\n\t\t2DEC\t-1.4317675 E-6 B18\n\n\t\tTC\tINTPRET\n\t\tDAD\n\t\t\tRTED1\n\t\tSL3\tGOTO\t\t# X(T2),=D1+D2V2+D3V2**2+D4V2**3\n\t\t\tRTE373\nRTE372\t\tDLOAD\t\t\t# X(T2),=X(T2)\n\t\t\tX(T2)\nRTE373\t\tDSU\tPUSH\t\t# X(T2)ERR\t\t\t\tB0 PL02D\n# Page 894\n\t\t\tX(T2)\n\t\tVLOAD\tUNIT\n\t\t\tR(T2)/\t\t#\t\t\t\t\tB58\n\t\tSTCALL\tALPHAV\n\t\t\tGETERAD\n\t\tDAD\n\t\t\tE3RTE\n\t\tPUSH\tDSU\t\t# RCON,=(E1/1+E2BETA11)**.5)+E3 \tB29 PL04D\n\t\t\tRCON\n\t\tABS\tDSU\n\t\t\tEPC2RTE\n\t\tBMN\tGOTO\n\t\t\tRTE374\n\t\t\tRTE375\nRTE374\t\tDLOAD\tABS\n\t\t\t00D\n\t\tDSU\tBMN\n\t\t\tEPC3RTE\n\t\t\tP37E\nRTE375\t\tDLOAD\tDAD\n\t\t\tNN1A\n\t\t\t1RTEB28\n\t\tBMN\tSLOAD\n\t\t\tRTE380\n\t\t\tOCT605\n\t\tGOTO\n\t\t\tRTEALRM\t\t# TOO MANY ITERATIONS\nRTE380\t\tSTORE\tNN1A\n\t\tDSU\tBZE\n\t\t\tM8RTEB28\n\t\t\tRTE385\n\t\tDLOAD\tDSU\n\t\t\t00D\n\t\t\tDRCON\n\t\tNORM\tPDDL\t\t# X(T2)ERR-X(T2)ERR,=Z1\t\t\tPL06D\n\t\t\tX1\n\t\t\tRPRE'\n\t\tDSU\tDDV\t\t# X(T2)PRI-X(T2)=Z2\t\t\tPL04D\n\t\t\tX(T2)\n\t\tDMP\tSL*\t\t# DX(T2)=X(T2)ERR(Z2/Z1)\n\t\t\t00D\n\t\t\t0,1\n\t\tGOTO\n\t\t\tRTE390\nRTE385\t\tDLOAD\t\t\t# DX(T2)=X(T2)ERR\n\t\t\t00D\nRTE390\t\tSTODL\t16D\t\t# DX(T2)\t\t\t\tPL02D\n\t\tSTADR\n\t\tSTODL\tRCON\t\t# RCON=RCON,\n\t\tBOV\n# Page 895\n\t\t\tRTE360\n\t\tSTODL\tDRCON\t\t# X(T2)ERR,=X(T2)ERR\n\t\t\tX(T2)\n\t\tSTODL\tRPRE'\t\t# X(T2)PRI=X(T2)\n\t\t\t16D\n\t\tDAD\n\t\t\tX(T2)\n\t\tSTCALL\tX(T2)\t\t# X(T2)=X(T2)+DX(T2)\n\t\t\tRTE360\t\t# REITERATE\nP37E\t\tCALL\t\t\t# DISPLAY CONIC SOLUTION\n\t\t\tRTEVN\nRTE505\t\tDLOAD\tDMP\n\t\t\tPCON\n\t\t\tBETA1\n\t\tBDSU\tBZE\n\t\t\tRCON\n\t\t\tRTE510\n\t\tBMN\tDLOAD\n\t\t\tRTE510\n\t\t\t1RTEB2\n\t\tGOTO\t\t\t# ENTRY NEAR APOGEE\n\t\t\tRTE515\nRTE510\t\tDLOAD\tDCOMP\t\t# ENTRY NEAR PERIGEE\n\t\t\t1RTEB2\nRTE515\t\tSTCALL\tPHI2\n\t\t\tPREC100\t\t# PRECISION TRAJECTORY COMPUTATION\nRTE625\t\tBZE\n\t\t\tP37G\nRTEALRM\t\tCALL\n\t\t\tP370ALRM\n\t\tEXIT\n\t\tTCF\tP37\t\t# RECYCLE AFTER ALARM DISPLAY\n\n# RETURN TO EARTH DISPLAY SUBROUTINE\n\nRTEVN\t\tSTQ\tCALL\n\t\t\tVNSTORE\n\t\t\tRTEDISP\t\t# DISPLAY PREPARATION\n\t\tEXIT\n\t\tCAF\tV6N61RTE\t# LATITUDE,LONGITUDE,BLANK\n\t\tTCR\tP370GOFR\t#   IN LAT(SPL),LNG(SPL),-\n\t\tCAF\tFOUR\n\t\tTCR\t37BLANK +1\n\t\tTCF\t+5\n\t\tTCF\tP37\t\t# RECYCLE\n\t\tCAF\tV6N39RTE\t# T21 HRS,MIN,SEC IN T3TOT4\n\t\tTCR\tP370GOF\n\t\tTCF\tP37\t\t# RECYCLE\n\t\tCAF\tV6N60RTE\t# DISPLAY BLANK,V(T2),FPA2\n\t\tTCR\tP37GFRB1\t#   IN -,VPRED,GAMMAEI\n# Page 896\n\t\tTCF\tP37\t\t# RECYCLE\n\t\tCAF\tV6N81RTE\t# DISPLAY DELTA V (LV) IN DELVLVC\n\t\tTCR\tP370GOF\n\t\tTCF\tP37\t\t# RECYCLE\n\t\tTCR\tINTPRET\n\t\tGOTO\n\t\t\tVNSTORE\n\n# PRECISION DISPLAY, TARGETING COMPUTATION AND RTE END PROCESSING\n\nP37G\t\tCALL\n\t\t\tRTEVN\n\t\tEXIT\nP37N\t\tCAF\tSEVEN\n\t\tTS\tOPTION1\n\t\tCAF\tONE\n\t\tTS\tOPTION2\n\t\tCAF\tV4N06RTE\t# DISPLAY RCS OR SPS OPTION  SPS ASSUMED\n\t\tTCR\tP370GOF\n\t\tTCF\t-2\t\t# RECYCLE\n\t\tTC\tINTPRET\t\t# PROCEED\n\t\tSETPD\tSLOAD\n\t\t\t00D\n\t\t\tOPTION2\n\t\tDSU\tBZE\n\t\t\t1RTEB13\n\t\t\tP37Q\n\t\tSLOAD\tNORM\t\t# SPS\n\t\t\tEMDOT\n\t\t\tX1\n\t\tPDDL\tGOTO\n\t\t\tVCSPS\n\t\t\tP37T\nP37Q\t\tDLOAD\tBON\t\t# RCS\n\t\t\tMDOTRCS\n\t\t\tNJETSFLG\n\t\t\tP37R\n\t\tSL1\nP37R\t\tSL1\n\t\tNORM\tPDDL\n\t\t\tX1\n\t\t\tVCRCS\nP37T\t\tPDDL\tDDV\t\t# DV/VC\t\t\tB7 -B5 = B2 \tPL02D\n\t\t\tDV\n\t\tEXIT\n\t\tTC\tPOLY\n\t\tDEC\t1\n\t\t2DEC\t5.66240507 E-4 B-3\n\t\t2DEC\t9.79487897 E-1 B-1\n# Page 897\n\t\t2DEC\t-.388281955 B1\n\t\tTC\tINTPRET\n\t\tPUSH\tSLOAD\t\t# (1-E)**(-DV/VC)=A\t\tB3 \tPL04D\n\t\t\tWEIGHT/G\n\t\tDMP\tDDV\t\t# DTB=(M0/MDOT)A\tB16+B3-B3=B16 \tPL00D\n\t\tSL*\tDMP\n\t\t\t0 -12D,1\n\t\t\tCSUBT\n\t\tBDSU\n\t\t\tT1\n\t\tSTORE\tTIG\t\t# TIG=T1-CT*DTB\t\t\tB28\n\t\tEXIT\n\t\tCAF\tV6N33RTE\t# DISPLAY BIASED TIG\n\t\tTCR\tP370GOF\n\t\tTCF\t-2\n\t\tCAF\tZERO\n\t\tTS\tVHFCNT\n\t\tTS\tTRKMKCNT\n\t\tTC\tINTPRET\n\t\tCALL\t\t\t# CONICALLY INTEGRATE FROM R1,V1 OVER T12\n\t\t\tRTENCK1\n\t\tVLOAD\tUNIT\t\t#\t\t\t\t\tPL00D\n\t\t\tR(T2)/\n\t\tPDVL\tVXSC\t\t# UR2\t\t\t\tB1 \tPL06D\n\t\t\tUR1/\n\t\t\tMCOS7.5\n\t\tPDVL\tVXSC\t\t# -UR1(COS7.5)\t\t\tB1 \tPL12D\n\t\t\tUH/\n\t\t\tMSIN7.5\n\t\tVAD\tDOT\t\t# K/=-UR1(COS7.5)-UH(SIN7.5)\tB2 \tPL00D\n\t\tDAD\tBMN\n\t\t\tMCOS22.5\n\t\t\tP37W\n\t\tVLOAD\tDOT\t\t# K/ . UR2 GR COS22.5\n\t\t\tUH/\n\t\t\tR(T2)/\n\t\tBMN\tDLOAD\n\t\t\tP37U\n\t\t\tTHETA165\n\t\tPUSH\tGOTO\n\t\t\tP37V\nP37U\t\tDLOAD\tPUSH\n\t\t\tTHETA210\nP37V\t\tSIN\n\t\tSTODL\tSNTH\n\t\tCOS\tCLEAR\n\t\t\tRVSW\n\t\tSTOVL\tCSTH\n\t\t\tR(T1)/\n# Page 898\n\t\tSTOVL\tRVEC\n\t\t\tV2(T1)/\n\t\tSTCALL\tVVEC\n\t\t\tTIMETHET\nP37W\t\tCLEAR\tCLEAR\n\t\t\tXDELVFLG\n\t\t\tNORMSW\n\t\tSET\tVLOAD\n\t\t\tFINALFLG\n\t\tSTADR\n\t\tSTODL\tRTARG\n\t\t\tT\n\t\tDAD\n\t\t\tT1\n\t\tSTOVL\tTPASS4\n\t\t\tV2(T1)/\n\t\tVSU\n\t\t\tV(T1)/\n\t\tSTCALL\tDELVSIN\n\t\t\tVN1645\n\t\tGOTO\n\t\t\tP37W\n\n# SUBROUTINE TO GO TO GOFLASHR AND BLANK R1\n\nP37GFRB1\tEXTEND\n\t\tQXCH\tSPRTEX\n\t\tTCR\tP370GOFR\n37BLANK\t\tCAF\tONE\n\t\tTCR\tBLANKET\n\t\tTCF\tENDOFJOB\n\t\tTC\tSPRTEX\t\t# RECYCLE\n\t\tTCF\tP37PROC\t\t# PROCEED\n\n# SUBROUTINE TO GO TO GOFLASHR\n\nP370GOFR\tEXTEND\n\t\tQXCH\tRTENCKEX\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\t+3\n\t\tTCF\t+4\n\t\tTC\tRTENCKEX\t# IMMEDIATE RETURN\n\t\tINDEX\tRTENCKEX\t# PROCEED\n\t\tTCF\t0 +4\n\t\tINDEX\tRTENCKEX\t# RECYCLE\n\t\tTCF\t0 +3\n\n# SUBROUTINE TO GO TO GOFLASH\n\n# Page 899\nP370GOF\t\tEXTEND\n\t\tQXCH\tSPRTEX\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTCF\t+2\n\t\tTC\tSPRTEX\nP37PROC\t\tINDEX\tSPRTEX\n\t\tTCF\t0 +1\nV6N33RTE\tVN\t0633\nV4N06RTE\tVN\t0406\nV6N61RTE\tVN\t0661\nV6N39RTE\tVN\t0639\nV6N60RTE\tVN\t0660\nV6N81RTE\tVN\t0681\n\t\tBANK\t32\n\t\tSETLOC\tRTE\n\t\tBANK\n\t\tCOUNT\t32/RTE\n\n# Page 900\n# ALARM DISPLAY SUBROUTINE\n\nP370ALRM\tSTQ\tEXIT\n\t\t\tSPRTEX\n\t\tCA\tMPAC\n\t\tTC\tVARALARM\n\t\tCAF\tV5N09RTE\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTCF\t-4\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tSPRTEX\nV5N09RTE\tVN\t0509\n\n# Page 901\n# TIME RADIUS CALLING SUBROUTINE\n#\n# INPUT\n#\tRVEC\t\tINITIAL POSITION VECTOR\t\t\t\t\tVECTOR\tB29\tMETERS\n#\tVVEC\t\tINITIAL VELOCITY VECTOR\t\t\t\t\tVECTOR\tB7\tMETERS/CS\n#\tRDESIRED\tFINAL RADIUS FOR WHICH TRANSFER TIME IS TO BE COMPUTED\tDP\tB29\tMETERS\n#\tCONICX1\t\tX1 SETTING FOR CONIC SUBROUTINES  -2=EARTH\t\tSP\tB14\n#\n# OUTPUT\n#\tR(T2)/\t\tFINAL POSITION VECTOR\t\t\t\t\tVECTOR\tB29 \tMETERS\n#\tV(T2)/\t\tFINAL VELOCITY VECTOR\t\t\t\t\tVECTOR\tB7\tMETERS/CS\n#\tT12\t\tTRANSFER TIME TO FINAL RADIUS\t\t\t\tDP\tB28\tCS\n\nTMRAD100\tSTQ\tCLEAR\n\t\t\tRTENCKEX\n\t\t\tRVSW\n\t\tAXC,2\tSXA,2\n\t\tOCT\t20000\n\t\t\tSGNRDOT\n\t\tLXC,1\tCALL\n\t\t\tCONICX1\n\t\t\tTIMERAD\n\t\tSTOVL\tV(T2)/\t\t\t\t\t\t\tPL00D\n\t\tSTADR\n\t\tSTODL\tR(T2)/\n\t\t\tT\n\t\tSTCALL\tT12\n\t\t\tRTENCKEX\n\n# Page 902\n# DISPLAY CALCULATION SUBROUTINE\n#\n# DESCRIPTION\n#\tOUTPUT FOR DISPLAY IS CONVERTED TO PROPER UNITS AND PLACED IN OUTPUT STORAGE REGISTERS.  LANDING SITE\n#\tCOMPUTATION FOR DETERMINING LANDING SITE LATITUDE AND LONGITUDE IS INCLUDED IN THE ROUTINE.\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tRTEDISP\n#\n# SUBROUTINES CALLED\n#\tTMRAD100\n#\tAUGEKUGL\n#\tLAT-LONG\n#\n# ERASABLE INITIALIZATION REQUIRED\n#    PUSHLIST\n#\tNONE\n#    MPAC\n#\tNONE\n#    OTHER\n#\tR(T2)/\t\tFINAL POSITION VECTOR\t\t\t\t\tVECTOR\tB29\tMETERS\n#\tV(T2)/\t\tFINAL VELOCITY VECTOR\t\t\t\t\tVECTOR\tB7\tMETERS/CS\n#\tT2\t\tFINAL TIME\t\t\t\t\t\tDP\tB28\tCS\n#\tV2(T1)/\t\tPOST IMPULSE INITIAL VELOCITY VECTOR\t\t\tVECTOR\tB7\tMETERS/CS\n#\tV(T1)/\t\tINITIAL VELOCITY VECTOR\t\t\t\t\tVECTOR\tB7\n#\tUR1/\t\tUNIT INITIAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tUH/\t\tUNIT HORIZONTAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\n# OUTPUT\n#\tVPRED\t\tVELOCITY MAGNITUDE AT 400,000 FT. ENTRY ALTITUDE\tDP\tB7\tMETERS/CS\n#\tT3TOT4\t\tTRANSIT TIME TO 400,000 FT. ENTRY ALTITUDE\t\tDP\tB28\tCS\n#\tGAMMAEI\t\tFLIGHT PATH ANGLE AT 400,000 FT. ENTRY ALTITUDE\t\tDP\tB0\tREVS + ABOVE HORIZ\n#\tDELVLVC\t\tINITIAL VELOCITY CHANGE VECTOR IN LOCAL VERTICAL COORD.\tVECTOR\tB7\tMETERS/CS\n#\tLAT(SPL)\tLATITUDE OF THE LANDING SITE\t\t\t\tDP\tB0\tREVS\n#\tLNG(SPL)\tLONGITUDE OF THE LANDING SITE\t\t\t\tDP\tB0\tREVS\n\nRTEDISP\t\tSTQ\tVLOAD\t\t# DISPLAY\n\t\t\tSPRTEX\n\t\t\tV(T2)/\n\t\tUNIT\tPDDL\n\t\t\t36D\n\t\tSTODL\tVPRED\t\t# V(T2)\n\t\t\tT2\n\t\tDSU\n\t\t\tSPRTETIG\n\t\tSTOVL\tT3TOT4\t\t# T21\n\t\t\tR(T2)/\n\t\tUNIT\tDOT\n\t\tSL1\n\n# Page 903\n\t\tARCCOS\tBDSU\n\t\t\t1RTEB2\n\t\tSTOVL\tGAMMAEI\t\t# FLIGHT PATH ANGLE T2\n\t\t\tV2(T1)/\n\t\tVSU\tPUSH\n\t\t\tV(T1)/\n\t\tDOT\tDCOMP\n\t\t\tUR1/\n\t\tPDVL\tPUSH\n\t\tDLOAD\tPDVL\n\t\t\tZERORTE\n\t\tDOT\tVDEF\n\t\t\tUH/\n\t\tVSL1\n\t\tSTODL\tDELVLVC\n\t\t\tDELVLVC\n\t\tBOFF\tDCOMP\n\t\t\tRETROFLG\n\t\t\tRTD18\n\t\tSTORE\tDELVLVC\t\t# NEGATE X COMPONENT, RETROGRADE\nRTD18\t\tVLOAD\tABVAL\n\t\t\tDELVLVC\n\t\tSTOVL\tVGDISP\n\t\t\tR(T2)/\n\t\tSTORE\tRVEC\t\t# ***** LANDING SITE COMPUTATION *****\n\t\tABVAL\tDSU\n\t\t\t30480RTE\n\t\tSTOVL\tRDESIRED\n\t\t\tV(T2)/\n\t\tSTCALL\tVVEC\n\t\t\tTMRAD100\t# R3,V3,T23 FROM TIMERAD\n\t\tVLOAD\tUNIT\n\t\t\tR(T2)/\n\t\tPDVL\tUNIT\t\t# UR3\t\t\t\t\tPL06D\n\t\t\tV(T2)/\n\t\tDOT\tSL1\t\t# GAMMAE=ARCSIN(UR3 . UV3)\t\tPL00D\n\t\tARCSIN\tPDDL\t\t# V(T3)\t\t\t\t\tPL02D\n\t\t\t36D\n\t\tPDDL\tABS\n\t\tPUSH\tCALL\t\t# /GAMMAE/\t\t\t\tPL04D\n\t\t\tAUGEKUGL\t# PHIE\t\t\t\t\tPL06D\n\t\tDAD\tDAD\n\t\t\tT12\t\t# T23\n\t\t\tT2\n\t\tSTORE\t02D\t\t# T(LS)=T2&T23&TE\n\t\tSLOAD\tBZE\n\t\t\tP37RANGE\n\t\t\tRTD22\n\t\tSTORE\t04D\t\t# OVERRIDE RANGE (PCR 261)\nRTD22\t\tDLOAD\tSIN\n\n# Page 904\n\t\t\t04D\n\t\tSTODL\tLNG(SPL)\t# LNG(SPL)=SIN(PHIE)\t\t\tPL04D\n\t\tCOS\n\t\tSTORE\tLAT(SPL)\t# LAT(SPL)=COS(PHIE)\n\t\tVLOAD\tUNIT\n\t\t\tR(T2)/\n\t\tPUSH\tPUSH\n\t\tPDVL\tUNIT\t\t#\t\t\t\t\tPL22D\n\t\t\tV(T2)/\n\t\tPDVL\tVXV\n\t\tVXV\tUNIT\t\t# UH3=UNIT(UR3 X UV3 X UR3)\t\tPL10D\n\t\tVXSC\tPDVL\n\t\t\tLNG(SPL)\n\t\tVXSC\tVAD\t\t#\t\t\t\t\tPL04D\n\t\t\tLAT(SPL)\n\t\tCLEAR\tCLEAR\t\t# T(LS) IN MPAC\n\t\t\tERADFLAG\n\t\t\tLUNAFLAG\n\t\tSTODL\tALPHAV\t\t# ALPHAV=UR3(COSPHIE)+UH3(SINPHIE) \tPL02D\n\t\tCALL\n\t\t\tLAT-LONG\n\t\tDLOAD\n\t\t\tLAT\n\t\tSTODL\tLAT(SPL)\t# LATITUDE LANDING SITE  *****\n\t\t\tLONG\n\t\tSTCALL\tLNG(SPL)\t# LONGITUDE LANDING SITE *****\n\t\t\tSPRTEX\n\t\tCOUNT*\t$$/RTE\n\n# Page 905\n# INITIAL VECTOR SUBROUTINE\n#\n# DESCRIPTION\n#\tA PRECISION INTEGRATION OF THE STATE VECTOR TO THE TIME OF IGNITION IS PERFORMED. PRECOMPUTATIONS OCCUR.\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tINVC100\n#\n# NORMAL EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE WITH MPAC = 0\n#\n# ALARM EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE WITH MPAC = OCTAL 612 FOR STATE VECTOR IN MOONS SPHERE OF INFLUENCE\n#\n# SUBROUTINES CALLED\n#\tCSMPREC\n#\n# ERASABLE INITIALIZATION REQUIRED\n#    PUSHLIST\n#\tNONE\n#    MPAC\n#\tNONE\n#    OTHER\n#\tSPRTETIG\tTIME OF IGNITION\t\t\t\t\tDP\tB28\tCS\n#\tCSM STATE VECTOR\n#\n# OUTPUT\n#\tR(T1)/\t\tINITIAL POSITION VECTOR AT TIG\t\t\t\tVECTOR\tB29\tMETERS\n#\tV(T1)/\t\tINITIAL VELOCITY VECTOR AT TIG\t\t\t\tVECTOR\tB7\tMETERS/CS\n#\tT1\t\tINITIAL VECTOR TIME (TIG)\t\t\t\tDP\tB28\tCS\n#\tUR1/\t\tUNIT INITIAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tUH/\t\tUNIT HORIZONTAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tCFPA\t\tCOSINE OF INITIAL FLIGHT PATH ANGLE\t\t\tDP\tB1\n\nINVC100\t\tSTQ\tDLOAD\n\t\t\tSPRTEX\n\t\t\tSPRTETIG\n\t\tSTCALL\tTDEC1\n\t\t\tCSMPREC\t\t# PRECISION INTEGRATION  R0,V0 TO R1,V1\n\t\tVLOAD\tSXA,2\n\t\t\tRATT\n\t\t\tP(T1)\n\t\tSTOVL\tR(T1)/\n\t\t\tVATT\n\t\tSTODL\tV(T1)/\n\t\t\tTAT\n\t\tSTORE\tT1\n\t\tSLOAD\tBZE\n\t\t\tP(T1)\n# Page 906\n\t\t\tINVC109\nINVC107\t\tSLOAD\tGOTO\n\t\t\tOCT612\n\t\t\tRTEALRM\t\t# R1,V1 NOT IN PROPER SPHERE OF INFLUENCE\nINVC109\t\tVLOAD\tUNIT\n\t\t\tR(T1)/\n\t\tSTODL\tUR1/\t\t# UR1/\t\t\t\t\tB1\n\t\t\t36D\n\t\tSTOVL\tR(T1)\t\t# R(T1)\t\t\t\t\tB29\n\t\t\tV(T1)/\n\t\tUNIT\n\t\tSTORE\tUV1/\n\t\tDOT\tSL1\n\t\t\tUR1/\n\t\tSTORE\tCFPA\t\t# CFPA\t\t\t\t\tB1\n\t\tABS\tDSU\n\t\t\tEPC1RTE\n\t\tBMN\tDLOAD\n\t\t\tINVC115\t\t# NOT NEAR RECTILINEAR\n\t\t\t1RTEB2\n\t\tPDDL\tPUSH\n\t\t\tZERORTE\n\t\tVDEF\tPUSH\t\t# N/ = (0,0,1)\n\t\tGOTO\n\t\t\tINVC120\nINVC115\t\tVLOAD\tVXV\n\t\t\tUR1/\n\t\t\tUV1/\n\t\tPUSH\t\t\t# N/ = UR X UV\t\t\t\tB2\nINVC120\t\tCLEAR\tDLOAD\n\t\t\tRETROFLG\n\t\tPUSH\tBPL\n\t\t\tINVC125\n\t\tVLOAD\tVCOMP\t\t# RETROGRADE ORBIT\n\t\tPUSH\tSET\n\t\t\tRETROFLG\nINVC125\t\tVLOAD\n\t\tVXV\tUNIT\n\t\t\tUR1/\n\t\tSTORE\tUH/\t\t# UH/\t\t\t\t\tB1\n\t\tGOTO\n\t\t\tSPRTEX\n\n# Page 907\n# PRECISION TRAJECTORY COMPUTATION SUBROUTINE\n#\n# DESCRIPTION\n#\tA NUMERICALLY INTEGRATED TRAJECTORY IS GENERATED WHICH FOR THE RETURN TO EARTH PROBLEM SATISFIES THE REENTRY\n#\tCONSTRAINTS (RCON AND X(T2)) ACHIEVED BY THE INITIAL CONIC TRAJECTORY AND MEETS THE DVD REQUIREMENT AS CLOSELY\n#\tAS POSSIBLE.\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tPREC100\n#\n# NORMAL EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE WITH MPAC = 0\n#\n# ALARM EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE WITH MPAC =\n#\t\tOCTAL 605\tFOR EXCESS ITERATIONS\n#\t\tOCTAL 613\tFOR REENTRY ANGLE OUT OF LIMITS\n#\n# SUBROUTINES CALLED\n#\tINTSTALL\n#\tRTENCK2\n#\tRTENCK3\n#\tTIMERAD\n#\tPARAM\n#\tV2T100\n#\n# ERASABLE INITIALIZATION REQUIRED\n#    PUSHLIST\n#\tNONE\n#    MPAC\n#\tNONE\n#    OTHER\n#\tR(T1)/\t\tINITIAL POSITION VECTOR\t\t\t\t\tVECTOR\tB29/B27\tMETERS\n#\tV2(T1)/\t\tPOST IMPULSE INITIAL VELOCITY VECTOR\t\t\tVECTOR\tB7/B5\tMETERS/CS\n#\tV(T1)/\t\tINITIAL VELOCITY VECTOR\t\t\t\t\tVECTOR\tB7/B5\tMETERS/CS\n#\tT1\t\tINITIAL VECTOR TIME\t\t\t\t\tDP\tB28\tCS\n#\tT12\t\tINITIAL TO FINAL POSITION TIME\t\t\t\tDP\tB28 \tCS\n#\tRCON\t\tCONIC FINAL RADIUS\t\t\t\t\tDP\tB29/B27\tMETERS\n#\tR(T1)\t\tMAGNITUDE OF INITIAL POSITION VECTOR\t\t\tDP\tB29/B27\tMETERS\n#\tX(T2)\t\tCOTANGENT OF FINAL FLIGHT PATH ANGLE\t\t\tDP\tB0\n#\tX(T1)\t\tCOTANGENT OF INITIAL FLIGHT PATH ANGLE\t\t\tDP\tB5\n#\tRTEDVD\t\tDELTA VELOCITY DESIRED\t\t\t\t\tDP\tB7/B5\tMETERS/CS\n#\tMAMAX1\t\tMAJOR AXIS LIMIT FOR LOWER BOUND ON GAMDV ITERATOR\tDP\tB30/B28\tMETERS\n#\tMAMAX2\t\tMAJOR AXIS LIMIT FOR UPPER BOUND ON GAMDV ITERATOR\tDP\tB30/B28\tMETERS\n#\tUR1/\t\tUNIT INITIAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tUH/\t\tUNIT HORIZONTAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tBETA1\t\t1+X(T2)**2\t\t\t\t\t\tDP\tB1\n#\tPHI2\t\tPERIGEE OR APOGEE INDICATOR\t\t\t\tDP\tB2\t-1 PERIGEE, +1 APOGEE\n#\n# Page 908\n#\n# OUTPUT\n#    \tV2(T1)/\t\tPOST IMPULSE INITIAL VELOCITY VECTOR\t\t\tVECTOR\tB7\tMETERS/CS\n#\tR(T2)/\t\tFINAL POSITION VECTOR\t\t\t\t\tVECTOR\tB29\tMETERS\n#\tV(T2)/\t\tFINAL VELOCITY VECTOR\t\t\t\t\tVECTOR\tB7\tMETERS/CS\n#\tT2\t\tFINAL TIME\t\t\t\t\t\tDP\tB28\tCENTISECONDS\n#\n# DEBRIS\n#\tRD\t\tFINAL R DESIRED\t\t\t\t\t\tDP\tB29/B27\tMETERS\n#\tR/APRE\t\tR/A\t\t\t\t\t\t\tDP\tB6\n#\tP/RPRE\t\tP/R\t\t\t\t\t\t\tDP\tB4\n#\tRPRE\t\tMAGNITUDE OF R(T2)/\t\t\t\t\tDP\tB29/B27\tMETERS\n#\tX(T2)PRE\tCOTANGENT OF GAMMA2\t\t\t\t\tDP\tB0\n#\tDT12\t\tCORRECTION TO FINAL TIME T2\t\t\t\tDP\tB28\tCENTISECONDS\n#\tRCON\t\tFINAL RADIUS\t\t\t\t\t\tDP\tB29/B27\tMETERS\n#\tDRCON\t\tDELTA RCON\t\t\t\t\t\tDP\tB29/B27\tMETERS\n\nPREC100\t\tSTQ\tDLOAD\n\t\t\tSPRTEX\n\t\t\t10RTE\n\t\tSTODL\tNN1A\n\t\t\tRCON\n\t\tSTORE\tRD\nPREC120\t\tDLOAD\n\t\t\t2RTEB1\n\t\tSTODL\tDT21PR\t\t# DT21PR = POSMAX\n\t\t\tM15RTE\n\t\tSTCALL\tNN2\n\t\t\tRTENCK3\nPREC125\t\tCALL\n\t\t\tPARAM\n\t\tDLOAD\n\t\t\tP\n\t\tSTODL\tP/RPRE\n\t\t\tR1A\n\t\tSTODL\tR/APRE\n\t\t\tR1\n\t\tSTODL\tRPRE\n\t\t\tCOGA\n\t\tSL\n\t\t\t5\n\t\tSTORE\tX(T2)PRE\n\t\tDCOMP\tDAD\n\t\t\tX(T2)\n\t\tABS\tDSU\n\t\t\tEPC4RTE\n\t\tBOV\tBMN\n\t\t\tPREC130\n\t\t\tPREC175\n\n# DESIRED REENTRY ANGLE NOT ACHIEVED\n\n# Page 909\nPREC130\t\tDLOAD\tBMN\n\t\t\tNN2\n\t\t\tPREC140\nPREC132\t\tSLOAD\tGOTO\t\t# TOO MANY ITERATIONS\n\t\t\tOCT605\t\t#\tEXIT WITH ALARM\n\t\t\tPRECX\n\n# DETERMINE RADIUS AT WHICH THE DESIRED REENTRY ANGLE WILL BE ACHIEVED\n\nPREC140\t\tDLOAD\tBZE\n\t\t\tNN1A\n\t\t\tPREC162\nPREC150\t\tDLOAD\tSL2\t\t\t\t\t\tB2\n\t\t\tP/RPRE\n\t\tDMP\tSL1\t\t# BETA2=BETA1*P/R\t\tB2\tPL02\n\t\t\tBETA1\n\t\tPUSH\tDLOAD\n\t\t\tR/APRE\n\t\tSL4\tDMP\n\t\t\t00D\n\t\tBDSU\tBMN\t\t# BETA3=1-BETA2*R/A\n\t\t\t1RTEB4\n\t\t\tPREC160\nPREC155\t\tSL2\tSQRT\n\t\tDMP\tBDSU\n\t\t\tPHI2\n\t\t\t1RTEB3\n\t\tNORM\tPDDL\n\t\t\tX1\n\t\tSR1\tDDV\t\t# BETA4=BETA2/(1-PHI2*SQRT(BETA3))\n\t\tSL*\tGOTO\t\t\t\t\t\tB1\n\t\t\t0\t-1,1\n\t\t\tPREC165\nPREC160\t\tDLOAD\tNORM\n\t\t\tR/APRE\n\t\t\tX1\n\t\tBDDV\tSL*\t\t\t\t\t\tB1\n\t\t\t1RTEB1\n\t\t\t0\t-6,1\n\t\tGOTO\n\t\t\tPREC165\nPREC162\t\tDLOAD\tNORM\n\t\t\tRPRE\n\t\t\tX1\n\t\tBDDV\tSL*\t\t# BETA4=RD/RPRE\t\t\tB1\n\t\t\tRD\n\t\t\t0 -1,1\nPREC165\t\tSETPD\tPUSH\n\t\t\t0\n\t\tDSU\tDCOMP\n# Page 910\n\t\t\t1RTEB1\n\t\tSTORE\tBETA12\n\t\tBMN\tDLOAD\n\t\t\tPREC168\n\t\t\tX(T2)PRE\n\t\tBMN\tDLOAD\n\t\t\tPREC167\n\t\t\tBETA12\n\t\tDCOMP\n\t\tSTORE\tBETA12\nPREC167\t\tDLOAD\n\t\t\tBETA12\nPREC168\t\tABS\tDSU\n\t\t\tEPC6RTE\n\t\tBMN\tDLOAD\n\t\t\tPREC175\n\t\tDMP\tSL1\n\t\t\tRPRE\n\t\tPUSH\t\t\t# RF = NEW RADIUS\nPREC170\t\tDLOAD\tDAD\n\t\t\tNN2\n\t\t\t1RTEB28\n\t\tSTORE\tNN2\n\t\tVLOAD\tSET\n\t\t\tR(T2)/\n\t\t\tRVSW\n\t\tSTOVL\tRVEC\n\t\t\tV(T2)/\n\t\tSIGN\n\t\t\tBETA12\n\t\tSTODL\tVVEC\n\t\t\t1RTEB1\n\t\tSIGN\tDCOMP\n\t\t\tBETA12\n\t\tLXA,2\tDLOAD\n\t\t\tMPAC\n\t\tLXC,1\tSXA,2\n\t\t\tCONICX1\n\t\t\tSGNRDOT\n\t\tSTCALL\tRDESIRED\t# COMPUTED DT12 (CORRECTION TO TIME OF\n\t\t\tTIMERAD\t\t#\tNEW RADIUS)\n\t\tDLOAD\tSIGN\n\t\t\tT\n\t\t\tBETA12\n\t\tPDDL\tNORM\t\t# DT21=(PHI4)DT21\t\t\tPL02D\n\t\t\tDT21PR\n\t\t\tX1\n\t\tBDDV\tSL*\n\t\t\t00D\n\t\t\t0 -3,1\n# Page 911\n\t\tPUSH\tBMN\t\t# BETA13=(DT21)/(DT21PR)\tR3 \tPL04D\n\t\t\tPREC172\n\t\tDLOAD\tPDDL\t\t# BETA14=1\t\t\tB0 \tPL04D\n\t\t\t2RTEB1\n\t\tGOTO\n\t\t\tPREC173\nPREC172\t\tDLOAD\tPDDL\t\t# BETA14=.6\t\t\tB0 \tPL04D\n\t\t\tM.6RTE\nPREC173\t\tDDV\tDSU\n\t\t\t02D\n\t\t\t1RTEB3\n\t\tBMN\tDLOAD\n\t\t\tPREC174\n\t\tDMP\n\t\t\tDT21PR\n\t\tSTORE\t00D\t\t# DT21=(BETA14)DT21PR\t\tB28\nPREC174\t\tDLOAD\tPUSH\n\t\t\t00D\n\t\tSTCALL\tDT21PR\n\t\t\tRTENCK2\n\t\tGOTO\n\t\t\tPREC125\nPREC175\t\tDLOAD\tDSU\n\t\t\tRPRE\n\t\t\tRD\n\t\tPUSH\tABS\t\t# RPRE-RD = RERR\n\t\tDSU\tBMN\n\t\t\tEPC7RTE\n\t\t\tPREC220\n\n# DESIRED RADIUS HAS NOT BEEN ACHIEVED\n\n\t\tDLOAD\tBZE\n\t\t\tNN1A\n\t\t\tPREC132\t\t# TOO MANY ITERATIONS\n\t\tDSU\tBZE\n\t\t\t10RTE\n\t\t\tPREC207\nPREC205\t\tDLOAD\tDSU\t\t# NOT FIRST PASS OF ITERATION\n\t\t\tRPRE'\n\t\t\tRPRE\t\t# RPRE'-RPRE\t\t\tB29/B27\n\t\tNORM\tBDDV\n\t\t\tX2\n\t\t\tDRCON\n\t\tSL*\tPUSH\t\t# DRCON/(RPRE'-RPRE)=S\t\tB2\n\t\t\t0 -2,2\n\t\tDAD\tBOV\t\t# S GR +4 OR LS -4\n\t\t\t1RTEB1\n\t\t\tPREC205M\n\t\tABS\tDSU\n# Page 912\n\t\t\t1RTEB1\n\t\tBMN\n\t\t\tPREC206\nPREC205M\tDLOAD\tDCOMP\t\t# S GR 0 OR LS -4\n\t\t\t2RTEB1\n\t\tPDDL\t\t\t# S=-4\t\t\t\tB2\nPREC206\t\tDLOAD\tDMP\n\t\tSL2\n\t\tSTORE\tDRCON\t\t# DRCON=S(RERR)\t\t\tB29\n\t\tDAD\n\t\t\tRCON\n\t\tSTORE\tRCON\t\t# RCON+DRCON=RCON\n\t\tGOTO\n\t\t\tPREC210\nPREC207\t\tDLOAD\tDSQ\t\t# FIRST PASS OF ITERATION\n\t\t\tRD\n\t\tNORM\tSR1\n\t\t\tX1\n\t\tPDDL\tNORM\n\t\t\tRPRE\n\t\t\tX2\n\t\tXSU,1\tBDDV\n\t\t\tX2\n\t\tSR*\n\t\t\t0 -1,1\n\t\tSTORE\tRCON\t\t# RD**2/RPRE=RCON\n\t\tDSU\n\t\t\tRD\n\t\tSTORE\tDRCON\t\t# RCON-RD=DRCON\nPREC210\t\tDLOAD\t\t\t# PREPARE FOR NEXT ITERATION\n\t\t\tRPRE\n\t\tSTODL\tRPRE'\n\t\t\tNN1A\n\t\tDSU\n\t\t\t1RTEB28\n\t\tSTCALL\tNN1A\n\t\t\tV2T100\n\t\tBHIZ\tGOTO\n\t\t\tPREC120\n\t\t\tPRECX\n\n# DESIRED RADIUS ACHIEVED\n\n\t\tSETLOC\tRTE2\n\t\tBANK\nPREC220\t\tDLOAD\tDSU\n\t\t\tX(T2)\n\t\t\tX(T2)PRE\n\t\tABS\tDSU\n\t\t\tEPC8RTE\n# Page 913\n\t\tBMN\tSLOAD\n\t\t\tPREC225\n\t\t\tOCT613\n\t\tGOTO\n\t\t\tPRECX\t\t# IF REENTRY ANGLE OUT OF LIMITS\n\nEPC8RTE\t\t2DEC\t.002\n\nOCT613\t\tOCT\t613\n\n# DESIRED FINAL ANGLE HAS BEEN REACHED.\n\n\t\tSETLOC\tRTE\n\t\tBANK\nPREC225\t\tDLOAD\n\t\t\tZERORTE\nPRECX\t\tGOTO\n\t\t\tSPRTEX\n\n# Page 914\n# INTEGRATION CALLING SUBROUTINE\n#\n# DESCRIPTION\n#\tPERFORMS CONIC AND PRECISION INTEGRATIONS USING SUBROUTINE INTEGRVS.  THERE ARE THREE ENTRANCES (RTENCK1,\n#\tRTENCK2, AND RTENCK3) FOR DIFFERENT SOURCES OF INPUT AND DIFFERENT OPTIONS.  THERE IS A COMMON SET OF OUTPUT\n# \tWHICH INCLUDES SET UP OF INPUT FOR THE PARAM SUBROUTINE.\n#\n# RTENCK1 (CONIC INTEGRATION)\n#\n#    CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tRTENCK1\n#\n#    ERASABLE INITIALIZATION REQUIRED\n#\tSAME AS FOR THE RTENCK3 ENTRANCE\n#\n# RTENCK2 (PRECISION INTEGRATION)\n#\n#    CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tRTENCK2\n#\n#    ERASABLE INITIALIZATION REQUIRED\n#\tPUSHLIST\n#\t    PUSHLOC-2\tINTEGRATION TIME DT12 (CORRECTION TO T2)\t\tDP\tB28\tCS\n#\tOTHER\n#\t    R(T2)/\tFINAL POSITION VECTOR\t\t\t\t\tVECTOR\tB29\tMETERS\n#\t    V(T2)/\tFINAL VELOCITY VECTOR\t\t\t\t\tVECTOR\tB7\tMETERS/CS\n#\t    T2\t\tFINAL TIME\t\t\t\t\t\tDP\tB28\tCS\n#\n# RTENCK3 (PRECISION INTEGRATION)\n#\n#    CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tRTENCK3\n#\n#    ERASABLE INITIALIZATION REQUIRED\n#\tR(T1)/\t\tINITIAL POSITION VECTOR\t\t\t\t\tVECTOR\tB29\tMETERS\n#\tV2(T1)/\t\tPOST IMPULSE INITIAL VELOCITY VECTOR\t\t\tVECTOR\tB7\tM/CS\n#\tT1\t\tINITIAL VECTOR TIME\t\t\t\t\tDP\tB28\tCS\n#\tT2\t\tFINAL TIME\t\t\t\t\t\tDP\tB28\tCS\n#\n# EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE\n#\n# SUBROUTINES CALLED\n#\tINTSTALL\n#\tINTEGRVS\n#\n# OUTPUT\n#    PUSHLIST\n# Page 915\n#\tPUSHLOC-6\tFINAL POSITION VECTOR R(T2)/\t\t\t\tVECTOR\tB29\tMETERS\n#\tX1\t\tCONICS MUTABLE ENTRY FOR EARTH (-2)\t\t\tSP\tB14\n#    MPAC\n#\t\t\tFINAL VELOCITY VECTOR V(T2)/\t\t\t\tVECTOR\tB7\tM/CS\n#    OTHER\n#\tR(T2)/\t\tAS IN PUSHLIST\n#\tV(T2)/\t\tAS IN MPAC\n#\tT2\t\tFINAL TIME\t\t\t\t\t\tDP\tB28\tCS\n\n\t\tSETLOC\tRTE3\n\t\tBANK\nRTENCK1\t\tSTQ\tCALL\n\t\t\tRTENCKEX\n\t\t\tINTSTALL\n\t\tVLOAD\tSET\n\t\t\tR(T1)/\n\t\t\tINTYPFLG\n\t\tGOTO\n\t\t\tRTENCK3B\n\nRTENCK2\t\tSTQ\tCALL\n\t\t\tRTENCKEX\n\t\t\tINTSTALL\n\t\tCLEAR\tVLOAD\n\t\t\tINTYPFLG\n\t\t\tR(T2)/\n\t\tSTOVL\tRCV\n\t\t\tV(T2)/\n\t\tSTODL\tVCV\n\t\t\tT2\n\t\tSTORE\tTET\n\t\tDAD\n\t\tGOTO\n\t\t\tRTENCK3D\n\nRTENCK3\t\tSTQ\tCALL\n\t\t\tRTENCKEX\n\t\t\tINTSTALL\nRTENCK3A\tVLOAD\tCLEAR\n\t\t\tR(T1)/\n\t\t\tINTYPFLG\nRTENCK3B\tSTOVL\tRCV\n\t\t\tV2(T1)/\n\t\tSTODL\tVCV\n\t\t\tT1\n\t\tSTODL\tTET\n\t\t\tT2\n# Page 916\nRTENCK3D\tSTORE\tTDEC1\n\t\tCLEAR\tCALL\n\t\t\tMOONFLAG\n\t\t\tINTEGRVS\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTORE\tR(T2)/\n\t\tPDDL\tLXC,1\n\t\t\tTAT\n\t\t\tCONICX1\n\t\tSTOVL\tT2\n\t\t\tVATT\n\t\tSTORE\tV(T2)/\n\t\tGOTO\n\t\t\tRTENCKEX\n\t\tSETLOC\tRTE\n\t\tBANK\n\n# Page 917\n# V2(T1) COMPUTATION SUBROUTINE\n#\n# DESCRIPTION\n#\tA POST IMPULSE VELOCITY VECTOR (V2(T1)) IS COMPUTED WHICH EITHER\n#\t(1)\tMEETS THE INPUT VELOCITY CHANGE DESIRED (RTEDVD) IN A MINIMUM TIME\tOR\n#\t(2)\tIF A VELOCITY CHANGE ISN'T SPECIFIED (RTEDVD = 0), A V2(T1) IS COMPUTED WHICH MINIMIZES THE IMPULSE (DV)\n#\t\tAND CONSEQUENTLY FUEL.\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tV2T100\n#\n# NORMAL EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE WITH MPAC = 0\n#\n# ALARM EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE WITH MPAC = OCTAL 605 FOR EXCESS ITERATIONS.\n#\n# SUBROUTINES CALLED\n#\tGAMDV10\n#\tXT1LIM\n#\tDVCALC\n#\n# ERASABLE INITIALIZATION REQUIRED\n#    PUSHLIST\n#\tNONE\n#    MPAC\n#\tNONE\n#    OTHER\n#\tR(T1)\t\tMAGNITUDE OF INITIAL POSITION VECTOR\t\t\tDP\tB29/B27\tMETERS\n#\tRCON\t\tMAGNITUDE OF FINAL POSITION VECTOR\t\t\tDP\tB29/B27\tMETERS\n#\tV(T1)/\t\tINITIAL VELOCITY VECTOR\t\t\t\t\tVECTOR\tB7/B5\tMETERS/CS\n#\tRTEDVD\t\tDELTA VELOCITY DESIRED\t\t\t\t\tDP\tB7/B5\tMETERS/CS\n#\tUR1/\t\tUNIT INITIAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tUH/\t\tUNIT HORIZONTAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tX(T2)\t\tCOTANGENT OF FINAL FLIGHT PATH ANGLE\t\t\tDP\tB0\n#\tX(T1)\t\tCOTANGENT OF INITIAL FLIGHT PATH ANGLE (INPUT FOR PREC)\tDP\tB5\n#\tCFPA\t\tCOSINE OF INITIAL FLIGHT PATH ANGLE\t\t\tDP\tB1\n#\tMAMAX1\t\tMAJOR AXIS LIMIT FOR LOWER BOUND ON GAMDV ITERATOR\tDP\tB30/B28\tMETERS\n#\tMAMAX2\t\tMAJOR AXIS LIMIT FOR UPPER BOUND ON GAMDV ITERATOR\tDP\tB30/B28\tMETERS\n#\tPHI2\t\tREENTRY NEAR PERIGEE OR APOGEE INDICATE (RTE ONLY)\tDP\tB2\t-1 PERIGEE, +1 APOGEE\n#\tN1\t\tCONIC OR PRECISION ITERATION OPERATOR\t\t\tDP\tB28\tNEGATIVE CONIC, PLUS PREC\n#\n# OUTPUT\n#\tV2(T1)/\t\tPOST IMPULSE INITIAL VELOCITY VECTOR\t\t\tVECTOR\tB7/B5\tMETERS/CS\n#\tDV\t\tINITIAL VELOCITY CHANGE\t\t\t\t\tDP\tB7/B5\tMETERS/CS\n#\tX(T1)\t\tCOTANGENT OF INITIAL FLIGHT PATH ANGLE (POST IMPULSE)\tDP\tB5\n#\tPCON\t\tSEMI-LATUS RECTUM\t\t\t\t\tDP\tB28/B26\tMETERS\n#\tBETA1\t\t1+X(T2)**2\t\t\t\t\t\tDP\tB1\n#\n# Page 918\n#\n# DEBRIS\n#    PUSHLIST\n#\t00D\t\tX(T1),,=PREVIOUS PRECISION X(T1)\t\t\tDP\tB5\n#\t02D\t\tTHETA1=BETA5*LAMBDA-1\t\t\t\t\tTP\tB17\n#\t05D\t\tTHETA2=2*R(T1)*(LAMBDA-1)\t\t\t\tTP\tB38/B36\n#\t08D\t\tTHETA3=MU**.5/R(T1)\t\t\t\t\tDP\tB-4/B-5\n#\t10D\t\tX(T1)MIN=LOWER BOUND ON X(T1) IN GAMDV ITERATOR\t\tDP\tB5\n#\t12D\t\tDX(T1)MAX=MAXIMUM DELTA X(T1)\t\t\t\tDP\tB5\n#\t14D\t\tX(T1)MAX=UPPER BOUND ON X(T1) IN GAMDV ITERATOR\t\tDP\tB5\n#\t16D\t\tDX(T1)=ITERATOR INCREMENT\t\t\t\tDP\tB5\n#\t31D\t\tGAMDV10 SUBROUTINE RETURN ADDRESS\n#\t32D\t\tDVCALC SUBROUTINE RETURN ADDRESS\n#\t33D\t\tV2T100 SUBROUTINE RETURN ADDRESS\n\nV2T100\t\tSTQ\tDLOAD\n\t\t\t33D\n\t\t\tRCON\n\t\tBMN\tDSU\t\t# ABORT IF RCON NEGATIVE\n\t\t\tV2TERROR\n\t\t\tR(T1)\n\t\tBMN\n\t\t\tV2T101\nV2TERROR\tEXIT\t\t\t#\tOR IF LAMBDA LESS THAN ONE\n\t\tTC\tPOODOO\t\t# NO SOLUTION IF LAMBDA LESS THAN 1\n\t\tOCT\t00610\nV2T101\t\tSETPD\tCLEAR\n\t\t\t0\t\t#\t\t\t\t\tPL00D\n\t\t\tF2RTE\n\t\tDLOAD\tNORM\n\t\t\tRCON\n\t\t\tX1\n\t\tPDDL\tNORM\n\t\t\tR(T1)\n\t\t\tS1\n\t\tSTORE\t10D\n\t\tSR1\tDDV\t\t# R1/RCON = LAMBDA\t\tB1\n\t\tXSU,1\tPDDL\t\t#\t\t\t\t\tPL02D\n\t\t\tS1\n\t\t\tX(T2)\n\t\tDSQ\n\t\tSR1\tDAD\n\t\t\t1RTEB1\n\t\tSTORE\tBETA1\t\t# 1+X(T2)**2 = BETA1\t\tB1\n\t\tDMP\n\t\t\t00D\n\t\tSTORE\t28D\t\t# BETAI*LAMBDA = BETA5\n\t\tDMP\tSL*\n\t\t\t00D\n\t\t\t0 -7,1\n\t\tSL*\tDSU\n# Page 919\n\t\t\t0 -7,1\n\t\t\t1RTEB17\n\t\tRTB\tPDDL\t\t# BETA5*LAMBDA-1 = THETA1\tB17\tPL05D\n\t\t\tTPMODE\n\t\t\t1RTEB1\n\t\tSR*\tDCOMP\n\t\t\t0,1\n\t\tDAD\tDMP\n\t\t\t00D\n\t\t\tR(T1)\n\t\tSL*\tRTB\n\t\t\t0 -7D,1\n\t\t\tTPMODE\n\t\tPDDL\t\t\t# 2*R(T1)*(LAMBDA-1)=THETA2\tB38/B36 PL08D\n\t\t\tRTMURTE\n\t\tNORM\tSR1\n\t\t\tX2\n\t\tXSU,2\tDDV\n\t\t\tS1\n\t\t\t10D\n\t\tSR*\tPDDL\t\t# MU**.5/R(T1)=THETA3\t\tB-4/B-5 PL10D\n\t\t\t6,2\n\t\t\tMAMAX1\n\t\tPUSH\tPUSH\t\t# MAMAX1=MA\n\t\tCALL\n\t\t\tXT1LIM\n\t\tDCOMP\tPUSH\t\t# X(T1)MIN\t\t\tB5 \tPL12D\n\t\tDCOMP\tSR4\n\t\tPDDL\tPUSH\t\t# DX(T1)MAX\t\t\tB5 \tPL14D\n\t\t\tMAMAX2\n\t\tPUSH\tCALL\n\t\t\tXT1LIM\n\t\tPDDL\tBMN\t\t# X(T1)MAX\t\t\tB5 \tPL16D\n\t\t\tNN1A\n\t\t\tV2T102\n\t\tGOTO\n\t\t\tV2T110\n\n# PROCEED HERE IF NOT PRECISION COMPUTATION\n\nV2T102\t\tDLOAD\n\t\t\tRTEDVD\n\t\tBZE\tGOTO\n\t\t\tV2T105\n\t\t\tV2T140\nV2T105\t\tDLOAD\tBMN\n\t\t\tCFPA\n\t\t\tV2T140\n\t\tGOTO\n\t\t\tV2T145\n# Page 920\n# DURING A PRECISION TRAJECTORY ITERATION CONSTRAIN THE INDEPENDENT\n# VARIABLE TO INSURE THAT ALL CONICS PASS THROUGH RCON ON THE SAME PASS\n# THROUGH X(T2)\n\nV2T110\t\tDLOAD\tRTB\n\t\t\t1RTEB17\n\t\t\tTPMODE\n\t\tDCOMP\tPDDL\t\t# -1\t\t\t\tB17 \tPL19D\n\t\t\t2RTEB1\n\t\tSR*\tDSU\n\t\t\t0,1\n\t\t\t00D\n\t\tDMP\tSL*\n\t\t\t28D\n\t\t\t0 -7,1\n\t\tSL*\tTAD\n\t\t\t0 -7,1\n\t\tRTB\tPDDL\t\t# BETA5(2-LAMBDA)-1=BETA6\tB17 \tPL19D\n\t\t\tTPMODE\n\t\t\tX(T1)\n\t\tSTORE\t00D\t\t# X(T1),,\t\t\tB5\n\t\tTLOAD\t\t\t#\t\t\t\t\tPL16D\n\t\tBMN\tBZE\n\t\t\tV2T115\n\t\t\tV2T115\n\t\tSL\tGOTO\n\t\t\t7\n\t\t\tV2T120\nV2T115\t\tDLOAD\tBMN\n\t\t\tPHI2\n\t\t\tV2T125\n\t\tDCOMP\n\t\tSTODL\tPHI2\n\t\t\t10RTE\n\t\tSTORE\tNN1A\n\t\tGOTO\n\t\t\tV2T125\nV2T120\t\tSQRT\tRTB\n\t\t\tDPMODE\n\t\tPDDL\tBMN\t\t# BETA6**.5=X(T1)LIM\t\tB5 \tPL18D\n\t\t\tPHI2\n\t\t\tV2T130\n\t\tDLOAD\tSTADR\n\t\tSTORE\t14D\t\t# X(T1)LIM = X(T1)MAX\n\t\tDCOMP\n\t\tSTORE\t10D\t\t# -X(T1)LIM = X(T1)MIN\nV2T125\t\tDLOAD\tBZE\n\t\t\tX(T1)\n\t\t\tV2T140\n\t\tBMN\tGOTO\n# Page 921\n\t\t\tV2T140\n\t\t\tV2T145\nV2T130\t\tDLOAD\tBZE\n\t\t\tX(T1)\n\t\t\tV2T135\n\t\tBMN\tDLOAD\t\t#\t\t\t\t\tPL16D\n\t\t\tV2T135\n\t\tSTADR\n\t\tSTORE\t10D\t\t# X(T1)LIM = X(T1)MIN\n\t\tGOTO\n\t\t\tV2T145\nV2T135\t\tDLOAD\tDCOMP\t\t#\t\t\t\t\tPL16D\n\t\tSTADR\n\t\tSTORE\t14D\t\t# -X(T1)LIM = X(T1)MAX\nV2T140\t\tDLOAD\n\t\t\t10D\n\t\tSTODL\tX(T1)\t\t# X(T1)MIN = X(T1)\n\t\t\t12D\n\t\tPUSH\tGOTO\t\t# DX(T1)MAX = DX(T1)\t\t\tPL18D\n\t\t\tV2T150\nV2T145\t\tDLOAD\n\t\t\t14D\n\t\tSTODL\tX(T1)\t\t# X(T1)MAX = X(T1)\n\t\t\t12D\n\t\tDCOMP\tPUSH\t\t# -DX(T1)MAX = DX(T1)\t\t\tPL18D\nV2T150\t\tCALL\t\t\t# GOTO X(T1)-DV ITERATOR\n\t\t\tGAMDV10\n\t\tDLOAD\tBZE\t\t# EXIT IF MINIMUM FUEL MODE\n\t\t\tRTEDVD\n\t\t\tV2T1X\n\n# CONTINUE IF TIME CRITICAL MODE\n\n\t\tDSU\tBMN\n\t\t\tDV\n\t\t\tV2T155\n\t\tGOTO\n\t\t\tV2T175\nV2T155\t\tDLOAD\tBMN\n\t\t\tNN1A\n\t\t\tV2T160\n\t\tGOTO\n\t\t\tV2T185\n\n# CONIC TRAJECTORY COMPUTATION\n\nV2T160\t\tDLOAD\tBZE\n\t\t\tX(T1)\n\t\t\tV2T165\n\t\tBMN\tGOTO\n# Page 922\n\t\t\tV2T165\n\t\t\tV2T300\nV2T165\t\tDLOAD\tBZE\n\t\t\tCFPA\n\t\t\tV2T300\n\t\tBMN\tDLOAD\n\t\t\tV2T300\n\t\t\t14D\n\t\tSTODL\tX(T1)\t\t# X(T1)MAX=X(T1)\n\t\t\t12D\n\t\tDCOMP\n\t\tSTCALL\t16D\t\t# -DX(T1)MAX=DX(T1)\n\t\t\tGAMDV10\n\t\tDLOAD\tDSU\n\t\t\tRTEDVD\n\t\t\tDV\n\t\tBMN\n\t\t\tV2T300\nV2T175\t\tSET\tDLOAD\n\t\t\tF2RTE\n\t\t\tX(T1)\n\t\tBOFF\n\t\t\tSLOWFLG\n\t\t\tV2T177\n\t\tSTODL\t10D\t\t# X(T1)MIN\n\t\t\t12D\t\t# DX(T1)MAX\n\t\tGOTO\n\t\t\tV2T179\nV2T177\t\tSTODL\t14D\n\t\t\t12D\n\t\tDCOMP\nV2T179\t\tSTCALL\t16D\t\t# DX(T1)\n\t\t\tGAMDV10\n\t\tDLOAD\tBMN\n\t\t\tNN1A\n\t\t\tV2T300\n\n# PREVENT A LARGE CHANGE IN INDEPENDENT VARIABLE DURING AN ITERATION FOR A\n# PRECISION TRAJECTORY\n\nV2T185\t\tDLOAD\tDSU\n\t\t\tX(T1)\n\t\t\t00D\n\t\tABS\tPDDL\t\t# /X(T1)-X(T1),,/ = BETA7\n\t\t\t12D\n\t\tSL1\tBDSU\n\t\tBMN\tDLOAD\n\t\t\tV2T300\n\t\t\t00D\t\t# CONTINUE IF BETA7 LARGER THAN 2DX(T1)MAX\n\t\tSTORE\tX(T1)\t\t# X(T1),, = X(T1)\n# Page 923\n\t\tDSU\tBMN\n\t\t\t14D\n\t\t\tV2T195\n\t\tDLOAD\n\t\t\t14D\n\t\tSTORE\tX(T1)\t\t# X(T1)MAX = X(T1)\n\t\tGOTO\n\t\t\tV2T205\nV2T195\t\tDLOAD\tDSU\n\t\t\tX(T1)\n\t\t\t10D\n\t\tBMN\tGOTO\n\t\t\tV2T200\n\t\t\tV2T205\nV2T200\t\tDLOAD\n\t\t\t10D\n\t\tSTORE\tX(T1)\t\t# X(T1)MIN = X(T1)\nV2T205\t\tCALL\n\t\t\tDVCALC\nV2T300\t\tDLOAD\n\t\t\tZERORTE\nV2T1X\t\tGOTO\n\t\t\t33D\n\n# Page 924\n# X(T1)-DV ITERATOR SUBROUTINE\n#\n# DESCRIPTION\n#\tCOMPUTES A POST IMPULSE VELOCITY VECTOR (V2(T1)) WHICH REQUIRES A MINIMUM DV.\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tGAMDV10\n#\n# NORMAL EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE\n#\n# ALARM EXIT MODE\n#\tAT V2T1X WITH MPAC = OCTAL 605 FOR EXCESS ITERATIONS\n#\n# SUBROUTINES CALLED\n#\tDVCALC\n#\n# ERASABLE INITIALIZATION REQUIRED\n#    PUSHLIST\n#\t02D\t\tTHETA1=BETA5*LAMBDA-1\t\t\t\t\tTP\tB17\n#\t05D\t\tTHETA2=2*R(T1)*(LAMBDA-1)\t\t\t\tTP\tB38/B36\n#\t08D\t\tTHETA3=MU**.5/R(T1)\t\t\t\t\tDP\tB-4/B-5\n#\t10D\t\tX(T1)MIN=LOWER BOUND ON INDEPENDENT VARIABLE X(T1)\tDP\tB5\n#\t12D\t\tDX(T1)MAX=MAXIMUM DX(T1)\t\t\t\tDP\tB5\n#\t14D\t\tX(T1)MAX=UPPER BOUND ON INDEPENDENT VARIABLE X(T1)\tDP\tB5\n#\t16D\t\tDX(T1)=ITERATOR INCREMENT\t\t\t\tDP\tB5\n#    MPAC\n#\tNONE\n#    OTHER\n#\tV(T1)/\t\tINITIAL VELOCITY VECTOR\t\t\t\t\tVECTOR\tB7/B5\tMETERS/CS\n#\tRTEDVD\t\tDELTA VELOCITY DESIRED\t\t\t\t\tDP\tB7/B5\tMETERS/CS\n#\tUR1/\t\tUNIT INITIAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tUH/\t\tUNIT HORIZONTAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tX(T1)\t\tCOTANGENT OF INITIAL FLIGHT PATH ANGLE (FROM VERTICAL)\tDP\tB5\n#\tF2RTE\t\tTIME CRITICAL OR MINIMUM FUEL MODE INDICATOR\t\tSTATE AREA\t0 MIN. FUEL, 1 MIN. TIME\n#\n# OUTPUT\n#\tV2(T1)/\t\tPOST IMPULSE INITIAL VELOCITY VECTOR\t\t\tVECTOR\tB7/B5\tMETERS/CS\n#\tDV\t\tINITIAL VELOCITY CHANGE\t\t\t\t\tDP\tB7/B5\tMETERS/CS\n#\tX(T1)\t\tCOTANGENT OF INITIAL FPA MEASURED FROM VERTICAL\t\tDP\tB5\n#\tPCON\t\tSEMI-LATUS RECTUM\t\t\t\t\tDP\tB28/B26\tMETERS\n#\n# DEBRIS\n#    PUSHLIST\n#\t00D\t\tX(T1),,\n#\t02D\t\tTHETA1\n#\t05D\t\tTHETA2\n#\t08D\t\tTHETA3\n#\t10D\t\tX(T1)MIN\n#\t12D\t\tDX(T1)MAX\n# Page 925\n#\t14D\t\tX(T1)MAX\n#\t16D\t\tDX(T1)\n#\t22D\t\tDV,=PREVIOUS DV\t\t\t\t\t\tDP\tB7/B5\n#\t24D\t\tBETA9=X(T1)+1.1DX(T1)\t\t\t\t\tDP\tB5\n#\t31D\t\tGAMDV10 SUBROUTINE RETURN ADDRESS\n#\t32D\t\tDVCALC SUBROUTINE RETURN ADDRESS\n#\t33D\t\tV2T100 SUBROUTINE RETURN ADDRESS\n\nGAMDV10\t\tSTQ\n\t\t\t31D\n\t\tSETPD\tCALL\n\t\t\t18D\t\t#\t\t\t\t\tPL18D\n\t\t\tDVCALC\n\t\tDLOAD\tDSU\n\t\t\t14D\n\t\t\t10D\n\t\tBOV\n\t\t\tGAMDV20\n\t\tPUSH\tDSU\t\t# X(T1)MAX-X(T1)MIN=BETA8\tB5 \tPL20D\n\t\t\tEPC9RTE\n\t\tBMN\tDLOAD\n\t\t\tGAMDVX\t\t# BOUNDS CLOSE TOGETHER\n\t\t\t18D\n\t\tDSU\tBMN\t\t# BETA8-DX(T1)MAX\n\t\t\t12D\n\t\t\tGAMDV15\n\t\tSETPD\tGOTO\t\t#\t\t\t\t\tPL18D\n\t\t\t18D\n\t\t\tGAMDV20\nGAMDV15\t\tDLOAD\t\t\t#\t\t\t\t\tPL18D\n\t\tSIGN\tSR1\n\t\t\t16D\n\t\tSTORE\t16D\t\t# BETA8(SIGNDX(T1))/2=DX(T1)\nGAMDV20\t\tDLOAD\n\t\t\tM144RTE\n\t\tSTORE\tNN2\nGAMDV25\t\tDLOAD\tDAD\n\t\t\tNN2\n\t\t\t1RTEB28\n\t\tBMN\tSLOAD\n\t\t\tGAMDV30\n\t\t\tOCT605\n\t\tGOTO\n\t\t\tV2T1X\nGAMDV30\t\tSTORE\tNN2\t\t# NN2=NN2+1\n\t\tDLOAD\tPDDL\t\t# X(T1)=X(T1),\t\t\tB5 \tPL20D\n\t\t\tX(T1)\n\t\t\tDV\n\t\tPDDL\tDAD\t\t# DV=DV,\t\t\tB7/B5 \tPL22D\n\t\t\tX(T1)\n\t\t\t16D\n# Page 926\n\t\tSTCALL\tX(T1)\t\t# X(T1)+DX(T1)=X(T1)\t\tB5\n\t\t\tDVCALC\n\t\tBON\tDLOAD\n\t\t\tF2RTE\n\t\t\tGAMDV35\n\t\t\tDV\n\t\tDSU\tBMN\t\t# CONTINUE IF FUEL CRITICAL MODE\n\t\t\t20D\n\t\t\tGAMDV33\nGAMDV32\t\tDLOAD\tDCOMP\n\t\t\t16D\n\t\tSR1\n\t\tSTORE\t16D\nGAMDV33\t\tSETPD\tGOTO\n\t\t\t18D\t\t#\t\t\t\t\tPL18D\n\t\t\tGAMDV50\n\n# TIME CRITICAL MODE\n\nGAMDV35\t\tDLOAD\tDSU\n\t\t\tRTEDVD\n\t\t\tDV\n\t\tPDDL\tPUSH\t\t# DVD-DV=DVERR\t\t\tB7/B5 \tPL22D\nGAMDV40\t\tDLOAD\tABS\t\t# DV,\t\t\t\t\tPL24D\n\t\t\t20D\n\t\tDSU\tBMN\n\t\t\tEPC10RTE\n\t\t\tGAMDVX\nGAMDV45\t\tBOVB\tDLOAD\n\t\t\tTCDANZIG\t# ASSURE OVFIND IS 0\n\t\tBDSU\tNORM\n\t\t\tDV\n\t\t\tX2\n\t\tPDDL\t\t\t# DV-DV,\t\t\tB7/B5-N2 PL22D\n\t\tNORM\tSR1\t\t# DVERR\t\t\t\tB8/B6-N1\n\t\t\tX1\n\t\tDDV\tPDDL\t\t# DVERR/ DV - DV\n\t\tBDSU\tDMP\t\t#\t\t\t\t\tPL18D\n\t\t\tX(T1)\n\t\tXSU,1\n\t\t\tX2\n\t\tSTORE\t16D\t\t# PRESERVE SIGN IF OVERFLOW\n\t\tSR*\tBOV\n\t\t\t0 -1,1\n\t\t\tGAMDV47\n\t\tSTORE\t16D\t\t# (X(T1)-X(T1),)DVERR/(DV-DV,)=DX(T1)\n\t\tABS\tDSU\n\t\t\t12D\n\t\tBMN\n\t\t\tGAMDV50\n# Page 927\nGAMDV47\t\tDLOAD\tSIGN\n\t\t\t12D\n\t\t\t16D\n\t\tSTORE\t16D\t\t# DX(T1)MAX(SIGNDX(T1))=DX(T1)\n\n# CHECK TO KEEP INDEPENDENT VARIABLE IN BOUNDS\n\nGAMDV50\t\tDLOAD\tDMP\n\t\t\t16D\n\t\t\t1.1RTEB1\n\t\tSL1\tDAD\n\t\t\tX(T1)\n\t\tSTORE\t24D\t\t# X(T1)+1.1DX(T1)=BETA9\t\tB5\n\t\tDSU\tBMN\n\t\t\t14D\n\t\t\tGAMDV55\n\t\tDLOAD\tDSU\n\t\t\t14D\n\t\t\tX(T1)\n\t\tSR1\n\t\tSTCALL\t16D\t\t# (X(T1)MAX-X(T1))/2=DX(T1)\tB5\n\t\t\tGAMDV65\nGAMDV55\t\tDLOAD\tDSU\n\t\t\t24D\n\t\t\t10D\n\t\tBMN\tGOTO\n\t\t\tGAMDV60\n\t\t\tGAMDV65\nGAMDV60\t\tDLOAD\tDSU\n\t\t\t10D\n\t\t\tX(T1)\n\t\tSR1\n\t\tSTORE\t16D\t\t# (X(T1)MIN-X(T1))/2=DX(T1)\tB5\nGAMDV65\t\tDLOAD\tABS\n\t\t\t16D\n\t\tDSU\tBMN\n\t\t\tEPC9RTE\n\t\t\tGAMDVX\n\t\tGOTO\n\t\t\tGAMDV25\nGAMDVX\t\tGOTO\n\t\t\t31D\n\n# Page 928\n# DV CALCULATION SUBROUTINE\n#\n# INPUT\n#    PUSHLIST\n#\t02D\t\tTHETA1=BETA5*LAMBDA-1\t\t\t\t\tTP\tB17\n#\t05D\t\tTHETA2=2*R(T1)*(LAMBDA-1)\t\t\t\tTP\tB38/B36\n#\t08D\t\tTHETA3=MU**.5/R(T1)\t\t\t\t\tDP\tB-4/B-5\n#    OTHER\n#\tX(T1)\t\tCOTANGENT OF POST IMPULSE INITIAL FLIGHT PATH ANGLE\tDP\tB5\n#\tV(T1)/\t\tINITIAL VELOCITY VECTOR (PRE IMPULSE)\t\t\tVECTOR\tB7/B5\tMETERS/CS\n#\tUR1/\t\tUNIT INITIAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\tUH/\t\tUNIT HORIZONTAL VECTOR\t\t\t\t\tVECTOR\tB1\n#\n# OUTPUT\n#\tV2(T1)/\t\tPOST IMPULSE INITIAL VELOCITY VECTOR\t\t\tVECTOR\tB7/B5\tMETERS/CS\n#\tDV\t\tINITIAL VELOCITY CHANGE\t\t\t\t\tDP\tB7/B5\tMETERS/CS\n#\tPCON\t\tSEMI-LATUS RECTUM\t\t\t\t\tDP\tB28/B26\tMETERS\n#\n# DEBRIS\n#\t28D\t\tTHETA3*PCON**.5\t\t\t\t\t\tDP\tB10/B8-N1\n#\tC(PUSHLOC)\tTHETA3(PCON**.5)*X(T1)*UR1/\t\t\t\tVECTOR\tB7/B5\n#\t32D\t\tDVCALC SUBROUTINE RETURN ADDRESS\n#\tX1\t\tNORMALIZATION FACTOR FOR VALUE IN 28D\n#\n# PUSHLOC IS RESTORED TO ITS ENTRANCE VALUE UPON EXITING DVCALC\n\nDVCALC\t\tSTQ\tDLOAD\n\t\t\t32D\n\t\t\tX(T1)\n\t\tDSQ\tSR\n\t\t\t7\n\t\tDCOMP\tTAD\n\t\t\t02D\n\t\tNORM\tPUSH\n\t\t\tX1\n\t\tTLOAD\tNORM\n\t\t\t05D\n\t\t\tX2\n\t\tRTB\tSR1\n\t\t\tDPMODE\n\t\tXSU,2\tDDV\n\t\t\tX1\n\t\tSR*\n\t\t\t6,2\n\t\tSTORE\tPCON\t\t# THETA2/(THETA1-X(T1)**2)=PCON\tB28/26\n\t\tSQRT\tDMP\n\t\t\t08D\n\t\tNORM\n\t\t\tX1\n\t\tSTODL\t28D\t\t# THETA3*PCON**.5\t\tB10/B8 -N1\n# Page 929\n\t\t\tX(T1)\n\t\tNORM\tVXSC\n\t\t\tX2\n\t\t\tUR1/\t\t# X(T1)*UR1/\t\t\tB5+B1 -N2\n\t\tXAD,2\tVXSC\n\t\t\tX1\n\t\t\t28D\n\t\tVSR*\tPDVL\t\t# THETA3(PCON**.5)X(T1)*UR1/\tB7/B5\n\t\t\t0 -9D,2\t\t#\t\t+\n\t\t\tUH/\n\t\tVXSC\tVSR*\t\t# THETA3(PCON**.5)UH/\t\tB7/B5\n\t\t\t28D\n\t\t\t0 -4,1\t\t#\t\t=\n\t\tVAD\tSTADR\n\t\tSTORE\tV2(T1)/\t\t# V2(T1)/\t\t\tB7/B5\n\t\tVSU\tABVAL\n\t\t\tV(T1)/\n\t\tSTORE\tDV\t\t# ABVAL(V2(T1)/-V1(T)/)=DV\tB7/B5\n\t\tGOTO\n\t\t\t32D\n\n# Page 930\n# SUBROUTINE TO COMPUTE BOUNDS ON INDEPENDENT VARIABLE X(T1)\n#\n# INPUT\n#    PUSHLIST\n#\tPUSHLOC -4\tMAJOR AXIS (MA)\t\t\t\t\t\tDP\tB30/B28\n#\tPUSHLOC -2\tMAJOR AXIS (MA) AGAIN\t\t\t\t\tDP\tB30/B28\n#\t28D\t\tBETA5=LAMBDA*BETA1\t\t\t\t\tDP\tB9\n#    OTHER\n#\tRCON\t\t\t\t\t\t\t\t\tDP\tB29/B27\n#\tR(T1)\t\t\t\t\t\t\t\t\tDP\tB29/B27\n#\n# OUTPUT\n#    MPAC\n#\tX(T1)LIM\tLIMIT ON INDEPENDENT VARIABLE X(T1)\t\t\tDP\tB5\n#\n# DEBRIS\n#    PUSHLIST\n#\tC(PUSHLOC)\tMA-RCON\t\t\t\t\t\t\tDP\t(B30/28)-N1\n#\tC(PUSHLOC) +2\tMA\t\t\t\t\t\t\tDP\tB30/B28\n#\tX1\t\tNORMALIZATION FACTOR FOR MA-RCON\n#\t20D\t\tXT1LIM SUBROUTINE RETURN ADDRESS\n#\n# PUSHLOC IS RESTORED TO ITS ENTRANCE VALUE UPON EXITING XT1LIM\n\nXT1LIM\t\tSTQ\tDLOAD\n\t\t\t20D\n\t\t\tRCON\n\t\tSR1\tBDSU\n\t\tNORM\tPDDL\t\t# MA-RCON\t\t\tB30-N1\n\t\t\tX2\n\t\tPDDL\tSR1\n\t\t\tR(T1)\n\t\tBDSU\tDDV\n\t\tSL*\tDMP\n\t\t\t0\t-3,2\n\t\t\t28D\n\t\tSL*\tDSU\t\t# BETA10=BETA5(MA-RT)/(MA-RC)-1\tB11\n\t\t\t0\t-6,1\n\t\t\t1RTEB25 +1\t# 1.0\t\t\t\tB-11\n\t\tSL1\tBOV\n\t\t\tXT1LIM2\n\t\tBMN\tGOTO\n\t\t\tXT1LIM5\n\t\t\tXT1LIM3\nXT1LIM2\t\tDLOAD\t\t\t# BETA10=POSMAX IF OVERFLOW\n\t\t\t2RTEB1\nXT1LIM3\t\tSQRT\tGOTO\t\t# X(T1)=SQRT(BETA10)\n\t\t\tXT1LIMX\nXT1LIM5\t\tDLOAD\n\t\t\tZERORTE\nXT1LIMX\t\tGOTO\n\t\t\t20D\n\n# Page 931\n# CONSTANTS FOR THE P37 AND P70 PROGRAMS AND SUBROUTINES\n\n\t\tBANK\t36\n\t\tSETLOC\tRTECON1\n\t\tBANK\n\n1RTEB1\t\t2DEC\t1. B-1\n1RTEB2\t\t2DEC\t1. B-2\n1RTEB3\t\t2DEC\t1. B-3\n1RTEB4\t\t2DEC\t1. B-4\n1RTEB10\t\t2DEC\t1. B-10\n1RTEB12\t\t2DEC\t1. B-12\n1RTEB13\t\t2DEC\t1. B-13\n1RTEB17\t\t2DEC\t1. B-17\n1RTEB25\t\t2DEC\t1. B-25\n#\t\t\t\t\t* * B25 AND B28 MUST BE CONSECUTIVE * *\n1RTEB28\t\t2DEC\t1. B-28\nZERORTE\t\t2DEC\t0\nM144RTE\t\t2DEC\t-144. B-28\nM15RTE\t\t2DEC\t-15\n10RTE\t\t2DEC\t10\nM.6RTE\t\t2DEC\t-.6\n1.1RTEB1\t2DEC\t1.1 B-1\nM6RTEB28\t2DEC\t-6\n2RTEB1\t\t2OCT\t3777737777\nM9RTEB28\t2DEC\t-9\nM8RTEB28\t2DEC\t-8\n30480RTE\t2DEC\t30480. B-29\nVCSPS\t\t2DEC\t31.510396 B-5\t# (SEE 2VEXHUST)\n# Page 932\nVCRCS\t\t2DEC\t27.0664 B-5\nMDOTRCS\t\t2DEC\t.0016375 B-3\nCSUBT\t\t2DEC\t.5\nOCT605\t\tOCT\t00605\nOCT612\t\tOCT\t00612\nMCOS7.5\t\t2DEC\t-.99144486\nMSIN7.5\t\t2DEC\t-.13052619\nMCOS22.5\t2DEC\t-.92387953 B-2\nTHETA165\t2DEC\t.4583333333\nTHETA210\t2DEC\t.5833333333\nEPC1RTE\t\t2DEC\t.99966 B-1\nEPC2RTE\t\t2DEC\t100. B-29\nEPC3RTE\t\t2DEC\t.001\nEPC4RTE\t\t2DEC\t.00001\nEPC5RTE\t\t2DEC\t.01 B-6\nEPC6RTE\t\t2DEC\t.000007 B-1\nEPC7RTE\t\t2DEC\t1000. B-29\nEPC9RTE\t\t2DEC\t1. B-25\nEPC10RTE\t2DEC\t.0001 B-7\n\n\t\tBANK\t35\n\t\tSETLOC\tRTECON1\n\t\tBANK\n\nC4RTE\t\t2DEC\t-6.986643 E7 B-30\nK1RTE\t\t2DEC\t7. E6 B-29\nK2RTE\t\t2DEC\t6495000. B-29\nK3RTE\t\t2DEC\t-.06105\nK4RTE\t\t2DEC\t-.10453\nRTMURTE\t\t2DEC\t199650.501 B-18\n# Page 933\nE3RTE\t\t2DEC\t121920. B-29\n\n"
  },
  {
    "path": "Comanche055/P40-P47.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP40-P47.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t684-736\n# Mod history:\t2009-05-11 RSB\tAdapted from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.\n#\t\t2009-05-20 RSB\tIn S20.1, a DMP DDV was corrected to DMPR DDV.\n#\t\t2009-05-22 RSB\tIn BESTTRIM, TC PACTOFF corrected to\n#\t\t\t\tTS PACTOFF.\n#\t\t2009-05-23 RSB\tPrior to the 2CADR at T5IDLDAP, added an\n#\t\t\t\tSBANK.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 684\n# PROGRAM DESCRIPTION ** P40CSM **\n\n\t\tEBANK=\tDAPDATR1\n\t\tBANK\t31\n\t\tSETLOC\tP40S\n\t\tBANK\n\n\t\tCOUNT\t24/P40\n\nP40CSM\t\tTC\tDOWNFLAG\n\t\tADRES\tENG2FLAG\n\n\t\tTC\tINTPRET\n\t\tSLOAD\tBOFF\n\t\t\tECSTEER\t\t# IS THIS AN EXTERNAL DELTA V BURN\n\t\t\tXDELVFLG\n\t\t\tP40S/C\t\t# NO\tCSTEER = ECSTEER\n\t\tDLOAD\t\t\t# YES\tCSTEER = ZERO\n\t\t\tHI6ZEROS\nP40S/C\t\tSTODL\tCSTEER\n\t\t\tFENG\t\t# SET UP THRUST FOR P40 20,000 LBS\nP40S/F\t\tSTODL\tF\t\t# P41 ENTERS HERE\n\t\t\tTIG\t\t# ORIGINAL TIG MAY BE SLIPPED BY P40S/SV\n\t\tSTORE\tNOMTIG\t\t# SET ORIGINAL TIME OF IGNITION FOR S40.9\n\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\t\t# IMU STATUS CHECK\n\nP40PVA\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tS40.1\t\t# COMPUTE VGTIG,UT\n\t\tCALL\n\t\t\tS40.2,3\t\t# COMPUTE PREFERRED ATTITUDE\n\t\tSET\tEXIT\n\t\t\tPFRATFLG\nP40SXTY\t\tTCR\tSETMINDB -1\t# NARROW DEADBAND FOR MANEUVER (EBANK6)\n\t\tRELINT\n\t\tTC\tBANKCALL\n\t\tCADR\tR60CSM\t\t# ATTITUDE MANEUVER\n\t\tCS\tONE\t\t# FOR UPDATEVG\n\t\tTS\tNBRCYCLS\n\t\tTC\tUPFLAG\n\t\tADRES\tTIMRFLAG\t# ALLOW CLOCKTASK\n\n\t\tTC\tP41/P40\n\t\tTC\tP41/DSP\t\t# P41\n\nP40TTOG\t\tCAF\tV06N40\t\t# INITIALIZE FOR CLOCKTASK WHICH IS CALLED\n# Page 685\n\t\tTS\tNVWORD1\t\t# BELOW\n\n\t\tTC\tINTPRET\n\t\tVLOAD\tABVAL\t\t# FOR R2\n\t\t\tVGTIG\n\t\tSTODL\tVGDISP\n\t\t\tHI6ZEROS\n\t\tSTORE\tDVTOTAL\n\t\tEXIT\n\n\t\tEXTEND\n\t\tDCA\tSTEERADS\t# SET FOR UPDATEVG AND TEST FOR STEERING\n\t\tDXCH\tAVEGEXIT\t# AFTER AVERAGE G\n\nP40GMB\t\tCAF\tP40CKLS2\t# (4.1 PROTECTION)\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTCF\tPOST41\t\t# V34\n\t\tTCF\tTST,TRIM\t# V33\nTRIMONLY\tCS\tBIT1\t\t# SET MRKRTEMP FOR GIMBAL TRIM (-1)\n\t+1\tTS\tMRKRTMP\t\t# ENTRY FROM TST,TRIM\n\n\t\tCAF\tZERO\t\t# SET CNTR\t+0 FOR RESTART LOGIC IN S40.6\n\t\tTS\tCNTR\t\t#\t+0 SAYS NORMAL ENTRY\n\t\t\t\t\t#\t+1 (PRE40.6) SAYS RESTART ENTRY\n\n\t\tCAF\tONE\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tS40.6\n\n\t\tCCS\tMRKRTMP\t\t# TEST TO FIND TIME TO WAIT FOR GIMBAL TEST\n\t\tCAF\t18SEC\t\t# PLUS, DELAY FOR 18 SECONDS\n\t\tTCF\t+2\t\t# HOLE\n\t\tCAF\t5SEC\t\t# DELAY FOR TRIM ONLY TASK\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40026\t\t# 6.2 = PRE40.6(-0CS), CLOKTASK(100CS)\n\t\tOCT\t00234\t\t# 4.23 = P40S/SV (PRIO12)\nP40S/RS\t\tCAF\tONE\n\t\tTC\tWAITLIST\t# P41/SDP\n\t\tEBANK=\tTIG\n\t\t2CADR\tCLOKTASK\n\n\t\tRELINT\n\nP40S/SV\t\tTCR\tE7SETTER\t# JOB, 4.23 PRETECTS, PREO12\n\t\tEBANK=\tTIG\n# Page 686\n\t\tTC\tINTPRET\n\t\tDLOAD\tDSU\n\t\t\tTIG\n\t\t\tSEC29.96\n\t\tSTORE\tTDEC1\n\n\t\tCALRB\t\t\t# RETURN IN BASIC\n\t\t\tMIDTOAV1\n\t\tTCF\t+2\n\t\tTC\tP40SNEWM\t# INTEGRATION TIME GREATER THAN ALLOWED\nP40SET\t\tEXTEND\n\t\tDCA\tMPAC\t\t# DELTA TIME TO PREREAD (INT.INIT.)\n\t\tDXCH\tP40TMP\n\t\tEXTEND\n\t\tDCS\t5SECDP\t\t# FOR TIGBLNK\n\t\tDAS\tP40TMP\n\t\tEXTEND\n\t\tDCA\tP40TMP\n\t\tTC\tLONGCALL\n\t\tEBANK=\tTIG\n\t\t2CADR\tTIGBLNK\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t20214\t\t# 4.21 = TIGBLNK (P40TMP CS)\n\n\t\tTCF\tENDOFJOB\nP40BLNKR\tTC\tBANKCALL\n\t\tCADR\tCLEANDSP\t# REMOVE RESIDUE\n\t\tTCF\tENDOFJOB\n\t\tEBANK=\tTIG\nP40SNEWM\tEXTEND\n\t\tDCA\tPIPTIME1\n\t\tDXCH\tTIG\t\t# SET NEW TIG FOR 06 40\n\t\tEXTEND\n\t\tDCA\tSEC29.96\n\t\tDAS\tTIG\n\t\tTCF\tP40SET\t\t# FOR LONGCALL OF TIG-30 (OR -35)\n\n\t\tEBANK=\tDAPDATR1\nPOSTBURN\tCAF\tV16N40\n\t\tTC\tBANKCALL\n\t\tCADR\tREFLASH\n\t\tTCF\tPOST41\t\t# V34 GO FINISH\n\t\tTCF\tP40RCS\t\t# PROCEED\n\t\tTCF\tPOSTBURN\t# RECYCLE\nP40RCS\t\tEXTEND\t\t\t# V99N40 ENTERS HERE ON A P40 BYPASS SPS\n\t\tDCA\tACADN85\n\t\tDXCH\tAVEGEXIT\n\t\tCAF\t2SECS\t\t# WAIT FOR CALCN85 VIA AVEGEXIT\n\t\tTC\tBANKCALL\n# Page 687\n\t\tCADR\tDELAYJOB\n\nP40MINDB\tTCR\tSETMINDB -1\n\t\tRELINT\nTIGNOW\t\tTC\tPHASCHNG\n\t\tOCT\t05024\t\t# TYPE C GROUP 4 BELOW FOR NOUN 85\n\t\tOCT\t20000\t\t# PRIO 20\n\t\tCAF\tV16N85B\n\t\tTC\tBANKCALL\n\t\tCADR\tREFLASH\n\t\tTCF\tPOST41\t\t# FINISH P40/P41\n\t\tTCF\tPOST41\t\t# V03 PROCEED WITH REST OF THE CLEAN-UP\n\t\tTCF\tTIGNOW\t\t# V32 NOT GSOP RESPONSE BUT REDISPLAY N85\n\nPOST41\t\tEXTEND\n\t\tDCA\tSERVCADR\n\t\tDXCH\tAVEGEXIT\n\t\tTCF\tGOTOPOOH\n\nMINDB\t\tDEC\t46\nMAXDB\t\tDEC\t455\n\t\tEBANK=\tDAPDATR1\n\t-1\tINHINT\nSETMINDB\tCA\tCDUX\t\t# ROUTINE FOR SETTING\n\t\tTS\tTHETADX\t\t# THE MINIMUM DEADBAND\n\t\tEXTEND\t\t\t# IN AUTOPILOT\n\t\tDCA\tCDUY\n\t\tDXCH\tTHETADY\n\t\tCA\tMINDB\t\t# SHOULD BE CALLED UNDER\n\t\tTS\tADB\t\t# INTERRUPT INHIBITED\n\t\tCS\tBIT4\t\t# EBANK = E6\n\t\tMASK\tDAPDATR1\n\t\tTS\tDAPDATR1\n\t\tTC\tQ\n\n\t\tEBANK=\tDAPDATR1\n\t-1\tINHINT\nSETMAXDB\tCA\tMAXDB\t\t# ROUTINE FOR SETTING\n\t\tTS\tADB\t\t# THE MAXIMUM DEADBAND IN AUTOPILOT\n\t\tCS\tDAPDATR1\n\t\tMASK\tBIT4\t\t# SHOULD BE CALLED UNDER\n\t\tADS\tDAPDATR1\t# INTERRUPT INHIBITED\n\t\tTC\tQ\t\t# EBANK = E6\n\n# Page 688\n# PROGRAM DESCRIPTION ** P41CSM **\n\n\t\tSETLOC\tP40S2\n\t\tBANK\n\n\t\tEBANK=\tDAPDATR1\n\t\tCOUNT\t24/P41\n\nP41CSM\t\tTC\tUPFLAG\n\t\tADRES\tENG2FLAG\t# SET FOR RCS\n\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tHI6ZEROS\t# FOR P41 CSTEER =0\n\t\tSTORE\tCSTEER\n\n\t\tDLOAD\tBON\n\t\t\tFRCS2\t\t# 2JET THRUST FOR S40.1\n\t\t\tNJETSFLG\n\t\t\tP40S/F\t\t# NJETS = 1 2-JET\n\t\tDAD\tGOTO\t\t# NJETS = 0 4-JET\n\t\t\tFRCS2\n\t\t\tP40S/F\n\n\t\tSETLOC\tP40S\n\t\tBANK\n\nP41/P40\t\tCS\tMODREG\n\t\tMASK\tONE\t\t# P41EXITS AT CALL LOC +1\n\t\tEXTEND\n\t\tBZF\t+2\t\t# P41\n\t\tINCR\tQ\t\t# P40 EXITS AT CALL LOC +2\n\t\tTC\tQ\n\nTTG/0\t\tCAF\tPRIO20\t\t# TASK (4.4 PROTECTS IN P41)\n\t\tTC\tNOVAC\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tTIGNOW\n\nP40CLK\t\tTC\tDOWNFLAG\n\t\tADRES\tTIMRFLAG\n\n\t\tTCF\tTASKOVER\n\nP41/DSP\t\tCAF\tV06N85B\t\t# SET UP FOR NONFLASH V 06 N85 BY CLOCKJOB\n\t\tTS\tNVWORD1\n\n\t\tTC\tINTPRET\n# Page 689\n\t\tCALL\t\t\t# COMPUTE\n\t\t\tP40CNV85\t#\tVGTIG IN CTRL COORDS\n\t\tEXIT\n\t\tEXTEND\t\t\t# DO CONTROL COORD CALCULATION AFTER AVEG\n\t\tDCA\tACADN85\n\t\tDXCH\tAVEGEXIT\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40036\t\t# 6.3=CLOKTASK(100CS)\n\t\tOCT\t234\t\t# 4.23=P40S/SV(PRIO12)\n\n\t\tTCF\tP40S/RS\nP41REDSP\tCAF\tV16N85B\t\t# ENTER FROM P41 SIDE OF TIGAVEG\n\t\tTS\tNVWORD1\t\t# REDISPLAY NONFLASHING\n\t\tCAF\tSEC29.96 +1\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tTTG/0\n\n\t\tCS\tBIT3\n\t\tTCF\tTTGPHS\nP40CNV85\tSTQ\tSETPD\n\t\t\tQTEMP1\n\t\t\t0\n\t\tVLOAD\tPUSH\n\t\t\tVGPREV\t\t# EQUALS VGTIG (TARGETTING INPUT)\n\t\tCALL\n\t\t\tS41.1\n\t\tSTCALL\tVGBODY\n\t\t\tQTEMP1\n\n\t\tEBANK=\tDAPDATR1\nCALCN85\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tUPDATEVG\t# NEW VG, S40.8 (+MAYBE S40.9)\n\t\tCALL\n\t\t\tP40CNV85\t# COMPUTE VGBODY\n\t\tEXIT\n\t\tTC\tSERVXT\nFENG\t\t2DEC\t9.1188544 B-7\t# SPS THRUST (20500LBS), SC.AT B+7 NEWT/E4\n\nFRCS2\t\t2DEC\t.087437837 B-7\t# RCS ULLAGE (199.6COS10 LBS), SC.AT\n\n\t\t\t\t\t#\tB+7 NEWTONS/E+4\nSEC24.96\tDEC\t2496\nSEC29.96\t2DEC\t2996\n\n18SEC\t\tDEC\t1800\nP40CKLS2\tOCT\t204\n40CST5\t\tOCT\t37730\t\t# 40 CS FOR THE T5 CLOCK\nOCT12\t\t=\tTEN\n# Page 690\nV1683\t\tVN\t1683\nV06N85B\t\tVN\t0685\nV16N85B\t\tVN\t1685\nV06N40\t\tVN\t0640\nV16N40\t\tVN\t1640\nOCT27/24\tOCT\t27\nOCT53\t\tOCT\t53\nOCT35\t\tOCT\t35\n\t\tEBANK=\tDAPDATR1\nT5IDL24\t\t2CADR\tT5IDLOC\n\n3MDOT\t\tDEC\t86.6175796 B-16\t# 3SEC MASS LOSS (63.8 LBS/SEC), SC.AT\n\t\t\t\t\t# B+16 KB/SEC (NOT, EMDOT IS PAD-LOADED,\n\t\t\t\t\t# BUT 3MDOT IS NOT A CRITICAL QUANTITY, SO\n\t\t\t\t\t# IT CAN REMAIN IN FIXED MEMORY)\nTST,TRIM\tCAF\tBIT1\t\t# SET UP FOR GIMB DRIVE TEST AND TRIM (+1)\n\t\tTCF\tTRIMONLY +1\nTIGBLNK\t\tCAF\t5SEC\t\t# CALL TIGAVEG IN FIVE SEC AT TIG-30\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTIG\n\t\t2CADR\tTIGAVEG\n\n\t\tCAF\tZERO\t\t# DISABLE HERE, NOT IN P40BLNKR\n\t\tTS\tNVWORD1\n\n\t\tCAF\tPRIO14\n\t\tTC\tNOVAC\n\t\tEBANK=\tTIG\n\t\t2CADR\tP40BLNKR\t# DON'T PROTECT -- RESTARTS BLANK DSKY\n\n\t\tCS\tOCT37\t\t# 4.37 = TIGAVEG (500CS)\nP40TSK\t\tTC\tNEWPHASE\n\t\tOCT\t4\n\t\tTC\tTASKOVER\n\n\t\tEBANK=\tTIG\nACADN83\t\t2CADR\tCALCN83\n\n\t\tEBANK=\tTIG\nSERVCADR\t2CADR\tSERVEXIT\n\n\t\tEBANK=\tDAPDATR1\nACADN85\t\t2CADR\tCALCN85\n\n# Page 691\n# PROGRAM DESCRIPTION ** P47CSM **\n\n\t\tCOUNT\t24/P47\n\n\t\tEBANK=\tTIG\nP47CSM\t\tTC\tBANKCALL\t# IMU STATUS CHECK\n\t\tCADR\tR02BOTH\n\t\tTC\tINTPRET\n\t\tCALRB\n\t\t\tMIDTOAV2\n\t\tCA\tMPAC +1\t\t# DELTA TIME TO RPEREAD (LESS THAN 100\n\t\tTS\tP40TMP\t\t#\tCS, WITH A TPAGREE, INT.INIT.)\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTIG\n\t\t2CADR\tTIGON\t\t# TIGON IS REQUIRED TO MATHCHTAT AND AVEG\n\n\t\tTC\tPHASCHNG\n\t\tOCT \t40574\t\t# A, 4.57 = TIGON (P40TMP CS)\n\t\tTCF\tENDOFJOB\n\n\t\tEBANK=\tP40TMP\nTIGON\t\tEXTEND\n\t\tDCA\tACADN83\n\t\tDXCH\tAVEGEXIT\n\t\tCAF\tPRIO30\t\t# FORCE ZEROING OF N83 BEFORE SERVICER\n\t\tTC\tNOVAC\n\t\tEBANK=\tTIG\n\t\t2CADR\tP47BODY\n\n\t\tCS\tBIT2\t\t# 4.2 = PRECHECK (-0CS), P47BODY (PRIO30)\n\t\tTCF\tTTGPHS\n\n\t\tEBANK=\tTIG\nCALCN83\t\tTC\tINTPRET\n\t\tSETPD\t\t\t# SET UP PUSHLIST FOR S41.1\n\t\t\t0\n\t\tVLOAD\tVAD\n\t\t\tDELVCTL\n\t\t\tDELVREF\n\t\tSTORE\tDV47TEMP\t# FOR COPYCYCLE BELOW\n\t\tPUSH\tCALL\n\t\t\tS41.1\n\t\tSTCALL\tDELVIMU\n\t\t\tS11.1\t\t# CALC. VI, H, HDOT FOR NOUN 62\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t10035\n# Page 692\n\t\tCAF\tFIVE\n\t\tTC\tGENTRAN\n\t\tADRES\tDV47TEMP\n\t\tADRES\tDELVCTL\n\n\t\tTC\tSERVXT\nP47BODY\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tHI6ZEROS\n\t\tSTORE\tDELVIMU\t\t# CLEAR DISPLAY AND ACCUMULATOR STORAGE\n\t\tSTORE\tDELVCTL\t\t# UPON INITIATION OR ENTER RESPONSE\n\t\tEXIT\nP47BOD\t\tCAF\tPRIO15\t\t# LOWER PRIO THAN CALCN83 (20)\n\t\tTC\tPRIOCHNG\t#\tTO PREVENT INTERRUPTION OF CALCN83\n\t\tTC\tPHASCHNG\n\t\tOCT\t05024\t\t# TYPE C GROUP 4 BELOW FOR NOUN 83\n\t\tOCT\t15000\t\t# PRIO 15\nP47/DSP\t\tCAF\tV1683\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\tGOTOPOOH\n\t\tTCF\tP47BODY\t\t# RECYCLE -- CLEAR ACCUMULATED VELOCITY\n\n# Page 693\n# ROUTINE ** TIG-30 ** DESCRIPTION\n\n\t\tEBANK=\tTIG\n\t\tCOUNT\t24/P40\n\nTIGAVEG\t\tTC\tP41/P40\t\t# TASK (4.37 PROTECTS)\n\t\tTCF\tP41REDSP\n\n\t\tCAF\tV06N40\t\t# UNBLANK DISPLAY\n\t\tTS\tNVWORD1\n\n\t\tCAF\tSEC24.96\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTIG\n\t\t2CADR\tTIG-5\n\n\t\tCS\tSIX\t\t# 4.6 = TIG-5 (2496CS), PRECHECK (-0CS)\nTTGPHS\t\tTC\tNEWPHASE\t# ENTRY FROM P41REDSP (P41) WITH A=-4, OR\n\t\tOCT\t4\t\t#       FROM TIGON    (P47) WITH A=-1\n\nPRECHECK\tCCS\tPHASE5\t\t# HAS SERVICER BEEN RESTARTED\n\t\tTCF\tTASKOVER\t# YES, DON'T START ANOTHER ONE\n\t\tTC\tPOSTJUMP\n\t\tCADR\tPREREAD\n\n# Page 694\n# ROUTINE ** TIG-5 ** DESCRIPTION\n\n\t\tEBANK=\tTIG\nTIG-5\t\tCAF\t5SEC\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tTIG-0\n\n\t\tCS\tBIT9\t\t# WILL CAUSE V99 FLASH\n\t\tTS\tNVWORD1\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40074\t\t# A, 4.7 = TIG-0 (500CS)\n\t\tOCT\t00033\t\t# A, 3.3 = S40.13 (PRIO20)\n\n\t\tCAF\tPRIO20\n\t\tTC\tFINDVAC\n\t\tEBANK=\tTGO\n\t\t2CADR\tS40.13\n\n\t\tTCF\tTASKOVER\n\n# Page 695\n# ROUTINES ** TIG-0 ** AND ** IGNITION ** DESCRIPTION\n\n\t\tEBANK=\tDAPDATR1\t# TASK, 4.7 PHASE, OR 4.77 (-0CS) IN R40\nTIG-0\t\tCS\tFLAGWRD7\t# SET IGN FLAG\n\t\tMASK\tBIT13\n\t\tADS\tFLAGWRD7\n\n\t\tCAE\tFLAGWRD7\t# CHECK ASTN FLAG FOR V99 RESPONSE\n\t\tMASK\tBIT12\n\t\tEXTEND\n\t\tBZF\tTASKOVER\t# WAIT FOR V99P\n\n\t\tCAF\tV06N40\t\t# CLEAR THE V99 (IN CASE OF A RESTART\n\t\tTS\tNVWORD1\t\t#\tDURING THE V99 SEQUENCE)\n\n\t\tTC\tPHASCHNG\t# V99P HAS COME ALREADY, DO IGNITION NOW\n\t\tOCT\t00614\t\t# A, 4.61 = IGNITION (-0CS) TBASE OLD\n\nIGNITION\tCAE\tCDUX\t\t# SAVE FOR ROLL DAP REFERENCE OGAD\n\t\tTS\tOGAD\t\t#\tV99PJOB (CLOCKJOB) SETS UP IGNITION\n\t\tEXTEND\t\t\t# \tTASK (4.61 PROTECTION)\n\t\tDCA\tTIME2\t\t#\tFOR RESTARTS\n\t\tDXCH\tTEVENT\n\t\tCS\tFLAGWRD5\t# SET ENGONFLG\n\t\tMASK\tBIT7\n\t\tADS\tFLAGWRD5\nSPSON\t\tCAF\tBIT13\t\t# TURN ON SPS ENGINE\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\n\nIMPULCHK\tCAF\tBIT9\t\t# CHECK FOR IMPULSIVE BURN\n\t\tMASK\tFLAGWRD2\n\t\tCCS\tA\n\t\tTCF\tIMPLBURN\t# IMPULSIVE\n\t\tCS\tFLAGWRD6\t# NON-IMPULSIVE, SET STRULLSW FOR STEERULL\n\t\tMASK\tBIT13\n\t\tADS\tFLAGWRD6\n\nPREPTVC\t\tCS\tOCT60000\t# RESET T5 BITS\n\t\tMASK\tFLAGWRD6\n\t\tTS\tFLAGWRD6\n\n\t\tEXTEND\t\t\t# KILL RCS\n\t\tDCA\tT5IDL24\n\t\tDXCH\tT5LOC\n\n\t\tCS\tTHREE\t\t# 4.3 = DOTVCON (40CS)\n\t\tTC\tNEWPHASE\n\t\tOCT\t4\n\n# Page 696\n\t\tTC\tFIXDELAY\n\t\tDEC\t40\t\t# 0.4 SECOND DELAY FOR THRUST BUILDUP\n\nDOTVCON\t\tCS\tBIT1\t\t# SET TVCPHASE = TVCDAPON CALL (FRESHDAP)\n\t\tTS\tTVCPHASE\n\t\tCAF\tZERO\t\t# SET TVCEXECUTIVE PHASE\n\t\tTS\tTVCEXPHS\n\t\tCS\tOCT60000\t# SET T5 BITS TO INDICATE TVC TAKEOVER ....\n\t\tMASK\tFLAGWRD6\t#\tBITS 15,14 = 10\n\t\tAD\tBIT15\n\t\tTS\tFLAGWRD6\n\n\t\tCAF\tTHREE\t\t# 6.3 = CLOKTASK (100CS), DROPPING PRE40.6\n\t\tTS\tL\t\t#\tWHICH IS HANDLED NOW BY REDOTVC\n\t\tCOM\n\t\tDXCH\t-PHASE6\n\n\t\tEXTEND\t\t\t# STORE RCS ATTITUDE ERRORS FOR USE IN\n\t\tDCS\tERRORY\t\t# INITIALIZING TVC ATTITUDE ERRORS\n\t\tDXCH\tERRBTMP\n\n\t\tCS\tFIVE\t\t# 4.5 = DOSTRULL (160 CS)\n\t\tTC\tNEWPHASE\n\t\tOCT\t4\n\n\t\tCAF\tPOSMAX\t\t# SET TIME5 FOR STARTING RIGHT AWAY\n\t\tTS\tTIME5\n\t\tEXTEND\n\t\tDCA\tTVCON2C\t\t# (TVCDAPON)\n\t\tDXCH\tT5LOC\t\t# (KILLS RCS DAP)\n\n\t\tTC\tFIXDELAY\t# 0.4 + 1.6 = 2.0 SEC FOR ULLAGE-OFF AND\n\t\tDEC\t160\t\t# \tSTEERING (IF NON-IMPULSIVE)\n\nDOSTRULL\tCAF\tBIT13\t\t# CHECK STRULLSW FOR IMPULSIVE BURN\n\t\tMASK\tFLAGWRD6\n\t\tCCS\tA\n\t\tTCR\tSTEERULL\t# NON-IMPULSIVE, STEERING AND ULLAGE OFF\n\t\tTCR\tULAGEOFF\t# ULLAGE OFF (ONLY, OR AGAIN)\n\n\t\tEXTEND\n\t\tDCA\tNEG0\t\t# KILL GROUP 4 (DP NEG0 = -0,+0)\n\t\tDXCH\t-PHASE4\n\nENDIGN\t\tTCF\tTASKOVER\n\nSTEERULL\tCS\tFLAGWRD2\t# SET STEERSW\n\t\tMASK\tBIT11\n\t\tADS\tFLAGWRD2\n\n# Page 697\n\nULAGEOFF\tCAF\tZERO\n\t\tEXTEND\n\t\tWRITE\tCHAN5\t\t# ZERO CHANNEL 5\n\t\tTC\tQ\n\nIMPLBURN\tCS\tBIT13\t\t# RESET STRULLSW (COULD BE AN IMPULSIVE\n\t\tMASK\tFLAGWRD6\t#\tENGINE FAIL)\n\t\tTS\tFLAGWRD6\n\n\t\tTCR\tE7SETTER\n\n\t\tEBANK=\tTIG\n\t\tEXTEND\t\t\t# PREPARE FOR R1 OF V06N40 (CLOCKTASK)\n\t\tDCA\tTGO\n\t\tDXCH\tTIG\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDAS\tTIG\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40153\t\t# A, 3.15 = ENGINOFF (TGO+1) .... NOT GROUP\n\t\tOCT\t07014\t\t# C, DELTAT NEXT, TASK BELOW, IN\n\t\tDEC\t-0\t\t# -0 CS\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tIMPLCONT\n\n\t\tCAE\tTGO +1\t\t# (TPAGREE IN S40.13, LESS THAN 600CS)\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTGO\n\t\t2CADR\tENGINOFF\n\nIMPLCONT\tCS\tBIT9\t\t# RESET IMPULSW, ENGINOFF IS NOW SET UP\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\n\n\t\tTCR\tE6SETTER\n\t\tEBANK=\tDAPDATR1\n\n\t\tCAF\tZERO\t\t# SET UP V97VCNTR IN CASE ENGINOFF (MASS-=\n\t\tTS\tV97VCNTR\t#\tBACK) ARRIVES BEFORE TVCDAPON\n\n\t\tTCF\tPREPTVC\n\n\t\tEBANK=\tTGO\t\t# E7 FORCED BY 3.15SPOT VARIABLE DELTA-T\nENGINOFF\tTCR\tE6SETTER\t# TASK, 3.15 PHASE (TGO+1 CS)\tGET E6\n\t\tEBANK=\tDAPDATR1\n\t\tCAE\tCSMMASS\n\t\tTS\tMASSTMP\t\t# COPYCYCLE FOR MASSBACK\n# Page 698\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00003\t\t# KILL GROUP 3 PROTECTION OF ENGINOFF, DO\n\t\tOCT\t40634\t\t# A, 4.63 = DOSPSOFF (-0CS)\nDOSPSOFF\tTCR\tSPSOFF\t\t# SHUTDOWN SPS, MASS UPDATES, ETC.\n\t\tCS\tOCT27/24\t# (OCTAL 27)\n\t\tTC\tNEWPHASE\n\t\tOCT\t4\t\t# 4.27 = DOTVCRCS (250 CS)\n\n\t\tTC\tFIXDELAY\t# 2.5 SECOND DELAY FOR SPS TAILOFF\n\t\tDEC\t250\n\nDOTVCRCS\tTCR\tSETMAXDB\t# WIDE DEADBAND FOR CUTOFF TRANSIENT\n\n\t\tTC\tIBNKCALL\t# SET UP RCS DAP (KILLS TVCDAPS, SETS T5\n\t\tCADR\tRCSDAPON\t#\tBITS, WAITS 0.6SEC FOR TVCEXEC DIE)\n\n\t\tTC\tIBNKCALL\t# UPDATE WEIGHT/G AND MASS-PROPERTIES FOR\n\t\tCADR\tMASSPROP\t#\tRCS DAP STARTUP IN 0.6 SECONDS\n\n\t\tTCR\tTVCZAP\t\t# WIPE OUT TVC, TURN OFF CLOKTASK\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t00354\t\t# A, 4.35 = POSTBURN (NOVAC, PRIO12)\n\t\tCAF\tPRIO12\t\t# SET UP POSTBURN V16N40 JOB\n\t\tTC\tNOVAC\n\t\tEBANK=\tDAPDATR1\t# (SET MAXDB IN POST41)\n\t\t2CADR\tPOSTBURN\n\n\t\tTCF\tTASKOVER\n\n\t\tEBANK=\tDAPDATR1\nSPSOFF\t\tEXTEND\t\t\t# ESTABLISH SPSOFF TEVENT\n\t\tDCA\tTIME2\n\t\tDXCH\tTEVENT\n\t\tCS\tBIT7\t\t# RESET ENGONFLG\n\t\tMASK\tFLAGWRD5\n\t\tTS\tFLAGWRD5\t# (RESTARTS WILL SHUT DOWN SPS NOW)\n\t\tCS\tBIT13\t\t# SHUT DOWN SPS ENGINE\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\n\n\t\tCAF\tBIT14\t\t# ISSUE SIV CUTOFF COMMAND\n\t\tEXTEND\t\t\t# FOR POSSIBLE BACK-UP USE\n\t\tWOR\tCHAN12\nMASSBACK\tCAE\tV97VCNTR\t# RESTORE PART OF PRE-DECREMENTED MASS\n\t\t\t\t\t#\tV97CNTR = VCNTR UNLESS V97 IS\n\t\t\t\t\t#\tACTIVE.  ONLY V97CNTR IS THEN RIGHT.\n\t\tEXTEND\t\t\t# VCNTR COUNTS 1/2-SECONDS IN TVC EXEC\n\t\tMP\tEMDOT\t\t#\tMDOT, SC.AT B+3 KG/CS\n\t\tLXCH\tA\n# Page 699\n\t\tEXTEND\n\t\tMP\t1SEC\t\t# DEC 100\n\t\tAD\tMASSTMP\t\t# CORRECTION IS ACCURATE TO 5 CS OF FLOW\n\t\tTS\tCSMMASS\t\t#\t(1.44 KG OR 0.4 BITS)\n\n\t\tCA\tTVCPHASE\t# CHECK IF OK FOR TRIM UPDATE\n\t\tAD\tONE\t\t#\tTHESE CHECKS ARE ONLY NEEDED\n\t\tEXTEND\t\t\t#\tFOR A LESS THAN 0.4 SEC BURN\n\t\tBZF\tBTRIMR\t\t# NO.  INITIALIZATION NOT COMPLETE\n\t\tCS\tFLAGWRD6\t# YES, CHECK IF TVC\n\t\tMASK\tOCT60000\n\t\tEXTEND\n\t\tBZMF\tBTRIMR\t\t# NO, NOT TVC YET\nBESTTRIM\tCAE\tDELPBAR\t\t# UPDATE TRIMS WITH DELFILTER VALUES\n\t\tTS\tPACTOFF\n\t\tCAE\tDELYBAR\n\t\tTS\tYACTOFF\nBTRIMR\t\tTC\tQ\n\t\tEBANK=\tDAPDATR1\nSTEERADS\t2CADR\tSTEERING\n\n.6SECT5\t\tOCT\t37703\n5SECDP\t\tDEC\t0\t\t# MAKE DP 5SEC\n5SEC\t\tDEC\t500\nOCT02202\tOCT\t02202\t\t# BITS 2, 8, 11 FOR CHANNEL 12 TVC/OPTICS\n\t\tEBANK=\tDAPDATR1\nTVCON2C\t\t2CADR\tTVCDAPON\n\n\t-1\tINHINT\nTVCZAP\t\tCS\tOCT02202\t# DISABLE TVC AND OPT ERR CNTRLS, REENGAGE\n\t\tEXTEND\t\t\t#\tOPTICS DAC\n\t\tWAND\tCHAN12\n\t\tCS\tBIT1\t\t# ENABLE T4RUPT OPTICS MONITOR .... PERMIT\n\t\tTS\tOPTIND\t\t#\tOPTICS-ZERO BUT NOT OPTICS-DRIVE\n\t\tCAF\tZERO\t\t# CLEAR NVWORD1 IN CASE CLOCKJOB WAITING\n\t\tTS\tNVWORD1\n\t\tCS\tBIT11\t\t# CLEAR TIMRFLAG TO STOP CLOKTASK\n\t\tMASK\tFLAGWRD7\n\t\tTS\tFLAGWRD7\n\t\tTC\tQ\n\t\tEBANK=\tDAPDATR1\nUPDATEVG\tSTQ\tBON\n\t\t\tQTEMP1\n\t\t\tXDELVFLG\n\t\t\tCALL40.8\n\n\t\tSLOAD\tBMN\n\t\t\tNBRCYCLS\n\t\t\tSETUP.9\n# Page 700\n\n\t\tVLOAD\tVAD\n\t\t\tDELVSUM\n\t\t\tDELVREF\n\t\tSTORE\tDELVSUMP\n\t\tEXIT\n\t\tCA\tONE\n\t\tAD\tNBRCYCLS\n\t\tTS\tNBRCYCLP\n\n\t\tTC\tPHASCHNG\t# TYPE B RESTART RESTART BELOW AND 5.3 REREADACCS\n\t\tOCT\t10035\n\n\t\tCA\tNBRCYCLP\n\t\tTS\tNBRCYCLS\n\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tDELVSUMP\n\t\tSTORE\tDELVSUM\n\nCALL40.8\tCALL\n\t\t\tS40.8\n\t\tGOTO\n\t\t\tQTEMP1\n\nSETUP.9\t\tBON\tSLOAD\n\t\t\tFIRSTFLG\n\t\t\tSURELY.9\n\t\t\tNBRCYCLP\n\t\tNORM\tVXSC\t\t# (NORM HANDLES ZERO PROPERLY)\n\t\t\tX1\n\t\t\tBDT\n\t\tVSR*\tVAD\n\t\t\t0 -14D,1\n\t\t\tVGTEMP\n\t\tVSU\n\t\t\tDELVSUM\n\t\tSTORE\tVGPREV\nSURELY.9\tEXIT\n\t\tCAF\tPRIO10\n\t\tTC\tFINDVAC\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tS40.9\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00051\t\t# A, 1.5 = REDO40.9, PRIO 10\n\t\tOCT\t10035\n\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tRN\t\t# ACTIVE VEHICLE RADIUS VECTOR AT T1\n\t\tSTOVL\tRINIT\n# Page 701\n\t\t\tVN\t\t# ACTIVE VEHICLE VELOCITY VECTOR AT T1\n\t\tSTODL\tVINIT\n\t\t\tPIPTIME\n\t\tSTORE\tTNIT\n\t\tBDSU\n\t\t\tTPASS4\n\t\tSTOVL\tDELLT4\n\t\t\tHI6ZEROS\n\t\tSTODL\tDELVSUM\n\t\t\tHI6ZEROS\n\t\tSTORE\tNBRCYCLS\n\t\tGOTO\n\t\t\tCALL40.8\n\t\tEBANK=\tDAPDATR1\nSTEERING\tTC\tINTPRET\n\t\tCALL\n\t\t\tUPDATEVG\n\t\tEXIT\n\t\tCAF\tBIT9\t\t# CHECK IMPULSW\n\t\tMASK\tFLAGWRD2\n\t\tCCS\tA\n\t\tTCF\t+3\t\t# PRE-IGNITE, REQUEST ENG-OFF, OR POST-OFF\nSERVXT\t\tTC\tPOSTJUMP\n\t\tCADR\tSERVEXIT\n\t\tCAF\tBIT13\t\t# CHECK ENGINE-ON/-OFF\n\t\tEXTEND\n\t\tRAND\tDSALMOUT\n\t\tEXTEND\n\t\tBZF\tSERVXT\t\t# ENGINE-OFF, SO PRE-IGNITE OR POST-OFF\n\t\tTCR\tE7SETTER\n\t\tEBANK=\tTIG\n\t\tINHINT\n\t\tEXTEND\n\t\tDCA\tTIG\n\t\tDXCH\tMPAC\n\t\tEXTEND\n\t\tDCS\tTIME2\n\t\tDAS\tMPAC\n\t\tTCR\tDPAGREE\n\t\tCAE\tMPAC +1\t\t# (LESS THAN 6 (OR 4) SECONDS TO GO)\n\t\tCCS\tA\t\t# PROTECT AGAINST NEG/ZRO W.L. CALL\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tCAF\tZERO\n\t\tAD\tONE\n\t\tXCH\tL\n\t\tCA\tZERO\n\t\tDXCH\tTGO\n\t\tCA\tTGO +1\n\t\tTC\tWAITLIST\n# Page 702\n\t\tEBANK=\tTGO\n\t\t2CADR\tENGINOFF\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40153\t\t# A, 3.15 = ENGINOFF (TGO+1) .... NOTE GROUP\n\t\tOCT\t10035\t\t# B, 5.3 = REREADAC, AND START BELOW\n\t\tTC\tDOWNFLAG\t# CLEAR IMPULSW, ENGINOFF IS NOW SET UP\n\t\tADRES\tIMPULSW\t\t# RESTARTS OK\n\t\tTCF\tSERVXT\n\n# Page 703\n# ROUTINE ** CLOKTASK ** DESCRIPTION\n\n\t\tEBANK=\tTIG\nCLOKTASK\tCAF\tBIT11\t\t# IS TIMRFLAG SET\n\t\tMASK\tFLAGWRD7\n\t\tCCS\tA\n\t\tTCF\tCLOCKON\n\t\tTC\tPHASCHNG\n\t\tOCT\t00006\t\t# KILL RESTART\n\t\tTC\tTASKOVER\n\nCLOCKON\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tTTOGO\n\t\tEXTEND\n\t\tDCS\tTIG\n\t\tDAS\tTTOGO\n\nSETCLOCK\tCAF\t1SEC\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTIG\n\t\t2CADR\tCLOKTASK\n\n\t\tCCS\tNVWORD1\n\t\tTCF\t+3\n\t\tTCF\tSETTB6\n\n\t\tTCF\t+1\n\t\tCS\tV06N85B\t\t# CHECK FOR V06N85B (P41)\n\t\tAD\tNVWORD1\n\t\tEXTEND\n\t\tBZF\tSETUPDYN\t# V06N85, SO UPDATE N85 FOR DYNAMIC DISP\n\n\t\tCAF\tPRIO27\n\t\tTC\tNOVAC\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tCLOCKJOB\n\nSETTB6\t\tCS\tTIME1\t\t# SET GROUP6 TIMEBASE\n\t\tTS\tTBASE6\n\t\tTCF\tTASKOVER\n\nSETUPDYN\tCAF\tPRIO27\t\t# SET UP A JOB TO UPDATE N85 (FOR P41=V06)\n\t\tTC\tFINDVAC\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tDYNDISP\n\n\t\tTCF\tSETTB6\t\t# CLOSE OUT CLOCKTASK\n# Page 704\nDYNDISP\t\tTC\tINTPRET\t\t# UPDATE N85 FOR A DYNAMIC V06N85 IN P41.\n\t\tCALL\t\t\t#\tPRIOR TO BLANKING AND AVEG (V16N85)\n\t\t\tP40CNV85\n\t\tEXIT\n\t\tTCF\tCKNVWRD1\n\n# Page 705\n# ROUTINE ** CLOCKJOB ** DESCRIPTION\n\n\t\tEBANK=\tDAPDATR1\nCLOCKJOB\tCA\tCDUX\n\t\tTS\tCDUSPOTX\n\t\tCA\tCDUY\n\t\tTS\tCDUSPOTY\n\t\tCA\tCDUZ\n\t\tTS\tCDUSPOTZ\n\t\tTC\tBANKCALL\n\t\tCADR\tQUICTRIG\nCKNVWRD1\tINHINT\n\t\tCCS\tNVWORD1\t\t# DETERMINE FUNCTION, INDICATED BY NVWORD1\n\t\tTCF\tNOFLASH\n\t\tTCF\tENDOFJOB\n\t\tTCF\tENGREQST\t# SPS ENGINE-ON-ENABLE V99 FLASH\nFAILDSP\t\tCAF\tV06N40\t\t# SPS ENGINE-FAILED V97 FLASH\n\t\tTC\tBANKCALL\n\t\tCADR\tCLOCPLAY\n\t\tTCF\tV97T\t\t# TERMINATE\n\t\tTCF\tV97P\t\t# PROCEED\n\t\tTCF\tV97E\t\t# ENTER\n\nENGREQST\tCAF\tV06N40\n\t\tTC\tBANKCALL\n\t\tCADR\tCLOCPLAY\t# LINUS MAKES IT A REDO, INHINT OK\n\t\tTCF\tV99T\t\t# TERMINATE\n\t\tTCF\tV99P\t\t# PROCEED\n\t\tTCF\tV99E\t\t# ENTER\n\nNOFLASH\t\tCAE\tNVWORD1\t\t# DISPLAY NVWORD1 NORMALLY\n\t\tTC\tBANKCALL\n\t\tCADR\tREGODSP\n\nE7SETTER\tCAF\tEBANK7\n\t\tTS\tEBANK\n\t\tEBANK=\tTIG\n\t\tTC\tQ\n\nE6SETTER\tCAF\tEBANK6\t\t# SET UP EBANK6\n\t\tTS\tEBANK\n\t\tEBANK=\tDAPDATR1\n\t\tTC\tQ\n\n\t\tEBANK=\tDAPDATR1\nV99E\t\tTC\t2PHSCHNG\n\t\tOCT\t00006\t\t# KILL PRE40.6/CLOKTASK PROTECTION\n\t\tOCT\t05024\t\t# C, PRIORITY NEXT, JOB BELOW\n# Page 706\n\t\tOCT\t27000\nV99EJOB\t\tTCR\tTVCZAP -1\t# WIPE OUT TVC, CLOKTASK\n\t\tTCF\tP40RCS\t\t# V16N85 POST-BURN OPERATIONS\n\n\t\tEBANK=\tDAPDATR1\nV99T\t\tTC\t2PHSCHNG\t# (ENTRY FROM V97T FLOW TOO)\n\t\tOCT\t00006\t\t# KILL PRE40.6/CLOKTASK PROTECTION\n\t\tOCT\t05024\t\t# C, PRIORITY NEXT, JOB BELOW\n\t\tOCT\t27000\nV99TJOB\t\tTCR\tTVCZAP -1\t# WIPE OUT TVC, CLOKTASK\n\t\tTCF\tPOST41\t\t# AVEGEXIT, SETMAXDB, GOTOPOOH\n\nV99P\t\tINHINT\n\t\tCAE\tFLAGWRD7\t# CHECK ASTN FLAG FOR PRIOR V99P\n\t\tMASK\tBIT12\n\t\tCCS\tA\n\t\tTCF\tV99P/TIG\t# YES, THIS MUST BE A RESTART ENTRY\n\nASTNV99P\tCAF\tBIT12\t\t# SET ASTN FLAG\n\t\tADS\tFLAGWRD7\n\t\tCAE\tFLAGWRD7\t# CHECK IGN FLAG FOR TIG-0 ARRIVAL\n\t\tMASK\tBIT13\n\t\tEXTEND\n\t\tBZF\tV99P/TIG\t# NO, CLEAR THE V99 AND WAIT FOR TIG-0\n\nENDV99PI\tCAF\tBIT1\t\t# TIG-0 HAS COME ALREADY\n\t\tTC\tWAITLIST\t# SET UP IGNITION HERE\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tIGNITION\n\nV99P/TIG\tCAF\tV06N40\t\t# CLEAR THE V99 FLASH AND WAIT FOR TIG-0\n\t\tTS\tNVWORD1\nENDV99P\t\tTCF\tENDOFJOB\n\n\t\tEBANK=\tCSMMASS\nV97T\t\tTC\t2PHSCHNG\n\t\tOCT\t00006\t\t# KILL GROUP 6 (CLOKTASK)\n\t\tOCT\t40674\t\t# A, 4.67 = V97TTASK (-0 CS), TBASE NOW\n\t\tCAF\tBIT1\n\t\tTC\tTWIDDLE\n\t\tADRES\tV97TTASK\t# KEEP EBANK6 FOR MASSES, SPSOFF, ETC.\n\t\tTCF\tENDOFJOB\n\n\t\tEBANK=\tCSMMASS\nV97TTASK\tCAF\tZERO\t\t# DISABLE CLOCKJOB\n\t\tTS\tNVWORD1\n\t\tCAF\t3MDOT\t\t# 3 SECONDS OF MDOT (2-4 SEC ENGFAIL\n\t\tAD\tCSMMASS\t\t#\tDETECTION) NOT LOST BECAUSE THRUST\n\t\tTS\tMASSTMP\t\t#\tFAILED.  COPYCYCLE FOR MASSBACK\n# Page 707\n\t\tTC\tPHASCHNG\n\t\tOCT\t05014\t\t# C, DELTAT NEXT, TASK BELOW, IN\n\t\tDEC\t-0\t\t# -0 CS\n\n\t\tTCR\tSPSOFF\t\t# SHUTDOWN SPS ENGINE, MASS UPDATE, ETC.\n\t\tTC\tPHASCHNG\n\t\tOCT\t00714\t\t# A, 4.71 = V97TRCS (250 CS), TBASE OLD\n\t\tTC\tFIXDELAY\t# DELAY 2.5 SECONDS FOR (POSSIBLE) TAIL-\n\t\tDEC\t250\t\t#\tOFF (FALSE THRUST-LOSS)\n\n\t\tEBANK=\tDAPDATR1\nV97TRCS\t\tTC\tIBNKCALL\t# RCS DAP IN 0.6SEC, SETTING T5 BITS TO\n\t\tCADR\tRCSDAPON\t#\tKILL TVCEXEC/TVCROLLDAP STARTS\n\t\tCAF\tPRIO27\t\t# SET UP V99T FOR TVCZAP AND POST41 (SET-\n\t\tTC\tNOVAC\t\t#\tMAXDB AND GOTOPOOH)\n\t\tEBANK=\tDAPDATR1\t# EBANK6 FOR SETMAXDB IN POST41\n\t\t2CADR\tV99T\n\nENDV97T\t\tTCF\tTASKOVER\n\n\t\tEBANK=\tV97VCNTR\nV97P\t\tTC\tPHASCHNG\n\t\tOCT\t40734\t\t# A, 4.73 = V97PTASK (-0 CS), TBASE NOW\n\t\tCAF\tBIT1\n\t\tTC\tTWIDDLE\n\t\tADRES\tV97PTASK\n\t\tTCF\tENDOFJOB\n\n\t\tEBANK=\tV97VCNTR\nV97PTASK\tCAE\tV97VCNTR\t# GET MASS UPDATES (TVCEXEC) GOING AGAIN\n\t\tTS\tVCNTR\t\t#\t(ERRORS IF FLASE THRUST-LOSS AND/OR\n\t\t\t\t\t#\tPOOR SYNC OF MANUAL ENGINE-ON AND\n\t\t\t\t\t#\tTHE VERB 97 PROCEED)\n\t\tCAF\tV06N40\t\t# REDISPLAY V06N40\n\t\tTS\tNVWORD1\n\t\tTC\tUPFLAG\t\t# SET IDLEFAIL TO ALLOW R41-BYPASS, IN\n\t\tADRES\tIDLEFAIL\t#\tCASE OF UNFAVORABLE S40.8 SYNCH\n\t\tTC\tUPFLAG\t\t# SET STEERSW TO RE-ENABLE STEERING\n\t\tADRES\tSTEERSW\n\t\tTC\tPHASCHNG\n\t\tOCT\t00134\t\t# A, 4.13 = R40ENABL (200 CS), TBASE OLD\n\t\tTC\tFIXDELAY\t# WAIT 2 SECONDS, THEN\n\t\tDEC\t200\n\n\t\tEBANK=\tWHOCARES\nR40ENABL\tTC\tDOWNFLAG\t# RE-ENABLE R40 BY CLEARING IDLEFAIL\n\t\tADRES\tIDLEFAIL\n\t\tTC\tPHASCHNG\n\t\tOCT\t00004\t\t# KILL GROUP 4\n# Page 708\nENDV97P\t\tTCF\tTASKOVER\n\n\t\tEBANK=\tWHOCARES\nV97E\t\tTC\tPHASCHNG\n\t\tOCT\t40534\t\t# A, 4.53 = V97ETASK (-0 CS), TBASE NOW\n\t\tCAF\tBIT1\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTIG\n\t\t2CADR\tV97ETASK\n\n\t\tTCF\tENDOFJOB\n\n\t\tEBANK=\tTIG\nV97ETASK\tCS\tOCT24\t\t# FORCE R1 OF V06N40 TO READ  59X59\n\t\tTS\tTIG\n\t\tCAF\tV06N40\t\t# REDISPLAY V06N40\n\t\tTS\tNVWORD1\n\t\tTCR\tE6SETTER\t# RETURN TO EBANK6 FOR REST OF V97ETASK\n\t\tEBANK=\tCSMMASS\n\t\tCAF\t3MDOT\t\t# 3 SECONDS OF MDOT (2-4 SEC ENGFAIL\n\t\tAD\tCSMMASS\t\t#\tDETECTION) NOT LOST BECAUSE THRUST\n\t\tTS\tMASSTMP\t\t#\tFAILED....COPYCYCLE FOR MASSBACK\n\t\tTC\tPHASCHNG\n\t\tOCT\t00754\t\t# A, 4.75 = SPSOFF97 (-0 CS), TBASE OLD\nSPSOFF97\tTCR\tSPSOFF\n\t\tTC\tPHASCHNG\n\t\tOCT\t00114\t\t# A, 4.11 = V97E40.6 (250 CS), TBASE OLD\n\t\tTC\tFIXDELAY\t# DELAY 2.5 SECONDS FOR (POSSIBLE) TAIL-\n\t\tDEC\t250\t\t#\tOFF (FALSE THRUST-LOSS)\n\n\t\tEBANK=\tDAPDATR1\nV97E40.6\tCAF\tBIT1\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCNTR\n\t\t2CADR\tPRE40.6\t\t# USE S40.6 RESTART ENTRY TO TRIM ENGINE\n\n\t\tTC\tIBNKCALL\t# RCS DAP IN 0.6SEC, SETTING T5 BITS TO\n\t\tCADR\tRCSDAPON\t#\tKILL TVCEXEC/TVCROLLDAP STARTS.\n\t\t\t\t\t#\tLEAVE NARROW DEADBAND FOR REIGNITE.\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00026\t\t# A, 6.2 = PRE40.6 (-0 CS), CLOKTASK (1 SEC)\n\t\tOCT\t05014\t\t# C, DELTAT NEXT, TASK BELOW, IN\n\t\tDEC\t-0\t\t# -0 CS.\n\nQUICKIGN\tCS\tPRIO14\t\t# CLEAR ASTNFLAG AND SET IGNFLAG FOR\n\t\tMASK\tFLAGWRD7\t#\tIMMEDIATE V99 RESPONSE.\n\t\tAD\tBIT13\n\t\tTS\tFLAGWRD7\n\t\tTC\tFIXDELAY\t# DELAY TO ALLOW TIME FOR PRE40.6\n# Page 709\n\t\tDEC\t30\n\nV99FLASH\tCS\tBIT9\t\t# CAUSE V99 TO FLASH\n\t\tTS\tNVWORD1\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40774\t\t# A, 4.77 = TIG-0 (-0 CS) TBASE FOR PREPTVC\n\t\tOCT\t00033\t\t# A, 3.3 = S40.13 (PRIO 20)\n\t\tCAF\tPRIO20\t\t# SET UP TIMEBURN\n\t\tTC\tFINDVAC\n\t\tEBANK=\tTGO\n\t\t2CADR\tS40.13\n\nENDV97E\t\tTCF\tTASKOVER\t# WAIT FOR CLOCKJOB (IMMEDIATE) REACTION\n\t\t\t\t\t# \tTO FLASHING V99 RESPONSE.\n\n# MOD N02\t\t\t\tLOG SECTION P40-P47\n# MOD BY ZELDIN\n#\n# FUNCTIONAL DESCRIPTION\n#\tCOMPUTE INITIAL THRUST DIRECTION(UT) AND INITIAL VALUE OF VG\n#\tVECTOR(VGTIG).\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tS40.1\n#\n# NORMAL EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE (GOTO L+2) NORMAL RETURN OR\n#\tERROR RETURN IF NOSOFLAG =1\n#\n# SUBROUTINES CALLED\n#\tCSMPREC\n#\tINITVEL\n#\tCALCGRAV\n#\tMIDGIM\n#\n# ALARM OR ABORT EXIT MODES\n#\tL+2 OF CALLING SEQUENCE, UNSOLVABLE CONIC IF NOSOFLAG=1\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\tWEIGHT/G\tANTICIPATED VEHICLE MASS\tSP B16 KGM\n#\tXDELVFLG\t1=DELTA-V MANEUVER, 0=AIMPT STEER\n#   IF DELTA-V MANEUVER:\n#\tDELVSIN\t\tSPECIFIED DELTA-V REQUIRED IN\n#\t\t\tINERTIAL COORDS. OF ACTIVE VEHICLE\n#\t\t\tAT TIME OF IGNITION\t\tVECTOR B7 M/CS\n#\tDELVSAB\t\tMAG. OF DELVSIN\t\t\tDP B7 M/CS\n#\tRTIG\t\tPOSITION AT TIME OF IGNITION\tVECTOR B29 M\n#\tVTIG\t\tVELOCITY AT TIME OF IGNITION\tVECTOR B7 M/CS.\n#\tCSTEER = 0\t\t\t\t\tDP\n#   IF AIMPOINT STEERING:\n#   IF AIMPT STEER\n#\tTIG\t\tTIME OF IGNITION\t\tDP B28 CS\n#\tRTARG\t\tPOSITION TARGET TIME\t\tVECTOR B29 M\n#\tCSTEER = ECSTEER (GR 0) \t\t\tDP B1\n# Page 710\n#\tTPASS4 -- TIME OF ARRIVAL AT AIMPOINT\n#\n# OUTPUT\n#\tUT\t\t1/2 UNIT VECTOR ALIGNED WITH THRUST DIRETION IN REF COOR\n#\tVGTIG\t\tINITIAL VALUE OF VELOCITY\n#\t\t\tTO BE GAINED (INERT. COORD.)\t\tVECTOR B7 M/CS\n#\tDELVLVC\t\tVGTIG IN LOC. VERT. COORDS.\t\tB7 M/CS\n#\tF\t\tNOMINAL THRUST FOR ENG USED FOR S40.13\tDP B7 M-NEWT\n#\tBDT\t\tV REQUIRED AT TIG -V REQUIRED AT (TIG-2SEC)\n#\t-GDT\t\tFOR S40.13\t\t\t\tVECT B7 M/CS\n#\tRTIG\t\tCALC IN S40.1B (AIMPT) FOR S40.2,3\tVECTOR B29M\n#\t\t\tPOSITION AT TIME OF IGNITION\n#\n# DEBRIS\tQTEMP1\n#\t\tMPAC, QPRET\n#\t\tPUSHLIST\n#\t\tRTX2,RTX1\n\n\t\tBANK\t14\n\t\tSETLOC\tP40S1\n\t\tBANK\n\n\t\tCOUNT\t16/S40.1\n\nS40.1\t\tSET\tVLOAD\n\t\t\tFIRSTFLG\n\t\t\tLO6ZEROS\n\t\tSTORE\tBDT\n\t\tSTQ\tBOF\n\t\t\tQTEMP\n\t\t\tXDELVFLG\n\t\t\tS40.1B\t\t# LAMBERT\n\t\tVLOAD\tABVAL\t\t# EXTERNAL DELTA-V\n\t\t\tDELVSIN\n\t\tSTORE\tDELVSAB\t\t# COMPUTE FOR P30/P40 INTERFACE\n\t\t\t\t\t#\tTHUS PERMITTING MODULE-ONLY CHANGE\n\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tVTIG\n\t\tSTORE\tVINIT\n\t\tVXV\tUNIT\n\t\t\tRTIG\n\t\tSTOVL\tUT\t\t# UP IN UT\n\t\t\tRTIG\n\t\tSTORE\tRINIT\n\t\tVSQ\tPDDL\n\t\t\t36D\n\t\tDMPR\tDDV\n\t\t\tTHETACON\n\t\tDMP\tDMP\n\t\t\tDELVSAB\n\t\t\tWEIGHT/G\n\t\tDDV\n# Page 711\n\t\t\tF\n\t\tSTOVL\t14D\n\t\t\tDELVSIN\n\n\t\tDOT\tVXSC\n\t\t\tUT\n\t\t\tUT\n\t\tVSL2\tPUSH\t\t# (DELTAV.UP)UP SCALED AT 2(+7) P.D.L. 0\n\t\tBVSU\tPDDL\t\t# DELTA VP SCALED AT 2(+7) P.D.L. 6\n\t\t\tDELVSIN\n\t\t\t14D\n\t\tSIN\tPDVL\n\t\t\t6D\n\t\tVXV\tUNIT\n\t\t\tUT\n\t\tVXSC\tSTADR\n\t\tSTOVL\tVGTIG\t\t# UNIT(VP X UP)SIN(THETAT/2) IN VGTIG.\n\t\tUNIT\tPDDL\t\t# UNIT(DELTA VP) IN P.D.L. 6\n\t\t\t14D\n\t\tCOS\tVXSC\n\t\tVAD\tVXSC\n\t\t\tVGTIG\n\t\t\t36D\n\t\tVSL2 \tVAD\n\t\tSTADR\n\t\tSTORE\tVGTIG\t\t# VG IGNITION SCALED AT 2(+7) M/CS\n\n\t\tUNIT\n\t\tSTOVL\tUT\t\t# THRUST DIRECTION SCALED AT 2(+1)\n\t\t\tVGTIG\n\t\tPUSH\tSET\n\t\t\tAVFLAG\n\t\tCALL\n\t\t\tMIDGIM\t\t# VGTIG IN LV COOR AT 2(+7)M/CS IN DELVLVC\n\t\tGOTO\n\t\t\tQTEMP\nS40.1B\t\tDLOAD\tDSU\t\t# LAMBERT\n\t\t\tTIG\n\t\t\tTWODT\n\t\tSTODL\tTDEC1\n\t\t\tTPASS4\n\t\tDSU\n\t\t\tTDEC1\n\t\tSTCALL\tDELLT4\n\t\t\tAGAIN\n\t\tVLOAD\n\t\t\tVIPRIME\n\t\tSTODL\tUT\n\t\t\tTIG\n\t\tSTORE\tTDEC1\n# Page 712\n\t\tBDSU\n\t\t\tTPASS4\n\t\tSTCALL\tDELLT4\n\t\t\tAGAIN\n\t\tVLOAD\tPUSH\n\t\t\tDELVEET3\n\t\tSTORE\tVGTIG\n\t\tSET\tCALL\n\t\t\tAVFLAG\n\t\t\tMIDGIM\n\t\tSETPD\tGOTO\n\t\t\t0\n\t\t\tCALCUT\n\nTHETACON\t2DEC\t.31830989 B-8\n\n\t\tSETLOC\tP40S3\n\t\tBANK\n\n\t\tCOUNT\t24/S40.1\n\nEP4(45)H\t2DEC\t.125\n\nEP4(10)H\t2DEC\t.027777777\n\nAGAIN\t\tSTQ\tCALL\n\t\t\tQTEMP1\n\t\t\tTHISPREC\n\t\tSXA,2\tSXA,1\n\t\t\tRTX2\n\t\t\tRTX1\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTORE\tRTIG\n\t\tSTOVL\tRINIT\n\t\t\tVATT\n\t\tSTORE\tVTIG\n\t\tSTORE\tVINIT\n\t\tSETPD\tSLOAD\n\t\t\t0\n\t\t\tHI6ZEROS\n\t\tPDDL\tBON\n\t\t\tEP4(45)H\n\t\t\tNORMSW\n\t\t\t+3\n\t\tDLOAD\n\t\t\tEP4(10)H\n\t\tPUSH\tCALL\n\t\t\tINITVEL\n\t\tSETPD\tGOTO\n# Page 713\n\t\t\t0\n\t\t\tQTEMP1\nCALCUT\t\tVLOAD\tCALL\n\t\t\tRTIG\n\t\t\tCALCGRAV\t# GDELTAT IN MPAC AT 2(+7) M/CS\n\t\tVSL1\tV/SC\n\t\t\t200CS\t\t# G AT 2(-5) M/CS. CS\n\t\tPDVL\tVSU\n\t\t\tVIPRIME\n\t\t\tUT\n\t\tV/SC\tVSU\n\t\t\t200CS\n\t\tVXSC\tVSL2\n\t\t\tCSTEER\n\t\tSTOVL\t12D\t\t# B.C SCALED AT 2(-15) PDL 12D\n\t\t\tVGTIG\n\t\tUNIT\tPUSH\t\t# UG PDL 0 SCALED AT 2(+1)\n\n\t\tDOT\tVXSC\n\t\t\t12D\n\t\t\t0\n\t\tVSL2\tBVSU\n\t\t\t12D\n\t\tSTODL\t12D\t\t# Q PDL SCALED AT 2(-5)\n\t\t\tF\n\t\tSRR\tDDV\n\t\t\t4\n\t\t\tWEIGHT/G\n\t\tDSQ\tPDVL\t\t# F/MASS SQUARED PDL 6 AT 2(-10M/(CS.CS)\n\t\t\t12D\n\t\tVSQ\n\t\tBDSU\tSQRT\n\t\tVXSC\tVSL1\n\t\tVAD\tUNIT\n\t\t\t12D\n\t\tSTCALL\tUT\n\t\t\tQTEMP\n200CS\t\t2DEC\t200 B-12\n\n# Page 714\n# PROGRAM DESCRIPTION S40.2,3\t\tDATE 15 NOV 66\n# MOD NO 2\t\t\t\tLOG SECTIONS P40-P47\n# MOD BY ZELDIN\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tCOMPUTE GIMBAL ANGLES IF THRUSTING OCCURRED WITH PRESENT IMU\n#\tORIENTATION, WINGS LEVEL SPACECRAFT, HEADS UP\n#\tCOMPUTE X AXIS OF ENGINE BELL\n#\tCOMPUTE PREFERRED IMU ORIENTATION (XSCREF)\n#\tFOR THIS CALCULATION, ASSUME X AXIS OF SC ALONG UT INITIALLY,\n#\tYSC=UNIT(XXR), ZSC=UNIT(XX(XXR)) AND ROTATE ENGINE BELL ALONG UT.\n#\tNEW SC AXES WILL BE APPROX. WINGS LEVEL AND NEW SC AXES IN REF.\n#\tCOORDS. WILL BE PREFERRED IMU ORIENTATION.\n#\tCOMPUTE DESIRED THRUST DIRECTION IN SM COORDS.\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tS40.2,3\n#\n# NORMAL EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE (GOTO L+2)\n#\n# SUBROUTINES CALLED\n#\tCALCGA\n#\n# ALARM OR ABORT MODES\n#\tNONE\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\tPACTOFF\t\tTOTAL PITCH TRIM ANGLE\t\tSP AT 1.0795111 REV.\n#\tYACTOFF\t\tTOTAL YAW   TRIM ANGLE\t\tSP AT 1.0795111 REV.\n#\tUT\t\tDESIRED THRUST DIRECTION\tVECT. B2 M/(CS.CS)\n#\tRTIG\t\tPOSITION AT TIME OF IGNITION\tVECT. B29 M\n#\tENG2FLAG\tON=RCS  OFF=SPS\n#\n# OUTPUT\n#\tSCAXIS\t\tUNIT VECT. ALIGNED WITH ENG BELL IN SC COOR.\tB1\n#\tXSCREF\t\tUNIT VECTORS ALIGNED WTH PREFERRED IMU\t\tB1\n#\tYSCREF\n#\tZSCREF\n#\tGIMBAL ANGLES IN THETAD\n#\tPOINTVSM\tUNIT VECT ALONG DESIRED THRUST DIRECTION IN SM\tB1\n#\n# DEBRIS\n#\tPUSHLIST, QPRET, MPAC\n#\tQTEMP\tTEMP. ERASABLE\n\n\t\tBANK\t24\n\t\tSETLOC\tP40S\n\t\tBANK\n\t\tCOUNT*\t$$/S40.2\nS40.2,3\t\tVLOAD\tMXV\n\t\t\tUT\n\t\t\tREFSMMAT\n\t\tVSL1\tSTQ\n\t\t\tQTEMP\n\t\tSTORE\tPOINTVSM\t# THRUST IN SM AT 2\n\t\tSETPD\tBON\n\t\t\t0\n# Page 715\n\t\t\tENG2FLAG\n\t\t\tS40.2,3B\n\t\tDLOAD\n\t\t\tHI6ZEROS\n\t\tPUSH\tSLOAD\t\t# ZERO PDL 0\n\t\t\tYACTOFF\n\t\tDMP\tSL1\n\t\t\tTRIMSCAL\n\t\tDAD\tPUSH\n\t\t\tYBIAS\n\t\tCOS\tPDDL\t\t# COS(Y +Y0) PDL 2\n\t\tSIN\tPUSH\t\t# SIN(Y +Y0) PDL 4\n\t\tSLOAD\n\t\t\tPACTOFF\n\t\tDMP\tSL1\n\t\t\tTRIMSCAL\n\t\tDAD\tPUSH\n\t\t\tPBIAS\n\t\tCOS\tPDDL\t\t# COS(P +P0) PDL 6\n\t\tSIN\tPUSH\t\t# SIN(P +P0) PDL 8D\n\t\tSTODL\tZSCREF\t\t# SIN(P +P0)\n\t\t\t6\n\t\tDMP\tSL1\n\t\t\t4\n\t\tDCOMP\tPDDL\t\t# -SIN(Y+Y0)COS(P+P0) PDL 10\n\t\t\t6\n\t\tDMP\tSL1\n\t\t\t2\n\t\tVDEF\n\n\t\tSTODL\tXSCREF\t\t# PD POINTER AT 6 NEW SC X AXIS SCALED AT\n\t\t\tZSCREF\n\t\tDMP\tSL1\n\t\t\t4\n\t\tPDDL\tDMP\n\t\t\tZSCREF\n\t\t\t2\n\t\tSL1\tDCOMP\n\t\tVDEF\n\n\t\tSTODL\tZSCREF\t\t# PD POINTER AT 4 NEW SC Z AXIS SCALED AT 2\n\t\tVDEF\n\n\t\tSTODL\tYSCREF\t\t# PD POINTER AT 0 NEW SC Y AXIS SCALED AT 2\n\t\t\tZSCREF\n\t\tPDDL\tPDDL\n\t\t\tYSCREF\n\t\t\tXSCREF\n\t\tVDEF\n# Page 716\n\t\tSTOVL\tSCAXIS\t\t# ENGINE BELL SCALED AT 2\n\t\t\tUT\n\t\tPDVL\tUNIT\n\t\t\tRTIG\n\t\tVXV\tVCOMP\n\t\t\t0\n\t\tUNIT\tPUSH\n\t\tCALL\n\t\t\tTSTRXUT\n\t\tVXV\tVCOMP\n\t\t\t0\n\t\tVSL1\tPDVL\t\t# 2 RF/SC IN PDL 12D\n\t\t\tXSCREF\n\t\tVXM\tVSL1\n\t\t\t0\n\t\tSTOVL\tXSCREF\t\t# X OF PREF. IMU,X OF SC IN REF COOR. AT 2\n\t\t\tYSCREF\n\t\tVXM\tVSL1\n\t\t\t0\n\t\tSTOVL\tYSCREF\t\t# Y OF PREF. IMU,Y OF SC IN REF COOR. AT 2\n\t\t\tZSCREF\n\t\tVXM\tVSL1\n\t\t\t0\n\t\tSTORE\tZSCREF\t\t# Z OF PREF. IMU,Z OF SC IN REF COOR. AT 2\n\t\tSETPD\tGOTO\n\t\t\t0\n\t\t\tQTEMP\nS40.2,3B\tVLOAD\n\t\t\tUNITX\n\t\tSTOVL\tSCAXIS\n\t\t\tUT\n\t\tSTORE\tXSCREF\n\t\tVXV\tUNIT\n\t\t\tRTIG\n\t\tSTCALL\t6D\n\t\t\tTSTRXUT\n\t\tSTORE\tYSCREF\n\t\tVXV\tVCOMP\n\t\t\tXSCREF\n\t\tVSL1\n\t\tSTCALL\tZSCREF\t\t# ZNB AXIS IN REF COOR\n\t\t\tQTEMP\nTSTRXUT\t\tDLOAD\tBHIZ\n\t\t\t36D\n\t\t\tBADVCTOR\n\t\tVLOAD\tRVQ\n\t\t\t6D\nBADVCTOR\tVLOAD\tUNIT\n\t\t\tRTIG\n\t\tPDVL\tUNIT\n# Page 717\n\t\t\tVTIG\n\t\tVSR3\tVAD\n\t\tVXV\tUNIT\n\t\t\tUT\n\t\tVCOMP\n\t\tSTORE\t6D\n\t\tRVQ\nTRIMSCAL\t2DEC\t1.07975111 B-1\n\nYBIAS\t\t2DEC\t+.00263888889\t# YAW\tMECH BIAS (+0.95 DEG, THRUST ON)\n\nPBIAS\t\t2DEC\t-.00597222222\t# PITCH\tMECH BIAS (-2.15 DEG, THRUST ON)\n\n\t\t\t\t\t# REFERENCE, TRW 68.6520.3.3-40 27 FEB, 1968\n\n# PROGRAM DESCRIPTION S41.1\t\tDATE 8 DEC 66\n# MOD NO 1\t\t\t\tLOG SECTION P40-P47\n# MOD BY ZELDIN\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tCOMPUTE VELOCITY TO BE GAINED INITIALLY IN REF COORDS.\n#\tTO CONTROL COORDS.\n#\n# CALLING SEQUENCE\n#\n#\tL\tCALL\n#\tL+1\t\tS41.1\n#\n# NORMAL EXIT MODE\n#\n#\tAT L +2 OF CALLING SEQUENCE\n#\n# SUBROUTINES CALLED:\n#\n#\tCALCSMSC\n#\tCDUTRIG\n#\n# ALARM OR ABORT MODES\n#\n#\tNONE\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tVG IN REF. COORD. PDL L POINTER AT L+5.  S41.1 WILL RETURN WITH\n# \tPOINTER AT L (L MUST BE LESS THAN OR = TO 14D)\n#\n# OUTPUT\n#\n#\tMPAC CONTAINS VG IN CONTROL COORDS\t\tVECT. B7 M/CS\n#\n# DEBRIS:\n#\n#\tQTEMP\t\tTEMP ERASABLE\n#\tQPRET\n\n\t\tCOUNT\t22/S41.1\n\n\t\tSETLOC\tP40S5\n\t\tBANK\n\nS41.1\t\tSTQ\tCALL\n\t\t\tQTEMP\n\t\t\tCDUTRIG\n\t\tVLOAD\n\t\tMXV\tCALL\n\t\t\tREFSMMAT\n\t\t\t*SMNB*\n# Page 718\n\t\tMXV\tVXSC\n\t\t\tQUADROT\n\t\t\tTENBNK14\t# VG IN CONTROL COORD IN MPAC SCALED AT\n\t\tVSL5\tGOTO\t\t# VG IN CONTROL COORDS. IN MPAC AT 2(+7)\n\t\t\tQTEMP\nTENBNK14\t2DEC\t10. B-4\n\n# Page 719\n# NAME\t\tS40.8 -- CROSS PRODUCT STEERING\n# FUNCTION\t(1) UPDATES THE VELOCITY-TO-BE-GAINED VECTOR.\n#\t\t(2) GENERATES ANGULAR RATE STEERING COMMANDS FOR AUTOPILOT.\n#\t\t(3) ESTABLISHES ENGINE CUT-OFF SIGNALS AT APPROPRIATE TIMES.\n#\t\t(4) INITIATES THRUST-FAIL ROUTINE, R40\n# CALLING SEQ\tCALL S40.6\n# INPUT\t\tVGPREV \t\tLAST VALUE OF THE VELOCITY-TO-BE-GAINED VECTOR\n#\t\t\t\tPRIOR TO UPDATING IN METERS/CS AT +7.\n#\t\tDELVREF\t\tCHANGE IN VEHICLE VELOCITY SINCE LAST MEASUREMENT\n#\t\t\t\tIN METERS/CS AT +7.\n#\t\tBDT\t\tEFFECT OF RATE OF CHANGE OF REQUIRED VELOCITY AND\n#\t\t\t\tGRAVITY DURING DT UPON VELOCITY-TO-BE-GAINED IN\n#\t\t\t\tMETERS/CS AT +7.\n#\t\tCSTEER\t\tA SCALAR OF THE STEERING LAW, SC.AT B+1, USED FOR\n#\t\t\t\tSPS AIMPOINT STEERING MANEUVERS.\n#\t\tIDLEFAIL\tA FLAG TO INHIBIT (IDLE) THE THRUST-FAIL ROUTINE.\n#\t\tSTEERSW\t\tA SWITCH TO PRECLUDE NEEDLESS CONDUCT OF STEERING.\n#\t\tREFSMMAT, DAPDATR1, PIPTIME\n#\t\tEREPFRAC, ETDECAY, KPRIMEDT FOR TVC.\n# OUTPUT\tTTOGO\t\tTIME REMAINING FOR ENGINE BURN IN CS AT +28.\n#\t\tOMEGAC\t\tDP VECTOR RATE COMMAND, SC.AT 1/(2TVCDT) REVS/SEC.\n#\t\tVG, VGPREV, VGDISP, TGO, TIG, SCALED AS NOTED IN CODING\n#\t\tSTEERSW, IMPULSW, NVWORD1\n#\t\tREPFRAC, CNTR, VCNTR, VCNTRTMP FOR TVC (R40 INTERFACING)\n# DEBRIS\tOMEGAXC, +1\n# SUBROUTINES USED:  *SMNB*, ALARM\n\n\t\tSETLOC\tP40S1\n\t\tBANK\n\t\tEBANK=\tDAPDATR1\n\t\tCOUNT\t16/S40.8\n\nS40.8\t\tSETPD\tSTQ\nSPBIT1\t\t\t00D\n\t\t\tQTEMP\n\t\tVLOAD\tBVSU\t\t# CONSTRUCT DELVG, SC.AT B+7 M/CS\n\t\t\tDELVREF\n\t\t\tBDT\n\t\tVAD\n\t\t\tVGPREV\n\t\tSTORE\tVG\t\t# VELOCITY-TO-BE-GAINED, SC.AT B+7 M/CS\n\n\t\tABVAL\n\t\tSTORE\tVGDISP\t\t# FOR DISPLAY PURPOSES\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t10035\t\t# TYPE B RESTART RESTART BELOW AND 5.3 REREADAC\n\n\t\tTC\tINTPRET\n\t\tVLOAD\n# Page 720\n\t\t\tVG\n\t\tSTORE\tVGPREV\n\t\tBOFF\tVLOAD\n\t\t\tSTEERSW\t\t# SKIP TGO AND CROSS-PRODUCT\n\t\t\tQTEMP\n\t\t\tDELVREF\n\t\tABVAL\tPUSH\t\t# CHECK FOR LOTHRUST\n\t\tSLOAD\tDMP\n\t\t\tDVTHRESH\t# SC.AT B-2 M/CS\n\t\t\tDPB-9\n\t\tBDSU\n\t\tBMN\tEXIT\n\t\t\tLOTHRUST\n\t\tCAE\tDAPDATR1\t# ENABLE TVCDAP CG TRACKING\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tCAF\tBIT1\n\t\tINDEX\tA\t\t# LM-OFF, LM-ON VALUE\n\t\tCAE\tEREPFRAC\n\t\tTS\tREPFRAC\n\n\t\tTC\tINTPRET\nTGOCALC\t\tVLOAD\tBVSU\t\t# GET DELVG\n\t\t\tDELVREF\n\t\t\tBDT\n\t\tUNIT\n\t\tDOT\tPUSH\t\t# (00D)\n\t\t\tVG\n\t\tBPL\tDDV\t\t# ANGLE SHOULD BE GREATER THAN PI/2\n\t\t\tINCRSVG\t\t#\tDISPLAY ALARM IF NOT\n\t\t\t2VEXHUST\n\t\tDAD\tDMP\t\t# (DOT PRODUCT UP FROM 00D)\n\t\t\tLODPHALF\n\t\tNORM\tSR1\n\t\t\tX1\n\t\tPDDL\tNORM\n\t\t\t36D\t\t# (MAG DELVG)\n\t\t\tX2\n\t\tBDDV\n\t\tXSU,2\tSL*\n\t\t\tX1\n\t\t\t0 -9D,2\n\t\tDMP\tPUSH\t\t# (00D)\n\t\t\t-FOURDT\n\t\tSLOAD\tSR\n\t\t\tETDECAY\t\t# ETDECAY SC.AT B+14 CS\n\t\t\t14D\n\t\tBDSU\tSTADR\n\t\tSTORE\tTGO\t\t# TIME TO GO IN CS. AT +28\n\t\tDAD\n# Page 721\n\t\t\tPIPTIME\n\t\tSTODL\tTIG\n\t\t\tTGO\n\t\tDSU\tBMN\n\t\t\tFOURSEC\n\t\t\tS40.81\n\nXPRODUCT\tVLOAD\tVXSC\n\t\t\tBDT\n\t\t\tCSTEER\n\t\tVSL2\tVSU\n\t\t\tDELVREF\n\t\tUNIT\tPDVL\n\t\t\tVG\n\t\tUNIT\tVXV\n\t\tMXV\tCALL\n\t\t\tREFSMMAT\t# (REFSMMAT/2)\n\t\t\t*SMNB*\n\t\tVXSC\n\t\t\tKPRIMEDT\t# (KPRIMEDT SCIAT PI/8 RAD)\nOMEGACLC\tSTORE\tOMEGAC\n\t\tGOTO\n\t\t\tQTEMP\n\n\t\tSETLOC\tDAPS7\n\t\tBANK\n\t\tCOUNT\t17/S40.8\n\nTWODT\t\t2DEC\t200.0 B-28\t# 2 SEC\n\n-FOURDT\t\t2DEC\t-800 B-18\t# -4(200CS), SC.AT B+18CS (-4 FOR SCALING)\n\n2VEXHUST\t2DEC\t63.020792 B-7\t# 2(10338.0564 FPS), SC.AT B+7 M/CS\n\nFOURSEC\t\t2DEC\t400.0 B-28\t# 4 SEC\n\nDPB-9\t\t2DEC\t1 B-9\n\n\t\tSETLOC\tDAPS6\n\t\tBANK\n\n\t\tCOUNT\t20/S40.8\n\nS40.81\t\tSET\tVLOAD\t\t# TGO LESS THAN 4 SECONDS\n\t\t\tIMPULSW\t\t# FOR ENGINE-OFF CALL\n\t\t\tHI6ZEROS\nRATEZRO\t\tSTORE\tOMEGAC\t\t# TVC TO ATTITUDE HOLD\n\t\tEXIT\n\t\tCAF\tPOSMAX\t\t# INHIBIT SWITCHOVER/TVC EG TRACKING\n\t\tTS\tCNTR\n# Page 722\n\t\tTC\tINTPRET\n\t\tCLEAR\tGOTO\n\t\t\tSTEERSW\t\t# RESTARTS OK\n\t\t\tQTEMP\nINCRSVG\t\tEXIT\t\t\t# ALARM INDICATING THAT THRUST IS POINTING\n\t\tTC\tALARM\t\t# IN WRONG DIRECTION.\n\t\tOCT\t01407\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tQTEMP\n\nLOTHRUST\tBON\tVLOAD\t\t# THRUST FAILURE (LO-OR-NO) INDICATED\n\t\t\tIDLEFAIL\t# SET BY V97P.  ALLOWS 1 BYPASS IN CASE OF\n\t\t\tQTEMP\t\t#\tUNFAVORABLE S40.8 SYNCH.\n\t\t\tHI6ZEROS\t# START OF ENGINE-FAIL (R40) OPERATIONS\n\t\tSTORE\tOMEGAC\t\t# PUT TVC IN ATTITUDE HOLD\n\t\tEXIT\n\n\t\tCS\tZERO\n\t\tTS\tVCNTR\t\t# KILL CSMMASS UPDATING\n\t\tTS\tVCNTRTMP\t# (TVCEXEC LOGIC REQUIRES THIS TOO)\n\t\tTS\tREPFRAC\t\t# KILL TVCDAP CG TRIM TRACKING\n\t\tTS\tNVWORD1\t\t# SET UP ENGINE-FAIL V97FLASH (CLOCKJOB)\n\n\t\tTC\tINTPRET\n\t\tCLEAR\tGOTO\t\t# INHIBIT STEERING AND TGO CALC (MANUAL\n\t\t\tSTEERSW\t\t# \tSHUTDOWN IF NOT SET UP AGAIN)\n\t\t\tQTEMP\t\t# RESTARTS OK\n\n# Page 723\n# NAME\t\tS40.9 -- VTOGAIN (AIMPOINT MANEUVERS ONLY)\n# FUNCTION\t(1) GENERATES REQUIRED VELOCITY AND VELOCITY-TO-BE-GAINED\n#\t\tVECTORS FOR USE DURING AIMPOINT MANEUVERS.\n#\t\t(2) UPDATES THE B VECTOR WHICH IS USED IN THE FINAL\n#\t\tCALCULATION OF EXTRAPOLATING THE VELOCITY-TO-BE-GAINED.\n# CALLING SEQ\tVIA FINDVEC AS NEW JOB.\n# INPUT\t\tRNIT\tACTIVE VEHICLE RADIUS VECTOR IN METERS AT +29.\n#\t\tVNIT\tACTIVE VEHICLE VELOCITY VECTOR IN METERS/CS AT +7.\n#\t\tVRPREV\tLAST COMPUTED VELOCITY REQUIRED VECTOR IN\n#\t\t\tMETERS/CS AT +7.\n#\t\tNONTIG\tTIME OF IGN.  USED IN TARGETTING ROUTINES B+28\n#\t\tDELLT4\tTRANSFER TIME FROM PIPTIME TO TARGET B+28\n#\t\tTNIT\tTIME OF RNIT AND VNIT IN CS AT +28\n#\t\tGDT/2\tHALF OF VELOCITY GAINED IN DELTA T TIME DUE TO\n#\t\t\tACCELERATION OF GRAVITY IN METERS/CS AT +7.\n#\t\tDELVREF\tCHANGE IN VELOCITY DURING LAST 2 SEC IN\n#\t\t\tMETERS/CS AT +7.\n#\t\tNORMSW\tSET=CENTRAL ANGLE BETWEEN RTARG AND RTIG IS BETWEEN\n#\t\t\t165 TO 195 DEGREES.\n#\t\t\tRESET=CENTRAL ANGLE OUTSIDE CONE DESCRIBED ABOVE.\n# OUTPUT\tVGTEMP\tVELOCITY TO BE GAINED VECTOR IN METERS/CS AT +7.\n#\t\tCOGA\tINPUT OF INITIAL GUESS FOR LAMBERT FROM S40.1\n#\t\t\tOR PREVIOUS PASS THRU S40.9.\n#\t\tGOBL/2\tOBLATENESS TERM IN AVG GRAV CALC: GOBL*RSQ/MU\n#\t\tVRPREV/\tVELOCITY REQUIRED VECTOR IN METERS/CS AT +7.\n#\t\tBDT\tB VECTOR IN METERS/CS AT +7.\n# SUBROUTINES USED -- INITVEL\n\n\t\tSETLOC\tP40S1\n\t\tBANK\n\n\t\tEBANK=\tNBRCYCLS\n\t\tCOUNT\t16/S40.9\n\nS40.9\t\tTC\tINTPRET\n\t\tSETPD\tDLOAD\n\t\t\t00D\n\t\t\tLO6ZEROS\n\t\tPDDL\n\t\t\tEP4(45)L\n\t\tBON\tDLOAD\n\t\t\tNORMSW\n\t\t\t+2\n\t\t\tEP4(10)L\n\t\tPUSH\n\t\tCLEAR\tCALL\n\t\t\tGUESSW\n\t\t\tHAVEGUES\n\t\tEXIT\n\t\tTC\tPHASCHNG\t# SAVE TIME BY NOT REDOING LAMBERT CALCS\n\t\tOCT\t05021\t\t# C, PRIORITY NEXT, JOB BELOW\n# Page 724\n\t\tOCT\t10000\n\t\tTC\tINTPRET\nENDLAMB\t\tBON\n\t\t\tFIRSTFLG\n\t\t\tFIRSTTME\n\t\tVLOAD\tVSU\n\t\t\tVIPRIME\n\t\t\tVRPREV\n\t\tPDDL\tDSU\n\t\t\tTNIT\n\t\t\tTNITPREV\n\t\tSL\tBDDV\n\t\t\t17D\n\t\t\t200CSHI\n\t\tVXSC\n\t\tVSU\tVSL1\n\t\t\tGDT/2\n\t\tSTORE\tBDT\nFIRSTTME\tSLOAD\tDCOMP\n\t\t\tRTX2\n\t\tBMN\n\t\t\tMOONCASE\n\t\tVLOAD\tUNIT\n\t\t\tRN\n\t\tDLOAD\tDSU\n\t\t\tPIPTIME\n\t\t\tNOMTIG\n\t\tDMP\tDDV\n\t\t\tEARTHMU\n\t\t\t34D\n\t\tVXSC\tVAD\n\t\t\tGOBL/2\n\t\t\tVGTEMP\t\t# NOTE: NO TEST IS MADE TO SUBTRACT GOBL\n\t\tSTORE\tVGTEMP\t\t# INSIDE 165-195 DEGREE CONE AREA.\nMOONCASE\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04021\t\t# C, JOB BELOW\n\nCOPY40.9\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tTNIT\n\t\tSTOVL\tTNITPREV\n\t\t\tVIPRIME\n\t\tSTORE\tVRPREV\n\t\tCLEAR\tEXIT\n\t\t\tFIRSTFLG\n\t-2\tCS\tONE\t\t# REDO40.9 (RESTART) ENTRY TO END S40.9\n\t\tTS\tNBRCYCLS\nENDS40.9\tTC\tPHASCHNG\n\t\tOCT\t00001\n# Page 725\n\t\tTCF\tENDOFJOB\n\nREDO40.9\tTC\tINTPRET\t\t# S40.9 RESTARTS COME HERE TO GRACEFULLY\n\t\tVLOAD\t\t\t#\tTERMINATE S40.9 SO THAT IT CAN BE\n\t\t\tLO6ZEROS\t#\tSET UP WITH LATEST R,V,T NEXT PASS\n\t\tSTODL\tDELVSUM\t\t#\t(TYPE C PHASE POINTS '04021' WILL\n\t\t\tLO6ZEROS\t#\tFORCE NORMAL S40.9 TERMINATIONS,\n\t\tSTOVL\tNBRCYCLS\t#\tRATHER THAN LOSE TIME OF BRAND NEW\n\t\t\tVGPREV\t\t#\tPASS -- QUICK OLD DATA BETTER THAN\n\t\tSTORE\tVGTEMP\t\t#\tNONE) NOW CAN GO THRU SETUP.9\n\t\tEXIT\t\t\t#\tWITHOUT DISTURBING VGPREV.\n\t\tTCF\tENDS40.9 -2\t# STORE 0,0 COVERED NBRCYCLS,P -- FIX UP S\n\n200CSHI\t\t2DEC\t200 B-12\n\nEARTHMU\t\t2DEC*\t-3.986032 E10 B-36*\n\nEP4(45)L\t2DEC\t.125\n\nEP4(10)L\t2DEC\t.027777777\n\n# Page 726\n# NAME:  \t\tS40.13 -- TIMEBURN\n#\n# FUNCTION\t\t(1) DETERMINE WHETHER A GIVEN COMBINATION OF VELOCITY-TO-\n#\t\t\tBE-GAINED AND ENGINE CHOICE RESULT IN A BURN TIME SUFFICIENT\n#\t\t\tTO ALLOW STEERING AT THE VEHICLE DURING THE BURN, AND\n#\t\t\t(2) THE MAGNITUDE OF THE RESULTING BURN TIME -- IF IT IS SHORT --\n#\t\t\tAND THE ASSOCIATED TIME OF THE ENGINE OFF SIGNAL.\n#\n# CALLING SEQUENCE\tVIA FINDVAC AS A NEW JOB\n#\n# INPUT\t\t\tVGTIG -- VELOCITY TO BE GAINED VECTOR (METERS/CS) AT +7\n#\t\t\tWEIGHT/G -- MASS OF VEHICLE IN KGM AT TIG\n#\t\t\tF -- ENGINE THRUST IN M.NEWTONS AT +7\n#\t\t\tMDOT -- RATE OF DECREASE OF VEHICLE MASS DURING ENGINE BURN\n#\t\t\t\tIN KILOGRAMS/CENTISECOND AT +3.  THIS SCALING MAY\n#\t\t\t\tREQUIRE MODIFICATION FOR SATURN BURNS.\n#\n# OUTPUT\t\tIMPULSW\t\tZERO FOR STEERING\n#\t\t\t\t\tONE FOR ATTITUDE HOLD\n#\t\t\tTGO\t\tTIME TO BURN IN CENTISECONDS AT +14\n#\t\t\tTHE QUANTITY M.NEWTON SHALL BE USED TO EXPRESS WEIGHT IN TERMS OF\n#\t\t\t(KILOGRAM*METER)/(CENTISECOND*CENTISECOND)\n#\t\t\t(1) M.NEWTON = (10000) NEWTONS.\n\n\t\tEBANK=\tTGO\n\t\tCOUNT\t16/40.13\n\nS40.13\t\tTC\tINTPRET\n\t\tSETPD\tSET\n\t\t\t00D\n\t\t\tIMPULSW\t\t# ASSUME NO STEERING UNTIL FOUND OTHERWISE\n\t\tVLOAD\tABVAL\n\t\t\tVGTIG\t\t# VELOCITY TO BE GAINED AT +7\n\t\tEXIT\n\t\tCAF\tBIT7\t\t# TEST +X TRANSLATION\n\t\tEXTEND\n\t\tRXOR\tCHAN31\n\t\tMASK\tBIT7\n\t\tEXTEND\n\t\tBZF\tNOTADDUL\n\t\tTC \tINTPRET\n\t\tPDDL\tDDV\t\t# 00D = MAG OF VGTIG AT +7\n\t\t\tS40.135\t\t# COMPENSATION FOR 2 JET ULLAGE AT +24\n\t\t\tWEIGHT/G\t# MASS IN KGMS AT +16\n\t\tBON\tSL1\t\t# DOUBLE CORRECTION IF FOUR JETS\n\t\t\tNJETSFLG\n\t\t\tS40.130\nS40.130\t\tBDSU\n\t\tPDDL\tDDV\t\t# 00D = MAG OF VGTIG CORRECTED FOR ULLAGE\n\t\t\tK1VAL\t\t# M.NEWTON-CS AT +24\n\t\t\tWEIGHT/G\n\t\tBDSU\tBMN\n\t\t\t00D\n\t\t\tS40.131\t\t# TGO LESS THAN 100 CS\n\t\tPDDL\tDMP\t\t# 02D = TEMP1 AT +7\n# Page 727\n\t\t\tEMDOT\t\t# SPS FLOW RATE SC.AT B+3 KG/CS (SP, NOTE)\n\t\t\t3.5SEC\t\t# 350 CS AT +14\n\t\tBDSU\tPDDL\n\t\t\tWEIGHT/G\n\t\t\tFANG\n\t\tDMP\tSR2\n\t\t\t5SECOND\t\t# 500 CS AT +14\n\t\tDDV\tPUSH\t\t# 04D = TEMP2\n\t\tBDSU\tBPL\n\t\t\t02D\n\t\t\tS40.133\t\t# TGO GREATER THAN 600 CS\n\t\tDLOAD\tBDDV\n\t\tDMP\tDAD\n\t\t\t5SECOND\t\t# 500 CS AT +14\n\t\t\t1SEC2D\t\t# 100 CS AT +14\n\t\tGOTO\n\t\t\tS40.132\nS40.131\t\tDLOAD\tDMP\t\t# TGO LESS THAN 100 CS\n\t\t\tWEIGHT/G\n\t\tDAD\tDDV\n\t\t\tK2VAL\t\t# M.NEWTON CS AT +24\n\t\t\tK3VAL\t\t# M.NEWTON AT +10\nS40.132\t\tEXIT\n\t\tEBANK=\tTGO\n\t\tTC\tTPAGREE\n\t\tCA\tMPAC\n\t\tXCH\tL\n\t\tCA\tZERO\n\t\tDXCH\tTGO\t\t# TGO IN CS AT +28\n\t\tTC\tS40.134\nS40.133\t\tCLEAR\tEXIT\t\t# WILL STEER VEHICLE\n\t\t\tIMPULSW\nS40.134\t\tTC\tPHASCHNG\t# KILL GROUP 3\n\t\tOCT\t3\n\n\t\tTCF\tENDOFJOB\n\nNOTADDUL\tTC\tINTPRET\n\t\tGOTO\n\t\t\tS40.130 +1\t# DO NOT COMPENSATE FOR 7 SEC OF ULLAGE\n\t\tSETLOC\tDAPS7\n\t\tBANK\n\n\t\tCOUNT\t17/40.13\n\nK1VAL\t\t=\tEK1VAL\t\t# DP PAD LOAD B+23 NEWTON-SEC/E+2\nK2VAL\t\t=\tEK2VAL\t\t# DP PAD LOAD B+23 NEWTON-SEC/E+2\nK3VAL\t\t=\tEK3VAL\t\t# DP PAD LOAD B+09 NEWTONS/E+4\n1SEC2D\t\t2DEC\t100.0 B-14\t# 100.0 CS AT +14\n# Page 728\n3.5SEC\t\t2DEC\t350.0 B-13\t# 350 CS AT +13\n\n5SECOND\t\t2DEC\t500.0 B-14\t# 500.0 CS AT +14\n\nS40.135\t\t2DEC\t69.6005183 B-23\t# IMPULSE FROM 7.96 SECS OF 2-JET FIRING\n\t\t\t\t\t# \t7.96 (199.6)COS(10) LB-SEC, SC.AT\n\t\t\t\t\t#\tB+23 NEWTON-SEC/E+2 (7 SEC ULLAGE\n\t\t\t\t\t#\tTO GO, PLUS 0.96 SEC FROM PIPTIME)\n\n# Page 729\n# NAME\t\tS40.6 GIMBAL DRIVE TEST AND/OR GIMBAL TRIM\n# MOD NO 5\t\t\t\tDATE 9 MARCH, 1967\n# MOD BY ENGEL\t\t\t\tLOG SECTION P40-P47\n#\n# FUNCTIONAL DESCRIPTION\n#\tGIMBAL DRIVE TEST....0,+2,-2,0 DEGREE ENGINE COMMANDS, AT 2 SECOND\n#\t\tINTERVALS, FIRST IN PITCH, THEN IN YAW.  ASTRONAUT VERIFICATION\n#\t\tOF GIMBAL MOTION ON GPI\n#\tGIMBAL TRIM....AFTER A 4 SECOND DELAY, ENGINE COMMANDED TO\n#\t\tPRE-COMPUTED TRIM POSITION.  ASTRONAUT VERIFICATION ON GPI.\n#\tPRE40.6....RESTART ENTRY TO RE-DO S40.6, ONLY IF RCS IS ON --- IF TVC\n#\t\tIS NOT ON --- PRIMARILY TO GET ACTUATORS TRIMMED FOR IGNITION.\n#\t\tBYPASS 4 SEC DELAY.  SPEED IS CRITICAL NEAR IGNITION.\n#\t\tIF TVC IS ON (TVCDAPON OR LATER) THEN REDOTVC WILL TAKE CARE\n#\t\tOF RESTARTING ACTUATORS.\n#\n# CALLING SEQUENCE....\n#\tWAITLIST, WITH 2CADR FOR S40.6 (OR PRE40.6), WITH EBANK= CNTR\n#\n# NORMAL EXIT MODE -- FIXDELAY, TASKOVER\n#\n# SUBROUTINES CALLED....\n#\tOUTPUT (INTERNAL)\n#\tFIXDELAY\n#\n# ALARM OR ABORT EXIT MODES --- NONE\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\tCNTR = +0, NORMALLY SET BY THE P40 CALL AT TST,TRIM.\n#\tMRKRTMP....POSITIVE FOR GIMBAL DRIVE TEST AND GIMBAL TRIM (BOTH)\n#\t\t   NEGATIVE FOR GIMBAL TRIM ONLY\n#\tPACTOFF, YACTOFF SC.AT 85.41 ARCSEC/BIT (V48N48 P, YTRIM)\n#\t\"SC CONT\" SWITCH AT \"CMC\" (A/P CONTROL SWITCH AT \"GNC\")\n#\tACTIVE SPS GIMBAL MOTOR POWER(S), PITCH, YAW\n#\n# OUTPUT\n#\tTVCYAW, TVCPITCH (BITS RELEASED)\n#\tTVC ENABLE AND OPTICS ERROR COUNTER ENABLE\n#\n# DEBRIS\n#\tTBMPR60, CNTR\n\n\t\tBANK\t17\n\t\tSETLOC\tDAPS6\n\t\tBANK\n\n\t\tEBANK=\tCNTR\n\t\tCOUNT\t20/S40.6\n\nPRE40.6\t\tCS\tFLAGWRD6\t# RESTART ENTRY TO S40.6 (DO NOT PERMIT\n\t\tMASK\tOCT60000\t#\tIF TVC, BITS 15,14 = 1,0)\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\tTASKOVER\t# TVC, REDOTVC WILL REESTABLISH INTERFACE\n\n\t\tCS\tBIT1\t\t# RCS, SO DO S40.6, GIMTRIM ONLY\n# Page 730\n\t\tTS\tMRKRTMP\n\n\t\tCAF\tBIT1\t\t# FOR REVISED S40.6 TIMING FOR RESTARTS...\n\t\tTS\tCNTR\t\t# TO INDICATE A RESTART ENTRY (CNTR 1S\n\t\t\t\t\t#\tNORMALLY +0, BY S40.6)\n\n\t\tEBANK=\tCNTR\nS40.6\t\tCS\tZERO\t\t# INHIBIT OPTICS ACTIVITY\n\t\tTS\tOPTIND\n\n\t\tCS\tBIT2\t\t# DISENABLE OPTICS ERROR COUNTERS (ZERO,\n\t\tEXTEND\t\t\t# \tAND INHIBIT PULSE TRANSMISSION --\n\t\tWAND\tCHAN12\t\t#\tNORMAL STATE)\n\n\t\tCAF\tOCT02200\t# TVC ENABLE (SPS SERVO AMPS SEE DAC\n\t\tEXTEND\t\t\t#\tVOLTAGES) AND DISENGAGE OPTICS/DAC\n\t\tWOR\tCHAN12\n\n\t\tTC\tFIXDELAY\t# 60MS PROCEDURAL DELAY (40MS MINIMUM) FOR\n\t\tDEC\t6\t\t#\tRELAY LATCHING\n\n\t\tCAF\tBIT2\t\t# ENABLE OPTICS ERROR COUNTERS\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tTC\tFIXDELAY\t# 20MS PROCEDURAL DELAY (4MS MINIMUM) FOR\n\t\tDEC\t2\t\t#\tRELAY LATCHING\n\nRSTRTST\t\tCCS\tCNTR\t\t# CHECK FOR RESTART ENTRY (PRE40.6)\n\t\tTCF\tGIMTRIM +2\t# RESTART ENTRY....BYPASS 4 SECOND DELAY\n\t\t\t\t\t#\tTST,TRIM SETS +0 ON NORMAL ENTRY\n\n\t\tCAE\tMRKRTMP\t\t# CHECK FOR TEST/TRIM OR TRIM ONLY\n\t\tTS\tCNTR\t\t#\tMRKRTMP SAVES CNTR FOR RESTARTS\n\t\tEXTEND\n\t\tBZMF\tGIMTRIM\t\t# (TRIM ONLY)\n\nGDTSETUP\tCS\tZERO\t\t# GIMBAL DRIVE TEST SETUP, FOR PITCH\n\t\tTS\tCNTR\n\nGIMDTEST\tCAF\t+2ACTDEG\t# GIMBAL DRIVE TEST, 1ST INCREMENT\n\t\tTC\tOUTPUT\t\t#\t(LEAVES GIMBAL AT +2 DEG)\n\t\tCAF\t-4ACTDEG\t# 2ND INCREMENT (LEAVES GIMBAL AT -2)\n\t\tTC\tOUTPUT\n\t\tCAF\t+2ACTDEG\t# 3RD INCREMENT (LEAVES GIMBAL AT -0)\n\t\tTC\tOUTPUT\n\n\t\tCS\tCNTR\t\t# CHECK FOR COMPLETION OF YAW TEST.\n# Page 731\n\t\tCCS\tA\n\t\tTCF\tGIMTRIM\t\t# COMPLETED, GO TO GIMBAL TRIM ROUTINE\n\t\tCS\tBIT1\t\t# SET UP YAW TEST\n\t\tTS\tCNTR\n\t\tTCF\tGIMDTEST\t# FOR YAW TEST\n\nOUTPUT\t\tEXTEND\t\t\t# OUTPUT THE INCREMENT....SAVE Q\n\t\tQXCH\tTEMPR60\n\n\t\tINDEX\tCNTR\n\t\tTS\tTVCPITCH\n\n\t\tINDEX\tCNTR\n\t\tCAF\tBIT11\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\n\t\tTC\tFIXDELAY\t# WAIT 2SEC, WHILE ASTRONAUT VERIFIES\n\t\tDEC\t200\t\t# \tGIMBAL MOTION ON GPI\n\t\tTC\tTEMPR60\n\nGIMTRIM\t\tTC\tFIXDELAY\t# WAIT 4 SECONDS BEFORE GIMBAL TRIM\n\t\tDEC\t400\n\n\t+2\tCS\tZERO\t\t# PICK UP TRIM VALUES AND OUTPUT THEM\n\t\tAD\tPACTOFF\t\t#\t(AVOID +0) ENTRY POINT FROM RSTRTST\n\t\tTS\tTVCPITCH\t#\tON A RESTART, TO AVOID 4SEC DELAY\n\t\tCS\tZERO\n\t\tAD\tYACTOFF\n\t\tTS\tTVCYAW\n\n\t\tCAF\tPRIO6\t\t# RELEASE THE COUNTERS, BITS 11,12\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\nENDS40.6\tTCF\tTASKOVER\n\nOCT02200\tOCT\t02200\t\t# BITS 8,11 FOR CHANNEL 12 TVC/OPTICS\n-4ACTDEG\tDEC\t-168\t\t# -2(+2ACTDEG), WHOLE BITS, NO ROUNDUP\n+2ACTDEG\tDEC\t+84\t\t# +2 DEG, SC.AT 85.41 ARCSEC/BIT (+84D)\n\n# CALLED BY \"DONOUN46\" (VERB 48), OR DIRECTLY BY \"FRESHDAP\" (RCS DAP) VIA IBNKCALL\n\n\t\tCOUNT\t20/S41.2\n\nS41.2\t\tCA\tDAPDATR1\n# Page 732\n\t\tMASK\tTHREE\n\t\tAD\tA\n\t\tTS\tRATEINDX\n\n\t\tINHINT\n\t\tCAE\tDAPDATR1\t# IS LEM ATTACHED (BITS 14,13 OF DAPDATR1\n\t\tMASK\tPRIO30\t\t#\t=10)\n\t\tAD\t-BIT14\t\t# (OCT57777)\n\t\tEXTEND\n\t\tBZF\tTOGETHER\t# YES\n\n\t\tCS\tBIT2\t\t# NO, UNSET FLAG\n\t\tMASK\tFLAGWRD7\n\t\tTS\tFLAGWRD7\n\n\t\tTCF\t+4\n\nTOGETHER\tCS\tFLAGWRD7\t# ATTACHED, SET FLAG FOR INTEGRATION\n\t\tMASK\tBIT2\n\t\tADS\tFLAGWRD7\n\n\t\tRELINT\n\n\t\tCA\tDAPDATR1\n\t\tMASK\tBIT4\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# DEC 46 MEANS NARROW DB\n\t\tCA\tDEC409\n\t\tAD\tDEC46\t\t# DEC 455 MEANS WIDE DB\n\t\tTS\tADB\n\n\t\tCA\tDAPDATR1\n\t\tMASK\tBIT7\t\t# QUAD BD\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tCA\tONE\n\t\tTS\tXTRANS\n\t\tCA\tDAPDATR1\n\t\tMASK\tBIT10\t\t# QUAD AC\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tCS\tONE\n\t\tADS\tXTRANS\n\n\t\tINHINT\n\t\tEXTEND\n\t\tBZF\t+5\t\t# CLEAR NJETSFLG (4 JETS, OR NO JETS)\n\t\tCS\tFLAGWRD1\t# SET NJETSFLG (2 JETS, AC OR BD QUADS)\n\t\tMASK\tBIT15\t\t# NJETSFLG = 1 FOR 2 JET ULLAGE (AC OR BD)\n\t\tADS\tFLAGWRD1\n# Page 733\n\t\tTCF\t+4\n\t\tCS\tBIT15\t\t# KJETSFLG = 0 FOR 4 JET (OR 0 JET) ULLAGE\n\t\tMASK\tFLAGWRD1\n\t\tTS\tFLAGWRD1\n\t\tRELINT\n\t\tCA\tDAPDATR2\n\t\tMASK\tBIT13\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\t+2\n\t\tCS\tONE\n\t\tCOM\n\t\tTS\tACORBD\t\t# MINUS FOR A-C, PLUS FOR B-D\n\n\t\tCA\tDAPDATR2\n\t\tMASK\tBIT10\n\t\tCCS\tA\n\t\tTCF\t+4\n\t\tCA\tONE\n\t\tTS\tRACFAIL\n\t\tTCF\tBDFAIL\n\t\tCA\tZERO\n\t\tTS\tRACFAIL\n\t\tCA\tDAPDATR2\n\t\tMASK\tBIT4\n\t\tCCS\tA\n\t\tTCF\tBDFAIL\n\t\tCS\tONE\n\t\tTS\tRACFAIL\nBDFAIL\t\tCA\tDAPDATR2\n\t\tMASK\tBIT7\n\t\tCCS\tA\n\t\tTCF\t+4\n\t\tCA\tONE\n\t\tTS\tRBDFAIL\n\t\tTC\tQ\n\t\tCA\tZERO\n\t\tTS\tRBDFAIL\n\t\tCA\tDAPDATR2\n\t\tMASK\tBIT1\n\t\tCCS\tA\n\t\tTC\tQ\n\t\tCS\tONE\n\t\tTS\tRBDFAIL\n\t\tTC\tQ\n\n# DAPFIG ENTRY VIA TC POSTJUMP AS JOB FROM \"STABLISH\" (VERB 46)\n\n\t\tBANK\t42\n\t\tSETLOC\tEXTVBS\n# Page 734\n\t\tBANK\n\nDAPFIG\t\tCS\tBIT9\t\t# TURN OFF SIVB TAKEOVER\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tCAE\tDAPDATR1\t# DETERMINE VEHICLE CONFIGURATION\n\t\tEXTEND\n\t\tMP\tBIT3\t\t#\tRIGHT SHIFT 4 OCTAL DIGITS\n\t\tMASK\tTHREE\t\t#\t(IN CASE BIT 15 IS USED)\n\t\tINDEX\tA\n\t\tTCF\t+1\t\t#\tBRANCH BASED ON CONFIG....\n\n\t\tTCF\tNODAPUP\t\t# CM.......ACTIVATE NODAP\n\t\tTCF\tRCSDAPUP\t#\tCSM......ACTIVATE RCSDAP\n\t\tTCF\tRCSDAPUP\t#\tCSM/LEM..ACTIVATE RCSDAP\n\t\tTC\tPOSTJUMP\n\t\tCADR\tSATSTKON\nRCSDAPUP\tINHINT\t\t\t# CALL TO ACTIVATE RCSDAP, AND RETURN\n\t\tTCR\tIBNKCALL\n\t\tCADR\tRCSDAPON\n\t\tRELINT\n\t\tTCF\tENDFIG\t\t# CAME IN VIA V46, GO OUT VIA GOPIN\nNODAPUP\t\tEXTEND\t\t\t# T5 IDLE FOR NODAP (DON'T WORRY ABOUT T)\n\t\tDCA\tT5IDLDAP\n\t\tDXCH\tT5LOC\n\t\tTC\tDOWNFLAG\t# RESET T5-USAGE FLAGS FOR NODAP\n\t\tADRES\tDAPBIT1\t\t# BIT 15 FLAG 6 = 0\n\t\tTC\tDOWNFLAG\n\t\tADRES\tDAPBIT2\t\t# BIT 14 FLAG 6 = 0\n\t\tINHINT\n\t\tTC\tIBNKCALL\t# ZERO JET CHANNELS IN 14 MS AND THEN\n\t\tCADR\tZEROJET\t\t# LEAVE THE T6 CLOCK DISABLED.\n\t\tRELINT\n\t\tCAF\tBIT1\t\t# KILL KALCMANU JOB\n\t\tTS\tHOLDFLAG\nENDFIG\t\tTC\tPOSTJUMP\t# CAME IN VIA V46, GO OUT VIA GOPIN\n\t\tCADR\tGOPIN\n\t\tSBANK=\tPINSUPER\t# Added by RSB 2009\n\t\tEBANK=\tPACTOFF\nT5IDLDAP\t2CADR\tT5IDLOC\n\n\t\tSBANK=\tLOWSUPER\n\t\tBANK\t17\n\t\tSETLOC\tDAPS6\n\t\tBANK\n\nDEC409\t\tDEC\t409\nDEC46\t\tDEC\t46\n\n# Page 735\n\n# CALLED BY \"DONOUN47\" (VERB 48), OR DIRECTLY BY \"FRESHDAP\" (RCS DAP)\nS40.14\t\tCAE\tIXX\t\t# RCS ENTRY\n\t\tEXTEND\n\t\tMP\tCONTONE\n\t\tTS\tJ/M\n\n\t\tCA\tIAVG\n\t\tEXTEND\n\t\tMP\tCONTONE\n\t\tTS\tJ/M1\n\n\t\tTS\tJ/M2\n\n\t\tEXTEND\n\t\tDCA\tCONTTWO\n\t\tEXTEND\n\t\tDV\tIXX\n\t\tTS\tKMJ\n\n\t\tEXTEND\n\t\tDCA\tCONTTWO\n\t\tEXTEND\n\t\tDV\tIAVG\n\t\tTS\tKMJ1\n\n\t\tTS\tKMJ2\n\n\t\tTC\tQ\n\nCONTONE\t\tDEC\t.662034\t\t# 2PI/M\nCONTTWO\t\t2DEC\t.00118\n\n\t\tCOUNT \t24/TVNG\n\n\t\tBANK\t31\n\t\tSETLOC\tP40S\n\t\tBANK\n\nPOS-2.5\t\tOCT\t37405\n\t\tEBANK=\tDAPDATR1\nRCSCADR\t\t2CADR\tRCSUP\n\n6SECT5\t\tOCT\t37704\n\t\tCOUNT\t21/RCSUP\n\n\t\tBANK\t20\n\n\t\tSETLOC\tDAPS3\n\t\tBANK\n\n# Page 736\n\nRCSUP\t\tLXCH\tBANKRUPT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tTCR\tRCSDAPON\t# ACTIVATE RCS DAP\n\n\t\tTCF\tRESUME\n\n\t\tEBANK=\tDAPDATR1\nRCSADDR\t\t2CADR\tRCSATT\n\n0.6SECT5\tOCT\t37704\n\n\t\t\t\t\t# RCSDAPON ENTRY MUST BE UNDER INT-INHIBIT\nRCSDAPON\tCAF\t0.6SECT5\t# 0.6 SEC ALLOWS TVCEXEC/ROLLDAP TO DIE\n\t+1\tTS\tTIME5\t\t# ENTRY FROM R00TOP00\n\t\tTS\tT5PHASE\t\t# WILL CAUSE FRESHDAP (+1)\n\n\t\tCS\tRCSFLAGS\t# SET BIT3 TO REINITIALIZE FDAI ERROR\n\t\tMASK\tBIT3\t\t#\tDISPLAY, IN CASE SC CONT SWITCH\n\t\tADS\tRCSFLAGS\t#\tIN SCS NOT GNC (GUIDEMODE PRIMARY)\n\n\t\tEXTEND\n\t\tDCA\tRCSADDR\t\t# (RCSATT)\n\t\tDXCH\tT5LOC\n\n\t\tCS\tOCT60000\t# SEE BITS 15,14 TO 01 TO INDICATE\n\t\tMASK\tFLAGWRD6\t#\tT5 TAKEOVER BY RCSDAP\n\t\tAD\tBIT14\n\t\tTS\tFLAGWRD6\t# KILLS TVCEXEC AND ROLLDAP STARTS\n\n\t\tTC\tQ\t\t# RETURN TO CALLER (TVCDAPOF OR RCSDAPUP)\n\n\n"
  },
  {
    "path": "Comanche055/P51-P53.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     P51-P53.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 737-784\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-12 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname, and Comanche 055 page images.\n#\t\t2009-05-20 RSB\tCorrections: SETI/PDT -> SET1/PDT,\n#\t\t\t\tGOTOPOOH -> GOTOPOOH, R33EXIT -> R53EXIT,\n#\t\t\t\tV853 -> VB53, R56A -> R56A1 (some places\n#\t\t\t\tonly), added missing R56A1 label, added a\n#\t\t\t\tmissing CAF in COARSTYP, corrected a SETLOC\n#\t\t\t\tfrom P50S to P50S3.\n# \t\t2009-05-21 RSB\tIn COARFINE, a TC BANKCALL was corrected to\n#\t\t\t\tTC PHASCHNG.  In R53C, a CADR GOFLASHR was\n#\t\t\t\tcorrected to CADR GOFLASH.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 737\n# PROGRAM NAME -- PROG52\t\t\tDATE -- NOV 30, 1966\n# MOD NO -- 2\t\t\t\t\tLOG SECTION -- P51-P53\n# MODIFICATION BY -- LONSKE\t\t\tASSEMBLY -- SUNDISK REV 30\n#\n# FUNCTIONAL DESCRIPTION --\n#\n#\tALIGNS THE IMU TO ONE OF THREE ORIENTATIONS SELECTED BY THE ASTRONAUT.  THE PRESENT IMU ORIENTATION IS KNOWN\n#\tAND IS STORED IN REFSMMAT.  THE THREE POSSIBLE ORIENTATIONS MAY BE:\n#\n#\t(A)\tPREFERRED ORIENTATION\n#\n#\t\tAN OPTIMUM ORIENTATION FOR A PREVIOUSLY CALCULATED MANEUVER.  THIS ORIENTATION MUST BE CALCULATED AND\n#\t\tSTORED BY A PREVIOUSLY SELECTED PROGRAM.\n#\n#\t(B)\tNOMINAL ORIENTATION\n#\n#\t\tX   = UNIT ( Y   x Z   )\n#\t\t-SM          -SM   -SM\n#\n#\t\tY   = UNIT (V X R)\n#\t\t-SM         -   -\n#\n#\t\tZ   = UNIT ( -R )\n#\t\t-SM           -\n#\n#\t\tWHERE:\n#\n#\t\tR = THE GEOMETRIC RADIUS VECTOR AT TIME T(ALIGN) SELECTED BY THE ASTRONAUT\n#\t\t-\n#\n#\t\tV = THE INERTIAL VELOCITY VECTOR AT TIME T(ALIGN) SELECTED BY THE ASTRONAUT\n#\t\t-\n#\n#\t(C)\tRERSMMAT ORIENTATION\n#\n#\t\tTHIS SELECTION CORRECTS THE PRESENT IMU ORIENTATION.  THE PRESENT ORIENTATION DIFFERS FROM THAT TO WHICH IT\n#\t\tWAS LAST ALIGNED ONLY DUE TO GYRO DRIVE (I.E., NEITHER GIMBAL LOCK NOR IMU POWER INTERRUPT HAS OCCURRED\n#\t\tSINCE THE LAST ALIGNMENT).\n#\n#\tAFTER A IMU ORIENTATION HAS BEEN SELECTED ROUTINE S52.2 IS OPERATED TO COMPUTE THE GIMBAL ANGLES USING THE\n#\tNEW ORIENTATION AND THE PRESENT VEHICLE ATTITUDE.  CAL52A THEN USES THESE ANGLES, STORED IN THETAD,+1,+2, TO\n#\tCOARSE ALIGN THE IMU.  THE STARS SELECTION ROUTINE, R56, IS THEN OPERATED.  IF 2 STARS ARE NOT AVAILABLE AN ALARM\n#\tIS FLASHED TO NOTIFY THE ASTRONAUT.  AT THIS POINT THE ASTRONAUT WILL MANEUVER THE VEHICLE AND SELECT 2 STARS\n# \tEITHER MANUALLY OR AUTOMATICALLY.  AFTER 2 STARS HAVE BEEN SELECTED THE IMU IS FINE ALIGNED USING ROUTINE R51.  IF\n# \tTHE RENDEZVOUS NAVIGATION PROCESS IS OPERATING (INDICATED BY RNDVZFLG) P20 IS DISPLAYED.  OTHERWISE P00 IS\n#\tREQUESTED.\n#\n# CALLING SEQUENCE --\n#\n#\tTHE PROGRAM IS CALLED BY THE ASTRONAUT BY DSKY ENTRY.\n# Page 738\n#\n# SUBROUTINES CALLED --\n#\n#\t1. FLAGDOWN\t\t 7. S52.2\t\t13. NEWMODEX\n#\t2. R02BOTH\t\t 8. CAL53A\t\t14. PRIOLARM\n#\t3. GOPERF4\t\t 9. FLAGUP\n#\t4. MATMOVE\t\t10. R56\n#\t5. GOFLASH\t\t11. R51\n#\t6. S52.3\t\t12. GOPERF3\n#\n# NORMAL EXIT MODES --\n#\n#\tEXITS TO ENDOFJOB\n#\n# ALARM OR ABORT EXIT MODES --\n#\n#\tNONE\n#\n# OUTPUT --\n#\n#\tTHE FOLLOWING MAY BE FLASHED ON THE DSKY\n#\t\t1. IMU ORIENTATION CODE\n#\t\t2. ALARM CODE 215 -- PREFERRED IMU ORIENTATION NOT SPECIFIED\n#\t\t3. TIME OF NEXT IGNITION\n#\t\t4. GIMBAL ANGLES\n#\t\t5. ALARM CODE 405 -- TWO STARS NOT AVAILABLE\n#\t\t6. PLEASE PERFORM P00\n#\tTHE MODE DISPLAY MAY BE CHANGED TO 20\n#\n# ERASABLE INITIALIZATION REQUIRED --\n#\n#\tPFRATFLG SHOULD BE SET IF A PREFERRED ORIENTATION HAS BEEN COMPUTED.  IF IT HAS BEEN COMPUTED IT IS STORED IN\n#\tXSMD, YSMD, ZSMD.\n#\n#\tRNDVZFLG INDICATES WHETHER THE RENDEZVOUS NAVIGATION PROCESS IS OPERATING.\n#\n# DEBRIS --\n#\n#\tWORK AREA\n\nP54\t\t=\tPROG52\n\t\tBANK\t33\n\t\tSETLOC\tP50S\n\t\tBANK\n\n\t\tSBANK=\tLOWSUPER\n\t\tEBANK=\tSAC\n\t\tCOUNT\t15/P52\n\nPROG52\t\tTC\tPHASCHNG\n\t\tOCT\t00254\n\t\tTC\tDOWNFLAG\n\t\tADRES\tUPDATFLG\t# BIT 7 FLAG 1\n# Page 739\n\t\tTC\tDOWNFLAG\n\t\tADRES\tTRACKFLG\t# BIT 5 FLAG 1\n\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\t\t# IMU STATUS CHECK\n\t\tCAF\tBIT4\n\t\tMASK\tSTATE +2\t# IS PFRATFLG SET?\n\t\tCCS\tA\n\t\tTC\tP52A\t\t# YES\n\t\tCAF\tBIT2\t\t# NO\n\t\tTC\tP52A +1\nP52A\t\tCAF\tBIT1\n\t\tTS\tOPTION2\nP52B\t\tCAF\tBIT1\n\t\tTC\tBANKCALL\t# FLASH OPTION CODE AND ORIENTATION CODE\n\t\tCADR\tGOPERF4R\n\t\tTC\tGOTOPOOH\n\t\tTC\t+5\n\t\tTC\tP52B\t\t# NEW CODE -- NEW ORIENTATION CODE INPUT\n\t\tTC\tPHASCHNG\n\t\tOCT\t00014\n\t\tTC\tENDOFJOB\n\t\tCA\tOPTION2\n\t\tMASK\tTHREE\n\t\tINDEX\tA\n\t\tTC\t+1\n\t\tTC\tP52T\t\t# L.S.\n\t\tTC\tP52J\t\t# PREF\n\t\tTC\tP52T\t\t# NORM\n\t\tTCF\tP52C\t\t# REF\nP52T\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\tDSPTEM1\n\t\tCAF\tV06N34\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tEXTEND\n\t\tDCA\tDSPTEM1\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\t+4\n\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tDSPTEM1\n\t\tCA\tOPTION2\n\t\tMASK\tBIT2\n\t\tCCS\tA\n# Page 740\n\t\tTCF\t+6\t\t# NOM\n\t\tTC\tINTPRET\t\t# LS\n\t\tCALL\n\t\t\tP52LS\n\t\tGOTO\n\t\t\tP52D\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tDSPTEM1\n\t\tCALL\t\t\t# COMPUTE NOMINAL IMU\n\t\t\tS52.3\t\t#\tORIENTATION\nP52D\t\tCALL\t\t\t# READ VEHICLE ATTITUDE AND\n\t\t\tS52.2\t\t#\tCOMPUTE GIMBAL ANGLES\n\t\tEXIT\n\t\tCAF\tVB06N22\n\t\tTC\tBANKCALL\t# DISPLAY GIMBAL ANGLES\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\tCOARSTYP\nP52J\t\tTC\tINTPRET\t\t# RECYCLE: VEHICLE HAS BEEN MANEUVERED\n\t\tGOTO\n\t\t\tP52D\n\t\tTC\tINTPRET\n\t\tCALL\t\t\t# DO COARSE ALIGN\n\t\t\tCAL53A\t\t#\tROUTINE\nCAL53RET\tSET\tEXIT\n\t\t\tREFSMFLG\nP52C\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\t\tCAF\tALRM15\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\t\t# V33\n\t\tTC\tP52F\t\t# E\n\t\tTC\tINTPRET\n\t\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\tTSIGHT1\n\t\tCALL\n\t\t\tLOCSAM\n\t\tEXIT\nP52E\t\tTC\tBANKCALL\t# DO STAR SELECTION\n\t\tCADR\tPICAPAR\n\t\tTC\tP52I\t\t# 2 STARS NOT AVAILABLE\nP52F\t\tTC\tINTPRET\t\t# 2 STARS AVAILABLE\n\t\tCALL\n\t\t\tR51\nENDP50S\t\tEXIT\n\t\tTC\tGOTOPOOH\n# Page 741\nP52I\t\tTC\tALARM\n\t\tOCT 405\n\t\tCAF\tV05N09\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\tP52F\t\t# PROCEED:  DO FINE ALIGN-R51\n\t\tTC\tP52C\t\t# RECYCLE:  VEHICLE HAS BEEN MANEUVERED\nV06N34\t\tVN\t0634\nVB06N22\t\tVN\t00622\nCOARSTYP\tCAF\tOCT13\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTCF\tGOTOPOOH\t# V34\n\t\tTCF\tP52J\t+3\t#\tNORMAL\n\t\tTC\tINTPRET\t\t# GYRO COARSE\nGYCRS\t\tVLOAD\tMXV\n\t\t\tXSMD\n\t\t\tREFSMMAT\n\t\tUNIT\n\t\tSTOVL\tXDC\n\t\t\tYSMD\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTOVL\tYDC\n\t\t\tZSMD\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTCALL\tZDC\n\t\t\tCALCGTA\n\t\tCLEAR\tCLEAR\n\t\t\tDRIFTFLG\n\t\t\tREFSMFLG\n\t\tEXIT\n\t\tCAF\tV16N20\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPR\n\t\tCA\tR55CDR\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\t\tTC\tINTPRET\n\t\tAXC,1\tAXC,2\n\t\t\tXSMD\n\t\t\tREFSMMAT\n\t\tCALL\n# Page 742\n\t\t\tMATMOVE\n\t\tCLEAR\tSET\n\t\t\tPFRATFLG\n\t\t\tREFSMFLG\n\t\tRTB\tVLOAD\n\t\t\tSET1/PDT\n\t\t\tZEROVEC\n\t\tSTORE\tGCOMP\n\t\tSET\tGOTO\n\t\t\tDRIFTFLG\n\t\t\tR51K\nV16N20\t\tVN\t1620\nALRM15\t\tEQUALS\tOCT15\n\t\tSETLOC\tP50S2\n\t\tBANK\nV06N89*\t\tVN\t0689\n\n# NAME -- P52LS\n#\n# FUNCTION -- TO DISPLAY THE LANDING SITE LATITUDE,\n# LONGITUDE AND ALTITUDE.  TO ACCEPT NEW DATA VIA\n# THE KEYBOARD.  TO COMPUTE THE LANDING SITE\n# ORIENTATION FOR P52 OR P54\n#\n# LET:\n#\tRLS  = LANDING SITE VECTOR IN REF COORDINATES\n#\tR    = CSM POSITION VECTOR IN REF COORDINATES\n#\tV    = CSM VELOCITY VECTOR IN REF COORDINATES\n# THEN THE LANDING SITE ORIENTATION IS:\n#\tXSMD = UNIT(RLS)\n#\tYSMD = UNIT(ZSMD*XSMD)\n#\tZSMD = UNIT((R*V)*RLS)\n#\n# CALL:\t\tCALL\n#\t\t\tP52LS\n#\n# INPUTS:\tDSPTEM1 = TIME OF ALIGNMENT\n#\t\tRLS = LANDING SITE VECTOR IN MOON FIXED COORDINATES\n#\n# OUTPUTS:\tXSMD, YSMD, ZSMD\n#\n# SUBROUTINES:\tRP-TO-R, LAT-LONG, LLASRD, LLASRDA, CSMPREC\n#\n# DEBRIS:\tVAC, SEE SUBROUTINES\n\nP52LS\t\tSTQ\tSET\n\t\t\tQMAJ\n\t\t\tLUNAFLAG\n\t\tDLOAD\n\t\t\tDSPTEM1\n\t\tSTORE\tTSIGHT\n\t\tVLOAD\tSET\n\t\t\tRLS\n\t\t\tERADFLAG\n\t\tSTODL\t0D\n\t\t\tTSIGHT\n\t\tSTCALL\t6D\n# Page 743\n\t\t\tRP-TO-R\n\t\tVSR2\n\t\tSTODL\tALPHAV\n\t\t\tTSIGHT\n\t\tCALL\n\t\t\tLAT-LONG\n\t\tCALL\n\t\t\tLLASRD\n\t\tEXIT\nLSDISP\t\tCAF\tV06N89*\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\n\t\tTC\tLSDISP\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tLLASRDA\n\t\tDLOAD\tCALL\n\t\t\tTSIGHT\n\t\t\tLALOTORV\n\t\tVLOAD\tUNIT\n\t\t\tALPHAV\n\t\tSTODL\tXSMD\n\t\t\tTSIGHT\n\t\tSTCALL\tTDEC1\n\t\t\tCSMPREC\n\t\tVLOAD\tVXV\n\t\t\tRATT\n\t\t\tVATT\n\t\tVXV\tUNIT\n\t\t\tXSMD\n\t\tSTORE\tZSMD\n\t\tVXV\tUNIT\n\t\t\tXSMD\n\t\tSTCALL\tYSMD\n\t\t\tQMAJ\n\t\tSETLOC\tP50S1\n\t\tBANK\n\n# NAME:\t\tAUTOMATIC OPTICS POSITIONING ROUTINE\n#\n# FUNCTION:\t(1) TO POINT THE STAR LOS OF THE OPTICS AT A STAR OR LANDMARK DEFINED BY THE PROGRAM OR BY DSKY INPUT.\n#\t\t(2) TO POINT THE STAR LOS OF THE OPTICS AT THE LEM DURING RENDEZVOUS TRACKING OPERATIONS.\n#\n# CALLING:\tCALL R52\n#\n# INPUT:\t1.  TARG1FLG AND TARG2FLG:  PRESET BY CALLER\n#\t\t2.  RNDVZFLG AND TRACKFLG:  PRESET BY CALLER\n#\t\t3.  STAR CODE:  PRESET BY CALLER.  ALSO INPUT THROUGH DSKY\n#\t\t4.  LAT, LONG, AND ALT OF LANDMARK:  INPUT THROUGH DSKY\n# Page 744\n#\t\t5.  NO. OF MARKS (MARKINDX):  PRESET BY CALLER\n#\n# OUTPUT:\tDRIVE SHAFT AND TRUNNION CDUS.\n#\n# SUBROUTINES:\t1.  FIXDELAY\t\t7.  CLEANDSP\n#\t\t2.  GOPERF1\t\t8.  GODSPR\n#\t\t3.  GOFLASH\t\t9.  REFLASHR\n#\t\t4.  R53\t\t\t10. R52.2\n#\t\t5.  ALARM\t\t11. R52.3\n#\t\t6.  SR52.1\n\n\t\tCOUNT\t15/R52\n\nR52\t\tSTQ\tCLEAR\n\t\t\tSAVQR52\n\t\t\tADVTRK\nR52VRB\t\tEXIT\n\t\tEXTEND\n\t\tDCA\tCDUT\n\t\tDXCH\tDESOPTT\n\t\tTC\tINTPRET\n\t\tSSP\tCLEAR\n\t\t\tOPTIND\n\t\t\t0\n\t\t\tR53FLAG\n\t\tEXIT\nR52A\t\tTC\tINTPRET\n\t\tSET\tBON\n\t\t\tTRUNFLAG\n\t\t\tTARG1FLG\n\t\t\tR52H\n\t\tCLEAR\tEXIT\n\t\t\tTERMIFLG\nR52C\t\tCA\tSWSAMPLE\t# IS OPTICS MODE IN AGC\n\t\tEXTEND\n\t\tBZMF\tR52M\t\t# MANUAL\nR52D\t\tTC\tBANKCALL\t# AGC\n\t\tCADR\tSR52.1\n\t\tTCF\tR52L\t\t# GR 90 DEGREES\n\t\tTCF\tR52J\t\t# GR 50 DEGREES\n\t\tTC\tUPFLAG\t\t# LS 50 DEGREES\n\t\tADRES\tTRUNFLAG\t# SET TRUNFLAG BIT 4 FLAG 0\nR52JA\t\tCAF\tBIT10\t\t# IS THIS A LEM\n\t\tMASK\tSTATE +1\n\t\tCCS\tA\n\t\tTC\tR52E\t\t# YES\n\t\tCAF\tBIT6\t\t# NO, IS R53FLAG SET\n\t\tMASK\tSTATE\n\t\tCCS\tA\n\t\tTCF\tR52E\t\t# YES\n# Page 745\n\t\tCAF\tV06N92\t\t# NO\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPR\nR52E\t\tCA\tSWSAMPLE\t# IS OSS IN CMC MODE\n\t\tEXTEND\n\t\tBZMF\tR52F\t\t# NO\n\t\tCS\tSTATE\t\t# YES: IS TRUNFLAG SET\n\t\tMASK\tBIT4\n\t\tCCS\tA\n\t\tTC\t+3\t\t# NO\n\t\tCA\tPAC\t\t# YES\n\t\tTS\tDESOPTT\n\t\tCA\tSAC\n\t\tTS\tDESOPTS\nR52F\t\tCAF\t.5SEC\t\t# WAIT 1/2 SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tCAF\tBIT10\n\t\tMASK\tSTATE +1\n\t\tCCS\tA\n\t\tTCF\tR52HA\t\t# YES, LEM\n\t\tCAF\tBIT15\t\t# NO\n\t\tMASK\tSTATE +7\t# IS TERMIFLG SET\n\t\tEXTEND\n\t\tBZF\tR52C\t\t# NO\nR52Q\t\tTC\tINTPRET\t\t# YES\n\t\tGOTO\n\t\t\tSAVQR52\nR52H\t\tEXIT\t\t\t# LEM\nR52HA\t\tTC\tBANKCALL\n\t\tCADR\tR61CSM\n\t\tCA\tSTATE +1\n\t\tMASK\tBIT5\n\t\tEXTEND\t\t\t# TRACKFLG\n\t\tBZF\tR52Q\n\n\t\tCS\tSTATE +1\n\t\tMASK\tBIT7\t\t# UPDATFLG\n\t\tCCS\tA\n\t\tTCF\tR52SYNC\n\nR52I\t\tCA\tSTATE +5\n\t\tMASK\tBIT10\n\t\tCCS\tA\n\t\tTC\tR52D\t\t# PRFTRKAT = 1\nR52SYNC\t\tCAF\t1.8SEC\t\t# MAKE UP FOR LOST TIME\n\t\tTCF\tR52F +1\n\nR52J\t\tTC\tDOWNFLAG\t# CLEAR TRUNFLAG\n\t\tADRES\tTRUNFLAG\t# BIT 4 FLAG 0\n# Page 746\n\t\tTC\tALARM\t\t# SET 407 ALARM\n\t\tOCT\t407\n\t\tTC\tR52JA\nR52M\t\tCAF\tBIT6\t\t# IS R53FLAG SET\n\t\tMASK\tSTATE\n\t\tCCS\tA\n\t\tTC\tR52F\t\t# YES\n\t\tINHINT\t\t\t# NO\n\t\tCAF\tPRIO24\n\t\tTC\tFINDVAC\n\t\tEBANK=\tSAC\n\t\t2CADR\tR53JOB\n\n\t\tRELINT\n\t\tTCF\tR52F\nR53JOB\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tR53\nENDPLAC\t\tEXIT\t\t\t# INTERPRETER RETURN TO ENDOFJOB (R22 USES)\n\t\tTC\tENDOFJOB\nV06N92\t\tVN\t00692\nV06N89A\t\tVN\t0689\nSHAXIS\t\t2DEC\t.5376381241 B-1\n\n\t\t2DEC\t0\n\n\t\t2DEC\t.8431766920 B-1\n\nR52L\t\tCAF\tBIT10\t\t# IS THIS A LEM\n\t\tMASK\tSTATE +1\n\t\tCCS\tA\n\t\tTC\tR52J\t\t# YES\n\t\tCAF\tOCT404\n\t\tTC\tBANKCALL\n\t\tCADR\tPRIOLARM\n\t\tTCF\tTERM52\t\t# TERMINATE\n\t\tTCF\tR52F\t\t# PROCEED\n\t\tTCF\tR52F\t\t# NO PROVISION FOR NEW DATA\n\t\tTCF\tENDOFJOB\n\nOCT404\t\tOCT\t404\n1.8SEC\t\tDEC\t180\n\nTERM52\t\tTC\tCLEARMRK\n\n\t\tTC\tBANKCALL\t# KILL MARK SYSTEM\n\t\tCADR\tMKRELEAS\n\n# Page 747\n\n\t\tCAF\tZERO\n\t\tTS\tOPTCADR\n\n\t\tTC\tBANKCALL\t# CLEAR OUT EXTENDED VERBS\n\t\tCADR\tKLEENEX\n\n\t\tTC\tGOTOPOOH\t# NO GO TO P00\n\nADVORB\t\tSTQ\tSET\t\t# SETS UP ADVANCED ORBIT TRACKING\n\t\t\tSAVQR52\n\t\t\tADVTRK\n\t\tSET\tSET\n\t\t\tLUNAFLAG\n\t\t\tERADFLAG\n\t\tGOTO\n\t\t\tR52VRB\n\n# Page 748\n# NAME -- S50 ALIAS LOCSAM\n# NAME:\tLOCSAM\n#\n# FUNCTION -- TO COMPUTE QUATITIGS LISTED BELOW, USED IN THE\n#\t      IMU ALIGNMENT PROGRAMS.\n#\n#\tDEFINE:\n#\n#\tRATT = POSITION VECTOR OF CM WRT PRIMARY BODY\n#\n#\tVATT = VELOCITY VECTOR OF CM WRT PRIMARY BODY\n#\n#\tRE = RADIUS OF EARTH\n#\n#\tRM = RADIUS OF MOON\n#\n#\tECLIPOL = POLE OF ECLIPTIC SCALED BY TANGENTIAL VELOCITY OF EARTH\n#\t\t  WRT TO SUN OVER THE VELOCITY OF LIGHT\n#\n#\tREM = POSITION OF MOON WRT EARTH\n#\n#\tRES = POSITION OF SUN WRT EARTH\n#\n#\tC = VELOCITY OF LIGHT\n#\n#\t\tEARTH IS PRIMARY\t\t\tMOON IS PRIMARY\n#\t\t        _                                       _\n#\t\tVEARTH=-1(RATT)\t\t\t\tVEARTH=-1(REM+RATT)\n#\t\t        _\t\t\t\t        _\n#\t\tVMOON = 1(REM-RATT)\t\t\tVMOON =-1(RATT)\n#\t\t        _\t\t\t\t        _\n#\t\tVSUN  = 1(RES)\t\t\t\tVSUN  = 1(RES-REM)\n#\t\t              -1\n#\t\tCEARTH=COS(SIN  (RE/RATT)+5)\t\tCEARTH=COS 5\n#\t\t\t\t\t\t\t\t      -1\n#\t\tCMOON =COS 5\t\t\t\tCMOON =COS(SIN  CRM/RATT)+5)\n#\n#\t\tCSUN  =COS 15\t\t\t\tCSUN  =COS 15\n#\n#\t\t\t    VEL/C = VSUN x ECLIPOL + VATT/C\n#\n# CALL:\t\tDLOAD\tCALL\n#\t\t\tDESIRED TIME\n#\t\t\tLOCSAM\n#\n# INPUTS:  \tMPAC = TIME\n#\n# OUTPUTS:  \tVEARTH, VMOON, VSUN, CEARTH, CMOON, CSUN, VEL/C\n#\n# SUBROUTINES:  LSPOS, CSMCONIC\n#\n# DEBRIS:  \tVAC AREA, SEE SUBROUTINES.\n\n# Page 749\n\t\tSETLOC\tP50S1\n\t\tBANK\n\n\t\tCOUNT*\t$$/S50\n\nLOCSAM\t\t=\tS50\nS50\t\tSTQ\n\t\t\tQMAJ\n\t\tSTCALL\tTSIGHT\n\t\t\tLSPOS\n\t\tSTOVL\tVMOON\n\t\t\t2D\n\t\tSTODL\tVSUN\n\t\t\tTSIGHT\n\t\tSTCALL\tTDEC1\n\t\t\tCSMCONIC\n\t\tSSP\tTIX,2\n\t\t\tS2\n\t\t\t0\n\t\t\tMOONCNTR\nEARTCNTR\tVLOAD\tVSU\n\t\t\tVMOON\n\t\t\tRATT\n\t\tUNIT\n\t\tSTOVL\tVMOON\n\t\t\tRATT\n\t\tUNIT\tVCOMP\n\t\tSTODL\tVEARTH\n\t\t\tRSUBE\n\t\tCALL\n\t\t\tOCCOS\n\t\tSTODL\tCEARTH\n\t\t\tCSS5\n\t\tSTOVL\tCMOON\n\t\t\tVSUN\n\t\tUNIT\n\t\tSTCALL\tVSUN\n\t\t\tENDSAM\nMOONCNTR\tVLOAD\tVSR8\n\t\t\tVMOON\n\t\tVSR1\tBVSU\n\t\t\tVSUN\n\t\tUNIT\n\t\tSTOVL\tVSUN\n\t\t\tVMOON\n\t\tVAD\tUNIT\n\t\t\tRATT\n\t\tVCOMP\n\t\tSTOVL\tVEARTH\n# Page 750\n\n\t\t\tRATT\n\t\tUNIT\tVCOMP\n\t\tSTODL\tVMOON\n\t\t\tRSUBM\n\t\tCALL\n\t\t\tOCCOS\n\t\tSTODL\tCMOON\n\t\t\tCSS5\n\t\tSTOVL\tCEARTH\n\t\t\tVSUN\nENDSAM\t\tVXV\n\t\t\tECLIPOL\n\t\tSTOVL\tVEL/C\n\t\t\tVATT\n\t\tVXSC\tVAD\n\t\t\t1/C\n\t\t\tVEL/C\n\t\tSTODL\tVEL/C\n\t\t\tCSSUN\n\t\tSTCALL\tCSUN\n\t\t\tQMAJ\nOCCOS\t\tDDV\tSR1\n\t\t\t36D\n\t\tASIN\tDAD\n\t\t\t5DEGREES\n\t\tCOS\tSR1\n\t\tRVQ\n\t\tSETLOC\tP50S\n\t\tBANK\nRSUBM\t\t2DEC\t1738090 B-29\t# MOON RADIUS IN METERS\n\nRSUBE\t\t2DEC\t6378166 B-29\n\n5DEGREES\t2DEC\t.013888889 \t# SCALED IN REVS\n\n1/C\t\t2DEC\t.000042699 B-1\t# *\n\nECLIPOL\t\t2DEC\t0\t\t# *\n\n\t\t2DEC\t-.00007896 B-1\t# *\n\n\t\t2DEC\t.00018209 B-1\t# *\t\t* FOR USE BY CSM ONLY\n\nTSIGHT1\t\t2DEC\t24000\n\nCEARTH\t\t=\t14D\nCSUN\t\t=\t16D\nCMOON\t\t=\t18D\nCSS5\t\t2DEC\t.2490475\t# (COS 5)/4\n# Page 751\nCSSUN\t\t2DEC\t.24148\t\t# (COS 15)/4\n\n# Page 752\n# PROGRAM NAME -- PICAPAR\tDATE: DEC 20 66\n# MOD 1\t\t\t\tLOG SECTION: P51-P53\n#\t\t\t\tASSEMBLY:  SUNDISK REV40\n# BY KEN VINCENT\n#\n# FUNCTION\n#\tTHIS PROGRAM READS THE IMU-CDUS AND COMPUTES THE VEHICLE ORIENTATION\n#\tWITH RESPECT TO INERTIAL SPACE.  IT THEN COMPUTES THE SHAFT AXIS (SAX)\n#\tWITH RESPECT TO REFERENCE INERTIAL.  EACH STAR IN THE CATALOG IS TESTED\n# \tTO DETERMINE IF IT IS OCCULTED BY EITHER EARTH, SUN OR MOON.  IF A\n# \tSTAR IS NOT OCCULTED THEN IT IS PAIRED WITH ALL STARS OF LOWER INDEX.\n# \tTHE PAIRED STAR IS TESTED FOR OCCULTATION.  PAIRS OF STARS THAT PASS\n#\tTHE OCCULTATION TESTS ARE TESTED FOR GOOD SEPARATION.  A PAIR OF STARS\n#\tHAVE GOOD SEPARATION IF THE ANGLE BETWEEN THEM IS LESS THAN 66 DEGREES\n#\tAND MORE THAN 40 DEGREES.  THOSE PAIRS WITH GOOD SEPARATION\n#\tARE THEN TESTED TO SEE IF THEY LIE IN CURRENT FIELD OF VIEW.  (WITHIN\n#\t33 DEGREES OF SAX).  THE PAIR WITH MAX SEPARATION IS CHOSEN FROM\n#\tTHOSE WITH GOOD SEPARATION, AND IN FIELD OF VIEW.\n#\n# CALLING SEQUENCE\n#\tL\tTC\tBANKCALL\n#\tL+1\tCADR\tPICAPAR\n#\tL+2\tERROR RETURN -- NO STARS IN FIELD OF VIEW\n#\tL+3\tNORMAL RETURN\n#\n# OUTPUT\n#\tBESTI, BESTJ -- SINGLE PREC, INTEGERS, STAR NUMBERS TIMES 6\n#\tVFLAG -- FLAG BIT SET IMPLIES NO STARS IN FIELD OF VIEW\n#\n# INITIALIZATION\n#\t1)\tA CALL TO LOCSAM MUST BE MADE\n#\t2)\tVEARTH = -UNIT(R) WHERE R HAS BEEN UPDATED TO APPROXIMATE TIME OF\n#\t\tSIGHTINGS.\n#\n# DEBRIS\n#\tWORK AREA\n#\tX,Y,ZNB\n#\tSINCDU, COSCDU\n#\tSTARAD -- STAR +5\n\n\t\tCOUNT\t14/PICAP\n\n\t\tSETLOC\tP50S1\n\t\tBANK\nPICAPAR\t\tTC\tMAKECADR\n\t\tTS\tQMIN\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tCDUTRIG\n\t\tCALL\n\t\t\tCALCSMSC\n# Page 753\n\t\tSETPD\n\t\t\t0\n\t\tSET\tDLOAD\t\t# VFLAG = 1\n\t\t\tVFLAG\n\t\t\tDPZERO\n\t\tSTOVL\tBESTI\n\t\t\tXNB\n\t\tVXSC\tPDVL\n\t\t\tSIN33\n\t\t\tZNB\n\t\tAXT,1\tVXSC\n\t\t\t228D\t\t# X1 = 37 X 6 + 6\n\t\t\tCOS33\n\t\tVAD\n\t\tVXM\tUNIT\n\t\t\tREFSMMAT\n\t\tSTORE\tSAX\t\t# SAX = SHAFT AXIS\n\t\tSSP\tSSP\t\t# S1 = S2 = 6\n\t\t\tS1\n\t\t\t6\n\t\t\tS2\n\t\t\t6\nPIC1\t\tTIX,1\tGOTO\t\t# MAJOR STAR\n\t\t\tPIC2\n\t\t\tPICEND\nPIC2\t\tVLOAD*\tCALL\n\t\t\tCATLOG,1\n\t\t\tOCCULT\n\t\tBON\tLXA,2\n\t\t\tCULTFLAG\n\t\t\tPIC1\n\t\t\tX1\nPIC3\t\tTIX,2\tGOTO\n\t\t\tPIC4\n\t\t\tPIC1\nPIC4\t\tVLOAD*\tCALL\n\t\t\tCATLOG,2\n\t\t\tOCCULT\n\t\tBON\tVLOAD*\n\t\t\tCULTFLAG\n\t\t\tPIC3\n\t\t\tCATLOG,1\n\t\tDOT*\tDSU\n\t\t\tCATLOG,2\n\t\t\tCSS66\t\t# SEPARATION LESS THAN 66 DEG.\n\t\tBMN\tDAD\n\t\t\tPIC3\n\t\t\tCSS6640\t\t# SEPARATION MORE THAN 40 DEG.\n\t\tBPL\n\t\t\tPIC3\n# Page 754\n\t\tVLOAD*\tDOT\n\t\t\tCATLOG,1\n\t\t\tSAX\n\t\tDSU\tBMN\t\t# MAJOR STAR IN CONE\n\t\t\tCSS33\n\t\t\tPIC1\n\t\tVLOAD*\tDOT\n\t\t\tCATLOG,2\n\t\t\tSAX\n\t\tDSU\tBPL\n\t\t\tCSS33\n\t\t\tSTRATGY\n\t\tGOTO\n\t\t\tPIC3\nSTRATGY\t\tBONCLR\n\t\t\tVFLAG\n\t\t\tNEWPAR\n\t\tXCHX,1\tXCHX,2\n\t\t\tBESTI\n\t\t\tBESTJ\nSTRAT\t\tVLOAD*\tDOT*\n\t\t\tCATLOG,1\n\t\t\tCATLOG,2\n\t\tPUSH\tBOFINV\n\t\t\tVFLAG\n\t\t\tSTRAT -3\n\t\tDLOAD\tDSU\n\t\tBPL\n\t\t\tPIC3\nNEWPAR\t\tSXA,1\tSXA,2\n\t\t\tBESTI\n\t\t\tBESTJ\n\t\tGOTO\n\t\t\tPIC3\nOCCULT\t\tMXV\tBVSU\n\t\t\tCULTRIX\n\t\t\tCSS\n\t\tBZE\n\t\t\tCULTED\n\t\tBMN\tSIGN\n\t\t\tCULTED\n\t\t\tMPAC +3\n\t\tBMN\tSIGN\n\t\t\tCULTED\n\t\t\tMPAC +5\n\t\tBMN\tCLRGO\n\t\t\tCULTED\n\t\t\tCULTFLAG\n\t\t\tQPRET\nCULTED\t\tSETGO\n# Page 755\n\t\t\tCULTFLAG\n\t\t\tQPRET\nCSS\t\t= \tCEARTH\nSIN33\t\t2DEC\t.5376381241\n\nCOS33\t\t2DEC\t.8431756920\n\nCSS66\t\t2DEC\t.060480472\t# (COS76)/4\n\nCSS6640\t\t2DEC\t-.15602587\t# (COS76 - COS30)/4\n\nCSS33\t\t2DEC\t.197002688\t# (COS(1/2(76))/4\n\nPICEND\t\tBOFF\tEXIT\n\t\t\tVFLAG\n\t\t\tPICGXT\n\t\tTC\tPICBXT\nPICGXT\t\tEXIT\n\t\tINCR\tQMIN\nPICBXT\t\tCA\tQMIN\n\t\tTC\tSWCALL\n#V1\t\t= \t12D\n\n# Page 756\n# NAME -- R51\tFINE ALIGN\n# FUNCTION -- TO ALIGN THE STABLE MEMBER TO REFSSMAT\n# CALLING SEQ -- CALL R51\n# INPUT -- BESTI, BESTJ (PAIR OF STAR NO)\n# OUTPUT -- GYRO TORQUE PULSES\n# SUBROUTINES -- R52, R54, R55 (SXTNB, NBSM, AXISGEN)\n\n\t\tCOUNT\t14/R51\n\nR51\t\tEXIT\n\t\tCAF\tBIT1\n\t\tTS\tSTARIND\n\t\tTS\tMARKINDX\nR51.2\t\tTC\tINTPRET\nR51.3\t\tCLEAR\tCLEAR\n\t\t\tTARG2FLG\n\t\t\tTARG1FLG\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t05024\t\t# RESTART GR 4 FOR R52-R53\n\t\tOCT\t13000\n\t\tINDEX\tSTARIND\n\t\tCA\tBESTI\n\t\tEXTEND\n\t\tMP\t1/6TH\n\t\tTS\tSTARCODE\nR51DSP\t\tCAF\tV01N70\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tGOTOPOOH\n\t\tTC\t+5\n\t\tTC\t-5\n\t\tCAF\tSIX\n\t\tTC\tBLANKET\n\t\tTCF\tENDOFJOB\n\t\tTC\tCHKSCODE\n\t\tTC\tFALTON\n\t\tTC\tR51DSP\n\t\tTC\tINTPRET\n\t\tRTB\tCALL\n\t\t\tLOADTIME\n\t\t\tPLANET\n\t\tSSP\tLXA,1\n\t\t\tS1\n\t\t\t0\n\t\t\tSTARIND\n\t\tTIX,1\n\t\t\tR51ST\n\t\tSTCALL\tSTARSAV2\t# 2ND STAR\n\t\t\tR51ST +1\nR51ST\t\tSTORE\tSTARSAV1\t# 1ST STAR\n# Page 757\n\t\tEXIT\n\t\tCS\tMODREG\t\t# IS THIS P54\n\t\tAD \tOCT66\n\t\tEXTEND\n\t\tBZF\tR51B\t\t# YES\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tR52\t\t# AOP WILL MAKE CALLS TO SIGHTING\nR51A\t\tCALL\t\t\t# COMPUTE LOS IN SM FROM MARK DATA\n\t\t\tSXTSM\n\t\tSTORE\tSTARSAV2\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tMKRELEAS\n\t\tTC\tINTPRET\n\t\tDLOAD\tCALL\n\t\t\tTSIGHT\n\t\t\tPLANET\n\t\tEXIT\n\t\tCCS\tSTARIND\n\t\tTC\tR51.4\n\t\tTC\tINTPRET\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTORE\tSTARAD\n\t\tVLOAD\n\t\t\tSTARSAV2\n\t\tSTOVL\t6D\n\t\t\tSTARSAV1\n\t\tSTOVL\t12D\n\t\t\tPLANVEC\n\t\tSTCALL\tSTARAD +6\n\t\t\tR54\t\t# STAR DATA TEST\n\t\tBOFF\tCALL\n\t\t\tFREEFLAG\n\t\t\tR51K\n\t\t\tAXISGEN\n\t\tCALL\n\t\t\tR55\t\t# GYRO TORQUE\n\t\tCLEAR\n\t\t\tPFRATFLG\nR51K\t\tEXIT\n\t\tCAF\tOCT14\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\t\t# V33\n\t\tTC\t+3\n\t\tTC\tBANKCALL\n\t\tCADR\tP52C\n# Page 758\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tENDP50S\nR51.4\t\tTC\tINTPRET\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTOVL\tPLANVEC\n\t\t\tSTARSAV2\n\t\tSTORE\tSTARSAV1\n\t\tSSP\n\t\t\tSTARIND\n\t\t\t0\n\t\tGOTO\n\t\t\tR51.3\nR51B\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tR56\n\t\tGOTO\n\t\t\tR51A\nOCT66\t\tOCT\t00066\nV01N70\t\tVN\t0170\n1/6TH\t\tDEC\t.1666667\n\n# Page 759\n# NAME:\t\tR55\tGYRO TORQUE\n# FUNCTION -- COMPUTE AND SEND GYRO PULSES\n# CALLING SEQ -- CALL R55\n# INPUT -- X,Y,ZDC -- REFSMMAT WRT PRESENT STABLE MEMBER\n# OUTPUT -- GYRO PULSES\n# SUBROUTINES -- CALCGTA, GOFLASH, GODSPR, IMUFINE, IMUPULSE, GOPERF1\n\n\t\tSETLOC\tP50S\n\t\tBANK\n\t\tCOUNT*\t$$/R55\nR55\t\tSTQ\n\t\t\tQMIN\n\t\tCALL\n\t\t\tCALCGTA\nPULSEM\t\tEXIT\nR55.1\t\tCAF\tV06N93\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\tR55.2\n\t\tTC\tR55RET\nR55.2\t\tTC\tPHASCHNG\n\t\tOCT\t00314\n\t\tCA\tR55CDR\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tTC\tPHASCHNG\n\t\tOCT\t05024\n\t\tOCT\t13000\nR55RET\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tQMIN\nV06N93\t\tVN\t0693\nR55CDR\t\tECADR\tOGC\nR54\t\t=\tCHKSDATA\n\n# ROUTINE NAME -- CHKSDATA\t\tDATE -- JAN 9, 1967\n# MOD NO -- 0\t\t\t\tLOG SECTION -- P51-P53\n# MODIFICATION BY -- LONSKE\t\tASSEMBLY --\n#\n# FUNCTIONAL DESCRIPTION -- CHECKS THE VALIDITY OF A PAIR OF STAR SIGHTINGS.  WHEN A PAIR OF STAR SIGHTINGS ARE MADE\n# BY THE ASTRONAUT THIS ROUTINE OPERATES AND CHECKS THE OBSERVED SIGHTINGS AGAINST STORED STAR VECTORS IN THE\n# COMPUTER TO INSURE A PROPER SIGHTING WAS MADE.  THE FOLLOWING COMPUTATIONS ARE PERFORMED --\n#\tOS1\t=\tOBSERVED STAR 1 VECTOR\n#\tOS2\t=\tOBSERVED STAR 2 VECTOR\n#\tSS1\t=\tSTORED STAR 1 VECTOR\n#\tSS2 \t=\tSTORED STAR 2 VECTOR\n#\t A1\t= \tARCCOS(OS1 - OS2)\n# Page 760\n#\t A2\t=\tARCCOS(SS1 - SS2)\n#\t  A \t=\tABS(2(A1 - A2))\n\n# THE ANGULAR DIFFERENCE IS DISPLAYED FOR ASTRONAUT ACCEPTANCE.\n#\n# EXIT MODE --\t1. FREEFLAG SET IMPLIES ASTRONAUT WANTS TO PROCEED\n#\t\t2. FREEFLAG RESET IMPLIES ASTRONAUT WANTS TO RECYCLE\n#\n# OUTPUT --\t1. VERB 6,NOUN 3 -- DISPLAYS ANGULAR DIFFERENCE BETWEEN 2 SETS OF STARS.\n#\t\t2. STAR VECTORS FROM STAR CATALOG ARE LEFT IN 6D AND 12D.\n#\n# ERASABLE INITIALIZATION REQUIRED --\n#\t\t1. MARK VECTORS ARE STORED IN STARAD AND STARAD +6.\n#\t\t2. CATALOG VECTORS ARE STORED IN 6D AND 12D.\n#\n# DEBRIS --\n\n\t\tSETLOC\tP50S1\n\t\tBANK\n\t\tCOUNT*\t$$/R50\nCHKSDATA\tSTQ\tSET\n\t\t\tQMIN\n\t\t\tFREEFLAG\nCHKSAB\t\tAXC,1\t\t\t# SET X1 TO STORE EPHEMERIS DATA\n\t\t\tSTARAD\n\nCHKSB\t\tVLOAD*\tDOT*\t\t# CAL. ANGLE THETA\n\t\t\t0,1\n\t\t\t6,1\n\t\tSL1\tACOS\n\t\tSTORE\tTHETA\n\t\tBOFF\tINVERT\t\t# BRANCH TO CHKSD IF THIS IS 2ND PASS\n\t\t\tFREEFLAG\n\t\t\tCHKSD\n\t\t\tFREEFLAG\t# CLEAR FREEFLAG\n\t\tAXC,1\tDLOAD\t\t# SET X1 TO MARK ANGLES\n\t\t\t6D\n\t\t\tTHETA\n\t\tSTORE\t18D\n\t\tGOTO\n\t\t\tCHKSB\t\t# RETURN TO CAL. 2ND ANGLE\nCHKSD\t\tDLOAD\tDSU\n\t\t\tTHETA\t\t# COMPUTE POS DIFF\n\t\t\t18D\n\t\tABS\tRTB\n\t\t\tSGNAGREE\n\t\tSTORE\tNORMTEM1\n\t\tSET\tEXIT\n\t\t\tFREEFLAG\n\t\tCAF\tZERO\n\t\tTC\tBANKCALL\n\t\tCADR\tCLEANDSP\n\n\t\tCAF\tVB6N5\n# Page 761\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTC\tCHKSDA\t\t# PROCEED\n\t\tTC\tINTPRET\n\t\tCLEAR\tGOTO\n\t\t\tFREEFLAG\n\t\t\tQMIN\nCHKSDA\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tQMIN\nVB6N5\t\tVN\t605\n\n# NAME -- CAL53A\n# FUNCTION -- COARSE ALIGN THE IMU, IF NECESSARY\n# CALLING SEQUENCE -- CALL CAL53A\n# INPUT -- PRESENT GIMBAL ANGLES -- CDUX, CDUY, CDUZ\n#\t   DESIRED GIMBAL ANGLES -- THETAD,+1,+2\n# OUTPUT -- THE IMU COORDINATES AT STORED IN REFSMMAT\n# SUBROUTINES -- 1.IMUCOARS, 2.IMUSTALL, 3CURTAINS\n\n\t\tCOUNT\t14/R50\n\nCAL53A\t\tCALL\n\t\t\tS52.2\t\t# MAKE FINAL COMP OF GIMBAL ANGLES\n\t\tRTB\tSSP\n\t\t\tRDCDUS\t\t# READ CDUS\n\t\t\tS1\n\t\t\t1\n\t\tAXT,1\tSETPD\n\t\t\t3\n\t\t\t4\nCALOOP\t\tDLOAD*\tSR1\n\t\t\tTHETAD +3D,1\n\t\tPDDL*\tSR1\n\t\t\t4,1\n\t\tDSU\tABS\n\t\tPUSH\tDSU\n\t\t\tDEGREE1\n\t\tBMN\tDLOAD\n\t\t\tCALOOP1\n\t\tDSU\tBPL\n\t\t\tDEG359\n\t\t\tCALOOP1\nCOARFINE\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUCOARS\t# PERFORM COARSE ALIGNMENT\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\t# REQUEST MODE SWITCH\n# Page 762\n\t\tTC\tCURTAINS\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUFIN20\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\t# TEST FOR MALFUNCTION\n\t\tTC\tINTPRET\n\t\tRTB\tVLOAD\n\t\t\tSET1/PDT\n\t\t\tZEROVEC\n\t\tSTORE\tGCOMP\n\t\tSET\tGOTO\n\t\t\tDRIFTFLG\n\t\t\tFINEONLY\nCALOOP1\t\tTIX,1\n\t\t\tCALOOP\nFINEONLY\tAXC,1\tAXC,2\n\t\t\tXSM\n\t\t\tREFSMMAT\n\t\tCALL\n\t\t\tMATMOVE\n\t\tGOTO\n\t\t\tCAL53RET\nMATMOVE\t\tVLOAD*\t\t\t# TRANSFER MATRIX\n\t\t\t0,1\n\t\tSTORE\t0,2\n\t\tVLOAD*\n\t\t\t6D,1\n\t\tSTORE\t6D,2\n\t\tVLOAD*\n\t\t\t12D,1\n\t\tSTORE\t12D,2\n\t\tRVQ\nDEGREE1\t\tDEC\t46\nDEG359\t\tDEC\t16338\n\t\tSETLOC\tP50S\n\t\tBANK\nRDCDUS\t\tINHINT\t\t\t# READ CDUS\n\t\tCA\tCDUX\n\t\tINDEX\tFIXLOC\n\t\tTS\t1\n\t\tCA\tCDUY\n\t\tINDEX\tFIXLOC\n\t\tTS\t2\n\t\tCA\tCDUZ\n\t\tINDEX\tFIXLOC\n\t\tTS\t3\n\t\tRELINT\n\t\tTC\tDANZIG\n\n# Page 763\n# NAME:\t\tGIMB\n#\n# FUNCTION:\tDETERMINE AND COMPUTE THE DESIRED GIMBAL ANGLES TO BE USED FOR COARSE ALIGNMENT.\n#\n# CALLING SEQUENCE:  CALL GIMB\n#\n# INPUT:\tDESIRED IMU INERTIAL ORIENTATION VECTORS:  XSMD, YSMD, ZSMD\n#\n# OUTPUT:\tGIMBAL ANGLES LEFT IN THETAD, +1, +2\n#\n# SUBROUTINES USED:  1.CDUTRIG 2.CALCSMSC 3.CALCGA\n\n\t\tSETLOC\tP50S2\n\t\tBANK\n\t\tCOUNT\t14/INFLT\n\nCALCSMSC\tDLOAD\tDMP\n\t\t\tSINCDUY\n\t\t\tCOSCDUZ\n\t\tDCOMP\n\t\tPDDL\tSR1\n\t\t\tSINCDUZ\n\t\tPDDL\tDMP\n\t\t\tCOSCDUY\n\t\t\tCOSCDUZ\n\t\tVDEF\tVSL1\n\t\tSTORE\tXNB\n\t\tDLOAD\tDMP\n\t\t\tSINCDUX\n\t\t\tSINCDUZ\n\t\tSL1\n\t\tSTORE\t26D\n\t\tDMP\n\t\t\tSINCDUY\n\t\tPDDL\tDMP\n\t\t\tCOSCDUX\n\t\t\tCOSCDUY\n\t\tDSU\n\t\tPDDL\tDMP\n\t\t\tSINCDUX\n\t\t\tCOSCDUZ\n\t\tDCOMP\n\t\tPDDL\tDMP\n\t\t\tCOSCDUX\n\t\t\tSINCDUY\n\t\tPDDL\tDMP\n\t\t\tCOSCDUY\n\t\t\t26D\n\t\tDAD\tVDEF\n\t\tVSL1\n\t\tSTORE\tZNB\n\t\tVXV\tVSL1\n\t\t\tXNB\n\t\tSTORE\tYNB\n\t\tRVQ\n\n# NAME -- P51 -- IMU ORIENTATION DETERMINATION\n# MOD. NO. 2\t21 DEC 66\t\t\t\tLOG SECTION -- P51-P53\n# Page 764\n# MOD BY STURLAUGSON\t\t\t\t\tASSEMBLY SUNDISK REV15\n#\n# FUNCTIONAL DESCRIPTION\n#\tDETERMINES THE INERTIAL ORIENTATION OF THE IMU.  THE PROGRAM IS SELECTED BY DSKY ENTRY.  THE SIGHTING\n#\tROUTINE IS CALLED TO COLLECT THE CDU COUNTERS AND SHAFT AND TRUNNION ANGLES FOR A SIGHTED STAR.  THE DATA IS\n#\tTHEN PROCESSED AS FOLLOWS.\n#\n#\t1.  SEXTANT ANGLES ARE COMPUTED IN TERMS OF NAVIGATIONAL BASE COORDINATES.  LET SA AND TA BE THE SHAFT AND\n#\tTRUNNION ANGLES, RESPECTIVELY.  THEN,\n#\t_\n#\tV  = (SIN(TA)*COS(SA), SIN(TA)*SIN(SA), COS(TA))\t(A COLUMN VECTOR)\n#        NB\n#\tTHE OUTPUT IS A HALF-UNIT VECTOR STORED IN STARM.\n#\n#\t2.  THIS VECTOR IN NAV. BASE COORDS. IS THEN TRANSFORMED TO ONE IN STABLE MEMBER COORDINATES.\n#\t_    T  T  T _\n#\tV = Q *Q *Q *V  ,\tWHERE\n#\t     1  2  3  NB\n#\n#\t     ( COS(IG)\t 0    -SIN(IG) )\n#\t     (\t\t\t       )\t\t\t\t\tTHE GIMBAL ANGLES ARE COMPUTED FROM\n#\tQ  = (   0\t 1  \t 0     ), IG= INNER GIMBAL ANGLE\t\tTHE CDU COUNTERS AT NBSM (USING AXIS-\n#\t 1   (\t\t\t       )\t\t\t\t\tROT AND CDULOGIC)\n#\t     ( SIN(IG)\t 0     COS(IG) )\n#\n#\t     ( COS(MG) SIN(MG)   0     )\n#\t     (\t\t\t       )\n#\tQ  = (-SIN(MG) COS(MG)   0     ), MG= MIDDLE GIMBAL ANGLE\n#\t 2   (                         )\n#\t     (   0       0       1     )\n#\n#\t     (   1       0       0     )\n#\t     (                         )\n#\tQ  = (   0     COS(OG) SIN(OG) ), OG= OUTER GIMBAL ANGLE\n#\t 3   (                         )\n#\t     (   0    -SIN(OG) COS(OG) )\n#\n#\t3.  THE STAR NUMBER IS SAVED AND THE SECOND STAR IS THEN SIMILARLY PROCESSED.\n#\n#\t4.  THE ANGLE BETWEEN THE TWO STARS IS THEN CHECKED AT CKSDATA.\n#\n#\t5.  REFSMMAT IS THEN COMPUTED AT AXISGEN AS FOLLOWS.\n#\t\t    _      _\n#\t\tLET S  AND S  BE TWO STAR VECTORS EXPRESSED IN TWO COORDINATE SYSTEMS, A AND B (BASIC AND STABLE MEMBER).\n#\t\t     1      2\n# Page 765\n#\t\tDEFINE,\n#\t\t_    _\n#\t\tU  = S\n#\t\t A    A1\n#\t\t_         _    _\n#\t\tV  = UNIT(S  x S  )\n#\t\t A         A1   A2\n#\t\t_    _   _\n#\t\tW  = U x V\n#\t\t A    A   A\n#\n#\t\tAND,\n#\t\t_    _\n#\t\tU  = S\n#\t\t B    B1\n#\t\t_         _    _\n#\t\tV  = UNIT(S  x S  )\n#\t\t B         B1   B2\n#\t\t_    _   _\n#\t\tW  = U x V\n#\t\t B    B   B\n#\n#\t\tTHEN\n#\t\t_        _       _       _\n#\t\tX  = U  *U + V  *V + W  *W\n#\t\t      B1  A   B1  A   B1  A\n#\t\t_        _       _       _\n#\t\tY  = U  *U + V  *V + W  *W\t\t(REFSMMAT)\n#\t\t      B2  A   B2  A   B2  A\n#\t\t_        _       _       _\n#\t\tZ  = U  *U + V  *V + W  *W\n#\t\t      B3  A   B3  A   B3  A\n#\n# THE INPUTS CONSIST OF THE FOUR HALF-UNIT VECTORS STORED AS FOLLOWS\n#\t\t_\n#\t\tS   IN 6-11 OF THE VAC AREA\n#\t\t A1\n#\t\t_\n#\t\tS   IN 12-17 OF THE VAC AREA\n#\t\t A2\n#\t\t_\n#\t\tS   IN STARAD\n#\t\t B1\n# Page 766\t_\n#\t\tS   IN STARAD +6\n#\t\t B2\n#\n# CALLING SEQUENCE:\n#\n#\tTHE PROGRAM IS CALLED BY THE ASTRONAUT BY DSKY ENTRY.\n#\n# SUBROUTINES CALLED:\n#\n#\tGOPERF3\n#\tGOPERF1R\n#\tGODSPR\n#\tIMUCOARS\n#\tIMUFIN20\n#\tR53\n#\tSXTNB\n#\tNBSM\n#\tMKRELEAS\n#\tCHKSDATA\n#\tMATMOVE\n#\n# ALARMS\n#\n#\tNONE\n#\n# ERASABLE INITIALIZATION:\n#\n#\tIMU ZERO FLAG SHOULD BE SET.\n#\n# OUTPUT\n#\n#\tREFSMMAT\n#\tREFSMFLG\n#\n# DEBRIS\n#\n#\tWORK AREA\n#\tSTARAD\n#\tSTARIND\n#\tBESTI\n#\tBESTJ\n\n\t\tSETLOC\tP50S1\n\t\tBANK\n\t\tCOUNT\t14/P5153\n\nP53\t\tEQUALS\tP51\nP51\t\tCS\tIMODES30\n\t\tMASK\tBIT9\n\t\tCCS\tA\n# Page 767\n\t\tTC\tP51A\n\t\tTC\tALARM\n\t\tOCT\t210\n\t\tTC\tGOTOPOOH\nP51A\t\tTC\tBANKCALL\n\t\tCADR\tR02ZERO\n\nP51AA\t\tCAF\tPRFMSTAQ\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTC\tGOTOPOOH\t# TERM.\n\t\tTC\tP51B\t\t# V33\n\t\tTC\tPHASCHNG\n\t\tOCT\t05024\n\t\tOCT\t13000\n\t\tCAF\tP51ZERO\n\t\tTS\tTHETAD\t\t# ZERO THE GIMBALS\n\t\tTS\tTHETAD +1\n\t\tTS\tTHETAD +2\n\t\tCAF\tV6N22\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPRET\n\t\tCAF\tV41K\t\t# NOW DISPLAY COARSE ALIGN VERB 41\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPRET\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUCOARS\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\t# CAGING OR BAD END\n\t\tTC\tBANKCALL\t# SCHEDULE IFAILOK AND IMUFINED TASKS, IN 5\n\t\tCADR\tIMUFIN20\t# AND 20 SECS. DIRECT RETURN AND NO STALL,\n\t\tTC\tBANKCALL\t# IF CAGING, BUT T4 WILL ZERO C/A ENABLE.\n\t\tCADR\tIMUSTALL\t# IF PUT TO SLEEP, IMUFINED WILL WAKE US\n\t\tTC\tCURTAINS\t# UP.\n\t\tTC\tPHASCHNG\n\t\tOCT\t05024\n\t\tOCT\t13000\n\t\tTCF\tP51AA\t\t# COARSE ALIGN DONE:  RECYCLE FOR FINE\n\n# Page 768\n# DO STAR SIGHTING AND COMPUTE NEW REFSMMAT\nP51B\t\tTC\tPHASCHNG\n\t\tOCT\t00014\n\t\tTC\tINTPRET\n\t\tSSP\tSETPD\n\t\t\tSTARIND\t\t# INDEX -- STAR 1 OR 2\n\t\t\t0\n\t\t\t0\n\t\tRTB\tVLOAD\n\t\t\tSET1/PDT\n\t\t\tZEROVEC\n\t\tSTORE\tGCOMP\n\t\tSET\tCLEAR\n\t\t\tDRIFTFLG\t# ENABLE T4 COMPENSATION\n\t\t\tTARG2FLG\t# SHOW MARK IS STAR --- NOT LANDMARK\n\t\tEXIT\n\t\tCAF\tBIT1\n\t\tTS\tMARKINDX\t# INITIALIZE FOR ONE MARK\n\nP51C\t\tTC\tPHASCHNG\n\t\tOCT\t05024\n\t\tOCT\t13000\n\t\tTC\tCHECKMM\n\t\tMM\t53\t\t# BACKUP PROGRAM\n\t\tTCF\tP51C.1\t\t# NOT P53\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tR56\n\t\tGOTO\n\t\t\tP51C.2\nP51C.1\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tR53\t\t# SIGHTING ROUTINE\nP51C.2\t\tCALL\t\t\t# COMPUTE LOS IN SM FROM MARK DATA\n\t\t\tSXTSM\n\t\tPUSH\n\t\tSLOAD\tBZE\n\t\t\tSTARIND\n\t\t\tP51D\n\t\tVLOAD\tSTADR\n\t\tSTORE\tSTARSAV2\t# DOWNLINK\n\t\tGOTO\n\t\t\tP51E\nP51D\t\tVLOAD\tSTADR\n\t\tSTODL\tSTARSAV1\n\t\t\tTSIGHT\n\t\tCALL\n\t\t\tPLANET\n\t\tSTORE\tPLANVEC\n# Page 769\nP51E\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t05024\n\t\tOCT\t13000\n\t\tTC\tBANKCALL\n\t\tCADR\tMKRELEAS\t# ZERO MARKSTAT\n\t\tCCS\tSTARIND\n\t\tTCF\tP51F\t\t# STAR 2\n\t\tTC\tPHASCHNG\n\t\tOCT\t05024\n\t\tOCT\t13000\n\t\tCAF\tBIT1\n\t\tTS\tSTARIND\n\t\tTCF\tP51C\t\t# GO DO SECOND STAR\nP51F\t\tTC\tPHASCHNG\n\t\tOCT\t05024\n\t\tOCT\t13000\n\t\tTC\tINTPRET\n\t\tDLOAD\tCALL\n\t\t\tTSIGHT\n\t\t\tPLANET\n\t\tSTOVL\t12D\n\t\t\tPLANVEC\n\t\tSTOVL\t6D\n\t\t\tSTARSAV1\n\t\tSTOVL\tSTARAD\n\t\t\tSTARSAV2\n\t\tSTCALL\tSTARAD +6\n\t\t\tCHKSDATA\t# CHECK STAR ANGLES IN STARAD AND\n\t\tBON\tEXIT\n\t\t\tFREEFLAG\n\t\t\tP51G\n\t\tTC\tP51AA\nP51G\t\tCALL\n\t\t\tAXISGEN\t\t# COME BACK WITH REFSMMAT IN XDC\n\t\tAXC,1\tAXC,2\n\t\t\tXDC\n\t\t\tREFSMMAT\n\t\tCLEAR\tCALL\n\t\t\tREFSMFLG\n\t\t\tMATMOVE\n\t\tSET\tGOTO\n\t\t\tREFSMFLG\n\t\t\tENDP50S\nPRFMSTAQ\t=\tOCT15\nP51ZERO\t\t=\tZERO\nP51FIVE\t\t=\tFIVE\nV6N22\t\tVN\t0622\nV41K\t\tVN\t4100\nSET1/PDT\tCA\tTIME1\n# Page 770\n\t\tTS\t1/PIPADT\n\t\tTCF\tDANZIG\n\n# Page 771\n# SXTSM COMPUTES AN LOS VECTOR IN SM COORD FROM OCDU AND ICDU MARK DATA\n\n\t\tSETLOC\tP50S3\n\t\tBANK\nSXTSM\t\tSTQ\n\t\t\tQMAJ\n\t\tLXC,1\tDLOAD*\n\t\t\tMARKSTAT\n\t\t\t0D,1\n\t\tSTORE\tTSIGHT\n\t\tLXC,2\tSLOAD*\n\t\t\tSTARIND\n\t\t\tMKDNCDR,2\n\t\tLXC,2\tVLOAD*\n\t\t\tMPAC\n\t\t\t0,1\n\t\tSTORE\t0,2\n\t\tDLOAD*\n\t\t\t5,1\n\t\tSTORE\t5,2\n\t\tCALL\n\t\t\tSXTNB\t\t# COMPUTE LOS VECTOR FROM OCDU IN MKVAC\n\t\tLXA,1\tINCR,1\n\t\t\tMARKSTAT\n\t\t\t2\t\t# INCREMENT TO BASE ADR OF ICDU\n\t\tSXA,1\tCALL\n\t\t\tS1\n\t\t\tNBSM\t\t# TRANSFORM LOS TO SM\n\t\tGOTO\n\t\t\tQMAJ\nMKDNCDR\t\tECADR\tMARKDOWN\n\t\tECADR\tMARK2DWN\n\n# Page 772\n# PROGRAM DESCRIPTION:  R53 -- SIGHTING MARK ROUTINE\n# MOD. NO. 2\t\t\t\t\t\t21 DEC 66\n# MOD. BY STURLAUGSON\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tTO PERFORM A SATISFACTORY NUMBER OF SIGHTING MARKS FOR THE REQUESTING PROGRAM (OR ROUTINE).  SIGHTINGS\n# \tCAN BE MADE ON A STAR OR LANDMARK.  WHEN THE CMC ACCEPTS A MARK IT RECORDS AND STORES 5 ANGLES (3 ICDUS AND 2\n#\tOCDUS) AND THE TIME OF THE MARK.\n#\n# CALLING SEQUENCE:\n#\n#\tR53 IS CALLED AND RETURNS IN INTERPRETIVE CODE.  RETURN IS VIA QPRET.\n#\tTHERE IS NO ERROR EXIT IN THIS ROUTINE ITSELF.\n#\n# SUBROUTINES CALLED\n#\n#\tSXTMARK\n#\tOPTSTALL\n#\tGOFLASH\n#\n# ERASABLE INITIALIZATION:\n#\n#\tTARGET FLAG -- STAR OR LANDMARK\n#\tMARKINDX -- NUMBER OF MARKS WANTED\n#\tSTARIND -- INDEX TO BESTI OR BESTJ (STAR NUMBER)\n#\n# OUTPUT\n#\n#\tMARKSTAT CONTAINS INDEX TO VACANT AREA WEHRE MARK DATA IS STORED\n#\tBESTI (INDEXED BY STARIND) CONTAINS STAR NUMBER SIGHTED.\n#\n# DEBRIS\n#\n#\tMARKINDX CONTAINS NUMBER OF MARKS DESIRED\n\n\t\tSETLOC\tRT53\n\t\tBANK\n\n\t\tCOUNT\t14/R53\n\nR53\t\tSTQ\tSET\t\t# SET SIGHTING MARK FLAG\n\t\t\tR53EXIT\n\t\t\tR53FLAG\n\t\tEXIT\nR53A\t\tCA\tMARKINDX\t# NUMBER OF MARKS\n\t\tMASK\tLOW3\n\t\tTC\tBANKCALL\n\t\tCADR\tSXTMARK\n\t\tTC\tBANKCALL\n\t\tCADR\tOPTSTALL\n\t\tTC\tCURTAINS\n\t\tINDEX\tMARKSTAT\n\t\tCCS\tQPRET\t\t# NUMBER OF MARKS ACTUALLY DONE\n\t\tTCF\tR53B\n\t\tTCF\t+2\t\t# ZERO\n\t\tTCF\t+1\t\t# CCS HOLE\n\t\tCAF\tZERO\t\t# HOUSEKEEP VAC AREA SAVE\n\t\tXCH\tMARKSTAT\t#\tAND MARKSTAT\n# Page 773\n\t\tCCS\tA\n\t\tINDEX\tA\n\t\tTS\t0\n\t\tTCF\tR53A\nR53B\t\tTC\tCHECKMM\n\t\tMM\t22\n\t\tTCF\t+2\n\t\tTCF\tR53D\n\t\tTC\tCHECKMM\n\t\tMM\t23\n\t\tTCF\tR53C1\n\t\tTCF\tR53D\nR53C1\t\tCAF\tZERO\n\t\tTC\tBANKCALL\n\t\tCADR\tCLEANDSP\nR53C\t\tCAF\tV01N71\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# TERM.\n\t\tTCF\tR53Z\n\t\tTC\tR53C\t\t# RECYCLE\nR53Z\t\tTC\tCHKSCODE\n\t\tTC\tFALTON\n\t\tTC\tR53C\n\t\tCS\tHIGH9\n\t\tMASK\tSTARCODE\n\t\tEXTEND\n\t\tMP\tSIGHTSIX\n\t\tXCH\tL\n\t\tINDEX\tSTARIND\n\t\tTS\tBESTI\nR53D\t\tTC\tINTPRET\nR53OUT\t\tSETGO\n\t\t\tTERMIFLG\t# SET TERMINATE FOR R52\n\t\t\tR53EXIT\nSIGHTSIX\t=\tSIX\nV01N71\t\tVN\t0171\n\n# ****** KEEP IN SAME BANK AS R51 AND R53 ********\nCHKSCODE\tCCS\tSTARCODE\n\t\tAD\tNEG47\n\t\tCCS\tA\n\t\tTC\tQ\t\t# SC < 0 OR SC > 50\n\t\tTCF\t+2\t\t# SC = + OR - 0\n\t\tTCF\t+1\t\t# 0 <= SC< 50\n\t\tINDEX\tQ\t\t# SC = 50\n\t\tTC\t00002\nNEG47\t\tOCT\t77730\n\n# Page 774\n# NAME -- S52.2\n# FUNCTION -- COMPUTE GIMBAL ANGLES FOR DESIRED SM AND PRESENT VEHICLE\n# CALL -- CALL S52.2\n# INPUT -- X,Y,ZSMD\n# OUTPUT -- OGC,IGC,MGC,THETAD,+1,+2\n# SUBROUTINES -- CDUTRIG, CALCSMSC, MATMOVE, CALCGA\n\n\t\tSETLOC\tS52/2\n\t\tBANK\n\n\t\tCOUNT\t13/S52.2\nS52.2\t\tSTQ\n\t\t\tQMAJ\n\t\tCALL\n\t\t\tCDUTRIG\n\t\tCALL\n\t\t\tCALCSMSC\n\t\tAXT,1\tSSP\n\t\t\t18D\n\t\t\tS1\n\t\t\t6D\nS52.2A\t\tVLOAD*\tVXM\n\t\t\tXNB \t+18D,1\n\t\t\tREFSMMAT\n\t\tUNIT\n\t\tSTORE\tXNB \t+18D,1\n\t\tTIX,1\n\t\t\tS52.2A\nS52.2.1\t\tAXC,1\tAXC,2\n\t\t\tXSMD\n\t\t\tXSM\n\t\tCALL\n\t\t\tMATMOVE\n\t\tCALL\n\t\t\tCALCGA\n\t\tGOTO\n\t\t\tQMAJ\n\n# Page 775\n# PROGRAM NAME:  SR52.1\t\t\t\tDATE:  DEC 20 1968\n# MOD 1\t\t\t\t\t\tLOG SEC:  P51-P53\n# BY KEN VINCENT\t\t\t\tASSEMBLY:  SUNDISK REV 40\n#\n# FUNCTION\n#\n# TARG1 AND TARG2 FLAGS ARE LOOKED AT TO DETERMINE IF THE TARGET IS THE\n# LEM, STAR, OR LANDMARK.  IN CASE OF LEM OR LMK, THE PRESENT TIME PLUS\n# 2 SECONDS IS SAVED IN AOPTIME (ALIAS STARAD, +1).  IF THE LEM IS\n# THE TARGET THEN CONIC UPDATES OF THE CSM AND LEM ARE MADE TO\n# THE TIME IN AOPTIME.  THE UNIT OF THE DIFFERENCE OF LEM AND CSM\n# POSITION VECTORS BECOMES THE REFERENCE SIGHTING VECTOR USED IN THE\n# COMMON PART OF THE THIS PROGRAM.\n#\n# IN THE CASE OF LANDMARK, THE CSM IS UPDATED CONICALLY.  THE RADIUS\n# VECTOR FOR THE LANDMARK IS OBTAINED FROM LALOTORV.  BOTH OF THESE ARE\n# FOUND FOR THE TIME IN AOPTIME.  THE UNIT OF THE DIFFERENCE BETWEEN\n# THE LANDMARK AND CSM RADIUS VECTORS BECOMES THE REFERENCE SIGHTING\n# VECTOR FOR THE COMMON PART OF THIS ROUTINE.\n#\n# IF A STAR IS THE TARGET, THE PROPER STAR IS OBTAINED FROM THE CATALOG\n# AND THIS VECTOR BECOMES THE REFERENCE SIGHTING VECTOR.\n#\n# THE COMMON PART OF THIS PROGRAM TRANSFORMS THE REFERENCE SIGHTING\n# VECTOR INTO STABLE MEMBER COORDINATES.  IT READS THE IMU-CDUS AND USES\n# THIS DATA IN A CALL TO CALCSXA.  ON RETURN FROM CALCSXA A TEST IS\n# MADE TO SEE IF THE TRUNNION ANGLE IS GREATER THAN  90DEG OR 38DEG.\n# MADE TO SEE IF THE TRUNNION ANGLE IS GREATER THAN 90DEG. OR 50DEG.\n#\n# CALLING SEQUENCE\n#\n# \tL+4\tRETURN WHEN SHAFT OR TRUNION NOT WITHIN 5 DEG OF DESIRED\n#\tL\tTC\tBANKCALL\n#\tL+1\tCADR\tSR52.1\n#\tL+2\tERROR RETURN\tTRUNNION GREATER THAN 90 DEG.\n#\tL+3\tERROR RETURN\tTRUNNION GREATER THAN 50 DEG\n#\tL+4\tNORMAL RETURN\n#\n# OUTPUT\n#\n#\tSAC:\tSINGLE PREC, 2'S COMP, SCALED AT HALF REVS -- SHAFT ANGLE DESIRED.\n#\tPAC:\tSINGLE PREC, 2'S COMP, SCALED AT EIGHTH REVS -- TRUNNION ANGLE DESIRED.\n#\n# INITIALIZATION\n#\n#\tIF TARG1FLG =1 THEN TARGET IS LEM -- NO OTHER INPUT REQUIRED.\n#\n#\tIF TARG1FLG =0 AND TARG2FLG =0 THE TARGET IS STAR, STARIND SHOULD\n#\t0 OR 1 DENOTING BESTI OR BESTJ RESPECTIVELY AS STAR CODE.  STAR CODES\n#\tARE 6 TIMES STAR NUMBER.\n#\n#\tIF TARG1FLG =0 AND TARG2FLG =1 THEN TARGET IS LANDMARK.  SETT ROUTINE\n#\tLALOTORV FOR INPUT REQUIREMENTS.  HERE FIXERAD=1 FOR CONSTANT EARTH\n#\tRADIUS\n#\n# DEBRIS\n#\n#\tWORK AREA\n#\tSTARAD -- STAR+5 (STAR IS DESIRED LOS IN STABLE MEMBER COORDINATES)\n\n\t\tCOUNT*\t$$/SR521\n# Page 776\n\t\tSETLOC\tSR52/1\n\t\tBANK\n\nSR52.1\t\tTC\tMAKECADR\n\t\tTS\tQMIN\n\t\tTC\tINTPRET\n\t\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\t1.3SECDP\n\t\tSTORE\tAOPTIME\n\t\tBON\tBON\n\t\t\tTARG1FLG\n\t\t\tLEM52\n\t\t\tTARG2FLG\n\t\t\tLMK52\n\t\tGOTO\n\t\t\tSTAR52\nLEM52\t\tDLOAD\n\t\t\tAOPTIME\n\t\tSTCALL\tTDEC1\n\t\t\tLEMCONIC\n\t\tVLOAD\n\t\t\tRATT\n\t\tGOTO\n\t\t\tLMKLMCOM\nLMK52\t\tBON\tDLOAD\n\t\t\tADVTRK\n\t\t\tADVTRACK\n\t\t\tAOPTIME\n\t\tCALL\n\t\t\tLALOTORV\n\t\tVLOAD\n\t\t\tALPHAV\nLMKLMCOM\tSTODL\tSTAR\n\t\t\tAOPTIME\n\t\tSTCALL\tTDEC1\n\t\t\tCSMCONIC\n\t\tVLOAD\tVSU\n\t\t\tSTAR\n\t\t\tRATT\n\t\tUNIT\tGOTO\n\t\t\tCOM52\nSTAR52\t\tSSP\tLXA,1\n\t\t\tS1\n\t\t\t0\n\t\t\tSTARIND\n\t\tTIX,1\n\t\t\tST52ST\n\t\tVLOAD\tGOTO\n\t\t\tSTARSAV2\n# Page 777\n\t\t\tCOM52\nST52ST\t\tVLOAD\n\t\t\tSTARSAV1\nCOM52\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTORE\tSTAR\n\t\tSETPD\tCALL\n\t\t\t0\n\t\t\tCDUTRIG\t\t# COMPUTES SINES AND COSINES FOR CALCSXA\n\t\tCALL\t\t\t#\tNOW EXPECT TO SEE THE CDU ANGLES.\n\t\t\tCALCSXA\n\t\tBOFF\tEXIT\n\t\t\tCULTFLAG\n\t\t\tTRUN38\n\t\tTC\tSR52E1\nTRUN38\t\tDLOAD\tDSU\n\t\t\tPAC\n\t\t\t38TRDEG\n\t\tBPL\tDLOAD\n\t\t\tSR52E22\n\t\t\tPAC\n\t\tDSU\tBPL\n\t\t\t20DEGSMN\n\t\t\tSR52E3\nSR52E22\t\tEXIT\n\t\tTC\tSR52E2\nSR52E3\t\tEXIT\n\t\tINCR\tQMIN\nSR52E2\t\tINCR\tQMIN\nSR52E1\t\tCA\tQMIN\n\t\tTC\tSWCALL\n38TRDEG\t\t2DEC\t.66666667\t# CORRESPONDS TO 50 DEGS IN TRUNION\n\n1.3SECDP\t2DEC\t130\n\n20DEGSMN\tDEC\t-07199\n\t\tDEC\t-0\n\n# Page 778\n# THE ADVTRACK ROUTINE IS USED TO COMPUTE AN OPTICS LOS VECTOR TO\n# A POINT ON THE GROUND TRACK 60 DEGREES FORWARD OF THE LOCAL VERTICAL\n# OF AN ADVANCED ORBIT A SPECIFIED NUMBER OF REVOLUTIONS FROM NOW.\n\n\t\tSETLOC\t26P50S\n\t\tBANK\nADVTRACK\tSETPD\n\t\t\t0\n\t\tVLOAD\tPUSH\t\t# INITIALIZE FOR RP-TO-R\n\t\t\tUNITZ\t\t# UZ VEC IN PD 0-5\n\t\tRTB\tPUSH\t\t# TIME IN PD 6-7\n\t\t\tLOADTIME\n\t\tSTCALL\tAOPTIME\t\t# TIME ALSO IN AOPTIME FOR CSMCONIC\n\t\t\tRP-TO-R\t\t# GET MOON ROTATION VEC IN REF\n\t\tSTODL\tSTAR\n\t\t\tAOPTIME\t\t# PICK UP TIME\n\t\tSTCALL\tTDEC1\t\t# UPDATE STATE TO TIME\n\t\t\tCSMCONIC\n\t\tVLOAD\tVXV\n\t\t\tVATT\n\t\t\tRATT\n\t\tUNIT\n\t\tSTOVL\t24D\t\t# SAVE -UNIT(VxR) FOR 2ND ROTATION\n\t\t\tRATT\n\t\tUNIT\tVCOMP\n\t\tSETPD\tPUSH\t\t# PUSH LOS=-UNIT(RVEC) PD 0-5\n\t\t\t0\n\t\tEXIT\n\t\tCA\tLANDMARK\n\t\tMASK\tSEVEN\t\t# GET NUMBER OF ADVANCE PERIODS\n\t\tEXTEND\n\t\tMP\tBIT11\t\t# GET N/16\n\t\tXCH\tL\n\t\tINDEX\tFIXLOC\n\t\tTS\t30D\t\t# TEMP STORE N/16\n\t\tTC\tINTPRET\n\t\tSLOAD\tDMP\n\t\t\t30D\n\t\t\tMPERIOD\n\t\tSTCALL\tAOPTIME\t\t# ROTATE ANG ABOUT UR\n\t\t\tROTA\n\t\tVLOAD\n\t\t\t24D\t\t# PICK UP 2ND ROTATION AXIS\n\t\tSTODL\tSTAR\n\t\t\tDP1/6\n\t\tDSU\n\t\t\tAOPTIME\t\t# 2ND RAT ANGLE = 60 - A\n\t\tSTCALL\tAOPTIME\n\t\t\tROTA\t\t# GO ROTATE 2ND TIME\n\t\tVLOAD\n# Page 779\n\t\t\t0\n\t\tSTCALL\tSTAR\t\t# STORE FINAL LOS IN STAR\n\t\t\tCOM52\t\t# RETURN TO SR52.1\n\nROTA\t\tDLOAD\tSIN\n\t\t\tAOPTIME\n\t\tPDVL\tVXV\t\t# PUSH 1/2SIN(A) PD 6-7\n\t\t\tSTAR\t\t#\tUR VEC\n\t\t\t0\t\t#\tLOS\n\t\tVXSC\tVSL2\t\t# 1/2SIN(A)(URXLOS) PD 6-11\n\t\tPDVL\tDOT\n\t\t\tSTAR\n\t\t\t0\n\t\tVXSC\tVSL2\n\t\t\tSTAR\n\t\tPDDL\tCOS\t\t# 1/2(UR . LOS)UR 12-17\n\t\t\tAOPTIME\n\t\tPDVL\tBVSU\t\t# PUSH 1/2COS(A) 18-19\n\t\t\t12D\n\t\t\t0\n\t\tVXSC\tVSL1\t\t# UP 18-19\n\t\tVAD\tVAD\t\t# UP 12-17 UP 6011\n\t\tUNIT\tSETPD\n\t\t\t0\n\t\tPUSH\tRVQ\n\nDP1/6\t\t2DEC\t.16666666\n\nMPERIOD\t\t2DEC\t.047619\t\t# APPROX LUNAR ROT ANG IN 2HRS x 16\n\n# Page 780\n# NAME -- S52.3\n# FUNCTION --\tXSMD= UNIT(YSMD x ZSMD)\n#\t\tYSMD= UNIT(V X R)\n#\t\tZSMD= UNIT(-R)\n# CALL --\tDLOAD\tCALL\n#\t\t\tTALIGN\n#\t\t\tS52.3\n# INPUT --\tTIME OF ALIGNMENT IN MPAC\n# OUTPUT --\tX,Y,ZSMD\n# SUBROUTINES -- CSMCONIC\n\n\t\tSETLOC\tP50S2\n\t\tBANK\n\n\t\tCOUNT\t15/S52.3\nS52.3\t\tSTQ\n\t\t\tQMAJ\n\t\tSTCALL\tTDEC1\n\t\t\tCSMPREC\n\t\tSETPD\n\t\t\t0\n\t\tVLOAD\tVCOMP\n\t\t\tRATT\n\t\tUNIT\n\t\tSTOVL\tZSMD\n\t\t\tVATT\n\t\tVXV\tUNIT\n\t\t\tRATT\n\t\tSTORE\tYSMD\n\t\tVXV\tUNIT\n\t\t\tZSMD\n\t\tSTCALL\tXSMD\n\t\t\tQMAJ\n\n# Page 781\n# PROGRAM DESCRIPTION:  R56 -- ALTERNATE LOS SIGHTING MARK ROUTINE\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tTO PERFORM SIGHTING MARKS FOR THE BACK-UP ALIGNMENT PROGRAMS (P53,P54).  THE ASTRONAUT KNOWS THE\n#\tCOORDINATES (OPTICS) OF THE ALTERNATE LINE OF SIGHT HE MUST USE FOR THIS ROUTINE.  WHEN THE ASTRONAUT KEYS IN\n#\tENTER IN RESPONSE TO THE FLASHING V50 N25 R1-XXXXX THE CMC STORES THE THREE ICDU ANGLES AND TWO ANGLES DISPLAYED\n#\tIN N92.\n#\n# CALLING SEQUENCE\n#\n#\tCALL\n#\t\tR56\n#\n# SUBROUTINES CALLED\n#\n#\tA PORTION OF SXTMARK (VAC.AREA SEARCH)\n#\tGOFLASH\n#\tGOPERF1\n#\n# ERASABLE INITIALIZATION\n#\n#\tSTARIND:  INDEX TO STAR NUMBER\n#\n# OUTPUT\n#\n#\tMARKSTAT:  INDEX TO VAC.AREA WHERE OUTPUT IS STORED.\n#\tBESTI (INDEXED BY STARIND) CONTAINS STAR NUMBER.\n#\tICDU AND OCDU ANGLES IN VAC. AREA AS FOLLOWS:\n#\t\tVAC +2\tCDUY\n#\t\tVAC +3\tCDUS\n#\t\tVAC +4\tCDUZ\n#\t\tVAC +5\tCDUT\n#\t\tVAC +6\tCDUX\n\n\t\tCOUNT*\t$$/R56\n\t\tSETLOC\tP50S3\n\t\tBANK\nR56\t\tSTQ\tEXIT\n\t\t\tR53EXIT\n\t\tCAF\tV06N94B\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# TERM.\n\t\tTC\tR56A\t\t# PROCEED:  ANGLES OK\n\t\tTC\t-5\t\t# ENTER:  NEW ANGLES\nR56A\t\tTC\tBANKCALL\n\t\tCADR\tSXTMARK +2\t# INHIBIR EXT VB ACT AND FIND VAC AREA\n\n\t\tCAF\tZERO\n\t\tTC\tBANKCALL\n\t\tCADR\tCLEANDSP\n\nR56A1\t\tCAF\tVB53\t\t# DISPLAY V53 REQUESTING ALTERNATE MARK\n\t\tTC\tBANKCALL\n# Page 782\n\t\tCADR\tGOMARK2\n\t\tTCF\tGOTOPOOH\t# V34:  TERMINATE\n\t\tTCF\tR56A1\t\t# V33:  DON'T PROCEED -- JUST ENTER TO MARK\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tMRKBUF1 +3\n\t\tSTODL\tSAC\n\t\t\tMRKBUF1 +5\n\t\tSTORE\tPAC\n\t\tEXIT\n\t\tINHINT\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tINDEX\tMARKSTAT\n\t\tDXCH\t0\n\t\tCA\tCDUY\t\t# ENTER:  THIS IS A BACKUP SYSTEM MARK\n\t\tINDEX\tMARKSTAT\n\t\tTS\t2\n\t\tCA\tSAC\n\t\tINDEX\tMARKSTAT\n\t\tTS\t3\n\t\tCA\tCDUZ\n\t\tINDEX\tMARKSTAT\n\t\tTS\t4\n\t\tCA\tPAC\n\t\tINDEX\tMARKSTAT\n\t\tTS\t5\n\t\tCA\tCDUX\n\t\tINDEX\tMARKSTAT\n\t\tTS\t6\n\t\tRELINT\n\t\tTC\tCLEARMRK\t# ENABLE EXTENDED VERBS\n\t\tCAF\tOCT16\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTC\tGOTOPOOH\t# TERM.\n\t\tTCF\tR56B\t\t# PROCEED:  MARK COMPLETED\n\t\tTCF\tR56A \t+2\t# RECYCLE:  DO ANOTHER MARK -- LIKE REJECT.\nR56B\t\tTC\tBANKCALL\n\t\tCADR\tR53C1\nVB53\t\tVN\t05300\t\t# ALTERNATE MARK VERB\nV06N94B\t\tVN\t00694\n\t\tSETLOC\tP50S\n\t\tBANK\n\nPLANET\t\tSTORE\tTSIGHT\n\t\tSTQ\tCALL\n\t\t\tQMIN\n\t\t\tLOCSAM\n\t\tVLOAD\n# Page 783\n\t\t\tVEARTH\n\t\tSTOVL\t0D\n\t\t\tVSUN\n\t\tSTOVL\tVEARTH\n\t\t\t0D\n\t\tSTORE \tVSUN\nNOSAM\t\tEXIT\n\t\tCS\tHIGH9\n\t\tMASK\tSTARCODE\n\t\tEXTEND\n\t\tMP\tSIGHTSIX\n\t\tXCH\tL\n\t\tINDEX\tSTARIND\n\t\tTS\tBESTI\n\t\tCCS\tA\n\t\tTCF\tNOTPLAN\n\t\tCAF\tVNPLANV\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tTC\tINTPRET\n\t\tVLOAD\tVXSC\n\t\t\tSTARSAV3\n\t\t\t1/SQR3\n\t\tUNIT\tGOTO\n\t\t\tCORPLAN\nNOTPLAN\t\tCS\tA\n\t\tAD\tDEC227\n\t\tEXTEND\n\t\tBZMF\tCALSAM1\n\t\tINDEX\tSTARIND\n\t\tCA\tBESTI\n\t\tINDEX\tFIXLOC\n\t\tTS\tX1\n\t\tTC\tINTPRET\n\t\tVLOAD*\tGOTO\n\t\t\tCATLOG,1\n\t\t\tCORPLAN\nCALSAM1\t\tTC\tINTPRET\n\t\tLXC,1\tDLOAD*\n\t\t\tSTARIND\n\t\t\tBESTI,1\n\t\tLXC,1\tVLOAD*\n\t\t\tMPAC\n\t\t\tSTARAD \t-228D,1\nCORPLAN\t\tVAD\tUNIT\n\t\t\tVEL/C\n\t\tGOTO\n# Page 784\n\t\t\tQMIN\nDEC227\t\tDEC\t227\nVNPLANV\t\tVN\t0688\n1/SQR3\t\t2DEC\t.57735021\n\n\n"
  },
  {
    "path": "Comanche055/P61-P67.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     P61-P67.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 789-818\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-12 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname and Comanche 055 page images.\n#\t\t2009-05-20 RSB\tCorrections:  V06N68 -> V06N74, added missing\n#\t\t\t\tdefinition of V06N74, in several\n#\t\t\t\tinterpreter operands fixed stuff like\n#\t\t\t\tN-M,1 to N -M,1\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 789\n# PROGRAM:\tP61\n# MOD NO.:\t0\tMAR. 13, 1967\n# MOD BY:\tR. HIRSCHKOP\n# MOD NO: 1\tMOD BY:  RR BAIRNSFATHER\tDATE: 22 JUN 67\t\tRESTARTS\n# MOD NO: 2\tMOD BY:  RR BAIRNSFATHER\tDATE: 17 JAN 68\t\tCOLOSSUS GSOP CHANGES\n# MOD NO: 3\tMOD BY:  RR BAIRNSFATHER\tDATE:  8 MAY 68\t\tDELETE CMSM MANEUVER (PCR 50)\n# FUNCTION:\tTO CALCULATE AND DISPLAY EMS INITIALIZATION DATA\n# CALLING SEQUENCE:  BY V37\n# EXIT:\t\tTO P62\n# SUBROUTINE CALLS:  S61.1, S61.3, GOFLASH, FLAGUP, R02BOTH\n# ERASABLE INITIALIZATION:\n#\tEMSALT (-29) M\t\t.05G ALTITUDE ABOVE FISCHER ELLIPSOID\tPAD LOADED.\n#\tALFAPAD /180\t\tHYPERSONIC CM TRIM ANGLE OF ATTACK\tPAD LOADED\n# OUTPUT:\tTHE FOLLOWING REGISTERS ARE WRITTEN IN FOR USE BY DISPLAYS\n#\t\tGMAX\t100 GMAX (-14) G,S\tMAXIMUM ACCELERATION\n#\t\tVPRED\t(-7) M/CS\t\tPREDICTED VELOCITY AT 400K FT\n#\t\tGAMMAEI\t(GAMMA/360\t\tPREDICTED GAMMA    AT 400K FT\n#\t\tRTGO\tTHETAH/360\t\tRANGE ANGLE TO SPLASH FROM EMSALT\tEMSALT IS PAD LOADED\n#\t\tVIO\t(-7) M/CS\t\tINERTIAL VELOCITY AT\t   EMSALT\tEMSALT IS PAD LOADED\n#\t\tTTE\t(-28) CS\t\tTIME TO\t\t\t   EMSALT\tEMSALT IS PAD LOADED\n#\t\tLAT(SPL) /360\t\t\tTARGET LOCATION\t\t\t\tLEFT BY DSKY\n#\t\tLNG(SPL) /360\t\t\tTARGET LOCATION\t\t\t\tLEFT BY DSKY\n#\t\tHEADSUP\t(0)\t\t\t+1 = LIFT DOWN, -1 = LIFT UP\t\tLEFT BY DSKY\n# DEBRIS:\tSEE SUBROUTINES.\n\n\t\tBANK\t26\n\t\tSETLOC\tP60S\n\t\tBANK\n\n\t\tEBANK=\tAOG\n\n\t\tCOUNT*\t$$/P61\n\nP61\t\tCA\tBIT14\t\t# EXTENDED VERB SHOULD BE FREE THIS CLOSE\n\t\tTS\tEXTVBACT\t# TO V37\n\t\t\t\t\t# LOCK OUT EXTENDED VERBS SO CAN USE TFF\n\t\t\t\t\t# ROUTINES.  EXT VERB ERASE IS USED\n\n\t\tCS\tONE\t\t# REMOVE IF HEADSUP EVER ON UPLINK DATA\n\t\tTS\tHEADSUP\t\t# PRELOAD\n\n\t\tTC\tS61.1\t\t# CHECK STATE VECTOR AND IMU ORIENTATION\n\t\t\t\t\t# RV 60GENRET. DOES PHASCHNG, GROUP 4.\n\n\t\tCA\tV06N61\t\t# LAT(SPL)\tLNG(SPL)\tHEADSUP\n\t\t\t\t\t# XXX.XX DEG\tXXX.XX DEG\tXXXXX.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tGOTOPOOH\n# Page 790\n\t\tTC\tP61.4\n\t\tTC\t-5\n\nP61.3\t\tTC\tPHASCHNG\n\t\tOCT\t00014\n\n\t\tTC\tENDOFJOB\n\nP61.4\t\tZL\n\t\tCCS\tHEADSUP\t\t# C(HEADSUP)= +1/-1\n\t\tCA\tBIT14\t\t# IF HEADSUP POS,ROLLC =180 DEG.(LIFT DWN)\n\t\tNOOP\t\t\t# IF HEADSUP NEG,ROLLC =0 (LIFT UP)\n\t\tDXCH\tROLLC\t\t# ROLLC IS USED BY S62.3: GIM ANG AT .05G\n\n\t\tTC\tINTPRET\nNEWRNVN\t\tDLOAD\n\t\t\tPIPTIME\t\t# SAVE TIME OF RN,VN TO DETERMINE IF AN\n\t\tSTCALL\tMM\t\t# UPDATE HAS OCCURRED.\n\t\t\tSTARTEN1\t# INITIALIZE\n\t\tVLOAD\n\t\t\tRN\n\t\tSTORE\tRONE\n\t\tUNIT\n\t\tSTOVL\tURONE\n\t\t\tVN\n\t\tSTORE\tVONE\n\t\tVXV\tUNIT\n\t\t\tURONE\n\t\tSTORE\tUNI\nDUMPP61\t\tDLOAD\tDSU\n\t\t\tMM\t\t# INITIAL VALUE OF PIPTIME\n\t\t\tPIPTIME\n\t\tBMN\tCALRB\n\t\t\tNEWRNVN\t\t# UPDATED... GO TRY AGAIN\n\t\t\tS61.2\t\t# GET DISPLAY DATA FOR N60 AND N63\n\t\t\t\t\t# AND RETURN IN BASIC, BELOW.\nP61.1\t\tTC\tCLEARMRK\n\t\tCA\tV06N60\t\t# GMAX\t\tVPRED\t\tGAMMAEI\n\t\t\t\t\t# XXX.XX G\tXXXXX. FPS\tXXX.XX DEG\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\n\t\tTC\tGOTOPOOH\n\t\tTC\tP61.2\t\t# PROCEED\n\t\tTC\t-5\n\nP61.2\t\tTC\tINTPRET\t\t# CORRECT TTE FOR TIME LAPSE DURING\n\t\t\t\t\t# ABOVE DISPLAY.\n\t\tRTB\tDSU\n\t\t\tLOADTIME\t# CURRENT TIME.\n# Page 791\n\t\t\tMM\t\t# PIPTIME FOR RONE & VONE.\n\t\tDAD\n\t\t\tTTE1\t\t# NEGATIVE OF FREE FALL TIME.\n\t\tSTORE\tTTE\t\t# DECREMENTED\n\n\t\tEXIT\n\n\t\tCA\tV06N63\t\t# RTGO\t\tVIO\t\tTTE\n\t\t\t\t\t# XXXX.X NM\tXXXXX. FPS\tXXBXX M,S\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\n\t\tTC\tP61.2\t\t# REDO\n\n#\t\t.... THEN FALL INTO P62\n# Page 792\n\n# PROGRAM:\tP62\n# MOD NO.:\t0\tMAR. 13, 1967\n# MOD BY:\tR. HIRSCHKOP\n# MOD NO:  1\tMOD BY:  RR BAIRNSFATHER\tDATE: 21 MAR 67\n# MOD NO:  2\tMOD BY:  RR BAIRNSFATHER\tDATE: 22 JUN 67\t\tRESTARTS.\n# MOD NO:  3\tMOD BY:  RR BAIRNSFATHER\tDATE: 17 JAN 68\t\tCOLOSSUS GSOP CHANGES.\n# MOD NO:  4\tMOD BY:  RR BAIRNSFATHER\tDATE:  8 MAY 68\t\tMOVE START OF DESIRED GIMBAL CALC.\n# FUNCTION:\t1) TO NOTIFY CREW WHEN GNC SYSTEM IS PREPARED FOR CM/SM SEPARATION.\n#\t\t2) TO ORIENT THE CM TO THE CORRECT ATTITUDE FOR ATMOSPHERIC ENTRY.\n# CALLING SEQUENCE:  BY V37 OR DIRECTLY FROM P61\n# EXIT:\t\tTO P63\n# ERASABLE INITIALIZATION:\n#\tALFAPAD\t\t\t\t\t \tLEFT BY PAD LOAD\n#\tLADPAD\t\t\t\t\t\tLEFT BY PAD LOAD\n#\tLODPAD\t\t\t\t\t\tLEFT BY PAD LOAD\n#\tLAT(SPL)\t(MAY BE CHANGED BELOW)\t\tLEFT BY DSKY, VIA P61\n#\tLNG(SPL)\t(MAY BE CHANGED BELOW)\t\tLEFT BY DSKY, VIA P61\n#\tHEADSUP\t\t(MAY BE CHANGED BELOW)\t\tLEFT BY DSKY, VIA P61\n# SUBROUTINE CALLS:  NEWMODEX, S61.1, CM/DAPIC, CM/DAPON, R02BOTH, GOPERF1, GOFLASH, GODSPR.\n\n\t\tCOUNT*\t$$/P62\n\n\t\tTC\tNEWMODEX\t\t# MODE CHANGE IF CAME FROM P61.\n\t\tMM\t62\t\t\t# MODE CHANGE AUTOMATIC VIA V 37.\n\t\tCA\tONE\n\t\tTS\tDNLSTCOD\n\nP62\t\tTC\tS61.1\t\t\t# CHECK STATE VECTOR AND IMU ORIENTATION.\n\n\t\tTC\tINTPRET\n\t\tSSP\tRTB\n\t\t\tPOSEXIT\n\t\t\tP62.3\t\t\t# CALCULATE DESIRED .05G GIMBAL ANGLES.\n\t\t\t\t\t\t# WITHOUT DISPLAY.\n\t\t\tCM/DAPIC\t\t# START CM/POSE AND BODY RATE CALC\n\n\t\t\t\t\t\t# DOES 2PHSCHNG, OCT 40116, OCT 05024, OCT 13000.\n\t\t\t\t\t\t# CM/DAPIC SETS EBANK = EBAOG\n\t\t\t\t\t\t# AND RETURNS IN BASIC TO P62.2.\nP62.2\t\tEXTEND\n\t\tDCA\tPOSECADR\t\t# CONTINUE WITH CM/POSE AFTER AV G.\n\t\tDXCH\tAVEGEXIT\n\n\t\tCAF\tOCT41\t\t\t# REQUEST SEPARATION\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1R\n\t\tTC\tGOTOPOOH\n\t\tTC\t+3\t\t\t# PROCEED\n# Page 793\n\t\t\t\t\t\t# NOTE:  NODOFLAG WILL BE SET IN CM/DAPON. ***\n\t\tTC\t-5\t\t\t# ENTER\n\t\tTC\tP61.3\t\t\t# FOR PHASCHNG AND ENDOFJOB\n\n\t+3\tTC\tPOSTJUMP\n\t\tCADR\tCM/DAPON\t\t# DISABLE RCS DAP, ENABLE ENTRY DAP AND\n\t\t\t\t\t\t# DO ATTITUDE HOLD.\n\n\t\t\t\t\t\t# WILL IDLE UNTIL CM/POSE DOES ONE UPDATE.\n\t\t\t\t\t\t# CM/DAPON DOES NO PHASCHNG.\n\nP62.1\t\tCA\tV06N61\t\t\t# LAT(SPL)\tLNG(SPL)\tHEADSUP\n\t\t\t\t\t\t# XXX.XX DEG\tXXX.XX DEG\t0000X.\n\n\t\t\t\t\t\t# TERMINATE ATTITUDE HOLD.  SET UP COMMANDS:\n\t\t\t\t\t\t# ROLLC, ALFACOM, BETACOM.  BEGIN MANEUVER TO\n\t\t\t\t\t\t# ENTRY ATTITUDE.\n\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\t-3\n\t\tTC\t+2\n\t\tTC\t-5\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\t\t\t# USE ENTRYVN FOR DISPLAY BELOW.\n\t\t\t\t\t\t# EBANK WAS SET IN CM/DAPON TO EBAOG\n\n\t\tCCS\tHEADSUP\t\t\t# C(HEADSUP) = +/- 1\n\t\tCA\tBIT14\t\t\t# IF HEADSUP POS, ROLLC=180 DEG (LIFT DWN)\n\t\tNOOP\t\t\t\t# IF HEADSUP NEG, ROLLC=0 DEG (LIFT UP)\n\t\tTS\tROLLC\n\t\tCA\tALFAPAD\t\t\t# NOMINAL ALFATRIM PAD LOADED, NEG. NO.\n\t\tZL\n\t\tDXCH\tALFACOM\t\t\t# SET ALFACOM = ALFA TRIM, BETACOM=0\n\n\t\tCA\tONE\t\t\t# PERMITS EXDAP2 TO CHANGE FLAG TO +0\n\t\tTS\tP63FLAG\t\t\t# AS INDICATOR.  STARTS UP P63.\n\n\t\tCA\tV06N22\t\t\t# SET UP DISPLAY FOR CDU DESIRED VALUES\n\t\tTS\tENTRYVN\t\t\t# FROM ENTRY ATTITUDE CALC, THAT IS\n\t\t\t\t\t\t# ALREADY GOING.\n\t\tTC\tUPFLAG\t\t\t# TURN ON ENTRY DISPLAY\n\t\tADRES\tENTRYDSP\t\t# ENTRYDSP = 92D BIT 13 FLAG 6\nSKIP\n# Page 794\n\t\tCS\tCMDAPMOD\t\t# GO DIRECTLY TO P63 IF BODY ATTITUDE\n\t\tMASK\tONE\t\t\t# IS SUCH THAT THE DELAY TASK: WAKEP62\n\t\tEXTEND\t\t\t\t# WILL BE OMITTED.\n\t\tBZF\tP63.1\t\t\t# DISABLE GRP 4, GO TO ENDOFJOB.\n\t\t\t\t\t\t# (I.E., CONTINUE IF CMDAPMOD = -1, OR +0)\n\t\tTC\tP63\n\n\t\t\t\t\t\t# PUT JOB TO SLEEP UNTIL VEHICLE MANEUVER HAS\n\t\t\t\t\t\t# REDUCED ALFA TO +/-45 DEG. CONSIDER REMAINING\n\t\t\t\t\t\t# 65 DEG (25 DEG IF ALFA NEG) TO ALFA TRIM TO\n\t\t\t\t\t\t# OCCUR AT 3 DEG/SEC, AND TERMINATE P62 AT THAT\n\t\t\t\t\t\t# TIME.\n\n\t\t\t\t\t\t# TASK WAKEP62 IS CALLED FROM ENTRY DAP.\nWAKEP62\t\tCA\tPRIO13\n\t\tTC\tNOVAC\n\t\tEBANK=\tAOG\n\t\t2CADR\tP63\n\n\t\tTC\tTASKOVER\n\n\t\t\t\t\t\t# EACH 2 SEC, CALCULATE GIMBAL ANGLES FOR ENTRY CON-\n\t\t\t\t\t\t# DITIONS THAT WILL HOLD IF REORIENTATION WERE MADE\n\t\t\t\t\t\t# AT PRESENT RN, VN.  COME HERE FROM CM/POSE AND ALSO\n\t\t\t\t\t\t# IN KEPLER PHASE OF ENTRY.\n\nP62.3\t\tSSP\tGOTO\t\t\t# SET RETURN ADDRESS SO THAT ROUTINE\n\t\t\tQPRET\t\t\t# GOES DIRECTLY TO ENTRY GUIDANCE EXIT\n\t\t\tENDEXIT\t\t\t# THAT DOES ENTRY DISPLAY, GRP 5.\n\t\t\tS62.3\t\t\t# PUT DESIRED CDU VALUES IN CPHI'S FOR\n\t\t\t\t\t\t# N22 DISPLAY.\n\n# Page 795\n#\tP63\n# PROGRAM:\tP63\n# MOD NO:\t0\tMAR. 13, 1967\n# MOD BY:\tR. HIRSCHKOP\n# MOD NO: 1\tMOD BY: RR BAIRNSFATHER\t\tDATE: 22 JUN 67\t\tRESTARTS\n# MOD NO: 2\tMOD BY: RR BAIRNSFATHER\t\tDATE: 14 JUL 67\t\tREVISED RESTARTS\n# FUNCTION:\t1) TO INITIALIZE THE ENTRY EQUATIONS.\n#\t\t2) TO CONTINUE TO HOLD THE CM TO THE CORRECT ATTITUDE WITH RESPECT TO THE ATMOSPHERE FOR\n#\t\t   THE ONSET OF ENTRY DECELERATION.  ROLL ANGLE IS LIFT UP/DOWN AS SPECIFIED BY HEADSUP.\n#\t\t3) TO SENSE .05G.\n# CALLING SEQUENCE:  DIRECTLY FROM P62\n# EXIT:\t\tTO ENDOFJOB\n# SUBROUTINE CALLS:  NEWMODEX, GODSPR\n\n\t\tCOUNT*\t$$/P63\n\nP63\t\tTC\tNEWMODEX\n\t\tMM\t63\n\n\t\t\t\t\t\t# ARRIVE WITH EBANK = AOG.\n\n\t\tCA\tENTCADR\t\t\t# CONTINUE AT STARTENT AFTER CM/POSE.\n\n\t\t\t\t\t\t# AT END OF STATEMENT, CHANGE ADDRESS IN GOTOADDR\n\t\t\t\t\t\t# TO CONTINUE AT SCALEPOP THEREAFTER.\n\n\t\tTS\tPOSEXIT\n\n\t\tCA\tV06N64\t\t\t# G\t\tVI\t\tR TO SPLSH\n\t\t\t\t\t\t# XXX.XX G\tXXXX. FPS\tXXXX.X NM\n\t\tTS\tENTRYVN\t\t\t# FOR DISPLAY CALL IN OVERNOUT\n\n\t\tCS\tONE\t\t\t# IN CASE FLAG IS LEFT AT +1 BY DAP.  THE\n\t\tTS\tP63FLAG\t\t\t# -1 ASSURES THAT EXO-ATM DAP WILL NOT\n\t\t\t\t\t\t# CALL P63 OUT OF SEQUENCE IN P66.\n\n\t\tTC\tPHASCHNG\t\t# THIS IS REQUIRED TO PRESERVE CLEANDSP\n\t\tOCT\t00004\t\t\t# RETURN IN EVENT OF AN EXTENDED VERB\n\n\t\tTC\tBANKCALL\t\t# FLUSH 'N22' DISPLAY, IF ON, (OMIT\n\t\tCADR\tCLEANDSP\t\t# DISPLAY DURING 'STARTENT' PASS.)\n\nP63.1\t\tTC\tPHASCHNG\n\t\tOCT\t00004\t\t\t# DISABLE.  DISPLAY RESTARTED VIA ENTRY.\n\n\t\tTC\tENDOFJOB\n\nV06N60\t\tVN\t0660\nV06N61\t\tVN\t0661\nV06N63\t\tVN\t0663\n# Page 796\nV06N64\t\tVN\t0664\nENTCADR\t\tCADR\tSTARTENT\n\n\t\tEBANK=\tRTINIT\t\t\t# TO CARRY OVER INTO ENTRY STEERING.\nPOSECADR\t2CADR\tCM/POSE\n\n# Page 797\n# PROGRAM:\tP64\n# MOD NO:\t1\tSEPT. 19, 1967\n# MOD BY:\tR. HIRSCHKOP\n# MOD NO: 2\tMOD BY: RR BAIRNSFATHER\t\tDATE: 8 MAY 68\t\tREVISED COMMENTS FOR COLOSSUS\n# FUNCTION:\t1.  TO START ENTRY GUIDANCE AT .05G SELECTING ROLL ATTITUDE, CONSTANT DRAG LEVEL, AND\n#\t\t    DRAG THRESHOLD, KA, WHICH ARE KEYED TO THE .05G POINT.\n#\t\t2.  SELECT FINAL PHASE P67 IF V < 27000 FPS WHEN .2G OCCURS.\n#\t\t3.  ITERATE FOR UP-CONTROL SOLUTION P65 IF V > 27000 FPS AND IF ALTITUDE RATE AND DRAG\n#\t\t    LEVEL CONDITIONS ARE SATISFIED.  ENTER P65 WHEN CONSTANT DRAG CONTROLLER HAS BROUGHT RANGE\n#\t\t    AS PREDICTED TO WITHIN 25 NM OF DESIRED RANGE.\n#\t\t4.  SELECT FINAL PHASE  P67  IF NO UP-CONTROL SOLUTION EXISTS WITH VL > 18000 FPS.\n# CALLING SEQUENCE:  BY RTB FROM REENTRY CONTROL\n# EXIT:\t\tBACK TO REENTRY CONTROL.\n# SUBROUTINE CALLS:  NEWMODEX\n\n\t\tBANK\t25\n\t\tSETLOC\tP60S1\n\t\tBANK\n\n# THIS DISPLAY IS CALLED EACH PASS THROUGH STEERING.  RESTART PROTECTION IS VIA STEERING.\n\n\t\tCOUNT*\t$$/P64\n\nP64\t\tTC\tNEWMODEX\t\t# ENTER VIA RTB WHEN .05G IS EXCEEDED.\n\t\tMM\t64\n\t\tCA\tV06N74\t\t\t# ROLLC\t\tVI\t\tD\n\t\t\t\t\t\t# XXX.XX DEG\tXXXXX. FPS\tXXX.XX G\n\t\tTS\tENTRYVN\t\t\t# DISPLAY VIA OVERNOUT.\n\n\t\tTC\tDANZIG\t\t\t# ... AND CONTINUE IN INITROLL ...\n\nV06N74\t\tVN\t0674\n\n# Page 798\n# PROGRAM:\tP65\n# MOD NO:  0\tMOD BY:  RR BAIRNSFATHER\tDATE:  17 JAN 68\tCOLOSSUS GSOP ADDITION.\n# FUNCTION:\tTO CONTINUE ENTRY GUIDANCE, USING THE UP-CONTROL PHASE TO STEER TO A CONTROLLED EXIT\n#\t\tCONDITION.  THIS PHASE TERMINATES  A) IF D < Q7 FPSS, GOTO TO P66.\n#\t\t\t\t\t\t   B) IF RDOT NEG, AND IF V < VL +500 FPS, GO TO P67.\n# CALLING SEQUENCE:  BY RTB FROM REENTRY CONTROL\n# EXIT:\t\tBACK TO REENTRY CONTROL, OR TO ENDOFJOB.\n# SUBROUTINE CALLS:  NEWMODEX\n\n\t\tCOUNT*\t$$/P65\n\nP65\t\tTC\tNEWMODEX\t\t# ENTER VIA RTB WHEN RANGE < 25 N M OF\n\t\tMM\t65\t\t\t# TARGET.\n\n\t\tCA\tPRIO13\n\t\tTC\tNOVAC\n\t\tEBANK=\tENTRYVN\n\t\t2CADR\tP65.1\n\n\t\tTC\t2PHSCHNG\t\t# 2 PHASE CHG REQUIRED TO PREVENT RE-\n\t\tOCT\t00554\t\t\t# STARTING FLASHING DISPLAY TWICE.\n\t\tOCT\t10035\t\t\t# 4.55 SPOT AND SERVICER, HERE.\n\t\tTC\tINTPRET\n\t\tSSP\tRTB\n\t\t\tGOTOADDR\t\t# CHANGE ENTRY MODE TO UPCONTRL.\n\t\t\tUPCONTRL\n\t\t\tREFAZE10\t\t# GO HERE TO REESTABLISH ENTRY SEQUENCER.\n\t\t\t\t\t\t# AND CONTINUE AT UPCONTRL...\n\nP65.1\t\tTC\tDOWNFLAG\n\t\tADRES\tENTRYDSP\t\t# ENTRYDSP = 92D BIT 13 FLAG 6\n\n\t\tCA\tV16N69\t\t\t# ROLLC\t\tDL (Q7)\t\tVL\n\t\tTC\tBANKCALL\t\t# XXX.XX DEG\tXXX.XX G\tXXXXX. FPS\n\t\tCADR\tGOFLASHR\n\t\tTC\t-3\t\t\t# NODOFLAG IS SET ...\n\t\tTC\t+3\n\t\tTC\t-5\n\t\tTC\tP61.3\t\t\t# EST. GRP 4 FOR DISPLAY AND DO ENDOFJOB\n\t\t\t\t\t\t# IF PROCEED, CONTINUE\n\t\tTC\tUPFLAG\n\t\tADRES\tENTRYDSP\t\t# ENTRYDSP = 92D BIT 13 FLAG 6\n\n\t\tTC\tP63.1\t\t\t# DISABLE GRP 4, START UP ENTRY DISPLAY\n\t\t\t\t\t\t# N06V68 VIA OVERNOUT, AS USED IN P64\nV16N69\t\tVN\t1669\n\n# Page 799\n# PROGRAM:\tP66\n# MOD NO: 0\tMOD BY: RR BAIRNSFATHER\t\tDATE: 17 JAN 68\t\tCOLOSSUS GSOP ADDITIONS\n# FUNCTION:\tKEEP CM ATTITUDE IN TRIM TO THE RELATIVE VELOCITY VECTOR.  ENTRY GUIDANCE STOPS GENERATING\n#\t\tROLL COMMANDS UNTIL DRAG BUILDS UP TO Q7+0.5 FPSS.\n# CALLING SEQUENCE:  VIA RTB FROM REENTRY CONTROL.\n# EXIT:\t\tBACK TO REENTRY CONTROL.\n# SUBROUTINE CALLS:  NEWMODEX\n\n\t\tCOUNT*\t$$/P66\n\nP66\t\tTC\tNEWMODEX\t\t# ENTER VIA RTB WHEN D < Q7 FPSS\n\t\tMM\t66\n\n\t\tCA\tV06N22\t\t\t# OGA\t\tIGA\t\tMGA\n\t\t\t\t\t\t# XXX.XX DEG\tXXX.XX DEG\tXXX.XX DEG\n\t\tTC\tP66END\t\t\t# IN CASE CAME FROM P65, GO TO DISABLE GRP 4,\n\t\t\t\t\t\t# AND SET ENTRYDSP TO DO DISPLAY VIA\n\t\t\t\t\t\t# OVERNOUT.\n\n\t\t\t\t\t\t# ... AND CONTINUE AT KEP2\n\n# Page 800\n# PROGRAM:\tP67\n# MOD NO:\t0\tMAR. 16, 1967\n# MOD BY:\tR. HIRSCHKOP\n# FUNCTION:\tTO TERMINATE STEERING WHEN THE CM VELOCITY WRT EARTH = 1000 FT/SEC\n# CALLING SEQUENCE:\n# EXIT:\t\tTO POOH\n# SUBROUTINE CALLS:  GOFLASH\n\n# THIS DISPLAY IS CALLED EACH PASS THROUGH STEERING.  RESTART PROTECTION IS VIA STEERING.\n\n\t\tCOUNT*\t$$/P67\n\nP67\t\tTC\tNEWMODEX\t\t# ENTER VIA RTB\n\t\tMM\t67\n\t\tCA\tV06N66\t\t\t# ROLLC\t\tXRNGERR\t\tDNRNGERR\n\t\t\t\t\t\t# XXX.XX DEG\tXXXX.X NM\tXXXX.X NM\nP66END\t\tTS\tENTRYVN\t\t\t# DISPLAY VIA OVERNOUT.\n\n\t\tTC\tUPFLAG\t\t\t# (IN CASE CAME FROM P65.  ENTRY DISPLAY\n\t\tADRES\tENTRYDSP\t\t# WILL FLUSH FLASHING DISP.  IF STILL ON)\n\t\t\t\t\t\t# BIT 13 FLAG 6\nKILLGRP4\tTC\tPHASCHNG\t\t# DISABLE GRP4, IN CASE CAME FROM HUNTEST.\n\t\tOCT\t00004\t\t\t# (COME TO KILLGRP4 VIA RTB, RET TO CALLER)\n\n\t\tTC\tDANZIG\t\t\t# ... AND CONTINUE AT PREDICT3 ...\n\nV06N66\t\tVN\t0666\n\n\t\tBANK\t26\n\t\tSETLOC\tP60S2\n\t\tBANK\n\nP67.1\t\tCA\tV16N67\t\t\t# RTOGO\t\tLAT\t\tLONG\n\t\t\t\t\t\t# XXXX.X NM\tXXX.XX DEG\tXXX.XX DEG\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\t+3\t\t\t# EFFECTIVE GOTOPOOH\n\t\tTC\t+2\n\t\tTC\tP67.1\t\t\t# REDO\n\n\t\tCS\tTHREE\t\t\t# TURN OFF ENTRY DAP\n\t\tINHINT\n\t\tMASK\tCM/FLAGS\t\t# CM/DSTBY, GAMDIFSW\n\t\tTS\tCM/FLAGS\n\t\tRELINT\n\t\tEXTEND\n\t\tDCA\tSERVCAD2\n\n# Page 801\n\t\tDXCH\tAVEGEXIT\n\n\t\tTCF\tGOTOPOOH\n\n# Page 802\nP67.2\t\tVLOAD\tCLEAR\t\t\t# CALC PRESENT LAT, LONG, ALT.\n\t\t\tRN\n\t\t\tERADFLAG\t\t# USE PAD RAD FOR ALT. (NOT SEEN ANYWAY)\n\t\tSTODL\tALPHAV\n\t\t\tPIPTIME\t\t\t# USE TIME OF RN\n\t\tCLEAR\tCALL\n\t\t\tLUNAFLAG\n\t\t\tLAT-LONG\nP67.3\t\tRTB\t\t\t\t# ENTRY EXIT THAT OMITS DISPLAY.\n\t\t\tSERVNOUT\n\nV16N67\t\tVN\t1667\nOCT41\t\t=\t33DEC\nSERVCAD2\t=\tSERVCAD1\n\n# Page 803\n# SUBROUTINE NAME:\tS61.1\n# MOD NO:\t0\t\t\t\t\tDATE:\t\t21 FEB 67\n# MOD BY:\tRR BAIRNSFATHER\t\t\t\tLOG SECTION:\tP61-P67\n# MOD NO:\t1\tMOD BY:\tRR BAIRNSFATHER\t\tDATE:\t\t22 JUN 67\tRESTARTS.\n# FUNCTIONAL DESCRIPTION:\tCALLED BY BOTH P61 AND P62\n#\tFIRST, TEST TO SEE IF  AVERAGEG  IS ON.  IF NOT, UPDATE THE STATE VECTOR TO PRESENT TIME + TOLERANCE\n#\tAND TURN ON  AVERAGEG  AT THAT TIME, AND CONTINUE.  OTHERWISE CONTINUE:  SEE IF IMU Y AXIS IS\n#\tWITHIN 30 DEG OF VAR.  IF YES, EXIT SUBROUTINE S61.1.  IF SO, SEE IF -Y AXIS OF IMU IS WITHIN\n#\t30 DEG OF VAR.\tIF YES, DISPLAY ALARM:\t01427\tIMU REVERSED.\n#\t\t\tIF NO, DISPLAY ALARM:\t01426\tIMU UNSATISFACTORY.\n#\tIN EITHER OF THESE LAST 2 CASES, WAIT 10 SEC AND THEN EXIT SUBROUTINE S61.1.\n#\n# REMARK:\tTHERE WILL BE A SHORT 10 SEC DELAY IF AN ALARM EXIT IS TAKEN.  THE DELAY FOR INTEGRATION IS\n#\t\tAS SHORT AS CAN BE MADE, BUT IS ARBITRARY SINCE IT DEPENDS ON THE AGE OF THE STATE VECTOR.\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tS61.1\n#\n#\t\t\tC(MPAC) UNSPECIFIED\n#\t\t\tPUSHLOC UNSPECIFIED\n#\n# SUBROUTINES CALLED: \tLOADTIME, CSMPREC, TPAGTREE,\n#\t\t\tWAITLIST, JOBSLEEP, JOBWAKE, PREREAD, ALARM, GODSPR, BANKCALL, DELAYJOB\n#\n# NORMAL EXIT MODES:\tRVQ\n#\n# ALARMS:\t01426\tIMU UNSATISFACTORY\n#\t\t01427\tIMU REVERSED\n#\n# OUTPUT:\tPOSSIBLE ALARMS\n#\t\tPOSSIBLY TDEC1, RATT, VATT, RN, VN\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\tAVEGFLAG\t\tAVERAGEG ON OR OFF\t\t\t\tLEFT BY SERVICER\n#\tPIPTIME   (-28) CS\tTIME OF PIPA UPDATE\t\t\t\tLEFT BY READACCS\n#\tRN        (-29) M\tSTATE VECTOR\t\t\t\t\tLEFT BY AVERAGEG\n#\tVN\t  (-7) M/CS\tSTATE VECTOR\t\t\t\t\tLEFT BY AVERAGEG\n#\tREFSMMAT  (-1)\t\t.5 REF TO SM MATRIX\t\t\t\tLEFT BY LAST IMU ALIGNMENT\n#\n# DEBRIS:\tQPRET\n#\t\tPOSSIBLY PIPTIME1, RATT, VATT, TDEC1, RN1, VN1, QTEMP, X1\tIF UPDATED\n#\t\tPUSH LIST LOCS USED BY CSMPREC\n\n\t\tEBANK=\tAOG\t\t# FOR 60GENRET, S61DT\n\t\tBANK\t26\n\t\tSETLOC\tP60S3\n\t\tBANK\n\n\t\tCOUNT*\t$$/S61.1\n\nS61.1\t\tEXTEND\n\t\tQXCH\t60GENRET\t# SAVE RET ADDR IN EB 6\n\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\n\t\tTC\tINTPRET\n# Page 804\n\t\tBON\tCALRB\n\t\t\tAVEGFLAG\t# IS AVERAGEG ON\n\t\t\tS61.1A\t\t# YES\n\t\t\tMIDTOAV2\t# GET FUTURE STATE VECTOR SOON AS CAN\n\n\t\tCA\tMPAC +1\t\t# RETURN INHINTED ***\n\t\tTS\tS61DT\t\t# FOR RESTART.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tS61.1C\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t40434\n\t\tTC\tENDOFJOB\n\nS61.1C\t\tCA\tPRIO13\n\t\tTC\tFINDVAC\n\t\tEBANK=\tAOG\n\t\t2CADR\tS61.1A \t-1\n\n\t\tEXTEND\n\t\tDCA\tSERVCAD1\t# HE WHO START AVERAGEG MUST SERVICE\n\t\tDXCH\tAVEGEXIT\t# THE EXIT.\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00454\n\t\tOCT\t00415\n\n\t\tCA\tEBENTRY\t\t# SET EB= 7 FOR PREREAD.\n\t\tTS\tEBANK\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tPREREAD\t\t# PREREAD DOES TC TASKOVER.\n\n\t\tTC\tINTPRET\nS61.1A\t\tBOVB\tVLOAD\n\t\t\tTCDANZIG\t# TURN OFF OVFIND, IF ON\n\t\t\tVN\t\t# VN\t(-7) M/CS\n\t\tVXV\tMXV\n\t\t\tRN\t\t# RN\t(-29) M\n\t\t\tREFSMMAT\t# .5 UNIT MATRIX\n\t\tUNIT\tDLOAD\n\t\t\tMPAC +3\t\t# GET COS(THETA)/2\n\t\tBMN\tDAD\n\t\t\tS61.1B\t\t# DO TEST ON -YSM\n\t\t\tC(30)LIM\t# = 1.0 -.5 COS(30)\n\t\tBOVB\tRTB\n\t\t\tRETRN1\n\t\t\tRETRN3\n# Page 805\nS61.1B\t\tDCOMP\tDAD\n\t\t\tC(30)LIM\t# = 1.0 - .5 COS(30)\n\t\tBOVB\tEXIT\n\t\t\tRETRN2\n\nRETRN3\t\tTC\tALARM\n\t\tOCT\t01426\t\t# IMU UNSATISFACTORY\n\t\tTC\tRETRN2 +2\n\nRETRN2\t\tTC\tALARM\n\t\tOCT\t01427\t\t# IMU REVERSED\n\n\t+2\tCAF\tV05N09\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPR\t\t# DO DISPLAY\n\t\tCA\t10SECS\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\nRETRN1\t\tTC\t60GENRET\n\n\t\tEBANK=\tDVCNTR\nSERVCAD1\t2CADR\tSERVEXIT\n\nC(30)LIM\t2DEC\t.566985\t\t# = 1.0 - .5 COS(30)\n\n10SECS\t\tDEC\t1000\t\t# 1000 CS\n60SECDP\t\t2DEC\t6000 B-28\t# 6000 CS\n\n# Page 806\n# PROGRAM NAME:\t\tS61.2\t\t\tDATE:\t\t14 FEB 67\n# MOD NO:  \t1\t\t\t\tLOG SECTION:\tP61-P67\n# MOD BY:\tNORTH / BAIRNSFATHER\n# MOD NO: 2\tMOD BY: NORTH/BAIRNSFATHER\tDATE: 11 MAY 67\t\tADD 2ND ITER FOR ERAD AT 400K FT.\n# MOD NO: 3\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 NOV 67\t\tVARIABLE MU ADDED.\n# MOD NO: 4\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 MAR 68\t\tDIFFERENT EARTH/MOON SCALES IN TFF'S\n#\n# FUNCTIONAL DESCRIPTION:  CALLED IN P61.  PROVIDES DISPLAYS FOR NOUNS  N60  AND  N63 .\n#\tPROGRAM CALCULATES ENTRY DISPLAY OF MAXIMUM ACCELERATION EXPECTED  (GMAX)  AND ALSO THE EXPECTED\n#\tINERTIAL VELOCITY (VPRED) AND ENTRY ANGLE  (GAMMAEI)  THAT WILL OBTAIN AT 400K FT ABOVE THE FISCHER\n#\tELLIPSOID.  PROGRAM ALSO CALCULATES A SECOND DISPLAY RELATIVE TO THE  EMSALT  ABOVE FISCHER ELLIPSOID\n#\tAND CONSISTS OF RANGE TO SPLASH FROM NOW  (RTGO) , PREDICTED INERTIAL VELOCITY  (VIO) , AND THE TIME TO\n#\tGO FROM NOW  (TTE) .\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tS61.2\n#\t\t\tC(MPAC) UNSPECIFIED\n#\t\t\tPUSHLOC WILL BE SET TO ZERO.\n#\n# SUBROUTINES CALLED:\tTFFCONIC, CALCTFF, TFF/TRIG, FISHCALC, GETERAD, VGAMCALC\n#\n# NORMAL EXIT MODES:\tRTB, P61.1\n#\n# ALARMS:  \tNONE\n#\n# OUTPUT:\tTHE FOLLOWING REGISTERS ARE WRITTEN IN FOR USE BY DISPLAYS\n#\t\tGMAX\t100 GMAX (-14) G,S\tMAXIMUM ACCELERATION\n#\t\tVPRED\t(-7) M/CS\t\tPREDICTED VELOCITY AT 400K FT\n#\t\tGAMMAEI\tGAMMA/360\t\tPREDICTED GAMMA    AT 400K FT\n#\t\t\t\t\t\tFOR TM, DP(GAMMAEI) = (GAMMAEI, RTGO) / 360\n#\t\tRTGO\tTHETAH/360\t\tRANGE ANGLE TO SPLASH FROM EMSALT\tEMSALT IS PAD LOADED.\n#\t\tVIO\t(-7) M/CS\t\tINTERTIAL VELOCITY AT      EMSALT\tEMSALT IS PAD LOADED.\n#\t\tTTE\t(-28) CS\t\tTIME TO                    EMSALT\tEMSALT IS PAD LOADED.\n#\t\tPUSHLOC\t= 0\n#\t\tCONIC PARAMETERS STORED IN VAC AREA (SEE TFF SUBROUTINES)\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\t\tRONE\t(-29) M\t\t\tSTATE VECTOR\t\t\t\tLEFT BY USER\n#\t\tVONE\t(-7) M/CS\t\tSTATE VECTOR\t\t\t\tLEFT BY USER\n#\t\tURONE\tUR/2\t\t\t\t\t\t\t\tLEFT BY USER\n#\t\tUNI\t(-1)\t\t\tUNIT NORMAL V*R\t\t\t\tLEFT BY ENTRY / P61\n#\t\tTHETAH\tTHETAH/360\t\tRANGE ANGLE\t\t\t\tLEFT BY ENTRY / P61\n#\t\tUNITW\t(0)\t\t\tUNIT POLAR VECTOR\t\t\tLEFT BY PAD LOAD\n#\t\tEMSALT\t(-29) M\t\t\tEMS INTERFACE ALTITUDE\t\t\tLEFT BY PAD LOAD\n#\t\t\t\t\t\tORBITAL REENTRY: 284843 FT., LUNAR REENTRY: 297431 FT.\n#\n# DEBRIS:\tQPRET,\n#\t\tALL PDL LOCATIONS ABOVE 12D, INCLUDING X1,X2,S1,S2\n#\t\tALSO PDL+0 ... PDL+5, WHERE INITIAL PUSHLOC = PDL\n\n# Page 807\n# THE FOLLOWING PUSH LIST LOCATIONS HAVE BEEN RESERVED FOR TFF ROUTINES AND ARE REPEATED HERE FOR CONVENIENCE.\n# OF COURSE FOR S61.2 USAGE, EARTH ORIGIN SCALING IS USED.\n#\n#\t\t\t\tBELOW\tE:  IS USED FOR EARTH ORIGIN SCALE\n#\t\t\t\t\tM:  IS USED FOR MOON ORIGIN SCALE\n#\n#\tRTERM\t= \t18D\t\tTERMINAL RADIUS M\tE:  (-29)\tM:  (-27)\n#\tNRTERM\t=\t16D\t\tTERMINAL RADIUS M\tE:  (-29+NR)\n#\t\t\t\t\t\t\t\tM:  (-27+NR)\n#\tRMAG1\t=\t12D\t\tPRESENT RADIUS M\tE:  (-29)\tM:  (-27)\n#\tNRMAG\t=\t32D\t\tPRESENT RADIUS M\tE:  (-29+NR)\n#\t\t\t\t\t\t\t\tM:  (-27+NR)\n#\tSDELF/2\t\t\t\tSIN(THETA) / 2\n#\tCDELF/2\t=\t14D\t\tCOS(THETA) / 2\n#\tTFFX\t=\t34D\t\tX, ARGUMENT OF SERIES T(X)\n#\tTFFTEM\t=\t36D\t\tARG FOR TRANSFER ANGLE CALCULATION\n#\tTFFNP\t=\t28D\t\tLC P M \t\t\tE:  (-38+2NR)\tM:  (-36+2NR)\n#\tTFF/RTMU=\t30D\t\t1/SQRT(MU)\t\tE:  (17)\tM:  (14)\n#\tTFFVSQ\t=\t20D\t\t-(VN.VN/MU)\t1/M\tE:  (20)\tM:  (18)\n\n# Page 808\n\t\tBANK\t34\n\t\tSETLOC\tP60S2\n\t\tBANK\n\n\t\tCOUNT*\t$$/S61.2\n\t\t\t\t\t# PDL LEFT AT ZERO BY TARGETING\n\nS61.2\t\tDLOAD\tDSU\n\t\t\tEMSALT\n\t\t\t290KFT\n\t\tBPL\tDLOAD\n\t\t\tLUNENT\n\t\t\t1/RTMU\t\t# ESTABLISH MU FOR ORBITAL ENTRIES\nCALLCON\t\tCALL\n\t\t\tTFFCONIC\t# FILL VAC AREA WITH CONIC PARAMETERS\n\n\t\tDLOAD\tCALL\n\t\t\tRTRIAL\t\t# 1ST GUESS AT TERMINAL RADIUS\t(-29)\n\t\t\tCALCTFF\t\t# SAVES MPAC IN RTERM\t\t(18D)\n\n\t\tCALL\t\t\t# CALC SDELF/2, CDELF/2\n\t\t\tTFF/TRIG\t# RETURN WITH S(THETA) IN MPAC\n\n\t\tCALL\t\t\t# GET FISCHER RADIUS\t\t(-29) M\n\t\t\tFISHCALC\t# ANS IN MPAC AND IN ERADM\n\n\t\tDAD\tCALL\n\t\t\tEMSALT\n\t\t\tCALCTFF\t\t# SAVES MPAC IN RTERM\t\t(18D)\n\n\t\tDCOMP\t\t\t# NEGATIVE AS IN COUNTDOWN\n\t\tSTORE\tTTE1\t\t# DECR TTE FROM BASB TTE1.  (RESTART)\n\t\t\t\t\t# DNLIST AND DSKY WILL USE TTE.\n\t\tSTCALL\tTTE\t\t# LET MISS CONTRL DECR BY ELAPSED TIME\n\t\t\t\t\t# TTE= TIME FROM NOW TO EMSALT +FISCHER\n\n\t\t\tTFF/TRIG\t# S(THETA) IN MPAC ON RETURNING\n\t\t\t\t\t# AND THETA= RANGE FROM NOW TO EMSALT\n\n\t\tCALL\n\t\t\tFISHCALC\n\t\tCALL\n\t\t\tVRCALC\n\t\tCALL\n\t\t\tDISPTARG\n\t\tCALL\n\t\t\tDISPTARG\n\t\tSTCALL\tRTGO\n# Page 809\n\t\t\tVGAMCALC\n\n\t\tDMP\t\t\t# MPAC = GAMMA\n\t\t\t\t\t# PDL0 HAS VGAM.\n\t\tBDDV\tDAD\n\t\t\tVEMSCON\t\t# -HS D 180/PI (-14)\n\t\t\t0\t\t# VGAM FROM PDL0\n\t\tSTODL\tVIO\t\t# PREDICTED VELOCITY AT EMSALT.\n\n\t\t\t\t\t# GAMMA AND VGAM AT 300K FT ARE REQUIRED BY GMAX\n\t\t\t\t\t# ALGORITHM.\n\n\t\t\tERADM\t\t# EARTH RADIUS FROM GETERAD (-29) M\n\t\t\t\t\t# = FISCHER RADIUS (-29)\n\n\t\tDAD\n\t\t\t300KFT\t\t# M (-29)\n\t\tSTCALL\tRTERM\t\t# TERMINAL RADIUS M (-29)\n\n\t\t\tPREVGAM\t\t# VGAMCALC WITH NEW RTERM\n\n\t\t\t\t\t# VBAR = (V(FPS) - 36KF/S) / 20 F/S\n# GMAX = (4/(1 + 4.8 VBARSQ))(GAM - 6.05 - 2.4 VBARSQ) - 10(L/D - .3) + 10\tASSUME L/D = 0.3, BANK =0.\n\n# GMAXCALC\n\t\tPDDL\tDSU\t\t# GAM TO PDL2\n\t\t\t0\t\t# VGAM IS IN PDL0 (-7)\n\t\t\t36KFT/S\t\t# (-7) M/CS\n\t\tDDV\tDSQ\n\t\t\t20KFT/S\t\t# (-6) M/CS\n\t\tSTORE\t0\t\t# VBARSQ (-2) TO PDL0\n\n\t\tDMP\tDAD\n\t\t\tKR1\n\t\t\t\t\t# GAM, POS DOWN, FROM PDL2\n\t\tDAD\tDMP\n\t\t\t-6.05DEG\n\t\t\tKR2\n\t\tPDDL\t\t\t# XCH PDL+0 FOR VBARSQ (-2)\n\t\tDDV\tDAD\n\t\t\tKR4\n\t\t\tDP2(-4)\n\t\tBDDV\n\t\t\t\t\t# NUM FROM PDL+0\n\t\tDAD\tBPL\n\t\t\tKR3\n\t\t\t+3\n\t\tDLOAD\n\t\t\tHI6ZEROS\n\t\tSTODL\tGMAX\t\t# 100 GMAX (-14)\n# Page 810\n# DISPLAY USES GMAX AS SP, SO LO WORD IS WRITTEN OVER BY VPRED.\n\t\t\tERADM\t\t# = FISCHER RADIUS (-29) M\n\t\tDAD\tCALL\t\t# 2 ND ITERATION FOR FISCHER RADIUS\n\t\t\t400KFT\n\t\t\tCALCTFF\t\t# ESTABLISH TRANSFER ANGLE DATA.\n\t\tCALL\n\t\t\tTFF/TRIG\t# GET SIN, COS DELF\n\t\tCALL\n\t\t\tFISHCALC\t# GET CORRESPONDING FISCHER RADIUS.\n\n\t\tDAD\tLXA,2\t\t# SAVE HI-WORD FOR DOWNLIST.\n\t\t\t400KFT\t\t# M (-29)\n\t\t\tRTGO\t\t# (RANGE ANGLE FROM EMSALT) / 360\n\t\tSTCALL\tRTERM\n\t\t\tPREVGAM\t\t# VGAMCALC WITH NEW RTERM\n\n\t\tDCOMP\tSXA,2\t\t# HI-WORD OF EACH ON DOWNLIST.\n\t\t\tMPAC +1\n\t\tSTODL\tGAMMAEI\t\t# CONIC GAMMA/360 AT 400K FT.\t(HI-WORD)\n\t\t\t\t\t# CONIC RTGO/360 FROM EMSALT   (LOW-WORD)\n\t\t\t\t\t# FOR TM, DP(GAMMAEI) = (GAMMA, RTGO) / 360\n\n\t\t\t\t\t# VGAM FROM PDL+0 (-7)\n\t\tSTADR\n\t\tSTORE\tVPRED\t\t# CONIC VELOCITY AT 400K FT\n\n\t\tRTB\n\t\t\tP61.1\n\t\t\t\t\t# PDL BACK TO ZERO.\n\nLUNENT\t\tDLOAD\tGOTO\n\t\t\t1/RTMUE\t\t# ESTABLISH MU FOR LUNAR TYPE ENTRIES\n\t\t\tCALLCON\n290KFT\t\t2DEC\t88392.0 B-29\n\nKTETA1\t\t2DEC*\t.421844723 E2 B-14* # 110 2PI/16384(163.84)\n\n36KFT/S\t\t2DEC\t109.728 B-7\t# (-7) M/CS = 36 KFT/S (-7)\n\n20KFT/S\t\t2DEC\t121.92 B-7\t# (-6) M/CS = 2 20KFT/S (-7)\n\nKR1\t\t2DEC\t-.026666667\t# = -2.4 4 / 360\n\n-6.05DEG\t2DEC\t-.016805556\t# = -6.05 / 360\n\nKR2\t\t2DEC\t.54931641\t# = (360/4) 100 (-14) = 9000 B-14\n\nKR3\t\t2DEC\t1000 B-14\t# = 100 (10.0) (-14) G,S\n# Page 811\n\t\t\t\t\t# ASSUMES L/D = 0.3, BANK =0.\nRTRIAL\t\t2DEC\t6460097.18 B-29\t# RPAD +264643 FT =21 194 545 FT\n\t\t\t\t\t# RPAD DEFINED AS 20 909 901.57 FT =6 373 336 M\n400KFT\t\t2DEC\t121920 B-29\t# METERS\n\n# 300KFT\t2DEC\t91440 B-29\t# (-29) M\n\n# EMSALT\t2DEC\t86759.2\tB-29\t# 284643 FT (-29) M \t(ORBITAL REENTRY)\n\n# EMSALT\t2DEC\t90657 B-29\t# 297431 FT (-29) M\t(LUNAR REENTRY)\n\nKR4\t\t2DEC\t.833333333\n\n300KFT\t\tEQUALS\tMINPERE\nVEMSCON\t\t2DEC\t-.0389676 B-14\t# = -HS D / 2 PI (-14)\tM SQ / CS SQ\n\n\t\t\t\t\t# = -16369\t.05G\t32.2\t.3048\t.3048/2 PI\t(-14)\n\n# Page 812\n# SUBROUTINE NAME:  FISHCALC\t(USED BY S61.2)\t\tDATE:\t\t01.21.67\n# MOD NO: 0\t\t\t\t\t\tLOG SECTION:\tP61-P67\n# MOD BY: MORTH / BAIRNSFATHER\n# MOD NO: 1\tMOD BY: RR BAIRNSFATHER\t\t\tDATE:\t\t11 MAY 67\tINCLUDE GETERAD CALL\n#\n# FUNCTIONAL DESCRIPTION:  GIVEN THE PRESENT POSITION, UNITR, CALCULATE A NEW UNITR THAT IS ROTATED THROUGH\n#\tTRANSFER ANGLE, THETA, ALONG THE TRAJECTORY.  THEN CALCULATE SIN(LAT) AND USE TO OBTAIN FISCHER RADIUS.\n#\tSINCE FISHCALC USED UNI (LEFT BY ENTRY) EARTH SCALING IS ASSUMED.  (WILL IMPROVE FOR SUITABLE TENNANT)\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tFISHCALC\n#\tENTER WITH .5 SIN(THETA) IN MPAC.\n#\tPUSHLOC IS AT PDL+0, AN ARBITRARY BASE VALUE IF LEQ 8D\n#\n# SUBROUTINES CALLED:  GET ERAD\n#\n# NORMAL EXIT MODE:  RVQ\n#\n# EXIT MODES:\tNONE\n#\n# OUTPUT:\tERADM (-29) M IN MPAC ON RETURNING\n#\t\tNEW UNIT VECTOR NOT SAVED.\n#\t\tSIN(LAT) NOT SAVED.\n#\t\tPUSHLOC AT PDL+0\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\t\tSDELF/2\t\t=SIN(THETA) / 2, IN MPAC\t\tLEFT BY TFF/TRIG\n#\t\tCDELF/2\t\t=COS(THETA) / 2, STORED IN PDL 14D\tLEFT BY TFF/TRIG\n#\t\tRONE\t\t(-29) M\t\t\t\t\tLEFT BY USER\n#\t\tVONE\t\t(-7) M/CS\t\t\t\tLEFT BY USER\n#\t\tURONE\t\tUR/2\t\t\t\t\tLEFT BY USER\n#\t\tUNI\t\t.5 UNIT(V*R)\t\t\t\tLEFT BY ENTRY / P61\n#\t\tUNITW\t\tUNIT NORTH POLE\t\t\t\tLEFT BY PAD LOAD\n#\n# DEBRIS:\tQPRET, PDL+0 ... PDL+5\n\t\t\t\t\t# _      _          _\nFISHCALC\tPDVL\tVXV\t\t# URPR = UR CDELF + UHOR SDELF\n\t \t\tURONE\n\t\t\tUNI\n\t\tVXSC\tVSL1\n\t\t\t\t\t# SIN(THETA) / 2 FROM PDL+0\n\t\tPDVL\tVXSC\t\t# TO PDL+0, +5\n\t\t\tURONE\n\t\t\tCDELF/2\t\t# COS(THETA) / 2\n\t\tVAD\tSTADR\n\t\tSTORE\tURH\t\t# FOR USE IN RTGO FROM EMS DISPLAY\n\t\tDOT\tSL1\n\t\t\tUNITW\t\t# PULL UNIT VECTOR\tUNIT NORTH\n\t\tSTORE\tALPHAV +4\t# = .5 SIN(LAT)\nDUMPFISH\tGOTO\n\t\t\tGETERAD\t\t# SAVES FISCHER RAD (-29) M IN ERADM AND\n\t\t\t\t\t# IN MPAC.  RETURNS TO CALLER VIO QPRET.\n\n# Page 813\n# SUBROUTINE NAME:  VGAMCALC\t(USED BY S61.2)\t\t\t\tDATE:\t\t01.21.67\n# MOD NO: 0\t\t\t\t\t\t\t\tLOG SECTION:\tP61-P67\n# MOD BY: MORTH / BAIRNSFATHER\n# MOD NO: 1\tMOD BY: RR BAIRNSFATHER\t\tDATE: 11 APR 67\n# MOD NO: 2\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 NOV 67\t\tVARIABLE MU ADDED.\n# MOD NO: 3\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 MAR 68\t\tACCEPT DIFFERENT EARTH/MOON SCALE\n#\n# FUNCTIONAL DESCRIPTION:  EARTH CENTERED VIS VIVA CALCULATION OF TERMINAL VELOCITY AND GAMMA (REL TO\n#\tHORIZONTAL) GIVEN THE SCALAR QUANTITIES:  PRESENT RADIUS AND VELOCITY AND THE TERMINAL RADIUS.\n#\tTHE USER MUST APPEND PROPER SIGN TO GAMMA, SINCE IT IS CALCULATED AS A POSITIVE NUMBER.\n#\tTHE EQUATIONS ARE\n#\n#\t\tVGAM = SQRT(VN VN/MU + 2(RN-RTERM)/(RN RTERM) ) RTMU\n#\n#\t\tCOSGAM = H / RTERM VGAM = SQRT (LCP) / (RTERM VGAM/RTMU)\n#\n#\tVGAMCALC ASSUMES THAT THE TERMINAL RADIUS IS LESS THAN THE PRESENT RADIUS.  BOTH CALCTFF AND CALCTPER\n#\tMAKE THIS ASSUMPTION.\n#\n# CALLING SEQUENCE:\tCALL\t\t\tSTCALL\tRTERM\n#\t\t\t\tVGAMCALC\t\tPREVGAM\n#\tPUSHLOC AT PDL+0, ARBITRARY IF LEQ 12D\n#\tC(MPAC) UNSPECIFIED\t\t\tC(MPAC)=NEW RTERM\n#\n# SUBROUTINES CALLED:  NONE\n#\n# NORMAL EXIT MODE:  RVQ\n#\n# ALARMS:\tNONE\n#\n# OUTPUT:\tGAMMA / 360 IN MPAC, POSITIVE NUMBER\n#\t\tVGAM \tE: (-7)\t  M: (-5)\tM/CS IN PDL+0\n#\t\tPUSHLOC AT PDL+2\n#\n# ERASABLE INITIALIZATION REQD:\n#\tTFF/RTMU  E: (17)   M: (14)\t1/SQRT(MU)\t\t\t\tLEFT BY TFFCONIC\n#\tRMAG1\t  E: (-29)  M: (-27)\tM  PRESENT RADIUS LENGTH\t\tLEFT BY TFFCONIC\n#\tNRMAG\t  E: (-29+NR)\t\tM  NORM LENGTH OF PRESENT POSITION\tLEFT BY TFFCONIC\n#\t\t  M: (-27+NR)\n#\tRTERM\t  E: (-29)  M: (-27)\tM  TERMINAL RADIUS LENGTH\t\tLEFT BY CALCTFF\n#\tNRTERM    E: (-29+NR) \t\tM  NORM LENGTH OF TERMINAL RADIUS\tLEFT BY CALCTFF\n#\t\t  M: (-27+NR)\n#\tTFFVSQ    E: (20)   M: (18)   1/M  -(V SQ/MU): PRESENT VELOCITY, NORM\tLEFT BY TFFCONIC\n#\tTFFNP\t  E: (-38+2NR)\t\tM  LCP, SEMI-LATUS RECTUM, WEIGHT NR\tLEFT BY TFFCONIC\n#\t  \t  M: (-36+2NR)\n#\n# DEBRIS:\tQPRET, PDL+0 ... PDL+3\n#\t\tRTERM, NRTERM IF PREVGAM ENTERED.\n# Page 814\n\nPREVGAM\t\tSL*\t\t\t# ENTER WITH NEW RTERM IN MPAC\n\t\t\t\t\t# E: (-29)  M: (-27)\n\t\t\t0,1\t\t# X1 = -NR\n\t\tSTORE\tNRTERM\t\t# RTERM M\t\tE: (-29+NR)\tM: (-27+NR)\n\nVGAMCALC\tDLOAD\tDMP\n\t\t\tNRMAG\t\t# RMAG M\t\tE: (-29+NR)\tM: (-27+NR)\n\t\t\tNRTERM\t\t# RTERM M\t\tE: (-29+NR)\tM: (-27+NR)\n\t\tPDDL\tDSU\t\t# RMAG RTERM M\t\tE: (-58+2NR)\tM: (-54+2NR)\n\t\t\tNRMAG\t\t# RMAG M\t\tE: (-29+NR)\tM: (-27+NR)\n\t\t\tNRTERM\t\t# RTERM M\t\tE: (-29+NR)\tM: (-27+NR)\n\t\tSL*\tDDV\t\t# 2(RN-RTERM)\t\tE: (-30+NR)\tM: (-28+NR)\n\t\t\t0 -8D,1\t\t# (-8+NR)\n\t\t\t\t\t# PUSH UP PRODUCT.\n\t\tDSU\n\t\t\tTFFVSQ\t\t# -(V SQ/MU)\t\tE: (20)\t\tM: (18)\n\t\tSQRT\tPUSH\t\t# SAVE VGAM/RT(MU) FOR NOW.\tE: (10)\tM: (9)\n\t\tDDV\tPDDL\t\t# XCH PDL+0, LEAVING VGAM FOR OUTPUT.\n\t\t\t\t\t# VGAM TO PDL M/CS\tE: (-7)\t\tM: (-2)\n\t\t\tTFF/RTMU\t# \t\t\tE: (17)\t\tM: (14)\n\t\tDMP\tPDDL\t\t# RTERM VGAM/RTMU\tE: (-19+NR)\tM: (-18+NR)\n\t\t\tNRTERM\t\t# RTERM M\t\tE: (-29+NR)\tM: (-27+NR)\n\t\t\tTFFNP\t\t# LC P =H.H/MU M\tE: (-38+2NR)\tM: (-36+2NR)\n\t\tSQRT\tDDV\t\t#\t\t\tE: (-19+NR)\tM: (-18+NR)\n\t\t\t\t\t# PUSH UP DEN\t\tE: (-19+NR)\tM: (-18+NR)\n\t\t\t\t\t# USE DDV OVFL AS LIMITER (|COS| <1.0)\n\t\tSR1\tACOS\nDUMPVGAM\tRVQ\n\t\t\t\t\t# CALLER MUST SUPPLY OWN SIGN ...\n\t\t\t\t\t#\t\t\t22W\t27MS\n\n# Page 815\n# SUBROUTINE NAME:\tTFF/TRIG\t(USED BY S61.2)\t\tDATE:\t\t01.17.67\n# MOD NO: 0\t\t\t\t\t\t\tLOG SECTION:\tP61-P67\n# MOD BY: RR BAIRNSFATHER\n# MOD NO: 1\tMOD BY: RR BAIRNSFATHER\t\tDATE: 14 APR 67\n# MOD NO: 2\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 MAR 68\t\tACCEPT DIFFERENT EARTH/MOON SCALE\n#\n# FUNCTIONAL DESCRIPTION:  USED BY ENTRY DISPLAY TO CALCULATE SIN(THETA), COS(THETA) FROM DATA LEFT IN\n#\tPDL BY TFF SUBROUTINES.  THE EQNS ARE\n#\n#\t\tCOS(THETA) = 1-2 ABS(ARG) / (RN RTERM (1+X) )\n#\t\t\t\t\t\t2\n#\t\tSIN(THETA) = SGN(ARG) SQRT(1-COS (THETA) )\n#\n# \tWHERE THETA = TRANSFER ANGLE\n#\tAND     ARG = P Z ABS(Z)\t\t\tIF ALFA ZZ LEQ 1\n#\t        ARG = (P / ALFA) SGN(Q1 + R 1/Z)        IF ALFA Z Z G 1\n#\tAND  ARG  HAS BEEN AFFIXED WITH THE SIGN OF SIN(THETA)\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tTFF/TRIG\n#\t\tPUSHLOC AT PDL+0, ARBITRARY IF NOT EQ 14D\n#\t\tC(MPAC) UNSPECIFIED\n#\n# SUBROUTINES CALLED:  NONE\n#\n# NORMAL EXIT MODES:  RVQ\n#\n# ALARMS:\tNONE\n#\n# OUTPUT:\tC(MPAC) = .5 SIN(THETA)\n#\t\tCDELF/2 = .5 COS(THETA)\t\t(IN PDL 14D)\n#\t\tPUSHLOC AT PDL+0\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\t\tTFFX\t\t\tX\t\t\t\t\tLEFT BY CALCTFF OR CALCTPER\n#\t\tTFFTEM  E: (-59+2NR)\tARG\t\t\t\t\tLEFT BY CALCTFF OR CALCTPER\n#\t\t\tM: (-55+2NR)\tWHERE ARG = LCF ZZ SGN(DELF) OR ARG = LCP/ALFA SGN(DELF)\n#\t\tNRTERM\tE: (-29+NR)\tM  NORM LENGTH OF TERMINAL RADIUS\tLEFT BY CALCTFF OR CALCTPER\n#\t\t\tM: (-27+NR)\n#\t\tNRMAG\tE: (-29+NR)\tM  NORM LENGTH OF PRESENT POSITION\tLEFT BY TFFCONIC\n#\t\t\tM: (-27+NR)\n#\n# DEBRIS:\tQPRET, CDELF/2\n\n\t\tBANK\t27\n\t\tSETLOC\tP60S5\n\t\tBANK\nTFF/TRIG\tDLOAD\tSR1\n\t\t\tTFFX\n\t\tDAD\tDMP\n\t\t\tHIDPHALF\n\t\t\tNRMAG\t\t# RMAG M\t\tE: (-29+NR)\tM: (-27+NR)\n\t\tDMP\tBDDV\n\t\t\tNRTERM\t\t# RTERM M\t\tE: (-29+NR)\tM: (-27+NR)\n\t\t\tTFFTEM\t\t# P ZSQ OR P/ALFA\tE: (-59+2NR)\tM: (-55+2NR)\n\t\tABS\tBDSU\t\t# THE SIGN IS FOR SDELF.\n\t\t\tHIDPHALF\n\t\tSTORE\tCDELF/2\t\t# .5 COS(THETA)\n\t\tDSQ\tDCOMP\t\t# KEEP HONEST FOR SQRT.\n# Page 816\n\t\tDAD\tSQRT\n\t\t\tHIDP1/4\nDUMPTRIG\tSIGN\tRVQ\n\t\t\tTFFTEM\t\t# AFFIX SIGN(DELE/2)\n\t\t\t\t\t# RETURN WITH .5 SIN(THETA) IN MPAC\n\n\t\t\t\t\t#\t\t\t16W\t15MS\n\nDISPTARG\tSTQ\t\t\t# C(MPAC = TRGO ESTIMATE\n\t\t\t60GENRET\n\t\tDMP\tDSU\n\t\t\tKTETA1\n\t\t\tTTE1\n\t\tSTCALL\tDTEAROT\n\t\t\tEARROT2\n\t\tCALL\n\t\t\tVRCALC\n\t\tGOTO\n\t\t\t60GENRET\nVRCALC\t\tVLOAD\tDOT\n\t\t\tURH\n\t\t\tRT\n\t\tSL2\tACOS\n\t\tRVQ\n\n# END OF PROGRAM S61.2\n\n# Page 817\n# PROGRAM DESCRIPTION S62.3\tDATE 10JAN67\n# MOD NO 1:\t\t\tLOG SECTION P60-P67\n# MOD BY ZELDIN\n# MOD NO: 2\tMOD BY: RR BAIRNSFATHER\t\tDATE: 15 MAY 67\t\tCHANGED TO REF COORDS.\n# MOD NO: 3\tMOD BY: RR BAIRNSFATHER\t\tDATE: 17 JAN 68\t\tALFAPAD CHANGES MADE.\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tCOMPUTE DESIRED GIMBAL ANGLES FOR ENTRY ATTITUDE\n#\tTHE FOLLOWING TRAJECTORY TRIAD IS AVAILABLE IN MEMORY AND IS COMPUTED EACH 2 SECONDS BY CM/POSE IN\n#\tREFERENCE COORDINATES (V = VELOCITY RELATIVE TO EARTH):\n#\n#\t\tUXA = -UNIT(V)\n#\t\tUYA =  UNIT(V*R)\n#\t\tUZA =  UXA*UYA\n#\n# \tGENERATE A DESIRED BODY TRIAD FOR TRIMMED FLIGHT WITH RESPECT TO THE RELATIVE VELOCITY VECTOR, USING\n#\tROLL COMMAND AND TRIM ANGLE OF ATTACK:\n#\n#\t\tUXD = UNIT(UYD*UXA) SIN(ALFATRIM) + UXA COS(ALFATRIM)\n#\t\tUYD = UYA COS(ROLLC) + UZA SIN(ROLLC)\n#\t\tUZD = UXD * UYD\n#\n#\tUSE THE DESIRED SET (IN REFERENCE COORDS) AND REFSMMAT TO CALL  CALCGA  AND OBTAIN GIMBAL ANGLES\n#\tIN 2S, C IN MPAC, +2 AND THETAD, +2.\n#\n# CALLING SEQUENCE\n#\n#\tL\tCALL\n#\tL+1\t\tS62.3\n#\n# NORMAL EXIT MODE\n#\n#\tRETURN VIA QPRET DIRECTLY FROM CALCGA.\n#\n# SUBROUTINES CALLED\n#\n#\tCALCGA\n#\n# ALARM OR ABORT MODES\n#\n#\tNONE\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tROLLC\tROLL COMMAND\t\tDP 1'S COMP AT 1REV\n#\tALFAPAD\tSP 1'S C / 180\t\tLEFT BY PAD LOAD\tALFATRIM IS NEGATIVE.\n#\tUXA/2\tREF COORDS\t\tLEFT BY CM/POSE\n#\tUYA/2\tREF COORDS\t\tLEFT BY CM/POSE\n#\tUZA/2\tREF COORDS\t\tLEFT BY CM/POSE\n#\n# OUTPUT\n#\n#\tCPHI\tGIMBAL ANGLES (O,I,M) 2'S COMP TP (O,I,M)/180\n#\n# DEBRIS\n#\n#\tQTEMP, QPRET, PUSHLIST\n\n\t\tBANK\t10\n\t\tSETLOC\tP60S4\n\t\tBANK\n# Page 818\n\t\tCOUNT*\t$$/S62.3\n\nS62.3\t\tSETPD\tSLOAD\n\t\t\t0\n\t\t\tALFAPAD\t\t# ALFATRIM / 180, ALFA IS NEG.\n\t\tSR1\tPUSH\n\t\tCOS\tPDDL\t\t# XCH PDL, COS TO PDL0\n\t\tSIN\tPDDL\t\t# SIN TO PDL2\n\t\t\tROLLC\n\t\tCOS\tVXSC\n\t\t\tUYA/2\t\t#\t\t\t\tREF COORDS\n\t\tPDDL\tSIN\t\t# PUSH VECTOR INTO PDL4...9\n\t\t\tROLLC\n\t\tVXSC\tVAD\n\t\t\tUZA/2\t\t#\t\t\t\tREF COORDS\n\t\t\t\t\t# VECTOR FROM PDL4...9\n\t\tVSL1\n\t\tSTORE\tYNB\t\t# = UYD\t\t\t\tREF COORDS\n\n\t\tVXV\tVSL1\n\t\t\tUXA/2\t\t#\t\t\t\tREF COORDS\n\t\tVXSC\tPDDL\n\t\t\t\t\t# SIN TRIM FROM PDL2\n\t\t\t\t\t# XCH PDL0 FOR COS TRIM\n\t\tVXSC\tVAD\n\t\t\tUXA/2\t\t#\t\t\t\tREF COORDS\n\t\t\t\t\t# FROM PDL0\n\t\tVSL1\n\t\tSTORE\tXNB\t\t# X SC AXIS (.5 UNIT)\t\tREF COORDS\n\n\t\tVXV\tVSL1\n\t\t\tYNB\n\t\tSTOVL\tZNB\t\t# Z SC IN REF COOR. SCALED AT 2\n\t\t\tREFSMMAT\n\t\tSTOVL\tXSM\n\t\t\tREFSMMAT +6\n\t\tSTOVL\tYSM\n\t\t\tREFSMMAT +12D\n\t\tSTORE\tZSM\n\n\t\tCLEAR\tGOTO\n\t\t\tCPHIFLAG\t# CAUSE CALCGA TO STORE ANS IN TP CPHI\n\t\t\tCALCGA\n\t\t\t\t\t# CALCGA WILL RETURN TO ORIGINAL CALLER\n\t\t\t\t\t# VIA QPRET WITH 2'S COMP. ANGLES IN CPHI\n\n\n\n"
  },
  {
    "path": "Comanche055/P76.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     P76.agc\n# Purpose:      Part of the source code for Colossus 2A, AKA Comanche 055.\n#               It is part of the source code for the Command Module's (CM)\n#               Apollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:    yaYUL\n# Contact:      Hartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:      www.ibiblio.org/apollo.\n# Pages:\tpp  511-513\n# Mod history:  2009-05-08 HG    Adapting from the Luminary131/ file\n#               of the same name, using Comanche055 page\n#               images 0511.jpg - 0513.jpg.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 511\n# 1)\tPROGRAM NAME - TARGET DELTA V PROGRAM (P76).\n# 2)\tFUNCTIONAL DESCRIPTION - UPON ENTRY BY ASTRONAUT ACTION, P76 FLASHES DSKY REQUESTS TO THE ASTRONAUT\n#\tTO PROVIDE VIA DSKY (1) THE DELTA V TO BE APPLIED TO THE OTHER VEHICLE STATE VECTOR AND (2) THE\n#\tTIME (TIG) AT WHICH THE OTHER VEHICLE VELOCITY WAS CHANGED BY EXECUTION OF A THRUSTING MANEUVER. THE\n#\tOTHER VEHICLE STATE VECTOR IS INTEGRATED TO TIG AND UPDATED BY THE ADDITION OF DELTA V (DELTA V HAVING\n#\tBEEN TRANSFORMED FROM LV TO REF COSYS).  USING INTEGRVS, THE PROGRAM THEN INTEGRATES THE OTHER\n#\tVEHICLE STATE VECTOR TO THE STATE VECTOR OF THIS VEHICLE, THUS INSURING THAT THE W-MATRIX AND BOTH VEHICLE\n#\tSTATES CORRESPOND TO THE SAME TIME.\n# 3)\tERASABLE INITIALIZATION REQUIRED - NONE.\n# 4)\tCALLING SEQUENCES AND EXIT MODES - CALLED BY ASTRONAUT REQUEST THRU DSKY V 37 E 76 E.\n#\tEXITS BY TCF ENDOFJOB.\n# 5)\tOUTPUT - OTHER VEHICLE STATE VECTOR INTEGRATED TO TIG AND INCREMENTED BY DELTA V IN REF COSYS.\n#\tTHE PUSHLIST CONTAINS THE MATRIX BY WHICH THE INPUT DELTA V MUST BE POST-MULTIPLIED TO CONVERT FROM LV\n#\tTO REF COSYS.\n# 6)\tDEBRIS - OTHER VEHICLE STATE VECTOR.\n# 7)\tSUBROUTINES CALLED - BANKCALL,GOXDSPF,CSMPREC (OR LEMPREC),ATOPCSM (OR ATOPLEM),INTSTALL,INTWAKE, PHASCHNG\n#\tINTPRET, INTEGRVS, AND MINIRECT.\n# 8)\tFLAG USE - MOONFLAG,CMOONFLG,INTYPFLG,RASFLAG, AND MARKCTR.\n\n\t\tBANK\t30\n\t\tSETLOC\tP76LOC\n\t\tBANK\n\n\t\tCOUNT*\t$$/P76\n\n\t\tEBANK=\tTIG\n\nP76\t\tTC\tUPFLAG\n\t\tADRES\tTRACKFLG\n\n\t\tCAF\tV06N84          # FLASH LAST DELTA V.\n\t\tTC      BANKCALL        # AND WAIT FOR KEYBOARD ACTION.\n\t        CADR    GOFLASH\n\t\tTCF     ENDP76\n\t\tTC\t+2\t\t# PROCEED\n\t\tTC\t-5\t\t# STORE DATA AND REPEAT FLASHING\n\t\tCAF\tV06N84 +1\t# FLASH VERB 06 NOUN 33, DISPLAY LAST TIG,\n\t\tTC\tBANKCALL\t# AND WAIT FOR KEYBOARD ACTION.\n\t\tCADR\tGOFLASH\n\t\tTCF\tENDP76\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tTC\tINTPRET\t\t# RETURN TO INTERPRETIVE CODE\n\t\tDLOAD\t                # SET D(MPAC)=TIG IN CSEC B28\n\t\t\tTIG\n\t\tSTCALL\tTDEC1\t\t# SET TDEC1=TIG FOR ORBITAL INTEGRATION\n\t\t\tOTHPREC\nCOMPMAT\t\tVLOAD\tUNIT\n\t\t\tRATT\n# Page 512\n\t\tVCOMP\t\t\t# U(-R)\n\t\tSTORE\t24D\t\t# U(-R) TO 24D\n\t\tVXV\tUNIT\t\t# U(-R) X V = U(V X R)\n\t\t\tVATT\n\t\tSTORE\t18D\n\t\tVXV\tUNIT\t\t# U(V X R) X U(-R) = U((R X V) X R)\n\t\t\t24D\n\t\tSTOVL\t12D\n\t\t\tDELVOV\n\t\tVXM\tVSL1\t\t# V(MPAC)=DELTA V IN REFCOSYS\n\t\t\t12D\n\t\tVAD\n\t\t\tVATT\n\t\tSTORE\t6\t\t# V(PD6)=VATT + DELTA V\n\t\tCALL\t\t\t# PREVENT WOULD-BE USER OF ORBITAL\n\t\t\tINTSTALL\t# INTEG FROM INTERFERING WITH UPDATING\n\t\tCALL\n\t\t\tP76SUB1\n\t\tVLOAD\tVSR*\n\t\t\t6\n\t\t\t0,2\n\t\tSTOVL\tVCV\n\t\t\tRATT\n\t\tVSR*\n\t\t\t0,2\n\t\tSTODL\tRCV\n\t\t\tTIG\n\t\tSTORE\tTET\n\t\tCLEAR\tDLOAD\n\t\t\tINTYPFLG\n\t\t\tTETTHIS\nINTOTHIS\tSTCALL\tTDEC1\n\t\t\tINTEGRVS\n\t\tCALL\n\t\t\tINTSTALL\n\t\tCALL\n\t\t        P76SUB1         # SET/CLEAR MOONFLAG\n\t\tVLOAD\n\t\t\tRATT1\n\t\tSTORE\tRRECT\n\t\tSTODL\tRCV\n\t\t\tTAT\n\t\tSTOVL\tTET\n\t\t\tVATT1\n\t\tCALL\n\t\t\tMINIRECT\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n# Page 513\n\t\tTC\tUPFLAG\n\t\tADRES\tREINTFLG\n\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tATOPOTH\n\t\tSSP     EXIT\n\t\t        QPRET\n\t\t        OUT\n\t\tTC      BANKCALL        # PERMIT USE OF ORBITAL INTEGRATION\n\t\tCADR    INTWAKE1\nOUT\t\tEXIT\nENDP76\t\tCAF\tZERO\n\t\tTS\tMARKCTR\t\t# CLEAR RR TRACKING MARK COUNTER\n\t\tTS      VHFCNT\n\n\t\tCAF     NEGONE\n\t\tTS      MRKBUF2         # INVALIDATE MARK BUFFER\n\n\t\tTCF\tGOTOPOOH\n\nV06N84\t\tNV\t0684\n\t\tNV\t0633\nP76SUB1\t\tCLEAR   SLOAD\n\t\t\tMOONFLAG\n                        X2\n                BHIZ    SET             # X2=0...CLEAR MOONFLAG\n                        +2              #   =2.....SET MOONFLAG\n                        MOONFLAG\n                RVQ\n\n"
  },
  {
    "path": "Comanche055/PHASE_TABLE_MAINTENANCE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPHASE_TABLE_MAINTENANCE.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1404-1413\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Colossus249/ file of the same\n#\t\t\t\tname, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 1404\n# SUBROUTINE TO UPDATE THE PROGRAM NUMBER DISPLAY ON THE DSKY.\n\n\t\tCOUNT\t02/PHASE\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG1\n\t\tBANK\n\nNEWMODEX\tINDEX\tQ\t\t# UPDATE MODREG.  ENTRY FOR MODE IN FIXED.\n\t\tCAF\t0\n\t\tINCR\tQ\n\nNEWMODEA\tTS\tMODREG\t\t# ENTRY FOR MODE IN A.\nMMDSPLAY\tCAF\t+3\t\t# DISPLAY MAJOR MODE.\nPREBJUMP\tLXCH\tBBANK\t\t# PUTS BBANK IN L\n\t\tTCF\tBANKJUMP\t# PUTS Q INTO A\n\t\tCADR\tSETUPDSP\n\n# RETURN TO CALLER +3 IF MODE = THAT AT CALLER +1.  OTHERWISE RETURN TO CALLER +2.\n\nCHECKMM\t\tINDEX\tQ\n\t\tCS\t0\n\t\tAD\tMODREG\n\t\tEXTEND\n\t\tBZF\tQ+2\n\t\tTCF\tQ+1\t\t# NO MATCH\n\nTCQ\t\t=\tQ+2 +1\n\n\t\tBANK\t14\n\t\tSETLOC\tPHASETAB\n\t\tBANK\n\n\t\tCOUNT\t10/PHASE\n\nSETUPDSP\tINHINT\n\t\tDXCH\tRUPTREG1\t# SAVE CALLER-S RETURN 2CADR\n\t\tCAF\tPRIO30\t\t# \tEITHER A TASK OR JOB CAN COME TO\n\t\tTC\tNOVAC\t\t#\tNEWMODEX\n\t\tEBANK=\tMODREG\n\t\t2CADR\tDSPMMJOB\n\n\t\tDXCH\tRUPTREG1\n\t\tRELINT\n\t\tDXCH\tZ\t\t# RETURN\n\nDSPMMJOB\tEQUALS\tDSPMMJB\n\n\t\tBLOCK\t02\n# Page 1405\n\t\tSETLOC\tFFTAG1\n\t\tBANK\n\n# Page 1406\n# PHASCHNG IS THE MAIN WAY OF MAKING PHASE CHANGES FOR RESTARTS.  THERE ARE THREE FORMS OF PHASCHNG, KNOWN AS TYPE\n# A, TYPE B, AND TYPE C.  THEY ARE ALL CALLED AS FOLLOWS, WHERE OCT XXXXX CONTAINS THE PHASE INFORMATION,\n#\n#\t\tTC\tPHASCHNG\n#\t\tOCT\tXXXXX\n#\n# TYPE A IS CONCERNED WITH FIXED PHASE CHANGES, THAT IS, PHASE INFORMATION THAT IS STORED PERMANENTLY.  THESE\n# OPTIONS ARE, WHERE G STANDS FOR A GROUP AND .X FOR THE PHASE,\n#\n#\tG.0\t\tINACTIVE, WILL NOT PERMIT A GROUP G RESTART\n#\tG.1\t\tWILL CAUSE THE LAST DISPLAY TO BE REACTIVATED, USED MAINLY IN MANNED FLIGHTS\n#\tG.EVEN\t\tA DOUBLE TABLE RESTART, CAN CAUSE ANY COMBINATION OF TWO JOBS, TASKS, AND/OR\n#\t\t\tLONGCALL TO BE RESTARTED.\n#\tG.ODD NOT .1\tA SINGLE TABLE RESTART, CAN CAUSE EITHER A JOB, TASK, OR LONGCALL RESTART.\n#\n# THIS INFORMATION IS PUT INTO THE OCTAL WORD AFTER TC PHASCHNG AS FOLLOWS\n#\n#\tTL0 00P PPP PPP GGG\n#\n# WHERE EACH LETTER OR NUMBER STANDS FOR A BIT.  THE G:S STAND FOR THE GROUP, OCTAL 1-7, THE P:S FOR THE PHASE,\n# OCTAL 0 - 127.  0:S MUST BE 0.  IF ONE WISHES TO HAVE THE TBASE OF GROUP G TO BE SET AT THIS TIME,\n# T IS SET TO 1, OTHERWISE IT IS SET TO 0.  SIMILARLY IF ONE WISHES TO SET LONGBASE, THEN L IS SET TO 1, OTHERWISE\n# IT IS SET TO 0.  SOME EXAMPLES,\n#\n#\t\tTC\tPHASCHNG\t# THIS WILL CAUSE GROUP 3 TO BE SET TO 0,\n#\t\tOCT\t00003\t\t# MAKING GROUP 3 INACTIVE\n#\n#\t\tTC\tPHASCHNG\t# IF A RESTART OCCURS THIS WOULD CAUSE\n#\t\tOCT\t00012\t\t# GROUP 2 TO RESTART THE LAST DISPLAY\n#\n#\t\tTC\tPHASCHNG\t# THIS SETS THE TBASE OF GROUP 4 AND IN\n#\t\tOCT\t40064\t\t# CASE OF A RESTART WOULD START UP THE TWO\n#\t\t\t\t\t# THINGS LOCATED IN THE DOUBLE 4.6 RESTART\n#\t\t\t\t\t# LOCATION.\n#\t\tTC\tPHASCHNG\t# THIS SETS LONGBASE AND UPON A RESTART\n#\t\tOCT\t20135\t\t# CAUSES 5.13 TO BE RESTARTED (SINCE\n#\t\t\t\t\t# LONGBASE WAS SET THIS SINGLE ENTRY\n#\t\t\t\t\t# SHOULD BE A LONGCALL)\n#\t\tTC\tPHASCHNG\t# SINCE BOTH TBASE4 AND LONGBASE ARE SET,\n#\t\tOCT\t60124\t\t# 4.12 SHOULD CONTAIN BOTH A TASK AND A\n#\t\t\t\t\t# LONGCALL TO BE RESTARTED\n#\n# TYPE C PHASCHNG CONTAINS THE VARIABLE TYPE OF PHASCHNG INFORMATION.  INSTEAD OF THE INFORMATION BEING IN A\n# PERMANENT FORM, ONE STORES THE DESIRED RESTART INFORMATION IN A VARIABKE LOCATION.  THE BITS ARE AS FOLLOWS,\n#\n#\tTL0 1AD XXX CJW GGG\n#\n# WHERE EACH LETTER OR NUMBER STANDS FOR A BIT.  THE G:S STAND FOR THE GROUP, OCTAL 1 - 7.  IF THE RESTART IS TO\n# BE BY WAITLIST, W IS SET TO 1, IF IT IS A JOB, J IS SET TO 1, IF IT IS A LONGCALL, C IS SET TO 1.  ONLY ONE OF\n# THESE THREE BITS MAY BE SET.  X:S ARE IGNORED  1 MUST BE 1, AND 0 MUST BE 0.  AGAIN T STANDS FOR THE TBASE,\n# Page 1407\n# AND L FOR LONGBASE.  THE BITS A AND D ARE CONCERNED WITH THE VARIABLE INFORMATION.  IF D IS SET TO 1, A PRIORITY\n# OR DELTA TIME WILL BE READ FROM THE NEXT LOCATION AFTER THE OCTAL INFORMATION, IF THIS IS TO BE INDIRECT, THAT\n# IS, THE NAME OF A LOCATION COMT+INING THE INFORMATION (DELTA TIME ONLY), THEN THIS IS GIVEN AS THE -GENADR OF\n# THAT LOCATION WHICH CONTAINS THE DELTA TIME.  IF THE OLD PRIORITY OR DELTA TIME IS TO BE USED, THAT WHICH IS\n# ALREADY IN THE VARIABLE STORAGE, THEN D IS SET TO 0.  NEXT THE A BIT IS USED.  IF IT IS SET TO 0, THE ADDRESS\n# THAT WOULD BE RESTARTED DURING A RESTART IS THE NEXT LOCATION AFTER THE PHASE INFORMATION, THAT IS, EITHER\n# (TC PHASCHNG) +2 OR +3, DEPENDING ON WHETHER D HAD BEEN SET OR NOT.  IF A IS SET TO 1, THEN THE ADDRESS THAT\n# WOULD BE RESTARTED IS THE 2CADR THAT IS READ FROM THE NEXT TWO LOCATIONS.  EXAMPLES,\n#\n#\tAD\tTC\tPHASCHNG\t# THIS WOULD CAUSE LOCATION AD +3 TO BE\n#\tAD+1\tOCT\t05023\t\t# RESTARTED BY GROUP THREE WITHA PRIORITY\n#\tAD+2\tOCT\t23000\t\t# OF 23.  NOTE UPON RETURNING IT WOULD\n#\tAD+3\t\t\t\t# ALSO GO TO AD+3\n#\n#\tAD\tTC\tPHASCHNG\t# GROUP 1 WOULD CAUSE CALLCALL TO BE\n#\tAD+1\tOCT\t27441\t\t# BE STARTED AS A LONGCALL FROM THE TIME\n#\tAD+2\t-GENADR\tDELTIME\t\t# STORED IN LONGBASE (LONGBASE WAS SET) BY\n#\tAD+3\t2CADR\tCALLCALL\t# A DELTATIME STORED IN DELTIME.  THE\n#\tAD+4\t\t\t\t# BBCON OF THE 2CADR SHOULD CONTAIN THE E\n#\tAD+5\t\t\t\t# BANK OF DELTIME.  PHASCHNG RETURNS TO\n#\t\t\t\t\t# LOCATION AD+5\n#\n# NOTE THAT IF A VARIABLE PRIORITY IS GIVEN FOR A JOB, THE JOB WILL BE RESTARTED AS A NOVAC IF THE PRIORITY IS\n# NEGATIVE, AS A FINDVAC IF THE PRIORITY IS POSITIVE.\n#\n# TYPE B PHASCHNG IS A COMBINATION OF VARIABLE AND FIXED PHASE CHANGES.  IT WILL START UP A JOB AS INDICATED\n# BELOW AND ALSO START UP ONE FIXED RESTART, THAT IS EITHER AN G.1 OR A G.ODD OR THE FIRST ENTRY OF G.EVEN\n# DOUBLE ENTRY.  THE BIT INFORMATION IS AS FOLLOWS,\n#\n#\tTL1 DAP PPP PPP GGG\n#\n# WHERE EACH LETTER OR NUMBER STANDS FOR A BIT.  THE G:S STAND FOR THE GROUP, OCTAL 1 - 7. THE P:S FOR THE FIXED\n# PHASE INFORMATION, OCTAL 0 - 127.  1 MUST BE 1.  AND AGAIN T STANDS FOR THE TBASE AND L FOR LONGBASE.  D THIS\n# TIME STANDS ONLY FOR PRIORITY SINCE THIS WILL BE CONSIDERED A JOB, AND IT MUST BE GIVEN DIRECTLY IF GIVEN.\n# AGAIN A STANDS FOR THE ADDRESS OF THE LOCATION TO BE RESTARTED, 1 IF THE 2CADR IS GIVEN, OR 0 IF IT IS TO BE\n# THE NEXT LOCATION.(THE RETURN LOCATION OF PHASCHNG) EXAMPLES,\n#\tAD\tTC\tPHASCHNG\t# TBASE IS SET AND A RESTART CAUSE GROUP 3\n#\tAD+1\tOCT\t56043\t\t# TO START THE JOB AJOBAJOB WITH PRIORITY\n#\tAD+2\tOCT\t31000\t\t# 31 AND THE FIRST ENTRY OF 3.4SPOT (WE CAN\n#\tAD+3\t2CADR\tAJOBAJOB\t# ASSUME IT IS A TASK SINCE WE SET TBASE3)\n#\tAD+4\t\t\t\t# UPON RETURN FROM PHASCHNG CONTROL WOULD\n#\tAD+5\t\t\t\t# GO TO AD+5\n#\n#\tAD\tTC\tPHASCHNG\t# UPON A RESTART THE LAST DISPLAY WOULD BE\n#\tAD+1\tOCT\t10015\t\t# RESTARTED AND A JOB WITH THE PREVIOUSLY\n#\tAD+2\t\t\t\t# STORED PRIORITY WOULD BE BEGUN AT AD+2\n#\t\t\t\t\t# BY MEANS OF GROUP 5\n# Page 1408\n# THE NOVAC-FINDVAC CHOICE FOR JOBS HOLDS HERE ALSO - NEGATIVE PRIORITY CAUSES A NOVAC CALL, POSITIVE A FINDVAC.\n\n\n# SUMMARY OF BITS:\n#\tTYPE A\t\tTL0 00P PPP PPP GGG\n#\tTYPE B\t\tTL1 DAP PPP PPP GGG\n#\tTYPE C\t\tTL0 1AD XXX CJW GGG\n\n# Page 1409\n# 2PHSCHNG IS USED WHEN ONE WISHES TO START UP A GROUP OR CHANGE A GROUP WHILE UNDER THE CONTROL OF A DIFFERENT\n# GROUP.  FOR EXAMPLE, CHANGE THE PHASE OF GROUP 3 WHILE THE PORTION OF THE PROGRAM IS UNDER GROUP 5.  ALL 2PHSCHNG\n# CALLS ARE MADE IN THE FOLLOWING MANNER,\n\n#\t\tTC\t2PHSCHNG\n#\t\tOCT\tXXXXX\n#\t\tOCT\tYYYYY\n\n# WHERE OCT XXXXX MUST BE OF TYPE A AND OCT YYYYY MAY BE OF EITHER TYPE A OR TYPE B OR TYPEC.  THERE IS ONE\n# DIFFERENCE --- NOTE- IF LONGBASE IS TO BE SET THIS INFORMATION IS GIVEN IN THE OCT YYYYY INFORMATION, IT WILL\n# BE DISREGARDED IF GIVEN WITH THE OCT XXXXX INFORMATION.  A COUPLE OF EXAMPLES MAY HELP.\n\n#\tAD\tTC\t2PHACHNG\t# SET TBASE3 AND IF A RESTART OCCURS START\n#\tAD+1\tOCT\t40083\t\t# THE TWO ENTRIES IN 3.8 TABLE LOCATION\n#\tAD+2\tOCT\t05025\t\t# THIS IS OF TYPE C. SET THE JOB TO BE\n#\tAD+3\tOCT\t18000\t\t# TO BE LOCATION AD+4, WITH A PRIORITY 18,\n#\tAD+4\t\t\t\t# FOR GROUP 5 PHASE INFORMATION.\n\n\t\tCOUNT\t02/PHASE\n\n2PHSCHNG\tINHINT\t\t\t# THE ENTRY FOR A DOUBLE PHASE CHANGE\n\t\tNDX\tQ\n\t\tCA\t0\n\t\tINCR\tQ\n\t\tTS\tTEMPP2\n\n\t\tMASK\tOCT7\n\t\tDOUBLE\n\t\tTS\tTEMPG2\n\n\t\tCA\tTEMPP2\n\t\tMASK\tOCT17770\t# NEED ONLY 1770, BUT WHY GET A NEW CONST.\n\t\tEXTEND\n\t\tMP\tBIT12\n\t\tXCH\tTEMPP2\n\n\t\tMASK\tBIT15\n\t\tTS\tTEMPSW2\t\t# INDICATES WHETHER TO SET TBASE OR NOT\n\n\t\tTCF\tPHASCHNG +3\n\nPHASCHNG\tINHINT\n\t\tCA\tONE\t\t# INDICATESWE CAME FROM A PHASCHNG ENTRY\n\t\tTS\tTEMPSW2\n\n\t\tNDX\tQ\n\t\tCA\t0\n\t\tINCR\tQ\n\t\tTS\tTEMPSW\n# Page 1410\n\t\tEXTEND\n\t\tDCA\tADRPCHN2\t# OFF TO SWITCHED BANK\n\t\tDTCB\n\n\t\tEBANK=\tLST1\nADRPCHN2\t2CADR\tPHSCHNG2\n\nONEORTWO\tLXCH\tTEMPBBCN\n\t\tLXCH\tBBANK\n\t\tLXCH\tTEMPBBCN\n\n\t\tMASK\tOCT14000\t# SEE WHAT KIND OF PHASE CHANGE IT IS\n\t\tCCS\tA\n\t\tTCF\tCHECKB\t\t# IT IS OF TYPE :B:\n\n\t\tCA\tTEMPP\n\t\tMASK\tBIT7\n\t\tCCS\tA\t\t# SHALL WE USE THE OLD PRIORITY\n\t\tTCF\tGETPRIO\t\t# NO GET A NEW PRIORITY (OR DELTA T)\n\nOLDPRIO\t\tNDX\tTEMPG\t\t# USE THE OLD PRIORITY (OR DELTA T)\n\t\tCA\tPHSPRDT1 -2\n\t\tTS\tTEMPPR\n\nCON1\t\tCA\tTEMPP\t\t# SEE IF A 2CADR IS GIVEN\n\t\tMASK \tBIT8\n\t\tCCS\tA\n\t\tTCF\tGETNEWNM\n\n\t\tCA\tQ\n\t\tTS\tTEMPNM\n\t\tCA\tBB\n\t\tEXTEND\t\t\t# PICK UP USERS SUPERBANK\n\t\tROR\tSUPERBNK\n\t\tTS\tTEMPBB\n\nTOCON2\t\tCA\tCON2ADR\t\t# BACK TO SWITCHED BANK\n\t\tLXCH\tTEMPBBCN\n\t\tDTCB\n\nCON2ADR\t\tGENADR\tCON2\n\nGETPRIO\t\tNDX\tQ\t\t# DON:T CARE IF DIRECT OR INDIRECT\n\t\tCA\t0\t\t# LEAVE THAT DECISION TO RESTARTS\n\t\tINCR\tQ\t\t# OBTAIN RETURN ADDRESS\n\t\tTCF\tCON1 -1\n\nGETNEWNM\tEXTEND\n# Page 1411\n\t\tINDEX\tQ\n\t\tDCA\t0\n\t\tDXCH\tTEMPNM\n\t\tCA\tTWO\n\t\tADS\tQ\t\t# OBTAIN RETURN ADDRESS\n\n\t\tTCF\tTOCON2\n\nOCT14000\tEQUALS\tPRIO14\nTEMPG\t\tEQUALS\tITEMP1\nTEMPP\t\tEQUALS\tITEMP2\nTEMPNM\t\tEQUALS\tITEMP3\nTEMPBB\t\tEQUALS\tITEMP4\nTEMPSW\t\tEQUALS\tITEMP5\nTEMPSW2\t\tEQUALS\tITEMP6\nTEMPPR\t\tEQUALS\tRUPTREG1\nTEMPG2\t\tEQUALS\tRUPTREG2\nTEMPP2\t\tEQUALS\tRUPTREG3\n\nTEMPBBCN\tEQUALS\tRUPTREG4\nBB\t\tEQUALS\tBBANK\n\n\t\tBANK\t14\n\t\tSETLOC\tPHASETAB\n\t\tBANK\n\n\t\tEBANK=\tPHSNAME1\n\t\tCOUNT\t10/PHASE\n\nPHSCHNG2\tLXCH\tTEMPBBCN\n\t\tCA\tTEMPSW\n\t\tMASK\tOCT7\n\t\tDOUBLE\n\t\tTS\tTEMPG\n\n\t\tCA\tTEMPSW\n\t\tMASK\tOCT17770\n\t\tEXTEND\n\t\tMP\tBIT12\n\t\tTS\tTEMPP\n\n\t\tCA\tTEMPSW\n\t\tMASK\tOCT60000\n\t\tXCH\tTEMPSW\n\t\tMASK\tOCT14000\n\t\tCCS\tA\n\t\tTCF\tONEORTWO\n\n# Page 1412\n\t\tCA\tTEMPP\t\t# START STORING THE PHASE INFORMATION\n\t\tNDX\tTEMPG\n\t\tTS\tPHASE1 -2\n\nBELOW1\t\tCCS\tTEMPSW2\t\t# IS IT A PHASCHNG OR A 2PHSCHNG\n\t\tTCF\tBELOW2\t\t# IT:S A PHASCHNG\n\n\t\tTCF\t+1\t\t# IT:S A 2PHSCHNG\n\t\tCS\tTEMPP2\n\t\tLXCH\tTEMPP2\n\t\tNDX\tTEMPG2\n\t\tDXCH\t-PHASE1 -2\n\n\t\tCCS\tTEMPSW2\n\t\tNOOP\t\t\t# CAN:T GET HERE\n\t\tTCF\tBELOW2\n\n\t\tCS\tTIME1\n\t\tNDX\tTEMPG2\n\t\tTS\tTBASE1 -2\n\nBELOW2\t\tCCS\tTEMPSW\t\t# SEE IF WE SHOULD SET TBASE OR LONGBASE\n\t\tTCF\tBELOW3\t\t# SET LONGBASE ONLY\n\t\tTCF\tBELOW4\t\t# SET NEITHER\n\n\t\tCS\tTIME1\t\t# SET TBASE TO BEGIN WITH\n\t\tNDX\tTEMPG\n\t\tTS\tTBASE1 -2\n\n\t\tCA\tTEMPSW\t\t# SHALL WE NOW SET LONGBASE\n\t\tAD\tBIT14COM\n\t\tCCS\tA\n\t\tNOOP\t\t\t# ***** CAN'T GET HERE *****\nBIT14COM\tOCT\t17777\t\t# ***** CAN'T GET HERE *****\n\t\tTCF\tBELOW4\t\t# NO WE NEED ONLY SET TBASE\n\nBELOW3\t\tEXTEND\t\t\t# SET LONGBASE\n\t\tDCA\tTIME2\n\t\tDXCH\tLONGBASE\n\nBELOW4\t\tCS\tTEMPP\t\t# AND STORE THE FINAL PART OF THE PHASE\n\t\tNDX\tTEMPG\n\t\tTS\t-PHASE1 -2\n\n\t\tCA\tQ\n\t\tLXCH\tTEMPBBCN\n\t\tRELINT\n\t\tDTCB\nCON2\t\tLXCH\tTEMPBBCN\n# Page 1413\n\t\tCA\tTEMPP\n\t\tNDX\tTEMPG\n\t\tTS\tPHASE1 -2\n\n\t\tCA\tTEMPPR\n\t\tNDX\tTEMPG\n\t\tTS\tPHSPRDT1 -2\n\n\t\tEXTEND\n\t\tDCA\tTEMPNM\n\t\tNDX\tTEMPG\n\t\tDXCH\tPHSNAME1 -2\n\n\t\tTCF\tBELOW1\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG1\n\t\tBANK\n\n\t\tCOUNT\t02/PHASE\n\nCHECKB\t\tMASK\tBIT12\t\t# SINCE THIS IS OF TYPE B, THIS BIT SHOULD\n\t\tCCS\tA\t\t# BE HERE IF WE ARE TO GET A NEW PRIORITY\n\t\tTCF\tGETPRIO\t\t# IT IS, SO GET NEW PRIORITY\n\n\t\tTCF\tOLDPRIO\t\t# IT ISN:T, USE THE OLD PRIORITY\n"
  },
  {
    "path": "Comanche055/PINBALL_GAME_BUTTONS_AND_LIGHTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPINBALL_GAME_BUTTONS_AND_LIGHTS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t307-389\n# Mod history:\t2009-05-08 RSB\tStarted adapting from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.  Finished through page 329.\n#\t\t2009-05-09 RSB\tFinished first draft.\n#\t\t2009-05-20 RSB\tCorrected a CHKPOOH to CHKPOOH.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 307\n# PROGRAM NAME -- KEYBOARD AND DISPLAY PROGRAM\n# MOD NO -- 4\t\tDATE -- 27 APRIL 1967\t\tASSEMBLY -- PINDISK REV 17\n# MOD BY -- FILENE\n# LOG SECTION -- PINBALL GAME BUTTONS AND LIGHTS\n#\n# FUNCTIONAL DESCRIPTION\n#\n# THE KEYBOARD AND DISPLAY SYSTEM PROGRAM OPERATES UNDER EXECUTIVE\n# CONTROL AND PROCESSES INFORMATION EXCHANGED BETWEEN THE AGC AND THE\n# COMPUTER OPERATOR.  THE INPUTS TO THE PROGRAM ARE FROM THE KEYBOARD,\n# FROM INTERNAL PROGRAM, AND FROM THE UPLINK.\n#\n# THE LANGUAGE OF COMMUNICATION WITH THE PROGRAM IS A PAIR OF WORDS\n# KNOWN AS VERB AND NOUN.  EACH OF THESE IS REPRESENTED BY A 2 CHARACTER\n# DECIMAL NUMBER.  THE VERB CODE INDICATES WHAT ACTION IS TO BE TAKEN, THE\n# NOUN CODE INDICATES TO WHAT THIS ACTION IS APPLIED.  NOUNS USUALLY\n# REFER TO A GROUP OF ERASABLE REGISTERS.\n#\n# VERBS ARE GROUPED INTO DISPLAYS, LOADS, MONITORS (DISPLAYS THAT ARE\n# UPDATED ONCE PER SECOND), SPECIAL FUNCTIONS, AND EXTENDED VERBS (THESE\n# ARE OUTSIDE OF THE DOMAIN OF PINBALL AND CAN BE FOUND UNDER LOG SECTION\n# `EXTENDED VERBS').\n#\n# A LIST OF VERBS AND NOUNS IS GIVEN IN LOG SECTION `ASSEMBLY AND\n# OPERATION INFORMATION'.\n#\n# CALLING SEQUENCES --\n#\n# KEYBOARD:\n# EACH DEPRESSION OF A MAIN (NAVIGATION) KEYBOARD BUTTON ACTIVATES\n# INTERRUPT KEYRUPT1 (KEYRUPT2) AND PLACES THE 5 BIT KEY CODE INTO\n# CHANNEL 15 (CHANNEL 16).  KEYRUPT1 (KEYRUPT2) PLACES THE KEY\n# CODE INTO MPAC, ENTERS AN EXECUTIVE REQUEST FOR THE KEYBOARD AND DISPLAY\n# PROGRAM (AT `CHARIN'), AND EXECUTES A RESUME.\n#\n# UPLINK:\n# EACH WORD RECEIVED BY THE UPLINK ACTIVATES INTERRUPT UPRUPT, WHICH\n# PLACES THE 5 BIT KEY CODE INTO MPAC, ENTERS AN EXECUTIVE REQUEST FOR THE\n# KEYBOARD AND DISPLAY PROGRAM (AT `CHARIN') AND EXECUTES A RESUME.\n#\n# INTERNAL PROGRAMS:\n# INTERNAL PROGRAMS CALL PINBALL AT `NVSUB' WITH THE DESIRED VERB/NOUN\n# CODE IN A (LOW 7 BITS FOR NOUN, NEXT 7 BITS FOR VERB).  DETAILS\n# DESCRIBED ON REMARKS CARDS JUST BEFORE `NVSUB' AND `NVSBWAIT' (SEE\n# SYMBOL TABLE FOR PAGE NUMBERS).\n#\n# NORMAL EXIT MODES --\n#\n#\tIF PINBALL WAS CALLED BY EXTERNAL ACTION, THERE ARE FOUR EXITS:\n#\t\t1)\tALL BUT (2), (3), AND (4) EXIT DIRECTLY TO ENDOFJOB.\n# Page 308\n#\t\t2)\tEXTENDED VERBS TO TO THE EXTENDED VERB FAN AS PART OF THE\n#\t\t\tPINBALL EXECUTIVE JOB WITH PRIORITY 30000.  IT IS THE\n#\t\t\tRESPONSIBILITY OF THE EXTENDED VERB CALLED TO EVENTUALLY\n#\t\t\tCHANGE PRIORITY (IF NECESSARY) AD DO AN ENDOFJOB.\n#\t\t\tALSO PINBALL IS A NOVAC JOB.  EBANK SET FOR COMMON.\n#\t\t3)\tVERB 37.  CHANGE OF PROGRAM (MAJOR MODE) CALLS `V37' IN THE\n#\t\t\tSERVICE ROUTINES AS PART OF THE PINBALL EXEC JOB WITH PRIO\n#\t\t\t30000.  THE NEW PROGRAM CODE (MAJOR MODE) IS LEFT IN A.\n#\t\t4)\tKEY RELEASE BUTTON CALLS `PINBRNCH' IN THE DISPLAY INTERFACE\n#\t\t\tROUTINES AS PART OF THE PINBALL EXEC JOB WITH PRIO 30000 IF\n#\t\t\tTHE KEY RELEASE LIGHT IS OFF AND `CADRSTOR' IS NOT 40.\n#\n# IF PINBALL WAS CALLED BY INTERNAL PROGRAMS, EXIT FROM PINBALL IS BACK\n# TO CALLING ROUTINE.  DETAILS DESCRIBED IN REMARKS CARDS JUST BEFORE\n# `NVSUB' AND `NVSBWAIT' (SEE SYMBOL TABLE FOR PAGE NUMBERS).\n#\n# ALARM OR ABORT EXIT MODES --\n#\n# \tEXTERNAL INITIATION:\n#\t\tIF SOME IMPROPER SEQUENCE OF KEY CODES IS DETECTED, THE OPERATOR\n#\t\tERROR LIGHT IS TURNED ON AND EXIT IS TO `ENDOFJOB'.\n#\n#\tINTERNAL PROGRAM INITIATION:\n#\t\tIF AN ILLEGAL V/N COMBINATION IS ATTEMPTED, AN ABORT IS CAUSED\n#\t\t(WITH OCTAL 01501).\n#\t\tIF A SECOND ATTEMPT IS MADE TO GO TO SLEEP IN PINBALL, AN ABORT IS\n#\t\tCAUSED (WITH OCTAL 01206).  THERE ARE TWO WAYS TO GO TO SLEEP IN PINBALL:\n#\t\t1)\tENDIDLE OR DATAWAIT.\n#\t\t2)\tNVSBWAIT, PRENVBSY, OR NVSUBUSY.\n#\n# CONDITIONS LEADING TO THE ABOVE ARE DESCRIBED IN FORTHCOMING MIT/IL\n# E-REPORT DESCRIBING KEYBOARD AND DISPLAY OPERATION FOR 278.\n#\n# OUTPUT --\n#\n# INFORMATION TO BE SENT TO THE DISPLAY PANEL IS LEFT IN THE `DSPTAB'\n# BUFFERS REGISTERS (UNDER EXEC CONTROL).  `DSPOUT' (A PART OF T4RUPT)\n# HANDLES THE PLACING OF THE `DSPTAB' INFORMATION INTO OUTPUT CHANNEL 10\n# IN INTERRUPT.\n#\n# ERASABLE INITIALIZATION --\n#\n# FRESH START AND RESTART INITIALIZE THE NECESSARY E REGISTERS FOR\n# PINBALL IN `STARTSUB'.  REGISTERS ARE:  DSPTAB BUFFER, CADRSTOR,\n# REQRET, CLPASS, DSPLOCK, MONSAVE, MONSAVE1, VERBREG, NOUNREG, DSPLIST,\n# DSPCOUNT, NOUT.\n#\n# Page 309\n# A COMPLETE LIST OF ALL THE ERASABLES (BOTH RESERVED AND TEMPORARIES) FOR\n# PINBALL IS GIVEN BELOW.\n#\n# THE FOLLOWING ARE OF GENERAL INTEREST --\n#\n# REMARKS CARDS PRECEDE THE REFERENCED SYMBOL DEFINITION.  SEE SYMBOL\n# TABLE TO FIND APPROPRIATE PAGE NUMBERS.\n#\n#\tNVSUB\t\tCALLING POINT FOR INTERNAL USE OF PINBALL.\n#\t\t\tOF RELATED INTEREST\tNVSBWAIT\n#\t\t\t\t\t\tNVSUBUSY\n#\t\t\t\t\t\tPRENVBSY\n#\n#\tENDIDLE\t\tROUTINE FOR INTERNAL PROGRAMS WISHING TO TO SLEEP WHILE\n#\t\t\tAWAITING OPERATOR'S RESPONSE.\n#\n#\tDSPMM\t\tROUTINE BY WHICH AN INTERNAL PROGRAM MAY DISPLAY A DECIMAL\n#\t\t\tPROGRAM CODE (MAJOR MODE) IN THE PROGRAM (MAJOR MODE) LIGHT\n#\t\t\t(DSPMM DOES NOT DISPLAY DIRECTLY BUT ENTERS EXEC REQUEST\n#\t\t\tFOR DSPMMJB WITH PRIO 30000 AND RETURNS TO CALLER.)\n#\n#\tBLANKSUB\tROUTINE BY WHICH AN INTERNAL PROGRAM MAY BLANK ANY\n#\t\t\tCOMBINATION OF THE DISPLAY REGISTERS R1, R2, R3.\n#\n#\tJAMTERM\t\tROUTINE BY WHICH AN INTERNAL PROGRAM MAY PERFORM THE\n#\tJAMPROC\t\tTERMINATE (V 34) OR PROCEED (V33) FUNCTION.\n#\n#\tMONITOR\t\tVERBS FOR PERIODIC (1 PER SEC) DISPLAY.\n#\n#\tPLEASE PERFORM, PLEASE MARK SITUATIONS\n#\t\tREMARKS DESCRIBING HOW AN INTERNAL ROUTINE SHOULD HANDLE\n#\t\tTHESE SITUATIONS CAN BE FOUND JUST BEFORE `NVSUB' (SEE\n#\t\tSYMBOL TABLE FOR PAGE NUMBER).\n#\n#\tTHE NOUN TABLE FORMAT IS DESCRIBED ON A PAGE OF REMARKS CARDS JUST\n#\tBEFORE `DSPABC' (SEE SYMBOL TABLE FOR PAGE NUMBER).\n#\n#\tTHE NOUN TABLES THEMSELVES ARE FOUND IN LOG SECTION `PINBALL NOUN\n#\tTABLES'.\n#\n# FOR FURTHER DETAILS ABOUT OPERATION OF THE KEYBOARD AND DISPLAY SYSTEM\n# PROGRAM, SEE THE MISSION PLAN AND/OR MIT/IL E-2129\n# DESCRIBING KEYBOARD AND DISPLAY OPERATION FOR 278.\n# (Note that this doc by Green and Filene is/was available online at\n# http://hrst.mit.edu/hrs/apollo/public/archive/1706.pdf --- RSB 6/2004.)\n#\n# THE FOLLOWING QUOTATION IS PROVIDED THROUGH THE COURTESY OF THE AUTHORS.\n#\n#\t\"IT WILL BE PROVED TO THY FACE THAT THOU HAST MEN ABOUT THEE THAT\n# Page 310\n#\tUSUALLY TALK OF A NOUN AND A VERB, AND SUCH ABOMINABLE WORDS AS NO\n#\tCHRISTIAN EAR CAN ENDURE TO HEAR.\"\n#\t\t\t\t\tHENRY 6, ACT 2, SCENE 4\n\n# THE FOLLOWING ASSIGNMENTS FOR PINBALL ARE MADE ELSEWHERE\n\n# RESERVED FOR PINBALL EXECUTIVE ACTION\n#\n#DSPCOUNT\tERASE\t\t\t# DISPLAY POSITION INDICATOR\n#DECBRNCH\tERASE\t\t\t# +DEC, -DEC, OCT INDICATOR\n#VERBREG\tERASE\t\t\t# VERB CODE\n#NOUNREG\tERASE\t\t\t# NOUN CODE\n#XREG\t\tERASE\t\t\t# R1 INPUT BUFFER\n#YREG\t\tERASE\t\t\t# R2 INPUT BUFFER\n#ZREG\t\tERASE\t\t\t# R3 INPUT BUFFER\n#XREGLP\t\tERASE\t\t\t# LO PART OF XREG (FOR DEC CONV ONLY)\n#YREGLP\t\tERASE\t\t\t# LO PART OF YREG (FOR DEC CONV ONLY)\n#HITEMOUT\t=\tYREGLP\t\t# TEMP FOR DISPLAY OF HRS,MIN,SEC\n#\t\t\t\t\t# MUST = LOTEMOUT-1.\n#ZREGLP\t\tERASE\t\t\t# LO PART OF ZREG (FOR DEC CONV ONLY)\n#LOTEMOUT\t=\tZREGLP\t\t# TEMP FOR DISPLAY OF HRS,MIN,SEC\n#\t\t\t\t\t# MUST = HITEMOUT+1\n#MODREG\t\tERASE\t\t\t# MODE CODE\n#DSPLOCK\tERASE\t\t\t# KEYBOARD/SUBROUTINE CALL INTERLOCK\n#REQRET\t\tERASE\t\t\t# RETURN REGISTER FOR LOAD\n#LOADSTAT\tERASE\t\t\t# STATUS INDICATOR FOR LOADTST\n#CLPASS\t\tERASE\t\t\t# PASS INDICATOR FOR CLEAR\n#NOUT\t\tERASE\t\t\t# ACTIVITY COUNTER FOR DSPTAB\n#NOUNCADR\tERASE\t\t\t# MACHINE CADR FOR NOUN\n#MONSAVE\tERASE\t\t\t# N/V CODE FOR MONITOR. (= MONSAVE1-1)\n#MONSAVE1\tERASE\t\t\t# NOUNCADR FOR MONITOR (MATBS1) = MONSAVE+1\n#MONSAVE2\tERASE\t\t\t# NVMONOPT OPTIONS\n#DSPTAB\t\tERASE\t+13D\t\t# 0-10, DISPLAY PANEL BUFFER 11-13, C RELAYS.\n#CADRSTOR\tERASE\t\t\t# ENDIDLE STORAGE\n#NVQTEM\t\tERASE\t\t\t# NVSUB STORAGE FOR CALLING ADDRESS\n#\t\t\t\t\t# MUST = NVBNKTEM-1.\n#NVBNKTEM\tERASE\t\t\t# NVSUB STORAGE FOR CALLING BANK\n#\t\t\t\t\t# MUST = NVQTEM+1\n#VERBSAVE\tERASE\t\t\t# NEEDED FOR RECYCLE\n#DSPLIST\tERASE\t\t\t# WAITING REG FOR DSP SYST INTERNAL USE\n#EXTVBACT\tERASE\t\t\t# EXTENDED VERB ACTIVITY INTERLOCK\n#DSPTEM1\tERASE\t+2\t\t# BUFFER STORAGE AREA 1 (MOSTLY FOR TIME)\n#DSPTEM2\tERASE\t+2\t\t# BUFFER STORAGE AREA 2 (MOSTLY FOR DEG)\n#\n# END OF ERASABLES RESERVED FOR PINBALL EXECUTIVE ACTION.\n#\n# TEMPORARIES FOR PINBALL EXECUTIVE ACTION\n# Page 311\n#DSEXIT\t\t=\tINTB15+\t\t# RETURN FOR DSPIN\n#EXITEM\t\t=\tINTB15+\t\t# RETURN FOR SCALE FACTOR ROUTINE SELECT\n#BLANKRET\t=\tINTB15+\t\t# RETURN FOR 2BLANK\n#WRDRET\t\t=\tINTBIT15\t# RETURN FOR 5BLANK.\n#WDRET\t\t=\tINTBIT15\t# RETURN FOR DSPWD\n#DECRET\t\t=\tINTBIT15\t# RETURN FOR PUTCOM(DEC LOAD)\n#21/22REG\t=\tINTBIT15\t# TEMP FOR CHARIN\n#UPDATRET\t=\tPOLISH\t\t# RETURN FOR UPDATNN, UPDATVB\n#CHAR\t\t=\tPOLISH\t\t# TEMP FOR CHARIN\n#ERCNT\t\t=\tPOLISH\t\t# COUNTER FOR ERROR LIGHT RESET\n#DECOUNT\t=\tPOLISH\t\t# COUNTER FOR SCALING AND DISPLAY (DEC)\n#SGNON\t\t=\tVBUF\t\t# TEMP FOR +,- ON\n#NOUNTEM\t=\tVBUF\t\t# COUNTER FOR MIXNOUN FETCH\n#DISTEM\t\t= \tVBUF\t\t# COUNTER FOR OCTAL DISPLAY VERB\n#DECTEM\t\t=\tVBUF\t\t# COUNTER FOR FETCH (DEC DISPLAY VERBS)\n#SGNOFF\t\t=\tVBUF +1\t\t# TEMP FOR +,- ON\n#NVTEMP\t\t=\tVBUF +1\t\t# TEMP FOR NVSUB\n#SFTEMP1\t=\tVBUF +1\t\t# STORAGE FOR SF CONST HI PART (=SFTEMP2-1)\n#HITEMIN\t=\tVBUF +1\t\t# TEMP FOR LOAD OF HRS,MIN,SEC\n#\t\t\t\t\t# \tMUST = LOTEMIN-1.\n#CODE\t\t=\tVBUF +2\t\t# FOR DSPIN\n#SFTEMP2\t=\tVBUF +2\t\t# STORAGE FOR SF CONST LO PART (=SFTEMP1+1)\n#LOTEMIN\t=\tVBUF +2\t\t# TEMP FOR LOAD OF HRS,MIN,SEC\n#\t\t\t\t\t# \tMUST = HITEMIN+1\n#MIXTEMP\t=\tVBUF +3\t\t# FOR MIXNOUN DATA\n#SIGNRET\t=\tVBUF +3\t\t# RETURN FOR +,- ON\n# ALSO MIXTEMP+1 = VBUF+4, MIXTEMP+2 = VBUF+5\n#ENTRET\t\t=\tDOTINC\t\t# EXIT FROM ENTER\n#WDONT\t\t=\tDOTRET\t\t# CHAR COUNTER FOR DSPWD\n#INREL\t\t=\tDOTRET\t\t# INPUT BUFFER SELECTOR (X,Y,Z, REG )\n#DSPMMTEM\t=\tMATINC\t\t# DSPCOUNT SAVE FOR DSPMM\n#MIXBR\t\t=\tMATINC\t\t# INDICATOR FOR MIXED OR NORMAL NOUN\n#TEM1\t\tERASE\t\t\t# EXEC TEMP\n#DSREL\t\t=\tTEM1\t\t# REL ADDRESS FOR DSPIN\n#TEM2\t\tERASE\t\t\t# EXEC TEMP\n#DSMAG\t\t=\tTEM2\t\t# MAGNITUDE STORE FOR DSPIN\n#IDADDTEM\t=\tTEM2\t\t# MIXNOUN INDIRECT ADDRESS STORAGE\n#TEM3\t\tERASE\t\t\t# EXEC TEMP\n#COUNT\t\t=\tTEM3\t\t# FOR DSPIN\n# Page 312\n#TEM4\t\tERASE\t\t\t# EXEC TEMP\n#LSTPTR\t\t=\tTEM4\t\t# LIST POINTER FOR GRABUSY\n#RELRET\t\t=\tTEM4\t\t# RETURN FOR RELDSP\n#FREERET\t=\tTEM4\t\t# RETURN FOR FREEDSP\n#DSPWDRET\t=\tTEM4\t\t# RETURN FOR DSPSIGN\n#SEPSCRET\t=\tTEM4\t\t# RETURN FOR SEPSEC\n#SEPMNRET\t=\tTEM4\t\t# RETURN FOR SEPMIN\n#TEM5\t\tERASE\t\t\t# EXEC TEMP\n#NOUNADD\t=\tTEM5\t\t# TEMP STORAGE FOR NOUN ADDRESS\n#NNADTEM\tERASE\t\t\t# TEMP FOR NOUN ADDRESS TABLE ENTRY\n#NNTYPTEM\tERASE\t\t\t# TEMP FOR NOUN TYPE TABLE ENTRY\n#IDAD1TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n#\t\t\t\t\t# MUST = IDAD2TEM-1, = IDAD3TEM-2\n#IDAD2TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n#\t\t\t\t\t# MUST = IDAD1TEM+1, IDAD3TEM-1.\n#IDAD3TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n#\t\t\t\t\t# MUST = IDAD1TEM+2, IDAD2TEM+1.\n#RUTMXTEM\tERASE\t\t\t# TEMP FOR SF ROUT TABLE ENTRY (MIXNN ONLY)\n#\n# END OF TEMPORARIES FOR PINBALL EXECUTIVE ACTION.\n#\n# ADDITIONAL TEMPORARIES FOR PINBALL EXECUTIVE ACTION\n#\n#\tMPAC, THRU MPAC +6\n#\tBUF, +1, +2\n#\tBUF2, +1, +2\n#\tMPTEMP\n#\tADDRWD\n#\n# END OF ADDITIONAL TEMPS FOR PINBALL EXEC ACTION\n#\n# RESERVED FOR PINBALL INTERRUPT ACTION\n#\n#DSPCNT\t\tERASE\t\t\t# COUNTER FOR DSPOUT\n#UPLOCK\t\tERASE\t\t\t# BIT1 = UPLINK INTERLOCK (ACTIVATED BY\n#\t\t\t\t\t# RECEPTION OF A BAD MESSAGE IN UPLINK)\n#\n# END OF ERASABLES RESERVED FOR PINBALL INTERRUPT ACTION\n#\n# TEMPORARIES FOR PINBALL INTERRUPT ACTION\n#\n#KEYTEMP1\t=\tWAITEXIT\t# TEMP FOR KEYRUPT, UPRUPT\n#DSRUPTEM\t=\tWAITEXIT\t# TEMP FOR DSPOUT\n#KEYTEMP2\t=\tRUPTAGN\t\t# TEMP FOR KEYRUPT, UPRUPT\n#\n# END OF TEMPORARIES FOR PINBALL INTERRUPT ACTION\n\n# Page 313\n# THE INPUT CODES ASSUMED FOR THE KEYBOARD ARE,\n#\t0\t\t10000\n#\t1\t\t00001\n#\t9\t\t01001\n#\tVERB\t\t10001\n#\tERROR RES\t10010\n#\tKEY RLSE\t11001\n#\t+\t\t11010\n#\t-\t\t11011\n#\tENTER\t\t11100\n#\tCLEAR\t\t11110\n#\tNOUN\t\t11111\n#\n# OUTPUT FORMAT FOR DISPLAY PANEL.  SET OUT0 TO AAAABCCCCCDDDDD.\n# A'S \tSELECTS A RELAYWORD.  THIS DETERMINES WHICH PAIR OF CHARACTERS ARE\n#     \tENERGIZED.\n# B\tFOR SPECIAL RELAYS SUCH AS SIGNS ETC.\n# C'S\t5 BIT RELAY CODE FOR LEFT CHAR OF PAIR SELECTED BY RELAYWORD.\n# D'S\t5 BIT RELAY CODE FOR RIGHT CHAR OF PAIR SELECTED BY RELAYWORD.\n#\n# THE PANEL APPEARS AS FOLLOWS,\n#\tMD1\t\tMD2 (MAJOR MODE)\n#\tVD1\t\tVD2 (VERB)\t\t\tND1\t\tND2 (NOUN)\n#\tR1D1\t\tR1D2\t\tR1D3\t\tR1D4\t\tR1D5 (R1)\n#\tR2D1\t\tR2D2\t\tR2D3\t\tR2D4\t\tR2D5 (R2)\n#\tR3D1\t\tR3D2\t\tR3D3\t\tR3D4\t\tR3D5 (R3)\n#\n# EACH OF THESE IS GIVEN A DSPCOUNT NUMBER FOR USE WITHIN COMPUTATION ONLY\n#\n#\tMD1\t25\t\tR2D1\t11\t\tALL ARE OCTAL\n#\tMD2\t24\t\tR2D2\t10\n#\tVD1\t23\t\tR2D3\t7\n#\tVD2\t22\t\tR2D4\t6\n#\tND1\t21\t\tR2D5\t5\n#\tND2\t20\t\tR3D1\t4\n#\tR1D1\t16\t\tR3D2\t3\n#\tR1D2\t15\t\tR3D3\t2\n#\tR1D3\t14\t\tR3D4\t1\n#\tR1D4\t13\t\tR3D5\t0\n#\tR1D5\t12\n#\n# THERE IS AN 11-REGISTER TABLE (DSPTAB) FOR THE DISPLAY PANEL.\n#\n#\tDSPTAB\t\tRELAYWD\t\tBIT11\t\tBITS 10-6\tBITS 5-1\n#\tRELADD\n#\t10\t\t1011\t\t\t\tMD1 (25)\tMD2  (24)\n#\t9\t\t1010\t\t\t\tVD1 (23)\tVD2  (22)\n#\t8\t\t1001\t\t\t\tND1 (21)\tND2  (20)\n#\t7\t\t1000\t\t\t\t\t\tR1D1 (16)\n# Page 314\n#\t6\t\t0111\t\t+R1\t\tR1D2 (15)\tR1D3 (14)\n#\t5\t\t0110\t\t-R1\t\tR1D4 (13)\tR1D5 (12)\n#\t4\t\t0101\t\t+R2\t\tR2D1 (11)\tR2D2 (10)\n#\t3\t\t0100\t\t-R2\t\tR2D3 (7)\tR2D4 (6)\n#\t2\t\t0011\t\t\t\tR2D5 (5)\tR3D1 (4)\n#\t1\t\t0010\t\t+R3\t\tR3D2 (3)\tR3D3 (2)\n#\t0\t\t0001\t\t-R3\t\tR3D4 (1)\tR3D5 (0)\n#\t\t\t0000\t    NO RELAYWORD\n#\n# THE 5-BIT OUTOUT RELAY CODES ARE:\n#\n#\tBLANK\t00000\n#\t0\t10101\n#\t1\t00011\n#\t2\t11001\n#\t3\t11011\n#\t4\t01111\n#\t5\t11110\n#\t6\t11100\n#\t7\t10011\n#\t8\t11101\n#\t9\t11111\n#\n# OUTPUT BITS USED BY PINBALL:\n#\n#\tKEY RELEASE LIGHT\t--\tBIT 5 OF CHANNEL 11\n#\tVERB/NOUN FLASH\t\t--\tBIT 6 OF CHANNEL 11\n#\tOPERATOR ERROR LIGHT\t--\tBIT 7 OF CHANNEL 11\n\n# Page 315\n# START OF EXECUTIVE SECTION OF PINBALL\n\n\t\tBANK\t40\n\t\tSETLOC\tPINBALL1\n\t\tBANK\n\n\t\tCOUNT\t40/PIN\n\nCHARIN\t\tCAF\tONE\t\t# BLOCK DISPLAY SYST\n\t\tXCH\tDSPLOCK\t\t# MAKE DSP SYST BUSY, BUT SAVE OLD\n\t\tTS\t21/22REG\t# C(DSPLOCK) FOR ERROR LIGHT RESET.\n\t\tCCS\tCADRSTOR\t# ALL KEYS EXCEPT ER TURN ON KR LITE IF\n\t\tTC\t+2\t\t# CADRSTOR IS FULL.  THIS REMINDS OPERATOR\n\t\tTC\tCHARIN2\t\t# TO RE-ESTABLISH A FLASHING DISPLAY\n\t\tCS\tELRCODE1\t# WHICH HE HAS OBSCURED WITH DISPLAYS OF\n\t\tAD\tMPAC\t\t# HIS OWN (SEE REMARKS PRECEDING ROUTINE\n\t\tEXTEND\t\t\t# VBRELDSP).\n\t\tBZF\tCHARIN2\n\t\tTC\tRELDSPON\nCHARIN2\t\tXCH\tMPAC\n\t\tTS\tCHAR\n\t\tINDEX\tA\n\t\tTC\t+1\t\t#   INPUT CODE\t    FUNCTION\n\t\tTC\tCHARALRM\t# \t0\n\t\tTC\tNUM\t\t#\t1\n\t\tTC\tNUM\t\t#\t2\n\t\tTC\tNUM\t\t#\t3\n\t\tTC\tNUM\t\t#\t4\n\t\tTC\tNUM\t\t#\t5\n\t\tTC\tNUM\t\t#\t6\n\t\tTC\tNUM\t\t# \t7\n\t\tTC\t89TEST\t\t#\t10\t\t8\n\t\tTC\t89TEST\t\t#\t11\t\t9\n\t\tTC\tCHARALRM\t#\t12\n\t\tTC\tCHARALRM\t#\t13\n\t\tTC\tCHARALRM\t#\t14\n\t\tTC\tCHARALRM\t#\t15\n\t\tTC\tCHARALRM\t#\t16\n\t\tTC\tCHARALRM\t#\t17\n\t\tTC\tNUM\t-2\t#\t20\t\t0\n\t\tTC\tVERB\t\t#\t21\t\tVERB\n\t\tTC\tERROR\t\t#\t22\t\tERROR LIGHT RESET\n\t\tTC\tCHARALRM\t#\t23\n\t\tTC\tCHARALRM\t#\t24\n\t\tTC\tCHARALRM\t#\t25\n\t\tTC\tCHARALRM\t#\t26\n\t\tTC\tCHARALRM\t#\t27\n\t\tTC\tCHARALRM\t#\t30\n\t\tTC\tVBRELDSP\t#\t31\t\tKEY RELEASE\n# Page 316\n\t\tTC\tPOSGN\t\t#\t32\t\t+\n\t\tTC\tNEGSGN\t\t#\t33\t\t-\n\t\tTC\tENTERJMP\t#\t34\t\tENTER\n\t\tTC\tCHARALRM\t#\t35\n\t\tTC\tCLEAR\t\t#\t36\t\tCLEAR\n\t\tTC\tNOUN\t\t#\t37\t\tNOUN\n\nELRCODE1\tOCT\t22\nENTERJMP\tTC\tPOSTJUMP\n\t\tCADR\tENTER\n\n89TEST\t\tCCS\tDSPCOUNT\n\t\tTC\t+4\t\t# +\n\t\tTC\t+3\t\t# +0\n\t\tTC\tENDOFJOB\t# - BLOCK DATA IN IF DSPCOUNT IS - OR -0\n\t\tTC\tENDOFJOB\t# -0\n\t\tCAF\tTHREE\n\t\tMASK\tDECBRNCH\n\t\tCCS\tA\n\t\tTC\tNUM\t\t# IF DECBRNCH IS +, 8 OR 9 OK\n\t\tTC\tCHARALRM\t# IF DECBRNCH IS +0, REJECT 8 OR 9\n\n# NUM ASSEMBLES OCTAL 3 BITS AT A TIME.  FOR DECIMAL IT CONVERTS INCOMING\n# WORD AS A FRACTION, KEEPING RESULTS TO DP.\n# OCTAL RESULTS ARE LEFT IN XREG, YREG, OR ZREG.  HI PART OF DEC IN XREG,\n# YREG, ZREG.  THE LOW PARTS IN XREGLP, YREGLP, OR ZREGLP.\n# DECBRNCH IS LEFT AT +0 FOR OCT, +1 FOR + DEC, +2 FOR - DEC.\n# IF DSPCOUNT WAS LEFT -, NO MORE DATA IS ACCEPTED.\n\n\t\tCAF\tZERO\n\t\tTS\tCHAR\nNUM\t\tCCS\tDSPCOUNT\n\t\tTC\t+4\t\t# +\n\t\tTC\t+3\t\t# +0\n\t\tTC\t+1\t\t# -BLOCK DATA IN IF DSPCOUNT IS -\n\t\tTC\tENDOFJOB\t# -0\n\t\tTC\tGETINREL\n\t\tCCS\tCLPASS\t\t# IF CLPASS IS + OR +0, MAKE IT +0.\n\t\tCAF\tZERO\n\t\tTS\tCLPASS\n\t\tTC\t+1\n\t\tINDEX\tCHAR\n\t\tCAF\tRELTAB\n\t\tMASK\tLOW5\n\t\tTS\tCODE\n\t\tCA\tDSPCOUNT\n\t\tTS\tCOUNT\n\t\tTC\tDSPIN\n# Page 317\n\t\tCAF\tTHREE\n\t\tMASK\tDECBRNCH\n\t\tCCS\tA\t\t# +0, OCTAL.  +1, + DEC.  +2, - DEC.\n\t\tTC\tDECTOBIN\t# +\n\t\tINDEX\tINREL\t\t# +0 OCTAL\n\t\tXCH\tVERBREG\n\t\tTS\tCYL\n\t\tCS\tCYL\n\t\tCS\tCYL\n\t\tXCH\tCYL\n\t\tAD\tCHAR\n\t\tTC\tENDNMTST\nDECTOBIN\tINDEX\tINREL\n\t\tXCH\tVERBREG\n\t\tTS\tMPAC\t\t# SUM X 2EXP-14 IN MPAC\n\t\tCAF\tZERO\n\t\tTS\tMPAC    +1\n\t\tCAF\tTEN\t\t# 10 X 2EXP-14\n\t\tTC\tSHORTMP\t\t# 10SUM X 2EXP-28 IN MPAC, MPAC+1\n\t\tXCH\tMPAC    +1\n\t\tAD\tCHAR\n\t\tTS\tMPAC    +1\n\t\tTC\tENDNMTST\t# NO OF\n\t\tADS\tMPAC\t\t# OF MUST BE 5TH CHAR\n\t\tTC\tDECEND\nENDNMTST\tINDEX\tINREL\n\t\tTS\tVERBREG\n\t\tCS\tDSPCOUNT\n\t\tINDEX\tINREL\n\t\tAD\tCRITCON\n\t\tEXTEND\n\t\tBZF\tENDNUM\t\t# -0, DSPCOUNT = CRITCON\n\t\tTC\tMORNUM\t\t# -, DSPCOUNT G/ CRITCON\nENDNUM\t\tCAF\tTHREE\n\t\tMASK\tDECBRNCH\n\t\tCCS\tA\n\t\tTC\tDECEND\nENDALL\t\tCS\tDSPCOUNT\t# BLOCK NUMIN BY PLACING DSPCOUNT\n\t\tTC\tMORNUM  +1\t# NEGATIVELY\nDECEND\t\tCS\tONE\n\t\tAD\tINREL\n\t\tEXTEND\n\t\tBZMF\tENDALL\t\t# IF INREL=0,1 (VBREG,NNREG) LEAVE WHOLE\n\t\tTC\tDMP\t\t# IF INREL=2,3,4 (R1,R2,R3), CONVERT TO FRAC\n\t\t\t\t\t# MULT SUM X 2EXP-28 IN MPAC, MPAC+1 BY\n\t\tADRES\tDECON\t\t# 2EXP14/10EXP5, GIVES (SUM/10EXP5)X2EXP-14\n\t\tCAF\tTHREE\t\t# IN MPAC, +1, +2.\n\t\tMASK\tDECBRNCH\n\t\tINDEX\tA\n\t\tTC\t+0\n# Page 318\n\t\tTC\t+DECSGN\n\t\tEXTEND\t\t\t# - CASE\n\t\tDCS\tMPAC   +1\n\t\tDXCH\tMPAC   +1\n+DECSGN\t\tXCH\tMPAC   +2\n\t\tINDEX\tINREL\n\t\tTS\tXREGLP -2\n\t\tXCH\tMPAC   +1\n\t\tINDEX\tINREL\n\t\tTS\tVERBREG\n\t\tTC\tENDALL\nMORNUM\t\tCCS\tDSPCOUNT\t# DECREMENT DSPCOUNT\n\t\tTS\tDSPCOUNT\n\t\tTC\tENDOFJOB\n\nCRITCON\t\tOCT\t22\t\t# (DEC 18)\n\t\tOCT\t20\t\t# (DEC 16)\n\t\tOCT\t12\t\t# (DEC 10)\n\t\tOCT\t5\n\t\tOCT\t0\n\nDECON\t\t2DEC\tE-5 B14\t\t# 2EXP14/10EXP5 = .16384 DEC\n\n\n# GETINREL GETS PROPER DATA REG REL ADDRESS FOR CURRENT C(DSPCOUNT) AND\n# PUTS IN INTO INREL. +0 VERBREG, 1 NOUNREG, 2 XREG, 3 YREG, 4 ZREG.\n\nGETINREL\tINDEX\tDSPCOUNT\n\t\tCAF\tINRELTAB\n\t\tTS\tINREL\t\t# (A TEMP, REG)\n\t\tTC\tQ\n\nINRELTAB\tOCT\t4\t\t# R3D5 (DSPCOUNT = 0)\n\t\tOCT\t4\t\t# R3D4\t\t =(1)\n\t\tOCT\t4\t\t# R3D3\t\t =(2)\n\t\tOCT\t4\t\t# R3D2\t\t =(3)\n\t\tOCT\t4\t \t# R3D1\t\t =(4)\n\t\tOCT\t3\t\t# R2D5\t\t =(5)\n\t\tOCT\t3\t\t# R2D4\t\t =(6)\n\t\tOCT\t3\t\t# R2D3\t\t =(7)\n\t\tOCT\t3\t\t# R2D2\t\t =(8D)\n\t\tOCT\t3\t\t# R2D1\t\t =(9D)\n\t\tOCT\t2\t\t# R1D5\t\t =(10D)\n\t\tOCT\t2\t\t# R1D4\t\t =(11D)\n\t\tOCT\t2\t\t# R1D3\t\t =(12D)\n\t\tOCT\t2\t\t# R1D2\t\t =(13D)\n\t\tOCT\t2\t\t# R1D1\t\t =(14D)\n\t\tTC\tCCSHOLE\t\t# NO DISCOUNT NUMBER = 15D\n\t\tOCT\t1\t\t# ND2\t\t =(16D)\n# Page 319\n\t\tOCT\t1\t\t# ND1\t\t =(17D)\n\t\tOCT\t0\t\t# VD2\t\t =(18D)\n\t\tOCT\t0\t\t# VD1\t\t =(19D)\n\nVERB\t\tCAF\tZERO\n\t\tTS\tVERBREG\n\t\tCAF\tVD1\nNVCOM\t\tTS\tDSPCOUNT\n\t\tTC\t2BLANK\n\t\tCAF\tONE\n\t\tTS\tDECBRNCH\t# SET FOR DEC V/N CODE\n\t\tCAF\tZERO\n\t\tTS\tREQRET\t\t# SET FOR ENTPAS0\n\t\tCAF\tENDINST\t\t# IF DSPALARM OCCURS BEFORE FIRST ENTPAS0\n\t\tTS\tENTRET\t\t# OR NVSUB, ENTRET MUST ALREADY BE SET\n\t\t\t\t\t# TO TC ENDOFJOB\n\t\tTC\tENDOFJOB\nNOUN\t\tCAF\tZERO\n\t\tTS\tNOUNREG\n\t\tCAF\tND1\t\t# ND1, OCT 21 (DEC 17)\n\t\tTC\tNVCOM\n\n\nNEGSGN\t\tTC\tSIGNTEST\n\t\tTC \t-ON\n\t\tCAF\tTWO\nBOTHSGN\t\tINDEX\tINREL\t\t# SET DEC COMP BIT TO 1 (IN DECBRNCH)\n\t\tAD\tBIT7\t\t# BIT 5 FOR R1.  BIT 4 FOR R2.\n\t\tADS\tDECBRNCH\t# BIT 3 FOR R3.\nFIXCLPAS\tCCS\tCLPASS\t\t# IF CLPASS IS + OR +0, MAKE IT +0.\n\t\tCAF\tZERO\n\t\tTS\tCLPASS\n\t\tTC\t+1\n\t\tTC\tENDOFJOB\n\nPOSGN\t\tTC\tSIGNTEST\n\t\tTC\t+ON\n\t\tCAF\tONE\n\t\tTC\tBOTHSGN\n\n+ON\t\tLXCH\tQ\n\t\tTC\tGETINREL\n\t\tINDEX\tINREL\n\t\tCAF\tSGNTAB  -2\n\t\tTS\tSGNOFF\n\t\tAD \tONE\n\t\tTS\tSGNON\nSGNCOM\t\tCAF\tZERO\n\t\tTS\tCODE\n# Page 320\n\t\tXCH\tSGNOFF\n\t\tTC\t11DSPIN\n\t\tCAF\tBIT11\n\t\tTS\tCODE\n\t\tXCH\tSGNON\n\t\tTC\t11DSPIN\n\t\tTC\tL\n-ON\t\tLXCH\tQ\n\t\tTC\tGETINREL\n\t\tINDEX\tINREL\n\t\tCAF\tSGNTAB  -2\n\t\tTS\tSGNON\n\t\tAD\tONE\n\t\tTS\tSGNOFF\n\t\tTC\tSGNCOM\n\nSGNTAB\t\tOCT\t5\t\t# -R1\n\t\tOCT\t3\t\t# -R2\n\t\tOCT\t0\t\t# -R3\n\n\nSIGNTEST\tLXCH\tQ\t\t# ALLOWS +,- ONLY WHEN DSPCOUNT=R1D1,\n\t\tCAF\tTHREE\t\t# R2D1, OR R3D1. ALLOWS ONLY FIRST OF\n\t\tMASK\tDECBRNCH\t# CONSECUTIVE +/- CHARACTERS.\n\t\tCCS\tA\t\t# IF LOW2 BITS OF DECBRNCH NOT 0, SIGN\n\t\tTC\tENDOFJOB\t# FOR THIS WORD ALREADY IN. REJECT.\n\t\tCS\tR1D1\n\t\tTC\tSGNTST1\n\t\tCS\tR2D1\n\t\tTC\tSGNTST1\n\t\tCS\tR3D1\n\t\tTC\tSGNTST1\n\t\tTC\tENDOFJOB\t# NO MATCH FOUND. SIGN ILLEGAL\nSGNTST1\t\tAD\tDSPCOUNT\n\t\tEXTEND\n\t\tBZF\t+2\t\t# MATCH FOUND\n\t\tTC\tQ\n\t\tTC\tL\t\t# SIGN LEGAL\n\n\n# CLEAR BLANKS WHICH R1, R2, R3 IS CURRENT OR LAST TO BE DISPLAYED(PERTINE\n# NT XREG,YREG,ZREG IS CLEARED). SUCCESSIVE CLEARS TAKE CARE OF EACH RX\n# L/ RC UNTIL R1 IS DONE. THEN NO FURTHER ACTION\n#\n# THE SINGLE COMPONENT LOAD VERBS ALLOW ONLY THE SINGLE RC THAT IS\n# APPROPRIATE TO BE CLEARED.\n#\n# CLPASS   +0  PASS0, CAN BE BACKED UP\n#          +NZ  HIPASS, CAN BE BACKED UP\n#          -NZ  PASS0, CANNOT BE BACKED UP\n# Page 321\nCLEAR\t\tCCS\tDSPCOUNT\n\t\tAD\tONE\n\t\tTC\t+2\n\t\tAD\tONE\n\t\tINDEX\tA\t\t# DO NOT CHANGE DSPCOUNT BECAUSE MAY LATER\n\t\tCAF\tINRELTAB\t# FAIL LEGALTST.\n\t\tTS\tINREL\t\t# MUST SET INREL, EVEN FOR HIPASS.\n\t\tCCS\tCLPASS\n\t\tTC\tCLPASHI\t\t# +\n\t\tTC\t+2\t\t# +0    IF CLPASS IS +0 OR -, IT IS PASS0\n\t\tTC\t+1\t\t# -\n\t\tCA\tINREL\n\t\tTC\tLEGALTST\n\t\tTC\tCLEAR1\nCLPASHI\t\tCCS\tINREL\n\t\tTS\tINREL\n\t\tTC\tLEGALTST\n\t\tCAF\tDOUBLK +2\t# +3 TO - NUMBER. BACKS DATA REQUESTS.\n\t\tADS\tREQRET\n\t\tCA\tINREL\n\t\tTS\tMIXTEMP\t\t# TEMP STORAGE FOR INREL\n\t\tEXTEND\n\t\tDIM\tVERBREG\t\t# DECREMENT VERB AND RE-DISPLAY\n\t\tTC\tBANKCALL\n\t\tCADR\tUPDATVB\n\t\tCA\tMIXTEMP\n\t\tTS\tINREL\t\t# RESTORE INREL\nCLEAR1\t\tTC\tCLR5\n\t\tINCR\tCLPASS\t\t# ONLY IF CLPASS IS + OR +0\n\t\tTC\tENDOFJOB\t# SET FOR HIGHER PASS.\nCLR5\t\tLXCH\tQ\t\t# USED 5BLANK BUT AVOIDS ITS TC GETINREL\n\t\tTC\t5BLANK +2\nLEGALTST\tAD\tNEG2\n\t\tCCS\tA\n\t\tTC\tQ\t\t# LEGAL  INREL G/ 2\n\t\tTC\tCCSHOLE\n\t\tTC\tENDOFJOB\t# ILLEGAL   INREL= 0,1\n\t\tTC\tQ\t\t# LEGAL    INREL = 2\n\n\n# 5BLANK BLANKS 5 CHAR DISPLAY WORD IN R1, R2, OR R3. IT ALSO ZEROES XREG,\n# YREG, OR ZREG.PLACE ANY + DSPCOUNT NUMBER FOR PERTINENT RC INTO DSPCOUNT\n# DSPCOUNT IS LEFT SET TO LEFT MOST DSP NUMB FOR RC JUST BLANKED.\n\n\t\tTS\tDSPCOUNT\t# NEEDED FOR BLANKSUB\n5BLANK\t\tLXCH\tQ\n\t\tTC\tGETINREL\n\t\tCAF\tZERO\n\t\tINDEX\tINREL\n\t\tTS\tVERBREG\t\t# ZERO X, Y, Z, REG.\n# Page 322\n\t\tINDEX\tINREL\n\t\tTS\tXREGLP\t -2\n\t\tTS\tCODE\n\t\tINDEX\tINREL\t\t# ZERO PERTINENT DEC COMP BIT.\n\t\tCS\tBIT7\t\t# PROTECT OTHERS\n\t\tMASK\tDECBRNCH\n\t\tMASK\tBRNCHCON\t# ZERO LOW 2 BITS.\n\t\tTS\tDECBRNCH\n\t\tINDEX\tINREL\n\t\tCAF\tSINBLANK -2\t# BLANK ISOLATED CHAR SEPARATELY\n\t\tTS\tCOUNT\n\t\tTC\tDSPIN\n5BLANK1\t\tINDEX\tINREL\n\t\tCAF\tDOUBLK\t -2\n\t\tTS\tDSPCOUNT\n\t\tTC\t2BLANK\n\t\tCS\tTWO\n\t\tADS\tDSPCOUNT\n\t\tTC\t2BLANK\n\t\tINDEX\tINREL\n\t\tCAF\tR1D1\t -2\n\t\tTS\tDSPCOUNT\t# SET DSPCOUNT TO LEFT MOST DSP NUMBER\n\t\tTC\tL\t\t# OF REG. JUST BLANKED\n\nSINBLANK\tOCT\t16\t\t# DEC 14\n\t\tOCT\t5\n\t\tOCT\t4\nDOUBLK\t\tOCT\t15\t\t# DEC 13\n\t\tOCT\t11\t\t# DEC 9\n\t\tOCT\t3\n\nBRNCHCON\tOCT\t77774\n\n# 2BLANK BLANKS TWO CHAR. PLACE DSP NUMBER OF LEFT CHAR  OF THE PAIR INTO\n# DSPCOUNT. THIS NUMBER IS LEFT IN DSPCOUNT\n\n2BLANK\t\tCA\tDSPCOUNT\n\t\tTS\tSR\n\t\tCS\tBLANKCON\n\t\tINHINT\n\t\tINDEX\tSR\n\t\tXCH\tDSPTAB\n\t\tEXTEND\n\t\tBZMF \t+2\t\t# IF OLD CONTENTS -, NOUT OK\n\t\tINCR\tNOUT\t\t# IF OLD CONTENTS +, +1 TO NOUT\n\t\tRELINT\t\t\t# IF -,NOUT OK\n\t\tTC\tQ\nBLANKCON\tOCT\t4000\n\n# Page 323\n# ENTER PASS 0 IS THE EXECUTE FUNCTION. HIGHER ORDER ENTERS ARE TO LOAD\n# DATA. THE SIGN OF REQRET DETERMINES THE PASS, + FOR PASS 0,- FOR HIGHER\n# PASSES.\n#\n#\n# MACHINE CADR TO BE SPECIFIED (MCTBS) NOUNS DESIRE AN ECADR TO BE LOADED\n# WHEN USED WITH LOAD VERBS, MONITOR VERBS, OR DISPLAY VERBS (EXCEPT\n# VERB = FIXED MEMORY DISPLAY, WHICH REQUIRES AN FCADR).\n\n\n\t\tBANK\t41\n\t\tSETLOC\tPINBALL2\n\t\tBANK\n\n\t\tCOUNT\t41/PIN\n\nNVSUBB\t\tTC\tNVSUB1\t\t# STANDARD LEAD INS. DONT MOVE.\nLOADLV1\t\tTC\tLOADLV\n\n# END OF STANDARD LEAD INS.\n\n\nENTER\t\tCAF\tZERO\n\t\tTS\tCLPASS\n\t\tCAF\tENDINST\n\t\tTS\tENTRET\n\t\tCCS\tREQRET\n\t\tTC\tENTPAS0\t\t# IF +, PASS 0\n\t\tTC\tENTPAS0\t\t# IF +, PASS 0\n\t\tTC\t+1\t\t# IF -, NOT PASS 0\nENTPASHI\tCAF\tMMADREF\n\t\tAD\tREQRET\t\t# IF L/ 2 CHAR IN FOR MM CODE, ALARM\n\t\tEXTEND\t\t\t# AND RECYCLE(DECIDE AT MMCHANG+1).\n\t\tBZF\tACCEPTWD\n\t\tCAF\tTHREE\t\t# IF DEC, ALARM IF L/ 5 CHAR IN FOR DATA,\n\t\tMASK\tDECBRNCH\t# BUT LEAVE REQRET - AND FLASH ON, SO\n\t\tCCS\tA\t\t# OPERATOR CAN SUPPLY MISSING NUMERICAL\n\t\tTC\t+2\t\t# CHARACTERS AND CONTINUE.\n\t\tTC\tACCEPTWD\t# OCTAL. ANY NUMBER OF CHAR OK.\n\t\tCCS\tDSPCOUNT\n\t\tTC\tGODSPALM\t# LESS THAN 5 CHAR DEC(DSPCOUNT IS +)\n\t\tTC\tGODSPALM\t# LESS THAN 5 CHAR DEC(DSPCOUNT IS +)\n\t\tTC\t+1\t\t# 5 CHAR IN (DSPCOUNT IS -)\nACCEPTWD\tCS\tREQRET\t\t# 5 CHAR IN (DSPCOUNT IS -)\n\t\tTS\tREQRET\t\t# SET REQRET +.\n\t\tTC\tFLASHOFF\n\t\tTC\tREQRET\n\nENTEXIT\t\t=\tENTRET\n\nMMADREF\t\tADRES\tMMCHANG +1\t# ASSUMES TC REQMM AT MMCHANG.\n\n# Page 324\nLOWVERB\t\tDEC\t28\t\t# LOWER VERB THAT AVOIDS NOUN TEST.\n\nENTPAS0\t\tCAF\tZERO\t\t#  NOUN VERB SUB ENTERS HERE\n\t\tTS\tDECBRNCH\n\t\tCS\tVD1\t\t# BLOCK FURTHER NUM CHAR, SO THAT STRAY\n\t\tTS\tDSPCOUNT\t# CHAR DO NOT GET INTO VERB OR NOUN LTS.\nTESTVB\t\tCS\tVERBREG\t\t# IF VERB IS G/E LOWVB, SKIP NOUN TEST.\n\t\tTS\tVERBSAVE\t# SAVE VERB FOR POSSIBLE RECYCLE.\n\t\tAD\tLOWVERB\t\t# LOWVERB - VB\n\t\tEXTEND\n\t\tBZMF\tVERBFAN\t\t# VERB G/E LOWVERB\nTESTNN\t\tEXTEND\t\t\t# VERB L/ LOWVERB\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\t+2\t\t# NORMAL\n\t\tTC\tMIXNOUN\t\t# MIXED\n\t\tCCS\tNNADTEM\t\t# NORMAL\n\t\tTC\tVERBFAN -2\t#      NORMAL IF +\n\t\tTC\tGODSPALM\t# NOT IN USE   IF +0\n\t\tTC\tREQADD\t\t# SPECIFY MACHINE CADR IF -\n\t\tINCR\tNOUNCADR\t# AUGMENT MACHINE CADR IF -0\n\t\tTC\tSETNADD\t\t# ECADR FROM NOUNCADR. SETS EB, NOUNADD.\n\t\tTC\tINTMCTBS +2\nREQADD\t\tCAF\tBIT15\t\t# SET CLPASS FOR PASS0 ONLY\n\t\tTS\tCLPASS\n\t\tCS\tENDINST\t\t# TEST IF REACHED HERE FROM INTERNAL OR\n\t\tAD\tENTEXIT\t\t#             FROM EXTERNAL\n\t\tEXTEND\n\t\tBZF\t+2\t\t# EXTERNAL MACH CADR TO BE SPECIFIED\n\t\tTC\tINTMCTBS\n\t\tTC\tREQDATZ\t\t# EXTERNAL MACH CADR TO BE SPECIFIED\n\t\tCCS\tDECBRNCH\t# ALARM AND RECYCLE IF DECIMAL USED\n\t\tTC\tALMCYCLE\t# FOR MCTBS.\n\t\tCS\tVD1\t\t# OCTAL USED  OK\n\t\tTS\tDSPCOUNT\t# BLOCK NUM CHAR IN\n\t\tCCS\tCADRSTOR\n\t\tTC\t+3\t\t# EXTERNAL MCTBS DISPLAY WILL LEAVE FLASH\n\t\tTC\tUSEADD\t\t# ON IF ENDIDLE NOT = +0.\n\t\tTC\t+1\n\t\tTC\tFLASHON\nUSEADD\t\tXCH\tZREG\n\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SET EB, NOUNADD.\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TAB E READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tTC\tVERBFAN\n\n\t\tEBANK=\tDSPCOUNT\n# Page 325\nLODNNLOC\t2CADR\tLODNNTAB\n\nNEG5\t\tOCT\t77772\n\nINTMCTBS\tCA\tMPAC\t+2\t# INTERNAL MACH CADR TO BE SPECIFIED.\n\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SET EB, NOUNADD.\n\t\tCS\tFIVE\t\t# NVSUB CALL LEFT CADR IN MPAC+2 FOR MACH\n\t\tAD\tVERBREG\t\t# CADR TO BE SPECIFIED.\n\t\tEXTEND\n\t\tBZF\tVERBFAN\t\t# DONT DISPLAY CADR IF VB = 05.\n\t\tCAF\tR3D1\t\t# VB NOT = 05. DISPLAY CADR.\n\t\tTS\tDSPCOUNT\n\t\tCA\tNOUNCADR\n\t\tTC\tDSPOCTWO\n\t\tTC\tVERBFAN\n\n\t\tAD\tONE\n\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SETS EB, NOUNADD.\nVERBFAN\t\tCS\tLST2CON\n\t\tAD\tVERBREG\t\t# VERB-LST2CON\n\t\tCCS\tA\n\t\tAD\tONE\t\t# VERB G/ LST2CON\n\t\tTC\t+2\n\t\tTC\tVBFANDIR\t# VERB L/ LST2CON\n\t\tTS\tMPAC\n\t\tTC\tRELDSP\t\t# RELEASE DISPLAY SYST\n\t\tTC\tPOSTJUMP\t# GO TO GOEXTVB WITH VB-40 IN MPAC.\n\t\tCADR\tGOEXTVB\nLST2CON\t\tDEC\t40\t\t# FIRST LIST2 VERB (EXTENDED VERB)\n\nVBFANDIR\tINDEX\tVERBREG\n\t\tCAF\tVERBTAB\n\t\tTC\tBANKJUMP\n\nVERBTAB\t\tCADR\tGODSPALM\t# VB00 ILLEGAL\n\t\tCADR\tDSPA\t\t# VB01 DISPLAY OCT COMP 1 (R1)\n\t\tCADR\tDSPB\t\t# VB02 DISPLAY OCT COMP 2 (R1)\n\t\tCADR\tDSPC\t\t# VB03 DISPLAY OCT COMP 3 (R1)\n\t\tCADR\tDSPAB\t\t# VB04 DISPLAY OCT COMP 1,2 (R1,R2)\n\t\tCADR\tDSPABC\t\t# VB05 DISPLAY OCT COMP 1,2,3 (R1,R2,R3)\n\t\tCADR\tDECDSP\t\t# VB06 DECIMAL DISPLAY\n\t\tCADR\tDSPDPDEC\t# VB07 DP DECIMAL DISPLAY (R1,R2)\n\t\tCADR\tGODSPALM\t# VB08 SPARE\n\t\tCADR\tGODSPALM\t# VB09 SPARE\n\t\tCADR\tDSPALARM\t# VB10 SPARE\n\t\tCADR\tMONITOR\t\t# VB11 MONITOR OCT COMP 1 (R1)\n\t\tCADR\tMONITOR\t\t# VB12 MONITOR OCT COMP 2 (R1)\n\t\tCADR\tMONITOR\t\t# VB13 MONITOR OCT COMP 3 (R1)\n\t\tCADR\tMONITOR\t\t# VB14 MONITOR OCT COMP 1,2 (R1,R2)\n# Page 326\n\t\tCADR\tMONITOR\t\t# VB15 MONITOR OCT COMP 1,2,3 (R1,R2,R3)\n\t\tCADR\tMONITOR\t\t# VB16 MONITOR DECIMAL\n\t\tCADR\tMONITOR\t\t# VB17 MONITOR DP DEC (R1,R2)\n\t\tCADR\tGODSPALM\t# VB18 SPARE\n\t\tCADR\tGODSPALM\t# VB19 SPARE\n\t\tCADR\tGODSPALM\t# VB20 SPARE\n\t\tCADR\tALOAD\t\t# VB21 LOAD COMP 1 (R1)\n\t\tCADR\tBLOAD\t\t# VB22 LOAD COMP 2 (R2)\n\t\tCADR\tCLOAD\t\t# VB23 LOAD COMP 3 (R3)\n\t\tCADR\tABLOAD\t\t# VB24 LOAD COMP 1,2 (R1,R2)\n\t\tCADR\tABCLOAD\t\t# VB25 LOAD COMP 1,2,3 (R1,R2,R3)\n\t\tCADR\tGODSPALM\t# VB26 SPARE\n\t\tCADR\tDSPFMEM\t\t# VB27 FIXED MEMORY DISPLAY\n\t\t\t\t\t# THE FOLLOWING VERBS MAKE NO NOUN TEST\n\t\tCADR\tGODSPALM\t# VB28 SPARE\n\t\tCADR\tGODSPALM\t# VB29 SPARE\nREQEXLQC\tCADR\tVBRQEXEC\t# VB30 REQUEST EXECUTIVE\n\t\tCADR\tVBRQWAIT\t# VB31 REQUEST WAITLIST\n\t\tCADR\tVBRESEQ\t\t# VB32 RESEQUENCE\n\t\tCADR\tVBPROC\t\t# VB33 PROCEED WITHOUT DATA\n\t\tCADR\tVBTERM\t\t# VB34 TERMINATE CURRENT TEST OR LOAD REQ\n\t\tCADR\tVBTSTLTS\t# VB35 TEST LIGHTS\n\t\tCADR\tSLAP1\t\t# VB36 FRESH START\n\t\tCADR\tMMCHANG\t\t# VB37 CHANGE MAJOR MODE\n\t\tCADR\tGODSPALM\t# VB38 SPARE\n\t\tCADR\tGODSPALM\t# VB39 SPARE\n\n\n# THE LIST2 VERBFAN IS LOCATED IN THE EXTENDED VERB BANK.\n# Page 327\n# NNADTAB CONTAINS A RELATIVE ADDRESS, IDADDREL(IN LOW 10 BITS), REFERRING\n# TO WHERE 3 CONSECUTIVE ADDRESSES ARE STORED (IN IDADDTAB).\n# MIXNOUN GETS DATA AND STORES IN MIXTEMP,+1,+2. IT SETS NOUNADD FOR\n#  MIXTEMP.\n\nMIXNOUN\t\tCCS\tNNADTEM\n\t\tTC\t+4\t\t# +  IN USE\n\t\tTC\tGODSPALM\t# +0  NOT IN USE\n\t\tTC\t+2\t\t# -  IN USE\n\t\tTC\t+1\t\t# -0  IN USE\n\t\tCS\tSIX\n\t\tAD\tVERBREG\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# VERB L/E 6\n\t\tTC\tVERBFAN\t\t# AVOID MIXNOUN SWAP IF VB NOT = DISPLAY\n\t\tCAF\tTWO\nMIXNN1\t\tTS\tDECOUNT\n\t\tAD\tMIXAD\n\t\tTS\tNOUNADD\t\t# SET NOUNADD TO MIXTEMP + K\n\t\tINDEX\tDECOUNT\t\t# GET IDADDTAB ENTRY FOR COMPONENT K\n\t\tCA\tIDAD1TEM\t# OF NOUN.\n\t\tTS\tNOUNTEM\n\t\t\t\t\t# TEST FOR DP(FOR OCT DISPLAY). IF SO, GET\n\t\t\t\t\t#   MINOR PART ONLY.\n\t\tTC\tSFRUTMIX\t# GET SF ROUT NUMBER IN A\n\t\tTC\tDPTEST\n\t\tTC\tMIXNN2\t\t# NO DP\n\t\tINCR\tNOUNTEM\t\t# DP  GET MINOR PART\nMIXNN2\t\tCA\tNOUNTEM\n\t\tMASK\tLOW11\t\t# ESUBK (NO DP)  OR (ESUBK)+1    FOR DP\n\t\tTC\tSETEBANK\t# SET EBANK, LEAVE EADRES IN A.\n\t\tINDEX\tA\t\t# PICK UP C(ESUBK)  NOT DP\n\t\tCA\t0\t\t# OR C((ESUBK)+1)  FOR DP MINOR PART\n\t\tINDEX\tNOUNADD\n\t\tXCH\t0\t\t# STORE IN MIXTEM + K\n\t\tCCS\tDECOUNT\n\t\tTC\tMIXNN1\n\t\tTC\tVERBFAN\n\nMIXAD\t\tTC\tMIXTEMP\n\n\n# DPTEST   ENTER WITH SF ROUT NUMBER IN A.\n#          RETURNS TO L+1 IF NO DP.\n#          RETURNS TO L+2 IF DP.\n\nDPTEST\t\tINDEX\tA\n\t\tTCF\t+1\n\t\tTC\tQ\t\t# OCTAL ONLY  NO DP\n\t\tTC\tQ\t\t# FRACT NO DP\n# Page 328\n\t\tTC\tQ\t\t# DEG  NO DP\n\t\tTC\tQ\t\t# ARITH  NO DP\n\t\tTCF\tDPTEST1\t\t# DP1OUT\n\t\tTCF\tDPTEST1\t\t# DP2OUT\n\t\tTC\tQ\t\t# OPDEG  NO DP\n\t\tTCF\tDPTEST1\t\t# DP3OUT\n\t\tTC\tQ\t\t# HMS   NO DP\n\t\tTC\tQ\t\t# M/S   NO DP\n\t\tTCF\tDPTEST1\t\t# DP4OUT\n\t\tTC\tQ\t\t# ARITH1   NO DP\n\t\tTC\tQ\t\t# 2INTOUT  NO DP TO GET HI PART IN MPAC\n\t\tTCF\tDPTEST1\t\t# DPFRACOT\nDPTEST1\t\tINDEX\tQ\n\t\tTC\t1\t\t# RETURN TO L+2\n\n\nREQDATX\t\tCAF\tR1D1\n\t\tTCF\tREQCOM\nREQDATY\t\tCAF\tR2D1\n\t\tTCF\tREQCOM\nREQDATZ\t\tCAF\tR3D1\nREQCOM\t\tTS\tDSPCOUNT\n\t\tCS\tQ\n\t\tTS\tREQRET\n\t\tTC\tBANKCALL\n\t\tCADR\t5BLANK\n\t\tTC\tFLASHON\nENDRQDAT\tTC\tENTEXIT\n\n\t\tTS\tNOUNREG\nUPDATNN\t\tXCH\tQ\n\t\tTS\tUPDATRET\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCCS\tNNADTEM\n\t\tAD\tONE\t\t# NORMAL\n\t\tTCF\tPUTADD\n\t\tTCF\tPUTADD +1\t# MCTBS  DONT CHANGE NOUNADD\n\t\tTCF\tPUTADD +1\t# MCTBI  DONT CHANGE NOUNADD\nPUTADD\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SETS EB, NOUNADD.\n\t\tCAF\tND1\n\t\tTS\tDSPCOUNT\n\t\tCA\tNOUNREG\n\t\tTCF\tUPDAT1\n\n\t\tTS\tVERBREG\nUPDATVB\t\tXCH\tQ\n\t\tTS\tUPDATRET\n\t\tCAF\tVD1\n# Page 329\n\t\tTS\tDSPCOUNT\n\t\tCA\tVERBREG\nUPDAT1\t\tTC\tPOSTJUMP\t# CANT USE SWCALL TO GO TC DSPDECVN.SINCE\n\t\tCADR\tGOVNUPDT\t# UPDATVB CAN ITSELF BE CALLED BY SWCALL.\n\t\tTC\tUPDATRET\n\n\nGOALMCYC\tTC\tALMCYCLE\t# NEEDED BECAUSE BANKJUMP CANT HANDLE F/F.\n\n\nGODSPALM\tTC\tPOSTJUMP\n\t\tCADR\tDSPALARM\n\n# Page 330\n#          NOUN   TABLES\n# NOUN CODE L/40, NORMAL NOUN CASE.  NOUN CODE G/E 40, MIXED NOUN CASE.\n# FOR NORMAL CASE, NNADTAB CONTAINS ONE       ECADR FOR EACH NOUN.\n# +0 INDICATES NOUN NOT USED.   - ENTRY INDICATES MACHINE CADR(E OR F) TO\n# BE SPECIFIED. -1 INDICATES CHANNEL TO BE SPECIFIED. -0 INDICATES AUGMENT\n# OF LAST MACHINE CADR SUPPLIED.\n#\n# FOR MIXED CASE, NNADTAB CONTAINS ONE INDIRECT ADDRESS(IDADDREL) IN LOW\n# 10 BITS, AND THE COMPONENT CODE NUMBER IN THE HIGH 5 BITS.\n#\n# NNTYPTAB IS A PACKED TABLE OF THE FORM MMMMMNNNNNPPPPP.\n#\n# FOR THE NORMAL CASE,  M-S ARE THE COMPONENT CODE NUMBER.\n#                       N-S ARE THE SF ROUTINE CODE NUMBER.\n#                       P-S ARE THE SF CONSTANT CODE NUMBER.\n#\n# MIXED-CASE,M-S ARE THE SF CONSTANT3 CODE NUMBER      3 COMPONENT CASE\n#            N-S ARE THE SF CONSTANT2 CODE NUMBER\n#            P-S ARE THE SF CONSTANT1 CODE NUMBER\n#            N-S ARE THE SF CONSTANT2 CODE NUMBER      2 COMPONENT CASE\n#            P-S ARE THE SF CONSTANT1 CODE NUMBER\n#            P-S ARE THE SF CONSTANT1 CODE NUMBER       1 COMPONENT CASE\n#\n# THERE IS ALSO AN INDIRECT ADDRESS TABLE(IDADDTAB) FOR MIXED CASE ONLY\n# EACH ENTRY CONTAINS ONE ECADR.    IDADDREL IS THE RELATIVE ADDRESS OF\n# THE FIRST OF THESE ENTRIES.\n# THERE IS ONE ENTRY IN THIS TABEL FOR EACH COMPONENT OF A MIXED NOUN\n# THEY ARE LISTED IN ORDER OF ASCENDING K.\n#\n# THERE IS ALSO A SCALE FACTOR ROUTINE NUMBER TABLE( RUTMXTAB ) FOR MIXED\n# CASE ONLY. THERE IS ONE ENTRY PER MIXED NOUN. THE FORM IS,\n#       QQQQQRRRRRSSSSS\n# Q-S ARE THE SF ROUTINE 3 CODE NUMBER     3 COMPONENT CASE\n# R-S ARE THE SF ROUTINE 2 CODE NUMBER\n# S-S ARE THE SF ROUTINE 1 CODE NUMBER\n# R-S ARE THE SF ROUTINE 2 CODE NUMBER     2 COMPONENT CASE\n# S-S ARE THE SF ROUTINE 1 CODE NUMBER\n#\n#\n# IN OCTAL DISPLAY AND LOAD (OCT OR DEC) VERBS, EXCLUDE USE OF VERBS WHOSE\n# COMPONENT NUMBER IS GREATER THAN THE NUMBER OF COMPONENTS IN NOUN.\n# (ALL MACHINE ADDRESS TO BE SPECIFIED NOUNS ARE 3 COMPONENT.)\n#\n#\n# IN MULTI-COMPONENT LOAD VERBS, NO MIXING OF OCTAL AND DECIMAL DATA\n# COMPONENT WORDS IS ALLOWED.  ALARM IF VIOLATION.\n#\n# IN DECIMAL LOADS OF DATA, 5 NUMERICAL CHARACTERS MUST BE KEYED IN\n# BEFORE EACH ENTER. IF NOT, ALARM.\n\n# Page 331\n# DISPLAY VERBS\n\nDSPABC\t\tCS\tTWO\n\t\tTC\tCOMPTEST\n\t\tINDEX\tNOUNADD\n\t\tCS\t2\n\t\tXCH\tBUF\t+2\nDSPAB\t\tCS\tONE\n\t\tTC\tCOMPTEST\n\t\tINDEX\tNOUNADD\n\t\tCS\t1\n\t\tXCH\tBUF\t+1\nDSPA\t\tTC\tDECTEST\n\t\tTC\tTSTFORDP\n\t\tINDEX\tNOUNADD\n\t\tCS\t0\nDSPCOM1\t\tXCH\tBUF\n\t\tTC\tDSPCOM2\nDSPB\t\tCS\tONE\n\t\tTC\tDCOMPTST\n\t\tINDEX\tNOUNADD\n\t\tCS\t1\n\t\tTC\tDSPCOM1\nDSPC\t\tCS\tTWO\n\t\tTC\tDCOMPTST\n\t\tINDEX\tNOUNADD\n\t\tCS\t2\n\t\tTC\tDSPCOM1\nDSPCOM2\t\tCS\tTWO\t\t# A  B  C  AB  ABC\n\t\tAD\tVERBREG\t\t# -1 -0 +1 +2  +3   IN A\n\t\tCCS\tA\t\t# +0 +0 +0 +1  +2    IN A AFTER CCS\n\t\tTC\tDSPCOM3\n\t\tTC\tENTEXIT\n\t\tTC\t+1\nDSPCOM3\t\tTS\tDISTEM\t\t# +0 +1 +2 INTO DISTEM\n\t\tINDEX\tA\n\t\tCAF\tR1D1\n\t\tTS\tDSPCOUNT\n\t\tINDEX\tDISTEM\n\t\tCS\tBUF\n\t\tTC\tDSPOCTWO\n\t\tXCH\tDISTEM\n\t\tTC\tDSPCOM2 +2\n\n# COMPTEST ALARMS IF COMPONENT NUMBER OF VERB(LOAD OR OCT DISPLAY) IS\n# GREATER THAN THE HIGHEST COMPONENT NUMBER OF NOUN.\nCOMPTEST\tTS\tSFTEMP1\t\t# - VERB COMP\n\t\tLXCH\tQ\nCOMPTST1\tTC\tGETCOMP\n\t\tTC\tLEFT5\n\t\tMASK\tTHREE\t\t# NOUN COMP\n# Page 332\n\t\tAD\tSFTEMP1\t\t# NOUN COMP - VERB COMP\n\t\tCCS\tA\n\t\tTC\tL\t\t# NOUN COMP G/ VERB COMP\n\t\tTC\tCCSHOLE\n\t\tTC\tGODSPALM\t# NOUN COMP L/ VERB COMP\nNDCMPTST\tTC\tL\t\t# NOUN COMP = VERB COMP\n\n\n# DCOMPTST ALARMS IF DECIMAL ONLY BIT (BIT4 OF COMP CODE NUMBER) = 1.\n# IF NOT, IT PERFORMS REGULAR COMPTEST.\nDCOMPTST\tTS\tSFTEMP1\t\t# - VERB COMP\n\t\tLXCH\tQ\n\t\tTC\tDECTEST\n\t\tTC\tCOMPTST1\n\nDECTEST\t\tEXTEND\t\t\t# ALARMS IF DEC ONLY BIT = 1 (BIT4 OF COMP\n\t\tQXCH\tMPAC \t+2\t# CODE NUMBER). RETURNS IF NOT.\n\t\tTC\tGETCOMP\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tTC\tGODSPALM\n\t\tTC\tMPAC \t+2\n\n\nDCTSTCYC\tLXCH\tQ\t\t# ALARMS AND RECYCLES IF DEC ONLY BIT = 1\n\t\tTC\tGETCOMP\t\t# ( BIT4 OF COMP CODE NUMBER). RETURNS\n\t\tMASK\tBIT14\t\t# IF NOT.  USED BY LOAD VERBS.\n\t\tCCS\tA\n\t\tTC\tALMCYCLE\n\t\tTC\tL\n\n\n# NOUNTEST ALARMS IF NO-LOAD BIT (BIT5 OF COMP CODE NUMBER) = 1.\n# IF NOT, IT RETURNS.\nNOUNTEST\tLXCH\tQ\n\t\tTC\tGETCOMP\n\t\tCCS\tA\n\t\tTC\tL\n\t\tTC\tL\n\t\tTC\tGODSPALM\n\nTSTFORDP\tLXCH\tQ\t\t# TEST FOR DP. IF SO, GET MINOR PART ONLY.\n\t\tCA\tNNADTEM\n\t\tAD\tONE\t\t# IF NNADTEM = -1, CHANNEL TO BE SPECIFIED\n\t\tEXTEND\n\t\tBZF\tCHANDSP\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\t+2\t\t# NORMAL\n# Page 333\n\t\tTC\tL\t\t# MIXED CASE ALREADY HANDLED IN MIXNOUN\n\t\tTC\tSFRUTNOR\n\t\tTC\tDPTEST\n\t\tTC\tL\t\t# NO DP\n\t\tINCR\tNOUNADD\t\t# DP    E+1 INTO NOUNADD FOR MINOR PART.\n\t\tTC\tL\n\n\nCHANDSP\t\tCA\tNOUNCADR\n\t\tMASK\tLOW9\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tREAD\t0\n\t\tCS\tA\n\t\tTCF\tDSPCOM1\n\n\nCOMPICK\t\tADRES\tNNTYPTEM\n\t\tADRES\tNNADTEM\n\nGETCOMP\t\tINDEX\tMIXBR\t\t# NORMAL                MIXED\n\t\tCAF\tCOMPICK -1\t# ADRES NNTYPTEM        ADRES NNADTEM\n\t\tINDEX\tA\n\t\tCA\t0\t\t# C(NNTYPTEM)           C(NNADTEM)\n\t\tMASK\tHI5\t\t# GET HI5 OF NNTYPTAB(NORM)OF NNADTAB(MIX)\n\t\tTC\tQ\n\n\nDECDSP\t\tTC\tGETCOMP\n\t\tTC\tLEFT5\n\t\tMASK\tTHREE\n\t\tTS\tDECOUNT\t\t# COMP NUMBER INTO DECOUNT\nDSPDCGET\tTS\tDECTEM\t\t# PICKS UP DATA\n\t\tAD\tNOUNADD\t\t# DECTEM  1COMP +0, 2COMP +1, 3COMP +2\n\t\tINDEX\tA\n\t\tCS\t0\n\t\tINDEX\tDECTEM\n\t\tXCH\tXREG\t\t# CANT USE BUF SINCE DMP USES IT.\n\t\tCCS\tDECTEM\n\t\tTC\tDSPDCGET\t# MORE TO GET\nDSPDCPUT\tCAF\tZERO\t\t# DISPLAYS DATA\n\t\tTS\tMPAC +1\t\t# DECOUNT 1COMP +0, 2COMP +1, 3COMP +2\n\t\tTS\tMPAC +2\n\t\tINDEX\tDECOUNT\n\t\tCAF\tR1D1\n\t\tTS\tDSPCOUNT\n\t\tINDEX\tDECOUNT\n\t\tCS\tXREG\n\t\tTS\tMPAC\n\t\tTC\tSFCONUM\t\t# 2X( SF CON NUMB ) IN A\n# Page 334\n\t\tTS\tSFTEMP1\n\t\tEXTEND\t\t\t# SWITCH BANKS TO SF CONSTANT TABLE\n\t\tDCA\tGTSFOUTL\t#    READING ROUTINE.\n\t\tDXCH\tZ\t\t# LOADS SFTEMP1, SFTEMP2\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tDSPSFNOR\n\t\tTC\tSFRUTMIX\n\t\tTC\tDECDSP3\n\nDSPSFNOR\tTC\tSFRUTNOR\n\t\tTC\tDECDSP3\n\n\t\tEBANK=\tDSPCOUNT\nGTSFOUTL\t2CADR\tGTSFOUT\n\n\nDSPDCEND\tTC\tBANKCALL\t# ALL SFOUT ROUTINES END HERE\n\t\tCADR\tDSPDECWD\n\t\tCCS\tDECOUNT\n\t\tTC\t+2\n\t\tTC\tENTEXIT\n\t\tTS\tDECOUNT\n\t\tTC\tDSPDCPUT\t# MORE TO DISPLAY\n\n\nDECDSP3\t\tINDEX\tA\n\t\tCAF\tSFOUTABR\n\t\tTC\tBANKJUMP\n\nSFOUTABR\tCADR\tPREDSPAL\t# ALARM IF DEC DISP WITH OCTAL ONLY NOUN\n\t\tCADR\tDSPDCEND\n\t\tCADR\tDEGOUTSF\n\t\tCADR\tARTOUTSF\n\t\tCADR\tDP1OUTSF\n\t\tCADR\tDP2OUTSF\n\t\tCADR\tOPDEGOUT\n\t\tCADR\tDP3OUTSF\n\t\tCADR\tHMSOUT\n\t\tCADR\tM/SOUT\n\t\tCADR\tDP2OUTSF\n\t\tCADR\tAROUT1SF\n\t\tCADR\t2INTOUT\n\t\tCADR\tDPFRACOT\nENDRTOUT\tEQUALS\n\n#         THE FOLLOWING IS ATYPICAL SF ROUTINE . IT USES MPAC. LEAVES RESU\n# LTS IN MPAC, MPAC+1. ENDS WITH TC DSPDCEND\n\n# Page 335\n\n\t\tSETLOC\tBLANKCON +1\n\n\t\tCOUNT\t40/PIN\n#    DEGOUTSF SCALES BY .18 THE LOW 14 BITS OF ANGLE , ADDING .18 FOR\n# NUMBERS IN THE NEGATIVE (AGC) RANGE.\n\nDEGOUTSF\tCAF\tZERO\n\t\tTS\tMPAC \t+2\t# SET INDEX FOR FULL SCALE\n\t\tTC\tFIXRANGE\n\t\tTC\t+2\t\t# NO AUGMENT NEEDED (SFTEMP1 AND 2 ARE 0)\n\t\tTC\tSETAUG\t\t# SET AUGMENTER ACCORDING TO C(MPAC +2)\n\t\tTC\tDEGCOM\n\n# OPDEGOUT SCALES BY .45 (THE RANGE IS 90 DEGREES) AND ADDS A 20 DEG BIAS.\n\nOPDEGOUT\tCCS\tMPAC\t\t# RANGE IS 90 DEG\n\t\tXCH\tMPAC\t\t# IF POS OR POS 0 THEN ADD BIAS AND\n\t\tTC\t+3\t\t# CORRECT FOR POSSIBLE OVERFLOW\n\t\tTC\tNEGOPT\t\t# IF NEG NON ZERO\n\t\tAD\tNEG1\t\t# IF NEG ZERO SUBTRACT 1\n\t\tAD\t20BIAS\nBIASCOM\t\tTS\tMPAC\t\t# TEST FOR OVEFLOW\n\t\tTC\t+3\t\t# NO OVFLOW\n\t\tCAF\tBIT15\t\t# IF OVFLOW\n\t\tADS\tMPAC\n\t\tCAF\tTWO\t\t# SET MULTIPLIER TO .45\n\t\tTC\tDEGOUTSF +1\n\nNEGOPT\t\tXCH\tMPAC\t\t# NEGATIVE CASE\n\t\tAD\t20BIAS\n\t\tCCS\tA\n\t\tTC\tBIASCOM\t\t# IF POS THEN SUBTRACT 1 BECASUE OF 2SCOM\n\t\tTC\tCCSHOLE\n\t\tAD\tONE\t\t# IF NEG RESTORE SUM\n\t\tCOM\t\t\t# IF NEG 0 LEAVE NEG 0\n\t\tTC\tBIASCOM\n\nSETAUG\t\tEXTEND\t\t\t# LOADS SFTEMP1 AND SFTEMP2 WITH THE\n\t\tINDEX\tMPAC\t+2\t# DP AUGMENTER CONSTANT\n\t\tDCA\tDEGTAB\n\t\tDXCH\tSFTEMP1\n\t\tTC\tQ\n\nFIXRANGE\tCCS\tMPAC\t\t# IF MPAC IS + RETURN TO L+1\n\t\tTC\tQ\t\t# IF MPAC IS - RETURN TO L+2 AFTER\n\t\tTC\tQ\t\t# MASKING OUT THE SIGN BIT\n\t\tTCF\t+1\n\t\tCS\tBIT15\n\t\tMASK\tMPAC\n# Page 336\n\t\tTS\tMPAC\n\t\tINDEX\tQ\n\t\tTC\t1\n\nDEGCOM\t\tEXTEND\t\t\t# LOADS MULTIPLIER , DOES SHORTMP, AND\n\t\tINDEX\tMPAC +2\t\t# ADDS AUTMENTER.\n\t\tDCA\tDEGTAB\n\t\tDXCH\tMPAC\t\t# ADJUSTED ANGLE IN A\n\t\tTC\tSHORTMP\n\t\tDXCH\tSFTEMP1\n\t\tDAS\tMPAC\n\t\tTC\tSCOUTEND\n\n\nDEGTAB\t\tOCT\t05605\t\t# HI PART OF     .18\n\t\tOCT\t03656\t\t# LOW PART OF    .18\n\t\tOCT\t16314\t\t# HI PART OF     .45\n\t\tOCT\t31463\t\t# LO PART OF     .45\n\n20BIAS\t\tOCT\t16040\t\t# 20 DEG BIAS FOR OPTICS\n\nARTOUTSF\tDXCH\tSFTEMP1\t\t# ASSUMES POINT AT LEFT OF DP SFCON\n\t\tDXCH\tMPAC\n\t\tTC\tPRSHRTMP\t# IF C(A) = -0, SHORTMP FAILS TO GIVE -0.\nSCOUTEND\tTC\tPOSTJUMP\n\t\tCADR\tDSPDCEND\n\nAROUT1SF\tDXCH\tSFTEMP1\t\t# ASSUMES POINT BETWEEN HI AND LO PARTS OF\n\t\tDXCH\tMPAC\t\t# DP SFCON. SHIFTS RESULTS LEFT 14, BY\n\t\tTC\tPRSHRTMP\t# TAKING RESULTS FROM MPAC+1, MPAC+2.\n\t\tTC\tL14/OUT\n\n\nDP1OUTSF\tTC\tDPOUT\t\t# SCALES MPAC, MPAC +1 BY DP SCALE FACTOR\nL14/OUT\t\tXCH\tMPAC \t+2\t# IN SFTEMP1, SFTEMP2. THEN SCALE RESULT\n\t\tXCH\tMPAC \t+1\t# BY B14\n\t\tTS\tMPAC\n\t\tTC\tSCOUTEND\n\n\nDP2OUTSF\tTC\tDPOUT\t\t# SCALES MPAC , MPAC +1 BY DP SCALE FACTOR\n\t\tTC\tSCOUTEND\n\n\nDP3OUTSF\tTC\tDPOUT\t\t# ASSUMES POINT BETWEEN BITS 7-8 OF HIGH\n\t\tCAF\tSIX\t\t# LEFT BY 7, ROUNDS MPAC+2 INTO MPAC+1.\n\t\tTC\tTPLEFTN\t\t# SHIFT LEFT 7.\n\t\tTC\tSCOUTEND\n\n# Page 337\n\nMPAC+6\t\t= \tMPAC +6\t\t# USE MPAC +6 INSTEAD OF OVFIND\n\nDPOUT\t\tXCH\tQ\n\t\tTS\tMPAC+6\n\t\tTC\tREADLO\t\t# GET FRESH DATA FOR BOTH HI AND LO.\n\t\tTC\tTPAGREE\t\t# MAKE DP DATA AGREE\n\t\tTC\tDMP\n\t\tADRES\tSFTEMP1\n\t\tTC\tMPAC+6\n# THE FOLLOWING ROUTINE DISPLAYS TWO CONTIGUOUS SP POSITIVE INTEGERS\n# AS TWO POSITIVE DECIMAL INTEGERS IN RXD1-RXD2 AND RXD4-RXD5 (RXD3 IS\n# BLANKED). THE INTEGER IN THE LOWER NUMBERED ADDRESS IS DISPLAYED IN\n# RXD1-RXD2.\n\n2INTOUT\t\tTC\t5BLANK\t\t# TO BLANK RXD3\n\t\tTC\t+ON\t\t# TURN ON + SIGN\n\t\tCA\tMPAC\n\t\tTC\tDSPDECVN\t# DISPLAY 1ST INTEGER (LIKE VERB AND NOUN)\n\t\tCS\tTHREE\n\t\tINDEX\tDECOUNT\n\t\tAD\tR1D1\t\t# RXD4\n\t\tTS\tDSPCOUNT\n\t\tTC\tREADLO\t\t# GET 2ND INTEGER\n\t\tCA\tMPAC +1\n\t\tTC\tDSPDECVN\t# DISPLAY 2ND INTEGER (LIKE VERB AND NOUN)\n\t\tTC\tPOSTJUMP\n\t\tCADR\tDSPDCEND +2\n\n\nDPFRACOT\tTC\tREADLO\t\t# DP FRACTION TO MPAC,+1\n\t\tTC\tSCOUTEND\n\n\n# READLO PICKS UP FRESH DATA FOR BOTH HI AND LO AND LEAVES IT IN\n# MPAC, MPAC+1. THIS IS NEEDED FOR TIME DISPLAY. IT ZEROES MPAC+2, BUT\n# DOES NOT FORCE TPAGREE.\n\nREADLO\t\tXCH\tQ\n\t\tTS\tTEM4\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tRDLONOR\n\t\tINDEX\tDECOUNT\n\t\tCA\tIDAD1TEM\t# GET IDADDTAB ENTRY FOR COMP K OF NOUN.\n\t\tMASK\tLOW11\t\t# E SUBK\n\t\tTC\tSETEBANK\t# SET EB, LEAVE EADRES IN A.\nREADLO1\t\tEXTEND\t\t\t# MIXED         NORMAL\n\t\tINDEX\tA\t\t# C(ESUBK)      C(E)\n\t\tDCA\t0\t\t# C((E SUBK)+1)       C(E+1)\n\t\tDXCH\tMPAC\n# Page 338\n\t\tCAF\tZERO\n\t\tTS\tMPAC\t+2\n\t\tTC\tTEM4\n\nRDLONOR\t\tCA\tNOUNADD\t\t# E\nENDRDLO\t\tTC\tREADLO1\n\n\n\t\tBANK\t42\n\t\tSETLOC\tPINBALL3\n\t\tBANK\n\n\t\tCOUNT\t42/PIN\n\nHMSOUT\t\tTC\tBANKCALL\t# READ FRESH DATA FOR HI AND LO INTO MPAC,\n\t\tCADR\tREADLO\t\t# MPAC+1.\n\t\tTC\tTPAGREE\t\t# MAKE DP DATA AGREE\n\t\tTC\tSEPSECNR\t# LEAVE FRACT SEC/60 IN MPAC, MPAC+1.LEAVE\n\t\t\t\t\t# WHOLE MIN IN BIT13 OF LOTEMOUT AND ABOVE\n\t\tTC\tDMP\t\t# USE ONLY FRACT SEC/60 MOD 60\n\t\tADRES\tSECON2\t\t# MULT BY .06\n\t\tCAF\tR3D1\t\t# GIVES CENTI-SEC/10EXP5 MOD 60\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\t# DISPLAY SEC MOD 60\n\t\tCADR\tDSPDECWD\n\t\tTC\tSEPMIN\t\t# REMOVE REST OF SECONDS\n\t\tCAF\tMINCON2\t\t# LEAVE FRACT MIN/60 IN MPAC+1. LEAVE\n\t\tXCH\tMPAC\t\t# WHOLE HOURS IN MPAC.\n\t\tTS\tHITEMOUT\t# SAVE WHOLE HOURS.\n\t\tCAF\tMINCON2 +1\n\t\tXCH\tMPAC \t+1\t# USE ONLY FRACT MIN/60 MOD 60\n\t\tTC\tPRSHRTMP\t# IF C(A) = -0, SHORTMP FAILS TO GIVE -0.\n\t\t\t\t\t# MULT BY .0006\n\t\tCAF\tR2D1\t\t# GIVES MIN/10EXP5 MOD 60\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\t# DISPLAY MIN MOD 60\n\t\tCADR\tDSPDECWD\n\t\tEXTEND\t\t\t# MINUTES, SECONDS HAVE BEEN REMOVED\n\t\tDCA\tHRCON1\n\t\tDXCH\tMPAC\n\t\tCA\tHITEMOUT \t# USE WHOLE HOURS\n\t\tTC\tPRSHRTMP\t# IF C(A) = -0, SHORTMP FAILS TO GIVE -0.\n\t\t\t\t\t# MULT BY .16384\n\t\tCAF\tR1D1\t\t# GIVES HOURS/10EXP5\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\t# USE REGULAR DSPDECWD, WITH ROUND OFF.\n\t\tCADR\tDSPDECWD\n\t\tTC\tENTEXIT\n\nSECON1\t\t2DEC*\t1.666666666 E-4 B12*  # 2EXP12/6000\n# Page 339\nSECON2\t\tOCT\t01727\t\t# .06 FOR SECONDS DISPLAY\n\t\tOCT\t01217\nMINCON2\t\tOCT\t00011\t\t# .0006 FOR MINUTES DISLPAY\n\t\tOCT\t32445\nMINCON1\t\tOCT\t02104\t\t# .066..66 UPPED BY 2EXP-28\n\t\tOCT\t10422\nHRCON1\t\t2DEC\t.16384\n\n\t\tOCT\t00000\nRNDCON\t\tOCT\t00062\t\t# .5 SEC\n\n\nM/SOUT\t\tTC\tBANKCALL\t# READ FRESH DATA FOR HI AND LO INTO MPAC.\n\t\tCADR\tREADLO\t\t# MPAC+1.\n\t\tTC\tTPAGREE\t\t# MAKE DP DATA AGREE\n\t\tCCS\tMPAC\t\t# IF MAG OF (MPAC, MPAC+1) G/ 59 M 59 S,\n\t\tTC\t+2\t\t# DISPLAY 59B59, WITH PROPER SIGN.\n\t\tTC\tM/SNORM\t\t# MPAC = +0. L/ 59M58.5S\n\t\tAD\tM/SCON1\t\t# - HI PART OF (59M58.5S) +1  FOR CCS\n\t\tCCS\tA\t\t# MAG OF MPAC - HI PART OF (59M58.5S)\n\t\tTC\tM/SLIMIT\t# G/ 59M58.5S\n\t\tTC\tM/SNORM\t\t# ORIGINAL MPAC = -0. L/ 59M58.5S\n\t\tTC\tM/SNORM\t\t# L/ 59M58.5S\n\t\tCCS\tMPAC \t+1\t# MAG OF MPAC = HI PART OF 59M58.5S\n\t\tTC\t+2\n\t\tTC\tM/SNORM\t\t# MPAC+1 = +0. L/ 59M58.5S\n\t\tAD\tM/SCON2\t\t# - LO PART OF (59M58.5S) +1  FOR CCS\n\t\tCCS\tA\t\t# MAG OF MPAC+1 - LO PART OF (59M58.5S)\n\t\tTC\tM/SLIMIT\t# G/ 59M58.5S\n\t\tTC\tM/SNORM\t\t# ORIGINAL MPAC+1 = -0. L/ 59M58.5S\n\t\tTC\tM/SNORM\t\t# L/ 59M58.5S\nM/SLIMIT\tCCS\tMPAC\t\t# = 59M58.5S    LIMIT\n\t\tCAF\tM/SCON3\t\t# MPAC CANNOT BE +/- 0 AT THIS POINT.\n\t\tTC\t+LIMIT\t\t# FORCE MPAC, MPAC+1 TO +/- 59M58.5S\n\t\tCS\tM/SCON3\n\t\tTS\tMPAC\t\t# WILL DISPLAY 59M59S IN DSPDECNR\n\t\tCS\tM/SCON3 +1\nLIMITCOM\tTS\tMPAC \t+1\n\t\tCAF\tNORMADR\t\t# SET RETURN TO M/SNORM+1.\n\t\tTC\tSEPSECNR +1\n+LIMIT\t\tTS\tMPAC\n\t\tCAF\tM/SCON3 +1\n\t\tTC\tLIMITCOM\nM/SNORM\t\tTC\tSEPSEC\t\t# LEAVE FRACT SEC/60 IN MPAC,MPAC+1. LEAVE\n\t\t\t\t\t# WHOLE MIN IN BIT13 OF LOTEMOUT AND ABOVE\n\t\tCAF\tHISECON\t\t# USE ONLY FRACT SEC/60 MOD 60\n\t\tTC\tSHORTMP\t\t# MULT BY .6 + 2EXP-14\n\t\tCS\tTHREE\t\t# GIVES SEC/100 MOD 60\n\t\tADS\tDSPCOUNT\t# DSPCOUNT ALREADY SET TO RXD1\n\t\tTC\tBANKCALL\t# DISPLAY SEC MOD 60 IN D4D5.\n# Page 340\n\t\tCADR\tDSPDC2NR\n\t\tCAF\tZERO\n\t\tTS\tCODE\n\t\tCS\tTWO\n\t\tINDEX\tDECOUNT\n\t\tAD\tR1D1\t\t# RXD3\n\t\tTS\tCOUNT\n\t\tTC\tBANKCALL\t# BLANK MIDDLE CHAR\n\t\tCADR\tDSPIN\n\t\tTC\tSEPMIN\t\t# REMOVE REST OF SECONDS\n\t\tXCH\tMPAC \t+1\t# LEAVE FRACT MIN/60 IN MPAC+1\n\t\tEXTEND\t\t\t# USE ONLY FRACT MIN/60 MOD 60\n\t\tMP\tHIMINCON\t# MULT BY .6 + 2EXP-7\n\t\tDXCH\tMPAC\t\t# GIVES MIN/100 MOD 60\n\t\tINDEX\tDECOUNT\n\t\tCAF\tR1D1\t\t# RXD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\t# DISPLAY MIN MOD 60 IN D1D2.\n\t\tCADR\tDSPDC2NR\n\t\tTC\tPOSTJUMP\n\t\tCADR\tDSPDCEND +2\n\nHISECON\t\tOCT\t23147\t\t# .6 + 2EXP-14\nHIMINCON\tOCT\t23346\t\t# .6 + 2EXP-7\n\nM/SCON1\t\tOCT\t77753\t\t# - HI PART OF (59M58.5S)\nM/SCON2\t\tOCT\t41126\t\t# - LO PART OF (59M58.5S)\nNORMADR\t\tADRES\tM/SNORM +1\nM/SCON3\t\tOCT\t00025\t\t# 59M 59.5S\n\t\tOCT\t37016\n\nSEPSEC\t\tCCS\tMPAC\t+1\t# IF +, ROUND BY ADDING .5 SEC\n\t\tTCF\tPOSEC\t\t# IF -, ROUND BY SUBTRACTING .5 SEC\n\t\tTCF\tPOSEC\t\t# FINDS TIME IN MPAC, MPAC+1\n\t\tTCF\t+1\t\t# ROUNDS OFF BY +/- .5 SEC\n\t\tEXTEND\t\t\t# LEAVES WHOLE MIN IN BIT13 OF\n\t\tDCS\tRNDCON\t-1\t# LOTEMOUT AND ABOVE.\nSEPSEC1\t\tDAS\tMPAC\t\t# LEAVES FRACT SEC/60 IN MPAC, MPAC+1.\n\t\tTCF\tSEPSECNR\nPOSEC\t\tEXTEND\n\t\tDCA\tRNDCON \t-1\n\t\tTCF\tSEPSEC1\nSEPSECNR\tXCH\tQ\t\t# THIS ENTRY AVOIDS ROUNDING BY .5 SEC\n\t\tTS\tSEPSCRET\n\t\tTC\tDMP\t\t# MULT BY 2EXP12/6000\n\t\tADRES\tSECON1\t\t# GIVES FRACT SEC/60 IN BIT12 OF MPAC+1\n\t\tEXTEND\t\t\t# AND BELOW.\n\t\tDCA\tMPAC\t\t# SAVE MINUTES AND HOURS\n\t\tDXCH\tHITEMOUT\n# Page 341\n\t\tTC\tTPSL1\n\t\tTC\tTPSL1\t\t# GIVES FRACT SEC/60 IN MPAC+1, MPAC+2.\n\t\tCAF\tZERO\n\t\tXCH\tMPAC \t+2\t# LEAVE FRACT SEC/60 IN MPAC, MPAC+1.\n\t\tXCH\tMPAC \t+1\n\t\tXCH\tMPAC\n\t\tTC\tSEPSCRET\n\n\nSEPMIN\t\tXCH\tQ\t\t# FINDS WHOLE MINUTES IN BIT13\n\t\tTS\tSEPMNRET\t# OF LOTEMOUT AND ABOVE.\n\t\tCA\tLOTEMOUT\t# REMOVES REST OF SECONDS.\n\t\tEXTEND\t\t\t# LEAVES FRACT MIN/60 IN MPAC+1.\n\t\tMP\tBIT3\t\t# LEAVES WHOLE HOURS IN MPAC.\n\t\tEXTEND\t\t\t# SR 12, THROW AWAY LP.\n\t\tMP\tBIT13\t\t# SR 2, TAKE FROM LP. = SL 12.\n\t\tLXCH\tMPAC \t+1\t# THIS FORCES BITS 12-1 TO 0 IF +.\n\t\t\t\t\t# FORCES BITS 12-1 TO 1 IF -.\n\t\tCA\tHITEMOUT\n\t\tTS\tMPAC\n\t\tTC\tDMP\t\t# MULT BY 1/15\n\t\tADRES\tMINCON1\t\t# GIVES FRACT MIN/60 IN MPAC+1.\nENDSPMIN\tTC\tSEPMNRET\t# GIVES WHOLE HOURS IN MPAC.\n\n\n# THIS IS A SPECIAL PURPOSE VERB FOR DISPLAYING A DOUBLE PRECISION AGC\n# WORD AS 10 DECIMAL DIGITS ON THE AGC DISPLAY PANEL.  IT CAN BE USED WITH\n# ANY NOUN, EXCEPT MIXED NOUNS. IT DISPLAYS THE CONTENTS\n# OF THE REGISTER NOUNADD IS POINTING TO .  IF USED WITH NOUNS WHICH ARE\n# INHERENTLY NOT DP SUCH AS THE CDU COUNTERS THE DISPLAY WILL BE GARBAGE.\n# DISPLAY IS IN R1 AND R2 ONLY WITH THE SIGN IN R1.\n\n\n\t\tSETLOC\tENDRDLO +1\n\n\t\tCOUNT\t40/PIN\n\nDSPDPDEC\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\t+2\t\t# NORMAL NOUN\n\t\tTC\tDSPALARM\n\t\tEXTEND\n\t\tINDEX\tNOUNADD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n\t\tCAF\tR1D1\n\t\tTS\tDSPCOUNT\n\t\tCAF\tZERO\n\t\tTS\tMPAC \t+2\n\t\tTC\tTPAGREE\n# Page 342\n\t\tTC\tDSP2DEC\nENDDPDEC\tTC\tENTEXIT\n\n# Page 343\n\n# LOAD VERBS           IF ALARM CONDITION IS DETECTED DURING EXECUTE,\n# CHECK FAIL LIGHT IS TURNED ON AND ENDOFJOB. IF ALARM CONDITION IS\n# DETECTED DURING ENTER OF DATA, CHECK FAIL IS TURNED ON AND IT RECYCLES\n# TO EXECUTE OF ORIGINAL LOAD VERB.  RECYCLE CAUSED BY  1) DECIMAL MACHINE\n# CADR  2) MIXTURE OF OCTAL/DECIMAL DATA  3) OCTAL DATA INTO DECIMAL\n# ONLY NOUN  4) DEC DATA INTO OCT ONLY NOUN  5) DATA TOO LARGE FOR SCALE\n# 6) FEWER THAN 3 DATA WORDS LOADED FOR HRS, MIN, SEC NOUN.8(2)-(6) ALARM\n# AND RECYCLE OCCUR AT FINAL ENTER OF SET. (1) ALARM AND RECYCLE OCCUR AT\n# ENTER OF CADR.\n\n\n\t\tSETLOC\tENDRTOUT\n\n\t\tCOUNT\t41/PIN\n\nABCLOAD\t\tCS\tTWO\n\t\tTC\tCOMPTEST\n\t\tTC\tNOUNTEST\t# TEST IF NOUN CAN BE LOADED.\n\t\tCAF\tVBSP1LD\n\t\tTC\tUPDATVB  -1\n\t\tTC\tREQDATX\n\t\tCAF\tVBSP2LD\n\t\tTC\tUPDATVB\t -1\n\t\tTC\tREQDATY\n\t\tCAF\tVBSP3LD\n\t\tTC\tUPDATVB -1\n\t\tTC\tREQDATZ\n\n\nPUTXYZ\t\tCS\tSIX\t\t# TEST THAT THE 3 DATA WORDS LOADED ARE\n\t\tTC\tALLDC/OC\t# ALL DEC OR ALL OCT.\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tZERO\t\t# X COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t0\n\t\tCAF\tONE\t\t# Y COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\t NOUNADD\n\t\tTS\t1\n\t\tCAF\tTWO\t\t# Z COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t2\n\t\tCS\tSEVEN\t\t# IF NOUN 7 HAS JUST BEEN LOADED, SET\n\t\tAD\tNOUNREG\t\t#  FLAG BITS AS SPECIFIED.\n\t\tEXTEND\n\t\tBZF\t+2\n# Page 344\n\t\tTC\tLOADLV\n\t\tCA\tXREG\t\t# ECADR OF FLAG WORD.\n\t\tTC\tSETNCADR +1\t#  SET EBANK, NOUNADD.\n\t\tCA\tZREG\t\t# ZERO TO RESET BITS. NON-ZERO TO SET BITS\n\t\tINHINT\n\t\tEXTEND\n\t\tBZF\tBITSOFF\n\t\tINDEX\tNOUNADD\n\t\tCS\t0\n\t\tMASK\tYREG\t\t# BITS TO BE PROCESSED.\n\t\tINDEX\tNOUNADD\n\t\tADS\t0\t\t# SET BITS.\n\t\tTC\tBITSOFF1\nBITSOFF\t\tCS\tYREG\t\t# BITS TO BE PROCESSED.\n\t\tINDEX\tNOUNADD\n\t\tMASK\t0\n\t\tINDEX\tNOUNADD\n\t\tTS\t0\t\t# RESET BITS.\nBITSOFF1\tRELINT\n\t\tTC\tLOADLV\n\nABLOAD\t\tCS\tONE\n\t\tTC\tCOMPTEST\n\t\tTC\tNOUNTEST\t# TEST IF NOUN CAN BE LOADED.\n\t\tCAF\tVBSP1LD\n\t\tTC\tUPDATVB -1\n\t\tTC\tREQDATX\n\t\tCAF\tVBSP2LD\n\t\tTC\tUPDATVB -1\n\t\tTC\tREQDATY\nPUTXY\t\tCS\tFIVE\t\t# TEST THAT THE 2 DATA WORDS LOADED ARE\n\t\tTC\tALLDC/OC\t# ALL DEC OR ALL OCT.\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tZERO\t\t# X COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t0\n\t\tCAF\tONE\t\t# Y COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t1\n\t\tTC\tLOADLV\n\nALOAD\t\tTC\tREQDATX\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tZERO\t\t# X COMP\n# Page 345\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t0\n\t\tTC\tLOADLV\n\nBLOAD\t\tCS\tONE\n\t\tTC\tCOMPTEST\n\t\tCAF\tBIT15\t\t# SET CLPASS FOR PASS0 ONLY\n\t\tTS\tCLPASS\n\t\tTC\tREQDATY\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tONE\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t1\n\t\tTC\tLOADLV\n\nCLOAD\t\tCS\tTWO\n\t\tTC\tCOMPTEST\n\t\tCAF\tBIT15\t\t# SET CLPASS FOR PASS0 ONLY\n\t\tTS\tCLPASS\n\t\tTC\tREQDATZ\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tTWO\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t2\n\t\tTC\tLOADLV\n\nLOADLV\t\tCAF\tZERO\n\t\tTS\tDECBRNCH\n\t\tCS\tZERO\n\t\tTS\tLOADSTAT\n\t\tTC\tRELDSP\t\t# RELEASE FOR PRIORITY DISPLAY PROBLEM.\n\t\tCS\tVD1\t\t# TO BLOCK NUMERICAL CHARACTERS AND\n\t\tTS\tDSPCOUNT\t# CLEARS AFTER A COMPLETED LOAD\n\t\tTC\tPOSTJUMP\t# AFTER COMPLETED LOAD, GO TO RECALTST\n\t\tCADR\tRECALTST\t# TO SEE IF THERE IS RECALL FROM ENDIDLE.\n\nVBSP1LD\t\tDEC\t21\t\t# VB21 = ALOAD\nVBSP2LD\t\tDEC\t22\t\t# VB22 = BLOAD\nVBSP3LD\t\tDEC\t23\t\t# VB23 = CLOAD\n\nALLDC/OC\tTS\tDECOUNT\t\t# TESTS THAT DATA WORDS LOADED ARE EITHER\n\t\tCS\tDECBRNCH\t# ALL DEC OR ALL OCT. ALARMS IF NOT.\n# Page 346\n\t\tTS\tSR\n\t\tCS\tSR\n\t\tCS\tSR\t\t# SHIFTED RIGHT 2\n\t\tCCS\tA\t\t# DEC COMP BITS IN LOW 3\n\t\tTCF\t+2\t\t# SOME ONES IN LOW 3\n\t\tTC\tQ\t\t# ALL ZEROS. ALL OCTAL.  OK\n\t\tAD\tDECOUNT\t\t# DEC COMP = 7 FOR 3COMP, =6 FOR 2COMP\n\t\tEXTEND\t\t\t# (BUT IT HAS BEEN DECREMENTED BY CCS)\n\t\tBZF\t+2\t\t# MUST MATCH 6 FOR 3COMP, 5 FOR 2COMP.\n\t\tTC\tALMCYCLE\t# ALARM AND RECYCLE.\nGOQ\t\tTC\tQ\t\t# ALL REQUIRED ARE DEC. OK\n\n\nSFRUTNOR\tXCH\tQ\t\t# GETS SF ROUTINE NUMBER FOR NORMAL CASE\n\t\tTS\tEXITEM\t\t# CANT USE L FOR RETURN. TSTFORDP USES L.\n\t\tCAF\tMID5\n\t\tMASK \tNNTYPTEM\n\t\tTC\tRIGHT5\n\t\tTC\tEXITEM\t\t# SF ROUTINE NUMBER IN A\n\nSFRUTMIX\tXCH\tQ\t\t# GETS SF ROUTINE NUMBER FOR MIXED CASE\n\t\tTS\tEXITEM\n\t\tINDEX\tDECOUNT\n\t\tCAF\tDISPLACE\t# PUT TC GOQ, TC RIGHT5, OR TC LEFT5 IN L\n\t\tTS\tL\n\t\tINDEX\tDECOUNT\n\t\tCAF\tLOW5\t\t# LOW5, MID5, OR HI5 IN A\n\t\tMASK\tRUTMXTEM\t# GET HI5, MID5, OR LOW5 OF RUTMXTAB ENTRY\n\t\tINDEX\tL\n\t\tTC\t0\n# DO TC GOQ(DECOUNT=0), DO TC RIGHT5(DECOUNT=1). DO TC LEFT5(DECOUNT=2).\nSFRET1\t\tTC\tEXITEM\t\t# SF ROUTINE NUMBER IN A\n\nSFCONUM\t\tXCH\tQ\t\t# GETS 2X( SF CONSTANT NUMBER)\n\t\tTS\tEXITEM\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tCONUMNOR\t# NORMAL NOUN\n\t\tINDEX\tDECOUNT\t\t# MIXED NOUN\n\t\tCAF\tDISPLACE\n\t\tTS\tL\t\t# PUT TC GOQ, TC RIGHT5, OR TC LEFT5 IN L\n\t\tINDEX\tDECOUNT\n\t\tCAF\tLOW5\n\t\tMASK\tNNTYPTEM\n\t\tINDEX\tL\n\t\tTC\t0\n# DO TC GOQ(DECOUNT=0), DO TC RIGHT5(DECOUNT=1), DO TC LEFT5(DECOUNT=2).\nSFRET\t\tDOUBLE\t\t\t# 2X(SF CONSTANT NUMBER) IN A\n\t\tTC\tEXITEM\n\n# Page 347\n\nDISPLACE\tTC\tGOQ\n\t\tTC\tRIGHT5\n\t\tTC\tLEFT5\n\nCONUMNOR\tCAF\tLOW5\t\t# NORMAL NOUN ALWAYS GETS LOW 5 OF\n\t\tMASK\tNNTYPTEM\t# NNTYPTAB FOR SF CONUM.\n\t\tDOUBLE\n\t\tTC\tEXITEM\t\t# 2X( SF CONSTANT NUMBER) IN A\n\n\nPUTCOM\t\tTS\tDECOUNT\n\t\tXCH\tQ\n\t\tTS\tDECRET\n\t\tCAF\tZERO\n\t\tTS\tMPAC+6\n\t\tINDEX\tDECOUNT\n\t\tXCH\tXREGLP\n\t\tTS\tMPAC  +1\n\t\tINDEX\tDECOUNT\n\t\tXCH\tXREG\n\t\tTS\tMPAC\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tPUTNORM\t\t# NORMAL NOUN\n# IF MIXNOUN, PLACE ADDRESS FOR COMPONENT K INTO NOUNADD, SET EBANK BITS.\n\t\tINDEX\tDECOUNT\t\t# GET IDADDTAB ENTRY FOR COMPONENT K\n\t\tCA\tIDAD1TEM\t#         OF NOUN.\n\t\tMASK\tLOW11\t\t# (ECADR)SUBK FOR CURRENT COMP OF NOUN\n\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SETS EB. NOUNADD.\n\t\tEXTEND\t\t\t# C(NOUNADD) IN A UPON RETURN\n\t\tSU\tDECOUNT\t\t# PLACE (ESUBK)-K INTO NOUNADD\n\t\tTS\tNOUNADD\n\t\tCCS\tDECBRNCH\n\t\tTC\tPUTDECSF\t# +  DEC\n\t\tTC\tDCTSTCYC\t# +0 OCTAL\n\t\tTC\tSFRUTMIX\t# TEST IF DEC ONLY BIT = 1. IF SO,\n\t\tTC\tDPTEST\t\t# ALARM AND RECYCLE. IF NOT, CONTINUE.\n\t\tTC\tPUTCOM2\t\t# NO DP\n\t\t\t\t\t# TEST FOR DP SCALE FOR OCT LOAD. IF SO,\n\t\t\t\t\t# +0 INTO MAJOR PART. SET NOUNADD FOR\n\t\t\t\t\t# LOADING OCTAL WORD INTO MINOR PART.\nPUTDPCOM\tINCR\tNOUNADD\t\t# DP  (ESUBK)-K+1  OR  E+1\n\t\tCA\tNOUNADD\t\t# NOUNADD NOW SET FOR MINOR PART\n\t\tADS\tDECOUNT\t\t# (ESUBK)+1  OR  E+1  INTO DECOUNT\n\t\tCAF\tZERO\t\t# NOUNADD SET FOR MINOR PART\n\t\tINDEX\tDECOUNT\n\t\tTS\t0 \t-1\t# ZERO MAJOR PART(ESUBK OR E)\n\t\tTC\tPUTCOM2\n\nPUTNORM\t\tTC\tSETNADD\t\t# ECADR FROM NOUNCADR. SETS EB, NOUNADD.\n# Page 348\n\t\tCCS\tDECBRNCH\n\t\tTC\tPUTDECSF\t# +  DEC\n\t\tTC\tDCTSTCYC\t# +0 OCTAL\n\t\tTC\tSFRUTNOR\t# TEST IF DEC ONLY BIT = 1. IF SO,\n\t\tTC\tDPTEST\t\t# ALARM AND RECYCLE. IF NOT, CONTINUE.\n\t\tTC\tPUTCOM2 -4\t# NO DP\n\t\tCAF\tZERO\t\t# DP\n\t\tTS\tDECOUNT\n\t\tTC\tPUTDPCOM\n\n\t\tCA\tNNADTEM\n\t\tAD\tONE\t\t# IF NNADTEM = -1. CHANNEL TO BE SPECIFIED\n\t\tEXTEND\n\t\tBZF\tCHANLOAD\nPUTCOM2\t\tXCH\tMPAC\n\t\tTC\tDECRET\n\n\t\tEBANK=\tDSPCOUNT\nGTSFINLC\t2CADR\tGTSFIN\n\n\nCHANLOAD\tCS\tSEVEN\t\t# DONT LOAD CHAN 7. (IT = SUPERBANK).\n\t\tAD\tNOUNCADR\n\t\tEXTEND\n\t\tBZF\tLOADLV\n\t\tCA \tNOUNCADR\n\t\tMASK\tLOW9\n\t\tXCH\tMPAC\n\t\tEXTEND\n\t\tINDEX\tMPAC\n\t\tWRITE\t0\n\t\tTC\tLOADLV\n\n\n# PUTDECSF FINDS MIXBR AND DECOUNT STILL SET FROM PUTCOM\n\nPUTDECSF\tTC\tSFCONUM\t\t# 2X(SF CON NUMB) IN A\n\t\tTS\tSFTEMP1\n\t\tEXTEND\t\t\t# SWITCH BANKS TO SF CONSTANT TABLE\n\t\tDCA\tGTSFINLC\t# READING ROUTINE.\n\t\tDXCH\tZ\t\t# LOADS SFTEMP1. SFTEMP2.\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tPUTSFNOR\n\t\tTC\tSFRUTMIX\n\t\tTC\tPUTDCSF2\nPUTSFNOR\tTC\tSFRUTNOR\n\nPUTDCSF2\tINDEX\tA\n# Page 349\n\t\tCAF\tSFINTABR\n\t\tTC\tBANKJUMP\t# SWITCH BANKS FOR EXPANSHION ROOM\nSFINTABR\tCADR\tGOALMCYC\t# ALARM AND RECYCLE IF DEC LOAD\n\t\t\t\t\t# WITH OCTAL ONLY NOUN.\n\t\tCADR\tBINROUND\n\t\tCADR\tDEGINSF\n\t\tCADR\tARTHINSF\n\t\tCADR\tDPINSF\n\t\tCADR\tDPINSF2\n\t\tCADR\tOPTDEGIN\n\t\tCADR\tDPINSF\t\t# SAME AS ARITHDP1\n\t\tCADR\tHMSIN\n\t\tCADR\tDSPALARM\t# MIN/SEC CANT BE LOADED.\n\t\tCADR\tDPINSF4\n\t\tCADR\tARTIN1SF\n\t\tCADR\tDSPALARM\t# 2INTOUT CANT BE LOADED.\n\t\tCADR\tDPFRACIN\nENDRUTIN\tEQUALS\n\n\n# SCALE FACTORS FOR THOSE ROUTINES NEEDING THEM ARE AVAILABLE IN SFTEMP1.\n# ALL SFIN ROUTINES USE MPAC MPAC+1. LEAVE RESULT IN A. END WITH TC DECRET.\n\n\n\t\tSETLOC\tENDDPDEC +1\n\n\t\tCOUNT\t40/PIN\n\n# DEGINSF APPLIES 1000/180 * 5.55555(10) = 5.43434(8)\n\nDEGINSF\t\tTC\tDMP\t\t# SF ROUTINE FOR DEC DEGREES\n\t\tADRES\tDEGCON1\t\t# MULT BY 5.5  5(10)X2EXP-3\n\t\tCCS\tMPAC \t+1\t# THIS ROUNDS OFF MPAC+1 BEFORE SHIFT\n\t\tCAF\tBIT11\t\t# LEFT 3, AND CAUSES 360.00 TO OF/UF\n\t\tTC\t+2\t\t# WHEN SHIFTED LEFT AND ALARM.\n\t\tCS\tBIT11\n\t\tAD\tMPAC \t+1\n\t\tTC\t2ROUND \t+2\n\t\tTC\tTPSL1\t\t# LEFT 1\nDEGINSF2\tTC\tTPSL1\t\t# LEFT 2\n\t\tTC\tTESTOFUF\n\t\tTC\tTPSL1\t\t# RETURNS IF NO OF/UF (LEFT3)\n\t\tCCS\tMPAC\n\t\tTC\tSIGNFIX\t\t# IF+, GO TO SIGNFIX\n\t\tTC\tSIGNFIX\t\t# IF +0, GO TO SIGNFIX\n\t\tCOM\t\t\t# IF - , USE -MAGNITUDE +1\n\t\tTS\tMPAC\t\t# IF -0, USE +0\nSIGNFIX\t\tCCS\tMPAC+6\n\t\tTC\tSGNTO1\t\t# IF OVERFLOW\n\t\tTC\tENDSCALE\t# NO OVERFLOW/UNDERFLOW\n# Page 350\n\t\tCCS\tMPAC\t\t# IF UF FORCE SIGN TO 0 EXCEPT -180\n\t\tTC\tCCSHOLE\n\t\tTC\tNEG180\n\t\tTC\t+1\n\t\tXCH\tMPAC\n\t\tMASK\tPOSMAX\n\t\tTS\tMPAC\nENDSCALE\tTC\tPOSTJUMP\n\t\tCADR\tPUTCOM2\n\nNEG180\t\tCS\tPOSMAX\n\t\tTC\tENDSCALE -1\n\nSGNTO1\t\tCS\tMPAC\t\t# IF OF FORCE SIGN TO 1\n\t\tMASK\tPOSMAX\n\t\tCS\tA\n\t\tTC\tENDSCALE -1\n\nDEGCON1\t\t2DEC\t5.555555555 B-3\n\nDEGCON2\t\t2DEC\t2.222222222 B-2\n\nNEG.2\t\tOCT\t-06250\t\t# = .197753906\tI.E., THE BIAS SCALED\n\nARTHINSF\tTC\tDMP\t\t# SCALES MPAC, +1 BY SFTEMP1, SFTEMP2.\n\t\tADRES\tSFTEMP1\t\t# ASSUMES POINT BETWEEN HI AND LO PARTS\n\t\tXCH\tMPAC +2\t\t# OF SFCON.  SHIFTS RESULTS LEFT BY 14.\n\t\tXCH\tMPAC +1\t\t# (BY TAKING RESULTS FROM MPAC+1, MPAC+2)\n\t\tXCH\tMPAC\n\t\tEXTEND\n\t\tBZF\tBINROUND\n\t\tTC\tALMCYCLE\t# TOO LARGE A LOAD.  ALARM AND RECYCLE.\nBINROUND\tTC\t2ROUND\n\t\tTC\tTESTOFUF\n\t\tTC\tENDSCALE\t# RETURNS IF NO OF/UF\n\nARTIN1SF\tTC\tDMP\t\t# SCALES MPAC, +1 BY SFTEMP1, SFTEMP2.\n\t\tADRES\tSFTEMP1\t\t# ROUNDS MPAC+1 INTO MPAC.\n\t\tTC\tBINROUND\n\nOPTDEGIN\tCCS\tMPAC\t\t# OPTICS SCALING ROUTINE\n\t\tTC\t+4\n\t\tTC\t+3\n\t\tTC\tALMCYCLE\t# REJECT -- INPUT.  ALARM AND RECYCLE.\n\t\tTC\tALMCYCLE\t# REJECT -- INPUT.  ALARM AND RECYCLE.\nOPDEGIN2\tCAF\tNEG.2\t\t# RANGE IS 90 DEG\n\t\tADS\tMPAC\t\t# SUBTRACT BIAS\n# Page 351\n\t\tTC\tDMP\t\t# MULT BY 100 / 45 B-2\n\t\tADRES\tDEGCON2\n\t\tCAF\tBIT12\t\t# ROUND AS IN DEGINSF\n\t\tAD\tMPAC\t+1\n\t\tTC\t2ROUND\t+2\n\t\tTC\tDEGINSF2\n\nDPINSF\t\tTC\tDMP\t\t# SCALES MPAC, MPAC +1 BY SFTEMP1,\n\t\tADRES\tSFTEMP1\t\t# SFTEMP.  STORES LOW PART OF RESULT\n\t\tXCH\tMPAC +2\t\t# IN (E SUBK) +1 OR E+1\n\t\tDOUBLE\n\t\tTS\tMPAC +2\n\t\tCAF\tZERO\n\t\tAD\tMPAC +1\n\t\tTC\t2ROUND +2\n\t\tTC\tTESTOFUF\nDPFRACIN\tINDEX\tMIXBR\t\t# RETURNS IF NO OF/UF\n\t\tTC\t+0\n\t\tTC\tDPINORM\n\t\tCA\tDECOUNT\t\t# MIXED NOUN\nDPINCOM\t\tAD\tNOUNADD\t\t#\tMIXED\t\tNORMAL\n\t\tTS\tQ\t\t#\tE SUBK\t\tE\n\t\tXCH\tMPAC +1\n\t\tINDEX\tQ\n\t\tTS\t1\t\t# PLACE LOW PART IN\n\t\tTC\tENDSCALE\t# \t(E SUBK) +1\tMIXED\n\nDPINORM\t\tCAF\tZERO\t\t#\tE +1\t\tNORMAL\n\t\tTC\tDPINCOM\n\nDPINSF2\t\tTC\tDMP\t\t# ASSUMES POINT BETWEEN BITS 7-8 OF HIGH\n\t\tADRES\tSFTEMP1\t\t# PART OF SF CONST.  DPINSF2 SHIFTS RESULTS\n\t\tCAF\tSIX\t\t# LEFT BY 7, ROUNDS MPAC+2 INTO MPAC+1\n\t\tTC\tTPLEFTN\t\t# SHIFT LEFT 7.\n\t\tTC\tDPINSF +2\n\nDPINSF4\t\tTC\tDMP\t\t# ASSUMES POINT BETWEEN BITS 11-12 OF HIGH\n\t\tADRES\tSFTEMP1\t\t# PART OF SF CONST.  DPINSF2 SHIFTS RESULTS\n\t\tCAF\tTWO\t\t# LEFT BY 3, ROUNDS MPAC+2 INTO MPAC+1.\n\t\tTC\tTPLEFTN\t\t# SHIFT LEFT 3.\n\t\tTC\tDPINSF +2\n\nTPLEFTN\t\tXCH\tQ\t\t# SHIFTS MPAC, +1, +2 LEFT N.  SETS OVFIND\n\t\tTS\tSFTEMP2\t\t# TO +1 FOR OF, -1 FOR UF.\n\t\tXCH\tQ\t\t# CALL WITH N-1 IN A.\nLEFTNCOM\tTS\tSFTEMP1\t\t#\tLOOP TIME .37 MSEC.\n\t\tTC\tTPSL1\n\t\tCCS\tSFTEMP1\n# Page 352\n\t\tTC\tLEFTNCOM\n\t\tTC\tSFTEMP2\n\n2ROUND\t\tXCH\tMPAC\t +1\n\t\tDOUBLE\n\t\tTS\tMPAC \t+1\n\t\tTC\tQ\t\t# IF MPAC+1 DOES NOT OF/UF\n\t\tAD\tMPAC\n\t\tTS\tMPAC\n\t\tTC\tQ\t\t# IF MPAC DOES NOT OF/UF\n\t\tTS\tMPAC+6\n2RNDEND\t\tTC\tQ\n\nTESTOFUF\tCCS\tMPAC+6\t\t# RETURNS IF NO OF/UF\n\t\tTC\tALMCYCLE\t# OF\tALARM AND RECYCLE.\n\t\tTC\tQ\n\t\tTC\tALMCYCLE\t# UF\tALARM AND RECYCLE.\n\n\t\tSETLOC\tENDSPMIN +1\n\n\t\tCOUNT\t42/PIN\n\nHMSIN\t\tTC\tALL3DEC\t\t# IF ALL 3 WORDS WERE NOT LOADED, ALARM.\n\t\tTC\tDMP\t\t# XREG, XREGLP (=HOURS) WERE ALREADY PUT\n\t\tADRES\tWHOLECON\t# INTO MPAC, MPAC+1.\n\t\tTC\tRND/TST\t\t# ROUND OFF TO WHOLE HRS IN MPAC+1.\n\t\tCAF\tZERO\t\t# ALARM IF MPAC NON ZERO (G/ 16383).\n\t\tTS\tMPAC\t+2\n\t\tCAF\tHRCON\n\t\tTS\tMPAC\n\t\tCAF\tHRCON\t+1\n\t\tXCH\tMPAC\t+1\n\t\tTC\tSHORTMP\n\t\tTC\tMPACTST\t\t# ALARM IF MPAC NON ZERO (G/ 745)\n\t\tDXCH\tMPAC\t+1\t# STORE HOURS CONTRIBUTION\n\t\tDXCH\tHITEMIN\n\t\tCA\tYREG\t\t# PUT YREG, YREGLP INTO MPAC, +1.\n\t\tLXCH\tYREGLP\n\t\tDXCH\tMPAC\n\t\tTC\tDMP\n\t\tADRES\tWHOLECON\n\t\tTC\tRND/TST\t\t# ROUND OFF TO WHOLE MIN IN MPAC+1\n\t\tCS\t59MIN\t\t# ALARM IF MPAC NON ZERO (G/16383)\n\t\tTC\tSIZETST\t\t# ALARM IF MPAC+1 G/ 59MIN\n\t\tXCH\tMPAC \t+1\n\t\tEXTEND\n\t\tMP\tMINCON\t\t# LEAVES MINUTES CONTRIBUTION IN A,L\n# Page 353\n\t\tDAS\tHITEMIN\t\t# ADD IN MINUTES CONTRIBUTION\n\t\tEXTEND\t\t\t# IF THIS DAS OVERFLOWS, G/ 745 HR,39MIN\n\t\tBZF\t+2\n\t\tTC\tALMCYCLE\n\t\tCA\tZREG\t\t# PUT ZREG, ZREGLP INTO MPAC +1.\n\t\tLXCH\tZREGLP\n\t\tDXCH\tMPAC\n\t\tTC\tDMP\n\t\tADRES\tWHOLECON\n\t\tTC\tRND/TST\t\t# ROUND OFF TO WHOLE CENTI-SEC IN MPAC+1\n\t\tCS\t59.99SEC\t# ALARM IF MPAC NON ZERO (G/163.83 SEC)\n\t\tTC\tSIZETST\t\t# ALARM IF MPAC+1 G/59.99 SEC\n\t\tDXCH\tHITEMIN\t\t# ADD IN SECONDS CONTRIBUTION\n\t\tDAS\tMPAC\t\t# IF THIS DAS OVERFLOWS,\n\t\tEXTEND\t\t\t# G/ 745 HR, 39 MIN, 14.59 SEC.\n\t\tBZF\t+2\n\t\tTC\tALMCYCLE\t# ALARM AND RECYCLE\n\t\tCAF\tZERO\n\t\tTS\tMPAC +2\n\t\tTC\tTPAGREE\n\t\tDXCH\tMPAC\n\t\tINDEX\tNOUNADD\n\t\tDXCH\t0\n\t\tTC\tPOSTJUMP\n\t\tCADR\tLOADLV\n\nWHOLECON\tOCT\t00006\t\t# (10EXP5/2EXP14)2EXP14\n\t\tOCT\t03240\nHRCON\t\tOCT\t00025\t\t# 1 HOUR IN CENTI-SEC\n\t\tOCT\t37100\nMINCON\t\tOCT\t13560\t\t# 1 MINUTE IN CENTI-SEC\n59MIN\t\tOCT\t00073\t\t# 59 AS WHOLE\n59.99SEC\tOCT\t13557\t\t# 5999 SENTI-SEC\n\nRND/TST\t\tXCH\tMPAC +2\t\t# ROUNDS MPAC+2 INTO MPAC+1.\n\t\tDOUBLE\t\t\t# ALARMS IF MPAC NOT 0\n\t\tTS\tMPAC +2\n\t\tCAF\tZERO\n\t\tAD\tMPAC +1\n\t\tTS\tMPAC +1\n\t\tCAF\tZERO\n\t\tAD\tMPAC\t\t# CAN'T OVFLOW\n\t\tXCH\tMPAC\nMPACTST\t\tCCS\tMPAC\t\t# ALARM IF MPAC NON ZERO\n\t\tTC\tALMCYCLE\t# ALARM AND RECYCLE\n\t\tTC\tQ\n\t\tTC\tALMCYCLE\t# ALARM AND RECYCLE\n\t\tTC\tQ\n\n# Page 354\n\nSIZETST\t\tTS\tMPAC +2\t\t# CALLED WITH - CON IN A\n\t\tCCS\tMPAC +1\t\t# GET MAG OF MPAC+1\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tAD\tONE\n\t\tAD\tMPAC +2\n\t\tEXTEND\t\t\t# MAG OF MPAC+1 - CON\n\t\tBZMF\t+2\n\t\tTC\tALMCYCLE\t# MAG OF MPAC+1 G/ CON.  ALARM AND RECYCLE.\n\t\tTC\tQ\t\t# MAG OF MPAC+1 L/= CON\n\n# ALL3DEC TESTS THAT ALL 3 WORDS ARE LOADED IN DEC (FOR HMSIN).\n# ALARM IF NOT.  (TEST THAT BITS 3,4,5 OF DECBRNCH ARE ALL = 1).\n\nALL3DEC\t\tCS\tOCT34BAR\t# GET BITS 3,4,5 IN A\n\t\tMASK\tDECBRNCH\t# GET BITS 3,4,5 OF DECBRNCH IN A\n\t\tAD\tOCT34BAR\t# BITS 3,4,5 OF DECBRNCH MUST ALL = 1\n\t\tCCS\tA\n\t\tTC\tFORCEV25\nOCT34BAR\tOCT\t77743\n\t\tTC\tFORCEV25\n\t\tTC\tQ\n\nFORCEV25\tCS\tOCT31\t\t# FORCE VERB 25 TO BE EXECUTED BY RECYCLE\n\t\tTS\tVERBSAVE\t# IN CASE OPERATOR EXECUTED A LOWER LOAD\n\t\tTC\tALMCYCLE\t# VERB.  ALARM AND RECYCLE.\nENDHMSS\t\tEQUALS\n\n# Page 355\n# MONITOR ALLOWS OTHER KEYBOARD ACTIVITY.  IT IS ENDED BY VERB TERMINATE,\n# VERB PROCEED WITHOUT DATA, VERB RESEQUENCE,\n# ANOTHER MONITOR, OR ANY NVSUB CALL THAT PASSES THE DSPLOCK (PROVIDED\n# THAT THE OPERATOR HAS SOMEHOW ALLOWED THE ENDING OF A MONITOR WHICH\n# HE HAS INITIATED THROUGH THE KEYBOARD).\n#\n# MONITOR ACTION IS SUSPENDED, BUT NOT ENDED, BY ANY KEYBOARD ACTION.\n# EXCEPT ERROR LIGHT RESET.  IT BEGINS AGAIN WHEN KEY RELEASE IS PERFORMED.\n# MONITOR SAVES THE NOUN AND APPROPRIATE DISPLAY VERB IN MONSAVE.  IT SAVES\n# NOUNCADR IN MONSAVE1, IF NOUN = MACHINE CADR TO BE SPECIFIED.  BIT 15 OF\n# MONSAVE1 IS THE KILL MONITOR SIGNAL (KILLER BIT).  BIT 14 OF MONSAVE1\n# INDICATES THE CURRENT MONITOR WAS EXTERNALLY INITIATED (EXTERNAL\n# MONITOR BIT).  IT IS TURNED OFF BY RELDSP AND KILMONON.\n#\n# MONSAVE INDICATES IF MONITOR IS ON (+=ON, +0=OFF)\n# IF MONSAVE IS +, MONITOR ENTERS NO REQUEST, BUT TURNS KILLER BIT OFF.\n# IF MONSAVE IS +0, MONITOR ENTERS REQUEST AND TURNS KILLER BIT OFF.\n#\n# NVSUB (IF EXTERNAL MONITOR BIT IS OFF), VB=PROCEED WITHOUT DATA,\n# VB=RESEQUENCE, AND VB=TERMINATE TURN KILL MONITOR BIT ON.\n#\n# IF KILLER BIT IS ON, MONREQ ENTERS NO FURTHER REQUESTS, ZEROS MONSAVE\n# AND MONSAVE1 (TURNING OFF KILLER BIT AND EXTERNAL MONITOR BIT).\n#\n# MONITOR DOESN'T TEST FOR MATBS SINCE NVSUB CAN HANDLE INTERNAL MATBS NOW.\n\n\t\tSETLOC\tENDRUTIN\n\n\t\tCOUNT\t41/PIN\n\nMONITOR\t\tCS\tBIT15/14\n\t\tMASK\tNOUNCADR\nMONIT1\t\tTS\tMPAC +1\t\t# TEMP STORAGE\n\t\tCS\tENTEXIT\n\t\tAD\tENDINST\n\t\tCCS\tA\n\t\tTC\tMONIT2\nBIT15/14\tOCT\t60000\n\t\tTC\tMONIT2\n\t\tCAF\tBIT14\t\t# EXTERNALLY INITIATED MONITOR.\n\t\tADS\tMPAC +1\t\t# SET BIT 14 FOR MONSAVE1.\n\t\tCAF\tZERO\n\t\tTS\tMONSAVE2\t# ZERO NVMONOPT OPTIONS\nMONIT2\t\tCAF\tLOW7\n\t\tMASK\tVERBREG\n\t\tTC\tLEFT5\n\t\tTS\tCYL\n\t\tCS\tCYL\n\t\tXCH\tCYL\n\t\tAD\tNOUNREG\n\t\tTS\tMPAC\t\t# TEMP STORAGE\n# Page 356\n\t\tCAF\tZERO\n\t\tTS\tDSPLOCK\t\t# +0 INTO DSPLOCK SO MONITOR CAN RUN.\n\t\tCCS\tCADRSTOR\t# TURN OFF KR LITE IF CADRSTOR AND DSPLIST\n\t\tTC\t+2\t\t# ARE BOTH EMPTY.  (LITE COMES ON IF NEW\n\t\tTC\tRELDSP1\t\t# MONITOR IS KEYED IN OVER OLD MONITOR.)\n\t\tINHINT\n\t\tCCS\tMONSAVE\n\t\tTC\t+5\t\t# IF MONSAVE WAS +, NO REQUEST\n\t\tCAF\tONE\t\t# IF MONSAVE WAS 0, REQUEST MONREQ\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tMONREQ\n\n\t\tDXCH\tMPAC\t\t# PLACE MONITOR VERB AND NOUN INTO MONSAVE\n\t\tDXCH\tMONSAVE\t\t# ZERO THE KILL MONITOR BIT\n\t\tRELINT\t\t\t# SET UP EXTERNAL MONITOR BIT\n\t\tTC\tENTRET\n\nMONREQ\t\tTC\tLODSAMPT\t# CALLED BY WAITLIST\n\t\tCCS\tMONSAVE1\t# TIME IS SNATCHED N RUPT FOR NOUN 65\n\t\tTC\t+4\t\t# IF KILLER BIT = 0, ENTER REQUESTS\n\t\tTC\t+3\t\t# IF KILLER BIT = 0, ENTER REQUESTS\n\t\tTC\tKILLMON\t\t# IF KILLER BIT = 1, NO REQUESTS.\n\t\tTC\tKILLMON\t\t# IF KILLER BIT = 1, NO REQUESTS.\n\t\tCAF\tMONDEL\n\t\tTC\tWAITLIST\t# ENTER WAITLIST REQUEST FOR MONREQ\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tMONREQ\n\n\t\tCAF\tCHRPRIO\n\t\tTC\tNOVAC\t\t# ENTER EXEC REQUEST FOR MONDO\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tMONDO\n\n\t\tTC\tTASKOVER\n\nKILLMON\t\tCAF\tZERO\t\t# ZERO MONSAVE AND TURN KILLER BIT OFF\n\t\tTS\tMONSAVE\n\t\tTS\tMONSAVE1\t# TURN OFF KILL MONITOR BIT.\n\t\tTC\tTASKOVER\t# TURN OFF EXTERNAL MONITOR BIT.\nMONDEL\t\tOCT\t144\t\t# FOR 1 SEC MONITOR INTERVALS.\n\nMONDO\t\tCCS\tMONSAVE1\t# CALLED BY EXEC\n\t\tTC\t+4\t\t# IF KILLER BIT = 0, CONTINUE\n\t\tTC\t+3\t\t# IF KILLER BIT = 0, CONTINUE\n\t\tTC\tENDOFJOB\t# IN CASE TERMINATE CAME SINCE LAST MONREQ\n\t\tTC\tENDOFJOB\t# IN CASE TERMINATE CAME SINCE LAST MONREQ\n\t\tCCS\tDSPLOCK\n# Page 357\n\t\tTC\tMONBUSY\t\t# NVSUB IS BUSY\n\t\tCAF\tLOW7\n\t\tMASK\tMONSAVE\n\t\tTC\tUPDATNN -1\t# PLACE NOUN INTO NOUNREG AND DISPLAY IT\n\t\tCAF\tMID7\n\t\tMASK\tMONSAVE\t\t# CHANGE MONITOR VERB TO DISPLAY VERB\n\t\tAD\tMONREF\t\t# -DEC10, STARTING IN BIT8\n\t\tTS\tEDOP\t\t# RIGHT 7\n\t\tCA\tEDOP\n\t\tTS\tVERBREG\n\t\tCAF\tMONBACK\t\t# SET RETURN TO PASTEVB AFTER DATA DISPLAY\n\t\tTS\tENTRET\n\t\tCS\tBIT15/14\n\t\tMASK\tMONSAVE1\t# PUT ECADR INTO MPAC +2.  INTMCTBS WILL\n\t\tTS\tMPAC +2\t\t# DISPLAY IT AND SET NOUNCADR, NOUNADD,\nENDMONDO\tTC\tTESTNN\t\t# EBANK.\n\n\t\tBLOCK\t2\n\n\t\tSETLOC\tFFTAG8\n\t\tBANK\n\n\t\tCOUNT\t02/PIN\n\nPASTEVB\t\tCAF\tMID7\n\t\tMASK\tMONSAVE2\t# NVMONOPT PASTE OPTION\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tPASTEOPT\t# PASTE PLEASE VERB FOR NVMONOPT\n\t\tCA\tMONSAVE\t\t# PASTE MONITOR VERB --\tPASTE OPTION IS 0\nPASTEOPT\tTS\tEDOP\t\t# RIGHT 7\n\t\tCA\tEDOP\t\t# PLACE MONITOR VERB OR PLEASE VERB INTO\n\t\tTC\tBANKCALL\t# \tVERBREG AND DISPLAY IT.\n\t\tCADR\tUPDATVB -1\n\t\tCAF\tZERO\t\t# ZERO REQRET SO THAT PASTED VERBS CAN\n\t\tTS\tREQRET\t\t#\tBE EXECUTED BY OPERATOR.\n\t\tCA\tMONSAVE2\n\t\tTC\tBLANKSUB\t# PROCESS NVMONOPT BLANK OPTION IF ANY\n\t\tTC\t+1\nENDPASTE\tTC\tENDOFJOB\n\nMID7\t\tOCT\t37600\n\n\t\tSETLOC\tENDMONDO +1\n\t\tCOUNT\t41/PIN\n\nMONREF\t\tOCT\t75377\t\t# -DEC10, STARTING IN BIT8\nMONBACK\t\tADRES\tPASTEVB\n\n# Page 358\nMONBUSY\t\tTC\tRELDSPON\t# TURN KEY RELEASE LIGHT\n\t\tTC\tENDOFJOB\n\n# DSPFMEM IS USED TO DISPLAY (IN OCTAL) ANY FIXED REGISTER.\n# IT IS USED WITH NOUN = MACHINE CADR TO BE SPECIFIED.  THE FCADR OF THE\n# DESIRED LOCATION IS THEN PUNCHED IN.  IT HANDLES F/F (FCADR 4000-7777)\n#\n# FOR BANKS L/E 27, THIS IS ENOUGH.\n#\n# FOR BANKS G/E 30, THE THIRD COMPONENT OF NOUN 26 (PRIO, ADRES, BBCON)\n# MUST BE PRELOADED WITH THE DESIRED SUPERBANK BITS (BITS 5,6,7).\n#\tV23N26 SHOULD BE USED.\n#\n# SUMMARY\n# FOR BANKS L/E 27,\t\t\t\tV27N01E(FCADR)E\n# FOR BANKS G/E 30, \tV23N26E(SUPERBITS)E\tV27N01E(FCADR)E\n\nDSPFMEM\t\tCAF\tR1D1\t\t# IF F/F, DATACALL USES BANK 02 OR 03.\n\t\tTS\tDSPCOUNT\n\t\tCA\tDSPTEM1 +2\t# SUPERBANK BITS WERE PRELOADED INTO\n\t\tTS\tL\t\t# 3RD COMPONENT OF NOUN 26.\n\t\tCA\tNOUNCADR\t# ORIGINAL FCADR LOADED STILL IN NOUNCADR.\n\t\tTC\tSUPDACAL\t# CALL WITH FCADR IN A, SUPERBITS IN L.\n\t\tTC\tDSPOCTWO\nENDSPF\t\tTC\tENDOFJOB\n\n# Page 359\n# WORD DISPLAY ROUTINES\n\t\tSETLOC\tTESTOFUF +4\n\t\tCOUNT\t40/PIN\n\nDSPSIGN\t\tXCH\tQ\n\t\tTS\tDSPWDRET\n\t\tCCS\tMPAC\n\t\tTC\t+8D\n\t\tTC\t+7\n\t\tAD\tONE\n\t\tTS\tMPAC\n\t\tTC\t-ON\n\t\tCS\tMPAC +1\n\t\tTS\tMPAC +1\n\t\tTC\tDSPWDRET\n\t\tTC\t+ON\n\t\tTC\tDSPWDRET\n\nDSPRND\t\tEXTEND\t\t\t# ROUND BY 5 EXP-6\n\t\tDCA\tDECROUND -1\n\t\tDAS\tMPAC\n\t\tEXTEND\n\t\tBZF\t+4\n\t\tEXTEND\n\t\tDCA\tDPOSMAX\n\t\tDXCH\tMPAC\n\t\tTC\tQ\n\n# DSPDECWD CONVERTS C(MPAC,MPAC+1) INTO A SIGN AND 5 CHAR DECIMAL\n# STARTING IN LOC SPECIFIED IN DSPCOUNT.  IT ROUNDS BY 5 EXP-6.\n\nDSPDECWD\tXCH\tQ\n\t\tTS\tWDRET\n\t\tTC\tDSPSIGN\n\t\tTC\tDSPRND\n\t\tCAF\tFOUR\nDSPDCWD1\tTS\tWDCNT\n\t\tCAF\tBINCON\n\t\tTC\tSHORTMP\nTRACE1\t\tINDEX\tMPAC\n\t\tCAF\tRELTAB\n\t\tMASK\tLOW5\n\t\tTS\tCODE\n\t\tCAF\tZERO\n\t\tXCH\tMPAC +2\n\t\tXCH\tMPAC +1\n\t\tTS\tMPAC\n\t\tXCH\tDSPCOUNT\nTRACE1S\t\tTS\tCOUNT\n# Page 360\n\t\tCCS\tA\t\t# DECREMENT DSPCOUNT EXCEPT AT +0\n\t\tTS\tDSPCOUNT\n\t\tTC\tDSPIN\n\t\tCCS\tWDCNT\n\t\tTC\tDSPDCWD1\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tWDRET\n\n\t\tOCT\t00000\nDECROUND\tOCT\t02476\n\n# DSPDECNR CONVERTS C(MPAC,MPAC+1) INTO A SIGN AND 5 CHAR DECIMAL\n# STARTING IN LOC SPECIFIED IN DSPCOUNT.  IT DOES NOT ROUND\n\nDSPDECNR\tXCH\tQ\n\t\tTS\tWDRET\n\t\tTC\tDSPSIGN\n\t\tTC\tDSPDCWD1 -1\n\n# DSPDC2NR CONVERTS C(MPAC,MPAC+1) INTO A SIGN AND 2 CHAR DECIMAL\n# STARTING IN LOC SPECIFIED IN DSPCOUNT.  IT DOES NOT ROUND\n\nDSPDC2NR\tXCH\tQ\n\t\tTS\tWDRET\n\t\tTC\tDSPSIGN\n\t\tCAF\tONE\n\t\tTC\tDSPDCWD1\n\n# DSP2DEC CONVERTS C(MPAC) AND C(MPAC+1) INTO A SIGN AND 10 CHAR DECIMAL\n# STARTING IN THE LOC SPECIFIED IN DSPCOUNT.\n\nDSP2DEC\t\tXCH\tQ\n\t\tTS\tWDRET\n\t\tCAF\tZERO\n\t\tTS\tCODE\n\t\tCAF\tTHREE\n\t\tTC\t11DSPIN\t\t# -R2 OFF\n\t\tCAF\tFOUR\n\t\tTC\t11DSPIN\t\t# +R2 OFF\n\t\tTC\tDSPSIGN\n\t\tCAF\tR2D1\nEND2DEC\t\tTC\tDSPDCWD1\n\n# DSPDECVN DISPLAYS C(A) UPON ENTRY AS A 2 CHAR DECIMAL BEGINNING IN THE\n# DSP LOC SPECIFIED IN DSPCOUNT.\n#\n# C(A) SHOULD BE IN FORM N X 2EXP-14.  THIS IS SCALED TO FORM N/100 BEFORE\n# DISPLAY CONVERSION.\n# Page 361\n\nDSPDECVN\tEXTEND\n\t\tMP\tVNDSPCON\t# MULT BY .01\n\t\tLXCH\tMPAC\t\t# TAKE RESULTS FROM L. (MULT BY 2EXP14).\n\t\tCAF\tZERO\n\t\tTS\tMPAC +1\n\t\tXCH\tQ\n\t\tTS\tWDRET\n\t\tTC\tDSPDC2NR +3\t# NO SIGN, NO ROUND, 2 CHAR\n\nVNDSPCON\tOCT\t00244\t\t# .01 ROUNDED UP\n\nGOVNUPDT\tTC\tDSPDECVN\t# THIS IS NOT FOR GENERAL USE.  REALLY PART\n\t\tTC\tPOSTJUMP\t# OF UPDATVB.\n\t\tCADR\tUPDAT1 +2\n\nENDECVN\t\tEQUALS\n\n\t\tSETLOC\tENDSPF +1\n\t\tCOUNT\t41/PIN\n\n# DSPOCTWD DISPLAYS C(A) UPON ENTRY AS A 5 CHAR OCT STARTING IN THE DSP\n# CHAR SPECIFIED IN DSPCOUNT.  IT STOPS AFTER 5 CHAR HAVE BEEN DISPLAYED.\n\nDSPOCTWO\tTS\tCYL\n\t\tXCH\tQ\n\t\tTS\tWDRET\t\t# MUST USE SAME RETURN AS DSP2BIT.\n\t\tCAF\tBIT14\t\t# TO BLANK SIGNS\n\t\tADS\tDSPCOUNT\n\t\tCAF\tFOUR\nWDAGAIN\t\tTS\tWDCNT\n\t\tCS\tCYL\n\t\tCS\tCYL\n\t\tCS\tCYL\n\t\tCS\tA\n\t\tMASK\tDSPMSK\n\t\tINDEX\tA\n\t\tCAF\tRELTAB\n\t\tMASK\tLOW5\n\t\tTS\tCODE\n\t\tXCH\tDSPCOUNT\n\t\tTS\tCOUNT\n\t\tCCS\tA\t\t# DECREMENT DSPCOUNT EXCEPT AT +0\n\t\tTS\tDSPCOUNT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tDSPOCTIN\nOCTBACK\t\tCCS\tWDCNT\n\t\tTC\tWDAGAIN\t\t# +\nDSPLV\t\tCS\tVD1\t\t# TO BLOCK NUMERICAL CHARACTERS, CLEARS,\n# Page 362\n\t\tTS\tDSPCOUNT\t# AND SIGNS AFTER A COMPLETED DISPLAY.\n\t\tTC\tWDRET\n\nDSPMSK\t\t=\tSEVEN\n\n# DSP2BIT DISPLAYS C(A) UPON ENTRY AS A 2 CHAR OCT BEGINNING IN THE DSP\n# LOC SPECIFIED IN DSPCOUNT BY PRE CYCLING RIGHT C(A) AND USING THE LOGIC\n# OF THE 5 CHAR OCTAL DISPLAY\n\nDSP2BIT\t\tTS\tCYR\n\t\tXCH\tQ\n\t\tTS\tWDRET\n\t\tCAF\tONE\n\t\tTS\tWDCNT\n\t\tCS\tCYR\n\t\tCS\tCYR\n\t\tXCH\tCYR\n\t\tTS\tCYL\n\t\tTC\tWDAGAIN +5\n\n# FOR DSPIN PLACE 0/25 OCT INTO COUNT, 5 BIT RELAY CODE INTO CODE.  BOTH\n# ARE DESTROYED.  IF BIT14 OF COUNT IS 1, SIGN IS BLANKED WITH LEFT CHAR.\n# FOR DSPIN1 PLACE 0,1 INTO BIT11 OF CODE, 2 INTO COUNT, REL ADDRESS OF\n# DSPTAB ENTRY INTO DSREL.\n\n\t\tSETLOC\tENDECVN\n\n\t\tCOUNT\t40/PIN\n\nDSPIN\t\tXCH\tQ\t\t# CAN'T USE L FOR RETURN, SINCE MANY OF THE\n\t\tTS\tDSEXIT\t\t# ROUTINES CALLING DSPIN USE L AS RETURN.\n\t\tCAF\tLOW5\n\t\tMASK\tCOUNT\n\t\tTS\tSR\n\t\tXCH\tSR\n\t\tTS\tDSREL\n\t\tCAF\tBIT1\n\t\tMASK\tCOUNT\n\t\tCCS\tA\n\t\tTC\t+2\t\t# LEFT IF COUNT IS ODD\n\t\tTC\tDSPIN1 -1\t# RIGHT IF COUNT IS EVEN\n\t\tXCH\tCODE\n\t\tTC\tSLEFT5\t\t# DOES NOT USE CYL\n\t\tTS\tCODE\n\t\tCAF\tBIT14\n\t\tMASK \tCOUNT\n\t\tCCS\tA\n\t\tCAF\tTWO\t\t# BIT14 = 1, BLANK SIGN\n# Page 363\n\t\tAD\tONE\t\t# BIT14 = 0, LEAVE SIGN ALONE\n\t\tTS\tCOUNT\t\t# +0 INTO COUNT FOR RIGHT\n\t\t\t\t\t# +1 INTO COUNT FOR LEFT (SIGN LEFT ALONE)\n\t\t\t\t\t# +3 INTO COUNT FOR LEFT (TO BLANK SIGN)\nDSPIN1\t\tINHINT\n\t\tINDEX\tDSREL\n\t\tCCS\tDSPTAB\n\t\tTC\t+2\t\t# IF +\n\t\tTC\tCCSHOLE\n\t\tAD\tONE\t\t# IF -\n\t\tTS\tDSMAG\n\t\tINDEX\tCOUNT\n\t\tMASK\tDSMSK\n\t\tEXTEND\n\t\tSU\tCODE\n\t\tEXTEND\n\t\tBZF\tDSLV\t\t# SAME\nDFRNT\t\tINDEX\tCOUNT\n\t\tCS\tDSMSK\t\t# MASK WITH 77740, 76037, 76777, OR 74037\n\t\tMASK\tDSMAG\n\t\tAD\tCODE\n\t\tCS\tA\n\t\tINDEX\tDSREL\n\t\tXCH\tDSPTAB\n\t\tEXTEND\n\t\tBZMF\tDSLV\t\t# DSPTAB ENTRY WAS -\n\t\tINCR\tNOUT\t\t# DSPTAB ENTRY WAS +\nDSLV\t\tRELINT\n\t\tTC\tDSEXIT\n\nDSMSK\t\tOCT\t37\n\t\tOCT\t1740\n\t\tOCT\t2000\n\t\tOCT\t3740\n\n# FOR 11DSPIN, PUT REL ADDRESS OF DSPTAB ENTRY INTO A, 1 IN BIT11 OR 0 IN\n# BIT11 OF CODE.\n\n11DSPIN\t\tTS\tDSREL\n\t\tCAF\tTWO\n\t\tTS\tCOUNT\n\t\tXCH\tQ\t\t# MUST USE SAME RETURN AS DSPIN\n\t\tTS\tDSEXIT\n\t\tTC\tDSPIN1\n\nDSPOCTIN\tTC\tDSPIN\t\t# SO DSPOCTWD DOESN'T USE SWCALL\n\t\tCAF\t+2\n\t\tTC\tBANKJUMP\n# Page 364\nENDSPOCT\tCADR\tOCTBACK\n\n# DSPALARM FINDS TC NVSUBEND IN ENTRET FOR NVSUB INITIATED ROUTINES\n# ABORT WITH 01501.\n#\n# DSPALARM FINDS TC ENDOFJOB IN ENTRET FOR KEYBOARD INITIATED ROUTINES.\n# DC TC ENTRET.\n\nPREDSPAL\tCS\tVD1\n\t\tTS\tDSPCOUNT\nDSPALARM\tCS\tNVSBENDL\n\t\tAD\tENTEXIT\n\t\tEXTEND\n\t\tBZF\tCHARALRM +2\n\t\tCS\tMONADR\t\t# IF THIS IS A MONITOR, KILL IT\n\t\tAD\tENTEXIT\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tCHARALRM\n\t\tTC\tKILMONON\n\t\tTC\tFALTON\n\t\tTC\tPASTEVB\t\t# PUT MONITOR VERB BACK IN VERBREG\nCHARALRM\tTC\tFALTON\t\t# NOT NVSUB INITATED TURN ON OPR ERROR\n\t\tTC\tENDOFJOB\n\t\tTC\tPOODOO\n\t\tOCT\t01501\nMONADR\t\tGENADR\tPASTEVB\nNVSBENDL\tTC\tNVSUBEND\n\n# ALMCYCLE TURNS ON CHECK FAIL LIGHT, REDISPLAYS THE ORIGINAL VERB THAT\n# WAS EXECUTED, AND RECYCLES TO EXECUTE THE ORIGINAL VERB/NOUN COMBINATION\n# THAT WAS LAST EXECUTED.  USED FOR BAD DATA DURING LOAD VERBS AND BY\n# MCTBS.  ALSO BY MMCHANG IF 2 NUMERICAL CHARACTERS WERE NOT PUNCHED IN\n# FOR MM CODE\n\n\t\tSETLOC\tMID7 +1\n\t\tCOUNT\t02/PIN\n\nALMCYCLE\tTC\tFALTON\t\t# TURN ON CHECK FAIL LIGHT.\n\t\tCS\tVERBSAVE\t# GET ORIGINAL VERB THAT WAS EXECUTED\n\t\tTS\tREQRET\t\t# SET FOR ENTPAS0\n\t\tTC\tBANKCALL\t# PUTS ORIGINAL VERB INTO VERBREG AND\n\t\tCADR\tUPDATVB -1\t# DISPLAYS IT IN VERB LIGHTS.\n\t\tTC\tPOSTJUMP\nENDALM\t\tCADR\tENTER\n\n# MMCHANG USES NOUN DISPLAY UNTIL ENTER.  THEN IT USES MODE DISP.\n# IT GOES TO MODROUT WITH THE NEW M M CODE IN A, BUT NOT DISPLAYED IN\n# Page 365\n# MM LIGHTS.\n#\n# IT DEMANDS 2 NUMERICAL CHARACTERS BE PUNCHED IN FOR NEW MM CODE.\n# IF NOT, IT RECYCLES.\n\n\t\tSETLOC\tDSP2BIT +10D\n\n\t\tCOUNT\t41/PIN\n\nMMCHANG\t\tTC\tREQMM\t\t# ENTPASHI ASSUMES THE TC REQMM AT MMCHANG\n\t\t\t\t\t# IF THIS MOVES AT ALL, MUST CHANGE\n\t\t\t\t\t# MMADREF AT ENTPASHI.\n\t\tCAF\tBIT5\t\t# OCT20 = ND2.\n\t\tAD\tDSPCOUNT\t# DSPCOUNT MUST = -ND2.\n\t\tEXTEND\t\t\t# DEMAND THAT 2 NUM CHAR WERE PUNCHED IN.\n\t\tBZF\t+2\n\t\tTC\tALMCYCLE\t# DSPCOUNT NOT= -ND2.  ALARM AND RECYCLE.\n\t\tCAF\tZERO\t\t# DSPCOUNT = -ND2.\n\t\tXCH\tNOUNREG\n\t\tTS\tMPAC\n\t\tCAF\tND1\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\n\t\tCADR\t2BLANK\n\t\tCS\tVD1\t\t# BLOCK NUM CHAR IN\n\t\tTS\tDSPCOUNT\n\t\tCA\tMPAC\n\t\tTC\tPOSTJUMP\n\t\tCADR\tMODROUTB\t# GO THRU STANDARD LOC.\n\nMODROUTB\t=\tV37\nREQMM\t\tCS\tQ\n\t\tTS\tREQRET\n\t\tCAF\tND1\n\t\tTS\tDSPCOUNT\n\t\tCAF\tZERO\n\t\tTS\tNOUNREG\n\t\tTC\tBANKCALL\n\t\tCADR\t2BLANK\n\t\tTC\tFLASHON\n\t\tCAF\tONE\n\t\tTS\tDECBRNCH\t# SET FOR DEC\n\t\tTC\tENTEXIT\n\n# VBRQEXEC ENTERS REQUEST TO EXEC FOR ANY ADDRESS WITH ANY PRIORITY.\n# IT DOES ENDOFJOB AFTER ENTERING REQUEST.  DISPLAY SYST IS RELEASED.\n# IT ASSUMES NOUN 26 HAS BEEN PRELOADED WITH\n# \tCOMPONENT 1 \tPRIORITY (BITS 10-14) BIT1=0 FOR NOVAC, BIT1=1 FOR FINDVAC.\n# \tCOMPONENT 2 \tJOB ADRES (12 BIT)\n# Page 366\n#\tCOMPONENT 3\tBBCON\n\nVBRQEXEC\tCAF\tBIT1\n\t\tMASK\tDSPTEM1\n\t\tCCS\tA\n\t\tTC\tSETVAC\t\t# IF BIT1 = 1, FINDVAC\n\t\tCAF\tTCNOVAC\t\t# IF BIT1 = 0, NOVAC\nREQEX1\t\tTS\tMPAC\t\t# TC NOVAC OR TC FINDVAC INTO MPAC\n\t\tCS\tBIT1\n\t\tMASK\tDSPTEM1\n\t\tTS\tMPAC +4\t\t# PRIO INTO MPAC+4 AS A TEMP\nREQUESTC\tTC\tRELDSP\n\t\tCA\tENDINST\n\t\tTS\tMPAC +3\t\t# TC ENDOFJOB INTO MPAC+3\n\t\tEXTEND\n\t\tDCA\tDSPTEM1 +1\t# JOB ADRES INTO MPAC+1\n\t\tDXCH\tMPAC +1\t\t# BBCON INTO MPAC+2\n\t\tCA\tMPAC +4\t\t# PRIO IN A\n\t\tINHINT\n\t\tTC\tMPAC\n\nSETVAC\t\tCAF\tTCFINDVC\n\t\tTC\tREQEX1\n\n# VBRQWAIT ENTERS REQUEST TO WAITLIST FOR ANY ADDRESS WITH ANY DELAY.\n# IT DOES ENDOFJOB AFTER ENTERING REQUEST.  DISPLAY SYST IS RELEASED.\n# IT ASSUMES NOUN 26 HAS BEEN PRELOADED WITH\n#\tCOMPONENT 1\tDELAY (LOW BITS)\n#\tCOMPONENT 2\tTASK ADRES (12 BIT)\n#\tCOMPONENT 3\tBBCON\n\nVBRQWAIT\tCAF\tTCWAIT\n\t\tTS\tMPAC\t\t# TC WAITLIST INTO MPAC\n\t\tCA\tDSPTEM1\t\t# TIME DELAY\nENDRQWT\t\tTC\tREQUESTC -1\n\n# REQUESTC WILL PUT TASK ADRES INTO MPAC+1, BBCON INTO MPAC+2,\n# TC ENDOFJOB INTO MPAC+3.  IT WILL TAKE TIME DELAY OUT OF MPAC+4 AND\n# LEAVE IT IN A, INHINT AND TC MPAC.\n\n\t\tSETLOC\tNVSBENDL +1\n\t\tCOUNT\t40/PIN\n\nVBPROC\t\tCAF\tONE\t\t# PROCEED WITHOUT DATA\n\t\tTS\tLOADSTAT\n\t\tTC\tKILMONON\t# TURN ON KILL MONITOR BIT\n\t\tTC\tRELDSP\n\t\tTC\tFLASHOFF\n\t\tTC\tRECALTST\t# SEE IF THERE IS ANY RECALL FROM ENDIDLE\n\n# Page 367\nVBTERM\t\tCS\tONE\n\t\tTC\tVBPROC +1\t# TERM VERB SETS LOADSTAT NEG\n\n# PROCKEY PERFORMS THE SAME FUNCTION AS VBPROC.  IT MUST BE CALLED UNDER\n# EXECUTIVE CONTROL, WITH CHRPRIO.\n\nPROCKEY\t\tCAF\tZERO\t\t# SET REQRET FOR ENTER PASS 0.\n\t\tTS\tREQRET\n\t\tCS\tVD1\t\t# BLOCK NUMERICAL CHARACTERS, SIGNS, CLEAR\n\t\tTS\tDSPCOUNT\n\t\tTC\tVBPROC\n\n# VBRESEQ WAKES ENDIDLE AT SAME LINE AS FINAL ENTER OF LOAD (L+3).\n# (MAIN USE IS INTENDED AS RESPONSE TO INTERNALLY INITIATED FLASHING\n# DISPLAYS IN ENDIDLE.  SHOULD NOT BE USED WITH LOAD VERBS, PLEASE PERFORM,\n# OR PLEASE MARK VERBS BECAUSE THEY ALREADY USE L+3 IN ANOTHER CONTEXT.)\n\nVBRESEQ\t\tCS\tZERO\t\t# MAKE IT LOOK LIKE DATA IN.\n\t\tTC\tVBPROC +1\n\n# FLASH IS TURNED OFF BY PROCEED WITHOUT DATA, TERMINATE, RESEQUENCE,\n# END OF LOAD.\n# Page 368\n\n# KEY RELEASE ROUTINE\n#\n# THIS ROUTINE ALWAYS TURNS OFF THE UPACT LIGHT AND ALWAYS CLEARS DSPLOCK.\n#\n# THE HIGHEST PRIORITY FUNCTION OF THE KEY RELEASE BUTTON IS THE\n# UNSUSPENDING OF A SUSPENDED MONITOR WHICH WAS EXTERNALLY INITIATED.\n# THIS FUNCTION IS ACCOMPLISHED BY CLEARING DSPLOCK AND TURNING OFF\n# THE KEY RELEASE LIGHT IF BOTH DSPLIST AND CADRSTOR ARE EMPTY.\n#\n# IF NO SUCH MONITOR EXISTS, THEN RELDSP IS EXECUTED TO CLEAR DSPLOCK\n# AND THE EXTERNAL MONITOR BIT (FREEING THE DISPLAY SYSTEM FOR INTERNAL\n# USE), TURN OFF THE KEY RELEASE LIGHT, AND WAKE UP ANY JOB IN DSPLIST.\n#\n# IN ADDITION IF THERE IS A JOB IN ENDIDLE, THEN CONTROL IS TRANSFERRED\n# TO PINBRNCH (IN DISPLAY INTERFACE ROUTINE) TO RE-EXECUTE THE SERIES OF\n# NVSUB CALLS ETC. THAT PRECEDED THE ENDIDLE CALL STILL AWAITING RESPONSE.\n# THIS FEATURE IS INTENDED FOR USE WHEN THE OPERATOR HAS BEEN REQUESTED TO\n# RESPOND TO SOME INTERNAL ACTION THAT USED ENDIDLE, BUT HE HAS WRITTEN\n# OVER THE INFORMATION ON THE DISPLAY PANEL BY SOME DISPLAYS OF HIS OWN\n# INITIATION WHICH DO NOT SERVE AS RESPONSES.  HITTING KEYRLSE WILL\n# RE-ESTABLISH THE DISPLAYS TO THE STATE THEY WERE IN BEOFRE HE OBSCURED\n# THEM, SO THAT HE CAN SEE THE WAITING REQUEST.  THIS WORKS ONLY FOR\n# INTERNAL PROGRAMS THAT USED ENDIDLE THROUGH MARGARET'S DISPLAY\n# SUBROUTINES.\n\nVBRELDSP\tCS\tBIT3\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\t# TURN OF UPACT LITE\n\t\tCCS\t21/22REG\t# OLD DSPLOCK\n\t\tCAF\tBIT14\n\t\tMASK\tMONSAVE1\t# EXTERNAL MONITOR BIT (EMB)\n\t\tCCS\tA\n\t\tTC\tUNSUSPEN\t# OLD DSPLOCK AND EMB BOTH 1, UNSUSPEND,\nTSTLTS4\t\tTC\tRELDSP\t\t# NOT UNSUSPENDING EXTERNAL MONITOR\n\t\tCCS\tCADRSTOR\t#\tRELEASE DISPLAY SYSTEM AND\n\t\tTC\t+2\t\t#\tDO RE-ESTABLISH IF CADRSTOR IS FULL.\n\t\tTC\tENDOFJOB\n\t\tTC\tPOSTJUMP\n\t\tCADR\tPINBRNCH\nUNSUSPEN\tCAF\tZERO\t\t# EXTERNAL MONITOR IS SUSPENDED,\n\t\tTS\tDSPLOCK\t\t#\tJUST UNSUSPEND IT BY CLEARING DSPLOCK.\n\t\tCCS\tCADRSTOR\t#\tTURN KEY RELEASE LIGHT OFF IF BOTH\n\t\tTC\tENDOFJOB\t#\tCADRSTOR AND DSPLIST ARE EMPTY.\n\t\tTC\tRELDSP1\n\t\tTC\tENDOFJOB\n\nENDRELDS\tEQUALS\n\n# Page 369\n# NVSUB IS USED FOR SUBROUTINE CALLS FROM WITHIN COMPUTER.  IT CAN BE\n# USED TO CALL THE COMBINATION OF ANY DISPLAY, LOAD, OR MONITOR VERB\n# TOGETHER WITH ANY NOUN AVAILABLE TO THE KEYBOARD.\n# PLACE 0VVVVVVVNNNNNNN INTO A.\n# V'S ARE THE 7-BIT VERB CODE.  N'S ARE THE 7-BIT NOUN CODE.\n#\n# IF NVSUB IS CALLED WITH THE FOLLOWING NEGATIVE NUMBERS (RATHER THAN THE\n# VERB-NOUN CODE) IN A, THEN THE DISPLAY IS BLANKED AS FOLLOWS ---\n# -4 FULL BLANK, -3 LEAVE MODE, -2 LEAVE MODE AND VERB, -1 BLANK R'S ONLY.\n#\n# NVSUB CAN BE USED WITH MACHINE CADR TO BE SPECIFIED BY PLACING THE CADR INTO\n# MPAC+2 BEFORE THE STANDARD NVSUB CALL.\n#\n# NVSUB RETURNS TO 2+ CALLING LOC AFTER PERFORMING TASK, IF DISPLAY\n# SYSTEM IS AVAILABLE.  THE NEW NOUN AND VERB CODES ARE DISPLAYED.\n# IF V'S =0, THE NEW NOUN CODE IS DISPLAYED ONLY (RETURN WITH NO FURTHER\n# ACTION).  IF N'S =0, THE NEW VERB CODE IS DISPLAYED ONLY (RETURN WITH NO\n# FURTHER ACTION).\n#\n# IT RETURNS TO 1+ CALLING LOC WITHOUT PERFORMING TASK, IF DISPLAY\n# SYSTEM IS BLOCKED (NOTHING IS DISPLAYED IN THIS CASE).\n# IT DOES TC ABORT (WITH OCT 01501) IF IT ENCOUNTERS A DISPLAY PROGRAM\n# ALARM CONDITION BEFORE RETURN TO CALLER.\n#\n# THE DISPLAY SYSTEM IS BLOCKED BY THE DEPRESSION OF ANY\n# KEY, EXCEPT ERROR LIGHT RESET.\n# IT IS RELEASED BY THE KEY RELEASE BUTTON, ALL EXTENDED VERBS,\n# PROCEED WITHOUT DATA, TERMINATE, RESEQUENCE, INITIALIZE EXECUTIVE,\n# RECALL PART OF RECALTST IF ENDIDLE WAS USED,\n# VB = REQUEST EXECUTIVE, VB = REQUEST WAITLIST,\n# MONITOR SET UP.\n#\n# THE DISPLAY SYSTEM IS ALSO BLOCKED BY THE EXTERNAL MONITOR BIT, WHICH\n# INDICATES AND EXTERNALLY INITIATED MONITOR IS RUNNING (SEE MONITOR).\n#\n# A NVSUB CALL THAT PASSES DSPLOCK AND THE EXTERNAL MONITOR BIT ENDS OLD\n# MONITOR.\n#\n# DSPLOCK IS THE INTERLOCK FOR USE OF KEYBOARD AND DISPLAY SYSTEM WHICH\n# LOCKS OUT INTERNAL USE WHENEVER THERE IS EXTERNAL KEYBOARD ACTION.\n#\n# NVSUB SHOULD BE USED TWICE IN SUCCESSION FOR `PLEASE PERFORM' SITUATIONS\n# (SIMILARLY FOR PLEASE MARK).  FIRST PLACE THE CODED NUMBER FOR WHAT\n# ACTION IS DESIRED OF OPERATOR INTO THEREGISTERS REFERRED TO BY THE\n# `CHECKLIST' NOUN.  GO TO NVSUB WITH A DISPLAY VERB AND THE `CHECKLIST'\n# NOUN.  GO TO NVSUB AGAIN WITH THE `PLEASE PERFORM' VERB AND ZEROS IN THE\n# LOW 7 BITS.  THIS `PASTES UP' THE `PLEASE PERFORM' VERB INTO THE VERB\n# LIGHTS.\n#\n# NVMONOPT IS AN ENTRY SIMILAR TO NVSUB, BUT REQUIRING AN ADDITIONAL\n# Page 370\n# PARAMETER IN L.  IT SHOULD BE USED ONLY WITH A MONITOR VERB-NOUN CODE IN\n# A.  AFTER EACH MONITOR DISPLAY A *PLEASE* VERB WILL BE PASTED IN THE VERB\n# LIGHTS OR DATA WILL BE BLANKED (OR BOTH) ACCORDING TO THE OPTIONS\n# SPECIFIED IN L.  IF BITS 8-14 OF L ARE OTHER THAN ZERO, THEN THEY WILL\n# BE INTERPRETED AS A VERB CODE AND PASTED IN THE VERB LIGHTS.  (THIS VERB\n# CODE SHOULD DESIGNATE ONE OF THE *PLEASE* VERBS.)  IF BITS 1-3 OF L ARE\n# OTHER THAN ZERO, THEN THEY WILL BE USED BO BLANK DATA BY BEING FED TO\n# BLANKSUB.  IF NVMONOPT IS USED WITH A VERB OTHER THAN A MONITOR VERB,\n# THE PARAMETER IN L HAS NO EFFECT.\n#\n# NVSUB IN FIXED-FIXED PLACES 2+CALLING LOC INTO NVQTEM, TC NVSUBEND INTO\n# ENTRET.  (THIS WILL RESTORE OLD CALLING BANK BITS)\n\n\t\tSETLOC\tENDALM +1\n\n\t\tCOUNT\t02/PIN\n\nNVSUB\t\tLXCH\t7\t\t# ZERO NVMONOPT OPTIONS\nNVMONOPT\tTS\tNVTEMP\n\t\tCAF\tBIT14\n\t\tMASK \tMONSAVE1\t# EXTERNAL MONITOR BIT\n\t\tAD\tDSPLOCK\n\t\tCCS\tA\n\t\tTC\tQ\t\t# DSP SYST BLOCKED.  RET TO 1.  CALLING LOC\n\t\tCAF\tONE\t\t# DSP SYST AVAILABLE.\nNVSBCOM\t\tAD\tQ\n\t\tTS\tNVQTEM\t\t# 2+ CALLING LOC INTO NVQTEM\n\t\tLXCH\tMONSAVE2\t# STORE NVMONOPT OPTIONS\n\t\tTC\tKILMONON\t# TURN ON KILL MONITOR BIT\nNVSUBCOM\tCAF\tNVSBBBNK\n\n\t\tXCH\tBBANK\n\t\tEXTEND\t\t\t# SAVE OLD SUPERBITS\n\t\tROR\tSUPERBNK\n\t\tTS\tNVBNKTEM\n\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE \tSUPERBNK\n\t\tTC\tNVSUBB\t\t# GO TO NVSUB1 THRU STANDARD LOC\n\t\tEBANK=\tDSPCOUNT\nNVSBBBNK\tBBCON\tNVSUB1\n\nPINSUPBT\t=\tNVSBBBNK\t# CONTAINS THE PINBALL SUPERBIT.\n\nNVSUBEND\tDXCH\tNVQTEM\t\t# NVBNKTEM MUST = NVQTEM+1\n\t\tTC\tSUPDXCHZ\t# DTCB WITH SUPERBIT SWITCHING\n\n\t\tSETLOC\tENDRQWT +1\n\n\t\tCOUNT\t41/PIN\n# Page 371\n\n# BLANKDSP BLANKS DISPLAY ACCORDING TO OPTION NUMBER IN NVTEMP AS FOLLOWS:\n# -4 FULL BLANK, -3 LEAVE MODE, -2 LEAVE MODE AND VERB, -1 BLANK R'S ONLY.\n\nBLANKDSP\tAD\tSEVEN\t\t# 7,8,9, OR 10 (A HAD 0,1,2,OR 3)\n\t\tINHINT\n\t\tTS\tCODE\t\t# BLANK SPECIFIED DSPTABS\n\t\tCS\tBIT12\n\t\tINDEX\tCODE\n\t\tXCH\tDSPTAB\n\t\tCCS\tA\n\t\tINCR\tNOUT\n\t\tTC\t+1\n\t\tCCS\tCODE\n\t\tTC\tBLANKDSP +2\n\t\tRELINT\n\t\tINDEX\tNVTEMP\n\t\tTC\t+5\n\t\tTC\t+1\t\t# NVTEMP HAS\t-4 (NEVER TOUCH MODREG)\n\t\tTS\tVERBREG\t\t#\t\t-3\n\t\tTS\tNOUNREG\t\t#\t\t-2\n\t\tTS\tCLPASS\t\t#\t\t-1\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tFLASHOFF\t# PROTECT AGAINST INVISIBLE FLASH\n\t\tTC\tENTSET -2\t# ZEROS REQRET\n\nNVSUB1\t\tCAF\tENTSET\t\t# IN BANK\n\t\tTS\tENTRET\t\t# SET RETURN TO NVSUBEND\n\t\tCCS\tNVTEMP\t\t# WHAT NOW\n\t\tTC\t+4\t\t# NORMAL NVSUB CALL (EXECUTE VN OR PASTE)\n\t\tTC\tGODSPALM\n\t\tTC\tBLANKDSP\t# BLANK DISPLAY AS SPECIFIED\n\t\tTC\tGODSPALM\n\t\tCAF\tLOW7\n\t\tMASK\tNVTEMP\n\t\tTS\tMPAC +3\t\t# TEMP FOR NOUN (CAN'T USE MPAC.  DSPDECVN\n\t\tCA\tNVTEMP\t\t#\t\t USES MPAC, +1, +2).\n\t\tTS\tEDOP\t\t# RIGHT 7\n\t\tCA\tEDOP\n\t\tTS\tMPAC +4\t\t# TEMP FOR VERB (CAN'T USE MPAC+1.  DSPDECVN\n\t\t\t\t\t# \t\t USES MPAC, +1, +2)\n\t\tCCS\tMPAC +3\t\t# TEST NOUN\n\t\tTC\tNVSUB2\t\t# IF NOUN NOT +0, GO ON\n\t\tCA\tMPAC +4\n\t\tTC\tUPDATVB -1\t# IF NOUN = +0, DISPLAY VERB.  THEN RETURN\n\t\tCAF\tZERO\t\t# ZERO REQRET SO THAT PASTED VERBS CAN\n\t\tTS\tREQRET\t\t# BE EXECUTED BY OPERATOR.\nENTSET\t\tTC\tNVSUBEND\nNVSUB2\t\tCCS\tMPAC +4\t\t# TEST VERB\n\t\tTC\t+4\t\t# IF VERB NOT +0, GO ON\n# Page 372\n\t\tCA\tMPAC +3\n\t\tTC\tUPDATNN -1\t# IF VERB = +0, DISPLAY NOUN.  THEN RETURN\n\t\tTC\tNVSUBEND\n\t\tCA\tMPAC +2\t\t# TEMP FOR MACH CADR TO BE SPEC.  (DSPDECVN\n\t\tTS\tMPAC +5\t\t# \tUSES MPAC, +1, +2)\n\t\tCA\tMPAC +4\n\t\tTC\tUPDATVB -1\t# IF BOTH NOUN AND VERB NOT +0, DISPLAY\n\t\tCA\tMPAC +3\t\t# BOTH AND GO TO ENTPAS0.\n\t\tTC\tUPDATNN -1\n\t\tCAF\tZERO\n\t\tTS\tLOADSTAT\t# SET FOR WAITING FOR DATA CONDITION\n\t\tTS\tCLPASS\n\t\tTS\tREQRET\t\t# SET REQRET FOR PASS 0.\n\t\tCA\tMPAC +5\t\t# RESTORES MACH CADR TO BE SPEC TO MPAC+2\n\t\tTS\tMPAC +2\t\t# FOR USE IN INTMCTBS (IN ENTPAS0).\nENDNVSB1\tTC\tENTPAS0\n\n# IF INTERNAL MACH CADR TO BE SPECIFIED, MPAC+2 WILL BE PLACED INTO\n# NOUNCADR IN ENTPAS0 (INTMCTBS).\n\n\t\tSETLOC\tNVSUBEND +2\n\t\tCOUNT\t02/PIN\n\t\t\t\t\t# FORCE BIT 15 OF MONSAVE1 TO .\nKILMONON\tCAF\tBIT15\t\t# \tTHIS IS THE KILL MONITOR BIT.\n\t\tTS\tMONSAVE1\t# TURN OFF BIT 14, THE EXTERNAL\n\t\t\t\t\t# \tMONITOR BIT.\n\t\tTC\tQ\n\n# LOADSTAT\t+0\tINACTIVE (WAITING FOR DATA).  SET BY NVSUB\n#\t\t+1\tPROCEED NO DATA.  SET BY SPECIAL VERB\n#\t\t-1\tTERMINATE.  SET BY SPECIAL VERB.\n#\t\t-0\tDATA IN.  \tSET BY END OF LOAD ROUTINE.\n#\t\t\tOR RESEQUENCE.  SET BY VERB 32\n#\n# L TO ENDIDLE (FIXED FIXED).\n# ROUTINES THAT REQUEST LOADS THROUGH NVSUB SHOULD USE ENDIDLE WHILE\n# WAITING FOR THE DATA TO BE LOADED.  ENDIDLE PUTS CURRENT JOB TO SLEEP.\n# ENDIDLE CANNOT BE CALLED FROM ERASABLE OR F/F MEMORY,\n# SINCE JOB SLEEP AND JOBWAKE CAN HANDLE ONLY FIXED BANKS.\n# RECALTST TESTS LOADSTAT AND WAKES JOB UP TO,\n#\tL+1\tFOR TERMINATE\n#\tL+2\tFOR PROCEED WITHOUT DATA\n#\tL+3\tFOR DATA IN, OR RESEQUENCE\n# IT DOES NOTHING IF LOADSTAT INDICATES WAITING FOR DTA.\n# Page 373\n#\n# ENDIDLE ABORTS (WITH CODE 1206) IF A SECOND JOB ATTEMPTS TO GO TO SLEEP\n# IN PINBALL.  IN PARTICULAR, IF AN ATTEMPT IS MADE TO GO TO ENDIDLE WHEN\n#\t1)\tCADRSTOR NOT= +0.  THIS IS THE CASE WHERE THE CAPACITY OF ENDIDLE IS\n#\t\tEXCEEDED.  (+-NZ INDICATES A JOB IS ALREADY ASLEEP DUE TO ENDIDDLE.)\n#\t2)\tDSPLIST NOT= +0.  THIS INDICATES A JOB IS ALREADY ASLEEP DUE TO\n#\t\tNVSUBUSY.\n\nENDIDLE\t\tLXCH\tQ\t\t# RETURN ADDRESS INTO L.\n\t\tTC\tISCADR+0\t# ABORT IF CADRSTOR NOT= +0.\n\t\tTC\tISLIST+0\t# ABORT IF DSPLIST NOT= +0\n\t\tCA\tL\t\t# DON'T SET DSPLOC TO 1 SO CAN USE\n\t\tMASK\tLOW10\t\t# ENDIDLE WITH NVSUB INITIATE MONITOR.\n\t\tAD\tFBANK\t\t# SAME STRATEGY FOR CADR AS MAKECADR.\n\t\tTS\tCADRSTOR\n\t\tTC\tJOBSLEEP\n\nENDINST\t\tTC\tENDOFJOB\n\nISCADR+0\tCCS\tCADRSTOR\t# ABORTS (CODE 01206) IF CADRSTOR NOT= +0.\n\t\tTC\tDSPABORT\t# RETURNS IF CADRSTOR = +0.\n\t\tTC\tQ\n\t\tTC\tDSPABORT\n\nISLIST+0\tCCS\tDSPLIST\t\t# ABORTS (CODE 01206) IF DSPLIST NOT= +0.\n\t\tTC\tDSPABORT\t# RETURNS IF DSPLIST = +0.\n\t\tTC\tQ\nDSPABORT\tTC\tPOODOO\n\t\tOCT\t01206\n\n# JAMTERM ALLOWS PROGRAMS TO PERFORM THE TERMINATE FUNCTION.\n# IT DOES ENDOFJOB.\n\nJAMTERM\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\t\tCAF\t34DEC\n\t\tTS\tREQRET\t\t# LEAVE ENTER SET FOR ENTPASS0.\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tVBTERM\n\n34DEC\t\tDEC\t34\n\n# JAMPROC ALLOWS PROGRAMS TO PERFORM THE PROCEED/PROCEED WITHOUT DATA\n# FUNCTION.  IT DOES ENDOFJOB.\n# Page 374\n\nJAMPROC\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\t\tCAF\t33DEC\n\t\tTS\tREQRET\t\t# LEAVE ENTER SET FOR ENTPASS0.\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tVBPROC\n\n33DEC\t\tDEC\t33\n\n# BLANKSUB BLANKS ANY COMBINATION OF R1, R2, R3.\n# CALL WITH BLANKING CODE IN A.\n# BIT1=1 BLANKS R1, BIT2=1 BLANKS R2, BIT3=1 BLANKS R3.\n# ANY COMBINATION OF THESE BITS IS ACCEPTED.\n#\n# DSPCOUNT IS RESTORED TO STATE IT WAS IN BEFORE BLANKSUB WAS EXECUTED.\n\nBLANKSUB\tMASK \tSEVEN\n\t\tTS\tNVTEMP\t\t# STORE BLANKING CODE IN NVTEMP.\n\t\tCAF\tBIT14\n\t\tMASK\tMONSAVE1\t# EXTERNAL MONITOR BIT\n\t\tAD\tDSPLOCK\n\t\tCCS\tA\n\t\tTC\tQ\t\t# DSP SYST BLOCKED.  RET TO 1+ CALLING LOC\n\t\tINCR\tQ\t\t# DSP SYST AVAILABLE\n\t\t\t\t\t# SET RETURN FOR 2+ CALLING LOC\n\t\tCCS\tNVTEMP\n\t\tTCF\t+2\n\t\tTC\tQ\t\t# NOTHING TO BLANK.  RET TO 2+ CALLING LOC\n\t\tLXCH\tQ\t\t# SET RETURN FOR 2 + CALLING LOC\n\t\tCAF\tBLNKBBNK\n\t\tXCH\tBBANK\n\t\tEXTEND\n\t\tROR\tSUPERBNK\t# SAVE OLD SUPERBITS.\n\t\tDXCH\tBUF\n\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\t\tTC\tBLNKSUB1\n\n\t\tEBANK=\tDSPCOUNT\nBLNKBBNK\tBBCON\tBLNKSUB1\nENDBLFF\t\tEQUALS\n\n\t\tSETLOC\tENDRELDS\n\t\tCOUNT\t40/PIN\n\n# Page 375\nBLNKSUB1\tCA\tDSPCOUNT\t# SAVE OLD DSPCOUNT FOR LATER RESTORATION\n\t\tTS\tBUF \t+2\n\t\tCAF\tBIT1\t\t# TEST BIT1.  SEE IF R1 TO BE BLANKED.\n\t\tTC\tTESTBIT\n\t\tCAF\tR1D1\n\t\tTC\t5BLANK \t-1\n\t\tCAF\tBIT2\t\t# TEST BIT2.  SEE IF R2 TO BE BLANKED.\n\t\tTC\tTESTBIT\n\t\tCAF\tR2D1\n\t\tTC\t5BLANK \t-1\n\t\tCAF\tBIT3\t\t# TEST BIT3.  SEE IF R3 TO BE BLANKED.\n\t\tTC\tTESTBIT\n\t\tCAF\tR3D1\n\t\tTC\t5BLANK \t-1\n\t\tCA\tBUF \t+2\t# RESTORE DSPCOUNT TO STATE IT HAD\n\t\tTS\tDSPCOUNT\t# \tBEFORE BLANKSUB.\n\t\tDXCH\tBUF\t\t# CALL L+2 DIRECTORY.\n\t\tTC\tSUPDXCHZ +1\t# DTCB WITH SUPERBIT SWITCHING\n\nTESTBIT\t\tMASK\tNVTEMP\t\t# NVTEMP CONTAINS BLANKING CODE\n\t\tCCS\tA\n\t\tTC\tQ\t\t# IF CURRENT BIT = 1, RETURN TO L+1.\n\t\tINDEX\tQ\t\t# IF CURRENT BIT = 0, RETURN TO L+3.\n\t\tTC\t2\n\nENDBSUB1\tEQUALS\n\n# DSPMM DOES NOT DISPLAY MODREG DIRECTLY.  IT PUTS IN EXEC REQUEST WITH\n# PRIO 30000 FOR DSPMMJB AND RETURNS TO CALLER.\n#\n# IF MODREG CONTAINS -0, DSPMMJB BLANKS THE MODE LIGHTS.\n#\n# DSPMM MUST BE IN BANK 27 OR LOWER, SO IT CAN BE CALLED VIA BANKCALL.\n\n\t\tBANK\t7\n\t\tSETLOC\tPINBALL4\n\t\tBANK\n\n\t\tCOUNT\t07/PIN\n\nDSPMM\t\tXCH\tQ\n\t\tTS\tMPAC\n\t\tINHINT\n\t\tCAF\tCHRPRIO\n\t\tTC\tNOVAC\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tDSPMMJB\n\n\t\tRELINT\n# Page 376\nENDSPMM\t\tTC\tMPAC\n\n# DSPMM PLACE MAJOR MODE CODE INTO MODREG\n\n\t\tSETLOC\tENDBSUB1\n\n\t\tCOUNT\t40/PIN\n\nDSPMMJB\t\tCAF\tMD1\t\t# GETS HERE THRU DSPMM\n\t\tXCH\tDSPCOUNT\n\t\tTS\tDSPMMTEM\t# SAVE DSPCOUNT\n\t\tCCS\tMODREG\n\t\tAD\tONE\n\t\tTC\tDSPDECVN\t# IF MODREG IS + OR +0, DISPLAY MODREG\n\t\tTC\t+2\t\t# IF MODREG IS -NZ, DO NOTHING\n\t\tTC\t2BLANK\t\t# IF MODREG IS -0, BLANK MM\n\t\tXCH\tDSPMMTEM\t# RESTORE DSPCOUNT\n\t\tTS\tDSPCOUNT\n\t\tTC\tENDOFJOB\n\n# RECALTST IS ENTERED DIRECTLY AFTER DATA IS LOADED (OR RESEQUENCE VERB IS\n# EXECUTED), TERMINATE VERB IS EXECUTED, OR PROCEED WITHOUT DATA VERB IS\n# EXECUTED.  IT WAKES UP JOB THAT DID TC ENDIDLE.\n#\n# IF CADRSTOR NOT= +0, IT PUTS +0 INTO DSPLOCK, AND TURNS OFF KEY RLSE\n# LIGHT IF DSPLIST IS EMPTY (LEAVES KEY RLSE LIGHT ALONE IF NOT EMPTY).\n\nRECALTST \tCCS\tCADRSTOR\n\t\tTC\tRECAL1\n\t\tTC\tENDOFJOB\t# NORMAL EXIT IF KEYBOARD INITIATED\nRECAL1\t\tCAF\tZERO\n\t\tXCH\tCADRSTOR\n\t\tINHINT\n\t\tTC\tJOBWAKE\n\t\tCCS\tLOADSTAT\n\t\tTC\tDOPROC\t\t# + PROCEED WITHOUT DATA\n\t\tTC\tENDOFJOB\t# PATHOLOGICAL CASE EXIT\n\t\tTC\tDOTERM\t\t# -  TERMINATE\n\t\tCAF\tTWO\t\t# -0 DATA IN OR RESEQUENCE\nRECAL2\t\tINDEX\tLOCCTR\n\t\tAD\tLOC\t\t# LOC IS + FOR BASIC JOBS\n\t\tINDEX\tLOCCTR\n\t\tTS\tLOC\n\t\tCA\tNOUNREG\t\t# SAVE VERB IN MPAC, NOUN IN MPAC+1 AT\n\t\tTS\tL\t\t# TIME OF RESPONSE TO ENDIDLE FOR\n\t\tCA\tVERBREG\t\t# POSSIBLE LATER TESTING BY JOB THAT HAS\n\t\tINDEX\tLOCCTR\t\t# BEEN WAKED UP.\n\t\tDXCH\tMPAC\n\t\tRELINT\n# Page 377\nRECAL3\t\tTC\tRELDSP\n\t\tTC\tENDOFJOB\n\nDOTERM\t\tCAF\tZERO\n\t\tTC\tRECAL2\n\nDOPROC\t\tCAF\tONE\n\t\tTC\tRECAL2\n\n\t\tSBANK=\tLOWSUPER\n# Page 378\n# MISCELLANEOUS SERVICE ROUTINES IN FIXED/FIXED\n\n\t\tSETLOC\tENDBLFF\n\n\t\tCOUNT\t02/PIN\n\n# SETNCADR\tE CADR ARRIVES IN A.  IT IS STORED IN NOUNCADR.  EBANK BITS\n#\t\tARE SET.  E ADRES IS DERIVED AND PUT INTO NOUNADD.\n\nSETNCADR\tTS\tNOUNCADR\t# STORE ECADR\n\t\tTS\tEBANK\t\t# SET EBANK BITS\n\t\tMASK\tLOW8\n\t\tAD\tOCT1400\n\t\tTS\tNOUNADD\t\t# PUT E ADRES INTO NOUNADD\n\t\tTC\tQ\n\n# SETNADD\tGETS E CADR FROM NOUNCADR, SETS EBANK BITS, DERIVES\n#\t\tE ADRES AND PUTS IT INTO NOUNADD.\n\nSETNADD\t\tCA\tNOUNCADR\n\t\tTCF\tSETNCADR +1\n\n# SETEBANK\tE CADR ARRIVES IN A.  EBANK BITS ARE SET.  E ADRES IS\n#\t\tDERIVED AND LEFT IN A.\n\nSETEBANK\tTS\tEBANK\t\t# SET EBANK BITS\n\t\tMASK\tLOW8\n\t\tAD\tOCT1400\t\t# E ADRES LEFT IN A\n\t\tTC\tQ\n\nR1D1\t\tOCT\t16\t\t# THESE 3 CONSTANTS FORM A PACKED TABLE.\nR2D1\t\tOCT\t11\t\t# DON'T SEPARATE.\nR3D1\t\tOCT\t4\n\nRIGHT5\t\tTS\tCYR\n\t\tCS\tCYR\n\t\tCS\tCYR\n\t\tCS\tCYR\n\t\tCS\tCYR\n\t\tXCH\tCYR\n\t\tTC\tQ\n\nLEFT5\t\tTS\tCYL\n\t\tCS\tCYL\n\t\tCS\tCYL\n\t\tCS\tCYL\n# Page 379\n\t\tCS\tCYL\n\t\tXCH\tCYL\n\t\tTC\tQ\n\nSLEFT5\t\tDOUBLE\n\t\tDOUBLE\n\t\tDOUBLE\n\t\tDOUBLE\n\t\tDOUBLE\n\t\tTC\tQ\n\nLOW5\t\tOCT\t37\t\t# THESE 3 CONSTANTS FORM A PACKED TABLE.\nMID5\t\tOCT\t1740\t\t# DON'T SEPARATE.\nHI5\t\tOCT\t76000\t\t# MUST STAY HERE\n\nTCNOVAC\t\tTC\tNOVAC\nTCWAIT\t\tTC\tWAITLIST\nTCTSKOVR\tTC\tTASKOVER\nTCFINDVC\tTC\tFINDVAC\n\nCHRPRIO\t\tOCT\t30000\t\t# EXEC PRIORITY OF CHARIN\n\nLOW11\t\tOCT\t3777\nB12-1\t\tEQUALS\tLOW11\nLOW8\t\tOCT\t377\n\nVD1\t\tOCT\t23\t\t# THESE 3 CONSTANTS FORM A PACKED TABLE.\nND1\t\tOCT\t21\t\t# DON'T SEPARATE.\nMD1\t\tOCT\t25\n\nBINCON\t\tDEC\t10\n\nFALTON\t\tCA\tBIT7\t\t# TURN ON OPERATOR ERROR LIGHT.\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# BIT 7 OF CHANNEL 11\n\t\tTC\tQ\n\nFALTOF\t\tCS\tBIT7\t\t# TURN OFF OPERATOR ERROR LIGHT\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\t# BIT 7 OF CHANNEL 11\n\t\tTC\tQ\n\nRELDSPON\tCAF\tBIT5\t\t# TURN ON KEY RELEASE LIGHT\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# BIT 5 OF CHANNEL 11\n\t\tTC\tQ\n\n# Page 380\nLODSAMPT\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tSAMPTIME\n\t\tTC\tQ\n\nTPSL1\t\tEXTEND\t\t\t# SHIFTS MPAC, +1, +2 LEFT 1\n\t\tDCA\tMPAC \t+1\t# LEAVES OVFIND SET TO +/- 1 FOR OF/UF\n\t\tDAS\tMPAC\t+1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\n\t\tTS\t7\t\t# TS A DOES NOT CHANGE A ON OF/UF.\n\t\tTC\tQ\t\t# NO NET OF/UF\n\t\tTS\tMPAC+6\t\t# MPAC +6 SET TO +/- 1 FOR OF/UF\n\t\tTC\tQ\n\n# IF MPAC, +1 ARE EACH +NZ OR +0 AND C(A)=-0, SHORTMP WRONGLY GIVES +0.\n# IF MPAC, +1 ARE EACH -NZ OR -0 AND C(A)=+0, SHORTMP WRONGLY GIVES +0.\n# PRSHRTMP FIXES FIRST CASE ONLY, BY MERELY TESTING C(A) AND IF IT = -0,\n# SETTING RESULT TO -0.\n#\n# (DO NOT USE PRSHRTMP UNLESS MPAC, +1 ARE EACH +NZ OR +0, AS THEY ARE\n# WHEN THEY CONTAIN THE SF CONSTANTS.)\n\nPRSHRTMP\tTS\tMPTEMP\n\t\tCCS\tA\n\t\tCA\tMPTEMP\t\t# C(A) +,  DO REGULAR SHORTMP\n\t\tTCF\tSHORTMP +1\t# C(A) +0, DO REGULAR SHORTMP\n\t\tTCF\t-2\t\t# C(A) -,  DO REGULAR SHORTMP\n\t\tCS\tZERO\t\t# C(A) -0, FORCE RESULT TO -0 AND RETURN.\n\t\tTS\tMPAC\n\t\tTS\tMPAC \t+1\n\t\tTS\tMPAC \t+2\n\t\tTC\tQ\n\nFLASHON\t\tCAF\tBIT6\t\t# TURN ON V/N FLASH\n\t\tEXTEND\t\t\t# BIT 6 OF CHANNEL 11\n\t\tWOR\tDSALMOUT\n\t\tTC\tQ\n\nFLASHOFF\tCS\tBIT6\t\t# TURN OFF V/N FLASH\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\t# BIT 6 OF CHANNEL 11\n\t\tTC\tQ\n\n# Page 381\n# INTERNAL USE OF KEYBOARD AND DISPLAY PROGRAM.\n#\n# USER MUST SCHEDULE CALLS TO NVSUB SO THAT THERE IS NO CONFLICT OF USE OR\n# CONFUSION TO OPERATOR.  THE OLD CRABLOCK (INTERNAL/INTERNAL INTERLOCK)\n# HAS BEEN REMOVED AND THE INTERNAL USER NO LONGER HAS THE PROTECTION THIS\n# OFFERED.\n#\n# THERE ARE TWO WAYS A JOB CAN BE PUT TO SLEEP BY THE KEYBOARD + DISPLAY\n# PROGRAM.\t1)\tBY ENDIDLE\n#\t\t2)\tBY NVSUBUSY\n# THE BASIC CONVENTION IS THAT ONLY ONE JOB WILL BE PERITTED ASLEEP VIA\n# THE KEYBOARD + DISPLAY PROGRAM AT A TIME.  IF A JOB ATTEMPTS TO GO TO\n# SLEEP BY MEANS OF (1) OR (2) AND THERE IS ALREADY AJOB ASLEEP THAT WAS\n# PUT TO SLEEP BY (1) OR (2), THEN AN ABORT IS CAUSED.\n#\n# THE CALLING SEQUENCE FOR NVSUB IS\n#\t\t\tCAF\t\tV/N\n#\tL\t\tTC\t\tNVSUB\n#\tL+1\t\tRETURN HERE IF OPERATOR HAS INTERVENED\n#\tL+2\t\tRETURN HERE AFTER EXECUTION\n#\n# A ROUTINE CALLED NVSUBUSY IS PROVIDED (USE IS OPTIONAL) TO PUT\n# YOUR JOB TO SLEEP UNTIL THE OPERATOR RELEASES THE KEYBOARD + DISPLAY\n# SYSTEM.  NVSUBUSY ALSO TURNS ON THE KEY RELEASE LIGHT.\n# NVSUBUSY CANNOT BE CALLED FROM ERASABLE OR F/F MEMORY,\n# SINCE JOBSLEEP AND JOBWAKE CAN HANDLE ONLY FIXED BANKS.\n#\n# THE CALLING SEQUENCE IS\n#\tCAF\tWAKEFCADR\n#\tTC\tNVSUBUSY\n# .\n#\n# NVSUBUSY IS INTENDED FOR USE WHEN AN INTERNAL PROGRAM FINDS THE OPERATOR\n# IS NOT USING THE KEYBOARD + DISPLAY PROGRAM (BY HIS OWN INITIATION).  IT IS\n# NOT INTENDED FOR USE WHEN ONE INTERNAL PROGRAM FINDS ANOTHER INTERNAL\n# PROGRAM USING THE KEYBOARD + DISPLAY PROGRAM.\n#\n# NVSUBUSY ABORTS (WITH CODE 01206) IF A SECOND JOB ATTEMPTS TO GO TO\n# SLEEP IN PINBALL.  IN PARTICULAR, IF AN ATTEMPT IS MAKE TO GO TO NVSUBUSY\n# WHEN\n#\n#\t1)\tDSPLIST NOT= +0.  THIS IS THE CASE WHERE THE CAPACITY FO THE DSPLIST\n#\t\tIS EXCEEDED.\n#\t2) \tCADRSTOR NOT= +0.  THIS INDICATES THAT A JOB IS ALREADY USING\n# Page 382\n# ENDIDLE.  (+-NZ INDICATES A JOB IS ALREADY ASLEEP DUE TO ENDIDLE.)\n\nPRENVBSY\tCS\t2K+3\t\t# SPECIAL ENTRANCE FOR ROUTINES IN FIXED\n\t\tAD\tQ\t\t# BANKS ONLY DESIRING THE FCADR OF (LOC\n\t\tAD\tFBANK\t\t# FROM WHICH THE TC PRENVBSY WAS DONE) -2\nNVSUBUSY\tTC\tPOSTJUMP\t# TO BE ENTERED.\n\t\tCADR\tNVSUBSY1\n2K+3\t\tOCT\t2003\n\n# NVSUBSY1 MUST BE IN BANK 27 OR LOWER, SO IT WILL PUT CALLER TO SLEEP\n# WITH HIS PROPER SUPERBITS.\n\n\t\tSETLOC\tENDSPMM +1\n\t\tCOUNT\t07/PIN\n\nNVSUBSY1\tTS\tL\n\t\tTC\tISCADR+0\t# ABORT IF CADRSTOR NOT= +0.\n\t\tTC\tISLIST+0\t# ABORT IF DSPLIST NOT= +0.\n\t\tTC\tRELDSPON\n\t\tCA\tL\n\t\tTS\tDSPLIST\nENDNVBSY\tTC\tJOBSLEEP\n\n# NVSBWAIT IS A SPECIAL ENTRANCE FOR ROUTINES IN FIXED BANKS ONLY. IF\n# SYSTEM IS NOT BUSY, IT EXECUTES V/N AND RETURNS TO L+1 (L= LOC FROM\n# WHICH THE TC NVSBWAIT WAS DONE).  IF SYSTEM IS BUSY, IT PUTS CALLING JOB\n# TO SLEEP WITH L-1 GOING INTO LIST FOR EVENTUAL WAKING UP WHEN SYSTEM\n# IS NOT BUSY.\n\n\t\tSETLOC\tNVSUBUSY +3\n\t\tCOUNT\t02/PIN\n\nNVSBWAIT\tLXCH\t7\t\t# ZERO NVMONOPT OPTIONS\n\t\tTS\tNVTEMP\n\t\tCAF\tBIT14\n\t\tMASK\tMONSAVE1\t# EXTERNAL MONITOR BIT\n\t\tAD\tDSPLOCK\n\t\tCCS\tA\n\t\tTCF\tNVSBWT1\t\t# BUSY\n\t\tTCF\tNVSBCOM\t\t# FREE. NVSUB WILL SAVE L+1 FOR RETURN\n\t\t\t\t\t# AFTER EXECUTION.\nNVSBWT1\t\tINCR\tQ\t\t# L+2.  PRENVBSY WILL PUT L-1 INTO LIST AND\n\t\tTCF\tPRENVBSY\t# GO TO SLEEP.\n\n# RELDSP IS USED BY VBPROC, VBTERM, VBRQEXEC, VBRQWAIT, VBRELDSP, EXTENDED\n# VERB DISPATCHER, VBRESEQ, RECALTST.\n#\n# RELDSP1 IS USED BY MONITOR SET UP, VBRELDSP.\n\nRELDSP\t\tXCH\tQ\t\t# SET DSPLOCK TO +0, TURN RELDSP LIGHT\n# Page 383\n\t\tTS\tRELRET\t\t# OFF, SEARCH DSPLIST\n\t\tCS\tBIT14\n\t\tINHINT\n\t\tMASK\tMONSAVE1\n\t\tTS\tMONSAVE1\t# TURN OFF EXTERNAL MONITOR BIT\n\t\tCCS\tDSPLIST\n\t\tTC\t+2\n\t\tTC\tRELDSP2\t\t# LIST EMPTY\n\t\tCAF\tZERO\n\t\tXCH\tDSPLIST\n\t\tTC\tJOBWAKE\nRELDSP2\t\tRELINT\n\t\tCS\tBIT5\t\t# TURN OFF KEY RELEASE LIGHT\n\t\tEXTEND\t\t\t# (BIT 5 OF CHANNEL 11)\n\t\tWAND\tDSALMOUT\n\t\tCAF\tZERO\n\t\tTS\tDSPLOCK\n\t\tTC\tRELRET\nRELDSP1\t\tXCH\tQ\t\t# SET DSPLOCK TO +0.  NO DSPLIST SEARCH.\n\t\tTS\tRELRET\t\t# TURN KEY RLSE LIGHT OFF IF DSPLIST IS\n\t\t\t\t\t# EMPTY.  LEAVE KEY RLSE LIGHT ALONE IF\n\t\t\t\t\t# DSPLIST IS NOT EMPTY.\n\t\tCCS\tDSPLIST\n\t\tTC\t+2\t\t# +\tNOT EMPTY.  LEAVE KEY RLSE LIGHT ALONE.\n\t\tTC\tRELDSP2\t\t# +0\tEMPTY.  TURN OFF KEY RLSE LIGHT\n\t\tCAF\tZERO\t\t# - \tNOT EMPTY.  LEAVE KEY RLSE LIGHT ALONE\n\t\tTS\tDSPLOCK\n\t\tTC\tRELRET\n\nENDPINBF\tEQUALS\n\n# Page 384\n# PINTEST IS NEEDED FOR AUTO CHECK OF PINBALL.\n\nPINTEST\t\tEQUALS\tLST2FAN\n\n# Page 385\n# VBTSTLTS TURNS ON ALL DISPLAY PANEL LIGHTS.  AFTER 5 SEC, IT TURNS\n# OFF THE CAUTION AND STATUS LIGHTS.\n\n\t\tSETLOC\tENDNVSB1 +1\n\n\t\tCOUNT\t41/PIN\n\nVBTSTLTS\tTC\tBANKCALL\n\t\tCADR\tCHKPOOH\n\n\t\tINHINT\n\t\tCS\tBIT1\t\t# SET BIT 1 OF IMODES33 SO IMUMON WON'T\n\t\tMASK\tIMODES33\t# TURN OUT ANY LAMPS.\n\t\tAD\tBIT1\n\t\tTS\tIMODES33\n\n\t\tCAF\tTSTCON1\t\t# TURN ON UPLINK ACTIVITY, TEMP, KEY RLSE,\n\t\tEXTEND\t\t\t# V/N FLASH, OPERATOR ERROR.\n\t\tWOR\tDSALMOUT\n\t\tCAF\tTSTCON2\t\t# TURN ON NO ATT, GIMBAL LOCK, TRACKER,\n\t\tTS\tDSPTAB \t+11D\t# PROG ALM.\n\t\tCAF\tBIT10\t\t# TURN ON TEST ALARM OUTBIT\n\t\tEXTEND\n\t\tWOR\tCHAN13\n\t\tCAF\tTEN\nTSTLTS1\t\tTS\tERCNT\n\t\tCS\tFULLDSP\n\t\tINDEX\tERCNT\n\t\tTS\tDSPTAB\n\t\tCCS\tERCNT\n\t\tTC\tTSTLTS1\n\t\tCS\tFULLDSP1\n\t\tTS\tDSPTAB +1\t# TURN ON 3 PLUS SIGNS\n\t\tTS\tDSPTAB +4\n\t\tTS\tDSPTAB +6\n\t\tCAF\tELEVEN\n\t\tTS\tNOUT\n\t\tCAF\tSHOLTS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDSPTAB\n\t\t2CADR\tTSTLTS2\n\n\t\tTC\tENDOFJOB\t# DSPLOCK IS LEFT BUSY (FROM KEYBOARD\n\t\t\t\t\t# ACTION) UNTIL TSTLTS3 TO INSURE THAT\n\t\t\t\t\t# LIGHTS TEST WILL BE SEEN.\n\nFULLDSP\t\tOCT\t05675\t\t# DISPLAY ALL 8'S\nFULLDSP1\tOCT\t07675\t\t# DISPLAY ALL 8'S AND +\nTSTCON1\t\tOCT\t00175\n# Page 386\n\t\t\t\t\t# UPLINK ACTIVITY, TEMP, KEY RLSE,\n\t\t\t\t\t# V/N FLASH, OPERATOR ERROR.\nTSTCON2\t\tOCT\t40650\t\t# DSPTAB+11D BITS 4,6,8,9,\n\t\t\t\t\t# NO ATT, GIMBAL LOCK, TRACKER, PROG ALM.\nTSTCON3\t\tOCT\t00115\t\t# CHAN 11 BITS 1, 3, 4, 7.\n\t\t\t\t\t# UPLINK ACITIVY, TEMP, OPERATOR ERROR.\nSHOLTS\t\tOCT\t764\t\t# 5 SEC\n\nTSTLTS2\t\tCAF\tCHRPRIO\t\t# CALLED BY WAITLIST\n\t\tTC\tNOVAC\n\t\tEBANK=\tDSPTAB\n\t\t2CADR\tTSTLTS3\n\n\t\tTC\tTASKOVER\n\nTSTLTS3\t\tCS\tTSTCON3\t\t# CALLED BY EXECUTIVE\n\t\tINHINT\n\t\tEXTEND\t\t\t# TURN OFF UPLINK ACTIVITY, TEMP,\n\t\tWAND\tDSALMOUT\t# OPERATOR ERROR.\n\t\tCS\tBIT10\t\t# TURN OFF TEST ALARM OUTBIT\n\t\tEXTEND\n\t\tWAND\tCHAN13\n\t\tCAF\tBIT4\t\t# MAKE NO ATT FOLLOW BIT 4 OF CHANNEL 12\n\t\tEXTEND\t\t\t#\t(NO TT LIGHT ON IF IN COARSE ALIGN)\n\t\tRAND\tCHAN12\n\t\tAD\tBIT15\t\t# TURN OFF AUTO, HOLD, FREE, SPARE,\n\t\tTS\tDSPTAB \t+11D\t# GIMBAL LOCK, SPARE, TRACKER, PROG ALM\n\t\tCS\t13-11,1\t\t# SET BITS TO INDICATE ALL LAMPS OUT. TEST\n\t\tMASK\tIMODES33\t# LIGHTS COMPLETE.\n\t\tAD\tPRIO16\n\t\tTS\tIMODES33\n\n\t\tCS\tOCT55000\n\t\tMASK\tIMODES30\n\t\tAD\tPRIO15\t\t# 15000.\n\t\tTS\tIMODES30\n\n\t\tCS\tOPTMODES\n\t\tMASK\tBIT7\n\t\tADS\tOPTMODES\n\t\tRELINT\n\n\t\tTC\tBANKCALL\t# REDISPLAY C(MODREG)\n\t\tCADR\tDSPMM\n\t\tTC\tKILMONON\t# TURN ON KILL MONITOR BIT.\n\t\tTC\tFLASHOFF\t# TURN OFF V/N FLASH.\n\t\tTC\tPOSTJUMP\t# DOES RELDSP AND GOES TO PINBRNCH IF\n\t\tCADR\tTSTLTS4\t\t# ENDIDLE IS AWAITING OPERATOR RESPONSE.\n# Page 387\n13-11,1\t\tOCT\t16001\nOCT55000\tOCT\t55000\nENDPINS2\tEQUALS\n\n# Page 388\n# ERROR LIGHT RESET (RSET) TURNS OFF:\n# UPLINK ACTIVITY, AUTO, HOLD, FREE, OPERATOR ERROR,\n# PROG ALM, TRACKER FAIL.\n#\n# LEAVES GIMBAL LOCK AND NO ATT ALONE.\n#\n# IT ALSO ZEROS THE `TEST ALARM' OUT BIT, WHICH TURNS OFF STBY, RESTART.\n# IT ALSO SETS `CAUTION RESET' TO 1.\n# IT ALSO FORCES BIT 12 OF ALL DSPTAB ENTRIES TO 1.\n\n\t\tSETLOC\tDOPROC +2\n\t\tCOUNT\t40/PIN\n\nERROR\t\tXCH\t21/22REG\t# RESTORE ORIGINAL C(DSPLOCK).  THUS ERROR\n\t\tTS\tDSPLOCK\t\t# LIGHT RESET LEAVES DSPLOCK CHANGED.\n\t\tINHINT\n\t\tCAF\tBIT10\t\t# TURN ON `CAUTION RESET' OUTBIT\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# BIT10 CHAN 11\n\t\tCAF\tGL+NOATT\t# LEAVE GIMBAL LOCK AND NO ATT INTACT,\n\t\tMASK\tDSPTAB +11D\t# TURNING OFF AUTO, HOLD, FREE,\n\t\tAD\tBIT15\t\t# PROG ALARM, AND TRACKER.\n\t\tTS\tDSPTAB +11D\n\t\tCS\tPRIO16\t\t# RESET FAIL BITS WHICH GENERATE PROG\n\t\tMASK\tIMODES33\t# ALARM SO THAT IF THE FAILURE STILL\n\t\tAD\tPRIO16\t\t# EXISTS, THE ALARM WILL COME BACK.\n\t\tTS\tIMODES33\n\t\tCS\tBIT10\n\t\tMASK\tIMODES30\n\t\tAD\tBIT10\n\t\tTS\tIMODES30\n\n\t\tCS\tOPTMODES\n\t\tMASK\tBIT7\n\t\tADS\tOPTMODES\n\t\tCS\tBIT10\t\t# TURN OFF 'TEST ALARM' OUTBIT\n\t\tEXTEND\n\t\tWAND\tCHAN13\n\t\tCS\tERCON\t\t# TURN OFF UPLINK ACTIVITY,\n\t\tEXTEND\t\t\t# OPERATOR ERROR.\n\t\tWAND\tDSALMOUT\nTSTAB\t\tCAF\tBINCON\t\t# (DEC 10)\n\t\tTS\tERCNT\t\t# ERCNT = COUNT\n\t\tINHINT\n\t\tINDEX\tERCNT\n\t\tCCS\tDSPTAB\n\t\tAD\tONE\n\t\tTC\tERPLUS\n\t\tAD\tONE\nERMINUS\t\tCS\tA\n\t\tMASK\tNOTBIT12\n\t\tTC\tERCOM\n# Page 389\nERPLUS\t\tCS\tA\n\t\tMASK\tNOTBIT12\n\t\tCS\tA\t\t# MIGHT WANT TO RESET CLPASS, DECBRNCH,\nERCOM\t\tINDEX\tERCNT\t\t# ETC.\n\t\tTS\tDSPTAB\n\t\tRELINT\n\t\tCCS\tERCNT\n\t\tTC\tTSTAB\t+1\n\t\tCAF\tZERO\n\t\tTS\tFAILREG\n\t\tTS\tFAILREG +1\n\t\tTS\tFAILREG +2\n\t\tTS\tSFAIL\n\t\tTC\tENDOFJOB\n\nERCON\t\tOCT\t104\t\t# CHAN 11 BITS 3,7.\n\t\t\t\t\t# UPLINK ACTIVITY, AND OPERATOR ERROR.\nBITS6,8\t\tOCT\t240\nGL+NOATT\tOCT\t00050\t\t# NO ATT AND GIMBAL LOCK LAMPS\nNOTBIT12\tOCT\t73777\n\nENDPINS1\tEQUALS\n\n\t\tSBANK=\tLOWSUPER\n\n"
  },
  {
    "path": "Comanche055/PINBALL_NOUN_TABLES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPINBALL_NOUN_TABLES.agc\n# Purpose:\tPart of the source code for Comanche, build 055. It\n#\t\tis part of the source code for the Command Module's\n#\t\t(CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 268-284\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t2009-05-18 FB\tTranscription Batch 3 Assignment.\n#\t\t2009-05-23 RSB\tIn NNTYPTAB, corrected former 13 SPARE.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 268\n# THE FOLLOWING REFERS TO THE NOUN TABLES\n\n\n# COMPONENT CODE NUMBER\t\tINTERPRETATION\n\n# 00000\t\t\t\t1 COMPONENT\n# 00001\t\t\t\t2 COMPONENT\n# 00010\t\t\t\t3 COMPONENT\n# X1XXX\t\t\t\tBIT 4 = 1. DECIMAL ONLY\n# 1XXXX\t\t\t\tBIT 5 = 1. NO LOAD\n# END OF COMPONENT CODE NUMBERS\n\n\n# SF ROUTINE CODE NUMBER\tINTERPRETATION\n\n# 00000\t\tOCTAL ONLY\n# 00001\t\tSTRAIGHT FRACTIONAL\n# 00010\t\tCDU DEGREES (XXX.XX)\n# 00011\t\tARITHMETIC SF\n# 00100\t\tARITH DP1\tOUT(MULT BY 2EXP14 AT END)\tIN(STRAIGHT)\n# 00101\t\tARITH DP2\tOUT(STRAIGHT)\t\t\tIN(SL 7 AT END)\n# 00110\t\tY OPTICS DEGREES (XX.XXX MAX 89.999)\n# 00111\t\tARITH DP3\tOUT ( SL 7 AT END)\t\tIN ( STRAIGHT)\n# 01000\t\tWHOLE HOURS IN R1, WHOLE MINUTES (MOD 60) IN R2,\n#\t\t\tSECONDS (MOD 60) 0XX.XX IN R3. *** ALARMS IF USED WITH OCTAL\n# 01001\t\tMINUTES (MOD 60) IN D1D2, D3 BLANK, SECONDS (MOD 60) IN D4D5\n#\t\t\t\tLIMITS TO 59B59 IF MAG EXCEEDS THIS VALUE.\n#\t\t\t\tALARMS IF USED WITH OCTAL ******** IN (ALARM)\n# 01010\t\tARITH DP4\tOUT (STRAIGHT)\t\t\tIN (SL 3 AT END)\n# 01011\t\tARITH1 SF\tOUT(MULT BY 2EXP14 AT END)\tIN(STRAIGHT)\n# 01100\t\t2 INTEGERS IN D1D2, D4D5, D3 BLANK.\n#\t\t\t\tALARMS IF USED WITH OCTAL ******** IN (ALARM)\n# 01101\tDP STRAIGHT FRACTIONAL\n# END OF SF ROUTINE CODE NUMBERS\n\n\n# \tSF CONSTANT CODE NUMBER\tINTERPRETATION\n\n#\t00000\t\t\tWHOLE\t\t\t\tUSE ARITH\n#\t00000\t\t\tDP TIME SEC (XXX.XX SEC)\tUSE ARITHDP1\n#\t00001\t\t\tSPARE\n#\t00010\t\t\tCDU DEGREES\t\t     USE CDU DEGREES\n#\t00010\t\t\tY OPTICS DEGREES\tUSE Y OPTICS DEGREES\n#\t00011\t\t\tDP DEGREES (90) XX.XXX DEG\tUSE ARITHDP3\n#\t00100\t\t\tDP DEGREES (360) XXX.XX DEG\tUSE ARITHDP4\n#\t00101\t\t\tDEGREES (180) XXX.XX DEG\tUSE ARITH\n#\t00110\t\t\tWEIGHT2 (XXXXX. LBS)\t\tUSE ARITH1\n#\t00111\t\t\tPOSITION5 (XXX.XX NAUTICAL MILES)\n#\t\t\t\t\t\t\t\tUSE ARITHDP3\n#\t01000\t\t\tPOSITION4 (XXXX.X NAUTICAL MILES)\n# Page 269\n#\t\t\t\t\t\t\t    USE ARITHDP3\n#\t01001\t\t\tVELOCITY2 (XXXXX. FT/SEC)   USE ARITHDP4\n#\t01010\t\t\tVELOCITY3 (XXXX.X FT/SEC)   USE ARITHDP3\n#\t01011\t\t\tELEVATION DEGREES (89.999MAX) USE ARITH\n#\t01100\t\t\tTRIM DEGREES (XXX.XX DEG)    USE ARITH\n#\t01101\t\t\tINERTIA (XXXXXBB. SLUG FT FT)  USE ARITH\n#\t01101\t\t\tTHRUST MOMENT (XXXXXBB.FT LBS) USE ARITH\n#\t01110\t\t\tVELOCITY/2VS (XXXXX. FT/SEC)USE ARITHDP4\n#\t01111\t\t\tPOSITION6 (XXXX.X NAUT MI)  USE ARITHDP3\n#\t10000\t\t\tDRAG ACCELERATION (XXX.XX G)USE ARITHDP2\n#\t10001\t\t\tPOSITION8 (XXXX.X NAUT MI)  USE ARITHDP3\n#\t10010\t\t\tPOSITION9 (XXXXX. FT)\t    USE ARITHDP3\n#\t10011\t\t\tVELOCITY4 (XXXX.X FT/SEC)   USE ARITHDP2\n# \tEND OF SF CONSTANT CODE NUMBERS\n\n\n# FOR GREATER THAN SINGLE PRECISION SCALES, PUT ADDRESS IN MAJOR PART INTO\n# NOUN TABLES.\n# OCTAL LOADS PLACE +0 INTO MAJOR PART, DATA INTO MINOR PART.\n# OCTAL DISPLAYS SHOW MINOR PART ONLY.\n# TO GET AT BOTH MAJOR AND MINOR PARTS(IN OCTAL), USE NOUN 01.\n\n\n# A NOUN MAY BE DECLARED :DECIMAL ONLY: BY MAKING BIT4=1 OF ITS COMPONENT\n# CODE NUMBER.  IF THIS NOUN IS USED WITH ANY OCTAL DISPLAY VERB, OR IF\n# DATA IS LOADED IN OCTAL, IT ALARMS.\n\n# IN LOADING AN :HOURS, MINUTES, SECONDS: NOUN, ALL 3 WORDS MUST BE\n# LOADED, OR ALARM.\n# ALARM IF AN ATTEMPT IS MADE TO LOAD :SPLIT MINUTES/SECONDS: (MMBSS).\n# THIS IS USED FOR DISPLAY ONLY.\n\n# Page 270\n# THE FOLLOWING ROUTINES ARE FOR READING THE NOUN TABLES AND THE SF TABLES\n# (WHICH ARE IN A SEPARATE BANK FROM THE REST OF PINBALL).  THESE READING\n# ROUTINES ARE IN THE SAME BANK AS THE TABLES.  THEY ARE CALLED BY DXCH Z.\n\n\n# LODNNTAB LOADS NNADTEM WITH THE NNADTAB ENTRY, NNTYPTEM WITH THE\n# NNTYPTAB ENTRY.  IF THE NOUN IS MIXED, IDADITEM IS LOADED WITH THE FIRST\n# IDADDTAB ENTRY, IDAD2TEM THE SECOND IDADDTAB ENTRY, IDAD3TEM THE THIRD\n# IDADDTAB ENTRY, RUTMXTEM WITH THE RUTMXTAB ENTRY.  MIXBR IS SET FOR\n# MIXED OR NORMAL NOUN.\n\n\t\tBANK\t06\n\t\tSETLOC\tPINBALL3\n\t\tBANK\n\n\t\tCOUNT\t42/NOUNS\n\nLODNNTAB\tDXCH\tIDAD2TEM\t\t# SAVE RETURN INFO IN IDAD2TEM, IDAD3TEM.\n\t\tINDEX\tNOUNREG\n\t\tCAF\tNNADTAB\n\t\tTS\tNNADTEM\n\t\tINDEX\tNOUNREG\n\t\tCAF\tNNTYPTAB\n\t\tTS\tNNTYPTEM\n\t\tCS\tNOUNREG\n\t\tAD\tMIXCON\n\t\tEXTEND\n\t\tBZMF\tLODMIXNN\t\t# NOUN NUMBER G/E FIRST MIXED NOUN\n\t\tCAF\tONE\t\t\t# NOUN NUMBER L/ FIRST MIXED NOUN\n\t\tTS\tMIXBR\t\t\t# NORMAL.  +1 INTO MIXBR.\n\t\tTC\tLODNLV\nLODMIXNN\tCAF\tTWO\t\t\t# MIXED.  +2 INTO MIXBR.\n\t\tTS\tMIXBR\n\t\tINDEX\tNOUNREG\n\t\tCAF\tRUTMXTAB -40D\t\t# FIRST MIXED NOUN = 40.\n\t\tTS\tRUTMXTEM\n\t\tCAF\tLOW10\n\t\tMASK\tNNADTEM\n\t\tTS\tQ\t\t\t# TEMP\n\t\tINDEX\tA\n\t\tCAF\tIDADDTAB\n\t\tTS\tIDAD1TEM\t\t# LOAD IDAD1TEM\tWITH FIRST IDADDTAB ENTRY\n\t\tEXTEND\n\t\tINDEX\tQ\t\t\t# LOAD IDAD2TEM WITH 2ND IDADDTAB ENTRY\n\t\tDCA\tIDADDTAB +1\t\t# LOAD IDAD3TEM WITH 3RD IDADDTAB ENTRY.\nLODNLV\t\tDXCH\tIDAD2TEM\t\t# PUT RETURN INFO INTO A, L.\n\t\tDXCH\tZ\n\nMIXCON\t\t=\tOCT50\t\t\t# FIRST MIXED NOUN =40.  (DEC 40)\n\n# GTSFOUT LOADS SFTEMP1, SFTEMP2 WITH THE DP SFOUTAB ENTRIES.\n# Page 271\n\nGTSFOUT\t\tDXCH\tSFTEMP1\t\t\t# 2X(SFCONUM) ARRIVES IN SFTEMP1.\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\tSFOUTAB\nSFCOM\t\tDXCH\tSFTEMP1\n\t\tDXCH\tZ\n\n# GTSFIN LOADS SFTEMP1, SFTEMP2 WITH THE DP SFINTAB ENTRIES.\n\nGTSFIN\t\tDXCH\tSFTEMP1\t\t\t# 2X(SFCONUM) ARIVES IN SFTEMP1.\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\tSFINTAB\n\t\tTCF\tSFCOM\n\n\t\t\t\t\t\t# NN \t NORMAL NOUNS\nNNADTAB\t\tOCT\t00000\t\t\t# 00 \tNOT IN USE\n\t\tOCT\t40000\t\t\t# 01 \tSPECIFY MACHINE ADDRESS (FRACTIONAL)\n\t\tOCT\t40000\t\t\t# 02 \tSPECIFY MACHINE ADDRESS (WHOLE)\n\t\tOCT\t40000\t\t\t# 03\tSPECIFY MACHINE ADDRESS (DEGREES)\n\t\tOCT\t0\t\t\t# 04\tSPARE\n\t\tECADR\tDSPTEM1\t\t\t# 05 \tANGULAR ERROR/DIFFERENCE\n\t\tECADR\tOPTION1\t\t\t# 06\tOPTION CODE\n\t\tECADR\tXREG\t\t\t# 07\tECADR OF WORD TO BE MODIFIED\n\t\t\t\t\t\t#\tONES FOR BITS TO BE MODIFIED\n\t\t\t\t\t\t#\t1 TO SET OR 0 TO RESET SELECTED BITS\n\t\tECADR\tALMCADR\t\t\t# 08 \tALARM DATA\n\t\tECADR\tFAILREG\t\t\t# 09\tALARM CODES\n\t\tOCT\t77776\t\t\t# 10\tCHANNEL TO BE SPECIFIED\n\t\tECADR\tTCSI\t\t\t# 11\tTIG OF CSI (HRS,MIN,SEC)\n\t\tECADR\tOPTIONX\t\t\t# 12\tOPTION CODE\n\t\t\t\t\t\t#\t   (USED BY EXTENDED VERBS ONLY)\n\t\tECADR\tTCDH\t\t\t# 13\tTIG OF CDH (HRS,MIN,SEC)\n\t\tOCT\t0\t\t\t# 14\tSPARE\n\t\tOCT\t77777\t\t\t# 15\tINCREMENT MACHINE ADDRESS\n\t\tECADR\tDSPTEMX\t\t\t# 16\tTIME OF EVENT (HRS,MIN,SEC)\n\t\tECADR\tCPHIX\t\t\t# 17\tASTRONAUT TOTAL ATTITUDE\n\t\tECADR\tTHETAD\t\t\t# 18\tAUTO MANEUVER BALL ANGLES\n\t\tECADR\tTHETAD\t\t\t# 19\tBYPASS ATTITUDE TRIM MANEUVER\n\t\tECADR\tCDUX\t\t\t# 20\tICDU ANGLES\n\t\tECADR\tPIPAX\t\t\t# 21\tPIPAS\n\t\tECADR\tTHETAD\t\t\t# 22\tNEW ICDU ANGLES\n\t\tOCT\t00000\t\t\t# 23\tSPARE\n\t\tECADR\tDSPTEM2 +1\t\t# 24\tDELTA TIME FOR AGC CLOCK(HRS,MIN,SEC)\n\t\tECADR\tDSPTEM1\t\t\t# 25\tCHECKLIST\n\t\t\t\t\t\t#\t   (USED WITH PLEASE PERFORM ONLY)\n\t\tECADR\tDSPTEM1\t\t\t# 26\tPRIO/DELAY, ADRES, BBCON\n\t\tECADR\tSMODE\t\t\t# 27\tSELF TEST ON/OFF SWITCH\n# Page 272\n\t\tOCT\t0\t\t\t# 28\tSPARE\n\t\tECADR\tDSPTEM1\t\t\t# 29\tXSM LAUNCH AZIMUTH\n\t\tECADR\tDSPTEM1\t\t\t# 30\tTARGET CODES\n\t\tECADR\tDSPTEM1\t\t\t# 31\tTIME OF LANDING SITE (HRS,MIN,SEC)\n\t\tECADR\t-TPER\t\t\t# 32\tTIME TO PERIGEE (HRS,MIN,SEC)\n\t\tECADR\tTIG\t\t\t# 33\tTIME OF IGNITION (HRS,MIN,SEC)\n\t\tECADR\tDSPTEM1\t\t\t# 34\tTIME OF EVENT (HRS,MIN,SEC)\n\t\tECADR\tTTOGO\t\t\t# 35\tTIME TO GO TO EVENT (HRS,MIN,SEC)\n\t\tECADR\tTIME2\t\t\t# 36\tTIME OF AGC CLOCK (HRS,MIN,SEC)\n\t\tECADR\tTTPI\t\t\t# 37\tTIG OF TPI (HRS,MIN,SEC)\n\t\tECADR\tTET\t\t\t# 38\tTIME OF STATE VECTOR\n\t\tECADR\tT3TOT4\t\t\t# 39\tDELTA TIME TO TRANSFER (HRS,MIN,SEC)\n# END OF NNADTAB FOR NORMAL NOUNS\n\n\t\t\t\t\t\t# NN\t MIXED NOUNS\n\t\tOCT\t64000\t\t\t# 40\tTIME TO IGNITION/CUTOFF\n\t\t\t\t\t\t#\tVG\n\t\t\t\t\t\t#\tDELTA V (ACCUMULATED)\n\t\tOCT\t02003\t\t\t# 41\tTARGET\tAZIMUTH\n\t\t\t\t\t\t#\t\tELEVATION\n\t\tOCT\t24006\t\t\t# 42\tAPOGEE\n\t\t\t\t\t\t#\tPERIGEE\n\t\t\t\t\t\t#\tDELTA V (REQUIRED)\n\t\tOCT\t24011\t\t\t# 43\tLATITUDE\n\t\t\t\t\t\t#\tLONGITUDE\n\t\t\t\t\t\t#\tALTITUDE\n\t\tOCT\t64014\t\t\t# 44\tAPOGEE\n\t\t\t\t\t\t#\tPERIGEE\n\t\t\t\t\t\t#\tTFF\n\t\tOCT\t64017\t\t\t# 45\tMARKS (VHF - OPTICS)\n\t\t\t\t\t\t#\tTTI OF NEXT BURN\n\t\t\t\t\t\t#\tMGA\n\t\tOCT\t02022\t\t\t# 46\tAUTOPILOT CONFIGURATION\n\t\tOCT\t22025\t\t\t# 47\tTHIS VEHICLE WEIGHT\n\t\t\t\t\t\t#\tOTHER VEHICLE WEIGHT\n\t\tOCT\t22030\t\t\t# 48\tPITCH TRIM\n\t\t\t\t\t\t#\tYAW TRIM\n\t\tOCT\t24033\t\t\t# 49\tDELTA R\n\t\t\t\t\t\t#\tDELTA V\n\t\t\t\t\t\t#\tVHF OR OPTICS CODE\n\t\tOCT\t64036\t\t\t# 50\tSPLASH ERROR\n\t\t\t\t\t\t#\tPERIGEE\n\t\t\t\t\t\t#\tTFF\n\t\tOCT\t22041\t\t\t# 51\tS-BAND ANTENNA\tPITCH\n\t\t\t\t\t\t#\t\t\tYAW\n\t\tOCT\t00044\t\t\t# 52\tCENTRAL ANGLE OF ACTIVE VEHICLE\n\t\tOCT\t24047\t\t\t# 53\tRANGE\n\t\t\t\t\t\t#\tRANGE RATE\n\t\t\t\t\t\t#\tPHI\n# Page 273\n\t\tOCT\t24052\t\t\t# 54\tRANGE\n\t\t\t\t\t\t#\tRANGE RATE\n\t\t\t\t\t\t#\tTHETA\n\t\tOCT\t24055\t\t\t# 55\tPERIGEE CODE\n\t\t\t\t\t\t#\tELEVATION ANGLE\n\t\t\t\t\t\t#\tCENTRAL ANGLE\n\t\tOCT\t22060\t\t\t# 56\tREENTRY ANGLE,\n\t\t\t\t\t\t#\tDELTA V\n\t\tOCT\t20063\t\t\t# 57\tDELTA R\n\t\tOCT\t24066\t\t\t# 58\tPERIGEE ALT\n\t\t\t\t\t\t#\tDELTA V TPI\n\t\t\t\t\t\t#\tDELTA V TPF\n\t\tOCT\t24071\t\t\t# 59\tDELTA VELOCITY LOS\n\t\tOCT\t24074\t\t\t# 60\tGMAX\n\t\t\t\t\t\t#\tVPRED\n\t\t\t\t\t\t#\tGAMMA EI\n\t\tOCT\t24077\t\t\t# 61\tIMPACT LATITUDE\n\t\t\t\t\t\t#\tIMPACT LONGITUDE\n\t\t\t\t\t\t#\tHEADS UP/DOWN\n\t\tOCT\t24102\t\t\t# 62\tINERTIAL VEL MAG (V1)\n\t\t\t\t\t\t#\tALT RATE CHANGE (HDOT)\n\t\t\t\t\t\t#\tALT ABOVE PAD RADIUS (H)\n\t\tOCT\t64105\t\t\t# 63\tRANGE 297,431 TO SPLASH (RTGO)\n\t\t\t\t\t\t#\tPREDICTED INERT VEL (VIO)\n\t\t\t\t\t\t#\tTIME TO GO TO 297,431 (TTE)\n\t\tOCT\t24110\t\t\t# 64\tDRAG ACCELERATION\n\t\t\t\t\t\t#\tINERTIAL VELOCITY (VI)\n\t\t\t\t\t\t#\tRANGE TO SPLASH\n\t\tOCT\t24113\t\t\t# 65\tSAMPLED AGC TIME (HRS,MIN,SEC)\n\t\t\t\t\t\t#\t(FETCHED IN INTERRUPT)\n\t\tOCT\t24116\t\t\t# 66\tCOMMAND BANK ANGLE (BETA)\n\t\t\t\t\t\t# \tCROSS RANGE ERROR\n\t\t\t\t\t\t#\tDOWN RANGE ERROR\n\t\tOCT\t24121\t\t\t# 67\tRANGE TO TARGET\n\t\t\t\t\t\t#\tPRESENT LATITUDE\n\t\t\t\t\t\t#\tPRESENT LONGITUDE\n\t\tOCT\t24124\t\t\t# 68\tCOMMAND BANK ANGLE (BETA)\n\t\t\t\t\t\t#\tINERTIAL VELOCITY (VI)\n\t\t\t\t\t\t#\tALT RATE CHANGE (RDOT)\n\t\tOCT\t24127\t\t\t# 69\tBETA\n\t\t\t\t\t\t#\tDL\n\t\t\t\t\t\t#\tVL\n\t\tOCT\t04132\t\t\t# 70\tSTAR CODE\n\t\t\t\t\t\t#\tLANDMARK DATA\n\t\t\t\t\t\t#\tHORIZON DATA\n\t\tOCT\t04135\t\t\t# 71\tSTAR CODE\n\t\t\t\t\t\t#\tLANDMARK\n\t\t\t\t\t\t#\tHORIZON\n\t\tOCT\t24140\t\t\t# 72\tDELT ANG\n\t\t\t\t\t\t#\tDELT ALT\n# Page 274\n\t\t\t\t\t\t# \tSEARCH OPTION\n\t\tOCT\t04143\t\t\t# 73\tALTITUDE\n\t\t\t\t\t\t#\tVELOCITY\n\t\t\t\t\t\t#\tFLIGHT PATH ANGLE\n\t\tOCT\t04146\t\t\t# 74\tCOMMAND BANK ANGLE (BETA)\n\t\t\t\t\t\t# \tINERTIAL VELOCITY (VI)\n\t\t\t\t\t\t# \tDRAG ACCELERATION\n\t\tOCT\t64151\t\t\t# 75\tDELTA ALTITUDE CDH\n\t\t\t\t\t\t# \tDELTA TIME (CDH-CSI OR TPI-CDH)\n\t\t\t\t\t\t#\tDELTA TIME (TPI-CDH OR TPI-NOMTPI)\n\t\tOCT\t0\t\t\t# 76\tSPARE\n\t\tOCT\t0\t\t\t# 77\tSPARE\n\t\tOCT\t0\t\t\t# 78\tSPARE\n\t\tOCT\t0\t\t\t# 79\tSPARE\n\t\tOCT\t64170\t\t\t# 80\tTIME TO IGNITION/CUTOFF\n\t\t\t\t\t\t#\tVG\n\t\t\t\t\t\t#\tDELTA V (ACCUMULATED)\n\t\tOCT\t24173\t\t\t# 81\tDELTA V (LV)\n\t\tOCT\t24176\t\t\t# 82\tDELTA V (LV)\n\t\tOCT\t24201\t\t\t# 83\tDELTA V (BODY)\n\t\tOCT\t24204\t\t\t# 84\tDELTA V (OTHER VEHICLE)\n\t\tOCT\t24207\t\t\t# 85\tVG (BODY)\n\t\tOCT\t24212\t\t\t# 86\tDELTA V (LV)\n\t\tOCT\t02215\t\t\t# 87\tMARK DATA\tSHAFT\n\t\t\t\t\t\t#\t\t\tTRUNION\n\t\tOCT\t24220\t\t\t# 88\tHALF UNIT SUN OR PLANET VECTOR\n\t\tOCT\t24223\t\t\t# 89\tLANDMARK\tLATITUDE\n\t\t\t\t\t\t#\t\t\tLONGITUDE/2\n\t\t\t\t\t\t#\t\t\tALTITUDE\n\t\tOCT\t24226\t\t\t# 90\tY\n\t\t\t\t\t\t#\tY DOT\n\t\t\t\t\t\t#\tPSI\n\t\tOCT\t02231\t\t\t# 91\tOCDU ANGLES\tSHAFT\n\t\t\t\t\t\t#\t\t\tTRUNION\n\t\tOCT\t02234\t\t\t# 92\tNEW OPTICS ANGLES SHAFT\n\t\t\t\t\t\t#\t\t\t  TRUNION\n\t\tOCT\t04237\t\t\t# 93\tDELTA GYRO ANGLES\n\t\tOCT\t02242\t\t\t# 94\tNEW OPTICS ANGLES SHAFT\n\t\t\t\t\t\t#\t\t\t  TRUNNION\n\t\tOCT\t04245\t\t\t# 95\tPREFERRED ATTITUDE ICDU ANGLES\n\t\tOCT\t04250\t\t\t# 96\t+X-AXIS ATTITUDE ICDU ANGLES\n\t\tOCT\t04253\t\t\t# 97\tSYSTEM TEST INPUTS\n\t\tOCT\t04256\t\t\t# 98\tSYSTEM TEST RESULTS\n\t\tOCT\t24261\t\t\t# 99\tRMS IN POSITION\n\t\t\t\t\t\t#\tRMS IN VELOCITY\n\t\t\t\t\t\t#\tRMS OPTION\n# END OF NNADTAB FOR MIXED NOUNS\n\n\t\t\t\t\t\t# NN\tNORMAL NOUNS\n# Page 275\nNNTYPTAB\tOCT\t00000\t\t\t# 00\tNOT IN USE\n\t\tOCT\t04040\t\t\t# 01\t3COMP FRACTIONAL\n\t\tOCT\t04140\t\t\t# 02\t3COMP WHOLE\n\t\tOCT\t04102\t\t\t# 03\t3COMP CDU DEGREES\n\t\tOCT\t0\t\t\t# 04\tSPARE\n\t\tOCT\t00504\t\t\t# 05\t1COMP DPDEG(360)\n\t\tOCT\t02000\t\t\t# 06\t2COMP OCTAL ONLY\n\t\tOCT\t04000\t\t\t# 07 \t3COMP OCTAL ONLY\n\t\tOCT\t04000\t\t\t# 08\t3COMP OCTAL ONLY\n\t\tOCT\t04000\t\t\t# 09\t3COMP OCTAL ONLY\n\t\tOCT\t00000\t\t\t# 10\t1COMP OCTAL ONLY\n\t\tOCT\t24400\t\t\t# 11\t3COMP HMS (DEC ONLY)\n\t\tOCT\t02000\t\t\t# 12\t2COMP OCTAL ONLY\n\t\tOCT\t24400\t\t\t# 13\t3COMP HMS (DEC ONLY)\n\t\tOCT\t0\t\t\t# 14\tSPARE\n\t\tOCT\t00000\t\t\t# 15\t1COMP OCTAL ONLY\n\t\tOCT\t24400\t\t\t# 16\t3COMP HMS (DEC ONLY)\n\t\tOCT\t04102\t\t\t# 17 \t3COMP CDU DEG\n\t\tOCT\t04102\t\t\t# 18\t3COMP CDU DEG\n\t\tOCT\t04102\t\t\t# 19\t3COMP CDU DEG\n\t\tOCT\t04102\t\t\t# 20\t3COMP CDU DEGREES\n\t\tOCT\t04140\t\t\t# 21\t3COMP WHOLE\n\t\tOCT\t04102\t\t\t# 22\t3COMP CDU DEGREES\n\t\tOCT\t00000\t\t\t# 23 \tSPARE\n\t\tOCT\t24400\t\t\t# 24\t3COMP HMS (DEC ONLY)\n\t\tOCT\t04140\t\t\t# 25\t3COMP WHOLE\n\t\tOCT\t04000\t\t\t# 26\t3COMP OCTAL ONLY\n\t\tOCT\t00140\t\t\t# 27\t1COMP WHOLE\n\t\tOCT\t00000\t\t\t# 28\tSPARE\n\t\tOCT\t20102\t\t\t# 29\t1COMP CDU DEG (DEC ONLY)\n\t\tOCT\t04140\t\t\t# 30\t3COMP WHOLE\n\t\tOCT\t24400\t\t\t# 31\t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 32 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 33 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 34\t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 35 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 36 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 37 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 38 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 39\t3COMP HMS (DEC ONLY)\n# END OF NNTYPTAB FOR NORMAL NOUNS\n\n\t\t\t\t\t\t# NN\tMIXED NOUNS\n\n\t\tOCT\t24500\t\t\t# 40\t3COMP\tMIN/SEC, VEL3, VEL3\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t00542\t\t\t# 41\t2COMP\tCDU DEG, ELEV DEG\n\t\tOCT\t24410\t\t\t# 42\t3COMP\tPOS4, POS4, VEL3\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t20204\t\t\t# 43\t3COMP\tDPDEG(360), DPDEG(360), POS4\n# Page 276\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00410\t\t\t# 44\t3COMP\tPOS4, POS4, MIN/SEC\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t10000\t\t\t# 45\t3COMP\t2INT, MIN/SEC, DPDEG(360)\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t00000\t\t\t# 46\t2COMP \tOCTAL ONLY FOR EACH\n\t\tOCT\t00306\t\t\t# 47\t2COMP\tWEIGHT2 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00614\t\t\t# 48\t2COMP\tTRIM DEG, TRIM DEG\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00510\t\t\t# 49\t3COMP\tPOS4, VEL3, WHOLE\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00417\t\t\t# 50\t3COMP\tPOS6, POS4, MIN/SEC\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t00204\t\t\t# 51\t2COMP\tDPDEG(360), DPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00004\t\t\t# 52\t1COMP\tDPDEG(360)\n\t\tOCT\t10507\t\t\t# 53\t3COMP\tPOS5, VEL3, DPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t10507\t\t\t# 54\t3COMP\tPOS5, VEL3, DPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t10200\t\t\t# 55\t3COMP\tWHOLE, DPDEG(360), DPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00444\t\t\t# 56\t2COMP\tDPDEG(360), VEL2\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00010\t\t\t# 57\t1COMP\tPOS4\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24510\t\t\t# 58\t3COMP\tPOS4, VEL3, VEL3\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 59\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t10440\t\t\t# 60\t3COMP\tWHOLE, VEL2, DPDEG(360)\n\t\t\t\t\t\t# \t\t(DEC ONLY)\n\t\tOCT\t00204\t\t\t# 61\t3COMP \tDPDEG(360), DPDEG(360), WHOLE\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t20451\t\t\t# 62\t3COMP\tVEL2, VEL2, POS4\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00457\t\t\t# 63\t3COMP\tPOS6, VEL2, MIN/SEC\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t36460\t\t\t# 64\t3COMP\tDRAG ACCEL, VEL2, POS6\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00000\t\t\t# 65\t3COMP\tHMS (DEC ONLY)\n\t\tOCT\t37044\t\t\t# 66\t3COMP \tDPDEG(360), POS8, POS6\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t10217\t\t\t# 67\t3COMP\tPOS6, DPDEG(360), DPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t34444\t\t\t# 68\t3COMP\tDPDEG(360), VEL2, VEL/2VS\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t35004\t\t\t# 69\t3COMP\tDPDEG(360), DRAG ACCEL,VEL/2VS\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n# Page 277\n\t\tOCT\t00000\t\t\t# 70\t3COMP\tOCTAL ONLY FOR EACH\n\t\tOCT\t0\t\t\t# 71\t3COMP\tOCTAL ONLY FOR EACH\n\t\tOCT\t00404\t\t\t# 72\t3COMP\tDPDEG(360), POS4, WHOLE\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t10450\t\t\t# 73\t3COMP\tPOS4, VEL2, DPDEG(360)\n\t\tOCT\t40444\t\t\t# 74\t3COMP\tDPDEG(360), VEL2, DRAG ACCEL\n\t\tOCT\t00010\t\t\t# 75\t3COMP\tPOS4, MIN/SEC, MIN/SEC\n#\t\t\t\t\t\t# \t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t0\t\t\t# 76\t\tSPARE\n\t\tOCT\t0\t\t\t# 77\t\tSPARE\n\t\tOCT\t0\t\t\t# 78\t\tSPARE\n\t\tOCT\t0\t\t\t# 79\t\tSPARE\n\t\tOCT\t22440\t\t\t# 80\t3COMP\tMIN/SEC, VEL2, VEL2\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t24512\t\t\t# 81\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 82\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 83\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 84\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 85\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t22451\t\t\t# 86\t3COMP\tVEL2 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00102\t\t\t# 87\t2COMP\tCDU DEG, Y OPTICS DEG\n\t\tOCT\t0\t\t\t# 88\t3COMP\tFRAC FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t16143\t\t\t# 89\t3COMP \tDPDEG(90), DPDEG(90), POS5\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t10507\t\t\t# 90\t3COMP\tPOS5, VEL3, DEPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00102\t\t\t# 91\t2COMP\tCDUDEG, YOPTICS DEG\n\t\tOCT\t00102\t\t\t# 92\t2COMP\tCDUDEG, YOPTICS DEG\n\t\tOCT\t06143\t\t\t# 93\t3COMP\tDPDEG(90) FOR EACH\n\t\tOCT\t00102\t\t\t# 94\t2COMP\tCDUDEG, YOPTICS DEG\n\t\tOCT\t04102\t\t\t# 95\t3COMP\tCDU DEG FOR EACH\n\t\tOCT\t04102\t\t\t# 96\t3COMP\tCDU DEG FOR EACH\n\t\tOCT\t00000\t\t\t# 97\t3COMP\tWHOLE FOR EACH\n\t\tOCT \t00000\t\t\t# 98\t3COMP\tWHOLE, FRAC, WHOLE\n\t\tOCT\t01162\t\t\t# 99\t3COMP\tPOS9, VEL4, WHOLE\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n# END OF NNTYPTAB FOR MIXED NOUNS\n\n\nSFINTAB\t\tOCT\t00006\t\t\t# WHOLE, DP TIME (SEC)\n\t\tOCT\t03240\n\t\tOCT\t00000\t\t\t# SPARE\n\t\tOCT\t00000\n# Page 278\n\t\tOCT\t00000\t\t\t# CDU DEGREES, Y OPTICS DEGREES\n\t\tOCT\t00000\t\t\t#\t(SFCONS IN DEGINSF, OPTDEGIN)\n\t\tOCT\t10707\t\t\t# DP DEGREES (90)\n\t\tOCT\t03435\t\t\t#\tUPPED BY 1\n\t\tOCT\t13070\t\t\t# DP DEGREES (360)(POINT BETWN BITS 11-12)\n\t\tOCT\t34345\t\t\t#\tUPPED BY 1\n\t\tOCT\t00005\t\t\t# DEGREES (180)\n\t\tOCT\t21616\n\t\tOCT\t26113\t\t\t# WEIGHT2\n\t\tOCT\t31713\n\t\tOCT\t00070\t\t\t# POSITION5\n\t\tOCT\t20460\n\t\tOCT\t01065\t\t\t# POSITION4\n\t\tOCT\t05740\n\t\tOCT\t11414\t\t\t# VELOCITY2 \t(POINT BETWN BITS 11-12)\n\t\tOCT\t31463\n\t\tOCT\t07475\t\t\t# VELOCITY3\n\t\tOCT\t16051\n\t\tOCT\t00001\t\t\t# ELEVATION DEGREES\n\t\tOCT\t03434\n\t\tOCT\t00002\t\t\t# TRIM DEGREES\n\t\tOCT\t22245\n\t\tOCT\t00014\t\t\t# INERTIA, THRUST MOMENT\n\t\tOCT\t35607\n\t\tOCT\t07606\t\t\t# VELOCITY/2VS\n\t\tOCT\t06300\n\t\tOCT\t16631\t\t\t# POSITION 6\n\t\tOCT\t11307\n\t\tOCT\t12000\t\t\t# DRAG ACCELERATION (POINT BETWN BITS 7-8)\n\t\tOCT\t00000\n\t\tOCT\t27176\t\t\t# POSITION 8\n\t\tOCT\t14235\n\t\t2DEC\t30480 B-19\t\t# POSITION 9\n\n\t\t2DEC\t30.48 B-7\t\t# VELOCITY4\n\n\t\t\t\t\t\t# END OF SFINTAB\n\n\nSFOUTAB\t\tOCT\t05174\t\t\t# WHOLE, DP TIME (SEC)\n\t\tOCT\t13261\n\t\tOCT\t00000\t\t\t# SPARE\n\t\tOCT\t00000\n\t\tOCT\t00000\t\t\t# CDU DEGREES, Y OPTICS DEGREES\n\t\tOCT\t00000\t\t\t#\t(SFCONS IN DEGOUTSF, OPTDEGOUT)\n\t\tOCT\t00714\t\t\t# DP DEGREES (90) (POINT BETWN BITS 7-8)\n\t\tOCT\t31463\n\t\tOCT\t13412\t\t\t# DP DEGREES (360)\n\t\tOCT\t07534\n\t\tOCT\t05605\t\t\t# DEGREES (180)\n# Page 279\n\t\tOCT\t03656\n\t\tOCT\t00001\t\t\t# WEIGHT2\n\t\tOCT\t16170\n\t\tOCT\t00441\t\t\t# POSITION5\n\t\tOCT\t34306\n\t\tOCT\t07176\t\t\t# POSITION4\n\t\tOCT\t21603\n\t\tOCT\t15340\t\t\t# VELOCITY2\n\t\tOCT\t15340\n\t\tOCT\t01031\t\t\t# VELOCITY3\t(POINT BETWN BITS 7-8)\n\t\tOCT\t21032\n\t\tOCT\t34631\t\t\t# ELEVATION DEGREES\n\t\tOCT\t23146\n\t\tOCT\t14340\t\t\t# TRIM DEGREES\n\t\tOCT\t24145\n\t\tOCT\t02363\t\t\t# INERTIA, THRUST MOMENT\n\t\tOCT\t03721\n\t\tOCT\t20373\t\t\t# VELOCITY/ZVS\n\t\tOCT\t02122\n\t\tOCT\t00424\t\t\t# POSITION 6\t(POINT BETWN BITS 7-8)\n\t\tOCT\t30446\n\t\tOCT\t00631\t\t\t# DRAG ACCELERATION\n\t\tOCT\t23146\n\t\tOCT\t00260\t\t\t# POSITION 8\n\t\tOCT\t06213\n\t\t2DEC\t17.2010499 B-7\t\t# POSITION 9\n\n\t\t2DEC\t.032808399\t\t# VELOCITY4\n\n\t\t\t\t\t\t# END OF SFOUTAB\n\n\n\t\t\t\t\t\t# NN\t SF CONSTANT\t\tSF ROUTINE\n\nIDADDTAB\tECADR\tTTOGO\t\t\t# 40\tMIN/SEC\t\t\tM/S\n\t\tECADR\tVGDISP\t\t\t# 40\tVEL3\t\t\tDP3\n\t\tECADR\tDVTOTAL\t\t\t# 40\tVEL3\t\t\tDP3\n\t\tECADR\tDSPTEM1\t\t\t# 41\tCDU DEG\t\t\tCDU\n\t\tECADR\tDSPTEM1 +1\t\t# 41\tELEV DEG\t\tARTH\n\t\tOCT\t0\t\t\t# 41\tSPARE COMPONENT\n\t\tECADR\tHAPO\t\t\t# 42\tPOS4\t\t\tDP3\n\t\tECADR\tHPER\t\t\t# 42\tPOS4\t\t\tDP3\n\t\tECADR\tVGDISP\t\t\t# 42 \tVEL3\t\t\tDP3\n\t\tECADR\tLAT\t\t\t# 43\tDPDEG(360)\t\tDP4\n\t\tECADR\tLONG\t\t\t# 43\tDPDEG(360)\t\tDP4\n\t\tECADR\tALT\t\t\t# 43\tPOS4\t\t\tDP3\n\t\tECADR\tHAPOX\t\t\t# 44\tPOS4\t\t\tDP3\n\t\tECADR\tHPERX\t\t\t# 44\tPOS4\t\t\tDP3\n\t\tECADR\tTFF\t\t\t# 44\tMIN/SEC\t\t\tM/S\n\t\tECADR\tVHFCNT\t\t\t# 45\t2INT\t\t\t2INT\n# Page 280\n\t\tECADR\tTTOGO\t\t\t# 45\tMIN/SEC\t\t\tM/S\n\t\tECADR\t+MGA\t\t\t# 45\tDPDEG(360)\t\tDP4\n\t\tECADR\tDAPDATR1\t\t# 46\tOCTAL ONLY\t\tOCT\n\t\tECADR\tDAPDATR2\t\t# 46\tOCATAL ONLY\t\tOCT\n\t\tOCT\t0\t\t\t# 46\tSPARE COMPONENT\n\t\tECADR\tCSMMASS\t\t\t# 47\tWEIGHT2\t\t\tARTH1\n\t\tECADR\tLEMMASS\t\t\t# 47\tWEIGHT2\t\t\tARTH1\n\t\tOCT\t00000\t\t\t# 47\tSPARE COMPONENT\n\t\tECADR\tPACTOFF\t\t\t# 48\tTRIM DEG\t\tARTH\n\t\tECADR\tYACTOFF\t\t\t# 48\tTRIM DEG\t\tARTH\n\t\tOCT\t00000\t\t\t# 48\tSPARE COMPONENT\n\t\tECADR\tN49DISP\t\t\t# 49\tPOS4\t\t\tDP3\n\t\tECADR\tN49DISP +2\t\t# 49\tVEL3\t\t\tDP3\n\t\tECADR\tN49DISP +4\t\t# 49\tWHOLE\t\t\tARTH\n\t\tECADR\tRSP-RREC\t\t# 50\tPOS6\t\t\tDP3\n\t\tECADR\tHPERX\t\t\t# 50 \tPOS4\t\t\tDP3\n\t\tECADR\tTFF\t\t\t# 50\tMIN/SEC\t\t\tM/S\n\t\tECADR\tRHOSB\t\t\t# 51\tDPDEG(360)\n\t\tECADR\tGAMMASB\t\t\t# 51\tDPDEG(360)\t\tDP4\n\t\tOCT\t0\t\t\t# 51\tSPARE COMPONENT\n\t\tECADR\tACTCENT\t\t\t# 52\tDPDEG(360)\t\tDP4\n\t\tOCT\t00000\t\t\t# 52\tSPARE COMPONENT\n\t\tOCT\t00000\t\t\t# 52 \tSPARE COMPONENT\n\t\tECADR\tRANGE\t\t\t# 53\tPOS5\t\t\tDP1\n\t\tECADR\tRRATE\t\t\t# 53 \tVEL3\t\t\tDP3\n\t\tECADR\tRTHETA\t\t\t# 53 \tDPDEG(360)\t\tDP4\n\t\tECADR\tRANGE\t\t\t# 54\tPOS5\t\t\tDP1\n\t\tECADR\tRRATE\t\t\t# 54\tVEL3\t\t\tDP3\n\t\tECADR\tRTHETA\t\t\t# 54\tDPDEG(360)\t\tDP4\n\t\tECADR\tNN1\t\t\t# 55\tWHOLE\t\t\tARTH\n\t\tECADR\tELEV\t\t\t# 55\tDPDEG(360)\t\tDP4\n\t\tECADR\tCENTANG\t\t\t# 55\tDPDEG(360)\t\tDP4\n\t\tECADR\tRTEGAM2D\t\t# 56\tDPDEG(360)\t\tDP4\n\t\tECADR\tRTEDVD\t\t\t# 56\tVEL2\t\t\tDP4\n\t\tOCT\t0\t\t\t# 56\tSPARE COMPONENT\n\t\tECADR\tDELTAR\t\t\t# 57\tPOS4\t\t\tDP3\n\t\tOCT\t0\t\t\t# 57\tSPARE COMPONENT\n\t\tOCT\t0\t\t\t# 57\tSPARE COMPONENT\n\t\tECADR\tPOSTTPI\t\t\t# 58\tPOS4\t\t\tDP3\n\t\tECADR\tDELVTPI\t\t\t# 58\tVEL3\t\t\tDP3\n\t\tECADR\tDELVTPF\t\t\t# 58\tVEL3\t\t\tDP3\n\t\tECADR\tDVLOS\t\t\t# 59\tVEL3\t\t\tDP3\n\t\tECADR\tDVLOS +2\t\t# 59\tVEL3\t\t\tDP3\n\t\tECADR\tDVLOS +4\t\t# 59\tVEL3\t\t\tDP3\n\t\tECADR\tGMAX\t\t\t# 60\tWHOLE\t\t\tARTH\n\t\tECADR\tVPRED\t\t\t# 60\tVEL2\t\t\tDP4\n\t\tECADR\tGAMMAEI\t\t\t# 60\tDPDEG(360)\t\tDP4\n\t\tECADR\tLAT(SPL)\t\t# 61\tDPDEG(360)\t\tDP4\n\t\tECADR\tLNG(SPL)\t\t# 61\tDPDEG(360)\t\tDP4\n\t\tECADR\tHEADSUP\t\t\t# 61\tWHOLE\t\t\tARTH\n# Page 281\n\t\tECADR\tVMAGI\t\t\t# 62\tVEL2\t\t\tDP4\n\t\tECADR\tHDOT\t\t\t# 62\tVEL2\t\t\tDP4\n\t\tECADR\tALTI\t\t\t# 62\tPOS4\t\t\tDP3\n\t\tECADR\tRTGO\t\t\t# 63\tPOS6\t\t\tDP3\n\t\tECADR\tVIO\t\t\t# 63\tVEL2\t\t\tDP4\n\t\tECADR\tTTE\t\t\t# 63\tMIN/SEC\t\t\tM/S\n\t\tECADR\tD\t\t\t# 64 \tDRAG ACCEL\t\tDP2\n\t\tECADR\tVMAGI\t\t\t# 64\tVEL2\t\t\tDP4\n\t\tECADR\tRTGON64\t\t\t# 64\tPOS6\t\t\tDP3\n\t\tECADR\tSAMPTIME\t\t# 65\tHMS (MIXED ONLY TO KEEP CODE 65) HMS\n\t\tECADR\tSAMPTIME\t\t# 65\tHMS\t\t\tHMS\n\t\tECADR\tSAMPTIME\t\t# 65\tHMS\t\t\tHMS\n\t\tECADR\tROLLC\t\t\t# 66\tDPDEG(360)\t\tDP4\n\t\tECADR\tXRNGERR\t\t\t# 66\tPOS8\t\t\tDP3\n\t\tECADR\tDNRNGERR\t\t# 66\tPOS6\t\t\tDP3\n\t\tECADR\tRTGON67\t\t\t# 67\tPOS6\t\t\tDP3\n\t\tECADR\tLAT\t\t\t# 67\tDPDEG(360)\t\tDP4\n\t\tECADR\tLONG\t\t\t# 67\tDPDEG(360)\t\tDP4\n\t\tECADR\tROLLC\t\t\t# 68\tDPDEG(360)\t\tDP4\n\t\tECADR\tVMAGI\t\t\t# 68\tVEL2\t\t\tDP4\n\t\tECADR\tRDOT\t\t\t# 68\tVEL/2VS\t\t\tDP4\n\t\tECADR\tROLLC\t\t\t# 69\tDPDEG(360)\t\tDP4\n\t\tECADR\tQ7\t\t\t# 69\tDRAG ACCEL\t\tDP2\n\t\tECADR\tVL\t\t\t# 69\tVEL/2VS\t\t\tDP4\n\t\tECADR\tSTARCODE\t\t# 70 \tOCTAL ONLY\t\tOCT\n\t\tECADR\tLANDMARK\t\t# 70\tOCTAL ONLY\t\tOCT\n\t\tECADR\tHORIZON\t\t\t# 70\tOCTAL ONLY\t\tOCT\n\t\tECADR\tSTARCODE\t\t# 71\tOCTAL ONLY\t\tOCT\n\t\tECADR\tLANDMARK\t\t# 71\tOCTAL ONLY\t\tOCT\n\t\tECADR\tHORIZON\t\t\t# 71 \tOCTAL ONLY\t\tOCT\n\t\tECADR\tTHETZERO\t\t# 72 \tDPDEG(360)\t\tDP4\n\t\tECADR\tDELHITE\t\t\t# 72\tPOS4\t\t\tDP3\n\t\tECADR\tOPTION2\t\t\t# 72\tWHOLE\t\t\tARTH\n\t\tECADR\tP21ALT\t\t\t# 73\tPOS4\t\t\tDP3\n\t\tECADR\tP21VEL\t\t\t# 73\tVEL2\t\t\tDP4\n\t\tECADR\tP21GAM\t\t\t# 73\tDPDEG(360)\t\tDP4\n\t\tECADR\tROLLC\t\t\t# 74\tDPDEG(360)\t\tDP4\n\t\tECADR\tVMAGI\t\t\t# 74\tVEL2\t\t\tDP4\n\t\tECADR\tD\t\t\t# 74\tDRAG ACCEL\t\tDP2\n\t\tECADR\tDIFFALT\t\t\t# 75\tPOS4\t\t\tDP3\n\t\tECADR\tT1TOT2\t\t\t# 75\tMIN/SEC\t\t\tM/S\n\t\tECADR\tT2TOT3\t\t\t# 75\tMIN/SEC\t\t\tM/S\n\t\tOCT\t0\t\t\t# 76\tSPARE\n\t\tOCT\t0\t\t\t# 76\tSPARE\n\t\tOCT\t0\t\t\t# 76\tSPARE\n\t\tOCT\t0\t\t\t# 77\tSPARE\n\t\tOCT\t0\t\t\t# 77\tSPARE\n\t\tOCT\t0\t\t\t# 77\tSPARE\n\t\tOCT\t0\t\t\t# 78\tSPARE\n\t\tOCT\t0\t\t\t# 78\tSPARE\n# Page 282\n\t\tOCT\t0\t\t\t# 78\tSPARE\n\t\tOCT\t0\t\t\t# 79\tSPARE\n\t\tOCT\t0\t\t\t# 79\tSPARE\n\t\tOCT\t0\t\t\t# 79\tSPARE\n\t\tECADR\tTTOGO\t\t\t# 80\tMIN/SEC\t\t\tM/S\n\t\tECADR\tVGDISP\t\t\t# 80\tVEL2\t\t\tDP4\n\t\tECADR\tDVTOTAL\t\t\t# 80\tVEL2\t\t\tDP4\n\t\tECADR\tDELVLVC\t\t\t# 81\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +2\t\t# 81\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +4\t\t# 81\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC\t\t\t# 82\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +2\t\t# 82\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +4\t\t# 82 \tVEL3\t\t\tDP3\n\t\tECADR\tDELVIMU\t\t\t# 83\tVEL3\t\t\tDP3\n\t\tECADR\tDELVIMU +2\t\t# 83\tVEL3\t\t\tDP3\n\t\tECADR\tDELVIMU +4\t\t# 83\tVEL3\t\t\tDP3\n\t\tECADR\tDELVOV\t\t\t# 84\tVEL3\t\t\tDP3\n\t\tECADR\tDELVOV +2\t\t# 84\tVEL3\t\t\tDP3\n\t\tECADR\tDELVOV +4\t\t# 84\tVEL3\t\t\tDP3\n\t\tECADR\tVGBODY\t\t\t# 85\tVEL3\t\t\tDP3\n\t\tECADR\tVGBODY +2\t\t# 85\tVEL3\t\t\tDP3\n\t\tECADR\tVGBODY +4\t\t# 85\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC\t\t\t# 86\tVEL2\t\t\tDP4\n\t\tECADR\tDELVLVC +2\t\t# 86\tVEL2\t\t\tDP4\n\t\tECADR\tDELVLVC +4\t\t# 86\tVEL2\t\t\tDP4\n\t\tECADR\tMRKBUF1 +3\t\t# 87\tCDU DEG\t\t\tCDU\n\t\tECADR\tMRKBUF1 +5\t\t# 87\tY OPTICS DEG\t\tYOPT\n\t\tOCT\t0\t\t\t# 87\tSPARE COMPONENT\n\t\tECADR\tSTARSAV3\t\t# 88\tDPFRAC\t\t      DPFRAC\n\t\tECADR\tSTARSAV3 +2\t\t# 88\tDPFRAC\t\t      DPFRAC\n\t\tECADR\tSTARSAV3 +4\t\t# 88\tDPFRAC\t\t      DPFRAC\n\t\tECADR\tLANDLAT\t\t\t# 89\tDPDEG(90)\t\tDP3\n\t\tECADR\tLANDLONG\t\t# 89\tDPDEG(90)\t\tDP3\n\t\tECADR\tLANDALT\t\t\t# 89\tPOS5\t\t\tDP1\n\t\tECADR\tRANGE\t\t\t# 90\tPOS5\t\t\tDP1\n\t\tECADR\tRRATE\t\t\t# 90\tVEL3\t\t\tDP3\n\t\tECADR\tRTHETA\t\t\t# 90\tDPDEG(360)\t\tDP4\n\t\tECADR\tCDUS\t\t\t# 91\tCDU DEG\t\t\tCDU\n\t\tECADR\tCDUT\t\t\t# 91\tY OPTICS DEG\t\tYOPT\n\t\tOCT\t0\t\t\t# 91\tSPARE COMPONENT\n\t\tECADR\tSAC\t\t\t# 92\tCDU DEG\t\t\tCDU\n\t\tECADR\tPAC\t\t\t# 92\tY OPTICS DEG\t\tYOPT\n\t\tOCT\t0\t\t\t# 92\tSPARE COMPONENT\n\t\tECADR\tOGC\t\t\t# 93\tDPDEG(90)\t\tDP3\n\t\tECADR\tOGC +2\t\t\t# 93\tDPDEG(90)\t\tDP3\n\t\tECADR\tOGC +4\t\t\t# 93\tDPDEG(90)\t\tDP3\n\t\tECADR\tMRKBUF1 +3\t\t# 94\tCDU DEG\t\t\tCDU\n\t\tECADR\tMRKBUF1 +5\t\t# 94 \tY OPTICS DEG\t\tYOPT\n\t\tOCT\t00000\t\t\t# 94 \tSPARE\n\t\tECADR\tPRAXIS\t\t\t# 95\tCDU DEG\t\t\tCDU\n# Page 283\n\t\tECADR\tPRAXIS +1\t\t# 95\tCDU DEG\t\t\tCDU\n\t\tECADR\tPRAXIS +2\t\t# 95\tCDU DEG\t\t\tCDU\n\t\tECADR\tCPHIX\t\t\t# 96\tCDU DEG\t\t\tCDU\n\t\tECADR\tCPHIX +1\t\t# 96\tCDU DEG\t\t\tCDU\n\t\tECADR\tCPHIX +2\t\t# 96\tCDU DEG\t\t\tCDU\n\t\tECADR\tDSPTEM1\t\t\t# 97\tWHOLE\t\t\tARTH\n\t\tECADR\tDSPTEM1 +1\t\t# 97\tWHOLE\t\t\tARTH\n\t\tECADR\tDSPTEM1 +2\t\t# 97\tWHOLE\t\t\tARTH\n\t\tECADR\tDSPTEM2\t\t\t# 98\tWHOLE\t\t\tARTH\n\t\tECADR\tDSPTEM2 +1\t\t# 98\tFRAC\t\t\tFRAC\n\t\tECADR\tDSPTEM2 +2\t\t# 98\tWHOLE\t\t\tARTH\n\t\tECADR\tWWPOS\t\t\t# 99 \tPOS9\t\t\tDP3\n\t\tECADR\tWWVEL\t\t\t# 99\tVEL4\t\t\tDP2\n\t\tECADR\tWWOPT\t\t\t# 99 \tWHOLE\t\t\tARTH\n# END OF IDADDTAB\n\n\n\t\t\t\t\t\t# NN\tSF ROUTINES\n\nRUTMXTAB\tOCT\t16351\t\t\t# 40\tM/S, DP3, DP3\n\t\tOCT\t00142\t\t\t# 41\tCDU, ARTH\n\t\tOCT\t16347\t\t\t# 42\tDP3, DP3, DP3\n\t\tOCT\t16512\t\t\t# 43\tDP4, DP4, DP3\n\t\tOCT\t22347\t\t\t# 44\tDP3, DP3, M/S\n\t\tOCT\t24454\t\t\t# 45\t2INT, M/S, DP4\n\t\tOCT\t00000\t\t\t# 46\tOCT, OCT\n\t\tOCT\t00553\t\t\t# 47\tARITH1, ARITH1\n\t\tOCT\t00143\t\t\t# 48\tARTH, ARTH\n\t\tOCT\t06347\t\t\t# 49\tDP3, DP3, ARTH\n\t\tOCT\t22347\t\t\t# 50\tDP3, DP3, M/S\n\t\tOCT\t00512\t\t\t# 51\tDP4, DP4\n\t\tOCT\t00012\t\t\t# 52\tDP4\n\t\tOCT\t24344\t\t\t# 53 \tDP1, DP3, DP4\n\t\tOCT\t24344\t\t\t# 54\tDP1, DP3, DP4\n\t\tOCT\t24503\t\t\t# 55\tARTH, DP4 , DP4\n\t\tOCT\t00512\t\t\t# 56\tDP4, DP4\n\t\tOCT\t00007\t\t\t# 57\tDP3\n\t\tOCT\t16347\t\t\t# 58\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 59\tDP3, DP3, DP3\n\t\tOCT\t24503\t\t\t# 60\tARTH, DP4, DP4\n\t\tOCT\t06512\t\t\t# 61\tDP4, DP4, ARTH\n\t\tOCT\t16512\t\t\t# 62\tDP4, DP4, DP3\n\t\tOCT\t22507\t\t\t# 63\tDP3, DP4, M/S\n\t\tOCT\t16505\t\t\t# 64\tDP2, DP4, DP3\n\t\tOCT\t20410\t\t\t# 65\tHMS, HMS, HMS\n\t\tOCT\t16352\t\t\t# 66\tDP4, DP3, DP3\n\t\tOCT\t24507\t\t\t# 67\tDP3, DP4, DP4\n\t\tOCT\t24512\t\t\t# 68\tDP4, DP4, DP4\n\t\tOCT\t24252\t\t\t# 69\tDP4, DP2, DP4\n\t\tOCT\t00000\t\t\t# 70\tOCT, OCT, OCT\n# Page 284\n\t\tOCT\t0\t\t\t# 71\tOCT, OCT, OCT\n\t\tOCT\t06352\t\t\t# 72\tDP4, DP3, ARTH\n\t\tOCT\t24507\t\t\t# 73\tDPR, DP4, DP4\n\t\tOCT\t12512\t\t\t# 74\tDP4, DP4, DP2\n\t\tOCT\t22447\t\t\t# 75\tDP3, M/S, M/S\n\t\tOCT\t0\t\t\t# 76\tSPARE\n\t\tOCT\t0\t\t\t# 77\tSPARE\n\t\tOCT\t0\t\t\t# 78\tSPARE\n\t\tOCT\t0\t\t\t# 79\tSPARE\n\t\tOCT\t24511\t\t\t# 80\tM/S, DP4, DP4\n\t\tOCT\t16347\t\t\t# 81\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 82\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 83\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 84\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 85\tDP3, DP3, DP3\n\t\tOCT\t24512\t\t\t# 86\tDP4, DP4, DP4\n\t\tOCT\t00302\t\t\t# 87\tCDU, YOPT\n\t\tOCT\t32655\t\t\t# 88\tDPFRAC FOR EACH\n\t\tOCT\t10347\t\t\t# 89\tDP3, DP3, DP1\n\t\tOCT\t24344\t\t\t# 90\tDP1, DP3, DP4\n\t\tOCT\t00302\t\t\t# 91\tCDU, YOPT\n\t\tOCT\t00302\t\t\t# 92\tCDU, YOPT\n\t\tOCT\t16347\t\t\t# 93\tDP3, DP3, DP3\n\t\tOCT\t00302\t\t\t# 94\tCDU, YOPT\n\t\tOCT\t04102\t\t\t# 95\tCDU, CDU, CDU\n\t\tOCT\t04102\t\t\t# 96\tCDU, CDU, CDU\n\t\tOCT\t06143\t\t\t# 97\tARTH, ARTH, ARTH\n\t\tOCT\t06043\t\t\t# 98\tARTH, FRAC, ARTH\n\t\tOCT\t06247\t\t\t# 99\tDP3, DP2, ARTH\n# END OF RUTMXTAB\n\n\n\t\tSBANK=\tLOWSUPER\n"
  },
  {
    "path": "Comanche055/PLANETARY_INERTIAL_ORIENTATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPLANETARY_INERTIAL_ORIENTATION.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1243-1251\n# Mod history:\t2009-05-14 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1243\n# PLANETARY INERTIAL ORIENTATION\n\n# ..... RP-TO-R SUBROUTINE .....\n# SUBROUTINE TO CONVERT RP (VECTOR IN PLANETARY COORDINATE SYSTEM,EITHER\n# EARTH-FIXED OR MOON-FIXED) TO R (SAME VECTOR IN BASIC REF. SYSTEM)\n\n#\tR=MT(T)*(RP+LPXRP)\tMT= M MATRIX TRANSPOSE\n\n# CALLING SEQUENCE\n#\tL \tCALL\n#\tL+1\t\tRP-TO-R\n\n# SUBROUTINES USED\n#\tEARTHMX,MOONMX,EARTHL\n\n# \tITEMS AVAILABLE FROM LAUNCH DATA\n#\t\t504LM= THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL,EXPRESSED\n#\t\tIN THE MOON-FIXED COORD. SYSTEM\t\tRADIANS B0\n#\t\t\tITEMS NECESSARY FOR SUBR. USED (SEE DESCRIPTION OF SUBR.)\n\n# INPUT\n#\tMPAC= 0 FOR EARTH,NON-ZERO FOR MOON\n#\t0-5D= RP VECTOR\n#\t6-7D= TIME\n\n# OUTPUT\n#\tMPAC= R VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON\n\n\t\tSETLOC\tPLANTIN\n\t\tBANK\n\n\t\tCOUNT*\t$$/LUROT\n\nRP-TO-R\t\tSTQ\tBHIZ\n\t\t\tRPREXIT\n\t\t\tRPTORA\n\t\tCALL\t\t\t# COMPUTE M MATRIX FOR MOON\n\t\t\tMOONMX\t\t# LP=LM FOR MOON\tRADIANS B0\n\t\tVLOAD\n\t\t\t504LM\nRPTORB\t\tVXV\tVAD\n\t\t\t504RPR\n\t\t\t504RPR\n\t\tVXM\tGOTO\n\t\t\tMMATRIX\t\t# MPAC=R=MT(T)*(RP+LPXRP)\n\t\t\tRPRPXXXX\t# RESET PUSHLOC TO 0 BEFORE EXITING\nRPTORA\t\tCALL\t\t\t# EARTH COMPUTATIONS\n\t\t\tEARTHMX\t\t# M MATRIX B-1\n\t\tCALL\n\t\t\tEARTHL\t\t# L VECTOR RADIANS B0\n\t\tMXV\tVSL1\t\t# LP=M(T)*L \tRAD B-0\n\t\t\tMMATRIX\n# Page 1244\n\t\tGOTO\n\t\t\tRPTORB\n\n# Page 1245\n# ..... R-TO-RP SUBROUTINE .....\n# SUBROUTINE TO CONVERT R (VECTOR IN REFERENCE COORD. SYSTEM) TO RP\n# (VECTOR IN PLANETARY COORD SYSTEM) EITHER EARTH-FIXED OR MOON-FIXED\n\n#\tRP = M(T) * (R - L X R)\n\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tR-TO-RP\n\n# SUBROUTINES USED\n#\tEARTHMX,MOONMX,EARTHL\n\n# INPUT\n#\tMPAC= 0 FOR EARTH,NON-ZERO FOR MOON\n#\t0-5D= R VECTOR\n#\t6-7D= TIME\n\n#\tITEMS AVAILABLE FROM LAUNCH DATA\n#\t\t504LM= THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL,EXPRESSED\n#\t\tIN THE MOON-FIXED COORD. SYSTEM\t\tRADIANS B0\n#\t\t\tITEMS NECESSARY FOR SUBROUTINES USED (SEE DESCRIPTION OF SUBR.)\n\n# OUTPUT\n#\tMPAC=RP VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON\n\nR-TO-RP\t\tSTQ\tBHIZ\n\t\t\tRPREXIT\n\t\t\tRTORPA\n\t\tCALL\n\t\t\tMOONMX\n\t\tVLOAD\tVXM\n\t\t\t504LM\t\t# LP=LM\n\t\t\tMMATRIX\n\t\tVSL1\t\t\t# L=MT(T)*LP \tRADIANS B0\nRTORPB\t\tVXV\tBVSU\n\t\t\t504RPR\n\t\t\t504RPR\n\t\tMXV\t\t\t# M(T)*(R-LXR)\tB-2\n\t\t\tMMATRIX\nRPRPXXXX\tVSL1\tSETPD\n\t\t\t0D\n\t\tGOTO\n\t\t\tRPREXIT\nRTORPA\t\tCALL\t\t\t# EARTH COMPUTATIONS\n\t\t\tEARTHMX\n\t\tCALL\n\t\t\tEARTHL\n\t\tGOTO\t\t\t# MPAC=L=(-AX,-AY,0) RAD B-0\n\t\t\tRTORPB\n\n# Page 1246\n# ..... MOONMX SUBROUTINE .....\n# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE MOON\n\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tMOONMX\n\n# SUBROUTINES USED\n#\tNEWANGLE\n\n# INPUT\n#\t6-7D= TIME\n#\tITEMS AVAILABLE FROM LAUNCH DATA\n#\t\tBSUBO,BDOT\n#\t\tTIMSUBO,NODIO,NODDOT,FSUBO,FDOT\n#\t\tCOSI= COS(I)\tB-1\n#\t\tSINI= SIN(I)\tB-1\n#\t\tI IS THE ANGLE BETWEEN THE MEAN LUNAR EQUATORIAL PLANE AND THE\n#\t\tPLANE OF THE ECLIPTIC (1 DEGREE 32.1 MINUTES)\n\n# OUTPUT\n#\tMMATRIX= 3X3 M MATRIX B-1\t(STORED IN VAC AREA)\n\nMOONMX\t\tSTQ\tSETPD\n\t\t\tEARTHMXX\n\t\t\t8D\n\t\tAXT,1\t\t\t# B REQUIRES SL 0, SL 5 IN NEWANGLE\n\t\t\t5\n\t\tDLOAD\tPDDL\t\t# PD 10D\t8-9D=BSUBO\n\t\t\tBSUBO\t\t#\t\t10-11D= BDOT\n\t\t\tBDOT\n\t\tPUSH\tCALL\t\t# PD 12D\n\t\t\tNEWANGLE\t# EXIT WITH PD 8D AND MPAC= B\tREVS B0\n\t\tPUSH\tCOS\t\t# PD 10D\n\t\tSTODL\tCOB\t\t# PD 8D\t\tCOS(B) B-1\n\t\tSIN\t\t\t#\t\tSIN(B) B-1\n\t\tSTODL\tSOB\t\t# \t\tSETUP INPUT FOR NEWANGLE\n\t\t\tFSUBO\t\t# \t\t\t8-9D=FSUBO\n\t\tPDDL\tPUSH\t\t# PD 10D THEN 12D     10-11D=FDOT\n\t\t\tFDOT\n\t\tAXT,1\tCALL\t\t# F REQUIRES SL 1, SL 6 IN NEWANGLE\n\t\t\t4\n\t\t\tNEWANGLE\t# EXIT WITH PD 8D AND MPAC= F REVS B0\n\t\tSTODL\tAVECTR +2\t# SAVE F TEMP\n\t\t\tNODIO\t\t#\t\t\t8-9D=NODIO\n\t\tPDDL\tPUSH\t\t# PD 10D THEN 12D     10-11D=NODDOT\n\t\t\tNODDOT\t\t#\t\t\tMPAC=T\n\t\tAXT,1\tCALL\t\t# NODE REQUIRES SL 0, SL 5 IN NEWANGLE\n\t\t\t5\n\t\t\tNEWANGLE\t# EXIT WITH PD 8D AND MPAC= NODI REVS B0\n# Page 1247\n\t\tPUSH\tCOS\t\t# PD 10D\t8-9D= NODI REVS B0\n\t\tPUSH\t\t\t# PD 12D      10-11D= COS(NODI) B-1\n\t\tSTORE\tAVECTR\n\t\tDMP\tSL1R\n\t\t\tCOB\t\t#\t\t\tCOS(NODI) B-1\n\t\tSTODL\tBVECTR +2\t# PD 10D  20-25D=AVECTR=COB*SIN(NODI)\n\t\tDMP\tSL1R\t\t#\t\t\tSOB*SIN(NODI)\n\t\t\tSOB\n\t\tSTODL\tBVECTR +4\t# PD 8D\n\t\tSIN\tPUSH\t\t# PD 10D\t\t-SIN(NODI) B-1\n\t\tDCOMP\t\t\t#         26-31D=BVECTR= COB*COS(NODI)\n\t\tSTODL\tBVECTR\t\t# PD 8D\t\t\t SOB*COS(NODI)\n\t\t\tAVECTR +2\t# MOVE F FROM TEMP LOC. TO 504F\n\t\tSTODL\t504F\n\t\tDMP\tSL1R\n\t\t\tCOB\n\t\tSTODL\tAVECTR +2\n\t\t\tSINNODI\t\t# 8-9D=SIN(NODI) B-1\n\t\tDMP\tSL1R\n\t\t\tSOB\n\t\tSTODL\tAVECTR +4\t#\t\t\t 0\n\t\t\tHI6ZEROS\t#\t8-13D= CVECTR= -SOB B-1\n\t\tPDDL\tDCOMP\t\t# PD 10D\t\tCOB\n\t\t\tSOB\n\t\tPDDL\tPDVL\t\t# PD 12D THEN PD 14D\n\t\t\tCOB\n\t\t\tBVECTR\n\t\tVXSC\tPDVL\t\t# PD 20D\tBVECTR*SINI B-2\n\t\t\tSINI\n\t\t\tCVECTR\n\t\tVXSC\tVAD\t\t# PD 14D\tCVECTR*COSI B-2\n\t\t\tCOSI\n\t\tVSL1\n\t\tSTOVL\tMMATRIX +12D\t# PD 8D  M2=BVECTR*SINI+CVECTR*COSI B-1\n\t\tVXSC\tPDVL\t\t# PD 14D\n\t\t\tSINI\t\t#\t\tCVECTR*SINI B-2\n\t\t\tBVECTR\n\t\tVXSC\tVSU\t\t# PD 8D\t\tBVECTR*COSI B-2\n\t\t\tCOSI\n\t\tVSL1\tPDDL\t\t# PD 14D\n\t\t\t504F\t\t# 8-13D=DVECTR=BVECTR*COSI-CVECTR*SINI B-1\n\t\tCOS\tVXSC\n\t\t\tDVECTR\n\t\tPDDL\tSIN\t\t# PD 20D  14-19D= DVECTR*COSF B-2\n\t\t\t504F\n\t\tVXSC\tVSU\t\t# PD 14D\t  AVECTR*SINF B-2\n\t\t\tAVECTR\n\t\tVSL1\n\t\tSTODL\tMMATRIX +6\t# M1= AVECTR*SINF-DVECTR*COSF B-1\n\t\t\t504F\n# Page 1248\n\t\tSIN\tVXSC\t\t# PD 8D\n\t\tPDDL\tCOS\t\t# PD 14D  8-13D=DVECTR*SINF B-2\n\t\t\t504F\n\t\tVXSC\tVAD\t\t# PD 8D\t\tAVECTR*COSF B-2\n\t\t\tAVECTR\n\t\tVSL1\tVCOMP\n\t\tSTCALL\tMMATRIX\t\t# M0= -(AVECTR*COSF+DVECTR*SINF) B-1\n\t\t\tEARTHMXX\n# COMPUTE X=X0+(XDOT)(T+T0)\n# 8-9D= X0 (REVS B-0),PUSHLOC SET AT 12D\n# 10-11D=XDOT (REVS/CSEC) SCALED B+23 FOR WEARTH,B+28 FOR NODDOT AND BDOT\n#\t\t\tAND B+27 FOR FDOT\n# X1=DIFFERENCE IN 23 AND SCALING OF XDOT,=0 FOR WEARTH,5 FOR NDDOT AND\n#\t\t\t\t\tBDOT AND 4 FOR FDOT\n# 6-7D=T (CSEC B-28), TIMSUBO= (CSEC B-42 TRIPLE PREC.)\n\nNEWANGLE\tDLOAD\tSR\t\t# ENTER PD 12D\n\t\t\t6D\n\t\t\t14D\n\t\tTAD\tTLOAD\t\t# CHANGE MODE TO TP\n\t\t\tTIMSUBO\n\t\t\tMPAC\n\t\tSTODL\tTIMSUBM\t\t# T+T0 CSEC B-42\n\t\t\tTIMSUBM +1\n\t\tDMP\t\t\t# PD 10D\tMULT BY XDOT IN 10-11D\n\t\tSL*\tDAD\t\t# PD 8D\t\tADD X0 IN 8-9D AFTER SHIFTING\n\t\t\t5,1\t\t#\t\tSUCH THAT SCALING IS B-0\n\t\tPUSH\tSLOAD\t\t# PD 10D  SAVE PARTIAL (X0+XDOT*T) IN 8-9D\n\t\t\tTIMSUBM\n\t\tSL\tDMP\n\t\t\t9D\n\t\t\t10D\t\t# XDOT\n\t\tSL*\tDAD\t\t# PD 8D\t\tSHIFT SUCH THAT THIS PART OF X\n\t\t\t10D,1\t\t#\t\tIS SCALED REVS/CSEC B-0\n\t\tBOV\t\t\t# TURN OFF OVERFLOW IF SET BY SHIFT\n\t\t\t+1\t\t# INSTRUCTION BEFORE EXITING\n\t\tRVQ\t\t\t# MPAC=X= X0+(XDOT)(T+T0)\tREVS B0\n\n# Page 1249\n# ..... EARTHMX SUBROUTINE .....\n# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE EARTH\n\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tEARTHMX\n\n# SUBROUTINE USED\n#\tNEWANGLE\n\n# INPUT\n#\tINPUT AVAILABLE FROM LAUNCH DATA\tAZO REVS B-0\n#\t\t\t\t\t\tTEPHEM CSEC B-42\n#\t6-7D= TIME CSEC B-28\n\n# OUTPUT\n#\tMMATRIX= 3X3 M MATRIX B-1 (STORED IN VAC AREA)\n\nEARTHMX\t\tSTQ\tSETPD\t\t# SET 8-9D=AZO\n\t\t\tEARTHMXX\n\t\t\t8D\t\t# 10-11D=WEARTH\n\t\tAXT,1\t\t\t# FOR SL 5, AND SL 10 IN NEWANGLE\n\t\t\t0\n\t\tDLOAD\tPDDL\t\t# LEAVING PD SET AT 12D FOR NEWANGLE\n\t\t\tAZO\n\t\t\tWEARTH\n\t\tPUSH\tCALL\n\t\t\tNEWANGLE\n\t\tSETPD\tPUSH\t\t# 18-19D=504AZ\n\t\t\t18D\t\t#\t\t\t COS(AZ) SIN(AZ) 0\n\t\tCOS\tPDDL\t\t# 20-37D=  MMATRIX=\t-SIN(AZ) COS(AZ) 0 B-1\n\t\t\t504AZ\t\t#\t\t\t  0       0      1\n\t\tSIN\tPDDL\n\t\t\tHI6ZEROS\n\t\tPDDL\tSIN\n\t\t\t504AZ\n\t\tDCOMP\tPDDL\n\t\t\t504AZ\n\t\tCOS\tPDVL\n\t\t\tHI6ZEROS\n\t\tPDDL\tPUSH\n\t\t\tHIDPHALF\n\t\tGOTO\n\t\t\tEARTHMXX\n\n# Page 1250\n# ..... EARTHL SUBROUTINE .....\n# SUBROUTINE TO COMPUTE L VECTOR FOR EARTH\n\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tEARTHL\n\n# INPUT\n#\tAXO,AYO SET AT LAUNCH TIME WITH AYO IMMEDIATELY FOLLOWING AXO IN CORE\n\n# OUTPUT\n#\t\t-AX\n#\tMPAC=\t-AY\tRADIANS B-0\n#\t\t  0\n\nEARTHL\t\tDLOAD\tDCOMP\n\t\t\tAXO\n\t\tSTODL\t504LPL\n\t\t\t-AYO\n\t\tSTODL\t504LPL +2\n\t\t\tHI6ZEROS\n\t\tSTOVL\t504LPL +4\n\t\t\t504LPL\n\t\tRVQ\n\n# Page 1251\n# CONSTANTS AND ERASABLE ASSIGNMENTS\n1B1\t\t=\tDP1/2\t\t# 1 SCALED B-1\nCOSI\t\t2DEC\t.99964173 B-1\t# COS(5521.5 SEC) B-1\n\nSINI\t\t2DEC\t.02676579 B-1\t# SIN(5521.5 SEC) B-1\n\nRPREXIT\t\t=\tS1\t\t# R-TO-RP AND RP-TO-R SUBR EXIT\nEARTHMXX\t=\tS2\t\t# EARTHMX,MOONMX SUBR. EXITS\n504RPR\t\t=\t0D\t\t# 6 REGS\tR OR RP VECTOR\nSINNODI\t\t=\t8D\t\t# 2\t\tSIN(NODI)\nDVECTR\t\t=\t8D\t\t# 6\t\tD VECTOR MOON\nCVECTR\t\t=\t8D\t\t# 6\t\tC VECTR MOON\n504AZ\t\t=\t18D\t\t# 2\t       AZ\nTIMSUBM\t\t=\t14D\t\t# 3\t\tTIME SUB M (MOON) T+10 IN GETAZ\n504LPL\t\t=\t14D\t\t# 6\t\tL OR LP VECTOR\nAVECTR\t\t=\t20D\t\t# 6\t\tA VECTOR (MOON)\nBVECTR\t\t=\t26D\t\t# 6\t\tB VECTOR (MOON)\nMMATRIX\t\t=\t20D\t\t# 18\t\tM MATRIX\nCOB\t\t=\t32D\t\t# 2\t\tCOS(B) B-1\nSOB\t\t=\t34D\t\t# 2\t\tSIN(B) B-1\n504F\t\t=\t6D\t\t# 2\t\tF(MOON)\nNODDOT\t\t2DEC\t-.457335121 E-2\t# REVS/CSEC B+28=-1.07047011 E-8  RAD/SEC\n\nFDOT\t\t2DEC\t.570863327\t# REVS/CSEC B+27= 2.67240410 E-6  RAD/SEC\n\nBDOT\t\t2DEC\t-3.07500686 E-8\t# REVS/CSEC B+28=-7.19757301 E-14 RAD/SEC\n\nNODIO\t\t2DEC\t.986209434\t# REVS B-0      = 6.19653663041   RAD\n\nFSUBO\t\t2DEC\t.829090536\t# REVS B-0\t= 5.20932947829\t  RAD\n\nBSUBO\t\t2DEC\t.0651201393\t# REVS B=0\t= 0.40916190299\t  RAD\n\nWEARTH\t\t2DEC\t.973561595\t# REVS/CSEC B+23= 7.29211494 E-5  RAD/SEC\n"
  },
  {
    "path": "Comanche055/POWERED_FLIGHT_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPOWERED_FLIGHT_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1365-1372\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#                               from the Colossus249/ file of the same\n#                               name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n\n# Page 1365\n\t\tBANK\t14\t\t# SAME FBANK AS THE FINDCDUD SUB-PROGRAM\n\t\tSETLOC\tPOWFLITE\n\t\tBANK\n\n\t\tEBANK=\tDEXDEX\n\t\tCOUNT*\t$$/POWFL\n\n# \tCDUTRIG, CDUTRIG1, CDUTRIG2, AND CD*GR*GS ALL COMPUTE THE SINES AND\n# COSINES OF THREE 2'S COMPLEMENT ANGLES AND PLACE THE RESULT, DOUBLE\n# PRECISION, IN THE SAME ORDER AS THE INPUTS, AT SINCDU AND COSCDU.  AN\n# ADDITIONAL OUTPUT IS THE 1'S COMPLEMENT ANGLES AT CDUSPOT.  THESE\n# ROUTINES GO OUT OF THEIR WAY TO LEAVE THE MPAC AREA AS THEY FIND IT,\n# EXCEPT FOR THE GENERALLY UNIMPORTANT MPAC +2.  THEY DIFFER ONLY IN\n# WHERE THEY GET THE ANGLES, AND IN METHOD OF CALLING.\n\n# \tCDUTRIG (AND CDUTRIG1, WHICH CAN BE CALLED IN BASIC) COMPUTE THE\n# SINES AND COSINES FROM THE CURRENT CONTENTS OF THE CDU REGISTERS.\n# THE CONTENTS OF CDUTEMP, ETC., ARE NOT TOUCHED SO THAT THEY MAY\n# CONTINUE TO FORM A CONSISTENT SET WITH THE LATEST PIPA READINGS.\n\n# \tCDUTRIG1 IS LIKE CDUTRIG EXCEPT THAT IT CAN BE CALLED IN BASIC.\n\n# \tCD*TR*GS FINDS CDU VALUES IN CDUSPOT RATHER THAN IN CDUTEMP.  THIS\n# ALLOWS USERS TO MAKE TRANSFORMATIONS USING ARBITRARY ANGLES, OR REAL\n# ANGLES IN AN ORDER OTHER THAN X Y Z.  A CALL TO THIS ROUTINE IS\n# NECESSARY IN PREPARATION FOR A CALL TO AX*SR*T IN EITHER OF ITS TWO\n# MODES (SMNB OR NBSM).  SINCE AX*SR*T EXPECTS TO FIND THE SINES AND\n# COSINES IN THE ORDER Y Z X THE ANGLES MUST HAVE BEEN PLACED IN CDUSPOT\n# IN THIS ORDER.  CD*TR*GS NEED NOT BE REPEATED WHEN AX*SR*T IS CALLED\n# MORE THAN ONCE, PROVIDED THE ANGLES HAVE NOT CHANGED.  NOTE THAT SINCE\n# IT CLOBBERS BUF2 (IN THE SINE AND COSINE ROUTINES) CD*TR*GS CANNOT BE\n# CALLED USING BANKCALL.  SORRY.\n\n# \tCD*TR*G IS LIKE CD*TR*GS EXCEPT THAT IT CAN BE CALLED IN\n# INTERPRETIVE.\n\nCDUTRIG\t\tEXIT\n\t\tTC\tCDUTRIGS\n\t\tTC\tINTPRET\n\t\tRVQ\n\nCD*TR*G\t\tEXIT\n\t\tTC\tCD*TR*GS\n\t\tTC\tINTPRET\n\t\tRVQ\n\nCDUTRIGS\tCA\tCDUX\n\t\tTS\tCDUSPOT +4\n\t\tCA\tCDUY\n\t\tTS\tCDUSPOT\n# Page 1366\n\t\tCA\tCDUZ\n\t\tTS\tCDUSPOT +2\n\nCD*TR*GS\tEXTEND\n\t\tQXCH\tTEM2\n\t\tCAF\tFOUR\nTR*GL**P\tMASK\tSIX\t\t# MAKE IT EVEN AND SMALLER\n\t\tTS\tTEM3\n\t\tINDEX\tTEM3\n\t\tCA\tCDUSPOT\n\t\tDXCH\tMPAC\t\t# STORING 2'S COMP ANGLE, LOADING MPAC\n\t\tDXCH\tVBUF +4\t\t# STORING MPAC FOR LATER RESTORATION\n\t\tTC\tUSPRCADR\n\t\tCADR\tCDULOGIC\n\t\tEXTEND\n\t\tDCA\tMPAC\n\t\tINDEX\tTEM3\n\t\tDXCH\tCDUSPOT\t\t# STORING 1'S COMPLEMENT ANGLE\n\t\tTC\tUSPRCADR\n\t\tCADR\tCOSINE\n\t\tDXCH\tMPAC\n\t\tINDEX\tTEM3\n\t\tDXCH\tCOSCDU\t\t# STORING COSINE\n\t\tEXTEND\n\t\tINDEX\tTEM3\n\t\tDCA\tCDUSPOT\t\t# LOADING 1'S COMPLEMENT ANGLE\n\t\tTC\tUSPRCADR\n\t\tCADR\tSINE +1\t\t# SINE +1 EXPECTS ARGUMENT IN A AND L\n\t\tDXCH\tVBUF +4\t\t# BRINGING UP PRIOR MPAC TO BE RESTORED\n\t\tDXCH\tMPAC\n\t\tINDEX\tTEM3\n\t\tDXCH\tSINCDU\n\t\tCCS\tTEM3\n\t\tTCF\tTR*GL**P\n\t\tTC\tTEM2\n# Page 1367\n# *******************************************************************************************************\n\n# \tQUICTRIG, INTENDED FOR GUIDANCE CYCLE USE WHERE TIME IS CRITICAL, IS A MUCH FASTER VERSION OF CD*TR*GS.\n# QUICTRIG COMPUTES AND STORES THE SINES AND COSINES OF THE 2'S COMPLEMENT ANGLES AT CDUSPOT, CDUSPOT +2,\n# AND CDUSPOT +4.  UNLIKE CD*TR*GS, QUICTRIG DOES NOT LEAVE THE 1'S COMPLEMENT VERSIONS OF THE ANGLES IN\n# CDUSPOT.  QUICTRIG'S EXECUTION TIME IS 4.1 MS; THIS IS 10 TIMES AS FAST AS CD*TR*GS.  QUICTRIG MAY BE\n# CALLED FROM INTERPRETIVE AS AN RTB OP-CODE, OR FROM BASIC VIA BANKCALL OR IBNKCALL.\n\nQUICTRIG\tINHINT\t\t\t# INHINT SINCE DAP USES THE SAME TEMPS\n\t\tEXTEND\n\t\tQXCH\tITEMP1\n\t\tCAF\tFOUR\n\t+4\tMASK\tSIX\n\t\tTS\tITEMP2\n\t\tINDEX\tITEMP2\n\t\tCA\tCDUSPOT\n\t\tTC\tSPSIN\n\t\tEXTEND\n\t\tMP\tBIT14\t\t# SCALE DOWN TO MATCH INTERPRETER OUTPUTS\n\t\tINDEX\tITEMP2\n\t\tDXCH\tSINCDU\n\t\tINDEX\tITEMP2\n\t\tCA\tCDUSPOT\n\t\tTC\tSPCOS\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tINDEX\tITEMP2\n\t\tDXCH\tCOSCDU\n\t\tCCS\tITEMP2\n\t\tTCF\tQUICTRIG +4\n\t\tCA\tITEMP1\n\t\tRELINT\n\t\tTC\tA\n# Page 1368\n#****************************************************************************\n\n\n# \tTHESE INTERFACE ROUTINES MAKE IT POSSIBLE TO CALL AX*SR*T, ETC., IN\n# INTERPRETIVE.  LATER, WHERE POSSIBLE, THEY WILL BE ELIMINATED.\n#\n# \tNBSM WILL BE THE FIRST TO GO.  IT SHOULD NOT BE USED.\n\nNBSM\t\tSTQ\n\t\t\tX2\n\t\tLXC,1\tVLOAD*\n\t\t\tS1\t\t# BASE ADDRESS OF THE CDU ANGLES IS IN S1\n\t\t\t0,1\n\t\tSTOVL\tCDUSPOT\n\t\t\t32D\t\t# VECTOR TO BE TRANSFORMED IS IN 32D\n\t\tCALL\n\t\t\tTRG*NBSM\n\t\tSTCALL\t32D\t\t# SINCE THERE'S NO STGOTO\n\t\t\tX2\n\n# \tTHESE INTERFACE ROUTINES ARE PERMANENT.  ALL RESTORE USER'S EBANK\n# SETTING.  ALL ARE STRICT INTERPRETIVE SUBROUTINES, CALLED USING \"CALL\",\n# RETURNING VIA QPRET.  ALL EXPECT AND RETURN THE VECTOR TO BE TRANSFOR-\n# MED INTERPRETER-STYLE IN MPAC; COMPONENTS AT MPAC, MPAC +3, AND MPAC +5.\n\n# \tTRG*SMNB AND TRG*NBSM BOTH EXPECT TO SEE THE 2'S COMPLEMENT ANGLES\n# AT CDUSPOT (ORDER Y Z X, AT CDUSPOT, CDUSPOT +2, AND CDUSPOT +4; ODD\n# LOCATIONS NEED NOT BE ZEROED).  TRG*NBSM DOES THE NB TO SM TRANSFOR-\n# MATION; TRG*SMNB, VICE VERSA.\n\n# \tCDU*NBSM DOES ITS TRANSFORMATION USING THE PRESENT CONTENTS OF\n# THE CDL COUNTERS.  OTHERWISE IT IS LIKE TRG*NBSM.\n#\n# \tCDU*SMNB IS THE COMPLEMENT OF CDU*NBSM.\n\nCDU*SMNB\tEXIT\n\t\tTC\tCDUTRIGS\n\t\tTCF\tC*MM*N1\n\nTRG*SMNB\tEXIT\n\t\tTC\tCD*TR*GS\nC*MM*N1\t\tTC\tMPACVBUF\t# AX*SR*T EXPECTS VECTOR IN VBUF\n\t\tCS\tTHREE\t\t# SIGNAL FOR SM TO NB TRANSFORMATION.\nC*MM*N2\t\tTC\tAX*SR*T\n\t\tTC\tINTPRET\n\t\tVLOAD\tRVQ\n\t\t\tVBUF\n\nCDU*NBSM\tEXIT\n\t\tTC\tCDUTRIGS\n\n# Page 1369\n\n\t\tTCF\tC*MM*N3\n\nTRG*NBSM\tEXIT\n\t\tTC\tCD*TR*GS\nC*MM*N3\t\tTC\tMPACVBUF\t# FOR AX*SR*T\n\t\tCA\tTHREE\t\t# SIGNAL FOR NB TO SM TRANSFORMATION\n\t\tTCF\tC*MM*N2\n\n# \t*NBSM* AND *SMNB* EXPECT TO SEE THE SINES AND COSINES (AT SINCDU\n# AND COSCDU) RATHER THAN THE ANGLES THEMSELVES.  OTHERWISE THEY ARE\n# LIKE TRG*NBSM AND TRG*SMNB.\n\n# \tNOTE THAT JUST AS CD*TR*GS NEED BE CALLED ONLY ONCE FOR EACH SERIES\n# OF TRANSFORMATIONS USING THE SAME ANGLES, SO TOO ONLY ONE OF TRG*NBSM\n# AND TRG*SMNB NEED BE CALLED FOR EACH SERIES.  FOR SUBSEQUENT TRANFOR-\n# MATIONS USE *NBSM* AND *SMNB*.\n\n*SMNB*\t\tEXIT\n\t\tTCF\tC*MM*N1\n\n*NBSM*\t\tEXIT\n\t\tTCF\tC*MM*N3\n\n# \tAX*SR*T COMBINES THE OLD SMNB AND NBSM.  FOR THE NB TO SM\n# TRANSFORMATION, ENTER WITH +3 IN A.  FOR SM TO NB, ENTER WITH -3.\n# THE VECTOR TO BE TRANSFORMED ARRIVES, AND IS RETURNED, IN VBUF.\n# AX*SR*T EXPECTS TO FIND THE SINES AND COSINES OF THE ANGLES OF ROTATION\n# AT SINCDU AND COSCDU, IN THE ORDER Y Z X.  A CALL TO CD*TR*GS, WITH\n# THE 2'S COMPLEMENT ANGLES (ORDER Y Z X) AT CDUSPOT, WILL TAKE CARE OF\n# THIS.  HERE IS A SAMPLE CALLING SEQUENCE:-\n\n#\t\t\tTC\tCDUTRIGS\n#\t\t\tCS\tTHREE\t\t(\"CA THREE\" FOR NBSM)\n#\t\t\tTC\tAX*SR*T\n\n# THE CALL TO CD*TR*GS NEED NOT BE REPEATED, WHEN AX*SR*T IS CALLED MORE\n# THAN ONCE, UNLESS THE ANGLES HAVE CHANGED.\n\n# \tAX*SR*T IS GUARANTEED SAFE ONLY FOR VECTORS OF MAGNITUDE LESS THAN\n# UNITY.  A LOOK AT THE CASE IN WHICH A VECTOR OF GREATER MAGNITUDE\n# HAPPENS TO LIE ALONG AN AXIS OF THE SYSTEM TO WHICH IT IS TO BE TRANS-\n# FORMED CONVINCES ONE THAT THIS IS A RESTRICTION WHICH MUST BE ACCEPTED.\n\nAX*SR*T\t\tTS\tDEXDEX\t\t# WHERE IT BECOMES THE INDEX OF INDEXES\n\t\tEXTEND\n\t\tQXCH\tRTNSAVER\n\nR*TL**P\t\tCCS\tDEXDEX\t\t#       \t+3 --> 0\t-3 --> 2\n\t\tCS\tDEXDEX\t\t# THUS:\t\t+2 --> 1\t-2 --> 1\n\t\tAD\tTHREE\t\t#\t\t+1 --> 2\t-1 --> 0\n# Page 1370\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\tINDEXI\n\t\tDXCH\tDEXI\n\n\t\tCA\tONE\n\t\tTS\tBUF\n\t\tEXTEND\n\t\tINDEX\tDEX1\n\t\tDCS\tVBUF\n\t\tTCF\tLOOP1\t\t# REALLY BE A SUBTRACT, AND VICE VERSA\n\nLOOP2\t\tDXCH\tBUF\t\t# LOADING VECTOR COMPONENT, STORING INDEX\n\nLOOP1\t\tDXCH\tMPAC\n\t\tCA\tSINESLOC\n\t\tAD\tDEX1\n\t\tTS\tADDRWD\n\n\t\tTC\tDMPSUB\t\t# MULTIPLY BY SIN(CDUANGLE)\n\t\tCCS\tDEXDEX\n\t\tDXCH\tMPAC\t\t# NBSM CASE\n\t\tTCF\t+3\n\t\tEXTEND\t\t\t# SMNB CASE\n\t\tDCS\tMPAC\n\t\tDXCH\tTERM1TMP\n\n\t\tCA\tSIX\t\t# SINCDU AND COSCDU (EACH 6 WORDS) MUST\n\t\tADS\tADDRWD\t\t#\tBE CONSECUTIVE AND IN THAT ORDER\n\n\t\tEXTEND\n\t\tINDEX\tBUF\n\t\tINDEX\tDEX1\n\t\tDCA\tVBUF\n\t\tDXCH\tMPAC\n\t\tTC\tDMPSUB\t\t# MULTIPLY BY COS(CDUANGLE)\n\t\tDXCH\tMPAC\n\t\tDAS\tTERM1TMP\n\t\tDXCH\tTERM1TMP\n\t\tDDOUBL\n\t\tINDEX\tBUF\n\t\tINDEX\tDEX1\n\t\tDXCH\tVBUF\n\t\tDXCH\tBUF\t\t# LOADING INDEX, STORING VECTOR COMPONENT\n\n\t\tCCS\tA\t\t# 'CAUSE THAT'S WHERE THE INDEX NOW IS\n\t\tTCF\tLOOP2\n\n\t\tEXTEND\n\t\tDIM\tDEXDEX\t\t# DECREMENT MAGNITUDE PRESERVING SIGN\n\n# Page 1371\nTSTPOINT\tCCS\tDEXDEX\t\t# ONLY THE BRANCHING FUNCTION IS USED\n\t\tTCF\tR*TL**P\n\t\tTC\tRTNSAVER\n\t\tTCF\tR*TL**P\n\t\tTC\tRTNSAVER\n\n\nSINESLOC\tADRES\tSINCDU\t\t# FOR USE IN SETTING ADDRWD\n\n\nINDEXI\t\tDEC\t4\t\t# **********   DON'T   ***********\n\t\tDEC\t2\t\t# **********   TOUCH   ***********\n\t\tDEC\t0\t\t# **********   THESE   ***********\n\t\tDEC\t4\t\t# ********** CONSTANTS ***********\n\n# ******************************************************************************\n# Page 1372\n# THIS SUBROUTINE COMPUTES INCREMENTAL CHANGES IN CDU(GIMBAL) ANGLES FROM INCREMENTAL CHANGES ABOUT SM AXES.  IT\n# REQUIRES SM INCREMENTS AS A DP VECTOR SCALED AT ONE REVOLUTION(DTHETASM,+2,+4).  SIN,COS(CDUY,Z,X) ARE IN\n# SINCDU,+2,+4 AND COSCDU,+2,+4 RESPECTIVELY,SCALED TO ONE HALF.  CDU INCREENTS ARE PLACED IN DCDU,+2,+4 SCALED TO\n# ONE REVOLUTION.\n\n#\t*  COS(IGA)SEC(MGA)\t\t0\t\t-SIN(IGA)SEC(MGA) *\n#\t*\t\t\t\t\t\t\t\t  *\n#\t* -COS(IGA)TAN(MGA)\t\t1\t\t SIN(IGA)TAN(MGA) *\n#\t*\t\t\t\t\t\t\t\t  *\n#\t*      SIN(IGA)\t\t\t0\t\t     COS(IGA)     *\n\n\t\tBANK\t14\n\t\tSETLOC\tPOWFLIT1\n\t\tBANK\n\nSMCDURES\tDLOAD\tDMP\n\t\t\tDTHETASM\n\t\t\tCOSCDUY\n\n\t\tPDDL\tDMP\n\t\t\tDTHETASM +4\n\t\t\tSINCDUY\n\n\t\tBDSU\n\t\tDDV\n\t\t\tCOSCDUZ\n\t\tSTORE\tDCDU\n\n\t\tDMP\tSL1\t\t# SCALE\n\t\t\tSINCDUZ\n\t\tBDSU\n\n\t\t\tDTHETASM +2\n\t\tSTODL\tDCDU +2\n\t\t\tDTHETASM\n\n\t\tDMP\tPDDL\n\t\t\tSINCDUY\n\t\t\tDTHETASM +4\n\n\t\tDMP\tDAD\n\t\t\tCOSCDUY\n\t\tSL1\n\t\tSTORE\tDCDU +4\n\t\tRVQ\n"
  },
  {
    "path": "Comanche055/R30.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     R30.agc\n# Purpose:      Part of the source code for Colossus 2A, AKA Comanche 055.\n#               It is part of the source code for the Command Module's (CM)\n#               Apollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:    yaYUL\n# Contact:      Hartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:      www.ibiblio.org/apollo.\n# Pages:\t514-524\n# Mod history:  2009-05-09 HG    Started adapting from the Colossus249/ file\n#               of the same name, using Comanche055 page\n#               images 0514.jpg - 0524.jpg.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 514\n# SUBROUTINE NAME:  V82CALL\n# MOD NO: 0\t\t\t\t\tDATE: 16 FEB 67\n# MOD BY: R. R. BAIRNSFATHER\t\t\tLOG SECTION:  R30\n# MOD NO: 1\tMOD BY:  R. R. BAIRNSFATHER\tDATE: 11 APR 67\t\tSR30.1 CHANGED TO ALLOW MONITOR OPERN\n# MOD NO: 2\tMOD BY:  ALONSO\t\t\tDATE: 11 DEC 67\t\tVB82 PROGRAM REWRITTEN\n# MOD NO: 3\tMOD BY:  ALONSO\t\t\tDATE: 26 MAR 68\t\tPROG MOD TO HANDLE DIF EARTH/MOON SCALE\n#\n# NEW FUNCTIONAL DESCRIPTION:\tCALLED BY VERB 82 ENTER.  PRIORITY 10.\n# USED THROUGHOUT.\t\tCALCULATE AND DISPLAY ORBITAL PARAMETERS\n#\n# 1.\tIF AVERAGE G IS OFF:\n#\t\tFLASH DISPLAY V04N06.  R2 INDICATES WHICH SHIP'S STATE VECTOR IS\n#\t\t\tTO BE UPDATED.  INITIAL CHOICE IS THIS SHIP (R2=1).  ASTRONAUT\n#\t\t\tCAN CHANGE TO OTHER SHIP BY V22EXE. WHERE X IS NOT EQ 1.\n#\t\tSELECTED STATE VECTOR UPDATED BY THISPREC (OTHPREC).\n#\t\tCALLS SR30.1 (WHICH CALLS TFFCONMU + TFFRP/RA) TO CALCULATE\n#\t\t\tRPER (PERIGEE RADIUS), RAPO (APOGEE RADIUS), HPER (PERIGEE\n#\t\t\tHEIGHT ABOVE LAUNCH PAD OR LAUNAR LANDING SITE), HARD (APOGEE\n#\t\t\tHEIGHT AS ABOVE), TPER (TIME TO PERIGEE), TFF (TIME TO\n#\t\t\tINTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE).\n#\t\tFLASH MONITOR V16N44 (HAPO, HPER, TFF).  TFF IS -59MS59S IF IT WAS\n#\t\t\tNOT COMPUTABLE, OTHERWISE IT INCREMENTS ONCE PER SECOND.\n#\t\t\tASTRONAUT HAS OPTION TO MONITOR TPER BY KEYING IN N 32 E.\n#\t\t\tDISPLAY IS IN HMS, IS NEGATIVE (AS WAS TFF), AND INCREMENTS\n#\t\t\tONCE PER SECOND ONLY IF TFF DISPLAY WAS -59M59S.\n# 2.\tIF AVERAGE G IS ON:\n#\t\tCALLS SR30.1 APPROX EVERY TWO SECS.  STATE VECTOR IS ALWAYS\n#\t\t\tFOR THIS VEHICLE.  V82 DOES NOT DISTURB STATE VECTOR.  RESULTS\n#\t\t\tOF SR30.1 ARE RAPO, RPER, HAPO, HPER, TPER, TFF.\n#\t\tFLASH MONITOR V16N44 (HAPO, HPER, TFF).\n#\t\t\tIF MODE IS P11, THEN CALL DELRSPL SO ASTRONAUT CAN MONITOR\n#\t\t\tRESULTS BY N50E.  SPLASH COMPUTATION DONE ONCE PER TWO SECS.\n\n# ADDENDUM:  HAPO AND HPER SHOULD BE CHANGED TO READ HAPOX AND HPERX IN THE\n#\t     ABOVE REMARKS.\n#\n# CALLING SEQUENCE: VERB 82 ENTER.\n#\n# SUBROUTINES CALLED:\tSR30.1, GOXDSPF\n#\t\t\tMAYBE -- THISPREC, OTHPREC, LOADTIME, DELRSPL\n#\n# NORMAL EXIT MODES:  TC ENDEXT\n#\n# ALARMS:  NONE\n#\n# OUTPUT:\tHAPOX\t(-29) M\n#\t\tHPERX\t(-29) M\n#\t\tRAPO\t(-29) M EARTH\n#\t\t\t(-27) M MOON\n# Page 515\n#\t\tRPER\t(-29) M EARTH\n#\t\t\t(-27) M MOON\n#\t\tTFF\t(-28) CS\tCONTAINS NEGATIVE QUANTITY\n#\t\t-TPER\t(-28) CS\tCONTAINS NEGATIVE QUANTITY\n#\t\tRSP-RREC(-29) M\t\tIF DELRSPL CALLED\n#\n# ERASABLE INITIALIZATION REQUIRED: STATE VECTOR.\n#\n# DEBRIS:\tQPRET, RONE, VONE,TFF/RTMU, HPERMIN, RPADTEM, V82EMFLG.\n#\t\tMAYBE:  TSTART82, V82FLAGS, TDEC1.\n\n\t\tEBANK=\tHAPOX\n\t\tBANK\t31\n\t\tSETLOC\tR30LOC\n\t\tBANK\n\t\tCOUNT*\t$$/R30\n\nV82CALL\t\tTC\tINTPRET\n\t\tBON\tGOTO\n\t\t\tAVEGFLAG\n\t\t\tV82GON\t\t# IF AVERAGE G ON\n\t\t\tV82GOFF\t\t# IF AVERAGE G OFF\n\nV82GOFF\t\tEXIT\t\t\t# ALLOW ASTRONAUT TO SELECT VEHICLE\n\t\tCAF\tTWO\t\t# DESIRED FOR ORBITAL PARAMETERS\n\t\tTS\tOPTIONX\n\t\tCAF\tONE\n\t\tTS\tOPTIONX +1\n\t\tCAF\tOPTIONVN\t# V 04 N 06\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tENDEXT\t\t# TERMINATE\n\t\tTC\t+2\t\t# PROCEED\n\t\tTC\t-5\t\t# DATA IN.  OPTIONX +1 = 1 FOR THIS VEHIC.\n\t\t\t\t\t#\t\t UNEQ 1 FOR OTHER VEHICLE.\n\t\tCAF\tBIT4\t\t# 80 MS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTFF\n\t\t2CADR\tTICKTEST\n\n\t\tRELINT\nV82GOFLP\tCAF\tTFFBANK\t\t# MAJOR RECYCLE LOOP ENTRY\n\t\tTS\tEBANK\n\t\tCAF\tZERO\n\t\tTS\tV82FLAGS\t# ZERO FLAGS FOR TICKTEST, INHIBITS\n\t\t\t\t\t# DECREMENTING OF TFF AND -TPER.\n\t\tCAF\tPRIO7\n\t\tTC\tFINDVAC\t\t# V82GOFF1 WILL EXECUTE STATE VECTOR\n# Page 516\n\t\tEBANK=\tTFF\t\t# UPDATE AND ORBIT CALCULATIONS FOR\n\t\t2CADR\tV82GOFF1\t# SELECTED VEHICLE ABOUT PROPER BODY.\n\n\t\tRELINT\nV82STALL\tCAF\tTHREE\t\t# STALL IN THIS LOOP AND WITHOLD V 16 N 44\n\t\tMASK\tV82FLAGS\t# UNTIL STATE VECTOR UPDATE SETS ONE OF\n\t\tCCS\tA\t\t# OUR FLAG BITS.\n\t\tTC\tFLAGGON\t\t# EXIT FROM STALL LOOP.\n\t\tCAF\t1SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tTC\tV82STALL\n\nFLAGGON\t\tCAF\tV16N44\t\t# MONITOR HAPO,HPER,TFF.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tB5OFF\t\t# TERM  THIS TELLS TICKTEST TO KILL ITSELF\n\t\tTC\tB5OFF\t\t# PROCEED  DITTO\n\t\tTC\tV82GOFLP\t# RECYCLE  RECOMPUTE STATE VECT + DISPLAY\n\nOPTIONVN\tVN\t0412\nV16N44\t\tVN\t1644\nTFFBANK\t\tECADR\tTFF\n\nV82GOFF1\tTC\tINTPRET\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTORE\tTDEC1\t\t# TIME FOR STATE VECTOR UPDATE.\n\t\tSTORE\tTSTART82\t# TIME FOR INTERNAL USE.\n\t\tEXIT\n\t\tCS\tOPTIONX +1\t# 1 FOR THIS VEHICLE, NOT 1 FOR OTHER\n\t\tAD\tONE\n\t\tEXTEND\n\t\tBZF\tTHISSHIP\nOTHSHIP\t\tTC\tINTPRET\n\t\tCALL\t\t\t# CALL STATE VECTOR UPDATE FOR OTHER SHIP.\n\t\t\tOTHPREC\nBOTHSHIP\tVLOAD\t\t\t# MOVE RESULTS INTO TFFCONIC STORAGE AREAS\n\t\t\tRATT\t\t# TO BE CALLED BY SR30.1.\n\t\tSTOVL\tRONE\t\t# RATT AT (-29)M FOR EARTH OR MOON\n\t\t\tVATT\n\t\tSTORE\tVONE\t\t# VATT AT (-7)M/CS FOR EARTH OR MOON\n\t\tDLOAD*\n\t\t\t1/RTMUE,2\t# X2 IS 0 FOR EARTH CENTERED STATE VEC\n\t\tSTORE\tTFF/RTMU\t# X2 IS 2 FOR MOON\n\t\tDLOAD*\t\t\t# AS LEFT BY THISPREC OR OTHPREC.\n\t\t\tMINPERE,2\n\t\tSTORE\tHPERMIN\t\t# TFFRTMU, HPERMIN, AND RPADTEM ARE ALL\n\t\tSLOAD\tBHIZ\t\t# EARTH/MOON PARAMETERS AS SET HERE.\n# Page 517\n\t\t\tX2\n\t\t\tEARTHPAD\n\t\tGOTO\n\t\t\tMOONPAD\nTHISSHIP\tTC\tINTPRET\n\t\tCALL\t\t\t# CALL STATE VECTOR UPDATE FOR THIS SHIP.\n\t\t\tTHISPREC\n\t\tGOTO\n\t\t\tBOTHSHIP\n\n# THE FOLLOWING CONSTANTS ARE PAIRWISE INDEXED.  DO NOT SEPARATE PAIRS.\n\n1/RTMUM\t\t2DEC*\t.45162595 E-4 B14*\n1/RTMUE\t\t2DEC*\t.50087529 E-5 B17*\n\nMINPERM\t\t2DEC\t10668 B-27\t# 35 KFT MIN PERIGEE HEIGHT FOR MOON(-27)M\nMINPERE\t\t2DEC\t91440 B-29\t# 300 KFT (-29)M FOR EARTH\n\nEARTHPAD\tDLOAD\tCLRGO\t\t# PAD 37-B RADIUS.  SCALED AT (-29)M.\n\t\t\tRPAD\n\t\t\tV82EMFLG\t# INDICATE EARTH SCALING FOR SR30.1\n\t\t\tBOTHPAD\n\nMOONPAD\t\tVLOAD\tABVAL\t\t# COMPUTE MOON PAD RADIUS FROM RLS VECTOR.\n\t\t\tRLS\t\t# SCALED AT (-27)M.\n\t\tSET\n\t\t\tV82EMFLG\t# INDICATE MOON SCALING FOR SR30.1\nBOTHPAD\t\tSTCALL\tRPADTEM\n\t\t\tSR30.1\t\t# CALCULATE ORBITAL PARAMETERS\n\t\tEXIT\n\t\tCA\tMODREG\t\t# ARE WE IN P00\n\t\tEXTEND\n\t\tBZF\tCANDEL\t\t# YES, DO DELRSPL\nSPLRET1\t\tTC\tINTPRET\n\t\tRTB\tDSU\n\t\t\tLOADTIME\n\t\t\tTSTART82\t# PRESENT TIME - TIME V82GOFF1 BEGAN\n\t\tSTORE\tTSTART82\t#                SAVE IT\n\t\tDLOAD\tBZE\t\t# SR30.1 SETS -TPER=0 IF HPER L/\n\t\t\t-TPER\t\t# HPERMIN (300 OR 35) KFT.\n\t\t\tTICKTFF\t\t# (-TPER = 0)\nTICKTPER\tDLOAD\tDAD\t\t# (-TPER NON ZERO)  TFF WAS NOT COMPUTED,\n\t\t\t-TPER\t\t# BUT WAS SET TO 59M59S.DON'T DICK TFF, DO\n\t\t\tTSTART82\t# TICK -TPER. DISPLAY BOTH.\n\t\tSTORE\t-TPER           # -TPER CORRECTED FOR TIME SINCE V82GOFF1\n\t\tEXIT                    # BEGAN.\n\n# Page 518\n\t\tCAF\tBIT1\n\t\tTS\tV82FLAGS\t# INFORMS TICKTEST TO INCREMENT ONLY -TPER\n\t\tTC\tENDOFJOB\n\nTICKTFF\t\tDLOAD\tDAD\t\t# (-TPER=0)  TFF WAS COMPUTED.TICK TFF.\n\t\t\tTFF\t\t# DO NOT TICK -TPER.DISPLAY TFF, BUT NOT\n\t\t\tTSTART82\t# -TPER.\n\t\tSTORE\tTFF\t\t# TFF CORRECTED FOR TIME SINCE V82GOFF1\n\t\tEXIT\t\t\t# BEGAN.\n\t\tCAF\tBIT2\n\t\tTS\tV82FLAGS\t# INFORMS TICKTEST TO INCREMENT ONLY TFF.\n\t\tTC\tENDOFJOB\n\nTICKTEST\tCAF\tBIT5\t\t# THIS WAITLIST PROGRAM PERPETUATES ITSELF\n\t\tMASK\tEXTVBACT\t# ONCE A SEC UNTIL BIT 5 OF EXTVBACT =0.\n\t\tCCS\tA\n\t\tTC\tDOTICK\n\t\tCAF\tPRIO25\n\t\tTC\tNOVAC\t\t# TERMINATE V 82.CAN'T CALL ENDEXT IN RUPT.\n\t\tEBANK=\tEXTVBACT\n\t\t2CADR\tENDEXT\n\n\t\tTC\tTASKOVER\nDOTICK\t\tCAF\t1SEC\t\t# RE-REQUEST TICKTEST.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTFF\n\t\t2CADR\tTICKTEST\n\n\t\tCAF\tTHREE\n\t\tMASK\tV82FLAGS\n\t\tINDEX\tA\n\t\tTC\t+1\n\t\tTC\tTASKOVER\t# IF NO FLAGBITS SET DONT CHANGE TFF OR\n\t\t\t\t\t# -TPER, BUT CONTINUE LOOP.\n\t\tTC\tTPERTICK\t# ONLY BIT 1 SET. INCR -TPER BY 1 SEC.\nTFFTICK\t\tCAF\t1SEC\t\t# ONLY BIT 2 SET. INCR TFF BY 1 SEC.\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tDAS\tTFF\n\t\tTC\tTASKOVER\nTPERTICK\tCAF\t1SEC\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tDAS\t-TPER\n\t\tTC\tTASKOVER\n# Page 519\nV82GON\t\tEXIT\t\t\t# AVERAGE G ON. USE CURRENT STATE VECTOR\n\t\t\t\t\t# FOR ORBITAL PARAMETER CALCULATIONS.\n\t\tCAF\tPRIO7\t\t# LESS THAN LAMBERT\n\t\tTC\tFINDVAC\t\t# V82GON1 WILL PERFORM ORBIT CALCULATIONS\n\t\tEBANK=\tTFF\t\t# ABOUT PROPER BODY APPROX ONCE PER SEC.\n\t\t2CADR\tV82GON1\n\n\t\tRELINT\n\t\tCCS\tNEWJOB\t\t# WITHOLD V16 N44 UNTIL FIRST ORBIT CALC\n\t\tTC\tCHANG1\t\t# IS DONE. NOTE: V82GON1 (PRIO7, FINDVAC\n\t\t\t\t\t# JOB) IS COMPLETED BEFORE V82GON (PRIO7,\n\t\t\t\t\t# NOVAC JOB).\nV82REDSP\tCAF\tV16N44\t\t# MONITOR HAPO, HPER, TFF\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tB5OFF\t\t# TERM THIS TELLS V82GON1 TO KILL ITSELF.\n\t\tTC\tB5OFF\t\t# PROC DITTO.\n\t\tTC\tV82REDSP\t# RECYCLE\n\nV82GON1\t\tTC\tINTPRET\t\t# THIS EXEC PROGRAM PERPETUATES ITSELF\n\t\t\t\t\t# ONCE A SEC UNTIL BIT 5 OF EXTVBACT =0.\n\t\tVLOAD\tGOTO\t\t# HOLDS OFF CCS NEWJOB BETWEEN RN AND\n\t\t\tRN\t\t# VN FETCH SO RN , VN ARE FROM SAME\n\t\t\tNEXTLINE\t# STATE VECTOR UPDATE.\nNEXTLINE\tSTOVL\tRONE\t\t# RN AT (-29)M FOR EARTH OR MOON\n\t\t\tVN\n\t\tSTORE\tVONE\t\t# VN AT (-7)M/CS FOR EARTH OR MOON\n\t\tBON\tGOTO\n\t\t\tAMOONFLG\t# FLAG INDICATES BODY ABOUT WHICH ORBITAL\n\t\t\tMOONGON\t\t# CALCULATIONS ARE TO BE PERFORMED.\n\t\t\tEARTHGON\t# IF SET - MOON , IF RESET - EARTH.\n\nMOONGON\t\tSET\tDLOAD\n\t\t\tV82EMFLG\t# INDICATE MOON SCALING FOR SR30.1\n\t\t\t1/RTMUM\t\t# LUNAR PARAMETERS LOADED HERE FOR SR30.1\n\t\tSTODL\tTFF/RTMU\n\t\t\tMINPERM\n\t\tSTOVL\tHPERMIN\n\t\t\tRLS\t\t# SCALED AT (-27)M\n\t\tABVAL\tGOTO\n\t\t\tV82GON2\nEARTHGON\tCLEAR\tDLOAD\n\t\t\tV82EMFLG\t# INDICATE EARTH SCALING FOR SR30.1\n\t\t\t1/RTMUE\t\t# EARTH PARAMETERS LOADED HERE FOR SR30.1\n\t\tSTODL\tTFF/RTMU\n\t\t\tMINPERE\n\t\tSTODL\tHPERMIN\n\t\t\tRPAD\nV82GON2\t\tSTCALL\tRPADTEM\t\t# COMMON CODE FOR EARTH & MOON.\n\t\t\tSR30.1\n# Page 520\n\t\tEXIT\n\t\tTC\tCHECKMM\n\t\tDEC\t11\n\t\tTC\tV82GON3\t\t# NOT IN MODE 11.\nCANDEL\t\tTC\tINTPRET\t\t# IN MODE 11 OR 00\n\t\tCALL\n\t\t\tINTSTALL\t# DELRSPL DOES INTWAKE\n\t\tDLOAD\tCALL\n\t\t\tTFF\n\t\t\tDELRSPL\t\t# RETURN IS TO NEXT LINE ( SPLRET ).\nSPLRET\t\tEXIT\n\n\t\tCA\tMODREG\n\t\tEXTEND\n\t\tBZF\tSPLRET1\nV82GON3\t\tCAF\tBIT5\n\t\tMASK\tEXTVBACT\t# SEE IF ASTRONAUT HAS SIGNALLED TERMINATE\n\t\tEXTEND\n\t\tBZF\tENDEXT\t\t# YES, TERMINATE VB 82 LOOP\n\t\tCAF\t1SEC\n\t\tTC\tBANKCALL\t# WAIT ONE SECOND BEFORE REPEATING\n\t\tCADR\tDELAYJOB\t# ORBITAL PARAMETER COMPUTATION.\n\t\tTC\tV82GON1\n\n# Page 521\n# SUBROUTINE NAME: SR30.1\n# MOD NO: 0\t\t\t\t\t\t\t\tDATE: \t\t16 FEB 67\n# MOD BY: R. R. BAIRNSFATHER\t\t\t\t\t\tLOG SECTION:\tR32\n# MOD NO: 1\tMOD BY: R. R. BAIRNSFATHER\tDATE: 11 APR 67\t\tSR30.1 CHANGED TO ALLOW MONITOR OPERN\n# MOD NO: 2\tMOD BY: R. R. BAIRNSFATHER\tDATE: 14 APR 67\t\tADD OVFL CK FOR RAPO\n# MOD NO: 3\tMOD BY ALONSO\t\t\tDATE: 11 DEC 67\t\tSUBROUTINE REWRITTEN\n# MOD NO: 4\tMOD BY ALONSO\t\t\tDATE: 26 MAR 68\t\tPROG MOD TO HANDLE DIF EARTH/MOON SCALE\n# MOD NO: 5\tMOD BY: RR BAIRNSFATHER\t\tDATE: 6 AUG 68\t\tOVFL CK FOR HAPO & HPER. VOIDS MOD #2.\n#\n# NEW FUNCTIONAL DESCRIPTION:  ORBITAL PARAMETERS DISPLAY FOR NOUNS 32 AND 44.\n# SR30.1 CALLS TFFCONMU AND TFFRP/RA TO CALCULATE RPER (PERIGEE RADIUS),\n# RAPO (APOGEE RADIUS), HPER (PERIGEE HEIGHT ABOVE LAUNCH PAD OR LUNAR\n# LANDING SITE), HAPO (APOGEE HEIGHT AS ABOVE), TPER (TIME TO PERIGEE),\n# TFF (TIME TO INTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE).\n# IF HPER IS GREATER THAN OR EQUAL TO HPERMIN, CALCULATES TPER AND STORES\n# NEGATIVE   IN -TPER.  OTHERWISE STORES +0 IN -TPER.  WHENEVER TPER IS\n# CALCULATED, TFF IS NOT COMPUTABLE AND DEFAULTS TO -59MIN 59SEC. IF HAPO\n# WOULD EXCEED 9999.9 NM, IT IS LIMITED TO THAT VALUE FOR DISPLAY.\n#\n# ADDENDUM:\tHAPO AND HPER SHOULD BE CHANGED TO READ HAPOX AND HPERX IN THE\n#\t\tABOVE REMARKS.\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tSR30.1\n#\n# SUBROUTINES CALLED:\tTFFCONMU, TFFRP/RA, CALCTPER, CALCTFF\n# NORMAL EXIT MODE:\tCALLING LINE +1 (STILL IN INTERPRETIVE MODE)\n# ALARMS:\tNONE\n# OUTPUT:       RAPO\t(-29) M EARTH\tAPOGEE RADIUS\tEARTH CENTERED COORD.\n#\t\t\t(-27) M MOON\t\t\tMOON CENTERED COORD.\n#\t\tRPER\t(-29) M EARTH\tPERIGEE RADIUS\tEARTH CENTERED COORD.\n#\t\t\t(-27) M MOON\t\t\tMOON CENTERED COORD.\n#\t\tHAPOX\t(-29) M\t\tAPOGEE ALTITUDE ABOVE PAD OR LAND. SITE MAX VALUE LIMITED TO 9999.9 NM.\n#\t\tHPERX\t(-29) M\t\tPERIGEE ALT. ABOVE PAD OR LAND. SITE    MAX VALUE LIMITED TO 9999.9 NM.\n#\t\tTFF\t(-28) CS\tTIME TO 300KFT OR 35KFT ALTITUDE\n#\t\t-TPER\t(-28) CS\tTIME TO PERIGEE\n# ERASABLE INITIALIZATION REQUIRED -\n#\tTFF/RTMU\t(+17) EARTH\tRECIPROCAL OF PROPER GRAV CONSTANT FOR\n#\t\t\t(+14) MOON\tEARTH OR MOON = 1/SQRT(MU).\n#\tRONE\t\t(-29) M\t\tSTATE VECTOR\n#\tVONE\t\t(-7)  M/CS\tSTATE VECTOR\n#\tRPADTEM\t\t(-29) M EARTH\tRADIUS OF LAUNCH PAD OR LUNAR LANDING\n#\t\t\t(-27) M MOON\tSITE.\n#\tHPERMIN\t\t(-29) M EARTH\t(300 OR 35) KFT MINIMUM PERIGEE ALTITUDE\n#\t\t\t(-27) M MOON\tABOVE LAUNCH PAD OR LUNAR LANDING SITE.\n#\tV82EMFLG\t(INT SW BIT)\tRESET FOR EARTH, SET FOR MOON.\n#\n# DEBRIS:\tQPRET, PDL, S2\n\n# Page 522\n\t\tCOUNT*\t$$/SR30S\n\nSR30.1\t\tSETPD\tSTQ\t\t# INITIALIZE PUSHDOWN LIST.\n\t\t\t0\n\t\t\tS2\n\t\t\t\t\t# SR30.1 INPUT:\tRONE AT (-29)M EARTH/MOON\n\t\t\t\t\t#\t\tVONE AT (-7)M/CS\n\t\t\t\t\t# TFFCONMU,TFFRP/RA,CALCTPER,AND CALCTFF\n\t\t\t\t\t# CALLS REQUIRE:\n\t\t\t\t\t# EARTH CENTERED (NO RESCALING REQUIRED)\n\t\t\t\t\t#\tRONE SCALED TO B-29 M\n\t\t\t\t\t#\tVONE SCALED TO B-7 M/CS\n\t\t\t\t\t# MOON CENTERED (RESCALING REQUIRED)\n\t\t\t\t\t#\tRONE SCALED TO B-27 M\n\t\t\t\t\t#\tVONE SCALED TO B-5 M/CS\n\t\tBOFF\tVLOAD\n\t\t\tV82EMFLG\t# OFF FOR EARTH , ON FOR MOON.\n\t\t\tTFFCALLS\n\t\t\tRONE\n\t\tVSL2\n\t\tSTOVL\tRONE\n\t\t\tVONE\n\t\tVSL2\n\t\tSTORE\tVONE\nTFFCALLS\tCALL\n\t\t\tTFFCONMU\n\t\tCALL\t\t\t# TFFRP/RA COMPUTES RAPO,RPER.\n\t\t\tTFFRP/RA\n\t\t\t\t\t# RETURNS WITH RAPO IN D(MPAC).\n\t\tDSU\n\t\t\tRPADTEM\n\t\tBOFF\tSR2R\t\t# NEED HAPO AT (-29)M FOR DISPLAY.\n\t\t\t\t\t# IF MOON CENTERED, RESCALE FROM (-27)M.\n\t\t\t\t\t# IF EARTH CENTERED ALREADY AT (-29)M.\n\t\t\tV82EMFLG        # OFF FOR EARTH , ON FOR MOON.\n\t\t\t+1\n\t\tCALL\t\t\t# IF HAPO > MAXNM, SET HAPO =9999.9 NM.\n\t\t\tMAXCHK\t\t# OTHERWISE STORE (RAPO-RPADTEM) IN HAPO.\nSTORHAPO\tSTODL\tHAPOX\n\t\t\tRPER\n\t\tDSU\n\t\t\tRPADTEM\t\t# GIVES HPER AT (-29)M EARTH, (-27)M MOON.\n\t\tSTORE\tMPAC +4\t\t# SAVE THIS FOR COMPARISON TO HPERMIN.\n\t\tBOFF\tSR2R\t\t# NEED HPER AT (-29)M FOR DISPLAY.\n\t\t\t\t\t# IF MOON CENTERED, RESCALE FROM (-27)M.\n\t\t\t\t\t# IF EARTH CENTERED ALREADY AT (-29)M.\n\t\t\tV82EMFLG\t# OFF FOR EARTH, ON FOR MOON.\n\t\t\t+1\n\t\tCALL\t\t\t# IF HPER > MAXNM, SET HPER = 9999.9 NM.\n\t\t\tMAXCHK\n# Page 523\nSTORHPER\tSTODL\tHPERX\t\t# STORE (RPER - RPADTEM) INTO HPERX.\n\t\t\tMPAC +4\n\t\tDSU\tBPL\t\t# HPERMIN AT (-29)M FOR EARTH, (-27)M MOON\n\t\t\tHPERMIN\t\t# IF HPER L/ HPERMIN (300 OR 35) KFT,\n\t\t\tDOTPER\t\t# THEN ZERO INTO -TPER.\n\t\tDLOAD\tGOTO\t\t# OTHERWISE CALCULATE TPER.\n\t\t\tHI6ZEROS\n\t\t\tSKIPTPER\nDOTPER\t\tDLOAD\tCALL\n\t\t\tRPER\n\t\t\tCALCTPER\n\t\tDCOMP\t\t\t# TPER IS PUT NEG INTO -TPER.\nSKIPTPER\tSTODL\t-TPER\n\t\t\tHPERMIN\t\t# HPERMIN AT (-29)M FOR EARTH, (-27)M MOON\n\t\tDAD\tCALL\n\t\t\tRPADTEM\t\t# RPADTEM AT (-29)M FOR EARTH, (-27)M MOON\n\t\t\tCALCTFF\t\t# GIVES 59M59S FOR TFF IF RPER G/\n\t\tDCOMP\t\t\t# HPERMIN + RPADTEM.  (TPER WAS NON ZERO)\n\t\tSTCALL\tTFF\t\t# OTHERWISE COMPUTES TFF.\t(GOTO)\n\t\t\tS2\n\nMAXCHK\t\tDSU\tBPL\t\t# IF C(MPAC) > 9999.9 NM. MPAC = 9999.9 NM.\n\t\t\tMAXNM\n\t\t\t+3\t\t# OTHERWISE C(MPAC) = B(MPAC).\n\t\tDAD\tRVQ\n\t\t\tMAXNM\n +3\t\tDLOAD\tRVQ\t\t# (USED BY P30 - P37 ALSO)\n \t\t\tMAXNM\n\nMAXNM\t\t2OCT\t0106505603\n\n# Page 524\n\n# There is no source code on this page --- HG 2009\n"
  },
  {
    "path": "Comanche055/R31.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tR31.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 505-510\n# Contact:      Onno Hommes <ohommes@cmu.edu>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-11 OH\tBatch 2 Assignment Comanche Transcription\n#\t\t2009-05-20 RSB\tCorrected INSTALL -> INTSTALL\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n\n# Page 505\n\t\tBANK\t34\n\t\tSETLOC\tR31\n\t\tBANK\n\n\t\tCOUNT*\t$$/R31\n\nR31CALL\t\tCAF\tPRIO3\n\t\tTC\tFINDVAC\n\t\tEBANK=\tSUBEXIT\n\t\t2CADR\tV83CALL\n\nDSPDELAY\tCAF\t1SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tCA\tEXTVBACT\n\t\tMASK\tBIT12\n\t\tEXTEND\n\t\tBZF\tDSPDELAY\n\nDISPN5X\t\tCA\tFLAGWRD9\t# TEST R31FLAG (IN SUNDANCE R31FLAG WILL\n\t\tMASK\tBIT4\t\t#     ALWAYS BE SET AS R34 DOES NOT EXIST)\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tCAF\tV16N54\t\t# R31\tUSE NOUN 54\n\t\tTC\t+2\n\t\tCAF\tV16N53\t\t# R34\tUSE NOUN 53\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKF\n\t\tTC\tB5OFF\n\t\tTC\tB5OFF\n\t\tTCF\tDISPN5X\n\nV83\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tHAVEBASE\t# INTEG STATE VECTORS\nV83CALL\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tSTATEXTP\t# EXTRAPOLATE STATE VECTORS\nCOMPDISP\tVLOAD\tVSU\n\t\t\tRATT\n\t\t\tRONE\n\t\tPUSH\tABVAL\t\t# RATT-RONE TO 0D\tPD= 6\n\t\tSTORE\tRANGE\t\t# METERS B-29\n\t\tNORM\tVLOAD\n\t\t\tX1\t\t# RATT-RONE\t\tPD= 0\n\t\tVSR1\n\t\tVSL*\tUNIT\n\t\t\t0,1\n\t\tPDVL\tVSU\t\t# UNIT(LOS) TO 0D\tPD= 6\n# Page 506\n\t\t\tVATT\n\t\t\tVONE\n\t\tDOT\t\t\t# (VATT-VONE).UNIT(LOS)\tPD= 0\n\t\tSL1\n\t\tSTCALL\tRRATE\t\t# RANGE RATE M/CS B-7\n\t\t\tCDUTRIG\t\t# TO INITIALIZE FOR *NBSM*\n\t\tCALL\n\t\t\tR34LOS\t\t# NOTE.  PDL MUST = 0.\nR34ANG\t\tVLOAD\tUNIT\n\t\t\tRONE\n\t\tPDVL\t\t\t# UR TO 0D\t\tPD= 6\n\t\t\tTHISAXIS\t# UNITX FOR CM, UNITZ FOR LM\n\t\tBON\tVLOAD\t\t# CHK R31FLAG.  ON=R31 THETA, OFF=R34 PHI\n\t\t\tR31FLAG\n\t\t\t+2\t\t# R31-THETA\n\t\t\t12D\n\t\tCALL\n\t\t\t*NBSM*\n\t\tVXM\tPUSH\t\t# UXORZ TO 6D\t\tPD=12D\n\t\t\tREFSMMAT\n\t\tVPROJ\tVSL2\n\t\t\t0D\n\t\tBVSU\tUNIT\n\t\t\t6D\n\t\tPDVL\tVXV\t\t# UP/2 TO 12D\t\tPD=18D\n\t\t\tRONE\n\t\t\tVONE\n\t\tUNIT\tVXV\n\t\t\tRONE\n\t\tDOT\tPDVL\t\t# SIGN TO 12D, UP/2 TO MPAC\tPD=18D\n\t\t\t12D\n\t\tVSL1\tDOT\t\t# UP.UXORZ\n\t\t\t6D\n\t\tSIGN\tSL1\n\t\t\t12D\n\t\tACOS\n\t\tSTOVL\tRTHETA\n\t\t\tRONE\n\t\tDOT\tBPL\n\t\t\t6D\n\t\t\t+5\n\t\tDLOAD\tBDSU\t\t# IF UXORZ.R NEG, RTHETA = 1 - RTHETA\n\t\t\tRTHETA\n\t\t\tDPPOSMAX\n\t\tSTORE\tRTHETA\t\t# RTHETA BETWEEN 0 AND 1 REV.\n\t\tEXIT\n\t\tCAF\tBIT5\t\t# HAVE WE BEEN ANSWERED\n\t\tMASK\tEXTVBACT\n\t\tEXTEND\n\t\tBZF\tENDEXT\t\t# YES, DIE\n# Page 507\n\t\tCS\tEXTVBACT\n\t\tMASK\tBIT12\n\t\tADS\tEXTVBACT\n\n\t\tTCF\tV83\nV16N54\t\tVN\t1654\nV16N53\t\tVN\t1653\n\n# Page 508\n# STATEXTP DOES AN INITIAL PRECISION EXTRAPOLATION OF THE\n# LEM STATE VECTOR TO PRESENT TIME OR TO PIPTIME IF AV G\n# IS ON AND SAVES AS BASE VECTOR. IF AV G IS ON RN + VN\n# ARE USED AS THE CM STATE VECTOR AND THE INITIAL R RDOT\n# RTHETA ARE COMPUTED WITH NO FURTHER INTEGRATION. IF AV\n# G IS OFF A PRECISION EXTRAPOLATION IS MADE OF THE CM\n# STATE VECTOR TO PRESENT TIME AND.....\n#\n#   THE CM + LM STATE VECTORS ARE INTEGRATED TO PRES TIME\n#   USING PRECISION OR CONIC AS SURFFLAG IS SET OR CLEAR.\n#\n#   IF AV G IS ON THEN\n#     SUBSEQUENT PASSES WILL PROVIDE\n#     USE OF RN + VN AS CM STATE VECTOR AND THE LM STATE\n#     VECTOR WILL BE PRECISION INTEGRATED USING LEMPREC\n#\n#   IF SURFFLAG IS SET.\n#     CM STATE VECTOR RONE VONE + LM STATE VECTOR RATT\n#     VATT ARE USED IN COMPUTING R RDOT RTHETA.\n#\n\nSTATEXTP\tRTB\tBOF\t\t# INITIAL INTEGRATION\n\t\t\tLOADTIME\n\t\t\tV37FLAG\n\t\t\t+3\t\t# AV G OFF, USE PRES TIME\n\t\tCALL\n\t\t\tGETRVN\t\t#      ON,  USE RN VN PIPTIME\n\t\tSTORE\tBASETIME\t# PRES TIME OR PIPTIME\n\t\tSTCALL\tTDEC1\n\t\t\tLEMPREC\n\t\tVLOAD\t\t\t# BASE VECTOR, LM\n\t\t\tRATT1\n\t\tSTOVL\tBASEOTP\t\t#   POS.\n\t\t\tVATT1\n\t\tSTORE\tBASEOTV\t\t#   VEL.\n\t\tBON\tDLOAD\n\t\t\tV37FLAG\n\t\t\tCOMPDISP\t# COMPUTE R RDOT RTHETA FROM\n\t\t\t\t\t# RONE(RN) VONE(VN) RATT+VATT(LEMPREC)\n\t\t\tTAT\n\t\tSTCALL\tTDEC1\n\t\t\tCSMPREC\n\t\tVLOAD\t\t\t# BASE VECTOR, CM\n\t\t\tRATT1\n\t\tSTOVL\tBASETHP\t\t#  POS.\n\t\t\tVATT1\n\t\tSTORE\tBASETHV\t\t#  VEL.\nHAVEBASE\tBON\tRTB\t\t# SUBSEQUENT INTEGRATIONS\n\t\t\tV37FLAG\n\t\t\tGETRVN5\n\t\t\tLOADTIME\n\t\tSTCALL\tTDEC1\t\t# AV G OFF. SET INTEG. OF CM\n\t\t\tINTSTALL\n\t\tVLOAD\tCLEAR\n\t\t\tBASETHP\n# Page 509\n\t\t\tMOONFLAG\n\t\tSTOVL\tRCV\n\t\t\tBASETHV\n\t\tSTODL\tVCV\n\t\t\tBASETIME\n\t\tBOF\tSET\t\t# GET APPROPRIATE MOONFLAG SETTING\n\t\t\tMOONTHIS\n\t\t\t+2\n\t\t\tMOONFLAG\n\t\tCLEAR\n\t\t\tINTYPFLG\n\t\tBON\tSET\n\t\t\tSURFFLAG\n\t\t\t+2\t\t# PREC. IF LM DOWN\n\t\t\tINTYPFLG\t# CONIC IF LM NOT DOWN\n\t\tSTCALL\tTET\n\t\t\tINTEGRVS\t# INTEGRATION --- AT LAST---\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTOVL\tRONE\n\t\t\tVATT\n\t\tSTODL\tVONE\t\t# GET SET FOR CONIC EXTRAP.,OTHER\n\t\t\tTAT\n\t\tBON\tCALL\n\t\t\tSURFFLAG\n\t\t\tGETRVN6\t\t# LEMPREC IF LM DOWN\n\t\t\tINTSTALL\t# ..CONIC IF NOT DOWN\n\t\tSET\n\t\t\tINTYPFLG\nOTHINT\t\tSTORE\tTDEC1\t\t# ENTERED IF AV G ON TO INTEG LM\n\t\tVLOAD\tCLEAR\n\t\t\tBASEOTP\n\t\t\tMOONFLAG\n\t\tSTOVL\tRCV\n\t\t\tBASEOTV\n\t\tSTODL\tVCV\n\t\t\tBASETIME\n\t\tBOF\tSET\n\t\t\tMOONTHIS\n\t\t\t+2\n\t\t\tMOONFLAG\n\t\tSTCALL\tTET\n\t\t\tINTEGRVS\n\t\tGOTO\n\t\t\tCOMPDISP\t# COMPUTE R RDOT RTHETA\nGETRVN5\t\tCALL\t\t\t# AV G ON\n\t\t\tGETRVN\n\t\tBON\tCALL\n\t\t\tSURFFLAG\n\t\t\tGETRVN6\t\t# LM DOWN, LMPREC\n# Page 510\n\t\t\tINTSTALL\n\t\tCLEAR\tGOTO\n\t\t\tINTYPFLG\n\t\t\tOTHINT\nGETRVN6\t\tSTCALL\tTDEC1\n\t\t\tLEMPREC\n\t\tGOTO\n\t\t\tCOMPDISP\t# COMPUTE R RDOT RTHETA\nGETRVN\t\tSTQ\n\t\t\t0D\n\t\tVLOAD\tGOTO\t\t# AV G ON, RONE = RN VONE = VN\n\t\t\tRN\t\t#  AND USE PIPTIME\n\t\t\t+1\n\t\tSTCALL\tRONE\n\t\t\t+1\n\t\tVLOAD\tGOTO\n\t\t\tVN\n\t\t\t+1\n\t\tSTODL\tVONE\n\t\t\tPIPTIME\n\t\tGOTO\n\t\t\t0D\n\t\tSETLOC\tR34\n\t\tBANK\nR34LOS\t\tEXIT\n\t\tCA\tCDUS\n\t\tINDEX\tFIXLOC\n\t\tTS\t9D\n\t\tCA\tCDUT\n\t\tINDEX\tFIXLOC\n\t\tTS\t11D\n\t\tCA\tFIXLOC\n\t\tAD\tSIX\n\t\tCOM\n\t\tINDEX\tFIXLOC\n\t\tTS\tX1\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tSXTNB\n\t\tSTCALL\t12D\n\t\t\tR34ANG\n"
  },
  {
    "path": "Comanche055/R60_62.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tR60_62.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t390-398\n# Mod history:\t2009-05-09 RSB\tAdapted from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 390\n\t\tBANK\t34\n\t\tSETLOC\tMANUVER\n\t\tBANK\n\n\t\tEBANK=\tTEMPR60\n\n\t\tCOUNT\t27/R60\n\n# CONFORMS TO GSOP CHAPTER FOUR REVISION LOGIC 09 JAN 18,1968\n\nR60CSM\t\tTC\tMAKECADR\n\t\tTS\tTEMPR60\n\n# INSERT PRIODSP CHECK WITH R22 (V06N49) WITH JENNINGS BRODEUR\n\nREDOMANN\tCAF\tBIT6\n\t\tMASK\tFLAGWRD5\t# IS 3-AXIS FLAG SET\n\t\tCCS\tA\n\t\tTCF\tTOBALL\t\t# YES\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tVECPOINT\t# TO COMPUTE FINAL ANGLES\n\t\tSTORE\tCPHI\t\t# STORE FINAL ANGLES - CPHI,CTHETA,CPSI\n\t\tEXIT\n\nTOBALL\t\tCAF\tV06N18\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF2R\t# DISPLAY PLEASE PERFORM AUTO MANEUVER\n\t\tTC\tR61TEST\n\t\tTC\tREDOMANC\t# PROCEED\n\t\tTCF\tENDMANU1\t# ENTER I.E. FINISHED WITH R60\n\n\t\tTC\tCHKLINUS\t# TO CHECK FOR PRIORITY DISPLAYS\n\t\tTC\tENDOFJOB\n\nREDOMANC\tCAF\tBIT6\n\t\tMASK\tFLAGWRD5\t# IS 3-AXIS FLAG SET\n\t\tCCS\tA\n\t\tTCF\tTOBALLC\t\t# YES\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tVECPOINT\t# TO COMPUTE FINAL ANGLES\n\t\tSTORE\tCPHI\t\t# STORE ANGLES\n\t\tEXIT\n\nTOBALLC\t\tCAF\tPRIO30\t\t# IS MODE AUTO AND CTL GNC\n# Page 391\n\t\tEXTEND\n\t\tRXOR\tCHAN31\n\t\tMASK\t13,14,15\n\t\tEXTEND\n\t\tBZF\t+2\t\t# AUTO, NON-FLASH N18\n\t\tTCF\tTOBALL\t\t# NOT AUTO\n\n\t\tCAF\tV06N18\t\t# SET UP NON-FLASHING V06 N18\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPR\n\t\tTC\tCHKLINUS\n\nSTARTMNV\tTC\tBANKCALL\n\t\tCADR\tGOMANUR\nENDMANUV\tTCF\tTOBALL\t\t# FINISHED MANEUVER\n\nENDMANU1\tTC\tDOWNFLAG\t# RESET 3-AXIS FLAG\n\t\tADRES\t3AXISFLG\t# BIT 6 FLAG 5\n\t\tCAE\tTEMPR60\n\t\tTC\tBANKJUMP\n\nCHKLINUS\tCS\tFLAGWRD4\n\t\tMASK\tBIT12\t\t# IS PRIORITY DISPLAY FLAG SET\n\t\tCCS\tA\n\t\tTC\tQ\t\t# NO - EXIT\n\t\tCA\tQ\n\t\tTS\tMPAC +2\t\t# SAVE RETURN\n\t\tCS\tTHREE\t\t# OBTAIN LOCATION FOR RESTART.\n\t\tAD\tBUF2\t\t# HOLDS Q OF LAST DISPLAY\n\t\tTS\tTBASE1\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t71\t\t# 1.7SPOT FOR RELINUS\n\n\t\tCAF\tBIT7\n\t\tTC\tLINUS\t\t# GO SET BITS FOR PRIORITY DISPLAY\n\t\tTC\tMPAC +2\n\nRELINUS\t\tCAF\tBIT5\t\t# IS TRACK FLAG ON\n\t\tMASK\tFLAGWRD1\n\t\tEXTEND\n\t\tBZF\tGOREDO20\t# NO\n\n\t\tTC\tUPFLAG\n\t\tADRES\tPDSPFLAG\t# R60 PRIODSP FLAG\n\n\t\tTC\tUPFLAG\n\t\tADRES\tTARG1FLG\t# FOR R52\n\n\t\tCAF\tZERO\t\t# RESET TO ZERO, SINCE\n# Page 392\n\t\tTS\tOPTIND\t\t# OPTIND WAS SET TO -1 BY V379\n\n\t\tCAF\tPRIO14\t\t# RESTORE ORIGINAL PRIORITY\n\t\tTC\tPRIOCHNG\n\n\t\tTC\tTBASE1\n\nGOREDO20\tTC\tPHASCHNG\n\t\tOCT\t111\t\t# 1.11 FOR PIKUP20\n\n\t\tTC \tENDOFJOB\n\nR61TEST\t\tCA\tMODREG\t\t# ARE WE IN P00.  IF YES THIS MUST BE\n\t\tEXTEND\t\t\t#\tVERB49 OR VERB89 SO DO ENDEXT.\n\t\tBZF\tENDMANU1\t# RESET 3-AXIS & RUTURN.  USER DOES ENDEXT\n\t\tCA\tFLAGWRD4\t# ARE WE IN R61 (P20)\n\t\tMASK\tBIT12\n\t\tEXTEND\n\t\tBZF\tGOTOPOOH\t# NO\n\t\tTC\tGOTOV56\t\t# YES\n\nBIT14+7\t\tOCT\t20100\nV06N18\t\tVN\t0618\n\n# Page 393\n# PROGRAM DESCRIPTION - VECPOINT\n\n\n# \tTHIS INTERPRETIVE SUBROUTINE MAY BE USED TO POINT A SPACECRAFT AXIS IN A DESIRED DIRECTION.  THE AXIS\n# TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN SUCCESSIVE LOCATIONS OF ERASABLE MEMORY\n# BEGINNING WITH THE LOCATION CALLED SCAXIS.  THE COMPONENTS OF THIS VECTOR ARE GIVEN IN SPACECRAFT COORDINATES.\n# THE DIRECTION IN WHICH THIS AXIS IS TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN\n# SUCCESSIVE LOCATIONS OF ERASABLE MEMORY BEGINNING WITH THE ADDRESS CALLED POINTVSM.  THE COMPONENTS OF THIS\n# VECTOR ARE GIVEN IN STABLE MEMBER COORDINATES.  WITH THIS INFORMATION VECPOINT COMPUTES A SET OF THREE GIMBAL\n# ANGLES (2S COMPLEMENT) CORRESPONDING TO THE CROSS-PRODUCT ROTATION BETWEEN SCAXIS AND POINTVSM AND STORES THEM\n# IN T(MPAC) BEFORE RETURNING TO THE CALLER.\n# \tTHIS ROTATION, HOWEVER, MAY BRING THE S/C INTO GIMBAL LOCK.  WHEN POINTING A VECTOR IN THE Y-Z PLANE,\n# THE TRANSPONDER AXIS, OR THE AOT FOR THE LEM, THE PROGRAM WILL CORRECT THIS PROBLEM BY ROTATING THE CROSS-\n# PRODUCT ATTITUDE ABOUT POINTVSM BY A FIXED AMOUNT SUFFICIENT TO ROTATE THE DESIRED S/C ATTITUDE OUT OF GIMBAL\n# LOCK.  IF THE AXIS TO BE POINTED IS MORE THAN 40.6 DEGREES BUT LESS THAN 60.5 DEG FROM THE +X (OR-X) AXIS,\n# THE ADDITIONAL ROTATION TO AVOID GIMBAL LOCK IS 35 DEGREES.  IF THE AXIS IS MORE THAN 60.5 DEGREES FROM +X (OR -X)\n# THE ADDITIONAL ROTATION IS 35 DEGREES.  THE GIMBAL ANGLES CORRESPONDING TO THIS ATTITUDE ARE THEN COMPUTED AND\n# STORED AS 2S COMPLIMENT ANGLES IN T(MPAC) BEFORE RETURNING TO THE CALLER.\n#\tWHEN POINTING THE X-AXIS, OR THE THRUST VECTOR, OR ANY VECTOR WITHIN 40.6 DEG OF THE X-AXIS, VECPOINT\n# CANNOT CORRECT FOR A CROSS-PRODUCT ROTATION INTO GIMBAL LOCK.  IN THIS CASE A PLATFORM REALIGNMENT WOULD BE\n# REQUIRED TO POINT THE VECTOR IN THE DESIRED DIRECTION.  AT PRESENT NO INDICATION IS GIVEN FOR THIS SITUATION\n# EXCEPT THAT THE FINAL MIDDLE GIMBAL ANGLE IN MPAC +2 IS GREATER THAN 59 DEGREES.\n\n# \tCALLING SEQUENCE -\n#\t\t1) LOAD SCAXIS, POINTVSM\n#\t\t2) CALL\n#\t\t\tVECPOINT\n\n# \tRETURNS WITH\n\n#\t\t1) DESIRED OUTER GIMBAL ANGLE IN MPAC\n#\t\t2) DESIRED INNER GIMBAL ANGLE IN MPAC +1\n#\t\t3) DESIRED MIDDLE GIMBAL ANGLE IN MPAC +2\n\n\n# \tERASABLES USED -\n\n#\t\t1) SCAXIS\t\t6\n#\t\t2) POINTVSM\t\t6\n#\t\t3) MIS\t\t\t18\n#\t\t4) DEL\t\t\t18\n#\t\t5) COF\t\t\t6\n#\t\t6) VECQTEMP\t\t1\n#\t\t7) ALL OF VAC AREA\t43\n\n#\t\t\t\tTOTAL\t99\n\n\t\tSETLOC\tVECPT\n\t\tBANK\n# Page 394\n\t\tEBANK=\tBCDU\n\n\t\tCOUNT\t27/VECPT\n\nVECPOINT\tSTQ\tBOV\t\t# SAVE RETURN ADDRESS\n\t\t\tVECQTEMP\n\t\t\tVECLEAR\t\t# AND CLEAR OVFIND\nVECLEAR\t\tAXC,2\tRTB\n\t\t\tMIS\t\t# READ THE PRESENT CDU ANGLES AND\n\t\t\tREADCDUK\t# STORE THEM IN PD25, 26, 27\n\t\tSTCALL\t25D\n\t\t\tCDUTODCM\t# S/C AXES TO STABLE MEMBER AXES (MIS)\n\t\tVLOAD\tVXM\n\t\t\tPOINTVSM\t# RESOLVE THE POINTING DIRECTION VF INTO\n\t\t\tMIS\t\t# INITIAL S/C AXES ( VF = POINTVSM)\n\t\tUNIT\n\t\tSTORE\t28D\n\t\t\t\t\t# PD 28 29 30 31 32 33\n\t\tVXV\tUNIT\t\t# TAKE THE CROSS PRODUCT VF X VI\n\t\t\tSCAXIS\t\t# WHERE VI = SCAXIS\n\t\tBOV\tVCOMP\n\t\t\tPICKAXIS\n\t\tSTODL\tCOF\t\t# CHECK MAGNITUDE\n\t\t\t36D\t\t# OF CROSS PRODUCT\n\t\tDSU\tBMN\t\t# VECTOR, IF LESS\n\t\t\tDPB-14\t\t# THAN B-14 ASSUME\n\t\t\tPICKAXIS\t# UNIT OPERATION\n\t\tVLOAD\tDOT\t\t# \tINVALID.\n\t\t\tSCAXIS\n\t\t\t28D\n\t\tSL1\tARCCOS\nCOMPMATX\tCALL\t\t\t# NOW COMPUTE THE TRANSFORMATION FROM\n\t\t\tDELCOMP\t\t# FINAL S/C AXES TO INITIAL S/C AXES MFI\n\t\tAXC,1\tAXC,2\n\t\t\tMIS\t\t# COMPUTE THE TRANSFORMATION FROM FINAL\n\t\t\tDEL\t\t# S/C AXES TO STABLE MEMBER AXES\n\t\tCALL\t\t\t# MFS = MIS MFI\n\t\t\tMXM3\t\t# (IN PD LIST)\n\n\t\tDLOAD\tABS\n\t\t\t6\t\t# MFS6 = SIN(CPSI)\t\t\t$2\n\t\tDSU\tBMN\n\t\t\tSINGIMLC\t# = SIN(59 DEGS)\t\t\t$2\n\t\t\tFINDGIMB\t# /CPSI/ LESS THAN 59 DEGS\n\t\t\t\t\t# I.E. DESIRED ATTITUDE NOT IN GIMBAL LOCK\n\n\t\tDLOAD\tABS\t\t# CHECK TO SEE IF WE ARE POINTING\n\t\t\tSCAXIS\t\t# THE THRUST AXIS\n\t\tDSU\tBPL\n\t\t\tSINVEC1\t\t# SIN 49.4 DEGS\t\t\t\t$2\n# Page 395\n\t\t\tFINDGIMB\t# IF SO, WE ARE TRYING TO POINT IT INTO\n\t\tVLOAD\t\t\t# GIMBAL LOCK, ABORT COULD GO HERE\n\t\tSTADR\n\t\tSTOVL\tMIS +12D\n\t\tSTADR\t\t\t# STORE MFS (IN PD LIST) IN MIS\n\t\tSTOVL\tMIS +6\n\t\tSTADR\n\t\tSTOVL\tMIS\n\t\t\tMIS +6\t\t# INNER GIMBAL AXIS IN FINAL S/C AXES\n\t\tBPL\tVCOMP\t\t# LOCATE THE IG AXIS DIRECTION CLOSEST TO\n\t\t\tIGSAMEX\t\t# FINAL X S/C AXIS\n\nIGSAMEX\t\tVXV\tBMN\t\t# FIND THE SHORTEST WAY OF ROTATING THE\n\t\t\tSCAXIS\t\t# S/C OUT OF GIMBAL LOCK BY A ROTATION\n\t\t\tU=SCAXIS\t# ABOUT +- SCAXIS, I.E. IF (IG (SGN MFS3)\n\t\t\t\t\t# X SCAXIS . XF) LESS THAN 0, U = SCAXIS\n\t\t\t\t\t# OTHERWISE U = -SCAXIS.\n\n\t\tVLOAD\tVCOMP\n\t\t\tSCAXIS\n\t\tSTCALL\tCOF\t\t# ROTATE ABOUT -SCAXIS\n\t\t\tCHEKAXIS\nU=SCAXIS\tVLOAD\n\t\t\tSCAXIS\n\t\tSTORE\tCOF\t\t# ROTATE ABOUT + SCAXIS\nCHEKAXIS\tDLOAD\tABS\n\t\t\tSCAXIS\t\t# SEE IF WE ARE POINTING THE AOT\n\t\tDSU\tBPL\n\t\t\tSINVEC2\t\t# SIN 29.5 DEGS\t\t\t\t$2\n\t\t\tPICKANG1\t# IF SO, ROTATE 50 DEGS ABOUT +- SCAXIS\n\t\tDLOAD\tGOTO\t\t# IF NOT, MUST BE POINTING THE TRANSPONDER\n\t\t\tVECANG2\t\t# OR SOME VECTOR IN THE Y, OR Z PLANE\n\t\t\tCOMPMFSN\t# IN THIS CASE ROTATE 35 DEGS TO GET OUT\n\t\t\t\t\t# OF GIMBAL LOCK (VECANG2 $360)\nPICKANG1\tDLOAD\n\t\t\tVECANG1\t\t# = 50 DEGS\t\t\t      $360\nCOMPMFSN\tCALL\n\t\t\tDELCOMP\t\t# COMPUTE THE ROTATION ABOUT SCAXIS TO\n\t\tAXC,1\tAXC,2\t\t# BRING MFS OUT OF GIMBAL LOCK\n\t\t\tMIS\n\t\t\tDEL\n\t\tCALL\t\t\t# COMPUTE THE NEW TRANSFORMATION FROM\n\t\t\tMXM3\t\t# DESIRED S/C AXES TO STABLE MEMBER AXES\n\t\t\t\t\t# WHICH WILL ALIGN VI WITH VF AND AVOID\n\t\t\t\t\t# GIMBAL LOCK\nFINDGIMB\tAXC,1\tCALL\n\t\t\t0\t\t# EXTRACT THE COMMANDED CDU ANGLES FROM\n\t\t\tDCMTOCDU\t# THIS MATRIX\n\t\tRTB\tSETPD\n\t\t\tV1STO2S\t\t# CONVERT TO 2:S COMPLEMENT\n# Page 396\n\t\t\t0\n\t\tGOTO\n\t\t\tVECQTEMP\t# RETURN TO CALLER\n\nPICKAXIS\tVLOAD\tDOT\t\t# IF VF X VI = 0, FIND VF . VI\n\t\t\t28D\n\t\t\tSCAXIS\n\t\tBMN\tTLOAD\n\t\t\tROT180\n\t\t\t25D\n\t\tGOTO\t\t\t# IF VF = VI, CDU DESIRED = PRESENT CDU\n\t\t\tVECQTEMP\t# PRESENT CDU ANGLES\n\nROT180\t\tVLOAD\tVXV\t\t# IF VF, VI ANTI-PARALLEL, 180 DEG ROTATION\n\t\t\tMIS +6\t\t# IS REQUIRED.  Y STABLE MEMBER AXIS IN\n\t\t\tHIUNITX\t\t# INITIAL S/C AXIS.\n\t\tUNIT\tVXV\t\t# FIND Y(SM) X X(I)\n\t\t\tSCAXIS\t\t# FIND UNIT(VI X UNIT(Y(SM) X X(I)))\n\t\tUNIT\tBOV\t\t# I.E. PICK A VECTOR IN THE PLANE OF X(I),\n\t\t\tPICKX\t\t# Y(SM) PERPENDICULAR TO VI\n\t\tSTODL\tCOF\n\t\t\t36D\t\t# CHECK MAGNITUDE\n\t\tDSU\tBMN\t\t# OF THIS VECTOR.\n\t\t\tDPB-14\t\t# IF LESS THAN B-14,\n\t\t\tPICKX\t\t# PICK X-AXIS.\n\t\tVLOAD\n\t\t\tCOF\nXROT\t\tSTODL\tCOF\n\t\t\tHIDPHALF\n\t\tGOTO\n\t\t\tCOMPMATX\nPICKX\t\tVLOAD\tGOTO\t\t# PICK THE XAXIS IN THIS CASE\n\t\t\tHIUNITX\n\t\t\tXROT\n\t\tBANK\t35\n\t\tSETLOC\tMANUVER1\n\t\tBANK\n\nSINGIMLC\t2DEC\t.4285836003\t# =SIN(59)\t\t\t$2\n\nSINVEC1\t\t2DEC\t.3796356537\t# =SIN(49.4)\t\t\t$2\n\nSINVEC2\t\t2DEC\t.2462117800\t# =SIN(29.5)\t\t\t$2\n\nVECANG1\t\t2DEC\t.1388888889\t# = 50 DEGREES\t\t\t      $360\n\nVECANG2\t\t2DEC\t.09722222222\t# = 35 DEGREES\t\t\t      $360\n\n\n1BITDP\t\tOCT\t0\t\t# KEEP THIS BEFORE DPB(-14)\t  *********\nDPB-14\t\tOCT\t00001\n# Page 397\n\t\tOCT\t00000\n\t\tBANK\t34\n\t\tSETLOC\tMANUVER\n\t\tBANK\n\n# Page 398\n# ROUTINE FOR INITIATING AUTOMATIC MANEUVER VIA KEYBOARD (V49)\n\n\t\tEBANK=\tCPHI\n\n\t\tCOUNT\t27/R62\n\nR62DISP\t\tCAF\tV06N22\t\t# DISPLAY COMMAND ICDUS CPHI, CTHETA, CPHI\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tENDEXT\n\t\tTCF\tGOMOVE\t\t# PROCEED\n\t\tTCF\tR62DISP\t\t# ENTER\n\n\t\t\t\t\t# ASTRONAUT MAY LOAD NEW ICDUS AT THIS\n\t\t\t\t\t# POINT\nGOMOVE\t\tTC\tUPFLAG\t\t# SET 3-AXIS FLAG\n\t\tADRES\t3AXISFLG\t# BIT 6\tFLAG 5\n\n\t\tTC\tBANKCALL\n\t\tCADR\tR60CSM\n\t\tTCF\tENDEXT\n"
  },
  {
    "path": "Comanche055/RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tRCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1037-1038\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tA \"Page N\" comment was corrected.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1037\n# CALCULATION OF  AMGB, AMBG  ONCE EVERY SECOND\n#\n#\tAMGB =\t1\tSIN(PSI)\t\t0\n#\t\t0\tCOS(PSI)COS(PHI)\tSIN(PHI)\n#\t\t0\t-COS(PSI)SIN(PHI)\tCOS(PHI)\n#\n#\tAMBG =\t1\t-TAN(PSI)COS(PHI)\tTAN(PSI)SIN(PHI)\n#\t\t0\tCOS(PHI)/COS(PSI)\t-SIN(PHI)/COS(PSI)\n#\t\t0\tSIN(PHI)\t\tCOS(PHI)\n#\n# WHERE PHI AND PSI ARE CDU ANGLES\n\n\n\t\tBANK\t20\n\t\tSETLOC\tDAPS8\n\t\tBANK\n\n\t\tCOUNT*\t$$/DAPEX\n\t\tEBANK=\tKMPAC\nAMBGUPDT\tCA\tFLAGWRD6\t# CHECK FOR RCS AUTOPILOT\n\t\tEXTEND\n\t\tBZMF\tENDOFJOB\t# BIT15 = 0, BIT14 = 1\n\t\tMASK\tBIT14\t\t# IF NOT RCS, EXIT\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\t# TO PROTECT TVC DAP ON SWITCHOVER\n\n\t\tCA\tCDUZ\n\t\tTC\tSPSIN2\n\t\tTS\tAMGB1\t\t# CALCULATE AMGB\n\t\tCA\tCDUZ\n\t\tTC\tSPCOS2\n\t\tTS\tCAPSI\t\t# MUST CHECK FOR GIMBAL LOCK\n\t\tCAF\tQUADANGL\t# = 7.25  DEGREES JET QUAD ANGULAR OFFSET\n\t\tEXTEND\n\t\tMSU\tCDUX\n\t\tCOM\t\t\t# CDUX - 7.25 DEG\n\t\tTC\tSPCOS1\n\t\tTS\tAMGB8\n\t\tEXTEND\n\t\tMP\tCAPSI\n\t\tTS\tAMGB4\n\t\tCAF\tQUADANGL\n\t\tEXTEND\n\t\tMSU\tCDUX\n\t\tCOM\t\t\t# CDUX - 7.25 DEG\n\t\tTC\tSPSIN1\n\t\tTS\tAMGB5\n\t\tEXTEND\n\t\tMP\tCAPSI\n\t\tCOM\n# Page 1038\n\t\tTS\tAMGB7\n\t\tTCF\tENDOFJOB\nQUADANGL\tDEC\t660\t\t# = 7.25 DEGREES\n"
  },
  {
    "path": "Comanche055/RCS-CSM_DIGITAL_AUTOPILOT.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tRCS-CSM_DIGITAL_AUTOPILOT.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1002-1024\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1002\n# T5 INTERRUPT PROGRAM FOR THE RCS-CSM AUTOPILOT\n# \tSTART OF T5 INTERRUPT PROGRAM\n\n\n\t\tBANK\t20\n\t\tSETLOC\tDAPS3\n\t\tBANK\n\n\t\tCOUNT\t21/DAPRC\n\n\t\tEBANK=\tKMPAC\nREDORCS\t\tLXCH\tBANKRUPT\t# RESTART OF AUTOPILOT COMES HERE\n\t\tCA\tT5PHASE\t\t# ON A T5 RUPT.\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# IF T5PHASE +0, -0, OR -, RESET TO -\n\t\tTCF\t+3\t\t# IF T5PHASE +, LEAVE IT +.  DO A FRESHDAP\n\t\tCS\tONE\n\t\tTS\tT5PHASE\n\t\tEXTEND\n\t\tDCA\tRCSLOC\n\t\tDXCH\tT5LOC\t\t# HOOK UP T5RUPT TO AUTOPILOT\n\t\tTCF\tRCSATT +1\n\t\tEBANK=\tKMPAC\nRCSLOC\t\t2CADR\tRCSATT\n\nRCSATT\t\tLXCH\tBANKRUPT\t# SAVE BB\n\t\tEXTEND\t\t\t# SAVE Q\n\t\tQXCH\tQRUPT\n\t\tCAF\tBIT15\t\t# BIT15 CHAN31 = 0 IF IMU POWER IS ON AND\n\t\tEXTEND\t\t\t# S/C CONT SW IS IN CMC (I.E. IF G/C AUTO\n\t\tRAND\tCHAN31\t\t# PILOT IS FULLY ENABLED)\n\t\tEXTEND\n\t\tBZF\tSETT5\t\t# IF G/C AUTOPILOT IS FULLY ENABLED,\n\t\t\t\t\t# GO TO SETT5\n\n\t\tCS\tRCSFLAGS\t# IF G/C AUTOPILOT IS NOT FULLY ENABLED,\n\t\tMASK\tBIT14\n\t\tADS\tRCSFLAGS\t# SET NORATE FLAG,\n\t\tCAF\tPOSMAX\n\t\tTS\tHOLDFLAG\t# SET HOLDFLAG +,\n\t\tCAF\tZERO\t\t# ZERO ERRORX, ERRORY, AND ERRORZ,\n\t\tTS\tERRORX\n\t\tTS\tERRORY\n\t\tTS\tERRORZ\n\t\tCAF\tBIT14\n\t\tEXTEND\n\t\tRAND\tCHAN31\t\t# AND CHECK FREE FUNCTION (BIT14 CHAN31).\n\t\tEXTEND\n# Page 1003\n\t\tBZF\tSETT5\t\t# IF IN FREE MODE, GO TO SETT5.\n\n\t\tTS\tT5PHASE\t\t# IF NOT IN FREE MODE,\n\t\tCAF\tOCT37766\t# SCHEDULE REINITIALIZATION (FRESHDAP)\n\t\tTS\tTIME5\t\t# IN 100 MS VIA T5RUPT\n\n\t\tTCR\tZEROJET\t\t# ZERO JET CHANNELS IN 14 MS VIA ZEROJET\n\n\t\tTCF\tKMATRIX\nDELTATT\t\tOCT\t37770\t\t# 80MS (TIME5)\nDELTATT2\tOCT\t37776\t\t# 20MS (TIME5)\nONESEK\t\tDEC\t16284\t\t# 1 SEC(TIME5)\nCHAN5\t\tEQUALS\t5\nCHAN6\t\tEQUALS\t6\nPRIO34A\t\t=\tPRIO34\n# \t\tCHECK PHASE OF T5 PROGRAM\n\n# \tBECAUSE OF THE LENGTH OF THE T5 PROGRAM, IT HAS BEEN DIVIDED INTO\n# THREE PARTS, T5PHASE1, T5PHASE2, AND THE JET SELECTION LOGIC,\n# TO ALLOW FOR THE EXECUTION OF OTHER\n# INTERRUPTS.  T5PHASE IS ALSO USED IN THE INITIALIZATION OF THE AUTOPILOT\n# VARIABLES AT TURN ON.\n# THE CODING OF T5PHASE IS...\n\n#\t\t+ = INITIALIZE T5 RCS-CSM AUTOPILOT\n#    T5PHASE = +0 = PHASE2 OF THE T5 PROGRAM\n#\t\t- = RESTART DAP\n#\t       -0 = PHASE1 OF THE T5 PROGRAM\n\nSETT5\t\tCCS\tT5PHASE\n\t\tTCF\tFRESHDAP\t# TURN ON AUTOPILOT\n\t\tTCF\tT5PHASE2\t# BRANCH TO PHASE2 OF PROGRAM\n\t\tTCF\tREDAP\t\t# RESTART AUTOPILOT\n\n\t\tTS\tT5PHASE\t\t# PHASE 1 RESET FOR PHASE 2\n\t\tCA\tTIME5\n\t\tTS\tT5TIME\t\t# USED IN COMPENSATING FOR DELAYS IN T5\n\t\tCAF\tDELTATT2\t# RESET FOR T5RUPT IN 20MS FOR PHASE2\n\t\tTS\tTIME5\t\t# OF PROGRAM\n\n# Page 1004\n# IMU STATUS CHECK\n\n\t\tCS\tIMODES33\t# CHECK IMU STATUS\n\t\tMASK\tBIT6\t\t# BIT6 = 0  IMU OK\n\t\tCCS\tA\t\t# BIT6 = 1 NO IMU\n\t\tTCF\tRATEFILT\nFREECHK\t\tCS\tRCSFLAGS\t# BIT14 INDICATES THAT RATES HAVE NOT BEEN\n\t\tMASK\tBIT14\t\t# INITIALIZED\n\t\tADS\tRCSFLAGS\n\t\tCAF\tBIT14\t\t# NO ATTITUDE REFERENCE\n\t\tTS\tHOLDFLAG\t# STOP ANY AUTOMATIC STEERING AND PREPARE\n\t\t\t\t\t# TO PICK UP CDU ANGLES UPON RESUMPTION OF\n\t\t\t\t\t# ATTITUDE HOLD\n\t\tEXTEND\n\t\tRAND\tCHAN31\t\t# CHECK FOR FREE MODE\n\t\tEXTEND\n\t\tBZF\tKRESUME1\t# IN FREE MODE PROVIDE FREE CONTROL ONLY\n\t\tTCF\tREINIT\t\t# .....TILT...............................\nBITS4,5\t\tOCT\t30\n\nRATEFILT\tCA\tRCSFLAGS\t# SEE IF RATEFILTER HAS BEEN INITIALIZED\n\t\tMASK\tBIT14\n\t\tEXTEND\t\t\t# IF SO, PROCEED WITH RATE DERIVATION\n\t\tBZF\t+2\n\t\tTCF\tKMATRIX\t\t# IF NOT, SKIP RATE DERIVATION\n\n# \tRATE FILTER\tTIMING = 7.72 MS\n\n# RATE FILTER EQUATIONS\n# DRHO = DELRHO - (.1)ADOT + (1 = GAIN1)DRHO\n#\t\t\t\t\t    -1\n# ADOT = ADOT   + GAIN2 DRHO + KMJ DFT\n#\t     -1\n#\t-        *     -     -\n# WHERE DELRHO = AMGB (CDU - CDU  )\n#\t\t\t \t-1\n\n\t\tCAF\tTWO\nDRHOLOOP\tTS\tSPNDX\n\t\tDOUBLE\n\t\tTS\tDPNDX\n\t\tINDEX\tDPNDX\n\t\tCS\tDRHO\t\t# DRHO SCALED 180 DEGS\n\t\tEXTEND\n\t\tINDEX\tATTKALMN\t# PICK UP DESIRED FILTER GAIN\n\t\tMP\tGAIN1\n\t\tINDEX\tDPNDX\n\t\tDAS\tDRHO\t\t# (1 -.064)DRHO\n\t\tEXTEND\n# Page 1005\n\t\tINDEX\tDPNDX\n\t\tDCS\tADOT\n\t\tDXCH\tKMPAC\t\t# -(.1)ADOT\n\t\tCA\tQUARTER\n\t\tTC\tSMALLMP\n\t\tDXCH\tKMPAC\n\t\tINDEX\tDPNDX\n\t\tDAS\tDRHO\n\t\tCCS\tSPNDX\n\t\tTCF\tDRHOLOOP\n\n\t\tCA\tCDUX\t\t# MEASURED BODY RATES--\n\t\tXCH\tRHO\n\t\tEXTEND\n\t\tMSU\tRHO\t\t# -        *     -     -\n\t\tCOM\t\t\t# DELRHO = AMGB (CDU - CDU  )\n\t\t\t\t\t#\t\t\t  -1\n\t\tZL\n\t\tDXCH\tDELTEMPX\n\t\tCA\tCDUY\n\t\tXCH\tRHO1\n\t\tEXTEND\n\t\tMSU\tRHO1\n\t\tCOM\n\t\tTS\tT5TEMP\t\t# (CDUY - RHO1)\t   SCALED 90 DEGS\n\t\tEXTEND\n\t\tMP\tAMGB1\n\t\tDAS\tDELTEMPX\t# DELTEMPX = (CDUX-RHO) + AMGB1(CDUY-RHO1)\n\t\t\t\t\t# MUST BE DOUBLE PRECISION OR WILL LOSE\n\t\t\t\t\t# PULSES\n\t\tCA\tAMGB4\n\t\tEXTEND\n\t\tMP\tT5TEMP\n\t\tDXCH\tDELTEMPY\n\t\tCA\tAMGB7\n\t\tEXTEND\n\t\tMP\tT5TEMP\n\t\tDXCH\tDELTEMPZ\n\t\tCA\tCDUZ\n\t\tXCH\tRHO2\n\t\tEXTEND\n\t\tMSU\tRHO2\n\t\tCOM\n\t\tTS\tT5TEMP\t\t# (CDUZ - RHO2)    SCALED 90 DEGS\n\t\tEXTEND\n\t\tMP\tAMGB5\n\t\tDAS\tDELTEMPY\t# DELTEMPY =AMGB4(CDUY-RHO1)\n\t\t\t\t\t#\t\t  + AMGB5(CDUZ-RHO2)\n\t\tCA\tAMGB8\n\t\tEXTEND\n\n# Page 1006\n\t\tMP\tT5TEMP\n\t\tDAS\tDELTEMPZ\t# DELTEMPZ = AMBG7(CDUY-RHO1)\n\t\t\t\t\t#\t\t  + AMGB8(CDUZ-RHO2)\n\t\tCAF\tTWO\nADOTLOOP\tTS\tSPNDX\n\t\tDOUBLE\n\t\tTS\tDPNDX\n\t\tEXTEND\n\t\tINDEX\tDPNDX\n\t\tDCA\tDELTEMPX\n\t\tINDEX\tDPNDX\n\t\tDAS\tDRHO\n\t\tEXTEND\n\t\tINDEX\tDPNDX\n\t\tDCA\tDELTEMPX\n\t\tINDEX\tDPNDX\n\t\tDAS\tMERRORX\n\t\tINDEX\tDPNDX\n\t\tCA\tDRHO\n\t\tDOUBLE\t\t\t# N.B.\n\t\tDOUBLE\t\t\t# N.B.\n\t\tEXTEND\n\t\tINDEX\tATTKALMN\t# PICK UP DESIRED FILTER GAINS\n\t\tMP\tGAIN2\n\t\tINDEX\tDPNDX\t\t# ADOT   + (.16)(.1)DRHO\n\t\tDAS\tADOT\t\t#     -1\n\t\tINDEX\tSPNDX\t\t# S/C TORQUE TO INERTIA RATIO\n\t\tCA\tKMJ\t\t# SCALED (450)(1600)/(57.3)(16384)=1/1.3\n\t\tEXTEND\n\t\tINDEX\tSPNDX\n\t\tMP\tDFT\n\t\tINDEX\tDPNDX\n\t\tDAS\tADOT\t\t# KMJ(DFT)\n\t\tCCS\tSPNDX\n\t\tTCF\tADOTLOOP\t# END CALCULATION OF VEHICLE RATES\nKMATRIX\t\tCA\tATTSEC\n\t\tMASK\tLOW4\n\t\tCCS\tA\n\t\tTCF\tTENTHSEK\n\t\tCAF\tPRIO34\t\t# CALL FOR 1 SEC UPDATE OF TRANSFORMATION\n\t\tTC\tNOVAC\t\t# MATRIX FROM GIMBAL AXES TO BODY AXES\n\t\tEBANK=\tKMPAC\n\t\t2CADR\tAMBGUPDT\n\n\t\tCAF\tNINE\n\nTENTHSEK\tTS\tATTSEC\n\n# Page 1007\n# WHEN AUTOMATIC MANEUVERS ARE BEING PERFORMED, THE FOLLOWING ANGLE ADDITION MUST BE MADE TO PROVIDE A SMOOTH\n# SEQUENCE OF ANGULAR COMMANDS TO THE AUTOPILOT--\n\n#\tCDUXD = CDUXD + DELCDUX\t\t(DOUBLE PRECISION)\n#\tCDUYD = CDUYD + DELCDUY\t\t(DOUBLE PRECISION)\n#\tCDUZD = CDUZD + DELCDUZ\t\t(DOUBLE PRECISION)\n\n# THE STEERING PROGRAMS-\n#\t1) ATTITUDE MANEUVER ROUTINE\n#\t2) LEM TRACKING\n\n# SHOULD GENERATE THE DESIRED ANGLES (CDUXD, CDUYD, CDUZD) AS WELL AS THE INCREMENTAL ANGLES (DELCDUX, DELCDUY,\n# DELCDUZ) SO THAT THE GIMBAL ANGLE COMMANDS CAN BE INTERPOLATED BETWEEN UPDATES.\n\n# HOLDFLAG CODING-\n\n#\t+ = GRAB PRESENT CDU ANGLES AND STORE IN THETADX, THETADY, THETADZ\n#\t    AND PERFORM ATTITUDE HOLD ABOUT THESE ANGLES\n#\t    ALSO IGNORE AUTOMATIC STEERING\n#\t    SET = + BY\n#\t\t1) INITIALIZATION PHASE OF AUTOPILOT\n#\t\t2) OCCURANCE OF RHC COMMANDS\n#\t\t3) FREE MODE\n#\t\t4) SWITCH OVER TO ATTITUDE HOLD FROM AUTO\n#\t\t   WHILE DOING AUTOMATIC STEERING (IN THIS CASE\n#\t\t   HOLDFLAG IS NOT ACTUALLY SET TO +, BUT THE LOGIC\n#\t\t   FUNCTIONS AS IF IT WERE.)\n#\t\t5) S/C CONTROL SWITCH IS SCS\n#\t\t6) IMU POWER OFF\n#      +0 = IN ATTITUDE HOLD ABOUT A PREVIOUSLY ESTABLISHED REFERENCE\n#\t- = PERFORMING AUTOMATIC MANEUVER\n#      -0 = NOT USED AT PRESENT\n\n\n# \tNOTE THAT THIS FLAG MUST BE SET = - BY THE STEERING PROGRAM IF IT IS TO COMMAND THE AUTOPILOT.\n# SINCE ASTRONAUT ACTION MAY CHANGE THE HOLDFLAG SETTING, IT SHOULD BE MONITORED BY THE STEERING PROGRAM TO\n# DETERMINE IF THE AUTOMATIC SEQUENCE HAS BEEN INTERRUPTED AND IF SO, TAKE THE APPROPRIATE ACTION.\n\n\t\tCS\tHOLDFLAG\n\t\tEXTEND\n\t\tBZMF\tDACNDLS\t\t# IF HOLDFLAG +0,-0,+, BYPASS AUTOMATIC\n\t\t\t\t\t# COMMANDS\nDCDUINCR\tCAF\tTWO\nDELOOP\t\tTS\tSPNDX\n\t\tDOUBLE\n\t\tTS\tDPNDX\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\tCDUXD\n# Page 1008\n\t\tDXCH\tKMPAC\n\t\tEXTEND\n\t\tINDEX\tDPNDX\n\t\tDCA\tDELCDUX\n\t\tTC\tDPADD\n\t\tEXTEND\n\t\tDCA\tKMPAC\n\t\tINDEX\tSPNDX\n\t\tTS\tTHETADX\n\t\tINDEX\tDPNDX\n\t\tDXCH\tCDUXD\n\t\tCCS\tSPNDX\n\t\tTCF\tDELOOP\n\n# Page 1009\n# RCS-CSM AUTOPILOT ATTITUDE ERROR DISPLAY\n\n# THREE TYPES OF ATTITUDE ERRORS MAY BE DISPLAYED ON THE FDAI-\n\n#\tMODE 1)\tAUTOPILOT FOLLOWING ERRORS\t\tSELECTED BY V61E\n#\t\tGENERATED INTERNALLY BY THE AUTOPILOT\n\n#\tMODE 2)\tTOTAL ATTITUDE ERRORS\t\t\tSELECTED BY V62E\n#\t\tWITH RESPECT TO THE CONTENTS OF N22\n\n#\tMODE 3)\tTOTAL ASTRONAUT ATTITUDE ERRORS\t\tSELECTED BY V63E\n#\t\tWITH RESPECT TO THE CONTENTS OF N17\n\n# MODE 1 IS PROVIDED AS A MONITOR OF THE RCS DAP AND ITS ABILITY TO TRACK AUTOMATIC STEERING COMMANDS.  IN THIS\n# MODE THE ATTITUDE ERRORS WILL BE ZEROED WHEN THE CMC MODE SWITCH IS IN FREE\n\n# MODE 2 IS PROVIDED TO ASSIST THE CREW IN MANUALLY MANEUVERING THE S/C TO THE ATTITUDE (GIMBAL ANGLES) SPECIFIED\n# IN N22.  THE ATTITUDE ERRORS WRT THESE ANGLES AND THE CURRENT CDU ANGLES ARE RESOLVED INTO S/C CONTROL AXES\n# AS A FLY-TO INDICATOR.\n\n# MODE 3 IS PROVIDED TO ASSIST THE CREW IN MANUALLY MANEUVERING THE S/C TO THE ATTITUDE (GIMBAL ANGLES) SPECIFIED\n# IN N17.  THE ATTITUDE ERRORS WRT THESE ANGLES AND THE CURRENT CDU ANGLES ARE RESOLVED INTO S/C CONTROL AXES\n# AS A FLY-TO INDICATOR.\n\n# \tV60 IS PROVIDED TO LOAD N17 WITH A SNAPSHOT OF THE CURRENT CDU ANGLES, THUS SYNCHRONIZING THE MODE 3 DISPLAY\n# WITH THE CURRENT S/C ATTITUDE.  THIS VERB MAY BE USED AT ANY TIME.\n\n# \tTHESE DISPLAYS WILL BE AVAILABLE IN ANY MODE (AUTO, HOLD, FREE, G+N, OR SCS) ONCE THE RCS DAP HAS BEEN\n# INITIATED VIA V46E.  MODE 1, HOWEVER, WILL BE MEANINGFUL ONLY IN G+N AUTO OR HOLD.  THE CREW MAY PRESET (VIA\n# V25N17) AN ATTITUDE REFERENCE (DESIRED GIMBAL ANGLES) INTO N17 AT ANY TIME.\n\nDACNDLS\t\tCS\tRCSFLAGS\t# ALTERNATE BETWEEN FDAIDSP1 AND FDAIDSP2\n\t\tMASK\tBIT4\n\t\tEXTEND\n\t\tBZF\tFDAIDSP2\n\nFDAIDSP1\tADS\tRCSFLAGS\n\t\tTC\tNEEDLER\nKRESUME1\tTCF\tRESUME\t\t# END PHASE 1\n\n# Page 1010\n# FDAI ATTITUDE ERROR DISPLAY SUBROUTINE\n\n# PROGRAM DESCRIPTION:\tD. KEENE  5/24/67\n\n# \tTHIS SUBROUTINE IS USED TO DISPLAY ATTITUDE ERRORS ON THE FDAI VIA THE DIGITAL TO ANALOG CONVERTERS (DACS)\n# IN THE CDUS.  CARE IS TAKEN TO METER OUT THE APPROPRIATE NUMBER OF PULSES TO THE IMU ERROR COUNTERS AND PREVENT\n# OVERFLOW, TO CONTROL THE RELAY SEQUENCING, AND TO AVOID INTERFERENCE WITH THE COARSE ALIGN LOOP WHICH ALSO USES\n# THE DACS.\n\n\n# CALLING SEQUENCE:\n\n# \tDURING THE INITIALIZATION SECTION OF THE USER'S PROGRAM, BIT3 OF RCSFLAGS SHOULD BE SET TO INITIATE THE\n# TURN-ON SEQUENCE WITHIN THE NEEDLES PROGRAM:\n\n#\t\tCS\tRCSFLAGS\t# IN EBANK6\n#\t\tMASK\tBIT3\n#\t\tADS\tRCSFLAGS\n\n# THEREAFTER, THE ATTITUDE ERRORS GENERATED BY THE USER SHOULD BE TRANSFERED TO THE FOLLOWING LOCATIONS IN EBANK6:\n\n#\t\tAK\tSCALED 180 DEGREES\tNOTE:\tTHESE LOCATIONS ARE SUBJECT\n#\t\tAK1\tSCALED 180 DEGREES\t\tTO CHANGE\n#\t\tAK2\tSCALED 180 DEGREES\n\n# FULL SCALED DEFLECTION CORRESPONDS TO 16 7/8 DEGREES OF ATTITUDE ERROR\n#\t\t(= 384 BITS IN IMU ERROR COUNTER)\n\n# A CALL TO NEEDLER WILL THEN UPDATE THE DISPLAY:\n\n#\t\tINHINT\n#\t\tTC\tIBNKCALL\t# NOTE: EBANK SHOULD BE SET TO E6\n#\t\tCADR\tNEEDLER\n#\t\tRELINT\n\n# \tTHIS PROCESS SHOULD BE REPEATED EACH TIME THE ERRORS ARE UPDATED.  AT LEAST 3 PASSES THRU THE PROGRAM ARE\n# REQUIRED BEFORE ANYTHING IS ACTUALLY DISPLAYED ON THE ERROR METERS.\n# NOTE: EACH CALL TO NEEDLER MUST BE SEPARATED BY AT LEAST 50MS TO ASSURE PROPER RELAY SEQUENCING.\n\n# ERASABLE USED:\n#\t\tAK\t\tCDUXCMD\n#\t\tAK1\t\tCDUYCMD\n#\t\tAK2\t\tCDUZCMD\n#\t\tEDRIVEX\t\tA,L,Q\n#\t\tEDRIVEY\t\tT5TEMP\n#\t\tEDRIVEZ\t\tSPNDX\n\n# SWITCHES:\tRCSFLAGS\tBITS 3,2\n\n# I/O CHANNELS:\tCHAN12\t\tBIT 4 (COARSE ALIGN - READ ONLY)\n# Page 1011\n#\t\tCHAN12\t\tBIT 6 (IMU ERROR COUNTER ENABLE)\n#\t\tCHAN14\t\tBIT 13,14,15 (DAC ACTIVITY)\n\n\n# SIGN CONVENTION<\tAK = THETAC - THETA\n#\t\tWHERE\tTHETAC = COMMAND ANGLE\n#\t\t\tTHETA = PRESENT ANGLE\n\n\nNEEDLER\t\tCAF\tBIT4\t\t# CHECK FOR COARSE ALIGN ENABLE\n\t\tEXTEND\t\t\t# IF IN COARSE ALIGN DO NOT USE IMU\n\t\tRAND\tCHAN12\t\t# ERROR COUNTERS.  DONT USE NEEDLES\n\t\tEXTEND\n\t\tBZF\tNEEDLER1\n\t\tCS\tRCSFLAGS\t# SET BIT3 FOR INITIALIZATION PASS\n\t\tMASK\tBIT3\n\t\tADS\tRCSFLAGS\n\t\tTC\tQ\n\nNEEDLER1\tCA\tRCSFLAGS\n\t\tMASK\tSIX\n\t\tEXTEND\n\t\tBZF\tNEEDLES3\n\t\tMASK\tBIT3\n\t\tEXTEND\n\t\tBZF\tNEEDLER2\t# BIT3 = 0, BIT2 = 1\n\n\t\tCS\tBIT6\t\t# FIRST PASS BIT3 = 1\n\t\tEXTEND\t\t\t# DISABLE IMU ERROR COUNTER TO ZERO DACS\n\t\tWAND\tCHAN12\t\t# MUST WAIT AT LEAST 60 MS BEFORE\nNEEDLE11\tCS\tZERO\t\t# ENABLING COUNTERS.\n\t\tTS\tAK\t\t# ZERO THE INPUTS ON FIRST PASS\n\t\tTS\tAK1\n\t\tTS\tAK2\n\t\tTS\tEDRIVEX\t\t# ZERO THE DISPLAY REGISTERS\n\t\tTS\tEDRIVEY\n\t\tTS\tEDRIVEZ\n\t\tTS\tCDUXCMD\t\t# ZERO THE OUT COUNTERS\n\t\tTS\tCDUYCMD\n\t\tTS\tCDUZCMD\n\t\tCS\tSIX\t\t# RESET RCSFLAGS FOR PASS2\n\t\tMASK\tRCSFLAGS\n\t\tAD\tBIT2\n\t\tTS\tRCSFLAGS\n\t\tTC\tQ\t\t# END PASS1\n\nNEEDLER2\tCAF\tBIT6\t\t# ENABLE IMU ERROR COUNTERS\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\t\tCS\tSIX\t\t# RESET RCSFLAGS TO DISPLAY ATTITUDE\n# Page 1012\n\t\tMASK\tRCSFLAGS\t# ERRORS    WAIT AT LEAST 4 MS FOR\n\t\tTS\tRCSFLAGS\t# RELAY CLOSURE\n\t\tTC\tQ\n\nNEEDLES3\tCAF\tBIT6\t\t# CHECK TO SEE IF IMU ERROR COUNTER\n\t\tEXTEND\t\t\t# IS ENABLED\n\t\tRAND\tCHAN12\n\t\tEXTEND\t\t\t# IF NOT RECYCLE NEEDLES\n\t\tBZF\tNEEDLER +5\n\nNEEDLES\t\tCAF\tTWO\nDACLOOP\t\tTS\tSPNDX\n\t\tCS\tQUARTER\n\t\tEXTEND\n\t\tINDEX\tSPNDX\n\t\tMP\tAK\n\t\tTS\tL\n\t\tCCS\tA\n\t\tCA\tDACLIMIT\n\t\tTCF\t+2\n\t\tCS\tDACLIMIT\n\t\tAD\tL\n\t\tTS\tT5TEMP\t\t# OVFLO CHK\n\t\tTCF\t+4\n\t\tINDEX\tA\t\t# ON OVERFLOW LIMIT OUTPUT TO +-384\n\t\tCAF\tDACLIMIT\n\t\tTS\tL\n\t\tINDEX\tSPNDX\n\t\tCS\tEDRIVEX\t\t# CURRENT VALUE OF DAC\n\t\tAD\tL\n\t\tINDEX\tSPNDX\n\t\tADS\tCDUXCMD\n\t\tINDEX\tSPNDX\n\t\tLXCH\tEDRIVEX\n\t\tCCS\tSPNDX\n\t\tTCF\tDACLOOP\n\t\tCAF\t13,14,15\n\t\tEXTEND\n\t\tWOR\tCHAN14\t\t# SET DAC ACTIVITY BITS\n\t\tTC\tQ\n\nREINIT\t\tCAF\tDELAY200\t# ........TILT LOGIC\n\t\tTS\tTIME5\t\t# REINITIALIZE DAP IN 200MS\n\t\tTS\tT5PHASE\n\t\tTCF\tRESUME\nDELAY200\tDEC\t16364\t\t# 200MS\n\n\t\tDEC\t-384\n\n# Page 1013\nDACLIMIT\tDEC\t16000\n\t\tDEC\t384\n\n# Page 1014\n# INITIALIZATION PROGRAM FOR RCS-CSM AUTOPILOT\n\n# THE FOLLOWING QUANTITIES WILL BE ZEROED AND SHOULD APPEAR IN CONSECUTIVE LOCATIONS IN MEMORY AFTER WBODY\n\n# WBODY\t\t(+1)\t\tDFT\t\t\tTAU2\n# WBODY1\t(+1)\t\tDFT1\t\t\tBIAS\n# WBODY2\t(+1)\t\tDFT2\t\t\tBIAS1\n# ADOT\t\t(+1)\t\tDRHO\t(+1)\t\tBIAS2\n# ADOT1\t\t(+1)\t\tDRHO1\t(+1)\t\tERRORX\n# ADOT2\t\t(+1)\t\tDRHO2\t(+1)\t\tERRORY\n# MERRORX\t(+1)\t\tATTSEC\t\t\tERRORZ\n# MERRORY\t(+1)\t\tTAU\n# MERRORZ\t(+1)\t\tTAU1\nFRESHDAP\tCAF\tONE\t\t# RESET HOLDFLAG TO STOP AUTOMATIC\n\t\tTS\tHOLDFLAG\t# STEERING AND PREPARE TO PICK UP AN\n\t\t\t\t\t# ATTITUDE HOLD REFERENCE\n\nREDAP\t\tTC\tIBNKCALL\t# DECODE DAPDATR1, DAPDATR2 FOR DEADBANDS\n\t\tCADR\tS41.2\t\t# RATES, QUADFAILS, QUAD MANAGEMENT\n\n\t\tTC\tIBNKCALL\t# DECODE IXX, IAVG, AND CONVERT\n\t\tCADR\tS40.14\t\t# TO AUTOPILOT GAINS\n\n\t\tCAF\tNO.T5VAR\t# NO. LOCATIONS TO BE ZEROED MINUS ONE\nZEROT5\t\tTS\tSPNDX\t\t# ZERO ALL NECESSARY ERASABLE REGISTERS\n\t\tCAF\tZERO\n\t\tINDEX\tSPNDX\n\t\tTS\tWBODY\n\t\tCCS\tSPNDX\n\t\tTCF\tZEROT5\n\t\tTCR\tZEROJET\n\n\t\tCS\tZERO\n\t\tTS\tCHANTEMP\t# INITIALIZE MINIMUM IMPULSE CONTROL\n\n\t\tTS\tCH31TEMP\t# INITIALIZE RHC POSITION MEMORY FOR\n\t\t\t\t\t# MANUAL RATE MODES\n\n\t\tCAF\t=.24\n\t\tTS\tSLOPE\t\t# INITIALIZE SWITCHING LOGIC SLOPE\n\n\t\tCAF\tFOUR\n\t\tTS\tT5TIME\t\t# PHASE 0 RESETS FOR PHASE 2 INTERRUPT IN\n\t\t\t\t\t# 60 MS.  PHASE 2 RESETS FOR PHASE 1 RUPT\n\t\t\t\t\t# IN (80MS - T5TIME(40MS)).  THEREFORE\n\t\t\t\t\t# PHASE 1 (RATEFILTER) BEGINS CYCLING 100\n\t\t\t\t\t# MS FROM NOW AND EVERY 100MS THEREAFTER.\n\n\t\tCAF\tELEVEN\n\t\tTS\tATTKALMN\t# RESET TO PICK UP KALMAN FILTER GAINS\n\t\t\t\t\t# TO INITIALIZE THE S/C ANGULAR RATES\n# Page 1015\n\t\tCA\tCDUX\n\t\tTS\tRHO\n\t\tCA\tCDUY\n\t\tTS\tRHO1\n\t\tCA\tCDUZ\n\t\tTS\tRHO2\n\t\tCAF\tZERO\t\t# RESET AUTOPILOT TO BEGIN EXECUTING\n\t\tTS\tT5PHASE\t\t# PHASE2 OF PROGRAM\n\n\t\tCS\tIMODES33\t# CHECK IMU STATUS\n\t\tMASK\tBIT6\t\t# IF BIT6 = 0 IMU IN FINE ALIGN\n\t\tCCS\tA\t\t# IF BIT6 = 1 IMU NOT READY\n\t\tTCF\tIMUAOK\n\t\tTS\tATTKALMN\t# CANNOT USE IMU\n\t\tCAF\tRCSINITB\t# PROVIDE FREE CONTROL ONLY\n\t\tTCF\tRCSSWIT\t\t# DONT START UP RATE FILTER\n\t\t\t\t\t# SIGNAL NO RATE FILTER\n\nIMUAOK\t\tCAF\tPRIO34\t\t# START MATRIX INITIALIZATION\n\t\tTC\tNOVAC\t\t# BYPASS IF IMU NOT IN FINE ALIGN\n\t\tEBANK=\tKMPAC\n\t\t2CADR\tAMBGUPDT\n\n\t\tCAF\tRCSINIT\t\t# CLEAR BIT14 -ASSUME WE HAVE A GOOD IMU\nRCSSWIT\t\tTS\tRCSFLAGS\t# CLEAR BIT1  -INITIALIZE T6 PROGRAM\n\t\t\t\t\t#   SET BIT3  -INITIALIZE NEEDLES\n\t\t\t\t\t# CLEAR BIT4  -RESET FOR FDAIDSP1\n\t\tCAF\tT5WAIT60\t# NEXT T5RUPT 60 MS FROM NOW TO ALLOW IMU\n\t\t\t\t\t# ERROR COUNTER TO ZERO.\n\t\t\t\t\t# (MINIMUM DELAY = 15 MS)\n\t\tTS\tTIME5\t\t# SINCE ATTKALMN IS +11, PROGRAM WILL THEN\n\t\tTC\tRESUME\t\t# PICK UP THE KALMAN FILTER GAINS.  RATE\n\t\t\t\t\t# FILTER WILL BEGIN OPERATING ZOOMS FROM\n\t\t\t\t\t# NOW\n\n# CONSTANTS USED IN INITIALIZATION PROGRAM\n\nNO.T5VAR\tDEC\t36\n=.24\t\tDEC\t.24\t\t# = SLOPE OF 0.6/SEC\nRCSINIT\t\tOCT\t00004\nRCSINITB\tOCT\t20004\nT5WAIT60\tDEC\t16378\t\t# = 6 CS\n\t\tEBANK=\tKMPAC\nT6ADDR\t\t2CADR\tT6START\n\nZEROJET\t\tCAF\tELEVEN\t\t# ZERO BLAST2, BLAST1, BLAST, YWORD2,\n\t\tTS\tSPNDX\t\t# YWORD1, PWORD2, PWORD1, RWORD2,\n\t\tCAF\tZERO\t\t# AND RWORD1.\n\n# Page 1016\n\t\tINDEX\tSPNDX\n\t\tTS\tRWORD1\n\t\tCCS\tSPNDX\n\t\tTCF\tZEROJET +1\n\n\t\tCAF\tFOUR\n\t\tTS\tBLAST1 +1\n\t\tCAF\tELEVEN\n\t\tTS\tBLAST2 +1\n\n\t\tCS\tBIT1\n\t\tMASK\tRCSFLAGS\n\t\tTS\tRCSFLAGS\t# RESET BIT1 OF RCSFLAGS TO 0\n\n\t\tEXTEND\n\t\tDCA\tT6ADDR\n\t\tDXCH\tT6LOC\n\t\tCAF\t=+14MS\t\t# ENABLE T6RUPT TO SHUT OFF JETS IN 14 MS.\n\t\tTS\tTIME6\n\t\tCAF\tBIT15\n\t\tEXTEND\n\t\tWOR\tCHAN13\n\n\t\tTC\tQ\n\nT5PHASE2\tCCS\tATTKALMN\t# IF (+) INITIALIZE RATE ESTIMATE\n\t\tTCF\tKALUPDT\n\n\t\tTCF\t+2\t\t# ONLY IF ATTKALMN POSITIVE\n\t\tTCF\t+1\n\t\tCA\tDELTATT2\t# RESET FOR PHASE3 IN 20 MS\n\t\tXCH\tTIME5\t\t# (JET SELECTION LOGIC)\n\t\tADS\tT5TIME\t\t# TO COMPENSATE FOR DELAYS IN T5RUPT\n\n\t\tCA\tRCSFLAGS\t# IF A HIGH RATE AUTO MANEUVER IS IN\n\t\tMASK\tBIT15\t\t# PROGRESS (BIT 15 OF RCSFLAGS SET), SET\n\t\tEXTEND\t\t\t# ATTKALMN TO -1\n\t\tBZF\tNOHIAUTO\t# OTHERWISE SET ATTKALMN TO 0.\n\t\tCS\tONE\nNOHIAUTO\tTS\tATTKALMN\n\n# Page 1017\n# MANUAL ROTATION COMMANDS\n\n\t\tCS\tOCT01760\t# RESET FORCED FIRING BITS (BITS 10 TO 5\n\t\tMASK\tRCSFLAGS\t# OF RCSFLAGS) TO ZERO\n\t\tTS\tRCSFLAGS\n\n\t\tEXTEND\n\t\tREAD\tCHAN31\n\t\tTS\tL\n\t\tCA\tCH31TEMP\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tMASK\tMANROT\t\t# = OCT00077\n\t\tEXTEND\n\t\tBZMF\tNOCHANGE\n\n\t\tLXCH\tA\n\t\tTS\tCH31TEMP\t# SAVE CONTENTS OF CHANNEL 31 IN CH31TEMP\n\n\t\tCA\tL\n\t\tEXTEND\n\t\tMP\tBIT5\t\t# PUT BITS 6-1 OF A IN BITS 10-5 OF L\n\t\tCA\tL\n\t\tADS\tRCSFLAGS\t# SET FORCED FIRING BITS FOR AXES WITH\n\t\t\t\t\t# CHANGES IN COMMAND.  BITS 10,9 FOR\n\t\t\t\t\t# ROLL, BITS 8,7 FOR YAW, BITS 6,5 FOR\n\t\t\t\t\t# PITCH\n\n\t\tCS\tRCSFLAGS\t# SET RATE DAMPING FLAGS (BITS 13,12,AND\n\t\tMASK\tOCT16000\t# 11 OF RCSFLAGS)\n\t\tADS\tRCSFLAGS\n\nNOCHANGE\tCS\tCH31TEMP\n\t\tMASK\tMANROT\n\t\tEXTEND\n\t\tBZMF\tAHFNOROT\t# IF NO MANUAL COMMANDS, GO TO AHFNOROT\n\n\t\tTS\tHOLDFLAG\t# SET HOLDFLAG +\n\n\t\tTC\tSTICKCHK\t# WHEN THE RHC IS OUT OF DETENT, PMANNDX,\n\t\t\t\t\t# YMANNDX, AND RMANNDX ARE ALL SET, BY\n\t\t\t\t\t# MEANS OF STICKCHK, TO 0, 1, OR 2 FOR NO,\n\t\t\t\t\t# +, OR - ROTATION RESPECTIVELY AS\n\t\t\t\t\t# COMMANDED BY THE RHC.\n\n\t\t\t\t\t# HOWEVER, IT IS WELL TO NOTE THAT AFTER\n\t\t\t\t\t# THE RHC IS RETURNED TO DETENT, THE\n\t\t\t\t\t# PROGRAM BRANCHES TO AHFNOROT AND AVOIDS\n\t\t\t\t\t# STICKCHK SO PMANNDX, YMANNDX, AND\n\t\t\t\t\t# RMANNDX ARE NOT RESET TO ZERO BUT RATHER\n\t\t\t\t\t# LEFT SET TO THEIR LAST OUT OF DETENT\n# Page 1018\n\t\t\t\t\t# VALUES.\n\n\t\tCS\tFLAGWRD1\t# SET STIKFLAG TO INFORM STEERING\n\t\tMASK\tBIT14\t\t# PROGRAMS (P20) THAT ASTRONAUT HAS\n\t\tADS\tFLAGWRD1\t# ASSUMED ROTATIONAL CONTROL OF SPACECRAFT\n\n\t\tCAF\tBIT14\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZMF\tFREEFUNC\n\n\t\tCA\tRCSFLAGS\t# EXAMINE RCSFLAGS TO SEE IF RATE FILTER\n\t\tMASK\tBIT14\t\t# HAS BEEN INITIALIZED\n\t\tCCS\tA\t\t# IF SO, PROCEED WITH MANUAL RATE COMMANDS\n\t\tTCF\tREINIT\t\t# .....TILT, RECYCLE TO INITIALIZE FILTER\n\n\t\tCS\tFIVE\t\t# IF MANUAL MANEUVER IS AT HIGH RTE, SET\n\t\tAD\tRATEINDX\t# ATTKALMN TO -1.\n\t\tEXTEND\t\t\t# OTHERWISE, LEAVE ATTKALMN ALONE.\n\t\tBZMF\t+3\n\t\tCS\tONE\n\t\tTS\tATTKALMN\n\n\t\tCAF\tTWO\t\t# AUTO-HOLD MANUAL ROTATION\nSETWBODY\tTS\tSPNDX\n\t\tDOUBLE\n\t\tTS\tDPNDX\n\t\tINDEX\tSPNDX\t\t# RMANNDX = 0 NO ROTATION\n\t\tCA\tRMANNDX\t\t#\t  = 1  + ROTATION\n\t\tEXTEND\t\t\t#  \t  = 2  - ROTATION\n\t\tBZF\tNORATE\t\t# IF NO ROTATION COMMAND ON THIS AXIS,\n\t\t\t\t\t# GO TO NORATE.\n\n\t\tAD\tRATEINDX\t# RATEINDX = 0  0.05 DEG/SEC\n\t\tTS\tQ\t\t#          = 2  0.2  DEG/SEC\n\t\tINDEX\tQ\t\t#          = 4  0.5  DEG/SEC\n\t\tCA\tMANTABLE -1\t#          = 6  2.0  DEG/SEC\n\t\tEXTEND\n\t\tMP\tBIT9\t\t# MULTIPLY MANTABLE BY 2 TO THE -6\n\t\tINDEX\tDPNDX\t\t# TO GET COMMANDED RATE.\n\t\tDXCH\tWBODY\t\t# SET WBODY TO COMMANDED RATE.\n\n\t\tCA\tRCSFLAGS\n\t\tMASK\tOCT16000\t# IS RATE DAMPING COMPLETED (BITS 13,12 AND\n\t\tEXTEND\t\t\t# 11 OF RCSFLAGS ALL ZERO.)  IF SO, GO TO\n\t\tBZF\tMERUPDAT\t# MERUPDAT TO UPDATE CUMULATIVE ATTITUDE\n\t\t\t\t\t# ERROR.\n\n# Page 1019\nZEROER\t\tCA\tZERO\t\t# ZEROER ZEROS MERRORS\n\t\tZL\n\t\tINDEX\tDPNDX\n\t\tDXCH\tMERRORX\n\t\tTCF\tSPNDXCHK\n\nNORATE\t\tZL\n\t\tINDEX\tDPNDX\n\t\tDXCH\tWBODY\t\t# ZERO WBODY FOR THIS AXIS\n\t\tCA\tRCSFLAGS\n\t\tMASK\tOCT16000\n\t\tEXTEND\t\t\t# IS RATE DAMPING COMPLETED\n\t\tBZF\tSPNDXCHK\t# YES, KEEP CURRENT MERRORX GO TO SPNDXCHK\n\t\tTCF\tZEROER\t\t# NO,GO TO ZEROER\n\nMERUPDAT\tINDEX\tQ\t\t# MERRORX=MERRORX+MEASURED CHANGE IN ANGLE\n\t\tCS\tMANTABLE -1\t# -COMMANDED CHANGE IN ANGLE\n\t\tEXTEND\t\t\t# THE ADDITION OF MEASURED CHANGE IN ANGLE\n\t\tMP\tBIT7\t\t# HAS ALREADY BEEN DONE IN THE RATE FILTER\n\t\tINDEX\tDPNDX\t\t# COMMANDED CHANGE IN ANGLE = WBODY TIMES\n\t\tDAS\tMERRORX\t\t# .1SEC = MANTABLE ENTRY TIMES 2 TO THE -8\n\nSPNDXCHK\tINDEX\tDPNDX\n\t\tCA\tMERRORX\n\t\tINDEX\tSPNDX\n\t\tTS\tERRORX\t\t# ERRORX = HIGH ORDER WORD OF MERRORX\n\t\tCCS\tSPNDX\n\t\tTCF\tSETWBODY\n\t\tTCF\tJETS\n\nOCT01760\tOCT\t01760\t\t# FORCED FIRING BITS MASK\n\nOCT01400\tOCT\t01400\t\t# ROLL FORCED FIRING MASK\tORDER OF\nOCT00060\tOCT\t00060\t\t# PITCH FORCED FIRING MASK\tDEFINITION\nOCT00300\tOCT\t00300\t\t# YAW FORCED FIRING MASK\tMUST BE\n\t\t\t\t\t#\t\t\t\tPRESERVED\n\t\t\t\t\t#\t\t\t      FOR INDEXING\nMANROT\t\tOCT\t77\nOCT16000\tOCT\t16000\t\t# RATE DAMPING FLAGS MASK\nMANTABLE\tDEC\t.0071111\n\t\tDEC\t-.0071111\n\t\tDEC\t.028444\n\t\tDEC\t-0.028444\n\t\tDEC\t.071111\n\t\tDEC\t-.071111\n\t\tDEC\t.284444\n\t\tDEC\t-.284444\n=+14MS\t\tDEC\t23\nFREEFUNC\tINDEX\tRMANNDX\t\t# ACCELERATION\n# Page 1020\n\t\tCA\tFREETAU\t\t# COMMANDS\n\t\tTS\tTAU\n\t\tINDEX\tPMANNDX\n\t\tCA\tFREETAU\t\t# FREETAU\t0 SEC\n\t\tTS\tTAU1\t\t# +1\t       +0.10 SEC\n\t\tINDEX\tYMANNDX\t\t# +2\t       -0.10 SEC\n\t\tCA\tFREETAU\t\t# (+3)\t\t0 SEC\n\t\tTS\tTAU2\n\t\tTCF\tT6PROGM\n\nFREETAU\t\tDEC\t0\n\t\tDEC\t480\n\t\tDEC\t-480\n\t\tDEC\t0\n\nT6PROGM\t\tCAF\tZERO\t\t# FOR MANUAL ROTATIONS\n\t\tTS\tERRORX\n\t\tTS\tERRORY\n\t\tTS\tERRORZ\n\t\tTCF\tT6PROG\n\n# Page 1021\n\t\tDEC\t.2112\t\t# FILTER GAIN FOR TRANSLATION, LEM ON\n\t\tDEC\t.8400\t\t# FILTER GAIN FOR TRANSLATION 2(ZETA)WN DT\n\t\tDEC\t.2112\t\t# FILTER GAIN FOR 2 DEGREES/SEC MANEUVERS\nGAIN1\t\tDEC\t.0640\t\t# KALMAN FILTER GAINS FOR INITIALIZATION\n\t\tDEC\t.3180\t\t# OF ATTITUDE RATES\n\t\tDEC\t.3452\n\t\tDEC\t.3774\n\t\tDEC\t.4161\n\t\tDEC\t.4634\n\t\tDEC\t.5223\n\t\tDEC\t.5970\n\t\tDEC\t.6933\n\t\tDEC\t.8151\n\t\tDEC\t.9342\n\n\t\tDEC\t.0174\t\t# FILTER GAIN FOR TRANSLATION, LEM ON\n\t\tDEC\t.3600\t\t# FILTER GAIN FOR TRANSLATION (WN)(WN)DT\n\t\tDEC\t.0174\t\t# FILTER GAIN FOR 2 DEGREES/SEC MANEUVERS\nGAIN2\t\tDEC\t.0016\t\t# SCALED 10\n\t\tDEC\t.0454\n\t\tDEC\t.0545\n\t\tDEC\t.0666\n\t\tDEC\t.0832\n\t\tDEC\t.1069\n\t\tDEC\t.1422\n\t\tDEC\t.1985\n\t\tDEC\t.2955\n\t\tDEC\t.4817\n\t\tDEC\t.8683\nSTICKCHK\tTS\tT5TEMP\n\t\tMASK\tTHREE\t\t# INDICES FOR MANUAL ROTATION\n\t\tTS\tPMANNDX\n\t\tCA\tT5TEMP\n\t\tEXTEND\t\t\t# MAN RATE  0  0 RATE (DP)\n\t\tMP\tQUARTER\t\t# \t   +1 \t+RATE (DP)\n\t\tTS\tT5TEMP\t\t#          +2\t-RATE (DP)\n\t\tMASK\tTHREE\t\t#\t  (+3)\t0 RATE (DP)\n\t\tTS\tYMANNDX\n\t\tCA\tT5TEMP\n\t\tEXTEND\n\t\tMP\tQUARTER\n\t\tTS\tRMANNDX\n\t\tTC\tQ\n\n\nKALUPDT\t\tTS\tATTKALMN\t# INITIALIZATION OF ATTITUDE RATES USING\n\t\t\t\t\t# KALMAN FILTER TAKES 1.1 SEC\n\n\t\tCA\tDELTATT\t\t# =1SEC - 80MS\n\t\tAD\tT5TIME\t\t# + DELAYS\n# Page 1022\n\t\tTS\tTIME5\n\t\tTCF\t+3\n\t\tCAF\tDELTATT2\t# SAFETY PLAY TO ASSURE\n\t\tTS\tTIME5\t\t# A T5RUPT\n\nKRESUME2\tCS\tZERO\t\t# RESET FOR PHASE1\n\t\tTS\tT5PHASE\t\t# RESUME INTERRUPTED PROGRAM\n\t\tTCF\tRESUME\n\nFDAIDSP2\tCS\tBIT4\t\t# RESET FOR FDAIDSP1\n\t\tMASK\tRCSFLAGS\n\t\tTS\tRCSFLAGS\n\n\t\tCS\tFLAGWRD0\t# ON - DISPLAY ONE OF THE TOTAL ATTITUDE\n\t\tMASK\tBIT9\t\t# ERRORS\n\t\tEXTEND\n\t\tBZF\tFDAITOTL\n\t\tEXTEND\n\t\tDCS\tERRORX\t\t# OFF -DISPLAY AUTOPILOT FOLLOWING ERROR\n\t\tDXCH\tAK\n\t\tCS\tERRORZ\n\t\tTS\tAK2\n\t\tTCF\tRESUME\t\t# END PHASE 1\n\nFDAITOTL\tCA\tFLAGWRD9\n\t\tMASK\tBIT6\n\t\tEXTEND\n\t\tBZF\tWRTN17\t\t# IS N22ORN17 (BIT6 OF FLAGWRD9) = 0\n\t\t\t\t\t# IF SO, GO TO WRTN17\nWRTN22\t\tEXTEND\t\t\t# OTHERWISE, CONTINUE ON TO WRTN22 AND\n\t\tDCA\tCTHETA\t\t# GET SET TO COMPUTE TOTAL ATTITUDE\n\t\tDXCH\tWTEMP\t\t# ERROR WRT N22 BY PICKING UP THE THREE\n\t\tCA\tCPHI\t\t# COMPONENTS OF N22\n\nGETAKS\t\tEXTEND\t\t\t# COMPUTE TOTAL ATTITUDE ERROR FOR\n\t\tMSU\tCDUX\t\t# DISPLAY ON FDAI ERROR NEEDLES\n\t\tTS\tAK\n\t\tCA\tWTEMP\n\t\tEXTEND\n\t\tMSU\tCDUY\n\t\tTS\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB1\n\t\tADS\tAK\n\t\tCA\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB4\n# Page 1023\n\t\tTS\tAK1\n\t\tCA\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB7\n\t\tTS\tAK2\n\t\tCA\tWTEMP +1\n\t\tEXTEND\n\t\tMSU\tCDUZ\n\t\tTS\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB5\n\t\tADS\tAK1\n\t\tCA\tT5TEMP\n\t\tEXTEND\n\t\tMP\tAMGB8\n\t\tADS\tAK2\n\t\tTCF\tRESUME\t\t# END PHASE1 OF RCS DAP\n\nWRTN17\t\tEXTEND\t\t\t# GET SET TO COMPUTE TOTAL ASTRONAUT\n\t\tDCA\tCPHIX +1\t# ATTITUDE ERROR WRT N17 BY PICKING UP\n\t\tDXCH\tWTEMP\t\t# THE THREE COMPONENTS OF N17\n\t\tCA\tCPHIX\n\t\tTCF\tGETAKS\n\n# Page 1024 (empty page)\n"
  },
  {
    "path": "Comanche055/README.md",
    "content": "# Comanche055\n\nThe 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.\n\n## Background\n\nFor organizatinal purposes RSB split the huge monolithic source code into smaller, more manageable chunks--i.e., into individual source\nfiles. Those files are rejoined as \"includes\". The code chunks correspond to natural divisions into sub-programs. In fact, these divisions are more-or-less specified by the source code itself. Refer to the `\"SUBROUTINE CALLS\"` at the very beginning of `ASSEMBLY_AND_OPERATION_INFORMATION.agc`.\n\nIt may be reasonably asked why tens of thousands of lines of source are joined by means of inclusion, rather than simply assembling the source files individually and then linking them to form the executable. The answer is that the original development team had no linker. The builds were monolithic just like this.\n\nThere was a big emphasis on reusability of the code in the original project, apparently, but this reusability took the form of inserting your deck of punch-cards at the appropriate position in somebody else's deck of punch-cards. (Actually, I think the card-decks were turned into tape libraries, and the modules were mixed-and-matched from the tape libraries, but the principle is the same.) So, indeed, the method of file-inclusion is a very fair representation of the methods used in the original development...with the improvement, of course,\nthat you no longer have to worry about dropping the card deck. On the other hand, I (RSB) wasn't there at the time, so I may have no idea what I'm talking about.\n\nFinally, note that the original Apollo AGC assembler (called `YUL`) is no longer available (as far as I can tell). Actually, it had already been replaced by another assembler (called `GAP`) by the time of Apollo 11, but GAP isn't available either. The replacement assembler yaYUL accepts a slightly different format for the source code from what YUL or GAP accepted, so the source code has been targeted for assembly with yaYUL.\n\nWhat follows is simply a bunch of file-includes for the individual code chunks. The page numbers have been marked to make proof-reading easier. The page images also contain a lot of interesting tables (cross-referenced to page numbers) created by GAP, but not duplicated by yaYUL, so it's still valuable even if the source-files listed below are in hand.\n\n## Source Code Index\n\n### INFORMATION\n\nSource File                              | Page Number\n:--------------------------------------- | :----------\n[CONTRACT_AND_APPROVALS.agc]             | 1\n[ASSEMBLY_AND_OPERATION_INFORMATION.agc] | 2-26\n[TAGS_FOR_RELATIVE_SETLOC.agc]           | 27-35\n\n### COMERASE\n\nSource File                | Page Number\n:------------------------- | :----------\n[ERASABLE_ASSIGNMENTS.agc] | 37-130\n\n### COMAID\n\nSource File                           | Page Number\n:------------------------------------ | :----------\n[INTERRUPT_LEAD_INS.agc]              | 131-132\n[T4RUPT_PROGRAM.agc]                  | 133-169\n[DOWNLINK_LISTS.agc]                  | 170-180\n[FRESH_START_AND_RESTART.agc]         | 181-210\n[RESTART_TABLES.agc]                  | 211-221\n[SXTMARK.agc]                         | 222-235\n[EXTENDED_VERBS.agc]                  | 236-267\n[PINBALL_NOUN_TABLES.agc]             | 268-284\n[CSM_GEOMETRY.agc]                    | 285-296\n[IMU_COMPENSATION_PACKAGE.agc]        | 297-306\n[PINBALL_GAME_BUTTONS_AND_LIGHTS.agc] | 307-389\n[R60_62.agc]                          | 390-398\n[ANGLFIND.agc]                        | 399-411\n[GIMBAL_LOCK_AVOIDANCE.agc]           | 412-413\n[KALCMANU_STEERING.agc]               | 414-419\n[SYSTEM_TEST_STANDARD_LEAD_INS.agc]   | 420-422\n[IMU_CALIBRATION_AND_ALIGNMENT.agc]   | 423-455\n\n### COMEKISS\n\nSource File                                 | Page Number\n:------------------------------------------ | :----------\n[GROUND_TRACKING_DETERMINATION_PROGRAM.agc] | 456-459\n[P34-35_P74-75.agc]                         | 460-504\n[R31.agc]                                   | 505-510\n[P76.agc]                                   | 511-513\n[R30.agc]                                   | 514-524\n[STABLE_ORBIT.agc]                          | 525-532\n\n### TROUBLE\n\nSource File                                   | Page Number\n:-------------------------------------------- | :----------\n[P11.agc]                                     | 533-550\n[TPI_SEARCH.agc]                              | 551-561\n[P20-P25.agc]                                 | 562-634\n[P30-P37.agc]                                 | 635-648\n[P32-P33_P72-P73.agc]                         | 649-683\n[P40-P47.agc]                                 | 684-736\n[P51-P53.agc]                                 | 737-784\n[LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc] | 785-788\n[P61-P67.agc]                                 | 789-818\n[SERVICER207.agc]                             | 819-836\n[ENTRY_LEXICON.agc]                           | 837-843\n[REENTRY_CONTROL.agc]                         | 844-882\n[CM_BODY_ATTITUDE.agc]                        | 883-889\n[P37_P70.agc]                                 | 890-933\n[S-BAND_ANTENNA_FOR_CM.agc]                   | 934-935\n[LUNAR_LANDMARK_SELECTION_FOR_CM.agc]         | 936\n\n### TVCDAPS\n\nSource File                          | Page Number\n:----------------------------------- | :----------\n[TVCINITIALIZE.agc]                  | 937-944\n[TVCEXECUTIVE.agc]                   | 945-950\n[TVCMASSPROP.agc]                    | 951-955\n[TVCRESTARTS.agc]                    | 956-960\n[TVCDAPS.agc]                        | 961-978\n[TVCSTROKETEST.agc]                  | 979-983\n[TVCROLLDAP.agc]                     | 984-998\n[MYSUBS.agc]                         | 999-1001\n[RCS-CSM_DIGITAL_AUTOPILOT.agc]      | 1002-1024\n[AUTOMATIC_MANEUVERS.agc]            | 1025-1036\n[RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc] | 1037-1038\n[JET_SELECTION_LOGIC.agc]            | 1039-1062\n[CM_ENTRY_DIGITAL_AUTOPILOT.agc]     | 1063-1092\n\n### CHIEFTAN\n\nSource File                          | Page Number\n:----------------------------------- | :----------\n[DOWN-TELEMETRY_PROGRAM.agc]         | 1093-1102\n[INTER-BANK_COMMUNICATION.agc]       | 1103-1106\n[INTERPRETER.agc]                    | 1107-1199\n[FIXED_FIXED_CONSTANT_POOL.agc]      | 1200-1204\n[INTERPRETIVE_CONSTANTS.agc]         | 1205-1206\n[SINGLE_PRECISION_SUBROUTINES.agc]   | 1207\n[EXECUTIVE.agc]                      | 1208-1220\n[WAITLIST.agc]                       | 1221-1235\n[LATITUDE_LONGITUDE_SUBROUTINES.agc] | 1236-1242\n[PLANETARY_INERTIAL_ORIENTATION.agc] | 1243-1251\n[MEASUREMENT_INCORPORATION.agc]      | 1252-1261\n[CONIC_SUBROUTINES.agc]              | 1262-1308\n[INTEGRATION_INITIALIZATION.agc]     | 1309-1333\n[ORBITAL_INTEGRATION.agc]            | 1334-1354\n[INFLIGHT_ALIGNMENT_ROUTINES.agc]    | 1355-1364\n[POWERED_FLIGHT_SUBROUTINES.agc]     | 1365-1372\n[TIME_OF_FREE_FALL.agc]              | 1373-1388\n[STAR_TABLES.agc]                    | 1389-1393\n[AGC_BLOCK_TWO_SELF-CHECK.agc]       | 1394-1403\n[PHASE_TABLE_MAINTENANCE.agc]        | 1404-1413\n[RESTARTS_ROUTINE.agc]               | 1414-1419\n[IMU_MODE_SWITCHING_ROUTINES.agc]    | 1420-1448\n[KEYRUPT_UPRUPT.agc]                 | 1449-1451\n[DISPLAY_INTERFACE_ROUTINES.agc]     | 1452-1484\n[SERVICE_ROUTINES.agc]               | 1485-1492\n[ALARM_AND_ABORT.agc]                | 1493-1496\n[UPDATE_PROGRAM.agc]                 | 1497-1507\n[RT8_OP_CODES.agc]                   | 1508-1516\n\n### MISCELLANEOUS\n\nSource File          | Page Number\n:------------------- | :----------\nGAP-generated tables | 1517-1751\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[ASSEMBLY_AND_OPERATION_INFORMATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/ASSEMBLY_AND_OPERATION_INFORMATION.agc\n[TAGS_FOR_RELATIVE_SETLOC.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TAGS_FOR_RELATIVE_SETLOC.agc\n[ERASABLE_ASSIGNMENTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/ERASABLE_ASSIGNMENTS.agc\n[INTERRUPT_LEAD_INS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/INTERRUPT_LEAD_INS.agc\n[T4RUPT_PROGRAM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/T4RUPT_PROGRAM.agc\n[DOWNLINK_LISTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/DOWNLINK_LISTS.agc\n[FRESH_START_AND_RESTART.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/FRESH_START_AND_RESTART.agc\n[RESTART_TABLES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/RESTART_TABLES.agc\n[SXTMARK.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/SXTMARK.agc\n[EXTENDED_VERBS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/EXTENDED_VERBS.agc\n[PINBALL_NOUN_TABLES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/PINBALL_NOUN_TABLES.agc\n[CSM_GEOMETRY.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CSM_GEOMETRY.agc\n[IMU_COMPENSATION_PACKAGE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/IMU_COMPENSATION_PACKAGE.agc\n[PINBALL_GAME_BUTTONS_AND_LIGHTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/PINBALL_GAME_BUTTONS_AND_LIGHTS.agc\n[R60_62.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/R60_62.agc\n[ANGLFIND.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/ANGLFIND.agc\n[GIMBAL_LOCK_AVOIDANCE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/GIMBAL_LOCK_AVOIDANCE.agc\n[KALCMANU_STEERING.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/KALCMANU_STEERING.agc\n[SYSTEM_TEST_STANDARD_LEAD_INS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/SYSTEM_TEST_STANDARD_LEAD_INS.agc\n[IMU_CALIBRATION_AND_ALIGNMENT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/IMU_CALIBRATION_AND_ALIGNMENT.agc\n[GROUND_TRACKING_DETERMINATION_PROGRAM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/GROUND_TRACKING_DETERMINATION_PROGRAM.agc\n[P34-35_P74-75.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P34-35_P74-75.agc\n[R31.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/R31.agc\n[P76.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P76.agc\n[R30.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/R30.agc\n[STABLE_ORBIT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/STABLE_ORBIT.agc\n[P11.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P11.agc\n[TPI_SEARCH.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TPI_SEARCH.agc\n[P20-P25.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P20-P25.agc\n[P30-P37.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P30-P37.agc\n[P32-P33_P72-P73.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P32-P33_P72-P73.agc\n[P40-P47.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P40-P47.agc\n[P51-P53.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P51-P53.agc\n[LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc\n[P61-P67.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P61-P67.agc\n[SERVICER207.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/SERVICER207.agc\n[ENTRY_LEXICON.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/ENTRY_LEXICON.agc\n[REENTRY_CONTROL.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/REENTRY_CONTROL.agc\n[CM_BODY_ATTITUDE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CM_BODY_ATTITUDE.agc\n[P37_P70.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/P37_P70.agc\n[S-BAND_ANTENNA_FOR_CM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/S-BAND_ANTENNA_FOR_CM.agc\n[LUNAR_LANDMARK_SELECTION_FOR_CM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/LUNAR_LANDMARK_SELECTION_FOR_CM.agc\n[TVCINITIALIZE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TVCINITIALIZE.agc\n[TVCEXECUTIVE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TVCEXECUTIVE.agc\n[TVCMASSPROP.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TVCMASSPROP.agc\n[TVCRESTARTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TVCRESTARTS.agc\n[TVCDAPS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TVCDAPS.agc\n[TVCSTROKETEST.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TVCSTROKETEST.agc\n[TVCROLLDAP.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TVCROLLDAP.agc\n[MYSUBS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/MYSUBS.agc\n[RCS-CSM_DIGITAL_AUTOPILOT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/RCS-CSM_DIGITAL_AUTOPILOT.agc\n[AUTOMATIC_MANEUVERS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/AUTOMATIC_MANEUVERS.agc\n[RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc\n[JET_SELECTION_LOGIC.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/JET_SELECTION_LOGIC.agc\n[CM_ENTRY_DIGITAL_AUTOPILOT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CM_ENTRY_DIGITAL_AUTOPILOT.agc\n[DOWN-TELEMETRY_PROGRAM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/DOWN-TELEMETRY_PROGRAM.agc\n[INTER-BANK_COMMUNICATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/INTER-BANK_COMMUNICATION.agc\n[INTERPRETER.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/INTERPRETER.agc\n[FIXED_FIXED_CONSTANT_POOL.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/FIXED_FIXED_CONSTANT_POOL.agc\n[INTERPRETIVE_CONSTANTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/INTERPRETIVE_CONSTANTS.agc\n[SINGLE_PRECISION_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/SINGLE_PRECISION_SUBROUTINES.agc\n[EXECUTIVE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/EXECUTIVE.agc\n[WAITLIST.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/WAITLIST.agc\n[LATITUDE_LONGITUDE_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/LATITUDE_LONGITUDE_SUBROUTINES.agc\n[PLANETARY_INERTIAL_ORIENTATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/PLANETARY_INERTIAL_ORIENTATION.agc\n[MEASUREMENT_INCORPORATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/MEASUREMENT_INCORPORATION.agc\n[CONIC_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONIC_SUBROUTINES.agc\n[INTEGRATION_INITIALIZATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/INTEGRATION_INITIALIZATION.agc\n[ORBITAL_INTEGRATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/ORBITAL_INTEGRATION.agc\n[INFLIGHT_ALIGNMENT_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/INFLIGHT_ALIGNMENT_ROUTINES.agc\n[POWERED_FLIGHT_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/POWERED_FLIGHT_SUBROUTINES.agc\n[TIME_OF_FREE_FALL.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/TIME_OF_FREE_FALL.agc\n[STAR_TABLES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/STAR_TABLES.agc\n[AGC_BLOCK_TWO_SELF-CHECK.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/AGC_BLOCK_TWO_SELF-CHECK.agc\n[PHASE_TABLE_MAINTENANCE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/PHASE_TABLE_MAINTENANCE.agc\n[RESTARTS_ROUTINE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/RESTARTS_ROUTINE.agc\n[IMU_MODE_SWITCHING_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/IMU_MODE_SWITCHING_ROUTINES.agc\n[KEYRUPT_UPRUPT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/KEYRUPT_UPRUPT.agc\n[DISPLAY_INTERFACE_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/DISPLAY_INTERFACE_ROUTINES.agc\n[SERVICE_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/SERVICE_ROUTINES.agc\n[ALARM_AND_ABORT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/ALARM_AND_ABORT.agc\n[UPDATE_PROGRAM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/UPDATE_PROGRAM.agc\n[RT8_OP_CODES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/RT8_OP_CODES.agc\n"
  },
  {
    "path": "Comanche055/REENTRY_CONTROL.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tREENTRY_CONTROL.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t844-882\n# Mod history:\t2009-05-08 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-23 RSB\tIn a couple of 2OCT statements, removed the\n#\t\t\t\tspace between the first and second octal words.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 844\n# ENTRY INITIALIZATION ROUTINE\n# ----------------------------\n\n\t\tBANK\t25\n\t\tSETLOC\tREENTRY\n\t\tBANK\n\n\t\tCOUNT*\t$$/ENTRY\n\t\tEBANK=\tRTINIT\n\nEBENTRY\t\t=\tEBANK7\nEBAOG\t\tEQUALS\tEBANK6\nNTRYPRIO\tEQUALS\tPRIO20\t\t# (SERVICER)\nCM/FLAGS\tEQUALS\tSTATE +6\n\nSTARTENT\tEXIT\t\t\t# MM = 63\n\n\t\t\t\t\t# COME HERE FROM CM/POSE.  RESTARTED IN CM/POSE.\n\t\tCS\tENTMASK\t\t# INITIALIZE ALL SWITCHES TO ZERO\n\t\t\t\t\t# EXCEPT LATSW, ENTRYDSP, AND GONEPAST.\n\t\t\t\t\t# GONEBY 112D BIT8 FLAG7, SELF-INITIALIZING.\n\t\tINHINT\n\t\tMASK\tCM/FLAGS\n\t\t\t\t\t# ENTRYDSP = 92D B13\n\t\t\t\t\t# GONEPAST=95D B10.\tRELVELSW=96D B9\n\t\t\t\t\t# EGSW = 97D B8\t\tNOSWITCH = 98D B7\n\t\t\t\t\t# HIND=99D B6\t\tINRLSW=100D B5\n\t\t\t\t\t# LATSW=101D B4\t\t.05GSW=102D B3\n\n\t\tAD\tENTRYSW\t\t# SET ENTRYDSP, LATSW, GONEPAST.\n\t\tTS\tCM/FLAGS\n\n\t\tRELINT\n\n\t\tTC\tINTPRET\n\n\t\tSLOAD\n\t\t\tLODPAD\n\t\tSTORE\tLOD\n\n\t\tSLOAD\n\t\t\tLADPAD\n\t\tSTORE\tLAD\n\n\t\tDMP\t\t\t# L/DCMINR = LAD COS(15)\n\t\t\tCOS15\n\t\tSTODL\tL/DCMINR\n\t\t\tLATSLOPE\n\t\tDMP\tSR1\t\t# KLAT = LAD/24\n\t\t\tLAD\n# Page 845\n\t\tSTODL\tKLAT\n\t\t\tQ7F\n\t\tSTODL\tQ7\t\t# Q7 = Q7F\n\t\t\tNEARONE\t\t# 1.0 -1BIT\n\t\tSTODL\tFACTOR\n\t\t\tLAD\n\t\tSIGN\tDCOMP\n\t\t\tHEADSUP\t\t# MAY BE NOISE FOR DISPLAY P61\n\t\tSTCALL\tL/D\t\t# L/D = - LAD SGN(HEADSUP)\n\n\t\t\tSTARTEN1\t# RETURN VIA GOTOADDR\n\t\tVLOAD\tVXV\n\t\t\tVN\t\t# (-7) M/CS\n\t\t\tUNITR\t\t# .5 UNIT\t\tREF COORDS\n\t\tUNIT\tDOT\n\t\t\tRT\t\t# RT/2 TARGET VECTOR\tREF COORDS\n\t\tSTORE\tLATANG\t\t# LATANG = UNI.RT /4\n\t\tDCOMP\tRTB\n\t\t\tSIGNMPAC\n\t\tSTODL\tK2ROLL\t\t# K2ROLL = -SGN(LATANG)\n\n\t\t\tLAD\n\t\tDMP\tDAD\n\t\t\tQ21\n\t\t\tQ22\n\t\tSTORE\tQ2\t\t# Q2 = -1152 + 500 LAD\n\n\t\tSSP\tSSP\n\t\t\tGOTOADDR\t# SET SELECTOR FOR INITIAL PASS\n\t\t\tINITROLL\n\t\t\tPOSEXIT\n\t\t\tSCALEPOP\t# SET CM/POSE TO CONTINUE AT SCALEPOP\n\n\t\tRTB\n\t\t\tSERVNOUT\t# OMIT INITIAL DISPLAY, SINCE 1ST GUESSBAD\n\n# CALCULATE THE INITIAL TARGET VECTOR: RTINIT, ALSO RTEAST, RTNORM AND RT.  ALL ARE .5 UNIT AND IN\n# REFERENCE COORDINATES.\n\nSTARTEN1\tSTQ\tVLOAD\n\t\t\tGOTOADDR\n\t\t\tLAT(SPL)\t# TARGET COORDINATES\n\t\tCLEAR\tCLEAR\t\t# DO CALL USING PAD RADIUS.  WILL UNIT IT.\n\t\t\tERADFLAG\t# ANYWAY.\n\t\t\tLUNAFLAG\n\t\tSTODL\tLAT\n\t\t\t3ZEROS\n\n\t\tSTODL\tLAT +4\t\t# SET ALT=0.\n\t\t\tPIPTIME\t\t# ESTABLISH RTINIT AT TIME OF PRESENT\n# Page 846\n\t\t\t\t\t# RN AND VN.\n\t\tSTCALL\tTIME/RTO\t# SAVE TIME BASE OF RTINIT.\n\t\t\tLALOTORV\t# C(MPAC) =TIME  (PIPTIME)\n\t\tUNIT\t\t\t# ANSWER IN ALPHAV ALSO\n\t\tSTODL\tRTINIT\t\t# .5 UNIT TARGET\t\tREF COORDS\n\t\t\t500SEC\t\t# NOMINAL ENTRY TIME FOR P63\n\t\t\t\t\t# TIME/RTO = PIPTIME, STILL.\n\t\tSTCALL\tDTEAROT\t\t# INITIALIZE EARROT\n\t\t\tEARROT1\t\t# GET RT\n\t\tDOT\tSL1\n\t\t\tUNITR\t\t# RT/2 IN MPAC\n\t\tACOS\n\t\tSTCALL\tTHETAH\t\t# RANGE ANGLE /360\n\t\t\tGOTOADDR\t# RETURN TO CALLER\n\n500SEC\t\t2DEC\t50000 B-28\t# CS\n\nENTMASK\t\tOCT\t11774\nENTRYSW\t\tOCT\t11010\t\t# ENTRYDSP B13, GONEPAST B10, LATSW B4\n# Page 847\n\nSCALEPOP\tCALL\n\t\t\tTARGETNG\n\n\t\tEXIT\n\nREFAZE10\tTC\tPHASCHNG\n\t\tOCT\t10035\t\t# SERVICER 5.3 RESTART AT REFAZE10\n\n\t\tTC\tINTPRET\n\n# JUMP TO PARTICULAR RE-ENTRY PHASE:\n#SEQUENCE\n\t\tGOTO\n\t\t\tGOTOADDR\n\n# GOTOADDR CONTAINS THE ADDRESS OF THE ROLL COMMAND EQUATIONS TO THE CURRENT PHASE OF\n# RE-ENTRY.  SEQUENCING IS AS FOLLOWS:\n#\n# INITROLL\tADDRESS IS SET HERE INITIALLY.  HOLDS INITIAL ROLL ATTITUDE UNTIL  KAT  IS EXCEEDED.  THEN HOLDS NEW ROLL\n#\t\tATTITUDE UNTIL  VRTHRESH  IS EXCEEDED.  THEN BRANCHES TO\n#\n# HUNTEST\tTHIS SECTION CHECKS TO SEE IF THE PREDICTED RANGE AT NOMINAL   L/D FROM PRESENT CONDITIONS IS LESS\n#\t\tTHAN THE DESIRED RANGE.\n#\t\t\tIF NOT --- A ROLL COMMAND IS GENERATED BY THE CONSTANT DRAG CONTROLLER.\n#\t\t\tIF SO  --- CONTROL AND GOTOADDR ARE SET TO UPCONTRL.\n#\t\tUSUALLY NO ITERATION IS INVOLVED EXCEPT IF THE RANGE DESIRED IS TOO LONG ON THE FIRST PASS THROUGH\n#\t\tHUNTEST.\n#\n# UPCONTRL\tCONTROLS ROLL DURING THE SUPER-CIRCULAR PHASE.  UPCONTRL IS TERMINATED EITHER\n#\t\t\t(A) WHEN THE DRAG (AS MEASURED BY THE PIPAS) FALLS BELOW Q7, OR\n#\t\t\t(B) IF RDOT IS NEGATIVE AND REFERENCE VL EXCEEDS V.\n#\t\tIN CASE (A),  GOTOADDR  IS SET TO  KEP2  AND IN CASE (B), TO  PREDICT3  SKIPPING THE KEPLER PHASE OF\n#\t\tENTRY.\n#\n# KEP2\t\tGOTOADDR IS SET HERE DURING THE KEPLER PHASE TO MONITOR DRAG.  THE SPACECRAFT IS INSTANTANEOUSLY\n#\t\tTRIMMED IN PITCH AND YAW TO THE COMPUTED RELATIVE VELOCITY.  THE LAST COMPUTED ROLL ANGLE IS MAINTAINED.\n#\t\tWHEN THE MEASURED DRAG EXCEEDS Q7 +0.5,  GOTOADDR  IS SET TO\n#\n# PREDICT3\tTHIS CONTROLS THE FINAL SUB-ORBITAL PHASE. ROLL COMMANDS CEASE\n#\t\tWHEN  V  IS LESS THAN  VQUIT .  AN EXIT IS MADE TO\n#\n# P67.1\t\tTHE LAST COMPUTED ROLL ANGLE IS MAINTAINED.  RATE DAMPING IS DONE IN PITCH AND YAW.  PRESENT LATITUDE\n#\t\tAND LONGITUDE ARE COMPUTED FOR DISPLAY.\n#\t\tENTRY IS TERMINATED WHEN DISKY RESPONSE IS MADE TO TO THIS FINAL FLASHING DISPLAY.\n\n# Page 848\n# PROCESS AVERAGE G OUTPUT...SCALE IT AND GET INPUT DATA\n\n# * START  TARGETING ...\n\n\t\tEBANK=\tRTINIT\n\n\t\t\t\t\t# TARGETNG IS CALLED BY P61, FROM GROUP 4.\n\t\t\t\t\t# TARGETNG IS CALLED BY ENTRY, FROM GROUP 5.\n\n\t\t\t\t\t# ALL MM COME HERE.\nTARGETNG\tBOFF\tVLOAD\t\t# ENTER WITH PROPER EB FROM CM/POSE(TEST)\n\t\t\tRELVELSW\t# RELVELSW = 96D BIT9\n\t\t\tGETVEL\t\t# WANT INERTIAL VEL.  GO GET IT.\n\t\t\t-VREL\t\t# NEW V IS RELATIVE, CONTINUE\n\n\t\tVCOMP\tGOTO\t\t# (VREL) = (V) + KWE UNITR*UNITW\n\t\t\tGETUNITV -1\t# - VREL WAS LEFT BY CM/POSE\n\nGETVEL\t\tVLOAD\tVXSC\t\t# INERTIAL V WANTED\n\t\t\tVN\t\t# KVSCALE = (12800 / .3048) / 2VS\n\t\t\tKVSCALE\t\t# KVSCALE = .81491944\n\t\tSTORE\tVEL\t\t# V/2 VS\n\nGETUNITV\tUNIT\tSTQ\n\t\t\t60GENRET\n\t\tSTODL\tUNITV\n\t\t\t34D\n\t\tSTORE\tVSQUARE\t\t# VSQ/4\n\n\t\tDSU\t\t\t# LEQ = VSQUARE - 1\n\t\t\tFOURTH\t\t# 4 G-S FULL SCALE\n\t\tSTODL\tLEQ\t\t# LEQ/4\n\n\t\t\t36D\n\t\tSTOVL\tV\t\t# V/2 VS = VEL/2 VS\n\n\t\t\tVEL\n\t\tDOT\tSL1\t\t# RDOT= V.UNITR\n\t\t\tUNITR\n\t\tSTOVL\tRDOT\t\t# RDOT /2 VS\n\n\t\t\tDELV\t\t# PIPA COUNTS IN PLATFORM COORDS.\n\t\tABVAL\tDMP\n\t\t\tKASCALE\n\t\tSL1\tBZE\n\t\t\tSETMIND\nDSTORE\t\tSTOVL\tD\t\t# ACCELERATION USED TO APPROX DRAG\n\t\t\tVEL\n\t\tVXV\tUNIT\t\t# UNI = UNIT(V*R)\n# Page 849\n\t\t\tUNITR\n\t\tSTORE\tUNI\t\t# .5 UNI\t\tREF COORDS.\n\n\t\tBOFF\tDLOAD\n\t\t\tRELVELSW\n\t\t\tGETETA\n\t\t\t3ZEROS\nUPDATERT\tDSU\tDAD\t\t# PIPTIME-TIME/RTO =ELAPSED TIME SINCE\n\t\t\t\t\t# RTINIT WAS ESTABLISHED.\n\t\t\tTIME/RTO\n\t\t\tPIPTIME\n\t\tSTCALL\tDTEAROT\t\t# GET PREDICTED TARGET VECTOR RT\n\n\t\t\tEARROT2\n\t\tDOT\tSETPD\t\t# SINCE (RT) UNIT VECT, THIS IS 1/4 MAX\n\t\t\tUNI\t\t# LATANG = RT.UNI\n\t\t\t0\n\t\tSTOVL\tLATANG\t\t# LATANG = MAC LATANG / 4\n\n\t\t\tRT\n\t\tCLEAR\n\t\t\tGONEBY\t\t# SHOW HAVE NOT GONE PAST TARGET.\n\t\tVXV\tDOT\t\t# IF RT*UNITR.UNI NEG, GONEBY=1\n\t\t\tUNITR\t\t# GONEPAST IS CONDITIONAL SW SET IN\n\t\t\tUNI\t\t# FINAL PHASE.\n\t\tBPL\tSET\n\t\t\t+2\n\t\t\tGONEBY\t\t# SHOW HAVE GONE PAST TARGET.\n\n\t\tVLOAD\n\t\t\tRT\nGETANGLE\tDOT\tDSU\t\t# THETA = ARCCOS(RT.UNITR)\n\t\t\tUNITR\n\t\t\tNEAR1/4\t\t# TO IMPROVE ACCURACY, CALC RANGE BY\n\t\tBPL\tDAD\t\t# TINYTHET IF HIGH ORDER PART OF\n\t\t\tTINYTHET\t# ARCCOS ARGUMENT IS ZERO\n\t\t\tNEAR1/4\n\t\tSL1\tACOS\nTHETDONE\tSTORE\tTHETAH\t\t# THETAH/360\n\t\t\t\t\t# HI WORD, LO BIT =1.32 NM=360 60/16384\n\n\t\tBON\tDCOMP\n\t\t\tGONEBY\t\t# =1 IF HAVE GONE PAST TARGET.\n\t\t\t\t\t# (SIGN MAY BECOME ERRATIC VERY NEAR\n\t\t\t\t\t# TARGET DUE TO LOSS OF PRECISION.)\n\t\t\t+1\n\t\tSTODL\tRTGON67\t\t# RANGE ERROR:  NEG IF WILL FALL SHORT.\n\n\t\t\tD\n\t\tDSU\tBMN\n# Page 850\n\t\t\t.05G\n\t\t\tNO.05G\n\t\tSET\tVLOAD\n\t\t\t.05GSW\n\t\t\tDELVREF\n\t\tPUSH\tDOT\n\t\t\tUXA/2\n\t\tSL1\tDSQ\n\t\tPDVL\tVSQ\t\t# EXCHANGE WITH PDL.\n\t\tDSU\tDDV\n\t\t\t0\n\t\tBOV\tSQRT\n\t\t\tNOLDCALC\t# OVFL LAST CLEARED IN EARROT2 ABOVE.\n\t\tSTORE\tL/DCALC\n\nNOLDCALC\tGOTO\n\t\t\t60GENRET\n\nNO.05G\t\tCLEAR\tGOTO\t\t# THIS WAY FOR DAP. (MAY INTERRUPT)\n\t\t\t.05GSW\t\t# .05GSW = 102D B3\n\t\t\tNOLDCALC\t# KEEP SINGLE EXIT FOR TARGETNG\n\n# Page 851\n# SUBROUTINES CALLED BY SCALEPOP (TARGETING):\n\n\t\tBANK\t26\n\t\tSETLOC\tREENTRY1\n\t\tBANK\n\n\t\tCOUNT*\t$$/ENTRY\n\nGETETA\t\tDLOAD\tDDV\t\t# D = D +D(-RDOT/HS -2D/V)  DT/2\n\t\t\t\t\t# DT/2 = 2/2 =1\n\t\t\tRDOT\n\t\t\t-HSCALED\n\t\tPDDL\tDMP\n\t\t\tD\n\t\t\t-KSCALE\n\t\tDDV\tDAD\n\t\t\tV\n\t\t\t\t\t# -RDOT/HS FROM PDL.\n\t\tDMP\tDAD\n\t\t\tD\n\t\t\tD\n\t\tSTORE\tD\n\n\t\tBON\tDLOAD\t\t# EGSW INDICATES FINAL PHASE.\n\t\t\tEGSW\n\t\t\tSUBETA\n\t\t\tTHETAH\n\t\tDMP\tGOTO\n\t\t\tKTETA\t\t# = 1000X2PI/(2)E14 163.84\n\t\t\tUPDATERT\n\nSUBETA\t\tDLOAD\tDSU\t\t# SWITCH FROM INERTIAL TO RELATIVE VEL.\n\t\t\tV\n\t\t\tVMIN\n\t\tBPL\tSET\n\t\t\tSUBETA2\n\t\t\tRELVELSW\n\nSUBETA2\t\tDLOAD\tDMP\n\n\t\t\tTHETAH\n\t\t\tKT1\t\t# KT1 = KT\n\t\tDDV\tGOTO\n\t\t\tV\t\t# KT = RE(2 PI)/2 VS 16384 163.84/ 2 VSAT\n\t\t\tUPDATERT\n\nSETMIND\t\tDLOAD\tGOTO\n\t\t\t1BITDP\n\t\t\tDSTORE\n\n# Page 852\nTINYTHET\tDSU\tABS\t\t# ENTER WITH X-.249\n\t\t\t1BITDP +1\t# GET 1/4 - MPAC\n\t\tSL\tSQRT\t\t# SCALE UP BEFORE SQRT\n\t\t\t13D\t\t# HAS FACTOR FOR UP SCALING\n\t\tDMP\tGOTO\n\t\t\tKACOS\n\t\t\tTHETDONE\n\n# Page 853\n# * START\tINITIAL ROLL ...\n\n\t\tBANK\t25\n\t\tSETLOC\tREENTRY\n\t\tBANK\n\n\t\tCOUNT*\t$$/ENTRY\n\n\t\t\t\t\t# MM = 63 , 64 ..\nINITROLL\tBON\tBOFF\t\t# IF D- .05G NEG, GO TO LIMITL/D\n\t\t\tINRLSW\n\t\t\tINITRL1\n\t\t\t.05GSW\n\t\t\tLIMITL/D\n\n\t\t\t\t\t# MM = 64, NOW\n\t\t\t\t\t#\t      3\n\t\t\t\t\t# KA = KA1 LEQ  + KA2\n\t\tDLOAD\tDSQ\n\t\t\tLEQ\n\t\tDMP\tDDV\n\t\t\tLEQ\n\t\t\t1/KA1\t\t# = 25 /(64  1.8)\n\t\tDAD\tRTB\n\t\t\tKA2\t\t# = .2\n\t\t\tP64\t\t# ROLLC\t\tVI\t\tRDOT\n\t\t\t\t\t# XXX.XX DEG\tXXXXX. FPS\tXXXXX. FPS\n\t\tSTORE\tKAT\n\n\t\tDSU\tBMN\n\t\t\tKALIM\n\t\t\t+4\n\t\tDLOAD\n\t\t\tKALIM\n\t\tSTORE\tKAT\n\t\tDLOAD\tDSU\t\t# IF V-VFINAL1 NEG, GO TO FINAL PHASE.\n\t\t\tV\n\t\t\tVFINAL1\n\t\tCLEAR\tBPL\t\t# (CAN'T CLEAR INRLSW AFTER HERE: RESTARTS)\n\t\t\tGONEPAST\t# GONEPAST WAS INITIALLY SET=1 TO FORCE\n\t\t\t\t\t# ROLLC TO REMAIN AS DEFINED BY HEADSUP\n\t\t\t\t\t# UNTIL START OF P64.  (UNTIL D > .05G)\n\t\t\tD0EQ\n\t\tSSP\tGOTO\n\t\t\tGOTOADDR\n\t\t\tKEP2\t\t# AND IDLE UNTIL D > 0.2 G.  (NO P66 HERE)\n\t\t\tINROLOUT\t# GO TO LIMITL/D AFTER SETTING INRLSW.\n\nD0EQ\t\tDLOAD\tDMP\t\t# D0 = KA3 LEQ + KA4\n# Page 854\n\t\t\tLEQ\n\t\t\tKA3\n\t\tDAD\n\t\t\tKA4\n\t\tSTORE\tD0\t\t# D0/805\n\t\tBDDV\tBOV\n\t\t\tC001\t\t# (-4/25 G) B-8\n\t\t\t+1\t\t# CLEAR OVFIND, IF ON.\n\t\tSTODL\tC/D0\t\t# (-4/D0) B-8\n\t\t\tLAD\t\t# IF V-VFINAL +K(RDOT/V)CUBED POS,L/D=-LAD\n\t\tSTODL\tL/D\n\t\t\tRDOT\n\t\tDDV\tPUSH\n\t\t\tV\n\t\tDSQ\tDMP\n\t\tDDV\tDSU\n\t\t\t1/K44\n\t\t\tVFINAL\n\t\t\t\t\t#\t\t    3\n\t\t\t\t\t# V-VFINAL +(RDOT/V)  / K44\tOVFL $\n\n\t\tDAD\tBOV\n\t\t\tV\n\t\t\tINROLOUT\t# GO TO LIMITL/D AFTER SETTING INRLSW.\n\t\tBMN\tDLOAD\n\t\t\tINROLOUT\t# GO TO LIMITL/D AFTER SETTING INRLSW.\n\t\t\tLAD\n\t\tDCOMP\n\t\tSTORE\tL/D\n\n\t\t\t\t\t# SET INRLSW AT END FOR RESTART PROTECTION\nINROLOUT\tBOFSET\t\t\t# END OF PRE .05G PATH OF INITROLL.\n\t\t\tINRLSW\t\t# SWITCH IS ZERO INITIALLY.\n\t\t\tLIMITL/D\t# (GO TO)\n\nKATEST\t\tDLOAD\tDSU\t\t# IF KAT - D POS, GO TO CONSTD\n\t\t\tKAT\n\t\t\tD\t\t# IF POS, OUT WITH COMMAND VIA LIMITL/D\n\t\tBPL\tGOTO\n\t\t\tLIMITL/D\n\t\t\tCONSTD\n\nINITRL1\t\tDLOAD\tDAD\t\t# IF RDOT + VRCONT POS, GO TO HUNTEST\n\t\t\tRDOT\n\t\t\tVRCONT\n\t\tBMN\tCALL\t\t# IF POSITIVE, FALL INTO HUNTEST.\n\t\t\tKATEST\n\n\t\t\tFOREHUNT\t# INITIALIZE HUNTEST.\n\n# Page 855\n# * START\tHUNT TEST ..\n\t\t\t\t\t# MM = 64\n\t\tSSP\t\t\t# INITIALIZE HUNTEST ON FIRST PASS\n\t\t\tGOTOADDR\n\t\t\tHUNTEST\t\t# MUST GO AFTER FOREHUNT FOR RESTARTS.\n\nHUNTEST\t\tDLOAD\n\t\t\tD\n\t\tSTODL\tA1\t\t# A1/805 = A1/25G\n\n\t\t\tLAD\n\t\tSTODL\tTEM1B\n\t\t\tRDOT\n\t\tBMN\tDLOAD\t\t# IF RDOT NEG,TEM1B=LAD, OTHERWISE = LEWD\n\t\t\tA0CALC\n\t\t\tLEWD\n\t\tSTODL\tTEM1B\n\n\t\t\tRDOT\nA0CALC\t\tDDV\tDAD\t\t# V1 = V + RDOT/TEM1B\n\t\t\tTEM1B\n\t\t\tV\n\t\tSTODL\tV1\t\t# V1/2 VS\n\n\t\t\tRDOT\n\t\tDSQ\tDDV\t\t# A0=(V1/V)SQ(D+RDOT SQ/(TEM1B 2 C1 HS)\n\t\t\tTEM1B\n\t\tDDV\tDAD\n\t\t\t2C1HS\n\t\t\tD\n\t\tDMP\tDMP\n\t\t\tV1\n\t\t\tV1\n\t\tDDV\n\t\t\tVSQUARE\n\t\tSTODL\tA0\t\t# A0/805 = A0/25G\n\n\t\t\tRDOT\n\t\tBPL\tDLOAD\n\t\t\tV1LEAD\n\t\t\tA0\n\t\tSTORE\tA1\t\t# A1/25G\n\nV1LEAD\t\tDLOAD\tBPL\t\t# IF L/D NEG, V1=V1 - 1000\n\t\t\tL/D\n\t\t\tHUNTEST1\n\n\t\tDLOAD\tDSU\n\t\t\tV1\n# Page 856\n\t\t\tVQUIT\n\t\tSTORE\tV1\n\nHUNTEST1\tDLOAD\tDMP\t\t# ALP = 2 C1 HS A0/LEWD V1 V1\n\t\t\tA0\n\t\t\t2C1HS\n\t\tDDV\tSETPD\n\t\t\tV1\n\t\t\t0\n\t\tDDV\tDDV\n\t\t\tV1\n\t\t\tLEWD\n\t\tSTORE\tALP\n\n\t\tBDSU\tBDDV\t\t# FACT1 = V1 / (1 - ALP)\n\t\t\tBARELY1\n\t\t\tV1\n\t\tSTODL\tFACT1\t\t# FACT1 / 2VS\n\n\t\t\tALP\n\t\tDSU\tDMP\t\t# FACT2 = ALP(ALP - 1) / A0\n\t\t\tBARELY1\n\t\t\tALP\n\t\tDDV\n\t\t\tA0\n\t\tSTORE\tFACT2\t\t# FACT2 (25G)\n\n\t\tDMP\tDAD\n\t\t\tQ7\t\t# Q7 / 805 = Q7 / 25G\n\t\t\tALP\t\t# VL=FACT1 (1-SQRT(Q7 FACT2 +ALP) )\n\t\tSQRT\tBDSU\n\t\t\tBARELY1\n\t\tDMP\n\t\t\tFACT1\n\t\tSTORE\tVL\t\t# VL / 2 VS\n\n\t\tBDSU\tDMP\t\t# GAMMAL1 = LEWD (V1-VL)/VL\n\t\t\tV1\n\t\t\tLEWD\n\t\tDDV\n\t\t\tVL\n\t\tSTODL\tGAMMAL1\t\t# GAMMAL1 USED IN UPCONTROL\n\n\t\t\t\t\t# GAMMAL1 = PDL 22D.\n\t\t\tVL\n\t\tDSU\tBMN\t\t# IF VL-VLMIN NEG, GO TO PREFINAL\n\t\t\tVLMIN\n\t\t\tPREFINAL\n\n\t\tDLOAD\tDSQ\n# Page 857\n\t\t\tVL\n\t\tSTODL\tVBARS\t\t# VBARS / 4 VS VS\n\n\t\t\tHALVE\t\t# IF VSAT-VL NEG, GO TO CONSTD\n\t\tDSU\tBMN\n\t\t\tVL\n\t\t\tBECONSTD\t# SET MODE=HUNTEST, CONTINUE IN CONSTD\n\t\tSTODL\tDVL\t\t# DVL / 2VS\n\n\t\t\tHALVE\n\t\tSTORE\tVS1\t\t# VS1 = VSAT\n\n\t\tDSU\tBMN\t\t# IF V1 GREATER THAN VSAT, GO ON\n\t\t\tV1\n\t\t\tGETDHOOK\n\t\tBDSU\n\t\t\tDVL\n\t\tSTODL\tDVL\t\t# DVL = DVL - (VSAT-V1) = V1 - VL\n\t\t\tV1\n\t\tSTORE\tVS1\t\t# VS1 = V1, IN THIS CASE\n\nGETDHOOK\tDLOAD\tCALL\t\t# DHOOK=((1-VS1/FACT1) SQ -ALP)/FACT2\n\t\t\tVS1\t\t# VS1 / 2 VS\n\t\t\tDHOOKYQ7\t# GO CALC DHOOK\n\t\tSTORE\tDHOOK\t\t# DHOOK / 25G\n\n\t\tSR\tDDV\n\t\t\t6\t\t# CHOOK\n\t\t\tQ7\n\t\tDSU\n\t\t\tCHOOK\t\t# = .25/16 = (-6)\n\t\tSTORE\tAHOOKDV\n\n\t\tDAD\tDMP\t\t# GAMMAL= GAMMAL1-CH1 DVL SQ(1+AHOOK DVL)\n\t\t\t1/16TH\n\t\t\tCH1\n\t\tDMP\tDMP\n\t\t\tDVL\n\t\t\tDVL\n\t\tDDV\tDDV\n\t\t\tDHOOK\n\t\t\tVBARS\n\t\tBDSU\tBMN\n\t\t\tGAMMAL1\n\t\t\tNEGAMA\nHUNTEST3\tSTORE\tGAMMAL\n\n\t\tDSU\t\t\t# GAMMAL1=GAMMAL1 +Q19 (GAMMAL-GAMMAL1)\n\t\t\tGAMMAL1\n\t\tDMP\tDAD\n# Page 858\n\t\t\tQ19\n\t\t\tGAMMAL1\n\t\tSTODL\tGAMMAL1\n\t\t\tGAMMAL\n\n# Page 859\n# *START\tRANGE PREDICTION ...\n\t\t\t\t\t# C(MPAC) = GAMMAL\nRANGER\t\tDSQ\tSR2\t\t# COSG = 1-GAMMAL SQ/2, TRUNCATED SERIES\n\t\tBDSU\n\t\t\tHALVE\n\t\tSTODL\tCOSG/2\n\t\t\tVBARS\t\t# E=SQRT(1+VBARS........\n\n\t\tDSU\tDMP\n\t\t\tHALVE\n\t\t\tVBARS\n\t\tDMP\tDMP\n\t\t\tCOSG/2\n\t\t\tCOSG/2\n\t\tSL2\tDAD\n\t\t\tC1/16\t\t# C1/16 = 1/16\n\t\tSQRT\tPDDL\t\t# E/4 INTO PDL\n\n\t\t\tVBARS\n\t\tDMP\tDMP\t\t# ASKEP/2 = ARCSIN(VBARS COSG SING/E)\n\t\t\tCOSG/2\n\t\t\tGAMMAL\n\t\tDDV\tASIN\n\t\tSL1\tPUSH\t\t# ASKEP TO PDL 0.\n\t\tSTODL\tASKEP\t\t# BALLISTIC RANGE\tASKEP/2PI\n\n\t\t\t\t\t# FOR TM, STORE RANGE COMPONENTS OVERLAPPING (SP)\n\t\t\tVL\n\t\tDMP\tDAD\t\t# ASP1 = Q2 + Q3 VL\n\t\t\tQ3\n\t\t\tQ2\n\t\tSTORE\tASP1\t\t# FINAL PHASE RANGE\tASP1/2 PI\n\n\t\tPDDL\tDSQ\t\t# ASP1 TO PDL 2.\n\t\t\tV1\n\t\t\t\t\t#\t\t    2\n\t\t\t\t\t# ASPUP= -C12 LOG(V1 Q7/VBARS A0)/GAMMAL1\n\t\tDMP\tDDV\n\t\t\tQ7\n\t\t\tVBARS\n\t\tDDV\tCALL\n\t\t\tA0\n\t\t\tLOG\t\t# RETURN WITH -LOG IN MPAC\n\n\t\tDMP\tDDV\n\t\t\tC12\n\t\t\tGAMMAL1\n\t\tSTORE\tASPUP\t\t# UP PHASE RANGE\tASPUP / 2 PI\n# Page 860\n\t\tPDDL\tDMP\t\t# ASPUP TO PDL 4.\n\t\t\tKC3\t\t# KC3 = -4 VS VS / 2 PI 805 RE\n\t\t\t\t\t# ASPDWN = KC3 RDOT V / A0\n\t\t\tRDOT\n\t\tDMP\tDDV\n\t\t\tV\n\t\t\tA0\n\t\tDDV\tPUSH\t\t# ASPDWN TO PDL 6.\n\t\t\tLAD\n\t\tSTODL\tASPDWN\t\t# RANGE TO PULL OUT\tASPDWN /2 PI\n\n\t\t\tQ6\n\t\tDSU\tDMP\t\t# ASP3 = Q5(Q6-GAMMAL)\n\t\t\tGAMMAL\n\t\t\tQ5\n\t\tSTOVL\tASP3\t\t# GAMMA CORRECTION\tASP3/2PI\n\n\t\t\tASKEP\t\t# GET HI-WD AND\n\t\tSTODL\tASPS(TM)\t# SAVE HI-WORD OF ASP'S FOR TM.\n\n\t\t\tASP3\n\t\tDAD\tDAD\n\t\t\t\t\t# ASPDWN FROM PDL 6.\n\t\t\t\t\t# ASPUP FROM PDL 4.\n\t\tDAD\tDAD\n\t\t\t\t\t# ASP1 FROM PDL 2.\n\t\t\t\t\t# ASKEP FROM PDL 0.\n\t\tDSU\tBOVB\t\t# CLEAR OVFIND.\n\t\t\tTHETAH\n\t\t\tTCDANZIG\n\t\tSTORE\tDIFF\t\t# DIFF = (ASP-THETAH) / 2 PI\n\t\t\t\t\t# ASP=ASKEP+ASP1+ASPUP+ASP3+ASPDWN = TOTAL RANGE\n\n\t\tABS\tDSU\t\t# IF ABS(THETAH-ASP) -25NM NEG, GO TO UPSY\n\t\t\t25NM\n\t\tBMN\tBON\n\t\t\tGOTOUPSY\n\t\t\tHIND\n\t\t\tGETLEWD\n\n\t\tDLOAD\tBPL\n\t\t\tDIFF\n\t\t\tDCONSTD\t\t# EVENTUALLY SETS MODE = HUNTEST.\nGETDLEWD\tDLOAD\tDMP\n\t\t\t\t\t# DLEWD = DLEWD (DIFF/(DIFFOLD-DIFF))\n\t\t\tDLEWD\n\t\t\tDIFF\n\t\tPDDL\tDSU\n\t\t\tDIFFOLD\n\t\t\tDIFF\n# Page 861\n\t\tBDDV\nLWDSTORE\tSTADR\n\t\tSTORE\tDLEWD\n\t\tDAD\tBMN\t\t# IF LEWD+DLEWD NEG, DLEWD=-LEWD/2\n\t\t\tLEWD\n\t\t\tLEWDPTR\n\t\tBOV\n\t\t\tLEWDOVFL\n\t\tSTORE\tLEWD\n\nSIDETRAK\tEXIT\n\n\t\tCA\tEBENTRY\n\t\tTS\tEBANK\n\n\t\tCA\tPRIO16\t\t# DROP GRP 5 RESTART PRIO TO 1 LESS THAN\n\t\tTS\tPHSPRDT5\t# GRP 4.\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t00474\t\t# RESTART GRP 4 AT PRE-HUNT.\n\t\t\t\t\t# FORCE RESTART TO PICK UP IN GRP 4:\n\t\t\t\t\t# USE PRIO 17 FOR GRP 4 (< SERVICER PRIO)\n\t\tCA\tPRIO16\t\t# CONTINUE GRP 5 AT LOWER PRIO THAN EITHER\n\t\t\t\t\t# GRP 4 OR SERVICER.\n\t\tTC\tPRIOCHNG\n\n\t\tCAF\tADENDEXT\t# SIDETRACK NEXT PASS UNTIL THIS ONE DONE.\n\t\tTS\tGOTOADDR\t# ONLY AFTER RESTART IS LEFT AFTER DETOUR.\n\n\t\tTC\tINTPRET\n\n\t\tDLOAD\tSET\n\t\t\tDIFF\n\t\t\tHIND\n\t\tSTODL\tDIFFOLD\t\t# DIFFOLD / 2 PI\n\n\t\t\tQ7F\n\t\tSTCALL\tQ7\t\t# Q7 / 805 FPSS\n\t\t\tHUNTEST\t\t# (GO TO)\n\nLEWDOVFL\tDLOAD\n\t\t\tNEARONE\n\t\tSTCALL\tLEWD\n\t\t\tDCONSTD\t\t# (GO TO)  ALSO WILL SET MODE = HUNTEST\n\nLEWDPTR\t\tDLOAD\tSR1\n\t\t\tLEWD\n\t\tDCOMP\tGOTO\n\t\t\tLWDSTORE\n\n# Page 862\n# NEGAMA IS PART OF HUNTEST ...\nNEGAMA\t\tDMP\tDMP\t\t# ENTER WITH GAMMAL IN MPAC\n\t\t\tVL\n\t\t\t1/3RD\n\t\tPDDL\tDMP\t\t# PUSH GAMMAL VL/3\n\t\t\tLEWD\n\t\t\t1/3RD\n\t\tPDDL\tDAD\t\t# PUSH LEWD/3\n\t\t\tAHOOKDV\n\t\t\t1/24TH\n\t\tDMP\tDMP\t\t# DEL VL = (GAMMAL VL/3)/(LEWD/3-DVL\n\t\t\tDVL\t\t# (2/3 + AHOOKDV)(CH1 GS/DHOOK VL))\n\t\t\tCH1\n\t\tDDV\tDDV\n\t\t\tDHOOK\n\t\t\tVL\n\t\tBDSU\tBDDV\n\t\t\t\t\t# LEWD/3\n\t\t\t\t\t# GAMMAL VL /3\n\t\tDAD\n\t\t\tVL\n\t\tSTCALL\tVL\t\t# VL/2 VS\n\n\t\t\tDHOOKYQ7\t# GO CALC Q7\n\t\t\t\t\t# Q7=((1-VL/FACT1)SQ - ALP)/FACT2\n\t\tSTODL\tQ7\t\t# Q7 / 25G\n\n\t\t\tVL\n\t\tDSQ\n\t\tSTODL\tVBARS\t\t# VBARS / 4 VS VS\n\n\t\t\t3ZEROS\n\t\tGOTO\t\t\t# SET GAMMAL = 0\n\t\t\tHUNTEST3\n\nDHOOKYQ7\tSR1\tDDV\t\t# SUBROUTINE TO CALC DHOOK OR Q7)\n\t\t\tFACT1\n\t\tBDSU\tSL1\n\t\t\tHALVE\n\t\tDSQ\tDSU\n\t\t\tALP\n\t\tDDV\tRVQ\n\t\t\tFACT2\n\n# Page 863\n\t\t\t\t\t# COME TO PRE-HUNT WHEN RESTART OCCURS AFTER\n\t\t\t\t\t# HUNTEST IS SIDE-TRACKED AT SIDETRAK.\n\t\t\t\t\t# PICK UP IN GROUP 4.\n\nPRE-HUNT\tTC\tINTPRET\n\t\tCLEAR\tCALL\n\t\t\tHIND\t\t# HIND\t99D BIT 6 FLAG 6\n\t\t\tFOREHUNT\t# RE-INITIALIZE HUNTEST AFTER RE-START.\n\t\tGOTO\n\t\t\tHUNTEST\n\nFOREHUNT\tDLOAD\t\t\t# INITIALIZE HUNTEST.\n\t\t\t3ZEROS\n\t\tSTODL\tDIFFOLD\n\t\t\tDLEWD0\n\t\tSTODL\tDLEWD\n\t\t\tLEWD1\n\t\tSTORE\tLEWD\n\t\tRVQ\n\nADENDEXT\tCADR\tENDEXIT\n\n# Page 864\n# * START\tUP CONTROL ...\n\t\t\t\t\t# MM = 65\nGOTOUPSY\tRTB\t\t\t# END OF HUNTEST\n\t\t\tP65\t\t# HUNTEST USE OF GRP4 IS DISABLED BY P65\n\t\t\t\t\t# USE FOR DISPLAY.\n\t\t\t\t\t# SET MODE = UPCONTRL.\n\t\t\t\t\t# RETURN FROM P65 DIRECTLY TO UPCONTRL\n\t\t\t\t\t# VIA THE GOTOADDR AT REFAZE10.\n\nUPCONTRL\tDLOAD\tDSU\t\t# IF D-140 POS, NOSWITCH =1\n\t\t\tD\t\t# (SUPPRESS LATERAL SWITCH)\n\t\t\tC21\n\t\tBMN\tSET\n\t\t\t+2\n\t\t\tNOSWITCH\n\n\t\tDLOAD\tDSU\t\t# IF V-V1 POS, GO TO DOWN CONTROL.\n\t\t\tV\n\t\t\tV1\n\t\tBPL\tDLOAD\n\t\t\tDOWNCNTL\n\t\t\tD\n\t\tDSU\tBMN\t\t# IF D- Q7 NEG, GO TO KEP\n\t\t\tQ7\n\t\t\tKEP\n\t\tDLOAD\tBPL\t\t# IF RDOT NEG, DO VLTEST\n\t\t\tRDOT\n\t\t\tCONT1\n\nVLTEST\t\tDLOAD\tDSU\t\t# IF V-VL-C18 NEG,EGSW=1,MODE=PREDICT3\n\t\t\tV\n\t\t\tVL\n\t\tDSU\tBMN\n\t\t\tC18\n\t\t\tPREFINAL\n\nCONT1\t\tDLOAD\t\t\t# IF D-A0 POS, L/D = LAD, GO TO LIMITL/D\n\t\t\tD\n\t\tDSU\tBMN\n\t\t\tA0\n\t\t\tCONT3\n\t\tDLOAD\tGOTO\n\t\t\tLAD\n\t\t\tSTOREL/D\n\nCONT3\t\tDLOAD\tDMP\t\t# VREF=FACT1(1-SQRT(FACT2 D + ALP))\n\t\t\tD\n\t\t\tFACT2\n# Page 865\n\t\tDAD\tSQRT\n\t\t\tALP\n\t\tBDSU\tDMP\n\t\t\tBARELY1\n\t\t\tFACT1\n\t\tSTORE\tVREF\t\t# VREF / 2VS\n\n\t\tBDSU\tDMP\t\t# RDOTREF = LEWD(V1-VREF)\n\t\t\tV1\n\t\t\tLEWD\n\t\tSTODL\tRDOTREF\t\t# RDOTREF / 2VS\n\n\t\t\tVS1\n\t\tDSU\tBMN\t\t# IF VSAT-VREF NEG, GO TO CONTINU2\n\t\t\tVREF\n\t\t\tCONTINU2\n\n\t\tPUSH\tPUSH\t\t# VS1-VREF  TO PDL TWICE\n\t\tDMP\tDDV\t\t# RDHOOK=CHI(1+DV AHOOKDV/DVL) DV DV\n\t\t\tAHOOKDV\t\t#\t/DHOOK VREF\n\t\t\tDVL\t\t# WHERE  DV = (VS1-VREF)\n\t\tDAD\tDMP\n\t\t\t1/16TH\n\t\t\tCH1\n\t\tDMP\tDMP\n\t\t\t\t\t# VS1-VREF  FROM PDL TWICE.\n\t\tDDV\n\t\t\tDHOOK\n\t\tDDV\tBDSU\n\t\t\tVREF\n\t\t\tRDOTREF\t\t# C(RDOTREF)= LEWD (V1-VREF)\n\t\tSTORE\tRDOTREF\t\t# RDOTREF = RDOTREF - RDHOOK\n\nCONTINU2\tDLOAD\tDSU\n\t\t\tD\n\t\t\tQ7MIN\n\t\tBOVB\tBMN\n\t\t\tTCDANZIG\t# CLEAR OVFL IND, IF ON.\n\t\t\tUPCNTRL3\n\t\tDLOAD\tDSU\n\t\t\tA1\n\t\t\tQ7\n\t\tPDDL\tDSU\n\t\t\tD\n\t\t\tQ7\n\t\tDDV\tSTADR\n\t\tSTORE\tFACTOR\t\t# FACTOR / 25G\n\n# Page 866\n# SKIPPER\n\t\t\t\t\t# DELTA L/D=-((RDOT-RDOTREF)F1 KB1+V-VREF)F1 KB2\n\t\t\t\t\t#\tWHERE F1 = FACTOR\n\nUPCNTRL3\tDLOAD\n\t\t\tRDOT\n\t\tDSU\tDMP\t\t# L/D = LEWD\n\t\t\tRDOTREF\t\t# -((RDOT-RDOTREF)F1/KB1+V-VREF)F1/KB2\n\t\t\tFACTOR\n\t\tDDV\tDAD\n\t\t\t1/KB1\n\t\t\tV\n\t\tDSU\tDMP\n\t\t\tVREF\n\t\t\tFACTOR\n\t\tDDV\tPUSH\n\n\t\t\t-1/KB2\t\t# DELTA L/D INTO PDL\n\t\tBOV\tABS\t\t# NONLINEAR CIRCUIT FOR REDUCING HIGH GAIN\n\t\t\tGOMAXL/D\n\t\tDSU\tBMN\n\t\t\tPT1/16\n\t\t\tNEXT1\n\t\tDMP\tDAD\n\t\t\tPOINT1\n\t\t\tPT1/16\n\t\tSIGN\tPUSH\t\t# ATTACH SIGN OF PUSH TO MPAC THEN PUSH\n\nNEXT1\t\tDLOAD\tSL4\n\t\t\t\t\t# DELTA L/D FROM PDL.\n\n\t\tDAD\n\t\t\tLEWD\nNEGTESTS\tBOV\tPUSH\t\t# L/D TO PDL FOR USE IN NEGTESTS.\n\t\t\tGOMAXL/D\n\t\tSTODL\tL/D\n\t\t\t\t\t# IF D-C20 POS, LATSW =0\n\t\t\t\t\t# AND IF L/D NEG, L/D = 0.\n\t\t\tD\n\t\tDSU\tBMN\n\t\t\tC20\n\t\t\tLIMITL/D\n\t\tCLEAR\tDLOAD\n\t\t\tLATSW\t\t# =21D.  ROLL OVER TOP, REGARDLESS.\n\t\t\t\t\t# L/D FROM PDL.\n\t\tBPL\tDLOAD\n\t\t\tLIMITL/D\n\t\t\t3ZEROS\n\t\tSTCALL\tL/D\n\t\t\tLIMITL/D\t# (GO TO)\n\n# Page 867\nDCONSTD\t\tDLOAD\t\t\t# TWO RANGER ENTRIES TO CONSTD HERE\n\t\t\tDIFF\n\t\t\t\t\t# SAVE OLD VALUE OF DIFF FOR NEXT PASS.\n\t\tSTODL\tDIFFOLD\t\t# DIFFOLD / 2 PI\n\n\t\t\tQ7F\n\t\tSTORE\tQ7\n\nBECONSTD\tSSP\tRTB\t\t# A HUNTEST ENTRY INTO CONSTD.\n\t\t\tGOTOADDR\t# RESET MODE TO HUNTEST\n\t\t\tHUNTEST\n\t\t\tKILLGRP4\t# DEACTIVATE GRP4 FROM HUNTEST.\n\nCONSTD\t\tBOVB\n\t\t\tTCDANZIG\t# CLEAR OVF IND IF ON.\n\n\t\tDLOAD\tDMP\n\t\t\tLEQ\n\t\t\tC/D0\t\t# C/D0 = -4/D0 B-8\n\t\tPDDL\tDMP\t\t# LEQ C/D0 INTO PDL\n\t\t\t2HS\t\t# 2HS / 4 VS VS\n\t\t\tD0\n\t\tDDV\tDAD\t\t# RDOTREF = -2 HS D0/V\n\t\t\tV\n\t\t\tRDOT\n\t\tDMP\tDAD\n\t\t\tK2D\t\t# C/D0 LEQ + K2D(RDOT-RDOTREF) INTO PD\n\t\tPDDL\n\t\t\tD0\t\t# D0 /805\n\nCONSTD1\t\tBDSU\t\t\t# ENTER WITH DREF IN MPAC\n\t\t\tD\n\t\tDMP\tDAD\n\t\t\tK1D\t\t# K2D TERM FROM PUSH\n\t\tSL\tGOTO\n\t\t\t8D\n\t\t\tNEGTESTS\t# (GO TO)\n\nDOWNCNTL\tBOVB\t\t\t# INITIAL PART OF UPCONTROL.\n\t\t\tTCDANZIG\t# CLEAR OVFIND, IF ON.\n\n\t\tDLOAD\tSR\n\t\t\tLAD\n\t\t\t8D\n\t\tPDDL\tDSU\t\t# RDTR = LAD(V1-V)\n\t\t\tV\n\t\t\tV1\n\t\tDMP\tDAD\n\t\t\tLAD\n# Page 868\n\t\t\tRDOT\n\t\tDMP\tDAD\n\t\t\tK2D\n\t\t\t\t\t# PUSH UP LAD.\n\t\tPDDL\tDSU\t\t# LAD + K2D(RDOT-RDTR) INTO PD\n\t\t\tV1\n\t\t\tV\n\t\tDSQ\tDMP\n\t\t\tLAD\n\t\tDDV\tPDDL\t\t# (V1-V)SQ LAD/(2 C1 HS) INTO PD\n\t\t\t2C1HS\n\t\t\tV1\n\t\tDSQ\tDDV\n\t\t\tVSQUARE\n\t\tBDDV\tDSU\t\t# DREF = (V/V1)SQ A0 - PD\n\t\t\tA0\n\t\t\t\t\t# PUSH UP HERE\n\t\tGOTO\t\t\t# C(MPAC) = DREF\n\t\t\tCONSTD1\n\n\t\t\t\t\t#              2           2\n\t\t\t\t\t# DREF = (V/V1)  A0 -(V-V1)  LAD/2 C1 HS\n# Page 869\n# * START\tBALLISTIC PHASE ...\n\t\t\t\t\t# MM = 66\tUPCONTRL ENTRY INTO KEP2.\nKEP\t\tRTB\tSSP\n\t\t\tP66\t\t# DISPLAY TRIM GIMBAL ANGLE VALUES.\n\t\t\tGOTOADDR\t# SET GOTOADDR TO KEPLER PHASE.\n\t\t\tKEP2\n\n\t\t\t\t\t# KEP2 CAN ALSO BE STARTED UP DIRECTLY FROM INITROLL\n\t\t\t\t\t# IN P64.  PROGRAM WILL IDLE IN P64 UNTIL D EXCEEDS\n\t\t\t\t\t# .2 G BEFORE GOING ON TO P67.\n\nKEP2\t\tDLOAD\tDSU\t\t# IF Q7F+KDMIN -D NEG, GO TO FINAL PHASE.\n\t\t\tQ7FKDMIN\t# (Q7F + KDMIN)/805\n\t\t\tD\n\t\tBMN\tTLOAD\n\t\t\tPREFINAL\n\t\t\t\t\t# SET ROLLHOLD = ROLLC, IN CASE CMDAPMOD\n\t\t\tROLLC\t\t# = +1 EVER ENTERED.\n\t\tBON\tTLOAD\t\t# IF D > .05G, KEEP PRESENT ROLL COMMAND.\n\t\t\t.05GSW\t\t# IF D < .05G, SET ROLL COMMAND = 0.\n\t\t\t+2\n\t\t\t3ZEROS\t\t# SET ROLLC & ROLLHOLD =0.\n+2\t\tSTCALL\tROLLC\t\t# (SP ROLLHOLD FOLLOWS DP ROLLC)\n\t\t\tP62.3\t\t# CALC DESIRED GIMBAL ANGLES AT PRESENT\n\t\t\t\t\t# RN, VN TO YIELD TRIM ATTITUDE.\n\t\t\t\t\t# AVAILABLE IN CPHI'S FOR N22.\n# Page 870\n# START FINAL PHASE ...\n\t\t\t\t\t# MM = 67\nPREFINAL\tSSP\tRTB\n\t\t\tGOTOADDR\t# RESTART PROTECT: RESET GOTOADDR IF CAME\n\t\t\tPREFINAL\t# FROM HUNTEST.\n\t\t\tP67\t\t# DISABLES GRP4.  FINE IF FROM HUNTEST.BUT\n\t\t\t\t\t# MAY ALSO REMOVE RESTART PROTECTION OF\n\t\t\t\t\t# N69 (P65).\n\t\t\t\t\t# ROLLC\t\tXRNGERR\t\tDNRNGERR\n\t\t\t\t\t# XXX.XX DEG\tXXXX.X NM\tXXXX.X NM\n\n\t\tSET\tSSP\n\t\t\tEGSW\n\t\t\tGOTOADDR\n\t\t\tPREDICT3\n\nPREDICT3\tDLOAD\tDSU\t\t# IF V-VQUIT NEG, STOP STEERING\n\t\t\tV\n\t\t\tVQUIT\n\t\tBMN\tEXIT\n\t\t\tSTEEROFF\n\n\t\tCA\tEBENTRY\t\t# PRECAUTIONARY.\n\t\tTS\tEBANK\n\n\t\tCA\tTWELVE\nBACK\t\tTS\tJJ\n\n\t\tCS\tV\n\t\tINDEX\tJJ\n\t\tAD\tVREFER\t\t# VREF - V, HIGHEST VREF AT END OF TABLE.\n\t\tCCS\tA\t\t# IF VREF-V POS LOOP BACK\n\t\tCCS\tJJ\t\t# DECREMENT JJ, JJ CANNOT BE ZERO\n\t\tTCF\tBACK\n\t\tAD\tONE\n\t\tTS\tTEM1B\t\t# V-VREF IN TEM1B (MUST BE POSITIVE NUM)\n\n\t\tINDEX\tJJ\n\t\tCS\tVREFER\n\t\tINDEX\tJJ\n\t\tAD\tVREFER +1\t# V(K+1) - V(K)\t\t\t(POS NUM)\n\t\tXCH\tTEM1B\n\t\tZL\n\t\tEXTEND\n\t\tDV\tTEM1B\n\t\tTS\tGRAD\t\t# GRAD = (V-VREF)/(VK+1 - VK)\t(POS NUM\n\n\t\tCAF\tFIVE\n\n# Page 871\nBACK2\t\tTS\tMM\n\t\tCAF\tTHIRTEEN\n\t\tADS\tJJ\n\t\tINDEX\tA\n\t\tCS\tVREFER\n\t\tINDEX\tJJ\n\t\tAD\tVREFER\t +1\t# X(K+1) - X(K)\n\t\tEXTEND\n\t\tMP\tGRAD\n\t\tINDEX\tJJ\n\t\tAD\tVREFER\n\t\tINDEX\tMM\n\t\tTS\tFX\t\t# FX = AK + GRAD (AK+1 - AK)\n\t\tCCS\tMM\n\t\tTCF\tBACK2\n\t\tXCH\tFX \t+1\t# ZERO FX +1 AND GET DREFR\n\t\tAD\tD\n\t\tEXTEND\n\t\tMP\tFX\t+5\t# F1\n\t\tDXCH\tMPAC\t\t# MPAC = F1(D-DREF)\n\n\t\tEXTEND\n\t\tDCS\tRDOT\t\t# FORM RDOTREF - RDOT\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\t\t\t# SCALE UP BY 8 FOR THIS PHASE.\n\t\tAD\tFX \t+3\t# RDOTREF\n\t\tEXTEND\n\t\tMP\tFX \t+4\t# F2\n\t\tAD\tFX\t+2\t# RTOGO\n\t\tDAS\tMPAC\t\t# ADD F2(DADV1-DADVR)\n\t\tCA\tMPAC\n\t\tTS\tPREDANG\n\t\t\t\t\t# L/D = LOD + (THETA- PREDANG)/ Y\n\t\tTC\tINTPRET\n\n\t\tSR3\tDSU\n\t\t\tTHETAH\n\t\tBON\tBOFF\n\t\t\tGONEPAST\n\t\t\tGONEGLAD\n\t\t\tGONEBY\n\t\t\tHAVDNRNG\n\t\tDLOAD\tSET\t\t# SET GONEPAST IF GONEBY SET & LATCH IN-PLACE\n\t\t\tMAXRNG\t\t# DISPLAY = 9999.9 IF GONEBY\n\t\t\tGONEPAST\n\t\tSTCALL\tDNRNGERR\n\t\t\tGONEGLAD\n\nHAVDNRNG\tSTORE\tDNRNGERR\t# = (PREDANG - THETA) /360\n# Page 872\n\t\tDCOMP\t\t\t# FALL SHORT IF NEG, OVERSHOOT IF POS\n\t\tBOVB\tDDV\n\t\t\tTCDANZIG\t# CLEAR OVFIND IF ON.\n\t\t\tFX\t\t# FX= DRANGE/D L/D = Y\n\t\tSL\tBOV\n\t\t\t5\n\t\t\tGOMAXL/D\n\t\tDAD\tBOV\n\t\t\tLOD\n\t\t\tGOMAXL/D\n\t\tSTCALL\tL/D\n\t\t\tGLIMITER\t# (GO TO)\n\n# GONEGLAD AND GOPOSMAX ENTRY POINTS FOR GLIMITER ...\n\nGONEGLAD\tDLOAD\t\t\t# SET L/D = -LAD\n\t\t\tGONEGLAD\t# (ANY NEGATIVE NUMBER WILL DO)\n\nGOMAXL/D\tRTB\tDMP\t\t# L/D = LAD SIGN(MPAC)\n\t\t\tSIGNMPAC\n\t\t\tLAD\n\t\tSTORE\tL/D\t\t# AND FALL INTO GLIMITER SECTION\n\nGLIMITER\tDLOAD\tDSU\t\t# IF GMAX/2-D POS, GO TO LIMITL/D\n\t\t\tGMAX/2\n\t\t\tD\n\t\tBPL\tDAD\t\t# IF GMAX  -D NEG, GO TO GOPOSLAD\n\t\t\tLIMITL/D\n\t\t\tGMAX/2\n\t\tBMN\tDMP\n\t\t\tGOPOSLAD\n\t\t\t2HS\n\t\tPDDL\tDMP\t\t# 2HS(GMAX-D) INTO PD\n\t\t\tLEQ\n\t\t\t1/GMAX\n\t\tDAD\tDMP\n\t\t\tLAD\n\t\tPDDL\tDDV\t\t# 2HS(GMAX-D) (LEQ/GMAX+LAD) INTO PD\n\t\t\t2HSGMXSQ\n\t\t\tVSQUARE\n\t\tDAD\tSQRT\t\t# XLIM = SQRT(PD+(2HSGMAX/V)SQ)\n\t\tDAD\tBPL\t\t# IF RDOT+XLIM POS, GO TO LIMITL/D\n\t\t\tRDOT\n\t\t\tLIMITL/D\n\nGOPOSLAD\tDLOAD\n\t\t\tLAD\nSTOREL/D\tSTORE\tL/D\n\n# Page 873\nLIMITL/D\tDLOAD\n\t\t\tL/D\n\t\tSTODL\tL/D1\n\t\t\tVSQUARE\n\n\t\tBON\t\t\t# NO LATERAL CONTROL IF PAST TARGET\n\t\t\tGONEPAST\n\t\t\tL355\n\t\tDMP\tDAD\t\t# Y= KLAT VSQUARE + LATBIAS\n\t\t\tKLAT\n\t\t\tLATBIAS\t\t# Y INTO PD\nL350\t\tPDDL\tABS\t\t# IF ABS(L/D)-L/DCMINR NEG, GO TO L353\n\t\t\tL/D\n\t\tDSU\tBMN\n\t\t\tL/DCMINR\n\t\t\tL353\n\t\tDLOAD\tSIGN\t\t# IF K2ROLL LATANG NEG, GO TO L357\n\t\t\tLATANG\n\t\t\tK2ROLL\n\t\tBMN\tDLOAD\n\t\t\tL357\n\t\tSR1\tPUSH\t\t# Y = Y/2\nL353\t\tDLOAD\tSIGN\t\t# IF LATANG SIGN(K2ROLL)-Y POS, SWITCH\n\t\t\tLATANG\n\t\t\tK2ROLL\n\t\tDSU\n\t\tBMN\tDLOAD\n\t\t\tL355\n\t\t\tK2ROLL\n\t\tBONCLR\tDCOMP\t\t# IF NOSWITCH =1, K2ROLL= K2ROLL\n\t\t\tNOSWITCH\n\t\t\tL355\n\t\tSTORE\tK2ROLL\t\t# K2ROLL = -K2ROLL\n\nL355\t\tDLOAD\tDDV\t\t# ROLLC = ACOS( (L/D1) / LAD)\n\t\t\tL/D1\n\t\t\tLAD\t\t# MPAC SET TO +-1 IF OVERFLOW***\n\t\tSR1\tACOS\n\t\tSIGN\tCLEAR\n\t\t\tK2ROLL\n\t\t\tNOSWITCH\n\t\tSTORE\tROLLC\n\nENDEXIT\t\tEXIT\n\nOVERNOUT\tCA\tBIT13\t\t# ENTRYDSP =92D B13\n\t\tMASK\tCM/FLAGS\n\t\tEXTEND\n\t\tBZF\tNODISKY\t\t# OMIT DISPLAY.\n# Page 874\n\t\tCA\tENTRYVN\t\t# ALL ENTRY DISPLAYS ARE DONE HERE.\n\t\tTC\tBANKCALL\n\t\tCADR\tREGODSPR\t# NO ABORT IF DISKY IN USE\n\nNODISKY\t\tINHINT\n\t\tCCS\tNEWJOB\t\t# PROTECT READACCS GRP 5, IF SIDETRACKED.\n\t\tTC\tCHANG1\nSERVNOUT\tTC\tPOSTJUMP\t# ( COME HERE FROM P67.3 )\n\t\tCADR\tSERVEXIT\t# AND END AVERAGEG JOB VIA  ENDOFJOB.\n\n# Page 875\n# DISPLAY WHEN V IS LESS THAN VQUIT.\n\nSTEEROFF\tEXIT\n\t\tCA\tEBENTRY\t\t# PRECAUTIONARY.\n\t\tTS\tEBANK\n\n\t\tCA\tPRIO16\t\t# 2 LESS THAN NTRYPRIO.\n\t\tTC\tNOVAC\n\t\tEBANK=\tAOG\t\t# ANY EB HERE\n\t\t2CADR\tP67.1\t\t# START UP REMAINDER OF P67\n\n\t\t\t\t\t# RTOGO\t\tLAT\t\tLONG\n\t\t\t\t\t# XXXX.X NM\tXXX.XX DEG\tXXX.XX DEG\n\n\t\tTC\t2PHSCHNG\t# INHINT/RELINT DONE.\n\t\tOCT\t00414\t\t# 4.41 RESTART FOR P67.1 DISPLAY JOB.\n\t\tOCT\t10035\t\t# SERVICER 5.3 RESTART.\n\n\t\tCA\tP67.2CAD\t# HEREAFTER, DO LAT, LONG.\n\t\tTS\tGOTOADDR\n\n\t\tTC\tINTPRET\n\t\tGOTO\nP67.2CAD\t\tP67.2\t\t# CONTINUE FOR LAT, LONG THIS TIME.\n\nL357\t\tDLOAD\tSIGN\t\t# L/D = L/DCMINR SIGN(L/D)\n\t\t\tL/DCMINR\n\t\t\tL/D\n\t\tSTCALL\tL/D1\n\t\t\tL355\t\t# (GO TO)\n\n# Page 876\n# TABLE USED FOR SUB-ORBITAL REFERENCE TRAJECTORY CONTROL.\n\nVREFER\t\tDEC\t.019288\t\t# REFERENCE VELOCITY SCALED V/51532.3946\n\t\tDEC\t.040809\t\t# 13 POINTS ARE STORED AS THE INDEPENDENT\n\t\tDEC\t.076107\t\t# VARIABLE AND THEN SIX 13 POINT FUNCTIONS\n\t\tDEC\t.122156\t\t# OF V ARE STORED CONSECUTIVELY\n\t\tDEC\t.165546\n\t\tDEC\t.196012\n\t\tDEC\t.271945\n\t\tDEC\t.309533\n\t\tDEC\t.356222\n\t\tDEC\t.404192\n\t\tDEC\t.448067\n\t\tDEC\t.456023\n\t\tDEC\t.67918\t\t# HIGHVELOCITY FOR SAFETY.\n\n\t\tDEC\t-.010337\t# DRANGE/DA\tSCALED DRDA/(2700/805)\n\t\tDEC\t-.016550\n\t\tDEC\t-.026935\n\t\tDEC\t-.042039\n\t\tDEC\t-.058974\n\t\tDEC\t-.070721\n\t\tDEC\t-.098538\n\t\tDEC\t-.107482\n\t\tDEC\t-.147762\n\t\tDEC\t-.193289\n\t\tDEC\t-.602557\n\t\tDEC\t-.99999\n\t\tDEC\t-.99999\n\n\t\tDEC\t-.0478599 B-3\t# -DRANGE/DRDOT\n\t\tDEC\t-.0683663 B-3\t# SCALED ((2VS/8 2700) DR/DRDOT)\n\t\tDEC\t-.1343468 B-3\n\t\tDEC\t-.2759846 B-3\n\t\tDEC\t-.4731437 B-3\n\t\tDEC\t-.6472087 B-3\n\t\tDEC\t-1.171693 B-3\n\t\tDEC\t-1.466382 B-3\n\t\tDEC\t-1.905171 B-3\n\t\tDEC\t-2.547990 B-3\n\t\tDEC\t-4.151220 B-3\n\t\tDEC\t-5.813617 B-3\n\t\tDEC\t-5.813617 B-3\n\n# Page 877\n\t\tDEC\t-.0134001  B3\t# RDOTREF\tSCALED (8 RDT/2VS)\n\t\tDEC\t-.013947   B3\n\t\tDEC\t-.013462   B3\n\t\tDEC\t-.011813   B3\n\t\tDEC\t-.0095631  B3\n\t\tDEC\t-.00806946 B3\n\t\tDEC\t-.006828   B3\n\t\tDEC\t-.00806946 B3\n\t\tDEC\t-.0109791  B3\n\t\tDEC\t-.0151498  B3\n\t\tDEC\t-.0179817  B3\n\t\tDEC\t-.0159061  B3\n\t\tDEC\t-.0159061  B3\n\n\t\tDEC\t.0008067\t# RANGE TO GO SCALED RTOGO/2700\n\t\tDEC\t.0032963\t#\t8.9\n\t\tDEC\t.0081852\t#\t22.1\n\t\tDEC\t.017148\n\t\tDEC\t.027926\n\t\tDEC\t.037\n\t\tDEC\t.063296\n\t\tDEC\t.077889\n\t\tDEC\t.098815\n\t\tDEC\t.127519\n\t\tDEC\t.186963\n\t\tDEC\t.238148\n\t\tDEC\t.294185185\n\n\t\tDEC\t-.051099\t# -AREF/805\n\t\tDEC\t-.074534\n\t\tDEC\t-.101242\n\t\tDEC\t-.116646\n\t\tDEC\t-.122360\n\t\tDEC\t-.127081\n\t\tDEC\t-.147453\n\t\tDEC\t-.155528\n\t\tDEC\t-.149565\n\t\tDEC\t-.118509\n\t\tDEC\t-.034907\n\t\tDEC\t-.007950\n\t\tDEC\t-.007950\n\n# Page 878\n\t\tDEC\t.004491\t\t# DRANGE/D L/D SCALED Y/2700\n\t\tDEC\t.008081\n\t\tDEC\t.016030\n\t\tDEC\t.035815\n\t\tDEC\t.069422\n\t\tDEC\t.104519\n\t\tDEC\t.122\n\t\tDEC\t.172407\n\t\tDEC\t.252852\n\t\tDEC\t.363148\n\t\tDEC\t.512963\n\t\tDEC\t.558519\n\t\tDEC\t.558519\t\t# END OF STORED REFERENCE\n\n# Page 879\n# REENTRY CONSTANTS.\n\n# DEFINED BY EQUALS\n\nDEC15\t\t=\tLOW4\n#GAMMAL1\t=\t22D\n\nMAXRNG\t\t2OCT\t1663106755\t# DNRNGERR = 9999.9 IF GONEPAST=1\n\n\t\tBANK\t26\n\t\tSETLOC\tREENTRY1\n\t\tBANK\n\n\t\tCOUNT*\t$$/ENTRY\n\nBARELY1\t\t=\tNEARONE\t\t# COMMON TO BOTH DISK,DANCE.DEFND IN TFF\n#1BITDP\t\t\t\t\t# COMMON TO BOTH DISK AND DANCE. DEFND IN VECPOINT.\n\n1/12TH\t\tDEC\t.083333\t\t# DP 1/12 USES HI WORD IN 1/3 BELOW\n1/3RD\t\t2DEC\t.3333333333\t# DP 1/3\n\n1/16TH\t\t=\tDP2(-4)\n\n# BELOW:  VS = VSAT = 25766.1973 FT/SEC\n\n#\t  RE = 21,202,900 FEET\n\nLEWD1\t\t2DEC\t.15\n\nPOINT1\t\t2DEC\t.1\n\nPOINT2\t\t2DEC\t.2\t\t# .2\n\nDLEWD0\t\t2DEC\t-.05\t\t# -.05\n\nGMAX/2\t\t2DEC\t.16\t\t# 8 GS / 2\n\n3ZEROS\t\tEQUALS\tHI6ZEROS\nNEAR1/4\t\t2OCT\t0777700000\t# 1/4 LESS 1 BIT IN UPPER PART.\n\nC18\t\t2DEC\t.0097026346\t# 500/2VS\n\nQ7FKDMIN\t2DEC\t.0080745342\t# 6.5/805  (Q7F +KDMIN) = 6 + .5)\n\nC1/16\t\t=\tDP2(-4)\n\nQ3\t\t2DEC\t.167003132\t# .07 2VS/21600\n# Page 880\nQ5\t\t2DEC\t.326388889\t# .3 23500/21600\n\nQ6\t\t2DEC\t.0349\t\t# 2 DEG. APPROX 820/23500\n\nQ7F\t\t2DEC\t.0074534161\t# 6/805  (VALUE OF Q7 IN FIXED MEM.)\n\nQ19\t\t=\tHALVE\t\t# Q19 = .5\n\nQ21\t\t2DEC\t.0231481481\t# 500/21600\n\nQ22\t\t2DEC\t-.053333333\t# -1152/21600\n\nVLMIN\t\t2DEC\t.34929485\t# 18000/2 VS\n\nVMIN\t\t=\tFOURTH\t\t# (VS/2) / 2VS\nC12\t\t2DEC\t.00684572901\t# 32 28500/(21202900 2 PI)\n\n1/KB1\t\t2DEC\t.29411765\t# 1 / 3.4\n\n-1/KB2\t\t2DEC\t-.0057074322 B4\t# = -1/(.0034 2 VS) EXP +4\n\nVQUIT\t\t2DEC\t.019405269\t# 1000 /2VS\n\nC20\t\t2DEC\t.21739130\t# (175 FPSS) LIFT UP IF ABOVE C20\n\nC21\t\t2DEC\t.17391304\t# 140/805\n\n25NM\t\t2DEC\t.0011574074\t# 25/21600\t(25 NAUT MILES)\n\nK1D\t\t2DEC\t.0314453125\t# =C16 805/256 = .01 805/256\n\nK2D\t\t2DEC\t-.201298418\t# -C17 2VS/256 = -.001 2VS/256\n\nKVSCALE\t\t2DEC\t.81491944\t# 12800/(2 VS .3048)\n\nKASCALE\t\t2DEC\t.97657358\t# 5.85 16384/(4 .3048 100 805)\n\nKTETA\t\t2DEC*\t.383495203 E2 B-14* # 1000 2PI/16384(163.84)\n\nKT1\t\t2DEC*\t.157788327 E 2 B-14* # RE(2PI)/2 VS(16384) 163.84\n\n.05G\t\t2DEC\t.002\t\t# .05/25\n\nLATBIAS\t\t2DEC\t.00003\t\t# APPRX .5 NM/ 4(21600/2 PI)\n\nKWE\t\t2DEC\t.120056652 B-1\n\nKACOS\t\t2DEC\t.004973592\t# 1/32(2PI)\n\nCHOOK\t\t2DEC\t1 B-6\t\t# .25/16\n# Page 881\n1/24TH\t\t2DEC\t.0833333333 B-1\n\nCH1\t\t2DEC\t.32 B1\t\t# 16 CH1/25 = 16 (1) /25\n\nKC3\t\t2DEC\t-.0247622232\t# -(4 VS VS/ 2 PI 805 RE)\n\nVRCONT\t\t2DEC\t.0135836886\t# 700/2 VSAT\n\nHALVE\t\tEQUALS\tHIDPHALF\nFOURTH\t\tEQUALS\tHIDP1/4\n\n1/GMAX\t\tEQUALS\tHALVE\t\t# 4/GMAX = 4 / 8\n2HS\t\t2DEC\t.0172786611\t# 2 28500 25 32.2/(4 VS VS)\n\n2HSGMXSQ\t2DEC\t.0000305717\t# (2 28500 8 32.2/ 4 VS VS)SQ\n\nC001\t\t2DEC\t-.000625\t# -(4/25)/256\tLEQ/D0 CONST\n\nPOINT8\t\t2DEC\t.8\n\n2C1HS\t\t2DEC\t.0215983264\t# 2 1.25 28500 805/(2 VS)SQ\n\nPT1/16\t\t2DEC\t.1 B-4\n\n1/K44\t\t2DEC\t.00260929464\t# 2 VS/19749550\n\nVFINAL\t\t2DEC\t.51618016\t# 26600/2 VS\n\nVFINAL1\t\t2DEC\t.523942273\t# = 27000 / 2 VS\n\n1/KA1\t\t2DEC\t.30048077\t# 25/(1.3 64)\n\nKA2\t\t2DEC\t.008\t\t# .2/25\n\nKA3\t\t2DEC\t.44720497\t# = 90 4/805\n\nKA4\t\t2DEC\t.049689441\t# 40/805\n\nKALIM\t\t2DEC\t.06\t\t# 1.5/25\n\nQ7MIN\t\t=\tKA4\t\t# = 40/805 = .049689441\n-HSCALED\t2DEC\t-.55305018\t# -28500/2 VS\n\n-KSCALE\t\t2DEC\t-.0312424837\t# -805/VS\n\nCOS15\t\t2DEC\t.965\n\nLATSLOPE\tEQUALS\t1/12TH\n# ... END OF RE-ENTRY CONSTANTS ...\n\n"
  },
  {
    "path": "Comanche055/RESTARTS_ROUTINE.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     RESTARTS_ROUTINE.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 1414-1419\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-07 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname, and page images. Corrected various\n#\t\t\t\ttypos in the transcription of program\n#\t\t\t\tcomments, and these should be back-ported\n#\t\t\t\tto Colossus249.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 1414\n\t\tBANK\t01\n\t\tSETLOC\tRESTART\n\t\tBANK\n\n\t\tEBANK=\tPHSNAME1\t# GOPROG MUST SWITCH TO THIS EBANK\n\n\t\tCOUNT\t01/RSROU\n\nRESTARTS\tCA\tMPAC +5\t\t# GET GROUP NUMBER -1\n\t\tDOUBLE\t\t\t# SAVE FOR INDEXING\n\t\tTS\tTEMP2G\n\n\t\tCA\tPHS2CADR\t# SET UP EXIT IN CASE IT IS AN EVEN\n\t\tTS\tTEMPSWCH\t# TABLE PHASE\n\n\t\tCA\tRTRNCADR\t# TO SAVE TIME ASSUME IT WILL GET NEXT\n\t\tTS\tGOLOC +2\t# GROUP AFTER THIS\n\n\t\tCA\tTEMPPHS\n\t\tMASK\tOCT1400\n\t\tCCS\tA\t\t# IS IT A VARIABLE OR TABLE RESTART\n\t\tTCF\tITSAVAR\t\t# IT:S A VARIABLE RESTART\n\nGETPART2\tCCS\tTEMPPHS\t\t# IS IT AN X.1 RESTART\n\t\tCCS\tA\n\t\tTCF\tITSATBL\t\t# NO, ITS A TABLE RESTART\n\n\t\tCA\tPRIO14\t\t# IT IS AN X.1 RESTART, THEREFORE START\n\t\tTC\tFINDVAC\t\t# THE DISPLAY RESTART JOB\n\t\tEBANK=\tLST1\n\t\t2CADR\tINITDSP\n\n\t\tTC\tRTRNCADR\t# FINISHED WITH THIS GROUP, GET NEXT ONE\n\nITSAVAR\t\tMASK\tOCT1400\t\t# IS IT TYPE B ?\n\t\tCCS\tA\n\t\tTCF\tITSLIKEB\t# YES,IT IS TYPE B\n\n\t\tEXTEND\t\t\t# STORE THE JOB (OR TASK) 2CADR FOR EXIT\n\t\tNDX\tTEMP2G\n\t\tDCA\tPHSNAME1\n\t\tDXCH\tGOLOC\n\n\t\tCA\tTEMPPHS\t\t# SEE IF THIS IS A JOB, TASK, OR A LONGCALL\n\t\tMASK\tOCT7\n\t\tAD\tMINUS2\n\t\tCCS\tA\n\t\tTCF\tITSLNGCL\t# ITS A LONGCALL\n\n# Page 1415\nRTRNCADR\tTC\tSWRETURN\t# CANT GET HERE\n\t\tTCF\tITSAWAIT\n\n\t\tTCF\tITSAJOB\t\t# ITS A JOB\n\nITSAWAIT\tCA\tWTLTCADR\t# SET UP WAITLIST CALL\n\t\tTS\tGOLOC -1\n\n\t\tNDX\tTEMP2G\t\t# DIRECTLY STORED\n\t\tCA\tPHSPRDT1\nTIMETEST\tCCS\tA\t\t# IS IT AN IMMEDIATE RESTART\n\t\tINCR\tA\t\t# NO.\n\t\tTCF\tFINDTIME\t# FIND OUT WHEN IT SHOULD BEGIN\n\n\t\tTCF\tITSINDIR\t# STORED INDIRECTLY\n\n\t\tTCF\tIMEDIATE\t# IT WANTS AN IMMEDIATE RESTART\n\n# ***** THIS MUST BE IN FIXED FIXED *****\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG2\n\t\tBANK\n\n\t\tCOUNT\t02/RSROU\n\nITSINDIR\tLXCH\tGOLOC +1\t# GET THE CORRECT E BANK IN CASE THIS IS\n\t\tLXCH\tBB\t\t# SWITCHED ERRASIBLE\n\n\t\tNDX\tA\t\t# GET THE TIME INDIRECTLY\n\t\tCA\t1\n\n\t\tLXCH\tBB\t\t# RESTORE THE BB AND GOLOC\n\t\tLXCH\tGOLOC +1\n\n\t\tTCF\tFINDTIME\t# FIND OUT WHEN IT SHOULD BEGIN\n\n# ***** YOU MAY RETURN TO SWITCHED FIXED *****\n\n\t\tBANK \t01\n\t\tSETLOC\tRESTART\n\t\tBANK\n\n\t\tCOUNT\t01/RSROU\n\nFINDTIME\tCOM\t\t\t# MAKE NEGATIVE SINCE IT WILL BE SUBTRACTED\n\t\tTS\tL\t\t# AND SAVE\n\t\tNDX\tTEMP2G\n\t\tCS\tTBASE1\n\t\tEXTEND\n# Page 1416\n\t\tSU\tTIME1\n\t\tCCS\tA\n\t\tCOM\n\t\tAD\tOCT37776\n\t\tAD\tONE\n\t\tAD\tL\n\t\tCCS\tA\n\t\tCA\tZERO\n\t\tTCF\t+2\n\t\tTCF\t+1\nIMEDIATE\tAD\tONE\n\t\tTC\tGOLOC -1\nITSLIKEB\tCA\tRTRNCADR\t# TYPE B, SO STORE RETURN IN\n\t\tTS\tTEMPSWCH\t# TEMPSWCH IN CASE OF AN EVEN PHASE\n\n\t\tCA\tPRT2CADR\t# SET UP EXIT TO GET TABLE PART OF THIS\n\t\tTS\tGOLOC +2\t# VARIABLE TYPE OF PHASE\n\n\t\tCA\tTEMPPHS\t\t# MAKE THE PHASE LOOK RIGHT FOR THE TABLE\n\t\tMASK\tOCT177\t\t# PART OF THIS VARIABLE PHASE\n\t\tTS\tTEMPPHS\n\n\t\tEXTEND\n\t\tNDX\tTEMP2G\t\t# OBTAIN THE JOB:S 2CADR\n\t\tDCA\tPHSNAME1\n\t\tDXCH\tGOLOC\n\nITSAJOB\t\tNDX\tTEMP2G\t\t# NOW ADD THE PRIORITY AND LET:S GO\n\t\tCA\tPHSPRDT1\nCHKNOVAC\tTS\tGOLOC -1\t# SAVE PRIO UNTIL WE SEE IF ITS\n\t\tEXTEND\t\t\t# A FINDVAC OR A NOVAC\n\t\tBZMF\tITSNOVAC\n\n\t\tCAF\tFVACCADR\t# POSITIVE, SET UP FINDVAC CALL.\n\t\tXCH\tGOLOC -1\t# PICK UP PRIO,\n\t\tTC\tGOLOC -1\t# AND GO\n\nITSNOVAC\tCAF\tNOVACADR\t# NEGATIVE,\n\t\tXCH\tGOLOC -1\t# SET UP NOVAC CALL,\n\t\tCOM\t\t\t# CORRECT PRIO,\n\t\tTC\tGOLOC -1\t# AND GO\n\nITSATBL\t\tTS\tCYR\t\t# FIND OUT IF THE PHASE IS ODD OR EVEN\n\t\tCCS\tCYR\n\t\tTCF\t+1\t\t# IT:S EVEN\n\t\tTCF\tITSEVEN\n\n\t\tCA\tRTRNCADR\t# IN CASE THIS IS THE SECOND PART OF A\n\t\tTS\tGOLOC +2\t# TYPE B RESTART, WE NEED PROPER EXIT\n# Page 1417\n\t\tCA\tTEMPPHS\t\t# SET UP POINTER FOR FINDING OUR PLACE IN\n\t\tTS\tSR\t\t# THE RESTART TABLES\n\t\tAD\tSR\n\t\tNDX\tTEMP2G\n\t\tAD\tSIZETAB +1\n\t\tTS\tPOINTER\n\nCONTBL2\t\tEXTEND\t\t\t# FIND OUT WHAT'S IN THE TABLE\n\t\tNDX\tPOINTER\n\t\tDCA\tCADRTAB\t\t# GET THE 2CADR\n\n\t\tLXCH\tGOLOC +1\t# STORE THE BB INFORMATION\n\n\t\tCCS\tA\t\t# IS IT A JOB OR IT IT TIMED\n\t\tINCR\tA\t\t# POSITIVE, MUST BE A JOB\n\t\tTCF\tITSAJOB2\n\n\t\tINCR\tA\t\t# MUST BE EITHER A WAITLIST OR LONGCALL\n\t\tTS\tGOLOC\t\t# LET-S STORE THE CORRECT CADR\n\n\t\tCA\tWTLTCADR\t# SET UP OUR EXIT TO WAITLIST\n\t\tTS\tGOLOC -1\n\n\t\tCA\tGOLOC +1\t# NOW FIND OUT IF IT IS A WAITLIST CALL\n\t\tMASK\tBIT10\t\t# THIS SHOULD BE ONE IF WE HAVE -BB\n\t\tCCS\tA\t\t# FOR THAT MATTER SO SHOULD BE BITS 9,8,7,\n\t\t\t\t\t# 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT\n\t\t\t\t\t# IN IMPORTANCE ANYWAY. BIT 4\n\t\tTCF\tITSWTLST\t# IT IS A WAITLIST CALL\n\n\t\tNDX\tPOINTER\t\t# OBTAIN THE ORIGINAL DELTA T\n\t\tCA\tPRDTTAB\t\t# ADDRESS FOR THIS LONGCALL\n\n\t\tTCF\tITSLGCL1\t# NOW GO GET THE DELTA TIME\n\n# ***** THIS MUST BE IN FIXED FIXED *****\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG2\n\t\tBANK\n\n\t\tCOUNT\t02/RSROU\n\nITSLGCL1\tLXCH\tGOLOC +1\t# OBTAIN THE CORRECT E BANK\n\t\tLXCH\tBB\n\t\tLXCH\tGOLOC +1\t# AND PRESERVE OUR E AND F BANKS\n\n\t\tEXTEND\t\t\t# GET THE DELTA TIME\n\t\tNDX\tA\n\t\tDCA\t0\n# Page 1418\n\t\tLXCH\tGOLOC +1\t# RESTORE OUR E AND F BANK\n\t\tLXCH\tBB\t\t# RESTORE THE TASKS E AND F BANKS\n\t\tLXCH\tGOLOC +1\t# AND PRESERVE OUR L\n\n\t\tTCF\tITSLGCL2\t# NOW LET:S PROCESS THIS LONGCALL\n\n# ***** YOU MAY RETURN TO SWITCHED FIXED *****\n\n\t\tBANK\t01\n\t\tSETLOC\tRESTART\n\t\tBANK\n\n\t\tCOUNT\t01/RSROU\n\nITSLGCL2\tDXCH\tLONGTIME\n\n\t\tEXTEND\t\t\t# CALCULATE TIME LEFT\n\t\tDCS\tTIME2\n\t\tDAS\tLONGTIME\n\t\tEXTEND\n\t\tDCA\tLONGBASE\n\t\tDAS\tLONGTIME\n\n\t\tCCS\tLONGTIME\t# FIND OUT HOW THIS SHOULD BE RESTARTED\n\t\tTCF\tLONGCLCL\n\t\tTCF\t+2\n\t\tTCF\tIMEDIATE -3\n\t\tCCS\tLONGTIME +1\n\t\tTCF\tLONGCLCL\n\t\tNOOP\t\t\t# CAN:T GET HERE\t*********\n\t\tTCF\tIMEDIATE -3\n\t\tTCF\tIMEDIATE\n\nLONGCLCL\tCA\tLGCLCADR\t# WE WILL GO TO LONGCALL\n\t\tTS\tGOLOC -1\n\n\t\tEXTEND\t\t\t# PREPARE OUR ENTRY TO LONGCALL\n\t\tDCA\tLONGTIME\n\t\tTC\tGOLOC -1\n\nITSLNGCL\tCA\tWTLTCADR\t# ASSUME IT WILL GO TO WAITLIST\n\t\tTS\tGOLOC -1\n\n\t\tNDX\tTEMP2G\n\t\tCS\tPHSPRDT1\t# GET THE DELTA T ADDRESS\n\n\t\tTCF\tITSLGCL1\t# NOW GET THE DELTA TIME\n\nITSWTLST\tCS\tGOLOC +1\t# CORRECT THE BBCON INFORMATION\n\t\tTS\tGOLOC +1\n# Page 1419\n\t\tNDX\tPOINTER\t\t# GET THE DT AND FIND OUT IF IT WAS STORED\n\t\tCA\tPRDTTAB\t\t# DIRECTLY OR INDIRECTLY\n\n\t\tTCF\tTIMETEST\t# FIND OUT HOW THE TIME IS STORED\n\nITSAJOB2\tXCH\tGOLOC\t\t# STORE THE CADR\n\n\t\tNDX\tPOINTER\t\t# ADD THE PRIORITY AND LET:S GO\n\t\tCA\tPRDTTAB\n\n\t\tTCF\tCHKNOVAC\n\nITSEVEN\t\tCA\tTEMPSWCH\t# SET UP FOR EITHER THE SECOND PART OF THE\n\t\tTS\tGOLOC +2\t# TABLE, OR A RETURN FOR THE NEXT GROUP\n\n\t\tNDX\tTEMP2G\t\t# SET UP POINTER FOR OUR LOCATION WITHIN\n\t\tCA\tSIZETAB\t\t# THE TABLE\n\t\tAD\tTEMPPHS\t\t# THIS MAY LOOK BAD BUT LET:S SEE YOU DO\n\t\tAD\tTEMPPHS\t\t# BETTER IN TIME OR NUMBER OF LOCATIONS\n\t\tAD\tTEMPPHS\n\t\tTS\tPOINTER\n\n\t\tTCF\tCONTBL2\t\t# NOW PROCESS WHAT IS IN THE TABLE\n\nPHSPART2\tCA\tTHREE\t\t# SET THE POINTER FOR THE SECOND HALF OF\n\t\tADS\tPOINTER\t\t# THE TABLE\n\n\t\tCA\tRTRNCADR\t# THIS WILL BE OUR LAST TIME THROUGH THE\n\t\tTS\tGOLOC +2\t# EVEN TABLE , SO AFTER IT  GET THE NEXT\n\t\t\t\t\t# GROUP\n\t\tTCF\tCONTBL2\t\t# SO LET:S GET THE SECOND ENTRY IN THE TBL\n\nTEMPPHS\t\tEQUALS\tMPAC\nTEMP2G\t\tEQUALS\tMPAC +1\nPOINTER\t\tEQUALS\tMPAC +2\nTEMPSWCH\tEQUALS\tMPAC +3\nGOLOC\t\tEQUALS\tVAC5 +20D\nMINUS2\t\tEQUALS\tNEG2\nOCT177\t\tEQUALS\tLOW7\n\nPHS2CADR\tGENADR\tPHSPART2\nPRT2CADR\tGENADR\tGETPART2\nLGCLCADR\tGENADR\tLONGCALL\nFVACCADR\tGENADR\tFINDVAC\nWTLTCADR\tGENADR\tWAITLIST\nNOVACADR\tGENADR\tNOVAC\n\n\n\n\n"
  },
  {
    "path": "Comanche055/RESTART_TABLES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tRESTART_TABLES.agc\n# Purpose:\tPart of the source code for Comanche, build 055. It\n#\t\tis part of the source code for the Command Module's\n#\t\t(CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 211-221\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t2009-05-16 FB\tTranscription Batch 2 Assignment.\n#\t\t2009-05-20 RSB\tAdded a missing comment mark.  Corrected mismarked\n#\t\t\t\tPage 217 -> 220.\n#\t\t2009-05-21 RSB\tFixed value of 5.21SPOT.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 211\n# RESTART TABLES\n# --------------\n#\n# THERE ARE TWO FORMS OF RESTART TABLES FOR EACH GROUP.  THEY ARE KNOWN AS THE EVEN RESTART TABLES AND THE ODD\n# RESTART TABLES.  THE ODD TABLES HAVE ONLY ONE ENTRY OF THREE LOCATIONS WHILE THE EVEN TABLES HAVE TWO ENTRIES\n# EACH USING THREE LOCATIONS. THE INFORMATION AS TO WHETHER IT IS A JOB, WAITLIST, OR A LONGCALL IS GIVEN BY THE\n# WAY THINGS ARE PUT INTO THE TABLES.\n#\n# A JOB HAS ITS PRIORITY STORED IN PRDTTAB OF THE CORRECT PHASE SPOT - A POSITIVE PRIORITY INDICATES A\n# FINDVAC JOB, A NEGATIVE PRIORITY A NOVAC.  THE 2CADR OF THE JOB IS STORED IN THE CADRTAB.\n# FOR EXAMPLE,\n#\n#\t\t5.7SPOT\t\tOCT\t23000\n#\t\t\t\t2CADR\tSOMEJOB\n#\n# A RESTART OF GROUP 5 WITH PHASE SEVEN WOULD THEN CAUSE SOMEJOB TO BE RESTARTED AS A FINDVAC WITH PRIORITY 23.\n#\n#\t\t5.5SPOT\t\tOCT\t-23000\n#\t\t\t\t2CADR\tANYJOB\n#\n# HERE A RESTART OF GROUP 5 WITH PHASE 7 WOULD CAUSE ANYJOB TO BE RESTARTED AS A NOVAC WITH PRIORITY 23.\n# A LONGCALL HAS ITS GENADR OF ITS 2CADR STORED NEGATIVELY AND ITS BBCON STORED POSITIVELY.  IN ITS PRDTTAB IS\n# PLACED THE LOCATION OF A DP REGISTER THAT CONTAINS THE DELTA TIME THAT LONGCALL HAD BEEN ORIGINALLY STARTED\n# WITH.  EXAMPLE,\n#\n#\t\t3.6SPOT\t\tGENADR\tDELTAT\n#\t\t\t\t-GENADR\tLONGTASK\n#\t\t\t\tBBCON\tLONGTASK\n\n#\t\t\t\tOCT\t31000\n#\t\t\t\t2CADR\tJOBAGAIN\n#\n# THIS WOULD START UP LONGTASK AT THE APPROPRIATE TIME, OR IMMEDIATELY IF THE TIME HAD ALREADY PASSED. IT SHOULD\n# BE NOTED THAT IF DELTAT IS IN A SWITCHED E BANK, THIS INFORMATION SHOULD BE IN THE BBCON OF THE 2CADR OF THE\n# TASK.  FROM ABOVE, WE SEE THAT THE SECOND PART OF THIS PHASE WOULD BE STARTED AS A JOB WITH A PRIORITY OF 31.\n#\n# WAITLIST CALLS ARE IDENTIFIED BY THE FACT THAT THEIR 2CADR IS STORED NEGATIVELY.  IF PRDTTAB OF THE PHASE SPOT\n# IS POSITIVE, THEN IT CONTAINS THE DELTA TIME, IF PRDTTAB IS NEGATIVE THEN IT IS THE -GENADR OF AN ERASABLE\n# LOCATION CONTAINING THE DELTA TIME, THAT IS, THE TIME IS STORED INDIRECTLY.  IT SHOULD BE NOTED AS ABOVE, THAT\n# IF THE TIME IS STORED INDIRECTLY, THE BBCON MUST CONTAIN THE NECESSARY E BANK INFORMATION IF APPLICABLE.  WITH\n# WAITLIST WE HAVE ONE FURTHER OPTION, IF -0 IS STORED IN PRDTTAB, IT WILL CAUSE AN IMMEDIATE RESTART OF THE\n# TASK.  EXAMPLES,\n#\n#\t\t\t\tOCT\t77777\t\t# THIS WILL CAUSE AN IMMEDIATE RESTART\n#\t\t\t\t-2CADR\tATASK\t\t# OF THE TASK :ATASK:\n#\n#\t\t\t\tDEC\t200\t\t# IF THE TIME OF THE 2 SECONDS SINCE DUMMY\n#\t\t\t\t-2CADR\tDUMMY\t\t# WAS PUT ON THE WAITLIST IS UP, IT WILL BEGIN\n#\t\t\t\t\t\t\t# IN 10 MS, OTHERWISE IT WILL BEGIN WHEN\n#\t\t\t\t\t\t\t# IT NORMALLY WOULD HAVE BEGUN.\n# Page 212\n#\t\t\t\t-GENADR\tDTIME\t\t# WHERE DTIME CONTAINS THE DELTA TIME\n#\t\t\t\t-2CADR\tTASKTASK\t# OTHERWISE THIS IS AS ABOVE\n#\n# ***** NOW THE TABLES THEMSELVES *****\n\n\t\tBANK\t01\n\t\tSETLOC\tRESTART\n\t\tBANK\n\n\t\tCOUNT\t01/RSTAB\n\nPRDTTAB\t\tEQUALS\t12000\t\t\t# USED TO FIND THE PRIORITY OR DELTATIME\nCADRTAB\t\tEQUALS\t12001\t\t\t# THIS AND THE NEXT RELATIVE LOC CONTAIN\n\t\t\t\t\t\t# RESTART 2CADR\n\nSIZETAB\t\tTC\t1.2SPOT -12006\n\t\tTC\t1.3SPOT -12004\n\t\tTC\t2.2SPOT -12006\n\t\tTC\t2.3SPOT\t-12004\n\t\tTC\t3.2SPOT -12006\n\t\tTC\t3.3SPOT -12004\n\t\tTC\t4.2SPOT -12006\n\t\tTC\t4.3SPOT -12004\n\t\tTC\t5.2SPOT -12006\n\t\tTC\t5.3SPOT -12004\n\t\tTC\t6.2SPOT -12006\n\t\tTC\t6.3SPOT -12004\n1.2SPOT\t\tEQUALS\t3.2SPOT\n\n# ANY MORE GROUP 1.EVEN RESTART VALUES SHOULD GO HERE\n\n1.3SPOT\t\tDEC\t120\t\t\t# THIS NUMBER MUST BE EQUAL C(JTAGTIME)\n\t\tEBANK=\tAOG\n\t\t-2CADR\tSETJTAG\n\n1.5SPOT\t\tOCT\t10000\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tREDO40.9\n\n1.7SPOT\t\tOCT\t10000\n\t\tEBANK=\tESTROKER\n\t\t2CADR\tRELINUS\n\n1.11SPOT\tOCT\t10000\n\t\tEBANK=\tESTROKER\n\t\t2CADR\tPIKUP20\n\n# ANY MORE GROUP 1.ODD RESTART VALUES SHOULD GO HERE\n\n2.2SPOT\t\tEQUALS\t1.2SPOT\n\n# ANY MORE GROUP 2.EVEN RESTART VALUES SHOULD GO HERE\n# Page 213\n\n2.3SPOT\t\tGENADR\t600SECS\n\t\t-GENADR\tSTATEINT\n\t\tEBANK=\tRRECTCSM\n\t\tBBCON\tSTATEINT\n\n2.5SPOT\t\tOCT\t05000\n\t\tEBANK=\tRRECTCSM\n\t\t2CADR\tSTATINT1\n\n2.7SPOT\t\tOCT\t10000\n\t\tEBANK=\tMRKBUF2\n\t\t2CADR\tR22\n\n2.11SPOT\tOCT\t14000\n\t\tEBANK=\tLANDMARK\n\t\t2CADR\tV94ENTER\n\n2.13SPOT\tOCT\t10000\n\t\tEBANK=\tMRKBUF2\n\t\t2CADR\tREDOR22\n\n# ANY MORE GROUP 2.ODD RESTART VALUES SHOULD GO HERE\n\n3.2SPOT\t\tEQUALS\t4.2SPOT\n\n# ANY MORE GROUP 3.EVEN RESTART VALUES SHOULD GO HERE\n\n3.3SPOT\t\tOCT\t20000\n\t\tEBANK=\tTGO\n\t\t2CADR\tS40.13\n\n3.5SPOT\t\tDEC\t0\n\t\tDEC\t0\n\t\tDEC\t0\n3.7SPOT\t\tOCT\t22000\n\t\tEBANK=\tTEPHEM\n\t\t2CADR\tMATRXJOB\n\n3.11SPOT\tOCT\t22000\n\t\tEBANK=\tTEPHEM\n\t\t2CADR\tREP11\n\n3.13SPOT\tOCT\t22000\n\t\tEBANK=\tTEPHEM\n\t\t2CADR\tREP11A\n\n3.15SPOT\t-GENADR\tTGO +1\n\t\tEBANK=\tTGO\n\t\t-2CADR\tENGINOFF\n\n# Page 214\n# ANY MORE GROUP 3.ODD RESTART VALUES SHOULD GO HERE\n\n4.2SPOT\t\tOCT\t77777\n\t\tEBANK=\tTIG\n\t\t-2CADR\tPRECHECK\n\n\t\tOCT\t30000\n\t\tEBANK=\tDELVIMU\n\t\t2CADR\tP47BODY\n\n4.4SPOT\t\tOCT\t77777\n\t\tEBANK=\tTIG\n\t\t-2CADR\tPRECHECK\n\n\t\tDEC\t2996\n\t\tEBANK=\tDAPDATR1\n\t\t-2CADR\tTTG/0\n\n4.6SPOT\t\tOCT\t77777\n\t\tEBANK=\tTIG\n\t\t-2CADR\tPRECHECK\n\n\t\tDEC\t2496\n\t\tEBANK=\tTIG\n\t\t-2CADR\tTIG-5\n\n# ANY MORE GROUP 4.EVEN RESTART VALUES SHOULD GO HERE\n\n4.3SPOT\t\tDEC\t40\n\t\tEBANK=\tPACTOFF\n\t\t-2CADR\tDOTVCON\n\n4.5SPOT\t\tDEC\t160\n\t\tEBANK=\tPACTOFF\n\t\t-2CADR\tDOSTRULL\n\n4.7SPOT\t\tDEC\t500\n\t\tEBANK=\tPACTOFF\n\t\t-2CADR\tTIG-0\n\n4.11SPOT\tDEC\t250\n\t\tEBANK=\tDAPDATR1\n\t\t-2CADR\tV97E40.6\n\n4.13SPOT\tDEC\t200\n\t\tEBANK=\tWHOCARES\n\t\t-2CADR\tR40ENABL\n\n4.15SPOT\tOCT\t16000\t\t\t# PRELAUNCH OPTICAL VERIFICATION\n\t\tEBANK=\tOGC\n# Page 215\n\t\t2CADR\tCOMPVER\t\t\t# CALLS FOR OPTICS DATA AGAIN (STD LEADIN)\n\n4.17SPOT\tOCT\t16000\t\t\t#  PRELAUNCH AZIMUTH CHANGE\n\t\tEBANK=\tXSM\n\t\t2CADR\tAZMTHCG1\n\n4.21SPOT\tGENADR\tP40TMP\t\t\t# DELTA TIME USED IN SETTING UP\n\t\t-GENADR\tTIGBLNK\t\t\t# LONG CALL OF TIGBLNK  BY P40,P41\n\t\tEBANK=\tP40TMP\n\t\tBBCON\tTIGBLNK\n4.23SPOT\tOCT\t12000\t\t\t# PROTECT  P40S/SV BY P40 P41\n\t\tEBANK=\tTIG\n\t\t2CADR\tP40S/SV\n\n4.25SPOT\tOCT\t24000\n\t\tEBANK=\tBESTI\n\t\t2CADR\tPROG52\n\n4.27SPOT\tDEC\t250\n\t\tEBANK=\tPACTOFF\n\t\t-2CADR\tDOTVCRCS\n\n4.31SPOT\tOCT\t13000\n\t\tEBANK=\tSTAR\n\t\t2CADR\tR51 +1\n\n4.33SPOT\tDEC\t2100\t\t\t# PROTECT CONTINUING JOB TO START P63\n\t\tEBANK=\tAOG\n\t\t-2CADR\tWAKEP62\n\n4.35SPOT\tOCT\t12000\n\t\tEBANK=\tDAPDATR1\n\t\t2CADR\tPOSTBURN\n\n4.37SPOT\tDEC\t500\n\t\tEBANK=\tTIG\n\t\t-2CADR\tTIGAVEG\n\n4.41SPOT\tOCT\t17000\t\t\t# PROTECT DISPLAY JOB IN P67\n\t\tEBANK=\tAOG\n\t\t2CADR\tP67.1\n\n4.43SPOT\t-GENADR\tS61DT\t\t\t# PROTECT TASK TO START PREREAD,ENTRY\n\t\tEBANK=\tS61DT\t\t\t# S61.1C WILL CHANGE EBANK=EB7 FOR PREREAD\n\t\t-2CADR\tS61.1C\n\n4.45SPOT\tOCT\t13000\t\t\t# PROTECT CONTINUING JOB S61.1\n\t\tEBANK=\tAOG\t\t\t# (ENTRY IMU ALIGNMENT)\n# Page 216\n\t\t2CADR\tS61.1A -1\n\n4.47SPOT\tOCT\t17000\t\t\t# PROTECT HUNTEST ITERATION.\n\t\tEBANK=\tAOG\n\t\t2CADR\tPRE-HUNT\n\n4.51SPOT\tOCT\t77777\t\t\t# PROTECT FDAI ATTITUDE\n\t\tEBANK=\tBODY3\t\t\t# ERROR DISPLAY IN P11\n\t\t-2CADR\tATERTASK\n\n4.53SPOT\tDEC\t-0\n\t\tEBANK=\tEND-E7\t\t\t# EBANK7 FOR TIG\n\t\t-2CADR\tV97ETASK\n\n4.55SPOT\tOCT\t13000\t\t\t# PROTECT  P65 RESPONSIVE DISPLAY.\n\t\tEBANK=\tRTINIT\n\t\t2CADR\tP65.1\n\n4.57SPOT\t-GENADR\tP40TMP\n\t\tEBANK=\tP40TMP\n\t\t-2CADR\tTIGON\n\n4.61SPOT\tOCT\t77777\n\t\tEBANK=\tPACTOFF\n\t\t-2CADR\tIGNITION\n\n4.63SPOT\tOCT\t77777\n\t\tEBANK=\tPACTOFF\n\t\t-2CADR\tDOSPSOFF\n\n4.65SPOT\tDEC\t10\n\t\tEBANK=\tTIG\n\t\t-2CADR\tTIG-5\n\n4.67SPOT\tDEC\t-0\n\t\tEBANK=\tCSMMASS\n\t\t-2CADR\tV97TTASK\n\n4.71SPOT\tDEC\t250\n\t\tEBANK=\tDAPDATR1\t\t# (FOR RCSDAPON)\n\t\t-2CADR\tV97TRCS\n\n4.73SPOT\tDEC\t-0\n\t\tEBANK=\tV97VCNTR\n\t\t-2CADR\tV97PTASK\n\n4.75SPOT\tDEC\t-0\n\t\tEBANK=\tDAPDATR1\n\t\t-2CADR\tSPSOFF97\n\n# Page 217\n4.77SPOT\tDEC\t-0\n\t\tEBANK=\tPACTOFF\n\t\t-2CADR\tTIG-0\n\n# ANY MORE GROUP 4.ODD RESTART VALUES SHOULD GO HERE\n\n5.2SPOT\t\tOCT\t32000\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tNORMLIZE\n\n\t\tDEC\t200\n\t\tEBANK=\tAOG\n\t\t-2CADR\tREREADAC\n\n5.4SPOT\t\tOCT\t20000\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tSERVICER\n\n\t\tDEC\t200\n\t\tEBANK=\tAOG\n\t\t-2CADR\tREREADAC\n\n# ANY MORE GROUP 5.EVEN RESTART VALUES SHOULD GO HERE\n\n5.3SPOT\t\tDEC\t200\n\t\tEBANK=\tAOG\n\t\t-2CADR\tREREADAC\n\n5.5SPOT\t\tOCT\t77777\n\t\tEBANK=\tAOG\n\t\t-2CADR\tREDO5.5\n\n5.7SPOT\t\tOCT\t20000\t\t\t# USED BY PRELAUNCH\n\t\tEBANK=\tXSM\n\t\t2CADR\tRSTGTS1\n\n5.11SPOT\tOCT\t77777\n\t\tEBANK=\tXSM\n\t\t-2CADR\tALLOOP1\n\n5.13SPOT\tOCT\t20000\n\t\tEBANK=\tXSM\n\t\t2CADR\tWTLISTNT\n\n5.15SPOT\tOCT\t20000\n\t\tEBANK=\tXSM\n\t\t2CADR\tRESTEST1\n\n5.17SPOT\tOCT\t20000\n\t\tEBANK=\tXSM\n# Page 218\n\t\t2CADR\tGEOSTRT4\n\n5.21SPOT\tOCT\t22000\n\t\tEBANK=\tXSM\n\t\t2CADR\tALFLT1\n\n5.23SPOT\tOCT\t77777\n\t\tEBANK=\tXSM\n\t\t-2CADR\tSPECSTS\n\n5.25SPOT\tOCT\t20000\n\t\tEBANK=\tXSM\n\t\t2CADR\tRESTEST3\n\n5.27SPOT\tOCT\t20000\n\t\tEBANK=\tXSM\n\t\t2CADR\tRESTAIER\n\n5.31SPOT\tDEC\t0\n\t\tDEC\t0\n\t\tDEC\t0\n5.33SPOT\tOCT\t20000\n\t\tEBANK=\tXSM\n\t\t2CADR\tRESCHNG\n\n5.35SPOT\tDEC\t0\n\t\t2DEC\t0\n\n5.37SPOT\tOCT\t77777\n\t\tEBANK=\tAOG\n\t\t-2CADR\tCHEKAVEG\n\n5.41SPOT\tOCT\t77777\t\t\t# TO PROTECT PREREAD AT TIG-30A\n\t\tEBANK=\tDVCNTR\t\t\t#    TIG-15 T+60\n\t\t-2CADR\tPREREAD\n\n# ANY MORE GROUP 5.ODD RESTART VALUES SHOULD GO HERE\n\n6.2SPOT\t\tOCT\t77777\t\t\t# USED BY P40 AFTER GIMB DR TST TO REPOS'N\n\t\tEBANK=\tAK\t\t\t# ENGINE UNTIL TVCDAPON\n\t\t-2CADR\tPRE40.6\n\n\t\tDEC\t100\n\t\tEBANK=\tTTOGO\n\t\t-2CADR\tCLOKTASK\n\n# ANY MORE 6.ODD RESTART VALUES SHOULD GO HERE\n# Page 219\n\n6.3SPOT\t\tDEC\t100\n\t\tEBANK=\tTIG\n\t\t-2CADR\tCLOKTASK\n\n6.5SPOT\t\tOCT\t30000\t\t\t# PROTECT INCREMENTING OF TIME2,TIME1 BY\n\t\tEBANK=\tTEPHEM\t\t\t# P27(UPDATE PROGRAM)\n\t\t2CADR\tTIMEDIDR\n\n6.7SPOT\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n\n6.11SPOT\t-GENADR\tCM/GYMDT\t\t# PROTECT TASK TO READ CDUS.\n\t\tEBANK=\tCM/GYMDT\t\t# FOR ENTRY DAP\n\t\t-2CADR\tREADGYMB\n\n6.13SPOT\tDEC\t0\n\t\tDEC\t0\n\t\tDEC\t0\n\n# Page 220\n# PROGRAM DESCRIPTION: NEWPHASE\t\t\t\t\t\tDATE:  11 NOV 1966\n# MOD: 1\t\t\t\t\t\t\t\tASSEMBLY:  SUNBURST REV\n# MOD BY: COPPS\t\t\t\t\t\t\t\tLOG SECTION: PHASE TABLE MAINTENANCE\n# FUNCTIONAL DESCRIPTION:\n#\n#\tNEWPHASE IS THE QUICK WAY TO MAKE A NON VARIABLE PHASE CHANGE. IT INCLUDES THE OPTION OF SETTING\n#\tTBASE OF THE GROUP.  IF TBASE IS TO BE SET, -C(TIME1) IS STORED IN THE TBASE TABLE AS FOLLOWS:\n#\n#\t\t(L-1)\tTBASE0\n#\t\t(L)\tTBASE1\t(IF GROUP=1)\n#\t\t(L+1)\n#\t\t(L+2)\tTBASE2\t(IF GROUP=2)\n#\t\t-----\n#\t\t(L+6)\tTBASE4\t(IF GROUP=4)\n#\t\t(L+7)\n#\t\t(L+8)\tTBASE5\t(IF GROUP=5)\n#\n#\tIN ANY CASE, THE NEGATIVE OF THE PHASE, FOLLOWED (IN THE NEXT REGISTER) BY THE PHASE, IS STORED IN THE\n#\tPHASE TABLE AS FOLLOWS:\n#\n#\t\t(L)\t-PHASE1\t(IF GROUP=1)\n#\t\t(L+1)\tPHASE1\n#\t\t(L+2)\t-PHASE2\t(IF GROUP=2)\n#\t\t(L+3)\tPHASE2\n#\t\t-----\n#\t\t(L+7)\tPHASE4\n#\t\t(L+8)\t-PHASE5\t(IF GROUP=5)\n#\t\t(L+9)\tPHASE5\n#\n# CALLING SEQUENCE:\n#\tEXAMPLE IS FOR PLACING A PHASE OF FIVE INTO GROUP THREE:\n#\n#\t1) IF TBASE IS NOT TO BE SET:\n#\t\t\tL-1\tCA\tFIVE\n#\t\t\tL\tTC\tNEWPHASE\n#\t\t\tL+1\tOCT\t00003\n#\n#\t2) IF TBASE IS TO BE SET:\n#\t\t\tL-1\tCS\tFIVE\n#\t\t\tL\tTC\tNEWPHASE\n#\t\t\tL+1\tOCT\t00003\n#\n# SUBROUTINES CALLED: NONE\n#\n# NORMAL EXIT MODE: AT L+2 OF CALLING SEQUENCE\n#\n# ALARM OR ABORT EXITS: NONE\n#\n# OUTPUT: PHASE TABLE AND TBASE TABLE UPDATED\n#\n# ERASABLE INITIALIZATION REQ'D: NONE\n# Page 221\n# DEBRIS:  A,L,TEMPG\n\n# ***WARNING*** THIS PROGRAM IS TO BE PLACED IN FIXED-FIXED AND UNSWITCHED ERASABLE.\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG1\n\t\tBANK\n\n\t\tCOUNT*\t$$/PHASE\n\nNEWPHASE\tINHINT\n\n\t\tTS\tL\t\t\t# SAVE FOR FURTHER USE\n\t\tNDX\tQ\t\t\t# OBTAIN THE GROUP NUMBER\n\t\tCA\t0\n\t\tINCR\tQ\t\t\t# OBTAIN THE RETURN ADDRESS\n\t\tDOUBLE\t\t\t\t# SAVE THE GROUP IN A FORM USED FOR\n\t\tTS\tTEMPG\t\t\t# INDEXING\n\n\t\tCCS\tL\t\t\t# SEE IF WE ARE TO SET TBASE\n\t\tTCF\t+7\t\t\t# NO, THE DELTA T WAS POSITIVE\n\t\tTCF\t+6\n\nNUFAZ+10\tINCR\tA\t\t\t# SET TBASE AND STORE PHASE CORRECTLY\n\t\tTS\tL\n\t\tCS\tTIME1\t\t\t# SET TBASE\n\t\tNDX\tTEMPG\n\t\tTS\tTBASE1 -2\n\t\tCS\tL\t\t\t# NOW PUT THE PHASE IN THE RIGHT TABLE LOC\n\t\tNDX\tTEMPG\n\t\tDXCH\t-PHASE1\t-2\n\t\tRELINT\n\t\tTC\tQ\t\t\t# NOW RETURN TO CALLER\n\n\n"
  },
  {
    "path": "Comanche055/RT8_OP_CODES.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     RT8_OP_CODES.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 1508-1516\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-07 RSB\tAdapted from Colossus249/RT8_OP_CODES.agc\n#\t\t\t\tand page images.\n#\t\t2009-05-07 RSB\tOops! Left out the entire last page before.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 1508\n\t\tBANK\t22\n\t\tSETLOC\tRTBCODES\n\t\tBANK\n\n\t\tEBANK=\tXNB\n\t\tCOUNT*\t$$/RTB\n\n# LOAD TIME2, TIME1 INTO MPAC:\n\nLOADTIME\tEXTEND\n\t\tDCA\tTIME2\n\t\tTCF\tSLOAD2\n\n# CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A\n# DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS.\n\nCDULOGIC\tCCS\tMPAC\n\t\tCAF\tZERO\n\t\tTCF\t+3\n\t\tNOOP\n\t\tCS\tHALF\n\n\t\tTS\tMPAC +1\n\t\tCAF\tZERO\n\t\tXCH\tMPAC\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tDAS\tMPAC\n\t\tTCF\tDANZIG\t\t# MODE IS ALREADY AT DOUBLE-PRECISION\n\n# READ THE PIPS INTO MPAC WITHOUT CHANGING THEM:\n\nREADPIPS\tINHINT\n\t\tCA\tPIPAX\n\t\tTS\tMPAC\n\t\tCA\tPIPAY\n\t\tTS\tMPAC +3\n\t\tCA\tPIPAZ\n\t\tRELINT\n\t\tTS\tMPAC +5\n\n\t\tCAF\tZERO\n\t\tTS\tMPAC +1\n\t\tTS\tMPAC +4\n\t\tTS\tMPAC +6\n\nVECMODE\t\tTCF\tVMODE\n\n# FORCE TP SIGN AGREEMENT IN MPAC:\n\nSGNAGREE\tTC\tTPAGREE\n\n# Page 1509\n\n\t\tTCF\tDANZIG\n\n# CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE\n# SCALED IN HALF-REVOLUTIONS.\n\n1STO2S\t\tTC\t1TO2SUB\n\t\tCAF\tZERO\n\t\tTS\tMPAC +1\n\t\tTCF\tNEWMODE\n\n# DO 1STO2S ON A VECTOR OF ANGLES:\n\nV1STO2S\t\tTC\t1TO2SUB\t\t# ANSWER ARRIVES IN A AND MPAC.\n\n\t\tDXCH\tMPAC +5\n\t\tDXCH\tMPAC\n\t\tTC\t1TO2SUB\n\t\tTS\tMPAC +2\n\n\t\tDXCH\tMPAC +3\n\t\tDXCH\tMPAC\n\t\tTC\t1TO2SUB\n\t\tTS\tMPAC +1\n\n\t\tCA\tMPAC +5\n\t\tTS\tMPAC\n\nTPMODE\t\tCAF\tONE\t\t# MODE IS TP.\n\t\tTCF\tNEWMODE\n\n# V1STO2S FOR 2 COMPONENT VECTOR. USED BY RR.\n\n2V1STO2S\tTC\t1TO2SUB\n\t\tDXCH\tMPAC +3\n\t\tDXCH\tMPAC\n\t\tTC\t1TO2SUB\n\t\tTS\tL\n\t\tCA\tMPAC +3\n\t\tTCF\tSLOAD2\n\n# SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S CONVERSION:\n\n1TO2SUB\t\tDXCH\tMPAC\t\t# FINAL MPAC +1 UNSPECIFIED.\n\t\tDDOUBL\n\t\tCCS\tA\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tCOM\t\t\t# THIS WAS REVERSE OF MSU.\n\n\t\tTS\tMPAC\t\t# AND SKIP ON OVERFLOW.\n# Page 1510\n\t\tTC\tQ\n\n\t\tINDEX\tA\t\t# OVERFLOW UNCORRECT AND IN MSU.\n\t\tCAF\tLIMITS\n\t\tADS\tMPAC\n\t\tTC\tQ\n\n# Page 1511\n# SUBROUTINE TO INCREMENT CDUS\n\nINCRCDUS\tCAF\tLOCTHETA\n\t\tTS\tBUF\t\t# PLACE ADRES(THETA) IN BUF.\n\t\tCAE\tMPAC\t\t# INCREMENT IN 1S COMPL.\n\t\tTC\tCDUINC\n\n\t\tINCR\tBUF\n\t\tCAE\tMPAC +3\n\t\tTC\tCDUINC\n\n\t\tINCR\tBUF\n\t\tCAE\tMPAC +5\n\t\tTC\tCDUINC\n\n\t\tTCF\tVECMODE\n\nLOCTHETA\tADRES\tTHETAD\n\n# THE FOLLOWING ROUTINE INCREMENTS IN 2S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1S COMPL.\n# QUANTITY FOUND IN TEM2.  THIS MAY BE USED TO INCREMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2S COMPL.\n# (+0 UNEQUAL TO -0) QUANTITY.  MAY BE CALLED BY BANKCALL/SWCALL.\n\nCDUINC\t\tTS\tTEM2\t\t# 1S COMPL.QUANT. ARRIVES IN ACC.  STORE IT\n\t\tINDEX\tBUF\n\t\tCCS\t0\t\t# CHANGE 2S COMPLE. ANGLE(IN BUF) INTO 1S\n\t\tAD\tONE\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tAD\tONE\t\t# OVEFLOW HERE IF 2S COMPL. IS 180 DEG.\n\t\tCOM\n\n\t\tAD\tTEM2\t\t# SULT MOVES FROM 2ND TO 3D QUAD.(OR BACK)\n\t\tCCS\tA\t\t# BACK TO 2S COMPL.\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tCOM\n\t\tTS\tTEM2\t\t# STORE 14BIT QUANTITY WITH PRESENT SIGN\n\t\tTCF\t+4\n\t\tINDEX\tA\t\t# SIGN.\n\t\tCAF\tLIMITS\t\t# FIX IT,BY ADDING IN 37777 OR 40000\n\t\tAD\tTEM2\n\n\t\tINDEX\tBUF\n\t\tTS\t0\t\t# STORE NEW ANGLE IN 2S COMPLEMENT.\n\t\tTC\tQ\n\n# Page 1512\n# RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL.  ECADR OF COMMANDS ARRIVES IN X1.\n\nPULSEIMU\tINDEX\tFIXLOC\t\t# ADDRESS OF GYRO COMMANDS SHOULD BE IN X1\n\t\tCA\tX1\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTCF\tDANZIG\n\n# Page 1513\n# EACH ROUTINE TAKES A 3X3 MATRIX STORED IN DOUBLE PRECISION IN A FIXED AREA OF ERASABLE MEMORY AND REPLACES IT\n# WITH THE TRANSPOSE MATRIX.  TRANSP1 USES LOCATIONS XNB+0,+1 THROUGH XNB+16D, 17D AND TRANSP2 USES LOCATIONS\n# XNB1+0,+1 THROUGH XNB1+16D, 17D.  EACH MATRIX IS STORED BY ROWS.\n\nXNBEB\t\tECADR\tXNB\nXNB1EB\t\tECADR\tXNB1\n\n\t\tEBANK=\tXNB\n\nTRANSP1\t\tCAF\tXNBEB\n\t\tTS\tEBANK\n\t\tDXCH\tXNB +2\n\t\tDXCH\tXNB +6\n\t\tDXCH\tXNB +2\n\n\t\tDXCH\tXNB +4\n\t\tDXCH\tXNB +12D\n\t\tDXCH\tXNB +4\n\n\t\tDXCH\tXNB +10D\n\t\tDXCH\tXNB +14D\n\t\tDXCH\tXNB +10D\n\t\tTCF\tDANZIG\n\n\n\t\tEBANK=\tXNB1\n\nTRANSP2\t\tCAF\tXNB1EB\n\t\tTS\tEBANK\n\t\tDXCH\tXNB1 +2\n\t\tDXCH\tXNB1 +6\n\t\tDXCH\tXNB1 +2\n\n\t\tDXCH\tXNB1 +4\n\t\tDXCH\tXNB1 +12D\n\t\tDXCH\tXNB1 +4\n\n\t\tDXCH\tXNB1 +10D\n\t\tDXCH\tXNB1 +14D\n\t\tDXCH\tXNB1 +10D\n\t\tTCF\tDANZIG\n\n# Page 1514\n# THE SUBROUTINE SIGNMPAC SETS C(MPAC, MPAC +1) TO SIGN(MPAC).\n# FOR THIS, ONLY THE CONTENTS OF MPAC ARE EXAMINED.  ALSO +0 YIELDS POSMAX AND -0 YIELDS NEGMAX.\n#\n# ENTRY MAY BE BY EITHER OF THE FOLLOWING:\n#\t1.\tLIMIT THE SIZE OF MPAC ON INTERPRETIVE OVERFLOW:\n#\t\tENTRY:\t\tBOVB\n#\t\t\t\t\tSIGNMPAC\n#\t2.\tGENERATE IN MPAC THE SIGNUM FUNCTION OF MPAC:\n#\t\tENTRY:\t\tRTB\n#\t\t\t\t\tSIGNMPAC\n# IN EITHER CASE, RETURN IS TO TEH NEXT INTERPRETIVE INSTRUCTION IN THE CALLING SEQUENCE.\n\nSIGNMPAC\tEXTEND\n\t\tDCA\tDPOSMAX\n\t\tDXCH\tMPAC\n\t\tCCS\tA\nDPMODE\t\tCAF\tZERO\t\t# SETS MPAC +2 TO ZERO IN THE PROCESS\n\t\tTCF\tSLOAD2 +2\n\t\tTCF\t+1\n\t\tEXTEND\n\t\tDCS\tDPOSMAX\n\t\tTCF\tSLOAD2\n\n# RTB OP CODE NORMUNIT IS LIKE INTERPRETIVE INSTRUCTION UNIT, EXCEPT THAT IT CAN BE DEPENDED ON NOT TO BLOW\n# UP WHEN THE VECTOR BEING UNITIZED IS VERY SMALL -- IT WILL BLOW UP WHEN ALL COMPONENT ARE ZERO.  IF NORMUNIT\n# IS USED AND THE UPPER ORDER HALVES OF ALL COMPONENTS ARE ZERO, THE MAGNITUDE RETURNS IN 36D WILL BE TOO LARGE\n# BY A FACTOR OF 2(13) AND THE SQUARED MAGNITUDE RETURNED AT 34D WILL BE TOO BIG BY A FACTOR OF 2(26).\n\nNORMUNX1\tCAF\tONE\n\t\tTCF\tNORMUNIT +1\nNORMUNIT\tCAF\tZERO\n\t\tAD\tFIXLOC\n\t\tTS\tMPAC +2\n\t\tTC\tBANKCALL\t# GET SIGN AGREEMENT IN ALL COMPONENTS\n\t\tCADR\tVECAGREE\n\t\tCCS\tMPAC\n\t\tTCF\tNOSHIFT\n\t\tTCF\t+2\n\t\tTCF\tNOSHIFT\n\t\tCCS\tMPAC +3\n\t\tTCF\tNOSHIFT\n\t\tTCF\t+2\n\t\tTCF\tNOSHIFT\n\t\tCCS\tMPAC +5\n\t\tTCF\tNOSHIFT\n\t\tTCF\t+2\n\t\tTCF\tNOSHIFT\n# Page 1515\n\t\tCA\tMPAC +1\t\t# SHIFT ALL COMPONENTS LEFT 13\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tDAS\tMPAC\t\t# DAS GAINS A LITTLE ACCURACY\n\t\tCA\tMPAC +4\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tDAS\tMPAC +3\n\t\tCA\tMPAC +6\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tDAS\tMPAC +5\n\t\tCAF\tTHIRTEEN\n\t\tINDEX\tMPAC +2\n\t\tTS\t37D\nOFFTUNIT\tTC\tPOSTJUMP\n\t\tCADR\tUNIT +1\t\t# SKIP THE \"TC VECAGREE\" DONE AT UNIT\n\nNOSHIFT\t\tCAF\tZERO\n\t\tTCF\tOFFTUNIT -2\n\n# RTB VECSGNAG ...FORCES SIGN AGREEMENT OF VECTOR IN MPAC.\n\nVECSGNAG\tTC\tBANKCALL\n\t\tCADR\tVECAGREE\n\t\tTC\tDANZIG\n\n# Page 1516\n# MODULE CHANGE FOR NEW LUNAR GRAVITY MODEL\n\t\tSETLOC\tMODCHG3\n\t\tBANK\nQUALITY1\tBOF\tDLOAD\n\t\t\tMOONFLAG\n\t\t\tNBRANCH\n\t\t\tURPV\n\t\tDSQ\tGOTO\n\t\t\tQUALITY2\n\t\tSETLOC\tMODCHG2\n\t\tBANK\nQUALITY2\tPDDL\tDSQ\t\t# SQUARE INTO 2D, B2\n\t\t\tURPV\t+2\t# Y COMPONENT, B1\n\t\tDSU\n\t\tDMP\tVXSC\t\t# 5(Y**2-X**2)UR\n\t\t\t5/8\t\t# CONSTANT, 5B3\n\t\t\tURPV\t\t# VECTOR, RESULT MAXIMUM IS 5, SCALING\n\t\t\t\t\t# HERE B6\n\t\tVSL3\tPDDL\t\t# STORE SCALED B3 IN 2D, 4D, 6D FOR XYZ\n\t\t\tURPV\t\t# X COMPONENT, B1\n\t\tSR1\tDAD\t\t# 2 X X COMPONENT FOR B3 SCALING\n\t\t\t2D\t\t# ADD TO VECTOR X COMPONENT OF ANSWER.\n\t\t\t\t\t# SAME AS MULTIPLYING BY UNITX.  MAX IS 7.\n\t\tSTODL\t2D\n\t\t\tURPV\t+2\t# Y COMPONENT, B1\n\t\tSR1\tBDSU\t\t# 2 X Y COMPONENT FOR B3 SCALING\n\t\t\t4D\t\t# SUBTRACT FROM VECTOR Y COMPONENT OF\n\t\t\t\t\t# ANSWER, SAME AS MULTIPLYING BY UNITY.\n\t\t\t\t\t# MAX IS 7.\n\t\tSTORE \t4D\t\t# 2D HAS VECTOR, B3.\n\t\tSLOAD\tVXSC\t\t# MULTIPLY COEFFICIENT TIMES VECTOR IN 2D\n\t\t\tE3J22R2M\n\t\tPDDL\tRVQ\t\t# J22 TERM X R**4 IN 2D, SCALED B61\n\t\t\tCOSPHI/2\t# SAME AS URPV +4, Z COMPONENT\n\n# *** END OF CHIEFTAN.028 ***\n\n"
  },
  {
    "path": "Comanche055/S-BAND_ANTENNA_FOR_CM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tS-BAND_ANTENNA_FOR_CM.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim.lawton@gmail.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t934-935\n# Mod history:\t2009-05-11 JVL\tAdapted from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 934\n# S-BAND ANTENNA FOR CM\n\n\t\tBANK\t23\n\t\tSETLOC\tSBAND\n\t\tBANK\n\n\t\tCOUNT*\t$$/R05\n\t\tEBANK=\tEMSALT\n\nSBANDANT\tTC\tBANKCALL\t# V 64 E GETS US HERE\n\t\tCADR\tR02BOTH\t\t# CHECK IF IMU IS ON AND ALIGNED\n\t\tTC\tINTPRET\n\t\tRTB\tCALL\n\t\t\tLOADTIME\t# PICKUP CURRENT TIME SCALED B-28\n\t\t\tCDUTRIG\t\t# COMPUTE SINES AND COSINES OF CDU ANGLES\n\t\tSTCALL\tTDEC1\t\t# ADVANCE INTEGRATION TO TIME IN TDEC1\n\t\t\tCSMCONIC\t# USING CONIC INTEGRATION\n\t\tSLOAD\tBHIZ\t\t# ORIGIN OF REFERENCE INERTIAL SYSTEM IS\n\t\t\tX2\t\t# EARTH = 0, MOON = 2\n\t\t\tEISOI\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTORE\tRCM\t\t# MOVE RATT TO PREVENT WIPEOUT\n\t\tDLOAD\tCALL\t\t# MOON, PUSH ON\n\t\t\tTAT\t\t# GET ORIGINAL TIME\n\t\t\tLUNPOS\t\t# COMPUTE POSITION VECTOR OF MOON\n\t\tVAD\tVCOMP\t\t# R= -(REM+RCM) = NEG. OF S/C POS. VEC\n\t\t\tRCM\n\t\tGOTO\n\t\t\tEISOI +2\nEISOI\t\tVLOAD\tVCOMP\t\t# EARTH, R= -RCM\n\t\t\tRATT\n\t\tSETPD\tMXV\t\t# RCS TO STABLE MEMBER- B-1X B-29X B+1\n\t\t\t2D\t\t# 2D\n\t\t\tREFSMMAT\t# STABLE MEMBER.  B-1X B-29X B+1= B-29\n\t\tVSL1\tPDDL\t\t# 8D\n\t\t\tHI6ZEROS\n\t\tSTOVL\tYAWANG\t\t# ZERO OUT YAWANG, SET UP FOR SMNB\n\t\t\tRCM\t\t# TRANSFORMATION.  SM COORD.  SCALED B-29\n\t\tCALL\n\t\t\t*SMNB*\n\t\tSTORE\tR\t\t# SAVE NAV. BASE COORDINATES\n\t\tUNIT\tPDVL\t\t# 14D\n\t\t\tR\n\t\tVPROJ\tVSL2\t\t# COMPUTE PROJECTION OF VECTOR INTO CM\n\t\t\tHIUNITZ\t\t# XY-PLANE, R-(R.UZ)UZ\n\t\tBVSU\tBOV\t\t# CLEAR OVERFLOW INDICATOR IF SET\n\t\t\tR\n\t\t\tCOVCNV\nCOVCNV\t\tUNIT\tBOV\t\t# TEST OVERFLOW FOR INDICATION OF NULL\n\t\t\tNOADJUST\t# VECTOR\n\t\tPUSH\tDOT\t\t# 20D\n# Page 935\n\t\t\tHIUNITX\t\t# COMPUTE YAW ANGLE = ACOS (URP.UX)\n\t\tSL1\tACOS\t\t# REVOLUTIONS SCALED B0\n\t\tPDVL\tDOT\t\t# 22D YAWANG\n\t\t\tURP\n\t\t\tHIUNITY\t\t# COMPUTE FOLLOWING- URP.UY\n\t\tSL1\tBPL\t\t# POSITIVE\n\t\t\tNOADJUST\t# YES, 0- 180 DEGREES\n\t\tDLOAD\tDSU\t\t# NO, 181-360 DEGREES 20D\n\t\t\tDPPOSMAX\t# COMPUTE 2 PI MINUS YAW ANGLE\n\t\tPUSH\t\t\t# 22D YAWANG\nNOADJUST\tVLOAD\tDOT\t\t# COMPUTE PITCH ANGLE\n\t\t\tUR\t\t# ACOS (UR.UZ) - PI/2\n\t\t\tHIUNITZ\n\t\tSL1\tACOS\t\t# REVOLUTIONS B0\n\t\tDSU\n\t\t\tHIDP1/4\n\t\tSTODL\tRHOSB\n\t\t\tYAWANG\n\t\tSTORE\tGAMMASB\t\t# PATCH FOR CHECKOUT\n\t\tEXIT\n\t\tCA\tEXTVBACT\t# IS BIT 5 STILL ON\n\t\tMASK\tBIT5\n\t\tEXTEND\n\t\tBZF\tENDEXT\t\t# NO, WE HAVE BEEN ANSWERED\n\t\tCAF\tV06N51\t\t# DISPLAY ANGLES\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKFR\n\t\tTC\tB5OFF\t\t# TERMINATE\n\t\tTC\tB5OFF\n\t\tTC\tENDOFJOB\t# RECYCLE\n\t\tCAF\tBIT3\t\t# IMMEDIATE RETURN\n\t\tTC\tBLANKET\t\t# BLANK R3\n\t\tCAF\tBIT1\t\t# DELAY MINIMUM TIME TO ALLOW DISPLAY IN\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tTCF\tSBANDANT +2\nV06N51\t\tVN\t0651\nRCM\t\tEQUALS\t2D\nUR\t\tEQUALS\t8D\nURP\t\tEQUALS\t14D\nYAWANG\t\tEQUALS\t20D\nPITCHANG\tEQUALS\t22D\nR\t\tEQUALS\tRCM\n\t\tSBANK=\tLOWSUPER\n"
  },
  {
    "path": "Comanche055/SERVICER207.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     SERVICER207.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 819-836\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-12 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname and Comanche 055 page images.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 819\n# SERVICER207\n\n# PROGRAM NAME - PREREAD, READACCS, SERVICER, AVERAGE G.\n\n\n# MOD NO. 00\tBY M.HAMILTON\tDEC.12, 1966\n\n\n# FUNCTIONAL DESCRIPTION\n\n# THE ROUTINES DESCRIBED BELOW ARE USED TO CALCULATE VALUES OF RN, VN, AND GDT/2 DURING ACCELERATED FLIGHT.\n# THE SEVERAL ROUTINES COMPRISE A PACKAGE AND ARE NOT MEANT TO BE USED AS SEPARATE SUBROUTINES.\n\n# GENERAL REFERENCES TO SERVICER OR AVERAGE G ARE UNDERSTOOD TO REFER TO THE ENTIRE SET OF ROUTINES INCLUDING\n# READACCS, SERVICER, AVERAGE G, INTEREAD, SMOOTHER, AND ANY ADDITIONAL ROUTINES ATTACHED AT AVGEXIT (SEE BELOW).\n\n# PROGRAMS INITIATING SERVICER ARE REQUIRED TO MAKE A WAITLIST CALL FOR PREREAD (OR, IF LIFTOFF, FOR BIBIBIAS)\n# AT 2 SECONDS BEFORE THE FIRST AVERAGE G UPDATE IN ORDER TO INITIALIZE THE SEQUENCE, WHICH WILL RECUR EVERY\n# 2 SECONDS FROM THAT TIME ON AS LONG AS AVEGFLAG REMAINS SET.\n\n# THE USE OF ERASABLE AVGEXIT ALLOWS VARIOUS ROUTINES TO BE PERFORMED AS PART OF THE NORMAL CYCLE (SEE\n# EXPLANATION OF AVGEXIT BELOW).\n\n# DESCRIPTIONS OF INDIVIDUAL ROUTINES FOLLOW.\n\n\n#\tPREREAD\n\n#\t\tPREVIOUSLY EXTRAPOLATED VALUES COPIED FROM RN1, VN1, AND PIPTIME1 INTO RN, VN, AND PIPTIME.\n#\t\tLASTBIAS JOB SCHEDULED.\n#\t\tPIPS READ AND CLEARED VIA PIPASR SUBROUTINE.\n#\t\tAVERAGE G FLAG SET ON.\n#\t\tDRIFT FLAG SET OFF.\n#\t\tV37 FLAG SET ON.\n#\t\tINITIALIZATION OF\t1) THRUST MONITOR (DVMON) - DVCNTR SET TO ONE.\n#\t\t\t\t\t2) TOTAL ACCUMULATED DELV VALUE (DVTOTAL) - SET TO ZERO.\n#\t\t\t\t\t3) AXIS VECTOR (AXIS) - SET TO (.5,0,0).\n#\t\tNORMLIZE JOB SCHEDULED.\n#\t\tREADACCS TASH CALLED IN 2 SECONDS.\n\n\n#\tNORMLIZE\n#\n#\t\tGDT/2 INITIALIZED VIA CALCGRAV SUBROUTINE.\n\n\n#\tREADACCS\n\n#\t\tIF ONMON FLAG SET QUIKREAD ROUTINE IS PERFORMED BEFORE PIPASR ZEROS THE PIPA REGISTERS, AND THE 1/2 SEC\n#\t\tONMONITOR LOOP IS INITIATED TO PROVIDE DOWNLINK INFORMATION DURING ENTRY.\n#\t\tPIPS READ AND CLEARED BY PIPASR SUBROUTINE.\n#\t\tIF CM/DSTBY IS ON, ENTRY VARIABLES INITIALIZED AND SETJTAG TASK CALLED.\n# Page 820\n# SERVICER207\n\n#\t\tIF AVERAGEG FLAG ON\tREADACCS CALLED TO RECYCLE IN 2 SECONDS.\n#\t\tIF AVERAGEG FLAG OFF\tAVERAGE G EXIT (AVGEXIT) SET TO 2CADR AVGEND FOR FINAL PASS.\n#\t\tSERVICER JOB SCHEDULED.\n\n\n#\t\tTEST CONNECTOR OUTBIT TURNED ON.\n\n\n# ONMNITOR\n\n#\t\tA SEQUENCE OF THREE PASSES THROUGH QUICREAD FOLLOWING A CALL TO READACCS WITH ONMONFLG SET AT 1/2\n#\t\tSEC INTERVALS.  INTERVALS ARE COUNTED OUT BY PIPCTR, INITIALISED AT 3 BY READACCS\n\n#\tQUIKREAD\n\n#\t      READS CURRENT PIPS INTO X,Y,ZPIPBUF.  READS OLD X,Y,ZPIPBUF INTO X,Y,ZOLDBUF.  VALUES ARE SENT TO\n#\t\tDOWNLIST DURING ENTRY.\n#\tSERVICER\n#\t\tDELV VALUES CHECKED TO DETECT RUNAWAY PIP -\n#\t\t\tIF BAD PIP\t1) ALARM SENT.\n#\t\t\t\t\t2) COMPENSATION, DVTOTAL ACCUMULATION, AND DVMON BYPASSED.  CONTROL\n#\t\t\t\t\t   TRANSFERRED TO AVERAGE G.\n#\t\tPIPS COMPENSATED VIA 1/PIPA SUBROUTINE.\n#\t\tDVTOTAL INCREMENTED BY ABSOLUTE VALUE OF DELV.\n#\t\tTHRUST MONITOR (DVMON) PERFORMED UNLESS IDLE FLAG IS ON.\n#\t\tCONTROL TRANSFERRED TO AVERAGE Q.\n\n\n#\t\tDVMON\n\n#\t\t\tTHRESHOLD VALUD (PLACED IN DVTHRUSH BY USER) CHECKED AGAINST ABSOLUTE VALUE OF DELV TO CHECK\n#\t\t\tTHRUST LEVEL.\n#\t\t\t\tIF THRUST\t1) ULLAGE OFF ROUTINE PERFORMED.\n#\t\t\t\t\t\t2) STEERING FLAG TURNED ON AT FIRST DETECTION OF THRUST.\n#\t\t\t\t\t\t3) CONTROL TRANSFERRED TO AVERAGE G.\n#\t\t\t\tIF NO THRUST\t1) ON FIRST PASS THROUGH MONITOR, CONTROL TRANSFERRED TO AVERAGE G.\n#\t\t\t\t\t\t2) ON SUBSEQUENT PASSES, CONTROL TRANSFERRED TO ENGINE FAIL ROUTINE IF THRUST\n#\t\t\t\t\t\t   HAS FAILED FOR 3 CONSECUTIVE PASSES.\n\n\n#\t\tENGINE FAIL\n\n#\t\t\tENGFAIL1 TASK CALLED IN 2.5 SECONDS.  THIS WILL RETURN CONTROL TO TIG-5 SO THAT THE IGNITION\n#\t\t\t\tSEQUENCE MAY BE REPEATED.\n#\t\t\tENGINOF3 PERFORMED.\n#\t\t\tDAP SET UP FOR RCS.\n\n\n#\tAVERAGE G\n# Page 821\n#\tRN1, VN1, GDT1/2 CALCULATED VIA CALCRVG ROUTINE BY UPDATING RN, VN WITH DELV AND AN AVERAGED VALUE\n#\tOF GDT/2.\n#\tRN1, VN1, GDT1/2, PIPTIME1 COPIED INTO RN, VN, GDT/2, PIPTIME FOR RESTART PROTECTION.\n#\tCONTROL TRANSFERRED TO ADDRESS SPECIFIED BY USER (OR BY READACCS FOR LAST PASS) IN AVGEXIT.\n#\tLAST PASS (AVGEND)\t1) FREE FALL GYRO COMPENSATION SET UP.\n#\t\t\t\t2) DRIFT FLAG TURNED ON.\n#\t\t\t\t3) STATE VECTOR TRANSFERRED VIA AVETOMID ROUTINE.\n#\t\t\t\t4) ONMONITOR FLAG RESET.\n#\t\t\t\t5) V37 FLAG RESET.\n#\t\t\t\t6) TEST CONNECTOR OUTBIT RESET.\n#\t\t\t\t7) CONTROL TRANSFERRED TO CANV37 TO CONTINUE MM CHANGE ROUTINE (R00).\n\n\n# CALLING SEQUENCE\n\n#\tPREREAD ENTERED DIRECTLY FROM TIG-30 VIA POSTJUMP.\n#\tREADACCS CALLED AS WAITLIST TASK.\n\n\n# SUBROUTINES CALLED\n\n# \tUTILITY ROUTINES - PHASCHNG FLAGUP FLAGDOWN NOVAC FINDVAC WAITLIST ALARM NEWPHASE 2PHSCHNG\n\n#\tOTHER - PIPASR 1/PIPA CALCGRAV CALCRVG AVETOMID\n\n\n# NORMAL EXIT MODES\n\n#\tENDOFJOB\tTASKOVER\tCANV37\n\n#\tAVGEXIT -\tTHIS IS A DOUBLE PRECISION ERASABLE LOCATION BY WHICH CONTROL IS TRANSFERRED AT THE END\n#\t\t\tOF EACH CYCLE OF AVERAGE G.\n#\t\t\tTHE 2CADR OF A ROUTINE TO BE PERFORMED AT THAT TIME (E.G., STEERING EQUATIONS TO BE PERFORMED\n#\t\t\tAT 2 SECOND INTERVALS) MAY BE SET BY THE USER INTO AVGEXIT.\n#\t\t\tALL SUCH ROUTINES SHOULD RETURN TO SERVEXIT, WHICH IS THE NORMAL EXIT FROM AVERAGE G.\n\n#\tSERVEXIT -\tDOES A PHASE CHANGE FOR RESTART PROTECTION AND GOES TO ENDOFJOB.\n#\t\t\tTHE 2CADR OF SERVEXIT IS SET INTO AVGEXIT BY THE USER IF NO OTHER ROUTINE (SEE ABOVE).\n#\n#\tAVGEND -\tLAST PASS OF AVERAGE G EXITS HERE, BYPASSING SPECIAL ROUTINE (SEE ABOVE UNDER READACCS).\n#\t\t\tFINAL EXIT IS TO CANV37.\t\t\t\tF AVERAGE G).\n\n\n# OUTPUT\n\n#\tDVTOTAL(2)  PIPTIME(2)  XPIPBUF(2)  YPIPBUF(2)  ZPIPBUF(2)\n#\tRN(6)\t\tREFERENCE COORD.   SCALED AT 2(+29) M/CS\n#\tVN(6)\t\tREFERENCE COORD.   SCALED AT 2(+7) M/CS\n#\tGDT/2(6)\tREFERENCE COORD.   SCALED AT 2(+7) M/CS\n#\tDELV(6)\t\tSTABLE MEMB. COORD.SCALED AT 2(+14)*5.85*10(-4)M/CS (KPIP1 USED TO GET DV/2 AT 2(+7))\n# Page 822\n#\tDELVREF(6)\tREFERENCE COORD.   SCALED AT 2(+7) M/CS\n\n# INITIALIZATION\n\n#\t\tONMONITOR FLAG SET BY ENTRY TO SHOW PIPBUF VALUES REQUIRED.\n#\t\tIDLE FLAG ON IF DVMON TO BE BYPASSED.\n#\t\tDVTHRUSH SET TO APPROPRIATE VALUE FOR DVMON.\n#\t\tAVGEXIT SET TO 2CADR OF ROUTINE, IF ANY, TO BE PERFORMED AFTER EACH CYCLE OF AVERAGE G.  IF NO ROUTINE\n#\t\t\tTO BE DONE, AVGEXIT SET TO SERVEXIT.\n#\t\tVALUES NEEDED\n#\t\t\tREFSMMAT\n#\t\t\tUNITW - FULL UNIT VECTOR, IN REFERENCE COORD., OF EARTH S ROTATIONAL VECTOR\n#\t\t\tRN1, VN1, PIPTIME1 - IN REFERENCE COORD., CONSISTENT WITH TIME OF EXECUTION OF PREREAD\n\n\n# DEBRIS\n\n#\tCENTRALS\tA, L, Q\n#\tOTHER\t\tINTERNAL -  DVCNTR(1)  PIPAGE(1)  PIPCTR(1)  AVGEXIT(2)\n#\t\t\tEXTERNAL -  ITEMP1(1)  ITEMP2(1)  RUPTREG1(1)  TEMX(1)  TEMY(1)  TEMZ(1)\n#\t\t\tUSEFUL DEBRIS\n#\t\t\t\tRN1(6)  VN1(6)  GDT1/2  PIPTIME1(2)\n#\t\t\t\t\tTHESE LOCATIONS USED AS BUFFER STORAGE FOR NEWLY CALCULATED VALUES OF RN, VN, GDT/2,\n#\t\t\t\t\tAND PIPTIME DURING PERFORMANCE OF SERVICER ROUTINES.\n#\t\t\t\tUNITR - HALF UNIT VECTOR OF RN, REFERENCE COORD.\n#\t\t\t\tRMAG SCALED AT 2(+58) IN 36D.\n#\t\t\t\tRMAGSQ SCALED AT 2(+58) IN 34D.\n#\t\t\t\t(RE/RMAG)SQ IN 32D.\n\n\n\t\tBANK\t27\n\t\tSETLOC\tSERVICES\n\t\tBANK\n\n\t\tEBANK=\tDVCNTR\n# ********************* PREREAD ***************************************\n#\n\n\t\tCOUNT\t37/SERV\n\nPREREAD\t\tCAF\tPRIO21\t\t# CALLER MUST PROTECT PREREAD\n\t\tTC\tNOVAC\n\t\tEBANK=\tNBDX\n\t\t2CADR\tLASTBIAS\t# DO LAST GYRO COMPENSATION IN FREE FALL\n\n\t\t\t\t\t# CALL-TO AND LASTBIAS ITSELF ARE NOT\n\t\t\t\t\t#\tPROTECTED. REREADAC SETS 1/PIPADT\n\t\t\t\t\t#\tTO 2.0 SECS IN CASE LASTBIAS LOST.\n\t\t\t\t\t#\t(REDUNDANT IF LASTBIAS IS AOK)\n# Page 823\nREDO5.31\tTC\tPREREAD1\n\n\t\tCAF\tPRIO32\n\t\tTC\tFINDVAC\t\t# SET UP NORMLIZE JOB REQUIRED PRIOR TO\n\t\tEBANK=\tDVCNTR\t\t# FIRST AVERAGE G PASS\n\t\t2CADR\tNORMLIZE\n\n\t\tCAF\t2SECS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tAOG\n\t\t2CADR\tREADACCS\n\n\t\tCS\tTWO\n\t\tTC\tNEWPHASE\n\t\tOCT\t5\n\n\t\tTCF\tTASKOVER\n\nPREREAD1\tEXTEND\n\t\tQXCH\tRUPTREG1\n\n\t\tTC\tPIPASR\t\t# CLEAR + READ PIPS LAST TIME IN FREE FALL\n\n\t\tCAF\tONE\t\t# SET UP PIPAGE FOR REREADAC IN CASE A\n\t\tTS\tPIPAGE\t\t# \tRESTART OCCURS BEFORE READACCS\n\n\t\tCS\tFLAGWRD1\t# SET AVEG FLAG\n\t\tMASK\tBIT1\n\t\tADS\tFLAGWRD1\n\n\t\tCA\tPOSMAX\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\t# KNOCK DOWN DRIFT FLAG\n\n\t\tCS\tFLAGWRD7\t# SET V37 FLAG\n\t\tMASK\tBIT6\n\t\tADS\tFLAGWRD7\n\n\t\tCAF\tZERO\n\t\tTS\tDVTOTAL\t\t# CLEAR DVTOTAL\n\t\tTS\tDVTOTAL +1\n\n\t\tTC\tRUPTREG1\n\n# Page 824\n# ********************* READACCS ***************************************\n\t\tEBANK=\tAOG\nREADACCS\tTC\tPIPASR\n\nPIPSDONE\tCAF\tFIVE\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE5\n\nREDO5.5\t\tCAF\tONE\t\t# SHOW PIPS HAVE BEEN READ\n\t\tTS\tPIPAGE\n\n\t\tCA\tTWO\t\t# SET PIPCTR FOR ONMINTOR\n\t\tTS\tPIPCTR\t\t# AFTER ABOVE PHASCHNG\n\n\t\tCS\tCM/FLAGS\n\t\tMASK\tBIT2\t\t# CM/DSTBY\n\t\tCCS\tA\n\t\tTC\tCHEKAVEG\n\n\t\tCS\tPIPTIME1 +1\n\t\tTS\tTBASE6\t\t# FOR RESTARTS\n\t\tEXTEND\t\t\t# CONTINUE FOR ENTRY DAP\n\t\tDCA\tAOG\n\t\tDXCH\tAOG/PIP\n\t\tCA\tAMG\n\t\tXCH\tAMG/PIP\n\t\tEXTEND\n\t\tDCA\tROLL/180\n\t\tDXCH\tROLL/PIP\n\t\tCA\tBETA/180\n\t\tXCH\tBETA/PIP\n\t\tCA\tCM/FLAGS\n\t\tMASK\tBIT12\t\t# CM/DAPARM 93D BIT12\n\t\tEXTEND\t\t\t# DURING ENTRY, WHEN RCS DAP IS INACTIVE,\n\t\tBZF\tNOSAVPIP\t# SAVE PIPAS EACH 0.5 SEC FOR TM.\n\n\t\tCA\t0.5SEC\n\t\tTC\tWAITLIST\n\t\tEBANK=\tXPIPBUF\n\t\t2CADR\tQUIKREAD\n\n\t\t\t\t\t# NO NEED TO RESTART PROTECT THIS.\n\t\tCA\tDELVX\t\t# SAVE PIPAS AS READ (BUT NOT COMPENSATED)\n\t\tXCH\tXPIPBUF\n\t\tTS\tXOLDBUF\n\n\t\tCA\tDELVY\n\t\tXCH\tYPIPBUF\n\t\tTS\tYOLDBUF\n# Page 825\n\t\tCA\tDELVZ\n\t\tXCH\tZPIPBUF\n\t\tTS\tZOLDBUF\n\nNOSAVPIP\tCA\tFIVE\n\t\tTS\tCM/GYMDT\n\n\t\tCA\tJTAGTIME\t# ACTIVATE CM/RCS AFTER PIPUP TO GO\n\t\t\t\t\t# IN JTAGTIME +5 CS.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tAOG\n\t\t2CADR\tSETJTAG\n\n\t\tCS\tTHREE\t\t# 1.3SPOT FOR SETJTAG\n\t\tTC\tNEWPHASE\n\t\tOCT\t1\n\n\t\tCAF\tOCT37\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE5\n\nCHEKAVEG\tCS\tFLAGWRD1\n\t\tMASK\tBIT1\n\t\tCCS\tA\t\t# IF AVEG FLAG DOWN SET FINAL EXIT AVEG\n\t\tTC\tAVEGOUT\n\n\t\tCAF\t2SECS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tAOG\n\t\t2CADR\tREADACCS\n\nMAKESERV\tCAF\tPRIO20\t\t# ESTABLISH SERVICER ROUTINE\n\t\tTC\tFINDVAC\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tSERVICER\n\n\t\tCS\tFOUR\t\t# RESTART SERVICER AND READACCS\n\t\tTC\tNEWPHASE\n\t\tOCT\t5\n\n\t\tCAF\tBIT9\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# TURN TEST CONNECTOR OUTBIT ON\n\n\t\tTCF\tTASKOVER\t# END PREVIOUS READACCS WAITLIST TASK\n\n# Page 826\nAVEGOUT\t\tEXTEND\n\t\tDCA\tAVOUTCAD\n\t\tDXCH\tAVGEXIT\n\t\tTCF\tMAKESERV\n\n\t\tEBANK=\tDVCNTR\nAVOUTCAD\t2CADR\tAVGEND\n\n# Page 827\n# ROUTINE NAME:\tONMNITOR\n# MOD 04 BY BAIRNSFATHER 30 APR 1968\tREDO ONMNITOR TO SAVE PIPS EACH 0.5 SEC FOR TM,ENTRY.\n# MOD 03 BY FISHER DECEMBER 1967\n# MOD 02 BY RYE SEPT 1967\n# MOD 01 BY KOSMALA 23 MAR 1967\n# MOD 00 BY KOSMALA 27 FEB 1967\n\n# FUNCTIONAL DESCRIPTION\n\n#\tTHE PURPOSE OF ONMONITOR IS TO PROVIDE 1/2 SEC.READING OF PIPAS FOR DOWNLIST DURING ENTRY.\n#\tX,Y,ZPIPBUF CONTAIN PRESET VALUES X,Y,ZOLDBUF CONTAIN VALUES FROM PREVIOUS READING.\n\n# CALLING SEQUENCE\n\n#\tCALL AS WAITLIST TASK. TERMINATES ITSELF IN TASKOVER\n\n# INITIALISATION\n\n#\tPIPCTR = 2 (FOR DT = 0.5 SEC)\n#\tX,Y,ZPIPBUF SET TO PREVIOUS PIPAX,Y,Z\n\n# OUTPUT\n\n#\tX,Y,ZPIPBUF, X,Y,ZOLDBUF\n# DEBRIS\n\n#\tX,Y,ZPIPBUF CONTAIN LAST PIPAX,Y,Z VALUES\n#\t\tX,Y,ZOLDBUF CONTAIN LAST-BUT-ONE PIPAX,Y,Z VALUES\n#\tRUPTREG1\n#\tPIPCTR\n\nONMNITOR\tTS\tPIPCTR\n\n\t\tTC\tFIXDELAY\t# WAIT\n0.5SEC\t\tDEC\t50\n\nQUIKREAD\tCAF\tTWO\n\t\tTS\tRUPTREG1\n\t\tINDEX\tA\n\t\tCA\tPIPAX\t\t# SAVE ACTUAL PIPAS FOR TM.\n\t\tINDEX\tRUPTREG1\n\t\tXCH\tXPIPBUF\t\t# UPDATE X,Y,ZPIPBUF\n\t\tINDEX\tRUPTREG1\n\t\tTS\tXOLDBUF\t\t# AND X,Y,ZOLDBUF\nCHKCTR\t\tCCS\tRUPTREG1\n\t\tTCF\tQUIKREAD +1\t# LOOP AGAIN\n\t\tCCS\tPIPCTR\n\t\tTCF\tONMNITOR\n\t\tTC\tTASKOVER\n\n# Page 828\n# ********************* SERVICER ***************************************\n#\n\n\t\tEBANK=\tDVCNTR\n\nSERVICER\tCAF\tTWO\n\t\tINHINT\nPIPCHECK\tTS\tRUPTREG1\n\n\t\tDOUBLE\n\t\tINDEX\tA\n\t\tCCS\tDELVX\n\t\tTC\t+2\n\t\tTC\tPIPLOOP\n\n\t\tAD\t-MAXDELV\t# DO PIPA-SATURATION TEST BEFORE\n\t\tEXTEND\n\t\tBZMF\tPIPLOOP\t\t# COMPENSATION.\n\n\t\tTC\tALARM\n\t\tOCT\t00205\t\t# SATURATED-PIPA ALARM   ***CHANGE LATER\n\t\tTC\tAVERAGEG\n\nPIPLOOP\t\tCCS\tRUPTREG1\n\t\tTCF\tPIPCHECK\n\n\t\tTC\tPHASCHNG\t# RESTART REREADAC + SERVICER\n\t\tOCT\t16035\n\t\tOCT\t20000\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tDVTOTUP\n\n\t\tTC\tBANKCALL\t# PIPA COMPENSATION CALL\n\t\tCADR\t1/PIPA\n\nDVTOTUP\t\tTC\tINTPRET\n\t\tVLOAD\tABVAL\t\t# GET ABS VALUE OF DELV\n\t\t\tDELV\n\t\tDMP\tEXIT\n\t\t\tKPIP1\t\t# SCALE AT 2(+7)\n\n\t\tEXTEND\n\t\tDCA\tMPAC\n\t\tDAS\tDVTOTAL\t\t# ACCUMULATE DVTOTAL\nAVERAGEG\tTC\tPHASCHNG\n\t\tOCT\t10035\n\n\t\tTC\tINTPRET\n\t\tCALL\n# Page 829\n\t\t\tCALCRVG\n\t\tEXIT\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t10035\n\n\t\tCAF\tOCT31\t\t# COPY RN1,VN1,GOT102,GOBL1/2,PIPTIME1\n\t\tTC\tGENTRAN\t\t# INTO RN ,VN ,GDT/12 ,GOBL/2 ,PIPTIME\n\t\tADRES\tRN1\n\t\tADRES\tRN\n\t\tRELINT\t\t\t# GENTRAN DOES AN INHINT\n\t\tTC\tPHASCHNG\n\t\tOCT\t10035\n\n\t\tEXTEND\n\t\tDCA\tAVGEXIT\n\t\tDXCH\tZ\t\t# AVERAGEG EXIT\n\nAVGEND\t\tCA\tPIPTIME +1\t# FINAL AVERAGE G EXIT\n\t\tTS\tOLDBT1\t\t# SET UP FREE FALL GYRO COMPENSATION\n\n\t\tTC\tUPFLAG\t\t# SET DRIFTFLG\n\t\tADRES\tDRIFTFLG\t# BIT 15 FLAG 2\n\t\tTC\t2PHSCHNG\n\t\tOCT\t5\t\t# GROUP 5 OFF\n\t\tOCT\t05022\t\t# GROUP 2 ON FOR AVETOMID\n\t\tOCT\t20000\n\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tAVETOMID\t# CONVERT STATE VECTOR TO REFERENCE SCALE.\n\t\tEXIT\n\n\t\tCAF\tZERO\t\t# ZERO MARK COUNTERS.\n\t\tTS\tVHFCNT\n\t\tTS\tTRKMKCNT\n\n\t\tTC\tBANKCALL\n\t\tCADR\tPIPFREE\n\n\t\tCS\tBIT9\n\t\tTS\tMRKBUF2\t\t# INVALIDATE MARK BUFFER\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tCM/DSTBY\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tV37FLAG\n\n# Page 830\n\t\tCAF\tBIT7\t\t# RESTORE GROUP 1 + 2 IF P20 IS RUNNING.\n\t\tMASK\tFLAGWRD0\n\t\tEXTEND\n\t\tBZF\t+4\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t111\t\t# 1.11SPOT\n\t\tOCT\t132\t\t# 2.13SPOT\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tCANV37\n\nSERVEXIT\tTC\tPHASCHNG\n\t\tOCT\t00035\t\t# A, 5.3 = REREADAC (ONLY)\n\n\t\tTCF\tENDOFJOB\n\nDVTHRUSH\tEQUALS\tELEVEN\t\t# 15 PERCENT OF 2SEC PIPA ACCUMULATION,\n\t\t\t\t\t#\tFOR 503-FULL CSM/LEM....DELV SC.AT\n\t\t\t\t\t#\t5.85 CM/SEC.\n\n-MAXDELV\tDEC\t-6398\t\t# 3200 PPS FOR 2 SEC CCS TAKES 1\n\nJTAGTIME\tDEC\t120\t\t# = 1 SEC + T CDU, T CDU = .1 SEC\n\n2.5SEC\t\tDEC\t250\nMDOTFAIL\tDEC\t144.0 B-16\t# 5 SEC MASS LOSS AT 28.8 KG/SEC\n\t\t\t\t\t# SHOULD BE 2-4 SECS FOR NO START\n\t\t\t\t\t#\t    6-8 SECS FOR FAILURE\n\n# Page 831\n# NORMLIZE PERFORMS THE INITIALIZATION REQUIRED PRIOR TO THE FIRST ENTRY TO AVERAGEG, AND SCALES RN SO THAT IT\n# HAS 1 LEADING BINARY ZERO.  IN MOST MISSIONS, RN WILL BE SCALED AT 2(+29), BUT IN THE 206 MISSION, RN WILL BE\n# SCALED AT 2(+24)M.\n\nNORMLIZE\tCAF\tTHIRTEEN\t# SET UP TO COPY 14 REGS- RN1,VN1,PIPTIME1\n\t\tTC\tGENTRAN\t\t# INTO RN,VN, PIPTIME\n\t\tADRES\tRN1\t\t# FROM HERE\n\t\tADRES\tRN\t\t# TO HERE\n\n\t\tRELINT\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\t\t# LOAD RN FOR CALCGRAV\n\t\t\tRN\n\t\t\tCALCGRAV\t# INITIALISE UNITR RMAG GDT1\n\n\t\tSTOVL\tGDT/2\n\t\t\tGOBL1/2\n\t\tSTORE\tGOBL/2\n\t\tEXIT\n\t\tTCF\tENDOFJOB\n\n# Page 832\n# *****  PIPA READER *****\n\n\n# \t\tMOD NO. 00 BY D. LICKLY DEC.9 1966\n\n\n# FUNCTIONAL DESCRIPTION\n\n# \tSUBROUTINE TO READ PIPA COUNTERS, TRYING TO BE VERY CAREFUL SO THAT IT WILL BE RESTARTABLE.\n# \tPIPA READINGS ARE STORED IN THE VECTOR DELV.  THE HIGH ORDER PART OF EACH COMPONENT CONTAINS THE PIPA READING,\n# \tRESTARTS BEGIN AT REREADAC.\n\n\n# \tAT THE END OF THE PIPA READER THE CDUS ARE READ AND STORED AS A\n# VECTOR IN CDUTEMP.  THE HIGH ORDER PART OF EACH COMPONENT CONTAINS\n# THE CDU READING IN 2S COMP IN THE ORDER CDUX,Y,Z.  THE THRUST\n# VECTOR ESTIMATOR IN FINDCDUD REQUIRES THE CDUS BE READ AT PIPTIME.\n\n# CALLING SEQUENCE AND EXIT\n\n#\tCALL VIA TC, ISWCALL, ETC.\n\n#\tEXIT IS VIA Q.\n\n\n# INPUT\n\n#\tINPUT IS THROUGH THE COUNTERS PIPAX, PIPAY, PIPAZ, AND TIME2.\n\n\n# OUTPUT\n\n#\tHIGH ORDER COMPONENTS OF THE VECTOR DELV CONTAIN THE PIPA READINGS.\n#\tPIPTIME CONTAINS TIME OF PIPA READING.\n\n\n# DEBRIS (ERASABLE LOCATIONS DESTROYED BY THE PROGRAM)\n\n#\t\tLOW ORDER DELV'S ARE ZEROED FOR TM INDICATION.\n#\t\tTEMX\tTEMY\tTEMZ\tPIPAGE\n\nPIPASR\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tPIPTIME1\t# CURRENT TIME\tPOSITIVE VALUE\n\t\tCS\tZERO\t\t# INITIALIZE THESE AT NEG ZERO.\n\t\tTS\tTEMX\n\t\tTS\tTEMY\n\t\tTS\tTEMZ\n# Page 833\n\t\tCA\tZERO\n\t\tTS\tDELVZ\t\t# OTHER DELVS OK INCLUDING LOW ORDER\n\t\tTS\tDELVY\n\n\t\tTS\tDELVX +1\t# LOW ORDER DELV'S ARE ZEROED FOR TM: THUS\n\t\tTS\tDELVY +1\t# IF DNLNK'D LOW ORDER DELVS ARE NZ, THEY\n\t\tTS\tDELVZ +1\t# CONTAIN PROPER COMPENSATION.  IF=0, THEN\n\t\t\t\t\t# THE TM VALUES ARE BEFORE COMPENSATION.\n\n\t\tTS\tPIPAGE\t\t# SHOW PIPA READING IN PROGRESS\n\nREPIP1\t\tEXTEND\n\t\tDCS\tPIPAX\t\t# X AND Y PIPS READ\n\t\tDXCH\tTEMX\n\t\tDXCH\tPIPAX\t\t# PIPAS SET TO NEG ZERO AS READ.\n\t\tTS\tDELVX\n\t\tLXCH\tDELVY\n\nREPIP3\t\tCS\tPIPAZ\t\t# REPEAT PROCESS FOR Z PIP\n\t\tXCH\tTEMZ\n\t\tXCH\tPIPAZ\nDODELVZ\t\tTS\tDELVZ\n\n\t\tTC\tQ\n\n\t\tEBANK=\tAOG\n\nREREADAC\tCCS\tPHASE5\t\t# LAST PASS CHECK\n\t\tTCF\t+2\n\t\tTCF\tTASKOVER\n\n\t\tCAF\tPRIO31\t\t# RESTART MAY HAVE WIPED OUT LASTBIAS, AN\n\t\tTS\t1/PIPADT\t#\tUNPROTECTED NOVAC FROM PREREAD,\n\t\t\t\t\t#\tWHICH SET(S) UP 1/PIPADT (THUSLY)\n\t\t\t\t\t#\tFOR NON-COASTING COMPENSATION....BE\n\t\t\t\t\t#\tSURE 1/PIPADT IS AOK.  (PRIO31 IS\n\t\t\t\t\t#\t2.0SEC SC.AT B+8CS)\n\n\t\tCCS\tPIPAGE\n\t\tTCF\tREADACCS\t# PIP READING NOT STARTED.  GO TO BEGINNING\n\n\t\tCAF\tDONEADR\t\t# SET UP RETURN FROM PIPASR\n\t\tTS\tQ\n\n\t\tCCS\tDELVZ\n\t\tTC\tQ\t\t# Z DONE, GO DO CDUS\n\t\tTCF\t+3\t\t# Z NOT DONE, CHECK Y.\n\t\tTC\tQ\n\t\tTC\tQ\n# Page 834\n\t\tZL\n\t\tCCS\tDELVY\n\t\tTCF\t+3\n\t\tTCF\tCHKTEMX\t\t# Y NOT DONE, CHECK X.\n\t\tTCF\t+1\n\t\tLXCH\tPIPAZ\t\t# Y DONE, ZERO Z PIP.\n\n\t\tCCS\tTEMZ\n\t\tCS\tTEMZ\t\t# TEMZ NOT = -0, CONTAINS -PIPAZ VALUE.\n\t\tTCF\tDODELVZ\n\t\tTCF\t-2\n\t\tLXCH\tDELVZ\t\t# TEMZ = -0, L HAS ZPIP VALUE.\n\t\tTC\tQ\n\nCHKTEMX\t\tCCS\tTEMX\t\t# HAS THIS CHANGED\n\t\tCS\tTEMX\t\t# YES\n\t\tTCF\t+3\t\t# YES\n\t\tTCF\t-2\t\t# YES\n\t\tTCF\tREPIP1\t\t# NO\n\t\tTS\tDELVX\n\n\t\tCS\tTEMY\n\t\tTS\tDELVY\n\n\t\tCS\tZERO\t\t# ZERO X AND Y PIPS\n\t\tDXCH\tPIPAX\t\t# L STILL ZERO FROM ABOVE\n\n\t\tTCF\tREPIP3\n\nDONEADR\t\tGENADR\tPIPSDONE\n\n# Page 835\n# *********************************************************************************************\n\n# \tROUTINE CALCRVG INTEGRATES THE EQUATIONS OF MOTION BY AVERAGING THE THRUST AND GRAVITATIONAL\n# ACCELERATIONS OVER A TIME INTERVAL OF 2 SECONDS.\n#\n# \tFOR THE EARTH-CENTERED GRAVITATIONAL FIELD, THE PERTURBATION DUE TO OBLATENESS IS COMPUTED TO THE FIRST\n# HARMONIC COEFFICIENT J.\n\n# \tROUTINE CALCRVG REQUIRES...\n#\t\t1) THRUST ACCELERATION INCREMENTS IN DELV SCALED SAME AS PIPAX,Y,Z IN STABLE MEMBER COORDS.\n#\t\t2) VN SCALED 2(+7)M/CS IN REFERENCE COORDS.\n#\t\t3) RN SCALED AT 2(+29) METERS IN REFERENCE COORDS.\n#\t\t4) UNITW THE EARTH S UNIT ROTATIONAL VECTOR (SCALED AS A FULL UNIT VECTOR) IN REFERENCE COORDS.\n\n# IT LEAVES RN1 UPDATED (SCALED AT 2(+29)M, VN1 (SCALED AT 2(+7)M/CS), AND GDT1/2 (SCALED AT 2(+7)M/CS). ALSO HALF\n# UNIT VECTOR UNITR, RMAG IN 36D SCALED AT 2(+29)M, R MAG SQ. IN 34D SCALED AT 2(+58) M SQ.\n\nCALCGRAV\tUNIT\tPUSH\t\t# ENTER WITH RN IN MPAC\n\t\tSTORE \tUNITR\n\t\tLXC,1\tSLOAD\n\t\t\tRTX2\n\t\t\tX1\n\t\tBMN\tVLOAD\n\t\t\tITISMOON\n\t\tDOT\tPUSH\n\t\t\tUNITW\n\t\tDSQ\tBDSU\n\t\t\tDP1/20\n\t\tPDDL\tDDV\n\t\t\tRESQ\n\t\t\t34D\t\t# (RN)SQ\n\t\tSTORE\t32D\t\t# TEMP FOR (RE/RN)SQ\n\t\tDMP\tDMP\n\t\t\t20J\n\t\tVXSC\tPDDL\n\t\t\tUNITR\n\t\tDMP\tDMP\n\t\t\t2J\n\t\t\t32D\n\t\tVXSC\tVAD\n\t\t\tUNITW\n\t\tSTADR\n\t\tSTORE\tGOBL1/2\n\t\tVAD\tPUSH\n\t\t\tUNITR\nITISMOON\tDLOAD\tNORM\n\t\t\t34D\n\t\t\tX2\n\t\tBDDV*\tSLR*\n# Page 836\n\t\t\t-MUDT(E),1\n\t\t\t0 -21D,2\n\t\tVXSC\tSTADR\n\t\tSTORE\tGDT1/2\t\t# SCALED AT 2(+7) M/CS\n\t\tRVQ\n\nCALCRVG\t\tVLOAD\tVXSC\n\t\t\tDELV\n\t\t\tKPIP1\n\t\tVXM\tVSL1\n\t\t\tREFSMMAT\n\t\tSTORE\tDELVREF\t\t# DELV IN REF COORDS AT 2(+7)\n\t\tVSR1\tPUSH\n\t\tVAD\tPUSH\t\t# (DV-OLDGDT)/2 TO PD SCALED AT 2(+7)M/CS\n\t\t\tGDT/2\n\t\tVAD\tVXSC\n\t\t\tVN\n\t\t\t2SEC(22)\n\t\tVAD\tSTQ\n\t\t\tRN\n\t\t\t31D\n\t\tSTCALL\tRN1\t\t# TEMP STORAGE OF RN SCALED 2(+29)M\n\t\t\tCALCGRAV\n\n\t\tVAD\tVAD\n\t\tVAD\n\t\t\tVN\n\t\tSTCALL\tVN1\t\t# TEMP STORAGE OF VN SCALED 2(+7)M/CS.\n\t\t\t31D\n\nKPIP\t\t2DEC\t.1024\t\t# SCALES DELV TO 2(+4)\n\nKPIP1\t\t2DEC\t0.074880\t# 207 DELV SCALING.  1 PULSE = 5.85 CM/SEC.\n\n-MUDT(E)\t2DEC*\t-7.9720645 E+12 B-44*\n\n-MUDT(M)\t2DEC*\t-9.805556 E+10 B-44*\n\n2SEC(22)\t2DEC\t200 B-22\n\nDP1/20\t\t2DEC\t0.05\n\nRESQ\t\t2DEC*\t40.6809913 E12 B-59*\n\n20J\t\t2DEC*\t3.24692010 E-2 B1*\n\n2J\t\t2DEC*\t3.24692010 E-3 B1*\n"
  },
  {
    "path": "Comanche055/SERVICE_ROUTINES.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     SERVICE_ROUTINES.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 1485-1492\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-07 RSB\tAdapted from Colossus249 file of the same\n#\t\t\t\tname, and page images. Corrected various\n#\t\t\t\ttypos in the transcription of program\n#\t\t\t\tcomments, and these should be back-ported\n#\t\t\t\tto Colossus249.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 1485\n\t\tBLOCK\t3\n\t\tSETLOC\tFFTAG6\n\t\tBANK\n\t\tCOUNT\t03/FLAG\n\nUPENT2\t\tTS\tL\t\t# WHICH FLAGWORD IS IT\n\t\tMASK\tOCT7\n\t\tXCH\tL\t\t# SAVE IN L FOR INDEXING\n\n\t\tMASK\tOCT77770\t# OBTAIN THE BIT INFORMATION\n\t\tINHINT\t\t\t# PREVENT INTERUPTS\n\t\tTS\tITEMP1\t\t# STORE THE BIT INFORMATION TEMPORARIALY\n\n\t\tNDX\tL\n\t\tCS\tFLAGWRD0\n\t\tMASK\tITEMP1\n\t\tNDX\tL\n\t\tADS\tFLAGWRD0\n\t\tRELINT\t\t\t# RELEASE INTERUPT INHIBIT\n\n\t\tINCR\tQ\t\t# OBTAIN THE CORRECT RETURN ADDRESS\n\t\tTC\tQ\t\t# RETURN\n\nDOWNENT2\tTS\tL\t\t# WHICH FLAGWORD IS IT\n\t\tMASK\tOCT7\n\t\tXCH\tL\t\t# SAVE IN L FOR INDEXING\n\n\t\tMASK\tOCT77770\t# OBTAIN THE BIT INFORMATION\n\t\tCOM\t\t\t# START TO PROCESS THE INFORMATION\n\n\t\tINHINT\t\t\t# PREVENT INTERUPTS\n\t\tNDX\tL\n\t\tMASK\tFLAGWRD0\n\t\tNDX\tL\n\t\tTS\tFLAGWRD0\n\t\tRELINT\t\t\t# RELEASE INTERUPT INHIBIT\n\n\t\tINCR\tQ\t\t# OBTAIN THE CORRECT RETURN ADDRESS\n\t\tTC\tQ\t\t# RETURN\n\nOCT7\t\tEQUALS\tSEVEN\n\t\tBANK\t10\n\n# Page 1486\n#\n#\tUPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES.  USING THEM, WHETHER OR\n# NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO\n# EBANK SETTING.  A \"NAMED\" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL\n# ASSEMBLER.\n#\n#\tAT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS.  ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO\n# NAME ANY BIT IN ERASABLE MEMORY.\n#\n#\tCALLING SEQUENCES ARE AS FOLLOWS:-\n#\n#\t\t\tTC\tUPFLAG\t\t\tTC\tDOWNFLAG\n#\t\t\tADRES\tNAME OF FLAG\t\tADRES\tNAME OF FLAG\n#\n#\tRETURN IS TO THE LOCATION FOLLOWING THE \"ADRES\" ABOUT .58 MS AFTER THE \"TC\".\n#\n#\tUPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG1\n\t\tBANK\n\t\tCOUNT*\t$$/FLAG\n\nUPFLAG\t\tCA\tQ\n\t\tTC\tDEBIT\n\t\tCOM\t\t\t# +(15 - BIT)\n\t\tEXTEND\n\t\tROR\tLCHAN\t\t# SET BIT\nCOMFLAG\t\tINDEX\tITEMP1\n\t\tTS\tFLAGWRD0\n\t\tLXCH\tITEMP3\n\t\tRELINT\n\t\tTC\tL\n\n\nDOWNFLAG\tCA\tQ\n\t\tTC\tDEBIT\n\t\tMASK\tL\t\t# RESET BIT\n\t\tTCF\tCOMFLAG\n\n\nDEBIT\t\tAD\tONE\t\t# GET DE BITS\n\t\tINHINT\n\t\tTS\tITEMP3\n\t\tCA\tLOW4\t\t# DEC15\n\t\tTS\tITEMP1\n\t\tINDEX\tITEMP3\n\t\tCA\t0 -1\t\t# ADRES\n\t\tTS\tL\n\t\tCA\tZERO\n# Page 1487\n\t\tEXTEND\n\t\tDV\tITEMP1\t\t# A = FLAGWRD, L = (15 - BIT)\n\t\tDXCH\tITEMP1\n\t\tINDEX\tITEMP1\n\t\tCA\tFLAGWRD0\n\t\tTS\tL\t\t# CURRENT STATE\n\t\tINDEX\tITEMP2\n\t\tCS\tBIT15\t\t# -(15 - BIT)\n\t\tTC\tQ\n\n# Page 1488\n# DELAYJOB- A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.\n#\n# ENTRANCE REQUIREMENTS...\n#\t\tCAF\tDT\t\t# DELAY JOB FOR DT CENTISECS\n#\t\tTC\tBANKCALL\n#\t\tCADR\tDELAYJOB\n\n\t\tBANK\t06\n\t\tSETLOC\tDLAYJOB\n\t\tBANK\n\n# THIS MUST REMAIN IN BANK 0 ****************************************\n\n\t\tCOUNT\t00/DELAY\n\nDELAYJOB\tINHINT\n\t\tTS\tQ\t\t# STORE DELAY DT IN Q FOR DLY -1 IN\n\n\t\tCAF\tDELAYNUM\t# WAITLIST\nDELLOOP\t\tTS\tRUPTREG1\n\t\tINDEX\tA\n\t\tCA\tDELAYLOC\t# IS THIS DELAYLOC AVAILABLE\n\t\tEXTEND\n\t\tBZF\tOK2DELAY\t# YES\n\n\t\tCCS\tRUPTREG1\t# NO, TRY NEXT DELAYLOC\n\t\tTCF\tDELLOOP\n\n\t\tTC\tBAILOUT\t\t# NO AVAILABLE LOCS AVAILABLE.\n\t\tOCT\t1104\n\nOK2DELAY\tCA\tTCSLEEP\t\t# SET WAITLIST IMMEDIATE RETURN\n\t\tTS\tWAITEXIT\n\n\t\tCA\tFBANK\n\t\tAD\tRUPTREG1\t# STORE BBANK FOR TASK CALL\n\t\tTS\tL\n\n\t\tCAF\tWAKECAD\t\t# STORE CADR FOR TASK CALL\n\t\tTCF\tDLY2 -1\t\t# DLY IS IN WAITLIST ROUTINE\n\nTCGETCAD\tTC\tMAKECADR\t# GET CALLERS FCADR\n\n\t\tINDEX\tRUPTREG1\n\t\tTS\tDELAYLOC\t# SAVE DELAY CADRS\n\n\t\tTC\tJOBSLEEP\n\nWAKER\t\tCAF\tZERO\n\t\tINDEX\tBBANK\n\t\tXCH\tDELAYLOC\t# MAKE DELAYLOC AVAILABLE\n# Page 1489\n\t\tTC\tJOBWAKE\n\n\t\tTC\tTASKOVER\n\nTCSLEEP\t\tGENADR\tTCGETCAD -2\nWAKECAD\t\tGENADR\tWAKER\n\n# Page 1490\n# GENTRAN, A BLOCK TRANSFER ROUTINE.\n#\n# WRITTEN BY D. EYLES\n# MOD 1 BY KERNAN\t\t\t\tUTILITYM REV 17 11/18/67\n#\n# MOD 2 BY SCHULENBERG (REMOVE RELINT)\tSKIPPER REV 4 2/28/68\n#\n#\tTHIS ROUTINE IS USEFULL FOR TRANSFERING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N\n# CONSECUTIVE ERASABLE LOCATIONS.  IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.\n#\n#\tGENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT.  THE CALLING SEQUENCE IS:\n#\n#\t\t\t\t\tI\tCA\tN-1\t\t# # OF QUANTITIES MINUS ONE.\n#\t\t\t\t\tI +1\tTC\tGENTRAN\t\t# IN FIXED-FIXED.\n#\t\t\t\t\tI +2\tADRES\tL\t\t# STARTING ADRES OF DATA TO BE MOVED.\n#\t\t\t\t\tI +3\tADRES\tM\t\t# STARTING ADRES OF DUPLICATION BLOCK.\n#\t\t\t\t\tI +4\t\t\t\t# RETURNS HERE.\n#\n#\tGENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.\n#\n#\tA, L AND ITEMP1 ARE NOT PRESERVED.\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG4\n\t\tBANK\n\n\t\tEBANK=\tITEMP1\n\n\t\tCOUNT*\t$$/TRAN\n\nGENTRAN\t\tINHINT\n\t\tTS\tITEMP1\t\t# SAVE N-1.\n\t\tINDEX\tQ\t\t# C(Q) = ADRES L.\n\t\tAD\t0\t\t# ADRES (L + N - 1).\n\t\tINDEX\tA\n\t\tCA\t0\t\t# C(ABOVE).\n\t\tTS\tL\t\t# SAVE DATA.\n\t\tCA\tITEMP1\n\t\tINDEX\tQ\n\t\tAD\t1\t\t# ADRES (M + N - 1).\n\t\tINDEX\tA\n\t\tLXCH\t0\t\t# STUFF IT.\n\t\tCCS\tITEMP1\t\t# LOOP UNTIL N-1 = 0.\n\t\tTCF\tGENTRAN +1\n\t\tTCF\tQ+2\t\t# RETURN TO CALLER.\n\n# Page 1491\n# B5OFF\t\tZERO BIT 5 OF EXTVBACT, WHICH IS SET BY TESTXACT.\n#\n#\t\tMAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT\n\n\t\tCOUNT*\t$$/EXTVB\n\nB5OFF\t\tCS\tBIT5\n\t\tMASK\tEXTVBACT\n\t\tTS\tEXTVBACT\n\t\tTC\tENDOFJOB\n\n# Page 1492\n# SUBROUTINES TO TURN OFF AND TURN ON TRACKER FAIL LIGHT.\n\n\nTRFAILOF\tINHINT\n\t\tCS\tOCT40200\t# TURN OFF TRACKER LIGHT\n\t\tMASK\tDSPTAB +11D\n\t\tAD\tBIT15\n\t\tTS\tDSPTAB +11D\n\t\tCS\tOPTMODES\t# TO INSURE THAT OCDU FAIL WILL GO ON\n\t\tMASK\tBIT7\t\t# AGAIN IF IT WAS ON IN ADDITION TO\n\t\tADS\tOPTMODES\t# TRACKER FAIL.\n\nREQ\t\tRELINT\n\t\tTC\tQ\n\nTRFAILON\tINHINT\n\t\tCS\tDSPTAB\t+11D\t# TURN ON\n\t\tMASK\tOCT40200\n\t\tADS\tDSPTAB +11D\n\t\tTCF\tREQ\n"
  },
  {
    "path": "Comanche055/SINGLE_PRECISION_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSINGLE_PRECISION_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1207\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1207\n\t\tBLOCK\t02\n# SINGLE PRECISION SINE AND COSINE\n\n\t\tCOUNT\t02/INTER\nSPCOS\t\tAD\tHALF\t\t# ARGUMENTS SCALED AT PI\nSPSIN\t\tTS\tTEMK\n\t\tTCF\tSPT\n\t\tCS\tTEMK\nSPT\t\tDOUBLE\n\t\tTS\tTEMK\n\t\tTCF\tPOLLEY\n\t\tXCH\tTEMK\n\t\tINDEX\tTEMK\n\t\tAD \tLIMITS\n\t\tCOM\n\t\tAD\tTEMK\n\t\tTS\tTEMK\n\t\tTCF\tPOLLEY\n\t\tTCF\tARG90\nPOLLEY\t\tEXTEND\n\t\tMP\tTEMK\n\t\tTS\tSQ\n\t\tEXTEND\n\t\tMP\tC5/2\n\t\tAD\tC3/2\n\t\tEXTEND\n\t\tMP\tSQ\n\t\tAD\tC1/2\n\t\tEXTEND\n\t\tMP\tTEMK\n\t\tDDOUBL\n\t\tTS\tTEMK\n\t\tTC\tQ\nARG90\t\tINDEX\tA\n\t\tCS\tLIMITS\n\t\tTC\tQ\t\t# RESULT SCALED AT 1\n# SPROOT WAS DELETED IN REV 51 OF MASTER. ASS. CONT. HAS CARDS.\n"
  },
  {
    "path": "Comanche055/STABLE_ORBIT.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     STABLE_ORBIT.agc\n# Purpose:      Part of the source code for Colossus 2A, AKA Comanche 055.\n#               It is part of the source code for the Command Module's (CM)\n#               Apollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:    yaYUL\n# Contact:      Hartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:      www.ibiblio.org/apollo.\n# Pages:\t525-532\n# Mod history:  2009-05-10 HG    Started adapting from the Colossus249/ file\n#                of the same name, using Comanche055 page\n#                images 0525.jpg - 0532.jpg.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n# Page 525\n# STABLE ORBIT RENDEZVOUS PROGRAMS (P38 AND P78)\n#\n# MOD NO -1\t\tLOG SECTION - STABLE ORBIT - P38-P39\n# MOD BY RUDNICKI.S\tDATE 25JAN68\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tP38 AND P78 CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL\n#\tCONDITIONS REQUIRED BY THE AGC TO (1) PUT THE ACTIVE VEHICLE\n#\tON A TRANSFER TRAJECTORY THAT INTERCEPTS THE PASSIVE VEHICLE\n#\tORBIT A GIVEN DISTANCE, DELTA R, EITHER AHEAD OF OR BEHIND THE\n#\tPASSIVE VEHICLE AND (2) ACTUALLY PLACE THE ACTIVE VEHICLE IN THE\n#\tPASSIVE VEHICLE ORBIT WITH A DELTA R SEPARATION BETWEEN THE TWO\n#\tVEHICLES\n#\n# CALLING SEQUENCE\n#\n#\tASTRONAUT REQUEST THRU DSKY\n#\n#\tV37E38E\t\tIF THIS VEHICLE IS ACTIVE VEHICLE\n#\tV37E78E\t\tIF OTHER VEHICLE IS ACTIVE VEHICLE\n#\n# INPUT\n#\n#\t(1)\tSOI MANEUVER\n#\n#\t\t(A)  TIG\tTIME OF SOI MANEUVER\n#\t\t(B)  CENTANG\tORBITAL CENTRAL ANGLE OF THE PASSIVE VEHICLE\n#\t\t\t\tDURING TRANSFER FROM TIG TO TIME OF INTERCEPT\n#\t\t(C)  DELTAR\tTHE DESIRED SEPARATION OF THE TWO VEHICLES\n#\t\t\t\tSPECIFIED AS A DISTANCE ALONG THE PASSIVE VEHICLE\n#\t\t\t\tORBIT\n#\t\t(D)  OPTION\tEQUALS 1 FOR SOI\n#\n#\t(2)\tSOR MANEUVER\n#\n#\t\t(A)  TIG\tTIME OF SOR MANEUVER\n#\t\t(B)  CENTANG\tAN OPTIONAL RESPECIFICATION OF 1 (B) ABOVE\n#\t\t(C)  OPTION\tEQUALS 2 FOR SOR\n#\t\t(D)  DELTTIME\tTHE TIME REQUIRED TO TRAVERSE DELTA R WHEN\n#\t\t\t\tTRAVELING AT A VELOCITY EQUAL TO THE HORIZONTAL\n#\t\t\t\tVELOCITY OF THE PASSIVE VEHICLE - SAVED FROM\n#\t\t\t\tSOI PHASE\n#\t\t(E)  TINT\tTIME OF INTERCEPT (SOI) - SAVED FROM SOI PHASE\n#\n# OUTPUT\n#\n#\t(1)  TRKMKCNT\tNUMBER OF MARKS\n#\t(2)  TTOGO\tTIME TO GO\n#\t(3)  +MGA\tMIDDLE GIMBAL ANGLE\n# Page 526\n#\t(4)  DSPTEM1\tTIME OF INTERCEPT OF PASSIVE VEHICLE ORBIT\n#\t\t\t(FOR SOI ONLY)\n#\t(5)  POSTTPI\tPERIGEE ALTITUDE OF ACTIVE VEHICLE ORBIT AFTER\n#\t\t\tTHE SOI (SOR) MANEUVER\n#\t(6)  DELVTPI\tMAGNITUDE OF DELTA V AT SOI (SOR) TIME\n#\t(7)  DELVTPF\tMAGNITUDE OF DELTA V AT INTERCEPT TIME\n#\t(8)  DELVLVC\tDELTA VELOCITY AT SOI (AND SOR) - LOCAL VERTICAL\n#\t\t\tCOORDINATES\n#\n# SUBROUTINES USED\n#\n#\tAVFLAGA\n#\tAVFLAGP\n#\tVNDSPLY\n#\tBANKCALL\n#\tGOFLASHR\n#\tGOTOPOOH\n#\tBLANKET\n#\tENDOFJOB\n#\tPREC/TT\n#\tSELECTMU\n#\tINTRPVP\n#\tMAINRTNE\n\n\t\tBANK\t04\n\t\tSETLOC\tSTBLEORB\n\t\tBANK\n\n\t\tEBANK=\tSUBEXIT\n\t\tCOUNT*\t$$/P3879\n\nP38\t\tTC\tAVFLAGA         # THIS VEHICLE ACTIVE\n\t\tTC      +2\nP78\t\tTC\tAVFLAGP         # OTHER VEHICLE ACTIVE\n\t\tTC      P20FLGON        # SET UPDATFLG, TRACKFLG\n\t\tCAF\tV06N33SR\t# DISPLAY TIG\n\t\tTC\tVNDSPLY\n\t\tCAF\tV06N55SR\t# DISPLAY CENTANG\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\t+5\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE\n\t\tCAF\tTHREE\t\t# IMMEDIATE RETURN - BLANK R1, R2\n\t\tTCR\tBLANKET\n\t\tTCF\tENDOFJOB\n\t\tCAF\tFIVE\n\t\tTS\tOPTION1\n\t\tCAF\tONE\n\t\tTS\tOPTION2\t\t# OPTION CODE IS SET TO 1\n# Page 527\n\t\tCAF\tV04N06SR\t# DISPLAY OPTION CODE - 1 = SOI, 2 = SOR\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\t+5\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE\n\t\tCAF\tBIT3\t\t# IMMEDIATE RETURN - BLANK R3\n\t\tTCR\tBLANKET\n\t\tTCF\tENDOFJOB\n\t\tTC\tINTPRET\n\t\tSSP\n\t\t        NN\n\t\t        2\n\t\tSLOAD   SR1\n\t\t\tOPTION2\n\t\tBHIZ\tDLOAD\n\t\t\tOPTN1\n\t\t\tTINT\n\t\tSTORE\tTINTSOI\t\t# STORE FOR SOR PHASE\n\t\tCLRGO\n\t\t\tOPTNSW\t\t# OPTNSW; ON = SOI, OFF = SOR\n\t\t\tJUNCTN1\nOPTN1\t\tSET\tCLEAR\t\t# SOI\n\t\t\tOPTNSW\n\t\t\tUPDATFLG\n\t\tCALL\n\t\t\tPREC/TT\n\t\tSET\tDAD\n\t\t\tUPDATFLG\n\t\t\tTIG\n\t\tSTORE\tTINT\t\t# TI = TIG + TF\n\t\tSTORE\tDSPTEM1\t\t# FOR DISPLAY\n\t\tEXIT\n\t\tCAF\tV06N57SR\t# DISPLAY DELTA R\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\t+5\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE\n\t\tCAF\tSIX\t\t# IMMEDIATE RETURN - BLANK R2, R3\n\t\tTCR\tBLANKET\n\t\tTCF\tENDOFJOB\n\t\tCAF\tV06N34SR\t# DISPLAY TIME OF INTERCEPT\n\t\tTC\tVNDSPLY\n\t\tTC\tINTPRET\nJUNCTN1\t\tCLEAR\tCALL\n\t\t\tP39/79SW\n\t\t\tSELECTMU\t# SELECT MU, CLEAR FINALFLG, GO TO VN1645\nRECYCLE\t\tCALL\n\t\t\tPREC/TT\n# Page 528\n\t\tBOFF\tDLOAD\n\t\t\tOPTNSW\n\t\t\tOPTN2\n\t\t\tTINT\n\t\tSTCALL\tTDEC1\t\t# PRECISION UPDATE PASSIVE VEHICLE TO\n\t\t\tINTRPVP\t\t#\tINTERCEPT TIME\n\t\tVLOAD\tUNIT\n\t\t\tRATT\t\t# RP/(RP)\n\t\tPDVL\tVXV\n\t\t\tVATT\n\t\tABVAL\tNORM\t\t# (VP X RP/(RP))\n\t\t\tX1\n\t\tPDDL\tDDV\n\t\t\tDELTAR\n\t\tSL*\t\t\t# DELTA R / (VP X RP/RP)\n\t\t\t0 -7,1\n\t\tSTCALL\tDELTTIME\t# DELTA T = (RP) DELTA R / (VP X RP)\n\t\t\tJUNCTN2\nOPTN2\t\tDLOAD\tDAD\n\t\t\tTINTSOI\n\t\t\tT\n\t\tSTORE\tTINT\t\t# TI = TI + TF\nJUNCTN2\t\tDLOAD\tDSU\n\t\t\tTINT\n\t\t\tDELTTIME\n\t\tSTORE\tTARGTIME\t# TT = TI - DELTA T\n\n# .... MAINRTNE ....\n# SUBROUTINES USED\n#\n#\tS3435.25\n#\tPERIAPO1\n#\tSHIFTR1\n#\tVNDSPLY\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n#\tVN1645\n\nMAINRTNE\tSTCALL\tTDEC1\t\t# PRECISION UPDATE PASSIVE VEHICLE TO\n\t\t\tINTRPVP\t\t#\tTARGET TIME\n\t\tDLOAD\n\t\t\tTIG\n\t\tSTORE\tINTIME\n\t\tSSP\tVLOAD\n\t\t\tSUBEXIT\n\t\t\tTEST3979\n\t\t\tRATT\n\t\tCALL\n\t\t\tS3435.25\nTEST3979\tBOFF\tBON\n# Page 529\n\t\t\tP39/79SW\n\t\t\tMAINRTN1\n\t\t\tFINALFLG\n\t\t\tP39P79\n\t\tSET\n\t\t\tUPDATFLG\nP39P79\t\tEXIT\n\t\tTC\tDSPLY81\t\t# FOR P39 AND P79\nMAINRTN1\tVLOAD\tABVAL\n\t\t\tDELVEET3\n\t\tSTOVL\tDELVTPI\t\t# DELTA V\n\t\t\tVPASS4\n\t\tVSU\tABVAL\n\t\t\tVTPRIME\n\t\tSTOVL\tDELVTPF\t\t# DELTA V (FINAL) = V'T - VT\n\t\t\tRACT3\n\t\tPDVL\tCALL\n\t\t\tVIPRIME\n\t\t\tPERIAPO1\t# GET PERIGEE ALTITUDE\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSTORE\tPOSTTPI\n\t\tBON\tSET\n\t\t\tFINALFLG\n\t\t\tDSPLY58\n\t\t\tUPDATFLG\nDSPLY58\t\tEXIT\n\t\tCAF\tV06N58SR\t# DISPLAY HP, DELTA V, DELTA V (FINAL)\n\t\tTC\tVNDSPLY\nDSPLY81\t\tCAF\tV06N81SR\t# DISPLAY DELTA V (LV)\n\t\tTC\tVNDSPLY\n\t\tTC\tINTPRET\n\t\tCLEAR\tVLOAD\n\t\t\tXDELVFLG\n\t\t\tDELVEET3\n\t\tSTCALL\tDELVSIN\n\t\t\tVN1645\t\t# DISPLAY TRKMKCNT, TTOGO, +MGA\n\t\tBON\tGOTO\n\t\t\tP39/79SW\n\t\t\tP39/P79B\n\t\t\tRECYCLE\n\n# STABLE ORBIT MIDCOURSE PROGRAM (P39 AND P79)\n#\n# MOD NO -1\t\tLOG SECTION - STABLE ORBIT - P38-P39\n# MOD BY RUDNICKI, S\tDATE 25JAN68\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tP39 AND P79 CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL\n#\tCONDITIONS REQUIRED BY THE AGC TO MAKE A MIDCOURSE CORRECTION\n# Page 530\n#\tMANEUVER AFTER COMPLETING THE SOI MANEUVER BUT BEFORE MAKING\n#\tTHE SOR MANEUVER\n#\n# CALLING SEQUENCE\n#\n#\tASTRONAUT REQUEST THRU DSKY\n#\n#\tV37E39E\t\tIF THIS VEHICLE IS ACTIVE VEHICLE\n#\tV37E79E\t\tIF OTHER VEHICLE IS ACTIVE VEHICLE\n#\n# INPUT\n#\n#\t(1)  TPASS4\tTIME OF INTERCEPT - SAVED FROM P38/P78\n#\t(2)  TARGTIME\tTIME THAT PASSIVE VEHICLE IS AT INTERCEPT POINT -\n#\t\t\tSAVED FROM P38/P78\n#\n# OUTPUT\n#\n#\t(1)  TRKMKCNT\tNUMBER OF MARKS\n#\t(2)  TTOGO\tTIME TO GO\n#\t(3)  +MGA\tMIDDLE GIMBAL ANGLE\n#\t(4)  DELVLVC\tDELTA VELOCITY AT MID - LOCAL VERTICAL COORDINATES\n#\n# SUBROUTINES USED\n#\n#\tAVFLAGA\n#\tAVFLAGP\n#\tLOADTIME\n#\tSELECTMU\n#\tPRECSET\n#\tS34/35.1\n#\tMAINRTNE\n\nP39\t\tTC\tAVFLAGA\t\t# THIS VEHICLE ACTIVE\n\t\tEXTEND\n\t\tDCA\tATIGINC\n\t\tTC\tP39/P79A\nP79\t\tTC\tAVFLAGP\t\t# OTHER VEHICLE ACTIVE\n\t\tEXTEND\n\t\tDCA\tPTIGINC\nP39/P79A\tDXCH\tKT\t\t# TIME TO PREPARE FOR BURN\n\t\tTC\tP20FLGON\t# SET UPDATFLG, TRACKFLG\n\t\tTC\tINTPRET\n\t\tSET\tCALL\n\t\t\tP39/79SW\n\t\t\tSELECTMU\t# SELECT MU, CLEAR FINALFLG, GO TO VN1645\nP39/P79B\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\tKT\n\t\tSTORE\tTIG\t\t# TIG = T (PRESENT) + PREPARATION TIME\n# Page531\n\t\tSTCALL\tTDEC1\t\t# PRECISION UPDATE ACTIVE AND PASSIVE\n\t\t\tPRECSET\t\t#\tVEHICLES TO TIG\n\t\tCALL\n\t\t\tS34/35.1\t# GET UNIT NORMAL\n\t\tDLOAD\tGOTO\n\t\t\tTARGTIME\n\t\t\tMAINRTNE\t# CALCULATE DELTA V AND DELTA V (LV)\n\n# .... PREC/TT ....\n# SUBROUTINES USED\n#\n#\tPRECSET\n#\tTIMETHET\n#\tS34/35.1\n\nPREC/TT\t\tSTQ\tDLOAD\n\t\t\tRTRN\n\t\t\tTIG\n\t\tSTCALL\tTDEC1\t\t# PRECISION UPDATE ACTIVE AND PASSIVE\n\t\t\tPRECSET\t\t#\tVEHICLES TO TIG\n\t\tVLOAD\tVSR*\n\t\t\tRPASS3\n\t\t\t0,2\n\t\tSTODL\tRVEC\n\t\t\tCENTANG\n\t\tPUSH\tCOS\n\t\tSTODL\tCSTH\n\t\tSIN\tSET\n\t\t\tRVSW\n\t\tSTOVL\tSNTH\n\t\t\tVPASS3\n\t\tVSR*\n\t\t\t0,2\n\t\tSTCALL\tVVEC\t\t# GET TRANSFER TIME BASED ON CENTANG OF\n\t\t\tTIMETHET\t#\tPASSIVE VEHICLE\n\t\tCALL\n\t\t\tS34/35.1\t# GET UNIT NORMAL\n\t\tDLOAD\tGOTO\n\t\t\tT\n\t\t\tRTRN\n# .... INTRPVP ....\n# SUBROUTINES USED\n#\n#\tCSMPREC\n#\tLEMPREC\n\nINTRPVP\t\tSTQ\tBOFF\t\t# PRECISION UPDATE PASSIVE VEHICLE TO\n\t\t\tRTRN\t\t#\tTDEC1\n\t\t\tAVFLAG\n\t\t\tOTHERV\n\t\tCALL\n# Page 532\n\t\t\tCSMPREC\n\t\tGOTO\n\t\t\tRTRN\nOTHERV\t\tCALL\n\t\t\tLEMPREC\n\t\tGOTO\n\t\t\tRTRN\n# .... VNDSPLY ....\n# SUBROUTINES USED\n#\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n\nVNDSPLY\t\tEXTEND\t\t\t# FLASH DISPLAY\n\t\tQXCH\tRTRN\n\t\tTS\tVERBNOUN\n\t\tCA\tVERBNOUN\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTC\tRTRN\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE\nV06N33SR\tVN\t0633\nV06N55SR\tVN\t0655\nV04N06SR\tVN\t0406\nV06N57SR\tVN\t0657\nV06N34SR\tVN\t0634\nV06N58SR\tVN\t0658\nV06N81SR\tVN\t0681\n\n# *** END OF COMEKISS.020 ***\n"
  },
  {
    "path": "Comanche055/STAR_TABLES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSTAR_TABLES.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1389-1393\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Colossus249/ file of the same\n#\t\t\t\tname, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 1389\n\t\tBANK\t32\n\t\tSETLOC\tSTARTAB\n\t\tBANK\n\n\t\tCOUNT\t14/STARS\n\n\t\t2DEC\t+.8342971408 B-1\t# STAR 37\tX\n\t\t2DEC\t-.2392481515 B-1\t# STAR 37\tY\n\t\t2DEC\t-.4966976975 B-1\t# STAR 37\tZ\n\n\t\t2DEC\t+.8139832631 B-1\t# STAR 36\tX\n\t\t2DEC\t-.5557243189 B-1\t# STAR 36\tY\n\t\t2DEC\t+.1691204557 B-1\t# STAR 36\tZ\n\n\t\t2DEC\t+.4541086270 B-1\t# STAR 35\tX\n\t\t2DEC\t-.5392368197 B-1\t# STAR 35\tY\n\t\t2DEC\t+.7092312789 B-1\t# STAR 35\tZ\n\n\t\t2DEC\t+.3201817378 B-1\t# STAR 34\tX\n\t\t2DEC\t-.4436021946 B-1\t# STAR 34\tY\n\t\t2DEC\t-.8370786986 B-1\t# STAR 34\tZ\n\n\t\t2DEC\t+.5520184464 B-1\t# STAR 33\tX\n\t\t2DEC\t-.7933187400 B-1\t# STAR 33 \tY\n\t\t2DEC\t-.2567508745 B-1\t# STAR 33\tZ\n\n\t\t2DEC\t+.4537196908 B-1\t# STAR 32\tX\n\t\t2DEC\t-.8779508801 B-1\t# STAR 32\tY\n\t\t2DEC\t+.1527766153 B-1\t# STAR 32\tZ\n\n\t\t2DEC\t+.2069525789 B-1\t# STAR 31\tX\n\t\t2DEC\t-.8719885748 B-1\t# STAR 31\tY\n\t\t2DEC\t-.4436288486 B-1\t# STAR 31\tZ\n\n\t\t2DEC\t+.1217293692 B-1\t# STAR 30\tX\n# Page 1390\n\t\t2DEC\t-.7702732847 B-1\t# STAR 30 \tY\n\t\t2DEC\t+.6259880410 B-1\t# STAR 30\tZ\n\n\t\t2DEC\t-.1124304773 B-1\t# STAR 29\tX\n\t\t2DEC\t-.9694934200 B-1\t# STAR 29\tY\n\t\t2DEC\t+.2178116072 B-1\t# STAR 29\tZ\n\n\t\t2DEC\t-.1146237858 B-1\t# STAR 28\tX\n\t\t2DEC\t-.3399692557 B-1\t# STAR 28 \tY\n\t\t2DEC\t-.9334250333 B-1\t# STAR 28\tZ\n\n\t\t2DEC\t-.3516499609 B-1\t# STAR 27\tX\n\t\t2DEC\t-.8240752703 B-1\t# STAR 27\tY\n\t\t2DEC\t-.4441196390 B-1\t# STAR 27\tZ\n\n\t\t2DEC\t-.5326876930 B-1\t# STAR 26\tX\n\t\t2DEC\t-.7160644554 B-1\t# STAR 26\tY\n\t\t2DEC\t+.4511047742 B-1\t# STAR 26\tZ\n\n\t\t2DEC\t-.7861763936 B-1\t# STAR 25\tX\n\t\t2DEC\t-.5217996305 B-1\t# STAR 25\tY\n\t\t2DEC\t+.3311371675 B-1\t# STAR 25\tZ\n\n\t\t2DEC\t-.6898393233 B-1\t# STAR 24\tX\n\t\t2DEC\t-.4182330640 B-1\t# STAR 24\tY\n\t\t2DEC\t-.5909338474 B-1\t# STAR 24\tZ\n\n\t\t2DEC\t-.5812035376 B-1\t# STAR 23\tX\n\t\t2DEC\t-.2909171294 B-1\t# STAR 23\tY\n\t\t2DEC\t+.7599800468 B-1\t# STAR 23 \tZ\n\n\t\t2DEC\t-.9170097662 B-1\t# STAR 22\tX\n\t\t2DEC\t-.3502146628 B-1\t# STAR 22\tY\n# Page 1391\n\t\t2DEC\t-.1908999176 B-1\t# STAR 22\tZ\n\n\t\t2DEC\t-.4523440203 B-1\t# STAR 21\tX\n\t\t2DEC\t-.0493710140 B-1\t# STAR 21\tY\n\t\t2DEC\t-.8904759346 B-1\t# STAR 21\tZ\n\n\t\t2DEC\t-.9525211695 B-1\t# STAR 20\tX\n\t\t2DEC\t-.0593434796 B-1\t# STAR 20\tY\n\t\t2DEC\t-.2986331746 B-1\t# STAR 20\tZ\n\n\t\t2DEC\t-.9656605484 B-1\t# STAR 19\tX\n\t\t2DEC\t+.0525933156 B-1\t# STAR 19\tY\n\t\t2DEC\t+.2544280809 B-1\t# STAR 19\tZ\n\n\t\t2DEC\t-.8608205219 B-1\t# STAR 18\tX\n\t\t2DEC\t+.4636213989 B-1\t# STAR 18\tY\n\t\t2DEC\t+.2098647835 B-1\t# STAR 18\tZ\n\n\t\t2DEC\t-.7742591356 B-1\t# STAR 17\tX\n\t\t2DEC\t+.6152504197 B-1\t# STAR 17\tY\n\t\t2DEC\t-.1482892839 B-1\t# STAR 17\tZ\n\n\t\t2DEC\t-.4657947941 B-1\t# STAR 16\tX\n\t\t2DEC\t+.4774785033 B-1\t# STAR 16\tY\n\t\t2DEC\t+.7450164351 B-1\t# STAR 16\tZ\n\n\t\t2DEC\t-.3612508532 B-1\t# STAR 15\tX\n\t\t2DEC\t+.5747270840 B-1\t# STAR 15\tY\n\t\t2DEC\t-.7342932655 B-1\t# STAR 15\tZ\n\n\t\t2DEC\t-.4118589524 B-1\t# STAR 14 \tX\n\t\t2DEC\t+.9065485360 B-1\t# STAR 14\tY\n\t\t2DEC\t+.0924226975 B-1\t# STAR 14\tZ\n\n# Page 1392\n\t\t2DEC\t-.1820751783 B-1\t# STAR 13\tX\n\t\t2DEC\t+.9404899869 B-1\t# STAR 13\tY\n\t\t2DEC\t-.2869271926 B-1\t# STAR 13\tZ\n\n\t\t2DEC\t-.0614937230 B-1\t# STAR 12 \tX\n\t\t2DEC\t+.6031563286 B-1\t# STAR 12\tY\n\t\t2DEC\t-.7952489957 B-1\t# STAR 12\tZ\n\n\t\t2DEC\t+.1371725575 B-1\t# STAR 11\tX\n\t\t2DEC\t+.6813721061 B-1\t# STAR 11\tY\n\t\t2DEC\t+.7189685267 B-1\t# STAR 11\tZ\n\n\t\t2DEC\t+.2011399589 B-1\t# STAR 10\tX\n\t\t2DEC\t+.9690337941 B-1\t# STAR 10\tY\n\t\t2DEC\t-.1432348512 B-1\t# STAR 10\tZ\n\n\t\t2DEC\t+.3507315038 B-1\t# STAR 9\tX\n\t\t2DEC\t+.8926333307 B-1\t# STAR 9\tY\n\t\t2DEC\t+.2831839492 B-1\t# STAR 9\tZ\n\n\t\t2DEC\t+.4105636020 B-1\t# STAR 8\tX\n\t\t2DEC\t+.4988110001 B-1\t# STAR 8\tY\n\t\t2DEC\t+.7632988371 B-1\t# STAR 8\tZ\n\n\t\t2DEC \t+.7032235469 B-1\t# STAR 7\tX\n\t\t2DEC\t+.7075846047 B-1\t# STAR 7\tY\n\t\t2DEC\t+.0692868685 B-1\t# STAR 7\tZ\n\n\t\t2DEC\t+.5450107404 B-1\t# STAR 6\tX\n\t\t2DEC\t+.5314955466 B-1\t# STAR 6\tY\n\t\t2DEC\t-.6484410356 B-1\t# STAR 6\tZ\n\n\t\t2DEC\t+.0130968840 B-1\t# STAR 5\tX\n# Page 1393\n\t\t2DEC\t+.0078062795 B-1\t# STAR 5\tY\n\t\t2DEC\t+.9998837600 B-1\t# STAR 5\tZ\n\n\t\t2DEC\t+.4917678276 B-1\t# STAR 4\tX\n\t\t2DEC\t+.2204887125 B-1\t# STAR 4\tY\n\t\t2DEC\t-.8423473935 B-1\t# STAR 4 \tZ\n\n\t\t2DEC\t+.4775639450 B-1\t# STAR 3\tX\n\t\t2DEC\t+.1166004340 B-1\t# STAR 3\tY\n\t\t2DEC\t+.8708254803 B-1\t# STAR 3 \tZ\n\n\t\t2DEC\t+.9342640400 B-1\t# STAR 2\tX\n\t\t2DEC\t+.1735073142 B-1\t# STAR 2\tY\n\t\t2DEC\t-.3115219339 B-1\t# STAR 2\tZ\n\n\t\t2DEC\t+.8748658918 B-1\t# STAR 1\tX\n\t\t2DEC\t+.0260879174 B-1\t# STAR 1\tY\n\t\t2DEC\t+.4836621670 B-1\t# STAR 1\tZ\n\nCATLOG\t\tDEC\t6970\n\n\n\n"
  },
  {
    "path": "Comanche055/SXTMARK.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSXTMARK.agc\n# Purpose:\tPart of the source code for Comanche, build 055. It\n#\t\tis part of the source code for the Command Module's\n#\t\t(CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 222-235\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t16/05/09 FB\tTranscription Batch 2 Assignment.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 222\n# PROGRAM NAME - SXTMARK\t\t\t\t\tDATE- 5 APRIL 1967\n# PROGRAM MODIFIED BY 258/278 PROGRAMMERS\t\t       LOG SECTION SXTMARK\n# MOD BY- R. MELANSON TO ADD DOCUMENTATION\t\t ASSEMBLY SUNDISK REV. 116\n\n# FUNCTIONAL DESCRIPTION-\n#\tSXTMARK IS CALLED FROM INTERNAL ROUTINES WHICH MAY REQUIRE STAR OR LANDMARK MARKINGS BY THE ASTRONAUT.  IF\n#\tTHE MARK SYSTEM IS NOT IN USE, SXTMARK RESERVES A VAC AREA FOR MARKING AND REQUESTS EXECUTION OF THE MKVB51\n#\tROUTINE VIA THE EXECUTIVE JOB PRIORITY LIST.  R21 USES THIS ROUTINE TO DETERMINE IF THE MARK SYSTEM CAN BE\n#\tUSED.  IF YES, SXTMARK RETURNS TO R21 TO PERFORM ITS OWN MARK REQUESTS VIA THE V51 FLASH.\n\n# CALLING SEQUENCE-\n\n#\tCAF\t(NO. MARK REQUESTS IN BITS 1-3 OF A)\n#\tTC\tBANKCALL\n#\tCADR\tSXTMARK\n\n# NORMAL EXIT MODE-\n#\tSWRETURN\n\n# ALARM OR ABORT EXIT MODE-\n#\tABORT\n\n# OUTPUT-\n#\t1) MARKSTAT CONTAINS MARK VALUE (BITS 14-12) AND VAC AREA ADDRESS\n#\t2) QPRET = VAC AREA POINTER VALUE\n#\t3) 1ST WORD OF RESERVED VAC AREA SET TO +0\n#\t4) PRIO32 PLACED IN A REGISTER\n\n# ERASABLE INITIALIZATION-\n#\t1) BITS 1-3 OF A = NO. MARKS REQUESTED\n#\t2) BITS 2,3 OF EXTVBACT =0\n#\t3) A VAC AREA MUST BE AVAILABLE (WORD 1 = ADDRESS OF VAC AREA)\n\n# DEBRIS-\n#\tA,Q,L,RUPTREG1,MARKSTAT,QPRET,BIT2 OF EXTVBACT\n\n\t\tBANK\t13\n\t\tSETLOC\tSXTMARKE\n\t\tBANK\n\n\t\tEBANK=\tMRKBUF1\n\t\tCOUNT\t07/SXTMK\n\nSXTMARK\t\tINHINT\n\t\tTS\tRUPTREG1\t\t# NUMBER OF MARKS WANTED\n\n\t\tCAF\tSIX\t\t\t# BIT2 = MARKING SYSTEM IN USE\n\t\tMASK\tEXTVBACT\t\t# BIT3 = EXTENDED VERB IN PROGRESS\n\t\tCCS\tA\n\t\tTC\tMKABORT\t\t\t# SET THEREFORE ABORT\n# Page 223\n\t\tCAF\tBIT2\t\t\t# NOT SET\n\t\tADS\tEXTVBACT\t\t# SET IT, RESET IN ENDMARK\n\t\tTC\tMARKOK\t\t\t# YES, FIND VAC AREA\n\nMKABORT\t\tTC\tBAILOUT\n\t\tOCT\t01211\nMARKOK\t\tCCS\tVAC1USE\t\t\t# FIND VAC AREA\n\t\tTC\tMKVACFND\n\t\tCCS\tVAC2USE\n\t\tTC\tMKVACFND\n\t\tCCS\tVAC3USE\n\t\tTC\tMKVACFND\n\t\tCCS\tVAC4USE\n\t\tTC\tMKVACFND\n\t\tCCS\tVAC5USE\n\t\tTC\tMKVACFND\n\t\tTC\tBAILOUT\n\t\tOCT\t01207\n\nMKVACFND\tAD\tTWO\t\t\t# ADDRESS OF VAC AREA\n\t\tTS\tMARKSTAT\n\t\tINDEX\tA\n\t\tTS\tQPRET\t\t\t# STORE NEXT AVAILABLE MARK SLOT\n\n\t\tCAF\tZERO\t\t\t# STORE VAC AREA OCCUPIED\n\t\tINDEX\tMARKSTAT\n\t\tTS\t0\t-1\n\n\t\tTC\tCHECKMM\t\t\t# BACKUP MARK ROUTINE USES SXTMARK\n\t\tMM\t53\n\t\tTCF\t+2\n\t\tTCF\tSWRETURN\n\t\tTC\tCHECKMM\n\t\tMM\t54\n\t\tTCF\t+2\n\t\tTCF\tSWRETURN\n\t\tCAF\tBIT12\t\t\t# DESIRED NUMBER OF MARKS IN 12-14\n\t\tEXTEND\n\t\tMP\tRUPTREG1\n\t\tXCH\tL\n\t\tADS\tMARKSTAT\n\n\t\tCAF\tPRIO32\t\t\t# ENTER MARK JOB\n\t\tTC\tNOVAC\n\t\tEBANK=\tMARKSTAT\n\t\t2CADR\tMKVB51\n\n\t\tRELINT\n\t\tTCF\tSWRETURN\t\t# SAME AS MODEEXIT\n\n# Page 224\n# PROGRAM NAME - MKRELEAS\t\t\t\t\tDATE- 5 APRIL 1967\n# PROGRAM MODIFIED BY 248/278 PROGRAMMERS\t\t       LOG SECTION SXTMARK\n# MOD BY- R. MELANSON TO ADD DOCUMENTATION\t\t ASSEMBLY SUNDISK REV. 116\n\n# FUNCTIONAL DESCRIPTION-\n#\tMKRELEAS IS EXECUTED BY INTERNAL ROUTINES TO RELEASE THE MARK SYSTEM TO MAKE IT AVAILABLE TO OTHER INTERNAL\n#\tSYSTEM ROUTINES.  IT ALSO CLEARS THE COARSE OPTICS FLAG BIT AND DISABLES THE OPTICS ERROR COUNTER.\n\n# CALLING SEQUENCE-\n\n#\tTC\tBANKCALL\n#\tCADR\tMKRELEAS\n\n# NORMAL EXIT MODE-\n#\tSWRETURN\n\n# ALARM OR ABORT EXIT MODE- NONE\n\n# OUTPUT-\n#\t1) BIT9 OPTMODES SET TO 0\n#\t2) OPTIND SET TO -1\n#\t3) 1ST WORD OF VAC AREA SET TO VAC ADDRESS TO SIGNIFY AVAILABILITY.\n#\t4) MARKSTAT CLEARED\n#\t5) BIT2 CHANNEL 12 SET TO 0\n\n# ERASABLE INITIALIZATION- NONE\n\n# DEBRIS-\n#\tA,MARKSTAT,BIT9,OPTMODES OPTIND,BIT2 CHANNEL 12\n\nMKRELEAS\tCAF\tZERO\t\t\t# SHOW MARK SYSTEM NOW AVAILABLE\n\t\tXCH\tMARKSTAT\n\t\tMASK\tLOW9\n\t\tCCS\tA\n\t\tINDEX\tA\n\t\tTS\t0\nMKRLEES\t\tINHINT\n\t\tCS\tBIT9\t\t\t# COARSE OPTICS RETURN FLAG.\n\t\tMASK\tOPTMODES\n\t\tTS\tOPTMODES\n\n\t\tCA\tNEGONE\n\t\tTS\tOPTIND\t\t\t# KILL COARSE OPTICS\n\n\t\tCS\tBIT2\t\t\t# DISABLE OPTICS ERROR COUNTER\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tRELINT\n\t\tTC\tSWRETURN\n# Page 225\n# PROGRAM NAME - MARKRUPT\t\t\t\t\tDATE- 5 APRIL 1967\n# PROGRAM MODIFIED BY 258/278 PROGRAMMERS\t\t       LOG SECTION SXTMARK\n# MOD BY- R. MELANSON TO ADD DOCUMENTATION\t\t ASSEMBLY SUNDISK REV. 116\n\n# FUNCTIONAL DESCRIPTION-\n#\tMARKRUPT STORES CDUS,OPTICS AND TIME AND TRANSFERS CONTROL TO THE MARKIT,MARK REJECT OR KEYCOM ROUTINES IF\n#\tBITS IN CHANNEL 16 ARE SET AS REQUIRED.\n\n# CALLING SEQUENCE-\n#\tROUTINE ENTERED VIA KEYRUPT2 WHEN MARK,MARK REJECT OR DSKY KEYS DEPRESSED BY THE OPERATOR.\n\n# NORMAL EXIT MODE-\n#\tMARKIT, MKREJECT, OR POSTJUMP ROUTINES (MARK,MARK REJECT, OR DSKY CODE)\n\n# ALARM OR ABORT EXIT MODE-\n#\tALARM AND RESUME\n\n# OUTPUT-\n#\tRUPTSTOR+5 = CDUT, RUPTSTOR+3 = CDUS, RUPTSTOR+2 = CDUY,\n#\tRUPTREG3 = CDUZ, RUPTSTOR+6 = CDUX, RUPTSTOR+1 AND SAMPTIME+1 =TIME1,\n#\tRUPTSTOR AND SAMPTIME = TIME2\n\n# ERASABLE INITIALIZATION-\n#\tCDUT,CDUS,CDUY,CDUZ,CDUX,TIME2,TIME1,CHANNEL 16 BITS 6,7 OR 1-5\n\n# DEBRIS-\n#\tA,QRUPT,RUPTREG3,SAMPTIME,SAMPTIME+1,RUPTSTOR TO RUPTSTOR+6 EXCEPT RUPTSTOR+4 (LOCATION 67)\n\nMARKRUPT\tTS\tBANKRUPT\t\t# STORE CDUS AND OPTICS NOW\n\t\tCA\tCDUT\n\t\tTS\tMKCDUT\n\t\tCA\tCDUS\n\t\tTS\tMKCDUS\n\t\tCA\tCDUY\n\t\tTS\tMKCDUY\n\t\tCA\tCDUZ\n\t\tTS\tMKCDUZ\n\t\tCA\tCDUX\n\t\tTS\tMKCDUX\n\t\tEXTEND\n\t\tDCA\tTIME2\t\t\t# GET TIME\n\t\tDXCH\tMKT2T1\n\t\tEXTEND\n\t\tDCA\tMKT2T1\n\t\tDXCH\tSAMPTIME\t\t# RUPT TIME FOR NOUN 65.\n\n\t\tXCH\tQ\n\t\tTS\tQRUPT\n\n\t\tCAF\tBIT6\t\t\t# SEE IF MARK OR MKREJECT\n# Page 226\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\n\t\tCCS\tA\n\t\tTC\tMARKIT\t\t\t# ITS A MARK\n\n\t\tCAF\tBIT7\t\t\t# NOT A MARK, SEE IF MKREJECT\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\n\t\tCCS\tA\n\t\tTC\tMKREJECT\t\t# ITS A MARK REJECT\n\nKEYCALL\t\tCAF\tOCT37\t\t\t# NOT MARK OR MKREJECT, SEE IF KEYCODE\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\n\t\tEXTEND\n\t\tBZF\t+3\t\t\t# IF NO INBITS\n\t\tTC\tPOSTJUMP\n\t\tCADR\tKEYCOM\t\t\t# IT,S A KEY CODE, NOT A MARK.\n\n\t+3\tTC\tALARM\t\t\t# ALARM IF NO INBITS\n\t\tOCT\t113\n\t\tTC\tRESUME\n\n# Page 227\n# PROGRAM NAME - MARKCONT\t\t\t\tDATE- 19 SEPT 1967\n\n# PROGRAM MODIFIED BY 258/278 PROGRAMMERS\t       LOG SECTION SXTMARK\n# MOD BY- R. MELANSON TO ADD DOCUMENTATION\t ASSEMBLY SUNDISK REV. 116\n\n# FUNCTIONAL DESCRIPTION-\n#\tMARKCONT IS USED TO PERFORM A SPECIAL MARK FUNCTION FOR R21, TO EXECUTE A SPECIAL DISPLAY OF OPTICS AND TIME OR\n#\t TO PERFORM A MARK OF THE STAR OR LAND SIGHTING BASED UPON FLASHING V-N.\n\n# CALLING SEQUENCE-\n#\tFROM MARKDIF\n\n# NORMAL EXIT MODE-\n#\tTASKOVER\n\n# ALARM OR ABORT EXIT MODE-\n#\tALARM AND TASKOVER\n\n# OUTPUT-\n#\t1) FOR R21-\n#\t   EBANK=EBANK7\n#\t   MRKBUF1 TO MRKBUF1+6 = TIME2,TIME1,CDUY,OPTICX,CDUZ,OPTICSY,CDUX OF CURRENT R21 MARK FUNCTION.\n#\t   MRKBUF2 TO MRKBUF2+6 CONTAINS PREVIOUS R21 MARK VALUES.\n#\t2) FOR SPECIAL DISPLAY JOB-\n#\t   RUPTREG1 AND MRKBUF1 = CDUS,RUPTREG2 AND MRKBUF1 +1 = CDUT.\n#\t   RUPTREG3 AND MRKBUF1 +2 = TIME2,RUPTREG4 AND MRKBUF1 +3 = TIME1\n#\t3) FOR NORMAL MARKING-\n#\t   DECREMENT BITS14-12 OF MARKSTAT BY 1,\n#\t   BIT10 MARKSTAT SET TO 1,INCREMENT QPRET BY 7,\n#\t   STORE TIME2,TIME1,CDUY,CDUS,CDUZ,CDUT AND CDUX IN VAC+1 TO VAC+7\n\n# ERASABLE INITIALIZATION-\n#\t1) FOR R21-\n#\t   BIT14 OF STATE+2 =1, MRKBUF1 TO MRKBUF1+6, ITEMP1, RUPTREG3,\n#\t   RUPTSTOR TO RUPTSTOR+6 EXCEPT RUPTSTOR+4\n#\t2) FOR SPECIAL DISPLAY JOB-\n#\t   BIT14 OF STATE+2 =0,MARKSTAT =+0,RUPTREG1,RUPTREG2,RUPTREG3\n#\t   RUPTREG4,RUPTSTOR,RUPTSTOR+1,RUPTSTOR+3,RUPTSTOR+5,\n#\t   BIT12 OF STATE+5 (V59 FLAG),MRKBUF1 THRU MRKBUF1+3\n#\t3) FOR NORMAL MARKING-\n#\t   BIT14 OF STATE+2 =0,MARKSTAE =VAC ADDRESS, A REG, ITEMP1, RUPTREG3,\n#\t   RUPTSTOR TO RUPTSTOR+6 EXCEPT RUPTSTOR+4.\n\n# DEBRIS-\n#\t1) FOR R21-\n#\t   A,ITEMP1,MRKBUF1,MRKBUF2\n#\t2) FOR SPECIAL DISPLAY JOB-\n#\t   A,RUPTREG1,RUPTREG2,RUPTREG3,RUPTREG4,MPAC TO MPAC+3\n#\t3) FOR NORMAL MARKING-\n#\t   A,MARKSTAT,ITEMP1,QPRET,VAC+1 TO VAC+7 OF VAC AREA IN USE\n\n# Page 228\nMARKCONT\tCAF\tBIT14\n\t\tMASK\tSTATE\t+2\t\t# R21 MARK (SPECIAL MARKING FOR R21)\n\t\tEXTEND\n\t\tBZF\tMARKET\t\t\t# NOT SET THEREFORE REGULAR MARKING\nMARKIT1\t\tCAF\tSIX\t\t\t# SPECIAL FOR R21\n\t\tTC\tGENTRAN\t\t\t# TRANSFER MRKBUF1 TO MRKBUF2\n\t\tADRES\tMRKBUF1\n\t\tADRES\tMRKBUF2\n\n\t\tCAF\tSIX\t\t\t# TRANSFER CURRENT MARK DATA TO MARKBUF1\n\t\tTC\tGENTRAN\n\t\tADRES\tMKT2T1\n\t\tADRES\tMRKBUF1\n\n\t\tTCF\tTASKOVER\n\nMARKET\t\tCCS\tMARKSTAT\t\t# SEE IF MARKS CALLED FOR\n\t\tTC\tMARK2\t\t\t# COLLECT MARKS\n\n\t\tCAF\tTWO\t\t\t# IS MARKING SYSTEM IN USE (BIT2)\n\t\tMASK\tEXTVBACT\n\t\tEXTEND\n\t\tBZF\tMARKET3\t\t\t# MARKING NOT CALLED FOR\n\t\tCAF\tBIT12\n\t\tMASK\tSTATE\t+5\t\t# V59FLAG\n\t\tEXTEND\n\t\tBZF\tMARKET3\t\t\t# IF V59FLAG NOT SET-MARK UNCALLED FOR\n\t\tCAF\tPRIO5\t\t\t# CALIBRATION MARK (SET) FOR P23\n\t\tTC\tNOVAC\t\t\t# SPECIAL DISPLAY JOB\n\t\tEBANK=\tMRKBUF1\n\t\t2CADR\tMARKDISP\n\n\t\tCAF\tSIX\n\t\tTC\tGENTRAN\t\t\t# TRANSFER MARK DATE TO MARKDOWN\n\t\tADRES\tMKT2T1\n\t\tADRES\tMARKDOWN\n\t\tCAF\tSIX\n\t\tTC\tGENTRAN\t\t\t# TRANSFER MARK DATA TO MRKBUF1 FOR\n\t\tADRES\tMKT2T1\t\t\t# SPECIAL DISPLAY OF SHAFT AND TRUNNION\n\t\tADRES\tMRKBUF1\t\t\t# IF V59 ACTING\n\t\tTCF\tTASKOVER\nMARKET3\t\tTC\tALARM\n\t\tOCT\t122\t\t\t# MARKING NOT CALLED FOR\n\t\tTCF\tTASKOVER\n114ALM\t\tTC\tALARM\t\t\t# MARK NOT WANTED\n\t\tOCT\t114\n\t\tTCF\tTASKOVER\n\n# Page 229\n# STORE MARK DATA IN MKVAC AND INCREMENT POINTER\n\nMARK2\t\tAD\t74K\t\t\t# SEE IF MARKS WANTED-REDUCE MARKS WANTED\n\t\tEXTEND\n\t\tBZMF\t114ALM\t\t\t# MARK NOT WANTED-ALARM\n\t\tTS\tMARKSTAT\n\t\tCOM\n\t\tMASK\tBIT10\t\t\t# SET BIT10 TO ENABLE REJECT\n\t\tADS\tMARKSTAT\n\n\t\tMASK\tLOW9\n\t\tTS\tITEMP1\n\t\tINDEX\tA\n\t\tXCH\tQPRET\t\t\t# PICK UP MARK SLOT-POINTER\n\t\tTS\tITEMP2\t\t\t# SAVE CURRENT POINTER\n\t\tAD\tSEVEN\t\t\t# INCREMENT POINTER\n\t\tINDEX\tITEMP1\n\t\tTS\tQPRET\t\t\t# STORE ADVANCED POINTER\n\nVACSTOR\t\tEXTEND\n\t\tDCA\tMKT2T1\n\t\tINDEX\tITEMP2\n\t\tDXCH\t0\n\t\tCA\tMKCDUY\n\t\tINDEX\tITEMP2\n\t\tTS\t2\n\t\tCA\tMKCDUS\n\t\tINDEX\tITEMP2\n\t\tTS\t3\n\t\tCA\tMKCDUZ\n\t\tINDEX\tITEMP2\n\t\tTS\t4\n\t\tCA\tMKCDUT\n\t\tINDEX\tITEMP2\n\t\tTS\t5\n\t\tCA\tMKCDUX\n\t\tINDEX\tITEMP2\n\t\tTS\t6\n\n\t\tCAF\tPRIO34\t\t\t# IF ALL MARKS MADE FLASH VB50\n\t\tMASK\tMARKSTAT\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tTASKOVER\n\t\tCAF\tPRIO32\n\t\tTC\tNOVAC\n\t\tEBANK=\tMARKSTAT\n\t\t2CADR\tMKVB50\n\n\t\tTCF\tTASKOVER\n\n# Page 230\n# PROGRAM NAME - MKREJECT\t\t\t\t\tDATE- 5 APRIL 1967\n# PROGRAM MODIFIED BY 258/276 PROGRAMMERS\t\t       LOG SECTION SXTMARK\n# MOD BY- R. MELANSON TO ADD DOCUMENTATION\t\t ASSEMBLY SUNDISK REV. 116\n\n# FUNCTIONAL DESCRIPTION-\n#\tROUTINE ALLOWS OPEATOR TO REJECT MARK MADE PRIOR TO ACCEPTANCE AND ALLOWS A NEW MARK TO BE MADE BY ASTRONAUT\n\n# CALLING SEQUENCE-\n#\tFROM MARKRUPT IF BIT7 OF CHANNEL 16 IS 1.\n\n# NORMAL EXIT MODE-\n#\tRESUME\n\n# ALARM OR ABORT EXIT MODE-\n#\tALARM AND RESUME\n\n# OUTPUT-\n#\t1) FOR R21-\n#\t  MRKRUP1 SET TO -1\n#\t2) FOR NORMAL MARKING-\n#\t   BIT10 MARKSTAT =0,INCREMENT NO. MARKS BY 1,DECREMENT QPRET BY 7\n\n# ERASABLE INITIALIZATION-\n#\t1) FOR R21-\n#\t   BIT14 OF STATE+2 SET TO 1\n#\t2) FOR NORMAL MARKING-\n#\t   BIT14 OF STATE+2 SET TO 0, MARKSTAT,QPRET\n\n# DEBRIS-\n#\t1) FOR R21-\n#\t   A,MARKSTAT,EBANK\n#\t2) FOR NORMAL MARKING-\n#\t   A,MARKSTAT,ITEMP1,QPRET\n\nMKREJECT\tCAF\tBIT14\n\t\tMASK\tSTATE\t+2\t\t# R21 MARK (SPECIAL MARKING FOR R21)\n\t\tEXTEND\n\t\tBZF\tMRKREJCT\t\t# NOT SET THEREFORE REGULAR REJECT\n\t\tCA\tNEGONE\t\t\t# -1 (FOR R22)\n\t\tTS\tMRKBUF1\t\t\t# -0 IN TIME IS FLAG TO R22 SIGNIFYING A\n\t\tTC\tRESUME\t\t\t# REJECTED MARK\nMRKREJCT\tCCS\tMARKSTAT\t\t# SEE IF MARKS BEING ACCEPTED\n\t\tTC\tREJECT2\n\t\tTC\tALARM\t\t\t# MARKS NOT BEING ACCEPTED\n\t\tOCT\t112\n\t\tTC\tRESUME\n\nREJECT2\t\tCS\tBIT10\t\t\t# SEE IF MARK HAD BEEN MADE SINCE LAST\n\t\tMASK\tMARKSTAT\t\t# REJECT, AND SET BIT10 TO ZERO TO\n\t\tXCH\tMARKSTAT\t\t# SHOW MARK REJECT\n# Page 231\n\t\tMASK\tBIT10\n\t\tCCS\tA\n\t\tTC\tREJECT3\n\n\t\tTC\tALARM\t\t\t# DONT ACCEPT TWO REJECTS TOGETHER\n\t\tOCT\t110\n\t\tTC\tRESUME\n\nREJECT3\t\tCAF\tLOW9\t\t\t# DECREMENT POINTER TO REJECT MARK\n\t\tMASK\tMARKSTAT\n\t\tTS\tITEMP1\n\t\tCS\tSEVEN\n\t\tINDEX\tITEMP1\n\t\tADS\tQPRET\t\t\t# NEW POINTER\n\n\t\tCAF\tBIT12\t\t\t# INCREMENT MARKS WANTED AND IF FIELD\n\t\tAD\tMARKSTAT\t\t# IS NOW NON-ZERO, CHANGE TO VB51 TO\n\t\tXCH\tMARKSTAT\t\t# INDICATE MORE MARKS WANTED\n\t\tMASK\tPRIO34\t\t\t# INDICATE MORE MARKS WANTED\n\t\tCCS\tA\n\t\tTC\tRESUME\n\t\tCAF\tPRIO32\n\t\tTC\tNOVAC\n\t\tEBANK=\tMARKSTAT\n\t\t2CADR\tMKVB51\n\n\t\tTC\tRESUME\n\n# Page 232\n# PROGRAM DESCRIPTION MKVB51 AND MKVB50\n\n# AUTHOR-BARNERT DATE-2-15-67 MOD-0\n# PURPOSE\tFLASH V51N70,V51N43, OR V51 TO REQUEST MARKING,\n#\t\tAND V50N25 R1=16 TO REQUEST TERMINATE MARKING.\n\n# CALLING SEQUENCE\tAS JOB WITHIN SXTMARK\n\n# EXIT TO ENDMARK UPON RECEIPT OF V33, V34 CAUSES GOTOPOOH, ENTER\n#\t\tRECYCLES THE DISPLAY\n\n# NOTE- SXTMARK AUTOMATICALLY CHANGES FROM CALLING MKVB51 TO MKVB50 WHEN\n#\t\tSUFFICIENT MARKS HAVE BEEN MADE, AND THE REVERSE WHEN A MARK\n#\t\tREJECT REDUCES THE NUMBER MADE BELOW THAT REQUIRED\n\n# SUBROUTINES CALLED- BANKCALL, GOMARK2,GOODEND,ENDMARK,WAITLIST\n\n# ALARM OR ABORT MODES - NONE\n\n# ERASABLE USED-VERBREG,MARKSTAT,QPRET,DSPTEM1\n\n# OUTPUT MARKSTAT=VAC ADDRESS\n\n# \t QPRET=\tNO.MARKS\nMKVB51\t\tTC\tBANKCALL\t\t# CLEAR DISPLAY FOR MARK VERB\n\t\tCADR\tKLEENEX\n\t\tCAF\tVB51\t\t\t# DISPLAY MARK VB51\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARK4\n\t\tTCF\tTERMSXT\t\t\t# VB34-TERMINATE\n\t\tTCF\tENTANSWR\t\t# V33-PROCEED-MARKING DONE\n\t\tTCF\tMKVB5X\t\t\t# ENTER-RECYCLE TO INITIAL MARK DISPLAY\n\nTERMSXT\t\tTC\tCLEARMRK\t\t# CLEAR MARK ACTIVITY.\n\n\t\tTC\tCHECKMM\n\t\tMM\t03\n\t\tTCF\t+2\n\t\tTC\tTERMP03\n\t\tTC\tPOSTJUMP\n\t\tCADR\tTERM52\n\nTERMP03\t\tTC\tUPFLAG\n\t\tADRES\tTRM03FLG\nENTANSWR\tCAF\tLOW9\t\t\t# PUT VAC ADR IN MARKSTAT AND NO. OF\n\t\tMASK\tMARKSTAT\t\t# MARKS MADE IN QPRET BEFORE LEAVING\n\t\tTS\tMARKSTAT\t\t# SXTMARK\n\t\tCOM\n\t\tINDEX\tMARKSTAT\n\t\tAD\tQPRET\n# Page 233\n\t\tEXTEND\n\t\tBZMF\tJAMIT\t\t\t# NO MARKS MADE, SHOW IT IN QPRET, R53\n\t\tEXTEND\t\t\t\t#\tWILL PICK IT UP AND RECYCLE\n\t\tMP\tBIT12\t\t\t# THIS PUTS NUMBER MARKS-1 IN A\n\t\tAD\tONE\nJAMIT\t\tINDEX\tMARKSTAT\t\t# STORE NO OF MARKS MADE\n\t\tTS\tQPRET\n\t\tINHINT\t\t\t\t# SERVICE OPTSTALL INTERFACE WITH\n\t\tCAF\tFIVE\n\t\tTC\tWAITLIST\n\t\tEBANK=\tMARKSTAT\n\t\t2CADR\tENDMARKS\n\n\t\tTC\tENDMARK\t\t\t# KNOCKS DOWN MARKING FLAG + DOES ENDOFJOB\n\nENDMARKS\tCAF\tONE\n\t\tTC\tIBNKCALL\n\t\tCADR\tGOODEND\nMKVB5X\t\tCAF\tPRIO34\n\t\tMASK\tMARKSTAT\t\t# RE-DISPLAY VB51 IF MORE MARKS WANTED\n\t\tCCS\tA\t\t\t# AND VB50 IF ALL IN\n\t\tTCF\tMKVB51\nMKVB50\t\tCAF\tR1D1\t\t\t# OCT 16\n\t\tTS\tDSPTEM1\n\t\tCAF\tV50N25\n\t\tTCF\tMKVB51\t+3\n\nV50N25\t\tVN\t5025\nVB51\t\tVN\t5100\nOCT37\t\t=\tLOW5\n\n# PROGRAM NAME - MARKIT\t\t\t\tDATE- 19 SEPT 1967\n\n# CALLING SEQUENCE\n#\tFROM MARKRUPT IF CHAN 16 BIT 6 = 1\n\n# EXIT\n#\tRESUME\n\n# INPUT\n#\tCDUCHKWD.  ALSO ALL INITIALIZATION FOR MARKCONT\n\n# OUTPUT\n#\tMKT2T1,MKCDUX,MKCDUY,MKCDUZ,MKCDUS,MKCDUT\n\n# ALARM EXIT\n#\tNONE\n\nMARKIT\t\tCCS\tCDUCHKWD\n\t\tTCF\t+3\t\t\t# DELAY OF CDUCHKWD CS IF PNZ\n# Page 234\n\t\tTCF\t+2\n\t\tCAF\tZERO\n\t\tAD\tONE\t\t\t# 10 MS IF NO CHECK\n\t\tTC\tWAITLIST\n\t\tEBANK=\tMRKBUF1\n\t\t2CADR\tMARKDIF\n\n\t\tTCF\tRESUME\n\n\t\tSETLOC\tSXTMARK1\n\t\tBANK\n\n\t\tCOUNT\t20/SXTMK\n\n# PROGRAM NAME - MARKDIF\t\t\tDATE- 19 SEPT 1967\n\n# CALLING SEQUENCE\n#\tWAITLIST FROM MARKIT\n\n# EXIT\n#\tTASKOVER TO IBNKCALL TO MARKCONT\n\n# INPUT\n# \tOUTPUT FROM MARKIT, INPUT TO MARKCONT, CDUCHKWD\n\n# OUTPUT\n#\tRUPTSTOR - RUPTSTOR+3,RUPTREG3,RUPTSTOR+5 - RUPTSTOR+6\n\n# ALARM EXIT\n#\tALARM AND TASKOVER\n\nMARKDIF\t\tCA\tCDUCHKWD\t\t# IF DELAY CHECK IS ZERO OR NEG,ACP MARK\n\t\tEXTEND\n\t\tBZMF\tMKACPT\n\t\tCS\tBIT1\n\t\tTS\tMKNDX\t\t\t# SET INDEX -1\n\t\tCA\tMKCDUX\n\t\tTC\tDIFCHK\t\t\t# SEE IF VEHICLE RATE TO MUCH AT MARK\n\t\tCA\tMKCDUY\n\t\tTC\tDIFCHK\n\t\tCA\tMKCDUZ\n\t\tTC\tDIFCHK\n\nMKACPT\t\tTC\tIBNKCALL\n\t\tCADR\tMARKCONT\t\t# MARK DATA OK, WHAT DO WE DO WITH IT\n\nDIFCHK\t\tINCR\tMKNDX\t\t\t# INCREMENT INDEX\n\n\t\tEXTEND\n\t\tINDEX\tMKNDX\n# Page 235\n\t\tMSU\tCDUX\t\t\t# GET MARK(ICDU) - CURRENT(ICDU)\n\t\tCCS\tA\n\t\tTCF\t+4\n\t\tTC\tQ\n\t\tTCF\t+2\n\t\tTC\tQ\n\t\tAD\tNEG2\t\t\t# SEE IF DIFFERENCE GREATER THAN 3 BITS\n\t\tEXTEND\n\t\tBZMF\t-3\t\t\t# NOT GREATER\n\n\t\tTC\tALARM\t\t\t# COUPLED WITH PROGRAM ALARM\n\t\tOCT\t00121\n\n\t\tTCF\tTASKOVER\t\t# DO NOT ACCEPT\n"
  },
  {
    "path": "Comanche055/SYSTEM_TEST_STANDARD_LEAD_INS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSYSTEM_TEST_STANDARD_LEAD_INS.agc\n# Purpose:\tPart of the source code for Comanche, build 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 420-422\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Mod history:\t05/07/09 OH\tTranscription Batch 1 Assignment\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further information.\n# Please report any errors to info@sandroid.org.\n\n\n# Page 420\n\t\tEBANK=\tXSM\n\n\t\tBANK\t33\n\t\tSETLOC\tE/PROG1\n\t\tBANK\n\n\t\tCOUNT*\t$$/P07\n\n# SPECIAL PROGRAMS TO EASE THE PANGS OF ERASABLE MEMORY PROGRAMS.\n#\n# E/BKCALL\tFOR DOING BANKCALLS FROM AND RETURNING TO ERASABLE.\n#\n# THIS ROUTINE IS CALLABLE FROM ERASABLE OR FIXED.  LIKE BANKCALL, HOWEVER, SWITCHING BETWEEN S3 AND S4\n# IS NOT POSSIBLE.\n#\n# THE CALLING SEQUENCE IS:\n#\n#\tTC\tBANKCALL\n#\tCADR\tE/BKCALL\n#\tCADR\tROUTINE\t\t# WHERE YOU WANT TO GO IN FIXED.\n#\tRETURN HERE FROM DISPLAY TERMINATE, BAD STALL OR TC Q.\n#\tRETURN HERE FROM DISPLAY PROCEED OR GOOD RETURN FROM STALL.\n#\tRETURN HERE FROM DISPLAY ENTER OR RECYCLE.\n#\n# THIS ROUTINE REQUIRES TWO ERASABLES (EBUF2, +1) IN UNSWITCHED WHICH ARE UNSHARED BY INTERRUPTS AND\n# OTHER EMEMORY PROGRAMS.\n#\n# A + L ARE PRESERVED THROUGH BANKCALL AND E/BKCALL.\n\nE/BKCALL\tDXCH\tBUF2\t\t# SAVE A,L AND GET DP RETURN.\n\t\tDXCH\tEBUF2\t\t# SAVE DP RETURN.\n\t\tINCR\tEBUF2\t\t# RETURN +1 BECAUSE DOUBLE CADR.\n\t\tCA\tBBANK\n\t\tMASK\tLOW10\t\t# GET CURRENT EBANK.  (SBANK SOMEDAY)\n\t\tADS\tEBUF2\t+1\t# FORM BBCON.  (WAS FBANK)\n\t\tNDX\tEBUF2\n\t\tCA\t0 -1\t\t# GET CADR OF ROUTINE.\n\t\tTC\tSWCALL\t\t# GO TO ROUTINE, SETTING Q TO SWRETURN\n\t\t\t\t\t# AND RESTORING A + L.\n\t\tTC\t+4\t\t# TX Q, V34, OR BAD STALL RETURN.\n\t\tTC\t+2\t\t# PROCEED OR GOOD STALL RETURN.\n\t\tINCR\tEBUF2\t\t# ENTER OR RECYCLE RETURN.\n\t\tINCR\tEBUF2\nE/SWITCH\tDXCH\tEBUF2\n\t\tDTCB\n\n# Page 421\n# E/CALL\tFOR CALLING A FIXED MEMORY INTERPRETIVE SUBROUTINE FROM ERASABLE AND RETURNING TO ERASABLE.\n#\n# THE CALLING SEQUENCE IS...\n#\n#\tRTB\n#\t\tE/CALL\n#\tCADR\tROUTINE\t\t\t# THE INTERPRETIVE SUBROUTINE YOU WANT.\n#\t\t\t\t\t# RETURNS HERE IN INTERPRETIVE.\n\nE/CALL\t\tLXCH\tLOC\t\t# ADRES -1 OF CADR.\n\t\tINDEX\tL\n\t\tCA\tL\t\t# CADR IN A.\n\t\tINCR\tL\n\t\tINCR\tL\t\t# RETURN ADRES IN L.\n\t\tDXCH\tEBUF2\t\t# STORE CADR AND RETURN.\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tEBUF2\t\t# INDIRECTLY EXECUTE ROUTING.  IT MUST\n\t\tEXIT\t\t\t# LEAVE VIA RVQ OR EQUIVALENT.\n\t\tLXCH\tEBUF2 +1\t# PICK UP RETURN.\n\t\tTCF\tINTPRET +2\t# SET LOC AND RETURB TO CALLER\n\n# Page 422\n# E/JOBWAK\tFOR WAKING UP ERASABLE MEMORY JOBS.\n#\n# THIS ROUTINE MUST BE CALLED IN INTERRUPT OR WITH INTERRUPTS INHIBITED.\n#\n# THE CALLING SEQUENCE IS:\n#\n#\tINHINT\n#\t  .\n#\t  .\n#\tCA\tWAKEADR\t\t# ADDRESS OF SLEEPING JOB\n#\tTC\tIBNKCALL\n#\tCADR\tE/JOBWAK\n#\t  .\t\t\t# RETURNS HERE\n#\t  .\n#\t  .\n#\tRELINT\t\t\t# IF YOU DID AN INHINT.\n\n\t\tBANK\t33\n\t\tSETLOC\tE/PROG\n\t\tBANK\n\n\t\tCOUNT*\t $$/P07\n\nE/JOBWAK\tTC\tJOBWAKE\t\t# ARRIVE IWTH ADRES IN A.\n\t\tCS\tBIT11\n\t\tNDX\tLOCCTR\n\t\tADS\tLOC\t\t# KNOCK FIXED MEMORY BIT OUT OF ADRES.\n\t\tTC\tRUPTREG3\t# RETURN\n\n\n# THESE PROGRAMS ARE PROVIDED TO ALLOW OVERLAY OF BANKS 30 THRU 33 OF THE 205 VERSIONS OF SYSTEM TESTS AND\n# PRELAUNCH ALIGN.  THE INTENT IS TO ALLOW THE STG AND HYBRID LABS TO RUN ALL THE TESTS WITH COLOSSUS.\n\n\n\t\tBANK\t33\n\t\tSETLOC\tTESTLEAD\n\t\tBANK\n\n\t\tCOUNT\t33/COMST\n\n\t\tEBANK=\tQPLACE\n\nCOMPVER\t\tTC\tGCOMPVER\t# MUST BE 33,2000.\n\nGTSCPSS1\tTC\tGTSCPSS\t\t# MUST BE AT 33,2001\n\nREDO\t\tTC\tNEWMODEX\t# DISPLAY MM 07.\n\t\tMM\t07\t\t# FALL INTO IMUTEST\n\n"
  },
  {
    "path": "Comanche055/T4RUPT_PROGRAM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tT4RUPT_PROGRAM.agc\n# Purpose:\tPart of the source code for Comanche, build 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 133-169\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t10/05/09 FB\tTranscription of Batch FB-1 Assignment.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  April 1, 1969.\n#\n#\tThis AGC program shall also be referred to as Colossus 2A\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 133\n\t\tBANK\t12\n\t\tSETLOC\tT4RUP\n\t\tBANK\n\n\t\tCOUNT\t06/T4RPT\n\nT4RUPT\t\tTS\tBANKRUPT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tCCS\tDSRUPTSW\t# GOES 7(-1)0 AROUND AND AROUND\n\t\tTCF\tNORMT4 +1\n\t\tTCF\tNORMT4\n\n\t\tTCF\tQUIKDSP\n\nNORMT4\t\tCAF\tSEVEN\n\t\tTS\tRUPTREG1\n\t\tTS\tDSRUPTSW\n\n\t\tCOUNT\t02/T4RPT\n\n74K\t\t=\tHIGH4\n\n# RELTAB IS A PACKED TABLE. RELAYWORD CODE IN UPPER 4 BITS, RELAY CODE\n# IN LOWER 5 BITS.\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG12\n\t\tBANK\n\nRELTAB\t\tOCT\t04025\n\t\tOCT\t10003\n\t\tOCT\t14031\n\t\tOCT\t20033\n\t\tOCT\t24017\n\t\tOCT\t30036\n\t\tOCT\t34034\n\t\tOCT\t40023\n\t\tOCT\t44035\n\t\tOCT\t50037\n\t\tOCT\t54000\nRELTAB11\tOCT\t60000\n\n# Page 134\n# SWITCHED-BANK PORTION\n\n\t\tBANK\t12\n\t\tSETLOC\tT4RUP\n\t\tBANK\n\n\t\tCOUNT\t06/T4RPT\n\nCDRVE\t\tCCS\tDSPTAB +11D\n\t\tTC\tDSPOUT\n\t\tTC\tDSPOUT\n\n\t\tXCH\tDSPTAB +11D\n\t\tMASK\tLOW11\n\t\tTS\tDSPTAB +11D\n\t\tAD\tRELTAB11\n\t\tEXTEND\n\t\tWRITE\tOUT0\n\t\tTC\tHANG20\n\n# Page 135\n# DSPOUT PROGRAM, PUTS OUT DISPLAYS\n\nDSPOUTSB\tTS\tNOUT\n\t\tCS\tZERO\n\t\tTS\tDSRUPTEM\t# SET TO -0 FOR 1ST PASS THRU DSPTAB\n\t\tXCH\tDSPCNT\n\t\tAD\tNEG0\t\t# TO PREVENT +0\n\t\tTS\tDSPCNT\nDSPSCAN\t\tINDEX\tDSPCNT\n\t\tCCS\tDSPTAB\n\t\tCCS\tDSPCNT\t\t# IF DSPTAB ENTRY +, SKIP\n\t\tTCF\tDSPSCAN\t-2\t# IF DSPCNT +, AGAIN\n\t\tTCF\tDSPLAY\t\t# IF DSPTAB ENTRY -, DISPLAY\nTABLNTH\t\tOCT\t12\t\t# DEC 10 LENGTH OF DSPTAB\n\t\tCCS\tDSRUPTEM\t# IF DSRUPTEM=+0, 2ND PASS THRU DSPTAB\n120MRUPT\tDEC\t16372\t\t# (DSPCNT = 0).  +0 INTO NOUT.\n\t\tTS\tNOUT\n\t\tTC\tQ\n\t\tTS\tDSRUPTEM\t# IF DSRUPTEM=-0, 1ST PASS THRU DSPTAB\n\t\tCAF\tTABLNTH\t\t# (DSPCNT=0).+0 INTO DSRUPTEM. PASS AGAIN\n\t\tTCF\tDSPSCAN -1\n\nDSPLAY\t\tAD\tONE\n\t\tINDEX\tDSPCNT\n\t\tTS\tDSPTAB\t\t# REPLACE POSITIVELY\n\t\tMASK\tLOW11\t\t# REMOVE BITS 12 TO 15\n\t\tTS\tDSRUPTEM\n\t\tCAF\tHI5\n\t\tINDEX\tDSPCNT\n\t\tMASK\tRELTAB\t\t# PICK UP BITS 12 TO 15 OF RELTAB ENTRY\n\t\tAD\tDSRUPTEM\n\t\tEXTEND\n\t\tWRITE\tOUT0\t\t# WRITE CHANNEL 10\n\t\tTCF\tQ+1\t\t# *** NORMAL RETURN SKIPS ONE\n\nDSPOUT\t\tCCS\tFLAGWRD5\t# DON'T DISPLAY UNLESS DSKY FLAG ON\n\t\tCAF\tZERO\n\t\tTCF\tNODSPOUT\n\t\tCCS\tNOUT\n\t\tTC\tDSPOUTSB\n\t\tTCF\tNODSPOUT\t# NO DISPLAY REQUESTS\n\nHANG20\t\tCS\t11,14,9\n\t\tADS\tDSRUPTSW\n\n\t\tCAF\t20MRUPT\n\nSETTIME4\tTS\tTIME4\n\n# Page 136\n# THE STATUS OF THE PROCEED PUSHBUTTON IS MONITORED EVERY 120 MILLISECONDS VIA THE CHANNEL 32 BIT 14 INBIT.\n# THE STATE OF THIS INBIT IS COMPARED WITH ITS STATE DURING THE PREVIOUS T4RUPT AND IS PROCESSED AS FOLLOWS.\n#\tIF PREV ON AND NOW ON \t-- BYPASS\n#\tIF PREV ON AND NOW OFF\t-- UPDATE IMODES33\n#\tIF PREV OFF AND NOW ON\t-- UPDATE IMODES33 AND PROCESS VIA PINBALL\n#\tIF PREV OFF AND NOW OFF\t-- BYPASS\n# THE LOGIC EMPLOYED REQUIRES ONLY 9 MCT (APPROX. 108 MICROSECONDS) OF COMPUTER TIME WHEN NO CHANGES OCCUR.\n\nPROCEEDE\tCA\tIMODES33\t# MONITOR FOR PROCEED BUTTON\n\t\tEXTEND\n\t\tRXOR\tCHAN32\t\t# CHECK IF BIT 14 DIFFERENT\n\t\tMASK\tBIT14\n\t\tEXTEND\n\t\tBZF\tT4JUMP\t\t# NO CHANGE\n\n\t\tLXCH\tIMODES33\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tIMODES33\t# UPDATE IMODES33\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tTCF\tT4JUMP\t\t# WAS ON -- NOW OFF\n\n\t\tCAF\tCHRPRIO\t\t# WAS OFF -- NOW ON\n\t\tTC\tNOVAC\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tPROCKEY\n\n# Page 137\n# JUMP TO APPROPRIATE ONCE-PER SECOND (0.96 SEC ACTUALLY) ACTIVITY\n\nT4JUMP\t\tINDEX\tRUPTREG1\n\t\tTCF\t+1\n\n\t\tTCF\tOPTTEST\n\t\tTCF\tOPTMON\n\t\tTCF\tIMUMON\n\t\tTCF\tRESUME\n\t\tTCF\tOPTTEST\n\t\tTCF\tOPTMON\n\t\tTCF\tIMUMON\n\t\tTCF\tRESUME\n\nOPTTEST\t\tTC\tIBNKCALL\n\t\tCADR\tOPTDRIVE\n\n20MRUPT\t\t=\tOCT37776\t# (DEC 16382)\n\nNODSPOUT\tEXTEND\t\t\t# TURN OFF RELAYS\n\t\tWRITE\tOUT0\n\n\t\tCAF\t120MRUPT\t# SET FOR NEXT CDRVE\n\t\tTCF\tSETTIME4\n\nQUIKDSP\t\tCAF\tBIT14\n\t\tMASK\tDSRUPTSW\n\t\tEXTEND\n\t\tBZF\tQUIKOFF\t\t# WROTE LAST TIME, NOW TURN OFF RELAYS.\n\n\t\tCCS\tNOUT\n\t\tTC\tDSPOUTSB\n\t\tTCF\tNODSPY\t\t# NOUT=0 OR BAD RETURN FROM DSPOUTSB\n\t\tCS\tBIT14\t\t# GOOD RETURN (WE DISPLAYED SOMETHING)\nQUIKRUPT\tADS\tDSRUPTSW\n\n\t\tCAF\t20MRUPT\n\t\tTS\tTIME4\n\n\t\tCAF\tBIT9\n\t\tADS\tDSRUPTSW\n\n\t\tTC\tRESUME\n\nNODSPY\t\tEXTEND\n\t\tWRITE\tOUT0\n\nSYNCT4\t\tCAF\t20MRUPT\n\t\tADS\tTIME4\n\n\t\tCAF\tBIT9\n# Page 138\n\t\tADS\tDSRUPTSW\n\t\tCCS\tDSRUPTSW\n\t\tTC\tRESUME\nOCT37737\tOCT\t37737\n\t\tTC\tSYNCT4\n\t\tTC\tRESUME\n\nQUIKOFF\t\tEXTEND\n\t\tWRITE\tOUT0\n\t\tCAF\tBIT14\t\t# RESET DSRUPTSW TO SEND DISPLAY NEXT PASS\n\t\tTCF\tQUIKRUPT\n\n11,14,9\t\tOCT\t22400\n\n# Page 139\n# PROGRAM NAME:  IMUMON\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM IS ENTERED EVERY 480 MS.  IT DETECTS CHANGES OF THE IMU STATUS BITS IN\n# CHANNEL 30 AND CALLS THE APPROPRIATE SUBROUTINES.  THE BITS PROCESSED AND THEIR RELEVANT SUBROUTINES ARE:\n#\n#\tFUNCTION\t\tBIT\tSUBROUTINE CALLED\n#\t--------\t\t---\t-----------------\n#\tTEMP IN LIMITS\t\t 15\tTLIM\n#\tISS TURN-ON REQUEST\t 14\tITURNON\n#\tIMU FAIL\t\t 13\tIMUFAIL (SETISSW)\n#\tIMU CDU FAIL\t\t 12\tICDUFAIL (SETISSW)\n#\tIMU CAGE\t\t 11\tIMUCAGE\n#\tIMU OPERATE\t\t  9\tIMUOP\n#\n# THE LAST SAMPLED STATE OF THESE BITS IS LEFT IN IMODES30.  ALSO, EACH SUBROUTINE CALLED FINDS THE NEW\n# VALUE OF THE BIT IN A, WITH Q SET TO THE PROPER RETURN LOCATION NXTIFAIL.\n#\n# CALLING SEQUENCE:  T4RUPT EVERY 480 MILLISECONDS.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  TLIM, ITURNON, SETISSW, IMUCAGE, IMUOP.\n#\n# ERASABLE INITIALIZATION:\n#\tFRESH START OR RESTART WITH NO GROUPS ACTIVE:  C(IMODES30) = OCT 37411.\n#\tRESTART WITH ACTIVE GROUPS:\tC(IMODES30) = (B(IMODES30)AND(OCT 00035)) PLUS OCT 37400.\n#\t\t\t\t\tTHIS LEAVES IMU FAIL BITS INTACT.\n#\n# ALARMS:  NONE.\n#\n# EXIT:  TNONTEST.\n#\n# OUTPUT:  UPDATED IMODES30 WITH CHANGES PROCESSED BY APPROPRIATE SUBROUTINE.\n\nIMUMON\t\tCA\tIMODES30\t# SEE IF THERE HAS BEEN A CHANGE IN THE\n\t\tEXTEND\t\t\t# RELEVANT BITS OF CHAN 30.\n\t\tRXOR\tCHAN30\t\t# CHECK IF BITS 9,11-15 CHANGED\n\t\tMASK\t30RDMSK\n\t\tEXTEND\n\t\tBZF\tTNONTEST\t# NO CHANGE IN STATUS\n\n\t\tTS\tRUPTREG1\t# SAVE BITS WHICH HAVE CHANGED.\n\t\tLXCH\tIMODES30\t# UPDATE IMODES30.\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tIMODES30\n\n\t\tCS\tONE\n\t\tXCH\tRUPTREG1\n\t\tEXTEND\n# Page 140\n\t\tBZMF\tTLIM\t\t# CHANGE IN IMU TEMP.\n\t\tTCF\tNXTIFBIT\t# BEGIN BIT SCAN.\n\n \t-1\tAD\tONE\t\t# (RE-ENTERS HERE FROM NXTIFAIL.)\nNXTIFBIT\tINCR\tRUPTREG1\t# ADVANCE BIT POSITION NUMBER.\n \t+1\tDOUBLE\n \t\tTS\tA\t\t# SKIP IF OVERFLOW.\n\t\tTCF\tNXTIFBIT\t# LOOK FOR BIT.\n\n\t\tXCH\tRUPTREG2\t# SAVE OVERFLOW-CORRECTED DATA.\n\t\tINDEX\tRUPTREG1\t# SELECT NEW VALUE OF THIS BIT.\n\t\tCAF\tBIT14\n\t\tMASK\tIMODES30\n\t\tINDEX\tRUPTREG1\n\t\tTC\tIFAILJMP\n\nNXTIFAIL\tCCS\tRUPTREG2\t# PROCESS ANY ADDITIONAL CHANGES.\n\t\tTCF\tNXTIFBIT -1\n\n# Page 141\n# PROGRAM NAME:  TNONTEST.\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM HONORS REQUESTS FOR ISS INITIALIZATION.  ISS TURN-ON (CHANNEL 30 BIT 14)\n# AND ISS OPERATE (CHANNEL 30 BIT 9) REQUESTS ARE TREATED AS A PAIR AND PROCESSING TAKES PLACE .480 SECONDS\n# AFTER EITHER ONE APPEARS.  THIS INITIALIZATION TAKES ON ONE OF THE FOLLOWING THREE FORMS:\n#\n#\t1) ISS TURN-ON:  IN THIS SITUATION THE COMPUTER IS OPERATING WHEN THE ISS IS TURNED ON.  NOMINALLY,\n#\tBOTH ISS TURN-ON AND ISS OPERATE APPEAR.  THE PLATFORM IS CAGED FOR 90 SECONDS AND THE ICDU'S ZEROED\n#\tSO THAT AT THE END OF THE PROCESS THE GIMBAL LOCK MONITOR WILL FUNCTION PROPERLY.\n#\n#\t2) ICDU INITIALIZATION:  IN THIS CASE THE COMPUTER WAS PROBABLY TURNED ON WITH THE ISS IN OPERATE OR\n#\tA FRESH START WAS DONE WIT THE ISS IN OPERATE.  IN THIS CASE ONLY ISS OPERATE IS ON.  THE ICDU'S ARE\n#\tZEROED SO THE GIMBAL LOCK MONITOR WILL FUNCTION.  AN EXCEPTION IS IF THE ISS IS IN GIMBAL LOCK AFTER\n#\tA RESTART, THE ICDU'S WILL NOT BE ZEROED.\n#\n#\t3) RESTART WITH RESTARTABLE PROGRAM USING THE IMU:  IN THIS CASE, NO INITIALIZATION TAKES PLACE SINCE\n#\tIT IS ASSUMED THAT THE USING PROGRAM DID THE INITIALIZATION AND THEREFORE T4RUPT SHOULD NOT INTERFERE.\n#\n# IMODES30 BIT 7 IS SET = 1 BY THE FIRST BIT (CHANNEL 30 BIT 14 OR 9) WHICH ARRIVES.  FOLLOWING THIS, TNONTEST IS\n# ENTERED, FINDS BIT 7 = 1 BUT BIT 8 = 0, SO IT SETS BIT 8 = 1 AND EXITS.  THE NEXT TIME IT FINDS BIT 8 = 1 AND\n# PROCEEDS, SETTING BITS 8 AND 7 = 0.  AT PROCTNON, IF ISS TURN-ON REQUEST IS PRESENT, THE ISS IS CAGED (ZERO +\n# COARSE).  IF ISS OPERATE IS NOT PRESENT PROGRAM ALARM 00213 IS ISSUED.  AT THE END OF A 90 SECOND CAGE, BIT 2\n# OF IMODES30 IS TESTED.  IF IT IS = 1, ISS TURN-ON WAS NOT PRESENT FOR THE ENTIRE 90 SECONDS.  IN THAT CASE, IF\n# THE ISS TURN-ON REQUEST IS PRESENT THE 90 SECOND WAIT IS REPEATED,  OTHERWISE NO ACTION OCCURS UNLESS A PROGRAM\n# WAS WAITING FOR THE INITIALIZATION IN WHICH CASE THE PROGRAM IS GIVEN AN IMUSTALL ERROR RETURN.  IF THE DELAY\n# WENT PROPERLY, THE ISS DELAY OUTBIT IS SENT AND THE ICDU'S ZEROED.  A TASK IS INITIATED TO REMOVE THE PIPA FAIL\n# INHIBIT BIT IN 10.24 SECONDS.  IF A MISSION PROGRAM WAS WAITING IT IS INFORMED VIA ENDIMU.\n#\n# AT PROCTNON, IF ONLY ISS OPERATE IS PRESENT (OPONLY), THE CDU'S ARE ZEROED UNLESS THE PLATFORM IS IN COARSE\n# ALIGN (= GIMBAL LOCK HERE) OR A MISSION PROGRAM IS USING THE IMU (INUSEFLG = 1).\n#\n# CALLING SEQUENCE:  T4RUPT EVERY 480 MILLISECONDS AFTER IMUMON.\n#\n# JOBS OR TASKS INITIATED:  1) ENDTNON, 90 SECONDS AFTER CAGING STARTED.  2) ISSUP, 4 SECONDS AFTER CAGING DONE.\n#\t3) PFAILOK, 10.24 SECONDS AFTER INITIALIZATION COMPLETED.  4) UNZ2, 320 MILLISECONDS AFTER ZEROING\n#\tSTARTED.\n#\n# SUBROUTINES CALLED: CAGESUB, CAGESUB2, ZEROICDU, ENDIMU, IMUBAD, NOATTOFF, SETISSW, VARDELAY.\n#\n# ERASABLE INITIALIZATION:  SEE IMUMON.\n#\n# ALARMS:  PROGRAM ALARM 00213 IF ISS TURN-ON REQUESTED WITHOUT ISS OPERATE.\n#\n# EXIT:  ENDTNON EXITS TO C33TEST.  TASKS HAVING TO DO WITH INITIALIZATION EXIT AS FOLLOWS:  MISSION PROGRAM\n# WAITING AND INITIALIZATION COMPLETE, EXIT TO ENDIMU, MISSION PROGRAM WAITING AND INITIALIZATION FAILED, EXIT TO\n# IMUBAD, IMU NOT IN USE, EXIT TO TASKOVER.\n#\n# OUTPUT:  ISS INITIALIZED.\n\nTNONTEST\t\tCS\tIMODES30\t# AFTER PROCESSING ALL CHANGES, SEE IF IT\n# Page 142\n\t\t\tMASK\tBIT7\t\t# IS TIME TO ACT ON A TURN-ON SEQUENCE.\n\t\t\tCCS\tA\n\t\t\tTCF\tC33TEST\t\t# NO -- EXAMINE CHANNEL 33.\n\n\t\t\tCAF\tBIT8\t\t# SEE IF FIRST SAMPLE OR SECOND.\n\t\t\tMASK\tIMODES30\n\t\t\tCCS\tA\n\t\t\tTCF\tPROCTNON\t# REACT AFTER A SECOND SAMPLE.\n\n\t\t\tCAF\tBIT8\t\t# IF FIRST SAMPLE, SET BIT TO REACT NEXT\n\t\t\tADS\tIMODES30\t# TIME.\n\t\t\tTCF\tC33TEST\n\n# PROCESS IMU TURN-ON REQUESTS AFTER WAITING 1 SAMPLE FOR ALL SIGNALS TO ARRIVE.\n\nPROCTNON\t\tCS\tBITS7&8\n\t\t\tMASK\tIMODES30\n\t\t\tTS\tIMODES30\n\t\t\tMASK\tBIT14\t\t# SEE IF TURN-ON REQUEST.\n\t\t\tCCS\tA\n\t\t\tTCF\tOPONLY\t\t# OPERATE ON ONLY.\n\n\t\t\tCS\tIMODES30\t# IF TURN-ON REQUEST, WE SHOULD HAVE IMU\n\t\t\tMASK\tBIT9\t\t# OPERATE.\n\t\t\tCCS\tA\n\t\t\tTCF\t+3\n\n\t\t\tTC\tALARM\t\t# ALARM IF NOT\n\t\t\tOCT\t213\n\n \t+3\t\tTC\tCAGESUB\n\n \t\t\tCAF\t90SECS\n\t\t\tTC\tWAITLIST\n\t\t\tEBANK=\tCDUIND\n\t\t\t2CADR\tENDTNON\n\n\t\t\tTCF\tC33TEST\n\nRETNON\t\t\tCAF\t90SECS\n\t\t\tTC\tVARDELAY\n\nENDTNON\t\t\tCS\tBIT2\t\t# RESET TURN-ON REQUEST FAIL BIT.\n\t\t\tMASK\tIMODES30\n\t\t\tXCH\tIMODES30\n\t\t\tMASK\tBIT2\t\t# IF IT WAS OFF, SEND ISS DELAY COMPLETE.\n\t\t\tEXTEND\n\t\t\tBZF\tENDTNON2\n# Page 143\n\t\t\tCAF\tBIT14\t\t# IF IT WAS ON AND TURN-ON REQUEST NOW.\n\t\t\tMASK\tIMODES30\t# PRESENT, RE-ENTER 90 SEC DELAY IN WL.\n\t\t\tEXTEND\n\t\t\tBZF\tRETNON\n\n\t\t\tCS\tSTATE\t\t# IF IT IS NOT ON NOW, SEE IF A PROG WAS\n\t\t\tMASK\tIMUSEFLG\t# WAITING.\n\t\t\tCCS\tA\n\t\t\tTCF\tTASKOVER\n\t\t\tTC\tPOSTJUMP\n\t\t\tCADR\tIMUBAD\t\t# UNSUCCESSFUL TURN-ON.\n\nENDTNON2\t\tCAF\tBIT15\t\t# SEND ISS DELAY COMPLETE.\n\t\t\tEXTEND\n\t\t\tWOR\tCHAN12\t\t# TURN OFF ISS DELAY COUNTER\n\t\t\tTC \tIBNKCALL\t# TURN OFF NO ATT LAMP.\n\t\t\tCADR\tNOATTOFF\n\nUNZ2\t\t\tTC\tZEROICDU\n\n\t\t\tCS\tBITS4&5\t\t# REMOVE ZERO AND COARSE.\n\t\t\tEXTEND\n\t\t\tWAND\tCHAN12\n\n\t\t\tCAF\tBIT11\t\t# WAIT 10 SECS FOR CTRS TO FIND GIMBALS\n\t\t\tTC\tVARDELAY\n\nISSUP\t\t\tCS\tOCT54\t\t# REMOVE CAGING, IMU FAIL INHIBIT, AND\n\t\t\tMASK\tIMODES30\t# ICDUFAIL INHIBIT FLAGS.\n\t\t\tTS\tIMODES30\n\n\t\t\tCS\tBIT6\t\t# ENABLE DAP\n\t\t\tMASK\tIMODES33\n\t\t\tTS\tIMODES33\n\n\t\t\tTC\tSETISSW\t\t# ISS WARNING MIGHT HAVE BEEN INHIBITED.\n\n\t\t\tCS\tBIT15\t\t# REMOVE IMU DELAY COMPLETE DISCRETE.\n\t\t\tEXTEND\n\t\t\tWAND\tCHAN12\n\n\t\t\tCAF\t4SECS\t\t# DONT ENABLE PROG ALARM ON PIP FAIL FOR\n\t\t\tTC\tWAITLIST\t# ANOTHER 4 SECS.\n\t\t\tEBANK=\tCDUIND\n\t\t\t2CADR\tPFAILOK\n\n\t\t\tTCF\tTASKOVER\n\nOPONLY\t\t\tCAF\tBIT4\n# Page 144\n\t\t\tEXTEND\t\t\t# IF OPERATE ON ONLY AND WE ARE IN COARSE\n\t\t\tRAND\tCHAN12\t\t# ALIGN, DON'T ZERO THE CDUS BECAUSE WE\n\t\t\tCCS\tA\t\t# MIGHT BE IN GIMBAL LOCK. USE V41N20 TO\n\t\t\tTCF\tC33TEST\t\t# RECOVER.\n\n\t\t\tCAF\tIMUSEFLG\t# OTHERWISE, ZERO THE COUNTERS\n\t\t\tMASK\tSTATE\t\t# UNLESS SOMEONE IS USING THE IMU.\n\t\t\tCCS\tA\n\t\t\tTCF\tC33TEST\n\n\t\t\tTC\tCAGESUB2\t# SET TURNON FLAGS.\n\nISSZERO\t\t\tTC\tIBNKCALL\t# TURN OFF NO ATT LAMP.\n\t\t\tCADR\tNOATTOFF\t#     IMU CAGE OFF ENTRY.\n\n\t\t\tCAF\tBIT5\t\t# ISS CDU ZERO\n\t\t\tEXTEND\n\t\t\tWOR\tCHAN12\n\n\t\t\tTC\tZEROICDU\n\t\t\tCAF\tBIT6\t\t# WAIT 300 MS FOR AGS TO RECEIVE SIGNAL.\n\t\t\tTC\tWAITLIST\n\t\t\tEBANK=\tOPTMODES\n\t\t\t2CADR\tUNZ2\n\n\t\t\tTCF\tC33TEST\n\n# Page 145\n# PROGRAM NAME:  C33TEST\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM MONITORS THREE FLIP-FLOP INBITS OF CHANNEL 33 AND CALLS THE APPROPRIATE\n# SUBROUTINE TO PROCESS A CHANGE.  IT IS ANALOGOUS TO IMUMON, WHICH MONITORS CHANNEL 30, EXCEPT THAT IT READS\n# CHANNEL 33 WITH A WAND INSTRUCTION BECAUSE A `WRITE' PULSE IS REQUIRED TO RESET THE FLIP-FLOPS.  THE BITS\n# PROCESSED AND THE SUBROUTINES CALLED ARE:\n#\tBIT\tFUNCTION\t\tSUBROUTINE\n#\t---\t--------\t\t----------\n#\t 13\tPIPA FAIL\t\tPIPFAIL\n#\t 12\tDOWNLINK TOO FAST\tDNTMFAST\n#\t 11\tUPLINK TOO FAST\t\tUPTMFAST\n#\n# UPON ENTRY TO THE SUBROUTINE, THE NEW BIT STATE IS IN A.\n#\n# CALLING SEQUENCE:  EVERY 480 MILLISECONDS AFTER TNONTEST.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  PIPFAIL, DNTMFAST AND UPTMFAST ON BIT CHANGES.\n#\n# ERASABLE INITIALIZATION:  C(IMODES33) = OCT 16000 ON A FRESH START OR RESTART, THEREFORE, THESE ALARMS WILL\n# REAPPEAR IF THE CONDITIONS PERSIST.\n#\n# ALARMS:  NONE.\n#\n# EXIT:  GLOCKMON.\n#\n# OUTPUT:  UPDATED BITS 13, 12, AND 11 OF IMODES33 WITH CHANGES PROCESSED.\n\nC33TEST\t\tCA\tIMODES33\t\t# SEE IF RELEVANT CHAN33 BITS HAVE\n\t\tMASK\t33RDMSK\n\t\tTS\tL\t\t\t# CHANGED.\n\t\tCAF\t33RDMSK\n\t\tEXTEND\n\t\tWAND\tCHAN33\t\t\t# RESETS FLIP-FLOP INPUTS\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tEXTEND\n\t\tBZF\tGLOCKMON\t\t# ON NO CHANGE.\n\n\t\tTS\tRUPTREG1\t\t# SAVE BITS WHICH HAVE CHANGED\n\t\tLXCH\tIMODES33\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tIMODES33\t\t# UPDATED IMODES33.\n\n\t\tCAF\tZERO\n\t\tXCH\tRUPTREG1\n\t\tDOUBLE\n# Page 146\n\t\tTCF\tNXTIBT +1\t\t# SCAN FOR BIT CHANGES.\n\n \t-1\tAD\tONE\nNXTIBT\t\tINCR\tRUPTREG1\n \t+1\tDOUBLE\n \t\tTS\tA\t\t\t# (CODING IDENTICAL TO CHAN 30).\n\t\tTCF\tNXTIBT\n\n\t\tXCH\tRUPTREG2\n\t\tINDEX\tRUPTREG1\t\t# GET NEW VALUE OF BIT WHICH CHANGED.\n\t\tCAF\tBIT13\n\t\tMASK\tIMODES33\n\t\tINDEX\tRUPTREG1\n\t\tTC\tC33JMP\n\nNXTFL33\t\tCCS\tRUPTREG2\t\t# PROCESS POSSIBLE ADDITIONAL CHANGES.\n\t\tTCF\tNXTIBT -1\n\n# Page 147\n# PROGRAM NAME:  GLOCKMON\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM MONITORS THE CDUZ COUNTER TO DETERMINE WHETHER THE ISS IS IN GIMBAL LOCK\n# AND TAKES ACTION IF IT IS.  THREE REGIONS OF MIDDLE GIMBAL ANGLE (MGA) ARE USED:\n#\n#\t1) ABS(MGA) LESS THAN OR EQUAL TO 70 DEGREES -- NORMAL MODE.\n#\t2) ABS(MGA) GREATER THAN 70 DEGREES AND LESS THAN OR EQUAL TO 85 DEGREES -- GIMBAL LOCK LAMP TURNED ON.\n#\t3) ABS(MGA) GREATER THAN 85 DEGREES -- ISS PUT IN COARSE ALIGN AND NO ATT LAMP TURNED ON.\n#\n# CALLING SEQUENCE:  EVERY 480 MILLISECONDS AFTER C33TEST.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:\t1) SETCOARS WHEN ABS(MGA) GREATER THEN 85 DEGREES AND ISS NOT IN COARSE ALIGN.\n#\t\t\t2) LAMPTEST BEFORE TURNING OFF GIMBAL LOCK LAMP.\n#\n# ERASABLE INITIALIZATION:\n#\t\t1) FRESH START OR RESTART WITH NO GROUPS ACTIVE:  C(CDUZ) = 0, IMODES30 BIT 6 = 0, IMODES33 BIT 1 = 0.\n#\t\t2) RESTART WITH GROUPS ACTIVE:\tSAME AS FRESH START EXCEPT C(CDUZ) NOT CHANGED SO GIMBAL MONITOR\n#\t\t\t\t\t\tPROCEEDS AS BEFORE.\n#\n# ALARMS:\t1) MGA REGION (2) CAUSES GIMBAL LOCK LAMP TO BE LIT.\n#\t\t2) MGA REGION (3) CAUSES THE ISS TO BE PUT IN COARSE ALIGN AND THE NO ATT LAMP TO BE LIT IF EITHER NOT\n#\t\t   SO ALREADY.\n\nGLOCKMON\tCCS\tCDUZ\n\t\tTCF\tGLOCKCHK\t\t# SEE IF MAGNITUDE OF MGA IS GREATER THAN\n\t\tTCF\tSETGLOCK\t\t# 70 DEGREES.\n\t\tTCF\tGLOCKCHK\n\t\tTCF\tSETGLOCK\n\nGLOCKCHK\tAD\t-70DEGS\n\t\tEXTEND\n\t\tBZMF\tSETGLOCK -1\t\t# NO LOCK.\n\n\t\tAD\t-15DEGS\t\t\t# SEE IF ABS(MGA) GREATER THAN 85 DEGREES\n\t\tEXTEND\n\t\tBZMF\tNOGIMRUN\n\n\t\tCAF\tBIT4\t\t\t# IF SO, SYSTEM SHOULD BE IN COARSE ALIGN\n\t\tEXTEND\t\t\t\t# TO PREVENT GIMBAL RUNAWAY.\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTCF\tNOGIMRUN\n\n\t\tTC\tIBNKCALL\t\t# GO INTO COARSE ALIGN.\n\t\tCADR\tSETCOARS\n\n\t\tCAF\tSIX\t\t\t# ENABLE ISS ERROR COUNTERS IN 60 MS.\n\t\tTC\tWAITLIST\n# Page 148\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tCA+ECE\n\nNOGIMRUN\tCAF\tBIT6\t\t\t# TURN ON GIMBAL LOCK LAMP.\n\t\tTCF\tSETGLOCK\n\n -1\t\tCAF\tZERO\nSETGLOCK\tAD\tDSPTAB +11D\t\t# SEE IF PRESENT STATE OF GIMBAL LOCK LAMP\n\t\tMASK\tBIT6\t\t\t# AGREES WITH DESIRED STATE BY HALF ADDING\n\t\tEXTEND\t\t\t\t# THE TWO.\n\t\tBZF\tGLOCKOK\t\t\t# OK AS IS.\n\n\t\tMASK\tDSPTAB +11D\t\t# IF OFF, DON'T TURN ON IF IMU BEING CAGED.\n\t\tCCS\tA\n\t\tTCF\tGLAMPTST\t\t# TURN OFF UNLESS LAMP TEST IN PROGRESS.\n\n\t\tCAF\tBIT6\n\t\tMASK\tIMODES30\n\t\tCCS\tA\n\t\tTCF\tGLOCKOK\n\nGLINVERT\tCS\tDSPTAB +11D\t\t# INVERT GIMBAL LOCK LAMP.\n\t\tMASK\tBIT6\n\t\tAD\tBIT15\t\t\t# TO INDICATE CHANGE IN DSPTAB +11D.\n\t\tXCH\tDSPTAB +11D\n\t\tMASK\tOCT37737\n\t\tADS\tDSPTAB +11D\n\t\tTCF\tGLOCKOK\n\nGLAMPTST\tTC\tLAMPTEST\t\t# TURN OFF UNLESS LAMP TEST IN PROGRESS.\n\t\tTCF\tGLOCKOK\n\t\tTCF\tGLINVERT\n\n-70DEGS\t\tDEC\t-.38888\t\t\t# -70 DEGREES SCALED IN HALF-REVOLUTIONS.\n-15DEGS\t\tDEC\t-.08333\n\n# Page 149\n# PROGRAM NAME:  TLIM.\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM MAINTAINS THE TEMP LAMP (BIT 4 OF CHANNEL 11) ON THE DSKY TO AGREE WITH\n# THE TEMP SIGNAL FROM THE ISS (BIT 15 OF CHANNEL 30).  HOWEVER, THE LIGHT WILL NOT BE TURNED OFF IF A LAMP TEST\n# IS IN PROGRESS.\n#\n# CALLING SEQUENCE:  CALLED BY IMUMON ON A CHANGE OF BIT 15 OF CHANNEL 30.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  LAMPTEST.\n#\n# ERASABLE INITIALIZATION:  FRESH START AND RESTART TURN THE TEMP LAMP OFF.\n#\n# ALARMS:  TEMP LAMP TURNED ON WHEN THE IMU TEMP GOES OUT OF LIMITS.\n#\n# EXIT:  NXTIFAIL.\n#\n# OUTPUT:  SERVICE OF TEMP LAMP.\t\t  IN A, EXCEPT FOR TLIM.\n\nTLIM\t\tMASK\tPOSMAX\t\t\t# REMOVE BIT FROM WORD OF CHANGES AND SET\n\t\tTS\tRUPTREG2\t\t# DSKY TEMP LAMP ACCORDINGLY.\n\n\t\tCCS\tIMODES30\n\t\tTCF\tTEMPOK\n\t\tTCF\tTEMPOK\n\n\t\tCAF\tBIT4\t\t\t# TURN ON LAMP.\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\n\t\tTCF\tNXTIFAIL\n\nTEMPOK\t\tTC\tLAMPTEST\t\t# IF TEMP NOW OK, DON'T TURN OFF LAMP IF\n\t\tTCF\tNXTIFAIL\t\t# LAMP TEST IN PROGRESS.\n\n\t\tCS\tBIT4\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\t\t# TURN OFF LAMP\n\t\tTCF\tNXTIFAIL\n\n# Page 150\n# PROGRAM NAME:  ITURNON.\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM IS CALLED BY IMUMON WHEN A CHANGE OF BIT 14 OF CHANNEL 30 (ISS TURN-ON\n# REQUEST) IS DETECTED.  UPON ENTRY, ITURNON CHECKS IF A TURN-ON DELAY SEQUENCE HAS FAILED, AND IF SO, IT EXITS.\n# IF NOT, IT CHECKS WHETHER THE TURN-ON REQUEST CHANGE IS TO ON OR OFF.  IF ON, IT SETS BIT 7 OF IMODES30 TO 1 SO\n# THAT TNONTEST WILL INITIATE THE ISS INITIALIZATION SEQUENCE.  IF OFF, THE TURN-ON DELAY SIGNAL, CHANNEL 12 BIT\n# 15, IS CHECKED AND IF IT IS ON, ITURNON EXITS.  IF THE DELAY SIGNAL IS OFF, PROGRAM ALARM 00207 IS ISSUED, BIT 2\n# OF IMODES30 IS SET TO 1 AND THE PROGRAM EXITS.\n#\n# THE SETTING OF BIT 2 OF IMODES30 (ISS DELAY SEQUENCE FAIL) INHIBITS THIS ROUTINE AND IMUOP FROM\n# PROCESSING ANY CHANGES.  THIS BIT WILL BE RESET BY THE ENDTNON ROUTINE WHEN THE CURRENT 90 SECOND DELAY PERIOD\n# ENDS.\n#\n# CALLING SEQUENCE:  FROM IMUMON WHEN ISS TURN-ON REQUEST CHANGES STATE.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  ALARM, IF THE ISS TURN-ON REQUEST IS NOT PRESENT FOR 90 SECONDS.\n#\n# ERASABLE INITIALIZATION:  FRESH START AND RESTART SET BIT 15 OF CHANNEL 12 AND BITS 2 AND 7 OF IMODES30 TO 0,\n# AND BIT 14 OF IMODES30 TO 1.\n#\n# ALARMS: PROGRAM ALARM 00207 IS ISSUED IF THE ISS TURN-ON REQUEST SIGNAL IS NOT PRESENT FOR 90 SECONDS.\n#\n# EXIT:  NXTIFAIL.\n#\n# OUTPUT:  BIT 7 OF IMODES30 TO START ISS INITIALIZATION, OR BIT 2 OF IMODES30 AND PROGRAM ALARM 00207 TO INDICATE\n# A FAILED TURN-ON SEQUENCE.\n\nITURNON\t\tCAF\tBIT2\t\t# IF DELAY REQUEST HAS GONE OFF\n\t\tMASK\tIMODES30\t# PREMATURELY, DO NOT PROCESS ANY CHANGES\n\t\tCCS\tA\t\t# UNTIL THE CURRENT 90 SEC WAIT EXPIRES.\n\t\tTCF\tNXTIFAIL\n\n\t\tCAF\tBIT14\t\t# SEE IF JUST ON OR OFF.\n\t\tMASK \tIMODES30\n\t\tEXTEND\n\t\tBZF\tITURNON2\t# IF JUST ON.\n\n\t\tCAF\tBIT15\n\t\tEXTEND\t\t\t# SEE IF DELAY PRESENT DISCRETE HAS BEEN\n\t\tRAND\tCHAN12\t\t# SENT.  IF SO, ACTION COMPLETE\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tNXTIFAIL\n\n\t\tCAF\tBIT2\t\t# IF NOT, SET BIT TO INDICATE REQUEST NOT\n\t\tADS\tIMODES30\t# PRESENT FOR FULL DURATION.\n\t\tTC\tALARM\n\t\tOCT\t207\n\t\tTCF\tNXTIFAIL\n\n# Page 151\nITURNON2\tCS\tIMODES30\t# SET BIT7 TO INDICATE WAIT OF 1 SAMPLE\n\t\tMASK\tBIT7\n\t\tADS\tIMODES30\n\t\tTCF\tNXTIFAIL\n\n# Page 152\n# PROGRAM NAME:  IMUCAGE.\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM PROCESSES CHANGES OF THE IMUCAGE INBIT, CHANNEL 30 BITS 11.  IF THE BIT\n# CHANGES TO 0 (CAGE BUTTON PRESSED), THE ISS IS CAGED (ICDU ZERO + COARSE ALIGN + NO ATT LAMP) UNTIL THE\n# ASTRONAUT SELECTS ANOTHER PROGRAM TO ALIGN THE ISS.  ANY PULSE TRAINS TO THE ICDU'S AND GYRO'S ARE TERMINATED,\n# THE ASSOCIATE OUTCOUNTERS ARE ZEROED AND THE GYRO'S ARE DE-SELECTED.  NO ACTION OCCURS WHEN THE BUTTON IS\n# RELEASED (INBIT CHANGES TO 1).\n#\n# CALLING SEQUENCE:  BY IMUMON WHEN IMU CAGE BIT CHANGES.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  CAGESUB.\n#\n# ERASABLE INITIALZATION:  FRESH START AND RESTART SET BIT 11 OF IMODES30 TO 1.\n#\n# ALARMS: NONE.\n#\n# EXIT:  NXTIFAIL.\n#\n# OUTPUT:  ISS CAGED, COUNTERS ZEROED, PULSE TRAINS TERMINATED AND NO ATT LAMP LIT.\n\nIMUCAGE\t\tCCS\tA\t\t# NO ACTION IF GOING OFF.\n\t\tTCF\tISSZERO\n\t\tCS\tOCT77000\t# TERMINATE ICDU, OPTICS, GYRO PULSE TRAINS\n\t\tEXTEND\n\t\tWAND\tCHAN14\n\n\t\tCS\tOCT272\t\t# KNOCK DOWN TVC ENABLE, IMU ERROR COUNTER\n\t\tEXTEND\t\t\t#   ENABLE, ZERO ICDU, COARSE ALIGN\n\t\tWAND\tCHAN12\t\t#   ENABLE, OPTICS ERR CNTR ENABLE\n\n\t\tCS\tBIT13\t\t# TURN OFF ENGINE\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\n\n\t\tTC\tCAGESUB1\n\n\t\tTC\tIBNKCALL\t# KNOCK DOWN TRACK, REFSMMAT, DRIFT FLAGS\n\t\tCADR\tRNDREFDR\n\n\t\tCS\tZERO\t\t# ZERO COMMAND OUT-COUNTERS\n\t\tTS\tCDUXCMD\n\t\tTS\tCDUYCMD\n\t\tTS\tCDUZCMD\n\t\tTS\tGYROCMD\n\n\t\tCS\tOCT740\t\t# HAVING WAITED AT LEAST 27 MCT FROM\n\t\tEXTEND\t\t\t# GYRO PULSE TRAIN TERMINATION, WE CAN\n\t\tWAND\tCHAN14\t\t# DE-SELECT THE GYROS.\n# Page 153\n\t\tTCF\tNXTIFAIL\n\n# Page 154\n# PROGRAM NAME:  IMUOP.\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM PROCESSES CHANGES IN THE ISS OPERATE DISCRETE, BIT 9 OF CHANNEL 30.\n# IF THE INBIT CHANGES TO 0, INDICATING ISS ON, IMUOP GENERALLY SETS BIT 7 OF IMODES30 TO 1 TO REQUEST ISS\n# INITIALIZATION VIA TNONTEST.  AN EXCEPTION IS DURING A FAILED ISS DELAY DURING WHICH BIT 2 OF IMODES30 IS SET\n# TO 1 AND NO FURTHER INITIALIZATION IS REQUIRED.  WHEN THE INBIT CHANGES TO 1, INDICATING ISS OFF, IMUSEFLG IS\n# TESTED TO SEE IF ANY PROGRAM WAS USING THE ISS.  IF SO, PROGRAM ALARM 00214 IS ISSUED.\n#\n# CALLING SEQUENCE:  BY IMUMON WHEN BIT 9 OF CHANNEL 30 CHANGES.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  ALARM, IF ISS IS TURNED OFF WHILE IN USE.\n#\n# ERASABLE INITIALIZATION:  ON FRESH START AND RESTART, BIT 9 OF IMODES30 IS SET TO 1 EXCEPT WHEN THE GIMBAL LOCK\n# LAMP IS ON, IN WHICH CASE IT IS SET TO 0.  THIS PREVENTS ICDU ZERO BY TNONTEST WITH THE ISS IN GIMBAL LOCK.\n#\n# ALARMS:  PROGRAM ALARM 00214 IF THE ISS IS TURNED OFF WHILE IN USE.\n#\n# EXIT:  NXTIFAIL.\n#\n# OUTPUT:  ISS INITIALIZATION REQUEST (IMODES30 BIT 7) OR PROGRAM ALARM 00214.\n\nIMUOP\t\tEXTEND\t\t\t\t# IF OPERATE JUST ON, WAIT 1 SAMPLE.\n\t\tBZF\tIMUOP2\n\n\t\tCS\tIMODES33\t\t# DISABLE DAP\n\t\tMASK\tBIT6\n\t\tADS\tIMODES33\n\n\t\tTC\tIBNKCALL\t\t# KNOCK DOWN TRACK, REFSMMAT, DRIFT FLAGS\n\t\tCADR\tRNDREFDR\n\n\t\tCS\tBITS7&8\t\t\t# KNOCK DOWN RENDEZVOUS, IMUUSE FLAGS\n\t\tMASK\tSTATE\n\t\tXCH\tSTATE\t\t\t# IF GOING OFF, ALARM IF PROG USING IMU.\n\t\tCOM\n\t\tMASK\tIMUSEFLG\n\t\tCCS\tA\n\t\tTCF\tNXTIFAIL\n\n\t\tTC\tALARM\n\t\tOCT\t214\n\t\tTCF\tNXTIFAIL\n\nIMUOP2\t\tCAF\tBIT2\t\t\t# SEE IF FAILED ISS TURN-ON SEQ IN PROG.\n\t\tMASK\tIMODES30\n\t\tCCS\tA\n\t\tTCF\tNXTIFAIL\t\t# IF SO, DON'T PROCESS UNTIL PRESENT 90\n\t\tTCF\tITURNON2\t\t# SECONDS EXPIRES\n\n# Page 155\n# PROGRAM NAME:  PIPFAIL\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM PROCESSES CHANGES OF BIT 13 OF CHANNEL 33, PIPA FAIL.  IT SETS BIT 10 OF\n# IMODES30 TO AGREE.  IT CALLS SETISSW IN CASE A PIPA FAIL NECESSITATES AN ISS WARNING.  IF NOT, I.E., IMODES30\n# BIT 1 = 1, AND A PIPA FAIL IS PRESENT AND THE ISS NOT BEING INITIALIZED, PROGRAM ALARM 0212 IS ISSUED.\n#\n# CALLING SEQUENCE:  BY C33TEST ON CHANGES OF CHANNEL 33 BIT 13.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  1) SETISSW, AND 2) ALARM (SEE FUNCTIONAL DESCRIPTION).\n#\n# ERASABLE INITIALIZATION:  SEE IMUMON FOR INITIALIZATION OF IMODES30.  THE RELEVANT BITS ARE 5, 7, 8, 9, AND 10.\n#\n# ALARMS:  PROGRAM ALARM 00212 IF PIPA FAIL IS PRESENT BUT NEITHER ISS WARNING IS TO BE ISSUED NOR THE ISS IS\n# BEING INITIALIZED.\n#\n# EXIT:  NXTFL33.\n#\n# OUTPUT:  PROGRAM ALARM 00212 AND ISS WARNING MAINTENANCE.\n\nPIPFAIL\t\tCCS\tA\t\t\t# SET BIT10 IN IMODES30 SO ALL ISS WARNING\n\t\tCAF\tBIT10\t\t\t# INFO IS IN ONE REGISTER.\n\t\tXCH\tIMODES30\n\t\tMASK\t-BIT10\n\t\tADS\tIMODES30\n\n\t\tTC\tSETISSW\n\n\t\tCS\tIMODES30\t\t# IF PIP FAIL DOESN'T LIGHT ISS WARNING, DO\n\t\tMASK\tBIT1\t\t\t# A PROGRAM ALARM IF IMU OPERATING BUT NOT\n\t\tCCS\tA\t\t\t# CAGED OR BEING TURNED ON.\n\t\tTCF\tNXTFL33\n\n\t\tCA\tIMODES30\n\t\tMASK\tOCT1720\n\t\tCCS\tA\n\t\tTCF\tNXTFL33\t\t\t# ABOVE CONDITION NOT MET.\n\n\t\tTC\tALARM\n\t\tOCT\t212\n\t\tTCF\tNXTFL33\n\n# Page 156\n# PROGRAM NAMES:  DNTMFAST, UPTMFAST\n#\n# FUNCTIONAL DESCRIPTION:  THESE PROGRAMS PROCESS CHANGES OF BITS 12 AND 11 OF CHANNEL 33.  IF A BIT CHANGES TO A\n# 0, A PROGRAM ALARM IS ISSUED.  THE ALARMS ARE:\n#\n#\tBIT\tALARM\tCAUSE\n#\t---\t-----\t-----\n#\t 12\t01105\tDOWNLINK TOO FAST\n#\t 11\t01106\tUPLINK TOO FAST\n#\n# CALLING SEQUENCE:  BY C33TEST ON A BIT CHANGE.\n#\n# SUBROUTINES CALLED:  ALARM, IF A BIT CHANGES TO A 0.\n#\n# ERASABLE INITIALIZATION:  FRESH START OR RESTART, BITS 12 AND 11 OF IMODES33 ARE SET TO 1.\n#\n# ALARMS:  SEE FUNCTIONAL DESCRIPTION.\n#\n# EXIT:  NXTFL33.\n#\n# OUTPUT:  PROGRAM ALARM ON A BIT CHANGE TO 0.\n\nDNTMFAST\tCCS\tA\t\t\t# DO PROG ALARM IF TM TOO FAST.\n\t\tTCF\tNXTFL33\n\n\t\tTC\tALARM\n\t\tOCT\t1105\n\t\tTCF\tNXTFL33\n\nUPTMFAST\tCCS\tA\t\t\t# SAME AS DNLINK TOO FAST WITH DIFFERENT\n\t\tTCF\tNXTFL33\t\t\t# ALARM CODE.\n\n\t\tTC\tALARM\n\t\tOCT\t1106\n\t\tTCF\tNXTFL33\n\n# Page 157\n# PROGRAM NAME:  SETISSW\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM TURNS THE ISS WARNING LAMP ON AND OFF (CHANNEL 11 BIT 1 = 1 FOR ON,\n# 0 FOR OFF) DEPENDING ON THE STATUS OF IMODES30 BITS 13 (IMU FAIL) AND 4 (INHIBIT IMU FAIL), 12 (ICDU FAIL) AND\n# 3 (INHIBIT ICDU FAIL), AND 10 (PIPA FAIL) AND 1 (INHIBIT PIPA FAIL).  THE LAMP IS LEFT ON IF A LAMP TEST IS IN\n# PROGRESS.\n#\n# CALLING SEQUENCE:  CALLED BY IMUMON ON CHANGES TO IMU FAIL AND ICDU FAIL.  CALLED BY IFAILOK AND PFAILOK UPON\n# REMOVAL OF THE FAIL INHIBITS.  CALLED BY PIPFAIL WHEN THE PIPA FAIL DISCRETE CHANGES.  IT IS CALLED BY PIPUSE\n# SINCE THE PIPA FAIL PROGRAM ALARM MAY NECESSITATE AN ISS WARNING, AND LIKEWISE BY PIPFREE WHEN THE ALARM DEPARTS\n# AND IT IS CALLED BY IMUZERO3 AND ISSUP AFTER THE FAIL INHIBITS HAVE BEEN REMOVED.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  NONE.\n#\n# ERASABLE INITIALIZATION:\n#\n#\t1) IMODES30 -- SEE IMUMON.\n#\t2) IMODES33 BIT 1 = 0 (LAMP TEST NOT IN PROGRESS).\n#\n# ALARMS:  ISS WARNING.\n#\n# EXIT: VIA Q.\n#\n# OUTPUT: ISS WARNING LAMP SET PROPERLY.\n\nSETISSW\t\tCAF\tOCT15\t\t\t# SET ISS WARNING USING THE FAIL BITS IN\n\t\tMASK\tIMODES30\t\t# BITS 13, 12, AND 10 OF IMODES30 AND THE\n\t\tEXTEND\t\t\t\t# FAILURE INHIBIT BITS IN POSITIONS\n\t\tMP\tBIT10\t\t\t# 4, 3, AND 1.\n\t\tCA\tIMODES30\n\t\tEXTEND\n\t\tROR\tLCHAN\t\t\t# 0 INDICATES FAILURE\n\t\tCOM\n\t\tMASK\tOCT15000\n\t\tCCS\tA\n\t\tTCF\tISSWON\t\t\t# FAILURE.\n\nISSWOFF\t\tCAF\tBIT1\t\t\t# DON'T TURN OFF ISS WARNING IF LAMP TEST\n\t\tMASK\tIMODES33\t\t# IN PROGRESS.\n\t\tCCS\tA\n\t\tTC\tQ\n\n\t\tCS\tBIT1\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\t\t# TURN OFF ISS WARNING.\n\t\tTC\tQ\n\nISSWON\t\tEXTEND\n# Page 158\n\t\tQXCH\tITEMP6\n\t\tTC\tVARALARM\t\t# TELL EVERYONE WHAT CAUSED THE ISS WARNING\n\t\tCAF\tBIT1\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t\t# TURN ON ISS WARNING\n\t\tTC\tITEMP6\n\nCAGESUB\t\tCS\tBIT15+6\t\t\t# SET OUTBITS + INTERNAL FLAGS FOR\n\t\tEXTEND\t\t\t\t# SYSTEM TURN-ON OR CAGE.  DISABLE THE\n\t\tWAND\tCHAN12\t\t\t# ERROR COUNTER AND REMOVE THE IMU DELAY COMP.\n\t\tCAF\tBITS4&5\t\t\t# SEND ZERO AND COARSE.\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\nCAGESUB1\tCS\tDSPTAB +11D\t\t# TURN ON NO ATT LAMP\n\t\tMASK\tOC40010\n\t\tADS\tDSPTAB +11D\n\nCAGESUB2\tCS\tIMODES30\t\t# SET FLAGS TO INDICATE CAGING OR TURN-ON\n\t\tMASK\tOCT75\t\t\t# AND INHIBIT ALL ISS WARNING INFO\n\t\tADS\tIMODES30\n\n\t\tCS\tIMODES33\t\t# DISABLE DAP AUTO AND HOLD MODES\n\t\tMASK\tBIT6\n\t\tADS\tIMODES33\n\n\t\tTC\tQ\n\nIMUFAIL\t\tEQUALS\tSETISSW\nICDUFAIL\tEQUALS\tSETISSW\n\n# Page 159\n# JUMP TABLES AND CONSTANTS.\n\nIFAILJMP\tTCF\tITURNON\t\t\t# CHANNEL 30 DISPATCH.\n\t\tTCF\tIMUFAIL\n\t\tTCF\tICDUFAIL\n\t\tTCF\tIMUCAGE\n30RDMSK\t\tOCT\t76400\t\t\t# (BIT 10 NOT SAMPLED HERE).\n\t\tTCF\tIMUOP\n\nC33JMP\t\tTCF\tPIPFAIL\t\t\t# CHANNEL 33 DISPATCH.\n\t\tTCF\tDNTMFAST\n\t\tTCF\tUPTMFAST\n\n# SUBROUTINE TO SKIP IF LAMP TEST NOT IN PROGRESS.\n\nLAMPTEST\tCS\tIMODES33\t\t# BIT 1 OF IMODES33 = 1 IF LAMP TEST IN\n\t\tMASK\tBIT1\t\t\t# PROGRESS.\n\t\tTCF\tZOPFIN3\n\n33RDMSK\t\tEQUALS\tPRIO16\nOC40010\t\tOCT\t40010\nOCT54\t\tOCT\t54\nOCT75\t\tOCT\t75\nOCT272\t\tOCT\t00272\nBITS7&8\t\tOCT\t300\nOCT1720\t\tOCT\t1720\nOCT740\t\tOCT\t00740\nOCT15000\tEQUALS\tPRIO15\nOCT77000\tOCT\t77000\n-BIT10\t\tOCT\t-1000\n\n90SECS\t\tDEC\t9000\n120MS\t\t=\tOCT14\t\t\t# (DEC12)\nGLOCKOK\t\tEQUALS\tRESUME\n\n# Page 160\n# OPTICS MONITORING AND ZERO ROUTINES\nOPTMON\t\tCA\tOPTMODES\t\t# MONITOR OPTICS INBITS IN CHAN 30 AND 33\n\t\tEXTEND\n\t\tRXOR\tCHAN30\t\t\t# LOOK FOR OCDU FAIL BIT CHANGE\n\t\tMASK\tBIT7\n\t\tTS\tRUPTREG1\t\t# STORE CHANGE BIT\n\t\tCCS\tA\n\t\tTC\tOCDUFTST\t\t# PROCESS OCDUFAIL BIT CHANGE\n\n33OPTMON\tCCS\tOPTIND\t\t\t# BYPASS IF TVC TAKEOVER\n\t\tTCF\t+4\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\tRESUME\n\n\t\tCA\tOPTMODES\t\t# LOOK FOR OPTICS MODE SWITCH CHANGE\n\t\tEXTEND\n\t\tRXOR\tCHAN33\n\t\tMASK\tOCTHIRTY\n\t\tADS\tRUPTREG1\t\t# STORE INBIT CHANGES\n\t\tLXCH\tOPTMODES\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tOPTMODES\t\t# UPDATE OPTMODES TO SHOW BIT CHANGES\n\n\t\tCOM\t\t\t\t# SAMPLE CURRENT SWITCH SETTING\n\t\tMASK\tOCTHIRTY\n\t\tEXTEND\n\t\tBZF\tSETSAMP\t\t\t# MANUAL-SET ZERO IN SWSAMPLE\n\n\t\tMASK\tBIT5\t\t\t# SEE IF CSC\n\t\tCCS\tA\n\t\tTC\t+2\t\t\t# CSC-SET SWSAMPLE POS\n\t\tCAF\tNEGONE\t\t\t# ZOPTICS-SET SWSAMPLE (-1)\nSETSAMP\t\tTS\tSWSAMPLE\t\t# CURRENT OPTICS SWITCH SETTING\n\nPROCESSW\tCCS\tDESOPMOD\t\t# BRANCH ON PREVIOUS SETTING\n\t\tTC\tCSCDES\t\t\t# CSC\n\t\tTC\tMANUDES\t\t\t# MANUAL\n\t\tTC\tZOPTDES\t\t\t# ZERO OPTICS\n# Page 161\nZOPTDES\t\tCCS\tSWSAMPLE\t\t# IS SWITCH STILL AT ZOPTICS\n\t\tTC\tZTOCSC\t\t\t# NOW AT CSC\n\t\tTC\tZTOMAN\t\t\t# MANUAL\n\t\tTC\tZOPFIN1\t\t\t# ZOPTICS-SEE IF ZOPT PROCESSING\t// Should be TC ZOPFINI\n\t\tTC\tSETDESMD\t\t# ZOPT NOT PROCESSING-NO ACTION\n\n\t\tCCS\tZOPTCNT\t\t\t# ZOPT PROCESSING-CHECK COUNTER\n\t\tTC\tSETCNT\t\t\t# 32 SAMPLE NOT FINISHED-SET COUNTER\n\t\tTC\tSETZOEND\t\t# 32 SAMPLE WAIT COMPLETED-SET UP ZOP END\n\nZTOMAN\t\tTC\tZOPFIN1\t\t\t# ZOP TO MANUAL-IS ZOPT DONE\t\t// Should be TC ZOPFINI\n\t\tTC\tSETDESMD\t\t# YES-NORMAL EXIT\n\nZOPALARM\tTC\tALARM\t\t\t# ALARM-SWITCHED ALTERED WHILE ZOPTICS\n\t\tOCT\t00116\n\t\tCAF\tOCT13\t\t\t# PROCESSING-SET RETURN OPTION\n\t\tTS\tWTOPTION\n\n\t\tTC\tCANZOPT\t\t\t# CANCEL ZOPT\n\n\t\tTC\tSETDESMD\n\nZTOCSC\t\tTC\tZOPFIN1\t\t\t# SEE IF ZOPT PROCESSING\t\t// Should be TC ZOPFINI\n\t\tTC\tMANTOCSC +3\t\t# NO-CHECK RETURN TO COARS OPT\n\t\tTC\tALARM\t\t\t# ZOPT PROCESSING-ALARM\n\t\tOCT\t00116\n\t\tTC\tCANZOPT\t\t\t# CANCEL ZOPT\n\t\tTC\tMANTOCSC\t\t# ZERO CNT-LOOK FOR COARS OPT RETURN\n\nCOARSLOK\tCAF\tBIT9\t\t\t# IF COARS OPT SINCE FSTART GO TO L+2\n\t\tTCF\tZOPFIN2\t\t\t# IF NOT GO TO L+1\nZOPFIN1\t\tCAF\tBIT1\t\t\t# SEE IF END ZOPT TASK WORKING\t// Label should be ZOPFINI\n\t\tMASK\tOPTMODES\n\t\tCCS\tA\n\t\tTC\tRESUME\t\t\t# ZOPT TASK WORKING-WAIT ONE SAMPLE PERIOD\n\n\t\tCAF\tBIT3\t\t\t# TEST IF ZOPTICS PROCESSING\nZOPFIN2\t\tMASK\tOPTMODES\t\t# RETURNS TO L+1 PROCESSING AND\nZOPFIN3\t\tCCS\tA\n\t\tINCR\tQ\t\t\t# L+2 IF NOT\n\t\tTC\tQ\n\nCANZOPT\t\tCS\tSIX\t\t\t# CANCEL ZERO OPTICS\n\t\tMASK\tOPTMODES\t\t# ZERO ZOPT PROCESSING BIT-ENABLE OCDUFAIL\n\t\tTS\tOPTMODES\n\t\tCS\tBIT1\t\t\t# MAKE SURE ZERO OCDU IS OFF\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tTC\tQ\n\n# Page 162\nMANUDES\t\tCCS\tSWSAMPLE\t\t# SEE IF SWITCH STILL IN MANUAL MODE\n\t\tTC\tMANTOCSC\t\t# NOW AT CSC\n\t\tTC\tMANTOMAN\t\t# STILL MANUAL\n\t\tCCS\tWTOPTION\t\t# ZOPTICS-LOOK AT ZOPTICS RETURN OPTION\n\t\tTC\t+2\t\t\t# 5 SEC RETURN GOOD-CONTINUE ZOPTICS\n\t\tTC\tOPTZERO\t\t\t# ZOPTICS MUST START ANEW\n\n\t\tTC\tINITZOPT\t\t# SHOW ZERO OPTICS PROCESSING\n\t\tTC\tSETDESMD\t\t# NORMAL EXIT\n\nMANTOMAN\tCCS\tWTOPTION\t\t# DECREMENT RETURN OPTION TIME\n\t\tTS\tWTOPTION\n\t\tTC\tSETDESMD\n\nMANTOCSC\tCAF\tZERO\t\t\t# CANCEL ZOPT RETURN OPTION IF SET\n\t\tTS\tWTOPTION\n\t\tTS\tZOPTCNT\n\n\t\tTC\tCOARSLOK\t\t# CHECK FOR COARS OPT RETURN\n\t\tTC\tSETDESMD\t\t# NO COARS TASK-NO ACTION\n\n\t\tCAF\tONE\t\t\t# SET COARS OPT WORKING\n\t\tTS\tOPTIND\n\t\tCAF\tBIT2\t\t\t# ENABLE OPTICS CDU ERROR CNTS\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tTC\tSETDESMD\n\nCSCDES\t\tCCS\tSWSAMPLE\t\t# SEE IF SWITCH STILL AT CSC\n\t\tTC\tSETDESMD\t\t# STILL AT CSC\n\t\tTC\tCSCTOMAN\t\t# MANUAL\nCSCTOZOP\tCAF\tOCT40\t\t\t# ZOPTICS-INITIALIZE FOR ZOPT\n\t\tTS\tZOPTCNT\n\t\tTC\tINITZOPT\n\nCSCTOMAN\tCCS\tOPTIND\t\t\t# SEE IF COARS WORKING\n\t\tTC\tCANCOARS\t\t# COARS WORKING-SWITCH NOT CSC-KILL COARS\n\t\tTC\tCANCOARS\n\t\tTC\t+1\t\t\t# NO COARS-NORMAL EXIT\n\t\tTC\tSETDESMD\n# Page 163\nCANCOARS\tCA\tNEGONE\n\t\tTS\tOPTIND\t\t\t# SET OPTIND (-1) TO SHOW NOT WORKING\n\t\tCS\tBIT2\t\t\t# DISABLE OCDU ERR CNTS\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tCS\tOPTMODES\t\t# SET RETURN-TO-COARS BIT\n\t\tMASK\tBIT9\n\t\tADS\tOPTMODES\n\n\t\tTC\tSETDESMD\nOPTZERO\t\tTC\tINITZOPT\t\t# INITIALIZE ZERO OPTICS\n\n\t\tCA\tOCT40\t\t\t# SET UP 32 SAMPLE WAIT\nSETCNT\t\tTS\tZOPTCNT\nSETDESMD\tCA\tSWSAMPLE\t\t# SET CURRENT SWITCH INDICATION-RESUME\n\t\tTS\tDESOPMOD\n\t\tTC\tRESUME\n\nSETZOEND\tCAF\tBIT1\t\t\t# SEND ZERO OPTICS CDU\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\t\tCA\t200MS\t\t\t# HOLD ZERO CDU FOR 200 MS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tOPTMODES\n\t\t2CADR\tENDZOPT\n\n\t\tCS\tOPTMODES\t\t# SHOW ZOPTICS TASK WORKING\n\t\tMASK\tBIT1\n\t\tADS\tOPTMODES\n\n\t\tTC\tSETDESMD\n\nENDZOPT\t\tTC\tZEROPCDU\t\t# ZERO OCDU COUNTERS\n\t\tCS\tBIT1\t\t\t# TURN OFF ZERO OCDU\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tCAF\t200MS\t\t\t# DELAY 200MS FOR CDUS TO RESYNCHRONIZE\n\t\tTC\tVARDELAY\n\n\t\tCS\tOPTMODES\t\t# SHOW ZOPTICS SINCE LAST FRESH START\n\t\tMASK\tBIT10\t\t\t#\tOR RESTART\n\t\tADS\tOPTMODES\n\n\t\tCS\tSEVEN\t\t\t# ENABLE OCDUFAIL-SHOW OPTICS COMPLETE\n\t\tMASK\tOPTMODES\n\t\tTS\tOPTMODES\n\n\t\tTC\tOCDUFTST\t\t# CHECK OCDU FAIL BIT AFTER ENABLE.\n# Page 164\n\t\tTC\tTASKOVER\n\nZEROPCDU\tCAF\tZERO\n\t\tTS\tCDUS\t\t\t# ZERO IN CDUS, -20 IN CDUT\n\t\tTS\tZONE\t\t\t# INITIALIZE SHAFT MONITOR ZONE\n\t\tCS\t20DEGS\n\t\tTS\tCDUT\n\t\tTC\tQ\n\nINITZOPT\tCAF\tZERO\t\t\t# INITIALIZE ZOPTICS-INHIBIT OCDUFAIL\n\t\tTS\tWTOPTION\t\t# AND SHOW OPTICS PROCESSING\n\t\tCS\tOPTMODES\t\t# SET ZERO OPTICS PROCESSING\n\t\tMASK\tSIX\t\t\t#\tOPTICS CDU FAIL INHIBITED\n\t\tADS\tOPTMODES\n\t\tTC\tQ\n\n# Page 165\nOCDUFTST\tCAF\tBIT7\t\t\t# SEE IF OCDUFAIL ON OR OFF\n\t\tEXTEND\n\t\tRAND\tCHAN30\n\t\tCCS\tA\n\t\tTCF\tOPFAILOF\t\t# OCDUFAIL LIGHT OFF\n\n\t\tCAF\tBIT2\t\t\t# OCDUFAIL LIGHT ON UNLESS INHIBITED\n\t\tMASK\tOPTMODES\n\t\tCCS\tA\n\t\tTC\tQ\t\t\t# OCDUFAIL INHIBITED\n\nOPFAILON\tCAF\tBIT8\t\t\t# ON BIT\n\t\tAD\tDSPTAB\t+11D\n\t\tMASK\tBIT8\nSETOFF\t\tEXTEND\n\t\tBZF\tTCQ\t\t\t# NO CHANGE\n\n\t\tTS\tL\n\t\tCA\tDSPTAB\t+11D\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tMASK\tPOSMAX\n\t\tAD\tBIT15\t\t\t# SHOW ACTION WANTED\n\t\tTS\tDSPTAB\t+11D\n\t\tTC\tQ\n\nOPFAILOF\tCAF\tBIT1\t\t\t# DON'T TURN OFF IF LAMP TEST\n\t\tMASK\tIMODES33\n\t\tCCS\tA\n\t\tTC\tQ\t\t\t# LAMP TEST IN PROGRESS\n\n\t\tCAF\tBIT8\t\t\t# TURN OFF OCDUFAIL LIGHT\n\t\tMASK\tDSPTAB\t+11D\n\t\tTCF\tSETOFF\n\nOCT13\t\t=\tELEVEN\nOCTHIRTY\tEQUALS\tBITS4&5\n20DEGS\t\tDEC\t7199\nOCT40\t\tEQUALS\tBIT6\n200MS\t\tEQUALS\tOCT24\n\n# Page 166\n# OPTICS CDU DRIVING PROGRAM\n\n\t\tBANK\t10\n\t\tSETLOC\tOPTDRV\n\t\tBANK\n\t\tCOUNT*\t$$/SXT\n\n# SHAFT STOP MONITOR-ZONE UPDATE\n\nOPTDRIVE\tCA\tCDUS\t\t\t# GRAB OPTIC SHAFT CDU\n\t\tTS\tL\n\t\tCCS\tA\t\t\t# GET ABS(CDUS)\n\t\tAD\t13,14,15\n\t\tTCF\t+2\t\t\t# ABS(CDUS) - 45 DEG\n\t\tTCF\t-2\n\t\tEXTEND\n\t\tBZMF\tOZONE\t\t\t# LESS THAN 45 DEG-SET ZONE 0\n\t\tCA\tZONE\t\t\t# IF ZONE ZERO, CHANGE TO + OR - OTHERWISE\n\t\tEXTEND\t\t\t\t# DON'T MESS WITH ZONE\n\t\tBZF\t+2\n\t\tTCF\tCONTDRVE\t\t# JUST CONTINUE\n\t\tXCH\tL\t\t\t# GREATER THAN 45 DEG-SET ZONE TO SIGN CDU\n\t\tTCF\tOZONE\t+1\nOZONE\t\tCAF\tZERO\t\t\t# ABS(CDUS) LESS THAN 90 DEG-ZONE ZERO\n\t\tTS\tZONE\n\t\tCOUNT*\t$$/T4RUPT\nCONTDRVE\tCCS\tOPTIND\n\t\tTC\t+4\t\t\t# WORK COARS OPTICS\n\t\tTC\t+3\t\t\t# WORK COARS OPTICS\n\t\tTC\tRESUME\t\t\t# NO OPT\n\t\tTC\tRESUME\t\t\t# NO OPT\n\n\t\tCA\tSWSAMPLE\t\t# SEE IF SWITCH AT CMC\n\t\tEXTEND\n\t\tBZMF\tRESUME\t\t\t# ZERO (-1)\tMANUAL (+0)\n\n\t\tCAF\tBIT10\t\t\t# SEE IF OCDUS ZEROED SINCE LAST FSTART\n\t\tMASK\tOPTMODES\n\t\tCCS\tA\n\t\tTC\t+3\n\t\tTC\tALARM\t\t\t# OPTICS NOT ZEROED\n\t\tOCT\t00120\n\n\t\tCA\tBIT2\t\t\t# SEE IF ERR CNTS ENABLED\n\t\tEXTEND\n\t\tRAND\tCHAN12\n\t\tEXTEND\n\t\tBZF\tSETBIT\t\t\t# CNTS NOT ENABLED-DO IT AND RESUME\n\n\t\tCAF\tONE\t\t\t# INITIALIZE OPTIND\n# Page 167\nOPT2\t\tTS\tOPTIND\n\t\tEXTEND\n\t\tBZF\tTRUNCMD\t\t\t# CHECK TRUNION COMMAND\n\nGETOPCMD\tINDEX\tOPTIND\n\t\tCA\tDESOPTT\t\t\t# PICK UP DESIRED OPT ANGLE\n\t\tEXTEND\n\t\tINDEX\tOPTIND\n\t\tMSU\tCDUT\t\t\t# GET DIFFERENCE\n\t\tEXTEND\n\t\tMP\tBIT13\n\t\tXCH\tL\n\t\tDOUBLE\n\t\tTS\tITEMP1\n\t\tTCF\t+2\t\t\t# NO OVFL\n\n\t\tADS\tL\t\t\t# WITH OVFL\nSTORCMD\t\tINDEX\tOPTIND\n\t\tLXCH\tCOMMANDO\t\t# STORE COMMAND\n\t\tCCS\tOPTIND\n\t\tTCF\tOPT2\t\t\t# GET NEXT COMMAND\n\n\t\tTS\tITEMP1\t\t\t# INITIALIZE SEND INDICATOR TO ZERO\n\t\tCOUNT*\t$$/SXT\n\n# SHAFT STOP AVOIDANCE\n\n\t\tCCS\tCDUS\t\t\t# IF CDUS GREATER THAN + OR - 90 DEG CHECK\n\t\tAD\tNEG1/2\t\t\t# FOR POSSIBLE STOP PROBLEM\n\t\tTCF\t+2\n\t\tTCF\t-2\n\t\tEXTEND\n\t\tBZMF\tCMDSETUP\t\t# CDU LESS THAN 90 DEG, NO PROBLEMS\n\n\t\tCA\tZONE\n\t\tEXTEND\n\t\tBZF\tCMDSETUP\t\t# ZONE=3, NORMAL COMMAND\n\t\tMASK\tBIT15\t\t\t# GRAB SIGN OF ZONE\n\t\tTS\tL\n\t\tCA\tCOMMANDO +1\n\t\tMASK\tBIT15\t\t\t# GRAB SIGN OF SHAFT COMMAND\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tCCS\tA\n\t\tTCF\tCMDSETUP\t\t# SIGN ZONE NOT EQUAL TO SIGN COMMAND\n\t\tCCS\tDESOPTS\t\t\t# SEE IF DESOPTS BETWEEN -90 AND +90\n\t\tAD\tNEG1/2\n\t\tTCF\t+2\t\t\t# ABS(DESOPTS) - 90 DEG\n\t\tTCF\t-2\n\t\tEXTEND\n# Page 168\n\t\tBZMF\t+2\t\t\t# DESOPTS IN FIRST OR FOURTH QUAD\n\t\tTCF\tCMDSETUP\n\t\tCS\tCOMMANDO +1\t\t# REVERSE REGULAR COMMAND\n\t\tTS\tCOMMANDO +1\n\n\t\tCOUNT*\t$$/T4RPT\n\nCMDSETUP\tCAF\tONE\t\t\t# SET OPTIND\n\t\tTS\tOPTIND\n\t\tINDEX\tA\n\t\tCCS\tCOMMANDO\t\t# GET SIGN OF COMMAND\n\t\tTC\tPOSOPCMD\n\t\tTC\tNEXTOPT\t+1\t\t# ZERO COMMAND-SKIP SEND INDICATOR\n\t\tTC\tNEGOPCMD\n\t\tTC\tNEXTOPT\t+1\t\t# ZERO COMMAND\n\nTRUNCMD\t\tCS\tCDUT\t\t\t# IF COMMAND GREATER THAN 45 DEG-COMMAND\n\t\tAD\tDESOPTT\t\t\t# 45 DEG\n\t\tTS\tQ\n\t\tTC\tGETOPCMD\t\t# LESS THAN 45 DEG-NORMAL OPERATION\n\n\t\tCCS\tA\t\t\t# GREATER THAN 45 DEG-USE OPSMAX WITH\n\t\tCA\tPOSMAX\t\t\t# CORRECT SIGN\n\t\tTC\t+2\n\t\tCS\tPOSMAX\n\t\tTS\tL\n\t\tTC\tSTORCMD\nPOSOPCMD\tAD\tMAXPLS1\n\t\tEXTEND\n\t\tBZMF\tDELOPCMD\t\t# COMMAND LESS THAN MAX PULSE\n\t\tCS\tMAXPLS\t\t\t# GREATER THAN MAX PULSE-USE MAX PULSE\n\nNEXTOPT\t\tINCR\tITEMP1\t\t\t# SET SEND INDICATOR\n\t\tAD\tNEG0\t\t\t# MAKE SURE ZERO COMMAND IS -ZERO\n\t\tINDEX\tOPTIND\n\t\tTS\tCDUTCMD\t\t\t# STORE PULSE IN SEND REG\n\n\t\tCCS\tOPTIND\n\t\tTC\tCMDSETUP +1\t\t# GET NEXT OPT\n\n\t\tCCS\tITEMP1\t\t\t# ARE ANY PULSES TO GO\n\t\tTCF\tSENDOCMD\t\t# YES-SEND EM\n\t\tTC\tRESUME\t\t\t# NO\n\nNEGOPCMD\tAD\tMAXPLS1\n\t\tEXTEND\n\t\tBZMF\tDELOPCMD\t\t# LESS THAN MAX PULSE\n\t\tCA\tMAXPLS\t\t\t# MAX PULSES\n\t\tTCF\tNEXTOPT\n# Page 169\nDELOPCMD\tINDEX\tOPTIND\n\t\tXCH\tCOMMANDO\t\t# SET UP SMALL COMMAND\n\t\tTCF\tNEXTOPT\n\nSENDOCMD\tCAF\t11,12\t\t\t# SEND OCDU DRIVE COMMANDS\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tTC\tRESUME\n\nSETBIT\t\tCAF\tBIT2\t\t\t# ENABLE OCDU ERR CNTS\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\t\tTC\tRESUME\t\t\t# START COARS NEXT TIME AROUND\n\nMAXPLS\t\tDEC\t-165\t\t\t# WAS -80\nMAXPLS1\t\tDEC\t-164\t\t\t# WAS -79\n11,12\t\tEQUALS\tPRIO6\n\n"
  },
  {
    "path": "Comanche055/TAGS_FOR_RELATIVE_SETLOC.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTAGS_FOR_RELATIVE_SETLOC.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Mod history:\t2009-05-05 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrected R32 -> R31.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 27\n# TAGS FOR RELATIVE SETLOC AND BLANK BANK CARDS\n\nFIXED\t\tMEMORY\t120000 - 167777\n\t\tCOUNT\tBANKSUM\n\n# MODULE 1 CONTAINS BANKS 0 THROUGH 5\n\n\t\tBLOCK\t02\nFFTAG1\t\tEQUALS\nFFTAG2\t\tEQUALS\nFFTAG3\t\tEQUALS\nFFTAG4\t\tEQUALS\nFFTAG7\t\tEQUALS\nFFTAG8\t\tEQUALS\nFFTAG9\t\tEQUALS\nFFTAG10\t\tEQUALS\nFFTAG12\t\tEQUALS\nP30SUBS\t\tEQUALS\nSTOPRAT\t\tEQUALS\nP23S\t\tEQUALS\n\t\tBNKSUM\t02\n\n\t\tBLOCK\t03\nFFTAG5\t\tEQUALS\nFFTAG6\t\tEQUALS\nDAPS9\t\tEQUALS\nFFTAG13\t\tEQUALS\n\t\tBNKSUM\t03\n\n\t\tBANK\t00\nDLAYJOB\t\tEQUALS\n\t\tBNKSUM\t00\n\n\t\tBANK\t01\nRESTART\t\tEQUALS\n\t\tBNKSUM\t01\n\n\t\tBANK\t4\nVERB37\t\tEQUALS\nCONICS1\t\tEQUALS\nPINBALL4\tEQUALS\nCSI/CDH1\tEQUALS\nINTPRET2\tEQUALS\nIMUCAL1\t\tEQUALS\n\n# Page 28\n\nSTBLEORB\tEQUALS\nE/PROG\t\tEQUALS\nMIDDGIM\t\tEQUALS\n\t\tBNKSUM\t04\n\n\t\tBANK\t5\nFRANDRES\tEQUALS\nDOWNTELM\tEQUALS\nDAPMASS\t\tEQUALS\nCDHTAG\t\tEQUALS\n\t\tBNKSUM\t05\n\n# MODULE 2 CONTAINS BANKS 6 THROUGH 13\n\n\t\tBANK\t6\nIMUCOMP\t\tEQUALS\nT4RUP\t\tEQUALS\nIMUCAL2\t\tEQUALS\nCSIPROG\t\tEQUALS\n\t\tBNKSUM\t06\n\n\t\tBANK\t7\nSXTMARKE\tEQUALS\nR02\t\tEQUALS\nMODESW\t\tEQUALS\nXANG\t\tEQUALS\nKEYRUPT\t\tEQUALS\nCSIPROG6\tEQUALS\n\t\tBNKSUM\t07\n\n\t\tBANK\t10\nDISPLAYS\tEQUALS\nPHASETAB\tEQUALS\nCOMGEOM2\tEQUALS\nSXTMARK1\tEQUALS\nP60S4\t\tEQUALS\nOPTDRV\t\tEQUALS\nCSIPROG8\tEQUALS\n\t\tBNKSUM\t10\n\n\t\tBANK\t11\nORBITAL\t\tEQUALS\nORBITAL1\tEQUALS\t\t\t# CONSTANTS\n\n# Page 29\n\nINTVEL\t\tEQUALS\nS52/2\t\tEQUALS\nCSIPROG5\tEQUALS\nINTINIT1\tEQUALS\n\t\tBNKSUM\t11\n\n\t\tBANK\t12\nCONICS\t\tEQUALS\nCSIPROG2\tEQUALS\nCSI/CDH2\tEQUALS\nMODCHG2\t\tEQUALS\n\t\tBNKSUM\t12\n\n\t\tBANK\t13\nP76LOC\t\tEQUALS\nLATLONG\t\tEQUALS\nINTINIT\t\tEQUALS\nSR52/1\t\tEQUALS\nORBITAL2\tEQUALS\nCDHTAGS\t\tEQUALS\nE/PROG1\t\tEQUALS\nMODCHG3\t\tEQUALS\n\t\tBNKSUM\t13\n\n# SPACER\n\n# MODULE 3 CONTAINS BANKS 14 THROUGH 21\n\n\t\tBANK \t14\nSTARTAB\t\tEQUALS\nRT53\t\tEQUALS\nP50S1\t\tEQUALS\nMEASINC2\tEQUALS\nCSI/CDH3\tEQUALS\n\t\tBNKSUM\t14\n\n\t\tBANK\t15\nP50S\t\tEQUALS\nETRYDAP\t\tEQUALS\nS52/3\t\tEQUALS\n\t\tBNKSUM\t15\n\n\t\tBANK\t16\nP40S1\t\tEQUALS\n\n# Page 30\n\nDAPROLL\t\tEQUALS\nP50S2\t\tEQUALS\nP23S1\t\tEQUALS\nRTE2\t\tEQUALS\n\t\tBNKSUM\t16\n\n\t\tBANK\t17\nDAPS4\t\tEQUALS\nDAPS5\t\tEQUALS\nDAPS7\t\tEQUALS\nP50S3\t\tEQUALS\n\t\tBNKSUM\t17\n\n\t\tBANK\t20\nDAPS6\t\tEQUALS\nDAPS1\t\tEQUALS\nDAPS2\t\tEQUALS\nMANUSTUF\tEQUALS\nR36CM\t\tEQUALS\nVAC5LOC\t\tEQUALS\n\t\tBNKSUM\t20\n\n\t\tBANK\t21\nDAPS3\t\tEQUALS\nMYSUBS\t\tEQUALS\nKALCMON3\tEQUALS\n\t\tBNKSUM\t21\n\n# MODULE 4 CONTAINS BANKS 22 THROUGH 27\n\n\t\tBANK\t22\nRTBCODES\tEQUALS\nRTBCODE1\tEQUALS\nDAPS8\t\tEQUALS\nAPOPERI\t\tEQUALS\nP40S5\t\tEQUALS\nKALCMON2\tEQUALS\nKALCMON1\tEQUALS\nCSIPROG3\tEQUALS\n\t\tBNKSUM\t22\n\n# Page 31\n\n\t\tBANK\t23\nP20S2\t\tEQUALS\nINFLIGHT\tEQUALS\nCOMGEOM1\tEQUALS\nPOWFLITE\tEQUALS\nPOWFLIT1\tEQUALS\nRENDGUID\tEQUALS\nPOWFLIT2\tEQUALS\nR30LOC\t\tEQUALS\nP11FOUR\t\tEQUALS\nCSIPROG4\tEQUALS\n\t\tBNKSUM\t23\n\n\t\tBANK\t24\nLOADDAP\t\tEQUALS\nP40S\t\tEQUALS\nCSIPROG7\tEQUALS\n\t\tBNKSUM\t24\n\n\t\tBANK\t25\nREENTRY\t\tEQUALS\nCDHTAG1\t\tEQUALS\n\t\tBNKSUM\t25\n\n\t\tBANK\t26\nINTPRET1\tEQUALS\nREENTRY1\tEQUALS\nP60S\t\tEQUALS\nP60S1\t\tEQUALS\nP60S2\t\tEQUALS\nP60S3\t\tEQUALS\nPLANTIN\t\tEQUALS\t\t\t# LUNAR ROT\nEPHEM\t\tEQUALS\nP05P06\t\tEQUALS\n26P50S\t\tEQUALS\n\t\tBNKSUM\t26\n\n\t\tBANK\t27\nTOF-FF\t\tEQUALS\nTOF-FF1\t\tEQUALS\nMANUVER\t\tEQUALS\nMANUVER1\tEQUALS\n\n# Page 32\n\nVECPT\t\tEQUALS\nUPDATE1\t\tEQUALS\nUPDATE2\t\tEQUALS\nR22S1\t\tEQUALS\nP60S5\t\tEQUALS\nP40S2\t\tEQUALS\n\t\tBNKSUM\t27\n\n# MODULE 5 CONTAINS BANKS 30 THROUGH 35\n\n\t\tBANK\t30\nIMUSUPER\tEQUALS\nLOWSUPER\tEQUALS\nFCSTART\t\tEQUALS\t\t\t# STANDARD LOCATION FOR THIS. (FOR EXTV8)\nLOPC\t\tEQUALS\nP20S1\t\tEQUALS\nP20S6\t\tEQUALS\nP40S3\t\tEQUALS\nR35A\t\tEQUALS\n\t\tBNKSUM\t30\n\n\t\tBANK\t31\nR35\t\tEQUALS\nRT23\t\tEQUALS\nP30S1A\t\tEQUALS\nR34\t\tEQUALS\nCDHTAG2\t\tEQUALS\nCSIPROG9\tEQUALS\nR31\t\tEQUALS\nP22S\t\tEQUALS\nRTE3\t\tEQUALS\n\t\tBNKSUM\t31\n\n\t\tBANK\t32\nMSGSCAN1\tEQUALS\nRTE\t\tEQUALS\nDELRSPL1\tEQUALS\nIMUCAL3\t\tEQUALS\n\t\tBNKSUM\t32\n\n\t\tBANK\t33\nTESTLEAD\tEQUALS\n\n# Page 33\n\nIMUCAL\t\tEQUALS\n\t\tBNKSUM\t33\n\n\t\tBANK\t34\nP11ONE\t\tEQUALS\nP20S3\t\tEQUALS\nP20S4\t\tEQUALS\nRTECON\t\tEQUALS\n\t\tBNKSUM\t34\n\n\t\tBANK\t35\nRTECON1\t\tEQUALS\nCSI/CDH\t\tEQUALS\nP30S1\t\tEQUALS\nP30S\t\tEQUALS\nP17S1\t\tEQUALS\nMEASINC3\tEQUALS\nINTINIT2\tEQUALS\n\t\tBNKSUM\t35\n\n# MODULE 6 CONTAINS BANKS 36 THROUGH 43\n\n\t\tBANK\t36\nMEASINC\t\tEQUALS\nMEASINC1\tEQUALS\nP17S\t\tEQUALS\nRTE1\t\tEQUALS\nS3435LOC\tEQUALS\n\t\tBNKSUM\t36\n\n\t\tBANK\t37\nP20S\t\tEQUALS\nBODYATT\t\tEQUALS\nRENDEZ\t\tEQUALS\nSERVICES\tEQUALS\nP11TWO\t\tEQUALS\nCDHTAG3\t\tEQUALS\n\t\tBNKSUM\t37\n\n\t\tBANK\t40\nPINSUPER\tEQUALS\n\n# Page 34\n\nSELFSUPR\tEQUALS\nPINBALL1\tEQUALS\nR36CM1\t\tEQUALS\n\t\tBNKSUM\t40\n\n\t\tBANK\t41\nPINBALL2\tEQUALS\nR36LM\t\tEQUALS\n\t\tBNKSUM\t41\n\n\t\tBANK\t42\nSBAND\t\tEQUALS\nPINBALL3\tEQUALS\nEXTVBS\t\tEQUALS\nR36LM1\t\tEQUALS\n\t\tBNKSUM\t42\n\n\t\tBANK\t43\nSELFCHEC\tEQUALS\nEXTVERBS\tEQUALS\n\t\tBNKSUM\t43\n\nHI6ZEROS\tEQUALS\tZEROVECS\t\t# ZERO VECTOR ALWAYS IN HIGH MEMORY\nLO6ZEROS\tEQUALS\tZEROVEC\t\t\t# ZERO VECTOR ALWAYS IN LOW MEMORY\nHIDPHALF\tEQUALS\tUNITX\nLODPHALF\tEQUALS\tXUNIT\nHIDP1/4\t\tEQUALS\tDP1/4TH\nLODP1/4\t\tEQUALS\tD1/4\t\t\t# 2DEC .25\nHIUNITX\t\tEQUALS\tUNITX\nHIUNITY\t\tEQUALS\tUNITY\nHIUNITZ\t\tEQUALS\tUNITZ\nLOUNITX\t\tEQUALS\tXUNIT\t\t\t# 2DEC .5\nLOUNITY\t\tEQUALS\tYUNIT\t\t\t# 2DEC 0\nLOUNITZ\t\tEQUALS\tZUNIT\t\t\t# 2DEC 0\n3/4LOWDP\tEQUALS\t3/4\t\t\t# 2DEC 3.0 B-2\n\t\tSBANK=\tLOWSUPER\n\n# ROPE SPECIFIC ASSIGNS OBVIATING NEED TO CHECK COMPUTER FLAG IN DETVRUZVING INTEGRATION AREA ENTRIES\n\nOTHPREC\t\tEQUALS\tLEMPREC\nATOPOTH\t\tEQUALS\tATOPLEM\nATOPTHIS\tEQUALS\tATOPCSM\nMOONTHIS\tEQUALS\tCMOONFLG\n\n# Page 35\n\nMOONOTH\t\tEQUALS\tLMOONFLG\nMOVATHIS\tEQUALS\tMOVEACSM\nSTATEST\t\tEQUALS\tV83CALL\t\t\t# * TEMPORARY\nTHISPREC\tEQUALS\tCSMPREC\nTHISAXIS\t=\tUNITX\nERASID\t\tEQUALS\tLOW10\t\t\t# DOWNLINK ERASABLE DUMP ID\nDELAYNUM\tEQUALS\tTHREE\n\n#***************************************************************************************************************\n\n#   THE FOLLOWING ECADRS ARE DEFINED TO FACILITATE EBANK SWITCHING.  THEY ALSO MAKE IT EASIER FOR\n# ERASABLE CONTROL TO REARRANGE ERASABLE MEMORY WITHOUT DISRUPTING THE PROGRAMS WHICH SET EBANKS.\n# PRIOR TO ROPE RELEASE FIXED MEMORY CAN BE SAVED BY SETTING EACH EBXXXX =EBANKX (X=4,5,6,7).EBANKX OF COURSE\n# WILL BE THE BANK WHERE THE ERASABLES REFERENCED IN EBXXXX WILL BE STORED.\n\n\t\tBANK\t7\n\t\tEBANK=\tMARKDOWN\nEBMARKDO\tECADR\tMARKDOWN\n\t\tEBANK=\tMRKBUF1\nEBMRKBUF\tECADR\tMRKBUF1\n\n\t\tBANK\t24\n\t\tEBANK=\tDVCNTR\nEBDVCNTR\tECADR\tDVCNTR\n\t\tEBANK=\tP40TMP\nEBP40TMP\tECADR\tP40TMP\n\n\t\tBANK\t34\n\t\tEBANK=\tDVCNTR\nEBDVCNT\t\tECADR\tDVCNTR\n\t\tEBANK=\tQPLACES\nEBQPLACE\tECADR\tQPLACES\n\n\t\tBANK\t37\n\t\tEBANK=\tRN1\nEBRN1\t\tECADR\tRN1\n\n#***************************************************************************************************************\n\n# Page 36\n\n# *** END OF MAIN PROGRAM ***\n"
  },
  {
    "path": "Comanche055/TIME_OF_FREE_FALL.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTIME_OF_FREE_FALL.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1373-1388\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Colossus249/ file of the same\n#\t\t\t\tname, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 1373\n# \tTHE TFF SUBROUTINES MAY BE USED IN EITHER EARTH OR MOON CENTERED COORDINATES.  THE TFF ROUTINES NEVER\n# KNOW WHICH ORIGIN APPLIES.  IT IS THE USER WHO KNOWS, AND WHO SUPPLIES RONE, VONE AND 1/SQRT(MU) AT THE\n# APPROPRIATE SCALE LEVEL FOR THE PROPER PRIMARY BODY.\n\n#\tEARTH ORIGIN\tPOSITION\t-29\tMETERS\n#\t\t\tVELOCITY\t-7\tMETERS/CENTISECOND\n#\t\t\t1/SQRT(MU)\t+17\tSQRT(CS SQ/METERS CUBED)\n\n#\tMOON ORIGIN\tPOSITION\t-27\tMETERS\n#\t\t\tVELOCITY\t-5\tMETERS/CENTISECONDS\n#\t\t\t1/SQRT(MU)\t+14\tSQRT(CS SQ/METERS CUBED)\n\n# ALL DATA PROVIDED TO AND RECEIVED FROM ANY TFF SUBROUTINE WILL BE AT ONE OF THE LEVELS ABOVE.  IN ALL CASES,\n# THE FREE FALL TIME IS RETURNED IN CENTISECONDS AT (-28).  PROGRAM TFF/CONIC WILL GENERATE VONE/RTMU AND\n# LEAVE IT IN VONE' AT (+10) IF EARTH ORIGIN AND (+9) IF MOON ORIGIN.\n# \tTHE USER MUST STORE THE STATE VECTOR IN RONE, VONE AND MU IN THE FORM 1/SQRT(MU) IN TFF/RTMU\n# AT THE PROPER SCALE BEFORE CALLING TFF/CONIC.  SINCE RONE, VONE ARE IN THE EXTENDED VERB STORAGE AREA,\n# THE USER MUST ALSO LOCK OUT THE EXTENDED VERBS, AND RELEASE THEM WHEN FINISHED.\n# \tPROGRAMS CALC/TFF AND CALC/TPER ASSUME THAT THE TERMINAL RADIUS IS LESS THAN THE PRESENT\n# RADIUS.  THIS RESTRICTION CAN BE REMOVED BY A 15 W CODING CHANGE, BUT AT PRESENT IT IS NOT DEEMED NECESSARY.\n#\n# \tTHE FOLLOWING ERASABLE QUANTITIES ARE USED BY THE TFF ROUTINES, AND ARE LOCATED IN THE PUSH LIST.\n#\n\n#\t\t\t\tBELOW\tE:  IS USED FOR EARTH ORIGIN SCALE\n#\t\t\t\t\tM:  IS USED FOR MOON  ORIGIN SCALE\n\n#TFFSW\t\t=\t119D\t# BIT1\t0 = CALCTFF\t\t1 = CALCTPER\nTFFDELQ\t\t=\t10D\t#\tQ2-Q1\t\t\tE: (-16)  M: (-15)\nRMAG1\t\t=\t12D\t#\tABVAL(RN) M\t\tE: (-29)  M: (-27)\n#RPER\t\t=\t14D\t#\tPERIGEE RADIUS M\tE: (-29)  M: (-27)\nTFFQ1\t\t=\t14D\t#\tR.V / SQRT(MUE)\t\tE: (-16)  M: (-15)\n#SDELF/2\t\t\t#\tSIN(THETA) /2\nCDELF/2\t\t=\t14D\t#\tCOS(THETA) /2\n#RAPO\t\t=\t16D\t#\tAPOGEE RADIUS M\t\tE: (-29)  M: (-27)\nNRTERM\t\t=\t16D\t#\tTERMINAL RADIUS M\tE: (-29+NR)\n\t\t\t\t#\t\t\t\tM: (-27+NR)\nRTERM\t\t=\t18D\t#\tTERMINAL RADIUS M\tE: (-29)  M: (-27)\nTFFVSQ\t\t=\t20D\t#\t-(V SQUARED/MU)       1/M  E: (20)   M: (18)\nTFF1/ALF\t=\t22D\t#\tSEMI MAJ AXIS  M\tE: (-22-2 NA)\n\t\t\t\t#\t\t\t\tM: (-20-2 NA)\nTFFRTALF\t=\t24D\t#\tSQRT(ALFA)\tE:(10+NA) M: (9+NA)\nTFFALFA\t\t=\t26D\t#\tALFA  1/M\tE:(26-NR) M: (24-NR)\nTFFNP\t\t=\t28D\t#\tSEMI LATUS RECTUM\tM  E: (-38+2 NR)\n\t\t\t\t#\t\t\t\t   M: (-36+2 NR)\nTFF/RTMU\t=\t30D\t#\t1/SQRT(MU)\t\tE: (17)   M: (14)\nNRMAG\t\t=\t32D\t#\tPRESENT RADIUS  M\tE: (-29+NR)\n\t\t\t\t#\t\t\t\tM: (-27+NR)\nTFFX\t\t=\t34D     #\nTFFTEM\t\t=\t36D\t#\tTEMPORARY\n# Page 1374\n#\t\tREGISTERS S1, S2 ARE UNTOUCHED BY ANY TFF SUBROUTINE\n#\t\tINDEX REGISTERS X1, X2 ARE USED BY ALL TFF SUBROUTINES.  THEY ARE ESTAB-\n#\t\tLISHED IN TFF/CONIC AND MUST BE PRESERVED BETWEEN CALLS TO SUBSEQUENT\n#\t\tSUBROUTINES.\n#\t\t-NR\t\t\t\tC(X1) = NORM COUNT OF RMAG\n#\t\t-NA\t\t\t\tC(X2)= NORM COUNT OF SQRT(ABS(ALFA))\n\n# Page 1375\n# SUBROUTINE NAME:\tTFFCONIC\t\t\t\t\t\tDATE: 01.29.67\n# MOD NO: 0\t\t\t\t\t\t\t\t\tLOG SECTION: TIME OF FREE FALL\n# MOD BY: RR BAIRNSFATHER\n# MOD NO: 1\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 11 APR 67\n# MOD NO: 2\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 NOV 67\t\tADD MOON MU.\n# MOD NO: 3\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 MAR 68\t\tACCEPT DIFFERENT EARTH/MOON SCALES\n# FUNCTIONAL DESCRIPTION:\tTHIS SUBROUTINE IS CALLED TO COMPUTE THOSE CONIC PARAMETERS REQUIRED BY THE TFF\n#\tSUBROUTINES AND TO ESTABLISH THEM IN THE PUSH LIST AREA.  THE PARAMETERS ARE LISTED UNDER OUTPUT.\n#\tTHE EQUATIONS ARE:\n#\t\t-   -  -\n#\t\tH = RN*VN\t\t\tANGULAR MOMENTUM\n#\t\t      - -\n#\t\tLCP = H.H / MU\t\t\tSEMI LATUS RECTUM\n#\t\t              -  -\n#\t\tALFA = 2/RN - VN.VN / MU\tRECIPROCAL SEMI MAJ AXIS, SIGNED\n\n# \tAND ALFA IS POS FOR ELLIPTIC ORBITS\n#\t              0 FOR PARABOLIC ORBITS\n#\t            NEG FOR HYPERBOLIC ORBITS.\n#\tSUBROUTINE ALSO COMPUTES AND SAVES RMAG.\n# CALLING SEQUENCE:\n#\tTFFCONIC EXPECTS CALLER TO ENTER WITH CORRECT GRAVITATIONAL CONSTANT IN MPAC, IN THE FORM\n#\t1/SQRT(MU).  THE PROGRAM WILL SAVE IN TFF/RTMU .  THE SCALE IS DETERMINED BY WHETHER EARTH OR MOON\n#\tORIGIN IS USED.  THE CALLER MUST LOCK OUT THE EXTENDED VERBS BEFORE PROVIDING STATE VECTOR IN RONE,\n#\tVONE AT PROPER SCALE.  THE EXTENDED VERBS MUST BE RESTORED WHEN THE CALLER IS FINISHED USING THE\n#\tTFF ROUTINES.\n#\tENTRY POINT TFFCONMU EXPECTS THAT TFF/RTMU IS ALREADY LOADED.\n#\tTO SPECIFY MU:\tDLOAD\tCALL\t\t# IF MU ALREADY STORED:\t\tCALL\n#\t\t\t\tYOURMU\t# 1/RTMU\tE:(17) M:(14)\t\t\tTFFCONMU\n#\t\t\t\tTFFCONIC\n#\tPUSHLOC = PDL+0, ARBITRARY IF LEQ 18D\n\n# SUBROUTINES CALLED:\tNONE\n# NORMAL EXIT MODES:\tRVQ\n# ALARMS:\tNONE\n# OUTPUT:\tTHE FOLLOWING ARE STORED IN THE PUSH LIST AREA.\n#\t\tRMAG1\tE:(-29) M:(-27)\tM  RN, PRESENT RADIUS LENGTH.\n#\t\tNRMAG\tE:(-29+NR)\tM  RMAG, NORMALIZED\n#\t\t\tM:(-27+NR)\n#\t\tX1\t\t\t-NR, NORM COUNT\n#\t\tTFFNP\tE:(-38+2NR)\tM  LCP, SEMI LATUS RECTUM, WEIGHTED BY NR.\tFOR VGAMCALC\n#\t\t\tM:(-36+2NR)\n#\t\tTFF/RTMU E:(17) M:(14)\t\t1/SQRT(MU)\n#\t\tTFFVSQ E:(20) M:(18)\t1/M  -(V SQ/MU): PRESENT VELOCITY,NORMLIZED.\tFOR VGAMCALC\n#\t\tTFFALFA\tE:(26-NR)\t1/M  ALFA, WEIGHTED BY NR\n#\t\t\tM:(24-NR)\n#\t\tTFFRTALF E:(10+NA)\tSQRT(ALFA), NORMALIZED\n#\t\t\t M:(9+NA)\n# Page 1376\n#\t\tX2\t\t\t-NA, NORM COUNT\n#\t\tTFF1/ALF E: (-22-2NA)\tSIGNED SEMI MAJ AXIS, WEIGHTED BY NA\n#\t\t\t M: (-20-2NA)\n#\t\tPUSHLOC AT PDL+0\n#\t\tTHE FOLLOWING IS STORED IN GENERAL ERASABLE\n#\t\tVONE'\tE:(10) M:(9)\tV/RT(MU), NORMALIZED VELOCITY\n# ERASABLE INITIALIZATION REQUIRED:\n#\t\tRONE\tE:(-29) M:(-27)\tM\tSTATE VECTOR\t\tLEFT BY CALLER\n#\t\tVONE\tE:(-7) M:(-5)\tM/CS\tSTATE VECTOR\t\tLEFT BY CALLER\n#\t\tTFF/RTMU E:(17) M:(14)\t1/RT(CS SQ/M CUBE)\t\tIF ENTER VIA TFFCONMU.\n# DEBRIS:\tQPRET.\t\tPDL+0 ... PDL+3\n#\n\n\t\tBANK\t33\n\t\tSETLOC\tTOF-FF\n\t\tBANK\n\n\t\tCOUNT*\t$$/TFF\n\nTFFCONIC\tSTORE\tTFF/RTMU\t# 1/SQRT(MU)\t\tE: (17)  M: (14)\n\nTFFCONMU\tVLOAD\tUNIT\t\t# COME HERE WITH TFFRTMU LOADED.\n\t\t\tRONE\t\t# SAVED RN.  M\t\tE: (-29) M: (-27)\n\t\tPDDL\t\t\t# UR/2 TO PDL+0, +5\n\t\t\t36D\t\t# MAGNITUDE\n\t\tSTORE\tRMAG1\t\t# M\tE:(-29)\tM:(-27)\n\n\t\tNORM\n\t\t\tX1\t\t# -NR\n\t\tSTOVL\tNRMAG\t\t# RMAG  M  E: (-29+NR) M: (-27+NR)\n\t\t\tVONE\t\t# SAVED VN.  M/CS  \tE: (-7)\tM: (-5)\n\t\tVXSC\n\t\t\tTFF/RTMU\t# E:(17) M:(14)\n\t\tSTORE\tVONE'\t\t# VN/SQRT(MU)  E: (10)\tM: (9)\n\n\t\tVXSC\tVXV\n\t\t\tNRMAG\t\t# E: (-29+NR) M: (-27+NR)\n\t\t\t\t\t# UR/2 FROM PDL\n\t\tVSL1\tVSQ\t\t# BEFORE:  E:(-19+NR) M:(-18+NR)\n\t\tSTODL\tTFFNP\t\t# LC P M    E:(-38+2NR) M:(-36+2NR)\n\t\t\t\t\t# SAVE ALSO FOR VGAMCALC\n\t\t\tTFF1/4\n\t\tDDV\tPDVL\t\t# (2/RMAG)  1/M  E:(26-NR)\tM:(24-NR)\n\t\t\tNRMAG\t\t# RMAG  M  E:(-29+NR)\tM:(-27+NR)\n\t\t\tVONE'\t\t# SAVED VN.  E:(10)\tM:(9)\n\t\tVSQ\tDCOMP\t\t# KEEP MPAC+2 HONEST FOR SQRT.\n\t\tSTORE\tTFFVSQ\t\t# -(V SQ/MU)  E:(20)\tM:(18)\n\t\t\t\t\t# SAVE FOR VGAMCALC\n\t\tSR*\tDAD\n# Page 1377\n\t\t\t0 -6,1\t\t# GET -VSQ/MU  E:(26-NR) M:(24-NR)\n\t\tSTADR\n\t\t\t\t\t# 2/RMAG  FROM PDL+2\n\t\tSTORE\tTFFALFA\t\t# ALFA  1/M  E:(26-NR) M:(24-NR)\n\t\tSL*\tPUSH\t\t# TEMP SAVE ALFA  E:(20)  M:(18)\n\t\t\t0 -6,1\n\t\tABS\tSQRT\t\t# E:(10) M:(9)\n\t\tNORM\n\t\t\tX2\t\t# X2 = -NA\n\t\tSTORE\tTFFRTALF\t# SQRT( ABS(ALFA) )  E:(10+NA) M:(9+NA)\n\t\tDSQ\tSIGN\t\t# NOT SO ACCURATE, BUT OK\n\t\t\t\t\t# ALFA FROM PDL+2  E:(20) M:(18)\n\t\tBZE\tBDDV\t\t# SET 1/ALFA =0, TO SHOW SMALL ALFA\n\t\t\t+2\n\t\t\tTFF1/4\n\t+2\tSTORE\tTFF1/ALF\t# 1/ALFA  E:(-22-2 NA)\tM:(-20-2 NA)\nDUMPCNIC\tRVQ\n\t\t\t\t\t#\t\t\t39 W\n# Page 1378\n# SUBROUTINE NAME:\tTFFRP/RA\t\t\t\t\t\tDATE: 01.17.67\n# MOD NO: 0\t\t\t\t\t\t\t\t\tLOG SECTION: \tTIME OF FREE FALL\n# MOD NO: 1\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 11 APR 67\n# MOD NO: 2\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 MAR 68\t\tACCEPT DIFFERENT EARTH/MOON SCALES\n#\t\t\t\t\t\t\t\t\t\tALSO IMPROVE ACCURACY OF RAPO.\n# FUNCTIONAL DESCRIPTION:\tUSED BY CALCTPER AND TFF DISPLAYS TO CALCULATE PERIGEE RADIUS AND ALSO\n#\tAPOGEE RADIUS FOR A GENERAL CONIC.\n#\tPROGRAM GIVES PERIGEE RADIUS AS\t\tAPOGEE RADIUS IS GIVEN BY\n#\t\tRP = P /(1+E)\t\t\t\tRA = (1+E) / ALFA\n#\tWHERE    2\n#\t\tE  = 1 - P ALFA\n#\tIF RA IS NEGATIVE OR SHOWS DIVIDE OVERFLOW, THEN RA = POSMAX BECAUSE\n#\t\t1. APOGEE RADIUS IS NOT MEANINGFUL FOR HYPERBOLA\n#\t\t2. APOGEE RADIUS IS NOT DEFINED FOR PARABOLA\n#\t\t3. APOGEE RADIUS EXCEEDS THE SCALING FOR ELLIPSE.\n#\tTHIS SUBROUTINE REQUIRED THE SIGNED RECIPROCAL SEMI MAJ AXIS, ALFA, AND SEMI LATUS RECTUM AS DATA.\n# CALLING SEQUENCE: CALL\n#\t\t\tTFFRP/RA\n#\tPUSHLOC = PDL+0, ARBITRARY IF LEQ 10D\n#\tC(MPAC) UNSPECIFIED\n\n# SUBROUTINES CALLED:\tNONE\n# NORMAL EXIT MODE:\tRVQ\n#\t\tIF ELLIPSE, WITHIN NORMAL SCALING, RAPO IS CORRECT.\n#\t\tOTHERWISE, RAPO = POSMAX.\n# ALARMS:\tNONE\n# OUTPUT:\tSTORED IN PUSH LIST AREA. SCALE OF OUTPUT AGREES WITH DATA SUPPLIED TO TFF/CONIC.\n#\t\tRPER\tE:(-29) M:(-27)\t M\tPERIGEE RADIUS\t\tDESTROYED BY CALCTFF/CALCTPER, TFFTRIG.\n#\t\tRAPO\tE:(-29) M:(-27)\t M\tAPOGEE RADIUS\t\tWILL BE DESTROYED BY CALCTFF/CALCTPER\n#\t\tPUSHLOC AT PDL+0\n# ERASABLE INITIALIZATION REQUIRED:\n#\t\tTFFALFA\tE:(26-NR)\tM\t1/SEMI MAJ AXIS\t\tLEFT BY TFFCONIC\n#\t\t\tM:(24-NR)\n#\t\tTFFNP\tE: (-38+2NR)\tM\tLC P, SEMI LATUS RECTUM\tLEFT BY TFFCONIC\n#\t\t\tM: (-36+2NR)\n#\t\tX1\t\t\t-NR, NORM COUNT OF RMAG\t\tLEFT BY TFFCONIC\n#\t\tX2\t\t\t-NA, NORM COUNT OF ALFA\t\tLEFT BY TFFCONIC\n# DEBRIS:\tQPRET, PDL+0 ... PDL+1\n\n# Page 1379\nRAPO\t\t=\t16D\t\t# APOGEE RADIUS  M  E:(-29) M:(-27)\nRPER\t\t=\t14D\t\t# PERIGEE RADIUS  M  E:(-29) M:(-27)\n\nTFFRP/RA\tDLOAD\tDMP\n\t\t\tTFFALFA\t\t# ALFA  1/M  E:(26-NR) M:(24-NR)\n\t\t\tTFFNP\t\t# LC P  M   E:(-38+2NR) M:(-36+2NR)\n\t\tSR*\tDCOMP\t\t# ALFA P (-12+NR)\n\t\t\t0 -8D,1\t\t# ALFA P (-4)\n\t\tDAD\tABS\t\t# (DCOMP GIVES VALID TP RESULT FOR SQRT)\n\t\t\t\t\t# (ABS PROTECTS SQRT IF E IS VERY NEAR 0)\n\t\t\tDP2(-4)\n\t\tSQRT\tDAD\t\t# E SQ = (1- P ALFA)\t(-4)\n\t\t\tTFF1/4\n\t\tPUSH\tBDDV\t\t# (1+E)  (-2)  TO PDL+0\n\t\t\tTFFNP\t\t# LCP  M E:(-38+2NR)\tM:(-36+2NR)\n\t\tSR*\tSR*\t\t# (DOES SR THEN SL TO AVOID OVFL)\n\t\t\t0,1\t\t# X1=-NR\n\t\t\t0 -7,1\t\t# (EFFECTIVE SL)\n\t\tSTODL\tRPER\t\t# PERIGEE RADIUS  M  E:(-29) M:(-27)\n\t\t\t\t\t# (1+E)  (-2)  FROM PDL+0\n\t\tDMP\tBOVB\n\t\t\tTFF1/ALF\t# E:(-22-2NA) M:(-20-2NA)\n\t\t\tTCDANZIG\t# CLEAR OVFIND, IF ON.\n\t\tBZE\tSL*\n\t\t\tMAXRA\t\t# SET POSMAX, IF ALFA=0\n\t\t\t0 -5,2\t\t# -5+NA\n\t\tSL*\tBOV\n\t\t\t0,2\n\t\t\tMAXRA\t\t# SET POSMAX IF OVFL.\n\t\tBPL\t\t\t# CONTINUE WITH VALID RAPO.\n\t\t\t+3\nMAXRA\t\tDLOAD\t\t\t# RAPO CALC IS NOT VALID.  SET RAPO =\n\t\t\tNEARONE\t\t# POSMAX AS A TAG.\n\t+3\tSTORE\tRAPO\t\t# APOGEE RADIUS  M  E:(-29)\tM:(-27)\nDUMPRPRA\tRVQ\n\n\t\t\t\t\t#\t\t\t30 W\n# Page 1380\n# SUBROUTINE NAME:\tCALCTPER / CALCTFF\t\t\t\t\tDATE:\t01.29.67\n# MOD NO: 0\t\t\t\t\t\t\t\t\tLOG SECTION:\tTIME OF FREE FALL\n# MOD BY: RR BAIRNSFATHER\n# MOD NO: 1\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 MAR 67\n# MOD NO: 2\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 14 APR 67\n# MOD BY: 3\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 8 JUL 67\t\tNEAR EARTH MUE AND NEG TFF (GONEPAST)\n# MOD BY: 4\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 NOV 67\t\tADD VARIABLE MU.\n# MOD BY: 5\t\tMOD BY: RR BAIRNSFATHER\t\tDATE: 21 MAR 68\t\tACCEPT DIFFERENT EARTH/MOON SCALES\n# FUNCTIONAL DESCRIPTION:\tPROGRAM CALCULATES THE FREE-FALL TIME OF FLIGHT FROM PRESENT POSITION RN AND\n#\tVELOCITY VN TO A RADIUS LENGTH SPECIFIED BY RTERM , SUPPLIED BY THE USER.  THE POSITION VECTOR\n#\tRN MAY BE ON EITHER SIDE OF THE CONIC, BUT RTERM IS CONSIDERED ON THE INBOUND SIDE.\n#\tTHE EQUATIONS ARE\n\n#\t\tQ2 = -SQRT(RTERM (2-RTERM ALFA) - LCP)\t(INBOUND SIDE))\tLEQ +- LCE/SQRT(ALFA)\n#\t\t     -\t-\n#\t\tQ1 = RN.VN / SQRT(MU)\t\t\t\t\tLEQ +- LCE/SQRT(ALFA)\n\n# \t\tZ = NUM / DEN\t\t\t\t\t\tLEQ +- 1/SQRT(ALFA)\n\n#\tWHERE, IF INBOUND\n#\t\tNUM = RTERM -RN\t\t\t\t\t\tLEQ +- 2 LCE/ALFA\n#\t\tDEN = Q2+Q1\t\t\t\t\t\tLEQ +- 2 LCE/SQRT(ALFA)\n\n# \tAND, IF OUTBOUND\n#\t\tNUM = Q2-Q1\t\t\t\t\t\tLEQ +- 2 LCE/SQRT(ALFA)\n#\t\tDEN = 2 - ALFA (RTERM + RN) .\t\t\t\tLEQ +- 2 LCE\n\n#\tIF \tALFA ZZ < 1.0\t\t(FOR ALL CONICS EXCEPT ELLIPSES HAVING ABS(DEL ECC ANOM) G 90 DEG)\n\n#\tTHEN\tX = ALFA Z Z\n#\tAND\tTFF = (RTERM +RN -2 ZZ T(X) ) Z/SQRT(MU)\n\n#\t\tEXCEPT \tIF ALFA PNZ, AND IF TFF NEG,\n#\t\tTHEN\tTFF = 2 PI /(ALFA SQRT(ALFA)) + TFF\n\n#\tOR IF\tALFA ZZ GEQ 1.0\t\t(FOR ELLIPSES HAVING ABS(DEL ECC ANOM) GEQ 90 DEG)\n\n#\tTHEN\tX = 1/ALFA Z Z\n#\tAND\tTFF = (PI/SQRT(ALFA) -Q2 +Q1 +2(X T(X) -1) /ALFA Z) /ALFA SQRT(MU)\n\n#\tWHERE\tT(X) IS A POLYNOMIAL APPROXIMATION TO THE SERIES\n#\t\t\t   2\t 3\t\t\t  2\n#\t\t1/3 -X/5 +X /7 -X /9...\t\t\t(X < 1.0)\n\n# CALLING SEQUENCE:\tTIME TO RTERM\t\t\tTIME TO PERIGEE\n#\t\t\tCALL\t\t\t\tCALL\n#\t\t\t\tCALCTFF\t\t\t\tCALCTPER\n#\t\t\tC(MPAC) = TERMNL RAD M\t\tC(MPAC) = PERIGEE RAD M\n#\tFOR EITHER,\tE: (-29)\tM: (-27)\n#\tFOR EITHER, PUSHLOC = PDL+0 , ARBITRARY IF LEQ 8D.\n# Page 1381\n#\n# SUBROUTINES CALLED:\tT(X), VIA RTB\n# NORMAL EXIT MODE: RVQ\n#\t\tHOWEVER, PROGRAM EXITS WITH ONE OF THE FOLLOWING VALUES FOR TFF (-28) CS IN MPAC.  USER MUST STORE.\n#\t\t\tA. TFF = FLIGHT TIME.  NORMAL CASE FOR POSITIVE FLIGHT TIME LESS THAN ONE ORBITAL PERIOD.\n#\t\t\tB. (THIS OPTION IS NO LONGER USED.)\n#\t\t\tC. TFF = POSMAX.  THIS INDICATES THAT THE CONIC FROM THE PRESENT POSITION WILL NOT RETURN TO\n#\t\t\t   THE SPECIFIED ALTITUDE.  ALSO INDICATES OUTBOUND PARABOLA OR HYPERBOLA.\n# OUTPUT:\tC(MPAC)\t\t(-28) CS\tTIME OF FLIGHT, OR TIME TO PERIGEE\n#\t\tTFFX\t\t(0)\t\tX,\t\t\t\t\tLEFT FOR ENTRY DISPLAY TFF ROUTINES\n#\t\tNRTERM\t\tE: (-29+NR)\tM RTERM, WEIGHTED BY NR\t\t\tLEFT FOR ENTRY DISPLAY TFF ROUTINES\n#\t\t\t\tM: (-27+NR)\n#\t\tTFFTEM\t\tE: (-59+2NR)\tLCP Z Z SGN(SDELF)\t\t\tLEFT FOR ENTRY DISPLAY TFF ROUTINES\n#\t\t\t\tM: (-55+2NR)\tLCP /ALFA SGN(SDELF)\t\t\tLEFT FOR ENTRY DISPLAY TFF ROUTINES\n#\t\tNOTE:\tTFFTEM = PDL 36D AND WILL BE DESTROYED BY .:UNIT:.\n#\t\tRMAG1\tE:(-29) M:(-27)\tPDL 12 NOT TOUCHED.\n#\t\tTFFQ1\tE:(-16) M:(-15)\tPDL 14D\n#\t\tTFFDELQ\tE:(-16) M:(-15)\tPDL 10D\n#\t\tPUSHLOC\tAT PDL+0\n# ERASABLE INITIALIZATION REQUIRED:\n#\t\tRONE\tE:(-29) M:(-27)\tM  STATE VECTOR\t\t\t\t\tLEFT BY USER\n#\t\tVONE'\tE:(+10) M:(+9)\tVN/SQRT(NU)\t\t\t\t\tLEFT BY TFF/CONIC\n#\t\tRMAG1\tE:(-29) M:(-27)\tPRESENT RADIUS, M\t\t\t\tLEFT BY TFFCONIC\n#\t\tC(MPAC)\tE:(-29) M:(-27)\tRTERM, TERMINAL RADIUS LENGTH, M\t\tLEFT BY USER\n#\n#\t\tTHE FOLLOWING ARE STORED IN THE PUSH LIST AREA.\n#\t\tTFF/RTMU\tE:(17) M:(14)\t1/SQRT(MU)\t\t\t\tLEFT BY TFFCONIC.\n#\t\tNRMAG\tE: (-29+NR)\tM RMAG, NORMALIZED\t\t\t\tLEFT BY TFFCONIC\n#\t\t\tM: (-27+NR)\n#\t\tX1\t\t\t  -NR, NORM COUNT\t\t\t\tLEFT BY TFFCONIC\n#\t\tTFFNP\tE: (-38+2NR)\tM   LCP, SEMI LATUS RECTUM, WEIGHT NR\t\tLEFT BY TFFCONIC\n#\t\t\tM: (-36+2NR)\n#\t\tTFFALFA\t E: (26-NR)\t  1/M  ALFA, WEIGHT NR\t\t\t\tLEFT BY TFFCONIC\n#\t\t\t M: (24-NR)\n#\t\tTFFRTALF  E:(10+NA)\t  SQRT(ALFA), NORMALIZED\t\t\tLEFT BY TFFCONIC\n#\t\t\t  M:(9+NA)\n#\t\tX2\t\t\t  -NA, NORM COUNT\t\t\t\tLEFT BY TFFCONIC\n#\t\tTFF1/ALF\tE:(-22-2NA)\tSIGNED SEMIMAJ AXIS, WEIGHTED BY NA\tLEFT BY TFFCONIC\n#\t\t\t\tM:(-20-2NA)\n# DEBRIS:\tQPRET, PDL+0 ... PDL+3\n#\t\tRTERM\tE:(-29) M:(-27)\tRTERM, TERMINAL RADIUS LENGTH\n#\t\tRAPO\tE:(-29) M:(-27)\tPDL 16D\t(=NRTERM)\n#\t\tRPER\tE:(-29) M:(-27)\tPDL 14D\t (=TFFQ1)\n\n# Page 1382\nCALCTPER\tSETGO\t\t\t# ENTER WITH RPER IN MPAC\n\t\t\tTFFSW\n\t\t\t+3\nCALCTFF\t\tCLEAR\t\t\t# ENTER WITH RTERM IN MPAC\n\t\t\tTFFSW\n\t+3\tSTORE\tRTERM\t\t# E: (-29) M: (-27)\n\t\tSL*\n\t\t\t0,1\t\t# X1=-NR\n\t\tSTORE\tNRTERM\t\t# RTERM  E: (-29+NR) M: (-27+NR)\n\t\tDMP\tBDSU\n\t\t\tTFFALFA\t\t# ALFA  E:(26-NR) M:(24-NR)\n\t\t\tTFF1/4\n\t\tPUSH\tDMP\t\t# (2-ALFA RTERM)  (-3)  TO PDL+0\n\t\t\tNRTERM\t\t# E: (-29+NR) M: (-27+NR)\n\t\tPDDL\tSR*\t\t# RTERM(2-ALFA RTERM) TO PDL+2\n\t\t\t\t\t# E: (-32+NR) M: (-30+NR)\n\t\t\tTFFNP\t\t# LC P  E:(-38+2NR) M:(-36+2NR)\n\t\t\t0 -6,1\t\t# X1 = -NR\n\t\tDCOMP\tDAD\t\t# DUE TO SHIFTS, KEEP PRECISION FOR SQRT\n\t\t\t\t\t# RTERM(2-ALFA RTERM) FROM PDL+2\n\t\t\t\t\t# E: (-32+NR) M: (-30+NR)\n\t\tSR*\t\t\t# LEAVE  E: (-32) M: (-30)\n\t\t\t0,1\t\t# X1 = -NR\n\t\tBOFF\tDLOAD\t\t# CHECK TFF / TPER SWITCH\n\t\t\tTFFSW\n\t\t\t+2\t\t# IF TFF, CONTINUE\n\t\t\tTFFZEROS\t# IF TPER, SET Q2 = 0\n\t+2\tBMN\tSQRT\t\t# E: (-16) M: (-15)\n\n\t\t\tMAXTFF1\t\t# NO FREE FALL CONIC TO RTERM FROM HERE\n\t\t\t\t\t# RESET PDL, SET TFF=POSMAX, AND EXIT.\n\n\t\tDCOMP\tBOVB\t\t# RT IS ON INBOUND SIDE.  ASSURE OVFIND=0\n\t\t\tTCDANZIG\t# ANY PORT IN A STORM.\n\t\tSTOVL\tTFFTEM\t\t# Q2  E: (-16) M: (-15)\n\t\t\tVONE'\t\t# VN/SQRT(MU)  E: (10) M: (9)\n\t\tDOT\tSL3\n\t\t\tRONE\t\t# SAVED RN.  E: (-29) M: (-27)\n\t\tSTORE\tTFFQ1\t\t# Q1, SAVE FOR GONEPAST TEST.\n\t\t\t\t\t# E: (-16) M: (-15)\n\t\tBMN\tBDSU\n\t\t\tINBOUND\t\t# USE ALTERNATE Z\n\t\t\tTFFTEM\t\t# Q2  E: (-16) M: (-15)\n\n# OUTBOUND Z CALC CONTINUES HERE\n\n\t\tSTODL\tTFFX\t\t# NUM=Q2-Q1  E: (-16) M: (-15)\n\t\t\tTFFALFA\t\t# ALFA  E: (26-NR) M: (24-NR)\n\t\tDMP\tBDSU\n# Page 1383\n\t\t\tNRMAG\t\t# RMAG  E: (-29+NR) M: (-27+NR)\n\t\t\t\t\t# (2-RTERM ALFA)  (-3) FROM PDL+0\nSAVEDEN\t\tPUSH\tABS\t\t# DEN TO PDL+0\tE: (-3) OR (-16)\n\t\t\t\t\t#               M: (-3) OR (-15)\n\t\tDAD\tBOV\t\t# INDETERMINANCY TEST\n\t\t\tLIM(-22)\t# =1.0-B(-22)\n\t\t\tTFFXTEST\t# GO IF DEN >/= B(-22)\n\t\tDLOAD\tPDDL\t\t# SET DEN=0 OTHERWISE\n\t\t\tTFFZEROS\n\t\t\t\t\t# XCH ZERO WITH PDL+0\n\t\tDLOAD\tDCOMP\n\t\t\tTFFALFA\t\t# ALFA  E: (26-NR) M:( 24-NR)\n\t\tBMN\tDLOAD\t\t# FOR TPER:  Z INDET AT DELE/2=0 AND 90.\n\t\t\tTFFEL1\t\t# ASSUME 90, AND LEAVE 0 IN PDL: 1/Z=D/N\n\n\t\t\t\t\t# Z INDET. AT PERIGEE FOR PARAB OR HYPERB.\nDUMPTFF1\tRVQ\t\t\t# RETURN TFF =0\n\n# INBOUND Z CALC CONTINUES HERE\nINBOUND\t\tDLOAD\t\t\t# RESET PDL+0\n\t\tDLOAD\tDSU\t\t# ALTERNATE Z CALC\n\t\t\tRTERM\t\t# E: (-29) M: (-27)\n\t\t\tRMAG1\t\t# E: (-29) M: (-27)\n\t\tSTODL\tTFFX\t\t# NUM=RTERM-RN\tE: (-29) M: (-27)\n\t\t\tTFFTEM\t\t# Q2  E: (-16)\tM: (-15)\n\t\tDAD\tGOTO\n\t\t\tTFFQ1\t\t# Q1  E: (-16) M: (-15)\n\t\t\tSAVEDEN\t\t# DEN = Q2+Q1  E: (-16) M: (-15)\n\nTFFXTEST\tDAD\tPDDL\t\t# (ABS(DEN) TO PDL+2))\tE: (-3) OR (-16)\n\t\t\t\t\t#\t\t\tM: (-3) OR (-15)\n\t\t\tDP(-22)\t\t# RESTORE ABS(DEN) TO MPAC\n\t\t\tTFFX\t\t# NUM E:(-16) OR (-29) M:(-15) OR (-27)\n\t\tDMP\tSR*\n\t\t\tTFFRTALF\t# SQRT(ALFA)  E:(10+NA) M:(9+NA)\n\t\t\t0 -3,2\t\t# X2=-NA\n\t\tDDV\t\t\t# C(MPAC) =NUM SQRT(ALFA)\tE:(-3) OR (-16)\n\t\t\t\t\t#\t\t\t\tM:(-3) OR (-15)\n\t\t\t\t\t# ABS(DEN) FROM PDL+2\tE:(-3) OR (-16)\n\t\t\t\t\t#\t\t\tM:(-3) OR (-15)\n\t\tDLOAD\tBOV\t\t# (THE DLOAD IS SHARED WITH TFFELL)\n\t\t\tTFFX\t\t# NUM  E: (-16) OR (-29)  M:(-15) OR (-27)\n\t\t\tTFFELL\t\t# USE EQN FOR DELE GEQ 90, LEQ -90\n\n# OTHERWISE, CONTINUE FOR GENERAL CONIC FOR TFF EQN\n\n\t\tDDV\tSTADR\n\t\t\t\t\t# DEN FROM PDL+0\tE: (-3) OR (-16)\n\t\t\t\t\t#\t\t\tM: (-3) OR (-15)\n\t\tSTORE\tTFFTEM\t\t# Z SAVE FOR SIGN OF SDELF.\n# Page 1384\n\t\t\t\t\t# E: (-13) M: (-12)\n\t\tPUSH\tDSQ\t\t# Z TO PDL+0\n\t\tPUSH\tDMP\t\t# Z SQ TO PDL+2  E: (-26) M: (-24)\n\t\t\tTFFNP\t\t# LC P  E: (-38+2NR) M: (-36+2NR)\n\t\tSL\tSIGN\n\t\t\t5\n\t\t\tTFFTEM\t\t# AFFIX SIGN FOR SDELF (ENTRY DISPLAY)\n\t\tSTODL\tTFFTEM\t\t# P ZSQ  E: (-59+2NR) M: (-55+2NR)\n\t\t\t\t\t# (ARG IS USED IN TFF/TRIG)\n\t\t\t\t\t# ZSQ FROM PDL+2  E: (-26) M: (-24)\n\t\tPUSH\tDMP\t\t# RESTORE PUSH LOC\n\t\t\tTFFALFA\t\t# ALFA  E: (26-NR) M: (24-NR)\n\t\tSL*\n\t\t\t0,1\t\t# X1=-NR\n\t\tSTORE\tTFFX\t\t# X\n\t\tRTB\tDMP\n\t\t\tT(X)\t\t# POLY\n\t\t\t\t\t# ZSQ FROM PDL+2  E: (-26) M: (-24)\n\t\tSR2\tBDSU\t\t# 2 ZSQ T(X)  E: (-29) M: (-27)\n\t\t\tRTERM\t\t# RTERM  E: (-29) M: (-27)\n\t\tDAD\tDMP\n\t\t\tRMAG1\t\t# E: (-29) M: (-27)\n\t\t\t\t\t# Z FROM PDL+0  E: (-13) M: (-12)\n\t\tSR3\tBPL\t\t# TFF SQRT(MU)  E: (-45) M: (-42)\n\t\t\tENDTFF\t\t# (NO PUSH UP)\n\t\tPUSH\tSIGN\t\t# TFF SQRT(MU) TO PDL+0\n\t\t\tTFFQ1\t\t# Q1 FOR GONEPAST TEST\n\t\tBPL\tDLOAD\t\t# GONE PAST ?\n\t\t\tNEGTFF\t\t# YES. TFF < 0 .\n\t\t\tTFF1/ALF\t# 1/ALFA  E: (-22-2NA) M: (-20-2NA)\n\t\tDCOMP\tBPL\t\t# ALFA > 0 ?\n\t\t\tNEGTFF\t\t# NO. TFF IS NEGATIVE.\n\n# CORRECT FOR ORBITAL PERIOD.\n\n\t\tDCOMP\t\t\t# YES.  CORRECT FOR ORB PERIOD.\n\t\tDMP\tDDV\n\t\t\tPI/16\t\t# 2 PI (-5)\n\t\t\tTFFRTALF\t# SQRT(ALFA)  E: (10+NA) M: (9+NA)\n\t\tSL*\tSL*\n\t\t\t0 -4,2\t\t# X2=-NA\n\t\t\t0 -4,2\n\t\tSL*\tDAD\n\t\t\t0,2\n\t\t\t\t\t# TFF SQRT(MU) FROM PDL+0\tE:(-45) M:(-42)\nENDTFF\t\tDMP\tBOV\t\t# TFF SQRT(MU) IN MPAC\t\tE:(-45) M:(-42)\n\t\t\tTFF/RTMU\t# E: (17) M: (14)\n\t\t\tMAXTFF\t\t# SET POSMAX IN OVFL.\n\nDUMPTFF2\tRVQ\t\t\t# RETURN TFF\t(-28) CS IN MPAC.\n\n# Page 1385\nNEGTFF\t\tDLOAD\n\t\t\t\t\t# TFF SQRT(MU) FROM PDL+0, NEGATIVE.\n\t\tGOTO\n\t\t\tENDTFF\n\nMAXTFF1\t\tDLOAD\t\t\t# RESET PDL\nMAXTFF\t\tDLOAD\tRVQ\n\t\t\tNEARONE\n\n# TIME OF FLIGHT ELLIPSE WHEN DEL (ECCENTRIC ANOM) GEQ 90 AND LEQ -90.\n\n\t\t\t\t\t# NUM FROM TFFX. E: (-16) OR (-29)\n\t\t\t\t\t#\t\t M: (-15) OR (-27)\nTFFELL\t\tSL2\t\t\t# NUM E:(-14) OR (-27)  M:(-13) OR (-25)\n\t\tBDDV\tPUSH\t\t# TEMP SAVE D/N IN PDL+0\n\t\t\t\t\t# DEN FROM PDL+0  E:(-3)/( 16)  M:(-3)/(-15)\n\t\t\t\t\t# N/D TO PDL+0  E: (11) M: (10)\nTFFEL1\t\tDLOAD\tDSU\t\t# (ENTER WITH D/N=0 IN PDL+0)\n\t\t\tTFFTEM\t\t# Q2  E: (-16) M: (-15)\n\t\t\tTFFQ1\t\t# Q1  E: (-16) M: (-15)\n\t\tSTODL\tTFFDELQ\t\t# Q2-Q1  E: (-16) M: (-15)\n\t\t\t\t\t# D/N FROM PDL+0\n\t\tSTADR\n\t\tSTORE\tTFFTEM\t\t# D/N  E: (11) M: (10)\n\t\tDMP\tSL*\n\t\t\tTFF1/ALF\t# 1/ALFA  E: (-22-2NA) M: (-20-2NA)\n\t\t\t0,2\t\t# 1/ALFA Z  E: (-11-NA) M: (-10-NA)\n\t\tPUSH\tDMP\t\t# TO PDL+0\n\t\t\tTFFTEM\t\t# 1/Z  E: (11) M: (10)\n\t\tSL*\tBOVB\n\t\t\t0,2\t\t# X2= -NA\n\t\t\tSIGNMPAC\t# IN CASE X= 1.0, CONTINUE\n\t\tSTORE\tTFFX\t\t# X=1/ALFA ZSQ\n\t\tRTB\tDMP\n\t\t\tT(X)\t\t# POLY\n\t\t\tTFFX\n\t\tSR3\tDSU\n\t\t\tDP2(-3)\n\t\tDMP\tPUSH\t\t# 2(X T(X)-1) /Z ALFA\tE:(-15-NA)\n\t\t\t\t\t#\t\t\tM:(-14-NA)\n\t\t\t\t\t# 1/ALFA Z FROM PDL+0\tE:(-11-NA)\n\t\t\t\t\t#\t\t\tM:(-10-NA)\n\t\tDLOAD\tDMP\t\t# GET SIGN FOR SDELF\n\t\t\tTFFTEM\t\t# 1/Z  E: (11) M: (10)\n\t\t\tRMAG1\t\t# E: (-29) M: (-27)\n\t\tSL2\tDAD\n\t\t\tTFFQ1\t\t# Q1  E: (-16) M: (-15)\n\t\tSTODL\tTFFTEM\t\t# (Q1+R 1/Z) =SGN OF SDELF  E:(-16) M:(-15\n\t\t\tTFFNP\t\t# LC P  E: (-38+2NR) M: (-36+2NR)\n\t\tDMP\tSL*\t\t# CALC FOR ARG FOR TFF/TRIG.\n# Page 1386\n\t\t\tTFF1/ALF\t# 1/ALFA  E:(-22-2NA) M:(-20-2NA)\n\t\t\t1,2\t\t# X2=-NA\n\t\tSIGN\tSL*\n\t\t\tTFFTEM\t\t# AFFIX SIGN FOR SDELF\n\t\t\t0,2\n\t\tSTODL\tTFFTEM\t\t# P/ALFA  E:(-59+2NR)\tM:(-55+2NR)\n\t\t\t\t\t# (ARG FOR USE IN TFF/TRIG)\n\t\t\tTFF1/ALF\t# 1/ALFA E:(-22-2NA) M:(-20-2NA)\n\t\tSQRT\tDMP\n\t\t\tPI/16\t\t# PI (-4)\n\t\tDAD\n\t\t\t\t\t# 2(XT(X)-1)/Z ALFA FROM PDL\tE:(-15-NA)\n\t\t\t\t\t#\t\t\t\tM:(-14-NA)\n\t\tSL*\tDSU\n\t\t\t0 -1,2\n\t\t\tTFFDELQ\t\t# Q2-Q1  E: (-16) M: (-15)\n\t\tDMP\tSL*\n\t\t\tTFF1/ALF\t# 1/ALFA  E:(-22-2NA) M:(-20-2NA)\n\t\t\t0 -3,2\n\t\tSL*\tGOTO\n\t\t\t0 -4,2\n\t\t\tENDTFF\t\t# TFF SQRT(MU) IN MPAC E:(-45) M:(-42)\n\n# Page 1387\n# PROGRAM NAME:\t\tT(X)\t\t\t\tDATE:\t01.17.67\n# MOD NO:\t0\t\t\t\t\tLOG SECTION:\tTIME OF FREE FALL\n# MOD BY:  \tRR BAIRNSFATHER\n# FUNCTIONAL DESCRIPTION:\tTHE POLYNOMIAL T(X) IS USED BY TIME OF FLIGHT SUBROUTINES CALCTFF AND\n#\tCALCTPER TO APPROXIMATE THE SERIES\n#\t\t\t  2\t3\n#\t\t1/3 -X/5 +X /7 -X /9 ...\n\n#\tWHERE\tX = ALFA Z Z\t\tIF ALFA Z Z LEQ\t1\n#\t\tX = 1/(ALFA Z Z )\tIF ALFA Z Z  G\t1\n\n#\tALSO\tX IS NEG FOR HYPERBOLIC ORBITS\n#\t\tX = 0 FOR PARABOLIC ORBITS\n#\t\tX IS POSITIVE FOR ELLIPTIC ORBITS\n#\tFOR FLIGHT 278, THE POLYNOMIAL T(X) IS FITTED OVER THE RANGE (0,+1) AND HAS A MAXIMUM\n#\tDEVIATION FROM THE SERIES OF 2 E-5\t(T(X) IS A CHEBYCHEV TYPE FIT AND WAS OBTAINED USING\n#\tMAC PROGRAM AUTCURFIT294RRB AND IS VALID TO THE SAME TOLERANCE OVER THE RANGE (-.08,+1). )\n# CALLING SEQUENCE:\tRTB\n#\t\t\t\tT(X)\n#\t\tC(MPAC) = X\n\n# SUBROUTINE CALLED:\tNONE\n# NORMAL EXIT MODE:\tTC DANZIG\n# ALARMS:\tNONE\n# OUTPUT:\tC(MPAC) = T(X)\n# ERASABLE INITIALIZATION REQUIRED:\n#\t\tC(MPAC) = X\n# DEBRIS:\tNONE\n\nT(X)\t\tTC\tPOLY\n\t\tDEC\t4\t\t# N-1\n\t\t2DEC\t3.333333333 E-1\n\t\t2DEC*\t-1.999819135 E-1*\n\t\t2DEC*\t1.418148467 E-1*\n\t\t2DEC* \t-1.01310997 E-1*\n\t\t2DEC*\t5.609004986 E-2*\n\t\t2DEC*\t-1.536156925 E-2*\n\nENDT(X)\t\tTC\tDANZIG\n\nTCDANZIG\t=\tENDT(X)\n\n# Page 1388\n# TFF CONSTANTS\n\t\tBANK\t32\n\n\t\tSETLOC\tTOF-FF1\n\t\tBANK\n\n#\t\t\t\t\t\t# NOTE _  NOTE _ ADJUSTED MUE FOR NEAR EARTH TRAJ.\n\n#MUE\t\t=\t3.990 815 471 E10 # M CUBE/CS SQ\n#RTMUE\t\t=\t1.997702549 E5 B-18*\t# MODIFIED EARTH MU\n\n1/RTMU\t\t2DEC*\t.5005750271 E-5 B17*\t# MODIFIED EARTH MU\n\n#\t\t\t\t\t\t# NOTE _  NOTE _ ADJUSTED MUE FOR NEAR EARTH TRAJ.\n\n#MUM\t\t=\t4.902 778 E8\t\t# M CUBE /CS SQ\n\n#RTMUM\t\t2DEC*\t2.21422176 E4 B-18*\nPI/16\t\t2DEC\t3.141592653 B-4\nLIM(-22)\t2OCT\t3777737700\t\t# 1.0 -B(-22)\nDP(-22)\t\t2OCT\t0000000100\t\t# B(-22)\nDP2(-3)\t\t2DEC\t1 B-3\nDP2(-4)\t\t2DEC\t1 B-4\t\t\t# 1/16\n\n# RPAD1\t\t2DEC\t6373338 B-29\t\t# M (-29) =20 909 901.57 FT\nRPAD1\t\t=\tRPAD\nR300K\t\t2DEC\t6464778 B-29\t\t# (-29) M\nNEARONE\t\t2DEC\t.999999999\nTFFZEROS\tEQUALS\tHI6ZEROS\nTFF1/4\t\tEQUALS\tHIDP1/4\n"
  },
  {
    "path": "Comanche055/TPI_SEARCH.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTPI_SEARCH.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t551-561\n# Mod history:\t2009-05-15 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrections:  On p. 551, \"SETLOC P17S\" -> P17S1.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 551\n# TPI SEARCH\n\n# PROGRAM DESCRIPTION S17.1 AND S17.2\n\n# FUNCTIONAL DESCRIPTION\n\n# \tTHE TPI SEARCH ROUTINE DETERMINES THE MINIMUM TOTAL VELOCITY TRANSFER TRAJECTORY FROM A GIVEN TPI\n# MANEUVER TIME WITHIN THE CONSTRAINT OF A SAFE PERICENTER.  THIS VELOCITY IS THE SUM OF THE IMPULSIVE VELOCITIES\n# FOR THE TPI AND TPF MANEUVERS.\n# \tTHE S17.1 ROUTINE EXTRAPOLATES THE STATE VECTORS OF BOTH VEHICLES TO THE TPI TIME AND COMPUTES THE\n# RELATIVE PHASE ANGLE BETWEEN THE VEHICLES, THE ALTITUDE DIFFERENCE(I.E. THE MAGNITUDE DIFFERENCE OF THE\n# POSITION VECTORS) AND SELECTS A SEARCH SECTOR BASED ON THE SIGN OF THE ALTITUDE DIFFERENCE.\n# \tTHE S17.2 ROUTINE FURTHER DEFINES THE SEARCH SECTOR BY COMPUTING ANGULAR LIMITS AND USES THE TIME THETA\n# SUBROUTINE TO COMPUTE THE SEARCH START AND END TIMES.  THE SEARCH IS THEN MADE IN AN ITERATIVE LOOP USING THE\n# LAMBERT SUBROUTINE TO COMPUTE THE VELOCITIES REQUIRED AT TPI TIME AND AT TPF TIME.  EXIT FROM THE SEARCH LOOP\n# IS MADE WHEN SOLUTION CRITERIA ARE MET (NORMAL EXIT) OR AS SOON AS IT IS EVIDENT THAT NO SOLUTION EXISTS IN\n# THE SECTOR SEARCHED.\n\n# CALLING SEQUENCE\n\n# \tBOTH ROUTINES ARE CALLED IN INTERPRETIVE CODE AND RETURN VIA QPRET.  S17.1 HAS ONLY A NORMAL EXIT.\n# S17.2 RETURNS VIA QPRET FOR NORMAL EXIT AND TO ALARUMS FOR ERROR EXIT.\n# SUBROUTINES CALLED\n#\n#\tCSMCONIC\n#\tLEMCONIC\n#\tTIMETHET\n#\tINITVEL\n\n\t\tBANK\t36\n\t\tSETLOC\tP17S1\n\t\tBANK\n\n\t\tCOUNT\t36/TPI\n\n\t\tEBANK=\tRACT3\n\n# \t**** TEMPORARY ****\n\nHPE\t\t2DEC\t157420.0 B-29\t\t# EARTH'S MIN. PERICENTER ALTITUDE 85 N.M.\n\nHPL\t\t2DEC\t10668.0213 B-29\t\t# MOON:S MIN. PERICENTER ALTITUDE 35000FT\n\nCDSEC\t\t2DEC\t40000\n\nCLSEC\t\t2DEC\t15000\n\nPIINVERS\t2DEC\t.3183098862\n\nSEC1THET\t2DEC\t.1944444444\n\n# Page 552\nSEC2THET\t2DEC\t.9166666667\n\nMANYFEET\t2DEC\t-1.0 B-2\n\nLIMVEL\t\t2DEC\t.6096 E-2 B-7\t\t# 2FPS\n\nDFTMOON\t\t2DEC\t.1524 E3 B-29\t\t# 500 FEET\n\nDP-.002\t\t2DEC\t0.002\n\n\t\tSETLOC\tP17S\n\t\tBANK\nS17.1\t\tSTQ\tDLOAD\n\t\t\tNORMEX\n\t\t\tTTPI\n\t\tSTCALL\tTDEC1\t\t\t# ADVANCE PASSIVE VEHICLE TO TPI\n\t\t\tLEMCONIC\n\t\tCALL\n\t\t\tLEMSTORE\n\t\tDLOAD\n\t\t\tTTPI\n\t\tSTCALL\tTDEC1\t\t\t# ADVANCE ACTIVE VEHICLE TO TPI\n\t\t\tCSMCONIC\n\t\tCALL\n\t\t\tCSMSTORE\n\t\tVLOAD\n\t\t\tRACT3\n\t\tABVAL\tPDVL\t\t\t# /RA/ 0D\t\t\tPL 2D\n\t\t\tRPASS3\n\t\tUNIT\tPDDL\t\t\t# UNIT RP 0D\t\t\tPL 6D\n\t\tBDSU\tSET\n\t\t\t36D\t\t\t# /RP/ -/RA/\n\t\t\tKFLAG\t\t\t# OFF = +\n\t\tBMN\tCLEAR\n\t\t\t+2\n\t\t\tKFLAG\t\t\t# ON = -\n\t\tSTOVL\tDELHITE\n\t\t\t0D\n\t\tVXV\tUNIT\n\t\t\tVPASS3\n\t\tSTOVL\tE2\t\t\t# ALMOST IT SAVE FOR 17.2\n\t\t\tRACT3\n\t\tPUSH\tVPROJ\n\t\t\tE2\n\t\tVSL2\tBVSU\t\t\t# RPA\n\t\tUNIT\tDOT\n\t\t\t0D\n\t\tSL1 \tACOS\n\t\tPDVL\n\t\tVXV\tDOT\n# Page 553\n\t\t\tRACT3\n\t\t\tE2\n\t\tPDDL\tSIGN\n\t\tSTADR\n\t\tSTODL\tTHETZERO\t\t# CENTRAL ANGLE\n\t\t\tX1\n\t\tSTCALL\tXRS\t\t\t# SAVE INDICES FOR FURTHER USE\n\t\t\tNORMEX\t\t\t#   += ACTIVE AHEAD  -= ACTIVE BEHIND\nS17.2\t\tSTQ\tVLOAD\t\t\t# COMPUTE SEARCH SECTOR LIMITS\n\t\t\tQTEMP\n\t\t\tRACT3\n\t\tUNIT\tDOT\n\t\t\tE2\n\t\tABS\tSQRT\n\t\tSL1\tDAD\n\t\t\tDP-.002\t\t\t# ADD .002 RADIANS TO IT\n\t\tBON\tDCOMP\t\t\t# GIVES CORRECT SINE, COSINE MUST BE\n\t\t\tKFLAG\t\t\t# COMP. ADD .5 FOR ANGLE\n\t\t\t+1\n# PHI(0)=180-(-(THETAZERO +K5IT)), PHI(I)=180-(-THETAZERO+K2IT))\n# SIN(180-ALPHA)=SIN(ALPHA) ETC\n\t\tDMP\tSETPD\n\t\t\tPIINVERS\t\t# REVOLUTIONARY HERES TWO IT\n\t\t\t0D\n\t\tPUSH\tDSU\n\t\t\tTHETZERO\n\t\tSTORE\tIT\t\t\t# PHI(I) , -(THETZERO + K2IT)\n\t\tPDDL\tPUSH\n\t\tSR1\tDAD\n\t\tDAD\tPUSH\t\t\t# PHI(0) , -(THETZERO + K5IT)\n\t\tSIN\tSET\n\t\t\tRVSW\n\t\tSTODL\tSNTH\n\t\tCOS\tBMN\n\t\t\t+2\n\t\tDCOMP\n\t\tSTODL\tCSTH\n\t\t\tXRS\n\t\tSTOVL\tX1\n\t\t\tRPASS3\n\t\tVSR*\n\t\t\t0,2\n\t\tSTOVL\tRVEC\n\t\t\tVPASS3\n\t\tVSR*\n\t\t\t0,2\n\t\tSTCALL\tVVEC\n\t\t\tTIMETHET\n\t\tDLOAD\t\t\t\t# SAVE START TIME AND GET END TIME\n\t\t\tT\n# Page 554\n\t\tSTORE\tTF\n\t\tSTODL\tTFO\n\t\t\tIT\n\t\tPUSH\tSIN\n\t\tSTODL\tSNTH\n\t\tCOS\tBMN\n\t\t\t+2\n\t\tDCOMP\n\t\tSTORE\tCSTH\n\t\tLXA,1\tCALL\n\t\t\tXRS\n\t\t\tTIMETHET\n# INITIALIZE LOOP\n\t\tDLOAD\tCLEAR\n\t\t\tT\n\t\t\tITSWICH\n\t\tSTODL\tTFI\t\t\t# SAVE TIME FOR LOOP TEST\n\t\t\tDPPOSMAX\n\t\tSTODL\tDELVEE\n\t\t\tMANYFEET\n\t\tSTODL\tHP\n\t\t\tSEC1THET\t\t# 70 DEGREES\n\t\tBON\tDLOAD\n\t\t\tKFLAG\n\t\t\t+2\n\t\t\tSEC2THET\t\t# 330 DEGREES\n\t\tSTCALL\tTHETL\n\t\t\tCONCAUL\nBIS\t\tDLOAD\tSR1\n\t\t\tCSTH\n\t\tSTODL\tCOSTH\n\t\t\tSNTH\n\t\tSR1\n\t\tSTCALL\tSINTH\t\t\t# GET 4 QUADRANT THETA\n\t\t\tARCTRIG\n\t\tBPL\tDAD\n\t\t\t+2\n\t\t\tDPPOSMAX\t\t# PUT THETA BETWEEN 0,1\n\t\tBDSU\tPDDL\n\t\t\tTHETL\n\t\t\tTF\n\t\tDSU\tSIGN\t\t\t# FAST TIMES\n\t\t\tTFI\n\t\tBMN\n\t\t\tRNGETEST\t\t# TIME MUST HAVE A STOP\n# ADVANCE PASSIVE FOR TARGET VECTOR\nCONCAUL\t\tDLOAD\n\t\t\tTTPI\n\t\tDAD\tBON\n\t\t\tTF\n# Page 555\n\t\t\tAVFLAG\n\t\t\tADVCSM\n\t\tSTCALL\tTDEC1\n\t\t\tLEMCONIC\n\t\tGOTO\n\t\t\tJUNCT3\nADVCSM\t\tSTCALL\tTDEC1\n\t\t\tCSMCONIC\n# SAVE BACK VALUES OF HP AND DELVEE\nJUNCT3\t\tVLOAD\n\t\t\tVATT\n\t\tSTOVL\tVPASS4\n\t\t\tRATT\n\t\tSTORE\tRPASS4\n\t\tSTODL\tRTARG\n\t\t\tTF\n\t\tSTODL\tDELLT4\n\t\t\tHP\n\t\tSTODL\tHPO\n\t\t\tDELVEE\n\t\tSTODL\tDELVEO\n# PREPARE FOR LAMBERT\n\t\t\tTTPI\n\t\tSTODL\tINTIME\n\t\t\tXRS\n\t\tSTODL\tRTX1\n\t\t\tHI6ZEROS\n\t\tSETPD\tPDDL\n\t\t\t0D\n\t\t\tEPSFOUR\n\t\tPDVL\n\t\t\tRACT3\n\t\tSTOVL\tRINIT\n\t\t\tVACT3\n\t\tSTCALL\tVINIT\n\t\t\tINITVEL\n# COMPUTE H ET CETERA\n\t\tVLOAD\tVSU\n\t\t\tVTPRIME\n\t\t\tVPASS4\n\t\tABVAL\tPUSH\n\t\tSTOVL\tRELDELV\t\t\t# /V2-VP(TPI+TF)/\n\t\t\tDELVEET3\t\t# V1-VA\n\t\tABVAL\t\t\t\t# /V1-VA/\n\t\tSTORE\tMAGVTPI\n\t\tDAD\tSTADR\n\t\tSTODL\tDELVEE\n\t\t\tXRS\n\t\tSTOVL\tX1\n\t\t\tVIPRIME\n# Page 556\n\t\tVSR*\n\t\t\t0,2\n\t\tSTOVL\tVVEC\n\t\t\tRACT3\n\t\tVSR*\n\t\t\t0,2\n\t\tSTCALL\tRVEC\n\t\t\tPERIAPO\n\t\tLXA,2\tDLOAD\n\t\t\tXRS\t+1\n\t\tSL*\n\t\t\t0,2\n\t\tSTORE\tHP\n# ITSWICH DENOTES INTERPOLATION--SOLUTION ACCEPTANCE IS FORCED\n\t\tBON\tDLOAD\n\t\t\tITSWICH\n\t\t\tENDEN\n\t\t\tHPERMIN\n\t\tDSU\tBMN\n\t\t\tHP\n\t\t\tHALFSAFE\n\t\tPDDL\tDSU\t\t\t# WAS PERICENTER ALT SAFE\n\t\t\tHPERMIN\n\t\t\tHPO\n\t\tBMN\tDSU\t\t\t# (HPLIM-HPO)-(HPLIM-HP)=HP-HPO\n\t\t\tINTERP\t\t\t# SOLUTION AT HAND\n\t\tBMN\tDLOAD\n\t\t\tALARUMS\t\t\t# IT'S GETTING WORSE - SOUND THE ALARM\n\t\t\tCDSEC\nJUNCT1\t\tBOFF\tDCOMP\t\t\t# OFF IS PLUS ON IS MINUS\n\t\t\tKFLAG\n\t\t\t+1\n\t\tSTORE\tDELTEE\nJUNCT2\t\tDLOAD\tDAD\n\t\t\tDELTEE\n\t\t\tTF\n\t\tSTCALL\tTF\n\t\t\tBIS\t\t\t# RECYCLE\nINTERP\t\tSET\tDSU\t\t\t# HP-HPO\n\t\t\tITSWICH\n\t\tNORM\tPDDL\n\t\t\tX1\n\t\t\tDFTMOON\n\t\tDAD\tDSU\n\t\t\tHPERMIN\n\t\t\tHP\n\t\tNORM\tSR1\n\t\t\tX2\n\t\tXSU,2\tDDV\n\t\t\tX1\n# Page 557\n\t\tDMP\tSR*\n\t\t\tDELTEE\n\t\t\t0 \t-1,2\n\t\tSTCALL\tDELTEE\n\t\t\tJUNCT2\nHALFSAFE\tPDDL\tDSU\t\t\t# SAVE HP-HPLIM FOR POSSIBLE\n\t\t\tDELVEE\n\t\t\tDELVEO\t\t\t# SAVE THIS TOO\n\t\tPUSH\tABS\n\t\tDSU\tBMN\n\t\t\tLIMVEL\t\t\t# 2 FT PS\n\t\t\tENDEN\n\t\tDLOAD\tDSU\n\t\t\tHPERMIN\n\t\t\tHPO\n\t\tPDDL\n\t\tBMN\tDLOAD\n\t\t\tLRGRDVO\n\t\tBPL\tDLOAD\n\t\t\tINTERP\n\t\t\tDELTEE\n\t\tSR1\tDCOMP\n\t\tSTCALL\tDELTEE\n\t\t\tJUNCT2\nLRGRDVO\t\tDLOAD\n\t\tBMN\tDLOAD\n\t\t\tJUNCT2\n\t\t\tCLSEC\n\t\tGOTO\n\t\t\tJUNCT1\n# TIME RAN OUT ASSUME SOLUTION IF SAVE PERICENTER\nRNGETEST\tDLOAD\tDSU\n\t\t\tHP\n\t\t\tHPERMIN\n\t\tBMN\tDLOAD\n\t\t\tALARUMS\n\t\t\tTF\n\t\tDSU\n\t\t\tDELTEE\n\t\tSTORE\tTF\t\t\t# TIME OF SOLUTION\nENDEN\t\tVLOAD\n\t\t\tVTPRIME\n\t\tDOT\tPDDL\t\t\t# SG2 WITH MAGNITUDE\n\t\t\tRPASS4\n\t\t\tRELDELV\n\t\tSIGN\tSTADR\t\t\t# NOW SIGN(RELDELV)=SIGN(SG2)\n\t\tSTCALL\tRELDELV\n\t\t\tTRANSANG\t\t# COMPUTE OMEGA T , CENTRAL ANGLE\n\t\tVLOAD\tDOT\n\t\t\tRACT3\n# Page 558\n\t\t\tVIPRIME\t\t\t# SG1\n\t\tSIGN\tBPL\t\t\t# IF POSITIVE THEN SG1 = SG2 OTHERWISE\n\t\t\tRELDELV\n\t\t\tUSEKAY\t\t\t# SIGN(SG2-SG1)=SIGN(SG2)=SIGN(RELDELV)\n\t\tSLOAD\tDCOMP\n\t\t\tDECTWO\n\t\tSIGN\tBPL\n\t\t\tRELDELV\n\t\t\tNEXUS\n\t\tDCOMP\tGOTO\n\t\t\tUSEKAY\t+4\nUSEKAY\t\tSLOAD\tBON\n\t\t\tDECTWO\n\t\t\tKFLAG\n\t\t\tNEXUS\n\t\tDSU\n\t\t\tP21ONENN\nNEXUS\t\tSTODL\tNN1\n\t\t\tHP\n\t\tSTCALL\tPOSTTPI\n\t\t\tQTEMP\n\t\tBANK\t07\n\t\tSETLOC\tXANG\n\t\tBANK\n\t\tCOUNT\t07/XANG\n\n# CENTRAL ANGLE SUBROUTINE\n# \tTHIS SUBROUTINE COMPUTES THE CENTRAL ANGLE OF TRAVEL OF THE\n# PASSIVE VEHICLE DURING THE TRANSFER.\n\nTRANSANG\tSTQ\tSETPD\n\t\t\tSUBEXIT\n\t\t\t0\n\t\tLXA,1\tLXA,2\n\t\t\tXRS\n\t\t\tXRS\t+1\n\t\tVLOAD\tVSR*\n\t\t\tVPASS4\n\t\t\t0,2\n\t\tSTODL*\tVVEC\n\t\t\tMUTABLE\t+2,1\n\t\tPDVL\tVSR*\t\t\t# SQRT MU (+18 OR +15)\t\t\t00D\n\t\t\tRPASS4\n\t\t\t0,2\n\t\tABVAL\tPDDL*\t\t\t# MAGNITUDE OF R (+29 OR +27)\t\t02D\n\t\t\tMUTABLE,1\n\t\tPDVL\tVSQ\t\t\t# 1/MU (+34 OR +28)\t\t\t04D\n\t\t\tVVEC\n\t\tNORM\tDMPR\t\t\t# PUSH LIST AT 02D\n\t\t\tX1\n# Page 559\n\t\tDMP\tSRR*\n\t\t\t02D\n\t\t\t0 \t-3,1\n\t\tBDSU\t\t\t\t# R V**/MU (+6)\n\t\t\tD1/32\n\t\tNORM\tPDDL\n\t\t\tX1\t\t\t# (2 - R V**/MU) \t(+6-N)\n\t\tSR1R\tDDV\t\t\t# MAGNITUDE OF R \t(+30 OR +28)\n\t\tSL*\tPUSH\t\t\t# R/(2 - R V**/MU)\t(+29 OR +27)02D\n\t\t\t0 \t-5,1\n\t\tSR1\tSQRT\n\t\tDMP\n\t\tNORM\tPDDL\t\t\t# ASUBP***\t\t\t\t00D\n\t\t\tX1\n\t\tSR1\tDDV\n\t\tDMP\tSL*\n\t\t\tTF\n\t\t\t0,1\n\t\tPDDL\tNORM\n\t\t\t2PISC\n\t\t\tX1\n\t\tPDDL\tDDV\n\t\tSL*\n\t\t\t0 \t-3,1\t\t# CENTANG = (SQRT(MU/ASUP***)TF)\n\t\tSTCALL\tCENTANG\t\t\t# IN REVOLUTIONS B-0\n\t\t\tSUBEXIT\n\t\tBANK\t35\n\t\tSETLOC\tP17S1\n\t\tBANK\n\t\tCOUNT\t35/P17\n\n# TPI SEARCH DISPLAY ROUTNE\n\nP17\t\tTC\tAVFLAGA\t\t\t# AVFLAG = CSM , SET TRACK + UPDATE FLAGS\n\t\tTC\tP17.1\nP77\t\tTC\tAVFLAGP\t\t\t# AVFLAG = LEM , SET TRACK + UPDATE FLAGS\nP17.1\t\tTC\tP20FLGON\t\t#\tSET UPDATE FLAG\n\t\tCAF\tV06N37\t\t\t#\tDISPLAY TTPI TIME\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tCLEAR\tCALL\n\t\t\tUPDATFLG\n\t\t\tS17.1\t\t\t# UPDATE STATE VECTORS TO TTPI\n\t\tSET\tAXT,1\n\t\t\tUPDATFLG\n\t\tDEC\t2\t\t\t# DELTA H = 2\tK POSITIVE , KFLAG OFF\n\t\tBOFF\tAXT,1\n\t\t\tKFLAG\n\t\t\t+2\n\t\tDEC\t1\t\t\t# DELTA H = 1\tK NEGATIVE , KFLAG ON\n# Page 560\n\t\tSXA,1\tEXIT\n\t\t\tOPTION2\n\t\tCAF\tV06N72\t\t\t# DISPLAY PHI , DELTA H , SEARCH OPTION K\n\t\tTC\tVNCOMP17\n\t\tTC\tINTPRET\n\t\tCLEAR\tSET\n\t\t\tUPDATFLG\n\t\t\tKFLAG\n\t\tSLOAD\tDSU\n\t\t\tOPTION2\t\t\t# RESET KFLAG ON FOR OPTION =1\n\t\t\tP21ONENN\t\t#\t     OFF FOR OPTION =2\n\t\tBHIZ\tCLEAR\n\t\t\t+2\n\t\t\tKFLAG\n\t\tSLOAD\tBHIZ\n\t\t\tXRS\t+1\n\t\t\t+4\n\t\tDLOAD\tGOTO\n\t\t\tHPL\n\t\t\tP17.2\n\t\tDLOAD\n\t\t\tHPE\nP17.2\t\tSTCALL\tHPERMIN\n\t\t\tS17.2\n\t\tSET\tEXIT\n\t\t\tUPDATFLG\nP17.3\t\tCAF\tV06N58\t\t\t# DISPLAY DELTA VTPI , DELTA VTPF , AND H\n\t\tTC\tVNCOMP17\n\t\tCAF\tV06N55\t\t\t# DISPLAY PERICENTER CODE AND CENTRAL ANG.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tGOTOPOOH\t\t# TERMINATE PROGRAM\n\t\tTC\tGOTOPOOH\t\t# END PROGRAM\n\t\tTC\tP17.1\t\t\t# RECYCLE WITH NEW TTPI OR SEARCH OPTION\n\t\tCAF\tTWO\t\t\t# BLANK R2\n\t\tTC\tBLANKET\n\t\tTCF\tENDOFJOB\n\t\tEBANK=\tRTRN\n\nVNCOMP17\tEXTEND\n\t\tQXCH\tQSAVED\n\t\tTS\tVERBNOUN\n\t\tCA\tVERBNOUN\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\t-3\t\t\t# TERMINATE ILLEGAL REDISPLAY\n\t\tTC\tQSAVED\t\t\t# PROCEED\n\t\tCS\tMPAC\t\t\t# RECYCLE WITH NEW TPI TIME\n\t\tAD\tBIT6\t\t\t# OR PROCEED WITH NEW SEARCH OPTION\n\t\tEXTEND\n# Page 561\n\t\tBZF\tP17.1\n\t\tTC\tVNCOMP17 +3\nALARUMS\t\tSET\tEXIT\n\t\t\tUPDATFLG\n\t\tTC\tALARM\n\t\tOCT\t00124\t\t\t# NO SAFE PERICENTER IN THIS SECTOR\n\t\tCAF\tV05N09\n\t\tTC\tVNCOMP17\n\t\tTC\tGOTOPOOH\t\t# PROCEED ILLEGAL TERMINATE PROGRAM\nV06N72\t\tVN\t0672\n"
  },
  {
    "path": "Comanche055/TVCDAPS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTVCDAPS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t961-978\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrections:  Eliminated an extraneous EXTEND,\n#\t\t\t\tadded a missing instruction to PFORWARD.\n#\t\t2000-05-21 RSB\tWrong opcode was used with DELBRTMP and\n#\t\t\t\tDELBRTMP +1 operands in 4 places.  Corrected\n#\t\t\t\tan MP operation in 2CASFLTR.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 961\n# PROGRAM NAME....TVCDAP, CONSISTING OF PITCHDAP, YAWDAP, ETC.\n# LOG SECTION...TVCDAPS\t\t\t\tSUBROUTINE...DAPCSM\n# MODIFIED BY SCHLUNDT\t\t\t\t21 OCTOBER 1968\n# FUNCTIONAL DESCRIPTION....\n\n#\tSELF-PERPETUATING T5 TASKS WHICH GENERATE THE COMMAND SIGNALS\n#\tFOR THE PITCH AND YAW SPS GIMBAL ACTUATORS DURING TVC (SPS) BURNS,\n#\tIN RESPONSE TO BODY-AXIS RATE COMMANDS FROM CROSS-PRODUCT STEERING\n#\t(S40.8).  IF NO STEERING (IMPULSIVE BURNS) MAINTAINS ATTITUDE-HOLD\n#\tABOUT THE REFERENCE (INITIAL) DIRECTIONS (ZERO RATE COMMANDS).\n\n#\tTHE PITCH AND YAW LOOPS ARE SEPARATE, BUT STRUCTURED IDENTICALLY.\n#\tEACH ATTITUDE-RATE LOOP INCLUDES GIMBAL ANGLE RATE DERIVATION,\n#\tGIMBAL/BODY AXIS TRANSFORMATION, BODY-AXIS ATTITUDE ERROR\n#\tINTEGRATION WITH ERROR LIMITING, THE GENERALIZED 6TH-ORDER FILTER\n#\tFOR CSM OR CSM/LM OPERATION. A FILTER OUTPUT LIMITER.\n#\tCG-OFFSET TRACKER FILTER, AND THE CG-TRACKER MINOR LOOP.\n\n#\tTHE DAPS ARE CYCLIC, CALLING EACH OTHER AT 1/2 THE DAP SAMPLE\n#\tTIME, AS DETERMINED BY T5TVCDT.  THE ACTUATOR COMMANDS ARE\n#\tREGENERATED AS ANALOG VOLTAGES BY THE OPTICS ERROR COUNTERS, WHICH\n#\tTRANSMIT THE SIGNAL TO THE ACTUATOR SERVOS WHEN THERE IS PROPER CDU\n#\tMODING.\n\n# CALLING SEQUENCE.... (TYPICALLY)\n\n#\tT5 CALL OF TVCDAPON (TVCINITIALIZE) BY DOTVCON (P40)\n#\tT5 CALL OF DAPINIT (TVCDAPS) BY TVCINIT4 (TVCINITIALIZE)\n#\tT5 CALL OF PITCHDAP BY DAPINIT\n#\tT5 CALL OF YAWDAP BY PITCHDAP\n#\tT5 CALL OF PITCHDAP BY YAWDAP\n#\t\t   ETC.\n#\t(AUTOMATIC SEQUENCING FROM TVCDAPON)\n\n# NORMAL EXIT MODE....RESUME\n\n# ALARM OR ABORT EXIT MODES....NONE\n\n# SUBROUTINES CALLED....\n\n#\tHACK FOR STROKE TEST (V68) WAVEFORM GENERATION\n#\tPCOPY, YCOPY FOR COPY-CYCLES (USED ALSO BY TVC RESTART PACKAGE)\n#\tDAPINIT FOR INITIAL CDUS FOR RATE MEASUREMENTS\n#\tERRORLIM, ACTLIM FOR INPUT (ATTITUDE-ERROR INTEGRATION) AND\n#\t\tOUTPUT (ACTUATOR COMMAND) LIMITING, COMMON TO PITCH AND\n#\t\tYAW DAPS\n#\tFWDFLTR (INCLUDING OPTVARK) AND PRECOMP, TO COMPUTE FILTER\n#\t\tOUTPUTS AND STORAGE VALUES\n#\tRESUME\n\n# Page 962\n# OTHER INTERFACES....\n\n#\tS40.8 CROSS-PRODUCT STEERING FOR BODY AXIS RATE COMMANDS OMEGAY,ZC\n#\tS40.15 FOR THE INITIAL DAP GAINS VARK AND 1/CONACC\n#\tTVCEXECUTIVE FOR DAP GAIN UPDATES AND TMC LOOP OPERATIONS\n#\tTVCRESTART PACKAGE FOR TVC RESTART PROTECTION.\n\n# ERASABLE INITIALIZATION REQUIRED....\n\n# \tPAD-LOAD ERASABLES ( SEE ERASABLE ASSIGNMENTS )\n#\tCONFIGURATION BITS (14, 13) OF DAPDATR1 AS IN R03\n#\tENGINE-ON BIT (11.13) FOR RESTARTS\n#\tTVCPHASE FOR RESTARTS ( SEE DOTVCON, AND TVCINIT4 )\n#\tT5 BITS (15,14 OF FLAGWRD6) FOR RESTARTS\n#\tMISCELLANEOUS VARIABLES SET UP OR COMPUTED BY TVCDAPON....TVCINIT4,\n#\t\tINCLUDING THE ZEROING OF TEMPORARIES BY MRCLEAN\n#\tCDUX,Y,Z AND SINCDUX....COSCDUX AS PREPARED BY QUICTRIG (WITH\n#\t\tUPDATES EVERY 1/2 SECOND)\n#\tALSO G+N PRIMARY, TVC ENABLE, AND OPTICS ERROR COUNTER ENABLE\n#\t\tUNLESS BENCH-TESTING.\n#\n# OUTPUT....\n#\n#\tTVCPITCH AND TVCYAW WITH COUNTER RELEASE (11.14 AND 11.13 INCREMEN-\n#\t\tTAL COMMANDS TO OPTICS ERROR COUNTERS), FILTER NODES, BODY-\n#\t\tAXIS ATTITUDE ERROR INTEGRATOR, TOTAL ACTUATOR COMMANDS,\n#\t\tOFFSET-TRACKER-FILTER OUTPUTS, ETC.\n# DEBRIS....\n\n#\tMUCH, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY\n\n\t\tBANK\t17\n\t\tSETLOC\tDAPS2\n\t\tBANK\n\n\t\tEBANK=\tBZERO\n\n\t\tCOUNT*\t$$/DAPS\n\n# Page 963\n# PITCH TVCDAP STARTS HERE....(INCORPORATES CSM/LEM DAP FILTER, MODOR DESIGN)\n\nPITCHDAP\tLXCH\tBANKRUPT\t# T5 ENTRY, NORMAL OR VIA DAPINIT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tCAF\tYAWT5\t\t# SET UP T5 CALL FOR YAW AUTOPILOT (LOW-\n\t\tTS\tT5LOC\t\t#\tORDER PART OF 2CADR ALREADY THERE)\n\t\tCAE\tT5TVCDT\n\t\tTS\tTIME5\n\nPSTROKER\tCCS\tSTROKER\t\t# (STRKFLG) CHECK FOR STROKE TEST\n\t\tTC\tHACK\t\t# TEST-START OR TEST-IN-PROGRESS\n\t\tTCF\t+2\t\t# NO-TEST\n\t\tTC\tHACK\t\t# TEST-IN-PROGRESS\n\nPCDUDOTS\tCAE\tCDUY\t\t# COMPUTE CDUYDOT (USED BY PITCH AND YAW)\n\t\tXCH\tPCDUYPST\n\t\tEXTEND\n\t\tMSU\tPCDUYPST\n\t\tTCR\tRLIMTEST\t#\tRATE TEST\n\t\tTS\tMCDUYDOT\t#\t(MINUS, SC.AT 1/2TVCDT REVS/SEC)\n\n\t\tCAE\tCDUZ\t\t# COMPUTE CDUZDOT (USED BY PITCH AND YAW)\n\t\tXCH\tPCDUZPST\n\t\tEXTEND\n\t\tMSU\tPCDUZPST\n\t\tTCR\tRLIMTEST\t#\tRATE TEST\n\t\tTS\tMCDUZDOT\t#\t(MINUS, SC.AT 1/2TVCDT REVS/SEC)\n\t\tTCF\tPINTEGRL\n\nRLIMTEST\tTS\tTTMP1\t\t# TEST FOR EXCESSIVE CDU RATES (GREATER\n\t\tEXTEND\t\t\t#\tTHAN 2.33 DEG IN ONE SAMPLE PERIOD)\n\t\tMP\t1/RTLIM\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tCAF\tZERO\n\t\tTS\tTTMP1\n\t\tCAE\tTTMP1\n\t\tTC\tQ\n\nPINTEGRL\tEXTEND\t\t\t# COMPUTE INTEGRAL OF BODY-AXIS PITCH-RATE\n\t\tDCA\tPERRB\t\t#\tERROR, SC.AT B-1 REVS\n\t\tDXCH\tERRBTMP\n\n\t\tEXTEND\n\t\tDCA\tOMEGAYC\n\t\tDAS\tERRBTMP\n\n# Page 964\n\t\tCS\tCOSCDUZ\t\t# PREPARE BODY-AXIS PITCH RATE, OMEGAYB\n\t\tEXTEND\n\t\tMP\tCOSCDUX\n\t\tDDOUBL\n\t\tEXTEND\n\t\tMP\tMCDUYDOT\n\t\tDDOUBL\n\t\tDXCH\tOMEGAYB\n\n\t\tCS\tMCDUZDOT\n\t\tEXTEND\n\t\tMP\tSINCDUX\n\t\tDDOUBL\n\t\tDAS\tOMEGAYB\t\t# (COMPLETED OMEGAYB, SC.AT 1/2TVCDT REVS)\n\n\t\tEXTEND\t\t\t# PICK UP -OMEGAYB (SIGN CHNG, INTEGRATE)\n\t\tDCS\tOMEGAYB\n\t\tDAS\tERRBTMP\n\nPERORLIM\tTCR\tERRORLIM\t# PITCH BODY-AXIS-ERROR INPUT LIMITER\n\nPFORWARD\tEXTEND\t\t\t# \tPREPARE THE FILTER STORAGE LOCATIONS\n\t\tDCA\tPTMP1\t\t#\tFOR THE PITCH CHANNEL\n\t\tDXCH\tTMP1\n\t\tEXTEND\n\t\tDCA\tPTMP3\n\t\tDXCH\tTMP3\n\t\tEXTEND\n\t\tDCA\tPTMP5\n\t\tDXCH\tTMP5\n\n\t\tTCR\tFWDFLTR\t\t# GO COMPUTE PRESENT OUTPUT\n\t\t\t\t\t# (INCLUDES VARIABLE GAIN PACKAGE)\n\nPOFFSET\t\tEXTEND\n\t\tDCA\tPDELOFF\n\t\tDAS\tCMDTMP\t\t# NO SCALED AT B+0 ASCREV\n\nPACLIM\t\tTCR\tACTLIM\t\t# ROUND OFF & LIMIT PITCH ACTUATOR COMMAND\n\nPOUT\t\tCS\tPCMD\t\t# INCREMENTAL PITCH COMMAND\n\t\tAD\tCMDTMP\n\t\tADS\tTVCPITCH\t# UPDATE THE ERROR COUNTER (NO RESTART-\n\t\t\t\t\t#\tPROTECT. SINCE ERROR CNTR ZEROED)\n\n\t\tCAF\tBIT11\t\t# BIT FOR TVCPITCH COUNT RELEASE\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\nPPRECOMP\tEXTEND\t\t\t#\tPREPARE THE FILTER STORAGE FOR PITCH\n# Page 965\n\t\tDCA\tPTMP2\n\t\tDXCH\tTMP2\n\t\tEXTEND\n\t\tDCA\tPTMP4\n\t\tDXCH\tTMP4\n\t\tEXTEND\n\t\tDCA\tPTMP6\n\t\tDXCH\tTMP6\n\n\t\tTCR\tPRECOMP\t\t#\tTO THE FILTER FOR PRECOMPUTATION\n\nDELBARP\t\tCAE\tDELPBAR +1\t# UPDATE PITCH OFFSET-TRACKER-FILTER\n\t\tEXTEND\n\t\tMP\tE(-AT)\n\t\tTS\tDELBRTMP +1\n\t\tCAE\tDELPBAR\n\t\tEXTEND\n\t\tMP\tE(-AT)\n\t\tDAS\tDELBRTMP\n\t\tCAE\tCMDTMP\n\t\tEXTEND\n\t\tMP\t1-E(-AT)\n\t\tDAS\tDELBRTMP\n\nPCOPYCYC\tTCR\tPCOPY\t\t# PITCH COPYCYCLE\n\nPDAPEND\t\tTCF\tRESUME\t\t# PITCH DAP COMPLETED\n# Page 966\n# PITCH TVCDAP COPYCYCLE SUBROUTINE (CALLED VIA PITCH TVCDAP OR TVC RESTART PACKAGE)\n\nPCOPY\t\tINCR\tTVCPHASE\t# RESTART-PROTECT THE COPYCYCLE.\t(1)\n\t\t\t\t\t#\tNOTE POSSIBLE RE-ENTRY FROM RESTART\n\t\t\t\t\t#\tPACKAGE, SHOULD A RESTART OCCUR\n\t\t\t\t\t#\tDURING PITCH COPYCYCLE.\n\n\t\tEXTEND\n\t\tDCA\tTMP1\n\t\tDXCH\tPTMP1\n\t\tEXTEND\n\t\tDCA\tTMP2\n\t\tDXCH\tPTMP2\n\t\tEXTEND\n\t\tDCA\tTMP3\n\t\tDXCH\tPTMP3\n\t\tEXTEND\n\t\tDCA\tTMP4\n\t\tDXCH\tPTMP4\n\t\tEXTEND\n\t\tDCA\tTMP5\n\t\tDXCH\tPTMP5\n\t\tEXTEND\n\t\tDCA\tTMP6\n\t\tDXCH\tPTMP6\n\nPMISC\t\tEXTEND\t\t\t# MISC....PITCH-RATE-ERROR INTEGRATOR\n\t\tDCA\tERRBTMP\n\t\tTS\tAK1\t\t#\tFOR PITCH NEEDLES, SC.AT B-1 REVS\n\t\tDXCH\tPERRB\n\n\t\tCAE\tCMDTMP\t\t#\tPITCH ACTUATOR COMMAND\n\t\tTS\tPCMD\n\n\t\tEXTEND\t\t\t# \tPITCH OFFSET-TRACKER-FILTER\n\t\tDCA\tDELBRTMP\n\t\tDXCH\tDELPBAR\n\n\t\tINCR\tTVCPHASE\t# PITCH COPYCYCLE COMPLETED\t\t(2)\n\n\t\tTC\tQ\n\n# Page 967\n# YAW TVCDAP STARTS HERE....(INCORPORATES CSM/LEM DAP FILTER, MODOR DESIGN)\n\nYAWDAP\t\tLXCH\tBANKRUPT\t# T5 ENTRY, NORMAL\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tCAF\tPITCHT5\t\t# SET UP T5 CALL FOR PITCH AUTOPILOT (LOW-\n\t\tTS\tT5LOC\t\t#\tORDER PART OF 2CADR ALREADY THERE)\n\t\tCAE\tT5TVCDT\n\t\tTS\tTIME5\n\nYSTROKER\tCCS\tSTROKER\t\t# (STRKFLG) CHECK FOR STROKE TEST\n\t\tTC\tHACK\t\t# TEST-START OR TEST-IN-PROGRESS\n\t\tTCF\t+2\t\t# NO-TEST\n\t\tTC\tHACK\t\t# TEST-IN-PROGRESS\n\n\t\t\t\t\t# USE BODY RATES FROM PITCHDAP (PCDUDOTS)\n\nYINTEGRL\tEXTEND\t\t\t# COMPUTE INTEGRAL OF BODY-AXIS YAW-RATE\n\t\tDCA\tYERRB\t\t# \tERROR, SC.AT B-1 REVS\n\t\tDXCH\tERRBTMP\n\n\t\tEXTEND\n\t\tDCA\tOMEGAZC\n\t\tDAS\tERRBTMP\n\n\t\tCAE\tCOSCDUZ\t\t# PREPARE BODY-AXIS YAW-RATE, OMEGAZB\n\t\tEXTEND\n\t\tMP\tSINCDUX\n\t\tDDOUBL\n\t\tEXTEND\n\t\tMP\tMCDUYDOT\n\t\tDDOUBL\n\t\tDXCH\tOMEGAZB\n\n\t\tCS\tMCDUZDOT\n\t\tEXTEND\n\t\tMP\tCOSCDUX\n\t\tDDOUBL\n\t\tDAS\tOMEGAZB\t\t# (COMPLETED OMEGAZB, SC.AT 1/2TVCDT REVS)\n\n\t\tEXTEND\t\t\t# PICK UP -OMEGAZB (SIGN CHNG, INTEGRATE)\n\t\tDCS\tOMEGAZB\n\t\tDAS\tERRBTMP\n\nYERORLIM\tTCR\tERRORLIM\t# YAW\t  BODY-AXIS-ERROR INPUT LIMITER\n\nYFORWARD\tEXTEND\t\t\t# \tPREPARE THE FILTER STORAGE LOCATIONS\n\t\tDCA\tYTMP1\t\t#\tFOR THE YAW CHANNEL\n# Page 968\n\t\tDXCH\tTMP1\n\t\tEXTEND\n\t\tDCA\tYTMP3\n\t\tDXCH\tTMP3\n\t\tEXTEND\n\t\tDCA\tYTMP5\n\t\tDXCH\tTMP5\n\n\t\tTCR\tFWDFLTR\t\t# GO COMPUTE PRESENT OUTPUT\n\t\t\t\t\t# (INCLUDES VARIABLE GAIN PACKAGE)\n\nYOFFSET\t\tEXTEND\n\t\tDCA\tYDELOFF\n\t\tDAS\tCMDTMP\t\t# NOW SCALED AT B+0 ASCREV\n\nYACLIM\t\tTCR\tACTLIM\t\t# ROUND OFF & LIMIT YAW ACTUATOR COMMAND\n\nYOUT\t\tCS\tYCMD\t\t# INCREMENTAL YAW COMMAND\n\t\tAD\tCMDTMP\n\t\tADS\tTVCYAW\t\t# UPDATE THE ERROR COUNTER (NO RESTART-\n\t\t\t\t\t#\tPROTECT, SINCE ERROR CNTR ZEROED)\n\n\t\tCAF\tBIT12\t\t# BIT FOR TVCYAW COUNT RELEASE\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\nYPRECOMP\tEXTEND\t\t\t#\tPREPARE THE FILTER STORAGE FOR YAW\n\t\tDCA\tYTMP2\n\t\tDXCH\tTMP2\n\t\tEXTEND\n\t\tDCA\tYTMP4\n\t\tDXCH\tTMP4\n\t\tEXTEND\n\t\tDCA\tYTMP6\n\t\tDXCH\tTMP6\n\n\t\tTCR\tPRECOMP\t\t#\tTO THE FILTER FOR PRECOMPUTATION\n\nDELBARY\t\tCAE\tDELYBAR +1\t# UPDATE YAW OFFSET-TRACKER-FILTER\n\t\tEXTEND\n\t\tMP\tE(-AT)\n\t\tTS\tDELBRTMP +1\n\t\tCAE\tDELYBAR\n\t\tEXTEND\n\t\tMP\tE(-AT)\n\t\tDAS\tDELBRTMP\n\t\tCAE\tCMDTMP\n\t\tEXTEND\n\t\tMP\t1-E(-AT)\n\t\tDAS\tDELBRTMP\n\n# Page 969\nYCOPYCYC\tTCR\tYCOPY\t\t# YAW COPYCYCLE\n\nYDAPEND\t\tTCF\tRESUME\t\t# YAW DAP COMPLETED\n\n# Page 970\n# TVCDAP COPYCYCLE SUBROUTINE (CALLED VIA YAW   TVCDAP OR TVC RESTART PACKAGE)\n\nYCOPY\t\tINCR\tTVCPHASE\t# RESTART-PROTECT THE COPYCYCLE.\t(3)\n\t\t\t\t\t#\tNOTE POSSIBLE RE-ENTRY FROM RESTART\n\t\t\t\t\t#\tPACKAGE, SHOULD A RESTART OCCUR\n\t\t\t\t\t#\tDURING YAW   COPYCYCLE.\n\n\t\tEXTEND\n\t\tDCA\tTMP1\n\t\tDXCH\tYTMP1\n\t\tEXTEND\n\t\tDCA\tTMP2\n\t\tDXCH\tYTMP2\n\t\tEXTEND\n\t\tDCA\tTMP3\n\t\tDXCH\tYTMP3\n\t\tEXTEND\n\t\tDCA\tTMP4\n\t\tDXCH\tYTMP4\n\t\tEXTEND\n\t\tDCA\tTMP5\n\t\tDXCH\tYTMP5\n\t\tEXTEND\n\t\tDCA\tTMP6\n\t\tDXCH\tYTMP6\n\nYMISC\t\tEXTEND\t\t\t# MISC....YAW-RATE-ERROR INTEGRATOR\n\t\tDCA\tERRBTMP\n\t\tTS\tAK2\t\t#\tFOR YAW   NEEDLES, SC.AT B-1 REVS\n\t\tDXCH\tYERRB\n\n\t\tCAE\tCMDTMP\n\t\tTS\tYCMD\n\n\t\tEXTEND\n\t\tDCA\tDELBRTMP\n\t\tDXCH\tDELYBAR\n\n\t\tCAF\tZERO\t\t# YAW\t COPYCYCLE COMPLETED\n\t\tTS\tTVCPHASE\t#\tRESET TVCPHASE\n\n\t\tTC\tQ\n\n# Page 971\n# SUBROUTINES COMMON TO BOTH PITCH AND YAW DAPS....\n\n\n# INITIALIZATION PACKAGE FOR CDURATES....\n\nDAPINIT\t\tLXCH\tBANKRUPT\t# T5 RUPT ENTRY (CALLED BY TVCINT4)\n\n\t\tCAF\tNEGONE\t\t# \tSET UP\n\t\tAD\tT5TVCDT\t\t#\tT5 CALL FOR PITCHDAP IN TVCDT SECS\n\t\tAD\tNEGMAX\t\t#\t(T5TVCDT = POSMAX - TVCDT/2 +1)\n\t\tAD\tT5TVCDT\n\t\tTS\tTIME5\n\t\tCAF\tPITCHT5\t\t#\t(BBCON ALREADY THERE)\n\t\tTS\tT5LOC\n\n\t\tCAE\tCDUY\t\t# READ AND STORE CDUS FOR DIFFERENTIATOR\n\t\tTS\tPCDUYPST\t#\tPAST-VALUES\n\t\tCAE\tCDUZ\n\t\tTS\tPCDUZPST\n\n\t\tTCF\tNOQRSM\n\n# BODY-AXIS-ERROR   INPUT LIMITER PACKAGE....\n\nERRORLIM\tCAE\tERRBTMP\t\t# CHECK FOR INPUT-ERROR LIMIT\n\t\tEXTEND\t\t\t#\tCHECKS UPPER WORD ONLY\n\t\tMP\t1/ERRLIM\n\t\tEXTEND\n\t\tBZF\t+6\n\t\tCCS\tERRBTMP\n\t\tCAF\tERRLIM\n\t\tTCF\t+2\n\t\tCS\tERRLIM\n\t\tTS\tERRBTMP\t\t# LIMIT WRITES OVER UPPER WORD ONLY\n\n\t\tTC\tQ\n\n\n# ACTUATOR-COMMAND LIMITER PACKAGE....\n\nACTLIM\t\tCAE\tCMDTMP\t+1\t# ROUND UP FOR OUTPUT\n\t\tDOUBLE\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tAD\tCMDTMP\n\n\t\tEXTEND\t\t\t# CHECK FOR ACTUATOR COMMAND LIMIT\n\t\tMP\t1/ACTSAT\n\t\tEXTEND\n# Page 972\n\t\tBZF\t+6\n\t\tCCS\tCMDTMP\t\t# APPLY LIMITS\n\t\tCAF\tACTSAT\n\t\tTCF\t+2\n\t\tCS\tACTSAT\n\t\tTS\tCMDTMP\t\t# LIMITS WRITE OVER CMDTMP\n\n\t\tTC\tQ\n\n\n# FILTER COMPUTATIONS FOR PRESENT OUTPUT................\n\nFWDFLTR\t\tCAF\tZERO\n\t\tTS\tDAP1\n\t\tTS\tDAP2\n\t\tTS\tDAP3\n\t\tTS\tCMDTMP\n\n\t\tTS\tDELBRTMP\n\n1DAPCAS\t\tCAE\tERRBTMP +1\t# FIRST DAP CASCADE\n\t\tEXTEND\n\t\tMP\tN10\t\t#\tN10\n\t\tTS\tDAP1\t+1\n\t\tCA\tERRBTMP\n\t\tEXTEND\n\t\tMP\tN10\t\t#\tN10\n\t\tDAS\tDAP1\n\t\tDXCH\tTMP1\n\t\tDAS\tDAP1\n\n2DAPCAS\t\tCAE\tDAP1\t+1\t# SECOND DAP CASCADE\n\t\tEXTEND\n\t\tMP\tN10\t+5\t#\tN20\n\t\tTS\tDAP2\t+1\n\t\tCA\tDAP1\n\t\tEXTEND\n\t\tMP\tN10\t+5\t#\tN20\n\t\tDAS\tDAP2\n\t\tDXCH\tTMP3\n\t\tDAS\tDAP2\n\n\t\tCAE\tDAPDATR1\t# TEST FOR LEM ON OR OFF\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tTCF\t3DAPCAS\t\t# LEM ON\n\t\tEXTEND\t\t\t# LEM OFF\n\t\tDCA\tDAP2\n\t\tDXCH\tDAP3\n\t\tTCF\tOPTVARK\n\n# Page 973\n3DAPCAS\t\tCAE\tDAP2\t+1\t# THIRD DAP CASCADE\n\t\tEXTEND\n\t\tMP\tN10\t+10D\t#\tN30\n\t\tTS\tDAP3\t+1\n\t\tCA\tDAP2\n\t\tEXTEND\n\t\tMP\tN10\t+10D\t#\tN30\n\t\tDAS\tDAP3\n\t\tDXCH\tTMP5\n\t\tDAS\tDAP3\n\nOPTVARK\t\tCS\tDAP3\t+1\t# VARIABLE GAIN PACKAGE\n\t\tEXTEND\t\t\t# (ALSO, SIGN CHANGE IN FORWARD LOOP)\n\t\tMP\tVARK\t\t# SCALED AT 1/(8 ASCREV) OF ACTUAL VALUE\n\t\tTS\tCMDTMP\t+1\n\t\tCS\tDAP3\n\t\tEXTEND\n\t\tMP\tVARK\n\t\tDAS\tCMDTMP\n\n\t\tDXCH\tCMDTMP\t\t# FIX UP SCALING - SCALED B+3 ASCREVS\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDXCH\tCMDTMP\t\t#\t\t - SCALED B+1 ASCREVS\n\t\t\t\t\t# NOTE - THERE IS AN INHERANT GAIN OF\n\t\t\t\t\t# (B+1 ASCREVS) ON THE OUTPUT DACS.\n\n\t\tTC\tQ\n\n\n# FILTER PRECOMPUTATIONS FOR NEXT PASS................\n\nPRECOMP\t\tCAF\tZERO\t\t# ***** FIRST CASCADE FILTER **********\n\t\tTS\tTTMP1\n\t\tTS\tTTMP2\n\n\t\tCA\tERRBTMP +1\t# MULTIPLY INPUT BY\n\t\tEXTEND\n\t\tMP\tN10\t+1\t#\tN11/2\n\t\tTS\tTTMP1\t+1\n\t\tCA\tERRBTMP\n\t\tEXTEND\n\t\tMP\tN10\t+1\t#\tN11/2\n\t\tDAS\tTTMP1\n\n\t\tCS\tDAP1\t+1\t# MULTIPLY OUTPUT BY\n\t\tEXTEND\n\t\tMP\tN10\t+3\t# \tD11/2\n\t\tTS\tTTMP2\t+1\n\t\tCS\tDAP1\n\n# Page 974\n\t\tEXTEND\n\t\tMP\tN10\t+3\t#\tD11/2\n\t\tDAS\tTTMP2\n\n\t\tDXCH\tTTMP2\n\t\tDAS\tTTMP1\n\t\tDXCH\tTTMP1\n\t\tDDOUBL\n\t\tDAS\tTMP2\n\n\t\tDXCH\tTMP2\n\t\tDXCH\tTMP1\n\n\t\tCAF\tZERO\n\t\tTS\tTTMP1\n\t\tTS\tTMP2\n\n\t\tCA\tERRBTMP\t+1\t# MULTIPLY INPUT BY\n\t\tEXTEND\t\t\t# SECOND-ORDER NUMERATOR COEFF.\n\t\tMP\tN10\t+2\t#\tN12\n\t\tTS\tTTMP1\t+1\n\t\tCA\tERRBTMP\n\t\tEXTEND\n\t\tMP\tN10\t+2\t# \tN12\n\t\tDAS\tTTMP1\n\n\t\tCS\tDAP1\t+1\t# MULTIPLY OUTPUT BY\n\t\tEXTEND\n\t\tMP\tN10\t+4\t# \tD12\n\t\tTS\tTMP2\t+1\n\t\tCS\tDAP1\n\t\tEXTEND\n\t\tMP\tN10\t+4\t#\tD12\n\t\tDAS\tTMP2\n\n\t\tDXCH\tTTMP1\n\t\tDAS\tTMP2\n\n2CASFLTR\tCAF\tZERO\t\t# *****SECOND CASCADE FILTER*****\n\t\tTS\tTTMP1\n\t\tTS\tTTMP2\n\n\t\tCA\tDAP1\t +1\t# MULTIPLY INPUT BY\n\t\tEXTEND\n\t\tMP\tN10\t+6\t#\tN21/2\n\t\tTS\tTTMP1\t+1\n\t\tCA\tDAP1\n\t\tEXTEND\n\t\tMP\tN10\t+6\t#\tN21/2\n# Page 975\n\t\tDAS\tTTMP1\n\n\t\tCS\tDAP2\t+1\t# MULTIPLY OUTPUT BY\n\t\tEXTEND\n\t\tMP\tN10\t+8D\t# \tD21/2\n\t\tTS\tTTMP2\t+1\n\t\tCS\tDAP2\n\t\tEXTEND\n\t\tMP\tN10\t+8D\t#\tD21/2\n\t\tDAS\tTTMP2\n\n\t\tDXCH\tTTMP2\n\t\tDAS\tTTMP1\n\t\tDXCH\tTTMP1\n\t\tDDOUBL\n\t\tDAS\tTMP4\n\n\t\tDXCH\tTMP4\n\t\tDXCH\tTMP3\n\n\t\tCAF\tZERO\n\t\tTS\tTTMP1\n\t\tTS\tTMP4\n\n\t\tCA\tDAP1\t+1\t# MULTIPLY INPUT BY\n\t\tEXTEND\n\t\tMP\tN10\t+7\t#\tN22\n\t\tTS\tTTMP1\t+1\n\t\tCA\tDAP1\n\t\tEXTEND\n\t\tMP\tN10\t+7\t# \tN22\n\t\tDAS\tTTMP1\n\n\t\tCS\tDAP2\t+1\t# MULTIPLY OUTPUT BY\n\t\tEXTEND\n\t\tMP\tN10\t+9D\t# \tD22\n\t\tTS\tTMP4\t+1\n\t\tCS\tDAP2\n\t\tEXTEND\n\t\tMP\tN10\t+9D\t#\tD22\n\t\tDAS\tTMP4\n\n\t\tDXCH\tTTMP1\n\t\tDAS\tTMP4\n\n\n\t\tCAE\tDAPDATR1\t# TEST FOR LEM ON OR OFF\n\t\tMASK\tBIT13\n\t\tCCS\tA\n\t\tTC\tQ\t\t# EXIT IF LEM OFF\n\n# Page 976\n3CASFLTR\tCAF\tZERO\t\t# *****THIRD CASCADE FILTER*****\n\t\tTS\tTTMP1\n\t\tTS\tTTMP2\n\n\t\tCA\tDAP2\t +1\t# MULTIPLY INPUT BY (1/2)\n\t\tEXTEND\n\t\tMP\tN10\t+11D\t#\tN31/2\n\t\tTS\tTTMP1\t+1\n\t\tCA\tDAP2\n\t\tEXTEND\n\t\tMP\tN10\t+11D\t#\tN31/2\n\t\tDAS\tTTMP1\n\n\t\tCS\tDAP3\t+1\n\t\tEXTEND\n\t\tMP\tN10\t+13D\t# \tD31/2\n\t\tTS\tTTMP2\t+1\n\t\tCS\tDAP3\n\t\tEXTEND\n\t\tMP\tN10\t+13D\t#\tD31/2\n\t\tDAS\tTTMP2\n\n\t\tDXCH\tTTMP2\n\t\tDAS\tTTMP1\n\t\tDXCH\tTTMP1\n\t\tDDOUBL\n\t\tDAS\tTMP6\n\n\t\tDXCH\tTMP6\n\t\tDXCH\tTMP5\n\n\t\tCAF\tZERO\n\t\tTS\tTTMP1\n\t\tTS\tTMP6\n\n\t\tCA\tDAP2\t+1\t# MULTIPLY INPUT BY\n\t\tEXTEND\n\t\tMP\tN10\t+12D\t#\tN32\n\t\tTS\tTTMP1\t+1\n\t\tCA\tDAP2\n\t\tEXTEND\n\t\tMP\tN10\t+12D\t# \tN32\n\t\tDAS\tTTMP1\n\n\t\tCS\tDAP3\t+1\n\t\tEXTEND\n\t\tMP\tN10\t+14D\t# \tD32\n\t\tTS\tTMP6\t+1\n\t\tCS\tDAP3\n\t\tEXTEND\n# Page 977\n\t\tMP\tN10\t+14D\t#\tD32\n\t\tDAS\tTMP6\n\n\t\tDXCH\tTTMP1\n\t\tDAS\tTMP6\n\n\t\tTC\tQ\n\n# Page 978\n# CONSTANTS FOR AUTOPILOTS\n\n# NOTE....1 ASCREV (ACTUATOR CMD SCALING) = 85.41 ARCSEC/BIT OR 1.07975111 REVS (85.41x16384/3600/360)\n\n#\t  1 SPASCREV (SPECIAL ACTUATOR CMD SCALING) = 1.04620942 REVS\n\nACTSAT\t\tDEC\t253\t\t# ACTUATOR LIMIT (6 DEG), SC.AT 1ASCREV\n1/ACTSAT\tDEC\t.0039525692\t# RECIPROCAL (1/253)\n\nERRLIM\t\tEQUALS\tBIT13\t\t# FILTER INPUT LIMIT....B-3 REVS (45DEG),\n1/ERRLIM\tEQUALS\tBIT3\t\t# \tSC.AT B-1 REV, AND ITS RECIPROCAL\n\nPITCHT5\t\tGENADR\tPITCHDAP\t# UPPER WORDS OF T5 2CADRS, LOWER WORDS\nDAPT5\t\tGENADR\tDAPINIT\t\t#\t(BBCON) ALREADY THERE.  ORDER IS\nYAWT5\t\tGENADR\tYAWDAP\t\t#\tREQUIRED.\n\n1/RTLIM\t\tDEC\t0.004715\t# .004715(CDUDIF) = 0 IF CDUIF < 2.33 DEG\n1-E(-AT)\tOCT\t00243\t\t# AT = .01SEC....EITHER(1/A=4SEC, T=40MS),\nE(-AT)\t\tOCT\t37535\t\t#\t\t     OR(1/A=8SEC, T=80MS)\n"
  },
  {
    "path": "Comanche055/TVCEXECUTIVE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTVCEXECUTIVE.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t945-950\n# Mod history:\t2009-05-12 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrections:  CAE -> CAF in one place.\n#\t\t2009-05-21 RSB\tIn 1SHOTCHK, a CAF SEVEN was corrected to\n#\t\t\t\tCAF SIX.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 945\n# PROGRAM NAME....\tTVCEXECUTIVE, CONSISTING OF TVCEXEC, NEEDLEUP, VARGAINS\n#\t\t\t1SHOTCHK, REPCHEK, CG.CORR, COPYCYCLES, ETC.\n# LOG SECTION...TVCEXECUTIVE\t\t\t   SUBROUTINE...DAPCSM\n# MODIFIED BY SCHLUNDT\t\t\t\t   21 OCTOBER 1968\n# FUNCTIONAL DESCRIPTION....\n#\n#      *A SELF-PERPETUATING WAITLIST TASK AT 1/2 SECOND INTERVALS WHICH:\n#\tPREPARES THE ROLL DAP WITH OGA (CDUX)\n#\tPREPARES THE ROLL FDAI NEEDLE (FLY-TO  OGA ERROR)\n#\tPREPARES THE ROLL PHASE PLANE  OGAERR  (FLY-FROM  OGA ERROR)\n#\tPREPARES THE TVC ROLLDAP TASK WAITLIST CALL (3 CS DELAY)\n#\tUPDATES THE NEEDLES DISPLAY\n#\tUPDATES VEHICLE MASS AND CALLS MASSPROP TO UPDATE INERTIA DATA\n#\tUPDATES PITCH, YAW, AND ROLL DAP GAINS FROM MASSPROP DATA\n#\tPERFORMS ONE-SHOT CORRECTION FOR TMC LOOP 0-3 SEC AFTER IGNITION\n#\tPERFORMS REPETITIVE UPDATES FOR TMC LOOP AFTER THE ONE-SHOT CORR.\n#\n# CALLING SEQUENCE....\n#\n#      *TVCEXEC CALLED AS A WAITLIST TASK, IN PARTICULAR BY TVCINIT4 AND BY\n#\tITSELF, BOTH AT 1/2 SECOND INTERVALS\n#\n# NORMAL EXIT MODE.... TASKOVER\n#\n# ALARM OR ABORT EXIT MODES.... NONE\n#\n# SUBROUTINES CALLED....NEEDLER, S40.15, MASSPROP, TASKOVER, IBNKCALL\n#\n# OTHER INTERFACES....\n#\n#      *TVCRESTART PACKAGE FOR RESTARTS\n#      *PITCHDAP, YAWDAP FOR VARIABLE GAINS AND ENGINE TRIM ANGLES\n# ERASABLE INITIALIZATION REQUIRED....\n#\n#      *SEE TVCDAPON....TVCINIT4\n#      *VARK AND 1/CONACC (S40.15 OF TVCINITIALIZE)\n#      *PAD LOAD EREPFRAC\n#      *BITS 15,14 OF FLAGWRD6 (T5 BITS)\n#      *TVCEXPHS FOR RESTARTS\n#      *ENGINE-ON BIT (11.13) FOR RESTARTS\n#      *CDUX, OGAD\n#\n# OUTPUT....\n#\n#      *ROLL DAP OGANOW, FDAI NEEDLE (AK), AND PHASE PLANE OGAERR\n#      *VARIABLE GAINS FOR PITCH/YAW AND ROLL TVC DAPS\n#      *SINGLE-SHOT AND REPETITIVE CORRECTIONS TO ENGINE TRIM ANGLES\n#\tPACTOFF AND YACTOFF\n#\n# DEBRIS....\tMUCH, BUT SHAREABLE WITH RCS/ENTRY, ALL IN EBANK6\n\n# Page 946\n\t\tBANK\t16\n\t\tSETLOC\tDAPROLL\n\t\tBANK\n\t\tEBANK=\tBZERO\n\t\tCOUNT*\t$$/TVCX\n\nTVCEXEC\t\tCS\tFLAGWRD6\t# CHECK FOR TERMINATION (BITS 15,14 READ\n\t\tMASK\tOCT60000\t#      10 FROM TVCDAPON TO RCSDAPON)\n\t\tEXTEND\n\t\tBZMF\tTVCEXFIN\t# TERMINATE\n\n\t\tCAF\t.5SEC\t\t# W.L. CALL TO PERPETUATE TVCEXEC\n\t\tTC\tWAITLIST\n\t\tEBANK=\tBZERO\n\t\t2CADR\tTVCEXEC\n\nROLLPREP\tCAE\tCDUX\t\t# UPDATE ROLL LADDERS (NO NEED TO RESTART-\n\t\tXCH\tOGANOW\t\t#      PROTECT, SINCE ROLL DAPS RE-START)\n\t\tXCH\tOGAPAST\n\n\t\tCAE\tOGAD\t\t# PREPARE ROLL FDAI NEEDLE WITH FLY-TO\n\t\tEXTEND\t\t\t#      ERROR (COMMAND - MEASURED)\n\t\tMSU\tOGANOW\n\t\tTS\tAK\t\t# FLY-TO OGA ERROR, SC.AT B-1 REVS\n\n\t\tEXTEND\t\t\t# PREPARE ROLL DAP PHASE PLANE  OGAERR\n\t\tMP\t-BIT14\n\t\tTS\tOGAERR\t\t# PHASE-PLANE (FLY-FROM) OGAERROR,\n\t\t\t\t\t#      SC.AT B+0 REVS\n\n\t\tCAF\tTHREE\t\t# SET UP ROLL DAP TASK (ALLOW SOME TIME)\n\t\tTC\tWAITLIST\n\t\tEBANK=\tBZERO\n\t\t2CADR\tROLLDAP\n\nNEEDLEUP\tTC\tIBNKCALL\t# DO A NEEDLES UPDATE (RETURNS AFTER CADR)\n\t\tCADR\tNEEDLER\t\t#      (NEEDLES RESTARTS ITSELF)\n\nVARGAINS\tCAF\tBIT13\t\t# CHECK ENGINE-ON BIT TO INHIBIT VARIABLE\n\t\tEXTEND\t\t\t#      GAINS AND MASS IF ENGINE OFF\n\t\tRAND\tDSALMOUT\t# CHANNEL 11\n\t\tCCS\tA\n\t\tTCF\t+4\t\t#     ON , SO OK TO UPDATE GAINS AND MASS\n\t+5\tCAF\tTWO\t\t#      OFF, SO BYPASS MASS/GAIN UPDATES,\n\t\tTS\tTVCEXPHS\t#\t    ALSO ENTRY FROM CCS BELOW WITH\n\t\tTCF\t1SHOTCHK\t#\t    VCNTR = -0 (V97 R40 ENGFAIL)\n\t\tCCS\tVCNTR\t\t#      TEST FOR GAIN OF UPDATE TIME\n\t\tTCF\t+4\t\t#\t    NOT YET\n# Page 947\n\t\tTCF\tGAINCHNG\t#\t\tNOW\n\t\tTCF\t+0\t\t#\t\tNOT USED\n\t\tTCF\tVARGAINS +5\t#\t\tNO, LOTHRUST (S40.8 R40)\n\n\t+4\tTS\tVCNTRTMP\t#\t PROTECT VCNTR AND\n\t\tCAE\tCSMMASS\t\t#\tCSMMASS DURING AN IMPULSIVE BURN\n\t\tTS\tMASSTMP\n\t\tTCF\tEXECCOPY\n\nGAINCHNG\tTC\tIBNKCALL\t# UPDATE IXX, IAVG, IAVG/TLX\n\t\tCADR\tFIXCW\t\t# MASSPROP ENTRY  (ALREADY INITIALIZED)\n\t\tTC\tIBNKCALL\t# UPDATE 1/CONACC, VARK\n\t\tCADR\tS40.15\t\t#      (S40.15 IS IN TVCINITIALIZE)\n\t\tCS\tTENMDOT\t\t# UPDATE MASS FOR NEXT 10 SEC. OF BURN\n\t\tAD\tCSMMASS\n\t\tTS\tMASSTMP\t\t# KG B+16\n\n\t\tCAF\tNINETEEN\t# RESET THE VARIABLE-GAIN UPDATE COUNTER\n\t\tTS\tVCNTRTMP\n\nEXECCOPY\tINCR\tTVCEXPHS\t# RESTART-PROTECT THE COPYCYCLE        (1)\n\n\t\tCAE\tMASSTMP\t\t# CSMMASS KG B+16\n\t\tTS\tCSMMASS\n\n\t\tCAE\tVCNTRTMP\t# VCNTR\n\t\tTS\tVCNTR\n\t\tTS\tV97VCNTR\t# FOR ENGFAIL (R41) MASS UPDATES AT SPSOFF\n\n\t\tINCR\tTVCEXPHS\t# COPYCYCLE OVER                       (2)\n\n1SHOTCHK\tCCS\tCNTR\t\t# CHECK TIME FOR ONE-SHOT OR REPCORR\n\t\tTCF\t+4\t\t#      NOT YET\n\t\tTCF\t1SHOTOK\t\t#      NOW\n\t\tTCF\tREPCHEK\t\t#      ONE-SHOT OVER, ON TO REPCORR\n\t\tTCF\t1SHOTOK\t\t#      NOW  (ONE-SHOT ONLY, NO REPCORR)\n\n\t+4\tTS\tCNTRTMP\t\t# COUNT DOWN\n\t\tCAF\tSIX\t\t# SET UP TVCEXPHS FOR ENTRY AT CNTRCOPY\n\t\tTS\tTVCEXPHS\n\t\tTCF\tCNTRCOPY\n\nREPCHEK\t\tCAE\tREPFRAC\t\t# CHECK FOR REPETITIVE UPDATES\n\t\tEXTEND\n\t\tBZMF\tTVCEXFIN\t#      NO, OVER-AND-OUT\n\t\tTS\tTEMPDAP +1\t#      YES, SET UP CORRECTION FRACTION\n\t\tCAF\tFOUR\t\t# SET UP TVCEXPHS FOR ENTRY AT CORSETUP\n\t\tTS\tTVCEXPHS\n\t\tTCF\tCORSETUP\n# Page 948\n1SHOTOK\t\tCAF\tBIT13\t\t# CHECK ENGINE-ON BIT, NOT PERMITTING\n\t\tEXTEND\t\t\t#      ONE-SHOT DURING ENGINE-SHUTDOWN\n\t\tRAND\tDSALMOUT\n\t\tCCS\tA\n\t\tTCF\t+2\t\t#      ONE-SHOT OK\n\t\tTCF\tTVCEXFIN\t#      NO, TERMINATE\n\n\t\tINCR\tTVCEXPHS\t#\t\t\t\t\t(3)\n\n# RSB 2009.  The following instruction was previously \"CAE FCORFRAC\", but FCORFRAC\n# is not in erasable memory as implied by the use of CAE.  I've accordingly changed\n# it to CAF instead to indicate fixed memory.\nTEMPSET\t\tCAF\tFCORFRAC\t#      SET UP CORRECTION FRACTION\n\t\tTS\tTEMPDAP +1\n\n\t\tINCR\tTVCEXPHS\t# ENTRY FROM REPCHECK AT NEXT LOCATION\t(4)\n\nCORSETUP\tCAE\tDAPDATR1\t# CHECK FOR LEM-OFF/ON\n\t\tMASK\tBIT13\t\t# (NOTE, SHOWS LEM-OFF)\n\t\tEXTEND\n\t\tBZF\t+2\t\t# LEM IS ON,  PICK UP   TEMPDAP+1\n\t\tCAE\tTEMPDAP +1\t# LEM IS OFF, PICK UP 2(TEMPDAP+1)\n\t\tAD\tTEMPDAP +1\n\t\tTS\tTEMPDAP\t\t# CG.CORR USES TEMPDAP\n\n\t\tCAF\tNEGONE\t\t# SET UP FOR CNTR = -1 (ONE-SHOT DONE)\n\t\tTS\tCNTRTMP\t\t#      (COPYCYCLE AT  .CNTRCOPY. )\n\nCG.CORR\t\tEXTEND\t\t\t# PITCH TMC LOOP\n\t\tDCA\tPDELOFF\n\t\tDXCH\tPACTTMP\n\t\tEXTEND\n\t\tDCS\tPDELOFF\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDXCH\tTTMP1\n\t\tEXTEND\n\t\tDCA\tDELPBAR\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDAS\tTTMP1\n\t\tEXTEND\n\t\tDCA\tTTMP1\n\t\tEXTEND\n\t\tMP\tTEMPDAP\n\t\tDAS\tPACTTMP\n\n\t\tEXTEND\t\t\t# YAW TMC LOOP\n\t\tDCA\tYDELOFF\n\t\tDXCH\tYACTTMP\n\t\tEXTEND\n\t\tDCS\tYDELOFF\n\t\tDDOUBL\n# Page 949\n\t\tDDOUBL\n\t\tDXCH\tTTMP1\n\t\tEXTEND\n\t\tDCA\tDELYBAR\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDAS\tTTMP1\n\t\tEXTEND\n\t\tDCA\tTTMP1\n\t\tEXTEND\n\t\tMP\tTEMPDAP\n\t\tDAS\tYACTTMP\n\nCORCOPY\t\tINCR\tTVCEXPHS\t# RESTART PROTECT THE COPYCYCLE\t\t(5)\n\n\t\tEXTEND\t\t\t# TRIM-ESTIMATES, AND\n\t\tDCA\tPACTTMP\n\t\tTS\tPACTOFF\t\t#\tTRIMS\n\t\tDXCH\tPDELOFF\n\n\t\tEXTEND\n\t\tDCA\tYACTTMP\n\t\tTS\tYACTOFF\n\t\tDXCH\tYDELOFF\n\n\t\tINCR\tTVCEXPHS\t# ENTRY FROM 1SHOTCHK AT NEXT LOCATION\t(6)\n\nCNTRCOPY\tCAE\tCNTRTMP\t\t# UPDATE CNTR (RESTARTS OK, FOLLOWS CPYCY)\n\t\tTS\tCNTR\n\nTVCEXFIN\tCAF\tZERO\t\t# RESET TVCEXPHS\n\t\tTS\tTVCEXPHS\n\t\tTCF\tTASKOVER\t# TVCEXECUTIVE FINISHED\n\nFCORFRAC\tOCT\t10000\t\t# ONE-SHOT CORRECTION FRACTION\n\n# Page 950 (page is empty)\n\n"
  },
  {
    "path": "Comanche055/TVCINITIALIZE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTVCINITIALIZE.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim.lawton@gmail.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t936-944\n# Mod history:\t2009-05-11 JVL\tAdapted from the Colossus249/ file\n#\t\t\t\tof the same name, using Comanche055 page\n#\t\t\t\timages.\n#\t\t2009-05-20 RSB\tCorrections:  +80 -> +8D, added 4 missing\n#\t\t\t\tlines in TVCINIT1, changed the capitalization\n#\t\t\t\tof a couple of the \"Page N\" comments,\n#\t\t\t\tcorrected a couple of lines in LOADCOEFF.\n#\t\t2009-05-22 RSB\tIn LOADCOEF, DXCH N10 +14D corrected to\n#\t\t\t\tTS N10 +14D.  Also, various comment-marks\n#\t\t\t\twere added to comments following this\n#\t\t\t\tchange.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 055 of AGC program Comanche by NASA\n#    2021113-051.  10:28 APR. 1, 1969\n#\n#    This AGC program shall also be referred to as\n#            Colossus 2A\n\n# Page 937\n# NAME\t\tTVCDAPON (TVC DAP INITIALIZATION AND STARTUP CALL)\n# LOG SECTION...TVCINITIALIZE\t\t\tSUBROUTINE...DAPCSM\n# MODIFIED BY SCHLUNDT\t\t\t\t21 OCTOBER 1968\n# FUNCTIONAL DESCRIPTION\n#\tPERFORMS TVCDAP INITIALIZATION (GAINS, TIMING PARAMETERS, FILTER VARIABLES, ETC.)\n#\tCOMPUTES STEERING (S40.8) GAIN KPRIMEDT, AND ZEROES PASTDELV,+1 VARIABLE\n#\tMAKES INITIALIZATION CALL TO \"NEEDLER\" FOR TVC DAP NEEDLES-SETUP\n#\tPERFORMS INITIALIZATION FOR ROLL DAP\n#\tCALLS TVCEXECUTIVE AT TVCEXEC, VIA WAITLIST\n#\tCALLS TVCDAP CDU-RATE INITIALIZATION PKG AT DAPINIT  VIA T5\n#\tPROVIDES FOR LOADING OF LOW-BANDWIDTH COEFFS AND GAINS AT SWICHOVR\n# CALLING SEQUENCE - T5LOC=2CADR(TVCDAPON,EBANK=BZERO), T5=.6SECT5\n#\tIN PARTICULAR, CALLED BY \"DOTVCON\" IN P40\n#\tMRCLEAN AND TVCINIT4 ARE POSSIBLE TVC-RESTART ENTRY POINTS\n# NORMAL EXIT MODE\n#\tTCF RESUME\n# SUBROUTINES CALLED\n#\tNEEDLER, MASSPROP\n# ALARM OR ABORT EXIT MODES\n#\tNONE\n# ERASABLE INITIALIZATION REQUIRED\n#\tCSMMASS, LEMMASS, DAPDATR1 (FOR MASSPROP SUBROUTINE)\n#\tTVC PAD LOADS (SEE EBANK6 IN ERASABLE ASSIGNMENTS)\n#\tPACTOFF, YACTOFF, CDUX\n#\tTVCPHASE AND THE T5 BITS OF FLAGWRD6 (SET AT DOTVCON IN P40)\n# OUTPUT\n#\tALL TVC AND ROLL DAP ERASABLES, FLAGWRD6 (BITS 13,14), T5, WAITLIST\n# DEBRIS\n#\tNONE\n\n\t\tCOUNT*\t$$/INIT\n\t\tBANK\t17\n\t\tSETLOC\tDAPS7\n\t\tBANK\n\n\t\tEBANK=\tBZERO\n\nTVCDAPON\tLXCH\tBANKRUPT\t# T5 RUPT ARRIVAL (CALL BY DOTVCON - P40)\n\t\tEXTEND\t\t\t# SAVE Q REQUIRED IN RESTARTS (MRCLEAN AND\n\t\tQXCH\tQRUPT\t\t#\tTVCINIT4 ARE ENTRIES)\nMRCLEAN\t\tCAF\tNZERO\t\t# NUMBER TO ZERO, LESS ONE  (MUST BE ODD)\n\t\t\t\t\t#\tTVC RESTARTS ENTER HERE  (NEW BANK)\n\t+1\tCCS\tA\n\t\tTS\tCNTR\n\t\tCAF\tZERO\n\t\tTS\tL\n\t\tINDEX\tCNTR\n\t\tDXCH\tOMEGAYC\t\t# FIRST (LAST) TWO LOCATIONS\n\t\tCCS\tCNTR\n\t\tTCF\tMRCLEAN +1\n# Page 938\n\t\tEXTEND\t\t\t# SET UP ANOTHER T5 RUPT TO CONTINUE\n\t\tDCA\tINITLOC2\t#\tINITIALIZATION AT TVCINIT1\n\t\tDXCH\tT5LOC\t\t# THE PHSCHK2 ENTRY  (REDOTVC) AT TVCDAPON\n\t\tCAF\tPOSMAX\t\t#\t+3 IS IN ANOTHER BANK. MUST RESET\n\t\tTS\tTIME5\t\t#\tBBCON TOO (FULL 2CADR), FOR THAT\nENDMRC\t\tTCF\tRESUME\t\t#\tENTRY.\n\nTVCINIT1\tLXCH\tBANKRUPT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tTC\tIBNKCALL\t# UPDATE IXX, IAVG/TLX FOR DAP GAINS (R03\n\t\tCADR\tMASSPROP\t#\tOR NOUNS 46 AND 47 MUST BE CORRECT)\n\n\t\tCAE\tEMDOT\t\t# SPS FLOW RATE, SCALED B+3 KG/CS\n\t\tEXTEND\n\t\tMP\tONETHOU\n\t\tTS\tTENMDOT\t\t# 10-SEC MASS LOSS B+16 KG\n\t\tCOM\n\t\tAD\tCSMMASS\n\t\tTS\tMASSTMP\t\t# DECREMENT FOR FIRST 10 SEC OF BURN\n\n\t\tCAE\tDAPDATR1\t# CHECK LEM-ON/OFF\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tCAF\tBIT1\t\t# LEM-ON (BIT1)\n\t\tTS\tCNTR\t\t# LEM-OFF (ZERO)\n\n\t\tINDEX\tCNTR\t\t# LOAD THE FILTER COEFFICIENTS\n\t\tCAF\tCSMCFADR\n\t\tTS\tCOEFFADR\n\t\tTC\tLOADCOEF\n\n\t\tINDEX\tCNTR\t\t# PICK UP LM-OFF,-ON KTLX/I\n\t\tCAE\tEKTLX/I\t\t# SCALED AT 1/(8 ASCREV) OF ACTUAL VALUE\n\t\tTS\tKTLX/I\n\n\t\tTCR\tS40.15\t\t# COMPUTE 1/CONACC , VARK\n\nTVCINIT2\tCS\tCNTR\t\t# PICK LM-OFF,-ON VALUE FOR FILTER PERIOD\n\t\tINDEX\tA\t\t# DETERMINATION:\n\t\tCAF\tBIT2\t\t# \tBIT2 FOR CSM ONLY 40MS FILTER\n\t\tTS\tKPRIMEDT\t# \tBIT3 FOR CSM/LM 80MS FILTER\n\n\t\tCOM\t\t\t# PREPARE T5TVCDT\n\t\tAD\tPOSMAX\n\t\tAD\tBIT1\n\t\tTS\tT5TVCDT\n\n\t\tCS\tBIT15\t\t# RESET SWTOVER FLAG\n# Page 939\n\t\tMASK\tFLAGWRD9\n\t\tTS\tFLAGWRD9\n\n\t\tINDEX\tCNTR\t\t# PICK UP LEM-OFF,-ON KPRIME\n\t\tCAE\tEKPRIME\t\t#\tSCALED (100 PI)/16\n\t\tEXTEND\n\t\tMP\tKPRIMEDT\t# (TVCDT/2, SC.AT B+14CS)\n\t\tLXCH\tA\t\t#\tSC.AT PI/8\t(DIMENSIONLESS)\n\t\tDXCH\tKPRIMEDT\n\n\t\tINDEX\tCNTR\t\t# PICK UP LEM-OFF,-ON REPFRAC\n\t\tCAE\tEREPFRAC\n\t\tTS\tREPFRAC\n\n\t\tINDEX\tCNTR\t\t# PICK UP ONE-SHOT CORRECTION TIME\n\t\tCAF\tTCORR\n\t\tTS\tCNTR\n\n\t\tCAF\tNEGONE\t\t# PREVENT STROKE TEST UNTIL CALLED\n\t\tTS\tSTRKTIME\n\n\t\tCAF\tNINETEEN\t# SET VCNTR FOR VARIABLE-GAIN UPDATES IN\n\t\tTS\tVCNTR\t\t#\t10 SECONDS (TVCEXEC 1/2 SEC RATE)\n\t\tTS\tV97VCNTR\t# FOR ENGFAIL (R41) LOGIC\n\nTVCINIT3\tCAE\tPACTOFF\t\t# TRIM VALUES TO TRIM-TRACKERS, OUTPUT\n\t\tTS\tPDELOFF\t\t#\tTRACKERS, OFFSET-UPDATES, AND\n\t\tTS\tPCMD\t\t#\tOFFSET-TRACKER FILTERS\n\t\tTS\tDELPBAR\t\t#\tNOTE, LO-ORDER DELOFF,DELBAR ZEROED\n\n\t\tCAE\tYACTOFF\n\t\tTS\tYDELOFF\n\t\tTS\tYCMD\n\t\tTS\tDELYBAR\n\nATTINIT\t\tCAE\tDAPDATR1\t# ATTITUDE-ERROR INITIALIZATION LOGIC\n\t\tMASK\tBIT13\t\t#\tTEST FOR CSM OR CSM/LM\n\t\tEXTEND\n\t\tBZF\tNEEDLEIN\t#\tBYPASS INITIALIZATION FOR CSM/LM\n\n\t\tCAF\tBIT1\t\t#\tSET UP TEMPORARY COUNTER\n\t+5\tTS\tTTMP1\n\n\t\tINDEX\tTTMP1\n\t\tCA\tERRBTMP\t\t# ERRBTMP CONTAINS RCS ATTITUDE ERRORS\n\t\tEXTEND\t\t\t#\tERRORY & ERRORZ (P40 AT DOTVCON)\n\t\tMP\t1/ATTLIM\t# .007325(ERROR) = 0 IF ERROR < 1.5 DEG\n\t\tEXTEND\n\t\tBZF\t+8D\t\t#\t|ERROR| LESS THAN 1.5 DEG\n\t\tEXTEND\n# Page 940\n\t\tBZMF\t+3\t\t#\t|ERROR| > 1.5 DEG, AND NEG\n\t\tCA\tATTLIM\t\t#\t|ERROR| > 1.5 DEG, AND POS\n\t\tTCF\t+2\n\t+3\tCS\tATTLIM\n\t+2\tINDEX\tTTMP1\n\t\tTS\tERRBTMP\n\t+8\tCCS \tTTMP1\t\t#\tTEST TEMPORARY COUNTER\n\t\tTCF\tATTINIT +5\t#\tBACK TO REPEAT FOR PITCH ERROR\n\n\t\tCA\tERRBTMP\t\t# ERRORS ESTABLISHED AND LIMITED\n\t\tTS\tPERRB\n\t\tCA\tERRBTMP +1\n\t\tTS\tYERRB\n\nNEEDLEIN\tCS\tRCSFLAGS\t# SET BIT 3 FOR INITIALIZATION PASS AND GO\n\t\tMASK\tBIT3\t\t# \tTO NEEDLER.  WILL CLEAR FOR TVC DAP\n\t\tADS\tRCSFLAGS\t# \t(RETURNS AFTER CADR)\n\t\tTC\tIBNKCALL\n\t\tCADR\tNEEDLER\n\nTVCINIT4\tCAF\tZERO\t\t# SET TVCPHASE TO INDICATE TVCDAPON-THRU-\n\t\tTS\tTVCPHASE\t#\tNEEDLEIN INITIALIZATION FINISHED.\n\t\t\t\t\t#\t(POSSIBLE TVC-RESTART ENTRY)\n\n\t\tCAE\tCDUX\t\t# PREPARE ROLL DAP\n\t\tTS\tOGANOW\n\n\t\tCAF\tBIT13\t\t# IF ENGINE IS ALREADY OFF, ENGINOFF HAS\n\t\tEXTEND\t\t\t#\tALREADY ESTABLISHED THE POST-BURN\n\t\tRAND\tDSALMOUT\t#\tCSMMASS (MASSBACK DOES IT). DONT\n\t\tEXTEND\t\t\t# \tTOUCH CSMMASS.  IF ENGINE IS ON,\n\t\tBZF\t+3\t\t#\tTHEN ITS OK TO DO THE COPYCYCLE\n\t\t\t\t\t#\tEVEN BURNS LESS THAN 0.4 SEC ARE AOK\n\n\t\tCAE\tMASSTMP\t\t# COPYCYCLE\n\t\tTS\tCSMMASS\n\n\t+3\tCAF\t.5SEC\t\t# CALL TVCEXECUTIVE (ROLLDAP CALL, ETC)\n\t\tTC\tWAITLIST\n\t\tEBANK=\tBZERO\n\t\t2CADR\tTVCEXEC\n\n\t\tEXTEND\t\t\t# CALL FOR DAPINIT\n\t\tDCA\tDAPINIT5\n\t\tDXCH\tT5LOC\n\t\tCAE\tT5TVCDT\t\t# (ALLOW TIME FOR RESTART COMPUTATIONS)\n\t\tTS\tTIME5\n# Page 941\nENDTVCIN\tTCF\tRESUME\n\nPRESWTCH\tTCR\tSWICHOVR\t# ENTRY FROM V46\n\n\t\tTC\tPOSTJUMP\t# THIS PROVIDES AN EXIT FROM SWITCH-OVER\n\t\tCADR\tPINBRNCH\t#\t(PINBRNCH DOES A RELINT)\n\nSWICHOVR\tINHINT\n\t\tCA\tTVCPHASE\t# SAVE TVCPHASE\n\t\tTS\tPHASETMP\n\t\tCS\tBIT2\t\t# SET TVCPHASE = -2 (INDICATES SWITCH-OVER\n\t\tTS\tTVCPHASE\t#\tTO RESTART LOGIC)\n\n\t+5\tEXTEND\t\t\t# SAVE Q FOR RETURN (RESTART ENTRY POINT,\n\t\tQXCH\tRTRNLOC\t\t#\tTVCPHASE AND PHASETMP ALREADY SET)\n\n\t\tCAF\tNZEROJR\t\t# ZEROING LOOP FOR FILTER STORAGE LOCS\n\t+8\tTS\tCNTRTMP\n\nMCLEANJR\tCA\tZERO\n\t\tTS\tL\n\t\tINDEX\tCNTRTMP\n\t\tDXCH\tPTMP1 -1\n\t\tCCS\tCNTRTMP\n\t\tCCS\tA\n\t\tTCF\tSWICHOVR +8D\n\n\t\tCS\tFLAGWRD9\t# SET SWITCHOVER FLAG FOR DOWNLINK\n\t\tMASK\tBIT15\n\t\tADS\tFLAGWRD9\n\n\t\tCAE\tEKTLX/I +2\t# LOW BANDWIDTH GAINS \t- DAP\n\t\tTS\tKTLX/I\n\t\tTCR\tS40.15 \t+7\n\n\t\tCAF\tFKPRIMDT\t#\t\t\t- STEERING\n\t\tTS\tKPRIMEDT\n\n\t\tCAF\tFREPFRAC\t#\t\t\t- TMC LOOP\n\t\tTS\tREPFRAC\n\n\t\tEXTEND\t\t\t# UPDATE TRIM ESTIMATES\n\t\tDCA\tDELPBAR\n\t\tDXCH\tPDELOFF\n\t\tEXTEND\n\t\tDCA\tDELYBAR\n\t\tDXCH\tYDELOFF\n\n\t\tCA\tLBCFADR\n# Page 942\n\t\tTS\tCOEFFADR\n\t\tTC\tLOADCOEF\n\n\t\tCAE\tPHASETMP\t# RESTORE TVCPHASE\n\t\tTS\tTVCPHASE\n\n\t\tTC\tRTRNLOC\t\t# BACK TO PRESWTCH OR TVCRESTARTS\n\nLOADCOEF\tEXTEND\t\t\t# LOAD DAP FILTER COEFFICIENTS\n\t\tINDEX\tCOEFFADR\t#   FROM: ERASABLE FOR CSM/LM HB\n\t\tDCA\t0\t\t#         FIXED    FOR CSM/LM LB\n\t\tDXCH\tN10\t\t#         FIXED    FOR CSM\n\n\t\tEXTEND\t\t\t# NOTE: FOR CSM/LM, NORMAL COEFFICIENT\n\t\tINDEX\tCOEFFADR\t# LOAD WILL BE HIGH BANDWIDTH PAD LOAD\n\t\tDCA\t2\t\t# ERASABLES. DURING CSM/LM SWITCHOVER,\n\t\tDXCH\tN10 +2\t\t# THIS LOGIC IS USED TO LOAD LOW BANDWIDTH\n\t\t\t\t\t# COEFFICIENTS FROM FIXED MEMORY.\n\n\t\tEXTEND\n\t\tINDEX\tCOEFFADR\n\t\tDCA\t4\n\t\tDXCH\tN10 +4\n\n\t\tEXTEND\n\t\tINDEX\tCOEFFADR\n\t\tDCA\t6\n\t\tDXCH\tN10 +6\n\n\t\tEXTEND\n\t\tINDEX\tCOEFFADR\n\t\tDCA\t8D\n\t\tDXCH\tN10 +8D\n\n\t\tEXTEND\n\t\tINDEX\tCOEFFADR\n\t\tDCA\t10D\n\t\tDXCH\tN10 +10D\n\n\t\tEXTEND\n\t\tINDEX\tCOEFFADR\n\t\tDCA\t12D\n\t\tDXCH\tN10 +12D\n\n\t\tINDEX\tCOEFFADR\n\t\tCA\t14D\n\t\tTS\tN10 +14D\n\n\t\tTC\tQ\n# Page 943\nS40.15\t\tCAE\tIXX\t\t# GAIN COMPUTATIONS (1/CONACC, VARK)\n\t\tEXTEND\t\t\t# ENTERED FROM TVCINITIALIZE AND TVCEXEC\n\t\tMP\t2PI/M\t\t#\t2PI/M SCALED 1/(B+8 N M)\n\t\tDDOUBL\t\t\t#\tIXX   SCALED B+20 KG-MSQ\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tTS\t1/CONACC\t#\t     SCALED B+9 SEC-SQ/REV\n\n\t+7\tCAE\tKTLX/I\t\t# ENTRY FROM CSM/LM V46 SWITCH-OVER\n\t\tEXTEND\t\t\t#            SCALED (B+3 ASCREV)  1/SECSQ\n\t\tMP\tIAVG/TLX\t#            SCALED B+2 SECSQ\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tTS\tVARK\t\t#            SCALED (B+3 ASCREV)\n\t\tTC\tQ\n\nCSMN10\t\tDEC\t.99999\t\t# N10\tCSM ONLY FILTER COEFFICIENTS\n\t\tDEC\t-.2549\t\t# N11/2\n\t\tDEC\t.0588\t\t# N12\n\t\tDEC\t-.7620\t\t# D11/2\n\t\tDEC\t.7450\t\t# D12\n\n\t\tDEC\t.99999\t\t# N20\n\t\tDEC\t-.4852\t\t# N21/2\n\t\tDEC\t0\t\t# N22\n\t\tDEC\t-.2692\t\t# D22/2\n\t\tDEC\t0\t\t# D22\n\nLBN10\t\tDEC\t+.99999\t\t# N10\tLOW BANDWIDTH FILTER COEFFICIENTS\n\t\tDEC\t-.3285\t\t# N11/2\n\t\tDEC\t-.3301\t\t# N12\n\t\tDEC\t-.9101\t\t# D11/2\n\t\tDEC\t+.8460\t\t# D12\n\n\t\tDEC\t+.03125\t\t# N20\n\t\tDEC\t0\t\t# N21/2\n\t\tDEC\t0\t\t# N22\n\t\tDEC\t-.9101\t\t# D21/2\n\t\tDEC\t+.8460\t\t# D22\n\n\t\tDEC\t+.5000\t\t# N30\n\t\tDEC\t-.47115\t\t# N31/2\n\t\tDEC\t+.4749\t\t# N32\n\t\tDEC\t-.9558\t\t# D31/2\n\t\tDEC\t+.9372\t\t# D32\n\nCSMCFADR\tGENADR\tCSMN10\t\t# CSM ONLY COEFFICIENTS ADDRESS\nHBCFADR\t\tGENADR\tHBN10\t\t# HIGH BANDWIDTH COEFFICIENTS ADDRESS\n# Page 944\nLBCFADR\t\tGENADR\tLBN10\t\t# LOW BANDWIDTH COEFFICIENTS ADDRESS\n\nNZERO\t\tDEC\t51\t\t# MUST BE ODD FOR MRCLEAN\nNZEROJR\t\tDEC\t23\t\t# MUST BE ODD FOR MCLEANJR\n\nATTLIM\t\tDEC\t0.00833\t\t# INITIAL ATTITUDE ERROR LIMIT (1.5 DEG)\n1/ATTLIM\tDEC\t0.007325\t# .007325(ERROR) = 0 IF ERROR < 1.5 DEG\n\nTCORR\t\tOCT\t00005\t\t# CSM\n\t+1\tOCT\t00000\t\t# CSM/LM (HB,LB)\n\nFKPRIMDT\tDEC\t.0102\t\t# CSM/LM (LB), (.05 X .08) SCALED AT PI/8\nFREPFRAC\tDEC\t.0375 B-2\t# CSM/LM (LB), 0.0375 SCALED AT B+2\n\nNINETEEN\t=\tVD1\n2PI/M\t\tDEC\t.00331017 B+8\t# 2PI/M, SCALED AT 1/(B+8 N-M)\n\nONETHOU\t\tDEC\t1000 B-13\t# KG/CS B3 TO KG/10SEC B16 CONVERSION\n\n\t\tEBANK=\tBZERO\nDAPINIT5\t2CADR\tDAPINIT\n\n\t\tEBANK=\tBZERO\nINITLOC2\t2CADR\tTVCINIT1\n\n"
  },
  {
    "path": "Comanche055/TVCMASSPROP.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTVCMASSPROP.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t951-955\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 951\n# PROGRAM NAME....MASSPROP\n# LOG SECTION....TVCMASSPROP\t\tPROGRAMMER...MELANSON (ENGEL, SCHLUNDT)\n#\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tMASSPROP OPERATES IN TWO MODES:(1)IF LEM MASS OR CONFIGURATION ARE UPDATED (MASSPROP DOES NOT TEST\n# FOR THIS) THE ENTIRE PROGRAM MUST BE RUN THROUGH, BREAKPOINT VALUES AND DERIVATIVES OF THE OUTPUTS WITH\n# RESPECT TO CSM MASS BEING CALCULATED PRIOR TO CALCULATION OF THE OUTPUTS.  (2)OTHERWISE, THE OUTPUTS CAN BE\n# CALCULATED USING PREVIOUSLY COMPUTED BREAKPOINT VALUES AND DERIVATIVES.\n#\n# CALLING SEQUENCES\n#\n#\tIF LEM MASS OR CONFIGURATION HAS BEEN UPDATED, TRANSFER TO MASSPROP, OTHERWISE TRANSFER TO FIXCW.\n#\t\tL\tTC\tBANKCALL OR IBNKCALL\n#\t\tL+1\tCADR\tMASSPROP\n#\t\t\tOR\n#\t\tL+1\tCADR\tFIXCW\n#\n#\t\tL+2\tRETURNS VIA Q\n#\n# CALLED\tIN PARTICULAR BY DONOUN47 (JOB) AND TVCEXECUTIVE (TASK)\n#\n# JOBS OR TASKS INITIATED - NONE\n#\n# SUBROUTINES CALLED - NONE\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tLEMMASS MUST CONTAIN LEM MASS SCALED AT B+16 KILOGRAMS\n#\tCSMMASS MUST CONTAIN CSM MASS SCALED AT B+16 KILOGRAMS\n#\n#\tDAPDATR1 MUST BE SET TO INDICATE VEHICLE CONFIGURATION.\n#\t\tBITS (15,14,13)  =  ( 0 , 0 , 1 )\tLEM OFF\n#\t\t\t\t    ( 0 , 1 , 0 )\tLEM ON (ASCNT,DSCNT)\n#\t\t\t\t    ( 1 , 1 , 0 )\tLEM ON (ASCNT ONLY)\n#\n#\n# ALARMS -\tNONE\n#\n# EXIT -\tTC\tQ\n#\n# OUTPUTS:\n#\n#\t(1)IXX, SINGLE PRECISION SCALED AT B+20 IN KG-M SQ.\n#\t(2)IAVG, SINGLE PRECISION SCALED AT B+20 IN KG-M SQ.\n#\t(3)IAVG/TLX, SINGLE PRECISION, SCALED AT B+2 SEC-SQD\n#\tTHEY ARE STORED IN CONSECUTIVE REGISTERS IXX0, IXX1, IXX2\n#\n#\tCONVERSION FACTOR :  (SLUG-FTSQ) = 0.737562 (KG-MSQ)\n# Page 952\n#\n# OUTPUTS ARE CALCULATED AS FOLLOWS:\n#\n#   (1) IF LEM DOCKED, LEMMASS IS FIRST ELIMINATED AS A PARAMETER\n#\n#\tVARST0 = INTVALUE0 + LEMMASS(SLOPEVAL0)\t\tIXX\t\tBREAKPOINT VALUE\n#\tVARST1 = INTVALUE1 + LEMMASS(SLOPEVAL1)\t\tIAVG\t\tBREAKPOINT VALUE\n#\tVARST2 = INTVALUE2 + LEMMASS(SLOPEVAL2)\t\tIAVG/TLX\tBREAKPOINT VALUE\n#\n#\tVARST3 = INTVALUE3 + LEMMASS(SLOPEVAL3)\t\tIAVG/TLX\tSLOPE FOR CSMMASS > 33956 LBS ( SPS > 10000 LBS)\n#\tVARST4 = INTVALUE4 + LEMMASS(SLOPEVAL4)\t\tIAVG\t\tSLOPE FOR CSMMASS > 33956 LBS ( SPS > 10000 LBS)\n#\n#\tVARST5 = INTVALUE5 + LEMMASS(SLOPEVAL5)\t\tIXX\t\tSLOPE FOR ALL VALUES OF CSMMASS\n#\n#\tVARST6 = INTVALUE6 + LEMMASS(SLOPEVAL6)\t\tIAVG\t\tSLOPE FOR CSMMASS < 33956 LBS ( SPS < 10000 LBS)\n#\tVARST7 = INTVALUE7 + LEMMASS(SLOPEVAL7)\t\tIAVG/TLX\tSLOPE FOR CSMMASS < 33956 LBS ( SPS < 10000 LBS)\n#\n#\tVARST8 = INTVALUE8 + LEMMASS(SLOPEVAL8)\t\tIAVG\t\tDECREMENT TO BRKPT VALUE WHEN LEM DSCNT STAGE OFF\n#\tVARST9 = INTVALUE9 + LEMMASS(SLOPEVAL9)\t\tIAVG/TLX\tDECREMENT TO BRKPT VALUE WHEN LEM DSCNT STAGE OFF\n#\n#   (2) IF LEM NOT DOCKED\n#\n#\tVARST0 = NOLEMVAL0\tWHERE THE MEANING AND SCALING OF VARST0\n#\t\t.\t.\tTO VARST9 ARE THE SAME AS GIVEN ABOVE\n#\t\t.\t.\n#\t\t.\t.\tNOTE... FOR THIS CASE, VARST8,9 HAVE NO\n#\tVARST9 = NOLEMVAL9\tMEANING (THEY ARE COMPUTED BUT NOT USED)\n#\n#   (3) THE FINAL OUTPUT CALCULATIONS ARE THEN DONE\n#\n#\tIXX0 = VARST0 + (CSMMASS + NEGBPW)VARST5\t\tIXX\n#\n#\tIXX1 = VARST1 + (CSMMASS + NEGBPW)VARST(4 OR 6)\t\tIAVG\n#\n#\tIXX2 = VARST2 + (CSMMASS + NEGBPW)VARST(3 OR 7)\t\tIAVG/TLX\n#\n#\n# THE DATA USED CAME FROM CSM/LM SPACECRAFT OPERATIONAL DATA BOOK.\n#\tVOL. 3, NASA DOCUMENT SNA-8-D-027 (MARCH 1968)\n#\n# PERTINENT MASS DATA :\t\tCSM WEIGHT\t(FULL)\t64100 LBS.\n#\t\t\t\t\t\t(EMPTY)\t23956 LBS.\n#\t\t\t\tLEM WEIGHT\t(FULL)\t32000 LBS.\n#\t\t\t\t\t\t(EMPTY)\t14116 LBS.\n#\n# (WEIGHTS ARE FROM AMENDMENT #1 (APRIL 24,1968) TO ABOVE DATA BOOK)\n# Page 953\n\n\t\tBANK\t25\n\t\tSETLOC\tDAPMASS\n\t\tBANK\n\t\tEBANK=\tBZERO\n\t\tCOUNT*\t$$/MASP\n\n\nMASSPROP\tCAF\tNINE\t\t# MASSPROP USES TVC/RCS INTERRUPT TEMPS\n\t\tTS\tPHI333\t\t# SET UP TEN PASSES\n\nLEMTEST\t\tCAE\tDAPDATR1\t# DETERMINE LEM STATUS\n\t\tMASK\tBIT13\n\t\tEXTEND\n\t\tBZF\tLEMYES\n\nLEMNO\t\tINDEX\tPHI333\t\t# LEM NOT ATTACHED\n\t\tCAF\tNOLEMVAL\n\t\tTCF\tSTOINST\n\nLEMYES\t\tCAE\tLEMMASS\t\t# LEM IS ATTACHED\n\t\tDOUBLE\n\t\tEXTEND\n\t\tINDEX\tPHI333\n\t\tMP\tSLOPEVAL\n\t\tDDOUBL\n\t\tINDEX\tPHI333\n\t\tAD\tINTVALUE\n\nSTOINST\t\tINDEX\tPHI333\t\t# STORAGE INST BEGIN HERE\n\t\tTS\tVARST0\n\t\tCCS\tPHI333\t\t# ARE ALL TEN PASSES COMPLETED\n\t\tTCF\tMASSPROP +1\t# NO - GO DECREMENT PHI333\n\nDXTEST\t\tCCS\tDAPDATR1\t# IF NEG, BIT15 IS 1, LEM DSCNT STAGE OFF\n\t\tTCF\tFIXCW\n\t\tTCF\tFIXCW\n\t\tDXCH\tVARST0 +8D\n\t\tDAS\tVARST0 +1\n\t\tCA\tDXITFIX\n\t\tADS\tVARST0 +7\n\nFIXCW\t\tCAF\tBIT2\t\t# COMPUTATION PHASE BEGINS HERE.  SET UP\n\t\tTS\tPHI333\t\t# THREE PASSES\n\t\tTS\tPSI333\n\n\t\tCAE\tCSMMASS\t\t# GET DELTA CSM WEIGHT - SIGN DETERMINES\n\t\tAD\tNEGBPW\t\t# SLOPE LOCATIONS.\n\t\tDOUBLE\n\t\tTS\tTEMP333\n# Page 954\n\t\tEXTEND\n\t\tBZMF\tPEGGY\t\t# DETERMINE CORRECT SLOPE\n\t\tCAF\tNEG2\n\t\tTS\tPHI333\n\nPEGGY\t\tINDEX\tPHI333\t\t# ALL IS READY - CALCULATE OUTPUTS NOW\n\t\tCAE\tVARST5\t\t# GET SLOPE\n\t\tEXTEND\n\t\tMP\tTEMP333\t\t# MULT BY DELTA CSM WEIGHT\n\t\tDOUBLE\n\t\tINDEX\tPSI333\n\t\tAD\tVARST0\t\t# ADD BREAKPOINT VALUE\n\t\tINDEX\tPSI333\n\t\tTS\tIXX\t\t# ****** OUTPUTS (IXX0, IXX1, IXX2) ******\n\n\n\t\tCCS\tPSI333\t\t# BOOKKEEPING - MASSPROP FINISHED OR NOT\n\t\tTCF\tBOKKEP2\t\t# NO - GO TAKE CARE OF INDEXING REGISTERS\n\n\t\tCAE\tDAPDATR1\t# UPDATE WEIGHT/G\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tCA\tLEMMASS\n\t\tAD\tCSMMASS\n\t\tTS\tWEIGHT/G\t# SCALED AT B+16 KILOGRAMS\nENDMASSP\tTC\tQ\n\nBOKKEP2\t\tTS\tPSI333\t\t# REDUCE PSI BY ONE\n\t\tEXTEND\n\t\tDIM\tPHI333\n\t\tTCF\tPEGGY\n\n# Page 955\nNOLEMVAL\tDEC\t25445 B-20\n\t\tDEC\t87450 B-20\n\t\tDEC\t.30715 B-2\n\t\tDEC\t1.22877 E-5 B+12\n\t\tDEC\t1.6096 B-6\n\t\tDEC\t1.54 B-6\n\t\tDEC\t7.77177 B-6\n\t\tDEC\t3.46458 E-5 B+12\n\nINTVALUE\tDEC\t26850 B-20\n\t\tDEC\t127518 B-20\n\t\tDEC\t.54059 B-2\n\t\tDEC\t.153964 E-4 B+12\n\t\tDEC\t-.742923 B-6\n\t\tDEC\t1.5398 B-6\n\t\tDEC\t9.68 B-6\n\t\tDEC\t.647625\tE-4 B+12\n\t\tDEC\t-27228 B-20\n\t\tDEC\t-.206476 B-2\n\nSLOPEVAL\tDEC\t1.96307 B-6\n\t\tDEC\t27.5774 B-6\n\t\tDEC\t2.3548 E-5 B+12\n\t\tDEC\t2.1777 E-9 B+26\n\t\tDEC\t1.044 E-3 B+8\n\t\tDEC\t0\n\t\tDEC\t2.21068 E-3 B+8\n\t\tDEC\t1.5166 E-9 B+26\n\t\tDEC\t-1.284 B-6\n\t\tDEC\t2 E-5 B+12\n\nNEGBPW\t\tDEC\t-15402.17 B-16\nDXITFIX\t\tDEC*\t-1.88275 E-5 B+12*\n"
  },
  {
    "path": "Comanche055/TVCRESTARTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTVCRESTARTS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t956-960\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\t\t2009-05-20 RSB\tCorrections:  TCF -> BZF in one place.\n#\t\t2009-05-21 RSB\tIn PHSCHK2, CS TVCPHASE corrected to\n#\t\t\t\tCCS TVCPHASE and CCS 4 corrected to CCS A.\n#\t\t\t\tPage 924 corrected to 961.  CORCOPY +2\n#\t\t\t\tcorrected to CORCOPY +1.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 956\n# NAME....TVCRESTART PACKAGE,  CONSISTING OF REDOTVC, ENABL1, 2, CMDSOUT, PHSCHK2, ETC.\n# LOG SECTION...TVCRESTARTS\t\t\tSUBROUTINE....DAPCSM\n# MODIFIED BY SCHLUNDT\t\t\t\t21 OCTOBER 1968\n# FUNCTIONAL DESCRIPTION....\n#\n#      *RESTART-PROOFS THE TVC DAPS, INCLUDING PITCHDAP, YAWDAP,\n#\tTVCEXECUTIVE, ROLLDAP, TVCINIT4, TVCDAPON, AND CSM/LM V46 SWTCHOVR.\n#      *TVC RESTARTS DESERVE SPECIAL CONSIDERATION IN SEVERAL AREAS.\n#\tRESTART DOWN-TIME IS IMPORTANT BECAUSE OF THE TRANSIENTS INTRODUCED\n#\tBY THE THRUST VECTOR RETURN TO THE ACTUATOR MECHANICAL NULLS\n#\tFOLLOWING TVC- AND OPTICS-ERROR-COUNTER-DISENABLES (CHANNEL 12).\n#\tTVC    USES A MIXTURE OF WAITLIST, T5, T6, AND JOB CALLS. THERE IS\n#\tFILTER MEMORY (UP TO 6TH ORDER) TO BE PROTECTED IF WILD TRANSIENTS\n#\tARE TO BE AVOIDED. COUNTERS ARE INVOLVED FOR ONE-SHOT\n#\tCORRECTIONS AND GAIN UPDATES. THE GIMBAL TRIM ESTIMATORS AND THE\n#\tBODY AXIS ATTITUDE ERROR INTEGRATORS INVOLVE DIGITAL SUMMATION.\n#\tDIGITAL DIFFERENTIATORS ARE INVOLVED IN THE BODY AXIS RATE ESTIMA-\n#\tTIONS AND IN THE OUTPUTTING OF ACTUATOR COMMANDS. THERE IS AN\n#\tOFFSET-TRACKER-FILTER TO PROTECT. ETC., ETC.\n#      *THOSE QUANTITIES WHICH MUST BE PROTECTED ARE STORED IN TEMPORARY\n#\tREGISTERS AS THEY ARE COMPUTED, FOR UPDATING THE REAL REGISTERS\n#\tDURING COPYCYCLES.\n#      *THE SEVERAL COPYCYCLES ARE EACH PROTECTED BY PHASE POINTS AT THEIR\n#\tBEGINNING AND AT THEIR TERMINATION. THE PHASE POINTS ARE SIMPLY\n#\t..INCR.. INSTRUCTIONS,   EITHER ..INCR TVCEXPHS.. FOR COPYCYCLES\n#\tIN THE TVCEXECUTIVE, OR ..INCR TVCPHASE.. FOR THE PITCH AND YAW\n#\tCOPYCYCLES. INDEXING ON EACH OF THESE POINTERS THEN PERMITS A\n#\tRETURN TO THE APPROPRIATE RESTART POINTS.\n#      *IF A RESTART OCCURS DURING EITHER COPYCYCLE, THAT COPYCYCLE IS\n#\tCOMPLETED. THEN THE NORMAL TVCINIT4....DAPINIT....PITCHDAP STARTUP\n#\tSEQUENCE IS CALLED UPON TO GET THINGS GOING AGAIN.\n#      *TVC-ENABLE AND OPTICS-ERROR-COUNTER ENABLE MUST BE SET ASAP\n#\t(ALLOWING FOR PROCEDURAL DELAYS). THEN THE ENGINES ARE COMMANDED\n#\tTO THE P,YACTOFF TRIM VALUES. THE DAPS ARE THEN READY TO GO ON THE\n#\tAIR, WITH THE REGULAR STARTUP SEQUENCE, EITHER AT MRCLEAN FOR A\n#\tCOMPLETE INITIALIZATION OR AT TVCINIT4 FOR A PARTIAL INITIALIZATION\n#      *FOR RESTARTS PRIOR TO THE SETTING OF THE T5 BITS AT DOTVCON THE\n#\tPRE40.6 SECTION OF S40.6 TAKES CARE OF RE-ESTABLISHING TRIMS.\n#      *IF A RESTART OCCURS DURING THE TVCEXEC....TVCEXFIN SEQUENCE THE\n#\tCOMPUTATIONS WILL BE COMPLETED, STARTING AT THE APPROPRIATE RESTART\n#\tPOINT, AFTER THE DAPS ARE READY TO GO ON THE AIR.\n#      *IF A RESTART OCCURS PRIOR TO TVCINIT4 (TVCPHASE = -1) E.G. DURING\n#\tTHE EARLY DAP INITIALIZATION PHASE, THE DAP STARTUP SEQUENCE IS\n#\tENTERED AT MRCLEAN FOR A FULL INITIALIZATION.\n#      *FOR RESTARTS DURING CSM/LM V46 SWITCH-OVER, TVCPHASE IS SET TO -2,\n#\tAND THE RESTART LOGIC GOES BACK TO REDO SWITCH-OVER (AFTER THE\n#\tNORMAL DAP RESTART SEQUENCE IS FOLLOWED).\n#      *RESTARTS ARE NOT CRITICAL TO THE ROLL DAP PERFORMANCES HENCE THE\n#\tROLL DAP IS MERELY RESTARTED.\n#      *RESTARTS DURING A STROKE TEST (STROKER IS NON-ZERO) WILL CAUSE THE\n# Page 957\n#\tSTROKE TEST TO BE TERMINATED. A NEW V68 ENTRY WILL BE REQUIRED\n#\tTO GET IT GOING AGAIN (NO AUTOMATIC RESTART).\n#      *REDOTVC IS REACHED FOLLOWING ANY RESTART WHICH FINDS THE T5 BITS\n#\t(BITS 15,14 OF FLAGWRD6) SET FOR TVC. DOTVCON SETS TVCPHASE = -1\n#\tAND TVC EXPHS = 0 JUST BEFORE SETTING THESE BITS, JUST BEFORE\n#\tMAKING THE T5 CALL TO TVCDAPON. ON A NORMAL SHUTDOWN DOTVCRCS\n#\tCALLS RCSDAPON, WHICH RESETS THE T5 BIT FOR RCS.\n# CALLING SEQUENCE....T5, IN PARTICULAR BY ELRSKIP OF FRESH START/RESTART\n#\n# NORMAL EXIT MODES....RESUME, NOQRSM, POSTJUMP (TO TVCINIT4 OR MRCLEAN)\n#\n# ALARM OR ABORT EXIT MODES....NONE\n#\n# SUBROUTINES CALLED....\n#\n#      *PCOPY+1, YCOPY+1 (PITCH AND YAW COPYCYCLES)\n#      *ENABLE1,2, CMDSOUT (RE-ESTABLISH ACTUATOR TRIMS)\n#      *MRCLEAN OR TVCINIT4 (TVCDAP INITIALIZATIONS)\n#      *SWICHOVR +5  (CSM/LM V46 SWITCH-OVER)\n#      *EXRSTRT AND TVCEXECUTIVE PHASE POINTS 1 THRU 6\n#      *WAITLIST, IBNKCALL, POSTJUMP, ISWCALL\n#\n# OTHER INTERFACES....DOTVCON AND RCSDAPON (T5 BITS), ELRSKIP (CALLS IT)\n# ERASABLE INITIALIZATION REQUIRED....\n#\n#      *T5 BITS (1,0), TVCPHASE (-2,-1,0,1,2,3), TVCEXPHS (1 THRU 6)\n#      *TVC DAP VARIABLES\n#      *OPERATIONS PERFORMED BY REDOTVC ARE BASED ON THE ASSUMPTION THAT\n#\tTHE TVC DAPS ARE RUNNING NORMALLY\n#\n# OUTPUT....\n#\n#      *PITCH AND YAW TVC DAP COPYCYCLES COMPLETED IF INTERUPTED\n#      *TVCEXECUTIVE COMPLETED IF INTERUPTED\n#      *STROKE TEST TERMINATED IF INTERRUPTED\n#      *CSM/LM V46 SWITCH-OVER REPEATED IF INTERRUPTED\n#      *ACTUATOR TRIMS RE-ESTABLISHED (ACTUATORS BACK ON THE AIR)\n#      *TVC DAP INITIALIZATION AS REQUIRED\n#      *ALL TVC DAP OPERATIONS ON THE AIR\n#\n# DEBRIS....TVC TEMPORARIES IN EBANK6\n\n# Page 958\n\n\t\tBANK\t16\n\t\tSETLOC\tDAPROLL\n\t\tBANK\n\t\tEBANK=\tTVCPHASE\n\t\tCOUNT*\t$$/RSRT\n\nREDOTVC\t\tLXCH\tBANKRUPT\t# TVC RESTART PACKAGE\n\t\tEXTEND\n\t\tQXCH\tQRUPT\t\t# (  ..TCR..  IN  ..FINCOPY..  )\n\nEXECPHS\t\tCCS\tTVCEXPHS\t# CHECK TVCEXECUTIVE PHASE\n\t\tTCF\t+2\t\t#\tMUST RESTART TVCEXECUTIVE\n\t\tTCF\tTVCDAPHS\t#\tNO NEED TO RESTART TVCEXECUTIVE\n\n\t\tCAF\tNINE\t\t# 9CS DELAY TO FORCE EXRSTRT TO OCCUR\n\t\tTC\tWAITLIST\t#\tBEFORE PITCHDAP, AFTER CMDSOUT\n\t\tEBANK=\tTVCEXPHS\n\t\t2CADR\tEXRSTRT\n\nTVCDAPHS\tCS\tOCT37776\t# CHECK BITS 15 AND 1 OF TVCPHASE TO SEE\n\t\tMASK\tTVCPHASE\t#\tDAP RESTART LOCATION (-1,1,2,3)\n\t\tCCS\tA\n\t\tTCF\tFINCOPY\t\t#\tFINISH THE COPYCYCLE FIRST\n\t\tTCF\tENABL1\t\t#\tJUST PREPARE THE OUTCOUNTERS AND GO\n\n\t\tCS\tTVCPHASE\t# TEST FOR TVCPHASE = -2\n\t\tMASK\tBIT2\t\t#\t(THIS INDICATES RESTART OCCURRED\n\t\tEXTEND\t\t\t#\t DURING CSM/LM V46 SWITCH-OVER)\n\t\tBZF\tTRIM/CMD\t# NO. TVCPHASE = -1. RSTRT WAS IN TVCINIT\n\nENABL1\t\tCAF\tBIT8\t\t# TVC ENABLE, FOLLOWED BY 40 MS (MIN) WAIT\n\t\tAD\tBIT11\t\t# SET BIT FOR OPTICS-DAC-ENABLE ALSO\n\t\tEXTEND\t\t\t# (ENABL1 ENTERED FROM TVCDAPHS / FINCOPY)\n\t\tWOR\tCHAN12\n\t\tCAF\tTVCADDR\t\t# WAIT.  CALLING ENABL2  (BBCON THERE)\n\t\tTS\tT5LOC\n\t\tCAF\tTVCADDR +4\t#\t60 MS (TVCEXADR)\n\t\tTS\tTIME5\n\n\t\tTCF\tRESUME\n\nENABL2\t\tLXCH\tBANKRUPT\t# CONTINUE PREPARATION OF OUTCOUNTERS\n\n\t\tCAF\tBIT2\t\t# OPTICS ERROR CNTR ENABLE. 4MS MIN WAIT\n\t\tEXTEND\n\t\tWOR\tCHAN12\n# Page 959\n\t\tCAF\tTVCADDR +2\t# WAIT, CALLING CMDSOUT (BBCON THERE)\n\t\tTS\tT5LOC\n\t\tCAF\tOCT37776\t#\t20MS\n\t\tTS\tTIME5\n\n\t\tTCF\tNOQRSM\n\nCMDSOUT\t\tLXCH\tBANKRUPT\t# CONTINUE PREPARATION OF OUTCOUNTERS\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tCS\tZERO\t\t# MOST RECENT ACTUATOR COMMANDS\n\t\tAD\tPCMD\t\t#\t(AVOID +0)\n\t\tTS\tTVCPITCH\n\t\tCS\tZERO\n\t\tAD\tYCMD\n\t\tTS\tTVCYAW\n\n\t\tCAF\tPRIO6\t\t# RELEASE THE COUNTERS (BITS 11,12)\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\nPHSCHK2\t\tCCS\tTVCPHASE\t# CHECK TVCPHASE AGAIN\n\t\tTCF\tCHKSTRK\n\t\tTCF\tCHKSTRK\n\t\tCCS\tA\t\t# A CONTAINS THE DIMINISHED ABSOLUTE OF\n\t\tTC\t+3\t\t# TVCPHASE (-2 BECOMES +1, -1 BECOMES +0)\n\n\t\tTC\tPOSTJUMP\t#\tREPEAT TVC INITIALIZATION\n\t\tCADR\tMRCLEAN\t\t#\t(DO NOT RETURN)\n\n\t+3\tTC\tIBNKCALL\t#\tREPEAT CSM/LM V46 SWITCH-OVER\n\t\tCADR\tSWICHOVR +5\t#\t(RETURN TO CHECK FOR STROKE TEST)\n\nCHKSTRK\t\tCCS\tSTROKER\t\t# CHECK FOR STROKE TEST IN PROGRESS\n\t\tTCF\tTSTINITJ\t# YES, KILL IT\n\t\tTCF\t+2\t\t# NO, PROCEED\n\t\tTCF\tTSTINITJ\t# YES, KILL IT\n\n\t+4\tTC\tPOSTJUMP\t#\tIF POSITIVE OR ZERO, RESTART AT\n\t\tCADR\tTVCINIT4\t#\t\tTVCINIT4 (ZEROS TVCPHASE, AND\n\t\t\t\t\t#\t\tCALLS TVC DAPS VIA DAPINIT)\nFINCOPY\t\tINDEX\tTVCPHASE\t# PICK UP THE APPROPRIATE COPYCYCLE\n\t\tCAF\tTVCCADR\n\t\tTCR\tISWCALL\t\t# RE-ENTER THE COPYCYCLE, RETURN AT END\n\t\tTCF\tENABL1\t\t# NOW PREPARE THE OUTCOUNTERS\n\nTRIM/CMD\tEXTEND\t\t\t# TVCDAPON INITIALIZATION NOT COMPLETED,\n# Page 960\n\t\tDCA\tPACTOFF\t\t#\tEG.  P,YCMD MAY NOT BE SET.  SET...\n\t\tDXCH\tPCMD\n\t\tTCF\tENABL1\t\t# NOW PREPARE THE OUTCOUNTERS\n\nTSTINITJ\tCAF\tZERO\t\t# DISABLE STROKE TEST (-0 SHOWS PRIOR V68)\n\t\tTS\tSTROKER\t\t# (+0 MEANS NEW V68 REQUIRED FOR STARTUP)\n\n\t\tTCF\tCHKSTRK +4\n\nEXRSTRT\t\tINDEX\tTVCEXPHS\t# TVCEXECUTIVE RESTARTS....GO TO\n\t\tCAF\tTVCEXADR\t#\tAPPROPRIATE RESTART POINT\n\t\tINDEX\tA\n\t\tTCF\t0\n\n# TVC RESTART TABLES.... ORDER IS REQUIRED.   HI-ORDER WORDS ONLY, OF 2CADRS, SINCE BBCON IS ALREADY THERE.\n\nTVCADDR\t\t=\tTVCCADR\t\t# TABLE OF CADRS, UNUSED LOCS FOR GENADRS\nTVCCADR\t\tGENADR\tENABL2\t\t# (FOR T5 CALL, UNUSED TABLE LOC)\n\t+1\tCADR\tPCOPY +1\t# PITCH COPYCYCLE\n\t+2\tGENADR\tCMDSOUT\t\t# (FOR T5 CALL, UNUSED TABLE LOC)\n\t+3\tCADR\tYCOPY +1\t# YAW COPYCYCLE\nTVCEXADR\tOCT\t37772\t\t# (UNUSED TABLE LOC, FILL WITH 60MS, T5)\n\t+1\tGENADR\tEXECCOPY +1\t# TVCEXECUTIVE RESTART POINTS (ORDERED)\n\t+2\tGENADR\t1SHOTCHK\n\t+3\tGENADR\tTEMPSET\n\t+4\tGENADR\tCORSETUP\n\t+5\tGENADR\tCORCOPY +1\n\t+6\tGENADR\tCNTRCOPY\n\n\n"
  },
  {
    "path": "Comanche055/TVCROLLDAP.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTVCROLLDAP.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t984-998\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 984\n# PROGRAM NAME...TVC ROLL AUTOPILOT\n# LOG SECTION...TVCROLLDAP\t\t\tSUBROUTINE...DAPCSM\n# MOD BY SCHLUNDT\t\t\t\t21 OCTOBER 1968\n\n\n# FUNCTIONAL DESCRIPTION....\n\n#      *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER\n#      *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN\n#\tBY IGNITION (P40)\n#      *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE\n#      *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3\n#      *USES T6 CLOCK TO TIME JET FIRINGS\n#      *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER\n#      *MINIMUM JET FIRING TIME = 15 MS\n#      *JET PAIRS FIRE ALTERNATELY\n#      *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED\n#      *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION\n#\tOF A JET FIRING TIME IS MADE ON A LATER PASS\n\n# CALLING SEQUENCE....\n\n#      *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC)\n#\tWITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.)\n\n# NORMAL EXIT MODES.... ENDOFJOB\n\n# ALARM OR ABORT EXIT MODES.... NONE\n\n# SUBROUTINES CALLED.....NONE\n\n# OTHER INTERFACES....\n\n#      *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC\n#\tEVERY 10 SECONDS (VIA MASSPROP AND S40.15)\n#      *RESTARTS SUSPEND ROLL DAP COMPUTATIONS UNTIL THE NEXT 1/2 SEC\n#\tSAMPLE PERIOD.  (THE PART OF TVCEXECUTIVE THAT CALLS ROLL DAP IS\n#\tNOT RESTARTED.)  THE OGAD FROM IGNITION IS MAINTAINED.\n\n# ERASABLE INITIALIZATION REQUIRED....\n\n#      *1/CONACC (S40.15)\n#      *OGAD (CDUX AT IGNITION)\n#      *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE)\n#      *OGAPAST (OGANOW AT TVCEXECUTIVE)\n#      *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON)\n#\n# OUTPUT....\n\n#      *ROLL JET PAIR FIRINGS\n\n# Page 985\n# DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY\n\n# Page 986\n# SOME NOTES ON THE ROLL AUTOPILOT, AND IN PARTICULAR, ON ITS SWITCHING\n# LOGIC.  SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS.\n\n# SWITCHING LOGIC IN THE PHASE PLANE....\n\n#                              OGARATE\n#                                 *\n#                                 *\n#  * * * * * * * * * * *          *\n#                                 *     (REGION 1, SEE TEXT BELOW)\n#                            *    *\n#                                 *\n# * * * * * * *     (COAST)       *     ...PARABOLA (SWITCHING = CONTROL)\n#               *                 *    .\n#                 *               *   *\n#                   *             *                (FIRE NEG ROLL JETS)\n#                     *           *      *\n#     (-DB,+LMCRATE)....*         *\n#                       *         *        *\n#                       *         *\t\t\t         OGAERROR\n# ************************************************************************\n#                                 *         *                (-AK, OGAERR)\n#                        *        *         *      (REGION 6-PRIME)\n#                                 *         *      (SEE TEXT BELOW)\n#                          *      *           *\n#                                 *             *     ...STRAIGHT LINE\n#    (FIRE POS ROLL JETS)     *   *               *  .\n#                                 *   (COAST)       *\n#                                 *                   * * * * * * * * * *\n#                                 *                         -MINLIM\n#                                 *    *\n#                                 *\n#                                 *          * * * * * * * * * * * * * * *\n#                                 *                        -MAXLIM\n#                                 *\n#                                 *\n\n# SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF\n#\tCONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC\n#\tROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE).  JET\n#\tFIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE,\n#\tSUBJECT TO THE LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION,\n#\tABOVE.\n\n# THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRIZED OF\n#\tTWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME...\n#\t6-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS)\n# Page 987\n#\n# GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE\n#\tIS AT THE POINT OF PENETRATION OF THE COAST REGION BY THE CONTROL\n#\tPARABOLA WHICH PASSES THROUGH THE OPERATING POINT.  FOR REGION 3\n#\tDESIRED OGARATE IS SIMPLY +-MAXLIM.  FOR REGIONS 1 OR 6 THE SOLUTION\n#\tTO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT\n#\tLINE OR MINLIM BOUNDRY SWITCH LINES).  AN APPROXIMATION IS MADE\n#\tINSTEAD.  TAKE AN OPERATING POINT IN REGION 6' .  PASS A TANGENT TO\n#\tTHE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS\n#\tINTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE...\n#\tTHE INTERSECTION DEFINES THE DESIRED OGARATE.  IF THE OPERATING POINT IS\n#\tCLOSE TO THE SWITCH LINE, THE APPROXIMATION IS QUITE GOOD (INDEED\n#\tTHE APPROXIMATE AND QUADRATIC SOLUTIONS CONVERGE IN THE LIMIT AS\n#\tTHE SWITCH LINE IS APPROACHED).  IF THE OPERATING POINT IS NOT CLOSE\n#\tTO THE SWITCH LINE, THE APPROXIMATE SOLUTION GIVES VALID TREND\n#\tINFORMATION (DIRECTION OF DESIRED OGARATE) AT LEAST.  THE\n#\tRE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2\n#\tSECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE\n#\tAPPROXIMATION.\n\n# FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDARY BEFORE\n#\tINTERSECTING THE STRAIGHT LINE SWITCH.  HOWEVER THE MINLIM IS\n#\tIGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO\n#\tTHE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO.\n#\tIF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING\n#\tTHE DESIRED INTERSECTION (IE. IN THE REGION BETWEEN THE MINLIM\n#\tAND THE STRAIGHT LINE SWITCH) IT WILL EXHIBIT NORMAL COAST-REGION\n#\tBEHAVIOR AND TURN OFF THE JETS.  THE PURPOSE OF THIS FIRING POLICY\n#\tIS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET\n#\tFAILED-ON.\n\n# WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS\n#\tMADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT,\n#\tDEFINED BY.. OGAERROR = INTERSECTION OF CONTROL PARABOLA AND\n#\tOGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF\n#\tREAL OPERATING POINT RATE.  WHEN THE OPERATING POINT HAS PASSED\n#\tFROM REGION 1 TO REGION 6', THE DUMMY POINT IS NO LONGER REQUIRED,\n#\tAND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6' POINT.\n\n\n# EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE)....\n#\t\t\t\t  2\n#\tSOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE)\n\n\n# EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT....\n\n#\tSOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP\n\n#\t\tWHERE  INTERCEP = DB(-SLOPE) - LMCRATE\n# Page 988\n#\n# EQUATION FOR INTERSECTION, CONTROL PARABOLA AND STRAIGHT SWITCH LINE....\n\n#\tDOGADOT = NUM/DEN, WHERE\n#\t\t\t\t   2\n#\t    NUM = (-SLOPE)(OGARATE) (1/CONACC)\n#\t\t    +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB))\n#\t\t    +LMCRATE\n\n#\t    DEN = (-SLOPE)(LMCRATE)(1/CONACC) - SGN(DELOGA)\n\n#\t\t\t\t\t      2\n#\t    DELOGA = OGAERROR - (DB - (OGADOT) (1/CONACC)/2) SGN(OGARATE)\n\n\n# FOR REGIONS 6 AND 6-PRIME USE ACTUAL OPERATING POINT (OGA, OGARATE)\n#\tFOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE.\n#\tFOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR\n#\tAND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY....\n#\tOGAERROR= DELOGA + DB SGN(OGARATE)\n#\tOGARATE= -LMCRATE SGN(OGARATE)\n#\n# NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING\n#\tALSO, AT POINT WHERE DOGARATE IS COMPUTED, REGISTER DELOGA IS USED\n#\tAS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE\n# Page 989\n\n# ROLLDAP CODING....\n\n\t\tSETLOC\tDAPROLL\n\t\tBANK\n\t\tEBANK=\tOGANOW\n\t\tCOUNT*\t$$/ROLL\nROLLDAP\t\tCAE\tOGANOW\t\t# OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER\n\t\tEXTEND\t\t\t#\tDIFFERENCE (SAMPLE TIME = 1/2 SEC)\n\t\tMSU\tOGAPAST\n\t\tEXTEND\n\t\tMP\tBIT5\n\t\tLXCH\tA\n\t\tTS\tOGARATE\t\t# SC.AT B-4 REV/SEC\n\n# COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER)\n# EXAMINE DURATION OF LAST JET FIRING IF JETS ARE NOW ON.\n\nDURATION\tCA\tROLLFIRE\t# SAME SGN AS PRESENT TORQ,MAGN=POSMAX\n\t\tEXTEND\n\t\tBZF\t+2\t\t# ROLL JETS ARE NOW OFF.\n\t\tTCF\tROLLOGIC\t# ENTER LOGIC,JETS NOW ON.\n\n\t\tCAE\tTEMREG\t\t# EXAMINE LAST FIRING INTERVAL\n\t\tEXTEND\t\t\t# IF POSITIVE, DONT FIRE\n\t\tBZF\tROLLOGIC\t# ENTER LOGIC, JETS NOW OFF.\n\n\t\tCAF\tZERO\t\t# JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT\n\t\tTS\tTEMREG\t\t# RESET TEMREG\nWAIT1/2\t\tTCF\tTASKOVER\t# EXIT ROLL DAP\n\n# COMPUTE DB-(1/2 CONACC) (OGARATE)SQ  (1/2 IN THE SCALING)\n\nROLLOGIC\tCS\tOGARATE\t\t# SCALED AT 2(-4) REV/SEC\n\t\tEXTEND\n\t\tMP\t1/CONACC\t# SCALED AT 2(+9) SEC SQ /REV\n\t\tEXTEND\n\t\tMP\tOGARATE\n\t\tAD\tDB\t\t# SCALED AT 2(+0) REV\n\t\tTS\tTEMREG\t\t# QUANTITY SCALED AT 2(+0) REV.\n\n# GET SIGN OF OGARATE\n\n\t\tCA\tOGARATE\n\t\tEXTEND\n\t\tBZMF\t+3\t\t# LET SGN(0) BE NEGATIVE\n\t\tCA\tBIT1\n\t\tTCF\t+2\n\t\tCS\tBIT1\n\t\tTS\tSGNRT\t\t# + OR -  2(-14)\n\n# Page 990\n# CALCULATE DISTANCE FROM SWITCH PARABOLA (DELOGA)\n\n\t\tEXTEND\n\t\tMP\tTEMREG\t\t# SGN(OGARATE) TEMREG NOW IN L\n\t\tCS\tL\n\t\tAD\tOGA\t\t# SCALED AT 2(+0) REV\nDELOGAC\t\tTS\tDELOGA\t\t# SC.AT B+0 REV, PLUS TO RIGHT OF C-PARAB\n\n# EXAMINE SGN(DELOGA) AND CREATE CA OR CS INSTR. DEPENDING UPON SIGN.\n\n\t\tEXTEND\n\t\tBZMF\t+3\n\t\tCAF\tPRIO30\t\t# =CA (30000)\n\t\tTCF\t+2\n\t\tCAF\tBIT15\t\t# =CS (40000)\n\t\tTS\tI\n\n\t\tINDEX\tI\t\t# TSET ON I SGN(OGARATE)\n\t\t0\tSGNRT\t\t# CA OR CS\n\t\tCOM\n\t\tEXTEND\nREG1TST\t\tBZMF\tROLLON\t\t# IF REGION 1 (DELOGA OGARATE SAME SIGN)\n\n# NO JET FIRE YET.  TEST FOR MAX OGARATE\n\n\t\tINDEX\tI\n\t\t0\tOGARATE\t\t# CA OR CS...BOTH MUST BE NEG. HERE\n\t\tTS\tIOGARATE\t# I.E. I OGARATE\n\t\tAD\tMAXLIM\t\t# SCALED AT 2(-4) REV/SEC\n\t\tEXTEND\nREG3TST\t\tBZMF\tRATELIM\t\t# IF REGION 3 (RATES TOO HIGH, FIRE JETS)\n\n# COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT..NOTE THAT STR. LINE\n# SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG QUANTITY\n\n\t\tCA\tOGARATE\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tTS\tTEMREG\n\t\tCA\tOGA\n\t\tEXTEND\n\t\tMP\t-SLOPE\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\t\t\t# (OGA ERROR MUST BE LESS THAN +-225 DEG)\n\t\tAD\tTEMREG\n\n\t\tINDEX\tI\n\t\t0\tA\t\t# I((-SLOPE)OGA+OGARATE) AT 2(-3)REV/SEC\n\t\tCOM\n# Page 991\n\t\tAD\tINTERCEP\t# SCALED AT 2(-3) REV.\n\t\tCOM\n\t\tEXTEND\nREG2TST\t\tBZMF\tNOROLL\t\t# IP REGION 2 (COAST SIDE OF STRT LINE)\n\n# CHECK TO SEE IF OGARATE IS ABOVE MINLIM BOUNDARY\n\n\t\tCA\tIOGARATE\t# ALWAYS NEGATIVE\n\t\tAD\tMINLIM\t\t# SCALED AT 2(-4) REV/SEC\n\t\tEXTEND\nREG4TST\t\tBZMF\tNOROLL\t\t# IF REGION 4 (COAST SIDE OF MINLIM)\n\n# ALL AREAS CHECKED EXCEPT LAST AREA...NO FIRE IN THIS SMALL SEGMENT\n\n\t\tINDEX\tI\n\t\t0\tOGA\n\t\tCOM\n\t\tAD\tDB\n\t\tCOM\n\t\tEXTEND\nREG5TST\t\tBZMF\tNOROLL\t\t# IF REGION 5 (COAST SIDE OF DB)\n\n# JETS MUST FIRE NOW.OGARATE IS NEG.(OR VICE VERSA).USE DIRECT STR. LINE.\n# DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN THE SOLUTION OF A\n# STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION\n# OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE.  THE STRAIGHT\n# LINE IS THE TANGENT TO THE CONTROL PARABOLA AT THE OPERATING POINT.  (FOR\n# OPERATING POINTS IN REGIONS 6 AND 6')\n\nREGION6\t\tCAE\tOGA\t\t# USE ACTUAL OPERATING POINT FOR TANGENT\n\t\tTS\tDELOGA\t\t# ACTUAL STATE\n\t\tCA\tOGARATE\n\t\tTS\tDELOGART\t# ACTUAL STATE,I.E. DEL OGARATE\n\t\tTCF\tONROLL\n\n# JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VICE VERSA),USE INDIRECT\n# STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT    ((DELOGA\n# + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) )\t(THIS IS THE DUMMY\n# OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1' )\n\nROLLON\t\tINDEX\tI\n\t\t0\tDB\n\t\tADS\tDELOGA\t\t# DELOGA WAS DIST. FROM SWITCH PARABOLA\n\n\t\tCS\tLMCRATE\t\t# LIMIT CYCLE RATE AT 2(-4) REV/SEC\n\t\tINDEX\tI\n\t\t0\tA\n\t\tTS\tDELOGART\t# EVALUATE STATE FOR INDIRECT LINE.\n\n# Page 992\n# SOLVE STRAIGHT LINES SIMULTANEOUSLY TO OBTAIN DESIRED OGARATE.\n\nONROLL\t\tEXTEND\t\t\t# DELOGART IN ACC. ON ARRIVAL\n\t\tMP\t1/CONACC\n\t\tDOUBLE\n\t\tEXTEND\n\t\tMP\t-SLOPE\n\t\tTS\tTEMREG\t\t# 2(-SLOPE)RATE /CONACC\n\t\tEXTEND\n\t\tMP\tDELOGART\n\t\tTS\tDELOGART\t# 2(-SLOPE)(RATESQ)/CONACC\n\t\tCS\tBIT11\n\t\tINDEX\tI\n\t\t0\tA\nRATEDEN\t\tADS\tTEMREG\t\t# DENOMINATOR COMPLETED\n\n\t\tINDEX\tI\n\t\t0\tDELOGA\n\t\tCOM\n\t\tAD\tDB\n\t\tCOM\n\t\tEXTEND\n\t\tMP\t-SLOPE\n\t\tADS\tDELOGART\n\t\tCA\tLMCRATE\n\t\tEXTEND\n\t\tMP\tBIT11\nRATENUM\t\tAD\tDELOGART\t# NUMERATOR COMPLETED\n\n\t\tXCH\tL\t\t# PLACE NUMERATOR IN L FOR OVERFL. CHECK\n\t\tCA\tZERO\n\t\tEXTEND\n\t\tDV\tTEMREG\t\t# OVERFLOW, IF ANYTHING, NOW APPEARS IN A\n\t\tEXTEND\n\t\tBZF\tDVOK\t\t# NO OVERFLOW....(0,L)/TEMREG = 0,L\n\nMINLIMAP\tCCS\tA\n\t\tCAF\tPOSMAX\t\t# \tPOSITIVE OVERFLOW\n\t\tTCF\tROLLSET\n\t\tCS\tPOSMAX\t\t#\tNEGATIVE OVERFLOW\n\t\tTCF\tROLLSET\n\nDVOK\t\tLXCH\tA\t\t# PUT NUMERATOR BACK INTO A, 0 INTO L\n\t\tEXTEND\n\t\tDV\tTEMREG\t\t# RESULT OF DIVISION IS DESIRED OGARATE\n\t\tTCF\tROLLSET\t\t#\t( SCALED AT B-4 REV/SEC )\n\nRATELIM\t\tCS\tMAXLIM\n\t\tINDEX\tI\n# Page 993\n\t\t0\tA\t\t# IF I = CA, DESIRED RATE IS\t-MAXLIM\n\n# COMPUTE JET FIRE TIME, BASED ON DESIRED RATE MINUS PRESENT RATE\n\nROLLSET\t\tTS\tTEMREG\t\t# STORE DESIRED OGARATE (SCALED B-4)\n\t\tEXTEND\n\t\tSU\tOGARATE\t\t# RATE DIFF. SCALED AT 2(-4) REV/SEC\n\t\tTS\tTEMREG\t\t#\tOVERFLOW PROTECT\n\t\tTCF\t+3\t\t#\t    \"       \"\n\t\tINDEX\tA\t\t#           \"       \"\n\t\tCS\tLIMITS\t\t#\t    \"       \"\n\t\tEXTEND\n\t\tMP\tT6SCALE\t\t# T6SCALE = 8/10.24\n\t\tEXTEND\n\t\tMP\t1/CONACC\t# SCALED AT B+9 SECSQ/REV (MAX < .60)\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tTS\tTEMREG\t\t#\tOVERFLOW PROTECT\n\t\tTCF\t+3\t\t#\t    \"\t    \"\n\t\tINDEX\tA\t\t#   \t    \"\t    \"\n\t\tCS\tLIMITS\t\t# \t    \" \t    \"\n\t\tTS\tTEMREG\t\t# JET FIRE TIME AT 625 MICROSEC/BIT\n\t\tEXTEND\t\t\t# POS MEANS POSITIVE ROLL TORQUE.\n\t\tBZF\tNOROLL\n\n# JET FIRE TIME IS NZ, TEST FOR JETS NOW ON.\n\n\t\tCAE\tTEMREG\t\t# DESIRED CHANGE IN OGARATE\n\t\tEXTEND\n\t\tMP\tROLLFIRE\t# (SGN OF TORQUE..ZERO IF JETS NOW OFF)\n\t\tCCS\tA\n\t\tTCF\tMOREROLL\t# CONTINUE FIRING WITH PRESENT POLARITY\n\t\tTCF\tNEWROLL\t\t# START NEW FIRING NOW, PLUS\n\t\tTCF\tNOROLL\t\t# TERMINATE OLD FIRING, NEW SIGN REQUESTED\n\t\tTCF\tNEWROLL\t\t# START NEW FIRING NOW, MINUS\n\n# CONTINUE PRESENT FIRING\n\nMOREROLL\tCAF\tZERO\n\t\tTS\tI\t\t# USE TEMP. AS MOREROLL SWITCH\n\t\tTCF\tMAXTFIRE\n\n# START NEW FIRING BUT CHECK IF GREATER THAN MIN FIRE TIME.\n\nNEWROLL\t\tCCS\tTEMREG\t\t# CALL THIS T6FIRE\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tAD\tONE\n\t\tCOM\t\t\t# -MAG(T6FIRE)\n\t\tAD\tTMINFIRE\t# TMINFIRE-MAG(T6FIRE)\n# Page 994\n\t\tCOM\n\t\tEXTEND\nMINTST\t\tBZMF\tNOROLL\t\t# IF NOT GREATER THAN TMINFIRE (NEW FIRE)\n\n# PROCEED WITH NEW FIRING BUT NOT LONGER THAN TMAXFIRE.\n\nMAXTFIRE\tCA\tTEMREG\n\t\tEXTEND\n\t\tMP\t1/TMXFIR\t# I.E. 1/TMAXFIRE\n\t\tEXTEND\nMAXTST\t\tBZF\tNOMXFIRE\t# IF LESS THAN TMAXFIRE\n\n\t\tCCS\tA\n\t\tCAF\tTMAXFIRE\t# USE MAXIMUM\n\t\tTCF\t+2\n\t\tCS\tTMAXFIRE\t# USE MAXIMUM\n\t\tTS\tTEMREG\n\n# SET UP SIGN OF REQUIRED TORQUE.\n\nNOMXFIRE\tCCS\tTEMREG\t\t# FOR TORQUE SIGN\n\t\tCA\tPOSMAX\t\t# POSITIVE TORQUE REQUIRED\n\t\tTCF\t+2\n\t\tCA\tNEGMAX\t\t# NEGATIVE TORQUE REQUIRED\n\t\tTS\tROLLFIRE\t# SET ROLLFIRE FOR + OR - TORQUE\n\n\t\tCOM\t\t\t# COMPLEMENT... POS. FOR NEG. TORQUE\n\t\tEXTEND\n\t\tBZMF\t+3\t\t# POSITIVE TORQUE REQUIRED\n\t\tCS\tTEMREG\n\t\tTS\tTEMREG\n\nFIRELOOK\tCA\tI\t\t# IS IT MOREROLL\n\t\tEXTEND\n\t\tBZF\tFIREPLUG\t# YES\n\t\tTCF\tJETROLL\t\t# MAG(T6FIRE) NOW IN TEMREG\n\nFIREPLUG\tCAE\tTIME6\t\t# CHECK FOR EXTENDED FIRING\n\t\tEXTEND\n\t\tSU\tTEMREG\n\t\tEXTEND\nEXTENTST\tBZMF\tTASKOVER\t# IF EXTENSION WANTED, DONT, EXIT ROLL DAP\n\t\tTCF\tJETROLL\n\nNOROLL\t\tCS\tZERO\t\t# COAST....(NEG ZERO FOR TIME6)\n\t\tTS\tROLLFIRE\t# NOTE, JETS CAN FIRE NEXT PASS\n\t\tTS\tTEMREG\n\nJETROLL\t\tEXTEND\n\t\tDCA\tNOROL1T6\n# Page 995\n\t\tDXCH\tT6LOC\n\t\tCA\tTEMREG\t\t# ENTER JET FIRING TIME\n\t\tTS\tTIME6\n\n\t\tCA\tI\t\t# I=0 IF MOREROLL,KEEP SAME JETS ON\n\t\tEXTEND\nSAMEJETS\tBZF\tTASKOVER\t# IF JETS ON KEEP SAME JETS.  EXIT ROLL DAP\n\n\t\tCCS\tROLLFIRE\n\t\tTCF\t+TORQUE\n\t\tTCF\tT6ENABL\n\t\tTCF\t-TORQUE\n\t\tTCF\tT6ENABL\n\n# PROCEED WITH + TORQUE\n\n+TORQUE\t\tCA\tROLLWORD\t# WHAT WAS THE LAST +TORQUE COMBINATION\n\t\tMASK\tBIT1\t\t# WAS IT NO.9-11\n\t\tEXTEND\n\t\tBZF\tNO.9-11\t\t# NOT 9-11, SO USE IT THIS TIME\n\nNO.13-15\tCS\tBIT1\n\t\tMASK\tROLLWORD\n\t\tTS\tROLLWORD\t# CHANGE BIT 1 TO ZERO\n\t\tCAF\t+ROLL2\n\t\tEXTEND\n\t\tWRITE\tCHAN6\n\t\tTCF\tT6ENABL\n\nNO.9-11\t\tCAF\tBIT1\t\t# 1ST + JETS TO FIRE (MRCLEAN OS ROLLWORD)\n\t\tADS\tROLLWORD\t# CHANGE BIT 1 TO ONE\n\t\tCAF\t+ROLL1\n\t\tEXTEND\n\t\tWRITE\tCHAN6\n\t\tTCF\tT6ENABL\n\n-TORQUE\t\tCA\tROLLWORD\t# WHAT WAS LAST -TORQUE COMBINATION\n\t\tMASK\tBIT2\t\t# WAS IT NO.12-10\n\t\tEXTEND\n\t\tBZF\tNO.12-10\t# NOT 12-10, SO USE IT THIS TIME\n\nNO.16-14\tCS\tBIT2\n\t\tMASK\tROLLWORD\n\t\tTS\tROLLWORD\t# CHANGE BIT 2 TO ZERO\n\t\tCAF\t-ROLL2\n\t\tEXTEND\n\t\tWRITE\tCHAN6\n\t\tTCF\tT6ENABL\n\nNO.12-10\tCAF\tBIT2\t\t# 1ST -JETS TO FIRE (MRCLEAN OS ROLLWORD)\n# Page 996\n\t\tADS\tROLLWORD\t# CHANGE BIT 2 TO ONE\n\t\tCAF\t-ROLL1\n\t\tEXTEND\n\t\tWRITE\tCHAN6\n\nT6ENABL\t\tCAF\tBIT15\n\t\tEXTEND\n\t\tWOR\tCHAN13\nRDAPEND\t\tTCF\tTASKOVER\t# EXIT ROLL DAP\n\n# Page 997\n# THIS T6 TASK SHUTS OFF ALL ROLL JETS\n\nNOROLL1\t\tLXCH\tBANKRUPT\t# SHUT OFF ALL (ROLL) JETS, (A T6 TASK\n\t\tCAF\tZERO\t\t#\tCALLED BY ..JETROLL..)\n\t\tTS\tROLLFIRE\t# ZERO INDICATES JETS NOW OFF\n\t\tEXTEND\nKILLJETS\tWRITE\tCHAN6\n\t\tTCF\tNOQRSM\n\n# Page 998\n# CONSTANTS FOR ROLL AUTOPILOT....\n\n\t\tEBANK=\tBZERO\nNOROL1T6\t2CADR\tNOROLL1\n\nDB\t\tDEC\t.01388889\t# DEAD BAND (5 DEG), SC.AT B+0 REV\n\n-SLOPE\t\tDEC\t0.2\t\t# -SWITCHLINE SLOPE(0.2 PER SEC) SC.AT B+0\n\t\t\t\t\t#\tPER SEC\nLMCRATE\t\tDEC\t.00027778 B+4\t# LIMIT CYCLE RATE (0.1 DEG/SEC) SC.AT\n\t\t\t\t\t#\tB-4 REV/SEC\nINTERCEP\tDEC\t.0025 B+3\t# DB(-SLOPE) - LMCRATE, SC.AT B-3 REV/SC\n\nMINLIM\t\tDEC\t.00277778 B+4\t# RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC\n\n1/MINLIM\tDEC\t360 B-18\t# RECIPROCAL THEREOF, SHIFTED 14 RIGHT\n\nMAXLIM\t\tDEC\t.01388889 B+4\t# RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC\n\nTMINFIRE\tDEC\t1.5 B+4\t\t# 15 MS (14MIN), SC.AT 16 BITS/CS\n\nTMAXFIRE\tDEC\t250 B+4\t\t# 2.5 SEC, SC.AT 16 BITS/CS\n\n1/TMXFIR\t=\tBIT3\t\t# RECIPROCAL THEREOF, SHIFTED 14 RIGHT,\n\t\t\t\t\t#\tROUNDS TO OCT00004, SO ALLOWS 2.56\n\t\t\t\t\t#\tSEC FIRINGS BEFORE APPLYING LIMIT\nT6SCALE\t\t=\tPRIO31\t\t# (B+3) (16 BITS/CS) (100CS/SEC)\n\n+ROLL1\t\t= \tFIVE\t\t# ONBITS FOR JETS 9 AND 11\n+ROLL2\t\t=\tOCT120\t\t# ONBITS FOR JETS 13 AND 15\n-ROLL1\t\t=\tTEN\t\t# ONBITS FOR JETS 12 NAD 10\n-ROLL2\t\tOCT\t240\t\t# ONBITS FOR JETS 16 AND 14\n"
  },
  {
    "path": "Comanche055/TVCSTROKETEST.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTVCSTROKETEST.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t979-983\n# Mod history:\t2009-05-13 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 979\n# NAME\t\tSTROKE TEST PACKAGE\t\t(INCLUDING INITIALIZATION PACKAGE)\n# LOG SECTION...TVCSTROKETEST\t\t\tSUBROUTINE...DAPCSM\n# MODIFIED BY SCHLUNDT\t\t\t\t21 OCTOBER 1968\n#\n# FUNCTIONAL DESCRIPTION....\n#\tSTROKE TEST PACKAGE GENERATES A WAVEFORM DESIGNED TO EXCITE BENDING\n#\tSTRKTSTI (STROKE TEST INITIALIZATION) IS CALLED AS A JOB BY VB68.\n#\t\tIT INITIALIZES ALL ERASABLES REQD FOR A STROKE TEST, AND\n#\t\tTHEN TESTS FOR CSM/LM (BIT 13 OF DAPDATR1). IF CSM/LM,\n#\t\tIN EITHER HIGH OR LOW-BANDWIDTH MODE, THE TEST IS STARTED\n#\t\tIMMEDIATELY.  IF NOT CSM/LM, PROGRAM EXITS WITH NO ACTION.\n#\tHACK (STROKE TEST) GENERATES THE WAVEFORM BY DUMPING PULSE BURSTS\n#\t\tOF PROPER SIGN AND IN PROPER SEQUENCE DIRECTLY INTO\n#\t\tTVCPITCH, WORKING IN CONJUNCTION WITH BOTH PITCH AND YAW\n#\t\tTVC DAPS, WITH INTERMEDIATE WAITLIST CALLS.  NOTE, HOWEVER\n#\t\tTHAT THE STROKE TEST IS PERFORMED ONLY IN THE PITCH AXIS.\n#\t\tAN EXAMPLE WAVEFORM IS GIVEN BELOW, TO DEMONSTRATE STROKE-\n#\t\tTEST PARAMETER SELECTION.\n#\tRESTARTS CAUSE TEST TO BE TERMINATED.  ANOTHER V68 REQD IF TEST\n#\t\tIS TO BE RE-RUN.\n#\tPULSE BURST SIZE IS PAD-LOADED (ESTROKER) SO THAT AMPLITUDE OF\n#\t\tWAVEFORM CAN BE CHANGED.  THERE ARE TEN PULSE BURSTS IN\n#\t\tTHE HALF-AMPLITUDE OF THE FIRST FREQUENCY SET IN THE\n#\t\tSTANDARD WAVEFORM.  AMPLITUDE IS 10(ESTROKER)(1/42.15),\n#\t\tNOMINALLY 50/42.15 = 1.185 DEG\n#\n# CALLING SEQUENCE....\n#\tEXTENDED VERB 68 SETS UP STRKTSTI JOB\n#\tPITCH AND YAW TVCDAPS, FINDING STROKER NON-ZERO, DO A ..TC HACK..\n#\tAN INTERNALLY-GENERATED WAITLIST CALL ENTERS AT ..HACKWLST..\n#\n# NORMAL EXIT MODES....\n#\tTC BUNKER (..Q.. IF ENTRY FROM DAP, ..TCTSKOVR.. IF FROM WAITLIST) LIST\n#\n# SUBROUTINES CALLED....\n#\tWAITLIST\n#\n# ALARM OR ABORT EXIT MODES....\n#\tNONE\n#\n# ERASABLE INITIALIZATION REQUIRED....\n#\tESTROKER (PAD-LOAD)\n#\tSTROKER, CADDY, REVS, CARD, N\n#\n# OUTPUT....\n#\tSTRKTSTI...INITIALIZATION FOR STROKE TEST\n#\tHACK, HACKWLST...PULSE BURSTS INTO TVCPITCH VIA..ADS..\n#\t\t\t  RESETS STROKER = +0 WHEN TEST COMPLETED\n#\n# DEBRIS....\n#\tN = CADDY = +0, CARD = -0, REVS = -1\n#\tBUNKER\n# Page 980\n#\n# EXAMPLE STROKE TEST WAVE FORM, DEMONSTRATING PARAMETER SELECTION\n\n# NOTE....THIS IS NOT THE OFFICIAL WAVEFORM....\n#\n#        **              **\n#        **              **\n#        **              **\t\tEXAMPLE WAVEFORM (EACH * REPRESENTS\n#       *  *            *  *\t\t  (85.41 ARCSEC OF ACTUATOR CMND)\n#       *  *            *  *\n#       *  *            *  *\n#      *    *          *    *          **      **      **      **      **\n#      *    *          *    *          **      **      **      **      **\n#      *    *          *    *          **      **      **      **      **\n#     *      *        *      *        *  *    *  *    *  *    *  *    *  *    **  **  **  **  **\n#     *      *        *      *        *  *    *  *    *  *    *  *    *  *    **  **  **  **  **\n#     *      *        *      *        *  *    *  *    *  *    *  *    *  *    **  **  **  **  **\n# ----------------------------------------------------------------------------------------------------\n#             *      *        *      *    *  *    *  *    *  *    *  *    *  *  **  **  **  **  **\n#             *      *        *      *    *  *    *  *    *  *    *  *    *  *  **  **  **  **  **\n#             *      *        *      *    *  *    *  *    *  *    *  *    *  *  **  **  **  **  **\n#              *    *          *    *      **      **      **      **      **\n#              *    *          *    *      **      **      **      **      **\n#              *    *          *    *      **      **      **      **      **\n#               *  *            *  *\n#               *  *            *  *\n#               *  *            *  *\n#                **              **\n#                **              **\n#                **              **\n#\n# FOR THIS (UNOFFICIAL, EXAMPLE) WAVEFORM, THE REQUIRED PARAMETERS ARE AS FOLLOWS....\n#\n#\tFCARD\t = +3\t\t(NUMBER OF SETS)\n#\tESTROKER = +3\t\t(PULSE BURST SIZE, SC.AT 85.41 ARCSEC/BIT)\n#\n#\tSET1:\n#\t\tFREVS\t= +3\t(NUMBER REVERSALS MINUS 1)\n#\t\tFCADDY\t= +4\t(NUMBER OF PULSE BURSTS IN 1/2 AMPLITUDE)\n#\tSET2:\n#\t\tFCARD1\t= +9\t(NUMBER REVERSALS MINUS 1)\n#\t\tFCARD4\t= +2\t(NUMBER OF PULSE BURSTS IN 1/2 AMPLITUDE)\n#\tSET3:\n#\t\tFCARD2\t= +9\t(NUMBER REVERSALS MINUS 1)\n#\t\tFCARD5\t= +1\t(NUMBER OF PULSE BURSTS IN 1/2 AMPLITUDE)\n#\tSET4:\n#\t\tFCARD3\t= +0\t(NUMBER OF REVERSALS MINUS 1)\n#\t\tFCARD6\t= +0\t(NUMBER OF PULSE BURSTS IN 1/2 AMPLUTUDE)\n\n# Page 981\n# STROKE TEST INITIALIZATION PACKAGE (AS A JOB, FROM VERB 68)\n\n\t\tBANK\t17\n\t\tSETLOC\tDAPS2\n\t\tBANK\n\n\t\tCOUNT*\t$$/STRK\n\t\tEBANK=\tCADDY\n\nSTRKTSTI\tTCR\tTSTINIT\t\t# STROKE TEST INITIALIZATION PKG (CALLED\n\t\t\t\t\t# AS A JOB BY VERB68)\n\nSTRKCHK\t\tINHINT\n\n\t\tCAE\tDAPDATR1\t# CHECK FOR CSM/LM CONFIGURATION\n\t\tMASK\tBIT14\n\t\tEXTEND\n\t\tBZF\t+3\n\n\t\tCAE\tESTROKER\t# BEGIN ON NEXT DAP PASS (PITCH OR YAW)\n\t\tTS\tSTROKER\t\t# (STROKING DONE IN PITCH ONLY, HOWEVER)\n\n\t\tTCF\tENDOFJOB\n\nTSTINIT\t\tCS\tFCADDY\t\t# NORMAL ENTRY FROM STRKTSTI\n\t\tTS\tCADDY\n\t\tTS\tN\t\t#\tNOTE SGN CHNG FCADDY(+) TO CADDY(-)\n\n\t\tCAF\tFREVS\n\t\tTS\tREVS\n\n\t\tCS\tFCARD\t\t# \tNOTE SGN CHNG FCARD(+) TO CARD(-)\n\t\tTS\tCARD\n\n\t\tTC\tQ\t\t# RETURN TO STRKTSTI+1 (OR CHKSTRK+2OR+4)\n\n# Page 982\n# THE OFFICIAL STROKE TEST WAVEFORM (3 JAN, 1967) CONSISTS OF FOUR STROKE SETS, AS FOLLOWS....\n#\n#\tSET 1...10 BURSTS IN 1/2 AMP,   4 REVERSALS\n#\tSET 2... 6 BURSTS IN 1/2 AMP,\t6 REVERSALS\n#\tSET 3... 5 BURSTS IN 1/2 AMP,  10 REVERSALS\n#\tSET 4... 4 BURSTS IN 1/2 AMP,  14 REVERSALS\n#\n# THE PULSE BURST SIZE (ESTROKER) IS PAD-LOADED (5 BITS AS OF 3JAN,1967)\n# THE REMAINING WAVEFORM-GENERATING PARAMETERS ARE AS FOLLOWS....\n\nFCADDY\t\tDEC\t10\t\t# NO. PULSE BURSTS IN 1/2 AMP, SET1..(+10)\nFREVS\t\tDEC\t3\t\t# NO. REVERSALS MINUS 1, SET1........(  3)\n\nFCARD\t\tDEC\t4\t\t# NO. STROKE SETS....................(+ 4)\n\nFCARD1\t\tDEC\t5\t\t# NO. REVERSALS MINUS 1, SET2........(  5)\n\nFCARD2\t\tDEC\t9\t\t# \t\t\t    3........(  9)\nFCARD3\t\tDEC\t13\t\t#                           4........( 13)\n\nFCARD4\t\tDEC\t6\t\t# NO. PULSE BURSTS IN 1/2 AMP, SET2..(+ 6)\nFCARD5\t\tDEC\t5\t\t#                              SET3..(+ 5)\nFCARD6\t\tDEC\t4\t\t#                              SET4..(+ 4)\n\n20MS\t\t=\tBIT2\n\n# STROKE TEST PACKAGE PROPER....\n\n\t\tEBANK=\tBUNKER\n\nHACK\t\tEXTEND\t\t\t# ENTRY (IN T5 RUPT) FROM TVCDAPS\n\t\tQXCH\tBUNKER\t\t# SAVE Q FOR DAP RETURN\n\n\t\tCAF\t20MS\t\t# 2DAPSX2(PASSES/DAP)X2(CS/PASS)=8CS=TVCDT\n\t\tTC\tWAITLIST\n\t\tEBANK=\tBUNKER\n\t\t2CADR\tHACKWLST\n\n\t\tTCF\t+3\n\nHACKWLST\tCAF\tTCTSKOVR\t# ENTRY FROM WAITLIST\n\t\tTS\tBUNKER\t\t# BUNKER IS TC TASKOVER\n\n\t\tCA\tSTROKER\t\t# STROKE\n\t\tADS\tTVCPITCH\n\n\t\tCAF\tBIT11\t\t# RELEASE THE ERROR COUNTERS\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tINCR\tCADDY\t\t# COUNT DOWN THE NO. BURSTS, THIS SLOPE\n# Page 983\n\t\tCS\tCADDY\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTC\tBUNKER\t\t# EXIT, WHILE ON A SLOPE\n\n\t\tCCS\tREVS\n\t\tTCF\tREVUP\t\t# POSITIVE REVS\n\t\tTCF\tREVUP +4\t# FINAL REVERSAL, THIS SET\n\n\t\tINCR\tCARD\t\t# NEGATIVE REVS SET LAST PASS, READY FOR\n\t\tCS\tCARD\t\t#\tTHE NEXT SET.  CHECK IF NO MORE SETS\n\t\tEXTEND\n\t\tBZF\tSTROKILL\t# ALL SETS COMPLETED\n\n\t\tINDEX\tCARD\n\t\tCAF\tFCARD +4\t# PICK UP NO. REVERSALS (-), NEXT SET\n\t\tTS\tREVS\t\t# REINITIALIZE\n\t\tINDEX\tCARD\n\t\tCS\tFCARD +7\t# PICK UP NO. BURSTS IN 1/2AMP, NEXT SET\n\t\tTS\tN\t\t# REINITIALIZE\n\t\tTS\tCADDY\n\t\tTC\tBUNKER\t\t# EXIT, AT END OF SET\n\nSTROKILL\tTS\tSTROKER\t\t# RESET (TO +0) TO END TEST\n\t\tTC\tBUNKER\t\t# EXIT, STROKE TEST FINIS\n\nREVUP\t\tTS\tREVS\t\t# ALL REVERSALS EXCEPT LAST OF SET\n\t\tCA\tN\n\t\tDOUBLE\t\t\t# 2 x 1/2AMP\n\t\tTCF\t+4\n\n\t+4\tCS\tONE\t\t# FINAL REVERSAL, THIS SET\n\t\tTS\tREVS\t\t# PREPARE TO BRANCH TO NEW BURST\n\t\tCA\tN\t\t# JUST RETURN TO ZERO, FINAL SLOPE OF SET\n\t\tTS\tCADDY\t\t# CADUP\n\n\t\tCS\tSTROKER\t\t# CHANGE SIGN OF SLOPE\n\t\tTS\tSTROKER\n\t\tTC\tBUNKER\t\t# EXIT AT A REVERSAL (SLOPE CHANGE)\n"
  },
  {
    "path": "Comanche055/UPDATE_PROGRAM.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     UPDATE_PROGRAM.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#               is part of the source code for the Command Module's\n#               (CM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:    yaYUL\n# Reference:    pp. 1497-1507\n# Contact:      Ron Burkey <info@sandroid.org>\n# Website:      http://www.ibiblio.org/apollo.\n# Mod history:  2009-05-07 RSB\tAdapted from Colossus249/UPDATE_PROGRAM.agc\n#\t\t\t\tand page images. Corrected various typos\n#\t\t\t\tin the transcription of program comments,\n#\t\t\t\tand these should be back-ported to\n#\t\t\t\tColossus249.\n#\n# The contents of the \"Comanche055\" files, in general, are transcribed\n# from scanned documents.\n#\n#       Assemble revision 055 of AGC program Comanche by NASA\n#       2021113-051.  April 1, 1969.\n#\n#       This AGC program shall also be referred to as Colossus 2A\n#\n#       Prepared by\n#                       Massachusetts Institute of Technology\n#                       75 Cambridge Parkway\n#                       Cambridge, Massachusetts\n#\n#       under NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 1497\n# PROGRAM NAME:\t\tP27\n# WRITTEN BY:\t\tKILROY/ DE WOLF\n#\n# MOD NO:\t\t0\n# MOD BY:\t\tKILROY\n# DATE:\t\t\t01DEC67\n#\n# LOG SECTION:\t\tUPDATE PROGRAM.\n#\n# FUNCT. DESCR.:\tP27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA\n#\t\t\tINSERTIONS REQUESTED BY THE GROUND VIA UPLINK.\n#\t\t\tTHE P27 PROGRAM WILL ACCEPT UPDATES\n#\t\t\tONLY DURING P00 FOR THE LM, AND ONLY DURING P00,\n#\t\t\tP02, AND FRESH START FOR THE CSM.\n#\n# CALLING SEQ:\t\tPROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72, AND 73.\n#\n# SUBROUTINES:\t\tTESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,\n#\t\t\tINTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG\n#\n# NORMAL EXIT:\t\tTC ENDEXT\n#\n# ALARM/ABORT:\t\tTC FALTON FOLLOWED BY TC ENDEXT\n#\n# RESTARTS:\t\tP27 IS RESTART PROTECTED IN TWO WAYS ...\n#\t\t\t1.\tPRIOR TO VERIFLAG INVERSION(WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE\n#\t\t\t\tDATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---\n#\t\t\t\tNO PROTECTION EXCEPT PRE-P27 MODE IS RESTORED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINE\n#\t\t\t\tACTIVITY LIGHT IS TURNED OFF.(JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).\n#\t\t\t\tV70,V71,V72 OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.\n#\t\t\t2.\tAFTER VERIFLAG INVERSION(WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---\n#\t\t\t\tPROTECTED AGAINST RESTARTS.\n#\n# DEBRIS:\t\tUPBUFF\t(20D)\tTEMP STORAGE FOR ADDRESSES AND CONTENTS.\n#\t\t\tUPVERB\t(1)\tVERB NUMBER MINUS 70D (E.G. FOR V72, UPVERB = 72D - 70D = 2)\n#\t\t\tUPOLDMOD(1)\tFOR MAJOR MODE INTERRUPTED BY P27.\n#\t\t\tCOMPNUMB(1)\tTOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.\n#\t\t\tUPCOUNT\t(1)\tACTUAL NUMBER OF COMPONENTS RECEIVED.\n#\t\t\tUPTEMP\t(1)\tSCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE\n#\n# INPUT:\n#\n#\tENTRY:\t\t\tDESCRIPTION\n#\n#\tV70EXXXXXEXXXXXE\t(LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,\n#\t\t\t\tIS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE\n#\t\t\t\tVECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).\n#\t\t\t\tTHE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).\n# Page 1498\n#\tV71EIIEAAAAE\t\t(CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS,XXXXX,\n#\tXXXXXE\t\t\tARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.\n#\tXXXXXE\t\t\tIT IS .GE. 3 .AND. .LE. 20D.,\n#\t\t\t\tAND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE\n#\t\t\t\tNEXT BANK.\n#\t  .\t\t\tSCALING IS SAME AS INTERNAL REGISTERS.\n#\n#\tV72EIIE\t\t\t(SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS,XXXXX, ARE\n#\tAAAAEXXXXXE\t\tLOADED INTO ERASABLE LOCATIONS, AAAA.\n#\tAAAAEXXXXXE\t\tII IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.\n#\t  .\t\t\tSCALING IS SAME AS INTERNAL REGISTERS.\n#\n#\tV73EXXXXXEXXXXXE\t(OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME\n#\t\t\t\tINCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN\n#\t\t\t\tCENTISECONDS SCALED AT (2)28.\n#\t\t\t\tTHIS LOAD IS THE OCTAL EQUIVALENT OF V55.\n#\n# OUTPUT:\t\tIN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES\n#\t\t\tCOMPLEMENT BIT3 OF FLAGWORD7.\n#\n# ADDITIONAL NOTES:\tVERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --\n#\t\t\t1.  CSM/LM STATE VECTOR UPDATE\n#\t\t\t2.  REFSMMAT UPDATE\n#\n#\tTHE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE ---\n#\n#\t1.  CSM/LM STATE VECTOR UPDATE(ALL DATA ENTRIES IN OCTAL)\n#\t\tENTRIES:\tDATA DEFINITION:\t\t\t\tSCALE FACTORS:\n#\t\tV71E\t\tCONTIGUOUS BLOCK UPDATE VERB\n#\t\t   21E\t\tNUMBER OF COMPONENTS FOR STATE VECTOR UPDATE\n#\t\t AAAAE\t\tECADR OF 'UPSVFLAG'\n#\t\tXXXXXE\t\tSTATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM - EARTH SPHERE OF INFLUENCE SCALING\n#\t\t\t\t\t\t\t 00002 FOR CSM, 77775 FOR LEM - LUNAR SPHERE OF INFLUENCE SCALING\n#\t\tXXXXXEXXXXXE\tX POSITION\n#\t\tXXXXXEXXXXXE\tY POSITION\n#\t\tXXXXXEXXXXXE\tZ POSITION\n#\t\tXXXXXEXXXXXE\tX VELOCITY\n#\t\tXXXXXEXXXXXE\tY VELOCITY\n#\t\tXXXXXEXXXXXE\tZ VELOCITY\n#\t\tXXXXXEXXXXXE\tTIME FROM AGC CLOCK ZERO\n#\t\tV33E\t\tVERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.\n#\n#\t2.  REFSMMAT(ALL DATA ENTRIES IN OCTAL)\n#\t\tENTRIES:\tDATA DEFINITIONS:\t\t\t\tSCALE FACTORS:\n# Page 1499\n#\t\tV71E\t\tCONTIGUOUS BLOCK UPDATE VERB\n#\t\t   24E\t\tNUMBER OF COMPONENTS FOR REFSMMAT UPDATE\n#\t\t AAAAE\t\tECADR OF 'REFSMMAT'\n#\t\tXXXXXEXXXXXE\tROW 1 COLUMN 1\t\t\t\t\t2(-1)\n#\t\tXXXXXEXXXXXE\tROW 1 COLUMN 2\t\t\t\t\t2(-1)\n#\t\tXXXXXEXXXXXE\tROW 1 COLUMN 3\t\t\t\t\t2(-1)\n#\t\tXXXXXEXXXXXE\tROW 2 COLUMN 1\t\t\t\t\t2(-1)\n#\t\tXXXXXEXXXXXE\tROW 2 COLUMN 2\t\t\t\t\t2(-1)\n#\t\tXXXXXEXXXXXE\tROW 2 COLUMN 3\t\t\t\t\t2(-1)\n#\t\tXXXXXEXXXXXE\tROW 3 COLUMN 1\t\t\t\t\t2(-1)\n#\t\tXXXXXEXXXXXE\tROW 3 COLUMN 2\t\t\t\t\t2(-1)\n#\t\tXXXXXEXXXXXE\tROW 3 COLUMN 3\t\t\t\t\t2(-1)\n#\t\tV33E\t\tVERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED.\n\n\t\tBANK\t07\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tEBANK=\tTEPHEM\n\n\t\tCOUNT*\t$$/P27\nV70UPDAT\tCAF\tUP70\t\t# COMES HERE ON V70E\n\t\tTCF\tV73UPDAT +1\n\nV71UPDAT\tCAF\tUP71\t\t# COMES HERE ON V71E\n\t\tTCF\tV73UPDAT +1\n\nV72UPDAT\tCAF\tUP72\t\t# COMES HERE ON V72E\n\t\tTCF\tV73UPDAT +1\n\nV73UPDAT\tCAF\tUP73\t\t# COMES HERE ON V73E\n\n \t+1\tTS\tUPVERBSV\t# SAVE UPVERB UNTIL IT'S OK TO ENTER P27\n\n\t\tTC\tTESTXACT\t# GRAB DISPLAY IF AVAILABLE, OTHERWISE\n\t\t\t\t\t# TURN*OPERATOR ERROR* ON AND TERMINATE JOB\n\n\t\tCA\tMODREG\t\t# CHECK IF UPDATE ALLOWED\n\t\tEXTEND\t\t\t# FIRST CHECK FOR MODREG = +0, -0\n\t\tBZF\t+2\t\t# (+0 = P00, -0 = FRESH START)\n\t\tTC\tCKMDMORE\t# NOW CHECK FOR PROGRAM WHICH CAN BE\n\t\t\t\t\t# INTERRUPTED BY P27.\n\n\t\tCAE\tMODREG\t\t# UPDATE ALLOWED.\n\t\tTS\tUPOLDMOD\t# SAVE CURRENT MAJOR MODE\n# Page 1500\n\t\tCAE\tUPVERBSV\t# SET UPVERB TO INDICDATE TO P27\n\t\tTS\tUPVERB\t\t# WHICH EXTENDED VERB CALLED IT.\n\n\t\tCAF\tONE\n\t\tTS\tUPCOUNT\t\t# INITIALIZE UPCOUNT TO 1\n\n\t\tTC\tPOSTJUMP\t# LEAVE EXTENDED VERB BANK AND\n\t\tCADR\tUPPART2\t\t# GO TO UPDATE PROGRAM(P27) BANK.\n\nCKMDMORE\tCS\tFLAGWRD5\n\t\tMASK\tBIT8\t\t# CHECK IF COMPUTER IS LGC\n\t\tCCS\tA\t\t# IS COMPUER LGC OR AGC\nUPERLEM\t\tTCF\tUPERROR\t\t# ERROR- IT'S THE LEM + MODE IS NOT P00.\n\t\tCS\tTWO\n\t\tMASK\tMODREG\n\t\tCCS\tA\nUPERCMC\t\tTCF\tUPERROR\t\t# ERROR- IT'S THE CMC AND MODE IS NOT\n\t\t\t\t\t# P00 OR P02.\n\t\tTC\tQ\t\t# ALLOW UPDATE TO PROCEED\n\nUPERROR\t\tTC\tPOSTJUMP\t# TURN ON 'OPERATOR ERROR' LIGHT\n\t\tCADR\tUPERROUT +2\t# GO TO COMMON UPDATE PROGRAM EXIT\n\n\t\tSBANK=\tLOWSUPER\nUP70\t\tEQUALS\tZERO\nUP71\t\tEQUALS\tONE\nUP72\t\tEQUALS\tTWO\nUP73\t\tEQUALS\tTHREE\n\n\t\tBANK\t04\n\t\tSETLOC\tUPDATE2\n\t\tBANK\n\n\t\tCOUNT*\t$$/P27\n\nUPPART2\t\tEQUALS\t\t\t# UPDATE PROGRAM - PART 2\n\n\t\tTC\tPHASCHNG\t# SET RESTART GROUP 6 TO RESTORE OLD MODE\n\t\tOCT\t07026\t\t# AND DOWNLIST AND EXIT IF RESTART OCCURS.\n\t\tOCT\t30000\t\t# PRIORITY SAME AS CHRPRIO\n\t\tEBANK=\tUPBUFF\n\t\t2CADR\tUPOUT +1\n\n\t\tCAF\tONE\n\t\tTS\tDNLSTCOD\t# DOWNLIST\n\n\t\tTC\tNEWMODEX\t# SET MAJOR MODE = 27\n# Page 1501\n\t\tDEC\t27\n\n\t\tINDEX\tUPVERB\t\t# BRANCH DEPENDING ON WHETHER THE UPDATE\n\t\tTCF\t+1\t\t# VERB REQUIRES A FIXED OR VARIABLE NUMBER\n\t\tTCF\t+3\t\t# V70 FIXED.\t\t   (OF COMPONENTS.\n\t\tTCF\tOHWELL1\t\t# V71 VARIABLE - GO GET NO. OF COMPONENTS\n\t\tTCF\tOHWELL1\t\t# V72 VARIABLE - GO GET NO. OF COMPONENTS\n\t\tCA\tTWO\t\t# V73 (AND V70) FIXED\n\t\tTS\tCOMPNUMB\t# SET NUMBER OF COMPONENTS TO 2.\n\t\tTCF\tOHWELL2\t\t# GO GET THE TWO UPDATE COMPONENTS\n\nOHWELL1\t\tCAF\tADUPBUFF\t# * REQUEST USER TO SEND NUMBER  *\n\t\tTS\tMPAC +2\t\t# * OF COMPONENTS PARAMETER(II). *\n\t+2\tCAF\tUPLOADNV\t# (CKV432 RETURNS HERE IF V32 ENCOUNTERED)\n\t\tTC\tBANKCALL\t# DISPLAY A FLASHING V21N01\n\t\tCADR\tGOXDSPF\t\t# TO REQUEST II.\n\t\tTCF\tUPOUT4\t\t# V34 TERMINATE UPDATE(P27) RETURN\n\t\tTCF\tOHWELL1 +2\n\t\tTC\tCK4V32\t\t# DATA OR V32 RETURN\n\t\tCS\tBIT2\n\t\tAD\tUPBUFF\t\t# IS II(NUMBER OF COMPONENTS PARAMETER)\n\t\tEXTEND\t\t\t# .GE. 3 AND .LE. 20D.\n\t\tBZMF\tOHWELL1 +2\n\t\tCS\tUPBUFF\n\t\tAD\tUP21\n\t\tEXTEND\n\t\tBZMF\tOHWELL1 +2\n\t\tCAE\tUPBUFF\n\t\tTS\tCOMPNUMB\t# SAVE II IN COMPNUMB\n\n# UPBUFF LOADING SEQUENCE\n\n\t\tINCR\tUPCOUNT\t\t# INCREMENT COUNT OF COMPONENTS RECEIVED.\nOHWELL2\t\tCAF\tADUPBFM1\t# CALCULATE LOCATION(ECADR) IN UPBUFF\n\t\tAD\tUPCOUNT\t\t# WHERE NEXT COMPONENT SHOULD BE STORED.\n\t+2\tTS\tMPAC +2\t\t# PLACE ECADR INTO R3.\n\t+3\tCAF\tUPLOADNV\t# (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)\n\t\tTC\tBANKCALL\t# DISPLAY A FLASHING V21N01\n\t\tCADR\tGOXDSPF\t\t# TO REQUEST DATA.\n\t\tTCF\tUPOUT4\t\t# V34 TERMINATE UPDATE(P27) RETURN.\n\t\tTCF\tOHWELL2 +3\t# V33 PROCEED RETURN\n\t\tTC\tCK4V32\t\t# DATA OR V32 RETURN\n\t\tCS\tUPCOUNT\t\t# HAVE WE FINISHED RECEIVING ALL\n\t\tAD\tCOMPNUMB\t# THE DATA WE EXPECTED.\n\t\tEXTEND\n\t\tBZMF\tUPVERIFY\t# YES- GO TO VERIFICATION SEQUENCE\n\t\tTCF\tOHWELL2 -1\t# NO- REQUEST ADDITIONAL DATA.\n\n# Page 1502\n# VERIFY SEQUENCE\nUPVERIFY\tCAF\tADUPTEMP\t# PLACE ECADR WHERE COMPONENT NO. INDEX\n\t\tTS\tMPAC +2\t\t# IS TO BE STORED INTO R3.\n\t\tCAF\tUPVRFYNV\t# (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)\n\t\tTC\tBANKCALL\t# DISPLAY A FLASHING V21N02 TO REQUEST\n\t\tCADR\tGOXDSPF\t\t# DATA CORRECTION OR VERIFICATION.\n\t\tTCF\tUPOUT4\t\t# V34 TERMINATE UPDATE(P27) RETURN\n\t\tTCF\tUPSTORE\t\t# V33 DATA SENT IS GOOD.  GO STORE IT.\n\t\tTC\tCK4V32\t\t# COMPONENT NO. INDEX OR V32 RETURN\n\t\tCA\tUPTEMP\t\t# DOES THE COMPONENT NO. INDEX JUST SENT\n\t\tEXTEND\t\t\t# SPECIFY A LEGAL COMPONENT NUMBER?\n\t\tBZMF\tUPVERIFY\t# NO, IT IS NOT POSITIVE NONZERO\n\t\tCS\tUPTEMP\n\t\tAD\tCOMPNUMB\n\t\tAD\tBIT1\n\t\tEXTEND\n\t\tBZMF\tUPVERIFY\t# NO\n\t\tCAF\tADUPBFM1\t# YES- BASED ON THE COMPONENT NO. INDEX\n\t\tAD\tUPTEMP\t\t# CALCULATE THE ECADR OF LOCATION IN\n\t\tTCF\tOHWELL2 +2\t# UPBUFF WHICH USER WANTS TO CHANGE.\n\nUPOUT4\t\tEQUALS\tUPOUT +1\t# COMES HERE ON V34 TC TERMINATE UPDATE\n\n# CHECK FOR VERB 32 SEQUENCE\n\nCK4V32\t\tCS\tMPAC\t\t# ON DATA RETURN FROM 'GOXDSPF'\n\t\tMASK\tBIT6\t\t# ON DATA RETURN FROM \"GOXDSP\"& THE CON-\n\t\tCCS\tA\t\t# TENTS OF MPAC = VERB.  SO TEST FOR V32.\n\t\tTC\tQ\t\t# IT'S NOT A V32, IT'S DATA.  PROCEED.\n\t\tINDEX\tQ\n\t\tTC\t0 -6\t\t# V32 ENCOUNTERED - GO BACK AND GET DATA\n\nADUPTEMP\tADRES\tUPTEMP\t\t# ADDRESS OF TEMP STORAGE FOR CORRECTIONS\nADUPBUFF\tADRES\tUPBUFF\t\t# ADDRESS OF UPDATE DATA STORAGE BUFFER\nUPLOADNV\tVN\t2101\t\t# VERB 21 NOUN 01\nUPVRFYNV\tVN\t2102\t\t# VERB 21 NOUN 02\nUP21\t\t=\tMD1\t\t# DEC 21 = MAX NO OF COMPONENTS +1\nUPDTPHAS\tEQUALS\tFIVE\n\n# PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE\n\nUPSTORE\t\tEQUALS\t\t\t# GROUND HAS VERIFIED UPDATE. STORE DATA.\n\n\t\tINHINT\n\n\t\tCAE\tFLAGWRD7\t# INVERT VERIFLAG(BIT3 OF FLAGWRD7) TO\n\t\tXCH\tL\t\t# INDICATE TO THE GROUND(VIA DOWNLINK)\n\t\tCAF\tBIT3\t\t# THAT THE V33(WHICH THE GROUND SENT TO\n# Page 1503\n\t\tEXTEND\t\t\t# VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY\n\t\tRXOR\tLCHAN\t\t# RECEIVED BY THE UPDATE PROGRAM\n\t\tTS\tFLAGWRD7\n\n\t\tTC\tPHASCHNG\t# SET RESTART GROUP 6 TO REDO THE UPDATE\n\t\tOCT\t04026\t\t# DATA STORE IF A RESTART OCCURS.\n\t\tINHINT\t\t\t# (BECAUSE PHASCHNG DID A RELINT)\n\n\t\tCS\tTWO\t\t# GO TO UPFNDVAC IF INSTALL IS REQUIRED,\n\t\tAD\tUPVERB\t\t# THAT IS, IF IT'S A V70 - V72.\n\t\tEXTEND\t\t\t# GO TO UPEND73 IF IT'S A V73.\n\t\tBZMF\tUPFNDVAC\n\n# VERB 73 BRANCH\n\nUPEND73\t\tEXTEND\t\t\t# V73-PERFORM DP OCTAL AGC CLOCK INCREMENT\n\t\tDCA\tUPBUFF\n\t\tDXCH\tUPBUFF +8D\n\t\tTC\tTIMEDIDL\n\t\tTC\tFALTON\t\t# ERROR- TURN ON *OPERATOR ERROR* LIGHT\n\t\tTC\tUPOUT +1\t# GO TO COMMON UPDATE PROGRAM EXIT\n\nUPFNDVAC\tCAF\tCHRPRIO\t\t# (USE EXTENDED VERB PRIORITY)\n\t\tTC\tFINDVAC\t\t# GET VAC AREA FOR 'CALL INTSTALL'\n\t\tEBANK=\tTEPHEM\n\t\t2CADR\tUPJOB\t\t# (NOTE:  THIS WILL ALSO SET EBANK FOR\n\t\tTC\tENDOFJOB\t# 'TEPHEM' UPDATE BY V70)\n\nUPJOB\t\tTC\tINTPRET\t\t# THIS COULD BE A STATE VECTOR UPDATE--SO\n\t\tCALL\t\t\t# WAIT(PUT JOB TO SLEEP) IF ORBIT INT(OI)\n\t\t\tINTSTALL\t# IS IN PROGRESS--OR--GRAB OI AND RETURN\n\t\t\t\t\t# TO UPWAKE IF OI IS NOT IN PROGRESS.\n\nUPWAKE\t\tEXIT\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT\t04026\n\n\t\tTC\tUPFLAG\t\t# SET INTEGRATION RESTART BIT\n\t\tADRES\tREINTFLG\n\t\tINHINT\nUPPART3\t\tEQUALS\n\n\t\tINDEX\tUPVERB\t\t# BRANCH TO THE APPROPRIATE UPDATE VERB\n\t\tTCF\t+1\t\t# ROUTINE TO ACTUALLY PERFORM THE UPDATE\n\t\tTCF\tUPEND70\t\t# V70\n\t\tTCF\tUPEND71\t\t# V71\n\t\tTCF\tUPEND72\t\t# V72\n\n# Page 1504\n# ROUTINE TO INCREMENT CLOCK(TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.\nTIMEDIDL\tEXTEND\n\t\tQXCH\tUPTEMP\t\t# SAVE Q FOR RETURN\n\t\tCAF\tZERO\t\t# ZERO AND SAVE TIME2,TIME1\n\t\tZL\n\t\tDXCH\tTIME2\n\t\tDXCH\tUPBUFF +18D\t# STORE IN CASE OF OVERFLOW\n\n\t\tCAF\tUPDTPHAS\t# DO\n\t\tTS\tL\t\t# A\n\t\tCOM\t\t\t# QUICK\n\t\tDXCH\t-PHASE6\t\t# PHASCHNG\n\nTIMEDIDR\tINHINT\n\t\tCAF\tZERO\n\t\tZL\t\t\t# PICK UP INCREMENTER(AND ZERO\n\t\tTS\tMPAC +2\t\t# IT IN CASE OF RESTARTS) AND\n\t\tDXCH\tUPBUFF +8D\t# STORE IT\n\t\tDXCH\tMPAC\t\t# INTO MPAC FOR TPAGREE.\n\n\t\tEXTEND\n\t\tDCA\tUPBUFF +18D\n\t\tDAS\tMPAC\t\t# FORM SUM IN MPAC\n\t\tEXTEND\n\t\tBZF\tDELTATOK\t# TEST FOR OVERFLOW\n\t\tCAF\tZERO\n\t\tDXCH\tUPBUFF +18D\t# OVERFLOW, RESTORE OLD VALUE OF CLOCK\n\t\tDAS\tTIME2\t\t# AND TURN ON OPERATOR ERROR\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT\t04026\n\n\t\tTC\tUPTEMP\t\t# GO TO ERROR EXIT\n\nDELTATOK\tTC\tTPAGREE\t\t# FORCE SIGN AGREEMENT\n\t\tDXCH\tMPAC\n\t\tDAS\tTIME2\t\t# INCREMENT TIME2,TIME1\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT\t04026\n\n\t\tINHINT\n\t\tINDEX\tUPTEMP\t\t# (CODED THIS WAY FOR RESTART PROTECTION)\n\t\tTC\t1\t\t# NORMAL RETURN\n\n# VERB 71 BRANCH\n\nUPEND71\t\tCAE\tUPBUFF +1\t# SET EBANK\n\t\tTS\tEBANK\t\t#\tAND\n# Page 1505\n\t\tMASK\tLOW8\t\t# CALCULATE\n\t\tTS\tUPTEMP\t\t# S-REG VALUE OF RECEIVING AREA\n\n\t\tAD\tNEG3\t\t# IN THE PROCESS OF\n\t\tAD\tCOMPNUMB\t# PERFORMING\n\t\tEXTEND\t\t\t# THIS UPDATE\n\t\tBZF\tSTORLP71\t# WILL WE\n\t\tMASK\tBIT9\t\t# OVERFLOW\n\t\tCCS\tA\t\t# INTO THE NEXT EBANK....\n\t\tTCF\tUPERROUT\t# YES\n\n\t\tCA\tNEG3\t\t# NO- CALCULATE NUMBER OF\n\t\tAD\tCOMPNUMB\t# WORDS TO BE STORED MINUS ONE\nSTORLP71\tTS\tMPAC\t\t# SAVE NO. OF WORDS REMAINING MINUS ONE\n\t\tINDEX\tA\t\t# TAKE NEXT UPDATE WORD FROM\n\t\tCA\tUPBUFF +2\t# UPBUFF AND\n\t\tTS\tL\t\t# SAVE IT IN L\n\t\tCA\tMPAC\t\t# CALCULATE NEXT\n\t\tAD\tUPTEMP\t\t# RECEIVING ADDRESS\n\t\tINDEX\tA\n\t\tEBANK=\t1400\n\t\tLXCH\t1400\t\t# UPDATE THE REGISTER  BY CONTENTS OF L\n\t\tEBANK=\tTEPHEM\n\t\tCCS\tMPAC\t\t# ARE THERE ANY WORDS LEFT TO BE STORED\n\t\tTCF\tSTORLP71\t# YES\n\t\tTCF\tUPOUT\t\t# NO- THEN EXIT UPDATE PROGRAM\nADUPBFM1\tADRES\tUPBUFF -1\t# SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)\n\t\tTCF\tUPOUT\t\t# NO- EXIT UPDATE(HERE WHEN COMPNUMB = 3)\n\n# VERB 72 BRANCH\n\nUPEND72\t\tCAF\tBIT1\t\t# HAVE AN ODD NO. OF COMPONENTS\n\t\tMASK\tCOMPNUMB\t# BEEN SENT FOR A V72 UPDATE...\n\t\tCCS\tA\n\t\tTCF\t+2\t\t# YES\n\t\tTCF\tUPERROUT\t# ERROR- SHOULD BE ODD NO. OF COMPONENTS\n\t\tCS\tBIT2\n\t\tAD\tCOMPNUMB\nLDLOOP72\tTS\tMPAC\t\t# NOW PERFORM THE UPDATE\n\t\tINDEX\tA\n\t\tCAE\tUPBUFF +1\t# PICK UP NEXT UPDATE WORD\n\t\tLXCH\tA\n\t\tCCS\tMPAC\t\t# SET POINTER TO ECADR(MUST BE CCS)\n\t\tTS\tMPAC\n\t\tINDEX\tA\n\t\tCAE\tUPBUFF +1\t# PICK UP NEXT ECADR OF REG TO BE UPDATED\n\t\tTS\tEBANK\t\t# SET EBANK\n\t\tMASK\tLOW8\t\t# ISOLATE RELATIVE ADDRESS\n\t\tINDEX\tA\n\n# Page 1506\n\t\tEBANK=\t1400\n\t\tLXCH\t1400\t\t# UPDATE THE REGISTER BY CONTENTS OF L\n\t\tEBANK=\tTEPHEM\n\t\tCCS\tMPAC\t\t# ARE WE THORUGH THE V72 UPDATE...\n\t\tTCF\tLDLOOP72\t# NO\n\n# NORMAL FINISH OF P27\n\nUPOUT\t\tEQUALS\n\t\tTC\tINTWAKEU\t# RELEASE  GRAB  OF ORBITAL INTEGRATION\n\t+1\tCAE\tUPOLDMOD\t# RESTORE PRIOR P27 MODE\n\t\tTC\tNEWMODEX +3\n\t\tCAF\tZERO\n\t\tTS\tDNLSTCOD\n\t\tTC\tUPACTOFF\t# TURN OFF 'UPLINK ACTIVITY' LIGHT\n\n\t\tEXTEND\t\t\t# KILL GROUP 6\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE6\n\n\t\tTC\tENDEXT\t\t# EXTENDED VERB EXIT\n\n# VERB 70 BRANCH\n\nUPEND70\t\tEXTEND\t\t\t# V70 DOES THE FOLLOWING WITH DP DELTA\n\t\tDCS\tUPBUFF\t\t# TIME IN UPBUFF\n\t\tDXCH\tUPBUFF +8D\n\t\tTC\tTIMEDIDL\t# DECREMENT AGC CLOCK\n\n\t\tTC\tUPERROUT\t# ERROR WHILE DECREMENTING CLOCK -- EXIT\n\n\t\tEBANK=\tTEPHEM\n\t\tEXTEND\n\t\tDCS\tUPBUFF\t\t# COPY DECREMENTERS FOR\n\t\tDXCH\tUPBUFF +10D\t# RESTART PROTECTION\n\t\tEXTEND\n\t\tDCS\tUPBUFF\n\t\tDXCH\tUPBUFF +12D\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT\t04026\n\n\t\tCAF\tZERO\n\t\tZL\n\t\tDXCH\tUPBUFF +10D\t# DECREMENT CSM STATE VECTOR TIME\n\t\tDAS\tTETCSM\n\n\t\tCAF\tZERO\n# Page 1507\n\t\tZL\n\t\tDXCH\tUPBUFF +12D\t# DECREMENT LEM STATE VECTOR TIME\n\t\tDAS\tTETLEM\n\n\t\tCAF\tZERO\n\t\tZL\n\t\tDXCH\tUPBUFF\n\t\tDAS\tTEPHEM +1\t# INCREMENT TP TEPHEM\n\t\tADS\tTEPHEM\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT \t04026\n\n\t\tEBANK=\tUPBUFF\n\n\t\tTC\tUPOUT\t\t# GO TO STANDARD UPDATE PROGRAM EXIT\n\n# ERROR SEQUENCE\n\nUPERROUT\tTC\tFALTON\t\t# TURN ON *OPERATOR ERROR* LIGHT\n\t\tTCF\tUPOUT\t\t# GO TO COMMON UPDATE PROGRAM EXIT\n\n\t+2\tTC\tFALTON\t\t# TURN ON 'OPERATOR ERROR' LIGHT\n\t\tTC\tUPACTOFF\t# TURN OFF'UPLINK ACTIVITY'LIGHT\n\t\tTC\tENDEXT\t\t# EXTENDED VERB EXIT\n\t\t\t\t\t# (THE PURPOSE OF UPERROUT +2 EXIT IS\n\t\t\t\t\t# TO PROVIDE AN ERROR EXIT WHICH DOES NOT\n\t\t\t\t\t# RESET ANY RESTART GROUPS)\n\n# :UPACTOFF: IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM(P27).\n\nUPACTOFF\tCS\tBIT3\n\t\tEXTEND\t\t\t# TURN OFF UPLINK ACTIVITY LIGHT\n\t\tWAND\tDSALMOUT\t# (BIT 3 OF CHANNEL 11)\n\t\tTC\tQ\n"
  },
  {
    "path": "Comanche055/WAITLIST.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tWAITLIST.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055.\n#\t\tIt is part of the source code for the Command Module's (CM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1221-1235\n# Mod history:\t2009-05-14 RSB\tAdapted from the Colossus249/ file of the\n#\t\t\t\tsame name, using Comanche055 page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 055 of AGC program Comanche by NASA\n#\t2021113-051.  10:28 APR. 1, 1969\n#\n#\tThis AGC program shall also be referred to as\n#\t\t\tColossus 2A\n\n# Page 1221\n# PROGRAM DESCRIPTION\t\t\t\t\t\tDATE - 10 OCTOBER 1966\n# MOD NO - 2\t\t\t\t\t\t\tLOG SECTION - WAITLIST\n# MOD BY - MILLER\t(DTMAX INCREASED TO 162.5 SEC)\t\tASSEMBLY SUNBURST REV 5\n# MOD 3 BY KERNAN\t(INHINT INSERTED AT WAITLIST) 2/28/68 SKIPPER REV 4\n# MOD 4BY KERNAN\t(TWIDDLE IN 54) 3/28/68 SKIPPER REV 13.\n#\n# FUNCTIONAL DESCRIPTION-\n#\tPART OF A SECTION OF PROGRAMS,-WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM, (CALLED A TASK),\n#\tWHICH IS TO BEGIN IN C(A) CENTISECONDS.  WAITLIST UPDATES TIME3, LST1 AND LST2. THE MEANING OF THESE LISTS\n#\tFOLLOW.\n#\n#\t\tC(TIME3) = 16384 -(T1-T) CENTISECONDS, (T=PRESENT TIME, T1-TIME FOR TASK1)\n#\n#\t\t\tC(LST1)\t\t=\t-(T2-T1)+1\n#\t\t\tC(LST1 +1)\t=\t-(T3-T2)+1\n#\t\t\tC(LST1 +2)\t=\t-(T4-T3)+1\n#\t\t\t\t       ...\n#\t\t\tC(LST1 +6)\t=\t-(T8-T7)+1\n#\t\t\tC(LST1 +7)\t=\t-(T9-T8)+1\n#\n#\t\t\tC(LST2)\t\t=\t2CADR OF TASK1\n#\t\t\tC(LST2 +2)\t=\t2CADR OF TASK2\n#\t\t\t\t       ...\n#\t\t\tC(LST2 +14)\t=\t2CADR OF TASK8\n#\t\t\tC(LST2 +16)\t=\t2CADR OF TASK9\n#\n# WARNINGS-\n# --------\n#\t1)\t1 <= C(A) <= 16250D (1 CENTISECOND TO 162.5 SEC)\n#\t2)\t9 TASKS MAXIMUM\n#\t3)\tTASKS CALLED UNDER INTERRUPT INHIBITED\n#\t4)\tTASKS END BY TC TASKOVER\n#\n# CALLING SEQUENCE-\n#\n#\tL-1\tCA\tDELTAT \t(TIME IN CENTISECONDS TO TASK START)\n#\tL\tTC\tWAITLIST\n#\tL+1\t2CADR\tDESIRED TASK\n#\tL+2\t(MINOR OF 2CADR)\n#\tL+3\tRELINT\t\t(RETURNS HERE)\n#\n# TWIDDLE-\n# -------\n#\tTWIDDLE IS FOR USE WHEN THE TASK BEING SET UP IS IN THE SAME EBANK AND FBANK AS THE USER.  IN\n#\tSUCH CASES, IT IMPROVES UPON WAITLIST BY ELIMINATING THE NEED FOR THE BBCON HALF OF THE 2CADR,\n# Page 1222\n#\tSAVING A WORD.  TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT-\n#\n#\t\tL-1\tCA\tDELTAT\n#\t\tL\tTC\tTWIDDLE\n#\t\tL+1\tADRES\tDESIRED TASK\n#\t\tL+2\tRELINT\t\t(RETURNS HERE)\n#\n# NORMAL EXIT MODES-\n#\n#\tAT L+3 OF CALLING SEQUENCE\n#\n# ALARM OR ABORT EXIT MODES-\n#\n#\tTC\tABORT\n#\tOCT\t1203\t(WAITLIST OVERFLOW - TOO MANY TASKS)\n#\n# ERASABLE INITIALIZATION REQUIRED-\n#\n#\tACCOMPLISHED BY FRESH START,--\tLST2,..., LST2 +16 =ENDTASK\n#\t\t\t\t\tLST1,..., LST1 +7  =NEG1/2\n#\n# OUTPUT--\n#\n#\tLST1 AND LST2 UPDATED WITH NEW TASK AND ASSOCIATED TIME.\n# DEBRIS-\n#\tCENTRALS- A,Q,L\n#\tOTHER   - WAITEXIT, WAITADR, WAITTEMP, WAITBANK\n# DETAILED ANALYSIS OF TIMING-\n#\n#\tCONTROL WILL NOT BE RETURNED TO THE SPECIFIED ADDRESS (2CADR) IN EXACTLY DELTA T CENTISECONDS.\n#\tTHE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS\n#\n#\t\tLET T0 = THE TIME OF THE TC WAITLIST\n#\t\tLET TS = T0 +147U + COUNTER INCREMENTS (SET UP TIME)\n#\t\tLET X  = TS -(100TS)/100  (VARIANCE FROM COUNTERS)\n#\t\tLET Y  = LENGTH OF TIME OF INHIBIT INTERRUPT AFTER T3RUPT\n#\t\tLET Z  = LENGTH OF TIME TO PROCESS TASKS WHICH ARE DUE THIS T3RUPT BUT DISPATCHED EARLIER.\n#\t(Z=0, USUALLY)\n#\t\tLET DELTD = THE ACTUAL TIME TAKEN TO GIVE CONTROL TO 2CADR\n#\t       THEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS*\n#\t*THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME.\n#\n#\tIN SHORT, THE ACTUAL TIME TO RETURN CONTROL TO A 2CADR IS AUGMENTED BY THE TIME TO SET UP THE TASK'S\n# \tINTERRUPT, ALL COUNTERS TICKING, THE T3RUPT PROCESSING TIME, THE WAITLIST PROCESSING TIME AND THE POSSIBILITY\n#\tOF OTHER TASKS INHIBITING THE INTERRUPT.\n\n\t\tBLOCK\t02\n# Page 1223\n\t\tEBANK=\tLST1\t\t# TASK LISTS IN SWITCHED E BANK.\n\n\t\tCOUNT\t02/WAIT\n\nTWIDDLE\t\tINHINT\n\t\tTS\tL\t\t# SAVE DELAY TIME IN L\n\t\tCA\tPOSMAX\n\t\tADS\tQ\t\t# CREATING OVERFLOW AND Q-1 IN Q\n\t\tCA\tBBANK\n\t\tEXTEND\n\t\tROR\tSUPERBNK\n\t\tXCH\tL\n\nWAITLIST\tINHINT\n\t\tEXTEND\n\t\tBZMF\tWATLST0-\n\t\tXCH\tQ\t\t# SAVE DELTA T IN Q AND RETURN IN\n\t\tTS\tWAITEXIT\t# WAITEXIT.\n\t\tEXTEND\n\t\tINDEX\tWAITEXIT\t# IF TWIDDLING, THE TS SKIPS TO HERE\n\t\tDCA\t0\t\t# PICK UP 2CADR OF TASK.\n\t-1\tTS\tWAITADR\t\t# BBCON WILL REMAIN IN L\nDLY2\t\tCAF\tWAITBB\t\t# ENTRY FROM FIXDELAY AND VARDELAY.\n\t\tXCH\tBBANK\n\t\tTCF\tWAIT2\n\nWATLST0-\tTC\tPOODOO\n\t\tOCT\t1204\t\t# WAITLIST CALL WITH ZERO OR NEG DT\n\n# RETURN TO CALLER AFTER TASK INSERTION:\n\nLVWTLIST\tDXCH\tWAITEXIT\n\t\tAD\tTWO\n\t\tDTCB\n\n\t\tEBANK=\tLST1\nWAITBB\t\tBBCON\tWAIT2\n\n# RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1.\n\nFIXDELAY\tINDEX\tQ\t\t# BOTH ROUTINES MUST BE CALLED UNDER\n\t\tCAF\t0\t\t# WAITLIST CONTROL AND TERMINATE THE TASK\n\t\tINCR\tQ\t\t# IN WHICH THEY WERE CALLED.\n\n# RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A.\n\nVARDELAY\tXCH\tQ\t\t# DT TO Q.  TASK ADRES TO WAITADR.\n\t\tTS\tWAITADR\n\t\tCA\tBBANK\t\t# BBANK IS SAVED DURING DELAY.\n\t\tEXTEND\n# Page 1224\n\t\tROR\tSUPERBNK\t# ADD SBANK TO BBCON.\n\t\tTS\tL\n\t\tCAF\tDELAYEX\n\t\tTS\tWAITEXIT\t# GO TO TASKOVER AFTER TASK ENTRY.\n\t\tTCF\tDLY2\n\nDELAYEX\t\tTCF\tTASKOVER -2\t# RETURNS TO TASKOVER\n\n# Page 1225\n# ENDTASK MUST ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE.\n\n\t\tEBANK=\tLST1\nENDTASK\t\t-2CADR\tSVCT3\n\n\nSVCT3\t\tCCS\tFLAGWRD2\t# DRIFT FLAG\n\t\tTCF\tTASKOVER\n\t\tTCF\tTASKOVER\n\t\tTCF\t+1\n\n\t\tCCS\tIMUCADR\t\t# DON'T DO NBDONLY IF SOMEONE ELSE IS IN\n\t\tTCF\tSVCT3X\n\t\tTCF\t+3\n\t\tTCF\tSVCT3X\n\t\tTCF\tSVCT3X\n\t+3\tCAF\tPRIO35\t\t# COMPENSATE FOR NBD COEFFICIENTS ONLY.\n\t\tTC\tNOVAC\t\t#\tENABLE EVERY 81.93 SECONDS\n\t\tEBANK=\tNBDX\n\t\t2CADR\tNBDONLY\n\n\t\tTCF\tTASKOVER\n\n\t\tSETLOC\tFFTAG6\n\t\tBANK\n\nSVCT3X\t\tTC\tFIXDELAY\t# DELAY MAX OF 2 TIMES FOR IMU ZERO\n\t\tDEC\t500\n\t\tTC\tSVCT3\t\t# CHECK DRIFT FLAG AGAIN\n\n# Page 1226\n# BEGIN TASK INSERTION.\n\n\t\tBANK\t01\n\t\tCOUNT\t01/WAIT\n\nWAIT2\t\tTS\tWAITBANK\t# BBANK OF CALLING PROGRAM.\n\t\tCS\tTIME3\n\t\tAD\tBIT8\t\t# BIT 8 = OCT 200\n\t\tCCS\tA\t\t# TEST 200 - C(TIME3).  IF POSITIVE,\n\t\t\t\t\t# IT MEANS THAT TIME3 OVERFLOW HAS OCCURRED PRIOR TO CS TIME3 AND THAT\n\t\t\t\t\t# C(TIME3) = T - T1, INSTEAD OF 1.0 - (T1 - T).  THE FOLLOWING FOUR\n\t\t\t\t\t# ORDERS SET C(A) = TD - T1 + 1 IN EITHER CASE.\n\n\t\tAD\tOCT40001\t# OVERFLOW HAS OCCURRED.  SET C(A) =\n\t\tCS\tA\t\t# T - T1 + 1.0 - 201\n\n# NORMAL CASE (C(A) NNZ) YIELDS SAME C(A):  -( -(1.0-(T1-T)) + 200) - 1\n\n\t\tAD\tOCT40201\n\t\tAD\tQ\t\t# RESULT = TD - T1 + 1.\n\n\t\tCCS\tA\t\t# TEST TD - T1 + 1\n\n\t\tAD\tLST1\t\t# IF TD - T1 POS, GO TO WTLST5 WITH\n\t\tTCF\tWTLST5\t\t# C(A) = (TD - T1) + C(LST1) = TD-T2+1\n\n\t\tNOOP\n\t\tCS\tQ\n\n# NOTE THAT THIS PROGRAM SECTION IS NEVER ENTERED WHEN T-T1 G/E -1,\n# SINCE TD-T1+1 = (TD-T) + (T-T1+1), AND DELTA T = TD-T G/E +1.  (G/E\n# SYMBOL MEANS GREATER THAN OR EQUAL TO).  THUS THERE NEED BE NO CON-\n# CERN OVER A PREVIOUS OR IMMINENT OVERFLOW OF TIME3 HERE.\n\n\t\tAD\tPOS1/2\t\t# WHEN TD IS NEXT, FORM QUANTITY\n\t\tAD\tPOS1/2\t\t#\t1.0 - DELTA T = 1.0 - (TD - T)\n\t\tXCH\tTIME3\n\t\tAD\tNEGMAX\n\t\tAD\tQ\t\t# 1.0 - DELTAT T NOW COMPLETE.\n\t\tEXTEND\t\t\t# ZERO INDEX Q.\n\t\tQXCH\t7\t\t# (ZQ)\n\n# Page 1227\nWTLST4\t\tXCH\tLST1\n\t\tXCH\tLST1 \t+1\n\t\tXCH\tLST1 \t+2\n\t\tXCH\tLST1 \t+3\n\t\tXCH\tLST1 \t+4\n\t\tXCH\tLST1 \t+5\n\t\tXCH\tLST1 \t+6\n\t\tXCH\tLST1 \t+7\n\n\t\tCA\tWAITADR\t\t# (MINOR PART OF TASK CADR HAS BEEN IN L.)\n\t\tINDEX\tQ\n\t\tTCF\t+1\n\n\t\tDXCH\tLST2\n\t\tDXCH\tLST2 \t+2\n\t\tDXCH\tLST2 \t+4\n\t\tDXCH\tLST2 \t+6\n\t\tDXCH\tLST2 \t+8D\n\t\tDXCH\tLST2 \t+10D\t# AT END, CHECK THAT C(LST2 +10) IS STD\n\t\tDXCH\tLST2 \t+12D\n\t\tDXCH\tLST2 \t+14D\n\t\tDXCH\tLST2 \t+16D\n\t\tAD\tENDTASK\t\t# END ITEM, AS CHECK FOR EXCEEDING\n\t\t\t\t\t# THE LENGTH OF THE LIST.\n\t\tEXTEND\t\t\t# DUMMY TASK ADRES SHOULD BE IN FIXED-\n\t\tBZF\tLVWTLIST\t# FIXED SO ITS ADRES ALONE DISTINGUISHES\n\t\tTCF\tWTABORT\t\t# IT.\n\n# Page 1228\nWTLST5\t\tCCS\tA\t\t# TEST TD - T2 + 1\n\t\tAD\tLST1 +1\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t1\n\n\t+4\tCCS\tA\t\t# TEST TD - T3 + 1\n\t\tAD\tLST1 +2\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t2\n\n\t+4\tCCS\tA\t\t# TEST TD - T4 + 1\n\t\tAD\tLST1 +3\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t3\n\n\t+4\tCCS\tA\t\t# TEST TD - T5 + 1\n\t\tAD\tLST1 +4\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t4\n\n\t+4\tCCS\tA\t\t# TEST TD - T6 + 1\n\t\tAD\tLST1 +5\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t5\n\n\t+4\tCCS\tA\t\t# TEST TD - T7 + 1\n\t\tAD\tLST1 +6\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t6\n\n# Page 1229\n\t+4\tCCS\tA\n\t\tAD\tLST1 +7\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t7\n\n\t+4\tCCS\tA\nWTABORT\t\tTC\tBAILOUT\t\t# NO ROOM IN THE INN.\n\t\tOCT\t1203\n\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t10\n\nOCT40201\tOCT\t40201\n\n# Page 1230\n# THE ENTRY TO WTLST2 JUST PRECEDING OCT N IS FOR T  LE TD LE T   -1.\n#                                                  N           N+1\n#\n# (LE MEANS LESS THAN OR EQUAL TO).  AT ENTRY, C(A) = -(TD - T   + 1)\n#                                                             N+1\n#\n# THE LST1 ENTRY-(T   -T +1) IS TO BE REPLACED BY -(TD - T  + 1), AND\n#                  N+1  N                                 N\n#\n# THE ENTRY-(T   - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING.\n#             N+1\n\nWTLST2\t\tTS\tWAITTEMP\t#\tC(A) = -(TD - T + 1)\n\t\tINDEX\tQ\n\t\tCAF\t0\n\t\tTS\tQ\t\t# INDEX VALUE INTO Q.\n\n\t\tCAF\tONE\n\t\tAD\tWAITTEMP\n\t\tINDEX\tQ\t\t# C(A) = -(TD - T ) + 1.\n\t\tADS\tLST1 -1\t\t#                N\n\n\t\tCS\tWAITTEMP\n\t\tINDEX\tQ\n\t\tTCF\tWTLST4\n\n# Page 1231\n# ENTERS HERE ON T3 RUPT TO DISPATCH WAITLISTED TASK.\n\nT3RUPT\t\tEXTEND\n\t\tROR\tSUPERBNK\t# READ CURRENT SUPERBANK VALUE AND\n\t\tTS\tBANKRUPT\t# SAVE WITH E AND F BANK VALUES.\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\nT3RUPT2\t\tCAF\tNEG1/2\t\t# DISPATCH WAITLIST TASK.\n\t\tXCH\tLST1 +7\n\t\tXCH\tLST1 +6\n\t\tXCH\tLST1 +5\n\t\tXCH\tLST1 +4\t\t# 1. MOVE UP LST1 CONTENTS, ENTERING\n\t\tXCH\tLST1 +3\t\t#    A VALUE OF 1/2 +1 AT THE BOTTOM\n\t\tXCH\tLST1 +2\t\t#    FOR T6-T5, CORRESPONDING TO THE\n\t\tXCH\tLST1 +1\t\t#    INTERVAL 81.91 SEC FOR ENDTASK.\n\t\tXCH\tLST1\n\t\tAD\tPOSMAX\t\t# 2. SET T3 = 1.0 - T2 - T USING LIST 1.\n\t\tADS\tTIME3\t\t#    SO T3 WONT TICK DURING UPDATE.\n\t\tTS\tRUPTAGN\n\t\tCS\tZERO\n\t\tTS\tRUPTAGN\t\t# SETS RUPTAGN TO +1 ON OVERFLOW.\n\n\t\tEXTEND\t\t\t# DISPATCH TASK.\n\t\tDCS\tENDTASK\n\t\tDXCH\tLST2 +16D\n\t\tDXCH\tLST2 +14D\n\t\tDXCH\tLST2 +12D\n\t\tDXCH\tLST2 +10D\n\t\tDXCH\tLST2 +8D\n\t\tDXCH\tLST2 +6\n\t\tDXCH\tLST2 +4\n\t\tDXCH\tLST2 +2\n\t\tDXCH\tLST2\n\n\t\tXCH\tL\n\t\tEXTEND\n\t\tWRITE \tSUPERBNK\t# SET SUPERBANK FROM BBCON OF 2CADR\n\t\tXCH\tL\t\t# RESTORE TO L FOR DXCH Z.\n\t\tDTCB\n\n# Page 1232\n# RETURN, AFTER EXECUTION OF T3 OVERFLOW TASK:\n\n\t\tBLOCK\t02\n\t\tCOUNT\t02/WAIT\n\nTASKOVER\tCCS\tRUPTAGN\t\t# IF +1 RETURN TO T3RUPT, IF -0 RESUME.\n\t\tCAF\tWAITBB\n\t\tTS\tBBANK\n\t\tTCF\tT3RUPT2\t\t# DISPATCH NEXT TASK IF IT WAS DUE.\n\n\t\tCA\tBANKRUPT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# RESTORE SUPERBANK BEFORE RESUME IS DONE\n\nRESUME\t\tEXTEND\n\t\tQXCH\tQRUPT\nNOQRSM\t\tCA\tBANKRUPT\n\t\tXCH\tBBANK\nNOQBRSM\t\tDXCH\tARUPT\n\t\tRELINT\n\t\tRESUME\n\n# Page 1233\n# LONGCALL\n#\n# PROGRAM DESCRIPTION\t\t\t\t      DATE- 17 MARCH 1967\n# PROGRAM WRITTEN BY W.H. VANDEVER\t\t     LOG SECTION WAITLIST\n# MOD BY- R. MELANSON TO ADD DOCUMENTATION\tASSEMBLY SUNDISK REV. 100\n#\n# FUNCTIONAL DESCRIPTION-\n# LONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK\n# IMMEDIATELY FOLLOWING THE TC LONGCALL.  FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF\n# A DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO\n# START\n#\n# CALLING SEQUENCE-\n#\t\tEXTEND\n#\t\tDCA\tTIMELOC\n#\t\tTC\tLONGCALL\n#\t\t2CADR\tTASKTODO\n#\n# NORMAL EXIT MODE-\n#\t1). TC\t\tWAITLIST\n#\t2). DTCB\t(TC L+3 OF CALLING ROUTINE 1ST PASS THRU LONGCYCL)\n#\t3). DTCB\t(TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL)\n#\n# ALARM OR ABORT EXIT MODE-\n#\tNONE\n#\n# OUTPUT-\n#\tLONGTIME AND LONGTIME+1 = DELTA TIME\n#\tLONGEXIT AND LONGEXIT+1 = RETURN 2CADR\n#\tLONGCADR AND LONGCADR+1 = TASK 2CADR\n#\tA = SINGLE PRECISION TIME FOR WAITLIST\n#\n# ERASABLE INITIALIZATION-\n#\tA = MOST SIGNIFICANT PART OF DELTA TIME\n#\tL = LEAST SIGNIFICANT PART OF DELTA TIME\n#\tQ = ADDRESS OF 2CADR TASK VALUE\n#\n# DEBRIS-\n#\tA,Q,L\n#\tLONGCADR AND LONGCADR+1\n#\tLONGEXIT AND LONGEXIT+1\n#\tLONGTIME AND LONGTIME+1\n#\n# *** THE FOLLOWING IS TO BE IN FIXED-FIXED AND UNSWITCHED ERRASIBLE ***\n\n\t\tBLOCK\t02\n\t\tEBANK=\tLST1\nLONGCALL\tDXCH\tLONGTIME\t# OBTAIN THE DELTA TIME\n\n\t\tEXTEND\t\t\t# OBTAIN THE 2CADR\n# Page 1234\n\t\tNDX\tQ\n\t\tDCA\t0\n\t\tDXCH\tLONGCADR\n\n\t\tEXTEND\t\t\t# NOW GO TO THE APPROPRIATE SWITCHED BANK\n\t\tDCA\tLGCL2CDR\t# FOR THE REST OF LONGCALL\n\t\tDTCB\n\n\t\tEBANK=\tLST1\nLGCL2CDR\t2CADR\tLNGCALL2\n\n# *** THE FOLLOWING MAY BE IN A SWITCHED BANK, INCLUDING ITS ERASABLE ***\n\n\t\tBANK\t01\n\t\tCOUNT\t01/WAIT\n\nLNGCALL2\tLXCH\tLONGEXIT +1\t# SAVE THE CORRECT BB FOR RETURN\n\t\tCA\tTWO\t\t# OBTAIN THE RETURN ADDRESS\n\t\tADS\tQ\n\t\tTS\tLONGEXIT\n\n# *** WAITLIST TASK LONGCYCL ***\nLONGCYCL\tEXTEND\t\t\t# CAN WE SUCCESFULLY TAKE ABOUT 1.25\n\t\tDCS\tDPBIT14\t\t# MINUTES OFF OF LONGTIME\n\t\tDAS\tLONGTIME\n\n\t\tCCS\tLONGTIME +1\t# THE REASONING BEHIND THIS PART IS\n\t\tTCF\tMUCHTIME\t# INVOLVED, TAKING INTO ACCOUNT THAT THE\n\t\t\t\t\t# WORDS MAY NOT BE SIGNED CORRECTED (DP\n\t\t\t\t\t# BASIC INSTRUCTIONS\n\t\t\t\t\t# DO NOT SIGN CORRECT) AND THAT WE SUBTRAC-\n\t\t\t\t\t# TED BIT14 (1 OVER HALF THE POS. VALUE\n\t\t\t\t\t# REPRESENTABLE IN SINGLE WORD)\n\t\tNOOP\t\t\t# CAN'T GET HERE **********\n\t\tTCF\t+1\n\t\tCCS\tLONGTIME\n\t\tTCF\tMUCHTIME\nDPBIT14\t\tOCT\t00000\n\t\tOCT\t20000\n\n\t\t\t\t\t# LONGCALL\nLASTTIME\tCA\tBIT14\t\t# GET BACK THE CORRECT DELTA TFOR WAITLIST\n\t\tADS\tLONGTIME +1\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLST1\n\t\t2CADR\tGETCADR\t\t# THE ENTRY TO OUR LONGCADR\n\nLONGRTRN\tCA\tTSKOVCDR\t# SET IT UP SO THAT ONLY THE FIRST EXIT IS\n# Page 1235\n\t\tDXCH\tLONGEXIT\t# TO THE CALLER OF LONGCALL\n\t\tDTCB\t\t\t# THE REST ARE TO TASKOVER\n\nMUCHTIME\tCA\tBIT14\t\t# WE HAVE OVER OUR ABOUT 1.25 MINUTES\n\t\tTC\tWAITLIST\t# SO SET UP FOR ANOTHER CYCLE THROUGH HERE\n\t\tEBANK=\tLST1\n\t\t2CADR\tLONGCYCL\n\n\n\t\tTCF\tLONGRTRN\t# NOW EXIT PROPERLY\n\n# *** WAITLIST TASK GETCADR ***\nGETCADR\t\tDXCH\tLONGCADR\t# GET THE LONGCALL THAT WE WISHED TO START\n\t\tDTCB\t\t\t# AND TRANSFER CONTROL TO IT\n\nTSKOVCDR\tGENADR\tTASKOVER\n"
  },
  {
    "path": "LICENSE.md",
    "content": "# Public Domain Mark 1.0\n\n## No Copyright\n\nThis work has been identified as being free of known restrictions under copyright law, including all related and neighboring rights.\n\nYou can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. See Other Information below.\n\n## Other Information\n\n- The work may not be free of known copyright restrictions in all jurisdictions.\n\n- Persons may have other rights in or related to the work, such as patent or trademark rights, and others may have rights in how the work is used, such as publicity or privacy rights.\n\n- In some jurisdictions moral rights of the author may persist beyond the term of copyright. These rights may include the right to be identified as the author and the right to object to derogatory treatments.\n\n- Unless expressly stated otherwise, the person who identified the work makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law.\n\n- When using or citing the work, you should not imply endorsement by the author or the person who identified the work.\n"
  },
  {
    "path": "Luminary099/AGC_BLOCK_TWO_SELF_CHECK.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tAGC_BLOCK_TWO_SELF_CHECK.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1284-1293\n# Mod history:\t2009-05-27 OH\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1284\n# PROGRAM DESCRIPTION\t\t\t\tDATE:  20 DECEMBER 1967\n# PROGRAM NAME -- SELF-CHECK\t\t\tLOG SECTION:  AGC BLOCK TWO SELF-CHECK\n# MOD NO -- 1\t\t\t\t\tASSEMBLY SUBROUTINE UTILITYM REV 25\n# MOD BY -- GAUNTT\n#\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tPROGRAM HAS TWO MAIN PARTS.  THE FIRST IS SELF-CHECK WHICH RUNS AS A ZERO PRIORITY JOB WITH NO CORE SET, AS\n#\tPART OF THE BACK-UP IDLE LOOP.  THE SECOND IS SHOW-BANKSUM WHICH RUNS AS A REGULAR EXECUTIVE JOB WITH ITS OWN\n# \tSTARTING VERB.\n#\tTHE PURPOSE OF SELF-CHECK IS TO CHECK OUT VARIOUS PARTS OF THE COMPUTER AS OUTLINED BELOW IN THE OPTIONS.\n#\tTHE PURPOSE OF SHOW-BANKSUM IS TO DISPLAY THE SUM OF EACH BANK, ONE AT A TIME.\n#\tIN ALL THERE ARE 7 POSSIBLE OPTIONS IN THIS BLOCK II VERSION OF SELF-CHECK.  MORE DETAIL DESCRIPTION MAY BE\n#\tFOUND IN E-2065 BLOCK II AGC SELF-CHECK AND SHOW BANKSUM BY EDWIN D. SMALLY DECEMBER 1966, AND ADDENDA 2 AND 3.\n#\tTHE DIFFERENT OPTIONS ARE CONTROLLED BY PUTTING DIFFERENT NUMBERS IN THE SMODE REGISTER (NOUN 27).  BELOW IS\n# \tA DESCRIPTION OF WHAT PARTS OF THE COMPUTER THAT ARE CHECKED BY THE OPTIONS, AND THE CORRESPONDING NUMBER, IN\n#\tOCTAL, TO LOAD INTO SMODE.\n#\t\t+-4\t\tERASABLE MEMORY\n#\t\t+-5\t\tFIXED MEMORY\n#\t\t+-1,2,3,6,7,10\tEVERYTHING IN OPTIONS 4 AND 5.\n#\t\t-0\t\tSAME AS +-10 UNTIL AN ERROR IS DETECTED.\n#\t\t+0\t\tNO CHECK, PUTS COMPUTER INTO THE BACKUP IDLE LOOP.\n#\n#\n# WARNINGS\n#\n#\tUSE OF E MEMORY RESERVED FOR SELF-CHECK (EVEN IN IDLE LOOP) AS TEMP STORAGE BY OTHER PROGRAMS IS DANGEROUS.\n#\tSMODE SET GREATER THAN OCT 10 PUTS COMPUTER INTO BACKUP IDLE LOOP.\n#\n#\n# CALLING SEQUENCE\n#\n#\tTO CALL SELF-CHECK KEY IN\n#\t\tV 21 N 27 E\tOPTION NUMBER E\n#\tTO CALL SHOW-BANKSUM KEY IN\n#\t\tV 91 E\t\tDISPLAYS FIRST BANK\n#\t\tV 33 E\t\tPROCEED, DISPLAYS NEXT BANK\n#\n#\n# EXIT MODES, NORMAL AND ALARM\n#\tSELF-CHECK NORMALLY CONTINUES INDEFINITELY UNLESS THERE IS AN ERROR DETECTED.  IF SO + OPTION NUMBERS PUT\n#\tCOMPUTER INTO BACKUP IDLE LOOP, - OPTION NUMBERS RESTART THE OPTION.\n#\n#\tTHE -0 OPTION PROCEEDS FROM THE LINE FOLLOWING THE LINE WHERE THE ERROR WAS DETECTED.\n#\tSHOW-BANKSUM PROCEEDS UNTIL A TERMINATE IS KEYED IN (V 34 E).  THE COMPUTER IS PUT INTO THE BACKUP IDLE LOOP.\n#\n#\n# OUTPUT\n# Page 1285\n#\tSELF-CHECK UPON DETECTING AN ERROR LOADS THE SELF-CHECK ALARM CONSTANT (01102) INTO THE FAILREG SET AND\n#\tTURNS ON THE ALARM LIGHT.  THE OPERATOR MAY THEN DISPLAY THE THREE FAILREGS BY KEYING IN V 05 N 09 E.  FOR FURTHER\n# \tINFORMATION HE MAY KEY IN V 05 N 08 E, THE DSKY DISPLAY IN R1 WILL BE ADDRESS+1 OF WHERE THE ERROR WAS DETECTED,\n#\tIN R2 THE BBCON OF SELF-CHECK, AND IN R3 THE TOTAL NUMBER OF ERRORS DETECTED BY SELF-CHECK SINCE THE LAST MAN\n#\tINITIATED FRESH START (SLAP1).\n#\tSHOW-BANKSUM STARTING WITH BANK 0 DISPLAYS IN R1 THE BANK SUM (A +-NUMBER EQUAL TO THE BANK NUMBER), IN R2\n#\tTHE BANK NUMBER, AND IN R3 THE BUGGER WORD.\n#\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tACCOMPLISHED BY FRESH START\n#\t\tSMODE SET TO +0\n#\n#\n# DEBRIS\n#\n#\tALL EXITS FROM THE CHECK OF ERASABLE (ERASCHK) RESTORE ORIGINAL CONTENTS TO REGISTERS UNDER CHECK.\n#\tEXCEPTION IS A RESTART.  RESTART THAT OCCURS DURING ERASCHK RESTORES ERASABLE, UNLESS THERE IS EVIDENCE TO DOUBT\n#\tE MEMORY, IN WHICH CASE PROGRAM THEN DOES A FRESH START (DOFSTART).\n\n\n\t\tBANK\t25\n\t\tSETLOC\tSELFCHEC\n\t\tBANK\n\n\t\tCOUNT*\t$$/SELF\nSBIT1\t\tEQUALS\tBIT1\nSBIT2\t\tEQUALS\tBIT2\nSBIT3\t\tEQUALS\tBIT3\nSBIT4\t\tEQUALS\tBIT4\nSBIT5\t\tEQUALS\tBIT5\nSBIT6\t\tEQUALS\tBIT6\nSBIT7\t\tEQUALS\tBIT7\nSBIT8\t\tEQUALS\tBIT8\nSBIT9\t\tEQUALS\tBIT9\nSBIT10\t\tEQUALS\tBIT10\nSBIT11\t\tEQUALS\tBIT11\nSBIT12\t\tEQUALS\tBIT12\nSBIT13\t\tEQUALS\tBIT13\nSBIT14\t\tEQUALS\tBIT14\nSBIT15\t\tEQUALS\tBIT15\n\nS+ZERO\t\tEQUALS\tZERO\nS+1\t\tEQUALS\tBIT1\nS+2\t\tEQUALS\tBIT2\nS+3\t\tEQUALS\tTHREE\nS+4\t\tEQUALS\tFOUR\nS+5\t\tEQUALS\tFIVE\nS+6\t\tEQUALS\tSIX\n# Page 1286\nS+7\t\tEQUALS\tSEVEN\nS8BITS\t\tEQUALS\tLOW8\t\t# 00377\nCNTRCON\t\t=\tOCT50\t\t# USED IN CNTRCHK\nERASCON1\tOCTAL\t00061\t\t# USED IN ERASCHK\nERASCON2\tOCTAL\t01373\t\t# USED IN ERASCHK\nERASCON6\t=\tOCT1400\t\t# USED IN ERASCHK\nERASCON3\tOCTAL\t01461\t\t# USED IN ERASCHK\nERASCON4\tOCTAL\t01773\t\t# USED IN ERASCHK\nS10BITS\t\tEQUALS\tLOW10\t\t# 01777, USED IN ERASCHK\nSBNK03\t\tEQUALS\tPRIO6\t\t# 06000, USED IN ROPECHK\n-MAXADRS\t=\tHI5\t\t# FOR ROPECHK\nSIXTY\t\tOCTAL\t00060\nSUPRCON\t\tOCTAL\t60017\t\t# USED IN ROPECHK\nS13BITS\t\tOCTAL\t17777\nCONC+S1\t\tOCTAL\t25252\t\t# USED IN CYCLSHFT\nCONC+S2\t\tOCTAL\t52400\t\t# USED IN CYCLSHFT\nERASCON5\tOCTAL\t76777\nS-7\t\t=\tOCT77770\nS-4\t\tEQUALS\tNEG4\nS-3\t\tEQUALS\tNEG3\nS-2\t\tEQUALS\tNEG2\nS-1\t\tEQUALS\tNEGONE\nS-ZERO\t\tEQUALS\tNEG0\n\n\t\tEBANK=\tLST1\nADRS1\t\tADRES\tSKEEP1\nSELFADRS\tADRES\tSELFCHK\t\t# SELFCHK RETURN ADDRESS.  SHOULD BE PUT\n\t\t\t\t\t# IN SELFRET WHEN GOING FROM SELFCHK TO\n\t\t\t\t\t# SHOWSUM AND PUT IN SKEEP1 WHEN GOING\n\t\t\t\t\t# FROM SHOWSUM TO SELF-CHECK.\n\nPRERRORS\tCA\tERESTORE\t# IS IT NECESSARY TO RESTORE ERASABLE\n\t\tEXTEND\n\t\tBZF\tERRORS\t\t# NO\n\t\tEXTEND\n\t\tDCA\tSKEEP5\n\t\tINDEX\tSKEEP7\n\t\tDXCH\t0000\t\t# RESTORE THE TWO ERASABLE REGISTERS\n\t\tCA\tS+ZERO\n\t\tTS\tERESTORE\nERRORS\t\tINHINT\n\t\tCA\tQ\n\t\tTS\tSFAIL\t\t# SAVE Q FOR FAILURE LOCATION\n\t\tTS\tALMCADR\t\t# FOR DISPLAY WITH BBANK AND ERCOUNT\n\t\tINCR\tERCOUNT\t\t# KEEP TRACK OF NUMBER OF MALFUNCTIONS.\nTCALARM2\tTC\tALARM2\n\t\tOCT\t01102\t\t# SELF-CHECK MALFUNCTION INDICATOR\n\t\tCCS\tSMODE\nSIDLOOP\t\tCA\tS+ZERO\n\t\tTS\tSMODE\n# Page 1287\n\t\tTC\tSELFCHK\t\t# GO TO IDLE LOOP\n\t\tTC\tSFAIL\t\t# CONTINUE WITH SELF-CHECK\n\n-1CHK\t\tCCS\tA\n\t\tTCF\tPRERRORS\n\t\tTCF\tPRERRORS\n\t\tCCS\tA\n\t\tTCF\tPRERRORS\n\t\tTC\tQ\n\nSMODECHK\tEXTEND\n\t\tQXCH\tSKEEP1\n\t\tTC\tCHECKNJ\t\t# CHECK FOR NEW JOB\n\t\tCCS\tSMODE\n\t\tTC\tSOPTIONS\n\t\tTC\tSMODECHK +2\t# TO BACKUP IDLE LOOP\n\t\tTC\tSOPTIONS\n\t\tINCR\tSCOUNT\n\t\tTC\tSKEEP1\t\t# CONTINUE WITH SELF-CHECK\n\nSOPTIONS\tAD\tS-7\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# FOR OPTIONS BELOW NINE.\nBNKOPTN\t\tTC\tSIDLOOP\t\t# ILLEGAL OPTION.  GO TO IDLE LOOP.\n\t\tINCR\tSCOUNT\t\t# FOR OPTIONS BELOW NINE.\n\t\tAD\tS+7\n\n\t\tINDEX\tA\n\t\tTC\tSOPTION1\nSOPTION1\tTC\tSKEEP1\t\t# WAS TC+TCF\nSOPTION2\tTC\tSKEEP1\t\t# WAS IN:OUT1\nSOPTION3\tTC\tSKEEP1\t\t# WAS COUNTCHK\nSOPTION4\tTC\tERASCHK\nSOPTION5\tTC\tROPECHK\nSOPTION6\tTC\tSKEEP1\nSOPTION7\tTC\tSKEEP1\nSOPTON10\tTC\tSKEEP1\t\t# CONTINUE WITH SELF-CHECK\n\nCHECKNJ\t\tEXTEND\n\t\tQXCH\tSELFRET\t\t# SAVE RETURN ADDRESS WHILE TESTING NEWJOB\n\t\tTC\tPOSTJUMP\t# TO SEE IF ANY JOBS HAVE BECOME ACTIVE.\n\t\tCADR\tADVAN\n\nSELFCHK\t\tTC\tSMODECHK\t# ** CHARLEY, COME IN HERE\n\n# SKEEP7 HOLDS LOWEST OF TWO ADDRESSES BEING CHECKED.\n# SKEEP6 HOLDS B(X+1).\n# SKEEP5 HOLDS B(X).\n# SKEEP4 HOLDS C(EBANK) DURING ERASLOOP AND CHECKNJ.\n# SKEEP3 HOLDS LAST ADDRESS BEING CHECKED (HIGHEST ADDRESS).\n# Page 1288\n# SKEEP2 CONTROLS CHECKING OF NON-SWITCHABLE ERASABLE MEMORY WITH BANK NUMBERS IN EB.\n# ERASCHK TAKES APPROXMATELY 7 SECONDS\nERASCHK\t\tCA\tS+1\n\t\tTS\tSKEEP2\n0EBANK\t\tCA\tS+ZERO\n\t\tTS\tEBANK\n\t\tCA\tERASCON3\t# 01461\n\t\tTS\tSKEEP7\t\t# STARTING ADDRESS\n\t\tCA\tS10BITS\t\t# 01777\n\t\tTS\tSKEEP3\t\t# LAST ADDRESS CHECKED\n\t\tTC\tERASLOOP\n\nE134567B\tCA\tERASCON6\t# 01400\n\t\tTS\tSKEEP7\t\t# STARTING ADDRESS\n\t\tCA\tS10BITS\t\t# 01777\n\t\tTS\tSKEEP3\t\t# LAST ADDRESS CHECKED\n\t\tTC\tERASLOOP\n\n2EBANK\t\tCA\tERASCON6\t# 01400\n\t\tTS\tSKEEP7\t\t# STARTING ADDRESS\n\t\tCA\tERASCON4\t# 01773\n\t\tTS\tSKEEP3\t\t# LAST ADDRESS CHECKED\n\t\tTC\tERASLOOP\n\nNOEBANK\t\tTS\tSKEEP2\t\t# +0\n\t\tCA\tERASCON1\t# 00061\n\t\tTS\tSKEEP7\t\t# STARTING ADDRESS\n\t\tCA\tERASCON2\t# 01373\n\t\tTS\tSKEEP3\t\t# LAST ADDRESS CHECKED\n\nERASLOOP\tINHINT\n\t\tCA\tEBANK\t\t# STORES C(EBANK)\n\t\tTS\tSKEEP4\n\t\tEXTEND\n\t\tNDX\tSKEEP7\n\t\tDCA\t0000\n\t\tDXCH\tSKEEP5\t\t# STORES C(X) AND C(X+1) IN SKEEP6 AND 5.\n\t\tCA\tSKEEP7\n\t\tTS\tERESTORE\t# IF RESTART, RESTORE C(X) AND C(X+1)\n\t\tTS\tL\n\t\tINCR\tL\n\t\tNDX\tA\n\t\tDXCH\t0000\t\t# PUTS OWN ADDRESS IN X AND X +1\n\t\tNDX\tSKEEP7\n\t\tCS\t0001\t\t# CS X+1\n\t\tNDX\tSKEEP7\n\t\tAD\t0000\t\t# AD X\n\t\tTC\t-1CHK\n\t\tCA\tERESTORE\t# HAS ERASABLE BEEN RESTORED\n\t\tEXTEND\n# Page 1289\n\t\tBZF\tELOOPFIN\t# YES, EXIT ERASLOOP.\n\t\tEXTEND\n\t\tNDX\tSKEEP7\n\t\tDCS\t0000\t\t# COMPLEMENT OF ADDRESS OF X AND X+1\n\t\tNDX\tSKEEP7\n\t\tDXCH\t0000\t\t# PUT COMPLEMENT OF ADDRESS OF X AND X+1\n\t\tNDX\tSKEEP7\n\t\tCS\t0000\t\t# CS X\n\t\tNDX\tSKEEP7\n\t\tAD\t0001\t\t# AD X+1\n\t\tTC\t-1CHK\n\t\tCA\tERESTORE\t# HAS ERASABLE BEEN RESTORED\n\t\tEXTEND\n\t\tBZF\tELOOPFIN\t# YES, EXIT ERASLOOP.\n\t\tEXTEND\n\t\tDCA\tSKEEP5\n\t\tNDX\tSKEEP7\n\t\tDXCH\t0000\t\t# PUT B(X) AND B(X+1) BACK INTO X AND X+1\n\t\tCA\tS+ZERO\n\t\tTS\tERESTORE\t# IF RESTART, DO NOT RESTORE C(X), C(X+1)\nELOOPFIN\tRELINT\n\t\tTC\tCHECKNJ\t\t# CHECK FOR NEW JOB\n\t\tCA\tSKEEP4\t\t# REPLACES B(EBANK)\n\t\tTS\tEBANK\n\t\tINCR\tSKEEP7\n\t\tCS\tSKEEP7\n\t\tAD\tSKEEP3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tERASLOOP\t# GO TO NEXT ADDRESS IN SAME BANK\n\t\tCCS\tSKEEP2\n\t\tTC\tNOEBANK\n\t\tINCR\tSKEEP2\t\t# PUT +1 IN SKEEP2.\n\t\tCA\tEBANK\n\t\tAD\tSBIT9\n\t\tTS\tEBANK\n\t\tAD\tERASCON5\t# 76777, CHECK FOR BANK E2\n\t\tEXTEND\n\t\tBZF\t2EBANK\n\t\tCCS\tEBANK\n\t\tTC\tE134567B\t# GO TO EBANKS 1,3,4,5,6, AND 7\n\t\tCA\tERASCON6\t# END OF ERASCHK\n\t\tTS\tEBANK\n# CNTRCHK PERFORMS A CS OF ALL REGISTERS FROM OCT. 60 THROUGH OCT. 10.\n# INCLUDED ARE ALL COUNTERS, T6-1, CYCLE AND SHIFT, AND ALL RUPT REGISTERS\nCNTRCHK\t\tCA\tCNTRCON\t\t# 00050\nCNTRLOOP\tTS\tSKEEP2\n\t\tAD\tSBIT4\t\t# +10 OCTAL\n\t\tINDEX\tA\n\t\tCS\t0000\n# Page 1290\n\t\tCCS\tSKEEP2\n\t\tTC\tCNTRLOOP\n\n# CYCLSHFT CHECKS THE CYCLE AND SHIFT REGISTERS\nCYCLSHFT\tCA\tCONC+S1\t\t# 25252\n\t\tTS\tCYR\t\t# C(CYR) = 12525\n\t\tTS\tCYL\t\t# C(CYL) = 52524\n\t\tTS\tSR\t\t# C(SR) = 12525\n\t\tTS\tEDOP\t\t# C(EDOP) = 00125\n\t\tAD\tCYR\t\t# 37777\t\tC(CYR) = 45252\n\t\tAD\tCYL\t\t# 00-12524\tC(CYL) = 25251\n\t\tAD\tSR\t\t# 00-25251\tC(SR) = 05252\n\t\tAD\tEDOP\t\t# 00-25376\tC(EDOP) = +0\n\t\tAD\tCONC+S2\t\t# C(CONC+S2) = 52400\n\t\tTC\t-1CHK\n\t\tAD\tCYR\t\t# 45252\n\t\tAD\tCYL\t\t# 72523\n\t\tAD\tSR\t\t# 77775\n\t\tAD\tEDOP\t\t# 77775\n\t\tAD\tS+1\t\t# 77776\n\t\tTC\t-1CHK\n\n\t\tINCR\tSCOUNT +1\n\t\tTC\tSMODECHK\n\n# SKEEP1 HOLDS SUM\n# SKEEP2 HOLDS PRESENT CONTENTS OF ADDRESS IN ROPECHK AND SHOWSUM ROUTINES\n# SKEEP2 HOLDS BANK NUMBER IN LOW ORDER BITS DURING SHOWSUM DISPLAY\n# SKEEP3 HOLDS PRESENT ADDRESS (00000 TO 01777 IN COMMON FIXED BANKS)\n#\t\t\t       (04000 TO 07777 IN FXFX BANKS)\n# SKEEP3 HOLDS BUGGER WORD DURING SHOWSUM DISPLAY\n# SKEEP4 HOLDS BANK NUMBER AND SUPER BANK NUMBER\n# SKEEP5 COUNTS 2 SUCCESSIVE TC SELF WORDS\n# SKEEP6 CONTROLS ROPECHK OR SHOWSUM OPTION\n# SKEEP7 CONTROLS WHEN ROUNTINE IS IN COMMON FIXED OR FIXED FIXED BANKS\n\nROPECHK\t\tCA\tS-ZERO\t\t# *\n\t\tTS\tSKEEP6\t\t# * -0 FOR ROPECHK.\nSTSHOSUM\tCA\tS+ZERO\t\t# * SHOULD BE ROPECHK\n\n\t\tTS\tSKEEP4\t\t# BANK NUMBER\n\t\tCA\tS+1\nCOMMFX\t\tTS\tSKEEP7\n\t\tCA\tS+ZERO\n\t\tTS\tSKEEP1\n\t\tTS\tSKEEP3\n\t\tCA\tS+1\n\t\tTS\tSKEEP5\t\t# COUNTS DOWN 2 TC SELF WORDS\nCOMADRS\t\tCA\tSKEEP4\n\t\tTS\tL\t\t# TO SET SUPER BANK\n\t\tMASK\tHI5\n# Page 1291\n\t\tAD\tSKEEP3\n\t\tTC\tSUPDACAL\t# SUPER DATA CALL\n\t\tTC\tADSUM\n\t\tAD\tSBIT11\t\t# 02000\n\t\tTC\tADRSCHK\n\nFXFX\t\tCS\tA\n\t\tTS\tSKEEP7\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tCA\tSBIT12\t\t# 04000, STARTING ADDRESS OF BANK 02\n\t\tTC\t+2\n\t\tCA\tSBNK03\t\t# 06000, STARTING ADDRESS OF BANK 03\n\t\tTS\tSKEEP3\n\t\tCA\tS+ZERO\n\t\tTS\tSKEEP1\n\t\tCA\tS+1\n\t\tTS\tSKEEP5\t\t# COUNTS DOWN 2 TC SELF WORDS\nFXADRS\t\tINDEX\tSKEEP3\n\t\tCA\t0000\n\t\tTC\tADSUM\n\t\tTC\tADRSCHK\n\nADSUM\t\tTS\tSKEEP2\n\t\tAD\tSKEEP1\n\t\tTS\tSKEEP1\n\t\tCAF\tS+ZERO\n\t\tAD\tSKEEP1\n\t\tTS\tSKEEP1\n\t\tCS\tSKEEP2\n\t\tAD\tSKEEP3\n\t\tTC\tQ\n\nADRSCHK\t\tLXCH\tA\n\t\tCA\tSKEEP3\n\t\tMASK\tLOW10\t\t# RELATIVE ADDRESS\n\t\tAD\t-MAXADRS\t# SUBTRACT MAX RELATIVE ADDRESS = 1777.\n\t\tEXTEND\n\t\tBZF\tSOPTION\t\t# CHECKSUM FINISHED IF LAST ADDRESS.\n\t\tCCS\tSKEEP5\t\t# IS CHECKSUM FINISHED\n\t\tTC\t+3\t\t# NO\n\t\tTC\t+2\t\t# NO\n\t\tTC\tSOPTION\t\t# GO TO ROPECHK SHOWSUM OPTION\n\t\tCCS\tL\t\t# -0 MEANS A TC SELF WORD.\n\t\tTC\tCONTINU\n\t\tTC\tCONTINU\n\t\tTC\tCONTINU\n\t\tCCS\tSKEEP5\n\t\tTC\tCONTINU +1\n\t\tCA\tS-1\n# Page 1292\n\t\tTC\tCONTINU +1\t# AD IN THE BUGGER WORD\nCONTINU\t\tCA\tS+1\t\t# MAKE SURE TWO CONSECUTIVE TC SELF WORDS\n\t\tTS\tSKEEP5\n\t\tCCS\tSKEEP6\t\t# *\n\t\tCCS\tNEWJOB\t\t# * +1, SHOWSUM\n\t\tTC\tCHANG1\t\t# *\n\t\tTC\t+2\t\t# *\n\t\tTC\tCHECKNJ\t\t# -0 IN SKEEP6 FOR ROPECHK\n\nADRS+1\t\tINCR\tSKEEP3\n\t\tCCS\tSKEEP7\n\t\tTC\tCOMADRS\n\t\tTC\tCOMADRS\n\t\tTC\tFXADRS\n\t\tTC\tFXADRS\n\nNXTBNK\t\tCS\tSKEEP4\n\t\tAD\tLSTBNKCH\t# LAST BANK TO BE CHECKED\n\t\tEXTEND\n\t\tBZF\tENDSUMS\t\t# END OF SUMMING OF BANKS.\n\t\tCA\tSKEEP4\n\t\tAD\tSBIT11\n\t\tTS\tSKEEP4\t\t# 37 TO 40 INCRMTS SKEEP4 BY END RND CARRY\n\t\tTC\tCHKSUPR\n17TO20\t\tCA\tSBIT15\n\t\tADS\tSKEEP4\t\t# SET FOR BANK 20\n\t\tTC\tGONXTBNK\nCHKSUPR\t\tMASK\tHI5\n\t\tEXTEND\n\t\tBZF\tNXTSUPR\t\t# INCREMENT SUPER BANK\n27TO30\t\tAD\tS13BITS\n\t\tEXTEND\n\t\tBZF\t+2\t\t# BANK SET FOR 30\n\t\tTC\tGONXTBNK\n\t\tCA\tSIXTY\t\t# FIRST SUPER BANK\n\t\tADS\tSKEEP4\n\t\tTC\tGONXTBNK\nNXTSUPR\t\tAD\tSUPRCON\t\t# SET BNK 30 + INCR SUPR BNK AND CANCEL\n\t\tADS\tSKEEP4\t\t# ERC BIT OF THE 37 TO 40 ADVANCE.\nGONXTBNK\tCCS\tSKEEP7\n\t\tTC\tCOMMFX\n\t\tCA\tS+1\n\t\tTC\tFXFX\n\t\tCA\tSBIT7\t\t# HAS TO BE LARGER THAN NO OF FXSW BANKS.\n\t\tTC\tCOMMFX\n\nSOPTION\t\tCA\tSKEEP4\n\t\tMASK\tHI5\t\t# = BANK BITS\n\t\tTC\tLEFT5\n\t\tTS\tL\t\t# BANK NUMBER BEFORE SUPER BANK\n# Page 1293\n\t\tCA\tSKEEP4\n\t\tMASK\tS8BITS\t\t# = SUPER BANK BITS\n\t\tEXTEND\n\t\tBZF\tSOPT\t\t# BEFORE SUPER BANK\n\t\tTS\tSR\t\t# SUPER BANK NECESSARY\n\t\tCA\tL\n\t\tMASK\tSEVEN\n\t\tAD\tSR\n\t\tTS\tL\t\t# BANK NUMBER WITH SUPER BANK\nSOPT\t\tCA\tSKEEP6\t\t# *\n\t\tEXTEND\t\t\t# *\n\t\tBZF\t+2\t\t# * ON -0 CONTINUE WITH ROPE CHECK.\n\t\tTC\tSDISPLAY\t# * ON +1 GO TO DISPLAY OF SUM.\n\t\tCCS\tSKEEP1\t\t# FORCE SUM TO ABSOLUTE VALUE.\n\t\tTC\t+2\n\t\tTC\t+2\n\t\tAD\tS+1\n\t\tTS\tSKEEP1\nBNKCHK\t\tCS\tL\t\t# = - BANK NUMBER\n\t\tAD\tSKEEP1\n\t\tAD\tS-1\n\t\tTC\t-1CHK\t\t# CHECK SUM\n\t\tTC\tNXTBNK\n\n\t\tEBANK=\tNEWJOB\nLSTBNKCH\tBBCON*\t\t\t# * CONSTANT, LAST BANK.\n\n"
  },
  {
    "path": "Luminary099/AGS_INITIALIZATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tAGS_INITIALIZATION.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t206-210\n# Mod history:\t2009-05-19 HG\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 206\n\n# PROGRAM NAME:  AGS INITIALIZATION (R47)\n#\n# WRITTEN BY:  RHODE/KILROY/FOLLETT\n#\n# MOD NO.:\t0\n# DATE:\t\t23 MARCH 1967\n# MOD BY:\tKILROY\n#\n# MOD NO.:\t1\n# DATE:\t\t28 OCTOBER 1967\n# MOD BY:\tFOLLETT\n#\n# FUNCT. DESC.:\t(1) TO PROVIDE THE AGS ABORT ELECTRONICS ASSEMBLY (AEA) WITH THE LEM AND CSM STATE VECTORS\n#\t\t(POSITION,VELOCITY,TIME) IN LEM IMU COORDINATES BY MEANS OF THE LGC DIGITAL DOWNLINK.\n#\n#\t\t(2) TO ZERO THE ICDU, LGC, AND AEA GIMBAL ANGLE COUNTER SIMULTANEOUSLY IN ORDER TO ESTABLISH A\n#\t\tCOMMON ZERO REFERENCE FOR THE MEASUREMENT OF GIMBAL (EULER) ANGLES WHICH DEFINE LEM ATTITUDE\n#\t\t(3) TO ESTABLISH THE GROUND ELAPSED TIME OF AEA CLOCK ZERO.  (IF AN AEA CLOCK ZERO IS\n#\t\tREQUESTED DURING THIS PROGRAM\n#\n# LOG SECTION:\tAGS INITIALIZATION\n#\n# CALLING SEQ:\tPROGRAM IS ENTERED WHEN ASTRONAUT KEYS V47E ON DSKY.\n#\t\tR47 MAY BE CALLED AT ANY TIME EXCEPT WHEN ANOTHER EXTENDED VERB IS IN PROGRESS\n#\n# SUBROUTINES\n# CALLED:\n#\n# NORMAL EXIT:\tENDEXT\n#\n# ALARM/ABORT:\tALARM -- BAD REFSMMAT -- CODE:220\n#\t\tOPERATOR ERROR IF V47 SELECTED DURING ANOTHER EXTENDED VERB.\n#\n# ERASABLES\n# USED:\t\tSAMPTIME\t(2)\tTIME OF :ENTER: KEYSTROKE\n#\t\tAGSK\t\t(2)\tGROUND ELAPSED TIME OF THE AEA CLOCK :ZERO:\n#\t\tAGSBUFF\t\t(14D)\tCONTAINS AGS INITIALIZATION DATA (SEE :OUTPUT: BELOW)\n#\t\tAGSWORD\t\t(1)\tPREVIOUS DOWNLIST SAVED HERE\n\n\t\tEBANK=\tAGSBUFF\n\n\t\tBANK\t40\n\t\tSETLOC\tR47\n\t\tBANK\n\n\t\tCOUNT*\t$$/R47\n\nAGSINIT\t\tCAF\tREFSMBIT\n\t\tMASK\tFLAGWRD3\t\t\t# CHECK REFSMFLG.\n\t\tCCS\tA\n# Page 207\n\t\tTC\tREDSPTEM\t\t\t# REFSMMAT IS OK\n\t\tTC\tALARM\t\t\t\t# REFSMMAT IS BAD\n\t\tOCT\t220\n\t\tTC\tENDEXT\n\nNEWAGS\t\tEXTEND\n\t\tDCA\tSAMPTIME\t\t\t# TIME OF THE :ENTER: KEYSTROKE\n\t\tDXCH\tAGSK\t\t\t\t# BECOMES NEW AEA CLOCK :ZERO:\n\nREDSPTEM\tEXTEND\n\t\tDCA\tAGSK\n\t\tDXCH\tDSPTEMX\nAGSDISPK\tCAF\tV06N16\n\t\tTC\tBANKCALL\t\t\t# R1 = 00XXX. HRS., R2 = 000XX MIN.,\n\t\tCADR\tGOMARKF\t\t\t\t# R3 = 0XX.XX SEC.\n\t\tTC\tENDEXT\t\t\t\t# TERMINATE RETURN\n\t\tTC\tAGSVCALC\t\t\t# PROCEED RETURN\n\t\tCS\tBIT6\t\t\t\t# IS ENTER VIA A V32\n\t\tAD\tMPAC\n\t\tEXTEND\n\t\tBZF\tNEWAGS\t\t\t\t# YES, USE KEYSTROKE TIME FOR NEW AGSK\n\n\t\tEXTEND\t\t\t\t\t# NO, NEW AGSK LOADED VIA V25\n\t\tDCA\tDSPTEMX\t\t\t\t# LOADED INTO DSPTEMX BY KEYING\n\t\tTC\tREDSPTEM -1\t\t\t# V25E FOLLOWED BY HRS.,MINS.,SECS.\n\t\t\t\t\t\t\t# DISPLAY THE NEW K\n\nAGSVCALC\tTC\tINTPRET\n\t\tSET\n\t\t\tNODOFLAG\t\t\t# DON'T ALLOW V37\n\t\tSET\tEXIT\n\t\t\tXDSPFLAG\n\n\t\tCAF\tV06N16\n\t\tTC\tBANKCALL\n\t\tCADR\tEXDSPRET\n\n\t\tTC\tINTPRET\t\t\t\t# EXTRAPOLATE LEM AND CSM STATE VECTORS\n\t\tRTB\t\t\t\t\t# TO THE PRESENT TIME\n\t\t\tLOADTIME\t\t\t# LOAD MPAC WITH TIME2,TIME1\n\t\tSTCALL\tTDEC1\t\t\t\t# CALCULATE LEM STATE VECTOR\n\t\t\tLEMPREC\n\t\tCALL\t\t\t\t\t# CALL ROUTINE TO CONVERT TO SM COORDS AND\n\t\t\tSCALEVEC\t\t\t# PROVIDE PROPER SCALING\n\t\tSTODL\tAGSBUFF\t\t\t\t# (LEMPREC AND CSMPREC LEAVE TDEC1 IN TAT)\n\t\t\tTAT\t\t\t\t# TAT = TIME TO WHICH RATT1 AND VATT1 ARE\n\t\tSTCALL\tTDEC1\t\t\t\t# COMPUTED (CSEC SINCE CLOCK START B-28).\n\t\t\tCSMPREC\t\t\t\t# CALCULATE CSM STATE VECTOR FOR SAME TIME\n\t\tCALL\n\t\t\tSCALEVEC\n# Page 208\n\t\tSTODL\tAGSBUFF +6\n\t\t\tTAT\n\t\tDSU\tDDV\t\t\t\t# CALCULATE AND STORE THE TIME\n\t\t\tAGSK\n\t\t\tTSCALE\n\t\tSTORE\tAGSBUFF +12D\n\t\tEXIT\n\n\t\tCAF\tLAGSLIST\n\t\tTS\tDNLSTCOD\n\n\t\tCAF\t20SEC\t\t\t\t# DELAY FOR 20 SEC WHILE THE AGS\n\t\tTC\tBANKCALL\t\t\t# DOWNLIST IS TRANSMITTED\n\t\tCADR\tDELAYJOB\n\n\t\tCA\tAGSWORD\n\t\tTS\tDNLSTCOD\t\t\t# RETURN TO THE OLD DOWNLIST\n\t\tCAF\tIMUSEBIT\n\t\tMASK\tFLAGWRD0\t\t\t# CHECK IMUSE FLAG.\n\t\tCCS\tA\n\t\tTC\tAGSEND\t\t\t\t# IMU IS BEING USED -- DO NOT ZERO\nCKSTALL\t\tCCS\tIMUCADR\t\t\t\t# CHECK FOR IMU USAGE WHICH AVOIDS THE\n\t\tTCF\t+3\t\t\t\t# IMUSE BIT:  I.E., IMU COMPENSATION.\n\t\tTCF\t+6\t\t\t\t# FREE.  GO AHEAD WITH THE IMU ZERO.\n\t\tTCF\t+1\n +3\t\tCAF\tTEN\t\t\t\t# WAIT .1 SEC AND TRY AGAIN.\n \t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tTCF\tCKSTALL\n\n +6\t\tTC\tBANKCALL\t\t\t# IMU IS NOT IN USE\n \t\tCADR\tIMUZERO\t\t\t\t# SET IMU ZERO DISCRETE FOR 320 MSECS.\n\t\tTC\tBANKCALL\t\t\t# WAIT 3 SEC FOR COUNTERS TO INCREMENT\n\t\tCADR\tIMUSTALL\n\t\tTC\tAGSEND\nAGSEND\t\tTC\tDOWNFLAG\t\t\t# ALLOW V37\n\t\tADRES\tNODOFLAG\n\n\t\tCAF\tV50N16\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARK3\n\t\tTCF\tENDEXT\n\t\tTCF\tENDEXT\n\t\tTC\tENDEXT\n\nSCALEVEC\tVLOAD\tMXV\n\t\t\tVATT1\n\t\t\tREFSMMAT\n\t\tVXSC\tVSL2\n\t\t\tVSCALE\n# Page 209\n\t\tVAD\tVAD\t\t\t\t# THIS SECTION ROUNDS THE VECTOR, AND\n\t\t\tAGSRND1\t\t\t\t# CORRECTS FOR THE FACT THAT THE AGS\n\t\t\tAGSRND2\t\t\t\t# IS A 2 S COMPLEMENT MACHINE WHILE THE\n\t\tRTB\t\t\t\t\t# LGC IS A 1 S COMPLEMENT MACHINE.\n\t\t\tVECSGNAG\n\t\tSTOVL\tVATT1\n\t\t\tRATT1\n\t\tMXV\tVXSC\n\t\t\tREFSMMAT\n\t\t\tRSCALE\n\t\tVSL8\tVAD\t\t\t\t# AGAIN THIS SECTION ROUNDS.  TWO VECTORS\n\t\t\tAGSRND1\t\t\t\t# ARE ADDED TO DEFEAT ALSIGNAG IN THE\n\t\tVAD\tRTB\t\t\t\t# CASE OF A HIGH-ORDER ZERO COUPLED WITH\n\t\t\tAGSRND2\t\t\t\t# A LOW ORDER NEGATIVE PART.\n\t\t\tVECSGNAG\n\t\tLXA,1\n\t\t\tVATT1\n\t\tSXA,1\tLXA,1\n\t\t\tMPAC +1\n\t\t\tVATT1 +2\n\t\tSXA,1\tLXA,1\n\t\t\tMPAC +4\n\t\t\tVATT1 +4\n\t\tSXA,1\tRVQ\n\t\t\tMPAC +6\n\nLAGSLIST\t=\tONE\nV01N14\t\tVN\t0114\nV50N00A\t\tVN\t5000\nV00N25\t\tEQUALS\tOCT31\nV06N16\t\tVN\t0616\nV00N34\t\tEQUALS\t34DEC\nV50N16\t\tVN\t5016\nTSCALE\t\t2DEC\t100 B-10\t\t\t# CSEC TO SEC SCALE FACTOR\n20SEC\t\tDEC\t2000\nRSCALE\t\t2DEC\t3.280839 B-3\t\t\t# METERS TO FEET SCALE FACTOR\nVSCALE\t\t2DEC\t3.280839 E2 B-9\t\t\t# METERS/CS TO FEET/SEC SCALE FACTOR\nAGSRND1\t\t2OCT\t0000060000\n\t\t2OCT\t0000060000\n\t\t2OCT\t0000060000\nAGSRND2\t\t2OCT\t0000037777\n\t\t2OCT\t0000037777\n# Page 210\n\t\t2OCT\t0000037777\n\n\t\tSBANK=\tLOWSUPER\t\t\t# FOR SUBSEQUENT LOW 2CADRS.\n\n"
  },
  {
    "path": "Luminary099/ALARM_AND_ABORT.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tALARM_AND_ABORT.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1381-1385\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\t\t2009-06-05 RSB\tFixed a type.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1381\n# THE FOLLOWING SUBROUTINE MAY BE CALLED TO DISPLAY A NON-ABORTIVE ALARM CONDITION.  IT MAY BE CALLED\n# EITHER IN INTERRUPT OR UNDER EXECUTIVE CONTROL.\n#\n# CALLING SEQUENCE IS AS FOLLOWS:\n#\t\tTC\tALARM\n#\t\tOCT\tAAANN\t\t# ALARM NO. NN IN GENERAL AREA AAA.\n#\t\t\t\t\t# (RETURNS HERE)\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG7\n\t\tBANK\n\n\t\tEBANK=\tFAILREG\n\n\t\tCOUNT*\t$$/ALARM\n\n# ALARM TURNS ON THE PROGRAM ALARM LIGHT, BUT DOES NOT DISPLAY.\n\nALARM\t\tINHINT\n\n\t\tCA\tQ\nALARM2\t\tTS\tALMCADR\n\t\tINDEX\tQ\n\t\tCA\t0\nBORTENT\t\tTS\tL\n\nPRIOENT\t\tCA\tBBANK\n +1\t\tEXTEND\n\t\tROR\tSUPERBNK\t# ADD SUPER BITS.\n\t\tTS\tALMCADR +1\n\nLARMENT\t\tCA\tQ\t\t# STORE RETURN FOR ALARM\n\t\tTS\tITEMP1\n\nCHKFAIL1\tCCS\tFAILREG\t\t# IS ANYTHING IN FAILREG\n\t\tTCF\tCHKFAIL2\t# YES TRY NEXT REG\n\t\tLXCH\tFAILREG\n\t\tTCF\tPROGLARM\t# TURN ALARM LIGHT ON FOR FIRST ALARM\n\nCHKFAIL2\tCCS\tFAILREG +1\n\t\tTCF\tFAIL3\n\t\tLXCH\tFAILREG +1\n\t\tTCF\tMULTEXIT\n\nFAIL3\t\tCA\tFAILREG +2\n\t\tMASK\tPOSMAX\n\t\tCCS\tA\n\t\tTCF\tMULTFAIL\n\t\tLXCH\tFAILREG +2\n\t\tTCF\tMULTEXIT\n\n# Page 1382\n\nPROGLARM\tCS\tDSPTAB +11D\n\t\tMASK\tOCT40400\n\t\tADS\tDSPTAB +11D\n\n\nMULTEXIT\tXCH\tITEMP1\t\t# OBTAIN RETURN ADDRESS IN A\n\t\tRELINT\n\t\tINDEX\tA\n\t\tTC\t1\n\nMULTFAIL\tCA\tL\n\t\tAD\tBIT15\n\t\tTS\tFAILREG +2\n\n\t\tTCF\tMULTEXIT\n\n# PRIOLARM DISPLAYS V05N09 VIA PRIODSPR WITH 3 RETURNS TO THE USER FROM THE ASTRONAUT AT CALL LOC +1,+2,+3 AND\n# AN IMMEDIATE RETURN TO THE USER AT CALL LOC +4.  EXAMPLE FOLLOWS,\n#\t\tCAF\tOCTXX\t\t# ALARM CODE\n#\t\tTC\tBANKCALL\n#\t\tCADR\tPRIOLARM\n#\t\t...\t...\n#\t\t...\t...\n#\t\t...\t...\t\t# ASTRONAUT RETURN\n#\t\tTC\tPHASCHNG\t# IMMEDIATE RETURN TO USER.  RESTART\n#\t\tOCT\tX.1\t\t# PHASE CHANGE FOR PRIO DISPLAY\n\n\t\tBANK\t10\n\t\tSETLOC\tDISPLAYS\n\t\tBANK\n\n\t\tCOUNT*\t$$/DSPLA\nPRIOLARM\tINHINT\t\t\t# * * * KEEP IN DISPLAY ROUTINES BANK\n\t\tTS\tL\t\t# SAVE ALARM CODE\n\n\t\tCA\tBUF2\t\t# 2 CADR OF PRIOLARM USER\n\t\tTS\tALMCADR\n\t\tCA\tBUF2 +1\n\t\tTC\tPRIOENT +1\t# * LEAVE L ALONE\n-2SEC\t\tDEC\t-200\t\t# *** DONT MOVE\n\t\tCAF\tV05N09\n\t\tTCF\tPRIODSPR\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG7\n\t\tBANK\n\n\t\tCOUNT*\t$$/ALARM\nBAILOUT\t\tINHINT\n\t\tCA\tQ\n# Page 1383\n\t\tTS\tALMCADR\n\n\t\tINDEX\tQ\n\t\tCAF\t0\n\t\tTC\tBORTENT\nOCT40400\tOCT\t40400\n\n\t\tINHINT\nWHIMPER\t\tCA\tTWO\n\t\tAD\tZ\n\t\tTS\tBRUPT\n\t\tRESUME\n\t\tTC\tPOSTJUMP\t# RESUME SENDS CONTROL HERE\n\t\tCADR\tENEMA\nPOODOO\t\tINHINT\n\t\tCA\tQ\nABORT2\t\tTS\tALMCADR\n\t\tINDEX\tQ\n\t\tCAF\t0\n\t\tTC\tBORTENT\nOCT77770\tOCT\t77770\t\t# DON'T MOVE\n\n\t\tCAF\tOCT35\t\t# 4.35SPOT FOR GOPOODOO\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE4\nGOPOODOO\tINHINT\n\t\tTC\tBANKCALL\t# RESET STATEFLG, REINTFLG, AND NODOFLAG.\n\t\tCADR\tFLAGS\n\t\tCA\tFLAGWRD7\t# IS SERVICER CURRENTLY IN OPERATION?\n\t\tMASK\tV37FLBIT\n\t\tCCS\tA\n\t\tTCF\tSTRTIDLE\n\t\tTC\tBANKCALL\t# TERMINATE GRPS 1, 3, 5, AND 6\n\t\tCADR\tV37KLEAN\n\t\tTC\tBANKCALL\t# TERMINATE GRPS 2, 4, 1, 3, 5, AND 6\n\t\tCADR\tMR.KLEAN\t#\t(I.E., GRP 4 LAST)\n\t\tTCF\tWHIMPER\nSTRTIDLE\tCAF\tBBSERVDL\n\t\tTC\tSUPERSW\n\t\tTC\tBANKCALL\t# PUT SERVICER INTO ITS \"GROUND\" STATE\n\t\tCADR\tSERVIDLE\t# AND PROCED TO GOTOPOOH.\nCCSHOLE\t\tINHINT\n\t\tCA\tQ\n\t\tTC\tABORT2\nOCT1103\t\tOCT\t1103\nCURTAINS\tINHINT\n\t\tCA\tQ\n\t\tTC\tALARM2\nOCT217\t\tOCT\t00217\n# Page 1384\n\t\tTC\tALMCADR\t\t# RETURN TO USER\n\nBAILOUT1\tINHINT\n\t\tDXCH\tALMCADR\n\t\tCAF\tADR40400\nBOTHABRT\tTS\tITEMP1\n\t\tINDEX\tQ\n\t\tCAF\t0\n\t\tTS\tL\n\t\tTCF\tCHKFAIL1\nPOODOO1\t\tINHINT\n\t\tDXCH\tALMCADR\n\t\tCAF\tADR77770\n\t\tTCF\tBOTHABRT\n\nALARM1\t\tINHINT\n\t\tDXCH\tALMCADR\nALMNCADR\tINHINT\n\t\tINDEX\tQ\n\t\tCA\t0\n\t\tTS\tL\n\t\tTCF\tLARMENT\n\nADR77770\tTCF\tOCT77770\nADR40400\tTCF\tOCT40400\nDOALARM\t\tEQUALS\tENDOFJOB\n\t\tEBANK=\tDVCNTR\nBBSERVDL\tBBCON\tSERVIDLE\n\n# CALLING SEQUENCE FOR VARALARM\n#\t\tCAF\t(ALARM)\n#\t\tTC\tVARALARM\n#\n# VARALARM TURNS ON PROGRAM ALARM LIGHT BUT DOES NOT DISPLAY\n\nVARALARM\tINHINT\n\n\t\tTS\tL\t\t# SAVE USERS ALARM CODE\n\n\t\tCA\tQ\t\t# SAVE USERS Q\n\t\tTS\tALMCADR\n\n\t\tTC\tPRIOENT\nOCT14\t\tOCT\t14\t\t# DONT MOVE\n\n\t\tTC\tALMCADR\t\t# RETURN TO USER\n\nABORT\t\tEQUALS\tWHIMPER\n\t\tBANK\t13\n\t\tSETLOC\tABTFLGS\n\t\tBANK\n# Page 1385\n\t\tCOUNT*\t$$/ALARM\n\nFLAGS\t\tCS\tSTATEBIT\n\t\tMASK\tFLAGWRD3\n\t\tTS\tFLAGWRD3\n\t\tCS\tREINTBIT\n\t\tMASK\tFLGWRD10\n\t\tTS\tFLGWRD10\n\t\tCS\tNODOBIT\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\n\t\tTC\tQ\n\n"
  },
  {
    "path": "Luminary099/AOSTASK_AND_AOSJOB.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tAOSTASK_AND_AOSJOB.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1485-1506\n# Mod history:\t2009-05-27 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-05 RSB\tCorrected a memory-bank error type.\n#\t\t2009-06-07 RSB\tCorrected a typo.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1485\n# PROGRAM NAME:\t\t1/ACCS\n# PROGRAM WRITTEN BY: \tBOB COVELLI AND MIKE HOUSTON\n# LAST MODIFICATION:\tFEB. 14, 1969 BY G. KALAN\n#\n# PROGRAM DESCRIPTION:\n#\t1/ACCS PROVIDES THE INTERFACE BETWEEN THE GUIDANCE PROGRAMS AND THE DIGITAL AUTOPILOT.  WHENEVER THERE IS A\n# \tCHANGE IN THE MASS OF THE VEHICLE, IN THE DEADBAND SELECTED, IN THE VEHICLE CONFIGURATION (ASCENT-DESCENT-\n#\tDOCKED), AND DURING A FRESH START OR A RESTART, 1/ACCS IS CALLED TO COMMUNICATE THE DATA CHANGES TO THE DAP.\n#\n# \tTHE INPUTS TO 1/ACCS ARE MASS, ACCELERATION (ABDELV), DEADBAND (DB), OFFSET ACCELERATIONS (AOSQ AND AOSR),\n# \tSTAGE VERIFY BIT (CHAN30, BIT2), DOCKED BIT (DAPBOOLS, BIT13), DRIFT BIT (DAPBOOLS, BIT8), USEQRJTS (DAPBOOLS,\n# \tBIT14), AND SURFACE FLAG (FLAGWRDB, BIT8), AND CH5MASK.\n#\n#\t1/ACCS COMPUTES THE JET ACCELERATIONS (1JACC, 1JACCQ, 1JACCR) AS FUNCTIONS OF MASS.  1JACCU AND 1JACCV ARE\n#\tFORMED BY RESOLVING 1JACCQ AND 1JACCR.  IN THE DESCENT CASE, THE DESCENT ENGINE MOMENT ARM (L, PVT-CG) IS ALSO\n# \tCOMPUTED AS A FUNCTION OF MASS.  THE RATE OF CHANGE OF ACCELERATION DUE TO ROTATION OF THE GIMBAL (ACCDOTQ,\n#\tACCDOTR) IS ALSO COMPUTED IN THE DESCENT CASE.\n#\n#\tAFTER THE ABOVE COMPUTATIONS, THE PROGRAM 1/ACCONT COMPUTES THE RECIPROCAL NET ACCELERATIONS ABOUT THE P, U,\n# \tAND V AXES (2 JETS FOR P-AXIS, BOTH 1 AND 2 JETS FOR U AND V AXES), AND THE RECIPROCAL COAST ACCELERATIONS ABOUT\n# \tTHE P, U, AND V AXES.  THE ACCELERATION FUNCTIONS (ACCFCTZ1 AND ACCFCTZ5) ARE ALSO COMPUTED FOR THESE AXES.  THE\n# \tFIRE AND COAST DEADBANDS AND AXISDIST ARE COMPUTED FOR EACH AXIS.  FLAT AND ZONE3LIM, THE WIDTH AND HEIGHT OF THE\n# \tMINIMUM IMPULSE ZONE, ARE COMPUTED.  1/ACCONT ALSO SETS ACCSWU AND ACCSWV, WHICH INDICATE WHEN 1 JET ACCELERATION\n#\tIS NOT SUFFICIENT TO PRODUCE MINIMUM ACCELERATION.  AT THE COMPLETION OF 1/ACCS, THE ACCSOKAY BIT IS SET.\n#\n# SUBROUTINES CALLED:\n#\tTIMEGMBL\n#\tMAKECADR\n#\tROT45DEG\n#\n# CALLING SEQUENCE:\n#\t\tTC\tBANKCALL\t# (1/ACCS MUST BE CALLED BY BANKCALL)\n#\t\tCADR\t1/ACCS\n#\n# NORMAL EXIT:\tVIA BANKJUMP\n#\n# ALARM AND EXIT MODES:  NONE\n#\n# INPUT/OUTPUT:  SEE PROGRAM DESCRIPTION.\n#\n# DEBRIS:\n#\tALL OF THE EXECUTIVE TEMPORARY REGISTERS, EXCEPT FIXLOC AND OVFIND, AND THE CORE SET AREA FROM MPAC TO BANKSET.\n#\n# RESTRICTIONS:\n#\t1/ACCS MUST BE CALLED BY BANKCALL\n#\tEBANK IS SET TO 6, BUT NOT RESTORED.\n# Page 1486\n\n\t\tBANK\t20\n\t\tSETLOC\tDAPS3\n\t\tBANK\n\n\t\tCOUNT*\t$$/DAPAO\n\n\t\tEBANK=\tAOSQ\n\n# ENTRY IS THROUGH 1/ACCJOB OR 1/ACCSET WHEN 1/ACCS IS TO BE DONE AS A SEPARATE NOVAC JOB.\n# IT IS POSSIBLE FOR MORE THAN ONE OF THESE JOBS TO BE SET UP CONCURRENTLY.  HOWEVER, SINCE THERE IS NO CHECK OF\n# NEWJOB, A SECOND MANIFESTATION CANNOT BE STARTED UNTIL THE FIRST IS COMPLETED.\n\n1/ACCSET\tCAF\tZERO\t\t# ENTRY FROM FRESH START/RESTART CODING.\n\t\tTS\tAOSQ\t\t#\tNULL THE OFFSET ESTIMATES FOR 1/ACCS.\n\t\tTS\tAOSR\n\t\tTS\tALPHAQ\t\t#\tNULL THE OFFSET ESTIMATES FOR DOWNLIST\n\t\tTS\tALPHAR\n\n1/ACCJOB\tTC\tBANKCALL\t# 1/ACCS ASSUMES ENTRY VIA BANKCALL.\n\t\tCADR\t1/ACCS \t+2\t# SKIP EBANK SETTING.\n\n\t\tTC\tENDOFJOB\n\n1/ACCS\t\tCA\tEBANK6\t\t# ***** EBANK SET BUT NOT RESTORED *****\n\t\tTS\tEBANK\n\n\t\tTC\tMAKECADR\t# SAVE RETURN SO THAT BUF2 MAY BE USED\n\t\tTS\tACCRETRN\n\n# DETERMINE MASS OF THE LEM.\n\n\t\tCA\tDAPBOOLS\t# IS THE CSM DOCKED\n\t\tMASK\tCSMDOCKD\n\t\tTS\tDOCKTEMP\t# STORE RECORD OF STATE IN TEMP (MPAC +3).\n\t\tCCS\tA\n\t\tCS\tCSMMASS\t\t#\tDOCKED:  LEMMAS = MASS - CSMMASS\n\t\tAD\tMASS\t\t#\tLEM ALONE:  LEMMASS = MASS\n\t\tTS\tLEMMASS\n\n# ON THE BASIS OF APSFLAG:\n#\tSET THE P-AXIS RATE COMMAND LIMIT FOR 2-JET/2-JET CONTROL\n#\tSET MPAC, WHICH INDICATES THE PROPER SET OF COEFFICIENTS FOR THE LEM-ALONE F(MASS) CALCULATIONS\n#\tENSURE THAT THE LEM MASS VALUE IS WITHIN THE ACCEPTABLE RANGE\n\n\t\tINHINT\n\t\tCAE\tFLGWRD10\t# DETERMINE WHETHER STAGED.\n\t\tMASK\tAPSFLBIT\n\t\tEXTEND\n\t\tBZF\tDPSFLITE\n# Page 1487\n\t\tCS\tPOSMAX\t\t# ASCENT (OR ON LUNAR SURFACE)\n\t\tTS\t-2JETLIM\t# ALWAYS 2 JETS FOR P-AXIS RATE COMMAND\n\t\tCAF\tOCT14\t\t# INITIALIZE INDEX AT 12.\n\t\tTS\tMPAC\n\t\tCS\tLEMMASS\t\t# CHECK IF MASS TOO HIGH.  CATCH STAGING.\n\t\tAD\tHIASCENT\n\t\tEXTEND\n\t\tBZMF\tMASSFIX\n\t\tCS\tLEMMASS\t\t# CHECK IF MASS TOO LOW.  THIS LIMITS THE\n\t\tAD\tLOASCENT\t#\tDECREMENTING BY MASSMON.\n\t\tEXTEND\n\t\tBZMF\tF(MASS)\n\nMASSFIX\t\tADS\tLEMMASS\t\t# STORE THE VIOLATED LIMIT AS LEMMASS.\n\t\tZL\t\t\t#\tALSO CORRECT TOTAL MASS, ZEROING THE\n\t\tCCS\tDOCKTEMP\t#\tLOW-ORDER WORD.\n\t\tCAE\tCSMMASS\t\t#\t\tDOCKED:  MASS = LEMMASS + CSMMASS\n\t\tAD\tLEMMASS\t\t#\t\tLEM ALONE:  MASS = LEMMASS\n\t\tDXCH\tMASS\n\t\tTCF\tF(MASS)\n\nDPSFLITE\tCS\tBIT10\t\t# FOUR JETS FOR P-AXIS RATE COMMAND ERRORS\n\t\tTS\t-2JETLIM\t#\tEXCEEDING 1.4 DEG/SEC (SCALED AT 45)\n\t\tCAF\tSIX\t\t# INITIALIZE INDEX AT 6.\n\t\tTS\tMPAC\n\t\tCS\tLEMMASS\t\t# CHECK IF MASS TOO HIGH.  SHOULD NEVER\n\t\tAD\tHIDESCNT\t# \tOCCUR EXCEPT PERHAPS BEFORE THE PAD\n\t\tEXTEND\t\t\t#\tLOAD IS DONE.\n\t\tBZMF\tMASSFIX\n\t\tCS\tLEMMASS\t\t# CHECK IF MASS TOO LOW.  THIS LIMITS THE\n\t\tAD\tLODESCNT\t#\tDECREMENTING BY MASSMON.\n\t\tAD\tHIASCENT\n\t\tEXTEND\n\t\tBZMF\tF(MASS)\n\t\tTCF\tMASSFIX\n\n# COMPUTATION OF FUNCTIONS OF MASS\n\nF(MASS)\t\tRELINT\n\t\tCCS\tDOCKTEMP\n\t\tTCF\tDOCKED\t\t# DOCKED:  USE SEPARATE COMPUTATION.\n\t\tCA\tTWO\nSTCTR\t\tTS\tMPAC \t+1\t# J=2,1,0 FOR 1JACCR,1JACCQ,1JACC\n\n\t\tCS\tTWO\n\t\tADS\tMPAC\t\t# JX=10,8,6 OR 4,2,0 TO INDEX COEFS.\n\nSTCTR1\t\tCAE\tLEMMASS\n\t\tINDEX\tMPAC\n\t\tAD\tINERCONC\n\t\tTS\tMPAC \t+2\t# MASS + C\n# Page 1488\n\t\tEXTEND\n\t\tINDEX\tMPAC\n\t\tDCA\tINERCONA\n\t\tEXTEND\n\t\tDV\tMPAC \t+2\n\t\tINDEX\tMPAC\n\t\tAD\tINERCONB\n\t\tINDEX\tMPAC \t+1\t# 1JACC(J)=A(JX)/(MASS+C(JX) + B(JX)\n\t\tTS\t1JACC\t\t# 1JACC(-1)=L,PVT-CG  SCALED AT 8 FEET\n\n\t\tCCS\tMPAC \t+1\n\t\tTCF\tSTCTR\n\t\tTCF\tCOMMEQS\n\t\tTCF\tLRESC\n\n# COEFFQ AND COEFFR ARE COMPUTED IN THIS SECTION.  THEY ARE USED TO RESOLVE Q-R COMPONENTS INTO NON-ORTHOGONAL\n# U AND V COMPONENTS (SEE ROT-TOUV SECTION).\n\nCOMMEQS\t\tCS\t1JACCR\n\t\tAD\t1JACCQ\n\t\tEXTEND\n\t\tBZMF\tBIGIQ\n\t\tEXTEND\t\t\t# EPSILON IS A MEASURE OF COUPLING AND IS\n\t\tDV\t1JACCQ\t\t# DEFINED=1-IQ/IR FOR IR GREATER THAN IQ.\n\t\tTS\tEPSILON\t\t# THE COMPUTED EXPRESSION IS EQUIVALENT\n\t\tAD\t-EPSMAX\n\t\tEXTEND\n\t\tBZMF\tGOODEPS1\n\t\tCS\t-EPSMAX\n\t\tTS\tEPSILON\t\t# EPSILON IS LIMITED TO A MAX. OF .42265\nGOODEPS1\tCA\tEPSILON\n\t\tEXTEND\n\t\tMP\t0.35356\n\t\tAD\t.7071\n\t\tTS\tCOEFFR\t\t# IN THIS CASE WHERE IR IS GREATER THAN\n\t\tCS\tPOSMAX\t\t# IQ, COEFFQ=-.707(1+.5EPSILON)(1-EPSILON)\n\t\tAD\tEPSILON\t\t# AND COEFFR=.707(1+.5EPSILON)\n\t\tEXTEND\n\t\tMP\tCOEFFR\n\t\tTS\tCOEFFQ\n\t\tTCF\tJACCUV\nBIGIQ\t\tEXTEND\t\t\t# EPSILON IS DEFINED AS 1-IR/IQ FOR IQ\n\t\tDV\t1JACCR\t\t# GREATER THAN IR.  -EPSILON IS COMPUTED\n\t\tTS\t-EPSILON\t# RATHER THAN EPSILON FOR CONVENIENCE\n\t\tCS\t-EPSILON\n\t\tAD\t-EPSMAX\n\t\tEXTEND\n\t\tBZMF\tGOODEPS2\n\t\tCA\t-EPSMAX\n\t\tTS\t-EPSILON\t# EPSILON IS LIMITED TO A MAX. OF .42265\n# Page 1489\nGOODEPS2\tCA\t-EPSILON\n\t\tEXTEND\n\t\tMP\t0.35356\n\t\tAD\t-.7071\n\t\tTS\tCOEFFQ\t\t# IN THIS CASE WHERE IQ IS GREATER THAN\n\t\tCS\t-EPSILON\t# IR, COEFFQ=-.707(1+.5EPSILON) AND\n\t\tAD\tNEGMAX\t\t# COEFFR=.707(1+.5EPSILON)(1-EPSILON)\n\t\tEXTEND\n\t\tMP\tCOEFFQ\n\t\tTS\tCOEFFR\nJACCUV\t\tCS\tCOEFFQ\n\t\tEXTEND\n\t\tMP\t1JACCQ\t\t# 1JACCQ IS SCALED AT PI/4\n\t\tTS\t1JACCU\t\t# 1JACCU USED AS TEMPORARY STORAGE\n\t\tCA\tCOEFFR\n\t\tEXTEND\n\t\tMP\t1JACCR\n\t\tAD\t1JACCU\n\t\tEXTEND\n\t\tMP\tBIT14\t\t# SCALING CHANGED FROM PI/4 TO PI/2\n\t\tTS\t1JACCU\n\t\tTS\t1JACCV\t\t# SCALED AT PI/2 RADIANS/SEC(2)\n\t\tCCS\tMPAC\t\t# COMPUTE L,PVT-CG IF IN DESCENT\n\t\tCAF\tZERO\t\t# ZERO SWITCHES AND GO TO 1/ACCONT IN\n\t\tTS\tALLOWGTS\t#\tASCENT\n\t\tTCF\t1/ACCONT -1\n\n\t\tCS\tTWO\n\t\tTS\tMPAC\n\t\tCS\tONE\n\t\tTS\tMPAC \t+1\n\t\tTCF\tSTCTR1\n\n# THIS SECTION COMPUTES THE RATE OF CHANGE OF ACCELERATION DUE TO THE ROTATION OF THE GIMBALS.  THE EQUATION\n# IMPLEMENTED IN BOTH THE Y-X PLANE AND THE Z-X PLANE IS -- D(ALPHA)/DT = TL/I*D(DELTA)/DT, WHERE\n#\tT = ENGINE THRUST FORCE\n#\tL = PIVOT TO CG DISTANCE OF ENGINE\n#\tI = MOMENT OF INERTIA\n\nLRESC\t\tCAE\tABDELV\t\t# SCALED AT 2(13) CM/SEC(2)\n\t\tEXTEND\n\t\tMP\tMASS\t\t# SCALED AT B+16 KGS\n\t\tTC\tDVOVSUB\t\t# GET QUOTIENT WITH OVERFLOW PROTECTION\n\t\tADRES\tGFACTM\n\n# MASS IS DIVIDED BY ACCELERATION OF GRAVITY IN ORDER TO MATCH THE UNITS OF IXX,IYY,IZZ, WHICH ARE SLUG-FT(2).\n# THE RATIO OF ACCELERATION FROM PIPAS TO ACCELERATION OF GRAVITY IS THE SAME IN METRIC OR ENGINEERING UNITS, SO\n# THAT IS UNCONVERTED.  2.20462 CONVERTS KG. TO LB.  NOW T IN IN A SCALED AT 2(14).\n\n\t\tEXTEND\n\t\tMP\tL,PVT-CG\t# SCALED AT 8 FEET.\n# Page 1490\n\t\tINHINT\n\t\tTS\tMPAC\n\t\tEXTEND\n\t\tMP\t1JACCR\n\t\tTC\tDVOVSUB\t\t# GET QUOTIENT WITH OVERFLOW PROTECTION\n\t\tADRES\tTORKJET1\n\n\t\tTS\tACCDOTR\t\t# SCALED AT PI/2(7)\n\t\tCA\tMPAC\n\t\tEXTEND\n\t\tMP\t1JACCQ\n\t\tTC\tDVOVSUB\t\t# GET QUOTIENT WITH OVERFLOW PROTECTION\n\t\tADRES\tTORKJET1\n\nSPSCONT\t\tTS\tACCDOTQ\t\t# SCALED AT PI/2(7)\n\t\tEXTEND\n\t\tMP\tDGBF\t\t# .3ACCDOTQ SCALED AT PI/2(8)\n\t\tTS\tKQ\n\t\tCAE\tACCDOTR\t\t# .3ACCDOTR AT PI/2(8)\n\t\tEXTEND\n\t\tMP\tDGBF\n\t\tTS\tKRDAP\n\t\tEXTEND\t\t\t# NOW COMPUTE QACCDOT, RACCDOT, THE SIGNED\n\t\tREAD\tCHAN12\t\t# JERK TERMS.  STORE CHANNEL 12. WITH GIMBAL\n\t\tTS\tMPAC \t+1\t# DRIVE BITS 9 THROUGH 12 SET LOOP\n\t\tCAF\tBIT2\t\t# INDEX TO COMPUTE RACCDOT, THEN QACCDOT.\n\t\tTCF\tLOOP3\n\t\tCAF\tZERO\t\t# ACCDOTQ AND ACCDOTR ARE NOT NEGATIVE,\nLOOP3\t\tTS\tMPAC\t\t# BECAUSE THEY ARE MAGNITUDES\n\t\tCA\tMPAC \t+1\n\t\tINDEX\tMPAC\t\t# MASK CHANNEL IMAGE FOR ANY GIMBAL MOTION\n\t\tMASK\tGIMBLBTS\n\t\tEXTEND\n\t\tBZF\tZACCDOT\t\t# IF NONE, Q(R)ACCDOT IS ZERO.\n\t\tCA\tMPAC \t+1\n\t\tINDEX\tMPAC\t\t# GIMBAL IS MOVING.  IS ROTATION POSITIVE.\n\t\tMASK\tGIMBLBTS +1\n\t\tEXTEND\n\t\tBZF\tFRSTZERO\t# IF NOT POSITIVE, BRANCH\n\t\tINDEX\tMPAC\t\t# POSITIVE ROTATION, NEGATIVE Q(R)ACCDOT.\n\t\tCS\tACCDOTQ\n\t\tTCF\tSTACCDOT\nFRSTZERO\tINDEX\tMPAC\t\t# NEGATIVE ROTATION, POSITIVE Q(R)ACCDOT.\n\t\tCA\tACCDOTQ\n\t\tTCF\tSTACCDOT\nZACCDOT\t\tCAF\tZERO\nSTACCDOT\tINDEX\tMPAC\n\t\tTS\tQACCDOT\t\t# STORE Q(R)ACCDOT.\n\t\tCCS\tMPAC\n\t\tTCF\tLOOP3 \t-1\t# NOW DO QACCDOT.\n# Page 1491\n\t\tCS\tDAPBOOLS\t# IS GIMBAL USABLE?\n\t\tMASK\tUSEQRJTS\n\t\tEXTEND\n\t\tBZF\tDOWNGTS\t\t# NO. BE SURE THE GIMBAL SWITCHES ARE DOWN\n\t\tCS\tT5ADR\t\t# YES.  IS THE DAP RUNNINT?\n\t\tAD\tPAXISADR\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tDOWNGTS\t\t# NO. BE SURE THE GIMBAL SWITCHES ARE DOWN\n\t\tCCS\tINGTS\t\t# YES.  IS GTS IN CONTROL?\n\t\tTCF\tDOCKTEST\t# YES.  PROCEED WITH 1/ACCS.\n\t\tTC\tIBNKCALL\t# NO. NULL OFFSET AND FIND ALLOWGTS\n\t\tCADR\tTIMEGMBL\n\nDOCKTEST\tCCS\tDOCKTEMP\t# BYPASS 1/ACCONT WHEN DOCKED.\n\t\tTCF\t1/ACCRET\n\t\tTCF\t1/ACCONT\n\n# Page 1492\n# SUBROUTINE:\tDVOVSUB\n# AUTHOR:\tC. WORK, MOD 0, 12 JUNE 68\n# PURPOSE:\tTHIS SUBROUTINE PROVIDES A SINGLE-PRECISION MACHINE LANGUAGE DIVISION OPERATION WHICH RETURNS\n#\t\t(1) THE QUOTIENT, IF THE DIVISION WAS NORMAL.\n#\t\t(2) NEGMAX, IF THE QUOTIENT WAS IMPROPER AND NEGATIVE.\n#\t\t(3) POSMAX, IF THE QUOTIENT WAS IMPROPER AND POSITIVE OR IF THERE WAS A ZERO DIVISOR.\n#\t\tTHE CALLING PROGRAM IS PRESUMED TO BE A JOB IN THE F BANK WHICH CONTAINS DVOVSUB.  E BANK MUST BE 6.\n#\t\tTHE DIVISOR FOR THIS ROUTINE MAY BE IN EITHER FIXED OR ERASABLE STORAGE.  SIGN AGREEMENT IS\n#\t\tASSUMED BETWEEN THE TWO HALVES OF THE DIVIDEND.  (THIS IS CERTAIN IF THE A AND L REGISTERS ARE THE\n#\t\tRESULT OF A MULTIPLICATION OPERATION.)\n# CALL SEQUENCE:\tL\tTC\tDVOVSUB\n#\t\t\tL +1\tADRES\t(DIVISOR)\n#\t\t\tL +2\tRETURN HERE, WITH RESULT IN A,L\n# INPUT:\tDIVIDEND IN A,L (SIGN AGREEMENT ASSUMED), DIVISOR IN LOCATION DESIGNATED BY \"ADRES\".\n#\t\tDIVISOR MAY BE IN THE DVOVSUB FBANK,FIXED-FIXED FBANK,EBANK 6, OR UNSWITCHED ERASABLE.\n# OUTPUT:\tQUOTIENT AND REMAINDER, OR POSMAX (NEGMAX), WHICHEVER IS APPROPRIATE.\n# DEBRIS:\tSCRATCHX,SCRATCHY,SCRATCHZ,A,L\t(NOTE: SCRATCHX,Y,Z ARE EQUATED TO MPAC +4,+5, AND +6.)\n# ABORTS OR ALARMS:  NONE\n# EXITS:\tTO THE CALL POINT +2.\n# SUBROUTINES CALLED:  NONE.\n\nDVOVSUB\t\tTS\tSCRATCHY\t# SAVE UPPER HALF OF DIVIDEND\n\t\tTS\tSCRATCHX\n\t\tINDEX\tQ\t\t# OBTAIN ADDRESS OF DIVISOR.\n\t\tCA\t0\n\t\tINCR\tQ\t\t# STEP Q FOR PROPER RETURN SEQUENCE.\n\t\tINDEX\tA\n\t\tCA\t0\t\t# PICK UP THE DIVISOR.\n\t\tEXTEND\t\t\t# RETURN POSMAX FOR A ZERO DIVISOR.\n\t\tBZF\tMAXPLUS\n\n\t\tTS\tSCRATCHZ\t# STORE DIVISOR.\n\n\t\tCCS\tA\t\t# GET ABS(DIVISOR) IN THE A REGISTER.\n\t\tAD\tBIT1\n\t\tTCF\tZEROPLUS\n\t\tAD\tBIT1\n\nZEROPLUS\tXCH\tSCRATCHY\t# STORE ABS(DIVISOR).  PICK UP TOP HALF OF\n\t\tEXTEND\t\t\t# DIVIDEND.\n\t\tBZMF\tGOODNEG\t\t# GET -ABS(DIVIDEND)\n# Page 1493\n\t\tCS\tA\n\nGOODNEG\t\tAD\tSCRATCHY\t# ABS(DIVISOR) - ABS(DIVIDEND)\n\t\tEXTEND\n\t\tBZMF\tMAKEMAX\t\t# BRANCH IF DIVISION IS NOT PROPER.\n\n\t\tCA\tSCRATCHX\t# RE-ESTABLISH THE DIVIDEND\n\t\tEXTEND\n\t\tDV\tSCRATCHZ\t# QUOTIENT IN THE A, REMAINDER IN L.\n\t\tTC\tQ\t\t# RETURN TO CALLER.\n\nMAKEMAX\t\tCCS\tSCRATCHX\t# DETERMINE THE SIGN OF THE QUOTIENT.\n\t\tCCS\tSCRATCHZ\t# SCRATCHX AND SCRATCHZ ARE NON-ZERO.\n\t\tTCF\tMAXPLUS\n\t\tCCS\tSCRATCHZ\n\t\tCAF\tNEGMAX\t\t# +,- OR -,+\n\t\tTC\tQ\nMAXPLUS\t\tCAF\tPOSMAX\t\t# -,- OR +,+\n\t\tTC\tQ\n\n# COEFFICIENTS FOR THE JET ACCELERATION CURVE FITS\n# THE CURVE FITS ARE OF THE FORM --\n#\n#\t1JACC = A/(MASS + C) + B\n#\n# A IS SCALED AT PI/4 RAD/SEC**2 B+16KG, B IS SCALED AT PI/4 RAD/SEC**2, AND C IS SCALED AT B +16 KG.\n#\n# THE CURVE FIT FOR L,PVT-CG IS OF THE SAME FORM, EXCEPT THAT A IS SCALED AT 8 FT B+16 KG, B IS SCALED AT 8 FT,\n# AND C IS SCALED AT B+16 KG.\n\n\t\t2DEC\t+.0410511917\t# L\t\tA\t\tDESCENT\n\nINERCONA\t2DEC\t+.0059347674\t# 1JACCP\tA\t\tDESCENT\n\n\t\t2DEC\t+.0014979264\t# 1JACCQ\tA\t\tDESCENT\n\n\t\t2DEC\t+.0010451889\t# 1JACCR\tA\t\tDESCENT\n\n\t\t2DEC\t+.0065443852\t# 1JACCP\tA\t\tASCENT\n\n\t\t2DEC\t+.0035784354\t# 1JACCQ\tA\t\tASCENT\n\n\t\t2DEC\t+.0056946631\t# 1JACCR\tA\t\tASCENT\n\n\t\tDEC\t+.155044\t# L\t\tB\t\tDESCENT\n\t\tDEC\t-.025233\t# L\t\tC\t\tDESCENT\n# Page 1494\nINERCONB\tDEC\t+.002989\t# 1JACCP\tB\t\tDESCENT\nINERCONC\tDEC\t+.008721\t# 1JACCP\tC\t\tDESCENT\n\t\tDEC\t+.018791\t# 1JACCQ\tB\t\tDESCENT\n\t\tDEC\t-.068163\t# 1JACCQ\tC\t\tDESCENT\n\t\tDEC\t+.021345\t# 1JACCR\tB\t\tDESCENT\n\t\tDEC\t-.066027\t# 1JACCR\tC\t\tDESCENT\n\n\t\tDEC\t+.000032\t# 1JACCP\tB\t\tASCENT\n\t\tDEC\t-.006923\t# 1JACCP\tC\t\tASCENT\n\t\tDEC\t+.162862\t# 1JACCQ\tB\t\tASCENT\n\t\tDEC\t+.002588\t# 1JACCQ\tC\t\tASCENT\n\t\tDEC\t+.009312\t# 1JACCR\tB\t\tASCENT\n\t\tDEC\t-.023608\t# 1JACCR\tC\t\tASCENT\n\nGIMBLBTS\tOCTAL\t01400\n\t\tOCTAL\t01000\n\t\tOCTAL\t06000\n\t\tOCTAL\t04000\nDGBF\t\tDEC\t0.6\t\t# .3 SCALED AT 1/2\n0.35356\t\tDEC\t0.35356\t\t# .70711 SCALED AT 2\nGFACTM\t\tOCT\t337\t\t# 979.24/2.20462 AT B+15\n.7071\t\tDEC\t.70711\n-.7071\t\tDEC\t-.70711\n-EPSMAX\t\tDEC\t-.42265\n\n# CSM-DOCKED INERTIA COMPUTATIONS\n\nDOCKED\t\tCA\tONE\t\t# COEFTR  = 1 FOR INERTIA COEFFICIENTS\nSPSLOOP1\tTS\tCOEFCTR\t\t#         = 7 FOR CG COEFFICIENTS\n\t\tCA\tONE\t\t# MASSCTR = 1 FOR CSM\n\t\tTS\tMASSCTR\t\t#         = 0 FOR LEM\n\n\t\tINDEX\tCOEFCTR\n\t\tCA\tCOEFF \t-1\t# COEFF -1 = C\n\t\tEXTEND\n\t\tMP\tLEMMASS\n\t\tEXTEND\n\t\tMP\tCSMMASS\t\t# LET X = CSMMASS AND Y = LEMMASS\n\n\t\tINDEX\tCOEFCTR\n\t\tAD\tCOEFF\t\t# COEFF = F\n\t\tTS\tMPAC\t\t# MPAC = C X Y + F\n\t\tTCF\t+4\n\nSPSLOOP2\tTS\tMASSCTR\t\t# LOOP TWICE THROUGH HERE TO OBTAIN\n\t\tEXTEND\t\t\t# MPAC = MPAC + (A X +D)X + (B Y +E)Y\n\t\tDIM\tCOEFCTR\t\t#\t\t LOOP #1     LOOP #2\n\t\tINDEX\tCOEFCTR\n\t\tCA\tCOEFF \t+2\t# COEFF +2 = A OR B\n\t\tEXTEND\n# Page 1495\n\t\tINDEX\tMASSCTR\n\t\tMP\tLEMMASS\n\t\tINDEX\tCOEFCTR\n\t\tAD\tCOEFF \t+4\t# COEFF +4 = E OR D\n\t\tEXTEND\n\t\tINDEX\tMASSCTR\n\t\tMP\tLEMMASS\n\t\tADS\tMPAC\n\n\t\tCCS\tMASSCTR\n\t\tTCF\tSPSLOOP2\n\t\tCCS\tCOEFCTR\t\t# IF COEFCTR IS POS, EXIT FROM LOOP WITH\n\t\tTCF\t+7\t\t# CG X DELDOT = MPAC X 4 PI RAD-CM/SEC\nTORQCONS\t2DEC\t0.51443 B-14\t# CORRESPONDS TO 500 LB-FT\n\n\t\tCA\tMPAC\n\t\tTS\tMPAC \t+1\t# INERTIA = (MPAC +1) X 2(38) KG-CM(2)\n\t\tCA\tSEVEN\n\t\tTCF\tSPSLOOP1\n\n\t\tCA\t1JACCCON\t# 1JACC=1JACCCON/MASS\n\t\tZL\n\t\tTC\tDVOVSUB\n\t\tADRES\tMASS\n\t\tTS\t1JACC\t\t# SCALED AT PI/4\n\n\t\tCA\tPOSMAX\t\t# SET INVERSE JET ACCELERATIONS TO POSMAX,\n\t\tTS\t1/ANETP\t\t# WHICH CORRESPONDS TO ACCEL. OF 1.4 D/SS.\n\t\tTS\t1/ANET2 +1\n\t\tTS\t1/ANET2 +2\n\t\tTS\t1/ANET2 +17D\n\t\tTS\t1/ANET2 +18D\n\t\tEXTEND\n\t\tDCA\tTORQCONS\n\t\tEXTEND\n\t\tDV\tMPAC \t+1\n\t\tINHINT\n\t\tTS\t1JACCQ\t\t# SCALED AT PI/4\n\t\tTS\t1JACCR\n\n\t\tCA\t-.7071\n\t\tTS\tCOEFFQ\t\t# COEFFQ AND COEFFR ARE CHOSEN TO MAKE U-\n\t\tCA\t.7071\t\t# AND V-AXES ORTHOGONAL FOR DOCKED CASE\n\t\tTS\tCOEFFR\n\t\tCA\tMASS\t\t# SCALED AT 2(16) KG\n\t\tEXTEND\n\t\tMP\tMPAC\t\t# SCALED AT 4 PI RAD-CM/SEC\n\t\tEXTEND\n\t\tMP\tABDELV\t\t# SCALED AT 2(13) CM/SEC(2)\n\t\tTC\tDVOVSUB\t\t# GET QUOTIENT WITH OVERFLOW PROTECTION\n# Page 1496\n\t\tADRES\tMPAC \t+1\n\n\t\tTS\tACCDOTR\n\t\tTCF\tSPSCONT\t\t# CONTINUE K, KSQ CALCULATIONS\n\n1JACCCON\tOCT\t00167\t\t# SCALED AT PI/4X2(16) RAD/SEC(2)-KG\n\n#                                               2     2\n# COEFFICIENTS FOR CURVE FIT OF THE FORM Z = A X  +B Y  +C X Y +D X +E Y +F\n\nCOEFF\t\tDEC\t.19518\t\t# C  COEFFICIENT OF INERTIA\n\t\tDEC\t-.00529\t\t# F             \"\n\t\tDEC\t-.17670\t\t# B             \"\n\t\tDEC\t-.03709\t\t# A             \"\n\t\tDEC\t.06974\t\t# E             \"\n\t\tDEC\t.02569\t\t# D             \"\n\n\t\tDEC\t.20096\t\t# C  COEFFICIENT OF CG\n\t\tDEC\t.13564\t\t# F          \"\n\t\tDEC\t.75704\t\t# B          \"\n\t\tDEC\t-.37142\t\t# A          \"\n\t\tDEC\t-.63117\t\t# E          \"\n\t\tDEC\t.41179\t\t# D          \"\n\n# ASSIGNMENT OF TEMPORARIES FOR 1/ACCS (EXCLUDING 1/ACCONT)\n# MPAC, MPAC +1, MPAC +2  USED EXPLICITLY\nCOEFCTR \tEQUALS\tMPAC \t+4\nMASSCTR\t\tEQUALS\tMPAC \t+5\nSCRATCHX\tEQUALS\tMPAC \t+4\t# SCRATCH AREA FOR DVOVSUB ROUTINE.\nSCRATCHY\tEQUALS\tSCRATCHX +1\nSCRATCHZ\tEQUALS\tSCRATCHX +2\n\nDOCKTEMP\tEQUALS\tMPAC \t+3\t# RECORD OF CSMDOCKED BIT OF DAPBOOLS\nEPSILON\t\tEQUALS\tMPAC \t+1\n-EPSILON\tEQUALS\tEPSILON\n-.1875\t\tDEC\t-.18750\n\n# Page 1497\n\t\tBANK\t20\n\t\tSETLOC\tDAPS3\n\t\tBANK\n\n\t\tEBANK=\tAOSQ\n\n\t\tCOUNT*\t$$/DAPAO\n\n -1\t\tTS\tINGTS\t\t# ZERO INGTS IN ASCENT\n1/ACCONT\tCA\tDB\t\t# INITIALIZE DBVAL1,2,3\n\t\tEXTEND\n\t\tMP\tBIT13\n\t\tTS\tL\t\t# 0.25 DB\n\t\tAD\tA\n\t\tTS\tDBVAL3\t\t# 0.50 DB\n\t\tCS\tDBVAL1\n\t\tAD\tL\n\t\tTS\tDBVAL2\t\t# -.75 DB\n\nGETAOSUV\tINHINT\n\t\tCAE\tAOSR\t\t# COMPUTE ASOU AND AOSV BY ROTATING\n\t\tTS\tL\t\t#\tAOSQ AND AOSR.\n\t\tCAE\tAOSQ\n\t\tTC\tIBNKCALL\n\t\tCADR\tROT-TOUV\n\t\tDXCH\tAOSU\n\n\t\tRELINT\n\t\tCA\tDAPBOOLS\n\t\tMASK\tDRIFTBIT\t# ZERO DURING ULLAGE AND POWERED FLIGHT.\n\t\tCCS\tA\t\t# IF DRIFTING LIGHT,\n\t\tCA\tONE\t\t# \tSET DRIFTER TO 1\n\t\tTS\tDRIFTER\t\t# SAVE TO TEST FOR DRIFTING FLIGHT LATER\n\t\tAD\tALLOWGTS\t# NON-ZERO IF DRIFT OR GTS NEAR\n\t\tCCS\tA\n\t\tCA\tFLATVAL\t\t# DRIFTING FLIGHT, STORE .8 IN FLAT\n\t\tTS\tFLATEMP\t\t# IN POWERED FLIGHT, STORE ZERO IN FLAT\n\t\tEXTEND\n\t\tBZF\tDOPAXIS\t\t# IF POWERED AND NO GTS, START P AXIS,\n\t\tCCS\tDRIFTER\t\t# OTHERWISE SET ZONE3LIM\n\t\tCA\tZONE3MAX\t# 17.5 MS, SCALED AT 4 SECONDS.\n\t\tTS\tZ3TEM\n\nDOPAXIS\t\tCA\t1JACC\t\t# 1JACC AT PI/4 = 2JACC AT PI/2 =\n\t\t\t\t\t# ANET AT PI/2 = ANET/ACOAST AT 2(6).\n\t\tAD\tBIT9\t\t# 1 + ANET/ACOAST AT 2(6)\n\t\tTS\tFUNTEM\n\n\t\tCA\t1JACC\n# Page 1498\n\t\tTC\tINVERT\n\t\tINHINT\t\t\t# P AXIS DATA MUST BE CONSISTENT\n\t\tTS\t1/ANETP\t\t# SCALED AT 2(7)/PI.\n\t\tTS\t1/ANETP +1\n\n\t\tCS\tBIT9\t\t# -1 AT 2(6)\n\t\tEXTEND\n\t\tMP\t1/ANETP\t\t# -1/ANET AT 2(13)/PI\n\t\tEXTEND\n\t\tDV\tFUNTEM\t\t# -1/(ANET + ANET**2/ACOAST) AT 2(7)/PI\n\t\tTS\tPACCFUN\n\t\tTS\tPACCFUN +1\n\n\t\tCA\t1/.03\t\t# NO AOS FOR P AXIS, ACOAST = AMIN\n\t\tTS\t1/ACOSTP\n\t\tTS\t1/ACOSTP +1\n\t\tRELINT\n\n\t\tZL\n\t\tCCS\tDRIFTER\n\t\tDXCH\tAOSU\t\t# ZERO AOSU,V IF IN DRIFT, JUST TO BE SURE\n\nUAXIS\t\tCA\tZERO\t\t# DO U AXIS COMPUTATIONS\n\t\tTS\tUV\t\t# ZERO FOR U AXIS, ONE FOR V AXIS.\n\nBOTHAXES\tTS\tSIGNAOS\t\t# CODING COMMON TO U,V AXES\n\t\tINDEX\tUV\n\t\tCCS\tAOSU\t\t# PICK UP ABS(AOSU OR AOSV)\n\t\tAD\tONE\t\t# RESTORE TO PROPER VALUE\n\t\tTCF\t+3\t\t# AND LEAVE SIGNAOS AT ZERO\n\t\tAD\tONE\t\t# NEGATIVE, RESTORE TO PROPER VALUE\n\t\tINCR\tSIGNAOS\t\t# AND SET SIGNAOS TO ONE TO SHOW AOS NEG\n\t\tTS\tABSAOS\t\t# SAVE ABS(AOS)\n\t\tCS\tSIGNAOS\n\t\tTS\t-SIGNAOS\t# USED AS AN INDEX\n\n\t\tCA\tDBVAL1\t\t# SET DB1, DB2 TO DBVAL1 (= DB)\n\t\tTS\tDBB1\n\t\tTS\tDBB2\n\n\t\tCA\tABSAOS\t\t# TEST MAGNITUDE OF ABS(AOS)\n\t\tAD\t-.03R/S2\n\t\tEXTEND\n\t\tBZMF\tNOTMUCH\t\t# ABS(AOS) LESS THAN AMIN\nBIGAOS\t\tCCS\tFLATEMP\t\t# AGS(AOS) GREATER THAN AMIN\n\t\tTCF\tSKIPDB1\t\t# I DRIFT OR GTS, DO NOT COMPUTE DB\n\n\t\tCA\tDBVAL1\n\t\tINDEX\t-SIGNAOS\n# Page 1499\n\t\tADS\tDBB2\t\t# DB2(1) = 2 DB\n\t\tINDEX\tSIGNAOS\n\t\tTS\tDBB4\t\t# DB4(3) = 1 DB\n\t\tCA\t-.1875\t\t# -.1875 PI/2 RAD/SEC(2) SCALED AT PI/2\n\t\tAD\tABSAOS\t\t# ABSAOS IS SCALED AT PI/2\n\t\tEXTEND\n\t\tBZMF\t+3\n\t\tCS\tDBVAL3\t\t# -.5 DB\n\t\tTCF\tDBONE\n\t\tCS\tABSAOS\n\t\tDOUBLE\n\t\tDOUBLE\n\t\tAD\tBIT14\n\t\tDOUBLE\t\t\t# 1-8 ABSAOS.  (8 IS 16/PI SCALED AT 2/PI)\n\t\tEXTEND\n\t\tMP\tDB\nDBONE\t\tINDEX\tSIGNAOS\t\t# DB1(2)=(1-8 ABSAOS) DB.  IF ABSAOS IS\n\t\tTS\tDBB1\t\t# GREATER THAN .1875 THEN DB1(2) = -.5 DB\n\t\tCA\tDBVAL2\n\t\tINDEX\t-SIGNAOS\n\t\tTS\tDBB3\t\t# DB3(4) = -.75 DB\n\nSKIPDB1\t\tCA\tABSAOS\t\t# ABS(AOS) GREATER THAN AMIN, SO IT IS\n\t\tEXTEND\n\t\tMP\tBIT12\n\t\tAD\tABSAOS\t\t# (9/8) ABSAOS.\n\t\tTC\tINVERT\t\t# ALL RIGHT TO DIVIDE\n\t\tINDEX\t-SIGNAOS\n\t\tTS\t1/ACOSTT +1\t# 1/ACOASTPOS(NET) = 1/ABS(AOS)\n\t\tCA\t1/.03\n\t\tINDEX\tSIGNAOS\n\t\tTS\t1/ACOSTT\t# 1/ACOASTNEG(POS) = 1/AIN\n\n\t\tCA\tABSAOS\n\t\tAD\t1JACCU\n\t\tAD\t1JACCU\t\t# 2 JACC + ABS(AOS)\n\t\tAD\tBIT9\t\t# MAXIMUM VALUE IN COMPUTATIONS\n\t\tTS\tA\t\t# TEST FOR OVERFLOW\n\t\tTCF\tSKIPDB2\t\t# NO OVERFLOW, DO NORMAL COMPUTATION\n\n\t\tCA\tABSAOS\t\t# RESCALE TO PI TO PREVENT OVERFLOW\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tAD\t1JACCU\t\t# 1 JACC AT PI/2 = 2JACC AT PI\n\t\tTS\tANET\t\t# ANETPOS(NEG) MAX SCALED AT PI =\n\t\t\t\t\t# ANETPOS(NEG) MAX/ACOASTNEG(POS) AT 2(7)\n\t\tAD\tBIT8\t\t# 1 + ANETPOS/ACOASTNEG AT 2(7)\n\t\tXCH\tANET\t\t# SAVE IN ANET, WHILE PICKING UP ANET\n\t\tTC\tINVERT\n\t\tEXTEND\n# Page 1500\n\t\tMP\tBIT14\t\t# SCALE 1/ANET AT 2(7)/PI\n\t\tTS\t1/ANET\n\n\t\tCA\tACCHERE\t\t# SET UP RETURN FROM COMPUTATION ROUTINE\n\t\tTS\tARET\n\t\tCS\tBIT8\t\t# -1 AT 2(7)\n\t\tTCF\tDOACCFUN\t# FINISH ACCFUN COMPUTATION\n\nACCHERE\t\tTCF\tACCTHERE\n\nNOTMUCH\t\tTS\tL\t\t# ABS(AOS) LESS THAN AMIN, SAVE IN L\n\t\tCA\t1/.03\t\t# ACOASTPOS,NEG = AMIN\n\t\tTS\t1/ACOSTT\n\t\tTS\t1/ACOSTT +1\n\n\t\tCCS\tFLATEMP\n\t\tTCF\tSKIPDB2\t\t# DO NOT COMPUTE DB IF DRIFT OR GTS\n\n\t\tCA\t.0125RS\t\t# AMIN/2\n\t\tAD\tL\t\t# L HAS ABS(AOS) - AMIN\n\t\tEXTEND\t\t\t# RESULT IS ABS(AOS)- AMIN/2\n\t\tBZMF\tNOAOS\t\t# ABS(AOS) LESS THAN AMIN/2\n\nSOMEAOS\t\tCA\tDBVAL3\t\t# AMIN/2 LT ABS(AOS) LT AMIN\n\t\tINDEX\t-SIGNAOS\n\t\tTS\tDBB3\t\t# DB3(4) = DB/2\n\t\tAD\tA\n\t\tINDEX\tSIGNAOS\n\t\tTS\tDBB4\t\t# DB4(3) = DB\n\t\tTCF\tSKIPDB2\n\nNOAOS\t\tCA\tDBVAL1\n\t\tTS\tDBB3\t\t# DB3,4 = DB\n\t\tTS\tDBB4\n\nSKIPDB2\t\tCA\tABSAOS\t\t# ANETPOS(NEG) MAX = 2 JACC + ABS(AOS)\n\t\tAD\t1JACCU\n\t\tAD\t1JACCU\n\t\tTS\tANET\t\t# CANNOT OVERFLOW HERE\nCL1/NET+\tTC\tDO1/NET+\t# COMPUTE 1/ANET, ACCFUN\n\nACCTHERE\tINDEX\t-SIGNAOS\n\t\tTS\tZ5TEM \t+2\t# STORE ACCFUN IN TEMPORARY BUFFER\n\t\tCA\t1/ANET\n\t\tINDEX\t-SIGNAOS\n\t\tTS\t1/ATEM2 +2\t# STORE 1/ANET IN TEMPORARY BUFFER\n\n\t\tCA\tABSAOS\t\t# SEE IF OVERFLOW IN MIN CASE\n\t\tAD\t1JACCU\n# Page 1501\n\t\tAD\tBIT9\t\t# MAXIMUM POSSIBLE VALUE\n\t\tTS\tA\t\t# OVERFLOW POSSIBLE BUT REMOTE\n\t\tTCF\t+2\n\t\tCA\tPOSMAX\t\t# IF OVERFLOW, TRUNCATE TO PI/2\n\t\tAD\t-.03R/S2\t# RESTORE TO CORRECT VALUE\n\t\tTS\tANET\n\t\tTC\tDO1/NET+\t# COMPUTE 1/ANET, ACCFUN\n\n\t\tINDEX\t-SIGNAOS\t# STORE MIN VALUES JUST AS MAX VALUES\n\t\tTS\tZ5TEM\n\t\tCA\t1/ANET\n\t\tINDEX\t-SIGNAOS\n\t\tTS\t1/ATEM2\n\n\t\tCS\tABSAOS\t\t# NOW DO NEG(POS) CASES\n\t\tAD\t1JACCU\n\t\tAD\t1JACCU\t\t# ANETNEG(POS) MAX\n\t\tTC\t1/ANET-\t\t# COMPUTE 1/ANET, ACCFUN, AND ACCSW\n\t\tINDEX\tSIGNAOS\t\t# STORE NEG(POS) VALUES JUST AS POS(NEG)\n\t\tTS\tZ1TEM \t+2\n\t\tTS\tL\t\t# SAVE IN L FOR POSSIBLE FUTURE USE\n\t\tCA\t1/ANET\n\t\tINDEX\tSIGNAOS\n\t\tTS\t1/ATEM1 +2\n\t\tCS\tABSAOS\n\t\tAD\t1JACCU\t\t# 1/ANETNEG(POS) MIN\n\t\tTS\tANET\n\t\tAD\t-.03R/S2\t# TEST FOR AMIN\n\t\tEXTEND\t\t\t# IF ANET LESS THAN AMIN, STORE MAX JET\n\t\tBZMF\tFIXMIN\t\t# VALUES FOR MIN JETS AND SET ACCSW\n\n\t\tTC\t1/NETMIN\t# OTHERWISE DO MIN JET COMPUTATIONS\nSTMIN-\t\tINDEX\tSIGNAOS\t\t# STORE VALUES\n\t\tTS\tZ1TEM\n\t\tCA\t1/ANET\n\t\tINDEX\tSIGNAOS\n\t\tTS\t1/ATEM1\n\n\t\tINDEX\tUV\n\t\tCA\t+UMASK\n\t\tMASK\tCH5MASK\t\t# TEST FOR +U (+V) JET FAILURES\n\t\tEXTEND\n\t\tBZF\tFAIL-\n\t\tCA\t1/ATEM2\t\t# REPLACE FUNCTION VALUES DEPENDING ON THE\n\t\tTS\t1/ATEM2 +2\t# FAILED JET PAIR WITH CORRESPONDING ONE-\n\t\tCA\tZ5TEM\t\t# JET (OR AMIN) FUNCTION VALUES\n\t\tTS\tZ5TEM \t+2\nFAIL-\t\tINDEX\tUV\n# Page 1502\n\t\tCA\t-UMASK\n\t\tMASK\tCH5MASK\t\t# TEST FOR -U (-V) JET FAILURES\n\t\tEXTEND\n\t\tBZF\tDBFUN\n\t\tCA\t1/ATEM1\t\t# REPLACE FUNCTION VALUES DEPENDING ON THE\n\t\tTS\t1/ATEM1 +2\t# FAILED JET PAIR WITH CORRESPONDING ONE-\n\t\tCA\tZ1TEM\t\t# JET (OR AMIN) FUNCTION VALUES\n\t\tTS\tZ1TEM \t+2\n\nDBFUN\t\tCS\tDBB3\t\t# COMPUTE AXISDIST\n\t\tAD\tDBB1\n\t\tAD\tFLATEMP\n\t\tTS\tAXDSTEM\n\t\tCS\tDBB4\n\t\tAD\tDBB2\n\t\tAD\tFLATEMP\n\t\tTS\tAXDSTEM +1\n\n\t\tINHINT\n\t\tCCS\tUV\t\t# TEST FOR U OR V AXIS\n\t\tTCF\tSTORV\t\t# V AXIS \tSTORE V VALUES\n\n\t\tCA\tACCSW\t\t# U AXIS \tSTORE U VALUES\n\t\tTS\tACCSWU\n\n\t\tCA\tNINE\t\t# TRANSFER 10 WORDS VIA GENTRAN\n\t\tTC\tGENTRAN +1\n\t\tADRES\t1/ATEM1\t\t# TEMPORARY BUFFER\n\t\tADRES\t1/ANET1\t\t# THE REAL PLACE\n\n\t\tRELINT\n\t\tDXCH\tDBB1\t\t# SAVE U DBS FOR LATER STORING\n\t\tDXCH\tUDB1\n\t\tDXCH\tDBB4\n\t\tDXCH\tUDB4\n\n\t\tDXCH\tAXDSTEM\n\t\tDXCH\tUAXDIST\n\n\t\tCA\tONE\t\t# NOW DO V AXIS\n\t\tTS\tUV\n\t\tCA\tZERO\n\t\tTCF\tBOTHAXES\t# AND DO IT AGAIN\n\nSTORV\t\tCA\tACCSW\t\t# STORE V AXIS VALUES\n\t\tTS\tACCSWV\n\t\tCA\tNINE\n\t\tTC\tGENTRAN +1\n# Page 1503\n\t\tADRES \t1/ATEM1\t\t# TEMPORARY BUFFER\n\t\tADRES\t1/ANET1 +16D\t# THE REAL PLACE\n\n\t\t\t\t\t# NOW STORE DEADBANDS FOR ALL AXES\n\t\tDXCH\tFLATEMP\t\t# FLAT AND ZONE3LIM\n\t\tDXCH\tFLAT\n\n\t\tCA\tDBVAL1\t\t# COMPUTE P AXIS DEADBANDS\n\t\tTS\tPDB1\n\t\tTS\tPDB2\n\t\tAD\tFLAT\n\t\tTS\tPDB3\n\t\tTS\tPDB4\n\t\tCA\tZERO\n\t\tTS\tPAXDIST\n\t\tTS\tPAXDIST +1\n\n\t\tCCS\tFLAT\n\t\tTCF\tDRFDB\t\t# DRIFT OR GTS -- COMPUTE DBS\n\n\t\tDXCH\tUDB1\t\t# STORE U DEADBANDS\n\t\tDXCH\tFIREDB\t\t# CANNOT USE GENTRAN BECAUSE OF RELINT\n\t\tDXCH\tUDB4\n\t\tDXCH\tCOASTDB\n\t\tDXCH\tUAXDIST\n\t\tDXCH\tAXISDIST\n\t\tDXCH\tDBB1\t\t# STORE V AXIS DEADBANDS\n\t\tDXCH\tFIREDB \t+16D\t# COULD USE GENTRAN IF DESIRED\n\t\tDXCH\tDBB4\n\t\tDXCH\tCOASTDB +16D\n\t\tDXCH\tAXDSTEM\n\t\tDXCH\tAXISDIST +16D\n\n\t\tTCF\t1/ACCRET +1\t# ALL DONE\nDRFDB\t\tCA\tDBVAL1\t\t# DRIFT DEADBANDS\n\t\tTS\tFIREDB\n\t\tTS\tFIREDB \t+1\n\t\tTS\tFIREDB \t+16D\n\t\tTS\tFIREDB \t+17D\n\t\tAD\tFLAT\n\t\tTS\tCOASTDB\n\t\tTS\tCOASTDB +1\n\t\tTS\tCOASTDB +16D\n\t\tTS\tCOASTDB +17D\n\t\tCA\tZERO\n\t\tTS\tAXISDIST\n\t\tTS\tAXISDIST +1\n\t\tTS\tAXISDIST +16D\n\t\tTS\tAXISDIST +17D\n\n# Page 1504\n1/ACCRET\tINHINT\n\t\tCS\tDAPBOOLS\t# SET BIT TO INDICATE DATA GOOD.\n\t\tMASK\tACCSOKAY\n\t\tADS\tDAPBOOLS\n\t\tRELINT\n\t\tCA\tACCRETRN\n\t\tTC\tBANKJUMP\t# RETURN TO CALLER\n\nINVERT\t\tTS\tHOLD\t\t# ROUTINE TO INVERT -INPUT AT PI/2\n\t\tCA\tBIT9\t\t# 1 AT 2(6)\n\t\tZL\t\t\t# ZERO L FOR ACCURACY AND TO PREVENT OVFLO\n\t\tEXTEND\n\t\tDV\tHOLD\n\t\tTC\tQ\t\t# RESULT AT 2(7)/PI\n\nDOWNGTS\t\tCAF\tZERO\t\t# ZERO SWITCHES WHEN USEQRJTS BIT IS UP\n\t\tTS\tALLOWGTS\t#\tOR DAP IS OFF\n\t\tTS\tINGTS\n\t\tTCF\tDOCKTEST\n\n1/ANET-\t\tZL\n\t\tLXCH\tACCSW\t\t# ZERO ACCSW\n\t\tTS\tANET\t\t# SAVE ANET\n\t\tAD\t-.03R/S2\t# TEST FOR MIN VALUE\n\t\tEXTEND\n\t\tBZMF\tNETNEG\t\t# ANET LESS THAN AMIN, SO FAKE IT\n1/NETMIN\tCA\tANET\n\t\tEXTEND\n\t\tINDEX\t-SIGNAOS\n\t\tMP\t1/ACOSTT +1\t# ANETNEG(POS)/ACOASTPOS(NEG) AT 2(6)\n\n# THE FOLLOWING CODING IS VALID FOR BOTH POS OR NEG\n#\tVALUES OF AOS\n\nDO1/NET+\tAD\tBIT9\t\t# 1 + ANET/ACOAST AT 2(6)\n\t\tXCH\tANET\t\t# SAVE AND PICK UP ANET\n\t\tEXTEND\n\t\tQXCH\tARET\t\t# SAVE RETURN\n\t\tTC\tINVERT\n\t\tTS\t1/ANET\t\t# 1/ANET AT 2(7)/PI\n\t\tCS\tBIT9\t\t# -1 AT 2(6)\nDOACCFUN\tEXTEND\n\t\tMP\t1/ANET\t\t# -1/ANET AT 2(13)/PI\n\t\tEXTEND\n\t\tDV\tANET\t\t# ACCFUN AT 2(7)/PI\n\t\tTC\tARET\t\t# RETURN\n\nNETNEG\t\tCS\t-.03R/S2\t# ANET LESS THAN AMIN -- SET EQUAL TO AMIN\n\t\tTS\tANET\n# Page 1505\n\t\tTCF\t1/NETMIN +1\t# CONTINUE AS IF NOTHING HAPPENED.\n\nFIXMIN\t\tCCS\tSIGNAOS\n\t\tCA\tTWO\t\t# IF AOS NEG, ACCSW = +1\n\t\tAD\tNEGONE\t\t# IF AOS POS, ACCSW = -1\n\t\tTS\tACCSW\n\t\tAD\tUV\t\t# IF ACCSW = +1, TEST FOR +U (+V) JET FAIL\n\t\tINDEX\tA\t\t# IF ACCSW = -1, TEST FOR -U (-V) JET FAIL\n\t\tCA\t-UMASK \t+1\n\t\tMASK\tCH5MASK\n\t\tEXTEND\n\t\tBZF\t+4\n\t\tCS\t-.03R/S2\t# JET FAILURE -- CANNOT USE 2-JET VALUES\n\t\tTS\tANET\t\t# ANET = AMIN\n\t\tTCF\tSTMIN- \t-1\t# CALCULATE FUNCTIONS USING AMIN\n\t\tCA\tL\t\t# L HAS ACCFUN\n\t\tTCF\tSTMIN-\t\t# STORE MAX VALUES FOR MIN JETS\n\n# ERASABLE ASSIGNMENTS FOR 1/ACCONT\n\n1/ANETP\t\tEQUALS\tBLOCKTOP +2\n1/ACOSTP\tEQUALS\tBLOCKTOP +4\nPACCFUN\t\tEQUALS\tBLOCKTOP +8D\nPDB1\t\tEQUALS\tBLOCKTOP +10D\nPDB2\t\tEQUALS\tBLOCKTOP +11D\nPDB4\t\tEQUALS\tBLOCKTOP +12D\nPDB3\t\tEQUALS\tBLOCKTOP +13D\nPAXDIST\t\tEQUALS\tBLOCKTOP +14D\n\nACCSW\t\tEQUALS\tVBUF\t\t# EXECUTIVE TEMPORARIES\n\t\t\t\t\t# CANNOT DO CCS NEWJOB DURING 1/ACCS\n1/ATEM1\t\tEQUALS\tACCSW \t+1\t# TEMP BUFFER FOR U AND V AXES\n1/ATEM2\t\tEQUALS\t1/ATEM1 +1\n1/ACOSTT\tEQUALS\t1/ATEM1 +4\nZ1TEM\t\tEQUALS\t1/ATEM1 +6\nZ5TEM\t\tEQUALS\t1/ATEM1 +7\n\nUDB1\t\tEQUALS\t1/ATEM1 +10D\t# UAXIS DEADBAND BUFFER\nUDB2\t\tEQUALS\t1/ATEM1 +11D\nUDB4\t\tEQUALS\t1/ATEM1 +12D\nUDB3\t\tEQUALS\t1/ATEM1 +13D\nUAXDIST\t\tEQUALS\t1/ATEM1 +14D\n\nDBB1\t\tEQUALS\t1/ATEM1 +16D\t# TEMP DEADBAND BUFFER, ALSO V AXIS\nDBB2\t\tEQUALS\t1/ATEM1 +17D\nDBB4\t\tEQUALS\t1/ATEM1 +18D\nDBB3\t\tEQUALS\t1/ATEM1 +19D\nAXDSTEM\t\tEQUALS\t1/ATEM1 +20D\n\n# Page 1506\nFLATEMP\t\tEQUALS\t1/ATEM1 +22D\nZ3TEM\t\tEQUALS\t1/ATEM1 +23D\t# MUST FOLLOW FLATEMP\n\nDBVAL1\t\tEQUALS\tDB\nDBVAL2\t\tEQUALS\tINTB15+\nDBVAL3\t\tEQUALS\tINTB15+ +1\n\nDRIFTER\t\tEQUALS\tINTB15+ +2\n\nUV\t\tEQUALS\tMPAC\nANET\t\tEQUALS\tMPAC \t+3\nFUNTEM\t\tEQUALS\tMPAC \t+3\n1/ANET\t\tEQUALS\tMPAC \t+4\nARET\t\tEQUALS\tMPAC \t+5\nABSAOS\t\tEQUALS\tMPAC \t+6\nSIGNAOS\t\tEQUALS\tMPAC \t+7\n-SIGNAOS\tEQUALS\tMPAC \t+8D\nHOLD\t\tEQUALS\tMPAC \t+9D\nACCRETRN\tEQUALS\tFIXLOC \t-1\n\nZONE3MAX\tDEC\t.004375\t\t# 17.5 MS (35 MS FOR 1 JET) AT 4 SECONDS\nFLATVAL\t\tDEC\t.01778\t\t# .8 AT PI/4 RAD\n-.03R/S2\tOCT\t77377\t\t# -PI/2(7) AT PI/2\n\n.0125RS\t\tEQUALS\tBIT8\t\t# PI/2(+8) AT PI/2\n1/.03\t\tEQUALS\tPOSMAX\t\t# 2(7)/PI AT 2(7)/PI\n\nPAXISADR\tGENADR\tPAXIS\n\n\t\t\t\t\t# THE FOLLOWING 4 CONSTANTS ARE JET\n\t\t\t\t\t# FAILURE MASKS AND ARE INDEXED\n-UMASK\t\tOCT\t00110\t\t# -U\n\t\tOCT\t00022\t\t# -V\n+UMASK\t\tOCT\t00204\t\t# +U\n\t\tOCT\t00041\t\t# +V\n\n"
  },
  {
    "path": "Luminary099/AOTMARK.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tAOTMARK.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t244-261\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 244\n\t\tBANK\t12\n\t\tSETLOC\tAOTMARK1\n\t\tBANK\n\n\t\tEBANK=\tXYMARK\n\t\tCOUNT*\t$$/MARK\n\nAOTMARK\t\tINHINT\n\t\tCCS\tMARKSTAT\t# SEE IF AOTMARK BUSY\n\t\tTC\t+2\t\t# MARK SYSTEM BUSY -- DO ALARM\n\t\tTC\tEXTVBCHK\n\t\tTC\tPOODOO\n\t\tOCT\t00105\n\nEXTVBCHK\tCAF\tSIX\t\t# SEE IF EXT. VERB WORKING\n\t\tMASK\tEXTVBACT\n\t\tCCS\tA\n\t\tTCF\tMKABORT\t\t# YES -- ABORT\n\n\t\tCAF\tBIT2\t\t# NO -- DISALLOW SOME EXTENDED VERB ACTION\n\t\tADS\tEXTVBACT\t# BIT2 RESET IN ENDMARK\nMKVAC\t\tCCS\tVAC1USE\t\t# LOOK FOR A VAC AREAD -- DO ABORT IF\n\t\tTCF\tMKVACFND\t# NONE AVAILABLE\n\t\tCCS\tVAC2USE\n\t\tTCF\tMKVACFND\n\t\tCCS\tVAC3USE\n\t\tTCF\tMKVACFND\n\t\tCCS\tVAC4USE\n\t\tTCF\tMKVACFND\n\t\tCCS\tVAC5USE\n\t\tTCF\tMKVACFND\n\t\tDXCH\tBUF2\n\t\tTC\tBAILOUT1\t# ALL VAC AREAS OCCUPIED -- ABORT.\n\t\tOCT\t01207\n\nMKVACFND\tAD\tTWO\n\t\tTS\tMARKSTAT        # STORE VAC ADR IN LOW 9 OF MARKSTAT\n\n\t\tCAF\tZERO\n\t\tINDEX\tMARKSTAT\n\t\tTS\t0 -1\t\t# ZERO IN VACUSE REG TO SHOW VAC OCCUPIED\n\n\t\tCAF\tPRIO15\n\t\tTC\tFINDVAC\t\t# SET UP JOB FOR GETDAT\n\t\tEBANK=\tXYMARK\n\t\t2CADR\tGETDAT\n\n\t\tRELINT\n\t\tTCF\tSWRETURN\n# Page 245\nMKABORT\t\tDXCH\tBUF2\n\t\tTC\tBAILOUT1\t# CONFLICT WITH EXTENDED VERB\n\t\tOCT\t01211\n\nMKRELEAS\tCAF\tZERO\n\t\tXCH\tMARKSTAT\t# SET MARKSTAT TO ZERO\n\t\tMASK\tLOW9\t\t# PICK UP VAC AREA AOR\n\t\tCCS\tA\n\t\tINDEX\tA\n\t\tTS\t0\t\t# SHOW MKVAC AREA AVAILABLE\n\t\tCAF\tONE\n\t\tTC\tIBNKCALL\n\t\tCADR\tGOODEND\t\t# GO WAKE UP CALLING JOB\n\n# Page 246\nKILLAOT\t\tCAF\tZERO\n\t\tTS\tEXTVBACT\t# TERMINATE AOTMARK -- ALLOW EXT VERB\n\t\tTC\tGOTOPOOH\nGETDAT\t\tCS\tMARKSTAT\t# SET BIT12 TO DISCOURAGE MARKRUPT\n\t\tMASK\tBIT12\t\t#\tBIT12 RESET AT GETMARK\n\t\tADS\tMARKSTAT\n\n\t\tCAF\tV01N71\t\t# DISPLAY DETENT AND STAR CODE\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKF\n\n\t\tTCF\tKILLAOT\t\t# V34 -- DOES GOTOPOOH\n\t\tTCF\tDODAT\t\t# V33 -- PROCEED -- USE THIS STAR FOR MARKS\nENTERDAT\tTCF\tGETDAT\t\t# ENTER -- REDISPLAY STAR CODE\n\nDODAT\t\tCAF\tHIGH9\t\t# PICK DETENT CODE FROM BITS7-9 OF AOTCODE\n\t\tMASK\tAOTCODE\t\t# AND SEE IF CODE 1 TO 6\n\t\tEXTEND\n\t\tMP\tBIT9\n\t\tTS\tXYMARK\t\t# STORE DETENT\n\n\t\tEXTEND\n\t\tBZMF\tGETDAT\t\t# COAS CALIBRATION CODE - NO GOOD HERE\n\n\t\tAD\tNEG7\t\t# SEE IF DETENT 7 FOR COAS\n\t\tEXTEND\n\t\tBZF\tCODE7\n\n\t\tTCF\tCODE1TO6\n\nCODE7\t\tCAF\tV06N87*\t\t# CODE 7, COAS SIGHTING, GET OPTIC AXIS\n\t\tTC\tBANKCALL\t# AZ AND EL OF SIGHTING DEVICE FROM ASTRO\n\t\tCADR\tGOMARKF\n\n\t\tTCF\tKILLAOT\t\t# V34 -- DOES GOTOPOOH\n\t\tTCF\t+2\t\t# PROCEED\n\t\tTCF\tCODE7\t\t# ON ENTER, RECYCLE\n\t\tEXTEND\n\t\tDCA\tAZ\t\t# PICK UP AZ AND EL IN SP 25 COMP\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t8D\t\t# STORE IN 8D AND 9D OF LOCAL VAC\n\t\tCAF\tZERO\t\t# BACKUP SYSTEM TO BE USED\n\t\tTCF\tCOASCODE\t# ZERO APPARENT ROTATION\n\nCODE1TO6\tINDEX\tXYMARK\t\t# INDEX AOT POSITION BY DET CODE\n\t\tCA\tAOTEL -1\n\t\tINDEX\tFIXLOC\n\t\tTS\t9D\t\t# STORE ELEVATION IN VAC+9D\n\n\t\tINDEX\tXYMARK\t\t# INDEX DET CODE 1,2 OR 3\n# Page 247\n\t\tCA\tAOTAZ -1\n\t\tINDEX\tFIXLOC\n\t\tTS\t8D\t\t# STORE AZIMUTH IN VAC +8D\n\n\t\tCA\tAOTAZ +1\t# COMPENSATION FOR APPARENT ROTATION OF\n\t\tEXTEND\t\t\t# AOT FIELD OF VIEW IN LEFT AND RIGHT\n\t\tINDEX\tFIXLOC\t\t# DETENTS IS STORED IN VAC +10D IN SP\n\t\tMSU\t8D\t\t# PRECISION ONE'S COMPLEMENT\nCOASCODE\tINDEX\tFIXLOC\n\t\tTS\t10D\t\t# ROT ANGLE\n\n\t\tTC\tINTPRET\t\t# COMPUTE X AND Y PLANE VECTORS\n\n# Page 248\n# THE OPTAXIS SUBROUTINE COMPUTES THE X AND Y MARK PLANE VECS AND\n# ROTATES THEM THRU THE APPARENT FIELD OF VIEW ROTATION UNIQUE TO AOT\n# OPTAXIS USES OANB TO COMPUTE THE OPTIC AXIS\n#\n#\tINPUT --\tAZIMUTH ANGLE IN SINGLE PREC AT CDU SCALE IN 8D OF JOB VAC\n#\t\t\tELEVATION ANGLE IN SINGLE PREC AT CDU SCALE IN 9D OF JOB VAC\n#\t\t\tROTATION ANGLE IN SINGLE PREC IS COMP SCALED BY PI IN 10D OF VAC\n#\n#\tOUTPUT --\tOPTIC AXIS VEC IN NG COORDS IN SCAXIS\n#\t\t\tX-MARK PLANE 1/4VEC IN NB COORDS AT 18D OF JOB VAC\n#\t\t\tY-MARK PLANE 1/4VEC IN NB COORDS AT 12D OF JOB VAC\n\nOPTAXIS\t\tCALL\t\t\t# GO COMPUTE OA AN X AND Y PLANE VECS\n\t\t\tOANB\n\t\tSLOAD\tSR1\t\t# LOAD APP ROTATION IN ONES COMP\n\t\t\t10D\t\t# RESCALE BY 2PI\n\t\tPUSH\tSIN\t\t# 1/2SIN(ROT) 0-1\n\t\tPDDL\tCOS\n\t\tPUSH\tVXSC\t\t# 1/2COS(ROT) 2-3\n\t\t\t18D\n\t\tPDDL\tVXSC\t\t# 1/4COS(ROT)UYP 4-9\n\t\t\t0\n\t\t\t24D\t\t# 1/4SIN(ROT)UXP\n\t\tBVSU\tSTADR\t\t# UP 4-9\n\t\tSTODL\t12D\t\t# YPNB=1/4(COS(ROT)UYP-SIN(ROT)UXP)\n\t\tVXSC\tPDDL\t\t# UP 2-3 UP 0-1 FOR EXCHANGE\n\t\t\t24D\t\t# 1/4COS(ROT)UXP \tPUSH 0-5\n\t\tVXSC\tVAD\t\t# 1/4SIN(ROT)UYP\n\t\t\t18D\t\t# UP 0-5\n\t\tSTADR\n\t\tSTOVL\t18D\t\t# XPNB=1/4(COS(ROT)UXP+SIN(ROT)UYP)\n\t\t\tLO6ZEROS\t# INITIALIZE AVE STAR VEC ACCUMULATOR\n\t\tSTORE\tSTARAD +6\n\t\tEXIT\n\t\tTCF\tGETMKS\n\n# Page 249\n# THE OANB SUBROUTINE COMPUTES THE OPTIC AXIS OF THE SIGHTING INSTRUMENT\n# FROM AZIMUTH AND ELEVATION INPUT FROM THE ASTRONAUT.\n#\n#\tINPUT --\tAZIMUTH ANGLE IN SINGLE PREC 2'S COMP IN 8D OF JOB VAC\n#\t\t\tELEVATION ANGLE IN SINGLE PREC 2'S COMP IN 9D OF VAC\n#\n#\tOUTPUT --\tOPTIC AXIS IN NB COORDS. IN SCAXIS\n#\t\t\tX-PLANE 1/2VEC IN NB COORDS AT 24D OF VAC\n#\t\t\tY-PLANE 1/2VEC IN NB COORDS AT 18D OF VAC\n\n\t\tBANK\t05\n\t\tSETLOC\tAOTMARK2\n\t\tBANK\n\n\t\tCOUNT*\t$$/MARK\n\nOANB\t\tSETPD\tSTQ\n\t\t\t0\n\t\t\tGCTR\t\t# STORE RETURN\n\t\tSLOAD\tRTB\n\t\t\t9D\t\t# PICK UP SP ELV\n\t\t\tCDULOGIC\n\t\tPUSH\tCOS\n\t\tPDDL\tSIN\t\t# 1/2COS(ELV)\tPD 0-1\n\t\tSTADR\n\t\tSTODL\tSCAXIS\t\t# OAX=1/2SIN(ELV)\n\t\t\t8D\n\t\tRTB\n\t\t\tCDULOGIC\n\t\tPUSH\tCOS\n\t\tSTORE\t20D\t\t# STORE UYP(Y) \t20-21\n\t\tPDDL\tSIN\t\t# 1/2COS(AZ) \tPD 2-3\n\t\tPUSH\tDCOMP\t\t# PUSH 1/2S IN (AZ)\t4-5\n\t\tSTODL\t22D\t\t# STORE UYP(Z)\t22-23\n\t\t\tLO6ZEROS\n\t\tSTODL\t18D\t\t# STORE UYP(X)\t18-19\n\t\tDMP\tSL1\n\t\t\t0\n\t\tSTODL\tSCAXIS +2\t# OAY=1/2COS(ELV)SIN(AZ)\n\t\tDMP\tSL1\t\t# UP\t2-3\n\t\tSTADR\t\t\t# UP\t0-1\n\t\tSTOVL\tSCAXIS +4\t# OAZ=1/2COS(ELV)COS(AZ)\n\t\t\t18D\t\t# LOAD UYP VEC\n\t\tVXV\tUNIT\n\t\t\tSCAXIS\t\t# UXP VEC=UYP X OA\n\t\tSTORE\t24D\t\t# STORE UXP\n\t\tGOTO\n\t\t\tGCTR\n# Page 250\n# SURFSTAR COMPUTES A STAR VECTOR IN SM COORDINATES FOR LUNAR\n# SURFACE ALIGNMENT AND EXITS TO AVEIT TO AVERAGE STAR VECTORS.\n#\n#\tGIVEN\tX-MARK PLANE 1/4 VEC IN NB AT 18D OF LOCAL VAC\n#\t\tY-MARK PLANE 1/4 VEC IN NB AT 12D OF LOCAL VAC\n#\t\tCURSOR SP 2COMP AT POSITION 1 OF INDEXED MARKVAC\n#\t\tSPIRAL SP 2COMP AT POSITION 3 OF INDEXED MARKVAC\n#\t\tCDUY,Z,X AT POSITIONS 0,2,4 OF INDEXED MARKVAC\n\n\t\tBANK\t15\n\t\tSETLOC\tP50S\n\t\tBANK\n\t\tCOUNT*\t$$/R59\n\nSURFSTAR\tVLOAD*\n\t\t\t0,1\t\t# PUT X-MARK CDUS IN CDUSPOT FOR TRG*NBSM\n\t\tSTORE\tCDUSPOT\n\t\tSLOAD*\tRTB\n\t\t\t1,1\t\t# PICK UP YROT\n\t\t\tCDULOGIC\n\t\tSTORE\t24D\t\t# STORE CURSOR FOR SPIRAL COMP (REVS)\n\t\tBZE\n\t\t\tYZCHK\t\t# IF YROT ZERO -- SEE IF SROT ZERO\nJUSTZY\t\tPUSH\tCOS\n\t\tPDDL\tSIN\t\t# 1/2COS(YROT) \t0-1\n\t\tVXSC\tPDDL\t\t# UP 0-1\t1/8SIN(YROT)UXP\t0-5\n\t\t\t18D\n\t\tVXSC\tVSU\t\t# UP \t0-5\n\t\t\t12D\t\t# UYP\n\t\tUNIT\tVXV\n\t\t\tSCAXIS\n\t\tUNIT\tPUSH\n\t\tSLOAD*\tRTB\n\t\t\t3,1\t\t# PICK UP SPIRAL\n\t\t\tCDULOGIC\n\t\tSTORE\t26D\t\t# STORE SPIRAL (REVS)\n\t\tDSU\tDAD\n\t\t\t24D\n\t\t\tABOUTONE\n\t\tDMP\n\t\t\tDP1/12\n\t\tSTORE\t26D\t\t# SEP=(360 + SPIRAL -CURSOR)/12\n\t\tSIN\tVXSC\t\t# UP\t0-5\n\t\tVSL1\tPDDL\t\t# 1/2SIN(SEP)(UPP X OA)\t0-5\n\t\t\t26D\n\t\tCOS\tVXSC\n\t\t\tSCAXIS\n\t\tVSL1\tVAD\t\t# UP\t0-5\nJUSTOA\t\tUNIT\tCALL\n\t\t\tTRG*NBSM\n\t\tSTCALL\t24D\t\t# STAR VEC IN SM\n\t\t\tAVEIT\t\t# GO AVERAGE\n# Page 251\nABOUTONE\t2DEC\t.99999999\n\nDP1/12\t\tEQUALS\tDEG30\t\t# .08333333\n\t\tBANK\t7\n\t\tSETLOC\tAOTMARK1\n\t\tBANK\n\t\tCOUNT*\t$$/MARK\nYZCHK\t\tSLOAD*\tBZE\t\t# YROT ZERO AND IF SROT ZERO FORCE STAR\n\t\t\t3,1\t\t# ALONG OPTIC AXIS\n\t\t\tYSZERO\n\t\tDLOAD\tGOTO\n\t\t\t24D\n\t\t\tJUSTZY\t\t# SROT NOT ZERO -- CONTINUE NORMALLY\nYSZERO\t\tVLOAD\tGOTO\n\t\t\tSCAXIS\n\t\t\tJUSTOA\n\n# Page 252\n# THE GETMKS ROUTINE INITIALIZES THE SIGHTING MARK PROCEDURE\n\nGETMKS\t\tCAF\tZERO\t\t# INITIALIZE MARK ID REGISTER AND MARK CNT\n\t\tTS\tXYMARK\n\t\tTS\tMARKCNTR\n\t\tCAF\tLOW9\t\t# ZERO BITS10 TO 15 RETAINING MKVAC ADR\n\t\tMASK\tMARKSTAT\n\t\tTS\tMARKSTAT\n\t\tCAF\tMKVB54*\t\t# DISPLAY VB54 INITIALLY\nPASTIT\t\tTC\tBANKCALL\n\t\tCADR\tGOMARK4\n\n\t\tTCF\tKILLAOT\t\t# V34 -- DOES GOTOPOOH\n\t\tTCF\tMARKCHEX\t# VB33 -- PROCEED, GOT MARKS, COMPUTE LOS\n\t\tTCF\tGETDAT\t\t# ENTER -- RECYCLE TO V01N71\n\nMARKCHEX\tCS\tMARKSTAT\t# SET BIT12 TO DISCOURAGE MARKRUPT\n\t\tMASK\tBIT12\n\t\tADS\tMARKSTAT\n\t\tMASK\tLOW9\n\t\tTS\tXYMARK\t\t# JAM MARK VAC ADR IN XYMARK FOR AVESTAR\n\t\tCAF\tZERO\n\t\tTS\tMKDEX\t\t# SET MKDEX ZERO FOR LOS VEC CNTR\n\t\tCA\tMARKSTAT\n\t\tMASK\tPRIO3\t\t# SEE IF LAST MK PART COMPLETE\n\t\tTS\tL\n\t\tCAF\tPRIO3\t\t# BITS10 AND 11\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tEXTEND\n\t\tBZF\tAVESTAR\t\t# LAST PAIR COMPLETE -- TO COMPUTE LOS\nCNTCHK\t\tCCS\tMARKCNTR\t# NO PAIR SHOWING -- SEE IF PAIR IN HOLD\n\t\tTCF\t+2\t\t# PAIR BURIED -- DECREMENT COUNTER\n\t\tTCF\tMKALARM\t\t# NO PAIR -- ALARM\n\t\tTS\tMARKCNTR\t# STORE DECREMENTED COUNTER\n\nAVESTAR\t\tCAF\tBIT12\t\t# INITIALIZE MKDEX FOR STAR LOS COUNTER\n\t\tADS\tMKDEX\t\t# MKDEX WAS INITIALIZED ZERO IN MARKCHEX\n\t\tCS\tMARKCNTR\n\t\tEXTEND\n\t\tMP\tSIX\t\t# GET C(L) = -6 MARKCNTR\n\t\tCS\tXYMARK\n\t\tAD\tL\t\t# ADD -- MARK VAC ADR SET IN MARKCHEX\n\t\tINDEX\tFIXLOC\n\t\tTS\tX1\t\t# JAM -- CDU ADR OF X-MARK IN X1\n\n\t\tCA\tFIXLOC\t\t# SET PD POINTER TO ZERO\n\t\tTS\tPUSHLOC\n\n\t\tTC\tINTPRET\n# Page 253\n\t\tBON\tVLOAD*\n\t\t\tSURFFLAG\t# IF ON SURFACE COMPUTE VEC AT SURFSTAR\n\t\t\tSURFSTAR\n\t\t\t1,1\t\t# PUT Y-MARK CDUS IN CDUSPOT FOR TRG*NBSM\n\t\tSTOVL\tCDUSPOT\n\t\t\t12D\t\t# LOAD Y-PLANE VECTOR IN NG\n\t\tCALL\n\t\t\tTRG*NBSM\t# CONVERT IT TO STABLE MEMBER\n\t\tPUSH\tVLOAD*\n\t\t\t0,1\t\t# PUT X-MARK CDUS IN CDUSPOT FOR TRG*NBSM\n\t\tSTOVL\tCDUSPOT\n\t\t\t18D\t\t# LOAD X-PLANE VECTOR IN NB\n\t\tCALL\n\t\t\tTRG*NBSM\t# CONVERT IT TO STABLE-MEMBER\n\t\tVXV\tUNIT\t\t# UNIT(XPSM * YPSM)\n\t\tSTADR\n\t\tSTORE\t24D\n\nAVEIT\t\tSLOAD\tPDVL\t\t# N(NUMBER OF VECS) IN 0-1\n\t\t\tMKDEX\n\t\t\t24D\t\t# LOAD CURRENT VECTOR\n\t\tVSR3\tV/SC\n\t\t\t0\n\t\tSTODL\t24D\t\t# VEC/N\n\t\t\t0\n\t\tDSU\tDDV\n\t\t\tDP1/8\t\t# (N-1)/N\n\t\tVXSC\tVAD\n\t\t\tSTARAD +6\t# ADD VEC TO PREVIOUSLY AVERAGED VECTOR\n\t\t\t24D\t\t# (N-1)/N AVESTVEC + VEC/N\n\t\tSTORE\tSTARAD +6\t# AVERAGE STAR VECTOR\n\t\tSTORE\tSTARSAV2\n\t\tEXIT\n\t\tCCS\tMARKCNTR\t# SEE IF ANOTHER MARK PAIR IN MKVAC\n\t\tTCF\tAVESTAR -1\t# THERE IS -- GO GET IT -- DECREMENT COUNTER\nENDMARKS\tCAF\tFIVE\t\t# NO MORE MARKS -- TERMINATE AOTMARK\n\t\tINHINT\n\t\tTC\tWAITLIST\n\t\tEBANK=\tXYMARK\n\t\t2CADR\tMKRELEAS\n\n\t\tTC\tENDMARK\n\nMKALARM\t\tTC\tALARM\t\t# NOT A PAIR TO PROCESS -- DO GETMKS\n\t\tOCT\t111\n\t\tTCF\tGETMKS\n\nV01N71\t\tVN\t171\nV06N87*\t\tVN\t687\n\n# Page 254\n# MARKRUPT IS ENTERED FROM INTERRUPT LEAD-INS AND PROCESSES CHANNEL 16\n# CAUSED BY X,Y MARK OR MARK REJECT OR BY THE RATE OF DESCENT SWITCH\n\nMARKRUPT\tTS\tBANKRUPT\n\t\tCA\tCDUY\t\t# STORE CDUS AND TIME NOW -- THEN SEE IF\n\t\tTS\tITEMP3\t\t# WE NEED THEM\n\t\tCA\tCDUZ\n\t\tTS\tITEMP4\n\t\tCA\tCDUX\n\t\tTS\tITEMP5\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tITEMP1\n\t\tXCH\tQ\n\t\tTS\tQRUPT\n\n\t\tCAF\tOCT34\t\t# SEE IF X OR Y MARK OR MKREJECT\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\n\t\tCCS\tA\n\t\tTCF\t+2\t\t# ITS A LIVE ONE -- SEE IF ITS WANTED\n\t\tTCF\tSOMEKEY\t\t# ITS SOME OTHER KEY\n\n\t\tCAF\tBIT12\t\t# ARE WE ASKING FOR A MARK\n\t\tMASK\tMARKSTAT\n\t\tCCS\tA\n\t\tTC\tRESUME\t\t# DON'T WANT MARK OR MKREJECT -- DO NOTHING\n\n\t\tCCS\tMARKSTAT\t# ARE MARKS BEING ACCEPTED\n\t\tTCF\tFINDKEY\t\t# THEY ARE -- WHICH ONE IS IT\n\t\tTC\tALARM\t\t# MARKS NOT BEING ACCEPTED -- DO ALARM\n\t\tOCT\t112\n\t\tTC\tRESUME\n\nFINDKEY\t\tCAF\tBIT5\t\t# SEE IF MARK REJECT.\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\n\t\tCCS\tA\n\t\tTCF\tMKREJ\t\t# IT'S A MARK REJECT\n\n\t\tCAF\tBIT4\t\t# SEE IF Y MARK\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\n\t\tCCS\tA\n\n\t\tTCF\tYMKRUPT\t\t# IT'S A Y MARK\n\n\t\tCAF\tBIT3\t\t# SEE IF X MARK\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\n\n# Page 255\n\t\tCCS\tA\n\t\tTCF\tXMKRUPT\t\t# IT'S A X MARK\n\nSOMEKEY\t\tCAF\tOCT140\t\t# NOT MARK OR MKREJECT -- SEE IF DESCENT BITS\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\n\t\tEXTEND\n\t\tBZF\t+3\t\t# IF NO BITS\n\n\t\tTC\tPOSTJUMP\t# IF DESCENT BITS\n\t\tCADR\tDESCBITS\n\n\t\tTC\tALARM\t\t# NO INBITS IN CHANNEL 16.\n\t\tOCT\t113\n\n\t\tTC\tRESUME\n\nXMKRUPT\t\tCAF\tZERO\n\t\tTS\tRUPTREG1\t# SET X MARK STORE INDEX TO ZERO\n\t\tCAF\tBIT10\n\t\tTCF\t+4\nYMKRUPT\t\tCAF\tONE\n\t\tTS\tRUPTREG1\t# SET Y MARK STORE INDEX TO ONE\n\t\tCAF\tBIT11\n\t\tTS\tXYMARK\t\t# SET MARK IDENTIFICATION\n\n\t\tTC\tMARKTYPE\t# SEE IF SURFACE MARK\n\t\tTCF\tSURFSTOR\t# SURFACE MARK -- JUST STORE CDUS\n\n\t\tCAF\tBIT14\t\t# GOT A MARK -- SEE IF MARK PARI MADE\n\t\tMASK\tMARKSTAT\n\t\tEXTEND\n\t\tBZF\tVERIFYMK\t# NOT A PAIR, NORMAL PROCEDURE\n\t\tCS\tMARKCNTR\t# GO A PAIR, SEE IF ANOTHER CAN BE MADE\n\t\tAD\tFOUR\t\t# IF SO, INCREMENT POINTER, CLEAR BITS 10,11\n\t\tEXTEND\n\t\tBZMF\t5MKALARM\t# HAVE FIVE MARK PAIRS -- DON'T ALLOW MARK\n\t\tINCR\tMARKCNTR\t# OK FOR ANOTHER PAIR, INCR POINTER\n\t\tCS\tPRIO23\t\t# CLEAR BITS 10,11,14 FOR NEXT PAIR\n\t\tMASK\tMARKSTAT\n\t\tTS\tMARKSTAT\n\nVERIFYMK\tCA\tXYMARK\n\t\tMASK\tMARKSTAT\n\t\tCCS\tA\n\t\tTCF\t+2\t\t# THIS MARK NOT DESIRED\n\t\tTCF\tVACSTOR\t\t# MARK DESIRED -- STORE CDUS\n\t\tTC\tALARM\n\t\tOCT\t114\n\t\tTC\tRESUME\t\t# RESUME -- DISPLAY UNCHANGED -- WAIT FOR ACTION\n\n# Page 256\n5MKALARM\tTC\tALARM\t\t# ATTEMPTING TO MAKE MORE THAN 5 MK PAIRS\n\t\tOCT\t107\n\t\tTC\tMARKTYPE\t# SEE IF SURFACE MARK\n\t\tTCF\tDSPV6N79\t# IT IS\n\t\tTC\tRESUME\t\t# DON'T CHANGE DISPLAY -- DO NOTHING\n\n# Page 257\nMKREJ\t\tTC\tMARKTYPE\t# SEE IF SURFACE\n\t\tTCF\tSURFREJ\t\t# SURFACE -- JUST CHECK MARK COUNTER\n\n\t\tCAF\tPRIO3\t\t# INFLIGHT -- SEE IF MARKS MADE\n\t\tMASK\tMARKSTAT\n\t\tCCS\tA\n\t\tTCF\tREJECT\t\t# MARKS MADE -- REJECT ONE\nREJALM\t\tTC\tALARM\t\t# NO MARK TO REJECT -- BAD PROCEDURE -- ALARM\n\t\tOCT\t115\n\t\tTC\tRESUME\t\t# DESIRED ACTION DISPLAYED\n\nREJECT\t\tCS\tPRIO30\t\t# ZERO BIT14, SHOW REJ., SEE IF MARK SINCE\n\t\tMASK\tMARKSTAT\t# LAST REJECT\n\t\tAD\tBIT13\n\t\tXCH\tMARKSTAT\n\t\tMASK\tBIT13\n\t\tCCS\tA\n\t\tTCF\tREJECT2\t\t# ANOTHER REJECT SET BIT 10+11 TO ZERO\n\n\t\tCS\tXYMARK\t\t# MARK MADE SINCE REJECT -- REJECT MARK IN 1D\nRENEWMK\t\tMASK\tMARKSTAT\n\t\tTS\tMARKSTAT\n\t\tTCF\tREMARK\t\t# GO REQUEST NEW MARK ACTION\n\nREJECT2\t\tCS\tPRIO3\t\t# ON SECOND REJECT -- DISPLAY VB53 AGAIN\n\t\tTCF\tRENEWMK\n\nSURFREJ\t\tCCS\tMARKCNTR\t# IF MARK DECREMENT COUNTER\n\t\tTCF\t+2\n\t\tTCF\tREJALM\t\t# NO MARKS TO REJECT -- ALARM\n\t\tTS\tMARKCNTR\n\t\tTC\tRESUME\n\n# Page 258\n# MARKTYPE TESTS TO SEE IF LEM ON LUNAR SURFACE.  IF IT IS RETURN TO LOC+1\n\nMARKTYPE\tCS\tFLAGWRD8\t# SURFFLAG ******** TEMPORARY ******\n\t\tMASK\tBIT8\n\t\tCCS\tA\n\t\tINCR\tQ\t\t# IF SURFACE MARK RETURN TO LOC +1\n\t\tTC\tQ\t\t# IF INFLIGHT MARK RETURN TO LOC +2\n\nSURFSTOR\tCAF\tZERO\t\t# FOR SURFACE MARK ZERO MARK KIND INDEX\n\t\tTS\tRUPTREG1\n\n\t\tCS\tMARKSTAT\t# SET BITS10,11 TO SHOW SURFACE MARK\n\t\tMASK\tPRIO3\t\t# FOR MARKCHEX\n\t\tADS\tMARKSTAT\n\nVACSTOR\t\tCAF\tLOW9\n\t\tMASK\tMARKSTAT\t# STORE MARK VAC ADR IN RUPTREG2\n\t\tTS\tRUPTREG2\n\t\tEXTEND\n\t\tDCA\tITEMP1\t\t# PICK UP MARKTIME\n\t\tDXCH\tTSIGHT\t\t# STORE LAST MARK TIME\n\t\tCA\tMARKCNTR\t# 6 X MARKCNTR FOR STORE INDEX\n\t\tEXTEND\n\t\tMP\tSIX\n\t\tXCH\tL\t\t# GET INDEX FROM LOW ORDER PART\n\t\tAD\tRUPTREG2\t# SET CDU STORE INDEX TO MARKVAC\n\t\tADS\tRUPTREG1\t# INCREMENT VAC PICKUP BY MARK FOR FLIGHT\n\t\tTS\tMKDEX\t\t# STORE HERE IN CASE OF SURFACE MARK\n\t\tCA\tITEMP3\n\t\tINDEX\tRUPTREG1\n\t\tTS\t0\t\t# STORE CDUY\n\t\tCA\tITEMP4\n\t\tINDEX\tRUPTREG1\n\t\tTS\t2\t\t# STORE CDUZ\n\t\tCA\tITEMP5\n\t\tINDEX\tRUPTREG1\n\t\tTS\t4\t\t# STORE CDUX\n\t\tTC\tMARKTYPE\t# IF SURFACE MARK -- JUST DO SURFJOB\n\t\tTCF\tSURFJOB\n\n\t\tCAF\tBIT13\t\t# CLEAR BIT13 TO SHOW MARK MADE\n\t\tAD\tXYMARK\t\t# SET MARK ID IN MARKSTAT\n\t\tCOM\n\t\tMASK\tMARKSTAT\n\t\tAD\tXYMARK\n\t\tTS\tMARKSTAT\n\t\tMASK\tPRIO3\t\t# SEE IF X, Y MARK MADE\n\t\tTS\tL\n\n# Page 259\n\t\tCA\tPRIO3\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tCCS\tA\n\t\tTCF\tREMARK\t\t# NOT PAIR YET, DISPLAY MARK ACTION\n\t\tCS\tMARKSTAT\t# MARK PAIR COMPLETE -- SET BIT14\n\t\tMASK\tBIT14\n\t\tADS\tMARKSTAT\n\t\tTCF\tREMARK\t\t# GO DISPLAY V54\n\n# Page 260\nREMARK\t\tCAF\tPRIO3\t\t# BITS 10 AND 11\n\t\tMASK\tMARKSTAT\n\t\tEXTEND\n\t\tMP\tBIT6\t\t# SHIFT MARK IDS TO BE 0 TO 3 FOR INDEX\n\t\tTS\tMKDEX\t\t# STORE VERB INDEX\nSURFJOB\t\tCAF\tPRIO15\n\t\tTC\tNOVAC\t\t# ENTER JOB TO CHANGE DISPLAY TO\n\t\tEBANK=\tXYMARK\t\t# REQUEST NEXT ACTION\n\t\t2CADR\tCHANGEVB\n\n\t\tTC\tRESUME\n\nCHANGEVB\tTC\tMARKTYPE\n\t\tTCF\tDSPV6N79\t# SURFACE -- DISPLAY V 06 N 79\n\t\tINDEX\tMKDEX\t\t# INFLIGHT -- PICK UP MARK VB INDEX\n\t\tCAF\tMKVB54\n\t\tTC\tPASTIT\t\t# PASTE UP NEXT MK VERB DISPLAY\n\n# THE FOUR MKVBS ARE INDEXED -- THEIR ORDER CANNOT BE CHANGED\n\nMKVB54\t\tVN\t5471\t\t# MAKE X OR Y MARK\nMKVB53\t\tVN\t5371\t\t# MAKE Y MARK\nMKVB52\t\tVN\t5271\t\t# MAKE X MARK\nMKVB54*\t\tVN\t5471\t\t# MAKE X OR Y MARK\nDP1/8\t\t2DEC\t.125\n\nOCT34\t\tOCT\t34\nV06N71\t\tVN\t671\nV06N79*\t\tVN\t679\n\n# Page 261\n# ROUTINE TO REQUEST CURSOR AND SPIRAL MEASUREMENTS\n\t\tCOUNT*\t$$/R59\n\nDSPV6N79\tCAF\tV06N79*\t\t# CURSOR -- SPIRAL DISPLAY\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKF\n\n\t\tTCF\tKILLAOT\t\t# V34 -- DOES GOTOPOOH\n\t\tTCF\tSURFEND\t\t# V33 -- PROCEED, END MARKING\n\t\tCAF\tBIT6\t\t# IF V32(OCT40) IN MPAC DO RECYCLE\n\t\tMASK\tMPAC\t\t# OTHERWISE IT IS LOAD VB ENTER SO\n\t\tCCS\tA\t\t# RE-DISPLAY V06N79\n\t\tTCF\tSURFAGAN\t# VB32 -- RECYCLE\n\t\tTCF\tDSPV6N79\t# ENTER\n\nSURFEND\t\tCS\tBIT14\t\t# SET BIT14 TO SHOW MARK END\n\t\tMASK\tMARKSTAT\n\t\tAD\tBIT14\n\t\tTS\tMARKSTAT\n\nSURFAGAN\tCA\tCURSOR\n\t\tINDEX\tMKDEX\t\t# HOLDS VAC AREA POINTER FOR SURF MARKING\n\t\tTS\t1\t\t# STORE CURSOR SP 2COMP\n\t\tCA\tSPIRAL\n\t\tINDEX\tMKDEX\n\t\tTS\t3\t\t# STORE SPIRAL\n\n\t\tCS\tMARKSTAT\t# IF BIT 14 SET -- END MARKING\n\t\tMASK\tBIT14\n\t\tEXTEND\n\t\tBZF\tMARKCHEX\n\t\tCA\tMARKCNTR\t# THIS IS RECYCLE -- SEE IF 5 MARKS ALREADY\n\t\tAD\tONE\n\t\tCOM\n\t\tAD\tFIVE\n\t\tEXTEND\n\t\tBZMF\t5MKALARM\t# CAN'T RECYCLE -- TOO MANY MARKS -- ALARM\n\t\tINCR\tMARKCNTR\t# OF FOR RECYCLE -- INCR COUNTER\n\t\tTCF\tGETMKS +3\t# GO DISPLAY MARK VB\n\n"
  },
  {
    "path": "Luminary099/ASCENT_GUIDANCE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tASCENT_GUIDANCE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t843-856\n# Mod history:\t2009-05-23 HG\tTranscribed from page images.\n#\t\t2009-06-05 RSB\tFixed a couple of typos.\n#\t\t2009-06-07 RSB\tCorrected a typo.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 843\n\t\tBANK\t34\n\t\tSETLOC\tASCFILT\n\t\tBANK\n\n\t\tEBANK=\tDVCNTR\n\n\t\tCOUNT*\t$$/ASENT\n\nATMAG\t\tTC\tPHASCHNG\n\t\tOCT\t00035\n\t\tTC\tINTPRET\n\t\tBON\n\t\t\tFLRCS\n\t\t\tASCENT\n\t\tDLOAD\tDSU\n\t\t\tABDVCONV\n\t\t\tMINABDV\n\t\tBMN\tCLEAR\n\t\t\tASCTERM4\n\t\t\tSURFFLAG\n\t\tCLEAR\tSLOAD\n\t\t\tRENDWFLG\n\t\t\tBIT3H\n\t\tDDV\tEXIT\n\t\t\tABDVCONV\n\t\tDXCH\tMPAC\n\t\tDXCH\t1/DV3\n\t\tDXCH\t1/DV2\n\t\tDXCH\t1/DV1\n\t\tDXCH\t1/DV0\n\t\tTC\tINTPRET\n\t\tDLOAD\tDAD\n\t\t\t1/DV0\n\t\t\t1/DV1\n\t\tDAD\tDAD\n\t\t\t1/DV2\n\t\t\t1/DV3\n\t\tDMP\tDMP\n\t\t\tVE\n\t\t\t2SEC(9)\n\t\tSL3\tPDDL\n\t\t\tTBUP\n\t\tSR1\tDAD\n\t\tDSU\n\t\t\t6SEC(18)\n\t\tSTODL\tTBUP\n\t\t\tVE\n\t\tSR1\tDDV\n\t\t\tTBUP\n\t\tSTCALL\tAT\n# Page 844\n\t\t\tASCENT\nBIT3H\t\tOCT\t4\n\n# Page 845\n\t\tBANK\t30\n\t\tSETLOC\tASENT\n\t\tBANK\n\t\tCOUNT*\t$$/ASENT\n\nASCENT\t\tVLOAD\tABVAL\n\t\t\tR\n\t\tSTOVL\t/R/MAG\n\t\t\tZAXIS1\n\t\tDOT\tSL1\n\t\t\tV\t\t# Z.V = ZDOT*2(-8).\n\t\tSTOVL\tZDOT\t\t# ZDOT*2(-7)\n\t\t\tZAXIS1\n\t\tVXV\tVSL1\n\t\t\tUNIT/R/\t\t# Z X UR = LAXIS*2(-2)\n\t\tSTORE\tLAXIS\t\t# LAXIS*2(-1)\n\t\tDOT\tSL1\n\t\t\tV\t\t# L.V = YDOT*2(-8).\n\t\tSTCALL\tYDOT\t\t# YDOT * 2(-7)\n\t\t\tYCOMP\n\t\tVLOAD\n\t\t\tGDT1/2\t\t# LOAD GDT1/2*2(-7) M/CS.\n\t\tV/SC\tDOT\n\t\t\t2SEC(18)\n\t\t\tUNIT/R/\t\t# G.UR*2(9) = GR*2(9).\n\t\tPDVL\tVXV\t\t# STORE IN PDL(0)\n\t\t\tUNIT/R/\t\t# LOAD UNIT/R/ *2(-1)\n\t\t\tV\t\t# UR*2(-1) X V*2(-7) = H/R*2(-8).\n\t\tVSQ\tDDV\t\t# H(2)/R(2)*2(-16).\n\t\t\t/R/MAG\t\t# H(2)/R(3)*2(9).\n\t\tSL1\tDAD\n\t\tSTADR\n\t\tSTODL\tGEFF\t\t# GEFF*2(10)m/CS/CS.\n\t\t\tZDOTD\n\t\tDSU\n\t\t\tZDOT\n\t\tSTORE\tDZDOT\t\t# DZDOT = (ZDOTD - ZDOT) * 2(7) M/CS.\n\t\tVXSC\tPDDL\n\t\t\tZAXIS1\n\t\t\tYDOTD\n\t\tDSU\n\t\t\tYDOT\n\t\tSTORE\tDYDOT\t\t# DYDOT = (YDOTD - YDOT) *2(7) M/CS.\n\t\tVXSC\tPDDL\n\t\t\tLAXIS\n\t\t\tRDOTD\n# Page 846\n\t\tDSU\n\t\t\tRDOT\n\t\tSTORE\tDRDOT\t\t# DRDOT = (RDOTD - RDOT) * 2(7) M/CS.\n\t\tVXSC\tVAD\n\t\t\tUNIT/R/\n\t\tVAD\tVSL1\n\t\tSTADR\n\t\tSTORE\tVGVECT\t\t# VG = (DRDOT)R + (DVDOT)L + (DZDOT)Z.\n\t\tDLOAD\tDMP\t\t# LOAD TGO\n\t\t\tTGO\t\t# TGO GEFF\n\t\t\tGEFF\n\t\tVXSC\tVSL1\n\t\t\tUNIT/R/\t\t# TGO GEFF UR\n\t\tBVSU\n\t\t\tVGVECT\t\t# COMPENSATED FOR GEFF\n\t\tSTORE\tVGVECT\t\t# STORE FOR DOWNLINK\n\t\tMXV\tVSL1\t\t# GET VGBODY FOR N85 DISPLAY\n\t\t\tXNBPIP\n\t\tSTOVL\tVGBODY\n\t\t\tVGVECT\n\t\tABVAL\tBOFF\t\t# MAGNITUDE OF VGVECT\n\t\t\tFLRCS\t\t# IF FLRCS=0,D0 NORMAL GUIDANCE\n\t\t\tMAINENG\n\t\tDDV\t\t\t# USE TGO=VG/AT WITH RCS\n\t\t\tAT/RCS\n\t\tSTCALL\tTGO\t\t# THIS WILL BE USED ON NEXT CYCLE\n\t\t\tASCTERM2\nMAINENG\t\tDDV\tPUSH\t\t# VG/VE IN PDL(0)\t\t(2)\n\t\t\tVE\n\t\tDMP\tBDSU\t\t# 1 - KT VG/VE\n\t\t\tKT1\n\t\t\tNEARONE\n\t\tDMP\tDMP\t\t# TBUP VG(1-KT VG/VE)/VE\t(0)\n\t\t\tTBUP\t\t# \t= TGO\n\t\tDSU\t\t\t# COMPENSATE FOR TAILOFF\n\t\t\tTTO\n\t\tSTORE\tTGO\n\t\tSR\tDCOMP\n\t\t\t11D\n\t\tSTODL\tTTOGO\t\t# TGO *2(-28) CS\n\t\t\tTGO\n\t\tBON\tDSU\n\t\t\tIDLEFLAG\n\t\t\tT2TEST\n\t\t\t4SEC(17)\t# ( TGO - 4 )*2(-17) CS.\n\t\tBMN\n\t\t\tENGOFF\nT2TEST\t\tDLOAD\n\t\t\tTGO\n\t\tDSU\tBMN\t\t# IF TGO - T2 NEG., GO TO CMPONENT\n# Page 847\n\t\t\tT2A\n\t\t\tCMPONENT\n\t\tDLOAD\tDSU\n\t\t\tTBUP\n\t\t\tTGO\n\t\tDDV\tCALL\t\t# 1- TGO/TBUP\n\t\t\tTBUP\n\t\t\tLOGSUB\n\t\tSL\tPUSH\t\t# -L IN PDL(0)\t\t\t(2)\n\t\t\t5\n\t\tBDDV\tBDSU\t\t# -TGO/L*2(-17)\n\t\t\tTGO\n\t\t\tTBUP\t\t# TBUP + TGO/L = D12*2(-17)\n\t\tPUSH\tBON\t\t# STORE IN PDL(2)\t\t(4)\n\t\t\tFLPC\t\t# IF FLPC = 1, GO TO CONST\n\t\t\tNORATES\n\t\tDLOAD\tDSU\n\t\t\tTGO\n\t\t\tT3\n\t\tBPL\tSET\t\t# FLPC=1\n\t\t\tRATES\n\t\t\tFLPC\nNORATES\t\tDLOAD\n\t\t\tHI6ZEROS\n\t\tSTORE\tPRATE\t\t# B = 0\n\t\tSTORE\tYRATE\t\t# D = 0\n\t\tGOTO\n\t\t\tCONST\t\t# GO TO CONST\nRATES\t\tDLOAD\tDSU\n\t\t\tTGO\n\t\t\t02D\t\t# TGO - D12 = D21*2(-17)\n\t\tPUSH\tSL1\t\t# IN PDL(4)\t\t\t(6)\n\t\tBDSU\tSL3\t\t# (1/2TGO - D21)*2(-13) = E * 2(-13)\n\t\t\tTGO\t\t#\t\t\t\t(8)\n\t\tPDDL\tDMP\t\t# IN PDL(6)\n\t\t\tTGO\n\t\t\tRDOT\t\t# RDOT TGO * 2(-24)\n\t\tDAD\tDSU\t\t# R + RDOT TGO\n\t\t\t/R/MAG\t\t# R + RDOT TGO - RCO\n\t\t\tRCO\t\t# MPAC = -DR *2(-24).\n\t\tPDDL\tDMP\t\t# -DR IN PDL(8)\t\t\t(10)\n\t\t\tDRDOT\n\t\t\t04D\t\t# D21 DRDOT*2(-24)\n\t\tDAD\tSL2\t\t# (D21 DRDOT-DR)*2(-22)\t\t(8)\n\t\tDDV\tDDV\n\t\t\t06D\t\t# (D21 DRDOT-DR)/E*2(-9)\n\t\t\tTGO\n\t\tSTORE\tPRATE\t\t# B * 2(8)\n\t\tBMN\tDLOAD\t\t# B>0 NOT PERMITTED\n\t\t\tCHKBMAG\n# Page 848\n\t\t\tHI6ZEROS\n\t\tSTCALL\tPRATE\n\t\t\tPROK\nCHKBMAG\t\tSR4\tDDV\t\t# B*2(4)\n\t\t\tTBUP\t\t# (B / TAU) * 2(21)\n\t\tDSU\tBPL\n\t\t\tPRLIMIT\t\t# ( B / TAU ) = 2(21) MAX.\n\t\t\tPROK\n\t\tDLOAD\tDMP\n\t\t\tPRLIMIT\n\t\t\tTBUP\t\t# B MAX. * 2(4)\n\t\tSL4\t\t\t# BMAX*2(8)\n\t\tSTORE\tPRATE\nPROK\t\tDLOAD\n\t\t\tTGO\n\t\tDMP\tDAD\t\t# YDOT TGO\n\t\t\tYDOT\n\t\t\tY\t\t# Y + YDOT TGO\n\t\tDSU\tPDDL\t\t# Y + YDOT TGO - YCO\n\t\t\tYCO\t\t# MPAC = - DY*(-24.) IN PDL(8)\t(10)\n\t\t\tDYDOT\n\t\tDMP\tDAD\t\t# D21 DYDOT - DY\t\t(8)\n\t\t\t04D\n\t\tSL2\tDDV\t\t# (D21 DYDOT - DY)/E*2(-9)\n\t\tDDV\tSETPD\t\t# (D21 DYDOT - DY)/E TGO*2(8)\n\t\t\tTGO\t\t#\t= D*2(8)\n\t\t\t04\n\t\tSTORE\tYRATE\nCONST\t\tDLOAD\tDMP\t\t# LOAD B*2(8)\n\t\t\tPRATE\t\t# B D12*2(-9)\n\t\t\t02D\n\t\tPDDL\tDDV\t\t# D12 B IN PDL(4)\t(6)\n\t\t\tDRDOT\t\t# LOAD DRDOT*2(-7)\n\t\t\t00D\t\t# -DRDOT/L*2(-7)\n\t\tSR2\tDSU\t\t# (-DRDOT/L-D12 B)=A*2(-9)\t(4)\n\t\tSTADR\n\t\tSTODL\tPCONS\n\t\t\tYRATE\t\t# D*2(8)\n\t\tDMP\tPDDL\t\t# D12 D,EXCH WITH -L IN PDL(0)\t(2,2)\n\t\tBDDV\tSR2\t\t# -DYDOT/L*2(-9)\n\t\t\tDYDOT\n\t\tDSU\t\t\t# (-DYDOT/L-D12 D)=C*2(-9)\n\t\t\t00D\n\t\tSTORE\tYCONS\nCMPONENT\tSETPD\tDLOAD\n\t\t\t00D\n \t\t\t100CS\n \t\tDMP\n\t\t\tPRATE\t\t# B(T-T0)*2(-9)\n\t\tDAD\tDDV\t\t# (A+B(T-T0))*2(-9)\n# Page 849\n\t\t\tPCONS\t\t# (A+B(T-T0))/TBUP*2(8)\n\t\t\tTBUP\n\t\tSL1\tDSU\n\t\t\tGEFF\t\t# ATR*2(9)\n\t\tSTODL\tATR\n\t\t\t100CS\n\t\tDMP\tDAD\n\t\t\tYRATE\n\t\t\tYCONS\t\t# (C+D(T-T0))*2(-9)\n\t\tDDV\tSL1\n\t\t\tTBUP\n\t\tSTORE\tATY\t\t# ATY*2(9)\n\t\tVXSC\tPDDL\t\t# ATY UY*2(8)\t\t(6)\n\t\t\tLAXIS\n\t\t\tATR\n\t\tVXSC\tVAD\n\t\t\tUNIT/R/\n\t\tVSL1\tPUSH\t\t# AH*2(9) IN PDL(0)\t(6)\n\t\tABVAL\tPDDL\t\t# AH(2) IN PDL(34)\n\t\t\tAT\t\t# AHMAG IN PDL(6)\t(8)\n\t\tDSQ\tDSU\t\t# (AT(2)-AH(2))*2(18)\n\t\t\t34D\t\t# =ATP2*2(18)\n\t\tPDDL\tPUSH\t\t#\t\t\t(12)\n\t\t\tAT\n\t\tDSQ\tDSU\t\t# (AT(2)KR(2)-AH(2))*2(18)\t(10)\n\t\t\t34D\t\t# =ATP3*2(18)\n\t\tBMN\tDLOAD\t\t# IF ATP3 NEG,GO TO NO-ATP\n\t\t\tNO-ATP\t\t# LOAD ATP2, IF ATP3 POS\n\t\t\t8D\n\t\tSQRT\tGOTO\t\t# ATP*2(9)\n\t\t\tAIMER\nNO-ATP\t\tDLOAD\tBDDV\t\t# KR AT/AH = KH\t\t(8)\n\t\t\t6D\n\t\tVXSC\t\t\t# KH AG*2(9)\n\t\t\t00D\n\t\tSTODL\t00D\t\t# STORE NEW AH IN PDL(0)\n\t\t\tHI6ZEROS\nAIMER\t\tSIGN\n\t\t\tDZDOT\n\t\tSTORE\tATP\n\t\tVXSC\n\t\t\tZAXIS1\t\t# ATP ZAXIS *2(8).\n\t\tVSL1\tVAD\t\t# AT*2(0)\n\t\t\t00D\n\t\tSTORE\tUNFC/2\t\t# WILL BE OVERWRITTEN IF IN VERT. RISE.\n\t\tSETPD\tBON\n\t\t\t00D\n\t\t\tFLPI\n\t\t\tP12RET\n\t\tBON\n# Page 850\n\t\t\tFLVR\n\t\t\tCHECKALT\nMAINLINE\tVLOAD\tVCOMP\n\t\t\tUNIT/R/\n\t\tSTODL\tUNWC/2\n\t\t\tTXO\n\t\tDSU\tBPL\n\t\t\tPIPTIME\n\t\t\tASCTERM\n\t\tBON\n\t\t\tROTFLAG\n\t\t\tANG1CHEK\nCLRXFLAG\tCLEAR\tCLEAR\n\t\t\tNOR29FLG\t# START r29 IN ASCENT PHASE.\n\t\t\tXOVINFLG\t# ALLOW X-AXIS OVERRIDE\nASCTERM\t\tEXIT\n\t\tCA\tFLAGWRD9\n\t\tMASK\tFLRCSBIT\n\t\tCCS\tA\n\t\tTCF\tASCTERM3\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tFINDCDUW -2\nASCTERM1\tEXIT\n +1\t\tCA\tFLAGWRD9\t# INSURE THAT THE NOUN 63 DISPLAY IS\n \t\tMASK\tFLRCSBIT\t# BYPASSED IF WE ARE IN THE RCS TRIMMING\n\t\tCCS\tA\t\t# MODE OF OPERATION\n\t\tTCF\tASCTERM3\n\t\tCA\tFLAGWRD8\t# BYPASS DISPLAYS IF ENGINE FAILURE IS\n\t\tMASK\tFLUNDBIT\t# INDICATED.\n\t\tCCS\tA\n\t\tTCF\tASCTERM3\n\t\tCAF\tV06N63*\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPR\n\t\tTCF\tASCTERM3\nASCTERM2\tEXIT\nASCTERM3\tTCF\tENDOFJOB\nASCTERM4\tEXIT\n\t\tINHINT\n\t\tTC\tIBNKCALL\t# NO GUIDANCE THIS CYCLE -- HENCE ZERO\n\t\tCADR\tZATTEROR\t# THE DAP COMMANDED ERRORS.\n\t\tTCF\tASCTERM1 +1\n\nCHECKALT\tDLOAD\tDSU\n\t\t\t/R/MAG\n\t\t\t/LAND/\n\t\tDSU\tBMN\t\t# IF H LT 25K CHECK Z AXIS ORIENTATION\n\t\t\t25KFT\n\t\t\tCHECKYAW\n# Page 851\nEXITVR\t\tCLEAR\tBON\n\t\t\tFLVR\n\t\t\tROTFLAG\n\t\t\tMAINLINE\n\t\tDLOAD\tDAD\n\t\t\tPIPTIME\n\t\t\t10SECS\n\t\tSTCALL\tTXO\n\t\t\tMAINLINE\nEXITVR1\t\tCLRGO\n\t\t\tROTFLAG\n\t\t\tEXITVR\n\n\t\tSETLOC\tASENT1\n\t\tBANK\n\t\tCOUNT*\t$$/ASENT\n\nANG1CHEK\tVLOAD\tDOT\n\t\t\tUNFC/2\n\t\t\tXNBPIP\n\t\tDSU\tBPL\n\t\t\tCOSTHET1\n\t\t\tOFFROT\n\t\tVLOAD\tDOT\n\t\t\tXNBPIP\n\t\t\tUNIT/R/\n\t\tDSU\tBMN\n\t\t\tCOSTHET2\n\t\t\tKEEPVR1\nOFFROT\t\tCLRGO\n\t\t\tROTFLAG\n\t\t\tCLRXFLAG\n\n\t\tBANK\t7\n\t\tSETLOC\tASENT2\n\t\tBANK\n\t\tCOUNT*\t$$/ASENT\n\nSETXFLAG\t=\tCHECKYAW\n\nCHECKYAW\tSET\n\t\t\tXOVINFLG\t# PROHIBIT X-AXIS OVERRIDE\n\t\tDLOAD\tVXSC\n\t\t\tATY\n\t\t\tLAXIS\n\t\tPDDL\tVXSC\n\t\t\tATP\n\t\t\tZAXIS1\n\t\tVAD\tUNIT\n\t\tPUSH\tDOT\n# Page 852\n\t\t\tYNBPIP\n\t\tABS\tDSU\n\t\t\tSIN5DEG\n\t\tBPL\tDLOAD\n\t\t\tKEEPVR\n\t\t\tRDOT\n\t\tDSU\tBPL\n\t\t\t40FPS\n\t\t\tEXITVR1\n\t\tGOTO\n\t\t\tKEEPVR\n\n\t\tBANK\t5\n\t\tSETLOC\tASENT3\n\t\tBANK\n\t\tCOUNT*\t$$/ASENT\n\nSIN5DEG\t\t2DEC\t0.08716 B-2\n40FPS\t\t2DEC\t0.12192 B-7\n\n\t\tBANK\t14\n\t\tSETLOC\tASENT4\n\t\tBANK\n\t\tCOUNT*\t$$/ASENT\n\nKEEPVR\t\tVLOAD\tSTADR\t\t# RECALL LOSVEC FROM PUSHLIST\n\t\tSTORE\tUNWC/2\nKEEPVR1\t\tVLOAD\n\t\t\tUNIT/R/\n\t\tSTCALL\tUNFC/2\n\t\t\tASCTERM\n\nENGOFF\t\tRTB\n\t\t\tLOADTIME\n\t\tDSU\tDAD\n\t\t\tPIPTIME\n\t\t\tTTOGO\n\t\tDCOMP\tEXIT\n\t\tTC\tTPAGREE\t\t# FORCE SIGN AGREEMENT ON MPAC, MPAC +1.\n\t\tCAF\tEBANK7\n\t\tTS\tEBANK\n\t\tEBANK=\tTGO\n\t\tINHINT\n\t\tCCS\tMPAC +1\n\t\tTCF\t+3\t\t# C(A) = DT - 1 BIT\n\t\tTCF\t+2\t\t# C(A) = 0\n\t\tCAF\tZERO\t\t# C(A) = 0\n\t\tAD\tBIT1\t\t# C(A) = 1 BIT OR DT.\n# Page 853\n\t\tTS\tENGOFFDT\n\t\tTC\tTWIDDLE\n\t\tADRES\tENGOFF1\n\t\tTC\tPHASCHNG\n\t\tOCT\t47014\n\t\t-GENADR\tENGOFFDT\n\t\tEBANK=\tTGO\n\t\t2CADR\tENGOFF1\n\n\t\tTC\tINTPRET\n\t\tSET\tGOTO\n\t\t\tIDLEFLAG\t# DISABLE DELTA-V MONITOR\n\t\t\tT2TEST\n\nENGOFF1\t\tTC\tIBNKCALL\t# SHUT OFF THE ENGINE.\n\t\tCADR\tENGINOF2\n\n\t\tCAF\tPRIO17\t\t# SET UP A JOB FOR THE ASCENT GUIDANCE\n\t\tTC\tFINDVAC\t\t# POSTBURN LOGIC.\n\t\tEBANK=\tWHICH\n\t\t2CADR\tCUTOFF\n\n\t\tTC\tPHASCHNG\n\t\tOCT \t07024\n\t\tOCT\t17000\n\t\tEBANK=\tTGO\n\t\t2CADR\tCUTOFF\n\n\t\tTCF\tTASKOVER\n\nCUTOFF\t\tTC\tUPFLAG\t\t# SET FLRCS FLAG.\n\t\tADRES\tFLRCS\n\n -5\t\tCAF\tV16N63\n \t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\t+3\n\t\tTCF\tCUTOFF1\n\t\tTCF\t-5\n\n +3\t\tTC\tPOSTJUMP\n \t\tCADR\tTERMASC\n\nCUTOFF1\t\tINHINT\n\t\tTC\tIBNKCALL\t# ZERO ATTITUDE ERRORS BEFORE REDUCINT DB.\n\t\tCADR\tZATTEROR\n\t\tTC\tIBNKCALL\n\t\tCADR\tSETMINDB\n\t\tTC\tPOSTJUMP\n\t\tCADR\tCUTOFF2\n# Page 854\n\nV16N63\t\tVN\t1663\n\t\tBANK\t30\n\t\tSETLOC\tASENT5\n\t\tBANK\n\t\tCOUNT*\t$$/ASENT\n\nCUTOFF2\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tCAF\tV16N85C\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tTERMASC\n\t\tTCF\t+2\t\t# PROCEED\n\t\tTCF\tCUTOFF2\n\nTERMASC\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tINHINT\t\t\t# RESTORE DEADBAND DESIRED BY ASTRONAUT.\n\t\tTC\tIBNKCALL\n\t\tCADR\tRESTORDB\n\t\tTC\tDOWNFLAG\t# DISALLOW ABORTS AT THIS TIME.\n\t\tADRES\tLETABORT\n\t\tTCF\tGOTOPOOH\n\nV16N85C\t\tVN\t1685\n\n\t\tBANK 27\n\t\tSETLOC\tASENT1\n\t\tBANK\n\t\tCOUNT* $$/ASENT\n\nYCOMP\t\tVLOAD\tDOT\n\t\t\tUNIT/R/\n\t\t\tQAXIS\n\t\tSL2\tDMP\n\t\t\tRCO\n\t\tSTORE\tY\n\t\tRVQ\n\n\t\tBANK\t30\n\t\tSETLOC\tASENT\n\t\tBANK\n# Page 855\n100CS\t\tEQUALS\t2SEC(18)\nT2A\t\tEQUALS\t2SEC(17)\n4SEC(17)\t2DEC\t400 B-17\n2SEC(17)\t2DEC\t200 B-17\nT3\t\t2DEC\t1000 B-17\n6SEC(18)\t2DEC\t600 B-18\nBIT4H\t\tOCT\t10\n2SEC(9)\t\t2DEC\t200 B-9\nV06N63*\t\tVN\t0663\nV06N76\t\tVN\t0676\nV06N33A\t\tVN\t0633\n\n\t\tBANK\t33\n\t\tSETLOC\tASENT6\n\t\tBANK\n\t\tCOUNT*\t$$/ASENT\n\nKT1\t\t2DEC\t0.5000\nPRLIMIT\t\t2DEC\t-.0639\t\t# (B/TBUP)MIN=-.1FT.SEC(-3)\nMINABDV\t\t2DEC\t.0356 B-5\t# 10 PERCENT BIGGER THAN GRAVITY\n1/DV0\t\t=\tMASS1\n\n# Page 856\n# THE LOGARITHM SUBROUTINE\n\n\t\tBANK\t24\n\t\tSETLOC\tFLOGSUB\n\t\tBANK\n\n# INPUT ..... X IN MPAC\n# OUTPUT ..... -LOG(X) IN MPAC\n\nLOGSUB\t\tNORM\tBDSU\n\t\t\tMPAC +6\n\t\t\tNEARONE\n\t\tEXIT\n\t\tTC\tPOLY\n\t\tDEC\t6\n\t\t2DEC\t.0000000060\n\t\t2DEC\t-.0312514377\n\t\t2DEC\t-.0155686771\n\t\t2DEC\t-.0112502068\n\t\t2DEC\t-.0018545108\n\t\t2DEC\t-.0286607906\n\t\t2DEC\t.0385598563\n\t\t2DEC\t-.0419361902\n\n\t\tCAF\tZERO\n\t\tTS\tMPAC +2\n\t\tEXTEND\n\t\tDCA\tCLOG2/32\n\t\tDXCH\tMPAC\n\t\tDXCH\tBUF +1\n\t\tCA\tMPAC +6\n\t\tTC\tSHORTMP\n\t\tDXCH\tMPAC +1\n\t\tDXCH\tMPAC\n\t\tDXCH\tBUF +1\n\t\tDAS\tMPAC\n\t\tTC\tINTPRET\n\t\tDCOMP\tRVQ\n\nCLOG2/32\t2DEC\t.0216608494\n\n"
  },
  {
    "path": "Luminary099/ASSEMBLY_AND_OPERATION_INFORMATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tASSEMBLY_AND_OPERATION_INFORMATION.agc\n# Purpose:\tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n#\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim.lawton@gmail.com>\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t001-027\n# Mod history:\t2009-05-16\tJVL\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#    16:27 JULY 14, 1969\n\n# Page 1\n\n# THIS LGC PROGRAM IS INTENDED FOR USE IN THE LM DURING THE MANNED LUNAR LANDING MISSION OR ANY SUBSET THEREOF.\n# THE DETAILS OF IMPLEMENTATION ARE SPECIFIED IN REPORT R-567, AS AMENDED.\n\n# \t\t\t\tGUIDANCE SYSTEM OPERATIONS PLAN\n#\t\t\tFOR MANNED LM EARTH ORBITAL AND LUNAR MISSIONS\n#\t\t\t\t    USING PROGRAM LUMINARY\n\n# THIS PROGRAM AND R-567 HAVE BEEN PREPARED BY THE INSTRUMENTATION LABORATORY, MASSACHUSETTS INSTITUTE OF\n# TECHNOLOGY, 75 CAMBRIDGE PARKWAY, CAMBRIDGE, MASSACHUSETTS, UNDER PROJECT 55-238-70, SPONSORED BY THE MANNED\n# SPACECRAFT CENTER OF THE NATIONAL AERONAUTICS AND SPACE ADMINISTRATION, CONTRACT NAS 9-4065.\n\n#\t\t\t  THIS PROGRAM IS REFERRED TO AS LUMINARY 1A\n\n# Page 2\n\n# TABLE OF LOG CARDS\n#\tASSEMBLY AND OPERATION INFORMATION\n#\tTAGS FOR RELATIVE SETLOC AND BLANK BANK CARDS\n#\tCONTROLLED CONSTANTS\n#\tINPUT/OUTPUT CHANNEL BIT DESCRIPTIONS\n#\tFLAGWORD ASSIGNMENTS\n#\tSUBROUTINE CALLS\n\n# TABLE OF SUBROUTINE LOG SECTIONS\n#\tLUMERASE\n#\t\tERASABLE ASSIGNMENTS\n#\tLNYAIDE\n#\t\tINTERRUPT LEAD INS\n#\t\tT4RUPT PROGRAM\n#\t\tRCS FAILURE MONITOR\n#\t\tDOWNLINK LISTS\n#\t\tAGS INITIALIZATION\n#\t\tFRESH START AND RESTART\n#\t\tRESTART TABLES\n#\t\tAOTMARK\n#\t\tEXTENDED VERBS\n#\t\tPINBALL NOUN TABLES\n#\t\tLEM GEOMETRY\n#\t\tIMU COMPENSATION PACKAGE\n#\t\tR63\n#\t\tATTITUDE MANEUVER ROUTINE\n#\t\tGIMBAL LOCK AVOIDANCE\n#\t\tKALCMANU STEERING\n#\t\tSYSTEM TEST STANDARD LEAD INS\n#\t\tIMU PERFORMANCE TESTS 2\n#\t\tIMU PERFORMANCE TESTS 4\n#\t\tPINBALL GAMES BUTTONS AND LIGHTS\n#\t\tR60,R62\n#\t\tS-BAND ANTENNA FOR LM\n#\tLEMP20S\n#\t\tRADAR LEADIN ROUTINES\n#\t\tP20-P25\n#\tLEMP30S\n#\t\tP30,P37\n#\t\tP32-P35, P72-P75\n#\t\tGENERAL LAMBERT AIMPOINT GUIDANCE\n#\tKISSING\n#\t\tGROUND TRACKING DETERMINATION PROGRAM - P21\n#\t\tP34-P35, P74-P75\n#\t\tR31\n#\t\tP76\n#\t\tR30\n#\t\tSTABLE ORBIT - P38-P39\n# Page 3\n#\tFLY\n#\t\tBURN, BABY, BURN -- MASTER IGNITION ROUTINE\n#\t\tP40-P47\n#\t\tTHE LUNAR LANDING\n#\t\tTHROTTLE CONTROL ROUTINES\n#\t\tLUNAR LANDING GUIDANCE EQUATIONS\n#\t\tP70-P71\n#\t\tP12\n#\t\tASCENT GUIDANCE\n#\t\tSERVICER\n#\t\tLANDING ANALOG DISPLAYS\n#\t\tFINDCDUW -- GUIDAP INTERFACE\n#\tLEMP50S\n#\t\tP51-P53\n#\t\tLUNAR AND SOLAR EPHEMERIDES SUBROUTINES\n#\tSKIPPER\n#\t\tDOWN-TELEMETRY PROGRAM\n#\t\tINTER-BANK COMMUNICATION\n#\t\tINTERPRETER\n#\t\tFIXED-FIXED CONSTANT POOL\n#\t\tINTERPRETIVE CONSTANTS\n#\t\tSINGLE PRECISION SUBROUTINES\n#\t\tEXECUTIVE\n#\t\tWAITLIST\n#\t\tLATITUDE LONGITUDE SUBROUTINES\n#\t\tPLANETARY INERTIAL ORIENTATION\n#\t\tMEASUREMENT INCORPORATION\n#\t\tCONIC SUBROUTINES\n#\t\tINTEGRATION INITIALIZATION\n#\t\tORBITAL INTEGRATION\n#\t\tINFLIGHT ALIGNMENT ROUTINES\n#\t\tPOWERED FLIGHT SUBROUTINES\n#\t\tTIME OF FREE FALL\n#\t\tAGC BLOCK TWO SELF-CHECK\n#\t\tPHASE TABLE MAINTENANCE\n#\t\tRESTARTS ROUTINE\n#\t\tIMU MODE SWITCHING ROUTINES\n#\t\tKEYRUPT, UPRUPT\n#\t\tDISPLAY INTERFACE ROUTINES\n#\t\tSERVICE ROUTINES\n#\t\tALARM AND ABORT\n#\t\tUPDATE PROGRAM\n#\t\tRTB OP CODES\n#\tLMDAP\n#\t\tT6-RUPT PROGRAMS\n#\t\tDAP INTERFACE SUBROUTINES\n#\t\tDAPIDLER PROGRAM\n#\t\tP-AXIS RCS AUTOPILOT\n#\t\tQ,R-AXIS RCS AUTOPILOT\n#\t\tTJET LAW\n# Page 4\n#\t\tKALMAN FILTER\n#\t\tTRIM GIMBAL CONTROL SYSTEM\n#\t\tAOSTASK AND AOSJOB\n#\t\tSPS BACK-UP RCS CONTROL\n#\n#\tSYMBOL TABLE LISTING\n#\tUNREFERENCED SYMBOL LISTING\n#\tERASABLE & EQUALS CROSS-REFERENCE TABLE\n#\tSUMMARY OF SYMBOL TABLE LISTINGS\n#\tMEMORY TYPE & AVAILABILITY DISPLAY\n#\tCOUNT TABLE\n#\tPARAGRAPHS GENERATED FOR THIS ASSEMBLY\n#\tOCTAL LISTING\n#\tOCCUPIED LOCATIONS TABLE\n#\tSUBROS CALLED & PROGRAM STATUS\n\n# Page 5\n# VERB LIST FOR LUMINARY\n\n# REGULAR VERBS\n\n# 00 \tNOT IN USE\n# 01\tDISPLAY OCTAL COMP 1 IN R1\n# 02\tDISPLAY OCTAL COMP 2 IN R1\n# 03 \tDISPLAY OCTAL COMP 3 IN R1\n# 04\tDISPLAY OCTAL COMP 1,2 IN R1,R2\n# 05\tDISPLAY OCTAL COMP 1,2,3 IN R1,R2,R3\n# 06\tDISPLAY DECIMAL IN R1 OR R1,R2 OR R1,R2,R3\n# 07\tDISPLAY DP DECIMAL IN R1,R2 (TEST ONLY)\n# 08\n# 09\n# 10\n# 11\tMONITOR OCTAL COMP 1 IN R1\n# 12\tMONITOR OCTAL COMP 2 IN R1\n# 13 \tMONITOR OCTAL COMP 3 IN R1\n# 14\tMONITOR OCTAL COMP 1,2 IN R1,R2\n# 15\tMONITOR OCTAL COMP 1,2,3 IN R1,R2,R3\n# 16\tMONITOR DECIMAL IN R1 OR R1,R2 OR R1,R2,R3\n# 17\tMONITOR DP DECIMAL IN R1,R2 (TEST ONLY)\n# 18\n# 19\n# 20\n# 21\tLOAD COMPONENT 1 INTO R1\n# 22\tLOAD COMPONENT 2 INTO R2\n# 23\tLOAD COMPONENT 3 INTO R3\n# 24\tLOAD COMPONENT 1,2, INTO R1,R2\n# 25\tLOAD COMPONENT 1,2,3 INTO R1,R2,R3\n# 26\n# 27\tDISPLAY FIXED MEMORY\n# 28\n# 29\n# 30\tREQUEST EXECUTIVE\n# 31\tREQUEST WAITLIST\n# 32\tRECYCLE PROGRAM\n# 33\tPROCEED WITHOUT DSKY INPUTS\n# 34\tTERMINATE FUNCTION\n# 35\tTEST LIGHTS\n# 36\tREQUEST FRESH START\n# 37\tCHANGE PROGRAM (MAJOR MODE)\n# 38\n# 39\n\n# Page 6\n# EXTENDED VERBS\n\n# 40\tZERO CDU-S\n# 41\tCOARSE ALIGN CDU-S\n# 42\tFINE ALIGN IMU\n# 43\tLOAD IMU ATT ERROR METERS\n# 44\tTERMINATE RR CONTINUOUS DESIGNATE (V41N72 OPTION 2)\n# 45\n# 46\n# 47\tINITIALIZE AGS (R47)\n# 48\tREQUEST DAP DATA LOAD ROUTINE (R03)\n# 49\tREQUEST CREW DEFINED MANEUVER ROUTINE (R62)\n# 50\tPLEASE PERFORM\n# 51\n# 52\tMARK X-RETICLE\n# 53\tMARK Y-RETICLE\n# 54\tMARK X OR Y-RETICLE\n# 55 \tINCREMENT AGC TIME (DECIMAL)\n# 56\tTERMINATE TRACKING (P20 + P25)\n# 57\tPERMIT LANDING RADAR UPDATES\n# 58\tINHIBIT LANDING RADAR UPDATES\n# 59\n# 60\tCOMMAND LR TO POSITON 2.\n# 61\tDISPLAY DAP FOLLOWING ATTITUDE ERRORS.\n# 62\tDISPLAY TOTAL ATTITUDE ERRORS WITH RESPECT TO NOUN 22.\n# 63\tSAMPLE RADAR ONCE PER SECOND (R04).\n# 64\tREQUEST S-BAND ANTENNA ROUTINE (R05).\n# 65\tDISABLE U AND V JET FIRINGS DURING DPS BURNS.\n# 66\tVEHICLES ARE ATTACHED.  MOVE THIS VEHICLE STATE TO OTHER VEHICLE.\n# 67\tDISPLAY W MATRIX\n# 68\n# 69\tCAUSE RESTART\n# 70\tUPDATE LIFTOFF TIME\n# 71\tUNIVERSAL UPDATE-BLOCK ADR\n# 72\tUNIVERSAL UPDATE-SINGLE ADR\n# 73\tUPDATE AGC TIME (OCTAL)\n# 74\tINITIALIZE ERASABLE DUMP VIA DOWNLINK\n# 75\tENABLE U AND V JET FIRINGS DURING DPS BURNS.\n# 76\tMINIMUM IMPUSE COMMAND MODE.\n# 77\tRATE COMMAND AND ATTITUDE HOLD MODE\n# 78\tLR SPURIOUS RETURN TEST START (R77)\n# 79\tLR SPURIOUS RETURN TEST STOP\n# 80\tUPDATE LEM STATE VECTOR\n# 81\tUPDATE CSM STATE VECTOR\n# 82\tREQUEST ORBIT PARAM DISPLAY (R30)\n# 83\tREQUEST REND  PARAM DISPLAY (R31)\n# 84\n# 85\tDISPLAY RR LOS AZ AND ELEV\n# 86\n# 87\n# Page 7\n# 88\n# 89\tREQUEST RENDEZVOUS FINAL ATTITUDE ROUTINE (R63)\n# 90\tREQUEST RENDEZVOUS OUT OF PLANE DISPLAY ROUTINE (R36)\n# 91\tDISPLAY BANK SUM\n# 92\tOPERATE IMU PERFORMANCE TEST (P07)\n# 93\tENABLE W MATRIX INITIALIZATION\n# 94\n# 95\tNO UPDATE OF EITHER STATE VECTOR (P20 OR P22)\n# 96\tINTERRUPT INTEGRATION AND GO TO P00\n# 97\tPERFORM ENGINE FAIL PROCEDURE\n# 98\n# 99\tPLEASE ENABLE ENGINE\n\n# Page 8\n# IN THE FOLLOWING NOUN LIST THE :NO LOAD: RESTRICTION MEANS THE NOUN\n# CONTAINS AT LEAST ONE COMPONENT WHICH CANNOT BE LOADED, I.E. OF\n# SCALE TYPE L (MIN/SEC), PP (2 INTEGERS) OR TT (LANDING RADAR POSITION).\n# IN THIS CASE VERBS 24 AND 25 ARE NOT ALLOWED, BUT VERBS 21, 22 OR 23\n# MAY BE USED TO LOAD ANY OF THE NOUN:S COMPONENTS WHICH ARE NOT OF THE\n# ABOVE SCALE TYPES.\n#\n# THE :DEC ONLY: RESTRICTION MEANS ONLY DECIMAL OPERATION IS ALLOWED ON\n# EVERY COMPONENT IN THE NOUN. (NOTE THAT :NO LOAD: IMPLIES :DEC ONLY:.)\n\n# NORMAL NOUNS\t\t\t\t    COMPONENTS\tSCALE AND DECIMAL POINT\t\t\tRESTRICTIONS\n# 00\tNOT IN USE\n# 01\tSPECIFY MACHINE ADDRESS (FRACTIONAL)\t3COMP\t.xxxxx FOR EACH\n# 02\tSPECIFY MACHINE ADDRESS (WHOLE)\t\t3COMP\txxxxx. FOR EACH\n# 03\tSPECIFY MACHINE ADDRESS (DEGREES)\t3COMP\txxx.xx DEG FOR EACH\n# 04\tANGULAR ERROR/DIFFERENCE\t\t1COMP\txxx.xx DEG\n# 05\tANGULAR ERROR/DIFFERENCE\t\t1COMP\txxx.xx DEG\n# 06\tOPTION CODE\t\t\t\t3COMP\tOCTAL ONLY FOR EACH\n# LOADING NOUN 07 WILL SET OR RESET SELECTED BITS IN ANY ERASABLE REGISTER\n# 07\tECADR OF WORD TO BE MODIFIED\t\t3COMP\tOCTAL ONLY FOR EACH\n#\tONES FOR BITS TO BE MODIFIED\n#\t1 TO SET OR 0 TO RESET SELECTED BITS\n# 08\tALARM DATA\t\t\t\t3COMP\tOCTAL ONLY FOR EACH\n# 09\tALARM CODES\t\t\t\t3COMP\tOCTAL ONLY FOR EACH\n# 10\tCHANNEL TO BE SPECIFIED\t\t\t1COMP\tOCTAL ONLY\n# 11\tTIG OF CSI\t\t\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 12\tOPTION CODE\t\t\t\t2COMP\tOCTAL ONLY FOR EACH\n#\t(USED BY EXTENDED VERBS ONLY)\n# 13\tTIG OF CDH\t\t\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 14\tCHECKLIST\t\t\t\t3COMP\txxxxx. FOR EACH\n#\t(USED BY EXTENDED VERBS ONLY)\n#\t(NOUN 25 IS PASTED AFTER DISPLAY)\n# 15\tINCREMENT MACHINE ADDRESS\t\t1COMP\tOCTAL ONLY\n# 16\tTIME OF EVENT\t\t\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t(USED BY EXTENDED VERBS ONLY)\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 17\tSPARE\n# 18\tAUTO MANEUVER BALL ANGLES\t\t3COMP\txxx.xx DEG FOR EACH\n# 19\tSPARE\n# 20\tICDU ANGLES\t\t\t\t3COMP\txxx.xx DEG FOR EACH\n# 21\tPIPAS\t\t\t\t\t3COMP\txxxxx. PULSES FOR EACH\n# 22\tNEW ICDU ANGLES\t\t\t\t3COMP\txxx.xx DEG FOR EACH\n# 23\tSPARE\n# 24\tDELTA TIME FOR AGC CLOCK\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# Page 9\n# 25\tCHECKLIST\t\t\t\t3COMP\txxxxx. FOR EACH\n#\t(USED WITH PLEASE PERFORM ONLY)\n# 26\tPRIORITY/DELAY, ADRES, BBCON\t\t3COMP\tOCTAL ONLY FOR EACH\n# 27\tSELF TEST ON/OFF SWITCH\t\t\t1COMP\txxxxx.\n# 28\tSPARE\n# 29\tSPARE\n# 30\tSPARE\n# 31\tSPARE\n# 32\tTIME FROM PERIGEE\t\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 33\tTIME OF IGNITION\t\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 34\tTIME OF EVENT\t\t\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 35\tTIME FROM EVENT\t\t\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 36\tTIME OF AGC CLOCK\t\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 37\tTIG OF TPI\t\t\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 38\tTIME OF STATE BEING INTEGRATED\t\t3COMP\t00xxx. HRS\t\t\t\tDEC ONLY\n#\t\t\t\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 39\tSPARE\n\n# Page 10\n# MIXED NOUNS\t\t\t\t    COMPONENTS\tSCALE AND DECIMAL POINT\t\t\tRESTRICTIONS\n# 40\tTIME FROM IGNITION/CUTOFF\t\t3COMP\txxBxx  MIN/SEC\t\t\t\tNO LOAD, DEC ONLY\n#\tVG,\t\t\t\t\t\txxxx.x FT/SEC\n#\tDELTA V (ACCUMULATED)\t\t\t\txxxx.x FT.SEC\n# 41\tTARGET\tAZIMUTH\t\t\t\t2COMP\txxx.xx DEG\t\t\t\t(FOR SYSTEM TEST)\n#\t\tELEVATION\t\t\t\txx.xxx DEG\n# 42\tAPOGEE,\t\t\t\t\t3COMP\txxxx.x NAUT MI\t\t\t\tDEC ONLY\n#\tPERIGEE,\t\t\t\t\txxxx.x NAUT MI\n#\tDELTA V (REQUIRED)\t\t\t\txxxx.x FT/SEC\n# 43\tLATITUDE,\t\t\t\t3COMP\txxx.xx DEG\t\t\t\tDEC ONLY\n#\tLONGITUDE,\t\t\t\t\txxx.xx DEG\n#\tALTITUDE\t\t\t\t\txxxx.x NAUT MI\n# 44\tAPOGEE,\t\t\t\t\t3COMP\txxxx.x NAUT MI\t\t\t\tNO LOAD, DEC ONLY\n#\tPERIGEE,\t\t\t\t\txxxx.x NAUT MI\n#\tTFF\t\t\t\t\t\txxBxx  MIN/SEC\n# 45\tMARKS,\t\t\t\t\t3COMP\txxxxx.\t\t\t\t\tNO LOAD, DEC ONLY\n#\tTFI OF NEXT BURN,\t\t\t\txxBxx  MIN/SEC\n#\tMGA\t\t\t\t\t\txxx.xx DEG\n# 46\tAUTOPILOT CONFIGURATION\t\t\t1COMP\tOCTAL ONLY\n# 47\tLEM WEIGHT,\t\t\t\t2COMP\txxxxx. LBS\t\t\t\tDEC ONLY\n# \tCSM WEIGHT\t\t\t\t\txxxxx. LBS\n# 48\tGIMBAL PITCH TRIM,\t\t\t2COMP\txxx.xx DEG\t\t\t\tDEC ONLY\n#\tGIMBAL ROLL TRIM\t\t\t\txxx.xx DEG\n# 49\tDELTA R,\t\t\t\t3COMP\txxxx.x NAUT MI\t\t\t\tDEC ONLY\n#\tDELTA V,\t\t\t\t\txxxx.x FT/SEC\n#\tRADAR DATA SOURCE CODE\t\t\t\txxxxx.\n# 50\tSPARE\n# 51\tS-BAND ANTENNA ANGLES \tPITCH\t\t2COMP\txxx.xx DEG\t\t\t\tDEC ONLY\n#\t\t\t\tYAW\t\t\txxx.xx DEG\n# 52\tCENTRAL ANGLE OF ACTIVE VEHICLE\t\t1COMP\txxx.xx DEG\n# 53\tSPARE\n# 54\tRANGE,\t\t\t\t\t3COMP\txxx.xx NAUT MI\t\t\t\tDEC ONLY\n#\tRANGE RATE,\t\t\t\t\txxxx.x FT/SEC\n#\tTHETA\t\t\t\t\t\txxx.xx DEG\n# 55\tNO. OF APSIDAL CROSSINGS\t\t3COMP\txxxxx.\t\t\t\t\tDEC ONLY\n#\tELEVATION ANGLE\t\t\t\t\txxx.xx DEG\n#\tCENTRAL ANGLE OF PASSIVE VEHICLE\t\txxx.xx DEG\n# 56\tRR LOS\tAZIMUTH\t\t\t\t2COMP\txxx.xx DEG\n#\t\tELEVATION\t\t\t\txxx.xx DEG\n# 57\tDELTA R\t\t\t\t\t1COMP\txxxx.x NAUT MI\t\t\t\tDEC ONLY\n# 58\tPERIGEE ALT (POST TPI)\t\t\t3COMP\txxxx.x NAUT MI\t\t\t\tDEC ONLY\n#\tDELTA V TPI\t\t\t\t\txxxx.x FT/SEC\n#\tDELTA V TPF\t\t\t\t\txxxx.x FT/SEC\n# 59\tDELTA VELOCITY LOS\t\t\t3COMP\txxxx.x FT/SEC FOR EA.\t\t\tDEC ONLY\n# 60\tHORIZONTAL VELOCITY\t\t\t3COMP\txxxx.x FT/SEC\t\t\t\tDEC ONLY\n#\tALTITUDE RATE\t\t\t\t\txxxx.x FT/SEC\n#\tCOMPUTED ALTITUDE\t\t\t\txxxxx. FEET\n# 61\tTIME TO GO IN BRAKING PHASE\t\t3COMP\txxBxx  MIN/SEC\t\t\t\tNO LOAD, DEC ONLY\n#\tTIME FROM IGNITION\t\t\t\txxBxx  MIN/SEC\n# Page 11\n#\tCROSS RANGE DISTANCE\t\t\t\txxxx.x NAUT MI\n# 62\tABSOLUTE VALUE OF VELOCITY\t\t3COMP\txxxx.x FT/SEC\t\t\t\tNO LOAD, DEC ONLY\n#\tTIME FROM IGNITION\t\t\t\txxBxx  MIN/SEC\n#\tDELTA V (ACCUMULATED)\t\t\t\txxxx.x FT/SEC\n# 63\tABSOLUTE VALUE OF VELOCITY\t\t3COMP\txxxx.x FT/SEC\t\t\t\tDEC ONLY\n#\tALTITUDE RATE\t\t\t\t\txxxx.x FT/SEC\n#\tCOMPUTED ALTITUDE\t\t\t\txxxxx. FEET\n# 64\tTIME LEFT FOR REDESIGNATION- LPD ANGLE\t3COMP\txxBxx\t\t\t\t\tNO LOAD, DEC ONLY\n#\tALTITUDE RATE\t\t\t\t\txxxx.x FT/SEC\n#\tCOMPUTED ALTITUDE\t\t\t\txxxxx. FEET\n# 65\tSAMPLED AGC TIME\t\t\t3COMP\t00xxx. HRS.\t\t\t\tDEC ONLY\n#\t(FETCHED IN INTERRUPT)\t\t\t\t000xx. MIN\t\t\t\tMUST LOAD 3 COMPS\n#\t\t\t\t\t\t\t0xx.xx SEC\n# 66\tLR \tRANGE\t\t\t\t2COMP\txxxxx. FEET\t\t\t\tNO LOAD, DEC ONLY\n#\t\tPOSITION\t\t\t\t+0000x\n# 67\tLRVX\t\t\t\t\t3COMP\txxxxx. FT/SEC\n#\tLRVY\t\t\t\t\t\txxxxx. FT/SEC\n#\tLRVZ\t\t\t\t\t\txxxxx. FT/SEC\n# 68\tSLANT RANGE TO LANDING SITE\t\t3COMP\txxxx.x NAUT MI\t\t\t\tNO LOAD, DEC ONLY\n#\tTIME TO GO IN BRAKING PHASE\t\t\txxBxx  MIN/SEC\n#\tLR ALTITUDE - COMPUTED ALTITUDE\t\txxxxx. FEET\n# 69\tSPARE\n# 70\tAOT DETENT CODE/STAR CODE\t\t3COMP\tOCTAL ONLY FOR EACH\n# 71\tAOT DETENT CODE/STAR CODE\t\t3COMP\tOCTAL ONLY FOR EACH\n# 72\tRR\t360 - TRUNNION ANGLE\t\t2COMP\txxx.xx DEG\n#\t\tSHAFT ANGLE\t\t\t\txxx.xx DEG\n# 73\tNEW RR\t360 - TRUNNION ANGLE\t\t2COMP\txxx.xx DEG\n#\t\tSHAFT ANGLE\t\t\t\txxx.xx DEG\n# 74\tTIME FROM IGNITION\t\t\t3COMP\txxBxx  MIN/SEC\t\t\t\tNO LOAD, DEC ONLY\n#\tYAW AFTER VEHICLE RISE\t\t\t\txxx.xx DEG\n#\tPITCH AFTER VEHICLE RISE\t\t\txxx.xx DEG\n# 75\tDELTA ALTITUDE CDH\t\t\t3COMP\txxxx.x NAUT MI\t\t\t\tNO LOAD, DEC ONLY\n#\tDELTA TIME (CDH-CSI OR TPI-CDH)\t\t\txxBxx  MIN/SEC\n#\tDELTA TIME (TPI-CDH OR TPI-NOMTPI)\t\txxBxx  MIN/SEC\n# 76\tDESIRED HORIZONTAL VELOCITY\t\t3COMP\txxxx.x FT/SEC\t\t\t\tDEC ONLY\n#\tDESIRED RADIAL VELOCITY\t\t\t\txxxx.x FT/SEC\n#\tCROSS-RANGE DISTANCE\t\t\t\txxxx.x NAUT MI\n# 77\tTIME TO ENGINE CUTOFF\t\t\t2COMP\txxBxx  MIN/SEC\t\t\t\tNO LOAD, DEC ONLY\n#\tVELOCITY NORMAL TO CSM PLANE\t\t\txxxx.x FT/SEC\n# 78\tRR\tRANGE\t\t\t\t2COMP\txxx.xx NAUT MI\t\t\t\tNO LOAD, DEC ONLY\n#\t\tRANGE RATE\t\t\t\txxxxx. FT/SEC\n# 79\tCURSOR ANGLE\t\t\t\t3COMP\txxx.xx DEG\t\t\t\tDEC ONLY\n#\tSPIRAL ANGLE\t\t\t\t\txxx.xx DEG\n#\tPOSITION CODE\t\t\t\t\txxxxx.\n# 80\tDATA INDICATOR,\t\t\t\t2COMP\txxxxx.\n#\tOMEGA\t\t\t\t\t\txxx.xx DEG\n# 81\tDELTA V (LV)\t\t\t\t3COMP\txxxx.x FT/SEC FOR EACH \t\t\tDEC ONLY\n# Page 12\n# 82\tDELTA V (LV)\t\t\t\t3COMP\txxxx.x FT/SEC FOR EACH\t\t\tDEC ONLY\n# 83\tDELTA V (BODY)\t\t\t\t3COMP\txxxx.x FT/SEC FOR EACH\t\t\tDEC ONLY\n# 84\tDELTA V (OTHER VEHICLE)\t\t\t3COMP\txxxx.x FT/SEC FOR EACH\t\t\tDEC ONLY\n# 85\tVG (BODY)\t\t\t\t3COMP\txxxx.x FT/SEC FOR EACH\t\t\tDEC ONLY\n# 86\tVG (LV)\t\t\t\t\t3COMP\txxxx.x FT/SEC FOR EACH\t\t\tDEC ONLY\n# 87\tBACKUP OPTICS LOS\tAZIMUTH\t\t2COMP\txxx.xx DEG\n#\t\t\t\tELEVATION\t\txxx.xx DEG\n# 88\tHALF UNIT SUN OR PLANET VECTOR\t\t3COMP\t.xxxxx FOR EACH\t\t\t\tDEC ONLY\n# 89\tLANDMARK\tLATITUDE\t\t3COMP\txx.xxx DEG\t\t\t\tDEC ONLY\n#\t\t\tLONGITUDE/2\t\t\txx.xxx DEC\n#\t\t\tALTITUDE\t\t\txxx.xx NAUT MI\n# 90\tY\t\t\t\t\t3COMP\txxx.xx NM\t\t\t\tDEC ONLY\n#\tY DOT\t\t\t\t\t\txxxx.x FPS\n#\tPSI\t\t\t\t\t\txxx.xx DEG\n# 91\tALTITUDE\t\t\t\t3COMP\txxxxxB. NAUT MI\n#\tVELOCITY\t\t\t\t\txxxxx.  FT/SEC\n#\tFLIGHT PATH ANGLE\t\t\t\txxx.xx  DEG\n# 92\tSPARE\n# 93\tDELTA GYRO ANGLES\t\t\t3COMP\txx.xxx DEG FOR EACH\n# 94\tSPARE\n# 95\tSPARE\n# 96 \tSPARE\n# 97\tSYSTEM TEST INPUTS\t\t\t3COMP\txxxxx. FOR EACH\n# 98\tSYSTEM TEST RESULTS AND INPUTS\t\t3COMP\txxxxx.\n#\t\t\t\t\t\t\t.xxxxx\n#\t\t\t\t\t\t\txxxxx.\n# 99\tRMS IN POSITION\t\t\t\t3COMP\txxxxx. FT\t\t\t\tDEC ONLY\n#\tRMS IN VELOCITY\t\t\t\t\txxxx.x FT/SEC\n#\tRMS IN BIAS\t\t\t\t\txx.xxx RADIANS\n\n# Page 13\n# REGISTERS AND SCALING FOR NORMAL NOUNS\n\n# NOUN\t\tREGISTER\t\tSCALE TYPE\n# 00\t\tNOT IN USE\n# 01\t\tSPECIFY ADDRESS\t\tB\n# 02\t\tSPECIFY ADDRESS\t\tC\n# 03\t\tSPECIFY ADDRESS\t\tD\n# 04\t\t\tDSPTEM1\t\tH\n# 05\t\t\tDSPTEM1\t\tH\n# 06\t\t\tOPTION1\t\tA\n# 07\t\t\tXREG\t\tA\n# 08\t\t\tALMCADR\t\tA\n# 09\t\t\tFAILREG\t\tA\n# 10\t\tSPECIFY CHANNEL\t\tA\n# 11\t\t\tTCSI\t\tK\n# 12\t\t\tOPTIONX\t\tA\n# 13\t\t\tTCDH\t\tK\n# 14\t\t\tDSPTEMX\t\tC\n# 15\t\tINCREMENT ADDRESS\tA\n# 16\t\t\tDSPTEMX\t\tK\n# 17\t\tSPARE\n# 18\t\t\tFDAIX\t\tD\n# 19\t\tSPARE\n# 20\t\t\tCDUX\t\tD\n# 21\t\t\tPIPAX\t\tC\n# 22\t\t\tTHETAD\t\tD\n# 23\t\tSPARE\n# 24\t\t\tDSPTEM2 +1\tK\n# 25\t\t\tDSPTEM1\t\tC\n# 26\t\t\tDSPTEM1\t\tA\n# 27\t\t\tSMODE\t\tC\n# 28\t\tSPARE\n# 29\t\tSPARE\n# 30\t\tSPARE\n# 31\t\tSPARE\n# 32\t\t\t-TPER\t\tK\n# 33\t\t\tTIG\t\tK\n# 34\t\t\tDSPTEM1\t\tK\n# 35\t\t\tTTOGO\t\tK\n# 36\t\t\tTIME2\t\tK\n# 37\t\t\tTTPI\t\tK\n# 38\t\t\tTET\t\tK\n# 39\t\tSPARE\n\n# Page 14\n# REGISTERS AND SCALING FOR MIXED NOUNS\n\n# NOUN\t\tCOMP\t\tREGISTER\t\tSCALE TYPE\n# 40\t\t1\t\tTTOGO\t\t\tL\n#\t\t2\t\tVGDISP\t\t\tS\n#\t\t3\t\tDVTOTAL\t\t\tS\n# 41\t\t1\t\tDSPTEM1\t\t\tD\n#\t\t2\t\tDSPTEM1 +1\t\tE\n# 42\t\t1\t\tHAPO\t\t\tQ\n#\t\t2\t\tHPER\t\t\tQ\n#\t\t3\t\tVGDISP\t\t\tS\n# 43\t\t1\t\tLAT\t\t\tH\n#\t\t2\t\tLONG\t\t\tH\n#\t\t3\t\tALT\t\t\tQ\n# 44\t\t1\t\tHAPOX\t\t\tQ\n# \t\t2\t\tHPERX\t\t\tQ\n#\t\t3\t\tTFF\t\t\tL\n# 45\t\t1\t\tTRKMKCNT\t\tC\n#\t\t2\t\tTTOGO\t\t\tL\n#\t\t3\t\t+MGA\t\t\tH\n# 46\t\t1\t\tDAPDATR1\t\tA\n# 47\t\t1\t\tLEMMASS\t\t\tKK\n#\t\t2\t\tCSMMASS\t\t\tKK\n# 48\t\t1\t\tPITTIME\t\t\tNN\n#\t\t2\t\tROLLTIME\t\tNN\n# 49\t\t1\t\tR22DISP\t\t\tQ\n#\t\t2\t\tR22DISP +2\t\tS\n#\t\t3\t\tWHCHREAD\t\tC\n# 50\t\tSPARE\n# 51\t\t1\t\tALPHASB\t\t\tH\n#\t\t2\t\tBETASB\t\t\tH\n# 52\t\t1\t\tACTCENT\t\t\tH\n# 53\t\tSPARE\n# 54\t\t1\t\tRANGE\t\t\tJJ\n#\t\t2\t\tRRATE\t\t\tS\n#\t\t3\t\tRTHETA\t\t\tH\n# 55\t\t1\t\tNN\t\t\tC\n#\t\t2\t\tELEV\t\t\tH\n#\t\t3\t\tCENTANG\t\t\tH\n# 56\t\t1\t\tRR-AZ\t\t\tH\n#\t\t2\t\tRR-ELEV\t\t\tH\n# 57\t\t1\t\tDELTAR\t\t\tQ\n# 58\t\t1\t\tPOSTTPI\t\t\tQ\n#\t\t2\t\tDELVTPI\t\t\tS\n# \t\t3\t\tDELVTPF\t\t\tS\n# 59\t\t1\t\tDVLOS\t\t\tS\n#\t\t2\t\tDVLOS +2\t\tS\n#\t\t3\t\tDVLOS +4\t\tS\n# 60\t\t1\t\tVHORIZ\t\t\tS\n# Page 15\n#\t\t2\t\tHDOTDISP\t\tS\n#\t\t3\t\tHCALC\t\t\tRR\n# 61\t\t1\t\tTTFDISP\t\t\tL\n#\t\t2\t\tTTOGO\t\t\tL\n#\t\t3\t\tOUTOFPLN\t\tQQ\n# 62\t\t1\t\tABVEL\t\t\tS\n#\t\t2\t\tTTOGO\t\t\tL\n#\t\t3\t\tDVTOTAL\t\t\tS\n# 63\t\t1\t\tABVEL\t\t\tS\n#\t\t2\t\tHDOTDISP\t\tS\n#\t\t3\t\tHCALC1\t\t\tRR\n# 64\t\t1\t\tFUNNYDSP\t\tPP\n#\t\t2\t\tHDOTDISP\t\tS\n#\t\t3\t\tHCALC\t\t\tRR\n# 65\t\t1\t\tSAMPTIME\t\tK\n#\t\t2\t\tSAMPTIME\t\tK\n#\t\t3\t\tSAMPTIME\t\tK\n# 66\t\t1\t\tRSTACK +6\t\tW\n#\t\t2\t\tCHANNEL 33\t\tTT\n# 67\t\t1\t\tRSTACK\t\t\tX\n#\t\t2\t\tRSTACK +2\t\tY\n#\t\t3\t\tRSTACK +4\t\tZ\n# 68\t\t1\t\tRANGEDSP\t\tQQ\n#\t\t2\t\tTTFDISP\t\t\tL\n#\t\t3\t\tDELTAH\t\t\tRR\n# 69\t\tSPARE\n# 70\t\t1\t\tAOTCODE\t\t\tA\n#\t\t2\t\tAOTCODE +1\t\tA\n#\t\t3\t\tAOTCODE +2\t\tA\n# 71\t\t1\t\tAOTCODE\t\t\tA\n#\t\t2\t\tAOTCODE +1\t\tA\n#\t\t3\t\tAOTCODE +2\t\tA\n# 72\t\t1\t\tCDUT\t\t\tWW\n#\t\t2\t\tCDUS\t\t\tD\n# 73\t\t1\t\tTANG\t\t\tWW\n#\t\t2\t\tTANG +1\t\t\tD\n# 74\t\t1\t\tTTOGO\t\t\tL\n#\t\t2\t\tYAW\t\t\tH\n#\t\t3\t\tPITCH\t\t\tH\n# 75\t\t1\t\tDIFFALT\t\t\tQ\n#\t\t2\t\tT1TOT2\t\t\tL\n#\t\t3\t\tT2TOT3\t\t\tL\n# 76\t\t1\t\tZDOTD\t\t\tS\n#\t\t2\t\tRDOTD\t\t\tS\n#\t\t3\t\tXRANGE\t\t\tQ\n# 77\t\t1\t\tTTOGO\t\t\tL\n#\t\t2\t\tYDOT\t\t\tS\n# 78\t\t1\t\tRSTACK\t\t\tU\n#\t\t2\t\tRSTACK +2\t\tV\n# 79\t\t1\t\tCURSOR\t\t\tD\n# Page 16\n#\t\t2\t\tSPIRAL\t\t\tD\n#\t\t3\t\tPOSCODE\t\t\tC\n# 80\t\t1\t\tDATAGOOD\t\tC\n#\t\t2\t\tOMEGAD\t\t\tH\n# 81\t\t1\t\tDELVLVC\t\t\tS\n#\t\t2\t\tDELVLVC +2\t\tS\n#\t\t3\t\tDELVLVC +4\t\tS\n# 82\t\t1\t\tDELVLVC\t\t\tS\n#\t\t2\t\tDELVLVC +2\t\tS\n#\t\t3\t\tDELVLVC +4\t\tS\n# 83\t\t1\t\tDELVIMU\t\t\tS\n#\t\t2\t\tDELVIMU +2\t\tS\n#\t\t3\t\tDELVIMU +4\t\tS\n# 84\t\t1\t\tDELVOV\t\t\tS\n#\t\t2\t\tDELVOV +2\t\tS\n#\t\t3\t\tDELVOV +4\t\tS\n# 85\t\t1\t\tVGBODY\t\t\tS\n#\t\t2\t\tVGBODY +2\t\tS\n#\t\t3\t\tVGBODY +4\t\tS\n# 86\t\t1\t\tDELVLVC\t\t\tS\n#\t\t2\t\tDELVLVC +2\t\tS\n#\t\t3\t\tDELVLVC +4\t\tS\n# 87\t\t1\t\tAZ\t\t\tD\n#\t\t2\t\tEL\t\t\tD\n# 88\t\t1\t\tSTARAD\t\t\tB\n#\t\t2\t\tSTARAD +2\t\tB\n# \t\t3\t\tSTARAD +4\t\tB\n# 89\t\t1\t\tLANDLAT\t\t\tG\n#\t\t2\t\tLANDLONG\t\tG\n#\t\t3\t\tLANDALT\t\t\tJJ\n# 90\t\t1\t\tRANGE\t\t\tJJ\n#\t\t2\t\tRRATE\t\t\tS\n#\t\t3\t\tRTHETA\t\t\tH\n# 91\t\t1\t\tP21ALT\t\t\tQ (MEMORY/100 TO DISPLAY TENS N.M.)\n#\t\t2\t\tP21VEL\t\t\tP\n#\t\t3\t\tP21GAM\t\t\tH\n# 92\t\tSPARE\n# 93\t\t1\t\tOGC\t\t\tG\n#\t\t2\t\tOGC +2\t\t\tG\n#\t\t3\t\tOGC +4\t\t\tG\n# 94\t\tSPARE\n# 95\t\tSPARE\n# 96\t\tSPARE\n# 97\t\t1\t\tDSPTEM1\t\t\tC\n#\t\t2\t\tDSPTEM1 +1\t\tC\n#\t\t3\t\tDSPTEM1 +2\t\tC\n# 98\t\t1\t\tDSPTEM2\t\t\tC\n#\t\t2\t\tDSPTEM2 +1\t\tB\n#\t\t3\t\tDSPTEM2 +2\t\tC\n# 99\t\t1\t\tWWPOS\t\t\tXX\n# Page 17\n#\t\t2\t\tWWVEL\t\t\tYY\n#\t\t3\t\tWWBIAS\t\t\tAAA\n# Page 18\n# NOUN SCALES AND FORMATS\n\n# -SCALE TYPE-\t\t\t       PRECISION\n# UNITS\t\t\tDECIMAL FORMAT\t\t--\tAGC FORMAT\n# ------------\t\t--------------\t\t--\t----------\n\n# -A-\n# OCTAL\t\t\txxxxx\t\t\tSP\tOCTAL\n\n# -B-\t\t\t\t\t\t\t\t -14\n# FRACTIONAL\t\t.xxxxx\t\t\tSP\tBIT 1 = 2    UNITS\n#\t\t\t(MAX .99996)\n\n# -C-\n# WHOLE\t\t\txxxxx.\t\t\tSP\tBIT 1 = 1 UNIT\n#\t\t\t(MAX 16383.)\n\n# -D-\t\t\t\t\t\t\t\t     15\n# CDU DEGREES\t\txxx.xx DEGREES\t\tSP\tBIT 1 = 360/2   DEGREES\n#\t\t\t(MAX 359.99)\t\t\t(USES 15 BITS FOR MAGNI-\n#\t\t\t\t\t\t\t TUDE AND 2-S COMP.)\n\n# -E-\t\t\t\t\t\t\t\t    14\n# ELEVATION DEGREES\txx.xxx DEGREES\t\tSP\tBIT 1 = 90/2   DEGREES\n#\t\t\t(MAX 89.999)\n\n# -F-\t\t\t\t\t\t\t\t     14\n# DEGREES (180)\t\txxx.xx DEGREES\t\tSP\tBIT 1 = 180/2   DEGREES\n#\t\t\t(MAX 179.99)\n\n# -G-\n# DP DEGREES(90)\txx.xxx DEGREES\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t     28\n#\t\t\t\t\t\t\t360/2   DEGREES\n\n# -H-\n# DP DEGREES (360)\txxx.xx DEGREES\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t     28\n#\t\t\t(MAX 359.99)\t\t\t360/2   DEGREES\n\n# Page 19\n# -K-\n# TIME (HR, MIN, SEC)\t00xxx. HR\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t000xx. MIN\t\t\t  -2\n#\t\t\t0xx.xx SEC\t\t\t10   SEC\n#\t\t\t(DECIMAL ONLY.\n#\t\t\tMAX MIN COMP=59\n#\t\t\tMAX SEC COMP=59.99\n#\t\t\tMAX CAPACITY=745 HRS\n#\t\t\t\t      39 MINS\n#\t\t\t\t      14.55 SECS.\n#\t\t\tWHEN LOADING, ALL 3\n#\t\t\tCOMPONENTS MUST BE\n#\t\t\tSUPPLIED.)\n\n# -L-\n# TIME (MIN/SEC)\txxBxx MIN/SEC\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t(B IS A BLANK\t\t\t  -2\n#\t\t\tPOSITION, DECIMAL\t\t10   SEC\n#\t\t\tONLY, DISPLAY OR\n#\t\t\tMONITOR ONLY.  CANNOT\n#\t\t\tBE LOADED.\n#\t\t\tMAX MIN COMP=59\n#\t\t\tMAX SEC COMP=59\n#\t\t\tVALUES GREATER THAN\n#\t\t\t59 MIN 59 SEC\n#\t\t\tARE DISPLAYED AS\n#\t\t\t59 MIN 59 SEC.)\n\n# -M-\t\t\t\t\t\t\t\t  -2\n# TIME (SEC)\t\txxx.xx SEC\t\tSP\tBIT 1 = 10   SEC\n#\t\t\t(MAX 163.83)\n\n# -N-\n# TIME(SEC) DP\t\txxx.xx SEC\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t  -2\n#\t\t\t\t\t\t\t10   SEC.\n\n# -P-\n# VELOCITY 2\t\txxxxx. FEET/SEC\t\tDP\tBIT 1 OF HIGH REGISTER =\n#\t\t\t(MAX 41994.)\t\t\t -7\n#\t\t\t\t\t\t\t2   METERS/CENTI-SEC\n\n# -Q-\n# POSITION 4\t\txxxx.x NAUTICAL MILES\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t2 METERS\n\n# -S-\n# VELOCITY 3\t\txxxx.x FT/SEC\t\tDP\tBIT 1 OF HIGH REGISTER =\n#\t\t\t\t\t\t\t -7\n#\t\t\t\t\t\t\t2   METERS/CENTI-SEC\n\n# Page 20\n# -T-\t\t\t\t\t\t\t\t  -2\n# G\t\t\txxx.xx G\t\tSP\tBIT 1 = 10   G\n#\t\t\t(MAX 163.83)\n\n# -U-\n# RENDEZVOUS\t\txxx.xx NAUT MI\t\tDP\tLOW ORDER BIT OF LOW ORDER\n# RADAR RANGE\t\t\t\t\t\tWORD = 9.38 FEET\n\n# -V-\n# RENDEZVOUS\t\txxxxx. FEET/SEC\t\tDP\tLOW ORDER BIT OF LOW ORDER\n# RADAR RANGE RATE\t\t\t\t\tWORD = -.6278 FEET/SEC\n\n# -W-\n# LANDING RADAR\t\txxxxx. FEET\t\tDP\tLOW ORDER BIT OF LOW ORDER\n# ALTITUDE\t\t\t\t\t\tWORD = 1.079 FEET\n\n# -X-\n# LANDING RADAR\t\txxxxx. FEET/SEC\t\tDP\tLOW ORDER BIT OF LOW ORDER\n# VELX\t\t\t\t\t\t\tWORD = -.6440 FEET/SEC\n\n# -Y-\n# LANDING RADAR\t\txxxxx. FEET/SEC\t\tDP\tLOW ORDER BIT OF LOW ORDER\n# VELY\t\t\t\t\t\t\tWORD = 1.212 FEET/SEC\n\n# -Z-\n# LANDING RADAR\t\txxxxx. FEET/SEC\t\tDP\tLOW ORDER BIT OF LOW ORDER\n# VELZ\t\t\t\t\t\t\tWORD = .8668 FEET/SEC\n\n# -AA-\n# INITIAL/FINAL\t\txxxxx. FEET\t\tDP\tLOW ORDER BIT OF LOW ORDER\n# ALTITUDE\t\t\t\t\t\tWORD = 2.345 FEET\n\n# -BB-\n# ALTITUDE RATE\t\txxxxx. FEET/SEC\t\tSP\tLOW ORDER BIT = .5\n#\t\t\t(MAX 08191.)\t\t\tFEET/SEC\n\n# -CC-\n# FORWARD/LATERAL\txxxxx. FEET/SEC\t\tSP\tLOW ORDER BIT = .5571\n# VELOCITY\t\t(MAX 09126.)\t\t\tFEET/SEC\n\n# -DD-\n# ROTATIONAL HAND\txxxxx. DEG/SEC\t\tSP\tFRACTIONAL PART OF PI RAD\n# CONTROLLER ANGULAR\t(MAX 00044.)\t\t\t\t           4  SEC\n# RATES\n\n# -EE-\n# OPTICAL TRACKER\txxx.xx DEG.\t\tDP\tLOW ORDER BIT OF LOW ORDER\n# AZIMUTH ANGLE\t\t\t\t\t\t\t    15\n#\t\t\t\t\t\t\tWORD = 360/2   DEGREES\n\n# Page 21\n\n# -JJ-\n# POSITION5\t\txxx.xx NAUT MI\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t2 METERS\n\n# -KK-\t\t\t\t\t\t\t\t   \t    16\n# WEIGHT2\t\txxxxx. LBS\t\tSP\tFRACTIONAL PART OF 2   KG\n\n# -NN-\n# TRIM DEGREES 2\txxx.xx DEG\t\tSP\tBIT 1=.01 SEC(TIME)\n#\t\t\t(MAX 032.76)\n\n# -PP-\n# 2 INTEGERS\t\t+xxByy\t\t\tDP\tBIT 1 OF HIGH REGISTER =\n#\t\t\t(B IS A BLANK\t\t\t 1 UNIT OF XX\n#\t\t\tPOSITION. DECIMAL\t\tBIT 1 OF LOW REGISTER =\n#\t\t\tONLY, DISPLAY OR\t\t 1 UNIT OF YY\n#\t\t\tMONITOR ONLY. CANNOT\t\t(EACH REGISTER MUST\n#\t\t\tBE LOADED.)\t\t\tCONTAIN A POSITIVE INTEGER\n#\t\t\t(MAX 99B99)\t\t\tLESS THAN 100)\n\n# -QQ-\n# POSITION7\t\txxxx.x NAUT MI\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t(MAX 9058.9)\t\t\t -4\n#\t\t\t\t\t\t\t2   METERS\n\n# -RR-\n# COMPUTED ALTITUDE\txxxxx. FEET\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t -4\n#\t\t\t\t\t\t\t2   METERS\n\n# -SS-\n# DP DEGREES\t\txxxx.x DEGREES\t\tDP\tBIT 1 OF HIGH REGISTER =\n#\t\t\t\t\t\t\t1 DEGREE\n\n# -TT-\n# LANDING RADAR\t\t+0000x\t\t\tCHANNEL 33, BIT 6 = NOT POSIT. 1\n# POSITION\t\t(DECIMAL ONLY.\t\tCHANNEL 33, BIT 7 = NOT POSIT. 2\n#\t\t\tDISPLAY OR MONITOR\tX = 1 FOR LR POSITION 1\n#\t\t\tONLY. CANNOT BE\t\tX = 2 FOR LR POSITION 2\n#\t\t\tLOADED.)\n\n# -WW-\t\t\t\t\t\t\t\t\t    15\n# 360-CDU DEGREES\txxx.xx DEGREES\t\tSP\tBIT 1 = 360 - (360/2  )\n#\t\t\t(MAX 359.99)\t\t\tDEGREES\n#\t\t\t\t\t\t\t(USES 15 BITS FOR MAGNI-\n#\t\t\t\t\t\t\t TUDE AND 2-S COMP.)\n\n# -XX-\n# POSITION 9\t\txxxxx. FEET\t\tDP\tBIT 1 OF LOW REGISTER =\n#\t\t\t\t\t\t\t -9\n#\t\t\t\t\t\t\t2   METERS\n\n# Page 22\n\n# -YY-\n# VELOCITY 4\t\txxxx.x FEET/SEC\t\tDP\tFRACTIONAL PART\n#\t\t\t(MAX 328.0)\t\t\tMETERS/CENTI-SEC\n\n# -AAA-\n# RADIANS\t\txx.xxx RADIANS\t\tDP\tBIT 1 OF HIGH REGISTER =\n#\t\t\t(MAX 31.999)\t\t\t -9\n#\t\t\t\t\t\t\t2   RADIANS.\n\n\n# THAT-S ALL ON THE NOUNS.\n\n# Page 23\n# ALARM CODES FOR LUMINARY\n\n# *9\t\t*18\t\t\t\t\t\t*60\tCOLUMN\n\n# CODE\t      *\tTYPE\t\t\t\t\t\tSET BY\n\n# 00105\t     **\tAOTMARK SYSTEM IN USE\n# 00107\t\tMORE THAN 5 MARK PAIRS\t\t\t\tAOTMARK\n# 00111\t\tMARK MISSING\t\t\t\t\tAOTMARK\n# 00112\t\tMARK OR MARK REJECT NOT BEING ACCEPTED\t\tAOTMARK\n# 00113\t\tNO INBITS\t\t\t\t\tAOTMARK\n# 00114\t\tMARK MADE BUT NOT DESIRED\t\t\tAOTMARK\n# 00115\t\tNO MARKS IN LAST PAIR TO REJECT\t\t\tAOTMARK\n# 00206\t\tZERO ENCODE NOT ALLOWED WITH COARSE ALIGN\tIMU MODE SWITCHING\n# 00206\t\t + GIMBAL LOC\n# 00207\t\tISS TURNON REQUEST NOT PRESENT FOR 90 SEC\tT4RUPT\n# 00210\t\tIMU NOT OPERATING\t\t\t\tIMU MODE SWITCH, IMU-2, RD2, P51, P57\n# 00211\t\tCOARSE ALIGN ERROR\t\t\t\tIMU MODE SWITCH\n# 00212\t\tPIPA FAIL BUT PIPA IS NOT BEING USED\t\tIMU MODE SWITCH, T4RPT\n# 00213\t\tIMU NOT OPERATING WITH TURN-ON REQUEST\t\tT4RUPT\n# 00214\t\tPROGRAM USING IMU WHEN TURNED OFF\t\tT4RUPT\n# 00217\t\tBAD RETURN FROM IMUSTALL\t\t\tP51, P52, P57\n# 00220\t\tIMU NOT ALIGNED - NO REFSMMAT\t\t\tR02, R47\n# 00401\t\tDESIRED GIMBAL ANGLE YIELDS GIMBAL LOCK\t\tINF ALIGN, IMU-2,\n#\t\t\t\t\t\t\t\tFINDCDUW\n# 00402\t\tFINDCDUW NOT CONTROLLING ATTITUDE\t\tFINDCDUW\n# 00404\t\tTWO STARS NOT AVAILABLE IN ANY DETENT\t\tR59, LUNAR SURFACE\n# 00405\t\tTWO STARS NOT AVAILABLE\t\t\t\tP52\n# 00421\t\tW-MATRIX OVERFLOW\t\t\t\tINTEGRV\n# 00430\t     **\tACCELERATION OVERFLOW IN INTEGRATION\t\tORBITAL INTEGRATION\n# 00501\t      P\tRADAR ANTENNA OUT OF LIMITS\t\t\tR23\n# 00502\t\tBAD RADAR GIMBAL ANGLE INPUT\t\t\tV41N72\n# 00503\t      P\tRADAR ANTENNA DESIGNATE FAIL\t\t\tR21, NON-P IN V41N72\n# 00510\t\tRADAR AUTO DESCRETE NOT PRESENT\t\t\tR25\n# 00511\t\tLR NOT IN POSITION 2 OR REPOSITIONING\t\tSERVICER\n# 00514       P\tRR GOES OUT OF AUTO MODE WHILE IN USE\t\tP20\n# 00515\t\tRR CDU FAIL DISCRETE PRESENT\t\t\tR25\n# 00520\t\tRADAR RUPT NOT EXPECTED AT THIS TIME\t\tRADAR READ\n# 00521\t\tCOULD NOT READ RADAR\t\t\t\tP20\n# 00522\t\tLANDING RADAR POSITION CHANGE\t\t\tRADAR READ\n# 00523\t      P\tLR ANTENNA DIDN'T ACHIEVE POSITION 2\t\tSERVICER, V60 (NON-P IN V60)\n# 00525       P\tDELTA THETA GREATER THAN 3 DEGREES\t\tR22\n# 00526       P\tRANGE GREATER THAN 400 NAUT. MILES\t\tP20, P22\n# 00527       P\tLOS NOT IN MODE II COVERAGE WHILE ON\t\tR21, R24\n#\t\tLUNAR SURFACE\n#\t\tOR VEHICLE MANEUVER REQUIRED\t\t\tR24 (20)\n# 00530       P\tLOS NOT IN MODE2 COVERAGE\t\t\tR21\n#\t\tON LUNAR SURFACE AFTER 600 SECS.\n# 00600\t\tIMAGINARY ROOTS ON FIRST ITERATION\t\tP32, P72\n# 00601\t\tPERIGEE ALTITUDE CSI LT PMIN1\t\t\tP32, P72.\n\n# Page 24\n\n# 00602\t\tPERIGEE ALTITUDE CDH LT PMIN2\t\t\tP32, P72.\n# 00603\t\tCSI TO CDH TIME LT TMIN12\t\t\tP32, P72, P33, P73\n# 00604\t\tCDH TO TPI TIME LT TMIN23\t\t\tP32, P72,\n#\t\t OR COMPUTED CDH TIME GREATER THAN INPUT TP1 TIME\n# 00605\t\tNUMBER OF ITERATIONS EXCEEDS LOOP MAXIMUM\tP32, P72\n# 00606\t\tDV EXCEEDS MAXIMUM\t\t\t\tP32, P72\n# 00607\t     **\tNO SOLN FROM TIME-THETA OR TIME-RADIUS\t\tTIMETHET, TIMERAD\n# 00611\t\tNO TIG FOR GIVEN ELEV ANGLE\t\t\tP34, P74\n# 00701\t\tILLEGAL OPTION CODE SELECTED\t\t\tP57\n# 00777\t\tPIPA FAIL CAUSED THE ISS WARNING\t\tT4RUPT\n# 01102\t\tAGC SELF TEST ERROR\t\t\t\tSELF CHECK\n# 01103\t     **\tUNUSED CCS BRANCH EXECUTED\t\t\tABORT\n# 01104\t      *\tDELAY ROUTINE BUSY\t\t\t\tEXEC\n# 01105\t\tDOWNLINK TOO FAST\t\t\t\tT4RUPT\n# 01106\t\tUPLINK TOO FAST\t\t\t\t\tT4RUPT\n# 01107\t\tPHASE TABLE FAILURE.  ASSUME\t\t\tRESTART\n#\t\tERASABLE MEMORY IS SUSPECT.\t\t\tRESTART\n# 01201\t      *\tEXECUTIVE OVERFLOW - NO VAC AREAS\t\tEXEC\n# 01202\t      *\tEXECUTIVE OVERFLOW - NO CORE SETS\t\tEXEC\n# 01203\t      *\tWAITLIST OVERFLOW - TOO MANY TASKS\t\tWAITLIST\n# 01204\t     **\tWAITLIST, VARDELAY, FIXDELAY, OR LONGCALL\tWAITLIST ROUTINES\n#                 CALLED WITH ZERO OR NEGATIVE DELTA-TIME\n# 01206\t     **\tSECOND JOB ATTEMPTS TO GO TO SLEEP\t\tPINBALL\n# 01206\t\t VIA KYBD AND DISPLAY PROGRAM\n# 01207\t      *\tNO VAC AREAS FOR MARKS\t\t\t\tAOTMARK\n# 01210\t      *\tTWO PROGRAMS USING DEVICE AT SAME TIME\t\tMODE SWITCHING\n# 01211\t      *\tILLEGAL INTERRUPT OF EXTENDED VERB\t\tAOTMARK\n# 01301\t\tARCSIN-ARCCOS ARGUMENT TOO LARGE\t\tINTERPRETER\n# 01302\t     **\tSQRT CALLED WITH NEGATIVE ARGUMENT\t\tINTERPRETER\n# 01406\t\tBAD RETURN FROM ROOTPSRS\t\t\tDESCENT GUIDANCE EQS.\n# 01406\t     **\tBAD RETURN FROM ROOTPSRS\t\t\tIGNITION ALGORITHM\n#\n#\tNOTE:\t1406 IS A POODOO DURING THE IGNITION ALGORITHM\n#\tAND AN ALARM DURING THE ACTUAL GUIDANCE PHASE.\n#\n# 01407\t\tVG INCREASING (DELTA-V ACCUMULATED\t\tS40.8\n#\t\t.GT. 90 DEGREES AWAY FROM DESIRED THRUST\tS40.8\n#\t\tVECTOR.)\t\t\t\t\tS40.8\n# 01410\t\tUNINTENTIONAL OVERFLOW IN GUIDANCE\t\tDESCENT GUIDANCE EQS.\n# 01412\t\tDESCENT IGNALG NOT CONVERGING\t\t\tP63\n# 01501\t     **\tKEYBOARD AND DISPLAY ALARM DURING\t\tPINBALL\n# 01501\t\t INTERNAL USE (NVSUB). ABORT\n# 01502\t     **\tILLEGAL FLASHING DISPLAY\t\t\tGOPLAY\n# 01520\t\tV37 REQUEST NOT PERMITTED AT THIS TIME\t\tV37\n# 01600\t\tOVERFLOW IN DRIFT TEST\t\t\t\tIMU 4\n# 01601\t\tBAD IMU TORQUE\t\t\t\t\tOPT PRE ALIGN CALIB\n# 01601\t\t\t\t\t\t\t\tIMU 4 (LEM)\n# 01703\t\tIGNITION TIME SLIPPED\t\t\t\tMIDTOAVE\n# 01706\t\tINCORRECT PROGRAM REQUESTED FOR VEHICLE\n#\t\tCONFIGURATION\t\t\t\t\tP40, P42\n\n# Page 25\n\n# 02000\t      *\tDAP STILL IN PROGRESS AT NEXT TIMES RUPT \tDAP\n# 02001\t\tJET FAILURES HAVE DISABLED Y-Z TRANS. \t\tDAP\n# 02002\t\tJET FAILURES HAVE DISABLED X TRANSLATION\tDAP\n# 02003\t\tJET FAILURES HAVE DISABLED P-ROTATION\t\tDAP\n# 02004\t\tJET FAILURES HAVE DISABLED U-V ROTATION\t\tDAP\n# 03777\t\tICDU FAIL CAUSED THE ISS WARNING\t\tT4RUPT\n# 04777\t\tICDU, PIPA FAILS CAUSED THE ISS WARNING\t\tT4RUPT\n# 07777\t\tIMU FAIL CAUSED THE ISS WARNING\t\t\tT4RUPT\n# 10777\t\tIMU, PIPA FAILS CAUSED THE ISS WARNING\t\tT4RUPT\n# 13777\t\tIMU, ICDU FAILS CAUSED THE ISS WARNING\t\tT4RUPT\n# 14777\t\tIMU, ICDU, PIPA FAILS CAUSED THE ISS WARNING\tT4RUPT\n#\n#\t      *\tINDICATES AN ABORT CODE THAT RESULTS IN A SOFTWARE RESTART.\n#\n#\t     **\tINDICATES A MORE SERIOUS ABORT CODE THAT RESULTS IN THE\n#\t\tPROGRAM GOING TO R00.\n#\n#\t      P\tINDICATES A PRIORITY ALARM.\n#\n#\t\tALL OTHERS ARE NON-ABORTIVE\n\n# Page 26\n\n# CHECKLIST CODES FOR LUMINARY\n\n# *9\t\t*17\t\t*26\t\t\t\t\t*9\tCOLUMN\n\n# R1CODE\t\t       ACTION TO BE EFFECTED\t\t\tPROGRAM\n\n# 00013\t\tKEY IN\t\tNORMAL OR GYRO TORQUE COARSE ALIGN\tP52\n# 00014\t\tPROCEED\t\tDO IMU FINE ALIGN ROUTINE\t\tP51, P63, P57\n# 00014\t\tENTER\t\tDO LANDING SITE DETERMINATION (N89DISP)\tP57OPTION2\n# 00015\t\tPERFORM\t\tCELESTIAL BODY ACQUISITION\t\tR51, P51\n# 00062\t\tSWITCH\t\tAGC POWER DOWN\t\t\t\tP06\n# 00201\t\tSWITCH\t\tRR MODE TO AUTOMATIC\t\t\tP20, P22, R04\n# 00203\t\tSWITCH\t\tGUID CONTROL TO GNC, MODE TO AUTO...\tP12, P42, P71\n#\t\t\t\tALSO THR CONT TO AUTO\t\t\tP40, P63, P70\n# 00205\t\tPERFORM\t\tMANUAL ACQUISITION OF RR\t\tR23\n# 00500\t\tSWITCH\t\tLR ANTENNA TO POSITION 1\t\tP63\n\n#\t\t\t\tSWITCH DENOTES CHANGE POSITION OF A CONSOLE SWITCH\n#\t\t\t\tPERFORM DENOTES START OR END OF A TASK\n#\t\t\t\tKEY IN DENOTES KEY IN OF DATA THRU THE DSKY\n\n# Page 27\n# OPTION CODES FOR LUMINARY\n\n# THE SPECIFIED OPTION CODES WIL BE FLASHED IN COMPONENT R1 IN\n# CONJUNCTION WITH V04N06 OR V04N12 (FOR EXTENDED VERBS) TO REQUEST THE\n# ASTRONAUT TO LOAD INTO COMPONENT R2 THE OPTION HE DESIRES.\n\n# *9\t\t*17\t\t\t\t*52\t\t\t\t*11\t\t*25\tCOLUMN\n\n# OPTION\n# CODE\t\tPURPOSE\t\t\t\tINPUT FOR COMPONENT 2\t\tPROGRAM(S)\tAPPLICABILITY\n\n# 00001\t\tSPECIFY IMU ORIENTATION\t\t1=PREF 2=NOM 3=REFSMMAT\t\tP52\t\tALL\n# \t\t\t\t\t\t4=LAND SITE\n# 00002\t\tSPECIFY VEHICLE\t\t\t1=THIS 2=OTHER\t\t\tP21,R30\t\tALL\n# 00003\t\tSPECIFY TRACKING ATTITUDE\t1=PREFERRED 2=OTHER\t\tR63\t\tALL\n# 00004\t\tSPECIFY RADAR\t\t\t1=RR 2=LR\t\t\tR04\t\tSUNDANCE + LUMINARY\n# 00005\t\tSPECIFY SOR PHASE\t\t1=FIRST 2=SECOND\t\tP38\t\tCOLOSSUS + LUMINARY\n# 00006\t\tSPECIFY RR COARSE ALIGN OPTION\t1=LOCKON 2=CONTINUOUS DESIG.\tV41N72\t\tSUNDANCE + LUMINARY\n# 00010\t\tSPECIFY ALIGNMENT MODE\t\t0=ANY TIME 1=REFSMMAT +G\tP57\t\tLUMINARY\n#\t\t\t\t\t\t2=TWO BODIES 3=ONE BODY + G\n# 00012\t\tSPECIFY CSM ORBIT OPTION\t1=NO ORBIT CHANGE 2=CHANGE\tP22\t\tLUMINARY\n#\t\t\t\t\t\tORBIT TO PASS OVER LM\n\n"
  },
  {
    "path": "Luminary099/ATTITUDE_MANEUVER_ROUTINE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tATTITUDE_MANEUVER_ROUTINE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t342-363\n# Mod history:\t2009-05-16 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 342\n# BLOCK 2 LGC ATTITUDE MANEUVER ROUTINE -- KALCMANU\n#\n# MOD 2\t\tDATE 5/1/67\tBY DON KEENE\n#\n# PROGRAM DESCRIPTION\n#\n# KALCMANU IS A ROUTINE WHICH GENERATES COMMANDS FOR THE LM DAP TO CHANGE THE ATTITUDE OF THE SPACECRAFT\n# DURING FREE FALL.  IT IS DESIGNED TO MANEUVER THE SPACECRAFT FROM ITS INITIAL ORIENTATION TO SOME DESIRED\n# ORIENTATION SPECIFIED BY THE PROGRAM WHICH CALLS KALCMANU, AVOIDING GIMBAL LOCK IN THE PROCESS.  IN THE\n# MOD 2 VERSION, THIS DESIRED ATTITUDE IS SPECIFIED BY A SET OF OF THREE COMMANDED CDU ANGLES STORES AS 2'S COMPLEMENT\n# SINGLE PRECISION ANGLES IN THE THREE CONSECUTIVE LOCATIONS, CPHI, CTHETA, CPSI, WHERE\n#\n#\tCPHI = COMMANDED OUTER GIMBAL ANGLE\n# \tCTHETA = COMMANDED INNER GIMBAL ANGLE\n#\tCPSI = COMMANDED MIDDLE GIMBAL ANGLE\n#\n# WHEN POINTING A SPACECRAFT AXIS (I.E., X, Y, Z, THE AOT, THRUST AXIS, ETC.) THE SUBROUTINE VECPOINT MAY BE\n# USED TO GENERATE THIS SET OF DESIRED CDU ANGLES (SEE DESCRIPTION IN R60).\n#\n# WITH THIS INFORMATION KALCMANU DETERMINES THE DIRECTION OF THE SINGLE EQUIVALENT ROTATION (COF ALSO U) AND THE\n# MAGNITUDE OF THE ROTATION (AM) TO BRING THE S/C FROM ITS INITIAL ORIENTATION TO ITS FINAL ORIENTATION.\n# THIS DIRECTION REMAINS FIXED BOTH IN INERTIAL COORDINATES AND IN COMMANDED S/C AXES THROUGHOUT THE\n#                  _\n# MANEUVER.  ONCE COF AND AM HAVE BEEN DETERMINED, KALCMANU THEN EXAMINES THE MANEUVER TO SEE IF IT WILL BRING\n#\t\t\t\t       _\n# THE S/C THROUGH GIMBAL LOCK.  IF SO, COF AND AM ARE READJUSTED SO THAT THE S/C WILL JUST SKIM THE GIMBAL\n# LOCK ZONE AND ALIGN THE X-AXIS.  IN GENERAL A FINAL YAW ABOUT X WILL BE NECESSARY TO COMPLETE THE MANEUVER.\n# NEEDLESS TO SAY, NEITHER THE INITIAL NOR THE FINAL ORIENTATION CAN BE IN GIMBAL LOCK.\n#\n# FOR PROPER ATTITUDE CONTROL THE DIGITAL AUTOPILOT MUST BE GIVEN AN ATTITUDE REFERENCE WHICH IT CAN TRACK.\n# KALCMANU DOES THIS BY GENERATING A REFERENCE OF DESIRED GIMBAL ANGLES (CDUXD, CDUYD, CDUZD) WHICH ARE UPDATED\n# EVERY ONE SECOND DURING THE MANEUVER.  TO ACHIEVE A SMOOTHER SEQUENCE OF COMMANDS BETWEEN SUCCESSIVE UPDATES,\n# THE PROGRAM ALSO GENERATES A SET OF INCREMENTAL CDU ANGLES (DELDCDU) TO BE ADDED TO CDU DESIRED BY THE DIGITAL\n# AUTOPILOT.  KALCMANU ALSO CALCULATES THE COMPONENT MANEUVER RATES (OMEGAPD, OMEGAQD, OMEGARD), WHICH CAN\n#\t\t\t\t      _\n# BE DETERMINED SIMPLY BY MULTIPLYING COF BY SOME SCALAR (ARATE) CORRESPONDING TO THE DESIRED ROTATIONAL RATE.\n#\n# AUTOMATIC MANEUVERS ARE TIMED WTH THE HELP OF WAITLIST SO THAT AFTER A SPECIFIED INTERVAL THE Y AND Z\n# DESIRED RATES ARE SET TO ZERO AND THE DESIRED CDU ANGLES (CDUYD, CDUZD) ARE SET EQUAL TO THE FINAL DESIRED CDU\n# ANGLES (CTHETA, CPSI).  IF ANY YAW REMAINS DUE TO GIMBAL LOCK AVOIDANCE, THE FINAL YAW MANEUVER IS\n# CALCULATED AND THE DESIRED YAW RATE SET TO SOME FIXED VALUE (ROLLRATE = + OR - 2 DEGREES PER SEC).\n# IN THIS CASE ONLY AN INCREMENTAL CDUX ANGLE (DELFROLL) IS SUPPLIED TO THE DAP.  AT THE END OF THE YAW\n# MANEUVER OR IN THE EVENT THAT THERE WAS NO FINAL YAW, CDUXD IS SET EQUAL TO CPHI AND THE X-AXIS DESIRED\n# RATE SET TO ZERO.  THUS, UPON COMPLETION OF THE MANEUVER THE S/C WILL FINISH UP IN A LIMIT CYCLE ABOUT THE\n# DESIRED GIMBAL ANGLES.\n#\n# PROGRAM LOGIC FLOW\n#\n# KALCMANU IS CALLED AS A HIGH PRIORITY JOB WITH ENTRY POINTS AT KALCMAN3 AND VECPOINT.  IT FIRST PICKS\n# UP THE CURRENT CDU ANGLES TO BE USED AS THE BASIS FOR ALL COMPUTATIONS INVOLVING THE INITIAL S/C ORIENTATION.\n# Page 343\n# IT THEN DETERMINES THE DIRECTION COSINE MATRICES RELATING BOTH THE INITIAL AND FINAL S/C ORIENTATION TO STABLE\n#               *   *                                                                               *\n# MEMBER AXES (MIS,MFS).  IT ALSO COMPUTES THE MATRIX RELATING FINAL S/C AXES TO INITIAL S/C AXES (MFI).  THE\n# ANGLE OF ROTATION (AM) IS THEN EXTRACTED FROM THIS MATRIX, AND TEST ARE MADE TO DETERMINE IF\n#\n#\tA)\tAM LESS THAN .25 DEGREES (MINANG)\n#\tB)\tAM GREATER THAN 170 DEGREES (MAXANG)\n#\n# IF AM IS LESS THAN .25 DEGREES, NO COMPLICATED AUTOMATIC MANEUVERING IS NECESSARY.  THEREFORE, WE CAN SIMPLY\n# SET CDU DESIRED EQUAL TO THE FINAL CDU DESIRED ANGLES AND TERMINATE THE JOB.\n#\n# IF AM IS GREATER THAN .25 DEGREES BUT LESS THAN 170 DEGREES THE AXES OF THE SINGLE EQUIVALENT ROTATION\n#   _                                                       *\n# (COF) IS EXTRACTED FROM THE SKEW SYMMETRIC COMPONENTS OF MFI.\n#                                                                                     *     *\n# IF AM GREATER THAN 170 DEGREES AN ALTERNATE METHOD EMPLOYING THE SYMMETRIC PART OF MFI (MFISYM) IS USED\n#               _\n# TO DETERMINE COF.\n#\n# THE PROGRAM THEN CHECKS TO SEE IF THE MANEUVER AS COMPUTED WILL BRING THE S/C THROUGH GIMBAL LOCK.  IF\n# SO, A NEW MANEUVER IS CALCULATED WHICH WILL JUST SKIM THE GIMBAL LOCK ZONE AND ALIGN THE S/C X-AXIS.  THIS\n# METHOD ASSURES THAT THE ADDITIONAL MANEUVERING TO AVOID GIMBAL LOCK WILL BE KEPT TO A MINIMUM.  SINCE A FINAL\n# P AXIS YAW WILL BE NECESSARY, A SWITCH IS RESET (STATE SWITCH 31) TO ALLOW FOR THE COMPUTATION OF THIS FINAL\n# YAW.\n#\n# AS STATED PREVIOUSLY, KALCMANU GENERATES A SEQUENCE OF DESIRED GIMBAL ANGLES WHICH ARE UPDATED EVERY\n#                                                                                              _\n# SECOND.  THIS IS ACCOMPLISHED BY A SMALL ROTATION OF THE DESIRED S/C FRAME ABOUT THE VECTOR COF.  THE NEW\n# DESIRED REFERENCE MATRIX IS THEN,\n#\t *\t\t *\t *\n#\tMIS\t=\tMIS\tDEL\n#\t   N+1\t\t   N\n#        *\n# WHERE DEL IS THE MATRIX CORRESPONDING TO THIS SMALL ROTATION.  THE NEW CDU ANGLES CAN THEN BE EXTRACTED\n#       *\n# FROM MIS.\n#\n# AT THE BEGINNING OF THE MANEUVER THE AUTOPILOT DESIRED RATES (OMEGAPD, OMEGAQD, OMEGARD) AND THE\n# MANEUVER TIMINGS ARE ESTABLISHED.  ON THE FIRST PASS AND ON ALL SUBSEQUENT UPDATES THE CDU DESIRED\n# ANGLES ARE LOADED WITH THE APPROPRIATE VALUES AND THE INCREMENTAL CDU ANGLES ARE COMPUTED.  THE AGC CLOCKS\n# (TIME1 AND TIME2) ARE THEN CHECKED TO SEE IF THE MANEUVER WILL TERMINATE BEFORE THE NEXT UPDATE.  IF\n# NOT, KALCMANU CALLS FOR ANOTHER UPDATE (RUN AS A JOB WITH PRIORITY TBD) IN ONE SECOND.  ANY DELAYS IN THIS\n# CALLING SEQUENCE ARE AUTOMATICALLY COMPENSATED IN CALLING FOR THE NEXT UPDATE.\n#\n# IF IT IS FOUND THAT THE MANEUVER IS TO TERMINATE BEFORE THE NEXT UPDATE A ROUTINE IS CALLED (AS A WAIT-\n# LIST TASK) TO STOP THE MANEUVER AT THE APPROPRIATE TIME AS EXPLAINED ABOVE.\n\n# Page 344\n# CALLING SEQUENCE\n#\n# IN ORDER TO PERFORM A KALCMANU SUPERVISED MANEUVER, THE COMMANDED GIMBAL ANGLES MUST BE PRECOMPUTED AND\n# STORED IN LOCATIONS CPHI, CTHETA, CPSI.  THE USER'S PROGRAM MUST THEN CLEAR STATE SWITCH NO 33 TO ALLOW THE\n# ATTITUDE MANEUVER ROUTINE TO PERFORM ANY FINAL P-AXIS YAW INCURRED BY AVOIDING GIMBAL LOCK.  THE MANEUVER IS\n# THEN INITIATED BY ESTABLISHING THE FOLLOWING EXECUTIVE JOB\n#\t\t       *\n#\tCAF\tPRIO XX\n#\t\t     --\n#\tINHINT\n#\tTC\tFINDVAC\n#\t2CADR\tKALCMAN3\n#\tRELINT\n#\n# THE USER'S PROGRAM MAY EITHER CONTINUE OR WAIT FOR THE TERMINATION OF THE MANEUVER.  IF THE USER WISHES TO\n# WAIT, HE MAY PUT HIS JOB TO SLEEP WITH THE FOLLOWING INSTRUCTIONS:\n#\n#\tL\tTC\tBANKCALL\n#\tL+1\tCADR\tATTSTALL\n#\tL+2\t(BAD RETURN)\n#\tL+3\t(GOOD RETURN)\n#\n# UPON COMPLETION OF THE MANEUVER, THE PROGRAM WILL BE AWAKENED AT L+3 IF THE MANEUVER WAS COMPLETED\n# SUCCESSFULLY, OR AT L+2 IF THE MANEUVER WAS ABORTED.  THIS ABORT WOULD OCCUR IF THE INITIAL OR FINAL ATTITUDE\n# WAS IN GIMBAL LOCK.\n#\n# *** NOTA BENE ***  IF IT IS ASSUMED THAT THE DESIRED MANEUVERING RATE (0.5, 2, 5, 10 DEG/SEC) HAS BEEN SELECTED BY\n# KEYBOARD ENTRY PRIOR TO THE EXECUTION OF KALCMANU.\n#\n# IT IS ALSO ASSUMED THAT THE AUTOPILOT IS IN THE AUTO MODE.  IF THE MODE SWITCH IS CHANGED DURING THE\n# MANEUVER, KALCMANU WILL TERMINATE VIA GOODEND WITHIN 1 SECOND SO THAT R60 MAY REQUEST A TRIM OF THE S/C ATTITUDE\n# SUBROUTINES.\n#\n# KALCMANU USES A NUMBER OF INTERPRETIVE SUBROUTINES WHICH MAY BE OF GENERAL INTEREST.  SINCE THESE ROUTINES\n# WERE PROGRAMMED EXCLUSIVELY FOR KALCMANU, THEY ARE NOT, AS YET, GENERALLY AVAILABLE FOR USE BY OTHER PROGRAMS.\n#\n# MXM3\n# ----\n#\n# THIS SUBROUTINE MULTIPLIES TWO 3X3 MATRICES AND LEAVES THE RESULT IN THE FIRST 18 LOCATIONS OF THE PUSH\n# DOWN LIST, I.E.,\n#\t\t\t[ M     M     M  ]\n#\t\t\t[  0     1     2 ]\n#\t*\t\t[                ]\t\t*\t\t*\n#\tM\t=\t[ M     M     M  ]\t=\tM1\tX\tM2\n#\t\t\t[  3     4     5 ]\n#\t\t\t[                ]\n#\t\t\t[ M     M     M  ]\n#\t\t\t[  6     7     8 ]\n# Page 345\n#                                                                                  *\n# INDEX REGISTER X1 MUST BE LOADED WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M1, AND X2 MUST BE\n#                                                        *\n# LOADED WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M2.  THE ROUTINE USES THE FIRST 20 LOCATIONS OF THE PUSH\n# DOWN LIST.  THE FIRST ELEMENT OF THE MATRIX APPEARS IN PDO.  PUSH UP FOR M .\n#                                                                           8\n# TRANSPOS\n# --------\n#\n# THIS ROUTINE TRANSPOSES A 3X3 MATRIX AND LEAVES THE RESULT IN THE PUSH DOWN LIST, I.E.,\n#\n#\t*\t\t* T\n#\tM\t=\tM1\n#\n# INDEX REGISTER X1 MUST CONTAIN THE COMPLEMENT OF THE STARTING ADDRESS FOR M1.  PUSH UP FOR THE FIRST AND SUB-\n#                        *\n# SEQUENT COMPONENTS OF M.  THIS SUBROUTINE ALSO USES THE FIRST 20 LOCATIONS OF THE PUSH DOWN LIST.\n#\n# CDU TO DCM\n# ----------\n#\n# THIS SUBROUTINE CONVERTS THREE CDU ANGLES IN T(MPAC) TO A DIRECTION COSINE MATRIX (SCALED BY 2) RELATING\n# THE CORRESPONDING S/C ORIENTATIONS TO THE STABLE MEMBER FRAME.  THE FORMULAS FOR THIS CONVERSION ARE\n#\n#\tM\t=\tCOSY COSZ\n#\t 0\n#\n#\tM\t=\t-COSY SINZ COSX + SINY SINX\n#\t 1\n#\n#\tM\t=\tCOSY SINZ SINX + SINY COSX\n#\t 2\n#\n#\tM\t=\tSINZ\n#\t 3\n#\n#\tM\t=\tCOSZ COSX\n#\t 4\n#\n#\tM\t=\t-COSZ SINX\n#\t 5\n#\n#\tM\t=\t-SINY COSZ\n#\t 6\n#\n#\tM\t=\tSINY SINZ COSX + COSY SINX\n#\t 7\n# Page 346\n#\tM\t=\t-SINY SINZ SINX + COSY COSX\n#\t 8\n#\n# WHERE\t\tX\t=\tOUTER GIMBAL ANGLE\n#\t\tY\t=\tINNER GIMBAL ANGLE\n#\t\tZ\t=\tMIDDLE GIMBAL ANGLE\n#\n# THE INTERPRETATION OF THIS MATRIX IS AS FOLLOWS:\n#\n# IF A , A , A  REPRESENT THE COMPONENTS OF A VECTOR IN S/C AXES THEN THE COMPONENTS OF THE SAME VECTOR IN\n#     X   Y   Z\n# STABLE MEMBER AXES (B , B , B ) ARE\n#                      X   Y   Z\n#\n#\t[ B  ]\t\t\t[ A  ]\n#\t[  X ]\t\t\t[  X ]\n#\t[    ]\t\t\t[    ]\n#\t[ B  ]\t\t  *\t[ A  ]\n#\t[  Y ]\t   =\t  M\t[  Y ]\n#\t[    ]\t\t\t[    ]\n#\t[ B  ]\t\t\t[ B  ]\n#\t[  Z ]\t\t\t[  Z ]\n#\n# THE SUBROUTINE WILL STORE THIS MATRIX IN SEQUENTIAL LOCATIONS OF ERASABLE MEMORY AS SPECIFIED BY THE CALLING\n#                                                                                                             *\n# PROGRAM.  TO DO THIS THE CALLING PROGRAM MUST FIRST LOAD X2 WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M.\n#\n# INTERNALLY, THE ROUTINE USES THE FIRST 16 LOCATIONS OF THE PUSH DOWN LIST, ALSO STEP REGISTER S1 AND INDEX\n# REGISTER X2.\n#\n# DCM TO CDU\n# ----------\n#\t\t\t\t\t\t\t\t       *\n# THIS ROUTINE EXTRACTS THE CDU ANGLES FROM A DIRECTION COSINE MATRIX (M SCALED BY 2) RELATING S/C AXIS TO\n#                                                                                 *\n# STABLE MEMBER AXES.  X1 MUST CONTAIN THE COMPLEMENT OF THE STARTING ADDRESS FOR M.  THE SUBROUTINE LEAVES THE\n# CORRESPONDING GIMBAL ANGLES IN V(MPAC) AS DOUBLE PRECISION 1'S COMPLEMENT ANGLES SCALED BY 2PI.  THE FORMULAS\n# FOR THIS CONVERSION ARE\n#\n#\tZ \t=\tARCSIN (M  )\n#\t\t\t         3\n#\n#\tY\t=\tARCSIN (-M /COSZ)\n#\t\t\t          6\n#\n# IF M  IS NEGATIVE, Y IS REPLACED BY PI SGN Y - Y.\n#     0\n# Page 347\n#\tX\t=\tARCSIN (-M /COSZ)\n#\t\t\t          5\n#\n# IF M  IS NEGATIVE, X IS REPLACED BY PI SGN X - X.\n#     4\n#\n# THIS ROUTINE DOES NOT SET THE PUSH DOWN POINTER, BUT USES THE NEXT 8 LOCATIONS OF THE PUSH DOWN LIST AND\n# RETURNS THE POINTER TO ITS ORIGINAL SETTING.  THIS PROCEDURE ALLOWS THE CALLER TO STORE THE MATRIX AT THE TOP OF\n# THE PUSH DOWN LIST.\n#\n# DELCOMP\n# -------\n#                                                     *\n# THIS ROUTINE COMPUTES THE DIRECTION COSINE MATRIX (DEL) RELATING ON\n#                                                                          _\n# IS ROTATED WITH RESPECT TO THE FIRST BY AN ANGLE, A, ABOUT A UNIT VECTOR U.  THE FORMULA FOR THIS MATRIX IS\n#\n#\t *\t\t*\t _ _T              *\n#\tDEL\t=\tI COSA + U U  (1 - COSA) + V  SINA\n#\t\t\t                            X\n#\n# WHERE\t\t*\t\t[ 1    0    0 ]\n#\t\tI\t=\t[ 0    1    0 ]\n#\t\t\t\t[ 0    0    1 ]\n#\n#\t\t\t\t[    2                             ]\n#\t\t\t\t[  U           U  U          U  U  ]\n#\t\t\t\t[   X           X  Y          X  Z ]\n#\t\t\t\t[                                  ]\n#\t\t_ _T\t\t[                 2                ]\n#\t\tU U\t=\t[ U  U          U            U  U  ]\n#\t\t\t\t[  Y  X          Y            Y  Z ]\n#\t\t\t\t[                                  ]\n#\t\t\t\t[                               2  ]\n#\t\t\t\t[ U  U         U  U           U    ]\n#\t\t\t\t[  Z  X         Z  Y           Z   ]\n#\n#\n#\t\t\t\t[   0\t\t-U\t\t U  ]\n#\t\t\t\t[\t\t  Z\t\t  Y ]\n#\t\t*\t\t[\t\t\t\t    ]\n#\t\tV\t=\t[  U\t\t 0\t\t-U  ]\n#\t\t X\t\t[   Z                             X ]\n#\t\t\t\t[\t\t\t\t    ]\n#\t\t\t\t[ -U\t\t U\t\t 0  ]\n#\t\t\t\t[   Y \t\t  X\t\t    ]\n#\n# Page 348\n#\t_\n#\tU\t=\tUNIT ROTATION VECTOR RESOLVED INTO S/C AXES.\n#\tA\t=\tROTATION ANGLE\n#\n#                        *\n# THE INTERPRETATION OF DEL IS AS FOLLOWS:\n#\n# IF A , A , A  REPRESENT THE COMPONENTS OF A VECTOR IN THE ROTATED FRAME, THEN THE COMPONENTS OF THE SAME\n#     X   Y   Z\n# VECTOR IN THE ORIGINAL S/C AXES (B , B , B ) ARE\n#                                   X   Y   Z\n#\n#\t[ B  ]\t\t\t[ A  ]\n#\t[  X ]\t\t\t[  X ]\n#\t[    ]\t\t\t[    ]\n#\t[ B  ]\t\t  *\t[ A  ]\n#\t[  Y ]\t   =\t DEL\t[  Y ]\n#\t[    ]\t\t\t[    ]\n#\t[ B  ]\t\t\t[ B  ]\n#\t[  Z ]\t\t\t[  Z ]\n#\n# THE ROUTINE WILL STORE THIS MATRIX (SCALED UNITY) IN SEQUENTIAL LOCATIONS OF ERASABLE MEMORY BEGINNING WITH\n#                                                                                             _\n# THE LOCATION CALLED DEL.  IN ORDER TO USE THE ROUTINE, THE CALLING PROGRAM MUST FIRST STORE U (A HALF UNIT\n# DOUBLE PRECISION VECTOR) IN THE SET OF ERASABLE LOCATIONS BEGINNING WITH THE ADDRESS CALLED COF.  THE ANGLE, A,\n# MUST THEN BE LOADED INTO D(MPAC).\n#\n# INTERNALLY, THE PROGRAM ALSO USES THE FIRST 10 LOCATIONS OF THE PUSH DOWN LIST.\n#\n# READCDUK\n# --------\n#\n# THIS BASIC LANGUAGE SUBROUTINE LOADS T(MPAC) WITH THE THREE CDU ANGLES.\n#\n# SIGNMPAC\n# --------\n#\n# THIS IS A BASIC LANGUAGE SUBROUTINE WHICH LIMITS THE MAGNITUDE OF D(MPAC) TO + OR - DPOSMAX ON OVERFLOW.\n#\n# PROGRAM STORAGE ALLOCATION\n#\n#\t1)\tFIXED MEMORY\t\t1059 WORDS\n#\t2)\tERASABLE MEMORY\t\t  98\n#\t3)\tSTATE SWITCHES\t\t   3\n# Page 349\n#\t4)\tFLAGS\t\t\t   1\n#\n# JOB PRIORITIES\n#\n#\t1)\tKALCMANU\t\tTBD\n#\t2)\tONE SECOND UPDATE\tTBD\n#\n# SUMMARY OF STATE SWITCHES AND FLAGWORDS USED BY KALCMANU.\n#\n#\tSTATE\t\tFLAGWRD 2\tSETTING\t\tMEANING\n#\tSWITCH NO.\tBIT NO.\n#\n#\t  *\n#\t31\t\t14\t\t0\t\tMANEUVER WENT THROUGH GIMBAL LOCK\n#\t\t\t\t\t1\t\tMANEUVER DID NOT GO THROUGH GIMBAL LOCK\n#\t  *\n#\t32\t\t13\t\t0\t\tCONTINUE UPDATE PROCESS\n#\t\t\t\t\t1\t\tSTART UPDATE PROCESS\n#\n#\t33\t\t12\t\t0\t\tPERFORM FINAL P AXIS YAW IF REQUIRED\n#\t\t\t\t\t1\t\tIGNORE ANY FINAL P-AXIS YAW\n#\n#\t34\t\t11\t\t0\t\tSIGNAL END OF KALCMANU\n#\t\t\t\t\t1\t\tKALCMANU IN PROCESS.\tUSER MUST SET SWITCH BEFORE INITIATING\n#\n#\t* INTERNAL TO KALCMANU\n#\n# SUGGESTIONS FOR PROGRAM INTEGRATION\n#\n# THE FOLLOWING VARIABLES SHOULD BE ASSIGNED TO UNSWITCH ERASABLE:\n#\n#\tCPHI\n#\tCTHETA\n#\tCPSI\n#\tPOINTVSM +5\n#\tSCAXIS \t +5\n#\tDELDCDU\n#\tDELDCDU1\n#\tDELDCDU2\n#\tRATEINDX\n#\n# THE FOLLOWING SUBROUTINES MAY BE PUT IN A DIFFERENT BANK\n#\n#\tMXM3\n# Page 350\n#\tTRANSPGS\n#\tSIGNMPAC\n#\tREADCDUK\n#\tCDUTODCM\n\n# Page 351\n\t\tBANK\t15\n\t\tSETLOC\tKALCMON1\n\t\tBANK\n\n\t\tEBANK=\tBCDU\n\n# THE THREE DESIRED CDU ANGLES MUST BE STORED AS SINGLE PRECISION TWO'S COMPLEMENT ANGLES IN THE THREE SUCCESSIVE\n# LOCATIONS, CPHI, CTHETA, CPSI.\n\n\t\tCOUNT*\t$$/KALC\nKALCMAN3\tTC\tINTPRET\t\t# PICK UP THE CURRENT CDU ANGLES AND\n\t\tRTB\t\t\t#\tCOMPUTE THE MATRIX FROM INITIAL S/C\n\t\t\tREADCDUK\t#\tAXES TO FINAL S/C AXES.\n\t\tSTORE\tBCDU\t\t# STORE INITIAL S/C ANGLES\n\t\tSLOAD\tABS\t\t# CHECK THE MAGNITUDE OF THE DESIRED\n\t\t\tCPSI\t\t# MIDDLE GIMBAL ANGLE\n\t\tDSU\tBPL\n\t\t\tLOCKANGL\t# IF GREATER THAN 70 DEG ABORT MANEUVER\n\t\t\tTOOBADF\n\t\tAXC,2\tTLOAD\n\t\t\tMIS\n\t\t\tBCDU\n\t\tCALL\t\t\t# COMPUTE THE TRANSFORMATION FROM INITIAL\n\t\t\tCDUTODCM\t# S/C AXES TO STABLE MEMBER AXES\n\t\tAXC,2\tTLOAD\n\t\t\tMFS\t\t# PREPARE TO CALCULATE ARRAY MFS\n\t\t\tCPHI\n\t\tCALL\n\t\t\tCDUTODCM\nSECAD\t\tAXC,1\tCALL\t\t# MIS AND MFS ARRAYS CALCULATED\t\t$2\n\t\t\tMIS\n\t\t\tTRANSPOS\n\t\tVLOAD\tSTADR\n\t\tSTOVL\tTMIS +12D\n\t\tSTADR\n\t\tSTOVL\tTMIS +6\n\t\tSTADR\n\t\tSTORE\tTMIS\t\t# TMIS = TRANSPOSE(MIS) SCALED BY 2\n\t\tAXC,1\tAXC,2\n\t\t\tTMIS\n\t\t\tMFS\n\t\tCALL\n\t\t\tMXM3\n\t\tVLOAD\tSTADR\n\t\tSTOVL\tMFI +12D\n\t\tSTADR\n\t\tSTOVL\tMFI +6\n\t\tSTADR\n\t\tSTORE\tMFI\t\t# MFI = TMIS MFS (SCALED BY 4)\n\t\tSETPD\tCALL\t\t# TRANSPOSE MFI IN PD LIST\n# Page 352\n\t\t\t18D\n\t\t\tTRNSPSPD\n\t\tVLOAD\tSTADR\n\t\tSTOVL\tTMFI \t+12D\n\t\tSTADR\n\t\tSTOVL\tTMFI \t+6\n\t\tSTADR\n\t\tSTORE\tTMFI\t\t# TMFI = TRANSPOSE (MFI) SCALED BY 4\n\n# CALCULATE COFSKEW AND MFISYM\n\n\t\tDLOAD\tDSU\n\t\t\tTMFI \t+2\n\t\t\tMFI \t+2\n\t\tPDDL\tDSU\t\t# CALCULATE COF SCALED BY 2/SIN(AM)\n\t\t\tMFI \t+4\n\t\t\tTMFI \t+4\n\t\tPDDL\tDSU\n\t\t\tTMFI \t+10D\n\t\t\tMFI \t+10D\n\t\tVDEF\n\t\tSTORE\tCOFSKEW\t\t# EQUALS MFISKEW\n\n# CALCULATE AM AND PROCEED ACCORDING TO ITS MAGNITUDE\n\n\t\tDLOAD\tDAD\n\t\t\tMFI\n\t\t\tMFI \t+16D\n\t\tDSU\tDAD\n\t\t\tDP1/4TH\n\t\t\tMFI \t+8D\n\t\tSTORE\tCAM\t\t# CAM = (MFI0+MFI4+MFI8-1)/2 HALF SCALE\n\t\tARCCOS\n\t\tSTORE\tAM\t\t# AM=ARCCOS(CAM)\t(AM SCALED BY 2)\n\t\tDSU\tBPL\n\t\t\tMINANG\n\t\t\tCHECKMAX\n\t\tTLOAD\t\t\t# MANEUVER LESS THAN .25 DEGREES\n\t\t\tCPHI\t\t# GO DIRECTLY INTO ATTITUDE HOLD\n\t\tSTCALL\tCDUXD\t\t# ABOUT COMMANDED ANGLES\n\t\t\tTOOBADI\t\t# STOP RATE AND EXIT\n\nCHECKMAX\tDLOAD\tDSU\n\t\t\tAM\n\t\t\tMAXANG\n\t\tBPL\tVLOAD\n\t\t\tALTCALC\t\t# UNIT\n\t\t\tCOFSKEW\t\t# COFSKEW\n\t\tUNIT\n\t\tSTORE\tCOF\t\t# COF IS THE MANEUVER AXIS\n# Page 353\n\t\tGOTO\t\t\t# SEE IF MANEUVER GOES THRU GIMBAL LOCK\n\t\t\tLOCSKIRT\nALTCALC\t\tVLOAD\tVAD\t\t# IF AM GREATER THAN 170 DEGREES\n\t\t\tMFI\n\t\t\tTMFI\n\t\tVSR1\n\t\tSTOVL\tMFISYM\n\t\t\tMFI \t+6\n\t\tVAD\tVSR1\n\t\t\tTMFI \t+6\n\t\tSTOVL\tMFISYM \t+6\n\t\t\tMFI \t+12D\n\t\tVAD\tVSR1\n\t\t\tTMFI \t+12D\n\t\tSTORE\tMFISYM \t+12D\t# MFISYM=(MFI+TMFI)/2\tSCALED BY 4\n\n# CALCULATE COF\n\n\t\tDLOAD\tSR1\n\t\t\tCAM\n\t\tPDDL\tDSU\t\t# PDO CAM\t\t\t\t$4\n\t\t\tDPHALF\n\t\t\tCAM\n\t\tBOVB\tPDDL\t\t# PS2 1 - CAM\t\t\t\t$2\n\t\t\tSIGNMPAC\n\t\t\tMFISYM \t+16D\n\t\tDSU\tDDV\n\t\t\t0\n\t\t\t2\n\t\tSQRT\tPDDL\t\t# COFZ = SQRT(MFISYM8-CAM)/(1-CAM)\n\t\t\tMFISYM \t+8D\t#\t\t\t\t$ ROOT 2\n\t\tDSU\tDDV\n\t\t\t0\n\t\t\t2\n\t\tSQRT\tPDDL\t\t# COFY = SQRT(MFISYM4-CAM)/(1-CAM)  $ROOT2\n\t\t\tMFISYM\n\t\tDSU\tDDV\n\t\t\t0\n\t\t\t2\n\t\tSQRT\tVDEF\t\t# COFX = SQRT(MFISYM-CAM)/(1-CAM)  $ROOT 2\n\t\tUNIT\n\t\tSTORE\tCOF\n\n# DETERMINE LARGEST COF AND ADJUST ACCORDINGLY\n\nCOFMAXGO\tDLOAD\tDSU\n\t\t\tCOF\n\t\t\tCOF \t+2\n\t\tBMN\tDLOAD\t\t# COFY G COFX\n# Page 354\n\t\t\tCOMP12\n\t\t\tCOF\n\t\tDSU\tBMN\n\t\t\tCOF \t+4\n\t\t\tMETHOD3\t\t# COFZ G COFX OR COFY\n\t\tGOTO\n\t\t\tMETHOD1\t\t# COFX G COFY OR COFZ\nCOMP12\t\tDLOAD\tDSU\n\t\t\tCOF \t+2\n\t\t\tCOF \t+4\n\t\tBMN\n\t\t\tMETHOD3\t\t# COFZ G COFY OR COFX\n\nMETHOD2\t\tDLOAD\tBPL\t\t# COFY MAX\n\t\t\tCOFSKEW +2\t# UY\n\t\t\tU2POS\n\t\tVLOAD\tVCOMP\n\t\t\tCOF\n\t\tSTORE\tCOF\nU2POS\t\tDLOAD\tBPL\n\t\t\tMFISYM \t+2\t# UX UY\n\t\t\tOKU21\n\t\tDLOAD\tDCOMP\t\t# SIGN OF UX OPPOSITE garbled\n\t\t\tCOF\n\t\tSTORE\tCOF\nOKU21\t\tDLOAD\tBPL\n\t\t\tMFISYM +10D\t# UY UZ\n\t\t\tLOCSKIRT\n\t\tDLOAD\tDCOMP\t\t# SIGN OF UZ OPPOSITE TO UY\n\t\t\tCOF \t+4\n\t\tSTORE\tCOF \t+4\n\t\tGOTO\n\t\t\tLOCSKIRT\nMETHOD1\t\tDLOAD\tBPL\t\t# COFX MAX\n\t\t\tCOFSKEW\t\t# UX\n\t\t\tU1POS\n\t\tVLOAD\tVCOMP\n\t\t\tCOF\n\t\tSTORE\tCOF\nU1POS\t\tDLOAD\tBPL\n\t\t\tMFISYM \t+2\t# UX UY\n\t\t\tOKU12\n\t\tDLOAD\tDCOMP\n\t\t\tCOF \t+2\t# SIGN OF UY OPPOSITE TO UX\n\t\tSTORE\tCOF \t+2\nOKU12\t\tDLOAD\tBPL\n\t\t\tMFISYM \t+4\t# UX UZ\n\t\t\tLOCSKIRT\n\t\tDLOAD\tDCOMP\t\t# SIGN OF UZ OPPOSITE TO UY\n\t\t\tCOF \t+4\n# Page 355\n\t\tSTORE\tCOF \t+4\n\t\tGOTO\n\t\t\tLOCSKIRT\nMETHOD3\t\tDLOAD\tBPL\t\t# COFZ MAX\n\t\t\tCOFSKEW +4\t# UZ\n\t\t\tU3POS\n\t\tVLOAD\tVCOMP\n\t\t\tCOF\n\t\tSTORE\tCOF\nU3POS\t\tDLOAD\tBPL\n\t\t\tMFISYM \t+4\t# UX UZ\n\t\t\tOKU31\n\t\tDLOAD\tDCOMP\n\t\t\tCOF\t\t# SIGN OF UX OPPOSITE TO UZ\n\t\tSTORE\tCOF\nOKU31\t\tDLOAD\tBPL\n\t\t\tMFISYM \t+10D\t# UY UZ\n\t\t\tLOCSKIRT\n\t\tDLOAD\tDCOMP\n\t\t\tCOF \t+2\t# SIGN OF UY OPPOSITE TO UZ\n\t\tSTORE\tCOF \t+2\n\t\tGOTO\n\t\t\tLOCSKIRT\n# Page 356\n# MATRIX OPERATIONS\n\n\t\tBANK\t13\n\t\tSETLOC\tKALCMON2\n\t\tBANK\n\n\t\tEBANK=\tBCDU\n\nMXM3\t\tSETPD\tVLOAD*\t\t# MXM3 MULTIPLIES 2 3X3 MATRICES\n\t\t\t0\t\t# AND LEAVES RESULT IN PD LIST\n\t\t\t0,1\t\t# AND MPAC\n\t\tVXM*\tPDVL*\n\t\t\t0,2\n\t\t\t6,1\n\t\tVXM*\tPDVL*\n\t\t\t0,2\n\t\t\t12D,1\n\t\tVXM*\tPUSH\n\t\t\t0,2\n\t\tRVQ\n\n# RETURN WITH MIXM2 IN PD LIST\n\nTRANSPOS\tSETPD\tVLOAD*\t\t# TRANSPOS TRANSPOSES A 3X3 MATRIX\n\t\t\t0\t\t# \tAND LEAVES RESULT IN PD LIST\n\t\t\t0,1\t\t# MATRIX ADDRESS IN XR1\n\t\tPDVL*\tPDVL*\n\t\t\t6,1\n\t\t\t12D,1\n\t\tPUSH\t\t\t# MATRIX IN PD\nTRNSPSPD\tEXIT\t\t\t# ENTER WITH MATRIX AT 0 IN PD LIST\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t12\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t16\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t12\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t14\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t4\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t14\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t2\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t6\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t2\n# Page 357\n\t\tTC\tINTPRET\n\t\tRVQ\n\n\t\tBANK\t15\n\t\tSETLOC\tKALCMON1\n\t\tBANK\n\n\t\tEBANK=\tBCDU\n\nMINANG\t\t2DEC\t0.00069375\n\nMAXANG\t\t2DEC\t0.472222222\n\n# GIMBAL LOCK CONSTANTS\n\n# D = MGA CORRESPONDING TO GIMBAL LOCK = 60 DEGREES\n#\tNGL = BUFFER ANGLE (TO AVOID DIVISIONS BY ZERO) = 2 DEGREES\n\nSD\t\t2DEC\t.433015\t\t# = SIN(D)\t\t\t$2\n\nK3S1\t\t2DEC\t.86603\t\t# = SIN(D)\t\t\t$1\n\nK4\t\t2DEC\t-.25\t\t# = -COS(D)\t\t\t$2\n\nK4SQ\t\t2DEC\t.125\t\t# = COS(D)COS(D)\t\t$2\n\nSNGLCD\t\t2DEC\t.008725\t\t# = SIN(NGL)COS(D)\t\t$2\n\nCNGL\t\t2DEC\t.499695\t\t# COS(NGL)\t\t\t$2\n\nLOCKANGL\tDEC\t.388889\t\t# = 70 DEGREES\n\n# INTERPRETIVE SUBROUTINE TO READ THE CDU ANGLES\n\nREADCDUK\tCA\tCDUZ\t\t# LOAD T(MPAC) WITH CDU ANGLES\n\t\tTS\tMPAC \t+2\n\t\tEXTEND\n\t\tDCA\tCDUX\t\t# AND CHANGE MODE TO TRIPLE PRECISION\n\t\tTCF\tTLOAD \t+6\n\nCDUTODCM\tAXT,1\tSSP\n\t\tOCT\t3\n\t\t\tS1\n\t\tOCT\t1\t\t# SET XR1, S1, AND PD FOR LOOP\n\t\tSTORE\t7\n\t\tSETPD\n\t\t\t0\nLOOPSIN\t\tSLOAD*\tRTB\n\t\t\t10D,1\n\t\t\tCDULOGIC\n# Page 358\n\t\tSTORE\t10D\t\t# LOAD PD WITH \t0 SIN(PHI)\n\t\tSIN\tPDDL\t\t#\t\t2 COS(PHI)\n\t\t\t10D\t\t#\t\t4 SIN(THETA)\n\t\tCOS\tPUSH\t\t#\t\t6 COS(THETA)\n\t\tTIX,1\tDLOAD\t\t#\t\t8 SIN(PSI)\n\t\t\tLOOPSIN\t\t#\t\t10 COS(PSI)\n\t\t\t6\n\t\tDMP\tSL1\n\t\t\t10D\n\t\tSTORE\t0,2\t\t# C0 = COS(THETA)COS(PSI)\n\t\tDLOAD\tDMP\n\t\t\t4\n\t\t\t0\n\t\tPDDL\tDMP\t\t# (PD6 SIN(THETA)SIN(PHI))\n\t\t\t6\n\t\t\t8D\n\t\tDMP\tSL1\n\t\t\t2\n\t\tBDSU\tSL1\n\t\t\t12D\n\t\tSTORE\t2,2\t\t# C1=-COS(THETA)SIN(PSI)COS(PHI)\n\t\tDLOAD\tDMP\n\t\t\t2\n\t\t\t4\n\t\tPDDL\tDMP\t\t# (PD7 COS(PHI)SIN(THETA)) SCALED 4\n\t\t\t6\n\t\t\t8D\n\t\tDMP\tSL1\n\t\t\t0\n\t\tDAD\tSL1\n\t\t\t14D\n\t\tSTORE\t4,2\t\t# C2=COS(THETA)SIN(PSI)SIN(PHI)\n\t\tDLOAD\n\t\t\t8D\n\t\tSTORE\t6,2\t\t# C3=SIN(PSI)\n\t\tDLOAD\n\t\t\t10D\n\t\tDMP\tSL1\n\t\t\t2\n\t\tSTORE\t8D,2\t\t# C4=COS(PSI)COS(PHI)\n\t\tDLOAD\tDMP\n\t\t\t10D\n\t\t\t0\n\t\tDCOMP\tSL1\n\t\tSTORE\t10D,2\t\t# C5=-COS(PSI)SIN(PHI)\n\t\tDLOAD\tDMP\n\t\t\t4\n\t\t\t10D\n\t\tDCOMP\tSL1\n\t\tSTORE\t12D,2\t\t# C6=-SIN(THETA)COS(PSI)\n# Page 359\n\t\tDLOAD\n\t\tDMP\tSL1\t\t# (PUSH UP 7)\n\t\t\t8D\n\t\tPDDL\tDMP\t\t# (PD7 COS(PHI)SIN(THETA)SIN(PSI)) SCALE 4\n\t\t\t6\n\t\t\t0\n\t\tDAD\tSL1\t\t# (PUSH UP 7)\n\t\tSTADR\t\t\t# C7=COS(PHI)SIN(THETA)SIN(PSI)\n\t\tSTORE\t14D,2\t\t# \t+COS(THETA)SIN(PHI)\n\t\tDLOAD\n\t\tDMP\tSL1\t\t# (PUSH UP 6)\n\t\t\t8D\n\t\tPDDL\tDMP\t\t# (PD6 SIN(THETA)SIN(PHI)SIN(PSI)) SCALE 4\n\t\t\t6\n\t\t\t2\n\t\tDSU\tSL1\t\t# (PUSH UP 6)\n\t\tSTADR\n\t\tSTORE\t16D,2\t\t# C8=-SIN(THETA)SIN(PHI)SIN(PSI)\n\t\tRVQ\t\t\t# +COS(THETA)COS(PHI)\n\n# CALCULATION OF THE MATRIX DEL......\n#\n#\t *         *           __T           *\n#\tDEL = (IDMATRIX)COS(A)+UU (1-COS(A))+UX SIN(A)\t\tSCALED 1\n#\t      _\n#\tWHERE U IS A UNIT VECTOR (DP SCALED 2) ALONG THE AXIS OF ROTATION.\n#\tA IS THE ANGLE OF ROTATION (DP SCALED 2)\n#\t                                    _\n#\tUPON ENTRY, THE STARTING ADDRESS OF U IS COF, AND A IS IN MPAC\n\nDELCOMP\t\tSETPD\tPUSH\t\t# MPAC CONTAINS THE ANGLE A\n \t\t\t0\n\t\tSIN\tPDDL\t\t# PD0 = SIN(A)\n\t\tCOS\tPUSH\t\t# PD2 = COS(A)\n\t\tSR2\tPDDL\t\t# PD2 = COS(A)\t\t\t\t$8\n\t\tBDSU\tBOVB\n\t\t\tDPHALF\n\t\t\tSIGNMPAC\n\t\tPDDL\t\t\t# PDA = 1-COS(A)\n\n# COMPUTE THE DIAGONAL COMPONENTS OF DEL\n\n\t\t\tCOF\n\t\tDSQ\tDMP\n\t\t\t4\n\t\tDAD\tSL3\n\t\t\t2\n\t\tBOVB\n\t\t\tSIGNMPAC\n# Page 360\n\t\tSTODL\tKEL\t\t# UX UX(1-COS(A)) +COS(A)\t\t$1\n\t\t\tCOF \t+2\n\t\tDSQ\tDMP\n\t\t\t4\n\t\tDAD\tSL3\n\t\t\t2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tKEL \t+8D\t# UY UY(1-COS(A)) +COS(A)\t\t$1\n\t\t\tCOF \t+4\n\t\tDSQ\tDMP\n\t\t\t4\n\t\tDAD\tSL3\n\t\t\t2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTORE\tKEL \t+16D\t# UZ UZ(1-COS(A)) +COS(A)\t\t$1\n\n# COMPUTE THE OFF DIAGONAL TERMS OF DEL\n\n\t\tDLOAD\tDMP\n\t\t\tCOF\n\t\t\tCOF\t+2\n\t\tDMP\tSL1\n\t\t\t4\n\t\tPDDL\tDMP\t\t# D6\t UX UY (1-COS A)\t\t$4\n\t\t\tCOF \t+4\n\t\t\t0\n\t\tPUSH\tDAD\t\t# D8 \tUZ SIN A\t\t\t$4\n\t\t\t6\n\t\tSL2\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tKEL \t+6\n\t\tBDSU\tSL2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tKEL \t+2\n\t\t\tCOF\n\t\tDMP\tDMP\n\t\t\tCOF \t+4\n\t\t\t4\n\t\tSL1\tPDDL\t\t# D6 \tUX UZ (1-COS A)\t\t\t$4\n\t\t\tCOF \t+2\n\t\tDMP\tPUSH\t\t# D8\tUY SIN(A)\n\t\t\t0\n\t\tDAD\tSL2\n\t\t\t6\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tKEL \t+4\t# UX UZ (1-COS(A))+UY SIN(A)\n# Page 361\n\t\tBDSU\tSL2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tKEL\t +12D\t# UX UZ (1-COS(A))-UY SIN(A)\n\t\t\tCOF \t+2\n\t\tDMP\tDMP\n\t\t\tCOF \t+4\n\t\t\t4\n\t\tSL1\tPDDL\t\t# D6\tUY UZ (1-COS(A))\t\t$ 4\n\t\t\tCOF\n\t\tDMP\tPUSH\t\t# D8\tUX SIN(A)\n\t\t\t0\n\t\tDAD\tSL2\n\t\t\t6\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTODL\tKEL \t+14D\t# UY UZ(1-COS(A)) +UX SIN(A)\n\t\tBDSU\tSL2\n\t\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTORE\tKEL \t+10D\t# UY UZ (1-COS(A)) -UX SIN(A)\n\t\tRVQ\n\n# DIRECTION COSINE MATRIX TO CDU ANGLE ROUTINE\n# X1 CONTAINS THE COMPLEMENT OF THE STARTING ADDRESS FOR MATRIX (SCALED 2).\n# LEAVE CDU ANGLES SCALED 2PI IN V(MPAC).\n# COS(MGA) WILL BE LEFT IN S1 (SCALED 1).\n#\n# THE DIRECTION COSINE MATRIX RELATING S/C AXES TO STABLE MEMBER AXES CAN BE WRITTEN AS:\n#\n#\tC  = COS(THETA) COS(PSI\n#\t 0\n#\n#\tC  = -COS(THETA) SIN(PSI) COS(PHI) + SIN(THETA) SIN(PHI)\n#\t 1\n#\n#\tC  = COS(THETA) SIN(PSI) SIN(PHI) + SIN(THETA) COS(PHI)\n#\t 2\n#\n#\tC  = SIN(PSI)\n#\t 3\n#\n#\tC  = COS(PSI) COS(PHI)\n#\t 4\n#\n#\tC  = -COS(PSI) SIN(PHI)\n#\t 5\n#\n#\tC  = -SIN(THETA) COS(PSI)\n#\t 6\n#\n#\tC  = SIN(THETA) SIN(PSI) COS(PHI) + COS (THETA) SIN(PHI)\n#\t 7\n#\n#\tC  = -SIN(THETA) SIN(PSI) SIN(PHI) + COS(THETA)COS(PHI)\n#\t 8\n# Page 362\n#\n# WHERE\tPHI = OGA\n#\tTHETA = IGA\n#\tPSI = MGA\n\nDCMTOCDU\tDLOAD*\tARCSIN\n\t\t\t6,1\n\t\tPUSH\tCOS\t\t# PD +0 \tPSI\n\t\tSL1\tBOVB\n\t\t\tSIGNMPAC\n\t\tSTORE\tS1\n\t\tDLOAD*\tDCOMP\n\t\t\t12D,1\n\t\tDDV\tARCSIN\n\t\t\tS1\n\t\tPDDL*\tBPL\t\t# PD +2\t\tTHETA\n\t\t\t0,1\t\t# MUST CHECK THE SIGN OF COS(THETA)\n\t\t\tOKTHETA\t\t# TO DETERMINE THE PROPER QUADRANT.\n\t\tDLOAD\tDCOMP\n\t\tBPL\tDAD\n\t\t\tSUHALFA\n\t\t\tDPHALF\n\t\tGOTO\n\t\t\tCALCPHI\nSUHALFA\t\tDSU\n\t\t\tDPHALF\nCALCPHI\t\tPUSH\nOKTHETA\t\tDLOAD*\tDCOMP\n\t\t\t10D,1\n\t\tDDV\tARCSIN\n\t\t\tS1\n\t\tPDDL*\tBPL\t\t# PUSH DOWN PHI\n\t\t\t8D,1\n\t\t\tOKPHI\n\t\tDLOAD\tDCOMP\t\t# PUSH UP PHI\n\t\tBPL\tDAD\n\t\t\tSUHALFAP\n\t\t\tDPHALF\n\t\tGOTO\n\t\t\tVECOFANG\nSUHALFAP\tDSU\tGOTO\n\t\t\tDPHALF\n\t\t\tVECOFANG\nOKPHI\t\tDLOAD\t\t\t# PUSH UP PHI\nVECOFANG\tVDEF\tRVQ\n# Page 363\n# ROUTINES FOR TERMINATING THE AUTOMATIC MANEUVER AND RETURNING TO USER.\n\nTOOBADF\t\tEXIT\n\t\tTC\tALARM\n\t\tOCT\t00401\n\n\t\tTCF\tNOGO\t\t# DO NOT ZERO ATTITUDE ERRORS\n\n\t\tTC\tBANKCALL\n\t\tCADR\tZATTEROR\t# ZERO ATTITUDE ERRORS\n\nNOGO\t\tTC\tBANKCALL\n\t\tCADR\tSTOPRATE\t# STOP RATES\n\n\t\tCAF\tTWO\n\t\tINHINT\t\t\t# ALL RETURNS ARE NOW MADE VIA GOODEND\n\t\tTC\tWAITLIST\n\t\tEBANK=\tBCDU\n\t\t2CADR\tGOODMANU\n\n\t\tTCF\tENDOFJOB\n\nTOOBADI\t\tEXIT\n\t\tTCF\tNOGO\n\n\n"
  },
  {
    "path": "Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tBURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t731-751\n# Mod history:\t2009-05-19 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-07 RSB\tCorrected 3 typos.\n#\t\t2009-07-23 RSB\tAdded Onno's notes on the naming\n#\t\t\t\tof this function, which he got from\n#\t\t\t\tDon Eyles.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 731\n## At the get-together of the AGC developers celebrating the 40th anniversary\n## of the first moonwalk, Don Eyles (one of the authors of this routine along\n## with Peter Adler) has related to us a little interesting history behind the\n## naming of the routine.\n##\n## It traces back to 1965 and the Los Angeles riots, and was inspired\n## by disc jockey extraordinaire and radio station owner Magnificent Montague.\n## Magnificent Montague used the phrase \"Burn, baby! BURN!\" when spinning the\n## hottest new records. Magnificent Montague was the charismatic voice of\n## soul music in Chicago, New York, and Los Angeles from the mid-1950s to\n## the mid-1960s.\n# BURN, BABY, BURN -- MASTER IGNITION ROUTINE\n\n\t\tBANK\t36\n\t\tSETLOC\tP40S\n\t\tBANK\n\t\tEBANK=\tWHICH\n\t\tCOUNT*\t$$/P40\n\n# THE MASTER IGNITION ROUTINE IS DESIGNED FOR USE BY THE FOLLOWING LEM PROGRAMS:  P12, P40, P42, P61, P63.\n# IT PERFORMS ALL FUNCTIONS IMMEDIATELY ASSOCIATED WITH APS OR DPS IGNITION:  IN PARTICULAR, EVERYTHING LYING\n# BETWEEN THE PRE-IGNITION TIME CHECK -- ARE WE WITHIN 45 SECONDS OF TIG? -- AND TIG + 26 SECONDS, WHEN DPS\n# PROGRAMS THROTTLE UP.\n#\n# VARIATIONS AMONG PROGRAMS ARE ACCOMODATED BY MEANS OF TABLES CONTAINING CONSTANTS (FOR AVEGEXIT, FOR\n# WAITLIST, FOR PINBALL) AND TCF INSTRUCTIONS.  USERS PLACE THE ADRES OF THE HEAD OF THE APPROPRIATE TABLE\n# (OF P61TABLE FOR P61LM, FOR EXAMPLE) IN ERASABLE REGISTER `WHICH' (E4).  THE IGNITION ROUTINE THEN INDEXES BY\n# WHICH TO OBTAIN OR EXECUTE THE PROPER TABLE ENTRY.  THE IGNITION ROUTINE IS INITIATED BY A TCF BURNBABY,\n# THROUGH BANKJUMP IF NECESSARY.  THERE IS NO RETURN.\n#\n# THE MASTER IGNITION ROUTINE WAS CONCEIVED AND EXECUTED, AND (NOTA BENE) IS MAINTAINED BY ADLER AND EYLES.\n#\n# \t\t   HONI SOIT QUI MAL Y PENSE\n#\n#\t***********************************************\n#\t\tTABLES FOR THE IGNITION ROUTINE\n#\t***********************************************\n#\n#\t\t\tNOLI SE TANGERE\n\nP12TABLE\tVN\t0674\t\t# (0)\n\t\tTCF\tULLGNOT\t\t# (1)\n\t\tTCF\tCOMFAIL3\t# (2)\n\t\tTCF\tGOCUTOFF\t# (3)\n\t\tTCF\tTASKOVER\t# (4)\n\t\tTCF\tP12SPOT\t\t# (5)\n\t\tDEC\t0\t\t# (6)\tNO ULLAGE\n\t\tEBANK=\tWHICH\n\t\t2CADR\tSERVEXIT\t# (7)\n\n\t\tTCF\tDISPCHNG\t# (11)\n\t\tTCF\tWAITABIT\t# (12)\n\t\tTCF\tP12IGN\t\t# (13)\n\nP40TABLE\tVN\t0640\t\t# (0)\n\t\tTCF\tULLGNOT\t\t# (1)\n\t\tTCF\tCOMFAIL4\t# (2)\n\t\tTCF\tGOPOST\t\t# (3)\n\t\tTCF\tTASKOVER\t# (4)\n\t\tTCF\tP40SPOT\t\t# (5)\n# Page 732\n\t\tDEC\t2240\t\t# (6)\n\t\tEBANK=\tOMEGAQ\n\t\t2CADR\tSTEERING\t# (7)\n\n\t\tTCF\tP40SJUNK\t# (11)\n\t\tTCF\tWAITABIT\t# (12)\n\t\tTCF\tP40IGN\t\t# (13)\n\t\tTCF\tREP40ALM\t# (14)\n\nP41TABLE\tTCF\tP41SPOT\t\t# (5)\n\t\tDEC\t-1\t\t# (6)\n\t\tEBANK=\tOMEGAQ\n\t\t2CADR\tCALCN85\t\t# (7)\n\n\t\tTCF\tCOMMON\t\t# (11)\n\t\tTCF\tTIGTASK\t\t# (12)\n\nP42TABLE\tVN\t0640\t\t# (0)\n\t\tTCF\tWANTAPS\t\t# (1)\n\t\tTCF\tCOMFAIL4\t# (2)\n\t\tTCF\tGOPOST\t\t# (3)\n\t\tTCF\tTASKOVER\t# (4)\n\t\tTCF\tP42SPOT\t\t# (5)\n\t\tDEC\t2640\t\t# (6)\n\t\tEBANK=\tOMEGAQ\n\t\t2CADR\tSTEERING\t# (7)\n\n\t\tTCF\tP40SJUNK\t# (11)\n\t\tTCF\tWAITABIT\t# (12)\n\t\tTCF\tP42IGN\t\t# (13)\n\t\tTCF\tP42STAGE\t# (14)\n\nP63TABLE\tVN\t0662\t\t# (0)\n\t\tTCF\tULLGNOT\t\t# (1)\n\t\tTCF\tCOMFAIL3\t# (2)\n\t\tTCF\tV99RECYC\t# (3)\n\t\tTCF\tTASKOVER\t# (4)\n\t\tTCF\tP63SPOT\t\t# (5)\n\t\tDEC\t2240\t\t# (6)\n\t\tEBANK=\tWHICH\n\t\t2CADR\tSERVEXIT\t# (7)\n\n\t\tTCF\tDISPCHNG\t# (11)\n\t\tTCF\tWAITABIT\t# (12)\n# Page 733\n\t\tTCF\tP63IGN\t\t# (13)\n\nABRTABLE\tVN\t0663\t\t# (0)\n\t\tTCF\tULLGNOT\t\t# (1)\n\t\tTCF\tCOMFAIL3\t# (2)\n\t\tTCF\tGOCUTOFF\t# (3)\n\t\tTCF\tTASKOVER\t# (4)\n\t\tNOOP\t\t\t# (5)\n\t\tNOOP\t\t\t# (6)\n\t\tNOOP\t\t\t# (7)\n\t\tNOOP\n\t\tTCF\tDISPCHNG\t# (11)\n\t\tTCF\tWAITABIT\t# (12)\n\t\tTCF\tABRTIGN\t\t# (13)\n\n#\t*********************************\n#\tGENERAL PURPOSE IGNITION ROUTINES\n#\t*********************************\n\nBURNBABY\tTC\tPHASCHNG\t# GROUP 4 RESTARTS HERE\n\t\tOCT\t04024\n\n\t\tCAF\tZERO\t\t# EXTIRPATE JUNK LEFT IN DVTOTAL\n\t\tTS\tDVTOTAL\n\t\tTS\tDVTOTAL +1\n\n\t\tTC\tBANKCALL\t# P40AUTO MUST BE BANKCALLED EVEN FROM ITS\n\t\tCADR\tP40AUTO\t\t# OWN BANK TO SET UP RETURN PROPERLY\n\nB*RNB*B*\tEXTEND\n\t\tDCA\tTIG\t\t# STORE NOMINAL TIG FOR OBLATENESS COMP.\n\t\tDXCH\tGOBLTIME\t# AND FOR P70 OR P71.\n\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tENGINOF3\n\t\tRELINT\n\n\t\tINDEX\tWHICH\n\t\tTCF\t5\n\nP42SPOT\t\t=\tP40SPOT\t\t# (5)\nP12SPOT\t\t=\tP40SPOT\t\t# (5)\nP63SPOT\t\t=\tP41SPOT\t\t# (5)\tIN P63 CLOKTASK ALREADY GOING\nP40SPOT\t\tCS\tCNTDNDEX\t# (5)\n# Page 734\n\t\tTC\tBANKCALL\t# MUST BE BANKCALLED FOR GENERALIZED\n\t\tCADR\tSTCLOK2\t\t# \tRETURN\nP41SPOT\t\tTC\tINTPRET\t\t# (5)\n\t\tDLOAD\tDSU\n\t\t\tTIG\n\t\t\tD29.9SEC\n\t\tSTCALL\tTDEC1\n\t\t\tINITCDUW\n\t\tBOFF\tCALL\n\t\t\tMUNFLAG\n\t\t\tGOMIDAV\n\t\t\tCSMPREC\n\t\tVLOAD\tMXV\n\t\t\tVATT1\n\t\t\tREFSMMAT\n\t\tVSR1\n\t\tSTOVL\tV(CSM)\t\t# CSM VELOCITY -- M/CS*2(7)\n\t\t\tRATT1\n\t\tVSL4\tMXV\n\t\t\tREFSMMAT\n\t\tSTCALL\tR(CSM)\t\t# CSM POSITION -- M*2(24)\n\t\t\tMUNGRAV\n\t\tSTODL\tG(CSM)\t\t# CSM GRAVITY VEC. -- M/CS*2(7)\n\t\t\tTAT\n\t\tSTORE\tTDEC1\t\t# RELOAD TDEC1 FOR MIDTOAV.\nGOMIDAV\t\tCALRB\n\t\t\tMIDTOAV1\n\t\tTCF\tCALLT-35\t# MADE IT IN TIME.\n\n\t\tEXTEND\t\t\t# TIG WAS SLIPPED, SO RESET TIG TO 29.9\n\t\tDCA\tPIPTIME1\t# SECONDS AFTER THE TIME TO WHICH WE DID\n\t\tDXCH\tTIG\t\t# INTEGRATE.\n\t\tEXTEND\n\t\tDCA\tD29.9SEC\n\t\tDAS\tTIG\n\nCALLT-35\tDXCH\tMPAC\n\t\tDXCH\tSAVET-30\t# DELTA-T UNTIL TIG-30\n\t\tEXTEND\n\t\tDCS\t5SECDP\n\t\tDAS\tSAVET-30\t# DELTA-T UNTIL TIG-35\n\t\tEXTEND\n\t\tDCA\tSAVET-30\n\t\tTC\tLONGCALL\n\t\tEBANK=\tTTOGO\n\t\t2CADR\tTIG-35\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t20254\t\t# 4.25SPOT FOR TIG-35 RESTART.\n# Page 735\n\t\tTC\tCHECKMM\n\t\tDEC\t63\n\t\tTCF\tENDOFJOB\t# NOT P63\n\t\tCS\tCNTDNDEX\t# P63 CAN START DISPLAYING NOW.\n\t\tTS\tDISPDEX\n\t\tTC\tINTPRET\n\t\tVLOAD\tABVAL\n\t\t\tVN1\n\t\tSTORE\tABVEL\t\t# INITIALIZE ABVEL FOR P63 DISPLAY\n\t\tEXIT\n\t\tTCF\tENDOFJOB\n\n#\t********************************\n\nTIG-35\t\tCAF\t5SEC\n\t\tTC\tTWIDDLE\n\t\tADRES\tTIG-30\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t40154\t\t# 4.15SPOT FOR TIG-30 RESTART\n\n\t\tCS\tBLANKDEX\t# BLANK DSKY FOR 5 SECONDS\n\t\tTS\tDISPDEX\n\n\t\tINDEX\tWHICH\n\t\tCS\t6\t\t# CHECK ULLAGE TIME.\n\t\tEXTEND\n\t\tBZMF\tTASKOVER\n\t\tCAF\t4.9SEC\t\t# SET UP TASK TO RESTORE DISPLAY AT TIG-30\n\t\tTC\tTWIDDLE\n\t\tADRES\tTIG-30.1\n\n\t\tCAF\tPRIO17\t\t# A NEGATIVE ULLAGE TIME INDICATES P41, IN\n\t\tTC\tNOVAC\t\t# WHICH CASE WE HAVE TO SET UP A JOB TO\n\t\tEBANK=\tTTOGO\t\t# BLANK THE DSKY FOR FIVE SECONDS, SINCE\n\t\t2CADR\tP41BLANK\t# CLOKJOB IS NOT RUNNING DURING P41.\n\n\t\tTCF\tTASKOVER\n\nP41BLANK\tTC\tBANKCALL\t# BLANK DSKY.\n\t\tCADR\tCLEANDSP\n\t\tTCF\tENDOFJOB\n\nTIG-30.1\tCAF\tPRIO17\t\t# SET UP JOB TO RESTORE DISPLAY AT TIG-30\n\t\tTC\tNOVAC\n\t\tEBANK=\tTTOGO\n\t\t2CADR\tTIG-30A\n\n\t\tTCF\tTASKOVER\n# Page 736\nTIG-30A\t\tCAF\tV16N85B\n\t\tTC\tBANKCALL\t# RESTORE DISPLAY.\n\t\tCADR\tREGODSP\t\t# REGODSP DOES A TCF ENDOFJOB\n\n#\t********************************\n\nTIG-30\t\tCAF\tS24.9SEC\n\t\tTC\tTWIDDLE\n\t\tADRES\tTIG-5\n\n\t\tCS\tCNTDNDEX\t# START UP CLOKTASK AGAIN\n\t\tTS\tDISPDEX\n\n\t\tINDEX\tWHICH\t\t# PICK UP APPROPRIATE ULLAGE -- ON TIME\n\t\tCA\t6\t\t# Was CAF --- RSB 2009.\n\t\tEXTEND\n\t\tBZMF\tULLGNOT\t\t# DON'T SET UP ULLAGE IF DT IS NEG OR ZERO\n\t\tTS\tSAVET-30\t# SAVE DELTA-T FOR RESTART\n\t\tTC\tTWIDDLE\n\t\tADRES\tULLGTASK\n\n\t\tCA\tTHREE\t\t# RESTART PROTECT ULLGTASK (1.3SPOT)\n\t\tTS\tL\n\t\tCS\tTHREE\n\t\tDXCH\t-PHASE1\n\t\tCS\tTIME1\n\t\tTS\tTBASE1\n\n\t\tINDEX\tWHICH\n\t\tTCF\t1\n\nWANTAPS\t\tCS\tFLGWRD10\t# (1) FOR P42 ENSURE APSFLAG IS SET.  IF IT\n\t\tMASK\tAPSFLBIT\t# WASN'T SET, DAP WILL BE INITIALIZED TO\n\t\tADS\tFLGWRD10\t# ASCENT VALUES BY 1/ACCS IN 2 SECONDS.\n\nULLGNOT\t\tEXTEND\t\t\t# (1)\n\t\tINDEX\tWHICH\n\t\tDCA\t7\t\t# LOAD AVEGEXIT WITH APPROPRIATE 2CADR\n\t\tDXCH\tAVEGEXIT\n\n\t\tCAF\tTWO\t\t# 4.2SPOT RESTARTS IMMEDIATELY AT REDO4.2\n\t\tTS\tL\n\t\tCS\tTWO\t\t# AND ALSO AT TIG-5 AT THE CORRECT TIME.\n\t\tDXCH\t-PHASE4\n\n\t\tCS\tTIME1\n\t\tTS\tTBASE4\t\t# SET TBASE4 FOR TIG-5 RESTART\n\nREDO2.17\tEXTEND\n# Page 737\n\t\tDCA\tNEG0\t\t# CLEAR OUT GROUP 2 SO LAMBERT CAN START\n\t\tDXCH\t-PHASE2\t\t# IF NEEDED.\n\nREDO4.2\t\tCCS\tPHASE5\t\t# IF SERVICER GOING?\n\t\tTCF\tTASKOVER\t# YES, DON'T START IT UP AGAIN.\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tPREREAD\t\t# PREREAD END THIS TASK\n\n# \t*********************************\n\nULLGTASK\tTC\tONULLAGE\t# THIS COMES AT TIG-7.5 OR TIG-3.5\n\t\tTC\tPHASCHNG\n\t\tOCT\t1\n\t\tTCF\tTASKOVER\n\n# \t*********************************\n\nTIG-5\t\tEXTEND\n\t\tDCA\tNEG0\t\t# INSURE THAT GROUP 3 IS INACTIVE.\n\t\tDXCH\t-PHASE3\n\n\t\tCAF\t5SEC\n\t\tTC\tTWIDDLE\n\t\tADRES\tTIG-0\n\n\t\tTC\tDOWNFLAG\t# RESET IGNFLAG AND ASINFLAG\n\t\tADRES\tIGNFLAG\t\t# \tFOR LIGHT-UP LOGIC.\n\t\tTC\tDOWNFLAG\n\t\tADRES\tASTNFLAG\n\n\t\tINDEX\tWHICH\n\t\tTCF\t11\n\nP40SJUNK\tCCS\tPHASE3\t\t# (11) P40 AND P42.  S40.13 IN PROGRESS?\n\t\tTCF\tDISPCHNG\t# YES\n\n\t\tCAF\tPRIO20\n\t\tTC\tFINDVAC\n\t\tEBANK=\tTTOGO\n\t\t2CADR\tS40.13\n\n\t\tTC\tPHASCHNG\t# 3.5SPOT FOR S40.13\n\t\tOCT\t00053\nDISPCHNG\tCS\tVB99DEX\t\t# (11)\n\t\tTS\tDISPDEX\n\n# Page 738\nCOMMON\t\tTC\tPHASCHNG\t# RESTART TIG-0 (4.7SPOT)\n\t\tOCT\t40074\n\t\tTCF\tTASKOVER\n\n# \t*********************************\n\nTIG-0\t\tCS\tFLAGWRD7\t# SET IGNFLAG SINCE TIG HAS ARRIVED\n\t\tMASK\tIGNFLBIT\n\t\tADS\tFLAGWRD7\n\n\t\tTC\tCHECKMM\t\t# IN P63 CASE, THROTTLE-UP IS ZOOMTIME\n\t\tDEC\t63\t\t# AFTER NOMINAL IGNITION, NOT ACTUAL\n\t\tTCF\tIGNYET?\n\t\tCA\tZOOMTIME\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tP63ZOOM\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40033\n\n\t\tOCT\t05014\n\t\tOCT\t77777\n\nIGNYET?\t\tCAF\tASTNBIT\t\t# CHECK ASTNFLAG:  HAS ASTRONAUT RESPONDED\n\t\tMASK\tFLAGWRD7\t# TO OUR ENGINE ENABLE REQUEST?\n\t\tEXTEND\n\t\tINDEX\tWHICH\n\t\tBZF\t12\t\t# BRANCH IF HE HAS NOT RESPONDED YET\n\nIGNITION\tCS\tFLAGWRD5\t# INSURE ENGONFLG IS SET.\n\t\tMASK\tENGONBIT\n\t\tADS\tFLAGWRD5\n\t\tCS\tPRIO30\t\t# TURN ON THE ENGINE.\n\t\tEXTEND\n\t\tRAND\tDSALMOUT\n\t\tAD\tBIT13\n\t\tEXTEND\n\t\tWRITE\tDSALMOUT\n\t\tEXTEND\t\t\t# SET TEVENT FOR DOWNLINK\n\t\tDCA\tTIME2\n\t\tDXCH\tTEVENT\n\n\t\tEXTEND\t\t\t# UPDATE TIG USING TGO FROM S40.13\n\t\tDCA\tTGO\n\t\tDXCH\tTIG\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDAS\tTIG\n\n# Page 739\n\t\tCS\tFLUNDBIT\t# PERMIT GUIDANCE LOOP DISPLAYS\n\t\tMASK\tFLAGWRD8\n\t\tTS\tFLAGWRD8\n\n\t\tINDEX\tWHICH\n\t\tTCF\t13\n\nP63IGN\t\tEXTEND\t\t\t# (13)\tINITIATE BURN DISPLAYS\n\t\tDCA\tDSP2CADR\n\t\tDXCH\tAVGEXIT\n\n\t\tCA\tZ\t\t# ASSASSINATE CLOKTASK\n\t\tTS\tDISPDEX\n\n\t\tCS\tFLAGWRD9\t# SET FLAG FOR P70-P71\n\t\tMASK\tLETABBIT\n\t\tADS\tFLAGWRD9\n\n\t\tCS\tFLAGWRD7\t# SET SWANDISP TO ENABLE R10.\n\t\tMASK\tSWANDBIT\n\t\tADS\tFLAGWRD7\n\n\t\tCS\tPULSES\t\t# MAKE SURE DAP IS NOT IN MINIMUM-IMPULSE\n\t\tMASK\tDAPBOOLS\t# MODE, IN CASE OF SWITCH TO P66\n\t\tTS\tDAPBOOLS\n\n\t\tEXTEND\t\t\t# INITIALIZE TIG FOR P70 AND P71.\n\t\tDCA\tTIME2\n\t\tDXCH\tTIG\n\n\t\tCAF\tZERO\t\t# INITIALIZE WCHPHASE, AND FLPASS0\n\t\tTS\tWCHPHASE\n\t\tTS\tWCHPHOLD\t# ALSO WHCPHOLD\n\t\tCA\tTWO\n\t\tTS\tFLPASS0\n\n\t\tTCF\tP42IGN\nP40IGN\t\tCS\tFLAGWRD5\t# (13)\n\t\tMASK\tNOTHRBIT\n\t\tEXTEND\n\t\tBZF\tP42IGN\n\t\tCA\tZOOMTIME\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tP40ZOOM\n\nP63IGN1\t\tTC\t2PHSCHNG\n\t\tOCT\t40033\t\t# 3.3SPOT FOR ZOOM RESTART.\n\t\tOCT\t05014\t\t# TYPE C RESTARTS HERE IMMEDIATELY\n\t\tOCT\t77777\n\n# Page 740\n\t\tTCF\tP42IGN\nP12IGN\t\tCAF\tEBANK6\n\t\tTS\tEBANK\n\t\tEBANK=\tAOSQ\n\n\t\tCA\tIGNAOSQ\t\t# INITIALIZE DAP BIAS ACCELERATION\n\t\tTS\tAOSQ\t\t# ESTIMATES AT P12 IGNITION.\n\t\tCA\tIGNAOSR\n\t\tTS\tAOSR\n\n\t\tCAF\tEBANK7\n\t\tTS\tEBANK\n\t\tEBANK=\tDVCNTR\n\nABRTIGN\t\tCA\tZ\t\t# (13) KILL CLOKTASK\n\t\tTS\tDISPDEX\n\n\t\tEXTEND\t\t\t# CONNECT ASCENT GYIDANCE TO SERVICER.\n\t\tDCA\tATMAGADR\n\t\tDXCH\tAVGEXIT\n\n\t\tCS\tFLAGWRD7\t# ENABLE R10.\n\t\tMASK\tSWANDBIT\n\t\tADS\tFLAGWRD7\n\nP42IGN\t\tCS\tDRIFTBIT\t# ENSURE THAT POWERED-FLIGHT SWITCHING\n\t\tMASK\tDAPBOOLS\t# CURVES ARE USED.\n\t\tTS\tDAPBOOLS\n\t\tCAF\tIMPULBIT\t# EXAMINE IMPULSE SWITCH\n\t\tMASK\tFLAGWRD2\n\t\tCCS\tA\n\t\tTCF\tIMPLBURN\n\nDVMONCON\tTC\tDOWNFLAG\n\t\tADRES\tIGNFLAG\t\t# CONNECT DVMON\n\t\tTC\tDOWNFLAG\n\t\tADRES\tASTNFLAG\n\t\tTC\tDOWNFLAG\n\t\tADRES\tIDLEFLAG\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t40054\n\n\t\tTC\tFIXDELAY\t# TURN ULLAGE OFF HALF A SECOND AFTER\n\t\tDEC\t50\t\t# LIGHT UP.\n\nULLAGOFF\tTC\tNOULLAGE\n\nWAITABIT\tEXTEND\t\t\t# KILL GROUP 4\n\t\tDCA\tNEG0\n# Page 741\n\t\tDXCH\t-PHASE4\n\n\t\tTCF\tTASKOVER\n\nTIGTASK\t\tTC\tPOSTJUMP\t# (12)\n\t\tCADR\tTIGTASK1\n\n#\t********************************\n\n\t\tBANK\t31\n\t\tSETLOC\tP40S3\n\t\tBANK\n\t\tCOUNT*\t$$/P40\n\nTIGTASK1\tCAF\tPRIO16\n\t\tTC\tNOVAC\n\t\tEBANK=\tTRKMKCNT\n\t\t2CADR\tTIGNOW\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t6\t\t# KILL GROUP 6\n\n\t\tTCF\tTASKOVER\n\n#\t********************************\n\nP63ZOOM\t\tEXTEND\n\t\tDCA\tLUNLANAD\n\t\tDXCH\tAVEGEXIT\n\n\t\tTC\tIBNKCALL\n\t\tCADR\tFLATOUT\n\t\tTCF\tP40ZOOMA\n\nP40ZOOM\t\tCAF\tBIT13\n\t\tTS\tTHRUST\n\t\tCAF\tBIT4\n\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\nP40ZOOMA\tTC\tPHASCHNG\n\t\tOCT\t3\n\t\tTCF\tTASKOVER\n\n\t\tEBANK=\tDVCNTR\nLUNLANAD\t2CADR\tLUNLAND\n\n# Page 742\nZOOM\t\t=\tP40ZOOMA\n\t\tBANK\t36\n\t\tSETLOC\tP40S\n\t\tBANK\n\t\tCOUNT*\t$$/P40\n\n#\t********************************\n\nCOMFAIL\t\tTC\tUPFLAG\t\t# (15)\n\t\tADRES\tIDLEFLAG\n\t\tTC\tUPFLAG\t\t# SET FLAG TO SUPPRESS CONFLICTING DISPLAY\n\t\tADRES\tFLUNDISP\n\t\tCAF\tFOUR\t\t# RESET DVMON\n\t\tTS\tDVCNTR\n\t\tCCS\tPHASE6\t\t# CLOCKTASK ACTIVE?\n\t\tTCF\t+3\t\t# YES\n\t\tTC\tBANKCALL\t# OTHERWISE, START IT UP\n\t\tCADR\tSTCLOK1\n +3\t\tCS\tVB97DEX\n \t\tTS\tDISPDEX\n\t\tTC\tPHASCHNG\t# TURN OFF GROUP 4.\n\t\tOCT\t00004\n\t\tTCF\tENDOFJOB\n\nCOMFAIL1\tINDEX\tWHICH\n\t\tTCF\t2\n\nCOMFAIL3\tCA\tZ\t\t# (15)\tKILL CLOKTASK USING Z\n\t\tTCF\t+2\n\nCOMFAIL4\tCS\tCNTDNDEX\n\t\tTS\tDISPDEX\n\n\t\tTC\tDOWNFLAG\t# RECONNECT DV MONITOR\n\t\tADRES\tIDLEFLAG\n\t\tTC\tDOWNFLAG\t# PERMIT GUIDANCE LOOP DISPLAYS\n\t\tADRES\tFLUNDISP\n\t\tTCF\tENDOFJOB\n\nCOMFAIL2\tTC\tPHASCHNG\t# KILL ZOOM RESTART PROTECTION\n\t\tOCT\t00003\n\n\t\tINHINT\n\t\tTC\tKILLTASK\t# KILL ZOOM IN CASE IT'S STILL TO COME\n\t\tCADR\tZOOM\n\t\tTC\tIBNKCALL\t# COMMAND ENGINE OFF\n\t\tCADR\tENGINOF4\n\t\tTC\tUPFLAG\t\t# SET THE DRIFT BIT FOR THE DAP.\n\t\tADRES\tDRIFTDFL\n# Page 743\n\t\tTC\tINVFLAG\t\t# USE OTHER RCS SYSTEM\n\t\tADRES\tAORBTFLG\n\t\tTC\tUPFLAG\t\t# TURN ON ULLAGE\n\t\tADRES\tULLAGFLG\n\t\tCAF\tBIT1\n\t\tINHINT\n\t\tTC\tTWIDDLE\n\t\tADRES\tTIG-5\n\t\tTCF\tENDOFJOB\n\n#\t***********************************\n#\tSUBROUTINES OF THE IGNITION ROUTINE\n#\t***********************************\n\nINVFLAG\t\tCA\tQ\n\t\tTC\tDEBIT\n\t\tCOM\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTCF\tCOMFLAG\n\n#\t***********************************\n\nNOULLAGE\tCS\tULLAGER\t\t# MUST BE CALLED IN A TASK OR UNDER INHINT\n\t\tMASK\tDAPBOOLS\n\t\tTS\tDAPBOOLS\n\t\tTC\tQ\n\n#\t***********************************\n\nONULLAGE\tCS\tDAPBOOLS\t# TURN ON ULLAGE.  MUST BE CALLED IN\n\t\tMASK\tULLAGER\t\t# A TASK OR WHILE INHINTED.\n\t\tADS\tDAPBOOLS\n\t\tTC\tQ\n\n# \t***********************************\n\nSTCLOK1\t\tCA\tZERO\t\t# THIS ROUTINE STARTS THE COUNT-DOWN\nSTCLOK2\t\tTS\tDISPDEX\t\t# (CLOKTASK AND CLOKJOB).  SETTING\nSTCLOK3\t\tTC\tMAKECADR\t# SETTING DISPDEX POSITIVE KILLS IT.\n\t\tTS\tTBASE4\t\t# RETURN SAVE (NOT FOR RESTARTS).\n\t\tEXTEND\n\t\tDCA\tTIG\n\t\tDXCH\tMPAC\n\t\tEXTEND\n\t\tDCS\tTIME2\n# Page 744\n\t\tDAS\tMPAC\t\t# HAVE TIG -- TIME2, UNDOUBTEDLY A + NUMBER\n\t\tTC\tTPAGREE\t\t# POSITIVE, SINCE WE PASSED THE\n\t\tCAF\t1SEC\t\t# 45 SECOND CHECK.\n\t\tTS\tQ\n\t\tDXCH\tMPAC\n\t\tMASK\tLOW5\t\t# RESTRICT MAGNITUDE OF NUMBER IN A\n\t\tEXTEND\n\t\tDV\tQ\n\t\tCA\tL\t\t# GET REMAINDER\n\t\tAD\tTWO\n\t\tINHINT\n\t\tTC\tTWIDDLE\n\t\tADRES\tCLOKTASK\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40036\t\t# 6.3SPOT FOR CLOKTASK\n\t\tOCT\t05024\n\t\tOCT\t13000\n\n\t\tCA\tTBASE4\n\t\tTC\tBANKJUMP\n\nCLOKTASK\tCS\tTIME1\t\t# SET TBASE6 FOR GROUP 6 RESTART\n\t\tTS\tTBASE6\n\n\t\tCCS\tDISPDEX\n\t\tTCF\tKILLCLOK\n\t\tNOOP\n\t\tCAF\tPRIO27\n\t\tTC\tNOVAC\n\t\tEBANK=\tTTOGO\n\t\t2CADR\tCLOKJOB\n\n\t\tTC\tFIXDELAY\t# WAIT A SECOND BEFORE STARTING OVER\n\t\tDEC\t100\n\t\tTCF\tCLOKTASK\n\nKILLCLOK\tEXTEND\t\t\t# KILL RESTART\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE6\n\t\tTCF\tTASKOVER\n\nCLOKJOB\t\tEXTEND\n\t\tDCS\tTIG\n\t\tDXCH\tTTOGO\n\t\tEXTEND\n# Page 745\n\t\tDCA\tTIME2\n\t\tDAS\tTTOGO\n\t\tINHINT\n\t\tCCS\tDISPDEX\t\t# IF DISPDEX HAS BEEN SET POSITIVE BY A\n\t\tTCF\tENDOFJOB\t# TASK OR A HIGHER PRIORITY JOB SINCE THE\n\t\tTCF\tENDOFJOB\t# LAST CLOKTASK, AVOID USING IT AS AN\n\t\tCOM\t\t\t# INDEX.\n\t\tRELINT\t\t\t# ***** DISPDEX MUST NEVER B -0 *****\n\t\tINDEX\tA\n\t\tTCF\tDISPNOT -1\t# (-1 DUE TO EFFECT OF CCS)\n\nVB97DEX\t\t=\tOCT35\t\t# NEGATIVE OF THIS IS PROPER FOR DISPDEX\n\n -35\t\tCS\tZERO\t\t# INDICATE VERB 97 PASTE\n \t\tTS\tNVWORD1\n\t\tCA\tNVWORD \t+2\t# NVWORD+2 CONTAINS V06 & APPROPRIATE NOUN\n\t\tTC\tBANKCALL\n\t\tCADR\tCLOCPLAY\n\t\tTCF\tSTOPCLOK\t# TERMINATE CLOKTASK ON THE WAY TO POOH\n\t\tTCF\tCOMFAIL1\n\t\tTCF\tCOMFAIL2\n\n\t\t\t\t\t# THIS DISPLAY IS CALLED VIA ASTNCLOK\n -25\t\tCAF\tV06N61\t\t# IT IS PRIMARILY USED BY THE CREW IN P63\n \t\tTC\tBANKCALL\t# TO RESET HIS EVENT TIMER TO AGREE WITH\n\t\tCADR\tREFLASH\t\t# TIG.\n\t\tTCF\tSTOPCLOK\n\t\tTCF\tASTNRETN\n\t\tTCF\t-6\n\nCNTDNDEX\t=\tLOW4\t\t# OCT17:  NEGATIVE PROPER FOR DISPDEX\n\n -17\t\tINDEX\tWHICH\t\t# THIS DISPLAY COMES UP AT ONE SECOND\n\t\t# Was CAF --- RSB 2009\n \t\tCA\t0\t\t# INTERVALS.  IT IS NORMALLY OPERATED\n\t\tTC\tBANKCALL\t# BETWEEN TIG-30 SECONDS AND TIG-5 SECONDS\n\t\tCADR\tREGODSP\t\t# REGODSP DOES ITS OWN TCF ENDOFJOB\n\nVB99DEX\t\t=\tELEVEN\t\t# OCT13:  NEGATIVE PROPER FOR DISPDEX\n\nV99RECYC\tEQUALS\n\n -13\t\tCS\tBIT9\t\t# INDICATE VERB 99 PASTE\n \t\tTS\tNVWORD1\n\t\tINDEX\tWHICH\t\t# THIS IS THE \"PLEASE ENABLE ENGINE\"\n\t\t# Was CAF --- RSB 2004\n\t\tCA\t0\t\t# DISPLAY; IT IS INITIATED AT TIG-5 SEC.\n\t\tTC\tBANKCALL\t# THE DISPLAY IS A V99NXX, WHERE XX IS\n\t\tCADR\tCLOCPLAY\t# NOUN THAT HAD PREVIOUSLY BEEN DISPLAYED\n\t\tTCF\tSTOPCLOK\t# TERMINATE GOTOPOOH TURNS OFF ULLAGE.\n\t\tTCF\t*PROCEED\n\t\tTCF\t*ENTER\n\n# Page 746\nBLANKDEX\t=\tTWO\t\t# NEGATIVE OF THIS IS PROPER FOR DISPDEX\n\n -2\t\tTC\tBANKCALL\t# BLANK DSKY.  THE DSKY IS BLANKED FOR\n \t\tCADR\tCLEANDSP\t# 5 SECONDS AT TIG-35 TO INDICATE THAT\nDISPNOT\t\tTCF\tENDOFJOB\t# AVERAGE G IS STARTING.\n\nSTOPCLOK\tTC\tNULLCLOK\t# STOP CLOKTASK & TURN OFF ULLAGE ON THE\n\t\tTCF\tGOTOPOOH\t# WAY TO P00 (GOTOPOOH RELINTS)\n\nNULLCLOK\tINHINT\n\t\tEXTEND\n\t\tQXCH\tP40/RET\n\t\tTC\tNOULLAGE\t# TURN OFF ULLAGE ...\n\t\tTC\tKILLTASK\t#\tDON'T LET IT COME ON, EITHER ...\n\t\tCADR\tULLGTASK\n\t\tTC\tPHASCHNG\t#\t\tNOT EVEN IF THERE'S A RESTART.\n\t\tOCT\t1\n\t\tCA\tZ\t\t# KILL CLOKTASK\n\t\tTS\tDISPDEX\n\t\tTC\tP40/RET\n\nASTNRETN\tTC\tPHASCHNG\n\t\tOCT\t04024\n\t\tCAF\tZERO\t\t# STOP DISPLAYING BUT KEEP RUNNING\n\t\tTS\tDISPDEX\n\t\tCAF\tPRIO13\n\t\tTC\tFINDVAC\n\t\tEBANK=\tSTARIND\n\t\t2CADR\tASTNRET\n\n\t\tTCF\tENDOFJOB\n\n*PROCEED\tTC\tUPFLAG\n\t\tADRES\tASTNFLAG\n\n\t\tTCF\tIGNITE\n\n*ENTER\t\tINHINT\n\t\tINDEX\tWHICH\n\t\tTCF\t3\n\nGOPOST\t\tCAF\tPRIO12\t\t# (3) MUST BE LOWER PRIORITY THAN CLOKJOB\n\t\tTC\tFINDVAC\n\t\tEBANK=\tTTOGO\n\t\t2CADR\tPOSTBURN\n\n# Page 747\n\t\tINHINT\t\t\t# SET UP THE DAP FOR COASTING FLIGHT.\n\t\tTC\tIBNKCALL\n\t\tCADR\tALLCOAST\n\t\tTC\tNULLCLOK\n\t\tTC\tPHASCHNG\t# 4.13 RESTART FOR POSTBURN\n\t\tOCT\t00134\n\n\t\tTCF\tENDOFJOB\n\nGOCUTOFF\tCAF\tPRIO17\t\t# (3)\n\t\tTC\tFINDVAC\n\t\tEBANK=\tTGO\n\t\t2CADR\tCUTOFF\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tFLUNDISP\n\n\t\tINHINT\t\t\t# SET UP THE DAP FOR COASTING FLIGHT.\n\t\tTC\tIBNKCALL\n\t\tCADR\tALLCOAST\n\t\tTC\tNULLCLOK\n\t\tTC\tPHASCHNG\n\t\tOCT\t07024\n\t\tOCT\t17000\n\t\tEBANK=\tTGO\n\t\t2CADR\tCUTOFF\n\n\t\tTCF\tENDOFJOB\n\nIGNITE\t\tCS\tFLAGWRD7\t# (2)\n\t\tMASK\tIGNFLBIT\n\t\tCCS\tA\n\t\tTCF\tIGNITE1\n\t\tCAF\tBIT1\n\t\tINHINT\n\t\tTC\tTWIDDLE\n\t\tADRES\tIGNITION\n\n\t\tCAF\tOCT23\t\t# IMMEDIATE RESTART AT IGNITION\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE4\n\nIGNITE1\t\tCS\tCNTDNDEX\t# RESTORE OLD DISPLAY.\n\t\tTS\tDISPDEX\n\n\t\tTCF\tENDOFJOB\n\n# Page 748\n#\t********************************\n\nP40ALM\t\tTC\tALARM\t\t# PROGRAM SELECTION NOT CONSISTENT WITH\n\t\tOCT\t1706\t\t# VEHICLE CONFIGURATION\n\nREP40ALM\tCAF\tV05N09\t\t# (14)\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\n\t\tTCF\tGOTOPOOH\t# V34E \t\tTERMINATE\n\t\tTCF\t+2\t\t# PROCEED \tCHECK FOR P42\n\t\tTCF\tREP40ALM\t# V32E\t\tREDISPLAY ALARM\n\n\t\tINDEX\tWHICH\t\t# FOR P42, ALLOW CREW TO PROCEED EVEN\n\t\tTCF\t14\t\t# THOUGH VEHICLE IS UNSTAGED.\n\n#\t********************************\n\n\t\tBANK\t31\n\t\tSETLOC\tP40S2\n\t\tBANK\n\n\t\tCOUNT*\t$$/P40\n\nP40AUTO\t\tTC\tMAKECADR\t# HELLO THERE.\n\t\tTS\tTEMPR60\t\t# FOR GENERALIZED RETURN TO OTHER BANKS.\nP40A/P\t\tTC\tBANKCALL\t# SUBROUTINE TO CHECK PGNCS CONTROL\n\t\tCADR\tG+N,AUTO\t# AND AUTO STABILIZATION MODES\n\t\tCCS\tA\t\t# +0 INDICATES IN PGNCS, IN AUTO\n\t\tTCF\tTURNITON\t# + INDICATES NOT IN PGNCS AND/OR AUTO\n\t\tCAF\tAPSFLBIT\t# ARE WE ON THE DESCENT STAGE?\n\t\tMASK\tFLGWRD10\n\t\tCCS\tA\n\t\tTCF\tGOBACK\t\t# RETURN\n\t\tCAF\tBIT5\t\t# YES, CHECK FOR AUTO-THROTTLE MODE\n\t\tEXTEND\n\t\tRAND\tCHAN30\n\t\tEXTEND\n\t\tBZF\tGOBACK\t\t# IN AUTO-THROTTLE MODE -- RETURN\nTURNITON\tCAF\tP40A/PMD\t# DISPLAYS V50N25 R1=203 PLEASE PERFORM\n\t\tTC\tBANKCALL\t# CHECKLIST 203 TURN ON PGNCS ETC.\n\t\tCADR\tGOPERF1\n\t\tTCF\tGOTOPOOH\t# V34E TERMINATE\n\t\tTCF\tP40A/P\t\t# RECYCLE\nGOBACK\t\tCA\tTEMPR60\n\t\tTC\tBANKJUMP\t# GOODBYE.  COME AGAIN SOON.\n\nP40A/PMD\tOCT\t00203\n\n# Page 749\n\t\tBANK\t36\n\t\tSETLOC\tP40S\n\t\tBANK\n\n\t\tCOUNT*\t$$/P40\n\n#\t**********************************\n#\tCONSTANTS FOR THE IGNITION ROUTINE\n#\t**********************************\n\nSERVCADR\t=\tP63TABLE +7\n\nP40ADRES\tADRES\tP40TABLE\n\nP41ADRES\tADRES\tP41TABLE -5\n\nP42ADRES\tADRES\tP42TABLE\n\n\t\tEBANK=\tDVCNTR\nDSP2CADR\t2CADR\tP63DISPS -2\n\n\t\tEBANK=\tDVCNTR\nATMAGADR\t2CADR\tATMAG\n\n?\t\t=\tGOTOPOOH\n\nD29.9SEC\t2DEC\t2990\n\nS24.9SEC\tDEC\t2490\n\n4.9SEC\t\tDEC\t490\n\nOCT20\t\t=\tBIT5\n\nV06N61\t\tVN\t0661\n\n# Page 750\n# KILLTASK\n# MOD NO:  NEW PROGRAM\n# MOD BY:  COVELLI\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tKILLTASK IS USED TO REMOVE A TASK FROM THE WAITLIST BY SUBSTITUTING A NULL TASK CALLED `NULLTASK' (OF COURSE),\n#\tWHICH MERELY DOES A TC TASKOVER.  IF THE SAME TASK IS SCHEDULED MORE THAN ONCE, ONLY THE ONE WHICH WILL OCCUR\n#\tFIRST IS REMOVED.  IF THE TASK IS NOT SCHEDULED, KILLTASK TAKES NO ACTION AND RETURNS WITH NO ALARM.  KILLTASK\n#\tLEAVES INTERRUPTS INHIBITED SO CALLER MUST RELINT\n#\n# CALLING SEQUENCE\n#\tL\tTC\tKILLTASK\t# IN FIXED-FIXED\n#\tL+1\tCADR\t????????\t# CADR (NOT 2CADR) OF TASK TO BE REMOVED.\n#\tL+2\t(RELINT)\t\t# RETURN\n#\n# EXIT MODE:  AT L+2 OF CALLING SEQUENCE.\n#\n# ERASABLE INITIALIZATION:  NONE.\n#\n# OUTPUT:  2CADR OF NULLTASK IN LST2\n#\n# DEBRIS:  ITEMP1 - ITEMP4, A, L, Q.\n\n\t\tEBANK=\tLST2\n\t\tBLOCK\t3\t\t# KILLTASK MUST BE IN FIXED-FIXED.\n\t\tSETLOC\tFFTAG6\n\t\tBANK\n\t\tCOUNT*\t$$/KILL\nKILLTASK\tCA\tKILLBB\n\t\tINHINT\n\t\tLXCH\tA\n\t\tINDEX\tQ\n\t\tCA\t0\t\t# GET CADR.\n\t\tLXCH\tBBANK\n\t\tTCF\tKILLTSK2\t# CONTINUE IN SWITCHED FIXED.\n\n\t\tEBANK=\tLST2\nKILLBB\t\tBBCON\tKILLTSK2\n\n\t\tBANK\t27\n\n\t\tSETLOC\tP40S1\n\t\tBANK\n\t\tCOUNT*\t$$/KILL\n\nKILLTSK2\tLXCH\tITEMP2\t\t# SAVE CALLER'S BBANK\n# Page 751\n\t\tINCR\tQ\n\t\tEXTEND\n\t\tQXCH\tITEMP1\t\t# RETURN 2ADR IN ITEMP1,ITEMP2\n\n\t\tTS\tITEMP3\t\t# CADR IS IN A\n\t\tMASK\tLOW10\n\t\tAD\tBIT11\n\t\tTS\tITEMP4\t\t# GENADR OF TASK\n\n\t\tCS\tLOW10\n\t\tMASK\tITEMP3\n\t\tTS\tITEMP3\t\t# FBANK OF TASK\n\n\t\tZL\nADRSCAN\t\tINDEX\tL\n\t\tCS\tLST2\n\t\tAD\tITEMP4\t\t# COMPARE GENADRS\n\t\tEXTEND\n\t\tBZF\tTSTFBANK\t# IF THEY MATCH, COMPARE FBANKS\nLETITLIV\tCS\tLSTLIM\n\t\tAD\tL\n\t\tEXTEND\t\t\t# ARE WE DONE?\n\t\tBZF\tDEAD\t\t# YES -- DONE, SO RETURN\n\t\tINCR\tL\n\t\tINCR\tL\n\t\tTCF\tADRSCAN\t\t# CONTINUE LOOP.\n\nDEAD\t\tDXCH\tITEMP1\n\t\tDTCB\n\nTSTFBANK\tCS\tLOW10\n\t\tINDEX\tL\n\t\tMASK\tLST2 \t+1\t# COMPARE FBANKS ONLY.\n\t\tEXTEND\n\t\tSU\tITEMP3\n\t\tEXTEND\n\t\tBZF\tKILLDEAD\t# MATCH -- KILL IT.\n\t\tTCF\tLETITLIV\t# NO MATCH -- CONTINUE.\n\nKILLDEAD\tCA\tTCTSKOVR\n\t\tINDEX\tL\n\t\tTS\tLST2\t\t# REMOVE TASK BY INSERTING TASKOVER\n\t\tTCF\tDEAD\n\nLSTLIM\t\tEQUALS\tBIT5\t\t# DEC 16\n"
  },
  {
    "path": "Luminary099/CONIC_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tCONIC_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n#\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim DOT lawton AT gmail.com>\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1159-1204\n# Mod history:\t2009-05-28 JL\tStarted updating from page images.\n#\t\t2009-06-02 JL\tFinished updating from page images.\n#\t\t2010-12-31 JL\tFixed page number comments.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#    16:27 JULY 14, 1969\n\n# Page 1159\n# PROGRAM DESCRIPTION -- ENTIRE CONIC SUBROUTINE LOG SECTION\tDATE - 1 SEPTEMBER 1967\n# MOD NO. - 0\t\t\t\t\t\t\tLOG SECTION - CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\t\tASSEMBLY - COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION -\n#\tTHE FOLLOWING SET OF SUBROUTINES SOLVE VARIOUS PROBLEMS INVOLVING THE TRAJECTORY PRODUCED BY A CENTRAL\n# INVERSE-SQUARE FORCE ACTING ON A POINT MASS, AS OUTLINED IN THE CMC AND LGC LUNAR LANDING MISSION GSOP, SECTION\n# 5.5.1.2.  A GENERAL USAGE POINT-OF-VIEW WAS TAKEN IN FORMULATING, MECHANIZING, AND SCALING THE SUBROUTINES,\n# RATHER THAN OPTIMIZING EACH FOR A PARTICULAR USE.  THEREFORE, MULTIPLE USAGE CAN BE MADE OF THE SUBROUTINES\n# INVOLVING ANY REALISTIC SET OF CONSTRAINTS.  IT SHOULD BE NOTED THAT ONLY ONE SET OF CODING IS USED, WHETHER THE\n# EARTH, MOON, OR ANY OTHER CELESTIAL BODY IS SPECIFIED AS THE CENTRAL BODY OF THE PROBLEM, PROVIDED ONE OBSERVES\n# THE INHERENT SCALE CHANGE REQUIRED IN POSITION, VELOCITY, MU, AND TIME, AS OUTLINES IN MISSION PROGRAMMING\n# DEFINITION MEMO NO. 10.  THIS CAN BE ACCOMPLISHED BY SIMPLY ADDING TO THE MUTABLE AND INITIALIZING THE SUBROUTINES\n# APPROPRIATELY.\n#\n#\tDUE TO THE UNIFORMITY OF THE EQUATIONS INVOLVED, CODING WAS MINIMIZED BY TREATING INDIVIDUAL EQUATIONS AND\n# BLOCKS OF EQUATIONS AS SUBROUTINES OF LOWER RANK WHENEVER POSSIBLE.  AS A RESULT, THREE BY-PRODUCTS SUBROUTINES,\n# DIRECTLY USABLE AS INDEPENDENT SUBROUTINES, WERE GENERATED.\n#\n# RESTRICTIONS -\n#\tTHE ONLY LIMITATION IN THE SCOPE OF THE PROBLEM WHICH CAN BE SOLVED BY A PARTICULAR SUBROUTINE IS THE SCALING\n# LIMIT OF EACH PARAMETER AS SPECIFIED IN THE GSOP.  THESE SCALING LIMITS WERE CHOSEN SO THAT ALL FEASIBLE TRAJECTORIES\n# COULD BE HANDLED.\n#\n#\tSINCE THE SUBROUTINES (EXCEPT KEPLER) USE COMMON SUBROUTINES OF LOWER RANK WHICH USE ERASABLE OTHER THAN\n# THE PUSHLIST (DUE TO ITS LIMITED SIZE) AND COMMON INTERPRETIVE SWITCHES, THE CONIC SUBROUTINES CANNOT BE ALLOWED\n# TO INTERRUPT EACH OTHER.  IT IS UP TO THE USER TO GUARANTEE THIS CONDITION.\n\n# Page 1160\n# PROGRAM DESCRIPTION - KEPLER SUBROUTINE\t\t\tDATE - 11 OCTOBER 1967\n# MOD NO. -1\t\t\t\t\t\t\tLOG SECTION - CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\t\tASSEMBLY - COLOSSUS 103 AND SUNDANCE 222\n# MOD NO. - 2 (AUGUST 1968) BY ROBERTSON: TO PERMIT BACKDATING BY MORE THAN ONE ORBITAL PERIOD.\n# MOD NO. - 3 (DEC 1968) BY ROBERTSON:  SUPPRESSION OF X-MODULO-ING\n# MOD NO. - 4 (JAN 1969) BY ROBERTSON:  CLEAR OVFIND AT KEPLER ENTRY\n#\n# FUNCTIONAL DESCRIPTION -\n#\tTHIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR AND THE DESIRED TRANSFER TIME THROUGH WHICH THE STATE IS TO\n# BE UPDATED ALONG A CONIC TRAJECTORY, COMPUTES THE NEW, UPDATED STATE VECTOR.  THE TRAJECTORY MAY BE ANY CONIC\n# SECTION - CIRCULAR, ELLIPTIC, PARABOLIC, HYPERPOLIC, OR RECTILINEAR WITH RESPECT TO THE EARTH OR THE MOON.  THE\n# USE OF THE SUBROUTINE CAN BE EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT\n# INTRODUCING ANY CODING CHANGES, ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.  AN ITERATION\n# TECHNIQUE IS UTILIZED IN THE COMPUTATION.\n#\n#\tIF A NEGATIVE TIME-OF-FLIGHT IS INPUT, THE PROGRAM WILL SOLVE FOR THE STATE WHICH WOULD BE PRODUCED BY\n# EXTRAPOLATING THE POSITION BACKWARD IN TIME.\n#\n#\tIF THE ABSOLUTE VALUE OF THE DESIRED TRANSFER TIME EXCEEDS THE ORBITAL PERIOD, THE SUBROUTINE, THROUGH A\n#  MODULAR TECHNIQUE, WILL COMPUTE THE STATE CORRESPONDING TO THE DESIRED TIME (WHETHER POSITIVE OR NEGATIVE).\n#\n# THE RESTRICTIONS ARE -\n#\t1. (PREVIOUS RESTRICTION ON THE NEGATIVE DESIRED TRANSFER TIME IS NOW DELETED.)\n#\t2. THE PARAMETERS IN THE PROBLEM CANNOT EXCEED THEIR SCALING LIMITS AS SPECIFIED IN THE GSOP.  IF\n#\t   ANY OF THESE LIMITS ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.\n#\n# \tTHE NUMBER OF ITERATIONS AND, THEREFORE, THE COMPUTATION SPEED IS DEPENDENT ON THE ACCURACY OF THE\n# GUESS, XKFPNEW.  THE AGC COMPUTATION TIME IS APPROXIMATELY .061 SECONDS FOR INITIALIZATION, .065 SECONDS FOR THE\n# FINAL COMPUTATIONS, PLUS .083 SECONDS FOR EACH ITERATION.\n#\n# REFERENCES -\n#\tR-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP, SECTION 5.5, SGA\n#\tMEMO 67-4.\n#\n# INPUT - ERASABLE INITIALIZATION REQUIRED\n#\t\t\t* SCALE FACTOR \t*\n#\tVARIABLE\t*IN POWERS OF 2\t* \t\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t\t-----------------------\n#\tRRECT\t\t* +29 FOR EARTH\t*\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t* +27 FOR MOON\t*\n# Page 1161\n#\tVRECT\t\t* +7 FOR EARTH\t*\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\t* +5 FOR MOON\t*\n#\tX1 (38D)\t* NONE\t\t*\tINDEX REGISTER SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t*\t\t*\t\tRESPECTIVELY, IS THE CENTRAL BODY\n#\tTAU\t\t* +28\t\t*\tDESIRED TRANSFER TIME IN CENTISECONDS (DP)\n#\t\t\t*\t\t*\t\tMAY BE POS OR NEG AND ABSOLUTE VALUE MAY BE GREATER OR LESS THAN ONE ORBITAL PERIOD.\n#\tXKEPNEW\t\t* +17 FOR EARTH\t*\tDP GUESS OF ROOT X OF KEPLERS EQN IN SQRT(METERS). SIGN SHOULD AGREE WITH THAT OF TAU.\n#\t\t\t* +16 FOR MOON\t*\t\tAND ABS VALUE SHOULD BE LESS THAN THAT CORRESPONDING TO A PERIOD, VIZ, 2PI SQRT(SEMI-\n#\t\t\t*\t\t*\t\tMAJOR AXIS), FOR SPEED OF CONVERGENCE, BUT IF EITHER CONDITION FAILS, XKEPNEW IS RESET\n#\t\t\t*\t\t*\t\tBY KEPLER TO A POOR BUT VALID GUESS.\n#\tTC\t\t* +28\t\t*\tDP PREV. VALUE OF TIME IN CENTISECS.  MUST BE LESS THAN ONE ORBITAL PERIOD.\n#\tXPREV\t\t* +17 FOR EARTH\t*\tDP PREV. VALUE OF X IN SQRT(METERS).  MUST BE LESS THAN AN X CORRESPONDING TO ONE\n#\t\t\t* +16 FOR MOON\t*\t\tORBITAL PERIOD, VIZ, 2PI SQRT(SEMI-MAJOR AXIS)\n#\n# SUBROUTINES CALLED -\n#\tDELTIME\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES -\n#\tKEPRTN-2\tGOTO\t\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tKEPRTN-1\t\tKEPLER\t\t# RETURNS WITH XPREV IN MPAC. PL IS AT 0.\n#\tKEPRTN\t\t...\t\t\t# CONTINUE\n#\n# KEPLER MUST NOT BE CALLED DIRECTLY SINCE AN INTERRUPTION OF IT WOULD DESTROY THE ERASABLES IT NEEDS TO COMPLETE\n# THE INTERRUPTED JOB.  THEREFORE THE USER MUST CALL CSMCONIC OR LEMCONIC WHICH GUARANTEES NO INTERRUPTS AND WHICH\n# ALSO CALLS KEPPREP TO COMPUTE A GUESS OF XKEPNEW.\n#\n# ABORT EXIT MODES -\n#\tNONE\n#\n# OUTPUT -\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tRCV\t\t* +29 FOR EARTH\t*\tDP TERMINAL POSITION VECTOR IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tVCV\t\t* +7 FOR EARTH\t*\tDP TERMINAL VELOCITY VECTOR IN METERS/CENTISEC\n#\t\t\t* +5 FOR MOON\t*\n#\tTC\t\t* +28\t\t*\tDP TRANSFER TIME IN CENTISECS TO WHICH KEPLER CONVERGED. ALWAYS LESS THAN ONE PERIOD.\n#\tXPREV\t\t* +17 FOR EARTH\t*\tDP VALUE OF X IN SQRT(METERS) TO WHICH KEPLER CONVERGED. ALWAYS LESS THAN THE X\n#\t\t\t* +16 FOR MOON\t*\t\tCORRESPONDING TO ONE PERIOD.\n# Page 1162\n# FOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n#\n# DEBRIS -\n#\tPARAMETERS WHICH MAY BE OF USE -\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tURRECT\t\t* +1\t\t*\tDP UNIT VECTOR OF INITIAL POSITION\n#\tR1\t\t* +29 FOR EARTH\t*\tDP MAGNITUDE OF INITIAL POSITION IN METERS\n#\t\t\t* +27 FOR MOON\t*\n# \tALPHA\t\t* -22 FOR EARTH\t*\tDP INVERSE OF SEMI-MAJOR AXIS IN 1/METERS\n#\t\t\t* -20 FOR MOON\t*\n#\tTMODULO\t\t* +28\t\t*\tDP INTEGRAL NUMBER OF PERIODS IN CENTISECS, WHICH WAS SUBTRACTED FROM TAU, TO PRODUCE A\n#\t\t\t*\t\t*\tTAU. OF LESS THAN ONE PERIOD.\n#\n# PARAMETERS OF NO USE -\n#\tDP PARAMETERS - EPSILONT, DELX, DELT, RCNORM, XMODULO, PLUS PUSHLIST REGISTERS 0 THROUGH 39D.\n\n# Page 1163\n\n# PROGRAM DESCRIPTION - LAMBERT SUBROUTINE\t\t\tDATE - 1 SEPTEMBER 1967\n# MOD NO. - 0\t\t\t\t\t\t\tLOG SECTION - CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\t\tASSEMBLY - COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION -\n#\tTHIS SUBROUTINE CALCULATES THE INITIAL VELOCITY REQUIRED TO TRANSFER A POINT-MASS ALONG A CONIC TRAJECTORY\n# FROM AN INITIAL POSITION TO A TERMINAL POSITION IN A PRESCRIBED TIME INTERVAL.  THE RESULTING TRAJECTORY MAY BE\n# A SECTION OF A CIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO TEH EARTH OR THE MOON.  THE USE OF THE\n# SUBROUTINE CAN BE EXTEDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY\n# CODING CHANGES, ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.  AN ITERATION TECHNIQUE IS\n# UTILIZED IN THE COMPUTATION.\n#\n# THE RESTRICTIONS ARE: -\n#\t1. RECTILINEAR TRAJECTORIES CANNOT BE COMPUTED.\n#\t2. AN ACCURACY DEGRADATION OCCURS AS THE COSINE OF THE TRUE ANOMALY DIFFERENCE APPROACHES +1.0.\n#\t3. THE ANGLE BETWEEN ANY POSITION VECTOR AND ITS VELOCITY VECTOR MUST BE GREATER THAN 1 DEGREE 47.5 MINUTES\n#\t   AND LESS THAN 178 DEGREES 12.5 MINUTES.\n#\t4. NEGATIVE TRANSFER TIME IS AMBIGUOUS AND WILL RESULT IN NO SOLUTION.\n#\t5. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE\n#\t   LIMITS ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.\n#\n#\tTHE NUMBER OF ITERATIONS AND, THEREFORE, THE COMPUTATIONS SPEED IS DEPENDENT ON THE ACCURACY OF THE FIRST\n# GUESS OF THE INDEPENDENT VARIABLE, COGA.  THE AGC COMPUTATION TIME IS APPROXIMATELY\n# .105 SECONDS FOR INITIALIZATION, .069 SECONDS FOR FINAL COMPUTATIONS, PLUS .205 SECONDS FOR EACH ITERATION.\n#\n# REFERENCES -\n#\tR-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP - SECTION 5.5, SGA MEMO 67-8,\n#\tSGA MEMO 67-4.\n#\n# INPUT - ERASABLE INITIALIZATION REQUIRED\n#\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tR1VEC\t\t* +29 FOR EARTH\t*\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tR2VEC\t\t* +29 FOR EARTH\t*\tDP TARGET OR TERMINAL POSITION VECTOR IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tTDESIRED\t* +28\t\t*\tDP DESIRED TRANSFER TIME IN CENTISECONDS\n#\tX1 (38D)\t* NONE\t\t*\tINDEX REGISTER SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t*\t\t*\t\tRESPECTIVELY, IS THE CENTRAL BODY\n#\tGEOMSGN\t\t* NONE\t\t*\tSP +.5 IF DESIRED TRANSFER ANGLE IS LESS THAN 180 DEGREES, -.5 IF GREATER THAN 180 DEG.\n#\tGUESSW\t\t* NONE\t\t*\tAN INTERPRETER SWITCH TO BE SET IF NO GUESS OF COGA IS AVAILABLE, CLEAR IF A GUESS OF\n# Page 1164\n#\t\t\t*\t\t*\t\tCOGA IS TO BE USED BY LAMBERT\n#\tCOGA\t\t* +5\t\t*\tDP GUESS OF COTANGENT OF FLIGHT PATH ANGLE (MEASURED FROM VERTICAL).  THIS WILL BE\n#\t\t\t*\t\t*\tIGNORED IF GUESSW IS SET.\n#\tNORMSW\t\t* NONE\t\t*\tAN INTERPRETER SWITCH TO BE SET IF UN IS TO BE AN INPUT TO THE SUBROUTINE, CLEAR IF\n#\t\t\t*\t\t*\t\tLAMBERT IS TO COMPUTE ITS OWN NORMAL (UN).\n#\tUN\t\t* +1\t\t*\tDP UNIT NORMAL TO THE DESIRED ORBIT PLANE IN THE DIRECTION OF THE RESULTING ANGULAR\n#\t\t\t*\t\t*\t\tMOMENTUM VECTOR.  THIS WILL BE IGNORED IF NORMSW IS CLEAR.\n#\tVTARGTAG\t* NONE\t\t*\tA S.P. TAG TO BE SET TO ZERO IF LAMBERT IS TO COMPUTE THE VELOCITY AT R2VEC AS WELL AS\n#\t\t\t*\t\t*\t\tAT R1VEC.\n#\tITERCTR\t\t* NONE\t\t*\tA S.P. COUNTER WHICH SPECIFIES THE MAXIMUM NUMBER OF ITERATIONS ALLOWABLE.\n#\t\t\t*\t\t*\t\t(AN ITERATION MEANS A PASS THRU KEPLER EQN (DELTIME). AT LEAST ONE OF THESE MUST\n#\t\t\t*\t\t*\t\tALWAYS OCCUR, EVEN IF COGA CORRESPONDING TO SOLUTION WERE INPUT AS A GUESS.)\n#\t\t\t*\t\t*\t\tTWENTY ITERATIONS ARE SUFFICIENT TO SOLVE ALL PROBLEMS INCLUDING THOSE WITHOUT GUESS.\n#\n# SUBROUTINES CALLED -\n#\tGEOM, GETX, DELTIME, ITERATOR, LAMENTER (PART OF NEWSTATE)\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES -\n#\tL \tCALL\t\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tLAMBERT\t\t# RETURNS WITH PL AT 0 AND WITH VVEC IN MPAC IF VTARGTAG WAS WAS NON-ZERO OR VTARGET\n#\t\t\t\t\t# IN MPAC IF VTARGTAG WAS ZERO\n#\tL+2\tBON\t\t\t# CONTINUE IF SOLNSW CLEAR SINCE SOLUTION IS ACCEPTABLE\n#\tL+3\t\tSOLNSW\n#\tL+4\t\tLAMABORT\n#\n#\tIF A LAMBERT RESULT IS TO BE A FIRST GUESS FOR THE NEXT LAMBERT CALCULATION, COGA MUST BE PRESERVED AND\n# GUESSW MUST BE CLEAR FOR EACH SUCCEEDING LAMBERT CALL.\n#\n# ABORT EXIT MODES -\n#\tIF SOLNSW WAS SET UPON EXITING, EITHER LAMBERT WAS ASKED TO COMPUTE A TRANSFER TOO NEAR 0 OR 360 DEG, OR T\n# WAS TOO SMALL TO PRODUCE A REALISTIC TRANSFER BETWEEN R1VEC AND R2VEC.  IN EITHER CASE THE FIX MUST BE MADE\n# ACCORDING TO THE NEEDS OF THE PARTICULAR USER.  THE ABORT EXIT MODE MAY BE CODED AS ...\n# LAMBABORT\tDLOAD\tABS\t\t# A MEASURE OF THE PROXIMITY TO 0 OR\n#\t\t\t1-CSTH\t\t# 360 DEGREES.\n#\t\tDSU\tBMN\n#\t\t\tONEBIT\n#\t\t\tCHANGER2\t# CHANGE R2VEC DIRECTION SLIGHTLY.\n#\t\tDLOAD\tDAD\n#\t\t\tTDESIRED\n#\t\t\tSOMETIME\n#\t\tSTCALL\tTDESIRED\t# INCRESE TDESIRED\n#\t\t\tLAMBERT\n#\n# Page 1165\n# OUTPUT -\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tVVEC\t\t* +7 FOR EARTH\t*\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND REQUIRED TO SATISFY THE BOUNDARY VALUE\n#\t\t\t* +5 FOR MOON\t*\t\tPROBLEM.\n#\tVTARGET\t\t* +7 FOR EARTH\t*\tDP RESULTANT VELOCITY VECTOR AT R2VEC IN METERS/CENTISECOND.\n#\t\t\t* +5 FOR MOON\t*\n#\tSOLNSW\t\t* NONE\t\t*\tINTERPRETER SWITCH WHICH IS SET IF THE SUBROUTINE CANNOT SOLVE THE PROBLEM, CLEAR IF THE\n#\t\t\t* \t\t*\t\tSOLUTION EXISTS.\n#\n#\tFOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n#\n# DEBRIS -\n#\tPARAMETERS WHICH MAY BE OF USE -\n#\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tSNTH\t\t* +1\t\t*\tDP SIN OF ANGLE BETWEEN R1VEC AND R2VEC\n#\tCSTH\t\t* +1\t\t*\tDP COSINE OF ANGLE\n#\t1-CSTH\t\t* +2\t\t*\tDP 1-CSTH\n#\tCOGA\t\t* +5\t\t*\tDP COTAN OF INITIAL REQUIRED FLIGHT PATH ANGLE MEASURED FROM VERTICAL\n#\tP\t\t* +4\t\t*\tDP RATIO OF SEMILATUS RECTUM TO INITIAL RADIUS\n#\tR1A\t\t* +6\t\t*\tDP RATIO OF INITIAL RADIUS TO SEMI-MAJOR AXIS\n#\tR1 (32D)\t* +29 FOR EARTH\t*\tDP INITIAL RADIUS IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tUR1\t\t* +1\t\t*\tDP UNIT VECTOR OF R1VEC\n#\tU2\t\t* +1\t\t*\tDP UNIT VECTOR OF R2VEC\n#\n#\tPARAMETERS OF NO USE -\n#\t\tDP PARAMETERS - EPSILONL, CSTH-RHO, TPREV, TERRLAMB, R2, RTNLAMB (SP), PLUS PUSHLIST REGISTER 0 THROUGH 41D\n#\t\tADDITIONAL INTERPRETIVE SWITCHES USED - INFINFLG, 360SW, SLOPESW, ORDERSW\n\n# Page 1166\n# PROGRAM DESCRIPTION - TIME-THETA SUBROUTINE\t\t\tDATE - 1 SEPTEMBER 1967\n# MOD NO. - 0\t\t\t\t\t\t\tLOG SECTION - CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\t\tASSEMBLY - COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION -\n#\tTHIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR AND A DESIRED TRUE-ANOMALY-DIFFERENCE THROUGH WHICH THE\n# STATE IS TO BE UPDATED ALONG A CONIC TRAJECTORY, CALCULATES THE CORRESPONDING TIME-OF-FLIGHT AND, IN ADDITION,\n# PROVIDES THE OPTION OF COMPUTING THE NEW UPDATED STATE VECTOR.  THE RESULTING TRAJECTORY MAY BE A SECTION OF A\n# CIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF TEH SUBROUTINE CAN BE\n# EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WTIHOUT INTRODUCING ANY CODING CHANGES,\n# ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.\n#\n# THE RESTRICTIONS ARE -\n#\t1. THE ANGLE BETWEEN ANY POSITION VECTOR AND ITS VELOCITY VECTOR MUST BE GREATER THAN 1 DEGREE 47.5 MINUTES\n#\t   AND LESS THAN 178 DEGREES 12.5 MINUTES.\n#\t2. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE LIMITS\n#\t   ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLY.\n#\n#\tTHE AGC COMPUTATION TIME IS APPROXIMATELY .292 SECONDS.\n#\n# REFERENCES -\n#\tR-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP-SECTION 5.5, SGA MEMO 67-8.\n#\n# INPUT - ERASABLE INITIALIZATION REQUIRED\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tRVEC\t\t* +29 FOR EARTH\t*\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tVVEC\t\t* +7 FOR EARTH\t*\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\t* +5 FOR MOON\t*\n#\tSNTH\t\t* +1\t\t*\tDP SINE OF TRUE-ANOMALY-DIFFERENCE THROUGH WHICH THE STATE IS TO BE UPDATED\n#\tCSTH\t\t* +1\t\t*\tDP COSINE OF THE ANGLE\n#\tRVSW\t\t* NONE\t\t*\tAN INTERPRETIVE SWITCH TO BE SET IF ONLY TIME IS TO BE AN OUTPUT, CLEAR IF THE NEW STATE\n#\t\t\t*\t\t*\t\tIS TO BE COMPUTED ALSO.\n#\tX1 (38D)\t* NONE\t\t*\tINDEX REGISTER TO BE SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t*\t\t*\t\tRESPECTIVELY, IS THE CENTRAL BODY.\n#\n# SUBROUTINES CALLED -\n# Page 1167\n#\tPARAM, GEOM, GETX, DELTIME, NEWSTATE\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES -\n#\tIF ONLY TIME IS DESIRED AS OUTPUT -\n#\tL\tSET\tCALL\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tRVSW\n#\tL+2\t\tTIMETHET\t# RETURN WITH PL AT 0 AND T IN MPAC\n#\tL+3\t...\t\t\t# CONTINUE\n#\n#\tIF THE UPDATE STATE VECTOR IS DESIRED AS WELL -\n#\tL\tCLEAR\tCALL\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tRVSW\n#\tL+2\t\tTIMETHET\t# RETURNS WITH PL AT 6.  THE INITIAL POSITION VECTOR IS IN 0D OF THE PUSHLIST AND\n#\t\t\t\t\t# THE INITIAL VELOCITY VECTOR IN MPAC.\n#\tL+3\tSTOVL\tNEWVVEC\n#\tL+4\tSTADR\n#\tL+5\tSTORE\tNEWRVEC\t\t# NEWVVEC AND NEWRVEC ARE SYMBOLIC REPRESENTATIONS OF THE USERS LOCATIONS.\n#\tL+6\t...\t\t\t# CONTINUE.\n#\n# ABORT EXIT MODES -\n#\tIF COGAFLAG AND/OR INFINFLG IS SET AT THE EXIT TO TIME-THETA, TIME-THETA WILL TRANSFER TO POODOO WITH\n#\tAN ALARM CODE (ORIGINALLY 00607), AND NOT RETURN TO THE CALLING PROGRAM.  (PCR 692 AND 721).\n#\n# OUTPUT -\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tT (30D)\t\t* +28\t\t*\tDP TRANSFER TIME IN CENTISECONDS\n#\tINFINFLG\t* NONE\t\t*\tAN INTERPRETIVE SWITCH WHICH IS SET IF THE TRANSFER ANGLE REQUIRES CLOSURE THROUGH\n#\t\t\t*\t\t*\t\tINFINITY (NO SOLUTION), CLEAR IF A PHYSICAL SOLUTION IS POSSIBLE.\n#\tCOGAFLAG\t* NONE\t\t*\tAN INTERPRETIVE SWITCH WHICH IS SET IF RESTRICTION 1 HAS BEEN VIOLATED (NO SOLUTION),\n#\t\t\t* \t\t*\t\tCLEAR IF NOT.\n#\n#\tIN ADDITION, IF RVSW IS CLEAR, THE FOLLOWING ARE OUTPUT -\n#\tMPAC - \t\t* +7 FOR EARTH\t*\tDP TERMINAL VELOCITY VECTOR IN METERS/CENTISEC.\n#\t MPAC +5\t* +5 FOR MOON\t*\n#\t0D - 5D\t\t* +29 FOR EARTH\t*\tDP TERMINAL POSITION VECTOR IN METERS (PL AT 6D)\n#\t\t\t* +27 FOR MOON\t*\n#\n#\tFOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n#\n# Page 1168\n# DEBRIS -\n#\tPARAMETERS WHICH MAY BE OF USE -\n#\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tR1 (32D)\t* +29 FOR EARTH\t*\tDP MAGNITUDE OF INITIAL POSITION VECTOR, RVEC, IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tR1A\t\t* +6\t\t*\tDP RATIO OF R1 TO SEMIMAJOR AXIS (NEG. FOR HYPERBOLIC TRAJECTORIES)\n#\tP\t\t* +4\t\t*\tDP RATIO OF SEMILATUS RECTUM TO R1\n#\tCOGA\t\t* +5\t\t*\tDP COTAN OF ANGLE BETWEEN RVEC AND VVEC\n#\tUR1\t\t* +1\t\t*\tDP UNIT VECTOR OF RVEC\n#\tU2\t\t* +1\t\t*\tDP UNIT VECTOR OF VVEC\n#\tUN\t\t* +1\t\t*\tDP UNIT VECTOR OF UR1*U2\n#\n#\tPARAMETERS OF NO USE -\n#\tSP PARAMETERS -- RTNTT, GEOMSGN, RTNPRM, MAGVEC2=R2 (DP), PLUS PUSHLIST LOCATIONS 0-11D, 14D-21D, 24D-39D, 41D\n#\tADDITIONAL INTERPRETIVE SWITCHES USED -- NORMSW, 360SW\n\n# Page 1169\n# PROGRAM DESCRIPTION - TIME-RADIUS SUBROUTINE\t\tDATE - 11 OCTOBER 1967\n# MOD NO. -1\t\t\t\t\t\tLOG SECTION - CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\tASSEMBLY - COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION -\n#\n#\tTHIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR AND A DESIRED RADIUS TO WHICH THE\n#\tSTATE IS TO BE UPDATED ALONG A CONIC TRAJECTORY, CALCULATES THE CORRESPONDING TIME-OF-FLIGHT AND, IN ADDITION,\n#\tPROVIDES THE OPTION OF COMPUTING THE NEW UPDATED STATE VECTOR.  THE RESULTING TRAJECTORY MAY BE A SECTION OF A\n#\tCIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE SUBROUTINE CAN BE\n#\tEXTENDED USING OTHER PRIMARY BODIES BY SIMMPE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY CODING CHANGES,\n#\tACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.\n#\n#\tIF THE DESIRED RADIUS IS BEYOND THE RADIUS OF APOCENTER OF THE CONIC OR BELOW THE RADIUS OF PERICENTER,\n#\tAPSESW WILL BE SET AND THE SUBROUTINE WILL RETURN THE APOCENTER OR PERICENTER SOLUTION, RESPECTIVELY.\n#\n# THE RESTRICTIONS ARE -\n#\t1. THE ANGLE BETWEEN ANY POSITION VECTOR AND ITS VELOCITY VECTOR MUST BE GREATER THAN 1 DEGREE 47.5 MINUTES\n#\t   AND LESS THAN 178 DEGREES 12.5 MINUTES.\n#\t2. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE LIMITS\n#\t   ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.\n#\t3. AN ACCURACY DEGRADATION OCCURS AS THE SENSITIVITIES OF TIME AND UPDATED STATE VECTOR TO CHANGES IN\n#\t   RDESIRED INCREASE.  THIS WILL OCCUR NEAR EITHER APSIS OF THE CONIC AND WHEN THE CONIC IS NEARLY CIRCULAR.  IN\n#\t   PARTICULAR, IF THE CONIC IS AN EXACT CIRCLE, THE PROBLEM IS UNDEFINED AND THE SUBROUTINE WILL ABORT.\n#\n#\tTHE AGC COMPUTATION TIME IS APPROXIMATELY .363 SECONDS.\n#\n# REFERENCES -\n#\tR-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP-SECTION 5.5, SGA MEMO 67-8.\n#\n# INPUT - ERASABLE INITIALIZATION REQUIRED.\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tRVEC\t\t* +29 FOR EARTH\t*\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tVVEC\t\t* +7 FOR EARTH\t*\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\t* +5 FOR MOON\t*\n#\tRDESIRED\t* +29 FOR EARTH\t*\tDP TERMINAL RADIAL DISTANCE ON CONIC TRAJECTORY FOR WHICH TRANSFER TIME IS TO BE\n#\t\t\t* +27 FOR MOON\t*\t\tCOMPUTED\n#\tSGNRDOT\t\t* NONE\t\t*\tSP TAG SET TO +.5 OR -.5 ACCORDING TO WHETHER THE RADIAL VELOCITY AT RDESIRED IS TO BE\n#\t\t\t*\t\t*\t\tPOSITIVE OR NEGATIVE, RESPECTIVELY.   THIS TAG REDUCES THE DOUBLE-VALUED PROBLEM TO A\n# Page 1170\n#\t\t\t*\t\t*\t\tSINGLE-VALUED PROBLEM.\n#\tX1 (38D)\t* NONE\t\t*\tINDEX REGISTER TO BE SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t* \t\t*\t\tRESPECTIVELY, IS THE CENTRAL BODY.\n#\tRVSW\t\t* NONE\t\t*\tAN INTERPRETIVE SWITCH TO BE SET IF ONLY TIME IS TO BE AN OUTPUT, CLEAR IF THE NEW STATE\n#\t\t\t*\t\t*\t\tIS TO BE COMPUTED ALSO.\n#\n# SUBROUTINES CALLED -\n#\tPARAM, GEOM, GETX, DELTIME, NEWSTATE\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES -\n#\n#\tIF ONLY TIME IS DESIRED AS OUTPUT -\n#\tL\tSET\tCALL\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tRVSW\n#\tL+2\t\tTIMERAD\t\t# RETURN WITH PL AT 0 AND T IN MPAC\n#\tL+3\t...\t\t\t# CONTINUE\n#\n#\tIF THE UPDATE STATE VECTOR IS DESIRED AS WELL -\n#\tL\tCLEAR\tCALL\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tRVSW\n#\tL+2\t\tTIMERAD\t\t# RETURNS WITH PL AT 6.  THE INITIAL POSITION VECTOR IS IN 0D OF THE PUSHLIST AND\n#\t\t\t\t\t# THE INITIAL VELOCITY VECTOR IN MPAC.\n#\tL+3\tSTOVL\tNEWVVEC\n#\tL+4\tSTADR\n#\tL+5\tSTORE\tNEWRVEC\t\t# NEWVVEC AND NEWRVEC ARE SYMBOLIC REPRESENTATIONS OF THE USERS LOCATIONS.\n#\t...\t\t\t\t# CONTINUE\n#\n# ABORT EXIT MODES -\n#\tIF SOLNSW AND/OR COGAFLAG AND/OR INFINFLG IS SET AT THE EXIT TO TIME-RADIUS, TIME-RADIUS WILL TRANSFER\n#\tTO POODOO WITH AN ALARM CODE (ORIGINALLY 00607), AND NOT RETURN TO THE CALLING PROGRAM. (PCR 692 & 721)\n#\n# OUTPUT -\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tT (30D)\t\t* +28\t\t*\tDP TRANSFER TIME IN CENTISECONDS.\n#\tINFINFLG\t* NONE\t\t*\tAN INTERPRETIVE SWITCH WHICH IS SET IF RDESIRED AND SGNRDOT REQUIRE CLOSURE THROUGH\n#\t\t\t*\t\t*\t\tINFINITY (NO SOLUTION), CLEAR IF A PHYSICAL SOLUTION IS POSSIBLE.\n#\tCOGAFLAG\t* NONE\t\t*\tAN INTERPRETIVE SWITCH WHICH IS SET IF RESTRICTION 1 HAS BEEN VIOLATED (NO SOLUTION),\n#\t\t\t*\t\t*\t\tCLEAR IF NOT.\n#\tAPSESW\t\t* NONE\t\t*\tAN INTERPRETIVE SWITCH WHICH IS SET IF RDESIRED WAS GREATER THAN RADIUS OF APOCENTER OR\n# Page 1171\n#\t\t\t*\t\t*\t\tLESS THAN RADIUS OF PERICENTER.  THE APOCENTER OR PERICENTER SOLUTION, RESPECTIVELY,\n#\t\t\t*\t\t*\t\tWILL THEN BE RETURNED.  THE SWITCH IS CLEAR IF RDESIRED WAS BETWEEN PERICENTER AND\n#\t\t\t*\t\t*\t\tAPOCENTER.\n#\tSOLNSW\t\t* NONE\t\t*\tAN INTERPRETIVE SWITCH WHICH IS SET IF THE CONIC IS SO CLOSE TO A CIRCLE THAT THE TERMIN\n#\t\t\t*\t\t*\t\tPOINT IS AMBIGUOUS, VIOLATING RESTRICTION 3.  IF ECCENTRICITY IS GREATER THAN 2-TO-THE-\n#\t\t\t*\t\t*\t\tMINUS-18, THE SWITCH IS CLEAR.\n#\n#\tIN ADDITION, IF RVSW IS CLEAR, THE FOLLOWING ARE OUTPUT -\n#\n#\tMPAC - \t\t* +7 FOR EARTH\t*\tDP TERMINAL VELOCITY VECTOR IN METERS/CENTISEC.\n#\t MPAC +5\t* +5 FOR MOON\t*\n#\t0D - 5D\t\t* +29 FOR EARTH\t*\tDP TERMINAL POSITION VECTOR IN METERS (PL AT 6D)\n#\t\t\t* +27 FOR MOON\t*\n#\n#\tFOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n#\n# DEBRIS -\n#\tPARAMETERS WHICH MAY BE OF USE -\n#\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tR1 (32D)\t* +29 FOR EARTH\t*\tDP MAGNITUDE OF INITIAL POSITION VECTOR, RVEC, IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tR1A\t\t* +6\t\t*\tDP RATIO OF R1 TO SEMIMAJOR AXIS (NEG. FOR HYPERBOLIC TRAJECTORIES)\n#\tP\t\t* +4\t\t*\tDP RATIO OF SEMILATUS RECTUM TO R1\n#\tCOGA\t\t* +5\t\t*\tDP COTAN OF ANGLE BETWEEN RVEC AND VVEC\n#\tUR1\t\t* +1\t\t*\tDP UNIT VECTOR OF RVEC\n#\tU2\t\t* +1\t\t*\tDP UNIT VECTOR OF VVEC\n#\tUN\t\t* +1\t\t*\tDP UNIT VECTOR OF UR1*U2\n#\tCSTH\t\t* +1\t\t*\tDP COSINE OF TRUE ANOMALY DIFFERENCE BETWEEN RVEC AND RDESIRED.\n#\tSNTH\t\t* +1\t\t*\tDP SINE OF TRUE ANOMALY DIFFERENCE.\n#\n# \tPARAMETERS OF NO USE -\n#\t\tSP PARAMETERS -- RTNTT, GEOMSGN, RTNPRM, MAGVEC2=R2 (DP), PLUS PUSHLIST LOCATIONS 0-11D, 14D-21D, 24D-39D, 41D\n#\t\tADDITIONAL INTERPRETIVE SWITCHES USED -- NORMSW, 360SW\n#\n\n# Page 1172\n# PROGRAM DESCRIPTION - APSIDES SUBROUTINE\t\tDATE - 1 SEPTEMBER 1967\n# MOD NO. - 0\t\t\t\t\t\tLOG SECTION - CONIC SUBROUTINES\n# MOD BY KRAUSE\t\t\t\t\t\tASSEMBLY - COLOSSUS REVISION 88\n#\n# FUNCTIONAL DESCRIPTION -\n#\n#\tTHIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR CALCULATES THE RADIUS OF PERICENTER AND OF APOCENTER AND THE\n#\tECCENTRICITY OF THE RESULTING CONIC TRAJECTORY, WHICH MAY BE A STRAIGHT LINE,\n#\tCIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE SUBROUTINE CAN\n#\tBE EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY CODING CHANGES,\n#\tACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.\n#\n# THE RESTRICTIONS ARE -\n#\t1. IF APOCENTER IS BEYOND THE SCALING OF POSITION, THE SCALE FACTOR LIMIT (536,870,910 METERS WITH RESPECT\n#\t   TO THE EARTH OR 134,217,727.5 METERS WITH RESPECT TO THE MOON) WILL BE RETURNED.\n#\t2. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE LIMITS\n#\t   ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.\n#\n#\tTHE AGC COMPUTATION TIME IS APPROXIMATELY .103 SECONDS.\n#\n# REFERENCES -\n#\tMISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP-SECTION 5.5\n#\n# INPUT - ERASABLE INITIALIZATION REQUIRED\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tRVEC\t\t* +29 FOR EARTH\t*\tDP INITIAL POSITION VECTOR IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tVVEC\t\t* +7 FOR EARTH\t*\tDP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\t* +5 FOR MOON\t*\n#\tX1 (38D)\t* NONE\t\t*\tINDEX REGISTER TO BE SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,\n#\t\t\t*\t\t*\t\tRESPECTIVELY, IS THE CENTRAL BODY.\n#\n# SUBROUTINES CALLED -\n#\tPARAM, GEOM\n#\n# CALLING SEQUENCE AND NORMAL EXIT MODES -\n# Page 1173\n#\tIF ONLY TIME IS DESIRED AS OUTPUT -\n#\tL\tCALL\t\t\t# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.\n#\tL+1\t\tAPSIDES\t\t# RETURNS WITH PL AT 0, RADIUS OF APOCENTER IN MPAC AND RADIUS OF PERICENTER IN 0D\n#\tL+2\tSTODL\tAPOAPSE\n#\tL+3\t\t0D\n#\tL+4\tSTORE\tPERIAPSE\t# APOAPSE AND PERIAPSE ARE SYMBOLIC REPRESENTATIONS OF THE USERS LOCATIONS\n#\tL+5\t...\t\t\t# CONTINUE\n#\n# OUTPUT -\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tMPAC\t\t* +29 FOR EARTH\t*\tDP RADIUS OF APOCENTER IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\t0D-1D\t\t* +29 FOR EARTH\t*\tDP RADIUS OF PERICENTER IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tECC\t\t* +3\t\t*\tDP ECCENTRICITY OF CONIC TRAJECTORY.\n#\n#\tFOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.\n#\n# DEBRIS -\n#\n#\tPARAMETERS WHICH MAY BE OF USE -\n#\n#\t\t\t* SCALE FACTOR\t*\n#\tVARIABLE\t*IN POWERS OF 2\t*\tDESCRIPTION AND REMARKS\n#\t--------\t*--------------\t*\t-----------------------\n#\tR1 (32D)\t* +29 FOR EARTH\t*\tDP MAGNITUDE OF INITIAL POSITION VECTOR, RVEC, IN METERS\n#\t\t\t* +27 FOR MOON\t*\n#\tR1A\t\t* +6\t\t*\tDP RATIO OF R1 TO SEMI-MAJOR AXIS (NEG. FOR HYPERBOLIC TRAJECTORIES)\n#\tP\t\t* +4\t\t*\tDP RATIO OF SEMILATUS RECTUM TO R1\n#\tCOGA\t\t* +5\t\t*\tDP COTAN OF ANGLE BETWEEN RVEC AND VVEC\n#\tUR1\t\t* +1\t\t*\tDP UNIT VECTOR OF RVEC\n#\tU2\t\t* +1\t\t*\tDP UNIT VECTOR OF VVEC\n#\tUN\t\t* +1\t\t*\tDP UNIT VECTOR OF UR1*U2\n#\tMAGVEC2\t\t* +7 FOR EARTH\t*\tDP MAGNITUDE OF VVEC\n#\t\t\t* +5 FOR MOON\t*\n#\n#\tPARAMETERS OF NO USE -\n#\t\tSP PARAMETERS - RTNAPSE, GEOMSGN, RTNPRM, PLUS PUSHLIST LOCATIONS 0-5, 10D-11D, 14D-21D, 31D-38D.\n#\t\tADDITIONAL INTERPRETIVE SWITCHES USED - NORMSW\n\n\t\tSETLOC\tCONICS\n# Page 1174\n\t\tBANK\n\n\t\tCOUNT*\t$$/CONIC\n\t\tEBANK=\tUR1\nKEPLERN\t\tSETPD\tBOV\n\t\t\t0\n\t\t\t+1\n\t\tVLOAD*\n\t\t\tMUTABLE,1\n\t\tSTOVL\t14D\n\t\t\tRRECT\n\t\tUNIT\tSSP\n\t\t\tITERCTR\n\t\t\t20D\n\t\tSTODL\tURRECT\n\t\t\t36D\n\t\tSTOVL\tR1\n\t\t\tRRECT\n\t\tDOT\tSL1R\n\t\t\tVRECT\n\t\tDMP\tSL1R\n\t\t\t1/ROOTMU\t# 1/ROOTMU (-17 OR -14)\n\t\tSTOVL\tKEPC1\t\t# C1=R.V/ROOTMU (+17 OR +16)\n\t\t\tVRECT\n\t\tVSQ\tDMPR\n\t\t\t1/MU\t\t# 1/MU (-34 OR -28)\n\t\tDMP\tSL3\n\t\t\tR1\n\t\tDSU\tROUND\n\t\t\tD1/64\n\t\tSTORE\tKEPC2\t\t# C2=RV.V/MU -1 (+6)\n\n\t\tBDSU\tSR1R\n\t\t\tD1/64\n\t\tDDV\n\t\t\tR1\n\t\tSTORE\tALPHA\t\t# ALPHA=(1-C2)/R1 (-22 OR -20)\n\n\t\tBPL\tDLOAD\t\t# MAXIMUM X DEPENDS ON TYPE OF CONIC\n\t\t\t1REV\n\t\t\t-50SC\t\t# -50SC (+12)\n\t\tDDV\tBOV\n\t\t\tALPHA\n\t\t\tSTOREMAX\n\t\tSQRT\tGOTO\n\t\t\tSTOREMAX\n\n1REV\t\tSQRT\tBDDV\n# Page 1175\n\t\t\t2PISC\t\t# 2PISC (+6)\n\t\tBOV\n\t\t\tSTOREMAX\nSTOREMAX\tSTORE\tXMAX\n\t\tDMP\tPDDL\n\t\t\t1/ROOTMU\n\t\t\tALPHA\n\t\tNORM\tPDDL\n\t\t\tX1\n\t\tSL*\tDDV\n\t\t\t0 -6,1\n\t\tBOV\tBMN\n\t\t\tMODDONE\n\t\t\tMODDONE\t\t# MPAC=PERIOD\nPERIODCH\tPDDL\tABS\t\t# 0D=PERIOD\n\t\t\tTAU.\n\t\tDSU\tBMN\n\t\t\t0D\n\t\t\tMODDONE\n\t\tSIGN\n\t\t\tTAU.\n\t\tSTODL\tTAU.\n\t\tGOTO\n\t\t\tPERIODCH\nMODDONE\t\tSETPD\tDLOAD\n\t\t\t0\n\t\t\tXKEPNEW\n\t\tSTORE\tX\n\t\tSIGN\tBZE\n\t\t\tTAU.\n\t\t\tBADX\n\t\tBMN\tABS\n\t\t\tBADX\n\t\tDSU\tBPL\n\t\t\tXMAX\n\t\t\tBADX\nSTORBNDS\tDLOAD\tBPL\n\t\t\tTAU.\n\t\t\tSTOREMIN\n\t\tDLOAD\tDCOMP\n\t\t\tXMAX\n\t\tSTODL\tXMIN\n\t\t\tKEPZERO\n\t\tSTORE\tXMAX\n\t\tGOTO\n\t\t\tDXCOMP\nSTOREMIN\tDLOAD\n\t\t\tKEPZERO\n\t\tSTORE\tXMIN\nDXCOMP\t\tDLOAD\tDMPR\n# Page 1176\n\t\t\tTAU.\n\t\t\tBEE22\n\t\tABS\n\t\tSTODL\tEPSILONT\n\t\t\tXPREV\nXDIFF\t\tBDSU\n\t\t\tX\n\t\tSTORE\tDELX\n\nKEPLOOP\t\tDLOAD\tDSQ\n\t\t\tX\t\t# X=XKEP\n\t\tNORM\tPUSH\t\t# 0D=XSQ (+34 OR +32 -N1)\tPL AT 2\n\t\t\tX1\n\t\tDMP\tSRR*\n\t\t\tALPHA\n\t\t\t0 -6,1\n\t\tSTCALL\tXI\t\t# XI=ALPHA XSQ (+6)\n\t\t\tDELTIME\n\t\tBOV\tBDSU\n\t\t\tTIMEOVFL\t# UNLIKELY\n\t\t\tTAU.\n\t\tSTORE\tDELT\t\t# DELT=DELINDEP\n\t\tABS\tBDSU\n\t\t\tEPSILONT\n\t\tBPL\tDLOAD\n\t\t\tKEPCONVG\n\t\t\tT\n\t\tDSU\tNORM\n\t\t\tTC\n\t\t\tX1\n\t\tPDDL\tNORM\n\t\t\tDELX\n\t\t\tX2\n\t\tXSU,1\tDMP\n\t\t\tX2\n\t\t\tDELT\n\t\tSLR*\tDDV\n\t\t\t1,1\n\t\tSR1\tPUSH\t\t# 0D=TRIAL DELX\t\tPL AT 2\n\t\tBPL\tDLOAD\n\t\t\tPOSDELX\n\t\t\tX\n\t\tSTORE\tXMAX\t\t# MOVE MAX BOUND IN\n\t\tBDSU\tDSU\t\t#\t\t\tPL AT 0\n\t\t\tXMIN\n\t\tBOV\tBPL\n\t\t\tNDXCHNGE\n\t\t\tNDXCHNGE\n\t\tDLOAD\tGOTO\n# Page 1177\n\t\t\t0D\n\t\t\tNEWDELX\n\nNDXCHNGE\tDLOAD\tDSU\n\t\t\tXMIN\n\t\t\tX\n\t\tDMPR\tGOTO\t\t# TO FORCE MPAC +2 TO ZERO\n\t\t\tDP9/10\n\t\t\tNEWDELX\n\nPOSDELX\t\tDLOAD\n\t\t\tX\n\t\tSTORE\tXMIN\t\t# MOVE MIN BOUND IN\n\t\tBDSU\tDSU\t\t#\t\t\tPL AT 0\n\t\t\tXMAX\n\t\tBOV\tBMN\n\t\t\tPDXCHNGE\n\t\t\tPDXCHNGE\n\t\tDLOAD\n\t\t\t0D\nNEWDELX\t\tSTORE\tDELX\n\t\tBZE\tDAD\n\t\t\tKEPCONVG\n\t\t\tX\n\t\tSTODL\tX\n\t\t\tT\n\t\tSTORE\tTC\nBRNCHCTR\tRTB\tBHIZ\n\t\t\tCHECKCTR\n\t\t\tKEPCONVG\n\t\tGOTO\n\t\t\tKEPLOOP\t\t# ITERATE\n\nPDXCHNGE\tDLOAD\tDSU\n\t\t\tXMAX\n\t\t\tX\n\t\tDMPR\tGOTO\t\t# TO FORCE MPAC +2 TO ZERO\n\t\t\tDP9/10\n\t\t\tNEWDELX\n\nBADX\t\tDLOAD\tSR1\n\t\t\tXMAX\n\t\tSIGN\n\t\t\tTAU.\n\t\tSTORE\tX\n\t\tGOTO\n# Page 1178\n\t\t\tSTORBNDS\nTIMEOVFL\tDLOAD\tBMN\t\t# X WAS TOO BIG\n\t\t\tX\n\t\t\tNEGTOVFL\n\t\tSTORE\tXMAX\nCMNTOVFL\tDLOAD\tSR1\n\t\t\tDELX\n\t\tSTORE\tDELX\n\t\tBZE\tBDSU\n\t\t\tKEPRTN\n\t\t\tX\n\t\tSTODL\tX\n\t\t\tTC\n\t\tSTORE\tT\n\t\tGOTO\n\t\t\tBRNCHCTR\nNEGTOVFL\tSTORE\tXMIN\n\t\tGOTO\n\t\t\tCMNTOVFL\nKEPCONVG\tDLOAD\tSR4R\n\t\t\tR1\n\t\tDSU\tVXSC\n\t\t\tXSQC(XI)\n\t\t\tURRECT\n\t\tVSL1\tPDDL\t\t# 0D=(R1-XSQC(XI))URRECT (+33 OR +31)\n\t\t\tX\n\t\tDSQ\tNORM\n\t\t\tX1\n\t\tDMPR\tDMPR\n\t\t\t1/ROOTMU\n\t\t\tX\n\t\tDMP\tSRR*\n\t\t\tS(XI)\n\t\t\t0 -7,1\n\t\tBDSU\n\t\t\tT\n\t\tSL1\tVXSC\n\t\t\tVRECT\n\t\tVSL1\tVAD\t\t# \t\t\t\tPL AT 0\n\t\tVSL4\n\t\tSTORE\tRCV\t\t# RCV (+29 OR +27)\n\n\t\tABVAL\tNORM\n\t\t\tX2\n\t\tSTODL\tRCNORM\n\t\t\tXI\n\t\tDMPR\tDSU\n\t\t\tS(XI)\n\t\t\tD1/128\n# Page 1179\n\t\tDMP\tSL1R\n\t\t\tROOTMU\n\t\tDMP\tSLR*\n\t\t\tX\n\t\t\t0 -3,2\n\t\tDDV\tVXSC\n\t\t\tRCNORM\n\t\t\tURRECT\n\t\tVSL1\tPDDL\t\t# 0D=URRECT(XI S(XI)-1)X ROOTMU/RCV (+15\n\t\t\tXSQC(XI)\t# OR +13)\t\t\tPL AT 6\n\t\tSLR*\tDDV\n\t\t\t0 -4,2\n\t\t\tRCNORM\n\t\tBDSU\tVXSC\n\t\t\tD1/256\n\t\t\tVRECT\n\t\tVAD\tVSL8\n\t\tSTADR\t\t\t#\t\t\t\tPL AT 0\n\t\tSTODL\tVCV\t\t# VCV (+7 OR +5)\n\t\t\tT\n\t\tSTODL\tTC\n\t\t\tX\n\t\tSTORE\tXPREV\n\t\tGOTO\n\t\t\tKEPRTN\n\n# Page 1180\nDELTIME\t\tEXIT\t\t\t# MPAC=XI (+6), 0D=XSQ (+34 OR +32 -N1)\n\t\tTC\tPOLY\n\t\tDEC\t8\n\t\t2DEC\t.083333334\n\t\t2DEC\t-.266666684\n\t\t2DEC\t.406349155\n\t\t2DEC\t-.361198675\n\t\t2DEC\t.210153242\n\t\t2DEC\t-.086221951\n\t\t2DEC\t.026268812\n\t\t2DEC\t-.006163316\n\t\t2DEC\t.001177342\n\t\t2DEC\t-.000199055\n\n\t\tTC\tINTPRET\n\t\tSTODL\tS(XI)\n\t\t\tXI\n\t\tEXIT\n\t\tTC\tPOLY\n\t\tDEC\t8\n\t\t2DEC\t.031250001\n\t\t2DEC\t-.166666719\n\t\t2DEC\t.355555413\n\t\t2DEC\t-.406347410\n\t\t2DEC\t.288962094\n\t\t2DEC\t-.140117894\n\t\t2DEC\t.049247387\n\t\t2DEC\t-.013081923\n\t\t2DEC\t.002806389\n\t\t2DEC\t-.000529414\n\t\tTC\tINTPRET\n# Page 1181\n\t\tDMP\tSRR*\t\t#\t\t\t\tPL AT 0\n\t\t\t0D\n\t\t\t0 -5,1\n\t\tSTORE\tXSQC(XI)\t# XSQC(XI) (+33 OR +31)\n\t\tDMP\tSL1\n\t\t\tKEPC1\n\t\tRTB\tPDDL\t\t# XCH WITH PL. 0D=C1 XSQ C(XI) (+49 OR +46)\n\t\t\tTPMODE\t\t#\t\t\t\tPL AT 0,3\n\t\tDMP\tSRR*\n\t\t\tS(XI)\n\t\t\t0 -5,1\n\t\tDMP\tSL1\n\t\t\tKEPC2\n\t\tRTB\tPDDL\t\t# 3D=C2 XSQ S(XI) (+35 OR +33) \tPL AT 6\n\t\t\tTPMODE\n\t\t\tR1\n\t\tSR\tTAD\t\t#\t\t\t\tPL AT 3\n\t\t\t6\n\t\tNORM\tDMP\t\t# TO PRESERVE SIGNIF.\n\t\t\tX1\n\t\t\tX\n\t\tSR*\tTAD\t\t# X(C2 XSQ S(XI) +R1) (+49 OR +46)  PL AT 0\n\t\t\t0 -3,1\n\t\tSL4R\tDMPR\n\t\t\t1/ROOTMU\n\t\tSTORE\tT\n\t\tRVQ\n\n# Page 1182\nITERATOR\tBONCLR\tDLOAD\n\t\t\tSLOPESW\n\t\t\tFIRSTIME\n\t\t\tDEP\n\t\tDSU\tNORM\n\t\t\tDEPREV\n\t\t\tX1\n\t\tPDDL\tNORM\n\t\t\tDELINDEP\n\t\t\tX2\n\t\tXSU,1\tDMP\n\t\t\tX2\n\t\t\tDELDEP\n\t\tSLR*\tDDV\t\t#\t\t\t\tPL UP 2\n\t\t\t1,1\n\t\tSR1\tBOFF\n\t\t\tORDERSW\n\t\t\tSGNCHECK\n\t\tABS\tSIGN\t\t# IN CASE 2ND DERIV. CHANGED SIGN, MUST\n\t\t\tDELDEP\t\t# DISREGARD IT TO FIND MIN.\n\nSGNCHECK\tPUSH\tBPL\t\t# TRIAL DELINDEP\t\tPL DOWN 2\n\t\t\tPOSDEL\n\t\tDLOAD\tBON\n\t\t\tINDEP\n\t\t\tORDERSW\n\t\t\tMINCHECK\n\t\tSTORE\tMAX\t\t# IF NOT 2ND ORDER, CAN MOVE MAX BOUND IN.\n\nMINCHECK\tBDSU\tDSU\n\t\t\tMIN\n\t\tBOV\tBPL\n\t\t\tMODNGDEL\n\t\t\tMODNGDEL\n\t\tGOTO\n\t\t\tDELOK\n\nMODNGDEL\tDLOAD\tDSU\t\t# TRIAL DELINDEP WOULD EXCEED MIN BOUND\n\t\t\tMIN\n\t\t\tINDEP\n\t\tDMP\tGOTO\n\t\t\tDP9/10\n\t\t\tNEWDEL\n\nFIRSTIME\tDLOAD\tDMP\n\t\t\tMIN\n\t\t\tTWEEKIT\t\t# DLOAD TWEEKIT(40D) SENSITIVE TO CHANGE.\n\t\tPDDL\tDMP\t\t# S2(41D) SHOULDNT CONTAIN HI ORDER ONES\n# Page 1183\n\t\t\tMAX\n\t\t\tTWEEKIT\n\t\tDSU\n\t\tSIGN\tGOTO\n\t\t\tDELDEP\n\t\t\tSGNCHECK\n\nPOSDEL\t\tDLOAD\tBON\n\t\t\tINDEP\n\t\t\tORDERSW\n\t\t\tMAXCHECK\n\t\tSTORE\tMIN\t\t# IF NOT 2ND ORDER, CAN MOVE MIN BOUND IN.\n\nMAXCHECK\tBDSU\tDSU\n\t\t\tMAX\n\t\tBOV\tBMN\n\t\t\tMODPSDEL\n\t\t\tMODPSDEL\nDELOK\t\tDLOAD\n\t\t\t0D\nNEWDEL\t\tSTORE\tDELINDEP\n\t\tRVQ\n\nMODPSDEL\tDLOAD\tDSU\n\t\t\tMAX\n\t\t\tINDEP\n\t\tDMP\tGOTO\n\t\t\tDP9/10\n\t\t\tNEWDEL\n\nCHECKCTR\tCS\tONE\n\t\tINDEX\tFIXLOC\n\t\tAD\tITERCTR\n\t\tINDEX\tFIXLOC\n\t\tTS\tITERCTR\n\t\tTS\tMPAC\n\t\tTC\tDANZIG\n\n# Page 1184\nNEWSTATE\tDLOAD\tSR4R\n\t\t\tR1\n\t\tDSU\tVXSC\n\t\t\tXSQC(XI)\n\t\t\tUR1\n\t\tVSL1\tPDDL\t\t# 0D=(R1-XSQC(XI))UR1 (+33 OR 31) PL AT 6\n\t\t\tX\n\t\tDSQ\tNORM\n\t\t\tX1\n\t\tDMPR\tDMPR\n\t\t\t1/ROOTMU\n\t\t\tX\n\t\tDMP\tSRR*\n\t\t\tS(XI)\n\t\t\t0 -7,1\n\t\tBDSU\n\t\t\tT\n\t\tSL1\tVXSC\n\t\t\tVVEC\n\t\tVSL1\tVAD\t\t#\t\t\t\tPL AT 0\n\t\tVSL4\tPUSH\n\t\tABVAL\nLAMENTER\tNORM\n\t\t\tX1\n\t\tSTODL\tR2\n\t\t\tXI\n\t\tDMP\tDSU\n\t\t\tS(XI)\n\t\t\tD1/128\n\t\tDMP\tSL1R\n\t\t\tROOTMU\n\t\tDMP\tSLR*\n\t\t\tX\n\t\t\t0 -3,1\n\t\tDDV\tVXSC\n\t\t\tR2\n\t\t\tUR1\n\t\tVSL1\tPDDL\t\t# 6D=V2VEC PART (+15 OR 13)\tPL AT 12\n\t\t\tXSQC(XI)\n\t\tSLR*\tDDV\n\t\t\t0 -4,1\n\t\t\tR2\n\t\tBDSU\n\t\t\tD1/256\n\t\tVXSC\tVAD\t\t#\t\t\t\tPL AT 6\n\t\t\tVVEC\n\t\tVSL8\tRVQ\n\n# Page 1185\n\t\tSETLOC\tCONICS1\n\t\tBANK\n\n\t\tCOUNT*\t$$/CONIC\n# DO NOT DISTURB THE ORDER OF THESE CDS, OVERLAYS HAVE BEEN MADE.\nBEE17\t\tDEC\t0\t\t# KEEP WITH D1/8 2DEC 1.0B-17 (0000004000)\nD1/8\t\t2DEC\t1.0 B-3\nD1/128\t\t2DEC\t1.0 B-7\nD1/64\t\t2DEC\t1.0 B-6\nD1/4\t\t2DEC\t1.0 B-2\nD1/16\t\t2DEC\t1.0 B-4\nD1/32\t\t2DEC\t1.0 B-5\nD1/1024\t\t2DEC\t1.0 B-10\nD1/256\t\t2DEC\t1.0 B-8\nDP9/10\t\t2DEC\t.9\nKEPZERO\t\tEQUALS\tLO6ZEROS\n-50SC\t\t2DEC\t-50.0 B-12\n2PISC\t\t2DEC\t6.28318530 B-6\nBEE19\t\tEQUALS\tD1/32 -1\t# 2DEC 1.0 B-19 (00000 01000)\nBEE22\t\tEQUALS\tD1/256 -1\t# 2DEC 1.0 B-22 (00000 00100)\nONEBIT\t\t2DEC\t1.0 B-28\nCOGUPLIM\t2DEC\t.999511597\nCOGLOLIM\t2DEC\t-.999511597\n\n# Page 1186\n\t\tSETLOC\tCONICS\n\t\tBANK\n\n\t\tCOUNT*\t$$/CONIC\nTIMETHET\tSTQ\tSETPD\t\t#\t\t\t\tPL AT 0\n\t\t\tRTNTT\n\t\t\t0\n\t\tBOV\n\t\t\t+1\n\t\tVLOAD\tPDVL\t\t# SETUP FOR PARAM CALL\t\tPL AT 6\n\t\t\tRVEC\n\t\t\tVVEC\n\t\tCALL\n\t\t\tPARAM\n\t\tBOV\tCALL\t\t#\t\t\t\tPL AT 0\n\t\t\tCOGAOVFL\n\t\t\tGETX\nCOMMNOUT\tDLOAD\tBON\n\t\t\tXI\n\t\t\tINFINFLG\n\t\t\tABTCONIC\n\t\tCLEAR\tCALL\n\t\t\tCOGAFLAG\n\t\t\tDELTIME\n\t\tBON\tCALL\n\t\t\tRVSW\n\t\t\tRTNTT\n\t\t\tNEWSTATE\n\t\tGOTO\n\t\t\tRTNTT\n\nCOGAOVFL\tSETGO\n\t\t\tCOGAFLAG\n\t\t\tABTCONIC\n\n\t\tBANK\t4\n\t\tSETLOC\tCONICS1\n\t\tBANK\n\t\tCOUNT*\t$$/CONIC\nPARAM\t\tSTQ\tCLEAR\t\t# MPAC=V1VEC, 0D=R1VEC\t\tPL AT 6\n\t\t\tRTNPRM\n\t\t\tNORMSW\n\t\tCLEAR\n\t\t\tCOGAFLAG\n\t\tSSP\tCALL\n\t\t\tGEOMSGN\n\t\t\t37777\t\t# GAMMA ALWAYS LESS THAN 180DEG\n\t\t\tGEOM\t\t# MPAC=SNGA (+1), 0D=CSGA (+1)\tPL AT 2\n\t\tSTODL\t36D\t\t# 36D=SIN GAMMA (+1)\t\tPL AT 0\n\t\tSR\tDDV\n# Page 1187\n\t\t\t5\n\t\t\t36D\n\t\tSTOVL*\tCOGA\n\t\t\tMUTABLE,1\n\t\tSTODL\t1/MU\n\t\t\tMAGVEC2\n\t\tDSQ\tNORM\n\t\t\tX1\n\t\tDMPR\tDMP\n\t\t\t1/MU\n\t\t\tR1\n\t\tSRR*\n\t\t\t0 -3,1\n\t\tPUSH\tBDSU\t\t# 0D=R1 V1SQ/MU (+6)\t\tPL AT 2\n\t\t\tD1/32\n\t\tSTODL\tR1A\t\t# R1A (+6)\t\t\tPL AT 0\n\n\t\tDMP\tNORM\n\t\t\t36D\n\t\t\tX1\n\t\tDMP\tSR*\n\t\t\t36D\n\t\t\t0 -4,1\n\t\tSTORE\tP\t\t# P (+4)\n\t\tGOTO\n\t\t\tRTNPRM\n\n# Page 1188\nGEOM\t\tUNIT\t\t\t# MPAC=V2VEC, 0D=R1VEC\t\tPL AT 6\n\t\tSTODL\tU2\t\t# U2 (+1)\n\t\t\t36D\n\t\tSTOVL\tMAGVEC2\t\t#\t\t\t\tPL AT 0\n\t\tUNIT\n\t\tSTORE\tUR1\t\t# UR1 (+1)\n\t\tDOT\tSL1\n\t\t\tU2\n\t\tPDDL\t\t\t# 0D=CSTH (+1)\t\t\tPL AT 2\n\t\t\t36D\n\t\tSTOVL\tR1\t\t# R1 (+29 OR +27)\n\t\t\tUR1\n\t\tVXV\tVSL1\n\t\t\tU2\n\t\tBON\tSIGN\n\t\t\tNORMSW\n\t\t\tHAVENORM\n\t\t\tGEOMSGN\n\t\tUNIT\tBOV\n\t\t\tCOLINEAR\nUNITNORM\tSTODL\tUN\t\t# UN (+1)\n\t\t\t36D\n\t\tSIGN\tRVQ\t\t# MPAC=SNTH (+1), 34D=SNTH.SNTH (+2)\n\t\t\tGEOMSGN\n\nCOLINEAR\tVSR1\tGOTO\n\t\t\tUNITNORM\n\nHAVENORM\tABVAL\tSIGN\n\t\t\tGEOMSGN\n\t\tRVQ\t\t\t# MPAC=SNTH (+1), 34D=SNTH.SNTH (+2)\n\n# Page 1189\n\t\tBANK\t12\n\t\tSETLOC\tCONICS\n\t\tBANK\n\n\t\tCOUNT*\t$$/CONIC\nGETX\t\tAXT,2\tSSP\t\t# ASSUMES P (+4) IN MPAC\n\t\t\t3\n\t\t\tS2\n\t\t\t1\n\t\tCLEAR\n\t\t\t360SW\n\t\tSQRT\tPDDL\t\t# 0D=SQRT(P)\t\t\tPL AT 2\n\t\t\tCSTH\n\t\tSR1\tBDSU\n\t\t\tD1/4\n\t\tPDDL\tSRR\t\t#\t\t\t\tPL AT 4D\n\t\t\tSNTH\n\t\t\t6\n\t\tDDV\t\t\t#\t\t\t\tPL AT 2\n\t\tBOV\n\t\t\t360CHECK\n\t\tDSU\tDMP\n\t\t\tCOGA\t\t#\t\t\t\tPL AT 0\n\t\tSL2R\tBOV\n\t\t\t360CHECK\nWLOOP\t\tPUSH\tDSQ\t\t# 0D=W (+5)\t\t\tPL AT 2\n\t\tTLOAD\tPDDL\t\t# 2D=WSQ (+10)\t\t\tPL AT 5\n\t\t\tMPAC\n\t\t\tR1A\n\t\tSR4\tTAD\t\t#\t\t\t\tPL AT 2\n\t\tBMN\tSQRT\n\t\t\tINFINITY\n\t\tROUND\tDAD\t\t#\t\t\t\tPL AT 0D\n\t\tBOV\tTIX,2\n\t\t\tRESETX2\n\t\t\tWLOOP\n\n\t\tBDDV\tBOV\n\t\t\tD1/128\n\t\t\tINFINITY\nPOLYCOEF\tBMN\tPUSH\t\t# 0D=1/W (+2) OR 16/W (+6)\tPL AT 2\n\t\t\tINFINITY\n\t\tDSQ\n\t\tNORM\tDMP\n\t\t\tX1\n\t\t\tR1A\n\t\tSRR*\tEXIT\n\t\t\t0 -10D,1\n\t\tTC\tPOLY\n# Page 1190\n\t\tDEC\t5\n\t\t2DEC\t.5\n\t\t2DEC\t-.166666770\n\t\t2DEC\t.100000392\n\t\t2DEC\t-.071401086\n\t\t2DEC\t.055503292\n\t\t2DEC\t-.047264098\n\t\t2DEC\t.040694204\n\n\t\tTC\tINTPRET\n\t\tDMP\tSL1R\t\t#\t\t\t\tPL AT 0D\n\t\tPUSH\tBON\n\t\t\t360SW\n\t\t\tTRUE360X\nXCOMMON\t\tDSQ\tNORM\n\t\t\tX1\n\t\tDMP\tSRR*\n\t\t\tR1A\n\t\t\t0 -12D,1\n\t\tSTODL\tXI\t\t# XI (+6)\n\t\t\tR1\n\t\tSR1\tSQRT\n\t\tROUND\tDMP\n\t\tSL4R\t\t\t#\t\t\t\tPL AT 0\n\t\tSTORE\tX\t\t# X (+17 OR +16)\n\n\t\tDSQ\tNORM\n\t\t\tX1\n\t\tPDDL\tDMP\t\t# 0D=XSQ (+34 OR +32 -N1)\tPL AT 2\n\t\t\tP\n\t\t\tR1\n\t\tSL3\tSQRT\n\t\tDMP\tSL3R\n\t\t\tCOGA\n\t\tSTODL\tKEPC1\n\t\t\tR1A\n\t\tBDSU\tCLEAR\n\t\t\tD1/64\n\t\t\tINFINFLG\n\t\tSTORE\tKEPC2\n\t\tRVQ\n\n# Page 1191\nRESETX2\t\tAXT,2\n\t\t\t3\n\n360CHECK\tSETPD\tBPL\n\t\t\t0D\n\t\t\tINVRSEQN\n\t\tSET\n\t\t\t360SW\n\nINVRSEQN\tDLOAD\tSQRT\n\t\t\tP\n\t\tPDDL\tDMP\t\t# 0D=SQRT(P) (+2)\t\tPL AT 2\n\t\t\tSNTH\n\t\t\tCOGA\n\t\tSL1\tPDDL\t\t# 2D=SNTH COGA (+5)\t\tPL AT 4\n\t\t\tCSTH\n\t\tSR4\tDAD\n\t\t\tD1/32\n\t\tDSU\tDMP\t\t#\t\t\t\tPL AT 2,0\n\t\tNORM\tBDDV\n\t\t\tX1\n\t\t\tSNTH\n\t\tSLR*\tABS\t\t# NOTE: NEAR 360 CASE TREATED DIFFERENTLY\n\t\t\t0 -5,1\n\t\tPUSH\tDSQ\t\t# 0D=1/W (-1)\t\t\tPL AT 2\n\t\tSTODL\t34D\n\t\t\tD1/16\n1/WLOOP\t\tPUSH\tDSQ\t\t# 2D=G (+4)\t\t\tPL AT 4\n\t\tRTB\tPDDL\t\t#\t\t\t\tPL AT 7\n\t\t\tTPMODE\n\t\t\tR1A\n\t\tDMP\tSR4\n\t\t\t34D\n\t\tTAD\t\t\t#\t\t\t\tPL AT 4\n\t\tBMN\tSQRT\n\t\t\tINFINITY\n\t\tDAD\t\t\t#\t\t\t\tPL AT 2\n\t\tTIX,2\tNORM\n\t\t\t1/WLOOP\n\t\t\tX1\n\t\tBDDV\n\t\tSLR*\tGOTO\t\t#\t\t\t\tPL AT 0\n\t\t\t0 -7,1\n\t\t\tPOLYCOEF\n\nTRUE360X\tDLOAD\tBMN\n\t\t\tR1A\n# Page 1192\n\t\t\tINFINITY\n\t\tSQRT\tNORM\n\t\t\tX1\n\t\tBDDV\tSL*\n\t\t\t2PISC\n\t\t\t0 -3,1\n\t\tDSU\tPUSH\t\t# 0D=2PI/SQRT(R1A) -X\t\tPL AT 0,2\n\t\tGOTO\n\t\t\tXCOMMON\nINFINITY\tSETPD\tBOV\t\t# NO SOLUTION EXISTS SINCE CLOSURE THROUGH\n\t\t\t0\t\t# INFINITY IS REQUIRED\n\t\t\tOVFLCLR\nOVFLCLR\t\tSET\tRVQ\n\t\t\tINFINFLG\n\n# Page 1193\nLAMBERT\t\tSTQ\tSETPD\n\t\t\tRTNLAMB\n\t\t\t0D\n\t\tBOV\n\t\t\t+1\n\t\tCLEAR\tVLOAD*\n\t\t\tSOLNSW\n\t\t\tMUTABLE,1\n\t\tSTODL\t1/MU\n\t\t\tTDESIRED\n\t\tDMPR\n\t\t\tBEE19\n\t\tSTORE\tEPSILONL\n\t\tSET\tVLOAD\n\t\t\tSLOPESW\n\t\t\tR1VEC\n\t\tPDVL\tCALL\t\t# 0D=R1VEC (+29 OR +27)\t\tPL AT 6\n\t\t\tR2VEC\t\t# MPAC=R2VEC (+29 OR +27)\n\t\t\tGEOM\n\t\tSTODL\tSNTH\t\t# 0D=CSTH (+1)\t\t\tPL AT 2\n\t\t\tMAGVEC2\n\t\tNORM\tPDDL\n\t\t\tX1\n\t\t\tR1\n\t\tSR1\tDDV\t\t#\t\t\t\tPL AT 2\n\t\tSL*\tPDDL\t\t# DXCH WITH 0D, 0D=R1/R2 (+7)\tPL AT 0,2\n\t\t\t0 -6,1\n\t\tSTADR\n\t\tSTORE\tCSTH\t\t# CSTH (+1)\n\t\tSR1\tBDSU\n\t\t\tD1/4\n\t\tSTORE\t1-CSTH\t\t# 1-CSTH (+2)\n\n\t\tROUND\tBZE\n\t\t\t360LAMB\n\t\tNORM\tPDDL\t\t#\t\t\t\tPL AT 4\n\t\t\tX1\n\t\t\t0D\n\t\tSR1\tDDV\t\t#\t\t\t\tPL AT 2\n\t\tSL*\tSQRT\n\t\t\t0 -3,1\n\t\tPDDL\tSR\t\t# 2D=SQRT(2R1/R2(1-CSTH)) (+5) \tPL AT 4\n\t\t\tSNTH\n\t\t\t6\n\t\tDDV\tDAD\t\t#\t\t\t\tPL AT 2\n\t\t\t1-CSTH\n\t\tSTADR\n\t\tSTORE\tCOGAMAX\n\t\tBOV\tBMN\t\t# IF OVFL, COGAMAX=COGUPLIM\n\t\t\tUPLIM\t\t# IF NEG, USE EVEN IF LT COGLOLIM, SINCE\n# Page 1194\n\t\t\tMAXCOGA\t\t# \tTHIS WOULD BE RESET IN LAMBLOOP\n\t\tDSU\tBMN\t\t# IF COGAMAX GT COGUPLIM, COGAMAX=COGUPLIM\n\t\t\tCOGUPLIM\n\t\t\tMAXCOGA\t\t# OTHERWISE OK, SO GO TO MAXCOGA\nUPLIM\t\tDLOAD\n\t\t\tCOGUPLIM\t# COGUPLIM=.999511597 = MAX VALUE OF COGA\n\t\tSTORE\tCOGAMAX\t\t#\tNOT CAUSING OVFL IN R1A CALCULATION\nMAXCOGA\t\tDLOAD\n\t\t\tCSTH\n\t\tSR\tDSU\t\t#\t\t\t\tPL AT 0\n\t\t\t6\n\t\tSTADR\n\t\tSTODL\tCSTH-RHO\n\t\t\tGEOMSGN\n\t\tBMN\tDLOAD\n\t\t\tLOLIM\n\t\t\tCSTH-RHO\n\t\tSL1\tDDV\n\t\t\tSNTH\n\t\tBOV\n\t\t\tLOLIM\nMINCOGA\t\tSTORE\tCOGAMIN\t\t# COGAMIN (+5)\n\t\tBON\tSSP\n\t\t\tGUESSW\n\t\t\tNOGUESS\n\t\t\tTWEEKIT\n\t\t\t00001\n\t\tDLOAD\n\t\t\tCOGA\n\nLAMBLOOP\tDMP\n\t\t\tSNTH\n\t\tSR1\tDSU\n\t\t\tCSTH-RHO\n\t\tNORM\tPDDL\t\t# 0D=SNTH COGA-(CSTH-RHO) (+7+C(X1)) PL=2\n\t\t\tX1\n\t\t\t1-CSTH\n\t\tSL*\tDDV\t\t# 1-CSTH (+2)\t\t\tPL AT 0\n\t\t\t0 -9D,1\n\t\tBMN\tBZE\n\t\t\tNEGP\n\t\t\tNEGP\n\t\tSTODL\tP\t\t# P=(1-CSTH)/(SNTH COGA-(CSTH-RHO)) (+4)\n\t\t\tCOGA\n\t\tDSQ\tDAD\n\t\t\tD1/1024\n\t\tNORM\tDMP\n\t\t\tX1\n\t\t\tP\n# Page 1195\n\t\tSR*\tBDSU\n\t\t\t0 -8D,1\n\t\t\tD1/32\n\t\tSTODL\tR1A\t\t# R1A=2-P(1+COGA COGA) (+6)\n\t\t\tP\n\t\tBOV\tCALL\n\t\t\tHIENERGY\n\t\t\tGETX\n\t\tDLOAD\n\t\t\tT\n\t\tSTODL\tTPREV\n\t\t\tXI\n\t\tBON\tCALL\n\t\t\tINFINFLG\n\t\t\tNEGP\t\t# HAVE EXCEEDED THEORETICAL BOUNDS\n\t\t\tDELTIME\n\t\tBOV\tBDSU\n\t\t\tBIGTIME\n\t\t\tTDESIRED\n\t\tSTORE\tTERRLAMB\n\t\tABS\tBDSU\n\t\t\tEPSILONL\n\t\tBPL\tRTB\n\t\t\tINITV\n\t\t\tCHECKCTR\n\t\tBHIZ\tCALL\n\t\t\tSUFFCHEK\n\t\t\tITERATOR\n\t\tDLOAD\tBZE\n\t\t\tMPAC\n\t\t\tSUFFCHEK\n\t\tDAD\n\t\t\tCOGA\n\t\tSTORE\tCOGA\n\t\tGOTO\n\t\t\tLAMBLOOP\n\nNEGP\t\tDLOAD\tBPL\t\t# IMPOSSIBLE TRAJECTORY DUE TO INACCURATE\n\t\t\tDCOGA\t\t# BOUND CALCULATION. TRY NEW COGA.\n\t\t\tLOENERGY\n\nHIENERGY\tSETPD\tDLOAD\t\t# HIGH ENERGY TRAJECTORY RESULTED\n\t\t\t0\n\t\t\tCOGA\t\t# IN OVFL OF P OR R1A, OR XI EXCEEDING 50.\n\t\tSTORE\tCOGAMIN\t\t# THIS IS THE NEW BOUND.\nCOMMONLM\tDLOAD\tSR1\n\t\t\tDCOGA\n# Page 1196\n\t\tSTORE\tDCOGA\t\t# USE DCOGA/2 AS DECREMENT\n\t\tBZE\tBDSU\n\t\t\tSUFFCHEK\n\t\t\tCOGA\n\t\tSTORE \tCOGA\n\t\tGOTO\t\t\t# RESTART THIS LOOP\n\t\t\tLAMBLOOP\n\nBIGTIME\t\tDLOAD\n\t\t\tTPREV\n\t\tSTORE\tT\n\nLOENERGY\tSETPD\tDLOAD\t\t# LOW ENERGY TRAJECTORY RESULTED\n\t\t\t0\n\t\t\tCOGA\t\t# IN OVERFLOW OF TIME.\n\t\tSTORE\tCOGAMAX\t\t# THIS IS THE NEW BOUND.\n\t\tGOTO\n\t\t\tCOMMONLM\n\nSUFFCHEK\tDLOAD\tABS\n\t\t\tTERRLAMB\n\t\tPDDL\tDMP\t\t#\t\t\t\tPL AT 2D\n\t\t\tTDESIRED\n\t\t\tBEE17\n\t\tDAD\tDSU\t\t#\t\t\t\tPL AT 0D\n\t\t\tONEBIT\n\t\tBPL\tSETGO\n\t\t\tINITV\n\t\t\tSOLNSW\n\t\t\tINITV\n360LAMB\t\tSETPD\tSETGO\t\t# LAMBERT CANNOT HANDLE CSTH=1\n\t\t\t0\n\t\t\tSOLNSW\n\t\t\tRTNLAMB\n\nNOGUESS\t\tSSP\tDLOAD\n\t\t\tTWEEKIT\n\t\t\t20000\n\t\t\tCOGAMIN\n\t\tSR1\tPDDL\t\t#\t\t\t\tPL AT 2\n\t\t\tCOGAMAX\n\t\tSR1\tDAD\n\t\tSTADR\t\t\t#\t\t\t\tPL AT 0\n\t\tSTORE\tCOGA\n\t\tSTORE\tDCOGA\n\t\tGOTO\n# Page 1197\n\t\t\tLAMBLOOP\n\nLOLIM\t\tDLOAD\tGOTO\n\t\t\tCOGLOLIM\t# COGLOLIM=-.999511597\n\t\t\tMINCOGA\n\nINITV\t\tDLOAD\tNORM\n\t\t\tR1\n\t\t\tX1\n\t\tPDDL\tSR1\t\t#\t\t\t\tPL AT 2\n\t\t\tP\n\t\tDDV\t\t\t#\t\t\t\tPL AT 0\n\t\tSL*\tSQRT\n\t\t\t0 -4,1\n\t\tDMP\tSL1\n\t\t\tROOTMU\n\t\tPUSH\tDMP\t\t# 0D=VTAN (+7)\t\t\tPL AT 2\n\t\t\tCOGA\n\t\tSL\tVXSC\n\t\t\t5\n\t\t\tUR1\n\t\tPDDL\t\t\t# XCH WITH 0D\t\t\tPL AT 0,6\n\t\tVXSC\tVSL1\n\t\t\tUN\n\t\tVXV\tVAD\t\t#\t\t\t\tPL AT 0\n\t\t\tUR1\n\t\tVSL1\n\t\tSTORE\tVVEC\n\t\tSLOAD\tBZE\n\t\t\tVTARGTAG\n\t\t\tTARGETV\n\t\tGOTO\n\t\t\tRTNLAMB\n\nTARGETV\t\tDLOAD\tCALL\n\t\t\tMAGVEC2\n\t\t\tLAMENTER\n\t\tSTORE\tVTARGET\n\t\tGOTO\n\t\t\tRTNLAMB\n\n# Page 1198\nTIMERAD\t\tSTQ\tSETPD\t\t#\t\t\t\tPL AT 0\n\t\t\tRTNTR\n\t\t\t0\n\t\tBOV\n\t\t\t+1\n\t\tVLOAD\tPDVL\t\t#\t\t\t\tPL AT 6\n\t\t\tRVEC\n\t\t\tVVEC\n\t\tCALL\n\t\t\tPARAM\n\t\tBOV\tDLOAD\t\t#\t\t\t\tPL AT 0\n\t\t\tCOGAOVFL\n\t\t\tD1/32\n\t\tDSU\tDMP\n\t\t\tR1A\n\t\t\tP\n\t\tSQRT\tDMP\n\t\t\tCOGA\n\t\tSL4\tVXSC\n\t\t\tU2\n\t\tPDDL\tDSU\t\t#\t\t\t\tPL AT 6\n\t\t\tD1/64\n\t\t\tR1A\n\t\tVXSC\tVSU\t\t#\t\t\t\tPL AT 0\n\t\t\tUR1\n\t\tVSL4\tUNIT\n\t\tBOV\n\t\t\tCIRCULAR\n\t\tPDDL\tNORM\t\t# 0D=UNIT(ECC) (+3)\t\tPL AT 6\n\t\t\tRDESIRED\t# 35D=ECC (+3)\n\t\t\tX1\n\t\tPDDL\tDMP\t\t#\t\t\t\tPL AT 8\n\t\t\tR1\n\t\t\tP\n\t\tSL*\tDDV\t\t#\t\t\t\tPL AT 6\n\t\t\t0,1\n\t\tDSU\tDDV\n\t\t\tD1/16\n\t\t\t36D\t\t# 36D=ECC (+3)\n\t\tSTORE\tCOSF\n\t\tBOV\tDSQ\n\t\t\tBADR2\n\t\tBDSU\tBMN\n\t\t\tD1/4\n\t\t\tBADR2\n\t\tSQRT\tSIGN\n\t\t\tSGNRDOT\n\t\tCLEAR\n\t\t\tAPSESW\n# Page 1199\nTERMNVEC\tVXSC\tVSL1\n\t\t\tUN\n\t\tVXV\tPDVL\t\t# VXCH WITH 0D\t\t\tPL AT 0,6\n\t\t\t0D\n\t\tVXSC\tVAD\t\t#\t\t\t\tPL AT 0\n\t\t\tCOSF\n\t\tVSL1\tPUSH\t\t# 0D=U2\t\t\t\tPL AT 6\n\n\t\tDOT\tDDV\t\t# LIMITS RESULT TO POSMAX OR NEGMAX\n\t\t\tUR1\n\t\t\tDP1/4\n\t\tSR1\tBOV\t\t# SCALE BACK DOWN TO NORMAL\n\t\t\t+1\t\t# CLEAR OVFIND IF SET\n\t\tSTOVL\tCSTH\t\t# CSTH (+1)\n\t\t\tUR1\n\t\tVXV\tVSL1\n\t\tDOT\tSL1\n\t\t\tUN\n\t\tSTODL\tSNTH\t\t# SNTH (+1)\n\t\t\tP\n\t\tCALL\n\t\t\tGETX\n\t\tCLRGO\n\t\t\tSOLNSW\n\t\t\tCOMMNOUT\n\nCIRCULAR\tSETPD\tSETGO\n\t\t\t0\n\t\t\tSOLNSW\n\t\t\tABTCONIC\n\nBADR2\t\tDLOAD\tSIGN\n\t\t\tLODPHALF\n\t\t\tCOSF\n\t\tSTODL\tCOSF\n\t\t\tKEPZERO\n\t\tSETGO\n\t\t\tAPSESW\n\t\t\tTERMNVEC\n\n# Page 1200\nAPSIDES\t\tSTQ\tSETPD\t\t#\t\t\t\tPL AT 0\n\t\t\tRTNAPSE\n\t\t\t0D\n\t\tBOV\n\t\t\t+1\n\t\tVLOAD\tPDVL\t\t#\t\t\t\tPL AT 6\n\t\t\tRVEC\n\t\t\tVVEC\n\t\tCALL\n\t\t\tPARAM\n\t\tBOV\t\t\t#\t\t\t\tPL AT 0\n\t\t\tGETECC\nGETECC\t\tDMP\tSL4\n\t\t\tR1A\n\t\tBDSU\tSQRT\n\t\t\tD1/64\n\t\tSTORE\tECC\n\t\tDAD\tPDDL\t\t#\t\t\t\tPL AT 2\n\t\t\tD1/8\n\t\t\tR1\n\t\tDMP\tSL1\n\t\t\tP\n\t\tDDV\t\t\t#\t\t\t\tPL AT 0\n\t\tPDDL\tNORM\t\t# 0D=RP (+29 OR +27)\t\tPL AT 2\n\t\t\tR1A\n\t\t\tX1\n\t\tPDDL\tSL*\t\t#\t\t\t\tPL AT 4\n\t\t\tR1\n\t\t\t0 -5,1\n\t\tDDV\tDSU\t\t#\t\t\t\tPL AT 2,0\n\t\tBOV\tBMN\n\t\t\tINFINAPO\n\t\t\tINFINAPO\n\t\tGOTO\n\t\t\tRTNAPSE\nINFINAPO\tDLOAD\tGOTO\t\t# RETURNS WITH APOAPSIS IN MPAC, PERIAPSIS\n\t\t\tLDPOSMAX\n\t\t\tRTNAPSE\t\t# THAT PL IS AT 0.\n\n# Page 1201\nABTCONIC\tEXIT\n\t\tTC\tPOODOO\n\t\tOCT\t00607\n\n# Page 1202\nLDPOSMAX\tEQUALS \tLODPMAX\t\t# DPPOSMAX IN LOW MEMORY.\n\n# ERASABLE ASSIGNEMENTS\n\n# KEPLER SUBROUTINE\n\n# \tINPUT -\n# RRECT\t\tERASE \t+5\n# VRECT\t\tERASE\t+5\n# TAU.\t\tERASE\t+1\n# XKEP\t\tERASE\t+1\n# TC\t\tERASE\t+1\n# XPREV\t\tERASE\t+1\n1/MU\t\tEQUALS\t14D\nROOTMU\t\tEQUALS\t16D\n1/ROOTMU\tEQUALS\t18D\n\n# \tOUTPUT -\n# RCV\t\tERASE\t+5\n# VCV\t\tERASE\t+5\n# RC\t\tERASE\t+1\n# XPREV\t\tERASE\t+1\n\n# \tDEBRIS -\nALPHA\t\tEQUALS\t8D\nXMAX\t\tEQUALS\t10D\nXMIN\t\tEQUALS\t12D\nX\t\tEQUALS\t20D\nXI\t\tEQUALS\t24D\nS(XI)\t\tEQUALS\t26D\nXSQC(XI)\tEQUALS\t28D\nT\t\tEQUALS\t30D\nR1\t\tEQUALS\t32D\nKEPC1\t\tEQUALS\t34D\nKEPC2\t\tEQUALS\t36D\n# DELX\t\tERASE\t+1\n# DELT\t\tERASE\t+1\n# URRECT\tERASE\t+5\n# RCNORM\tERASE\t+1\n# XPREV\t\tEQUALS\tXKEP\n\n\n# LAMBERT SUBROUTINE\n#\n# \tINPUT -\n# R1VEC \tERASE\t+5\n# R2VEC\t\tERASE \t+5\n# TDESIRED\tERASE\t+1\n# GEOMSGN\tERASE\t+0\n# GUESSW\t\t\t# 0 IF COGA GUESS AVIABLE, 1 IF NOT\n# Page 1203\n# COGA\t\tERASE\t+1\t# INPUT ONLY IF GUESS IS ZERO.\n# NORMSW\t\t\t# 0 IF UN TO BE COMPUTED, 1 IF UN INPUT\n# UN\t\tERASE\t+5\t# ONLY USED IF NORMSW IS 1\n# VTARGTAG\tERASE\t+0\n# TWEEKIT\tEQUALS\t40D\t# ONLY USED IF GUESSW IS 0\n\n# \tOUTPUT -\n# VTARGET\tERASE\t+5\t# AVAILABLE ONLY IF VTARGTAG IS ZERO.\n# V1VEC\t\tEQUALS\tMPAC\n\n# \tDEBRIS -\n# RTNLAMB\tERASE\t+0\n# U2\t\tERASE\t+5\n# MAGVEC2\tERASE\t+1\n# UR1\t\tERASE\t+5\n# R1\t\tEQUALS\t31D\n# UN\t\tERASE\t+5\n# SNTH\t\tERASE\t+1\n# CSTH\t\tERASE\t+1\n# 1-CSTH\tERASE\t+1\n# CSTH-RHO\tERASE\t+1\nCOGAMAX\t\tEQUALS\t14D\t# CLOBBERS 1/MU\nCOGAMIN\t\tEQUALS\t8D\nDCOGA\t\tEQUALS\t12D\n# TWEEKIT\tEQUALS\t40D\n# P\t\tERASE\t+1\n# COGA\t\tERASE\t+1\n# R1A\t\tERASE\t+1\n# X\t\tEQUALS\t20D\n# XSQ\t\tEQUALS\t22D\n# XI\t\tEQUALS\t24D\n# S(XI)\t\tEQUALS\t26D\n# XSQC(XI)\tEQUALS\t28D\n# T\t\tEQUALS\t30D\n# KEPC1\t\tEQUALS\t34D\n# KEPC2\t\tEQUALS\t36D\n# SLOPESW\n# SOLNSW\n\n# \tOTHERS -\n# RVEC\t\tEQUALS\tR1VEC\n# VVEC\t\tERASE\t+5\n# COGAFLAG\n# RVSW\n# INFINFLG\n# APSESW\n# 360SW\n# RTNTT\t\tEQUALS\tRTNLAMB\n# ECC\t\tERASE\t+1\n# RTNTR\t\tEQUALS\tRTNLAMB\n# Page 1204\n# RTNAPSE\tEQUALS\tRTNLAMB\n# R2\t\tEQUALS\tMAGVEC2\nCOSF\t\tEQUALS\t24D\n# RTNPRM\tERASE\t+0\n# SCNRDOT\tERASE\t+0\n# RDESIRED\tERASE\t+1\n\n\n# ITERATOR SUBROUTINE\n# ORDERSW\nMAX\t\tEQUALS\t14D\t\t# CLOBBERS 1/MU\nMIN\t\tEQUALS\t8D\n# INDEP\t\tERASE\t+1\nDELINDEP\tEQUALS\t12D\nITERCTR\t\tEQUALS\t22D\nDEP\t\tEQUALS\t30D\n# DELDEP\tERASE\t+1\n# DEPREV\tERASE\t+1\nTWEEKIT\t\tEQUALS\t40D\n\n\n# MORE KEPLER\n# EPSILONT\tERASE\t+1\n\n\n# MORE LAMBERT\n# TERRLAMB\tEQUALS\tDELDEP\n# TPREV\t\tEQUALS\tDEPREV\n\n# EPSILONL\tEQUALS\tEPSILONT +2\t# DOUBLE PRECISION WORD\n"
  },
  {
    "path": "Luminary099/CONTROLLED_CONSTANTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tCONTROLLED_CONSTANTS.agc\n# Purpose:\tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n#\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim.lawton@gmail.com>\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t038-053\n# Mod history:\t2009-05-16\tJVL\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#    16:27 JULY 14, 1969\n\n# Page 38\n# DPS AND APS ENGINE PARAMETERS\n\n\t\tSETLOC\tP40S\n\t\tBANK\n\t\tCOUNT*\t$$/P40\n\n# *** THE ORDER OF THE FOLLOWING SIX CONSTANTS MUST NOT BE CHANGED ***\n\nFDPS\t\t2DEC\t4.3670 B-7\t\t# 9817.5 LBS FORCE IN NEWTONS\nMDOTDPS\t\t2DEC\t0.1480 B-3\t\t# 32.62 LBS/SEC IN KGS/CS\nDTDECAY\t\t2DEC\t-38\nFAPS\t\t2DEC\t1.5569 B-7\t\t# 3500 LBS FORCE IN NEWTONS\nMDOTAPS\t\t2DEC\t0.05135 B-3\t\t# 11.32 LBS/SEC IN KGS/CS\nATDECAY\t\t2DEC\t-10\n\n# ********************************************************************\n\nFRCS4\t\t2DEC\t0.17792 B-7\t\t# 400 LBS FORCE IN NEWTONS\nFRCS2\t\t2DEC\t0.08896 B-7\t\t# 200 LBS FORCE IN NEWTONS\n\n\t\tSETLOC\tP40S1\n\t\tBANK\n\t\tCOUNT*\t$$/P40\n\n# *** APS IMPULSE DATA FOR P42 ***************************************\n\nK1VAL\t\t2DEC\t124.55 B-23\t\t# 2800 LB-SEC\nK2VAL\t\t2DEC\t31.138 B-24\t\t# 700 LB-SEC\nK3VAL\t\t2DEC\t1.5569 B-10\t\t# FAPS (3500 LBS THRUST)\n\n# ********************************************************************\n\nS40.136\t\t2DEC\t.4671 B-9\t\t# .4671 M NEWTONS (DPS)\nS40.136_\t2DEC\t.4671 B+1\t\t# S40.136 SHIFTED LEFT 10.\n\n\t\tSETLOC\tASENT1\n\t\tBANK\n\t\tCOUNT*\t$$/P70\n\n(1/DV)A\t\t2DEC\t15.20 B-7\t\t# 2 SECONDS WORTH OF INITIAL ASCENT\n# Page 39\n\t\t\t\t\t\t# STAGE ACCELERATION -- INVERTED (M/CS)\n\t\t\t\t\t\t# 1) PREDICATED ON A LIFTOFF MASS OF\n\t\t\t\t\t\t#    4869.9 KG (SNA-8-D-027 7/11/68)\n\t\t\t\t\t\t# 2) PREDICATED ON A CONTRIBUTION TO VEH-\n\t\t\t\t\t\t#    ICLE ACCELERATION FROM RCS THRUSTERS\n\t\t\t\t\t\t#    EQUIV. TO 1 JET ON CONTINUOUSLY.\n\nK(1/DV)\t\t2DEC\t436.70 B-9\t\t# DPS ENGINE THRUST IN NEWTONS / 100 CS.\n\n(AT)A\t\t2DEC\t3.2883 E-4 B9\t\t# INITIAL ASC. STG. ACCELERATION ** M/CS.\n\t\t\t\t\t\t# ASSUMPTIONS SAME AS FOR (1/DV)A.\n(TBUP)A\t\t2DEC\t91902 B-17\t\t# ESTIMATED BURN-UP TIME OF THE ASCENT STG.\n\t\t\t\t\t\t# ASSUMPTIONS SAME AS FOR (1/DV)A WITH THE\n\t\t\t\t\t\t# ADDITIONAL ASSUMPTION THAT NET MASS-FLOW\n\t\t\t\t\t\t# RATE = 5.299 KG/SEC = 5.135 (APS) +\n\t\t\t\t\t\t# .164 (1 RCS JET).\n\t\tSETLOC\tASENT\n\t\tBANK\n\t\tCOUNT*\t$$/ASENT\nAT/RCS\t\t2DEC\t.0000785 B+10\t\t# 4 JETS IN A DRY LEM\n\n\t\tSETLOC\tSERVICES\n\t\tBANK\n\t\tCOUNT*\t$$/SERV\n\n# *** THE ORDER OF THE FOLLOWING TWO CONSTANTS MUST NOT BE CHANGED *******\n\nAPSVEX\t\tDEC\t-3030 E-2 B-5\t\t# 9942 FT/SEC IN M/CS.\nDPSVEX\t\tDEC*\t-2.95588868 E+1 B-05*\t# VE (DPS) +2.95588868E+ 3\n\n# ************************************************************************\n\n\t\tSETLOC\tF2DPS*31\n\t\tBANK\n\t\tCOUNT*\t$$/F2DPS\n\nTRIMACCL\t2DEC*\t+3.50132708 E-5 B+08*\t# A (T) +3.50132708E- 1\n\n# Page 40\n# THROTTLING AND THRUST DETECTION PARAMETERS\n\n\t\tSETLOC\tP40S\n\t\tBANK\n\t\tCOUNT*\t$$/P40\n\nTHRESH1\t\tDEC\t24\nTHRESH3\t\tDEC\t12\nHIRTHROT\t=\tBIT13\n\n\t\tSETLOC\tFFTAG5\n\t\tBANK\n\t\tCOUNT*\t$$/P40\n\nTHRESH2\t\tDEC\t308\n\n\t\tSETLOC\tFTHROT\n\t\tBANK\n\t\tCOUNT*\t$$/THROT\n\nFMAXODD\t\tDEC\t+3841\t\t\t# FSAT \t\t+4.81454413 E+4\nFMAXPOS\t\tDEC\t+3467\t\t\t# FMAX \t\t+4.34546769 E+4\nTHROTLAG\tDEC\t+20\t\t\t# TAU (TH)\t+1.99999999 E-1\nSCALEFAC\t2DEC*\t+7.97959872 E+2 B-16*\t# BITPERF \t+7.97959872 E-2\n\n\t\tSETLOC\tF2DPS*32\n\t\tBANK\n\t\tCOUNT*\t$$/F2DPS\n\nDPSTHRSH\tDEC\t36\t\t\t# (THRESH1 + THRESH3 FOR P63)\n\n# Page 41\n# LM HARDWARE-RELATED PARAMETERS\n\n\t\tSETLOC\tRADARUPT\n\t\tBANK\n\t\tCOUNT*\t$$/RRUPT\n\nLVELBIAS\tDEC\t-12288\t\t\t# LANDING RADAR BIAS FOR 153.6 KC.\nRDOTBIAS\t2DEC\t17000\t\t\t# BIAS COUNT FOR RR RANGE RATE.\n\n\t\tSETLOC\tLRS22\n\t\tBANK\n\t\tCOUNT*\t$$/LRS22\n\nRDOTCONV\t2DEC\t-.0019135344 B7\t\t# CONVERTS RR RDOT READING TO M/CS AT 2(7)\nRANGCONV\t2DEC\t2.859024 B-3\t\t# CONVERTS RR RANGE READING TO M. AT 2(-29\n\n\t\tSETLOC\tSERVICES\n\t\tBANK\n\t\tCOUNT*\t$$/SERV\n\nHBEAMANT\t2DEC\t-.4687018041\t\t# RANGE BEAM IN LR ANTENNA COORDINATES.\n\t\t2DEC\t0\n\t\t2DEC\t-.1741224271\n\nHSCAL\t\t2DEC\t-.3288792\t\t# SCALES 1.079 FT/BIT TO 2(22)M.\n\n# ***** THE SEQUENCE OF THE FOLLOWING CONSTANTS MUST BE PRESERVED *********\n\nVZSCAL\t\t2DEC\t+.5410829105\t\t# SCALES .8668 FT/SEC/BIT TO 2(18) M/CS.\nVYSCAL\t\t2DEC\t+.7565672446\t\t# SCALES 1.212 FT/SEC/BIT TO 2(18) M/CS.\nVXSCAL\t\t2DEC\t-.4020043770\t\t# SCALES -.644 FT/SEC/BIT TO 2(18) M/CS.\n\n# *************************************************************************\n\nKPIP\t\tDEC\t.0512\t\t\t# SCALES DELV TO UNITS OF 2(5) M/CS.\nKPIP1\t\t2DEC\t.0128\t\t\t# SCALES DELV TO UNITS OF 2(7) M/CS.\nKPIP2\t\t2DEC\t.0064\t\t\t# SCALES DELV TO UNITS OF 2(8) M/CS.\n\n# Page 42\nALTCONV\t\t2DEC\t1.399078846 B-4\t\t# CONVERTS M*2(-24) TO BIT UNITS *2(-28).\nARCONV1\t\t2DEC\t656.167979 B-10\t\t# CONV. ALTRATE COMP. TO BIT UNITS<\n\n\t\tSETLOC\tR10\n\t\tBANK\n\t\tCOUNT*\t$$/R10\n\nARCONV\t\tOCT\t24402\t\t\t# 656.1679798B-10 CONV ALTRATE TO BIT UNIT\nARTOA\t\tDEC\t.1066098 B-1\t\t# .25/2.345 B-1 4X/SEC CYCLE RATE.\nARTOA2\t\tDEC\t.0021322 B8\t\t# (.5)/(2.345)(100)\nVELCONV\t\tOCT\t22316\t\t\t# 588.914 B-10 CONV VEL. TO BIT UNITS.\nKPIP1(5)\tDEC\t.0512\t\t\t# SCALES DELV TO M/CS*2(-5).\nMAXVBITS\tOCT\t00547\t\t\t# MAX. DISPLAYED VELOCITY 199.9989 FT/SEC.\n\n\t\tSETLOC\tDAPS3\n\t\tBANK\n\t\tCOUNT*\t$$/DAPAO\n\nTORKJET1\tDEC\t.03757\t\t\t# 550 / .2 SCALED AT (+16) 64 / 180\n\n# Page 43\n# PARAMETERS RELATING TO MASS, INERTIA, AND VEHICLE DIMENSIONS\n\n\t\tSETLOC\tFRANDRES\n\t\tBANK\n\t\tCOUNT*\t$$/START\n\nFULLAPS\t\tDEC\t5050 B-16\t\t# NOMINAL FULL ASCENT MASS -- 2(16) KG.\n\n\t\tSETLOC\tLOADDAP1\n\t\tBANK\n\t\tCOUNT*\t$$/R03\n\nMINLMD\t\tDEC\t-2850 B-16\t\t# MIN. DESCENT STAGE MASS -- 2(16) KG.\nMINMINLM\tDEC\t-2200 B-16\t\t# MIN ASCENT STAGE MASS -- 2(16) KG.\nMINCSM\t\t=\tBIT11\t\t\t# MIN CSM MASS (OK FOR 1/ACCS) = 9050 LB\n\n\t\tSETLOC\tDAPS3\n\t\tBANK\n\t\tCOUNT*\t$$/DAPAD\n\nLOASCENT\tDEC\t2200 B-16\t\t# MIN ASCENT LEM MASS -- 2(16) KG.\nHIDESCNT\tDEC\t15300 B-16\t\t# MAX DESCENT LEM MASS -- 2(16) KG.\nLODESCNT\tDEC\t1750 B-16\t\t# MIN DESCENT STAGE (ALONE) -- 2(16) KG.\n\n# Page 44\n# PHYSICAL CONSTANTS ( TIME - INVARIANT )\n\n\t\tSETLOC\tIMU2\n\t\tBANK\n\t\tCOUNT*\t$$/P07\n\nOMEG/MS\t\t2DEC\t.24339048\n\n\t\tSETLOC\tR30LOC\n\t\tBANK\n\t\tCOUNT*\t$$/R30\n\n# *** THE ORDER OF THE FOLLOWING TWO CONSTANTS MUST BE PRESERVED ***********\n\n1/RTMUM\t\t2DEC*\t.45162595 E-4 B14*\n1/RTMUE\t\t2DEC*\t.50087529 E-5 B17*\n\n# **************************************************************************\n\n\t\tSETLOC\tP40S1\n\t\tBANK\n\t\tCOUNT*\t$$/S40.9\n\nEARTHMU\t\t2DEC*\t-3.986032 E10 B-36*\t# M(3)/CS(2)\n\n\t\tSETLOC\tASENT1\n\t\tBANK\n\t\tCOUNT*\t$$/P12\n\nMUM(-37)\t2DEC*\t4.9027780 E8 B-37*\nMOONRATE\t2DEC*\t.26616994890062991 E-7 B+19*\t# RAD/CS.\n\n\t\tSETLOC\tSERVICES\n\t\tBANK\n\t\tCOUNT*\t$$/SERV\n\n# *** THE ORDER OF THE FOLLOWING TWO CONSTANTS MUST BE PRESERVED ***********\n\n-MUDT\t\t2DEC*\t-7.9720645 E+12 B-44*\n-MUDT1\t\t2DEC*\t-9.8055560 E+10 B-44*\n\n# **************************************************************************\n\n-MUDTMUN\t2DEC*\t-9.8055560 E+10 B-38*\nRESQ\t\t2DEC*\t40.6809913 E12 B-58*\n\n# Page 45\n20J\t\t2DEC\t3.24692010 E-2\n2J\t\t2DEC\t3.24692010 E-3\n\n\t\tSETLOC\tP50S1\n\t\tBANK\n\t\tCOUNT*\t$$/LOSAM\n\nRSUBEM\t\t2DEC\t384402000 B-29\nRSUBM\t\t2DEC\t1738090 B-29\nRSUBE\t\t2DEC\t6378166 B-29\nROE\t\t2DEC\t.00257125\n\n\t\tSETLOC\tCONICS1\n\t\tBANK\n\t\tCOUNT*\t$$/LT-LG\n\nERAD\t\t2DEC\t6373338 B-29\t\t# PAD RADIUS\n504RM\t\t2DEC\t1738090 B-29\t\t# METERS B-29 (EQUATORIAL MOON RADIUS)\n\n\t\tSETLOC\tCONICS1\n\t\tBANK\n\t\tCOUNT*\t$$/CONIC\n\n# *** THE ORDER OF THE FOLLOWING CONSTANTS MUST BE PRESERVED **************\n\nMUTABLE\t\t2DEC*\t3.986032 E10 B-36*\t# MUE\n\t\t2DEC*\t.25087606 E-10 B+34*\t# 1/MUE\n\t\t2DEC*\t1.99650495 E5 B-18*\t# SQRT(MUE)\n\t\t2DEC*\t.50087529 E-5 B+17*\t# 1/SQRT(MUE)\n\t\t2DEC*\t4.902778 E8 B-30*\t# MUM\n\t\t2DEC*\t.203966 E-8 B+28*\t# 1/MUM\n\t\t2DEC*\t2.21422176 E4 B-15*\t# SQRT(MUM)\n\t\t2DEC*\t.45162595 E-4 B+14*\t# 1/SQRT(MUM)\n\n# *************************************************************************\n\n# Page 46\n\t\tSETLOC\tINTINIT\n\t\tBANK\n\t\tCOUNT*\t$$/INTIN\n\nOMEGMOON\t2DEC*\t2.66169947 E-8 B+23*\n\n\t\tSETLOC\tORBITAL2\n\t\tBANK\n\t\tCOUNT*\t$$/ORBIT\n\n# *** THE ORDER OF THE FOLLOWING CONSTANTS MUST NOT BE CHANGED ************\n\n\t\t2DEC*\t1.32715445 E16 B-54*\nMUM\t\t2DEC*\t4.9027780 E8 B-30*\nMUEARTH\t\t2DEC*\t3.986032 E10 B-36*\n\t\t2DEC \t0\nJ4REQ/J3\t2DEC*\t.4991607391 E7 B-26*\n\t\t2DEC\t-176236.02 B-25\n2J3RE/J2\t2DEC*\t-.1355426363 E5 B-27*\n\t\t2DEC*\t.3067493316 E18 B-60*\nJ2REQSQ\t\t2DEC*\t1.75501139 E21 B-72*\n3J22R2MU\t2DEC*\t9.20479048 E16 B-58*\n\n# *************************************************************************\n\n\t\tSETLOC\tTOF-FF1\n\t\tBANK\n\t\tCOUNT*\t$$/TFF\n\n1/RTMU\t\t2DEC*\t.5005750271 E-5 B17*\t# MODIFIED EARTH MU\n\n\t\tSETLOC\tSBAND\n\t\tBANK\n\t\tCOUNT*\t$$/R05\n\nREMDIST\t\t2DEC\t384402000 B-29\t\t# MEAN DISTANCE BETWEEN EARTH AND MOON.\n\n# Page 47\n# PHYSICAL CONSTANTS (TIME - VARIANT)\n\n\t\tSETLOC\tSTARTAB\n\t\tBANK\n\t\tCOUNT*\t$$/STARS\n\n\t\t2DEC\t+.8342971408 B-1\t# STAR 37\tX\n\t\t2DEC\t-.2392481515 B-1\t# STAR 37\tY\n\t\t2DEC\t-.4966976975 B-1\t# STAR 37\tZ\n\n\t\t2DEC\t+.8139832631 B-1\t# STAR 36\tX\n\t\t2DEC\t-.5557243189 B-1\t# STAR 36\tY\n\t\t2DEC\t+.1691204557 B-1\t# STAR 36\tZ\n\n\t\t2DEC\t+.4541086270 B-1\t# STAR 35\tX\n\t\t2DEC\t-.5392368197 B-1\t# STAR 35\tY\n\t\t2DEC\t+.7092312789 B-1\t# STAR 35\tZ\n\n\t\t2DEC\t+.3201817378 B-1\t# STAR 34\tX\n\t\t2DEC\t-.4436021946 B-1\t# STAR 34\tY\n\t\t2DEC\t-.8370786986 B-1\t# STAR 34\tZ\n\n\t\t2DEC\t+.5520184464 B-1\t# STAR 33\tX\n\t\t2DEC\t-.7933187400 B-1\t# STAR 33 \tY\n\t\t2DEC\t-.2567508745 B-1\t# STAR 33\tZ\n\n\t\t2DEC\t+.4537196908 B-1\t# STAR 32\tX\n\t\t2DEC\t-.8779508801 B-1\t# STAR 32\tY\n\t\t2DEC\t+.1527766153 B-1\t# STAR 32\tZ\n\n\t\t2DEC\t+.2069525789 B-1\t# STAR 31\tX\n\t\t2DEC\t-.8719885748 B-1\t# STAR 31\tY\n\t\t2DEC\t-.4436288486 B-1\t# STAR 31\tZ\n\n\t\t2DEC\t+.1217293692 B-1\t# STAR 30\tX\n\t\t2DEC\t-.7702732847 B-1\t# STAR 30 \tY\n# Page 48\n\t\t2DEC\t+.6259880410 B-1\t# STAR 30\tZ\n\n\t\t2DEC\t-.1124304773 B-1\t# STAR 29\tX\n\t\t2DEC\t-.9694934200 B-1\t# STAR 29\tY\n\t\t2DEC\t+.2178116072 B-1\t# STAR 29\tZ\n\n\t\t2DEC\t-.1146237858 B-1\t# STAR 28\tX\n\t\t2DEC\t-.3399692557 B-1\t# STAR 28 \tY\n\t\t2DEC\t-.9334250333 B-1\t# STAR 28\tZ\n\n\t\t2DEC\t-.3516499609 B-1\t# STAR 27\tX\n\t\t2DEC\t-.8240752703 B-1\t# STAR 27\tY\n\t\t2DEC\t-.4441196390 B-1\t# STAR 27\tZ\n\n\t\t2DEC\t-.5326876930 B-1\t# STAR 26\tX\n\t\t2DEC\t-.7160644554 B-1\t# STAR 26\tY\n\t\t2DEC\t+.4511047742 B-1\t# STAR 26\tZ\n\n\t\t2DEC\t-.7861763936 B-1\t# STAR 25\tX\n\t\t2DEC\t-.5217996305 B-1\t# STAR 25\tY\n\t\t2DEC\t+.3311371675 B-1\t# STAR 25\tZ\n\n\t\t2DEC\t-.6898393233 B-1\t# STAR 24\tX\n\t\t2DEC\t-.4182330640 B-1\t# STAR 24\tY\n\t\t2DEC\t-.5909338474 B-1\t# STAR 24\tZ\n\n\t\t2DEC\t-.5812035376 B-1\t# STAR 23\tX\n\t\t2DEC\t-.2909171294 B-1\t# STAR 23\tY\n\t\t2DEC\t+.7599800468 B-1\t# STAR 23 \tZ\n\n\t\t2DEC\t-.9170097662 B-1\t# STAR 22\tX\n\t\t2DEC\t-.3502146628 B-1\t# STAR 22\tY\n\t\t2DEC\t-.1908999176 B-1\t# STAR 22\tZ\n\n# Page 49\n\t\t2DEC\t-.4523440203 B-1\t# STAR 21\tX\n\t\t2DEC\t-.0493710140 B-1\t# STAR 21\tY\n\t\t2DEC\t-.8904759346 B-1\t# STAR 21\tZ\n\n\t\t2DEC\t-.9525211695 B-1\t# STAR 20\tX\n\t\t2DEC\t-.0593434796 B-1\t# STAR 20\tY\n\t\t2DEC\t-.2986331746 B-1\t# STAR 20\tZ\n\n\t\t2DEC\t-.9656605484 B-1\t# STAR 19\tX\n\t\t2DEC\t+.0525933156 B-1\t# STAR 19\tY\n\t\t2DEC\t+.2544280809 B-1\t# STAR 19\tZ\n\n\t\t2DEC\t-.8608205219 B-1\t# STAR 18\tX\n\t\t2DEC\t+.4636213989 B-1\t# STAR 18\tY\n\t\t2DEC\t+.2098647835 B-1\t# STAR 18\tZ\n\n\t\t2DEC\t-.7742591356 B-1\t# STAR 17\tX\n\t\t2DEC\t+.6152504197 B-1\t# STAR 17\tY\n\t\t2DEC\t-.1482892839 B-1\t# STAR 17\tZ\n\n\t\t2DEC\t-.4657947941 B-1\t# STAR 16\tX\n\t\t2DEC\t+.4774785033 B-1\t# STAR 16\tY\n\t\t2DEC\t+.7450164351 B-1\t# STAR 16\tZ\n\n\t\t2DEC\t-.3612508532 B-1\t# STAR 15\tX\n\t\t2DEC\t+.5747270840 B-1\t# STAR 15\tY\n\t\t2DEC\t-.7342932655 B-1\t# STAR 15\tZ\n\n\t\t2DEC\t-.4118589524 B-1\t# STAR 14 \tX\n\t\t2DEC\t+.9065485360 B-1\t# STAR 14\tY\n\t\t2DEC\t+.0924226975 B-1\t# STAR 14\tZ\n\n\t\t2DEC\t-.1820751783 B-1\t# STAR 13\tX\n# Page 50\n\t\t2DEC\t+.9404899869 B-1\t# STAR 13\tY\n\t\t2DEC\t-.2869271926 B-1\t# STAR 13\tZ\n\n\t\t2DEC\t-.0614937230 B-1\t# STAR 12 \tX\n\t\t2DEC\t+.6031563286 B-1\t# STAR 12\tY\n\t\t2DEC\t-.7952489957 B-1\t# STAR 12\tZ\n\n\t\t2DEC\t+.1371725575 B-1\t# STAR 11\tX\n\t\t2DEC\t+.6813721061 B-1\t# STAR 11\tY\n\t\t2DEC\t+.7189685267 B-1\t# STAR 11\tZ\n\n\t\t2DEC\t+.2011399589 B-1\t# STAR 10\tX\n\t\t2DEC\t+.9690337941 B-1\t# STAR 10\tY\n\t\t2DEC\t-.1432348512 B-1\t# STAR 10\tZ\n\n\t\t2DEC\t+.3507315038 B-1\t# STAR 9\tX\n\t\t2DEC\t+.8926333307 B-1\t# STAR 9\tY\n\t\t2DEC\t+.2831839492 B-1\t# STAR 9\tZ\n\n\t\t2DEC\t+.4105636020 B-1\t# STAR 8\tX\n\t\t2DEC\t+.4988110001 B-1\t# STAR 8\tY\n\t\t2DEC\t+.7632988371 B-1\t# STAR 8\tZ\n\n\t\t2DEC \t+.7032235469 B-1\t# STAR 7\tX\n\t\t2DEC\t+.7075846047 B-1\t# STAR 7\tY\n\t\t2DEC\t+.0692868685 B-1\t# STAR 7\tZ\n\n\t\t2DEC\t+.5450107404 B-1\t# STAR 6\tX\n\t\t2DEC\t+.5314955466 B-1\t# STAR 6\tY\n\t\t2DEC\t-.6484410356 B-1\t# STAR 6\tZ\n\n\t\t2DEC\t+.0130968840 B-1\t# STAR 5\tX\n\t\t2DEC\t+.0078062795 B-1\t# STAR 5\tY\n# Page 51\n\t\t2DEC\t+.9998837600 B-1\t# STAR 5\tZ\n\n\t\t2DEC\t+.4917678276 B-1\t# STAR 4\tX\n\t\t2DEC\t+.2204887125 B-1\t# STAR 4\tY\n\t\t2DEC\t-.8423473935 B-1\t# STAR 4 \tZ\n\n\t\t2DEC\t+.4775639450 B-1\t# STAR 3\tX\n\t\t2DEC\t+.1166004340 B-1\t# STAR 3\tY\n\t\t2DEC\t+.8708254803 B-1\t# STAR 3 \tZ\n\n\t\t2DEC\t+.9342640400 B-1\t# STAR 2\tX\n\t\t2DEC\t+.1735073142 B-1\t# STAR 2\tY\n\t\t2DEC\t-.3115219339 B-1\t# STAR 2\tZ\n\n\t\t2DEC\t+.8748658918 B-1\t# STAR 1\tX\n\t\t2DEC\t+.0260879174 B-1\t# STAR 1\tY\n\t\t2DEC\t+.4836621670 B-1\t# STAR 1\tZ\n\nCATLOG\t\tDEC\t6970\n\n# *******************************************************************************\n\n\t\tSETLOC\tEPHEM1\n\t\tBANK\n\t\tCOUNT*\t$$/EPHEM\n\nKONMAT\t\t2DEC\t1.0 B-1\t\t\t# ********************\n\t\t2DEC\t0\t\t\t#\t\t     *\n\t\t2DEC\t0\t\t\t#\t\t     *\n\t\t2DEC\t0\t\t\t#\t\t     *\n\t\t2DEC\t.91745 B-1\t\t# K1 COS(OBL)\t     *\n\t\t2DEC\t-.03571 B-1\t\t# K2 SIN(OBL)SIN(IM) *\n\t\t2DEC\t0\t\t\t#\t\t     *\n\t\t2DEC\t.39784 B-1\t\t# K3 SIN(OBL)\t     *\n# Page 52\n\t\t2DEC\t.082354 B-1\t\t# K4 COS(OBL)SIN(IM) *\nCSTODAY\t\t2DEC\t8640000 B-33\t\t# \t\t     * NOTE:          *\nRCB-13\t\tOCT\t00002\t\t\t#\t\t     * TABLES CONTAIN *\n\t\tOCT\t00000\t\t\t#\t\t     * CONSTANTS FOR  *\nRATESP\t\t2DEC\t.03660098 B+4\t\t# LOMR\t\t     * 1969 - 1970    *\n\t\t2DEC\t.00273779 B+4\t\t# LOSR\n\t\t2DEC\t-.00014719 B+4\t\t# LONR\n\t\t2DEC\t.815282336\t\t# LOMO\n\t\t2DEC\t.274674910\t\t# LOSO\n\t\t2DEC\t.986209499\t\t# LONO\nVAL67\t\t2DEC*\t.01726666666 B+1*\t# AMOD\n\t\t2DEC\t.530784445\t\t# AARG\n\t\t2DEC\t.036291712 B+1\t\t# 1/27\n\t\t2DEC\t.003505277 B+1\t\t# BMOD\n\t\t2DEC\t.585365625 \t\t# BARG\n\t\t2DEC\t.03125 B+1\t\t# 1/32\n\t\t2DEC\t.005325277 B+1\t\t# CMOD\n\t\t2DEC\t-.01106341036\t\t# CARG\n\t\t2DEC\t.002737925 B+1\t\t# 1/365\n\n# ********************************************************************************\n\n\t\tSETLOC\tPLANTIN2\n\t\tBANK\n\t\tCOUNT*\t$$/LUROT\n\nCOSI\t\t2DEC\t.99964173 B-1\t\t# COS (5521.5 SEC.) B-1\nSINI\t\t2DEC\t.02676579 B-1\t\t# SIN (5521.5 SEC.) B-1\nNODDOT\t\t2DEC\t-.457335121 E-2\t\t# REV/CSEC B+28 = -1.07047011 E-8 RAD/SEC\nFDOT\t\t2DEC\t.570863327\t\t# REV/CSEC B+27 =  2.67240410 E-6 RAD/SEC\n# Page 53\nBDOT\t\t2DEC\t-3.07500686 E-8\t\t# REV/CSEC B+28 = -7.19757301 E-14 RAD/SEC\nNODIO\t\t2DEC\t.986209434\t\t# REVS B-D\t= 6.19653663041 RAD\nFSUBO\t\t2DEC\t.829090536\t\t# REVS B-D\t= 5.20932947829 RAD\nBSUBO\t\t2DEC\t.0651201393\t\t# REVS B-D\t= 0.40916190299 RAD\nWEARTH\t\t2DEC\t.973561595\t\t# REV/CSEC B+23\t= 7.29211494 E-5 RAD/SEC\n\n"
  },
  {
    "path": "Luminary099/DAPIDLER_PROGRAM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tDAPIDLER_PROGRAM.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1410-1420\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1410\n# THE DAPIDLER PROGRAM IS STARTED BY FRESH START AND RESTART.\t\t  THE DAPIDLER PROGRAM IS DONE 10 TIMES\n# PER SECOND UNTIL THE ASTRONAUT DESIRES THE DAP TO WAKE UP, AND THE IMU AND CDUS ARE READY FOR USE BY THE DAP.\n# THE NECESSARY INITIALIZATION OF THE DAP IS DONE BY THE DAPIDLER PROGRAM.\n\t\tBANK\t16\n\t\tSETLOC\tDAPS1\n\t\tBANK\n\n\t\tEBANK=\tAOSQ\n\n\t\tCOUNT*\t$$/DAPID\n\nCHEKBITS\tEXTEND\n\t\tREAD\tCHAN31\t\t# IF BOTH BIT13 AND BIT14 ARE ONE, THEN\n\t\tCOM\t\t\t# THE MODE SELECT SWITCH IS IN THE OFF\n\t\tMASK\tBIT13-14\t# POSITION, AND SO THE DAP SHOULD BE OFF,\n\t\tEXTEND\t\t\t# WITH NO ATTITUDE ERROR DISPLAY.\n\t\tBZF\tMOREIDLE\n\n\t\tCS\tIMODES33\n\t\tMASK\tBIT6\n\t\tCCS\tA\n\t\tTCF\tJUMPDSP\n\t\tCS\tRCSFLAGS\t# IMU NOT USABLE.  SET UP INITIALIZATION\n\t\tMASK\tBIT3\t\t# FLAG FOR ATT ERROR DISPLAY ROUTINE.\n\t\tADS\tRCSFLAGS\n\t\tTCF\tSHUTDOWN\n\nCHEKMORE\tCAF\tBIT10\t\t# BIT 10 OF 30 IS PGNCS CONTROL OF S/C\n\t\tEXTEND\n\t\tRAND\tCHAN30\t\t# BITS IN 30 ARE INVERTED\n\t\tCCS\tA\n\t\tTCF\tMOREIDLE\n\n\t\tRETURN\n\n# Page 1411\n# DAPIDLER ENTRY.\n\nDAPIDLER\tLXCH\tBANKRUPT\t# INTERRUPT LEAD INS (CONTINUED)\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tCA\tRCSFLAGS\n\t\tMASK\tBIT13\n\t\tCCS\tA\t\t# CHECK IF 1/ACCJOB HAS BEEN SET UP SINCE\n\t\tTCF\tCHECKUP\t\t# THE LAST FRESH START OR RESTART.\n\t\tCA\tBIT13\n\t\tADS\tRCSFLAGS\t# BIT 13 IS 1.\n\t\tCAF\tPRIO27\n\t\tTC\tNOVAC\t\t# SET UP JOB TO DO A LITTLE INITIALIZATION\n\t\tEBANK=\tAOSQ\t\t#   AND EXECUTE 1/ACCS.\n\t\t2CADR\t1/ACCSET\t# (WILL BRANCH TO MOREIDLE ON ACCSOKAY)\n\nCHECKUP\t\tTC\tCHEKBITS\t# CHECK TO SEE IF LM DAP IS TO GO ON AND\n\t\t\t\t\t#   DO ERROR DISPLAY.\n\n\t\tCAE\tDAPBOOLS\t# IF 1/ACCS HAS NOT BEEN COMPLETED, IDLE.\n\t\tMASK\tACCSOKAY\t#   NOTE: ONLY FRESH START AND RESTART\n\t\tEXTEND\t\t\t# \t  KNOCK THIS BIT DOWN.\n\t\tBZF\tMOREIDLE\n\nSTARTDAP\tTC\tIBNKCALL\t# ZERO ATTITUDE ERROR AND DESIRED RATES.\n\t\tFCADR\tZATTEROR\n\t\tCAF\tZERO\t\t# ********** INITIALIZE: **********\n\t\tTS\tTJP\n\t\tTS\tTJU\n\t\tTS\tTJV\n\t\tTS\tOMEGAP\t\t# RATES IN BODY (PILOT) COORDINATES.\n\t\tTS\tOMEGAQ\n\t\tTS\tOMEGAR\n\t\tTS\tTRAPEDP\n\t\tTS\tTRAPEDQ\n\t\tTS\tTRAPEDR\n\t\tTS\tAOSQ\t\t# OFFSET ACCELERATION ESTIMATES.\n\t\tTS\tAOSQ +1\n\t\tTS\tAOSR\n\t\tTS\tAOSR +1\n\t\tTS\tALPHAQ\t\t# COPIES OF OFFSET ESTIMATES FOR DOWNLIST.\n\t\tTS\tALPHAR\n\t\tTS\tNEGUQ\n\t\tTS\tNEGUR\n\t\tTS\tAOSQTERM\t# QRAXIS RATE DERIVATION TERMS AND KALMAN\n\t\tTS\tAOSRTERM\t# FILTER INITIALIZATION TERMS.\n\t\tTS\tQACCDOT\t\t# DESCENT ACCELERATION DERIVATIVE EST.\n\t\tTS\tRACCDOT\n# Page 1412\n\t\tTS\tALLOWGTS\t# AOSTASK FLAG FOR QRAXIS RCS CONTROL USE.\n\t\tTS\tCOTROLER\t# DO TRYGTS ON FIRST PASS (WILL GO TO RCS)\n\t\tTS\tINGTS\t\t# RECOGNIZE FIRST GTS PASS AS SUCH.\n\t\tTS\tQGIMTIMR\t# STOP GIMBAL DRIVES.  (PROBABLY WOULD BE\n\t\tTS\tRGIMTIMR\t#   GOOD ENOUGH JUST TO INACTIVATE TIMERS)\n\t\tTS\tOLDPMIN\t\t# MINIMUM IMPULSE MODE ERASABLES\n\t\tTS\tOLDQRMIN\n\t\tTS\tPJETCTR\t\t# INITIALIZE DOCKED JET INHIBITION\n\t\tTS\tUJETCTR\t\t# COUNTERS\n\t\tTS\tVJETCTR\nCALLGMBL\tEQUALS\tBIT5\t\t# RCSFLAGS INITIALIZATION.\n\t\tCS\tMANFLAG\n\t\tMASK\tRCSFLAGS\t# NEGUQ(R) HAVE BEEN GENERATED.\n\t\tTS\tRCSFLAGS\n\n# SET UP \"OLD\" MEASURED CDU ANGLES:\n\n\t\tEXTEND\n\t\tDCA\tCDUX\t\t# OLDXFORP AND OLDYFORP\n\t\tDXCH\tOLDXFORP\n\t\tCA\tCDUZ\n\t\tTS\tOLDZFORQ\n\t\tCS\tRCSFLAGS\n\t\tMASK\tBIT12\n\t\tADS\tRCSFLAGS\t# BIT 12 SET TO 1.\n\t\tCA\tFOUR\n\t\tTS\tSKIPU\n\t\tTS\tSKIPV\n\t\tCA\tPOSMAX\n\t\tTS\tTIME6\n\t\tTS\tT6NEXT\n\t\tTS\tT6FURTHA\n\t\tCA\tZERO\n\t\tTS\tT6NEXT +1\n\t\tTS\tT6FURTHA +1\n\t\tTS\tNXT6ADR\n\t\tTS\tNEXTP\n\t\tTS\tNEXTU\n\t\tTS\tNEXTV\n\t\tCS\tTEN\n\t\tTS\tDAPZRUPT\t# JASK NOT IN PROGRESS, INITIALIZE NEG.\n\t\tCA\tTWO\n\t\tTS\tNPTRAPS\n\t\tTS\tNQTRAPS\n\t\tTS\tNRTRAPS\n\t\tEXTEND\n\t\tDCA\tPAXADIDL\n\t\tDXCH\tT5ADR\nSETTIME5\tCAF\tMS100\n\t\tTS\tTIME5\n# Page 1413\n\t\tTCF\tRESUME\n\t\tEBANK=\tAOSQ\nIDLERADR\t2CADR\tDAPIDLER\n\nMOREIDLE\tTC\tIBNKCALL\t# CALCULATE Q,R-AXES ATTITUDE ERRORS.\n\t\tCADR\tQERRCALC\n\n\t\tTC\tIBNKCALL\n\t\tCADR\tCALCPERR\t# CALCULATE P AXIS ATTITUDE ERRORS.\n\nSHUTDOWN\tEXTEND\n\t\tDCA\tIDLERADR\n\t\tDXCH\tT5ADR\n\n\t\tCAF\tZERO\t\t# KILL ANY POSSIBLE JET REQUESTS\n\t\tTS\tNEXTP\n\t\tTS\tNEXTU\n\t\tTS\tNEXTV\n\t\tEXTEND\t\t\t# COMMAND JETS OFF.\n\t\tWRITE\tCHAN5\n\t\tEXTEND\n\t\tWRITE\tCHAN6\n\t\tCS\tBGIM23\t\t# TURN TRIM GIMBAL OFF\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tTCF\tSETTIME5\t# RETURN IN 100 MSEC.\n\nMANFLAG\t\tOCT\t03021\nBGIM23\t\tOCTAL\t07400\n\t\tEBANK=\tOMEGAP\nPAXADIDL\t2CADR\tPAXIS\n\nMS100\t\t=\tOCT37766\nCOSMG\t\t=\tITEMP1\nJUMPDSP\t\tEXTEND\t\t\t# TRANSFER TO BANK 20\n\t\tDCA\tDSPCADR\t\t# FOR ATTITUDE ERROR DISPLAYS\n\t\tDTCB\n\n\t\tEBANK=\tAK\nDSPCADR\t\t2CADR\tALTDSPLY\n\n# Page 1414\n\t\tBANK\t20\n\t\tSETLOC\tDAPS3\n\t\tBANK\n\t\tCOUNT*\t$$/NEEDL\n\n# PROGRAM: ALTDSPLY\n#\n# MOD 0.  6 DEC 1967\n#\n# AUTHOR:  CRAIG WORK, DON KEENE, MIT IL\n#\n# MOD 3 BY DON KEENE AUG 1, 1968 MOVED PROGRAM TO BANK 20\n#\n# PROGRAM DESCRIPTION:\n#\n# ALTDSPLY REVERSES THE DSPLYALT BIT OF RCSFLAGS EACH TIME IT IS CALLED, WHICH IS PRESUMABLY EVERY 100 MS.\n# IF THE REVERSED BIT IS ONE, NEEDLER IS CALLED TO DISPLAY ATTITUDE ERRORS.  IF THE BIT IS ZERO, THE ATTITUDE ERR-\n# ORS ARE CALCULATED AS 1) DAP FOLLOWING ERRORS, IF NEEDLFLG = 0, AND 2) TOTAL ATTITUDE ERRORS FOR NEEDLFLG = 1.\n#\n# WARNING:  ALTDSPLY MAY ONLY BE CALLED WITH INTERRUPT INHIBITED.\n#\n# WARNING:  EBANK MUST BE SET TO 6 WHEN USING THIS ROUTINE.\n#\n# INPUT:  RCSFLAGS AND 1) IF NEEDLFLG=0, INPUT PERROR,QERROR,RERROR.\n# \t\t       2) IF NEEDLFLG=1, INPUT CPHI,CTHETA,CPSI,CDUX,CDUY,CDUZ,M11,M21,M32,M22,M32. (GPMATRIX)\n#\n# OUTPUTS:  RCSFLAGS WITH DSPLYALT REVERSED,AK,AK1,AK2,+ NEEDLER OUTPUTS.\n#\n# ENTRY:   TCF    ALTDSPLY\n#\n# EXIT:    TCF    CHEKMORE\n#\n# ALARM OR ABORT EXITS:  NONE\n#\n# SUBPROGRAMS CALLED: NEEDLER, OVERSUB2\n#\n# DEBRIS:  A,L,AND NEEDLER DEBRIS.\n\nALTDSPLY\tCA\tRCSFLAGS\t# INVERT THE DISPLAY ALTERNATION BIT.\n\t\tTS\tL\n\t\tCA\tDSPLYALT\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tRCSFLAGS\n\n\t\tMASK\tDSPLYALT\n\t\tCCS\tA\t\t# IS ALTERNATION FLAG ZERO?\n\t\tTCF\tNEEDLER\n\n\t\tCAE\tFLAGWRD0\t# NEEDLFLG WILL INDICATE TOTAL OR DAP AT-\n# Page 1415\n\t\tMASK\tNEEDLBIT\t# TITUDE ERROR DISPLAY REQUEST.\n\t\tCCS\tA\n\t\tTCF\tDSPLYTOT\t# TOTAL ERROR IS NEEDED IN AK,AK +1,AK +2\n\n\t\tCS\tQERROR\t\t# YES. DISPLAY ATT ERRORS ON THE ,-BALL.\n\t\tTS\tAK +1\t\t# ERROR COMPLEMENTS ARE INPUT TO NEEDLER.\n\t\tCS\tRERROR\n\t\tTS\tAK +2\n\t\tCS\tPERROR\n\t\tXCH\tAK\n\n\t\tTCF\tRETNMORE\t# DISPLAY THESE THE NEXT TIME THROUGH\n\n# CALCULATE GIMBAL ANGLE TOTAL ERRORS, RESOLVE INTO PILOT AXES, STORE TOTAL ERRORS FOR NEEDLER.  Q-AXIS FIRST.\n\nDSPLYTOT\tEXTEND\n\t\tQXCH\tITEMP1\t\t# SAVE Q FOR CHEKBITS RETURN.\n\n\t\tCA\tCTHETA\t\t# DESIRED ATTITUDE, Y-AXIS, 2'S COMP.\n\t\tEXTEND\t\t\t# SUBTRACT CURRENT ATTITUDE.\n\t\tMSU\tCDUY\t\t# DIFFERENCE SCALED AT PI, 1'S COMP.\n\t\tTS\tAK\t\t# SAVE FOR R-ERROR CALCULATION.\n\t\tEXTEND\n\t\tMP\tM21\t\t# (CHTETA-CDUY)*M21 SCALED AT PI RADIANS.\n\t\tXCH\tAK +1\t\t# STORE FIRST TERM OF Q ERROR.\n\t\tCA\tCPSI\t\t# DESIRED ATTITUDE,Z-AXIS, 2'S COMP.\n\t\tEXTEND\t\t\t# SUBTRACT CURRENT ATTITUDE.\n\t\tMSU\tCDUZ\t\t# DIFFERENCE SCALED AT PI, 1'S COMP.\n\t\tTS\tAK +2\t\t# SAVE Z-AXIS TERM FOR R ERROR CALCULATION\n\t\tEXTEND\n\t\tMP\tM22\t\t# (CPSI-CDUZ)*M22, SCALED AT PI RADIANS.\n\t\tAD\tAK +1\t\t# Q ERROR COMPLETE\t   , AT PI RAD.\n\t\tTC\tOVERSUB2\t# PIN NEEDLES IN CASE OF OVERFLOW\n\t\tTS\tAK +1\n\n# R ERROR CALCULATION NEXT.\n\n\t\tCA\tAK\t\t# Y-AXIS DIFFERENCE STORED BY Q-AXIS CALC.\n\t\tEXTEND\n\t\tMP\tM31\t\t# (CTHETA-CDUY)*M31, SCALED AT PI RADIANS.\n\t\tXCH\tAK +2\t\t# FIRST TERM OF R ERROR.\n\t\t\t\t\t# Z-AXIS DIFFERENCE, STORED BY A CALC. IS\n\t\tEXTEND\t\t\t# RECOVERED BY THE EXCHANGE.\n\t\tMP\tM32\t\t# (CPSI-CDUZ)*M32, SCALED AT PI RADIANS.\n\t\tAD\tAK +2\t\t# R ERROR COMPLETE\t   , AT PI RAD.\n\t\tTC\tOVERSUB2\t# PIN NEEDLES IN CASE OF OVERFLOW.\n\t\tTS\tAK +2\n\n# NOW CALCULATE P ERROR.  (NOTE THAT M13 = 1, SCALED AT 1, SO THE MULTIPLICATION IS BY-PASSED.)\n# Page 1416\n\t\tCA\tAK\t\t# Y-AXIS DIFFERENCE STORED BY Q AXIS CALC.\n\t\tEXTEND\n\t\tMP\tM11\t\t# (CTHETA-CDUY)*M11 SCALED AT PI RADIANS.\n\t\tXCH\tAK\t\t# FIRST TERM OF P ERROR IN AK, AT PI RAD.\n\t\tCAE\tCPHI\t\t# DESIRED ATTITUDE, X-AXIS, 2'S COMP.\n\t\tEXTEND\t\t\t# SUBTRACT CURRENT X ATTITUDE.\n\t\tMSU\tCDUX\t\t# X-AXIS DIFFERENCE, 1'S COMP, AT PI RAD.\n\n# M13 = 1, SO BYPASS THE MULTIPLICATION.\n#\t\tEXTEND\n#\t\tMP\tM13\t\t  (CPHI-CDUX)*M13 SCALED AT PI RADIANS.\n\n\t\tAD\tAK\t\t# P ERROR COMPLETE\t, SCALED AT PI RAD\n\t\tTC\tOVERSUB2\t# PIN NEEDLES IN CASE OF OVERFLOW.\n\t\tTS\tAK\n\n\t\tEXTEND\n\t\tQXCH\tITEMP1\t\t# RESTORE Q FOR CHEKBITS RETURN.\n\n\t\tTCF\tRETNMORE\t# DISPLAY THESE THE NEXT TIME THROUGH\n\n# Page 1417\n# FDAI ATTITUDE ERROR DISPLAY SUBROUTINE\n#\n# PROGRAM DESCRIPTION:    D. KEENE   5/24/67\n#\n# MOD 1 BY CRAIG WORK, 12 DEC 67\n#\n# MOD 2 BY CRAIG WORK, 6 APRIL 68 CONVERTS ATTITUDE ERROR DISPLAY SCALING FROM 16 7/8 DEG. TO 42 3/16 DEGREES.\n#\n#     THIS SUBROUTINE IS USED TO DISPLAY ATTITUDE ERRORS ON THE FDAI VIA THE DIGITAL TO ANALOG CONVERTERS (DACS)\n# IN THE CDUS.  CARE IS TAKEN TO METER OUT THE APPROPRIATE NUMBER OF PULSES TO THE IMU ERROR COUNTERS AND PREVENT\n# OVERFLOW, TO CONTROL THE RELAY SEQUENCING, AND TO AVOID INTERFERENCE WITH THE COARSE ALIGN LOOP WHICH ALSO USES\n# THE DACS.\n#\n#\n# CALLING SEQUENCE:\n#\n#     DURING THE INITIALIZATION SECTION OF THE USER'S PROGRAM, BIT3 OF RCSFLAGS SHOULD BE SET TO INITIATE THE\n# TURN-ON SEQUENCE WITHIN THE NEEDLES PROGRAM:\n#\n#\t   CS\t  RCSFLAGS\t  IN EBANK6\n#\t   MASK\t  BIT3\n#\t   ADS\t  RCSFLAGS\n#\n# THEREAFTER, THE ATTITUDE ERRORS GENERATED BY THE USER SHOULD BE TRANSFERRED TO THE FOLLOWING LOCATIONS IN EBANK6:\n#\n#\t   AK\t  SCALED 180 DEGREES  NOTE: THESE LOCATIONS ARE SUBJECT\n#\t   AK1\t  SCALED 180 DEGREES\t    TO CHANGE\n#\t   AK2\t  SCALED 180 DEGREES\n#\n# FULL SCALED DEFLECTION OF THE NEEDLES CORRESPONDS TO 5 1/16 DEGREES, WHILE 384 BITS IN THE IMU ERROR COUNTER\n# CORRESPONDS TO 42 3/16 DEGREES.  (DAC MAXIMUM CAPACITY IS 384 BITS.) 46 BITS EFFECTIVELY PIN THE NEEDLES.\n#\n# A CALL TO NEEDLER WILL THEN UPDATE THE DISPLAY:\n#\n#\t   INHINT\n#\t   TC\t  IBNKCALL\t NOTE: EBANK SHOULD BE SET TO E6\n#\t   CADR\t  NEEDLER\n#\t   RELINT\n#\n#     THIS PROCESS SHOULD BE REPEATED EACH TIME THE ERRORS ARE UPDATED.  AT LEAST 3 PASSES THRU THE PROGRAM ARE\n# REQUIRED BEFORE ANYTHING IS ACTUALLY DISPLAYED ON THE ERROR METERS.\n# NOTE: EACH CALL TO NEEDLER MUST BE SEPARATED BY AT LEAST 50MS TO ASSURE PROPER RELAY SEQUENCING.\n#\n# ERASABLES USED:\n#\t\t       AK\t  CDUXCMD\n#\t\t       AK1\t  CDUYCMD\n#\t\t       AK2\t  CDUZCMD\n#\t\t       EDRIVEX\t  A,L,Q\n#\t\t       EDRIVEY\t  T5TEMP\n#\t\t       EDRIVEZ\t  DINDX\n# Page 1418\n#\n# SWITCHES:\t       RCSFLAGS\t  BITS 3,2\n#\n# I/O CHANNELS:\t       CHAN12\t  BIT 4 (COARSE ALIGN - READ ONLY)\n#\t\t       CHAN12\t  BIT 6 (IMU ERROR COUNTER ENABLE)\n#\t\t       CHAN14\t  BIT 13,14,15 (DAC ACTIVITY)\n#\n#\n# SIGN CONVENTION<   AK = THETAC - THETA\n#\t    WHERE    THETAC = COMMAND ANGLE\n#\t\t     THETA  = PRESENT ANGLE\n\n\nNEEDLER\t\tCA\tRCSFLAGS\n\t\tMASK\tSIX\n\t\tEXTEND\n\t\tBZF\tNEEDLES3\n\t\tMASK\tBIT3\n\t\tEXTEND\n\t\tBZF\tNEEDLER2\t# BIT3 = 0, BIT2 = 1\n\n\t\tCS\tBIT6\t\t# FIRST PASS BIT3 = 1\n\t\tEXTEND\t\t\t# DISABLE IMU ERROR COUNTER TO ZERO DACS\n\t\tWAND\tCHAN12\t\t# MUST WAIT AT LEAST 60 MS BEFORE\nNEEDLE11\tCS\tZERO\t\t# ENABLING COUNTERS.\n\t\tTS\tAK\t\t# ZERO THE INPUTS ON FIRST PASS\n\t\tTS\tAK1\n\t\tTS\tAK2\n\t\tTS\tEDRIVEX\t\t# ZERO THE DISPLAY REGISTERS\n\t\tTS\tEDRIVEY\n\t\tTS\tEDRIVEZ\n\t\tTS\tCDUXCMD\t\t# ZERO THE OUT COUNTERS\n\t\tTS\tCDUYCMD\n\t\tTS\tCDUZCMD\n\t\tCS\tSIX\t\t# RESET RCSFLAGS FOR PASS2\n\t\tMASK\tRCSFLAGS\n\t\tAD\tBIT2\n\t\tTS\tRCSFLAGS\n\t\tTCF\tRETNMORE\n\nNEEDLER2\tCAF\tBIT6\t\t# ENABLE IMU ERROR COUNTERS\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\t\tCS\tSIX\t\t# RESET RCSFLAGS TO DISPLAY ATTITUDE\n\t\tMASK\tRCSFLAGS\t# ERRORS    WAIT ATLEAST 4 MS FOR\n\t\tTS\tRCSFLAGS\t# RELAY CLOSURE\n\t\tTCF\tRETNMORE\n\nNEEDLES3\tCAF\tBIT6\t\t# CHECK TO SEE IF IMU ERROR COUNTER\n\t\tEXTEND\t\t\t# IS ENABLED\n\t\tRAND\tCHAN12\n# Page 1419\n\t\tCCS\tA\t\t# IF NOT, RE-INITIALIZE NEEDLER.\n\t\tTCF\tNEEDLES\n\n\t\tCS\tRCSFLAGS\t# SET UP INITIALIZATION FLAG IN RCSFLAGS.\n\t\tMASK\tBIT3\n\t\tADS\tRCSFLAGS\n\t\tTCF\tRETNMORE\n\nNEEDLES\t\tCAF\tTWO\nDACLOOP\t\tTS\tDINDX\n\t\tCS\tONETENTH\t# RESCALE INPUTS TO + OR - 1800 DEGREES.\n\t\tEXTEND\n\t\tINDEX\tDINDX\n\t\tMP\tAK\n\t\tTS\tL\n\t\tCCS\tA\n\t\tCA\tDACLIMIT\n\t\tTCF\t+2\n\t\tCS\tDACLIMIT\n\t\tAD\tL\n\t\tTS\tT5TEMP\t\t# OVFLO CHK\n\t\tTCF\t+4\n\t\tINDEX\tA\t\t# ON OVERFLOW LIMIT OUTPUT TO +-384\n\t\tCAF\tDACLIMIT\n\t\tTS\tL\n\t\tINDEX\tDINDX\n\t\tCS\tEDRIVEX\t\t# CURRENT VALUE OF DAC\n\t\tAD\tL\n\t\tINDEX\tDINDX\n\t\tADS\tCDUXCMD\n\t\tINDEX\tDINDX\n\t\tLXCH\tEDRIVEX\n\t\tCCS\tDINDX\n\t\tTCF\tDACLOOP\n\t\tCAF\t13,14,15\n\t\tEXTEND\n\t\tWOR\tCHAN14\t\t# SET DAC ACTIVITY BITS\n\t\tTCF\tRETNMORE\n\n\t\tDEC\t-384\nDACLIMIT\tDEC\t16000\n\t\tDEC\t384\n\nONETENTH\tOCT\t03146\t\t# DECIMAL +0.1, SCALED AT 1.\nDSPLYALT\tEQUALS\tBIT4\t\t# 100 MS ALTERNATION BIT IN RCSFLAGS\n\nOVERSUB2\tTS\t7\t\t# RETURNS  A  UNCHANGED  OR LIMITED TO\n\t\tTC\tQ\t\t# POSMAX OR NEGMAX IF A HAS OVERFLOW\n\t\tINDEX\tA\n# Page 1420\n\t\tCS\tLIMITS\t\t# DUPLICATE CODING IN  BANK 16\n\t\tTC\tQ\n\nRETNMORE\tEXTEND\t\t\t# RETURN TO CHEKMORE\n\t\tDCA\tMORECADR\n\t\tDTCB\n\n\t\tEBANK=\tAOSQ\nMORECADR\t2CADR\tCHEKMORE\n\n"
  },
  {
    "path": "Luminary099/DAP_INTERFACE_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tDAP_INTERFACE_SUBROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1406-1409\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1406\n\t\tBANK\t20\n\t\tSETLOC\tDAPS3\n\t\tBANK\n\n\t\tEBANK=\tCDUXD\n\t\tCOUNT*\t$$/DAPIF\n\n# MOD 0\t\tDATE\t11/15/66\tBY GEORGE W. CHERRY\n# MOD 1\t\t\t 1/23/67\tMODIFICATION BY PETER ADLER\n#\n# FUNCTIONAL DESCRIPTION\n#\tHEREIN ARE A COLLECTION OF SUBROUTINES WHICH ALLOW MISSION CONTROL PROGRAMS TO CONTROL THE MODE\n#\tAND INTERFACE WITH THE DAP.\n#\n# CALLING SEQUENCES\n#\tIN INTERRUPT OR WITH INTERRUPT INHIBITED\n#\t\tTC\tIBNKCALL\n#\t\tFCADR\tROUTINE\n#\tIN A JOB WITHOUT INTERRUPT INHIBITED\n#\t\tINHINT\n#\t\tTC\tIBNKCALL\n#\t\tFCADR\tROUTINE\n#\t\tRELINT\n#\n# OUTPUT\n#\tSEE INDIVIDUAL ROUTINES BELOW\n#\n# DEBRIS\n#\tA, L, AND SOMETIMES MDUETEMP\t\t\tODE\tNOT IN PULSES MODE\n\n# Page 1407\n# SUBROUTINE NAMES:\n#\tSETMAXDB, SETMINDB, RESTORDB, PFLITEDB\n# MODIFIED:\t30 JANUARY 1968 BY P S WEISSMAN TO CREATE RESTORDB.\n# MODIFIED:\t1 MARCH 1968 BY P S WEISSMAN TO SAVE EBANK AND CREATE PFLITEDB\n#\n# FUNCTIONAL DESCRIPTION:\n#\tSETMAXDB -- SET DEADBAND TO 5.0 DEGREES\n#\tSETMINDB -- SET DEADBAND TO 0.3 DEGREE\n#\tRESTORDB -- SET DEADBAND TO MAX OR MIN ACCORDING TO SETTINGS OF DBSELECT BIT OF DAPBOOLS\n#\tPFLITEDB -- SET DEADBAND TO 1.0 DEGREE AND ZERO THE COMMANDED ATTITUDE CHANGE AND COMMANDED RATE\n#\n#\tALL ENTRIES SET UP A NOVAC JOB TO DO 1/ACCS SO THAT THE TJETLAW SWITCH CURVES ARE POSITIONED TO\n#\tREFLECT THE NEW DEADBAND.  IT SHOULD BE NOTED THAT THE DEADBAND REFERS TO THE ATTITUDE IN THE P-, U-, AND V-AXES.\n#\n# SUBROUTINE CALLED:\tNOVAC\n#\n# CALLING SEQUENCE:\tSAME AS ABOVE\n#\t\t\tOR\tTC RESTORDB +1    FROM ALLCOAST\n#\n# DEBRIS:\t\tA, L, Q, RUPTREG1, (ITEMPS IN NOVAC)\n\nRESTORDB\tCAE\tDAPBOOLS\t# DETERMINE CREW-SELECTED DEADBAND.\n\t\tMASK\tDBSELECT\n\t\tEXTEND\n\t\tBZF\tSETMINDB\n\nSETMAXDB\tCAF\tWIDEDB\t\t# SET 5 DEGREE DEADBAND.\n +1\t\tTS\tDB\n\n\t\tEXTEND\t\t\t# SET UP JOB TO RE-POSITION SWITCH CURVES.\n\t\tQXCH\tRUPTREG1\nCALLACCS\tCAF\tPRIO27\n\t\tTC\tNOVAC\n\t\tEBANK=\tAOSQ\n\t\t2CADR\t1/ACCJOB\n\n\t\tTC\tRUPTREG1\t# RETURN TO CALLER.\n\nSETMINDB\tCAF\tNARROWDB\t# SET 0.3 DEGREE DEADBAND.\n\t\tTCF\tSETMAXDB +1\n\nPFLITEDB\tEXTEND\t\t\t# THE RETURN FROM CALLACCS IS TO RUPTREG1.\n\t\tQXCH\tRUPTREG1\n\t\tTC\tZATTEROR\t# ZERO THE ERRORS AND COMMANDED RATES.\n\t\tCAF\tPOWERDB\t\t# SET DB TO 1.0 DEG.\n\t\tTS\tDB\n\t\tTCF\tCALLACCS\t# SET UP 1/ACCS AND RETURN TO CALLER.\nNARROWDB\tOCTAL\t00155\t\t# 0.3 DEGREE SCALED AT 45.\n# Page 1408\nWIDEDB\t\tOCTAL\t03434\t\t# 5.0 DEGREES SCALED AT 45.\nPOWERDB\t\tDEC\t.02222\t\t# 1.0 DEGREE SCALED AT 45.\n\nZATTEROR\tCAF\tEBANK6\n\t\tXCH\tEBANK\n\t\tTS\tL\t\t# SAVE CALLERS EBANK IN L.\n\t\tCAE\tCDUX\n\t\tTS\tCDUXD\n\t\tCAE\tCDUY\n\t\tTS\tCDUYD\n\t\tCAE\tCDUZ\n\t\tTS\tCDUZD\n\t\tTCF\tSTOPRATE +3\n\nSTOPRATE\tCAF\tEBANK6\n\t\tXCH\tEBANK\n\t\tTS\tL\t\t# SAVE CALLERS EBANK IN L.\n +3\t\tCAF\tZERO\n\t\tTS\tOMEGAPD\n\t\tTS\tOMEGAQD\n\t\tTS\tOMEGARD\n\t\tTS\tDELCDUX\n\t\tTS\tDELCDUY\n\t\tTS\tDELCDUZ\n\t\tTS\tDELPEROR\n\t\tTS\tDELQEROR\n\t\tTS\tDELREROR\n\t\tLXCH\tEBANK\t\t# RESTORE CALLERS EBANK.\n\t\tTC\tQ\n\n# SUBROUTINE NAME:\tALLCOAST\n# WILL BE CALLED BY FRESH STARTS AND ENGINE OFF ROUTINES.\n#\n# CALLING SEQUENCE:\t(SAME AS ABOVE)\n#\n# EXIT:\t\t\tRETURN TO Q.\n#\n# SUBROUTINES CALLED:\tSTOPRATE, RESTORDB, NOVAC\n#\n# ZERO:\t\t\t(FOR ALL AXES) AOS, ALPHA, AOSTERM, OMEGAD, DELCDU, DELEROR\n#\n# OUTPUT:\t\tDRIFTBIT/DAPBOOLS, OE, JOB TO DO 1/ACCS\n#\n# DEBRIS:\t\tA, L, Q, RUPTREG1, RUPTREG2, (ITEMPS IN NOVAC)\n\nALLCOAST\tEXTEND\t\t\t# SAVE Q FOR RETURN\n\t\tQXCH\tRUPTREG2\n# Page 1409\n\t\tTC\tSTOPRATE\t# CLEAR RATE INTERFACE.  RETURN WITH A=0\n\t\tLXCH\tEBANK\t\t#   AND L=EBANK6.  SAVE CALLER'S EBANK.\n\t\tTS\tAOSQ\n\t\tTS\tAOSQ +1\n\t\tTS\tAOSR\n\t\tTS\tAOSR +1\n\t\tTS\tALPHAQ\t\t# FOR DOWNLIST.\n\t\tTS\tALPHAR\n\t\tTS\tAOSQTERM\n\t\tTS\tAOSRTERM\n\t\tLXCH\tEBANK\t\t# RESTORE EBANK (EBANK6 NO LONGER NEEDED)\n\n\t\tCS\tDAPBOOLS\t# SET UP DRIFTBIT\n\t\tMASK\tDRIFTBIT\n\t\tADS\tDAPBOOLS\n\t\tTC\tRESTORDB +1\t# RESTORE DEADBANK TO CREW-SELECTED VALUE.\n\n\t\tTC\tRUPTREG2\t# RETURN.\n\n"
  },
  {
    "path": "Luminary099/DISPLAY_INTERFACE_ROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tDISPLAY_INTERFACE_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1341-1373\n# Mod history:\t2009-05-27 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\t\t2011-05-08 JL\tRemoved workaround.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1341\n# DISPLAYS CAN BE CLASSIFIED INTO THE FOLLOWING CATEGORIES --\n#\t1.  PRIORITY DISPLAYS -- DISPLAYS WHICH TAKE PRIORITY OVER ALL OTHER DISPLAYS.  USUALLY THESE DISPLAYS ARE SENT\n#\t    OUT UNDER CRITICAL ALARM CONDITIONS.\n#\t2.  EXTENDED VERB DISPLAYS -- ALL EXTENDED VERBS AND MARK ROUTINES SHOULD USE EXTENDED VERB (MARK) DISPLAYS.\n#\t3.  NORMAL DISPLAYS -- ALL MISSION PROGRAM DISPLAYS WHICH INTERFACE WITH THE ASTRONAUT DURING THE NORMAL\n#\t    SEQUENCE OF EVENTS.\n#\t4.  MISC. DISPLAYS -- ALL DISPLAYS NOT HANDLED BY THE DISPLAY INTERFACE ROUTINES.  THESE INCLUDE SUCH DISPLAYS AS\n#\t    MM DISPLAYS AND SPECIAL PURPOSE DISPLAYS HANDLED BY PINBALL.\n#\t5.  ASTRONAUT INITIATED DISPLAYS -- ALL DISPLAYS INITIATED EXTERNALLY.\n#\n# THE FOLLOWING TERMS ARE USED TO DESCRIBE THE STATUS OF DISPLAYS --\n#\t1.  ACTIVE -- THE DISPLAY WHICH IS (1) BEING DISPLAYED TO THE ASTRONAUT AND WAITING FOR A RESPONSE OR\n#\t    (2) WAITING FIRST IN LINE FOR THE ASTRONAUT TO FINISH USING THE DSKY OR (3) BEING DISPLAYED ON THE DSKY\n#\t    BUT NOT WAITING FOR A RESPONSE.\n#\t2.  INACTIVE -- A DISPLAY WHICH HAS (1) BEEN ACTIVE BUT WAS INTERRUPTED BY A DISPLAY OF HIGHER PRIORITY,\n#\t    (2) BEEN PUT INTO THE WAITING LIST AT TIME IT WAS REQUESTED DUE TO THE FACT A HIGHER PRIORITY DISPLAY\n#\t    WAS ALREADY DOING, (3) BEEN INTERRUPTED BY THE ASTRONAUT (CALLED A PINBRANCH CONDITION, SINCE THIS TYPE\n#\t    OF INACTIVE DISPLAY IS USUALLY REACTIVATED ONLY BY PINBALL) OR (4) A DISPLAY WHICH HAS FINISHED BUT STILL\n#\t    HAS INFO SAVED FOR RESTART PURPOSES.\n#\n# DISPLAY PRIORITIES WORK AS FOLLOWS --\n#\tINTERRUPTS --\n#\t\t1.  THE ASTRONAUT CAN INTERRUPT ANY DISPLAY WITH AN EXTERNAL DISPLAY REQUEST.\n#\t\t2.  INTERNAL DISPLAYS CAN NOT BE SENT OUT WHEN THE ASTRONAUT IS USING THE DSKY.\n#\t\t3.  PRIORITY DISPLAYS INTERRUPT ALL OTHER TYPES OF INTERNAL DISPLAYS.  A PRIORITY DISPLAY INTERRUPTING ANOTHER\n#\t\t    PRIORITY DISPLAY WILL CAUSE AN ABORT UNLESS BIT14 IS SET FOR THE LINUS ROUTINE.\n#\t\t4.  A MARK DISPLAY INTERRUPTS ANY NORMAL DISPLAY.\n#\t\t5.  A MARK THAT INTERRUPTS A MARK COMPLETELY REPLACES IT.\n#\n# \tORDER OF WAITING DISPLAYS --\n#\t\t1.  ASTRONAUT\n#\t\t2.  PRIORITY\n#\t\t3.  INTERRUPTED MARK\n#\t\t4.  INTERRUPTED NORMAL\n#\t\t5.  MARK TO BE REQUESTED (SEE DESCRIPTION OF ENDMARK)\n#\t\t6.  MARK WAITING\n#\t\t7.  NORMAL WAITING\n#\n# Page 1342\n# THE DISPLAY ROUTINES ARE INTENDED TO SERVE AS AN INTERFACE BETWEEN THE USER AND PINBALL.  THE\n# FOLLOWING STATEMENTS CAN BE MADE ABOUT NORMAL DISPLAYS AND PRIORITY DISPLAYS (A DESCRIPTION OF MARK ROUTINES\n# WILL FOLLOW LATER):\n#\t1.  ALL ROUTINES THAT END IN R HAVE AN IMMEDIATE RETURN TO THE USER.  FOR ALL FLASHING DISPLAYS THIS RETURN\n#\t    IS TO THE USER'S CALL CADR +4.  FOR THE ONLY NON-FLASHING IMMEDIATE RETURN DISPLAY (GODSPR) THIS RETURN\n#\t    IS TO THE USER'S CALLING LOC +1.\n#\t2.  ALL ROUTINES NOT ENDING IN R DO NOT DO AN IMMEDIATE RETURN TO THE USER.\n#\t3.  ALL ROUTINES THAT END IN R START A SEPARATE JOB (MAKEPLAY) WITH USER'S JOB PRIORITY.\n#\t4.  ALL ROUTINES NOT ENDING IN R BRANCH DIRECTLY TO MAKEPLAY WHICH MAKES THESE DISPLAYS A PART OF THE\n#\t    USER'S JOB.\n#\t5.  ALL DISPLAY ROUTINES ARE CALLED VIA BANKCALL.\n#\t6.  TO RESTART A DISPLAY THE USER WILL GENERALLY USE A PHASE OF ONE WITH DESIRED RESTART GROUP (SEE\n#\t    DESCRIPTION OF RESTARTS).\n#\t7.  ALL FLASHING DISPLAYS HAVE 3 RETURNS TO THE USER FROM ASTRONAUT RESPOSES.  A TERMINATE (V34) BRANCHES\n#\t    TO THE USER'S CALL CADR +1.  A PROCEED (V33) BRANCHES TO THE USER'S CALL CADR +2.  AN ENTER OR RECYCLE\n#\t    (V32) BRANCHES TO THE USER'S CALL CADR +3.\n#\t8.  ALL ROUTINES MUST BE USED UNDER EXECUTIVE CONTROL\n#\n# A DESCRIPTION OF EACH ROUTINE WITH AN EXAMPLE FOLLOWS:\n#\tGODSP IS USED TO DISPLAY A VERB NOUN ARRIVING IN A.  NO RETURN IS MADE TO THE USER.\n#\t\t1.  GODSP IS NOT RESTARTABLE\n#\t\t2.  A VERB PASTE WITH GODSP ALWAYS TURNS ON THE FLASH.\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGODSP\n#\t\t\tVXXNYY\tOCT\t0XXYY\n#\tGODSPR IS THE SAME AS GODSP ONLY RETURN IS TO THE USER.\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGODSPR\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN OF GODSPR\n#\tGOFLASH DISPLAYS A FLASHING VERB NOUN WITH NO IMMEDIATE RETURN TO THE USER.  3 RETURNS ARE POSSIBLE FORM\n#\tTHE ASTRONAUT (SEE NO. 7 ABOVE).\n#\t\t\t\tCAF\tVXXNYY\t\t# VXX NYY WILL BE A FLASHING VERB NOUN.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOFLASH\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n#\tGOPERF1 IS ENTERED WITH DESIRED CHECKLIST VALUE IN A.  GOPERF1 WILL DISPLAY THIS VALUE IN R1 BY MEANS OF A\n# Page 1343\n# \tV01 N25.  A FLASHING PLEASE PERFORM ON CHECKLIST (V50 N25) IS THEN DISPLAYED.  NO IMMEDIATE RETURN IS MADE TO\n# \tUSER (SEE NO. 7 ABOVE).\n#\tGOPERF1 BLANKS REGISTERS R2 AND R3\n#\t\t\t\tCAF\tOCTXX\t\t# CODE FOR CHECKLIST VALUE XX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF1\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\tGOPERF2 IS ENTERED WITH A VARIABLE NOUN AND V01 (V00 FOR N10 OR N11) IN A.  GOPERF2 WILL FIRST DISPLAY THE\n# \tREQUESTED NOUN BY MEANS OF A V01NYY OR A V00NYY.  PLEASE PERFORM ON NOUN (V50 NYY) THEN BECOMES A FLASHING\n#\tDISPLAY.  NO IMMEDIATE RETURN IS MADE TO THE USER (SEE NO. 7 ABOVE).\n#\tGOPERF2 DOES NOT BLANK ANY REGISTERS\n#\t\t\t\tCAF\tVXXNYY\t\t# VARIABLE NOUN YY. XX=0 OR 01.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF2\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\tGOPERF3 IS USED FOR A PLEASE PERFORM ON A PROGRAM NUMBER.  THE DESIRED PROGRAM NO. IS ENTERED IN A.  GOPERF3\n#\tDISPLAYS THE NO. BY MEANS OF A V06 N07 FOLLOWED BY A FLASHING V50 N07 FOR A PLEASE PERFORM.  NO IMMEDIATE RETURN\n#\tIS MADE TO THE USER (SEE NO. 7 ABOVE).\n#\tGOPERF3 BLANKS REGISTERS R2 AND R3\n#\t\t\t\tCAF\tDECXX\t\t# REQUEST PERFORM ON PXX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF3\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\tGOPERF4 IS USED FOR A PLEASE PERFORM ON AN OPTION.  THE DESIRED OPTION IS ENTERED IN A AND STORED IN OPTION1.\n#\tGOPERF4 DISPLAYS R1 AND R2 BY MEANS OF A V04N06 FOLLOWED BY A FLASHING V50N06 FOR A PLEASE PERFORM.  NO\n#\tIMMEDIATE RETURN IS MADE TO THE USER (SEE NO. 7 ABOVE).\n#\t\t\t\tCAF\tOCTXX\t\t# REQUEST PERFORM ON OPTION XX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF4\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\tGOPERF4 BLANKS REGISTER R3.\n# Page 1344\n#\tGODSPRET IS USED TO DISPLAY A VERB NOUN ARRIVING IN A WITH A RETURN TO THE USER AFTER THE DISPLAY HAS BEEN SENT\n#\tOUT.\n#\t\t\t\tCAF\tVXXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGODSPRET\n#\t\t\t\t...\t...\t\t# RETURN TO USER.\n#\tREGODSP IS USED TO DISPLAY A VERB NOUN ARRIVING IN A.  REGODSP IS THE SAME AS GODSP ONLY REGODSP REPLACES ANY\n# \tACTIVE NORMAL DISPLAY IF ONE WAS ACTIVE.\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tREGODSP\n#\tREFLASH IS THE SAME AS GOFLASH ONLY REFLASH REPLACES ANY ACTIVE NORMAL DISPLAY IF ONE WAS ACTIVE.\n#\t\t\t\tCAF\tVXXNYY\t\t# VXX NYY WILL BE A FLASHING VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tREFLASH\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n# \tGOFLASHR IF SAME AS GOFLASH ONLY AN IMMEDIATE RETURN IS MADE TO THE USER'S CALL CADR +4.\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOFLASHR\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN FROM GOFLASHR\n#\tGOPERF1R IS THE SAME AS GOPERF1 ONLY GOPERF1R HAS AN IMMEDIATE RETURN TO USER'S CALL CADR +4.\n#\tGOPERF1R BLANKS REGISTERS R2 AND R3\n#\t\t\t\tCAF\tOCTXX\t\t# CODE FOR CHECKLIST VALUE XX.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF1R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN FROM GOPERF1R\n#\tGOPERF2R IS THE SAME AS GOPERF2 ONLY AN IMMEDIATE RETURN IS MADE TO USER'S CALL CADR +4.\n# Page 1345\n#\tGOPERF2R DOES NOT BLANK ANY REGISTERS\n#\t\t\t\tCAF\tVXXXNYY\t\t# VARIABLE NOUN YY REQUESTED.  XX=00 OR 01\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF2R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN HERE FROM GOPERF2R\n# \tGOPERF3R IS THE SAME AS GOPERF3 ONLY AN IMMEDIATE RETURN IS MADE TO USER'S CALL CADR +4.\n#\tGOPERF3R BLANKS REGISTERS R2 AND R3\n#\t\t\t\tCAF\tPROGXX\t\t# PERFORM PROGRAM XX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF3R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# GOPERF3R IMMEDIATELY RETURNS HERE\n#\tGOPERF4R IS THE SAME AS GOPERF4 ONLY AN IMMEDIATE RETURN IS MADE TO USER'S CALL CADR +4.\n#\t\t\t\tCAF\tOCTXX\t\t# REQUEST PERFORM ON OPTIONXX\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOPERF4R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO USER\n#\tGOPERF4R BLANKS REGISTER R3.\n#\tREFLASHR IS THE SAME AS REFLASH ONLY AN IMMEDIATE RETURN IS MADE TO THE USER'S CALL CADR +4.\n#\t\t\t\tCAF\tVXXNYY\t\t# VXX NYY WILL BE A FLASHING VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tREFLASHR\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO USER\n#\tREGODSPR IS THE SAME AS REGODSP ONLY A RETURN (IMMEDIATE) IS MADE TO THE USER.\n# Page 1346\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tREGODSPR\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO USER\n# Page 1347\n#\tGOMARK IS USED TO DISPLAY A MARK VERB NOUN ARRIVING IN A.  NO RETURN IS MADE TO THE USER.\n#\tGOXDSP = GOMARK\n#\t\t\t\tCAF\tVXXNYY\t\t# VXXNYY CONTAINS VERB AND NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK\t\t# OTHER EXTENDED VERBS USE CADR GOXDSP\n#\tGOMARKR IS THE SAME AS GOMARK ONLY RETURN IS TO THE USER.\n#\tGOXDSPR = GOMARKR\n#\t\t\t\tCAF\tVXXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARKR\t\t# OTHER EXTENDED VERBS USE CADR GOXDSPR\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN OF GOMARKR\n#\tGOMARKF DISPLAYS A FLASHING MARK VERB NOUN WITH NO IMMEDIATE RETURN TO THE USER.  3 RETURNS ARE POSSIBLE FROM\n#\tTHE ASTRONAUT (SEE NO. 7 ABOVE).\n#\tGOXDSPF = GOMARKF\n#\t\t\t\tCAF\tVXXNYY\t\t# VXXNYY WILL BE A FLASHING MARK VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARKFR\t# OTHER EXTENDED VERBS USE CADR GOXDSPFR\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n#\tGOMARKFR IS THE SAME AS GOMARKF ONLY AN IMMEDIATE RETURN IS MADE TO THE USER CALL CADR +4.\n#\tGOXDSPFR = GOMARKFR\n#\t\t\t\tCAF\tVXXNYY\t\t# FLASHING MARK VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARKFR\t# OTHER EXTENDED VERBS USE CADR GOXDSPFR\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO THE USER\n#\tGOMARK1 IS USED FOR A PLEASE PERFORM ON A MARK REQUEST WITH ONLY 1 ASTRONAUT RETURN TO THE USER.  NO IMMEDIATE\n#\tRETURN IS MADE.  THE DESIRED MARK PLEASE PERFORM VERB AND DESIRED NOUN IS ENTERED IN A.  GOMARK1 DISPLAYS R1, R2, R\n#\tMEANS OF A V05NYY FOLLOWED BY A FLASHING V5XNYY FOR A PLEASE PERFORM.  THE ASTRONAUT WILL RESPOND WITH A MARK\n#\tOR MARK REJECT OR AN ENTER.  THE ENTER IS THE ONLY ASTRONAUT RESPONSE THAT WILL COME BACK TO THE USER.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tY=NOUN\n#\t\t\t\tTC\tBANKCALL\n# Page 1348\n#\t\t\t\tCADR\tGOMARK1\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t*** IF BLANKING DESIRED ON NON-R ROUTINES, NOTIFY DISPLAYER.\n#\n#\tGOMARK1R IS THE SAME AS A GOMARK1 ONLY AN IMMEDIATE RETURN IS MADE TO THE USER'S CALL CADR +2.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tYY=NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK1R\n#\t\t\t\t...\t...\t\t# ASTRONAUT ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO USER\n#\tGOMARK2 IS THE SAME AS GOMARK1 ONLY 3 RETURNS ARE MADE TO THE USER FROM THE ASTRONAUT.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tYY=NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK2\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\tGOMARK2R IS THE SAME AS GOMARK1R ONLY 3 ASTRONAUT RETURNS ARE MADE TO THE USER.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=0,1,2,3,4\tYY=NOUN\n#\t\t\t\tTCF\tBANKCALL\n#\t\t\t\tCADR\tGOMARK2R\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN TO THE USER.\n#\tGOMARK3 IS USED FOR A PLEASE PERFORM ON A MARK REQUEST WITH A 3 COMP. DEC DISPLAY.  THE DESIRED MARK PLEASE\n#\tPERFORM VERB AND NOUN ARE ENTERED IN A.  GOMARK3 DISPLAYS R1, R2, R3 BY MEANS OF A V06NYY FOLLOWED BY A FLASHING\n#\tV5XNYY FOR A PLEASE PERFORM.  GOMARK3 HAS 3 ASTRONAUT RETURNS TO THE USER WITH NO IMMEDIATE RETURN.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tYY=NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK3\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER RETURN\n#\tGOMARK4 IS THE SAME AS GOMARK3 ONLY R2 AND R3 ARE BLANKED AND R1 IS DISPLAYED IN OCTAL.\n#\t\t\t\tCAF\tV5XNYY\t\t# X=1,2,3,4\tYY=NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tGOMARK4\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n# Page 1349\n#\t\t\t...\t...\t\t\t# ENTER RETURN\n#\tEXDSPRET IS USED TO DISPLAY A VERB NOUN ARRIVING IN A WITH A RETURN MADE TO THE USER AFTER THE DISPLAY HAS BEEN\n#\tSEND OUT.\n#\t\t\t\tCAF\tVXNYY\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tEXDSPRET\n#\t\t\t\t...\t...\t\t# RETURN TO USER\n#\tKLEENEX CLEANS OUT ALL MARK DISPLAYS (ACTIVE AND INACTIVE). A RETURN IS MADE TO THE USER AFTER THE MARK DISPLAYS\n#\tHAVE BEEN CLEANED OUT.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tKLEENEX\n#\t\t\t\t...\t...\t\t# RETURN TO USER\n#\tMARKBRAN IS A SPECIAL PURPOSE ROUTINE USED FOR SAVING JOB VAC AREAS (SEE DESCRIPTION OF MARKBRAN BELOW).\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tMARKBRAN\n#\t\t\t\t...\t...\t\t# BAD RETURN IF MARK DISPLAY NOT ACTIVE\n#\t\t\t\t\t\t\t# (GOOD RETURN TO IMMEDIATE RETURN LOC OF\n#\t\t\t\t\t\t\t# LAST FLASHING MARK R ROUTINE)\n#\tPINBRNCH REESTABLISHES THE LAST ACTIVE FLASHING DISPLAY.  IF THERE IS NO ACTIVE FLASHING DISPLAY, THE DSKY IS\n#\tBLANKED AND CONTROL IS SENT TO ENDOFJOB.\n#\t\t\t\tTC\tPOSTJUMP\n#\t\t\t\tCADR\tPINBRNCH\n#\tPRIODSP IS USED AS A PRIORITY DISPLAY.  IT WILL DISPLAY A GOFLASH TYPE DISPLAY WITH THREE POSSIBLE RETURNS FROM\n#\tTHE ASTRONAUT (SEE NO. 7 ABOVE).\n#\tTHE MAIN PURPOSE OF PRIODSP IS TO REPLACE THE PRESENT DISPLAY WITH A DISPLAY OF HIGHER PRIORITY AND TO\n#\tPROVIDE A MEANS FOR RESTORING THE OLD DISPLAY WHEN THE PRIORITY DISPLAY\n# \tIS RESPONDED TO BY THE ASTRONAUT.\n#\tTHE FORMER DISPLAY IS RESTORED BY AN AUTOMATIC BRANCH TO WAKE UP THE DISPLAY THAT WAS INTERRUPTED BY THE\n#\tPRIO DISPLAY\n#\t\t\t\tCAF\tVXXNYY\t\t# VXXNYY WILL BE A FLASHING VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tPRIODSP\n#\t\t\t\t...\t...\t\t# TERMINATE RETURN\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n# Page 1350\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n#\tPRIODSPR IS THE SAME AS PRIODSP ONLY AN IMMEDIATE RETURN IS MADE TO THE USER'S CALL CADR +4.\n#\t\t\t\tCAF\tVXXNYY\t\t# VXXNYY WILL BE A FLASHING VERB NOUN\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tPRIODSPR\n#\t\t\t\t...\t...\t\t# TERMINATE ACTION\n#\t\t\t\t...\t...\t\t# PROCEED RETURN\n#\t\t\t\t...\t...\t\t# ENTER OR RECYCLE RETURN\n#\t\t\t\t...\t...\t\t# IMMEDIATE RETURN\n#\tPRIOLARM DOES A V05N09 PRIODSPR.\n#\n#\tCLEANDSP CLEANS OUT ALL NORMAL DISPLAYS (ACTIVE AND INACTIVE).  A RETURN IS MADE TO THE USER AFTER NORMAL\n#\tDISPLAYS ARE CLEANED OUT.\n#\t\t\t\tTC\tBANKCALL\n#\t\t\t\tCADR\tCLEANDSP\n#\t\t\t\t...\t...\t\t# RETURN TO USER\n# Page 1351\n#\n# GENERAL INFORMATION\n# -------------------\n#\n# ALARM OR ABORT EXIT MODE --\n#\tPRIOBORT\tTC\tABORT\n#\t\t\tOCT\t1502\n#\n#\tPRIOBORT IS BRANCHED TO WHEN (1) A NORMAL DISPLAY IS REQUESTED AND ANOTHER NORMAL DISPLAY IS ALREADY ACTIVE\n#\t(REFLASH AND REGODSP ARE EXCEPTIONS) OR (2) A PRIORITY DISPLAY IS REQUESTED WHEN ANOTHER PRIORITY DISPLAY IS\n#\tALREADY ACTIVE (A PRIORITY WITH LINUS BIT14 IS AN EXCEPTION).\n#\n# ERASABLE INITIALIZATION REQUIRED --\n#\tACCOMPLISHED BY FRESH START --\t1.  FLAGWRD4 (USED EXCLUSIVELY BY DISPLAY INTERFACE ROUTINES)\n#\t\t\t\t\t2.  NVSAVE = NORMAL VERB AND NOUN REGISTER.\n#\t\t\t\t\t3.  EBANKTEM = NORMAL INACTIVE FLAGWORD (ALSO CONTAINS NORMALS EBANK).\n#\t\t\t\t\t5.  R1SAVE = MARKBRAN CONTROL WORD\n#\t\t\t\t\t4.  RESTREG = PRIORITY 30 AND SUPERBANK 3.\n#\n# OUTPUT --\n#\tNVWORD = PRIO VERB AND NOUN\n#\tNVWORD +1 (MARKNV) = MARK VERB AND NOUN\n#\tNVWORD +2 (NVSAVE) = NORMAL VERB AND NOUN\n#\tDSPFLG (EBANKSAV) = PRIO FLAGWORD (INCLUDING EBANK)\n#\tDSPFLG +1 (MARKEBAN) = MARK FLAGWORD (INCLUDING EBANK)\n#\tDSPFLG +2 (EBANKTEM) = NORMAL FLAGWORD (INCLUDING EBANK)\n#\tCADRFLSH = PRIO USER'S CALL CADR +1 LOCATION\n#\tCADRFLSH +1 (MARKFLSH) = MARK USER'S CALL CADR +1 LOCATION\n#\tCADRFLSH +2 (TEMPFLSH) = NORMAL USER'S CALL CADR +1 LOCATION\n#\tPRIOTIME = TIME EACH PRIO REQUEST FIRST SENT OUT\n#\tOPTION1 = DESIRED OPTION FROM GOPERF4\n#\tFLAGWRD4 = BIT INFO FOR CONTROL OF ALL DISPLAY ROUTINES\n#\tDSPTEM1 = R1 INFO FOR ASTRONAUT FROM PERFORM DISPLAYS (NORMAL)\n#\n# SUBROUTINES USED -- NVSUB, FLAGUP, FLAGDOWN, ENDOFJOB, BLANKSUB, ABORT, JOBWAKE, JOBSLEEP, FINDVAC, PRIOCHNG,\n#\tJAMTERM, NVSUBUSY, FLASHON, ENDIDLE, CHANG1, BANKJUMP, MAKECADR, NOVAC\n#\n# DEBRIS -- (STORED INTO)\n#\tTEMPORARY TEMPORARIES -- A, Q, L, MPAC +2, MPAC +3, MPAC +4, MPAC +5, MPAC +6, RUPREG2, RUPTREG3, CYL,\n#\t\tEBANK, RUPTREG4, LOC, BANKSET, MODE, MPAC, MPAC +1, FACEREG\n#\tERASABLES (SHARED AND USED WITH OTHER PROGRAMS) -- CADRSTOR, DSPLIST, LOC, DSPTEM1, OPTION1\n#\tERASABLES (USED ONLY BY DISPLAY ROUTINES) -- NVWORD,+1,+2, DSPFLAG,+1,+2, CADRFLSH,+1,+2, PRIOTIME, FLAGWRD4,\n# Page 1352\n#\t\tR1SAVE, MARK2PAC\n#\n# DEBRIS -- (USED BUT NOT STORED INTO) -- NOUNREG, VERBREG, LOCCTR, MONSAVE1\n#\n# FLAGWORD DESCRIPTIONS --\n#\tFLAGWRD4 -- SEE DESCRIPTION UNDER LOG SECTION ERASABLE ASSIGNMENTS\n#\n#\tDSPFLG, DSPFLG+1, DSPFLG+2\n#\t--------------------------\n#\tBITS 1\tBLANK R1\n#\t     2\tBLANK R2\n#\t     3\tBLANK R3\n#\t     4\tFLASHING DISPLAY REQUESTED\n#\t     5\tPERFORM DISPLAY REQUESTED\n#\t     6\t-----\t\t\tEXDSPRET\t\tGODSPRET\n#\t     7\tPRIO DISPLAY\t\t-----\t\t\t-----\n#\t     8\t-----\t\t\tDEC MARK PERFORM\t-----\n#\t     9\tEBANK\n#\t    10\tEBANK\n#\t    11\tEBANK\n#\t    12\t-----\t\t\t-----\t\t\tV99PASTE\n#\t    13\t2ND PART OF PERFORM\n#\t    14\tREFLASH OR REDO\t\t-----\t\t\tREFLASH OR REDO\n#\t    15\t-----\t\t\tMARK REQUEST\t\t-----\n#\n# RESTARTING DISPLAYS --\n#\n# RULES FOR THE DSKY OPERATOR --\n#\t1.  PROCEED AND TERMINATE SERVE AS RESPONSES TO REQUESTS FOR OPERATOR RESPONSE (FLASHING V/N).  AS LONG\n#\t    AS THERE IS ANY REQUEST AWAITING OPERATOR RESPONSE, ANY USE OF PROCEED OR TERMINATE WILL SERVE AS\n#\t    RESPONSES TO THAT REQUEST.  CARE SHOULD BE EXERCISED IN ATTEMPTING TO KILL AN OPERATOR INITIATED MONITOR\n#\t    WITH PROCEED AND TERMINATE FOR THIS REASON.\n#\t2.  THE ASTRONAUT MUST RESPOND TO A PRIORITY DISPLAY NO SOONER THAN 2 SECONDS FROM THE TIME THE\n#\t    PROGRAM SENT OUT THE REQUEST FOR OPERATOR RESPONSE (THE ASTRONAUT WOULD SEE THIS DISPLAY FOR LESS TIME\n#\t    DUE TO TIME IT TAKES TO GET DISPLAY SENT OUT.)  IF THE ASTRONAUT RESPONDS TOO SOON, THE PRIORITY DISPLAY\n#\t    IS SENT OUT AGAIN -- AND AGAIN UNTIL AN ACCUMULATED 2 SECS FROM THE TIME THE FIRST PRIORITY DISPLAY\n#\t    OUT.  THE SAME 2 SEC. DELAY WILL OCCUR AT 163.84 SECS OR IN ANY MULTIPLE OF THAT TIME DUE TO PROGRAM\n#\t    CONSIDERATION.\n#\t3.  KEY RELEASE BUTTON --\n#\t    A)  IF THE KEY RELEASE LIGHT IS ON, IT SIMPLY RELEASES THE KEYBOARD AND DISPLAY FOR INTERNAL USE.\n#\t    B)  IF THE KEY RELEASE LIGHT IS OFF, AND IF SOME REQUEST FOR OPERATOR RESPONSE (FLASHING V/N) IS STILL\n#\t        AWAITING RESPONSE THEN IT RE-ESTABLISHES THE DISPLAYS THAT ORIGINALLY REQUESTED RESPONSE.\n#\t    IF AN OPERATOR WANTS THEREFORE TO RE-ESTABLISH BUT CONDITION (A) IS ENCOUNTERED, A SECOND DEPRESSION OF\n#\t    KEY RELEASE BUTTON MAY BE NECESSARY.\n#\t4.  IT IS IMPORTANT TO ANSWER ALL REQUESTS FOR OPERATOR RESPONSE.\n#\t5.  IT IS ALWAYS GOOD PRACTICE TO TERMINATE AN EXTENDED VERB BEFORE ASKING FOR ANOTHER ONE OR THE SAME ONE\n#\t    OVER AGAIN.\n#\n# SPECIAL CONSIDERATONS --\n# Page 1353\n#\t1.  MPAC +2 SAVED ONLY IN MARK DISPLAYS\n#\t2.  GODSP(R), REGODSP(R), GOMARK(R) ALWAYS TURN ON THE FLASH IF ENTERED WITH A PASTE VERB REQUEST.\n#\t3.  ALL NORMAL DISPLAYS ARE RESTARTABLE EXCEPT GODSP(R), REGODSP(R)\n#\t4.  ALL EXTENDED VERBS WITH DISPLAYS SHOULD START WITH A TC TESTXACT AND FINISH WITH A TC ENDEXT.\n#\t5.  GODSP(R) AND REGODSP(R) MUST BE IN THE SAME EBANK AND SUPERBANK AS THE LAST NORMAL DISPLAY RESTARTED\n#\t    BY A .1 RESTART PHASE CHANGE.\n#\t6.  IN ORDER TO SET UP A NON DISPLAY .1 RESTART POINT, THE USER MUST MAKE CERTAIN THAT RESTREG CONTAINS THE\n#\t    CORRECT PRIORITY AND SUPERBANK AND THAT EBANKTEM CONTAINS THE CO\n#\t7.  IF CLEANDSP IS RESTARTED VIA A .1 PHASE CHANGE, CAF ZERO SHOULD BE EXECUTED BEFORE THE TC BANKCALL.\n\n# Page 1354\n# CALLING SEQUENCE FOR BLANKING\n#\t\tCAF\tBITX\t\t# X=1,2,3 BLANK R1,R2,R3 RESPECTIVELY\n#\t\tTC\tBLANKET\n#\t\t...\t...\t\t# RETURN TO USER HERE\n# IN ORDER TO USE BLANKET CORRECTLY, THE USER MUST USE A DISPLAY ROUTINE THAT ENDS IN R FIRST FOLLOWED BY THE CALL\n# TO BLANKET AT THE IMMEDIATE RETURN LOC.\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG4\n\t\tBANK\n\n\t\tCOUNT*\t$$/DSPLA\nBLANKET\t\tTS\tMPAC \t+6\n\t\tCS\tPLAYTEM4\n\t\tMASK\tMPAC \t+6\n\t\tINDEX\tMPAC \t+5\n\t\tADS\tPLAYTEM4\n\n\t\tTC\tQ\n\nENDMARK\t\tTC\tPOSTJUMP\n\t\tCADR\tMARKEND\n\nCLEARMRK\tCAF\tZERO\n\t\tTS\tEXTVBACT\n\n +2\t\tINHINT\n\t\tCS\tXDSPBIT\n\t\tMASK\tFLAGWRD4\n\t\tTS\tFLAGWRD4\n\n\t\tRELINT\n\t\tTC\tQ\n\n# *** ALL EXTENDED VERB ROUTINES THAT HAVE AT LEAST ONE FLASHING DISPLAY MUST TCF ENDMARK OR TCF ENDEXT WHEN\n# FINISHED.\n\n\t\tBANK\t10\n\t\tSETLOC\tDISPLAYS\n\t\tBANK\n\n\t\tCOUNT*\t$$/DSPLA\n\n# NTERONLY IS USED TO DIFFERENTIATE THE MARK ROUTINE WITH ONLY ONE RETURN TO THE USER FROM THE MARKING ROUTINE WITH\n# 3 RETURNS TO THE USER.  THIS ROUTINE IS ONLY USED BY GOMARK1 AND GOMARK1R.\n\nMARKEND\t\tTC\tCLEARMRK\n\t\tTCF\tMARKOVER\n\nGOMARK\t\tTS\tPLAYTEM1\t# ENTRANCE FOR MARK GODSP\n# Page 1355\nGOMARS\t\tCAF\tBIT15\t\t# BIT15 SET FOR ALL MARK REQUESTS\n\t\tTCF\tGOFLASH2\n\nKLEENEX\t\tCAF\tZERO\t\t# CLEAN OUT EXTENDED VERBS\nGOMARKF\t\tTS\tPLAYTEM1\t# ENTRANCE FOR MARK GOFLASH\n\n\t\tCAF\tMARKFMSK\t# MARK, FLASH\n\t\tTCF\tGOFLASH2\n\nGOMARK2\t\tTS\tPLAYTEM1\t# MARK GOPERFS-3 AST. RETURNS\nMARKFORM\tCAF\tMPERFMSK\t# MARK, PERFORM, FLASH\n\t\tTCF\tGOFLASH2\n\nGOMARK3\t\tTS\tPLAYTEM1\t# USED FOR 3COMP DECIMAL PERFORM\n\t\tCAF\tMARK3MSK\n\t\tTCF\tGOFLASH2\n\nGOMARK4\t\tTS\tPLAYTEM1\n\t\tCAF\tMARK4MSK\t# MARK,PERFORM,FLASH,BLANK\n\t\tTCF\tGOFLASH2\n\nGOMARKR\t\tTS\tPLAYTEM1\t# ENTRANCE FOR MARK GODSPR\n\n\t\tCAF\tBIT15\n\t\tTCF\tGODSPR2\n\nGOMARKFR\tTS\tPLAYTEM1\t# ENTRANCE FOR MARK GOFLASHR\n\n\t\tCAF\tMARKFMSK\n\t\tTCF\tGODSPRS\n\nGOMARK2R\tTS\tPLAYTEM1\t# MARK GOPERFS-3 AST. RETS+ IMMEDIATE RET.\n\t\tCAF\tMPERFMSK\t# MARK, PERFORM, FLASH\n\t\tTCF\tGODSPRS\n\nGOMARK3R\tTS\tPLAYTEM1\n\t\tCAF\tMARK3MSK\n\t\tTCF\tGODSPRS\n\nMAKEMARK\tCAF\tONE\n\t\tTC\tCOPIES\n\n\t\tCA\tFLAGWRD4\t# IS NORM OR PRIO BUSY OR WAITING\n\t\tMASK\tOCT34300\n\t\tCCS\tA\n\t\tTCF\tCHKPRIO\n\n\t\tCA\tFLAGWRD4\t# IS MARK SLEEPING DUE TO ASTRO BUSY\n\t\tMASK\tMRKNVBIT\n\n\t\tEXTEND\n# Page 1356\n\t\tBZF\tMARKPLAY\t# NO\n\n\t\tTCF\tENDOFJOB\n\nMARKPLAY\tINHINT\n\t\tCS\tFIVE\t\t# RESET MARK OVER NORM, SET MARK\n\t\tMASK\tFLAGWRD4\n\t\tAD\tONE\n\t\tTS\tFLAGWRD4\n\t\tRELINT\n\nGOGOMARK\tCS\tMARKFLAG\t# PERFORM\n\t\tMASK\tBIT5\n\t\tCCS\tA\n\t\tTCF\tMARKCOP\n\t\tCS\tMARKNV\n\t\tTS\tMARKNV\n\nMARKCOP\t\tCAF\tONE\t\t# MARK INDEX\n\t\tTCF\tPRIOPLAY\n\nCOPYTOGO\tCA\tMPAC2SAV\n\t\tTS\tMPAC \t+2\n\nCOPYPACS\tINDEX\tCOPINDEX\n\t\tCAF\tPRIOOCT\n\t\tTS\tGENMASK\n\n\t\tINDEX\tCOPINDEX\n\t\tCAF\tEBANKSAV\n\t\tTS\tTEMPOR2\t\t# ACTIVE EBANK AND FLAG\n\n\t\tTS\tEBANK\n\n\t\tTC\tQ\n\n# PINCHEK CHECKS TO SEE IF THE CURRENT MARK REQUEST IS MADE BY THE ASTRONAUT WHILE INTERUPTING A GOPLAY DISPLAY\n# (A NORMAL OR A PRIO).  IF THE ASTRONAUT TRIES TO MARK DURING A PRIO, THE CHECK FAIL LIGHT GOES ON AND THE MARK\n# REQUEST IS ENDED.  IF HE TRIES TO MARK DURING A NORM, THE MARK IS ALLOWED.  IN THIS CASE THE NORM IS PUT TO SLEEP\n# UNTIL ALL MARKING IS FINISHED.\n#\n# IF THE MARK REQUEST COMES FROM THE PROGRAM DURING A TIME THE ASTRONAUT IS NOT INTERRUPTING A NORMAL OR A\n# PRIO, THE MARK REQUEST IS PUT TO SLEEP UNTIL THE PRESENT ACTIVE DISPLAY IS RESPONDED TO BY THE ASTRONAUT.\n\nCHKPRIO\t\tCA\tFLAGWRD4\t# MARK ATTEMPT DURING PRIO\n\t\tMASK\tOCT24100\n\t\tCCS\tA\n\t\tTCF\tMARSLEEP\n\n\t\tCS\tFLAGWRD4\n# Page 1357\n\t\tMASK\tMKOVBIT\t\t# SET MARK OVER NORM\n\t\tINHINT\n\t\tADS\tFLAGWRD4\n\n\t\tTCF\tSETNORM\n\nMARKPERF\tCA\tMARKNV\n\t\tMASK\tVERBMASK\n\t\tTCF\tNV50DSP\n\nGODSP\t\tTS\tPLAYTEM1\n\nGODSP2\t\tCAF\tZERO\n\t\tTCF\tGOFLASH2\n\nGODSPRET\tTS\tPLAYTEM1\t# ENTRANCE FOR A GODSP WITH A PASTE\n\n\t\tCAF\tBIT6\t\t# SET BIT6 TO GO BACK TO USER AFTER NVSUB\n\t\tTCF\tGOFLASH2\n\nGODSPR\t\tTS\tPLAYTEM1\n\nGODSPR1\t\tCAF\tZERO\nGODSPR2\t\tTS\tPLAYTEM4\n\n\t\tCAF\tZERO\t\t# * DON'T MOVE\n\t\tTCF\tGODSPRS1\n\n# CLEANDSP IS USED FOR CLEARING OUT A NORMAL DISPLAY THAT IS PRESENTLY ACTIVE OR A NORMAL DISPLAY THAT IS\n# SET UP TO BE STARTED OR RESTARTED.\n#\n# NORMALLY THE USER WILL NOT NEED TO USE THIS ROUTINE SINCE A NEW NORMAL DISPLAY AUTOMATICALLY CLEARS OUT AN\n# OLD DISPLAY.\n#\n# CALLING SEQUENCE FOR CLEANDSP --\n#\n#\t\tTC\tBANKCALL\n#\t\tCADR\tCLEANDSP\n\nCLEANDSP\tCAF\tZERO\nREFLASH\t\tTS\tPLAYTEM1\n\n\t\tCAF\tREDOMASK\t# FLASH AND PERMIT\n\t\tTCF\tGOFLASH2\n\nREFLASHR\tTS\tPLAYTEM1\n\n\t\tCAF\tREDOMASK\t# FLASH AND PERMIT\n\t\tTCF\tGODSPRS\n\n# Page 1358\nREGODSP\t\tTS\tPLAYTEM1\n\n\t\tCAF\tBIT14\n\t\tTCF\tGOFLASH2\n\nREGODSPR\tTS\tPLAYTEM1\n\n\t\tCAF\tBIT14\n\t\tTCF\tGODSPR2\n\nCLOCPLAY\tTS\tPLAYTEM1\n\t\tCAF\tCLOCKCON\n\t\tTCF\tGOFLASH2\n\nGOFLASH\t\tTS\tPLAYTEM1\n\n\t\tCAF\tBIT4\t\t# LEAVE ONLY FLASH BIT SET\nGOFLASH2\tTS\tPLAYTEM4\n\n\t\tTC\tSAVELOCS\n\n\t\tRELINT\n\n\t\tTCF\tMAKEPLAY\t# BRANCH DIRECT WITH NO SEPARATE JOB CALL\n\nPRIODSPR\tTS\tPLAYTEM1\n\n\t\tCAF\tBITS7+4\n\t\tTCF\tGODSPRS\n\nPRIODSP\t\tTS\tPLAYTEM1\n\nSETPRIO\t\tCAF\tBITS7+4\n\t\tTCF\tGOFLASH2\n\nMAKEPRIO\tCAF\tZERO\n\t\tTS\tCOPINDEX\n\n\t\tTC\tLINUSCHR\n\t\tTCF\tHIPRIO\t\t# LINUS RETURN\n\t\tCA\tFLAGWRD4\n\t\tMASK\tOCT20100\t# IS PRIO IN ENDIDLE OR BUSY\n\t\tCCS\tA\n\t\tTCF\tPRIOBORT\t# YES, ABORT\n\nHIPRIO\t\tCA\tFLAGWRD4\t# MARK ACTIVE\n\t\tMASK\tOCT40400\n\t\tEXTEND\n\t\tBZF\tASKIFNRM\t# NO\n\n# Page 1359\nSETMARK\t\tCAF\tZERO\n\t\tTCF\tJOBXCHS\n\nASKIFNRM\tCA\tFLAGWRD4\t# NORMAL ACTIVE\n\t\tMASK\tOCT10200\t# BITS 13+8\n\t\tEXTEND\n\t\tBZF\tOKTOCOPY\t# NO\n\nSETNORM\t\tCAF\tONE\n\t\tTCF\tJOBXCHS\n\nOKTOCOPY\tTC\tCOPYNORM\n\t\tTC\tWITCHONE\n\n\t\tTC\tJOBWAKE\n\n\t\tTC\tXCHTOEND\n\nREDOPRIO\tCA\tTIME1\t\t# SAVE TIME PRIODSP SENT OUT\n\t\tTS\tPRIOTIME\n\nKEEPPRIO\tCAF\tZERO\t\t# START UP PRIO DISPLAY\n\t\tTCF\tPRIOPLAY\n\nMAKEPLAY\tCA\tPRIORITY\t# SAVE USER'S PRIORITY\n\t\tMASK\tPRIO37\n\t\tTS\tUSERPRIO\n\n\t\tCAF\tPRIO33\t\t# RAISE PRIORITY FOR FAST JOBS AFTER WAKE\n\t\tTC\tPRIOCHNG\n\n\t\tCA\tPLAYTEM4\t# IS IT MARK OR PRIO OR NORM\n\t\tMASK\tBITS15+7\n\t\tCCS\tA\n\t\tTCF\tMAKEPRIO\t# ITS PRIO\n\t\tTCF\tIFLEGAL\n\t\tTCF\tMAKEMARK\t# ITS MARK\n\nIFLEGAL\t\tCAF\tTWO\n\t\tTS\tCOPINDEX\n\n\t\tTC\tLINUSCHR\n\n\t\tTCF\tOKTOPLAY\t# LINUS RETURN\n\t\tCS\tEBANKTEM\n\t\tMASK\tBIT4\n\t\tCCS\tA\n\t\tTCF\tOKTOPLAY\t# NO\n\n\t\tCA\tFLAGWRD4\t# WAS NORM ASLEEP\n# Page 1360\n\t\tMASK\tNBUSMASK\t# ARE ANY NORMS ASLEEP\n\t\tEXTEND\n\t\tBZF\tOKTOPLAY\t# NO\n\nPRIOBORT\tTC\tPOODOO\n\t\tOCT\t1502\n\nOKTOPLAY\tTC\tCOPIES2\n\n\t\tCA\tUSERPRIO\n\t\tEXTEND\n\t\tROR\tSUPERBNK\n\t\tTS\tRESTREG\n\n\t\tCA\tFLAGWRD4\t# PRIO OR MARK GOING\n\t\tMASK\tPMMASK\n\t\tCCS\tA\n\t\tTCF\tGOSLEEPS\t# MARK GOING\n\n\t\tTCF\t+2\n\t\tTCF\tGOSLEEPS\n\n# COULD PUT NORM BUSY CHECK HERE TO SAVE TIME\n\n\t\tTC\tWITCHONE\t# IS IT NVSUB BUSY, ENDIDLE OR NOONE\n\t\tTC\tJOBWAKE\n\n\t\tTC\tXCHTOEND\n\nPLAYJUM1\tCAF\tTWO\nPRIOPLAY\tTS\tCOPINDEX\n\n\t\tTCF\tGOPLAY\n\nEXDSPRET\tTS\tPLAYTEM1\n\n\t\tCAF\tBIT15+6\n\t\tTCF\tGOFLASH2\n\nGOPERF1\t\tTS\tNORMTEM1\t# STORE DESIRED CHECKLIST VALUE\n\t\tCAF\tV01N25\t\t# USED TO DISPLAY CHECKLIST VALUE IN R1\n\nGOPERFS\t\tTS\tPLAYTEM1\n\n\t\tCAF\tPERFMASK\t# LEAVE ONLY FLASH, PERFORM, BLANKING\n\t\tTCF\tGOFLASH2\n\nGOPERF2\t\tTS\tPLAYTEM1\t# DESIRED VERB-NOUN TO DISPLAY R1,R2,R3\n\n\t\tCAF\tPERF2MSK\n\t\tTCF\tGOFLASH2\n\n# Page 1361\nGOPERF4\t\tTC\tPURRS4\n\n\t\tTCF\tGOFLASH2\n\nGOFLASHR\tTS\tPLAYTEM1\n\n\t\tCAF\tBIT4\t\t# LEAVE ONLY FLASH BIT SET\nGODSPRS\t\tTS\tPLAYTEM4\n\n\t\tCAF\tTHREE\n\nGODSPRS1\tINHINT\t\t\t# IMMEDIATE RETURN IS CALL CADR +4\n\t\tTS\tRUPTREG3\n\n\t\tCA\tPRIORITY\t# MAKE DISPLAY ONE HIGHER THAN USER\n\t\tMASK\tPRIO37\n\t\tTS\tNEWPRIO\n\n\t\tCA\tPLAYTEM4\t# IS THIS A FLASHING R DISPLAY\n\t\tMASK\tBIT4\n\t\tCCS\tA\n\t\tTCF\tVACDSP\t\t# YES, MAKE DSPLAY JOB A VAC\n\t\tCA\tNEWPRIO\t\t# NO, MAKE DSPLAY JOB A NOVAC\n\t\tTC\tNOVAC\n\t\tEBANK=\tWHOCARES\n\t\t2CADR\tMAKEPLAY\n\n\t\tTCF\tBOTHJOBS\n\nVACDSP\t\tCA\tBBANK\n\t\tEXTEND\n\t\tROR\tSUPERBNK\n\t\tTS\tL\n\t\tCAF\tMAKEGEN\n\t\tTC\tSPVAC\n\nBOTHJOBS\tTC\tSAVELOCS\t# COPY TEMPS INTO PERMANENT REGISTERS\n\n\t\tEXTEND\t\t\t# SAVE NVWORD AND USER'S MPAC +2\n\t\tDCA\tMPAC \t+1\n\t\tINDEX\tLOCCTR\n\t\tDXCH\tMPAC \t+1\n\n\t\tEXTEND\t\t\t# SAVE USER'S CADR, FLAGS AND EBANK\n\t\tDCA\tMPAC \t+3\n\t\tINDEX \tLOCCTR\n\t\tDXCH\tMPAC \t+3\n\n\t\tCA\tLOCCTR\n\t\tTS\tMPAC \t+5\n# Page 1362\n\t\tTC\tSAVELOCR\n\t\tRELINT\n\n\t\tTCF\tBANKJUMP\t# CALL CADR +4\n\nGOPERF1R\tTS\tNORMTEM1\t# DESIRED CHECKLIST VALUE\n\n\t\tCAF\tV01N25\t\t# DISPLAYS CHECKLIST VALUE IN R1\n\nGOPERFRS\tTS\tPLAYTEM1\n\n\t\tCAF\tPERFMASK\t# LEAVE ONLY FLASH, PERFORM, BLANKING\n\t\tTCF\tGODSPRS\n\nGOPERF2R\tTS\tPLAYTEM1\t# DESIRED VERB-NOUN TO DISPLAY R1,R2,R3\n\n\t\tCAF\tPERF2MSK\n\t\tTCF\tGODSPRS\n\nGOPERF4R\tTC\tPURRS4\n\n\t\tTCF\tGODSPRS\n\nPURRS4\t\tTS\tOPTION1\t\t# DESIRED OPTION CODE\n\n\t\tCAF\tV04N06\n\t\tTS\tPLAYTEM1\n\n\t\tCAF\tPERF4MSK\t# FLASH, PERFORM AND EBANK R3\n\t\tTC\tQ\n\nSAVELOCS\tINHINT\n\n\t\tCS\tOCT3400\t\t# EBANK BITS\n\t\tMASK\tPLAYTEM4\n\t\tAD\tEBANK\n\t\tTS\tPLAYTEM4\n\nSAVELOCR\tLXCH\tQ\n\n\t\tTC\tMAKECADR\n\t\tTS\tPLAYTEM3\n\n\t\tAD\tRUPTREG3\t# NOT USED FOR NON R ROUTINES\n\t\tTC\tL\n\nCOPYNORM\tCAF\tZERO\nCOPIES\t\tTS\tCOPINDEX\nCOPIES2\t\tINHINT\n\t\tCA\tPLAYTEM4\t# FLAGWORD\n\n# Page 1363\n\t\tINDEX\tCOPINDEX\n\t\tTS\tEBANKSAV\t# EQUIV TO DSPFLG\n\n\t\tMASK\tCADRMASK\t# FLASH AND GODSPRET\n\t\tEXTEND\n\t\tBZF\tSKIPADD\n\n\t\tCA\tPLAYTEM3\n\t\tINDEX\tCOPINDEX\n\t\tTS\tCADRFLSH\n\nSKIPADD\t\tCA\tPLAYTEM1\t# VERB NOUN\n\t\tINDEX\tCOPINDEX\n\t\tTS\tNVWORD\n\n\t\tTCF\tRELINTQ\n\nGOSLEEPS\tINDEX\tCOPINDEX\n\t\tCA\tPRIOOCT\n\t\tMASK\tWAITMASK\n\t\tTC\tUPENT2\nWAITMASK\tOCT\t3004\n\t\tCS\tONE\n\t\tAD\tCOPINDEX\n\t\tTS\tFACEREG\n\nXCHSLEEP\tINDEX\tFACEREG\n\t\tCAF\tWAKECADR\n\t\tINHINT\n\t\tTC\tJOBWAKE\t\t# FIND CADR IN JOB AREA\n\n\t\tTC\tXCHTOEND\t# CAUSES AWAKENED JOB TO GO TO ENDOFJOB\n\n\t\tINDEX\tFACEREG\t\t# REPLACE SAME CADR BUT NEW JOB AREA\n\t\tCAF\tWAKECADR\n\t\tTCF\tJOBSLEEP\n\nJOBXCHS\t\tTS\tFACEREG\t\t# CONTROLS TYPE OF DISPLAY PUT TO SLEEP\n\t\tTC\tWITCHONE\n\t\tTC\tJOBWAKE\n\t\tCA\tFACEREG\n\t\tINDEX\tLOCCTR\n\t\tTS\tFACEREG\n\n\t\tCAF\tXCHQADD\n\t\tTC\tXCHNYLOC\n\n\t\tINDEX\tFACEREG\n\t\tCA\tMARKOCT\n\t\tMASK\tIDLESLEP\n\n# Page 1364\n\t\tTC\tDOWNENT2\nIDLEMASK\tOCT\t74004\t\t# * DON'T MOVE\n\n\t\tINDEX\tFACEREG\t\t# BIT SHOWS PRIO INTERRUPTED NORM OR MARK\n\t\tCA\tBIT5\t\t# BIT5 FOR MARK, BIT4 FOR NORMAL\n\t\tAD\tFOUR\n\t\tTC\tUPENT2\t\t# FLAG ROUTINE DOES RELINT\nXCHQADD\t\tGENADR\tXCHSLEEP\t# * DON'T MOVE\n\t\tCA\tFLAGWRD4\n\t\tMASK\tMKOVBIT\t\t# MARK OVER NORM?\n\t\tCCS\tA\nGENMARK\t\tTC\tMARKPLAY\t# USED AS GENADR FOR JOBWAKE\n\t\tTCF\tOKTOCOPY\n\nMARKWAKE\tCAF\tZERO\nWAKEPLAY\tTS\tTEMPOR2\n\n\t\tINDEX\tTEMPOR2\n\t\tCA\tBITS5+11\n\t\tAD\tFOUR\n\t\tTC\tDOWNENT2\nMARKFMSK\tOCT\t40010\t\t# *** DON'T MOVE\n\n\t\tINDEX\tTEMPOR2\n\t\tCAF\tWAKECADR\n\t\tINHINT\n\t\tTC\tJOBWAKE\n\n\t\tTCF\tENDRET\n\n# ALL .1 RESTARTS BRANCH DIRECTLY TO INITDSP.  NORMAL DISPLAYS ARE THE ONLY DISPLAYS ALLOWED TO USE .1 RESTARTS\n# INITDSP FIRST RESTORES THE EBANK AND THE SUPERBANK TO THE MOST RECENT NORMAL EBANK AND SUPERBANK.\n#\n# IF THE MOST RECENT NORMAL DISPLAY REQUEST WAS NOT FINISHED, CONTROL IS SENT BACK TO THE LAST NORMAL USER.\n# OTHERWISE THE NORMAL DISPLAY SET UP IN THE NORMAL DISPLAY REGS IS STARTED UP IMMEDIATELY.\n\nINITDSP\t\tCA\tEBANKTEM\t# RESTORE MOST RECENT NORMAL EBANK\n\t\tTS\tEBANK\n\n\t\tCA\tRESTREG\t\t# SUPERBANK AND JOB PRIORITY\n\t\tTC\tSUPERSW\t\t# RESTORE SUPERBANK\n\n\t\tMASK\tPRIO37\n\t\tTC\tPRIOCHNG\n\n\t\tCS\tTHREE\n\t\tAD\tTEMPFLSH\n\t\tTCF\tBANKJUMP\n\nPINBRNCH\tRELINT\t\t\t# FOR GOPIN USERS\n\t\tCA\tMARK2PAC\t# NEEDED TO SAVE MPAC +2 FOR MARK USERS\n# Page 1365\n\t\tTS\tMPAC \t+2\t# ONLY\n\n\t\tCA\tFLAGWRD4\t# PINBRANCH CONDITION\n\t\tMASK\tPINMASK\n\t\tCCS\tA\n\t\tTCF\t+3\n\t\tTCF\tERASER\t\t# ** NOTHING IN ENDIDLE\n\t\tTCF\tMARKPLAY\n\nNORMBNCH\tTC\tUPFLAG\t\t# SET PINBRANCH BIT\n\t\tADRES\tPINBRFLG\n\n\t\tCAF\tPRIODBIT\t# PRIO INTERRUPTED\n\t\tMASK\tFLAGWRD4\n\t\tCCS\tA\n\t\tTCF\tKEEPPRIO\n\n\t\tTCF\tPLAYJUM1\n\nNVDSP\t\tTC\tCOPYPACS\n\n\t\tCA\tTEMPOR2\t\t# SET UP BLANK BITS FOR NVMONOPT IN CASE\n\t\tMASK\tSEVEN\t\t# USER REQUESTS BLANKING MONITOR\n\t\tTS\tL\n\n\t\tCS\tBIT13\n\t\tINDEX\tCOPINDEX\n\t\tMASK\tDSPFLG\n\t\tINDEX\tCOPINDEX\n\t\tTS\tDSPFLG\n\n\t\tMASK\tBIT8\t\t# BIT8 SET IF DEC MARK PERFORM DISPLAY\n\t\tTS\tTEM1\n\n\t\tCA\tMPAC \t+2\n\t\tTS\tMPAC2SAV\n\n\t\tTS\tMARK2PAC\t# * FOR DISK ONLY *\n\t\tINDEX\tCOPINDEX\n\t\tCCS\tNVWORD\n\t\tTCF\tNVDSP1\n\t\tTCF\tCLEANEND\n\t\tCS\tMARKNV\n\t\tTS\tMARKNV\t\t# IN CASE MARKPLAY AWAKENED AFTER SLEEPING\n\t\tMASK\tLOW7\n\t\tAD\tV05N00M1\n\t\tAD\tTEM1\nNVDSP1\t\tAD\tONE\nNV50DSP\t\tTC\tNVMONOPT\n\t\tTCF\tREST\t\t# IF BUSY\n\n# Page 1366\n\t\tTC\tFLASHOFF\t# IN CASE OF EXTENDED VERB NON-FLASH\n\n\t\tTC\tCOPYTOGO\t# MPACS DESTROYED BY NVSUB\n\t\tTC\tDOWNFLAG\t# UNSET SLEEPING BITS\n\t\tADRES\tMRKNVFLG\n\t\tTC\tDOWNFLAG\n\t\tADRES\tNRMNVFLG\n\t\tTC\tDOWNFLAG\n\t\tADRES\tPRONVFLG\nBLANKCHK\tCA\tTEMPOR2\t\t# BLANK BITS 1,2,3 IF SET\n\t\tTC\tBLANKSUB\n\t\tTCF\tNVDSP\nPERFCHEK\tCAF\tBIT5\t\t# BIT5 FOR PERFORM\n\t\tMASK\tTEMPOR2\n\t\tCCS\tA\t\t# IS THIS A GOPERF DISPLAY\n\t\tTCF\t1STOR2ND\t# YES\n\nGOANIDLE\tCAF\tBIT4\n\t\tMASK\tTEMPOR2\n\t\tCCS\tA\n\t\tTCF\tFLASHSUB\t# IT IS\n\n\t\tCS\tTEMPOR2\t\t# IS THIS A GODSPRET\n\t\tMASK\tBIT6\n\t\tCCS\tA\n\t\tTCF\tISITN00\n\n\t\tINDEX\tCOPINDEX\n\t\tCA\tCADRFLSH\n\t\tTS\tMPAC \t+3\n\t\tTCF\tENDIT\n\nISITN00\t\tINDEX\tCOPINDEX\t# IS THIS A PASTE\n\t\tCA\tNVWORD\n\t\tMASK\tLOW7\t\t# CHECK MADE FOR PINBRNCH AND PRIO ON MARK\n\t\tEXTEND\n\t\tBZF\tFLASHSUB\t# YES, ASSUME PASTE ALWAYS ON FLASH\n\n\t\tTCF\tENDOFJOB\t# NOT FLASH, NOT GOPERF, THEREFORE EXIT\n\n1STOR2ND\tCA\tTEMPOR2\n\t\tMASK\tBIT13\n\t\tCCS\tA\n\t\tTCF\tGOANIDLE\t# SECOND\n\n\t\tCA\tBIT13\n\t\tINDEX\tCOPINDEX\n\t\tADS\tDSPFLG\n\n\t\tZL\n# Page 1367\n\t\tEXTEND\t\t\t# IS IT MARK\n\t\tBZMF\tMARKPERF\t# YES\n\n\t\tMASK\tBIT12\n\t\tEXTEND\n\t\tBZF\tV50PASTE\n\t\tCS\tNVWORD1\t\t# NVOWRD1= -0 IS V97.  NVWORD1= -400 IS V99\n\t\tAD\tV97N00\n\t\tTCF\tNV50DSP\nV50PASTE\tCAF\tV50N00\n\t\tTCF\tNV50DSP\t\t# DISPLAY SECOND PART OF GOPERF\n\nWITCHONE\tCS\tBIT5\t\t# TURN OFF KEY RELEASE LIGHT\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\n\n\t\tCA\tFLAGWRD4\n\t\tMASK\tNVBUSMSK\t# IS IT NVSUB ALEEP\n\t\tCCS\tA\n\t\tCAF\tONE\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tINDEX\tL\n\t\tXCH\tCADRSTOR\n\n\t\tINHINT\n\t\tTC\tQ\n\nXCHTOEND\tCAF\tENDINST\t\t# TC ENDOFJOB REPLACES GENADR IN LOC FOR\nXCHNYLOC\tXCH\tLOCCTR\t\t# WAS THIS ADDRESS SLEEPING\n\t\tEXTEND\n\t\tBZMF\tRELINTQ\t\t# NO\n\t\tXCH\tLOCCTR\t\t# YES\n\t\tINDEX\tLOCCTR\n\t\tTS\tLOC\n\nRELINTQ\t\tRELINT\n\t\tTC\tQ\t\t# BACK TO USER\n\nCLEANEND\tCAF\tPRIO32\t\t# ONE LOWER THAN DISPLAYS SLEEPING\n\t\tTC\tFINDVAC\n\t\tEBANK=\tNVSAVE\n\t\t2CADR\tJAMTERM\n\n\t\tTCF\tFLASHSUB +1\n\nISITPRIO\tCA\tFLAGWRD4\n\t\tMASK\tITISMASK\t# IS PINBRFLG, MARKIDFLG SET\n\t\tEXTEND\n# Page 1368\n\t\tBZF\tPRIOBORT\n\t\tTCF\tENDOFJOB\n\nREST\t\tCCS\tCADRSTOR\t# IS SOMEONE IN ENDIDLE\n\t\tTCF\tENDOFJOB\t# YES\n\t\tTCF\tRESTSLEP\n\n\t\tTCF\tENDOFJOB\n\nRESTSLEP\tCA\tGENMASK\t\t# SET NVSLEEP BITS\n\t\tMASK\tASTROMSK\n\t\tTC\tUPENT2\nOCT24100\tOCT\t24100\t\t# *** DON'T MOVE\n\n\t\tINDEX\tCOPINDEX\n\t\tCAF\tNVCADR\n\t\tTC\tNVSUBUSY\t# BUSY OR ABORT IF ILLEGAL\n\nFLASHSUB\tTC\tFLASHON\n\n\t\tCA\tCOPINDEX\t# COPINDEX DESTROYED BY ENDIDLE\n\t\tTS\tCOPMPAC\n\n\t\tCA\tGENMASK\n\t\tMASK\tIDLEMASK\n\t\tTC\tUPENT2\nITISMASK\tOCT\t40040\t\t# *** ENDIDLE ALLOW *** DON'T MOVE\n\n\t\tCA\tR1SAVE\t\t# IS THIS A REPEAT AND RETURN DISPLAY\n\t\tINDEX\tCOPINDEX\n\t\tMASK\tBIT3\n\t\tCCS\tA\n\t\tTCF\tUNSETR1\t\t# YES\n\n\t\tCCS\tCADRSTOR\t# SEE IF SOMEONE ALREADY IN ENDIDLE\n\t\tTCF\tISITPRIO\n\t\tTCF\t+2\n\t\tTCF\tISITPRIO\n\n\t\tTC\tENDIDLE\nIDLERET1\tTCF\tTERMATE\n\n\t\tTCF\tPROCEED\t\t# ENDIDLE RETURNS HERE ON PROCEED\n\n\t\tCS\tLOWLOAD\n\t\tAD\tMPAC\t\t# VERBREG\n\t\tEXTEND\n\t\tDIM\tA\n\t\tEXTEND\n\t\tBZF\tLOADITIS\t# V21 OR V22 OR V23 ON DSKY\n\n# Page 1369\nOKTOENT\t\tCAF\tTWO\nENDOUT\t\tTS\tOUTHERE\n\n\t\tCA\tFLAGWRD4\t# CHECK NATURE OF ENDIDLE RETURN\n\t\tMASK\tOCT60000\n\t\tCCS\tA\n\t\tTCF\tTIMECHEK\t# PRIO ENDIDLE RETURN\n\t\tTCF\tNORMRET\t\t# NORMAL ENDIDLE RETURN\n\t\tTCF\tMARKRET\t\t# MARK ENDIDLE RETURN\n\nTIMECHEK\tCS\tTIME1\n\t\tAD\tPRIOTIME\n\t\tCCS\tA\n\t\tCOM\n\t\tAD\tOCT37776\n\t\tAD\tONE\n\t\tAD\t-2SEC\n\t\tEXTEND\n\t\tBZMF\tKEEPPRIO\n\n\t\tTCF\tNORMRET\n\nNORMWAKE\tCAF\tONE\n\t\tTCF\tWAKEPLAY\n\nENDRET\t\tCCS\tOUTHERE\n\t\tAD\tONE\n\t\tTCF\t+2\t\t# NORMAL ENDIDLE EXIT\n\t\tTCF\tENDOFJOB\n\t\tINDEX\tCOPMPAC\n\t\tAD\tCADRFLSH\n\t\tTS\tMPAC \t+3\n\n\t\tCA\tGENMASK\t\t# REMOVE ENDIDLE AND PINBRANCH BITS\n\t\tMASK\tPINIDMSK\n\t\tTC\tDOWNENT2\nPINIDMSK\tOCT\t74044\t\t# *** DON'T MOVE\n\n\t\tCS\tTHREE\t\t# BLANK EVERYTHING EXCEPT MM\n\t\tTC\tNVSUB\n\t\tTCF\t+1\n\nENDIT\t\tCA\tUSERPRIO\t# RETURN TO USER'S PRIORITY\n\t\tMASK\tPRIO37\n\t\tTC\tPRIOCHNG\n\t\tCA\tMPAC \t+3\n\t\tTCF\tBANKJUMP\n\nUNSETR1\t\tINDEX\tCOPINDEX\t# RESET REPEAT AND RETURN REQUEST\n\t\tCS\tBIT3\n# Page 1370\n\t\tMASK\tR1SAVE\n\t\tTS\tR1SAVE\n\n\t\tCAF\tZERO\t\t# *** 205 ONLY MARKBRAN USERS IN\n\t\tTC\tSUPERSW\t\t# SUPERBANK 0\n\n -1\t\tCAF\tTHREE\t\t# RETURN TO USER'S IMMEDIATE RETURN LOC\nIMMEDRET\tINDEX\tCOPINDEX\n\t\tAD\tCADRFLSH\n\t\tTCF\tBANKJUMP\n\nTERMATE\t\tCAF\tZERO\t\t# ASTRONAUT TERMINATE (V34) RETURNS TO\n\t\tTCF\tENDOUT\n\nLINUSCHR\tCS\tPLAYTEM4\t# IS THIS A LINUS\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tTCF\tQ+1\t\t# NO\n\t\tCS\tPLAYTEM3\t# YES, IS IT ALREADY IN ENDIDLE\n\t\tINDEX\tCOPINDEX\n\t\tAD\tCADRFLSH\n\t\tEXTEND\n\t\tBZF\t+2\t\t# YES\n\n\t\tTC\tQ\t\t# NO\n\t\tCCS\tDSPLOCK\t\t# IS THE ASTRONAUT BUSY\n\t\tTC\tENDOFJOB\t# END THE NEW DISPLAY, IT'S ALREADY ACTIVE\n\t\tTC\tQ\n\n# MORE LOGIC COULD BE INCORPORATED HERE TO MAKE SURE A RECYCLE IS A RECYCLE AND CONVERSELY THAT A LOAD IS A LOAD\n\nPROCEED\t\tCAF\tONE\t\t# ASTRONAUT PROCEED (V33) RETURNS\n\t\tTCF\tENDOUT\n\n# LASTPLAY CHECKS TO SEE IF (1) THE LAST NORMAL DISPLAY WAS EITHER INTERRUPTED BY A PRIO OR A MARK (MARK\n# COULD ONLY HAPPEN DURING PINBRANCH) OR IF (2) THE LAST NORMAL DISPLAY WAS REQUESTED WHILE A HIGHER PRIORITY\n# DISPLAY WAS GOING, RESULTING IN THE NORMAL BEING PUT TO SLEEP.\n#\n# IF EITHER OF THE ABOVE 2 CONDITIONS EXISTS, THE NORMAL DISPLAY IS AWAKENED TO GO TO PLAYJUM1 WHICH STARTS\n# UP THE MOST RECENT VALID NORMAL DISPLAY.  IF THESE 2 CONDITIONS DO NOT EXIST, CONTROL GOES TO PLAYJUM1 WHICH IS\n# STARTED IMMEDIATELY WITH THE ASSUMPTION THAT THE MOST RECENT NORMAL DISPLAY IS ALREADY IN ENDIDLE (DURING A\n# PINBRNCH) OR THAT A RESTART HAS OCCURRED AND THE DISPLAY CAN BE STARTED AS A .1 RESTART.\n\nMARKRET\t\tCS\tSIX\n\t\tMASK\tFLAGWRD4\n\t\tINHINT\t\t\t# *** MAY MOVE DISPLAY FLAGWORD OUT OF\n\t\tTS\tFLAGWRD4\n\n\t\tRELINT\t\t\t# INHINT REALM\n\t\tTCF\tENDRET\n\n# Page 1371\nMARKOVER\tCAF\tMINUS1\t\t# RUPTREG2 IS - MEANS ENDOFJOB TO ENDRET\n\t\tTS\tOUTHERE\n\n\t\tCA\tFLAGWRD4\t# IS ENDIDFLG SET\n\t\tMASK\tPRIO30\t\t# IS NORMAL OR PRIO IN ENDIDLE\n\t\tCCS\tA\n\t\tTCF\tNORMBNCH\n\nNORMRET\t\tCA\tFLAGWRD4\t# IS MARK SLEEPING\n\t\tMASK\tBITS5+11\t# OR WAITING\n\t\tCCS\tA\n\t\tTCF\tMARKWAKE\n\n\t\tCA\tFLAGWRD4\t# NO\n\t\tMASK\tBITS4+10\t# IS NORMAL INTERRUPTED OR WAITING\n\t\tCCS\tA\n\t\tTCF\tNORMWAKE\t# YES\n\n\t\tCA\tEBANKTEM\t# NO, WAS IT A FLASH REQUEST\n\t\tMASK\tOCT50\t\t# OR A GODSPRET\n\t\tCCS\tA\n\t\tTCF\tENDRET\t\t# YES\n\t\tCA\tNVSAVE\n\t\tEXTEND\n\t\tBZF\tENDRET\n\n\t\tCAF\tPRIO15\n\t\tINHINT\n\t\tTC\tNOVAC\n\t\tEBANK=\tNVWORD\n\t\t2CADR\tPLAYJUM1\n\n\t\tTCF\tENDRET\n\nMARSLEEP\tCA\tFLAGWRD4\t# IS MARK ALREADY IN\n\t\tMASK\tBITS5+11\n\t\tCCS\tA\n\t\tTCF\tENDOFJOB\t# YES\n\t\tTCF\tGOSLEEPS\n\nLOADITIS\tINDEX\tCOPMPAC\n\t\tCA\tNVWORD\n\t\tMASK\tLOW7\n\t\tCOM\n\t\tAD\tMPAC \t+1\t# NOUNREG\n\t\tEXTEND\n\t\tBZF\tOKTOENT\t\t# NO, THEN LOAD IS VALID\n\t\tTCF\tPINBRNCH\t# YES, ACCEPT LOAD BUT ASK FOR LAST AGAIN\n\n# Page 1372\nERASER\t\tCS\tTHREE\t\t# BLANK EVERYTHING EXCEPT MM\n\t\tTC\tNVSUB\n\t\tTCF\tENDOFJOB\n\t\tTCF\tENDOFJOB\n\nPERFMASK\tOCT\t0036\t\t# FLASH, PERFORM, BLANK R2 AND R3\nV01N25\t\tVN\t00125\nV06N07\t\tVN\t00607\t\t# GOPERF3 VN DISPLAY BEFORE V50\nV50N00\t\tVN\t5000\nPERF2MSK\tOCT\t00030\t\t# FLASH, PERFORM\nV04N06\t\tVN\t00406\nPERF4MSK\tOCT\t14\t\t# FLASH, BLANK R3\nGOAGIN\t\tEQUALS\tPINBRNCH\nREDOMASK\tOCT\t20010\t\t# BITS 4 AND 14\nMARK3MSK\tOCT\t40230\t\t# MARK, DECIMAL NOUN, PERFORM, FLASH\nMARK4MSK\tOCT\t40036\t\t# MARK, PERFORM, FLASH, BLANK 2 AND 3\nNVCADR\t\tCADR\tREDOPRIO\nWAKECADR\tCADR\tMARKPLAY\n\t\tCADR\tPLAYJUM1\n\nOCT3400\t\tOCT\t3400\t\t# EBANK MASK\nNBUSMASK\tOCT\t11210\nPMMASK\t\tOCT\t66521\nVERBMASK\t=\tMID7\t\t# (OCT 37600)\nV05N00M1\tOCT\t1177\t\t# V05 MINUS ONE\nGOXDSP\t\tEQUALS\tGOMARK\nGOXDSPR\t\tEQUALS\tGOMARKR\nGOXDSPF\t\tEQUALS\tGOMARKF\nGOXDSPFR\tEQUALS\tGOMARKFR\nENDEXT\t\tEQUALS\tENDMARK\nMPAC2SAV\tEQUALS\tBANKSET\nNVBUSMSK\tOCT\t700\nASTROMSK\tOCT\t704\nMPERFMSK\tOCT\t40030\t\t# BIT 15,5,4 FOR MARK,PERFORM,FLASH\nOCT34300\tOCT\t34300\nBITS15+7\tOCT\t40100\nBITS7+4\t\tOCT\t110\nDSPFLG\t\tEQUALS\tEBANKSAV\nMARKFLAG\tEQUALS\tMARKEBAN\nSAVEFLAG\tEQUALS\tEBANKTEM\nBITS5+11\tOCT\t2020\t\t# * DON'T MOVE\nBITS4+10\tOCT\t1010\t\t# * DON'T MOVE\nLOWLOAD\t\tDEC\t22\nBUSYMASK\tOCT\t77730\nCADRMASK\tOCT\t50\nPINMASK\t\tEQUALS\t13,14,15\nGOPLAY\t\tEQUALS\tNVDSP\nPRIOSAVE\tEQUALS\tR1SAVE\nCOPMPAC\t\tEQUALS\tMPAC \t+3\nTEMPOR2\t\tEQUALS\tMPAC \t+4\n\n# Page 1373\nOUTHERE\t\tEQUALS\tMPAC \t+5\nCOPINDEX\tEQUALS\tLOC\nUSERPRIO\tEQUALS\tMODE\nGENMASK\t\tEQUALS\tMPAC \t+6\nPRIOOCT\t\tOCT\t20144\t\t# PRIO\nMARKOCT\t\tOCT\t42424\t\t# MARK\n\t\tOCT\t11254\t\t# NORM\n\nIDLESLEP\tOCT\t74704\nOCT67777\tOCT\t67777\nLINUS\t\tEQUALS\tBLANKET\nFACEREG\t\tEQUALS\tMPAC\nPLAYTEM1\tEQUALS\tMPAC \t+1\nPLAYTEM3\tEQUALS\tMPAC \t+3\nPLAYTEM4\tEQUALS\tMPAC \t+4\nOCT40420\tOCT\t40420\nMAKEGEN\t\tGENADR\tMAKEPLAY\nOCT10200\tOCT\t10200\nV97N00\t\tVN\t09700\t\t# PASTE FOR V97 OR V99\nOCT20100\tOCT\t20100\nCLOCKCON\tOCT\t24030\t\t# FLASH, PERFORM, V99 OR V97 PASTE, REFLASH\n"
  },
  {
    "path": "Luminary099/DOWNLINK_LISTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tDOWNLINK_LISTS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t193-205\n# Mod history:\t2009-05-19 HG\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 193\n\t\tBANK\t22\n\t\tSETLOC\tDOWNTELM\n\t\tBANK\n\n\t\tEBANK=\tDNTMBUFF\n\n# SPECIAL DOWNLINK OP CODES\n#\tOP CODE\t\tADDRESS (EXAMPLE)\tSENDS...\t\tBIT 15\t\tBITS 14-12\tBITS 11-0\n#\t-------\t\t-----------------\t--------\t\t------\t\t----------\t---------\n#\t1DNADR\t\tTIME2\t\t\t(2 AGC WDS)\t\t0\t\t0\t\tECADR\n#\t2DNADR\t\tTEPHEM\t\t\t(4 AGC WDS)\t\t0\t\t1\t\tECADR\n#\t3DNADR\t\tVGBODY\t\t\t(6 AGC WDS)\t\t0\t\t2\t\tECADR\n#\t4DNADR\t\tSTATE\t\t\t(8 AGC WDS)\t\t0\t\t3\t\tECADR\n#\t5DNADR\t\tUPBUFF\t\t\t(10 AGC WDS)\t\t0\t\t4\t\tECADR\n#\t6DNADR\t\tDSPTAB\t\t\t(12 AGC WDS)\t\t0\t\t5\t\tECADR\n#\tDNCHAN\t\t30\t\t\tCHANNELS\t\t0\t\t7\t\tCHANNEL\n#\t\t\t\t\t\t\t\t\t\t\t\t\tADDRESS\n#\tDNPTR\t\tNEXTLIST\t\tPOINTS TO NEXT\t\t0\t\t6\t\tADRES\n#\t\t\t\t\t\tLIST\n#\n# DOWNLIST FORMAT DEFINITIONS AND RULES --\n# 1. END OF A LIST = -XDNADR (X = 1 TO 6), -DNPTR, OR -DNCHAN.\n# 2. SNAPSHOT SUBLIST = LIST WHICH STARTS WITH A -1DNADR.\n# 3. SNAPSHOT SUBLIST CAN ONLY CONTAIN 1DNADRS.\n# 4. TIME2 1DNADR MUST BE LOCATED IN THE CONTROL LIST OF A DOWNLIST.\n# 5. ERASABLE DOWN TELEMETRY WORDS SHOULD BE GROUPED IN SEQUENTIAL\n#    LOCATIONS AS MUCH AS POSSIBLE TO SAVE STORAGE USED BY DOWNLINK LISTS.\n\n\t\tCOUNT*\t$$/DLIST\nERASZERO\tEQUALS\t7\nUNKNOWN\t\tEQUALS\tERASZERO\nSPARE\t\tEQUALS\tERASZERO\t\t\t# USE SPARE TO INDICATE AVAILABLE SPACE\nLOWIDCOD\tOCT\t77340\t\t\t\t# LOW ID CODE\n\nNOMDNLST\tEQUALS\tLMCSTADL\t\t\t# FRESH START AND POST P27 DOWNLIST\n\nAGSLIST\t\tEQUALS\tLMAGSIDL\n\nUPDNLIST\tEQUALS\tLMAGSIDL\t\t\t# UPDATE PROGRAM (P27) DOWNLIST\n\n# Page 194\n# LM ORBITAL MANEUVERS LIST\n#\n# --------------------- CONTROL LIST -------------------------\n\nLMORBMDL\tEQUALS\t\t\t\t\t# SEND ID BY SPECIAL CODING\n\t\tDNPTR\tLMORBM01\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\t1DNADR\tDELLT4\t\t\t\t# DELLT4,+1\n\t\t3DNADR\tRTARG\t\t\t\t# RTARG,+1...+5\n\t\t1DNADR\tELEV\t\t\t\t# ELEV,+1\n\t\t1DNADR\tTEVENT\t\t\t\t# TEVENT,+1\n\t\t6DNADR\tREFSMMAT\t\t\t# REFSMMAT +0...+11D\n\t\t1DNADR\tTCSI\t\t\t\t# TCSI,+1\n\t\t3DNADR\tDELVEET1\t\t\t# DELVEET1 +0...+5\n\t\t3DNADR\tVGTIG\t\t\t\t# VGTIG +0...+5\n\t\t1DNADR\tDNLRVELZ\t\t\t# DNLRVELZ,DNLRALT\n\t\t1DNADR\tTPASS4\t\t\t\t# TPASS4,+1\n\t\tDNPTR\tLMORBM02\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2/1\n\t\tDNPTR\tLMORBM03\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tLMORBM04\t\t\t# COMMON DATA\n\t\t2DNADR\tPOSTORKU\t\t\t# POSTORKU,NEGTORKU,POSTORKV,NEGTORKV\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tTCDH\t\t\t\t# TCDH,+1\n\t\t3DNADR\tDELVEET2\t\t\t# DELVEET2 +0...+5\n\t\t1DNADR\tTTPI\t\t\t\t# TTPI,+1\n\t\t3DNADR\tDELVEET3\t\t\t# DELVEET3 +0...+5\n\t\t1DNADR\tDNRRANGE\t\t\t# DNRRANGE,DNRRDOT\n\t\t2DNADR\tDNLRVELX\t\t\t# DNLRVELX,DNLRVELY,DNLRVELZ,DNLRALT\n\t\t1DNADR\tDIFFALT\t\t\t\t# DIFFALT,+1\n\t\t1DNADR\tLEMMASS\t\t\t\t# LEMMASS,CSMMASS\n\t\t1DNADR\tIMODES30\t\t\t# IMODES30,IMODES33\n\t\t1DNADR\tTIG\t\t\t\t# TIG,+1\n\t\tDNPTR\tLMORBM05\t\t\t# COMMON DATA\n\t\tDNPTR\tLMORBM06\t\t\t# COMMON DATA\n\t\t1DNADR\tSPARE\t\t\t\t# FORMERLY PIF\n\t\t-1DNADR\tTGO\t\t\t\t# TGO,+1\n\n# --------------------- SUB-LISTS ---------------------------\n\nLMORBM01\t-1DNADR\tR-OTHER +2\t\t\t# R-OTHER +2,+3\t\tSNAPSHOT\n\t\t1DNADR\tR-OTHER +4\t\t\t# R-OTHER +4,+5\n\t\t1DNADR\tV-OTHER\t\t\t\t# V-OTHER,+1\n\t\t1DNADR\tV-OTHER +2\t\t\t# V-OTHER +2,+3\n\t\t1DNADR\tV-OTHER +4\t\t\t# V-OTHER +4,+5\n\t\t1DNADR\tT-OTHER\t\t\t\t# T-OTHER,+1\n\t\t-1DNADR\tR-OTHER\t\t\t\t# R-OTHER +0,+1\n\nLMORBM02\t2DNADR\tREDOCTR\t\t\t\t# REDOCTR,THETAD,+1,+2\tCOMMON DATA\n# Page 195\n\t\t1DNADR\tRSBBQ\t\t\t\t# RSBBQ,+1\n\t\t2DNADR\tOMEGAP\t\t\t\t# OMEGAP,OMEGAQ,OMEGAR,GARBAGE\n\t\t2DNADR\tCDUXD\t\t\t\t# CDUXD,CDUYD,CDUZD,GARBAGE\n\t\t2DNADR\tCDUX\t\t\t\t# CDUX,CDUY,CDUZ,CDUT\n\t\t6DNADR\tSTATE\t\t\t\t# STATE +0...+11D (FLAGWORDS)\n\t\t-6DNADR\tDSPTAB\t\t\t\t# DSPTAB TABLES\n\nLMORBM03\t-1DNADR\tRN +2\t\t\t\t# RN +2,+3\t\tSNAPSHOT\n\t\t1DNADR\tRN +4\t\t\t\t# RN +4,+5\n\t\t1DNADR\tVN\t\t\t\t# VN,+1\n\t\t1DNADR\tVN +2\t\t\t\t# VN +2,+3\n\t\t1DNADR\tVN +4\t\t\t\t# VN +4,+5\n\t\t1DNADR\tPIPTIME\t\t\t\t# PIPTIME,+1\n\t\t-1DNADR\tRN\t\t\t\t# RN,+1\n\nLMORBM04\t2DNADR\tOMEGAPD\t\t\t\t# OMEGAPD,OMEGAQD,OMEGARD,GARBAGE\n\t\t3DNADR\tCADRFLSH\t\t\t# CADRFLSH,+1,+2,FAILREG,+1,+2\n\t\t-1DNADR\tRADMODES\t\t\t# RADMODES,DAPBOOLS\tCOMMON DATA\n\nLMORBM05\t2DNADR\tOMEGAP\t\t\t\t# OMEGAP,OMEGAQ,OMEGAR,GARBAGE\n\t\t2DNADR\tCDUXD\t\t\t\t# CDUXD,CDUYD,CDUZD,GARBAGE\n\t\t2DNADR\tCDUX\t\t\t\t# CDUX,CDUY,CDUZ,CDUT\n\t\t1DNADR\tALPHAQ\t\t\t\t# ALPHAQ,ALPHAR\t\tCOMMON DATA\n\t\t1DNADR\tPOSTORKP\t\t\t# POSTORKP,NEGTORKP\n\t\tDNCHAN\t11\t\t\t\t# CHANNELS 11,12\n\t\tDNCHAN\t13\t\t\t\t# CHANNELS 13,14\n\t\tDNCHAN\t30\t\t\t\t# CHANNELS 30,31\n\t\t-DNCHAN\t32\t\t\t\t# CHANNELS 32,33\n\nLMORBM06\t1DNADR\tPIPTIME1\t\t\t# PIPTIME,+1\t\tCOMMON DATA\n\t\t-3DNADR\tDELV\t\t\t\t# DELV +0...+5\n\n# --------------------------------------------------------------------\n\n# Page 196\n# LM COAST AND ALIGNMENT DOWNLIST\n#\n# ---------------------- CONTROL LIST --------------------------------\n\nLMCSTADL\tEQUALS\t\t\t\t\t# SEND ID BY SPECIAL CODING\n\t\tDNPTR\tLMCSTA01\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\t1DNADR\tAGSK\t\t\t\t# AGSK,+1\n\t\t1DNADR\tTALIGN\t\t\t\t# TALIGN,+1\n\t\t2DNADR\tPOSTORKU\t\t\t# POSTORKU,NEGTORKU,POSTORKV,NEGTORKV\n\t\t1DNADR\tDNRRANGE\t\t\t# DNRRANGE,DNRRDOT\n\t\t1DNADR\tTEVENT\t\t\t\t# TEVENT,+1\n\t\t6DNADR\tREFSMMAT\t\t\t# REFSMMAT +0...+11D\n\t\t1DNADR\tAOTCODE\t\t\t\t# AOTCODE,GARBAGE\n\t\t3DNADR\tRLS\t\t\t\t# RLS +0...+5\n\t\t2DNADR\tDNLRVELX\t\t\t# DNLRVELX,DNLRVELY,DNLRVELZ,DNLRALT\n\t\tDNPTR\tLMCSTA06\t\t\t# COMMON DATA\n\t\tDNPTR\tLMCSTA02\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2/1\n\t\tDNPTR\tLMCSTA03\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tLMCSTA04\t\t\t# COMMON DATA\n\t\tDNPTR\tLMCSTA07\t\t\t# COMMON DATA\n\t\t2DNADR\tDNLRVELX\t\t\t# DNLRVELX,DNLRVELY,DNLRVELZ,DNLRALT\n\t\t2DNADR\tCDUS\t\t\t\t# CDUS,PIPAX,PIPAY,PIPAZ\n\t\t1DNADR\tLASTYCMD\t\t\t# LASTYCMD,LASTXCMD\n\t\t1DNADR\tLEMMASS\t\t\t\t# LEMMASS,CSMMASS\n\t\t1DNADR\tIMODES30\t\t\t# IMODES30,IMODES33\n\t\t1DNADR\tTIG\t\t\t\t# TIG,+1\n\t\tDNPTR\tLMCSTA05\t\t\t# COMMON DATA\n\t\t-6DNADR\tDSPTAB\t\t\t\t# DSPTAB +0...+11D TABLE\n\n# ---------------------- SUB-LISTS --------------------------\n\nLMCSTA01\tEQUALS\tLMORBM01\t\t\t# COMMON DOWNLIST DATA\nLMCSTA02\tEQUALS\tLMORBM02\t\t\t# COMMON DOWNLIST DATA\nLMCSTA03\tEQUALS\tLMORBM03\t\t\t# COMMON DOWNLIST DATA\nLMCSTA04\tEQUALS\tLMORBM04\t\t\t# COMMON DOWNLIST DATA\nLMCSTA05\tEQUALS\tLMORBM05\t\t\t# COMMON DOWNLIST DATA\n\nLMCSTA06\t2DNADR\tX789\t\t\t\t# X789 +0...+3\t\tCOMMON DATA\n\t\t-1DNADR\tLASTYCMD\t\t\t# LASTYCMD,LASTXCMD\nLMCSTA07\t3DNADR\tOGC\t\t\t\t# OGC,+1,IGC,+1,MGC,+1\tCOMMON DATA\n\t\t1DNADR\tBESTI\t\t\t\t# BESTI,BESTJ\n\t\t3DNADR\tSTARSAV1\t\t\t# STARSAV1 +0...+5\n\t\t-3DNADR\tSTARSAV2\t\t\t# STARSAV2 +0...+5\n# Page 197\n# -----------------------------------------------------------\n\n# Page 198\n# LM RENDEZVOUS AND PRE-THRUST DOWNLIST\n#\n# --------------------- CONTROL LIST ------------------------\n\nLMRENDDL\tEQUALS\t\t\t\t\t# SEND ID BY SPECIAL CODING\n\t\tDNPTR\tLMREND01\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tLMREND07\t\t\t# COLLECT SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\t1DNADR\tDELLT4\t\t\t\t# DELLT4,+1\n\t\t3DNADR\tRTARG\t\t\t\t# RTARG +0...+5\n\t\t3DNADR\tDELVSLV\t\t\t\t# DELVSLV +0...+5\n\t\t1DNADR\tTCSI\t\t\t\t# TCSI,+1\n\t\t3DNADR\tDELVEET1\t\t\t# DELVEET +0...+5\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tTPASS4\t\t\t\t# TPASS4,+1\n\t\tDNPTR\tLMREND06\t\t\t# COMMON DATA\n\t\tDNPTR\tLMREND02\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2/1\n\t\tDNPTR\tLMREND03\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tLMREND04\t\t\t# COMMON DATA\n\t\t2DNADR\tPOSTORKU\t\t\t# POSTORKU,NEGTORKU,POSTORKV,NEGTORKV\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tTCDH\t\t\t\t# TCDH,+1\n\t\t3DNADR\tDELVEET2\t\t\t# DELVEET2 +0...+5\n\t\t1DNADR\tTTPI\t\t\t\t# TTPI,+1\n\t\t3DNADR\tDELVEET3\t\t\t# DELVEET3 +0...+5\n\t\t1DNADR\tELEV\t\t\t\t# ELEV,+1\n\t\t2DNADR\tCDUS\t\t\t\t# CDUS,PIPAX,PIPAY,PIPAZ\n\t\t1DNADR\tLASTYCMD\t\t\t# LASTYCMD,LASTXCMD\n\t\t1DNADR\tLEMMASS\t\t\t\t# LEMMASS,CSMMASS\n\t\t1DNADR\tIMODES30\t\t\t# IMODES30,IMODES33\n\t\t1DNADR\tTIG\t\t\t\t# TIG,+1\n\t\tDNPTR\tLMREND05\t\t\t# COMMON DATA\n\t\t1DNADR\tDELTAR\t\t\t\t# DELTAR,+1\n\t\t1DNADR\tCENTANG\t\t\t\t# CENTANG,+1\n\t\t1DNADR\tNN\t\t\t\t# NN,+1\n\t\t1DNADR\tDIFFALT\t\t\t\t# DIFFALT,+1\n\t\t1DNADR\tDELVTPF\t\t\t\t# DELVTPF,+1\n\t\t-1DNADR\tSPARE\n\n# --------------------- SUB-LISTS --------------------------\n\nLMREND01\tEQUALS\tLMORBM01\t\t\t# COMMON DOWNLIST DATA\nLMREND02\tEQUALS\tLMORBM02\t\t\t# COMMON DOWNLIST DATA\nLMREND03\tEQUALS\tLMORBM03\t\t\t# COMMON DOWNLIST DATA\n# Page 199\nLMREND04\tEQUALS\tLMORBM04\t\t\t# COMMON DOWNLIST DATA\nLMREND05\tEQUALS\tLMORBM05\t\t\t# COMMON DOWNLIST DATA\nLMREND06\tEQUALS\tLMCSTA06\t\t\t# COMMON DOWNLIST DATA\n\nLMREND07\t-1DNADR\tAIG\t\t\t\t# AIG,AMG\t\tSNAPSHOT\n\t\t1DNADR\tAOG\t\t\t\t# AOG,TRKMKCNT\n\t\t1DNADR\tTANGNB\t\t\t\t# TANGNB,+1\n\t\t1DNADR\tMKTIME\t\t\t\t# MKTIME,+1\n\t\t-1DNADR\tRANGRDOT\t\t\t# DNRRANGE,DNRRDOT\n\n# -----------------------------------------------------------\n\n# Page 200\n# LM DESCENT AND ASCENT DOWNLIST\n\n# ---------------------- CONTROL LIST ------------------------\n\nLMDSASDL\tEQUALS\t\t\t\t\t# SEND ID BY SPECIAL CODING\n\t\tDNPTR\tLMDSAS07\t\t\t# COLLECT SNAPSHOT\n\t\tDNPTR\tLMDSAS08\t\t\t# SEND SNAPSHOT\n\t\t1DNADR\tTEVENT\t\t\t\t# TEVENT,+1\n\t\t3DNADR\tUNFC/2\t\t\t\t# UNFC/2 +0...+5\n\t\t3DNADR\tVGVECT\t\t\t\t# VGVECT +0...+5\n\t\t1DNADR\tTTF/8\t\t\t\t# TTF/8,+1\n\t\t1DNADR\tDELTAH\t\t\t\t# DELTAH,+1\n\t\t3DNADR\tRLS\t\t\t\t# RLS +0...+5\n\t\t1DNADR\tSPARE\n\t\tDNPTR\tLMDSAS09\t\t\t# COMMON DATA\n\t\tDNPTR\tLMDSAS02\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2/1\n\t\tDNPTR\tLMDSAS03\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tLMDSAS04\t\t\t# COMMON DATA\n\t\t2DNADR\tPOSTORKU\t\t\t# POSTORKU,NEGTORKU,POSTORKV,NEGTORKV\n\t\t3DNADR\tRGU\t\t\t\t# RGU +0...+5\n\t\t3DNADR\tVGU\t\t\t\t# VGU +0...+5\n\t\t3DNADR\tLAND\t\t\t\t# LAND +0...+5\n\t\t1DNADR\tAT\t\t\t\t# AT,+1\n\t\t1DNADR\tTLAND\t\t\t\t# TLAND,+1\n\t\t1DNADR\tFC\t\t\t\t# FC,GARBAGE\n\t\t1DNADR\tLASTYCMD\t\t\t# LASTYCMD,LASTXCMD\n\t\t1DNADR\tLEMMASS\t\t\t\t# LEMMASS,CSMMASS\n\t\t1DNADR\tIMODES30\t\t\t# IMODES30,IMODES33\n\t\t1DNADR\tTIG\t\t\t\t# TIG,+1\n\t\tDNPTR\tLMDSAS05\t\t\t# COMMON DATA\n\t\tDNPTR\tLMDSAS06\t\t\t# COMMON DATA\n\t\t1DNADR\tPSEUDO55\t\t\t# PSEUDO55,GARBAGE\n\t\t-1DNADR\tTTOGO\t\t\t\t# TTOGO,+1\n\n# ---------------------- SUB-LISTS ------------------------\n\nLMDSAS02\tEQUALS\tLMORBM02\t\t\t# COMMON DOWNLIST DATA\nLMDSAS03\tEQUALS\tLMORBM03\t\t\t# COMMON DOWNLIST DATA\nLMDSAS04\tEQUALS\tLMORBM04\t\t\t# COMMON DOWNLIST DATA\nLMDSAS05\tEQUALS\tLMORBM05\t\t\t# COMMON DOWNLIST DATA\nLMDSAS06\tEQUALS\tLMORBM06\t\t\t# COMMON DOWNLIST DATA\n\nLMDSAS07\t-1DNADR\tLRZCDUDL\t\t\t# LRZCDUDL,GARBAGE\t\tSNAPSHOT\n\t\t1DNADR\tVSELECT\t\t\t\t# VSELECT,GARBAGE\n\t\t1DNADR\tLRVTIMDL\t\t\t# LRVTIMDL,+1\n# Page 201\n\t\t1DNADR\tVMEAS\t\t\t\t# VMEAS,+1\n\t\t1DNADR\tMKTIME\t\t\t\t# MKTIME,+1\n\t\t1DNADR\tHMEAS\t\t\t\t# HMEAS,+1\n\t\t1DNADR\tRM\t\t\t\t# RM,+1\n\t\t1DNADR\tAIG\t\t\t\t# AIG,AMG\n\t\t1DNADR\tAOG\t\t\t\t# AOG,TRKMKCNT\n\t\t1DNADR\tTANGNB\t\t\t\t# TANGNB,+1\n\t\t1DNADR\tMKTIME\t\t\t\t# MKTIME,+1\n\t\t-1DNADR\tLRXCDUDL\t\t\t# LRXCDUDL,LRYCDUDL\n\nLMDSAS08\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\t-5DNADR\tDNTMBUFF +12D\n\nLMDSAS09\tEQUALS\tLMCSTA06\t\t\t# COMMON DOWNLIST DATA\n\n# ---------------------------------------------------------\n\n# Page 202\n# LM LUNAR SURFACE ALIGN DOWNLIST\n\n# ---------------------- CONTROL LIST ---------------------\n\nLMLSALDL\tEQUALS\t\t\t\t\t# SEND ID BY SPECIAL CODING\n\t\tDNPTR\tLMLSAL01\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tLMLSAL07\t\t\t# COLLECT SNAPSHOT\n\t\t4DNADR\tDNTMBUFF\t\t\t# SEND SHAPSHOT\n\t\t1DNADR\tTALIGN\t\t\t\t# TALIGN,+1\n\t\t6DNADR\tREFSMMAT\t\t\t# REFSMMAT +0...+11D\n\t\t6DNADR\tYNBSAV\t\t\t\t# YNBSAV +0...+5,SNBSAV +0...+5\n\t\tDNPTR\tLMLSAL08\t\t\t# COMMON DATA\n\t\tDNPTR\tLMLSAL02\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2/1\n\t\tDNPTR\tLMLSAL03\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SHAPSHOT\n\t\tDNPTR\tLMLSAL04\t\t\t# COMMON DATA\n\t\tDNPTR\tLMLSAL09\t\t\t# COMMON DATA\n\t\t3DNADR\tGSAV\t\t\t\t# GSAV +0...+5\n\t\t1DNADR\tAGSK\t\t\t\t# AGSK,+1\n\t\t1DNADR\tLASTYCMD\t\t\t# LASTYCMD,LASTXCMD\n\t\t1DNADR\tLEMMASS\t\t\t\t# LEMMASS,CSMMASS\n\t\t1DNADR\tIMODES30\t\t\t# IMODES30,IMODES33\n\t\t1DNADR\tTIG\t\t\t\t# TIG,+1\n\t\tDNPTR\tLMLSAL05\t\t\t# COMMON DATA\n\t\tDNPTR\tLMLSAL06\t\t\t# COMMON DATA\n\t\t1DNADR\tSPARE\n\t\t-1DNADR\tSPARE\n\n# ---------------------- SUB-LISTS ----------------------\n\nLMLSAL01\tEQUALS\tLMORBM01\t\t\t# COMMON DOWNLIST DATA\nLMLSAL02\tEQUALS\tLMORBM02\t\t\t# COMMON DOWNLIST DATA\nLMLSAL03\tEQUALS\tLMORBM03\t\t\t# COMMON DOWNLIST DATA\nLMLSAL04\tEQUALS\tLMORBM04\t\t\t# COMMON DOWNLIST DATA\nLMLSAL05\tEQUALS\tLMORBM05\t\t\t# COMMON DOWNLIST DATA\nLMLSAL06\tEQUALS\tLMORBM06\t\t\t# COMMON DOWNLIST DATA\nLMLSAL07\tEQUALS\tLMREND07\t\t\t# COMMON DOWNLIST DATA\nLMLSAL08\tEQUALS\tLMCSTA06\t\t\t# COMMON DOWNLIST DATA\nLMLSAL09\tEQUALS\tLMCSTA07\t\t\t# COMMON DOWNLIST DATA\n\n# Page 203\n# --------------------------------------------------------\n\n# Page 204\n# LM AGS INITIALIZATION AND UPDATE DOWNLIST\n\n# ---------------------- CONTROL LIST --------------------\n\nLMAGSIDL\tEQUALS\t\t\t\t\t# SEND IO BY SPECIAL CODING\n\t\t3DNADR\tAGSBUFF +0\t\t\t# AGSBUFF +0...+5\n\t\t1DNADR\tAGSBUFF +12D\t\t\t# AGSBUFF +12D,GARBAGE\n\t\t3DNADR\tAGSBUFF +1\t\t\t# AGSBUFF +1...+6\n\t\t1DNADR\tAGSBUFF +13D\t\t\t# AGSBUFF +13D, GARBAGE\n\t\t3DNADR\tAGSBUFF +6\t\t\t# AGSBUFF +6...+11\n\t\t1DNADR\tAGSBUFF +12D\t\t\t# AGSBUFF +12D,GARBAGE\n\t\t3DNADR\tAGSBUFF +7\t\t\t# AGSBUFF +7...+12D\n\t\t1DNADR\tAGSBUFF +13D\t\t\t# AGSBUFF +13D,GARBAGE\n\t\t6DNADR\tCOMPNUMB\t\t\t# COMPNUMB,UPOLDMOD,UPVERB,UPCOUNT,\n\t\t\t\t\t\t\t# UPBUFF +0...+7\n\t\t6DNADR\tUPBUFF +8D\t\t\t# UPBUFF +8D...+19D\n\t\tDNPTR\tLMAGSI02\t\t\t# COMMON DATA\n\t\t1DNADR\tTIME2\t\t\t\t# TIME2/1\n\t\tDNPTR\tLMAGSI03\t\t\t# COLLECT SNAPSHOT\n\t\t6DNADR\tDNTMBUFF\t\t\t# SEND SNAPSHOT\n\t\tDNPTR\tLMAGSI04\t\t\t# COMMON DATA\n\t\t2DNADR\tPOSTORKU\t\t\t# POSTORKU,NEGTORKU,POSTORKV,NEGTORKV\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tSPARE\n\t\t1DNADR\tAGSK\t\t\t\t# AGSK,+1\n\t\t6DNADR\tUPBUFF\t\t\t\t# UPBUFF +0...+11D\n\t\t4DNADR\tUPBUFF +12D\t\t\t# UPBUFF +12D...+19D\n\t\t1DNADR\tLEMMASS\t\t\t\t# LEMMASS,CSMMASS\n\t\t1DNADR\tIMODES30\t\t\t# IMODES30,IMODES33\n\t\t1DNADR\tSPARE\n\t\tDNPTR\tLMAGSI05\t\t\t# COMMON DATA\n\t\t-6DNADR\tDSPTAB\t\t\t\t# DSPTAB +0...+11D\n\n# ---------------------- SUB-LISTS ---------------------\n\nLMAGSI02\tEQUALS\tLMORBM02\t\t\t# COMMON DOWNLIST DATA\nLMAGSI03\tEQUALS\tLMORBM03\t\t\t# COMMON DOWNLIST DATA\nLMAGSI04\tEQUALS\tLMORBM04\t\t\t# COMMON DOWNLIST DATA\nLMAGSI05\tEQUALS\tLMORBM05\t\t\t# COMMON DOWNLIST DATA\n\n# ------------------------------------------------------\n\nDNTABLE\t\tGENADR\tLMCSTADL\t\t\t# LM COAST AND ALIGN DOWNLIST\n\t\tGENADR\tLMAGSIDL\t\t\t# LM AGS INITIALIZATION/UPDATE DOWNLIST\n\t\tGENADR\tLMRENDDL\t\t\t# LM RENDEZVOUS AND PRE-THRUST DOWNLIST\n\t\tGENADR\tLMORBMDL\t\t\t# LM ORBITAL MANEUVERS DOWNLIST\n\t\tGENADR\tLMDSASDL\t\t\t# LM DESCENT AND ASCENT DOWNLIST\n# Page 205\n\t\tGENADR\tLMLSALDL\t\t\t# LM LUNAR SURFACE ALIGN DOWNLIST\n\n# ------------------------------------------------------\n\n\n"
  },
  {
    "path": "Luminary099/DOWN_TELEMETRY_PROGRAM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tDOWN_TELEMETRY_PROGRAM.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t988-997\n# Mod history:\t2009-05-24 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 988\n# PROGRAM NAME -- DOWN TELEMETRY PROGRAM\n# MOD NO. -- 0\t\tTO COMPLETELY REWRITE THE DOWN TELEMETRY PROGRAM AND DOWNLINK ERASABLE DUMP PROGRAM FOR THE\n#\t\t\tPURPOSE OF SAVING APPROXIMATELY 150 WORDS OF CORE STORAGE.\n#\t\t\tTHIS CHANGE REQUIRES AN ENTIRELY NEW METHOD OF SPECIFYING DOWNLINK LISTS.  REFER TO DOWNLINK\n#\t\t\tLISTS LOG SECTION FOR MORE DETAILS.  HOWEVER THIS CHANGE WILL NOT AFFECT THE GROUND PROCESSING\n#\t\t\tOF DOWN TELEMETRY DATA.\n# MOD BY -- KILROY, SMITH, DEWITT\n# DATE -- 02 OCT 67\n# AUTHORS -- KILROY, SMITH, DWWITT, DEWOLF, FAGIN\n# LOG SECTION -- DOWN-TELEMETRY PROGRAM\n#\n# FUNCTIONAL DESCRIPTION -- THIS ROUTINE IS INITIATED BY TELEMETRY END\n#\tPULSE FROM THE DOWNLINK TELEMETRY CONVERTER.  THIS PULSE OCCURS\n#\tAT 50 TIMES PER SEC (EVERY 20 MS) THEREFORE DODOWNTM IS\n#\tEXECUTED AT THESE RATES.  THIS ROUTINE SELECTS THE APPROPRIATE\n#\tAGC DATA TO BE TRANSMITTED DOWNLINK AND LOADS IT INTO OUTPUT\n#\tCHANNELS 34 AND 35.  THE INFORMATION IS THEN GATED OUT FROM THE\n#\tLGC IN SERIAL FASHION.\n#\n#\tTHIS PROGRAM IS CODED FOR A 2 SECOND DOWNLIST.  SINCE DOWNRUPTS\n#\tOCCUR EVERY 20 MS AND 2 AGC COMPUTER WORDS CAN BE PLACED IN\n#\tCHANNELS 34 AND 35 DURING EACH DOWNRUPT THE PROGRAM IS CAPABLE\n# \tOF SENDING 200 AGC WORDS EVERY 2 SECONDS.\n#\n# CALLING SEQUENCE -- NONE\n#\tPROGRAM IS ENTERED VIA TCF DODOWNTM WHICH IS EXECUTED AS A\n#\tRESULT OF A DOWNRUPT.  CONTROL IS RETURNED VIA TCF RESUME WHICH\n#\tIN EFFECT IS A RESUME.\n#\n# SUBROUTINES CALLED -- NONE\n#\n# NORMAL EXIT MODE -- TCF RESUME\n#\n# ALARM OR ABORT EXIT MODE -- NONE\n#\n# RESTART PROTECTION:\n#\tON A FRESH START AND RESTART THE `STARTSUB' SUBROUTINE WILL INITIALIZE THE DOWNLIST POINTER (ACTUALLY\n#\tDNTMGOTO) TO THE BEGINNING OF THE CURRENT DOWNLIST (I.E., CURRENT CONTENTS OF DNLSTADR).  THIS HAS THE\n#\tEFFECT OF IGNORING THE REMAINDER OF THE DOWNLIST WHICH THE DOWN-TELEMETRY PROGRAM WAS WORKING ON WHEN\n#\tTHE RESTART (OR FRESH START) OCCURRED AND RESUME DOWN TELEMETRY FROM THE BEGINNING OF THE CURRENT\n#\tDOWNLIST.\n#\n#\tALSO OF INTEREST IS THE FACT THAT ON A RESTART THE AGC WILL ZERO DOWNLINK CHANNELS 13, 34 AND 35.\n#\n# DOWNLINK LIST SELECTION:\n#\tTHE APPROPRIATE DOWNLINK LISTS ARE SELECTED BY THE FOLLOWING:\n#\t1.\tFRESH START\n#\t2.\tV37EXXE WHERE XX = THE MAJOR MODE BEING SELECTED.\n#\t3.\tUPDATE PROGRAM (P27)\n#\t4.\tNON-V37 SELECTABLE TYPE PROGRAMS (E.G., AGS INITIALIZATION (SUNDANCE, LUMINARY) AND P61-P62\n#\t\tTRANSITION (COLOSSUS) ETC.).\n#\n# DOWNLINK LIST RULES AND LIMITATIONS:\n#\tREAD SECTION(S) WHICH FOLLOW `DEBRIS' WRITEUP.\n#\n# OUTPUT -- EVERY 2 SECONDS 100 DOUBLE PRECISION WORDS (I.E., 200 LGC\n#\tCOMPUTER WORDS) ARE TRANSMITTED VIA DOWNLINK.\n#\n# ERASABLE INITIALIZATION REQUIRED -- NONE\n#\t`DNTMGOTO' AND `DNLSTADR' ARE INITIALIZED BY THE FRESH START PROGRAM.\n#\n# DEBRIS (ERASABLE LOCATIONS DESTROYED BY THIS PROGRAM) --\n#\tLDATALST, DNTMBUFF TO DNTMBUFF +21D, TMINDEX, DNQ.\n# Page 989 (empty page)\n# Page 990\n# DODOWNTM IS ENTERED EVERY 20 MS BY AN INTERRUPT TRIGGERED BY THE\n# RECEIPT OF AN ENDPULSE FROM THE SPACECRAFT TELEMETRY PROGRAMMER.\n#\n# NOTES REGARDING DOWNLINK LISTS ASSOCIATED WITH THIS PROGRAM:\n# 1.\tDOWNLISTS.  DOWNLISTS MUST BE COMPILED IN THE SAME BANK AS THE\n#\tDOWN-TELEMETRY PROGRAM.  THIS IS DONE FOR EASE OF CODING, FASTER\n#\tEXECUTION.\n# 2.\tEACH DOWNLINK LIST CONSISTS OF A CONTROL LIST AND A NUMBER OF\n#\tSUBLISTS.\n# 3.\tA SUBLIST REFERS TO A SNAPSHOT OR DATA COMMON TO THE SAME OR OTHER\n#\tDOWNLINK LISTS.  ANY SUBLIST CONTAINING COMMON DATA NEEDS TO BE\n#\tCODED ONLY ONCE FOR THE APPLICABLE DOWNLINK LISTS.\n# 4.\tSNAPSHOT SUBLISTS REFER SPECIFICALLY TO HOMOGENEOUS DATA WHICH MUST BE\n#\tSAVED IN A BUFFER DURING ONE DOWNRUPT.\n# 5.\tTHE 1DNADR FOR THE 1ST WORD OF SNAPSHOT DATA IS FOUND AT THE END\n#\tOF EACH SNAPSHOT SUBLIST, SINCE THE PROGRAM CODING SENDS THIS DP WORD\n#\tIMMEDIATELY AFTER STORING THE OTHERS IN THE SNAPSHOT BUFFER.\n# 6.\tALL LISTS ARE COMBINATIONS OF CODED ERASABLE ADDRESS CONSTANTS\n#\tCREATED FOR THE DOWNLIST PROGRAM.\n#\tA.\t1DNADR\t\t\t1-WORD DOWNLIST ADDRESS.\n#\t\tSAME AS ECADR, BUT USED WHEN THE WORD ADDRESSED IS THE LEFT\n#\t\tHALF OF A DOUBLE-PRECISION WORD FOR DOWN TELEMETRY.\n#\tB.\t2DNADR - 6DNADR\t\tN-WORD DOWNLIST ADDRESS, N = 2 - 6.\n#\t\tSAME AS 1DNADR, BUT WITH THE 4 UNUSED BITS OF THE ECADR FORMAT\n#\t\tFILLED IN WITH 0001-0101.  USED TO POINT TO A LIST OF N DOUBLE-\n#\t\tPRECISION WORDS, STORED CONSECUTIVELY, FOR DOWN TELEMETRY.\n#\tC.\tDNCHAN\t\t\tDOWNLIST CHANNEL ADDRESS.\n#\t\tSAME AS 1DNADR, BUT WITH PREFIX BITS 0111.  USED TO POINT TO\n#\t\tA PAIR OF CHANNELS FOR DOWN TELEMETRY.\n#\tD.\tDNPTR\t\t\tDOWN-TELEMETRY SUBLIST POINTER.\n#\t\tSAME AS CAF BUT TAGGED AS A CONSTANT.  USED IN CONTROL LIST TO POINT TO A SUBLIST.\n#\t\tCAUTION --- A DNPTR CANNOT BE USED IN A SUBLIST.\n# 7.\tTHE WORD ORDER CODE IS SET TO ZERO AT THE BEGINNING OF EACH DOWNLIST (I.E., CONTROL LIST) AND WHEN\n#\tA `1DNADR TIME2' IS DETECTED IN THE CONTROL LIST (ONLY).\n# 8.\tIN THE SNAPSHOT SUBLIST ONLY, THE DNADR'S CANNOT POINT TO THE FIRST WORD OF ANY EBANK.\n#\n# DOWNLIST LIST RESTRICTIONS:\n# (THE FOLLOWING POINTS MAY BE LISTED ELSEWHERE BUT ARE LISTED HERE SO IT IS CLEAR THAT THESE THINGS CANNOT BE\n# DONE)\n# 1.\tSNAPSHOT DOWNLIST:\n#\t(A) CANNOT CONTAIN THE FOLLOWING ECADRS (I.E., 1DNADR'S): Q, 400, 1000, 1400, 2000, 2400, 3000, 3400.\n#\t(B) CAN CONTAIN ONLY 1DNADR'S\n# 2.\tALL DOWNLINKED DATA (EXCEPT CHANNELS) IS PICKED UP BY A DCA SO DOWNLINK LISTS CANNOT CONTAIN THE\n#\tEQUIVALENT OF THE FOLLOWING ECADRS (I.E., 1DNADRS): 377, 777, 1377, 1777, 2377, 2777, 3377, 3777.\n# \t(NOTE: THE TERM `EQUIVALENT' MEANT THAT THE 1DNADR TO 6DNADR WILL BE PROCESSED LIKE 1 TO 6 ECADRS)\n# 3.\tCONTROL LISTS AND SUBLISTS CANNOT HAVE ENTRIES = OCTAL 00000 OR OCTAL 77777\n# Page 991\n# 4.\tTHE `1DNADR TIME2' WHICH WILL CAUSE THE DOWNLINK PROGRAM TO SET THE WORDER CODE TO 3 MUST APPEAR IN THE\n#\tCONTROL SECTION OF THE DOWNLIST.\n# 5.\t`DNCHAN 0' CANNOT BE USED.\n# 6.\t`DNPTR 0' CANNOT BE USED.\n# 7.\tDNPTR CANNOT APPEAR IN A SUBLIST.\n#\n# EBANK SETTINGS\n#\tIN THE PROCESS OF SETTING THE EBANK (WHEN PICKING UP DOWNLINK DATA) THE DOWN TELEMETRY PROGRAM PUTS\n#\t`GARBAGE' INTO BITS15-12 OF EBANK.  HUGH BLAIR-SMITH WARNS US THAT BITS15-12 OF EBANK MAY BECOME\n#\tSIGNIFICANT SOMEDAY IN THE FUTURE.  IF/WHEN THAT HAPPENS, THE PROGRAM SHOULD INSURE (BY MASKING ETC.)\n#\tTHAT BITS 15-12 OF EBANK ARE ZERO.\n#\n# INITIALIZATION REQUIRED -- TO INTERRUPT CURRENT LIST AND START A NEW ONE.\n#\t1. ADRES OF DOWNLINK LIST INTO DNLSTADR\n#\t2. NEGONE INTO SUBLIST\n#\t3. NEGONE INTO DNECADR\n\n\t\tBANK\t22\n\t\tSETLOC\tDOWNTELM\n\t\tBANK\n\n\t\tEBANK=\tDNTMBUFF\n\n\t\tCOUNT*\t$$/DPROG\nDODOWNTM\tTS\tBANKRUPT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\t\t# SAVE Q\n\t\tTCF\tWOTEST\nWO1\t\tEXTEND\t\t\t# SET WORD ORDER BIT TO 1 ONLY IF IT\n\t\tWOR\tCHAN13\t\t# ALREADY ISN'T\n\t\tTC\tDNTMGOTO\t# GOTO APPROPRIATE PHASE OF PROGRAM\n\nDNPHASE1\tCA\tNEGONE\t\t# INITIALIZE ALL CONTROL WORDS\n\t\tTS\tSUBLIST\t\t# WORDS TO MINUS ONE\n\t\tTS\tDNECADR\n\t\tCA\tLDNPHAS2\t# SET DNTMGOTO = 0 ALL SUSEQUENT DOWRUPTS\n\t\tTS\tDNTMGOTO\t# GO TO DNPHASE2\n\t\tTCF\tNEWLIST\nDNPHASE2\tCCS\tDNECADR\t\t# SENDING OF DATA IN PROGRESS\nDODNADR\t\tTC\tFETCH2WD\t# YES -- THEN FETCH THE NEXT 2 SP WORDS\nMINTIME2\t-1DNADR\tTIME2\t\t# NEGATIVE OF TIME2 1DNADR\n\t\tTCF\t+1\t\t# (ECADR OF 3776 + 74001 = 77777)\n\n\t\tCCS\tSUBLIST\t\t# IS THE SUBLIST IN CONTROL\n\t\tTCF\tNEXTINSL\t# YES\n# Page 992\nDNADRDCR\tOCT\t74001\t\t# DNADR COUNT AND ECADR DECREMENTER\n\nCHKLIST\t\tCA\tCTLIST\n\t\tEXTEND\n\t\tBZMF\tNEWLIST\t\t# IT WILL BE NEGATIVE AT END OF LIST\n\t\tTCF\tNEXTINCL\nNEWLIST\t\tINDEX\tDNLSTCOD\n\t\tCA\tDNTABLE\t\t# INITIALIZE CTLIST WITH\n\t\tTS\tCTLIST\t\t#\tSTARTING ADDRESS OF NEW LIST\n\t\tCS\tDNLSTCOD\n\t\tTCF\tSENDID \t+3\nNEXTINCL\tINDEX\tCTLIST\n\t\tCA\t0\n\t\tCCS\tA\n\t\tINCR\tCTLIST\t\t# SET POINTER TO PICK UP NEXT CTLIST WORD\n\t\tTCF\t+4\t\t# ON NEXT ENTRY TO PROG.  (A SHOULD NOT =0)\n\t\tXCH\tCTLIST\t\t# SET CTLIST TO NEGATIVE AND PLACE(CODING)\n\t\tCOM\t\t\t# UNCOMPLEMENTED DNADR INTO A.    (FOR LA)\n\t\tXCH\tCTLIST\t\t#                                 (ST IN )\n +4\t\tINCR\tA\t\t#                                 (CTLIST)\n \t\tTS\tDNECADR\t\t# SAVE DNADR\n\t\tAD\tMINTIME2\t# TEST FOR TIME2 (NEG. OF ECADR)\n\t\tCCS\tA\n\t\tTCF\tSETWO\t+1\t# DON'T SET WORD ORDER CODE\nMINB1314\tOCT\t47777\t\t# MINUS BIT 13 AND 14 (CAN'T GET HERE)\n\t\tTCF\tSETWO \t+1\t# DON'T SET WORD ORDER CODE\nSETWO\t\tTC\tWOZERO\t\t# GO SET WORD ORDER CODE TO ZERO.\n +1\t\tCA\tDNECADR\t\t# RELOAD A WITH THE DNADR.\n +2\t\tAD\tMINB1314\t# IS THIS A REGULAR DNADR?\n \t\tEXTEND\n\t\tBZMF\tFETCH2WD\t# YES.  (A MUST NEVER BE ZERO)\n\t\tAD\tMINB12\t\t# NO.  IS IT A POINTER (DNPTR) OR A\n\t\tEXTEND\t\t\t#\tCHANNEL(DNCHAN)\n\t\tBZMF\tDODNPTR\t\t# IT'S A POINTER.  (A MUST NEVER BE ZERO)\n\nDODNCHAN\tTC\t6\t\t# (EXECUTED AS EXTEND)  IT'S A CHANNEL\n\t\tINDEX\tDNECADR\n\t\tINDEX\t0 \t-4000\t# (EXECUTED AS READ)\n\t\tTS\tL\n\t\tTC\t6\t\t# (EXECUTED AS EXTEND)\n\t\tINDEX\tDNECADR\n\t\tINDEX\t0 \t-4001\t# (EXECUTED AS READ)\n\t\tTS\tDNECADR\t\t# SET DNECADR\n\t\tCA\tNEGONE\t\t#\tTO MINUS\n\t\tXCH\tDNECADR\t\t#\t\tWHILE PRESERVING A.\n\t\tTCF\tDNTMEXIT\t# GO SEND CHANNELS\n\nWOZERO\t\tCS\tBIT7\n\t\tEXTEND\n\t\tWAND\tCHAN13\t\t# SET WORD ORDER CODE TO ZERO\n# Page 993\n\t\tTC\tQ\t\t# RETURN TO CALLER\n\nDODNPTR\t\tINDEX\tDNECADR\t\t# DNECADR CONTAINS ADRES OF SUBLIST\n\t\t0\t0\t\t# CLEAR AND ADD LIST ENTRY INTO A.\n\t\tCCS\tA\t\t# IS THIS A SNAPSHOT SUBLIST\n\t\tCA\tDNECADR\t\t# NO, IT IS A REGULAR SUBLIST.\n\t\tTCF\tDOSUBLST\t# A MUST NOT BE ZERO.\n\n\t\tXCH\tDNECADR\t\t# YES.  IT IS A SNAPSHOT SUBLIST.\n\t\tTS\tSUBLIST\t\t# C(DNECADR) INTO SUBLIST\n\t\tCAF\tZERO\t\t#\tA    INTO     A\n\t\tXCH\tTMINDEX\t\t# (NOTE:  TMINDEX = DNECADR)\n\n# THE FOLLOWING CODING (FROM SNAPLOOP TO SNAPEND) IS FOR THE PURPOSE OF TAKING A SNAPSHOT OF 12 DP REGISTERS.\n# THIS IS DONE BY SAVING 11 DP REGISTERS IN DNTMBUFF AND SENDING THE FIRST DP WORD IMMEDIATELY.\n# THE SNAPSHOT PROCESSING IS THE MOST TIME CONSUMING AND THEREFORE THE CODING AND LIST STRUCTURE WERE DESIGNED\n# TO MINIMIZE TIME.  THE TIME OPTIMIZATION RESULTS IN RULES UNIQUE TO THE SNAPSHOT PORTION OF THE DOWNLIST.\n# THESE RULES ARE ......\n#\t1.\tONLY 1DNADR'S CAN APPEAR IN THE SNAPSHOT SUBLIST\n#\t2.\tTHE 1DNADR'S CANNOT REFER TO THE FIRST LOCATION IN ANY BANK.\n\nSNAPLOOP\tTS\tEBANK\t\t# SET EBANK\n\t\tMASK\tLOW8\t\t# ISOLATE RELATIVE ADDRESS\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tEBANK=\t1401\n\t\tDCA\t1401\t\t# PICK UP 2 SNAPSHOT WORDS.\n\t\tEBANK=\tDNTMBUFF\n\t\tINDEX\tTMINDEX\n\t\tDXCH\tDNTMBUFF\t# STORE 2 SNAPSHOT WORDS IN BUFFER\n\t\tINCR\tTMINDEX\t\t# SET BUFFER INDEX FOR NEXT 2 WORDS.\n\t\tINCR\tTMINDEX\nSNAPAGN\t\tINCR\tSUBLIST\t\t# SET POINTER TO NEXT 2 WORDS OF SNAPSHOT\n\t\tINDEX\tSUBLIST\n\t\t0\t0\t\t# = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)\n\t\tCCS\tA\t\t# TEST FOR LAST TWO WORDS OF SNAPSHOT.\n\t\tTCF\tSNAPLOOP\t# NOT LAST TWO.\nLDNPHAS2\tGENADR\tDNPHASE2\n\t\tTS\tSUBLIST\t\t# YES, LAST.  SAVE A.\n\t\tCA\tNEGONE\t\t# SET DNECADR AND\n\t\tTS\tDNECADR\t\t#\tSUBLIST POINTERS\n\t\tXCH\tSUBLIST\t\t#\t\tTO NEGATIVE VALUES\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tEBANK=\t1401\n\t\tDCA\t1401\t\t# PICK UP FIRST 2 WORDS OF SNAPSHOT.\n# Page 994\n\t\tEBANK=\tDNTMBUFF\nSNAPEND\t\tTCF\tDNTMEXIT\t# NOW TO SEND THEM.\n\nFETCH2WD\tCA\tDNECADR\n\t\tTS\tEBANK\t\t# SET EBANK\n\t\tMASK\tLOW8\t\t# ISOLATE RELATIVE ADDRESS\n\t\tTS\tL\n\t\tCA\tDNADRDCR\t# DECREMENT COUNT AND ECADR\n\t\tADS\tDNECADR\n\t\tEXTEND\n\t\tINDEX\tL\n\t\tEBANK=\t1400\n\t\tDCA\t1400\t\t# PICK UP 2 DATA WORDS\n\t\tEBANK=\tDNTMBUFF\n\t\tTCF\tDNTMEXIT\t# NOW GO SEND THEM.\n\nDOSUBLST\tTS\tSUBLIST\t\t# SET SUBLIST POINTER\nNEXTINSL\tINDEX\tSUBLIST\n\t\t0\t0\t\t# = CA SSSS (SSSS = NEXT ENTRY IN SUBLIST)\n\t\tCCS\tA\t\t# IS IT THE END OF THE SUBLIST\n\t\tINCR\tSUBLIST\t\t# NO --\n\t\tTCF\t+4\n\t\tTS\tSUBLIST\t\t# SAVE A.\n\t\tCA\tNEGONE\t\t# SET SUBLIST TO MINUS\n\t\tXCH\tSUBLIST\t\t# RETRIEVE A.\n +4\t\tINCR\tA\n \t\tTS\tDNECADR\t\t# SAVE DNADR\n\t\tTCF\tSETWO +2\t# GO USE COMMON CODING (PROLEMS WOULD\n\t\t\t\t\t# OCCUR IF THE PROGRAM ENCOUNTERED A\n\t\t\t\t\t# DNPTR NOW)\n\nDNTMEXIT\tEXTEND\t\t\t# DOWN-TELEMETRY EXIT\n\t\tWRITE\tDNTM1\t\t# TO SEND A + L TO CHANNELS 34 + 35\n\t\tCA\tL\t\t# RESPECTIVELY\nTMEXITL\t\tEXTEND\n\t\tWRITE\tDNTM2\nTMRESUME\tTCF\tRESUME\t\t# EXIT TELEMETRY PROGRAM VIA RESUME.\n\nMINB12\t\tEQUALS\t-1/8\nDNECADR\t\tEQUALS\tTMINDEX\nCTLIST\t\tEQUALS\tLDATALST\nSUBLIST\t\tEQUALS \tDNQ\n\n# Page 995\n# SUBROUTINE NAME -- DNDUMP\n#\n# FUNCTIONAL DESCRIPTION -- TO SEND (DUMP) ALL ERASABLE STORAGE 'N' TIMES. (N=1 TO 4).  BANKS ARE SENT ONE AT A TIME\n#\tEACH BANK IS PRECEDED BY AN ID WORD, SYNCH BITS, ECADR AND TIME1 FOLLOWED BY THE 256D WORDS OF EACH\n#\tEBANK.  EBANKS ARE DUMPED IN ORDER (I.E., EBANK 0 FIRST, THEN EBANK1 ETC.)\n#\n# CALLING SEQUENCE -- THE GROUND OR ASTRONAUT BY KEYING V74E CAN INITIALIZE THE DUMP.\n#\tAFTER KEYING IN V74E THE CURRENT DOWNLIST WILL BE IMMEDIATELY TERMINATED AND THE DOWNLINK ERASABLE DUMP\n#\tWILL BEGIN.\n#\n#\tONCE INITIATED THE DOWNLINK ERASABLE DUMP CAN BE TERMINATED (AND INTERRUPTED DOWNLIST REINSTATED) ONLY\n#\tBY THE FOLLOWING:\n#\n#\t1.\tA FRESH START\n#\t2.\tCOMPLETION OF ALL DOWNLINK DUMPS REQUESTED (ACCORDING TO BITS SET IN DUMPCNT).  NOTE THAT DUMPCNT\n#\t\tCAN BE ALTERED BY A V21N01.\n#\t3.\tAND INVOLUNTARILY BY A RESTART.\n#\n# NORMAL EXIT MODE -- TCF DNPHASE1\n#\n# ALARM OR ABORT MODE -- NONE\n#\n# *SUBROUTINES CALLED -- NONE\n#\n# ERASABLE INITIALIZATION REQUIRED --\n#\tDUMPCNT\t\tOCT 20000\tIF 4 COMPLETE ERASABLE DUMPS ARE DESIRED\n#\tDUMPCNT\t\tOCT 10000\tIF 2 COMPLETE ERASABLE DUMPS ARE DESIRED\n#\tDUMPCNT\t\tOCT 04000\tIF 1 COMPLETE ERASABLE DUMP  IS  DESIRED\n#\n# DEBRIS -- DUMPLOC, DUMPSW, DNTMGOTO, EBANK, AND CENTRAL REGISTERS\n#\n# TIMING --\tTIME (IN SECS) = ((NO.DUMPS)*(NO.EBANKS)*(WDSPEREBANK + NO.IDWDS)) / NO.WDSPERSEC\n#\t\tTIME (IN SECS) =  (   4    )*(    8    )*(    256     +     4   )  /     100\n#\t\tTHUS TIME (IN SECS TO SEND DUMP OF ERASABLE 4 TIMES VIA DOWNLINK) = 83.2 SECONDS\n#\n# STRUCTURE OF ONE EBANK AS IT IS SENT BY DOWNLINK PROGRAM --\n#\t(REMINDER -- THIS ONLY DESCRIBES ONE OF THE 8 EBANKS X 4 (DUMPS) = 32 EBANKS WHICH WILL BE SENT BY DNDUMP)\n#\n#\tDOWNLIST\t\t\t\tW\n#\t  WORD\tTAKEN FROM CONTENTS OF\tEXAMPLE\tO\tCOMMENTS\n#\t    1\tERASID\t\t\t 0177X\t0\tDOWNLIST I.D. FOR DOWNLINK ERASABLE DUMP (X=7 CSM, 6 LM)\n#\t    2\tLOWIDCOD\t\t 77340 \t1\tDOWNLINK SYNCH BITS.  (SAME ONE USED IN ALL OTHER DOWNLISTS)\n#\t    3\tDUMPLOC\t\t\t 13400\t1\t(SEE NOTES ON DUMPLOC) 1 = 3RD ERAS DUMP, 3400=ECADR OF 5TH WD\n#\t    4\tTIME1\t\t\t 14120\t1\tTIME IN CENTISECONDS\n#\t    5\tFIRST WORD OF EBANK X\t 03400\t1\tIN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1400 (ECADR 3400)\n#\t    6\t2ND   WORD OF EBANK X\t 00142\t1\tIN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1401 (ECADR 3401)\n#\t    7   3RD   WORD OF EBANK X\t 00142\t1\tIN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1402 (ECADR 3402)\n#\t    .\n#\t    .\n#\t    .\n#\t 260D\t256TH WORD OF EBANK X\t 03777\t1\tIN THIS EXAMPLE THIS WORD = CONTENTS OF E7,1777 (ECADR 3777)\n#\n# NOTE --\tDUMPLOC CONTAINS THE COUNTER AND ECADR FOR EACH WORD BEING SENT.\n#\t\tTHE BIT STRUCTURE OF DUMPLOC IS FOLLOW --\n#\t\t\t\t\t\tX = NOT USED\n#\t\tX ABC EEE RRRRRRRR\t      ABC = ERASABLE DUMP COUNTER (I.E. ABC = 0,1,2, OR 3 WHICH MEANS THAT\n#\t\t\t\t\t\t    COMPLETE ERASABLE DUMP NUMBER 1,2,3, OR 4 RESPECTIVELY IS IN PROGRESS)\n#\t\t\t\t\t      EEE = EBANK BITS\n#\t\t\t\t\t RRRRRRRR = RELATIVE ADDRESS WITHIN AN EBANK\n\n# Page 996\nDNDUMPI\t\tCA\tZERO\t\t# INITIALIZE DOWNLINK\n\t\tTS\tDUMPLOC\t\t# ERASABLE DUMP\n +2\t\tTC\tSENDID\t\t# GO SEND ID AND SYNCH BITS\n\t\tCA\tLDNDUMP1\t# SET DNTMGOTO\n\t\tTS\tDNTMGOTO\t# TO LOCATION FOR NEXT PASS\n\t\tCA\tTIME1\t\t# PLACE TIME1\n\t\tXCH\tL\t\t# INTO L\n\t\tCA\tDUMPLOC\t\t# AND ECADR OF THIS EBANK INTO A\n\t\tTCF\tDNTMEXIT\t# SEND DUMPLOC AND TIME1\n\nLDNDUMP\t\tADRES\tDNDUMP\nLDNDUMP1\tADRES\tDNDUMP1\n\nDNDUMP\t\tCA\tTWO\t\t# INCREMENT ECADR IN DUMPLOC\n\t\tADS\tDUMPLOC\t\t# TO NEXT DP WORD TO BE\n\t\tMASK\tLOW8\t\t# DUMPED AND SAVE IT.\n\t\tCCS\tA\t\t# IS THIS THE BEGINNING OF A NEW EBANK\n\t\tTCF\tDNDUMP2\t\t# NO -- THEN CONTINUE DUMPING\n\t\tCA\tDUMPLOC\t\t# YES -- IS THIS THE END OF THE\n\t\tMASK\tDUMPCNT\t\t# N TH (N = 1 TO 4) COMPLETE ERASABLE\n\t\tMASK\tPRIO34\t\t# DUMP (BIT14 FOR 4, BIT13 FOR 2 OR BIT12\n\t\tCCS\tA\t\t# FOR 1 COMPLETE ERASABLE DUMP(S)).\n\t\tTCF\tDNPHASE1\t# YES -- START SENDING INTERRUPTED DOWNLIST\n\t\t\t\t\t# AGAIN\n\t\tTCF\tDNDUMPI\t+2\t# NO -- GO BACK AND INITIALIZE NEXT BANK\n\nDNDUMP1\t\tCA\tLDNDUMP\t\t# SET DNTMGOTO\n\t\tTS\tDNTMGOTO\t# FOR WORDS 3 TO 256D OF CURRENT EBANK\n\nDNDUMP2\t\tCA\tDUMPLOC\n\t\tTS\tEBANK\t\t# SET EBANK\n\t\tMASK\tLOW8\t\t# ISOLATE RELATIVE ADDRESS.\n\t\tTS\tQ\t\t# (NOTE: MASK INSTRUCTION IS USED TO PICK\n\t\tCA\tNEG0\t\t# UP ERASABLE REGISTERS SO THAT EDITING\n\t\tTS\tL\t\t# REGISTERS 20-23 WILL NOT BE ALTERED.)\n\t\tINDEX\tQ\n\t\tEBANK=\t1400\t\t# PICK UP LOW ORDER REGISTER OF PAIR\n\t\tMASK\t1401\t\t# OF ERASABLE REGISTERS.\n\t\tXCH\tL\n\t\tINDEX\tQ\t\t# PICK UP HIGH ORDER REGISTER OF PAIR\n\t\tMASK\t1400\t\t# OF ERASABLE REGISTERS.\n\t\tEBANK=\tDNTMBUFF\n\t\tTCF\tDNTMEXIT\t# GO SEND THEM\n\nSENDID\t\tEXTEND\t\t\t# ** ENTRANCE USED BY ERASABLE DUMP PROG. **\n\t\tQXCH\tDNTMGOTO\t# SET DNTMGOTO SO NEXT TIME PROG WILL GO\n\t\tCAF\tERASID\t\t# TO LOCATION FOLLOWING `TC SENDID'\n\n\t\tTS\tL\t\t# ** ENTRANCE USED BY REGULAR DOWNLINK PG **\n# Page 997\n\t\tTC\tWOZERO\t\t# GO SET WORD ORDER CODE TO ZERO\n\t\tCAF\tLOWIDCOD\t# PLACE SPECIAL ID CODE INTO L\n\t\tXCH\tL\t\t# AND ID BACK INTO A\n\t\tTCF\tDNTMEXIT\t# SEND DOWNLIST ID CODE(S).\n\nWOTEST\t\tCA\tBIT7\t\t# AT THE BEGINNING OF THE LIST THE WORD\n\t\tEXTEND\t\t\t# ORDER BIT WILL BE SET BACK TO ZERO\n\t\tRAND\tCHAN13\n\t\tCCS\tA\n\t\tTC\tDNTMGOTO\n\t\tCA\tBIT7\n\t\tTCF\tWO1\n\n"
  },
  {
    "path": "Luminary099/ERASABLE_ASSIGNMENTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tERASABLE ASSIGNMENTS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t0090-0152\n# Mod history:\t2009-05-16 OH\tTranscribed from page images.\n#\t\t2009-06-05 RSB\tEliminated a variable that shouldn't have\n#\t\t\t\tsurvived from Luminary 131.\n#\t\t2010-12-31 JL\tFixed page number comment.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 90\n# CONVENTIONS AND NOTATIONS UTILIZED FOR ERASABLE ASSIGNMENTS.\n\n#\tEQUALS\tIS USED IN TWO WAYS.  IT IS OFTEN USED TO CHAIN A GROUP\n#\t\tOF ASSIGNMENTS SO THAT THE GROUP MAY BE MOVED WITH THE\n#\t\tCHANGING OF ONLY ONE CARD.  EXAMPLE:\n#\n#\t\t\tX\tEQUALS\tSTART\n#\t\t\tY\tEQUALS\tX\t+SIZE.X\n#\t\t\tZ\tEQUALS\tY\t+SIZE.Y\n#\n#\t\t(X, Y, AND Z ARE CONSECUTIVE AND BEGIN AT START.\n#\t\tSIZE.X AND SIZE.Y ARE THE RESPECTIVE SIZES OF X AND Y.\n#\t\tUSUALLY NUMERIC, IE. 1, 2, 6, 18D, ETC.)\n\n#\tEQUALS\tOFTEN IMPLIES THE SHARING OF REGISTERS (DIFFERENT NAMES\n#\t\tAND DIFFERENT DATA).  EXAMPLE:\n#\n#\t\t\tX\tEQUALS\tY\n\n#\t=\tMEANS THAT MULTIPLE NAMES HAVE BEEN GIVEN TO THE SAME DATA.\n#\t\t(THIS IS LOGICAL EQUIVALENCE, NOT SHARING.)  EXAMPLE:\n#\n#\t\t\tX\t=\tY\n\n#\tTHE SIZE AND UTILIZATION OF AN ERASABLE ARE OFTEN INCLUDED IN\n#\tTHE COMMENTS IN THE FOLLOWING FORM:  M(SIZE)N.\n#\n#\t\tM\tREFERS TO THE MOBILITY OF THE ASSIGNMENT.\n#\t\t\tB\tMEANS THAT THE SYMBOL IS REFERENCED BY BASIC\n#\t\t\t\tINSTRUCTIONS AND THUS IS E-BANK SENSITIVE.\n#\t\t\tI\tMEANS THAT THE SYMBOL IS REFERENCED ONLY BY\n#\t\t\t\tINTERPRETIVE INSTRUCTIONS, AND IS THUS E-BANK\n#\t\t\t\tINSENSITIVE AND MAY APPEAR IN ANY E-BANK.\n#\n#\t\tSIZE\tIS THE NUMBER OF REGISTERS INCLUDED BY THE SYMBOL.\n#\n#\t\tN\tINDICATES THE NATURE OF PERMANENCE OF THE CONTENTS.\n#\t\t\tPL\tMEANS THAT THE CONTENTS ARE PAD LOADED.\n#\t\t\tDSP\tMEANS THAT THE REGISTER IS USED FOR A DISPLAY.\n#\t\t\tPRM\tMEANS THAT THE REGISTER IS PERMANENT.  IE., IT\n#\t\t\t\tIS USED DURING THE ENTIRE MISSION FOR ONE\n#\t\t\t\tPURPOSE AND CANNOT BE SHARED.\n#\t\t\tTMP\tMEANS THAT THE REGISTER IS USED TEMPORARILY OR\n#\t\t\t\tIS A SCRATCH REGISTER FOR THE ROUTINE TO WHICH\n#\t\t\t\tIT IS ASSIGNED.  THAT IS, IT NEED NOT BE SET\n#\t\t\t\tPRIOR TO INVOCATION OF THE ROUTINE NOR DOES IT\n#\t\t\t\tCONTAIN USEFUL OUTPUT TO ANOTHER ROUTINE.  THUS\n# Page 91\n#\t\t\t\tIT MAY BE SHARED WITHANY OTHER ROUTINE WHICH\n#\t\t\t\tIS NOT ACTIVE IN PARALLEL\n#\t\t\tIN\tMEANS INPUT TO THE ROUTINE AND IT IS PROBABLY\n#\t\t\t\tTEMPORARY FOR A HIGHER-LEVEL ROUTINE/PROGRAM.\n#\t\t\tOUT\tMEANS OUTPUT FROM THE ROUTINE, PROBABLY\n#\t\t\t\tTEMPORARY FOR A HIGHER-LEVEL ROUTINE/PROGRAM.\n\n# Page 92\n# SPECIAL REGISTERS.\n\nA\t\tEQUALS\t0\nL\t\tEQUALS\t1\t\t# L AND Q ARE BOTH CHANNELS AND REGISTERS\nQ\t\tEQUALS\t2\nEBANK\t\tEQUALS\t3\nFBANK\t\tEQUALS\t4\nZ\t\tEQUALS\t5\t\t# ADJACENT TO FBANK AND BBANK FOR DXCH Z\nBBANK\t\tEQUALS\t6\t\t# (DTCB) AND DXCH FBANK (DTCF).\n\t\t\t\t\t# REGISTER 7 IS A ZERO-SOURCE, USED BY ZL.\n\nARUPT\t\tEQUALS\t10\t\t# INTERRUPT STORAGE\nLRUPT\t\tEQUALS\t11\nQRUPT\t\tEQUALS\t12\nSAMPTIME\tEQUALS\t13\t\t# SAMPLED TIME 1 & 2.\nZRUPT\t\tEQUALS\t15\t\t# (13 AND 14 ARE SPARES.)\nBANKRUPT\tEQUALS\t16\t\t# USUALLY HOLDS FBANK OR BBANK.\nBRUPT\t\tEQUALS\t17\t\t# RESUME ADDRESS AS WELL.\n\nCYR\t\tEQUALS\t20\nSR\t\tEQUALS\t21\nCYL\t\tEQUALS\t22\nEDOP\t\tEQUALS\t23\t\t# EDITS INTERPRETIVE OPERATION CODE PAIRS.\n\nTIME2\t\tEQUALS\t24\nTIME1\t\tEQUALS\t25\nTIME3\t\tEQUALS\t26\nTIME4\t\tEQUALS\t27\nTIME5\t\tEQUALS\t30\nTIME6\t\tEQUALS\t31\nCDUX\t\tEQUALS\t32\nCDUY\t\tEQUALS\t33\nCDUZ\t\tEQUALS\t34\nCDUT\t\tEQUALS\t35\t\t# REND RADAR TRUNNION CDU\nCDUS\t\tEQUALS\t36\t\t# REND RADAR SHAFT CDU\nPIPAX\t\tEQUALS\t37\nPIPAY\t\tEQUALS\t40\nPIPAZ\t\tEQUALS\t41\nQ-RHCCTR\tEQUALS\t42\t\t# RHC COUNTER REGISTERS\nP-RHCCTR\tEQUALS\t43\nR-RHCCTR\tEQUALS\t44\nINLINK\t\tEQUALS\t45\nRNRAD\t\tEQUALS\t46\nGYROCMD\t\tEQUALS\t47\nCDUXCMD\t\tEQUALS\t50\nCDUYCMD\t\tEQUALS\t51\nCDUZCMD\t\tEQUALS\t52\nCDUTCMD\t\tEQUALS\t53\nCDUSCMD\t\tEQUALS\t54\n# Page 93\nTHRUST\t\tEQUALS\t55\nLEMONM\t\tEQUALS\t56\nOUTLINK\t\tEQUALS\t57\nALTM\t\tEQUALS\t60\n\n# INTERPRETIVE REGISTERS ADDRESSED RELATIVE TO VAC AREA.\n\nLVSQUARE\tEQUALS\t34D\t\t# SQUARE OF VECTOR INPUT TO ABVAL AND UNIT\nLV\t\tEQUALS\t36D\t\t# LENGTH OF VECTOR INPUT TO UNIT.\nX1\t\tEQUALS\t38D\t\t# INTERPRETIVE SPECIAL REGISTER RELATIVE\nX2\t\tEQUALS\t39D\t\t# TO THE WORK AREA.\nS1\t\tEQUALS\t40D\nS2\t\tEQUALS\t41D\nQPRET\t\tEQUALS\t42D\n\n# INPUT/OUTPUT CHANNELS\n\n# *** CHANNEL ZERO IS TO BE USED IN AN INDEXED OPERATION ONLY. ***\nLCHAN\t\tEQUALS\tL\nQCHAN\t\tEQUALS\tQ\nHISCALAR\tEQUALS\t3\nLOSCALAR\tEQUALS\t4\nCHAN5\t\tEQUALS\t5\nCHAN6\t\tEQUALS\t6\nSUPERBNK\tEQUALS\t7\t\t# SUPER-BANK.\nOUT0\t\tEQUALS\t10\nDSALMOUT\tEQUALS\t11\nCHAN12\t\tEQUALS\t12\nCHAN13\t\tEQUALS\t13\nCHAN14\t\tEQUALS\t14\nMNKEYIN\t\tEQUALS\t15\nNAVKEYIN\tEQUALS\t16\nCHAN30\t\tEQUALS\t30\nCHAN31\t\tEQUALS\t31\nCHAN32\t\tEQUALS\t32\nCHAN33\t\tEQUALS\t33\nDNTM1\t\tEQUALS\t34\nDNTM2\t\tEQUALS\t35\n\n# END OF CHANNEL ASSIGNMENTS\n\n# Page 94\n# INTERPRETIVE SWITCH BIT ASSIGNMENTS\n\n#\t** FLAGWORDS AND BITS NOW ASSIGNED AND DEFINED IN THEIR OWN LOG SECTION. **\n\n# Page 95\n# GENERAL ERASABLE ASSIGNMENTS\n\n\t\tSETLOC\t61\n# INTERRUPT TEMPORARY STORAGE POOL.\t(11D)\n\n# (ITEMP1 THROUGH RUPTREG4)\n\n# ANY OF THESE MAY BE USED AS TEMPORARIES DURING INTERRUPT OR WITH INTERRUPT INHIBITED. THE ITEMP SERIES\n# IS USED DURING CALLS TO THE EXECUTIVE AND WAITLIST -- THE RUPTREGS ARE NOT.\n\nITEMP1\t\tERASE\nWAITEXIT\tEQUALS\tITEMP1\nEXECTEM1\tEQUALS\tITEMP1\n\nITEMP2\t\tERASE\nWAITBANK\tEQUALS\tITEMP2\nEXECTEM2\tEQUALS\tITEMP2\n\nITEMP3\t\tERASE\nRUPTSTOR\tEQUALS\tITEMP3\nWAITADR\t\tEQUALS\tITEMP3\nNEWPRIO\t\tEQUALS\tITEMP3\n\nITEMP4\t\tERASE\nLOCCTR\t\tEQUALS\tITEMP4\nWAITTEMP\tEQUALS\tITEMP4\n\nITEMP5\t\tERASE\nNEWLOC\t\tEQUALS\tITEMP5\n\nITEMP6\t\tERASE\nNEWLOC+1\tEQUALS\tITEMP6\t\t# DP ADDRESS.\n\n\t\tSETLOC\t67\nNEWJOB\t\tERASE\t\t\t# MUST BE AT LOC 67 DUE TO WIRING.\n\nRUPTREG1\tERASE\nRUPTREG2\tERASE\nRUPTREG3\tERASE\nRUPTREG4\tERASE\nKEYTEMP1\tEQUALS\tRUPTREG4\nDSRUPTEM\tEQUALS\tRUPTREG4\n\n# FLAGWORD RESERVATIONS.\t\t(16D)\n\nSTATE\t\tERASE\t+15D\t\t# +15D FLAGWORD REGISTERS\n\n# P25 RADAR STORAGE.  (MAY BE UNSHARED IN E7)  (TEMP OVERLAY)  (2D)  OVERLAYS FLGWRD 14 & 15\n# Page 96\nLASTYCMD\tEQUALS\tSTATE +14D\t# B(1)PRM\tTHESE ARE CALLED BY T4RUPT\nLASTXCMD\tEQUALS\tLASTYCMD +1\t# B(1)PRM\tTHEY MUST BE CONTIGUOUS, Y FIRST\n\n# EXEC TEMPORARIES WHICH MAY BE USED BETWEEN CCS NEWJOBS (32D) (INTB15+ THROUGH RUPTMXTM)\nINTB15+\t\tERASE\t\t\t# REFLECTS 15TH BIT OF INDEXABLE ADDRESSES\nDSEXIT\t\t=\tINTB15+\t\t# RETURN FOR DSPIN\nEXITEM\t\t=\tINTB15+\t\t# RETURN FOR SCALE FACTOR ROUTINE SELECT\nBLANKRET\t=\tINTB15+\t\t# RETURN FOR 2BLANK\n\nINTBIT15\tERASE\t\t\t# SIMILAR TO ABOVE.\nWRDRET\t\t=\tINTBIT15\t# RETURN FOR 5BLANK\nWDRET\t\t=\tINTBIT15\t# RETURN FOR DSPWD\nDECRET\t\t=\tINTBIT15\t# RETURN FOR PUTCOM(DEC LOAD)\n21/22REG\t=\tINTBIT15\t# TEMP FOR CHARIN\n\n# THE REGISTERS BETWEEN ADDRWD AND PRIORITY MUST STAY IN THE FOLLOWING ORDER FOR INTERPRETIVE TRACE.\n\nADDRWD\t\tERASE\t\t\t# 12 BIT INTERPRETIVE OPERAND SUB-ADDRESS.\nPOLISH\t\tERASE\t\t\t# HOLDS CADR MADE FROM POLISH ADDRESS.\nUPDATRET\t=\tPOLISH\t\t# RETURN FOR UPDATNN, UPDATVB\nCHAR\t\t=\tPOLISH\t\t# TEMP FOR CHARIN\nERCNT\t\t=\tPOLISH\t\t# COUNTER FOR ERROR LIGHT RESET\nDECOUNT\t\t=\tPOLISH\t\t# COUNTER FOR SCALING AND DISPLAY (DEC)\n\nFIXLOC\t\tERASE\t\t\t# WORK AREA ADDRESS.\nOVFIND\t\tERASE\t\t\t# SET NON-ZERO ON OVERFLOW.\n\nVBUF\t\tERASE\t+5\t\t# TEMPORARY STORAGE USED FOR VECTORS.\nSGNON\t\t=\tVBUF\t\t# TEMP FOR +,- ON\nNOUNTEM\t\t=\tVBUF\t\t# COUNTER FOR MIXNOUN FETCH\nDISTEM\t\t= \tVBUF\t\t# COUNTER FOR OCTAL DISPLAY VERB\nDECTEM\t\t=\tVBUF\t\t# COUNTER FOR FETCH (DEC DISPLAY VERBS)\n\nSGNOFF\t\t=\tVBUF +1\t\t# TEMP FOR +,- ON\nNVTEMP\t\t=\tVBUF +1\t\t# TEMP FOR NVSUB\nSFTEMP1\t\t=\tVBUF +1\t\t# STORAGE FOR SF CONST HI PART (=SFTEMP2-1)\nHITEMIN\t\t=\tVBUF +1\t\t# TEMP FOR LOAD OF HRS,MIN,SEC\n\t\t\t\t\t# MUST = LOTEMIN-1.\n\nCODE\t\t=\tVBUF +2\t\t# FOR DSPIN\nSFTEMP2\t\t=\tVBUF +2\t\t# STORAGE FOR SF CONST LO PART (=SFTEMP1+1)\nLOTEMIN\t\t=\tVBUF +2\t\t# TEMP FOR LOAD OF HRS,MIN,SEC\n\t\t\t\t\t# MUST = HITEMIN+1\n\nMIXTEMP\t\t=\tVBUF +3\t\t# FOR MIXNOUN DATA\nSIGNRET\t\t=\tVBUF +3\t\t# RETURN FOR +,- ON\n\n# ALSO MIXTEMP+1 = VBUF+4, MIXTEMP+2 = VBUF+5\n\nBUF\t\tERASE\t+2\t\t# TEMPORARY SCALAR STORAGE.\n# Page 97\nBUF2\t\tERASE\t+1\nINDEXLOC\tEQUALS\tBUF\t\t# CONTAINS ADDRESS OF SPECIFIED INDEX.\nSWWORD\t\tEQUALS\tBUF\t\t# ADDRESS OF SWITCH WORD.\nSWBIT\t\tEQUALS\tBUF +1\t\t# SWITCH BIT WITHIN THE SWITCH WORD\nMPTEMP\t\tERASE\t\t\t# TEMPORARY USED IN MULTIPLY AND SHIFT\nDMPNTEMP\t=\tMPTEMP\t\t# DMPSUB TEMPORARY\nDOTINC\t\tERASE\t\t\t# COMPONENT INCREMENT FOR DOT SUBROUTINE\nDVSIGN\t\tEQUALS\tDOTINC\t\t# DETERMINES SIGN OF DDV RESULT\nESCAPE\t\tEQUALS\tDOTINC\t\t# USED IN ARCSIN/ARCCOS.\nENTRET\t\t=\tDOTINC\t\t# EXIT FROM ENTER\n\nDOTRET\t\tERASE\t\t\t# RETURN FROM DOT SUBROUTINE\nDVNORMCT\tEQUALS\tDOTRET\t\t# DIVIDENT NORMALIZATION COUNT IN DDV.\nESCAPE2\t\tEQUALS\tDOTRET\t\t# ALTERNATE ARCSIN/ARCCOS SWITCH\nWDCNT\t\t=\tDOTRET\t\t# CHAR COUNTER FOR DSPWD\nINREL\t\t=\tDOTRET\t\t# INPUT BUFFER SELECTION ( X,Y,Z, REG)\n\nMATINC\t\tERASE\t\t\t# VECTOR INCREMENT IN MXV AND VXM\nMAXDVSW\t\tEQUALS\tMATINC\t\t# +0 IF DP QUOTIENT IS NEAR ONE -- ELSE -1.\nPOLYCNT\t\tEQUALS\tMATINC\t\t# POLYNOMIAL LOOP COUNTER\nDSPMMTEM\t=\tMATINC\t\t# DSPCOUNT SAVE FOR DSPMM\nMIXBR\t\t=\tMATINC\t\t# INDICATOR FOR MIXED OR NORMAL NOUN\n\nTEM1\t\tERASE\t\t\t# EXEC TEMP\nPOLYRET\t\t=\tTEM1\nDSREL\t\t=\tTEM1\t\t# REL ADDRESS FOR DSPIN\n\nTEM2\t\tERASE\t\t\t# EXEC TEMP\nDSMAG\t\t=\tTEM2\t\t# MAGNITUDE STORE FOR DSPIN\nIDADDTEM\t=\tTEM2\t\t# MIXNOUN INDIRECT ADDRESS (garbled)\n\nTEM3\t\tERASE\t\t\t# EXEC TEMP\nCOUNT\t\t=\tTEM3\t\t# FOR DSPIN\n\nTEM4\t\tERASE\t\t\t# EXEC TEMP\nLSTPTR\t\t=\tTEM4\t\t# LIST POINTER FOR GRABUSY\nRELRET\t\t=\tTEM4\t\t# RETURN FOR RELDSP\nFREERET\t\t=\tTEM4\t\t# RETURN FOR FREEDSP\nDSPWDRET\t=\tTEM4\t\t# RETURN FOR DSPSIGN\nSEPSCRET\t=\tTEM4\t\t# RETURN FOR SEPSEC\nSEPMNRET\t=\tTEM4\t\t# RETURN FOR SEPMIN\n\nTEM5\t\tERASE\t\t\t# EXEC TEMP\nNOUNADD\t\t=\tTEM5\t\t# TEMP STORAGE FOR NOUN ADDRESS\n\nNNADTEM\t\tERASE\t\t\t# TEMP FOR NOUN ADDRESS TABLE ENTRY\nNNTYPTEM\tERASE\t\t\t# TEMP FOR NOUN TYPE TABLE ENTRY\nIDAD1TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n\t\t\t\t\t# MUST = IDAD2TEM-1, = IDAD3TEM-2\nIDAD2TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n# Page 98\n\t\t\t\t\t# MUST = IDAD1TEM+1, = IDAD3TEM-1.\nIDAD3TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n\t\t\t\t\t# MUST = IDAD1TEM+2, = IDAD2TEM+1.\nRUTMXTEM\tERASE\t\t\t# TEMP FOR SF ROUT TABLE ENTRY (MIXNN ONLY)\n\n# AX*SR*T STORAGE.\t\t\t(6D)\nDEXDEX\t\tEQUALS\tTEM2\t\t# B(1)TMP\nDEX1\t\tEQUALS\tTEM3\t\t# B(1)TMP\nDEX2\t\tEQUALS\tTEM4\t\t# B(1)TMP\nRTNSAVER\tEQUALS\tTEM5\t\t# B(1)TMP\nTERM1TMP\tEQUALS\tMPAC +3\t\t# B(2)TMP\n\nDEXI\t\t=\tDEX1\n\n# THE FOLLOWING 10 REGISTERS ARE USED FOR TEMPORARY STORAGE OF THE DERIVATIVE COEFFICIENT TABLE OF\n# SUBROUTINE ROOTPSRS.  THEY MUST REMAIN WITHOUT INTERFERENCE WITH ITS SUBROUTINES WHICH ARE POWRSERS (POLY).\n# DMPSUB, DMPNSUB, SHORTMP, DDV/BDDV, ABS, AND USPRCADR.\n\nDERCOF-8\t=\tMPAC -12\t# ROOTPSRS DER COF N-4 HI ORDER\nDERCOF-7\t=\tMPAC -11\t# ROOTPSRS DER COF N-4 LO ORDER\nDERCOF-6\t=\tMPAC -10\t# ROOTPSRS DER COF N-3 HI ORDER\nDERCOF-5\t=\tMPAC -7\t\t# ROOTPSRS DER COF N-3 LO ORDER\nDERCOF-4\t=\tMPAC -6\t\t# ROOTPSRS DER COF N-2 HI ORDER\nDERCOF-3\t=\tMPAC -5\t\t# ROOTPSRS DER COF N-2 LO ORDER\nDERCOF-2\t=\tMPAC -4\t\t# ROOTPSRS DER COF N-1 HI ORDER\nDERCOF-1\t=\tMPAC -3\t\t# ROOTPSRS DER COF N-1 LO ORDER\nDERCOFN\t\t=\tMPAC -2\t\t# ROOTPSRS DER COF N, HI ORDER\nDERCOF+1\t=\tMPAC -1\t\t# ROOTPSRS DER COF N, LO ORDER\n\nPWRPTR\t\t=\tPOLISH\t\t# ROOTPSRS POWER TABLE POINTER\nDXCRIT\t\t=\tVBUF +2\t\t# ROOTPSRS CRITERION FOR ENDING ITERS HI\nDXCRIT+1\t=\tVBUF +3\t\t# ROOTPSRS CRITERION FOR ENDING ITERS LOW\nROOTPS\t\t=\tVBUF +4\t\t# ROOTPSRS ROOT HI ORDER\nROOTPS+1\t=\tVBUF +5\t\t# ROOTPSRS ROOT LO ORDER\nRETROOT\t\t=\tBUF +2\t\t# ROOTPSRS RETURN ADDRESS OF USER\nPWRCNT\t\t=\tMATINC\t\t# ROOTPSRS DER TABLE LOOP COUNTER\nDERPTR\t\t=\tTEM1\t\t# ROOTPSRS DER TABLE POINTER\n\n# Page 99\n# DYNAMICALLY ALLOCATED CORE SETS FOR JOBS\t(84D)\n\nMPAC\t\tERASE\t+6\t\t# MULTI-PURPOSE ACCUMULATOR.\nMODE\t\tERASE\t\t\t# +1 FOR TP, +0 FOR DP, OR -1 FOR VECTOR.\nLOC\t\tERASE\t\t\t# LOCATION ASSOCIATED WITH JOB.\nBANKSET\t\tERASE\t\t\t# USUALLY CONTAINS BBANK SETTING.\nPUSHLOC\t\tERASE\t\t\t# WORD OF PACKED INTERPRETIVE PARAMETERS.\nPRIORITY\tERASE\t\t\t# PRIORITY OF PRESENT JOB AND WORK AREA.\n\n\t\tERASE\t+83D\t\t# EIGHT SETS OF 12 REGISTERS EACH\n\n# INCORP STORAGE:  R22 (N29)\t(SHARES WITH FOLLOWING SECTION)\t\t(4D)\n\nR22DISP\t\tEQUALS\tTIME2SAV\t# I(4) N49 DISPLAY OF DELTA R AND DELTA V\n\n# STANDBY VERB ERASABLES.  REDOCTR BEFORE THETADS.\t(14D)\n\nTIME2SAV\tERASE\t+1\nSCALSAVE\tERASE\t+1\nREDOCTR\t\tERASE\t\t\t# CONTAINS NUMBER OF RESTARTS\nTHETAD\t\tERASE\t+2\nCPHI\t\t=\tTHETAD\t\t# O \tDESIRED GIMBAL ANGLES\nCTHETA\t\t=\tTHETAD +1\t# I\tFOR\nCPSI\t\t=\tTHETAD +2\t# M\tMANEUVER\nDELV\t\tERASE\t+5\nDELVX\t\t=\tDELV\nDELVY\t\t=\tDELV +2\nDELVZ\t\t=\tDELV +4\n\n\n# DOWNLINK STORAGE.\t\t\t(28D)\n\nDNLSTADR\tEQUALS\tDNLSTCOD\n\nDNLSTCOD\tERASE\t\t\t# B(1)PRM DOWNLINK LIST CODE\nDUMPCNT\t\tERASE\t\t\t# B(1)\nLDATALST\tERASE\t+25D\t\t# (26D)\nDNTMGOTO\tEQUALS\tLDATALST +1\t# B(1)\nTMINDEX\t\tEQUALS\tDNTMGOTO +1\t# B(1)\nDUMPLOC\t\tEQUALS\tTMINDEX\t\t# CONTAINS ECADR OF AGC DP WORD BEING DUMPED\n\t\t\t\t\t# AND COUNT OF COMPLETE DUMPS ALREADY\n\t\t\t\t\t# SENT.\nDNQ\t\tEQUALS\tTMINDEX +1\t# B(1)\nDNTMBUFF\tEQUALS\tDNQ +1\t\t# B(22)PRM DOWNLINK SNAPSHOT BUFFER\n\n# UNSWITCHED FOR DISPLAY INTERFACE ROUTINES.\t(10D) FIVE MORE IN EBANK 2.\n\n# Page 100\nRESTREG\t\tERASE\t\t\t# B(1)PRM FOR DISPLAY RESTARTS\nNVWORD\t\tERASE\nMARKNV\t\tERASE\nNVSAVE\t\tERASE\n# (RETAIN THE ORDER OF CADRFLSH TO FAILREG +2 FOR DOWNLINK PURPOSES)\nCADRFLSH\tERASE\nCADRMARK\tERASE\nTEMPFLSH\tERASE\nFAILREG\t\tERASE\t+2\t\t# B(3)PRM 3 ALARM CODE REGISTERS\n\n# VAC AREAS. -- BE CAREFUL OF PLACEMENT --\t(220D)\n\nVAC1USE\t\tERASE\nVAC1\t\tERASE\t+42D\nVAC2USE\t\tERASE\nVAC2\t\tERASE\t+42D\nVAC3USE\t\tERASE\nVAC3\t\tERASE\t+42D\nVAC4USE\t\tERASE\nVAC4\t\tERASE\t+42D\nVAC5USE\t\tERASE\nVAC5\t\tERASE\t+42D\n\n# WAITLIST REPEAT FLAG.\t\t\t(1D)\nRUPTAGN\t\tERASE\nKEYTEMP2\t=\tRUPTAGN\t\t# TEMP FOR KEYRUPT, UPRUPT\n\n# STARALIGN ERASABLES.\t\t\t(13D)\n\nSTARCODE\tERASE\t\t\t# (1)\nAOTCODE\t\t=\tSTARCODE\nSTARALGN\tERASE\t+11D\nSINCDU\t\t=\tSTARALGN\nCOSCDU\t\t=\tSTARALGN +6\n\nSINCDUX\t\t=\tSINCDU +4\nSINCDUY\t\t=\tSINCDU\nSINCDUZ\t\t=\tSINCDU +2\nCOSCDUX\t\t=\tCOSCDU +4\nCOSCDUY\t\t=\tCOSCDU\nCOSCDUZ\t\t=\tCOSCDU +2\n\n# PHASE TABLE AND RESTART COUNTERS\t\t(12D)\n\n-PHASE1\t\tERASE\n\n# Page 101\nPHASE1\t\tERASE\n-PHASE2\t\tERASE\nPHASE2\t\tERASE\n-PHASE3\t\tERASE\nPHASE3\t\tERASE\n-PHASE4\t\tERASE\nPHASE4\t\tERASE\n-PHASE5\t\tERASE\nPHASE5\t\tERASE\n-PHASE6\t\tERASE\nPHASE6\t\tERASE\n\n# A**SR*T STORAGE.\t\t\t(6D)\n\nCDUSPOT\t\tERASE\t+5\t\t# B(6)\n\nCDUSPOTY\t=\tCDUSPOT\nCDUSPOTZ\t=\tCDUSPOT +2\nCDUSPOTX\t=\tCDUSPOT +4\n\n# VERB 37 STORAGE\t\t\t(2D)\n\nMINDEX\t\tERASE\t\t\t# B(1)TMP INDEX FOR MAJOR MODE\nMMNUMBER\tERASE\t\t\t# B(1)TMP MAJOR MODE REQUESTED BY V37\n\n# PINBALL INTERRUPT ACTION\t\t(1D)\n\nDSPCNT\t\tERASE\t\t\t# B(1)PRM COUNTER FOR DSPOUT\n\n# PINBALL EXECUTIVE ACTION\t\t(44D)\n\nDSPCOUNT\tERASE\t\t\t# DISPLAY POSITION INDICATOR\nDECBRNCH\tERASE\t\t\t# +DEC, -DEC, OCT INDICATOR\nVERBREG\t\tERASE\t\t\t# VERB CODE\nNOUNREG\t\tERASE\t\t\t# NOUN CODE\nXREG\t\tERASE\t\t\t# R1 INPUT BUFFER\nYREG\t\tERASE\t\t\t# R2 INPUT BUFFER\nZREG\t\tERASE\t\t\t# R3 INPUT BUFFER\nXREGLP\t\tERASE\t\t\t# LO PART OF XREG (FOR DEC CONV ONLY)\nYREGLP\t\tERASE\t\t\t# LO PART OF YREG (FOR DEC CONV ONLY)\nHITEMOUT\t=\tYREGLP\t\t# TEMP FOR DISPLAY OF HRS,MIN,SEC\n\t\t\t\t\t# MUST = LOTEMOUT-1.\nZREGLP\t\tERASE\t\t\t# LO PART OF ZREG (FOR DEC CONV ONLY)\nLOTEMOUT\t=\tZREGLP\t\t# TEMP FOR DISPLAY OF HRS,MIN,SEC\n\t\t\t\t\t# MUST = HITEMOUT+1\nMODREG\t\tERASE\t\t\t# MODE CODE\n\n# Page 102\nDSPLOCK\t\tERASE\t\t\t# KEYBOARD/SUBROUTINE CALL INTERLOCK\nREQRET\t\tERASE\t\t\t# RETURN REGISTER FOR LOAD\nLOADSTAT\tERASE\t\t\t# STATUS INDICATOR FOR LOADTST\nCLPASS\t\tERASE\t\t\t# PASS INDICATOR CLEAR\nNOUT\t\tERASE\t\t\t# ACTIVITY COUNTER FOR DSPTAB\nNOUNCADR\tERASE\t\t\t# MACHINE CADR FOR NOUN\nMONSAVE\t\tERASE\t\t\t# N/V CODE FOR MONITOR. (= MONSAVE1-1)\nMONSAVE1\tERASE\t\t\t# NOUNCADR FOR MONITOR (MATBS1) = MONSAVE+1\nMONSAVE2\tERASE\t\t\t# NVMONOPT OPTIONS\nDSPTAB\t\tERASE\t+11D\t\t# 0-10D, DISPLAY PANEL BUFF.  11D, C/S LTS.\nNVQTEM\t\tERASE\t\t\t# NVSUB STORAGE FOR CALLING ADDRESS\n\t\t\t\t\t# MUST = NVBNKTEM-1.\nNVBNKTEM\tERASE\t\t\t# NVSUB STORAGE FOR CALLING BANK\n\t\t\t\t\t# MUST = NVQTEM+1\nVERBSAVE\tERASE\t\t\t# NEEDED FOR RECYCLE\nCADRSTOR\tERASE\t\t\t# ENDIDLE STORAGE\nDSPLIST\t\tERASE\t\t\t# WAITING REG FOR DSP SYST INTERNAL USE\nEXTVBACT\tERASE\t\t\t# EXTENDED VERB ACTIVITY INTERLOCK\nDSPTEM1\t\tERASE\t+2\t\t# BUFFER STORAGE AREA 1 (MOSTLY FOR TIME)\nDSPTEM2\t\tERASE\t+2\t\t# BUFFER STORAGE AREA 2 (MOSTLY FOR DEG)\n\nDSPTEMX\t\tEQUALS\tDSPTEM2 +1\t# B(2) S-S DISPLAY BUFFER FOR EXT. VERBS\nNORMTEM1\tEQUALS\tDSPTEM1\t\t# B(3)DSP NORMAL DISPLAY REGISTERS.\n\n# DISPLAY FOR EXTENDED VERBS (V82, R04(V62), V41(N72) )\t(2D)\n\nOPTIONX\t\tEQUALS\tDSPTEMX\t\t# (2) EXTENDED VERB OPTION CODE\n\n# TBASES AND PHSPRDT S.\t\t\t(12D)\n\nTBASE1\t\tERASE\nPHSPRDT1\tERASE\nTBASE2\t\tERASE\nPHSPRDT2\tERASE\nTBASE3\t\tERASE\nPHSPRDT3\tERASE\nTBASE4\t\tERASE\nPHSPRDT4\tERASE\nTBASE5\t\tERASE\nPHSPRDT5\tERASE\nTBASE6\t\tERASE\nPHSPRDT6\tERASE\n\n# UNSWITCHED FOR DISPLAY INTERFACE ROUTINES.\t(6D)\n\n# Page 103\nNVWORD1\t\tERASE\t\t\t# B(1) PROBABLY FOR DISPLAY DURING SERVICER\nEBANKSAV\tERASE\nMARKEBAN\tERASE\nEBANKTEM\tERASE\nMARK2PAC\tERASE\nR1SAVE\t\tERASE\n\n# IMU COMPENSATION UNSWITCHED ERASABLE.\t\t(1D)\n\n1/PIPADT\tERASE\n\n# SINGLE PRECISION SUBROUTINE TEMPORARIES\t(2D)\n\nTEMK\t\tERASE\t\t\t# (1)\nSQ\t\tERASE\t\t\t# (1)\n\n# UNSWITCHED RADAR ERASABLE\n\nSAMPLIM\t\tERASE\nSAMPLSUM\tERASE\t+3\nTIMEHOLD\tERASE\t+1\nRRTARGET\tEQUALS\tSAMPLSUM\t# HALF U IT VECTOR IN SM OR NB AXES.\nTANG\t\tERASE\t+1\t\t# DESIRE TRUNNION AND SHAFT ANGLES.\nMODEA\t\tEQUALS\tTANG\nMODEB\t\tERASE\t+1\t\t# DODES LOBBERS TANG +2.\nNSAMP\t\tEQUALS\tMODEB\nDESRET\t\tERASE\nOLDATAGD\tEQUALS\tDESRET\t\t# USED IN DATA READING ROUTINES.\nDESCOUNT\tERASE\n\n# ******   P22  ******\t\t\t\t(6D)\n\nRSUBC\t\tEQUALS\tRRTARGET\t# I(6) S-S CSM POSITION VECTOR.\n\n# Page 104\n# UNSWITCHED FOR ORBIT INTEGRATION\t\t(21D)\n\nTDEC\t\tERASE\t+20D\t\t# I(2)\nCOLREG\t\tEQUALS\tTDEC +2\t\t# I(1)\nLAT\t\tEQUALS\tCOLREG +1\t# I(2)\nLONG\t\tEQUALS\tLAT +2\t\t# I(2)\nALT\t\tEQUALS\tLONG +2\t\t# I(2)\nYV\t\tEQUALS\tALT +2\t\t# I(6)\nZV\t\tEQUALS\tYV +6\t\t# I(6)\n\n# MISCELLANEOUS UNSWITCHED.\t\t\t(20D)\n\nP40/RET\t\tERASE\t\t\t# (WILL BE PUT IN E6 WHEN THERE IS ROOM)\nGENRET\t\tERASE\t\t\t# B(1) R61 RETURN CADR.\nOPTION1\t\tERASE\t\t\t# B(1) NOUN 06 USES THIS\nOPTION2\t\tERASE\t\t\t# B(1) NOUN 06 USES THIS\nOPTION3\t\tERASE\t\t\t# B(1) NOUN 06 USES THIS\nLONGCADR\tERASE +1\t\t# B(2) LONGCALL REGISTER\nLONGBASE\tERASE +1\nLONGTIME\tERASE +1\t\t# B(2) LONGCALL REGISTER\nCDUTEMPX\tERASE\t\t\t# B(1)TMP\nCDUTEMPY\tERASE\t\t\t# B(1)TMP\nCDUTEMPZ\tERASE\t\t\t# B(1)TMP\nPIPATMPX\tERASE\t\t\t# B(1)TMP\nPIPATMPY\tERASE\t\t\t# B(1)TMP\nPIPATMPZ\tERASE\t\t\t# B(1)TMP\n\nDISPDEX\t\tERASE\t\t\t# B(1)\nTEMPR60\t\tERASE\t\t\t# B(1)\nPRIOTIME\tERASE\t\t\t# B(1)\n\n# P27 (UPDATE PROGRAM) STORAGE\t\t\t(26D)\n\nUPVERBSV\tERASE\t\t\t# B(1) UPDATE VERB ATTEMPTED.\nUPTEMP\t\tERASE\t+24D\t\t# B(1)TMP SCRATCH\nINTWAK1Q\tEQUALS\tUPTEMP\t\t# (BORROWS UPTEMP REGISTERS)\n# RETAIN THE ORDER OF COMPNUMB THRU UPBUFF +19D FOR DOWNLINK PURPOSES.\nCOMPNUMB\tEQUALS\tUPTEMP +1\t# B(1)TMP NUMBER OF ITEMS TO BE UPLINKED\nUPOLDMOD\tEQUALS\tCOMPNUMB +1\t# B(1)TMP INTERRUPTD PROGRAM MM\nUPVERB\t\tEQUALS\tUPOLDMOD +1\t# B(1)TMP VERB NUMBER\nUPCOUNT\t\tEQUALS\tUPVERB +1\t# B(1)TMP UPBUFF INDEX\nUPBUFF\t\tEQUALS\tUPCOUNT +1\t# B(20D)\n\n# SPECIAL DEFINITION FOR SYSTEM TEST ERASABLE PGMS.\t(2D)\n\nEBUF2\t\tEQUALS\tUPTEMP\t\t# B(2) FOR EXCLUSIVE USE OF SYSTEM TEST.\n\n# Page 105\n# PERM STATE VECTORS FOR BOOST AND DOWNLINK -- WHOLE MISSION --\t(14D)\n\nRN\t\tERASE\t+5\t\t# B(6)PRM\nVN\t\tERASE\t+5\t\t# B(6)PRM\nPIPTIME\t\tERASE\t+1\t\t# B(2)PRM (MUST BE FOLLOWED BY GDT/2)\n\n# SERVICER -- MUST FOLLOW PIPTIME --\t\t(19D)\n\nGDT/2\t\tERASE\t+19D\t\t# B(6)TMP\t** MUST FOLLOW PIPTIME **\nMASS\t\tEQUALS\tGDT/2 +6\t# B(2)\nWEIGHT/G\t=\tMASS\nABDELV\t\tEQUALS\tMASS +2\t\t# (KALCMANU STORAGE)\nPGUIDE\t\tEQUALS\tABDELV +1\t# (2)\nDVTHRUSH\tEQUALS\tPGUIDE +2\t# (1)\nAVEGEXIT\tEQUALS\tDVTHRUSH +1\t# (2)\nAVGEXIT\t\t=\tAVEGEXIT\nTEMX\t\tEQUALS\tAVEGEXIT +2\t# (1)\nTEMY\t\tEQUALS\tTEMX +1\t\t# (1)\nTEMZ\t\tEQUALS\tTEMY +1\t\t# (1)\nPIPAGE\t\tEQUALS\tTEMZ +1\t\t# B(1)\nOUTROUTE\tEQUALS\tPIPAGE +1\t# B(1)\n\n# PERMANENT LEM DAP STORAGE\t\t(12D)\n\nCH5MASK\t\tERASE\t\t\t# B(1)PRM\nCH6MASK\t\tERASE\t\t\t# B(1)PRM JET FAILURE MASK.\nDTHETASM\tERASE +5\t\t#  (6)\nSPNDX\t\tERASE\t\t\t# B(1)\nRCSFLAGS\tERASE\t\t\t# AUTOPILOT FLAG WORD\n\t\t\t\t\t# BIT ASSIGNMENTS:\n\t\t\t\t\t#  1) ALTERYZ SWITCH (ZEROOR1)\n\t\t\t\t\t#  2) NEEDLER SWITCH\n\t\t\t\t\t#  3) NEEDLER SWITCH\n\t\t\t\t\t#  4) NEEDLER SWITCH\n\t\t\t\t\t#  5) NEEDLER SWITCH\n\t\t\t\t\t#  9) JUST-IN-DETENT SWITCH\n\t\t\t\t\t# 10) PBIT -- MANUAL CONTROL SWITCH\n\t\t\t\t\t# 11) QRBIT -- MANUAL CONTROL SWITCH\n\t\t\t\t\t# 12) PSKIP CONTROL (PJUMPADR)\n\t\t\t\t\t# 13) 1/ACCJOB CONTROL (ACCSET)\nT5ADR\t\tERASE\t+1\t\t# GENADR OF NEXT LM DAP T5RUPT. * 2CADR *\n\t\t\t\t\t# BBCON  OF NEXT LM DAP T5RUPT.   2CADR\n\n# ERASABLES FOR P64:  OVERLAY OF DTHETASM, WHICH IS UNUSED\t(4D)\nZERLINA\t\tEQUALS\tDTHETASM\t# B(1)\tP64\n\n# Page 106\nELVIRA\t\tEQUALS\tZERLINA +1\t# B(1)\tP64\nAZINCR1\t\tEQUALS\tELVIRA  +1\t# B(1)\tP64\nELINCR1\t\tEQUALS\tAZINCR1 +1\t# B(1)\tP64\n\n# RCS FAILURE MONITOR STORAGE\t\t(1)\n\nPVALVEST\tERASE\t\t\t# B(1)PRM\n\n# KALCMANU/DAP INTERFACE\t\t\t(3D)\n\nDELPEROR\tERASE\t\t\t# B(1)PRM COMMAND LAGS.\nDELQEROR\tERASE\t\t\t# B(1)PRM\nDELREROR\tERASE\t\t\t# B(1)PRM\n\n# MODE SWITCHING ERASABLE.\t\t\t(9D)\n\n# RETAIN THE ORDER OF IMODES30 AND IMODES33 FOR DOWNLINK PURPOSES\nIMODES30\tERASE\t\t\t# B(1)\nIMODES33\tERASE\nMODECADR\tERASE\t+2\t\t# B(3)PRM\nIMUCADR\t\tEQUALS\tMODECADR\nOPTCADR\t\tEQUALS\tMODECADR +1\nRADCADR\t\tEQUALS\tMODECADR +2\nATTCADR\t\tERASE\t+2\t\t# B(3)PRM\nATTPRIO\t\t=\tATTCADR +2\nMARKSTAT\tERASE\n\n# T4RUPT ERASABLE\t\t\t\t(2D)\n\nDSRUPTSW\tERASE\nLGYRO\t\tERASE\t\t\t# (1)\n\n# RENDEZVOUS RADAR TASK STORAGE\t\t\t(3D)\n\nRRRET\t\tERASE\t+2D\t\t# B(1)TMP\tP20'S, PERHAPS R29 & R12\nRDES\t\tEQUALS\tRRRET +1\t# B(1)TMP\nRRINDEX\t\tEQUALS\tRDES +1\t\t# B(1)TMP\n\n# MEASINC\t\t\t\t\t(4D)\n\nWIXA\t\tERASE\t\t\t# B(1)\nWIXB\t\tERASE\t\t\t# B(1)\nZIXA\t\tERASE\t\t\t# B(1)\nZIXB\t\tERASE\t\t\t# B(1)\n\n# Page 107\n\n# AGS DUMMY ID WORD.\t\t\t\t(1D)\n\nAGSWORD\t\tERASE\n\n# SOME MISCELLANEOUS UNSWITCHED.\t\t(6D)\n\nRATEINDX\tERASE\t\t\t# (1) USED BY KALCMANU\nDELAYLOC\tERASE +2\nLEMMASS\t\tERASE\t\t\t# KEEP CONTIGUOUS W. CSMMASS. (1) EACH\nCSMMASS\t\tERASE\n\n# LESS IS MORE.\n\n# RENDEZVOUS AND LANDING RADAR DOWNLINK STORAGE.\t(7D)\n#\n#\t(NORMALLY USED DURING P20, BUT MAY ALSO)\n#\t(BE REQUIRED FOR THE V62 SPURIOUS TEST.)\n#\n#\t\t    (PLEASE KEEP IN THIS ORDER)\n\nDNRRANGE\tERASE\t+6\t\t# B(1)TMP\nDNRRDOT\t\tEQUALS\tDNRRANGE +1\t# B(1)TMP\nDNINDEX\t\tEQUALS\tDNRRDOT +1\t# B(1)TMP\nDNLRVELX\tEQUALS\tDNINDEX +1\t# B(1)TMP\nDNLRVELY\tEQUALS\tDNLRVELX +1\t# B(1)TMP\nDNLRVELZ\tEQUALS\tDNLRVELY +1\t# B(1)TMP\nDNLRALT\t\tEQUALS\tDNLRVELZ +1\t# B(1)TMP\n\n# INCORPORATION UNSWITCHED\t\t\t(2D)\n\nW.IND\t\tEQUALS\tPIPAGE\t\t# B(1)\nW.INDI\t\tEQUALS\tW.IND +1\t# I(1)\n\n# SUBROUTINE BALLANGS OF R60.\n\nBALLEXIT\tERASE\t\t\t# B(1) SAVE LOCATION FOR BALLINGS SUBR EXIT\n\n# SOME LEM DAP STORAGE.\t\t\t\t(4D)\n\nDAPDATR1\tERASE\t\t\t# B(1)DSP DAP CONFIG.\nTEVENT\t\tERASE\t+1\t\t# B(2)DSP\nDB\t\tERASE\t\t\t# B(1)TMP DEAD BAND.\n\n# NOUN 87\t\t\t\t\t(2D)\nAZ\t\tERASE\t+1D\t\t# B(1) AZ AND EL MUST BE CONTIGUOUS\n\n# Page 108\nEL\t\tEQUALS\tAZ +1D\t\t# B(1)\n\n# P63, P64, P65, P66, AND P67.\t\t\t(1D)\n\nWCHPHASE\tERASE\t\t\t# B(1)\n\n# ERASABLES FOR THE R2 LUNAR POTENTIAL MODEL\t(2D)\n\nE3J22R2M\tERASE\t\t\t# I(1)\nE32C31RM\tERASE\t\t\t# I(1)\n\n\nRADSKAL\t\tERASE\t+1\t\t# LR ALT DOPPLER BIAS: 2T/LAMBDA SCALED\n\t\t\t\t\t# AT 1/(2(7) M/CS)\nSKALSKAL\tERASE\t\t\t# LR ALT SCALE FACTOR RATIO: .2 NOM\n\nEND-UE\t\tEQUALS\t\t\t# NEXT UNUSED UE ADDRESS\n\n# SELF-CHECK ASSIGNMENTS\t\t\t(17D)\n\nSELFERAS\tERASE \t1357 - 1377\t# *** MUST NOT BE MOVED ***\nSFAIL\t\tEQUALS\tSELFERAS\t# B(1)\nERESTORE\tEQUALS\tSFAIL +1\t# B(1)\nSELFRET\t\tEQUALS\tERESTORE +1\t# B(1) RETURN\nSMODE\t\tEQUALS\tSELFRET +1\t# B(1)\nALMCADR\t\tEQUALS\tSMODE +1\t# B(2) ALARM-ABORT USER'S 2CADR\nERCOUNT\t\tEQUALS\tALMCADR +2\t# B(1)\nSCOUNT\t\tEQUALS\tERCOUNT +1\t# B(3)\nSKEEP1\t\tEQUALS\tSCOUNT +3\t# B(1)\nSKEEP2\t\tEQUALS\tSKEEP1 +1\t# B(1)\nSKEEP3\t\tEQUALS\tSKEEP2 +1\t# B(1)\nSKEEP4\t\tEQUALS\tSKEEP3 +1\t# B(1)\nSKEEP5\t\tEQUALS\tSKEEP4 +1\t# B(1)\nSKEEP6\t\tEQUALS\tSKEEP5 +1\t# B(1)\nSKEEP7\t\tEQUALS\tSKEEP6 +1\t# B(1)\n# Page 109\n# EBANK-3 ASSIGNMENTS\n\n\t\tSETLOC\t1400\n\n# WAITLIST TASK LISTS.\t\t\t\t(26D)\n\nLST1\t\tERASE\t+7\t\t# B(8D)PRM DELTA T'S.\nLST2\t\tERASE\t+17D\t\t# B(18D)PRM TASK 2CADR ADDRESSES.\n\n# RESTART STORAGE.\t\t\t\t(2D)\n\nRSBBQ\t\tERASE\t+1\t\t# B(2)PRM SAVE BB AND Q FOR RESTARTS\n\n# MORE LONGCALL STORAGE.  (MUST BE IN LST1'S BANK.\t(2D)\n\nLONGEXIT\tERASE\t+1\t\t# B(2)TMP MAY BE SELDOM OVERLAYED.\n\n# PHASE-CHANGE LISTS PART II.\t\t\t(12D)\n\n\nPHSNAME1\tERASE\t\t\t# B(1)PRM\nPHSBB1\t\tERASE\t\t\t# B(1)PRM\nPHSNAME2\tERASE\t\t\t# B(1)PRM\nPHSBB2\t\tERASE\t\t\t# B(1)PRM\nPHSNAME3\tERASE\t\t\t# B(1)PRM\nPHSBB3\t\tERASE\t\t\t# B(1)PRM\nPHSNAME4\tERASE\t\t\t# B(1)PRM\nPHSBB4\t\tERASE\t\t\t# B(1)PRM\nPHSNAME5\tERASE\t\t\t# B(1)PRM\nPHSBB5\t\tERASE\t\t\t# B(1)PRM\nPHSNAME6\tERASE\t\t\t# B(1)PRM\nPHSBB6\t\tERASE\t\t\t# B(1)PRM\n\n# IMU COMPENSATION PARAMETERS\t\t\t(22D)\n\nPBIASX\t\tERASE\t\t\t# B(1) PIPA BIAS, PIPA SCALE FACTOR TERMS\nPIPABIAS\t=\tPBIASX\t\t# INTERMIXED.\nPIPASCFX\tERASE\nPIPASCF\t\t=\tPIPASCFX\nPBIASY\t\tERASE\nPIPASCFY\tERASE\nPBIASZ\t\tERASE\nPIPASCFZ\tERASE\n\nNBDX\t\tERASE\t\t\t# GYRO BIAS DRIFT\nNBDY\t\tERASE\nNBDZ\t\tERASE\n# Page 110\nADIAX\t\tERASE\t\t\t# ACCELERATION SENSITIVE DRIFT ALONG THE\nADIAY\t\tERASE\t\t\t# INPUT AXIS\nADIAZ\t\tERASE\n\nADSRAX\t\tERASE\t\t\t# ACCELERATION SENSITIVE DRIFT ALONG THE\nADSRAY\t\tERASE\t\t\t# SPIN REFERENCE AXIS\nADSRAZ\t\tERASE\n\nGCOMP\t\tERASE\t+5\t\t# CONTAINS COMPENSATING TORQUES\n\nCOMMAND\t\tEQUALS\tGCOMP\nCDUIND\t\tEQUALS\tGCOMP\t+3\n\nGCOMPSW\t\tERASE\n\n# STATE VECTORS FOR ORBIT INTEGRATION.\t\t(44D)\n\n#\t\t(DIFEQCNT THUR XKEP MUST BE IN THE SAME\n#\t\tEBANK AS RRECTCSM, RRECTLEM ETC\n#\t\tBECAUSE THE COPY-CYCLES (ATOPCSM,\n#\t\tPTOACSM ETC) ARE EXECUTED IN BASIC.\n#\t\tALL OTHER REFERENCES TO THIS GROUP\n#\t\tARE BY INTERPRETIVE INSTRUCTIONS.)\n#\n\nDIFEQCNT\tERASE\t+43D\t\t# B(1)\n# (UPSVFLAG...XKEP MUST BE KEPT IN ORDER)\n\nUPSVFLAG\tEQUALS\tDIFEQCNT +1\t# B(1)\nRRECT\t\tEQUALS\tUPSVFLAG +1\t# B(6)\nVRECT\t\tEQUALS\tRRECT \t+6\t# B(6)\nTET\t\tEQUALS\tVRECT \t+6\t# B(2)\nTDELTAV\t\tEQUALS\tTET \t+2\t# B(6)\nTNUV\t\tEQUALS\tTDELTAV +6\t# B(6)\nRCV\t\tEQUALS\tTNUV \t+6\t# B(6)\nVCV\t\tEQUALS\tRCV \t+6\t# B(6)\nTC\t\tEQUALS\tVCV \t+6\t# B(2)\nXKEP\t\tEQUALS\tTC \t+2\t# B(2)\n\n# PERMANENT STATE VECTORS AND TIMES.\n\n# (DO NOT OVERLAY WITH ANYTHING AFTER BOOST)\n\n# (RRECTCSM...XKEPCSM MUST BE KEPT IN THIS ORDER)\n\nRRECTCSM\tERASE\t+5\t\t# B(6)PRM CSM VARIABLES.\nRRECTOTH\t=\tRRECTCSM\nVRECTCSM\tERASE\t+5\t\t# B(6)PRM\n# Page 111\nTETCSM\t\tERASE\t+1\t\t# B(2)PRM\nTETOTHER\t=\tTETCSM\nDELTACSM\tERASE\t+5\t\t# B(6)PRM\nNUVCSM\t\tERASE\t+5\t\t# B(6)PRM\nRCVCSM\t\tERASE\t+5\t\t# B(6)PRM\nVCVCSM\t\tERASE\t+5\t\t# B(6)PRM\nTCCSM\t\tERASE\t+1\t\t# B(2)PRM\nXKEPCSM\t\tERASE\t+1\t\t# B(2)PRM\n\n# (RRECTLEM...XKEPLEM MUST BE KEPT IN THIS ORDER)\n\nRRECTLEM\tERASE\t+5\t\t# B(6)PRM LEM VARIABLES\nRRECTHIS\t=\tRRECTLEM\nVRECTLEM\tERASE\t+5\t\t# B(6)PRM\nTETLEM\t\tERASE\t+1\t\t# B(2)PRM\nTETTHIS\t\t=\tTETLEM\nDELTALEM\tERASE\t+5\t\t# B(6)PRM\nNUVLEM\t\tERASE\t+5\t\t# B(6)PRM\nRCVLEM\t\tERASE\t+5\t\t# B(6)PRM\nVCVLEM\t\tERASE\t+5\t\t# B(6)PRM\nTCLEM\t\tERASE\t+1\t\t# B(2)PRM\nXKEPLEM\t\tERASE\t+1\t\t# B(2)PRM\n\nX789\t\tERASE\t+5\nTEPHEM\t\tERASE\t+2\nAZO\t\tERASE\t+1\n-AYO\t\tERASE\t+1\nAXO\t\tERASE\t+1\n\n# STATE VECTORS FOR DOWNLINK\t\t\t(12D)\n\nR-OTHER\t\tERASE\t+5\t\t# B(6)PRM POS VECT (OTHER VECH) FOR DNLINK\nV-OTHER\t\tERASE\t+5\t\t# B(6)PRM VEL VECT (OTHER VECH) FOR DNLINK\n\nT-OTHER\t\t=\tTETCSM\t\t# \t      TIME (OTHER VECH) FOR DNLINK\n\n# REFSMMAT.\t\t\t\t\t(18D)\n\nREFSMMAT\tERASE\t+17D\t\t# I(18D)PRM\n\n# ACTIVE VEHICLE CENTANG.  MUST BE DISPLAYED ANYTIME (ALMOST.)\t(2D)\n\nACTCENT\t\tERASE\t+1\t\t# I(2) S-S CENTRAL ANGLE BETWEEN ACTIVE\n\t\t\t\t\t# VEHICLE AT TPI TIG AND TARGET VECTOR.\n\n# **** USED IN CONICSEX (PLAN INERT ORIENT) ****\n# Page 112\nTIMSUBO\t\tEQUALS\tTEPHEM\t\t# CSEC B-42 (TRIPLE PRECISION)\n\n# LPS20.1 STORAGE\t-- ALL ARE PRM --\t(9D)\n\nLS21X\t\tERASE\t\t\t# I(1)\nLOSVEL\t\tERASE\t+5\t\t# I(6)\nMLOSV\t\tERASE\t+1\t\t# I(2) MAGNITUDE OF LOS. METERS B-29\n\n# ***** P22 ***** (OVERLAYS LPS 20.1 STORAGE)\t(6D)\nVSUBC\t\tEQUALS\tLOSVEL\t\t# I(6) S-S CSM VELOCITY VECTOR\n\n# PADLOADED ERASABLES FOR P20/P22\t\t(6D)\n\nRANGEVAR\tERASE\t+1\t\t# I(2) RR RANGE ERROR VARIANCE\nRATEVAR\t\tERASE\t+1\t\t# I(2) RR RANGE RATE ERROR VARIANCE\nRVARMIN\t\tERASE\t\t\t# I(1) MINIMUM RANGE ERROR VARIANCE\nVVARMIN\t\tERASE\t\t\t# I(1) MINIMUM RANGE-RATE ERROR VARIANCE\n\n# P32-P33 STORAGE\t\t\t\t(2D)\n\nTCDH\t\tERASE\t+1\t\t# I(2) T2 CDH TIME IN CS. (ALSO DOWNLINKED)\n\nEND-E3\t\tEQUALS\t1777\t\t# ** LAST LOCATION USED IN E3 **\n\n# Page 113\n# EBANK-4 ASSIGNMENTS\n\n\t\tSETLOC\t2000\n\n# E4 IS, FOR THE MOST PART RESERVED FOR PAD LOADED AND UNSHARABLE ERASE.\n\nAMEMORY\t\tEQUALS\n\n# P20 STORAGE.  -- PAD LOADED --\t\t(6D)\n\nWRENDPOS\tERASE\t\t\t# B(1)PL\tKM*2(-7)\nWRENDVEL\tERASE\t\t\t# B(1)PL\tKM(-1/2)*2(11)\nWSHAFT\t\tERASE\t\t\t# B(1)PL\tKM*2(-7)\nWTRUN\t\tERASE\t\t\t# B(1)PL\tKM*2(-7)\nRMAX\t\tERASE\t\t\t# B(1)PL\tMETERS*2(-19)\nVMAX\t\tERASE\t\t\t# B(1)PL\tM/CSEC*2(-7)\n\n# LUNAR SURFACE NAVIGATION\t\t\t(2D)\n\nWSURFPOS\tERASE\t\t\t# B(1)PL\nWSURFVEL\tERASE\t\t\t# B(1)PL\n\n# P22 STORAGE.  -- PAD LOADED --\t\t(2D)\n\nSHAFTVAR\tERASE\t\t\t# B(1)PL\tRAD SQ*2(12)\nTRUNVAR\t\tERASE\t\t\t# B(1)PL\tRAD SQ*2(10)\n\n# CONISEX STORAGE.  -- PAD LOADED --\n\n504LM\t\tERASE\t+5\t\t# I(6) MOON LIBRATION VECTOR\n\n# V47 (R47) AGS INITIALIZATION STORAGE.  -- PAD LOADED --\t(2D)\n\nAGSK\t\tERASE\t+1\n\n# LUNAR LANDING STORAGE.  -- PAD LOADED --\t(6D)\n\nRLS\t\tERASE\t+5\t\t# I(6) LANDING SITE VECTOR -- MOON REF\n\n# INTEGRATION STORAGE.\t\t\t\t(102D)\n\nPBODY\t\tERASE\t+101D\t\t# I(1)\n# Page 114\nALPHAV\t\tEQUALS\tPBODY +1\t# I(6)\nBETAV\t\tEQUALS\tALPHAV +6\t# I(6)\nPHIV\t\tEQUALS\tBETAV +6\t# I(6)\nPSIV\t\tEQUALS\tPHIV +6\t\t# I(6)\nFV\t\tEQUALS\tPSIV +6\t\t# I(6)\tPERTURBING ACCELERATIONS\nALPHAM\t\tEQUALS\tFV +6\t\t# I(2)\nBETAM\t\tEQUALS\tALPHAM +2\t# I(2)\nTAU.\t\tEQUALS\tBETAM +2\t# I(2)\nDT/2\t\tEQUALS\tTAU. +2\t\t# I(2)\nH\t\tEQUALS\tDT/2 +2\t\t# I(2)\nGMODE\t\tEQUALS\tH +2\t\t# I(1)\nIRETURN\t\tEQUALS\tGMODE +1\t# I(1)\nNORMGAM\t\tEQUALS\tIRETURN +1\t# I(1)\nRPQV\t\tEQUALS\tNORMGAM +1\nORIGEX\t\tEQUALS\tRPQV +6\t\t# I(1)\nKEPRTN\t\tEQUALS\tORIGEX\t\t# I(1)\nRQVV\t\tEQUALS\tORIGEX +1\t# I(6)\nRPSV\t\tEQUALS\tRQVV +6\t\t# I(6)\nXKEPNEW\t\tEQUALS\tRPSV +6\t\t# I(2)\nVECTAB\t\tEQUALS\tXKEPNEW +2\t# I(36D)\nVECTABND\tEQUALS\tVECTAB +35D\t# END MARK\n\n# THESE PROBABLY CAN SHARE MID-COURSE VARIABLES.\t(6D)\n\nVACX\t\tEQUALS\tVECTAB +6\t# I(2)\nVACY\t\tEQUALS\tVACX +2\t\t# I(2)\nVACZ\t\tEQUALS\tVACY +2\t\t# I(2)\n\n# SERVICER STORAGE (USED BY ALL POWERED FLIGHT PROGS.)\t(18D)\n\nXNBPIP\t\tEQUALS\tVECTAB +12D\t# I(6)\nYNBPIP\t\tEQUALS\tXNBPIP +6\t# I(6)\nZNBPIP\t\tEQUALS\tYNBPIP +6\t# I(6)\n\n# SOME VERB 82 STORAGE\t\t\t\t(4D)\n\nHAPOX\t\tEQUALS\tRQVV +4\t\t# I(2)\nHPERX\t\tEQUALS\tHAPOX +2\t# I(2)\n\n# V82 STORAGE\t\t\t\t\t(6D)\n\nVONE'\t\tEQUALS\tVECTAB +30D\t# I(T)TMP NORMAL VELOCITY VONE / SQRT. MU\n\n# R32(V83) STORAGE. -- SHARES WITH INTEGRATION STORAGE --\t(28D)\n\n# Page 115\nBASETHV\t\tEQUALS\tRPQV\t\t# I(6) BASE VEL VECTOR THIS VEH\n\nBASETIME\tEQUALS\tRQVV\t\t# I(2) TIME ASSOC WITH BASE VECS\nORIG\t\tEQUALS\tRQVV +2\t\t# I(1) =0 FOR EARTH\t=2 FOR MOON\nSTATEXIT\tEQUALS\tRQVV +3\t\t# I(1) STQ ADDRESS FOR STATEXTP\nBASEOTV\t\tEQUALS\tRQVV +4\t\t# I(6) BASE VEL VECTOR OTHER VEH\n\nBASEOTP\t\tEQUALS\tVECTAB +6\t# I(6) BASE POS VECTOR OTHER VEH\n\nBASETHP\t\tEQUALS\tVECTAB +30D\t# I(6) BASE POS VECTOR THIS VEH\n\n# KEPLER STORAGE. (KEPLER IS CALLED BY PRECISION INTEGRATION AND (2D)\n# CONICS)\n\nEPSILONT\tERASE\t+1\t\t# I(2)\n\n# VERB 83 STORAGE\t\t\t\t(18D)\n\nRANGE\t\tERASE\t+17D\t\t# I(2)DSP NOUN 54 DISTANCE TO OPTICAL SUBJ\nRRATE\t\tEQUALS\tRANGE +2\t# I(2)DSP NOUN 54 RATE OF APPROACH\nRTHETA\t\tEQUALS\tRRATE +2\t# I(2)DSP NOUN 54.\nRONE\t\tEQUALS\tRTHETA +2\t# I(6)TMP VECTOR STORAGE.  (SCRATCH)\nVONE\t\tEQUALS\tRONE +6\t\t# I(6)TMP VECTOR STORAGE.  (SCRATCH)\n\n# VERB 67 STORAGE\n\nWWPOS\t\t=\tRANGE\t\t# NOUN 99 (V67)\nWWVEL\t\t=\tRRATE\t\t# NOUN 99 (V67)\nWWBIAS\t\t=\tRTHETA\t\t# NOUN 99 (V67)\n\n# V82 STORAGE.  (CANNOT OVERLAY RONE OR VONE)\t(11D) TWO SEPARAT LOCATIONS\n\nV82FLAGS\tEQUALS\tVECTAB +6\t# (1) FOR V82 BITS.\nTFF\t\tEQUALS\tV82FLAGS +1\t# I(2)\n-TPER\t\tEQUALS\tTFF +2\t\t# I(2)\n\nHPERMIN\t\tEQUALS\tRANGE\t\t# I(2) SET TO 300KFT FOR SR30.1\nRPADTEM\t\tEQUALS\tHPERMIN +2\t# I(2) PAD OR LANDING RADIUS FOR SR30.1\nTSTART82\tEQUALS\tRPADTEM +2\t# I(2) TEMP TIME STORAGE VOR V82.\n\n# VARIOUS DISPLAY REGISTERS\t\t\t(6D) NOUN 84; P76\n# Page 116\nDELVOV\t\tERASE\t+5D\t\t# (6)\n\n# ALIGNMENT PLANETARY -- INERTIAL TRANSFORMATION STORAGE.\t(18D)\n\n# \t\tUNSHARED WHILE LM ON LUNAR SURFACE.\n\nGSAV\t\tERASE\t+17D\t\t# I(6)\nYNBSAV\t\tEQUALS\tGSAV +6\t\t# I(6)\nZNBSAV\t\tEQUALS\tYNBSAV +6\t# I(6)\n\n# KALCMANU STORAGE, CAN OVERLAY GSAV.\t\t(18D)\n\nMFS\t\tEQUALS\tGSAV\t\t# I(18)\nMFI\t\tEQUALS\tMFS\t\t# I\nKEL\t\tEQUALS\tMFS\t\t# I(18)\nE01\t\tEQUALS\tMFS\t\t# I(6)\nE02\t\tEQUALS\tE01 +6\t\t# I(6)\n\n# LR VEL BEAM VECTORS.\t\t\t\t(26D)\n\n# CAN OVERLAY GSAV WITH CARE, USED DURING POWERED DESCENT ONLY.\n\nVZBEAMNB\tEQUALS\tGSAV\t\t# I(6) LR VELOCITY BEAMS IN NB COORDS.\nVYBEAMNB\tEQUALS\tVZBEAMNB +6\t# I(6)\nVXBEAMNB\tEQUALS\tVYBEAMNB +6\t# I(6) PRESERVE Z,Y,X ORDER\n\nLRVTIME\t\t=\tVXBEAMNB +6\t# B(2) LR\nLRXCDU\t\t=\tLRVTIME +2\t# B(1) LR\nLRYCDU\t\t=\tLRXCDU +1\t# B(1) LR\nLRZCDU\t\t=\tLRYCDU +1\t# B(1) LR\nPIPTEM\t\t=\tLRZCDU +1\t# B(3) LR\n\n# P32-P35, P72-P75 STORAGE.\t\t\t(40D)\n\nT1TOT2\t\tERASE\t+1\t\t# (2)\tTIME FROM CSI TO CDH\nT2TOT3\t\tERASE\t+1\t\t# (2)\nELEV\t\tERASE\t+1\t\t# (2)\nUP1\t\tERASE\t+5\t\t# (6)\nDELVEET1\tERASE\t+5\t\t# I(6)\tDV CSI IN REF\nDELVEET2\tERASE\t+5\t\t# I(6)\tDV CSH IN REF\nRACT1\t\tERASE\t+5\t\t# (6)\tPOS VEC OF ACTIVE AT CSI TIME\nRACT2\t\tERASE\t+5\t\t# (6)\tPOS VEC OF ACTIVE AT CDH TIME\n# Page 117\nRTSR1/MU\tERASE\t+1\t\t# (2)\tSQ ROOT 1/MU STORAGE\nRTMU\t\tERASE\t+1\t\t# (2)\tMU STORAGE\n\n# (THE FOLLOWING ERASABLES OVERLAY PORTIONS OF THE PREVIOUS SECTION)\n\n+MGA\t\tEQUALS\tT1TOT2\t\t# (2) S-S + MID GIM ANGL TO DELVEET3\n\nUNRM\t\tEQUALS\tUP1\t\t# I(6) S-S\n\nDVLOS\t\tEQUALS\tRACT1\t\t# I(6) S-S DELTA VELOCITY, LOS COORD-DISPLAY\nULOS\t\tEQUALS\tRACT2\t\t# I(6) S-S UNIT LINE OF SIGHT VECTOR\n\nNOMTPI\t\tEQUALS\tRTSR1/MU\t# (2) S-S NOMINAL TPI-TIME FOR RECYCLE\n\n# SOME P30 STORAGE.\t\t\t\t(4D)\n\nHAPO\t\tEQUALS\tRTSR1/MU\t# I(2)\nHPER\t\tEQUALS\tHAPO\t+2\t# I(2)\n\n\n# SOME P38-P39,P78-79 STORAGE\t\t#\t(6D)\n\nDELTAR\t\tEQUALS\tDVLOS\t\t# I(2)\nDELTTIME\tEQUALS\tDELTAR +2\t# I(2) TIME REPRESENTATION OF DELTAR\nTARGTIME\tEQUALS\tDELTTIME +2\t# I(2) TINT MINUS DELTTIME\n\nTINTSOI\t\tEQUALS\tDELTAR\t\t# I(2) TIME OF INTERCEPT FOR SOI PHASE\n\n# THE FOLLOWING ARE ERASABLE LOADS DURING A PERFORMANCE TEST.\n\nTRANSM1\t\t=\tWRENDPOS\t# E4,1400\nALFDK\t\t=\tTRANSM1 +18D\n\n# ****** THE FOLLOWING SECTIONS OVERLAY V83 AND DISPLAY STORAGE ******\n\n# V47 (R47) AGS INITIALIZATION PROGRAM STORAGE.  (OVERLAYS V83)\t(14D)\n\nAGSBUFF\t\tEQUALS\tRANGE\t\t# B(14D)\nAGSBUFFE\tEQUALS\tAGSBUFF +13D\t# ENDMARK\n# Page 118\n\n# R36 OUT-OF-PLANE RENDEZVOUS DISPLAY STORAGE.  (OVERLAYS V83)\t(12D)\n\nRPASS36\t\tEQUALS\tRONE\t\t# I(6) S-S\nUNP36\t\tEQUALS\tRPASS36 +6\t# I(6) S-S\n\n# S-BAND ANTENNA GIMBAL ANGLES.  DISPLAYED BY R05 (V64).  (OVERLAYS V83)\t(10D)\n#\t\t\t(OPERATES DURING P00 ONLY)\nALPHASB\t\tEQUALS\tRANGE\t\t# B(2)DSP NOUN 51.  PITCH ANGLE.\nBETASB\t\tEQUALS\tALPHASB +2\t# B(2)DSP NOUN 51.  YAW ANGLE.\nRLM\t\tEQUALS\tBETASB +2\t# I(6)S S/C POSITION VECTOR.\n\n# **** USED IN S-BAND ANTENNA FOR LM ****\n\nYAWANG\t\tEQUALS\tBETASB\nPITCHANG\tEQUALS\tALPHASB\n\n# NOUN 56 DATA -- COMPUTED AND DISPLAYED BY VERB 85.\n\nRR-AZ\t\tEQUALS\tPITCHANG\t# I(2) ANGLE BETWEEN LOS AND X-Z PLANE\nRR-ELEV\t\tEQUALS\tRR-AZ +2\t# I(2) ANGLE BETWEEN LOS AND Y-Z PLANE\n\n# R04 (V62) RADAR TEST STORAGE.\n# R04 IS RESTRICTED TO P00.\n\nRSTACK\t\tEQUALS\tRANGE\t\t# B(8) BUFFER FOR R04 NOUNS.\n\n# INITVEL STORAGE.  ALSO USED BY P31, P34, P35, P74, P75, P10, P11, MIDGIM, S40.1 AND S40.9.\t(18D)\n\n#\t\t(POSSIBLY RINIT & VINIT CAN OVERLAY DELVEET1 & 2 ABOVE)\n\nRINIT\t\tERASE\t+5\t\t# I(6) ACTIVE VEHICLE POSITION\nVINIT\t\tERASE\t+5\t\t# I(6) ACTIVE VEHICLE VELOCITY\nVIPRIME\t\tERASE\t+5\t\t# I(6) NEW VEL REQUIRED AT INITIAL RADIUS.\n\n# VARIOUS DISPLAY REGISTERS.  BALLANGS\t\t(3D)\n\nFDAIX\t\tERASE\t\t\t# I(1)\nFDAIY\t\tERASE\t\t\t# I(1)\nFDAIZ\t\tERASE\t\t\t# I(1)\n\n# P34-P35 STORAGE.  DOWNLINKED.\t\t\t(2D)\n\nDELVTPF\t\tERASE\t+1\t\t# I(2) DELTA V FOR TPF\n\n# SOME R04(V63)-R77 RADAR TEST STORAGE.\t\t(6D)\n# Page 119\nRTSTDEX\t\tERASE\t\t\t# (1)\nRTSTMAX\t\tERASE\t\t\t# (1)\nRTSTBASE\tERASE\t\t\t# (1)\nRTSTLOC\t\tERASE\t\t\t# (1)\nRSTKLOC\t\t=\tRTSTLOC\nRSAMPDT\t\tERASE\t\t\t# (1)\nRFAILCNT\tERASE\t\t\t# (1)\n\n# LPS20.1 STORAGE.  \t\t\t\t(12D)\n\nLMPOS\t\tEQUALS RTSTDEX\t\t# I(6)TMP  STORAGE FOR LM POS. VECTOR.\nLMVEL\t\tEQUALS LMPOS +6\t\t# I(6)TMP  STORAGE FOR LM VEL. VECTOR.\n\n# INITVEL STORAGE.  ALSU USED BY P31,34,35,74,75,S40.1 AND DOWNLINKED.\t(6D)\n\nDELVEET3\tEQUALS\tLMVEL +6\t# I(6) DELTA V IN INERTIAL COORDINATES\n\n\nEND-E4\t\tEQUALS\t\t\t# FIRST UNUSED LOCATION IN E4\n\n# SECOND DPS GUIDANCE (LUNAR LANDING)  (OVERLAY P32-35, INITVEL)\t(14D)\n\nVHORIZ\t\tEQUALS\tPIPTEM +3\t# I(2) DISPLAY\nANGTERM\t\tEQUALS\tVHORIZ +2\t# I(6) GUIDANCE\nHBEAMNB\t\tEQUALS\tANGTERM +6\t# I(6) LANDING RADAR\n\n# R12 DOWNLINK QUANTITIES\t\t\t(5D)\n\nLRXCDUDL\tEQUALS\t/LAND/ +2\t# B(1) LANDING RADAR DOWNLINK\nLRYCDUDL\tEQUALS\tLRXCDUDL +1\t# B(1) LANDING RADAR DOWNLINK\nLRZCDUDL\tEQUALS\tLRYCDUDL +1\t# B(1) LANDING RADAR DOWNLINK\nLRVTIMDL\tEQUALS\tLRZCDUDL +1\t# B(2) LANDING RADAR DOWNLINK\n\n# ASCENT GUIDANCE FOR LUNAR LANDING\t\t(54D)\n\nAT\t\tEQUALS\tPIPTEM +3\t# I(2)TMP ENGINE DATA -- THRUST ACC*2(9)\nVE\t\tEQUALS\tAT +2\t\t# I(2)TMP EXHAUST VELOCITY * 2(7)M/CS.\nTTO\t\tEQUALS\tVE +2\t\t# I(2)TMP TAILOFF TIME * 2(17)CS.\nTBUP\t\tEQUALS\tTTO +2\t\t# I(2)TMP (M/MDOT) * 2(17)CS.\nRDOTD\t\tEQUALS\tTBUP +2\t\t# I(2)TMP TARGET VELOCITY COMPONENTS\nYDOTD\t\tEQUALS\tRDOTD +2\t# I(2)TMP SCALING IS 2(7)M/CS.\nZDOTD\t\tEQUALS\tYDOTD +2\t# I(2)TMP\n\n/R/MAG\t\tEQUALS\tZDOTD +2\t# I(2)TMP\nLAXIS\t\tEQUALS\t/R/MAG +2\t# I(6)TMP\n# Page 120\nZAXIS1\t\t=\tUHZP\nRDOT\t\t=\tHDOTDISP\nYDOT\t\t=\tLAXIS +6\t# I(2)TMP VEL. NORMAL TO REF. PLANE*2(-7)\nZDOT\t\tEQUALS\tYDOT +2\t\t# I(2)TMP DOWN RANGE VEL * 2(-7)\nGEFF\t\tEQUALS\tZDOT +2\t\t# I(2)TMP EFFECTIVE GRAVITY\n\n# THESE TWO GROUPS OF ASCENT GUIDANCE ARE SPLIT BY THE ASCENT-DESCENT SERVICER SECTION FOLLOWING THIS SECTION\n\nY\t\tEQUALS\t/LAND/ +2\t# I(2)TMP OUT-OF-PLANE DIST *2(24)M\nDRDOT\t\tEQUALS\tY +2\t\t# I(2)TMP RDOTD - RDOT\nDYDOT\t\tEQUALS\tDRDOT +2\t# I(2)TMP YDOTD - YDOT\nDZDOT\t\tEQUALS\tDYDOT +2\t# I(2)TMP ZDOTD - ZDOT\nPCONS\t\tEQUALS\tDZDOT +2\t# I(2)TMP CONSTANT IN ATR EQUATION\nYCONS\t\tEQUALS\tPCONS +2\t# I(2)TMP CONSTANT IN ATY EQUATION\nPRATE\t\tEQUALS\tYCONS +2\t# I(2)TMP RATE COEFF. IN ATR EQUATION\nYRATE\t\tEQUALS\tPRATE +2\t# I(2)TMP RATE COEFF. IN ATY EQUATION\nATY\t\tEQUALS\tYRATE +2\t# I(2)TMP OUT-OF-PLANE THRUST COMP. *2(9)\nATR\t\tEQUALS\tATY +2\t\t# I(2)TMP RADIAL THRUST COMP. * 2(9)\nATP\t\tEQUALS\tATR +2\t\t# I(2)TMP DOWN-RANGE THRUST COMP\nYAW\t\tEQUALS\tATP +2\t\t# I(2)TMP\nPITCH\t\tEQUALS\tYAW +2\t\t# I(2)TMP\n\n# SERVICER FOR LUNAR ASCENT AND DESCENT\t\t(14D)\n\nG(CSM)\t\tEQUALS\tGEFF\t+2\t# I(6)\tFOR UPDATE OF COMMAND MODULE STATE\nR(CSM)\t\tEQUALS\tR-OTHER\t\t#\tVECTORS BY LEM: ANALOGS OF GDT/2,\nV(CSM)\t\tEQUALS\tV-OTHER\t\t#\tR, AND V, RESPECTIVELY OF THE CSM\nWM\t\tEQUALS\tG(CSM) +6\t# I(6)TMP -- LUNAR ROTATION VECTOR (SM)\n/LAND/\t\tEQUALS\tWM +6\t\t# B(2) LUNAR RADIUS AT LANDING SITE\n\n# Page 121\n# EBANK-5 ASSIGNMENTS\n\n\t\tSETLOC\t2400\n\n# W-MATRIX.  ESSENTIALLY UNSHARABLE.\t\t(162D)\n\nW\t\tERASE\t+161D\nENDW\t\tEQUALS\tW +162D\n\n# ******* OVERLAY NUMBER 1 IN EBANK 5 *******\n\n# \t\tW-MATRIX PADLOADS\t\t(124D)\n\nTLAND\t\tEQUALS\tW\t\t# I(2)\tNOMINAL TIME OF LANDING\nRBRFG\t\tEQUALS\tTLAND +2\t# I(6) BRAKING\nVBRFG\t\tEQUALS\tRBRFG +6\t# I(6)      PHASE\nABRFG\t\tEQUALS\tVBRFG +6\t# I(6)           TARGET\nVBRFG*\t\tEQUALS\tABRFG +6\t# I(2)                PARAMETERS:\nABRFG*\t\tEQUALS\tVBRFG* +2\t# I(2)                     HIGH\nJBRFG*\t\tEQUALS\tABRFG* +2\t# I(2)                          GATE\nGAINBRAK\tEQUALS\tJBRFG* +2\t# B(2)\nTCGFBRAK\tEQUALS\tGAINBRAK +2\t# B(1)\nTCGIBRAK\tEQUALS\tTCGFBRAK +1\t# B(1)\nRAPFG\t\tEQUALS\tTCGIBRAK +1\t# I(6) APPROACH\nVAPFG\t\tEQUALS\tRAPFG +6\t# I(6)      PHASE\nAAPFG\t\tEQUALS\tVAPFG +6\t# I(6)           TARGET\nVAPFG*\t\tEQUALS\tAAPFG +6\t# I(2)                PARAMETERS:\nAAPFG*\t\tEQUALS\tVAPFG* +2\t# I(2)                     LOW\nJAPFG*\t\tEQUALS\tAAPFG* +2\t# I(2)                          GATE\nGAINAPPR\tEQUALS\tJAPFG* +2\t# B(2)\nTCGFAPPR\tEQUALS\tGAINAPPR +2\t# B(1)\nTCGIAPPR\tEQUALS\tTCGFAPPR +1\t# B(1)\nVIGN\t\tEQUALS\tTCGIAPPR +1\t# I(2)\tDESIRED SPEED FOR IGNITION\nRIGNX\t\tEQUALS\tVIGN +2\t\t# I(2)\tDESIRED `ALTITUDE' FOR IGNITION\nRIGNZ\t\tEQUALS\tRIGNX +2\t# I(2)\tDESIRED GROUND RANGE FOR IGNITION\nKIGNX/B4\tEQUALS\tRIGNZ +2\t# I(2)\nKIGNY/B8\tEQUALS\tKIGNX/B4 +2\t# I(2)\nKIGNV/B4\tEQUALS\tKIGNY/B8 +2\t# I(2)\nLOWCRIT\t\tEQUALS\tKIGNV/B4 +2\t# B(1) (HIGHCRIT MUST FOLLOW LOWCRIT)\nHIGHCRIT\tEQUALS\tLOWCRIT +1\t# B(1)\nV2FG\t\tEQUALS\tHIGHCRIT +1\t# I(6) DESIRED VELOCITY FOR P65.\nTAUVERT\t\tEQUALS\tV2FG +6\t\t# I(2) TIME CONSTANT FOR P65 VEL. NULLING.\nDELQFIX\t\tEQUALS\tTAUVERT +2\t# I(2) LR ALTITUDE DATA REASONABLE PARM.\nLRALPHA\t\tEQUALS\tDELQFIX +2\t# B(1) POS1 X ROTATION\t\t* MUST *\n# Page 122\nLRBETA1\t\tEQUALS\tLRALPHA +1\t# B(1) POS1 Y ROTATION\t\t*  BE  *\nLRALPHA2\tEQUALS\tLRBETA1 +1\t# B(1) POS2 X ROTATION\t\t*  IN  *\nLRBETA2\t\tEQUALS\tLRALPHA2 +1\t# B(1) POS2 Y ROTATION\t\t* ORDER*\nLRVMAX\t\tEQUALS\tLRBETA2 +1\t# B(1) LR VEL WEIGHTING FUNCTIONS\nLRVF\t\tEQUALS\tLRVMAX +1\t# B(1) LR VEL WEIGHTING FUNCTIONS\nLRWVZ\t\tEQUALS\tLRVF +1\t\t# B(1) LR VEL WEIGHTING FUNCTIONS\nLRWVY\t\tEQUALS\tLRWVZ +1\t# B(1) LR VEL WEIGHTING FUNCTIONS\nLRWVX\t\tEQUALS\tLRWVY +1\t# B(1) LR VEL WEIGHTING FUNCTIONS\nLRWVFZ\t\tEQUALS\tLRWVX +1\t# B(1) LR VEL WEIGHTING FUNCTIONS\nLRWVFY\t\tEQUALS\tLRWVFZ +1\t# B(1) LR VEL WEIGHTING FUNCTIONS\nLRWVFX\t\tEQUALS\tLRWVFY +1\t# B(1) LR VEL WEIGHTING FUNCTIONS\nLRWVFF\t\tEQUALS\tLRWVFX +1\t# B(1) LR VEL WEIGHTING FUNCTIONS\n\nABVEL*\t\tEQUALS\tBUF\t\t# B(1) LR TEMP\nVSELECT*\tEQUALS\tBUF +1\t\t# B(1) LR TEMP\n\nRODSCALE\tEQUALS\tLRWVFF +1\t# I(1) CLICK SCALE FACTOR FOR ROD\nTAUROD\t\tEQUALS\tRODSCALE +1\t# I(2) TIME CONSTANT FOR R.O.D.\nLAG/TAU\t\tEQUALS\tTAUROD +2\t# I(2) LAG TIME DIVIDED BY TAUROD (P66)\nMINFORCE\tEQUALS\tLAG/TAU +2\t# I(2) MINIMUM FORCE P66 WILL COMMAND\nMAXFORCE\tEQUALS\tMINFORCE +2\t# I(2) MAXIMUM FORCE P66 WILL COMMAND.\nABTCOF\t\tEQUALS\tMAXFORCE +2\t# I(16) COEFFICIENTS FOR ABORT TFI POLYS.\nVMIN\t\tEQUALS\tABTCOF +16D\t# I(2) MINIMUM VELOCITY FOR ABORT INJ.\nYLIM\t\tEQUALS\tVMIN +2\t\t# I(2) MAXIMUM CROSS-RANGE DIST. IN ABORTS\nABTRDOT\t\tEQUALS\tYLIM +2\t\t# I(2) DESIRED RADIAL VEL. FOR ABORTS.\nCOSTHET1\tEQUALS\tABTRDOT +2\t# I(2) COS CONE 1 ANGLE FOR ABORTS.\nCOSTHET2\tEQUALS\tCOSTHET1 +2\t# I(2) COS OF CONE 2 ANGLE FOR ABORTS.\n\n# SOME VARIABLES FOR SECOND DPS GUIDANCE.\t(34D)\n\nCG\t\tEQUALS\tCOSTHET2 +2\t# I(18D) GUIDANCE\nRANGEDSP\tEQUALS\tCG +18D\t\t# B(2) DISPLAY\nOUTOFPLN\tEQUALS\tRANGEDSP +2\t# B(2) DISPLAY\nR60VSAVE\tEQUALS\tOUTOFPLN +2\t# I(6)TMP SAVES VALUE OF POINTVSM THRU R51\nRGU\t\tEQUALS\tR60VSAVE +6\t# I(6) UNSHARED FOR DOWNLINK\nVBIAS\t\tEQUALS\tR60VSAVE\t# I(6) PIPA BIAS EQUIV. VELOCITY VECTOR.\nL*WCR*T\t\t=\tBUF\nH*GHCR*T\t=\tBUF\t+1\n\n# ALIGNMENT/SYSTEST/CALCSMSC COMMON STORAGE\t(36D)\n\nXSM\t\tEQUALS\tENDW\t\t# B(6)\nYSM\t\tEQUALS\tXSM\t+6\t# B(6)\nZSM\t\tEQUALS\tYSM\t+6\t# B(6)\n\nXDC\t\tEQUALS\tZSM\t+6\t# B(6)\nYDC\t\tEQUALS\tXDC\t+6\t# B(6)\nZDC\t\tEQUALS\tYDC\t+6\t# B(6)\n# Page 123\nXNB\t\t=\tXDC\nYNB\t\t=\tYDC\nZNB\t\t=\tZDC\n\n# OVERLAYS WITHIN ALIGNMENT/SYSTEST/CALCSMSC COMMON STORAGE\t(4D)\n\n-COSB\t\tEQUALS\tXSM +2\t\t# (2)TMP\nSINB\t\tEQUALS\t-COSB +2\t# (2)TMP\n\n# MORE OVERLAYS TO ALIGNMENT/SYSTEST (THESE ARE P52)\t(6D)\n\nLANDLAT\t\tEQUALS\tSTARAD\t\t# (2) LATTITUDE, LONGITUDE\nLANDLONG\tEQUALS\tLANDLAT +2\t# (2)\tAND ALTITUDE\nLANDALT\t\tEQUALS\tLANDLONG +2\t# (2)\tOF LANDING SITE\n\n# ALIGNMENT/SYSTEST COMMON STORAGE.\t\t(31D)\n\nSTARAD\t\tEQUALS\tZDC +6\t\t# I(18D)TMP\nSTAR\t\tEQUALS\tSTARAD +18D\t# I(6)\nGCTR\t\tEQUALS\tSTAR +6\t\t# B(1)\nOGC\t\tEQUALS\tGCTR +1\t\t# I(2)\nIGC\t\tEQUALS\tOGC +2\t\t# I(2)\nMGC\t\tEQUALS\tIGC +2\t\t# I(2)\n\n# P57 ALIGNMENT (OVERLAY OF ALIGNMENT/SYSTEST COMMON STORAGE)\t(12D)\n\nGACC\t\t=\tSTARAD\t\t# (6) SS\nGOUT\t\t=\tSTARAD +6\t# (6) SS\n\n# OVERLAYS WITHIN ALIGNMENT/SYSTEST COMMON STORAGE\t(24D)\n\nVEARTH\t\tEQUALS\tSTARAD\t\t# (6)TMP\nVSUN\t\tEQUALS\tVEARTH +6\t# (6)TMP\nVMOON\t\tEQUALS\tVSUN +6\t\t# (6)TMP\nSAX\t\tEQUALS\tVMOON +6\t# (6)TMP\n\n# P50'S, R50'S Q STORES\t\t\t\t(2D)\n\nQMIN\t\tEQUALS\tMGC +2\t\t# B(1)TMP\nQMAJ\t\tEQUALS\tQMIN +1\t\t# B(1)TMP\n\n# **** USED IN P50S **** (SCATTERED OVERLAYS)\n\nXSCI\t\tEQUALS\tSTARAD\nYSCI\t\tEQUALS\tXSCI +6\n# Page 124\nZSCI\t\tEQUALS\tYSCI\nCULTRIX\t\tEQUALS\tVEARTH\t\t# VEARTH, VSUN, VMOON\nVEC1\t\tEQUALS\tSTARAD +12D\nVEC2\t\tEQUALS\tSTAR\n\n# ALIGNMENT STORAGE.\t\t\t\t(23D)\n\nOGCT\t\tEQUALS\tQMAJ +1\t\t# I(6)\nBESTI\t\tEQUALS\tOGCT +6\t\t# I(1)\nBESTJ\t\tEQUALS\tBESTI +1\nSTARIND\t\tEQUALS\tBESTJ +1\n# RETAIN THE ORDER OF STARSAV1 TO STARSAV2 +5 FOR DOWNLINK PURPOSES\nSTARSAV1\tEQUALS\tSTARIND +1\t# I(6)\nSTARSAV2\tEQUALS\tSTARSAV1 +6\t# I(6)\nTALIGN\t\tEQUALS\tSTARSAV2 +6\t# B(2) TIME OF IMU ALIGNMENT (DOWNLINKED)\n\n# P32-35 + SERVICER\n\nRTX1\t\tEQUALS\tTALIGN +2\t# I(1) X1\t-2 EARTH, -10 MOON\nRTX2\t\tEQUALS\tRTX1 +1\t\t# I(1) X2\t0 EARTH, 2 MOON\n\nZPRIME\t\t=\t22D\nPDA\t\t=\t22D\nCOSTH\t\t=\t16D\nSINTH\t\t=\t18D\nTHETA\t\t=\t20D\nSTARM\t\t=\t32D\n\n# Page 125\n# ******* OVERLAY NUMBER 2 IN EBANK 5 *******\n\n# CONICS ROUTINE STORAGE.\t\t\t(85D)\n\nDELX\t\tEQUALS\tENDW\t\t# I(2)TMP\nDELT\t\tEQUALS\tDELX +2\t\t# I(2)TMP\nURRECT\t\tEQUALS\tDELT +2\t\t# I(6)TMP\nRCNORM\t\tEQUALS\t34D\t\t# I(2)TMP\nXPREV\t\tEQUALS\tXKEP\t\t# I(2)TMP\nR1VEC\t\tEQUALS\tURRECT +6\t# I(6)TMP\nR2VEC\t\tEQUALS\tR1VEC +6\t# I(6)TMP\nTDESIRED\tEQUALS\tR2VEC +6\t# I(2)TMP\nGEOMSGN\t\tEQUALS\tTDESIRED +2\t# I(1)TMP\nUN\t\tEQUALS\tGEOMSGN +1\t# I(6)TMP\nVTARGTAG\tEQUALS\tUN +6\t\t# I(1)TMP\nVTARGET\t\tEQUALS\tVTARGTAG +1\t# I(6)TMP\nRTNLAMB\t\tEQUALS\tVTARGET +6\t# I(1)TMP\nU2\t\tEQUALS\tRTNLAMB +1\t# I(6)TMP\nMAGVEC2\t\tEQUALS\tU2 +6\t\t# I(2)TMP\nUR1\t\tEQUALS\tMAGVEC2 +2\t# I(6)TMP\nSNTH\t\tEQUALS\tUR1 +6\t\t# I(2)TMP\nCSTH\t\tEQUALS\tSNTH +2\t\t# I(2)TMP\n1-CSTH\t\tEQUALS\tCSTH +2\t\t# I(2)TMP\nCSTH-RHO\tEQUALS\t1-CSTH +2\t# I(2)TMP\nP\t\tEQUALS\tCSTH-RHO +2\t# I(2)TMP\nR1A\t\tEQUALS \tP +2\t\t# I(2)TMP\nRVEC\t\tEQUALS\tR1VEC\t\t# I(6)TMP\nVVEC\t\tEQUALS\tR1A +2\t\t# I(6)TMP\nRTNTT\t\tEQUALS\tRTNLAMB\t\t# I(1)TMP\nECC\t\tEQUALS\tVVEC +6\t\t# I(2)TMP\nRTNTR\t\tEQUALS\tRTNLAMB\t\t# I(1)TMP\nRTNAPSE\t\tEQUALS\tRTNLAMB\t\t# I(1)TMP\nR2\t\tEQUALS\tMAGVEC2\t\t# I(2)TMP\nRTNPRM\t\tEQUALS\tECC +2\t\t# I(1)TMP\nSGNRDOT\t\tEQUALS\tRTNPRM +1\t# I(1)TMP\nRDESIRED\tEQUALS\tSGNRDOT +1\t# I(2)TMP\nDELDEP\t\tEQUALS\tRDESIRED +2\t# I(2)TMP\nDEPREV\t\tEQUALS\tDELDEP +2\t# I(2)TMP\nTERRLAMB\tEQUALS\tDELDEP\t\t# I(2)TMP\nTPREV\t\tEQUALS\tDEPREV\t\t# I(2)TMP\nEPSILONL\tEQUALS\tDEPREV +2\t# I(2)TMP\nCOGA\t\tEQUALS\tEPSILONL +2\t# I(2)\tCOTAN OF INITIAL FLIGHT PATH ANGLE.\nINDEP\t\tEQUALS\tCOGA\t\t#\tUSED BY SUBROUTINE `ITERATOR'.\n\n# Page 126\n# ******* OVERLAY NUMBER 3 IN EBANK 5 *******\n\n# INCORP STORAGE.\t\t\t\t(18D)\n\nZI\t\tEQUALS\tENDW\t\t# I(18D)TMP\n\n# INCORP/L SR22.3 STORAGE.\t\t\t(21D)\n\nDELTAX\t\tEQUALS\tZI +18D\t\t# I(18)\nVARIANCE\tEQUALS\tDELTAX +18D\t# I(3)\n\n# MEASUREMENT INCORPORATION -R22- STORAGE.\t(49D)\n\nGRP2SVQ\t\tEQUALS\tVARIANCE +3\t# I(1)TMP QSAVE FOR RESTARTS\nOMEGAM1\t\tEQUALS\tGRP2SVQ +1\t# I(6)\nOMEGAM2\t\tEQUALS\tOMEGAM1\t+6\t# I(6)\nOMEGAM3\t\tEQUALS\tOMEGAM2 +6\t# I(6)\nHOLDW\t\tEQUALS\tOMEGAM3 +6\t# I(18)\nTDPOS\t\tEQUALS\tHOLDW +18D\t# I(6)\nTDVEL\t\tEQUALS\tTDPOS +6\t# I(6)\n\nTRIPA\t\tEQUALS\tDELTAX\t\t# I(3)TMP\nTEMPVAR\t\tEQUALS\tTRIPA +3\t# I(3)TMP\n\n# INCORPORATION/INTEGRATION Q STORAGE.\t\t(1D)\n\nEGRESS\t\tEQUALS\tTDVEL +6\t# I(1)\n\n# P30/P31 STORAGE.\t\t\t\t(1D) AND ONE OVERLAY\n\nP30EXIT\t\tEQUALS\tEGRESS +1\t# B(1)TMP\n\nORIGIN\t\tEQUALS\tP30EXIT\t\t# I(1)TMP INTEX DURING INITVEL.\n\n# Page 127\n# SYSTEM TEST ERASABLES.  CAN OVERLAY W MATRIX.\t(127D)\n\n# ******* OVERLAY NUMBER 0 IN EBANK 5 *******\n\nAZIMUTH\t\tEQUALS\tW\t\t# 2\nLATITUDE\tEQUALS\tAZIMUTH +2\t# 2\nERVECTOR\tEQUALS\tLATITUDE +2\t# 6\nLENGTHOT\tEQUALS\tERVECTOR +6\t# 1\nLOSVEC\t\tEQUALS\tLENGTHOT +1\t# 6\nNDXCTR\t\tEQUALS\tLOSVEC +1\t# 1\nPIPINDEX\tEQUALS\tNDXCTR +1\t# 1\nPOSITON\t\tEQUALS\tPIPINDEX +1\t# 1\nQPLACE\t\tEQUALS\tPOSITON +1\t# 1\nQPLACES\t\tEQUALS\tQPLACE +1\t# 1\nSOUTHDR\t\tEQUALS\tQPLACES +1\t# 7\nTEMPTIME\tEQUALS\tSOUTHDR +7\t# 2\nTMARK\t\tEQUALS\tTEMPTIME +2\t# 2\nGENPL\t\tEQUALS\tTMARK +2\nCDUTIMEI\t=\tGENPL\nCDUTIMEF\t=\tGENPL +2\nCDUDANG\t\t=\tGENPL +4\nCDUREADF\t=\tGENPL +5\nCDUREADI\t=\tGENPL +6\nCDULIMIT\t=\tGENPL +7\n\nTEMPADD\t\t=\tGENPL +4\nTEMP\t\t=\tGENPL +5\nNOBITS\t\t=\tGENPL +6\nCHAN\t\t=\tGENPL +7\n\nLOS1\t\t=\tGENPL +8D\nLOS2\t\t=\tGENPL +14D\n\nCALCDIR\t\tEQUALS\tGENPL +20D\nCDUFLAG\t\tEQUALS\tGENPL +21D\nGYTOBETQ\tEQUALS\tGENPL +22D\nOPTNREG\t\tEQUALS\tGENPL +23D\nSAVE\t\tEQUALS\tGENPL +24D\t# THREE ONSEC LOC\nSFCONST1\tEQUALS\tGENPL +27D\nTIMER\t\tEQUALS\tGENPL +28D\n\nDATAPL\t\tEQUALS\tGENPL +30D\nRDSP\t\tEQUALS\tGENPL\t\t# FIX LATER\tPOSSIBLY KEEP1\nMASKREG\t\tEQUALS\tGENPL +64D\nCDUNDX\t\tEQUALS\tGENPL +66D\nRESULTCT\tEQUALS\tGENPL +67D\nCOUNTPL\t\tEQUALS\tGENPL +70D\n\nCDUANG\t\tEQUALS\tGENPL +71D\n# Page 128\nAINLA\t\t=\tGENPL\t\t# 110 DEC OR 156 OCT LOCATIONS\n\nWANGO\t\tEQUALS\tAINLA\t\t# VERT ERATE\nWANGI\t\tEQUALS\tAINLA +2D\t# HORIZONTAL ERATE\nWANGT\t\tEQUALS\tAINLA +4D\t# T\nTORQNDX\t\t=\tWANGT\nDRIFTT\t\tEQUALS\tAINLA +6D\nALX1S\t\tEQUALS\tAINLA +8D\nCMPX1\t\tEQUALS\tAINLA +9D\t# IND\nALK\t\tEQUALS\tAINLA +10D\t# GAINS\nVLAUNS\t\tEQUALS\tAINLA +22D\nWPLATO\t\tEQUALS\tAINLA +24D\nINTY\t\tEQUALS\tAINLA +28D\t# SOUTH  IP INTE\nANGZ\t\tEQUALS\tAINLA +30D\t# EAST A IS\nINTZ\t\tEQUALS\tAINLA +32D\t# EAST P P I\nANGY\t\tEQUALS\tAINLA +34D\t# SOUTH\nANGX\t\tEQUALS\tAINLA +36D\t# VE\nDRIFTO\t\tEQUALS\tAINLA +38D\t# VERT\nDRIFTI\t\tEQUALS\tAINLA +40D\t# SOU\nVLAUN\t\tEQUALS\tAINLA +44D\nACCWD\t\tEQUALS\tAINLA +46D\nPOSNV\t\tEQUALS\tAINLA +52D\nDPIPAY\t\tEQUALS\tAINLA +54D\t# SOUTH\nDPIPAZ\t\tEQUALS\tAINLA +58D\t# NORTH  IP INCREMENT\nALTIM\t\tEQUALS\tAINLA +60D\nALTIMS\t\tEQUALS\tAINLA +61D\t# INDEX\nALDK\t\tEQUALS\tAINLA +62D\t# TIME  ONSTAN\nDELM\t\tEQUALS\tAINLA +76D\nWPLATI\t\tEQUALS\tAINLA +84D\nGEOCOMPS\tEQUALS\tAINLA +86D\nERCOMP\t\tEQUALS\tAINLA +87D\nZERONDX\t\tEQUALS\tAINLA +93D\n\nTHETAN\t\t=\tALK +4\nFILDELV\t\tEQUALS\tTHETAN +6\t# AGS ALIGNMENT STORAGE\nINTVEC\t\tEQUALS\tFILDELV +2\n1SECXT\t\t=\tAINLA +94D\nASECXT\t\t=\tAINLA +95D\nPERFDLAY\tEQUALS\tAINLA +96D\t# B(2) DELAY TIME BEF. START DRIFT MEASURE\nOVFLOWCK\tEQUALS\tAINLA +98D\t# (1) SET MEANS OVERFLOW IN IMU PERF TEST\n\nEND-E5\t\tEQUALS\tSTARSAV2 +6\t# *** FIRST FREE LOCATION IN E5 ***\n\n# Page 129\n# EBANK-6 ASSIGNMENTS.\n\n\t\tSETLOC\t3000\n\n# DAP PAD-LOADED DATA.\t\t\t\t(10D)\n\n# ALL OF THE FOLLOWING EXCEPT PITTIME AND ROLLTIME ARE INITIALIZED IN FRESH START TO PERMIT IMMEDIATE USE OF DAP.\n\nHIASCENT\tERASE\t\t\t# (1) MASS AFTER STAGING, SCALE AT B16 KG.\nROLLTIME\tERASE\t\t\t# (1) TIME TO TRIM Z GIMBAL IN R03, CSEC.\nPITTIME\t\tERASE\t\t\t# (1) TIME TO TRIM Y GIMBAL IN R03, CSEC.\nDKTRAP\t\tERASE\t\t\t# (1) DAP STATE\t\t   (POSSIBLE 77001\nDKOMEGAN\tERASE\t\t\t# (1)   ESTIMATOR PARA-\t     (VALUES 00012\nDKKAOSN\t\tERASE\t\t\t# (1)     METERS FOR THE\t     00074\nLMTRAP\t\tERASE\t\t\t# (1)       DOCKED AND\t\t     77001\nLMOMEGAN\tERASE\t\t\t# (1)         LEM-ALONE CASES\t     00000\nLMKAOSN\t\tERASE\t\t\t# (1)           RESPECTIVELY         00074\nDKDB\t\tERASE\t\t\t# (1) WIDTH OF DEADBAND FOR DOCKED RCS\n\t\t\t\t\t#     AUTOPILOT (DB=1.4DEG IN FRESH START\n\t\t\t\t\t#     DEADBAND = PI/DKDB RAD.\n\n# PADLOADS FOR INTITIALIZATION OF DAP BIAS ACCELERATION (AT P12 IGNITION)\t(2D)\n\nIGNAOSQ\t\tERASE\t\t\t# B(1)PL\nIGNAOSR\t\tERASE\t\t\t# B(1)PL\n\n# AXIS TRANSFORMATION MATRIX -- GIMBAL TO PILOT AXES:\t(5D)\n\nM11\t\tERASE\t\t\t# SCALED AT 1\nM21\t\tERASE\t\t\t# SCALED AT 1\nM31\t\tERASE\nM22\t\tERASE\t\t\t# SCALED AT 1.\nM32\t\tERASE\t\t\t# SCALED AT 1.\n\n# ANGLE MEASUREMENTS\n\nOMEGAP\t\tERASE \t+4\t\t# BODY-AXIS ROT. RATES SCALED AT PI/4 AND\nOMEGAQ\t\tEQUALS\tOMEGAP +1\t# BODY-AXIS ACCELERATIONS SCALED AT PI/8.\nOMEGAR\t\tEQUALS\tOMEGAP +2\n# RETAIN THE ORDER OF ALPHAQ AND ALPHAR FOR DOWNLINK PURPOSES.\nALPHAQ\t\tEQUALS\tOMEGAP +3\nALPHAR\t\tEQUALS\tOMEGAP +4\nOMEGAU\t\tERASE\t+1\nOMEGAV\t\t=\tOMEGAU +1\n\nTRAPEDP\t\tERASE\t+5\nTRAPEDQ\t\t=\tTRAPEDP +1\nTRAPEDR\t\t=\tTRAPEDP +2\nNPTRAPS\t\t=\tTRAPEDP +3\n# Page 130\nNQTRAPS\t\t=\tTRAPEDP +4\nNRTRAPS\t\t=\tTRAPEDP +5\nEDOTP\t\t=\tEDOT\nEDOTQ\t\tERASE\t+1\nEDOTR\t\t=\tEDOTQ +1\t# MANY SHAREING NAMES\nQRATEDIF\tEQUALS\tEDOTQ\t\t# ALTERNATIVE NAMES:\nRRATEDIF\tEQUALS\tEDOTR\t\t# DELETE WHEN NO. OF REFERENCES = 0\n\nURATEDIF\tEQUALS\tOMEGAU\nVRATEDIF\tEQUALS\tOMEGAV\nOLDXFORP\tERASE\t+2\t\t# STORED CDU READINGS FOR STATE\nOLDYFORP\tEQUALS\tOLDXFORP +1\t# DERIVATIONS: SCALED AT PI RADIANS (2'S)\nOLDZFORQ\tEQUALS\tOLDXFORP +2\n\n# RATE-COMMAND AND MINIMUM IMPULSE MODES\n\nCH31TEMP\tERASE\nSTIKSENS\tERASE\nTCP\t\tERASE\nDXERROR\t\tERASE\t+5\nDYERROR\t\tEQUALS\tDXERROR +2\nDZERROR\t\tEQUALS\tDXERROR +4\nPLAST\t\tERASE\nQLAST\t\tERASE\nRLAST\t\tERASE\nTCQR\t\tERASE\n\n# OTHER VARIABLES\t\t\t\t(5D)\n\nOLDPMIN\t\tERASE\t\t\t# THESE THREE USED IN MIN IMPUSE MODE\nOLDQRMIN\tERASE\nTEMP31\t\tEQUALS\tDAPTEMP1\n\nSAVEHAND\tERASE\t+1\nPERROR\t\tERASE\nQERROR\t\tEQUALS\tDYERROR\nRERROR\t\tEQUALS\tDZERROR\n\n# JET STATE CHANGE VARIABLES -- TIME (TOFJTCHG), JET BITS WRITTEN NOW\t(10D)\n# (JTSONNOW), AND JET BITS WRITTEN AT T6 RUPT (JTSATCHG).\n\nNXT6ADR\t\tERASE\nT6NEXT\t\tERASE\t+1\nT6FURTHA\tERASE\t+1\nNEXTP\t\tERASE\t+2\nNEXTU\t\t=\tNEXTP +1\nNEXTV\t\t=\tNEXTP +2\n-2JETLIM\tERASE\t+1\t\t# RATE COMMAND 4-JET RATE DIFFERENCE LIMIT\n-RATEDB\t\tEQUALS\t-2JETLIM +1\t# AND RATE DEADBAND FOR ASCENT OR DESCENT\n\nTARGETDB\tEQUALS\t-RATEDB\t\t# MAN. CONTROL TARGET DB COMPLEMENT.\n\n# ***Q,R AXIS ERASABLES ***\t\t(3)\n# Page 131\nPBIT\t\tEQUALS\tBIT10\nQRBIT\t\tEQUALS\tBIT11\nUERROR\t\tEQUALS\tDAPTREG5\t# U,V-AXES ATT ERROR FOR RCS CONTROL LAWS.\nVERROR\t\t=\tUERROR +1\nRETJADR\t\tERASE\nTEMPNUM\t\tEQUALS\tDAPTEMP4\nNUMBERT\t\tEQUALS\tDAPTEMP5\nROTINDEX\tEQUALS\tDAPTEMP6\nROTEMP1\t\tEQUALS\tDAPTEMP1\nROTEMP2\t\tEQUALS\tDAPTEMP2\nPOLYTEMP\tEQUALS\tDAPTEMP3\nSENSETYP\tERASE\nABSTJ\t\tEQUALS\tDAPTEMP1\t# ABS VALUE OF JET-FIRING TIME\nABSEDOTP\tEQUALS\tDAPTEMP1\n\nDPSBURN\t\tEQUALS\tDAPTREG4\t# USED WITH SNUFFBIT.  VERY TEMPORARY.\n\n# Page 132\n# TRIM GIMBAL CONTROL LAW ERASABLES:\t\t(11D)\n\nGTSTEMPS\tEQUALS\tDAPTEMP1\t# GTS IS PART OF THE JASK.\nSHFTFLAG\tEQUALS\tGTSTEMPS +2\t# COUNT BITS FOR GTSQRT SHIFTING.\nININDEX\t\tEQUALS\tGTSTEMPS +5\t# INDEX FOR SHIFT LOOP IN GTSQRT.\n\nSAVESR\t\tEQUALS\tAXISCTR\t\t# CANNOT BE A DAPTEMP -- GTS USES THEM ALL.\n\nSCRATCH\t\tEQUALS\tGTSTEMPS +7\t# ROOTCYCL ERASABLE.\nHALFARG\t\tEQUALS\tGTSTEMPS +8D\t# ROOTCYCL ERASABLE.\n\nK2THETA\t\tEQUALS\tGTSTEMPS\t# D,P., K*ERROR, NEGUSUM\nKCENTRAL\tEQUALS\tGTSTEMPS +2\t# S.P., K FROM KQ OR KRDAP, AT PI/2(8)\nK2CNTRAL\tEQUALS\tGTSTEMPS +3\t# D.P., GTS SCRATCH CELLS.\nWCENTRAL\tEQUALS\tGTSTEMPS +4\t# S.P., OMEGA, AT PI/4 RAD/SEC\nACENTRAL\tEQUALS\tGTSTEMPS +5\t# S.P., ALPHA, AT PI/4 RAD/SEC(2)\nDEL\t\tEQUALS\tGTSTEMPS +6\t# S.P., SGN FUNCTION VALUE.\nA2CNTRAL\tEQUALS\tGTSTEMPS +7\t# D.P., GTS SCRATCH CELLS.\nQRCNTR\t\tEQUALS\tGTSTEMPS +9D\t# S.P., INDEX FOR GTS LOOP THROUGH Q,R AXES\nFUNCTION\tEQUALS\tGTSTEMPS +10D\t# D.P., ARGUMENT FOR GRSQRT, SCRATCH FOR GTS.\n\nNEGUQ\t\tERASE\t+2\t\t# NEGATIVE OF Q-AXIS GIMBAL DRIVE.\n\t\tEQUALS\tNEGUQ +1\t# DEFINED AND USED ELSEWHERE.\nNEGUR\t\tEQUALS\tNEGUQ +2\t# NEGATIVE OF R-AXIS GIMBAL DRIVE.\n\nKQ\t\tERASE\t+2\t\t# S.P., JERK TERM FOR GTS, AT PI/2(8)\nAXISCTR\t\tEQUALS\tKQ +1\nKRDAP\t\tEQUALS\tKQ +2\t\t# .3 ACCDOTR SCALED AT PI/2(8)\n\nACCDOTQ\t\tERASE\t+3\t\t# Q-JERK SCALED AT PI/2(7) UNSIGNED\nQACCDOT\t\tEQUALS\tACCDOTQ +1\t# Q-JERK SCALED AT PI/2(7) SIGNED\nACCDOTR\t\tEQUALS\tACCDOTQ +2\t# R-JERK SCALED AT PI/2(7) UNSIGNED\nRACCDOT\t\tEQUALS\tACCDOTQ +3\t# R-JERK SCALED AT PI/2(7) SIGNED\n\nQDIFF\t\tEQUALS\tQERROR\t\t# ATTITUDE ERRORS:\nRDIFF\t\tEQUALS\tRERROR\t\t# SCALED AT PI RADIANS.\n\n# TORQUE VECTOR RECONSTRUCTION VARIABLES:\t(18D)\n\nJETRATE\t\tEQUALS\tDAPTREG1\nJETRATEQ\tEQUALS\tJETRATE +1\t# THE LAST CONTROL SAMPLE PERIOD OF 100 MS.\nJETRATER\tEQUALS\tJETRATE +2\t# SCALED AT PI/4 RADIANS/SECOND\n\nDOWNTORK\tERASE\t+5\t\t# ACCUMULATED JET TORQUE COMMANDED ABOUT\nPOSTORKP\tEQUALS\tDOWNTORK\t# \t+,-p, +,-u, +,-v RESPECTIVELY.\nNETTOTKP\tEQUALS\tDOWNTORK +1\t#\tEMPLOYED EXCLUSIVELY FOR DOWNLIST.\nPOSTORKU\tEQUALS\tDOWNTORK +2\t#\tNOT INITIALIZED:  PERMITTED TO OVERFLOW.\n# Page 133\nNEGTORKU\tEQUALS\tDOWNTORK +3\t#\tSCALED AT 32 JET-SEC, OR ABOUT 2.0 JET-\nPOSTORKV\tEQUALS\tDOWNTORK +4\t#\tMSEC. PER BIT.\nNEGTORKV\tEQUALS\tDOWNTORK +5\n\nNO.PJETS\tERASE\t+2\nNO.UJETS\t=\tNO.PJETS +1\nNO.VJETS\t=\tNO.UJETS +1\nTJP\t\tERASE\t+2\nTJU\t\t=\tTJP +1\nTJV\t\t=\tTJP +2\n\nL,PVT-CG\tERASE\n1JACC\t\tERASE\t+4\t\t# ACCELERATIONS DUE TO 1 JET TORQUING\n1JACCQ\t\tEQUALS\t1JACC +1\t# SCALED AT PI/4 RADIANS/SECOND\n1JACCR\t\tEQUALS\t1JACC +2\n1JACCU\t\tEQUALS\t1JACC +3\t# FOR U,V-AXES THE SCALE FACTOR IS DOFF:\n1JACCV\t\tEQUALS\t1JACC +4\t# SCALED AT PI/2 RADIANS/SECOND (FOR ASC)\n\n# ASCENT VARIABLES\t\t\t\t(10D)\n\nSKIPU\t\tERASE\t+1\nSKIPV\t\t=\tSKIPU +1\n\n# THE FOLLOWING LM DAP ERASABLES ARE ZEROED IN THE STARTDAP SECTION OF THE DAPIDLER PROGRAM AND THE COASTASC\n# SECTION OF THE AOSTASK.  THE ORDER MUST BE PRESERVED FOR THE INDEXING METHODS WHICH ARE EMPLOYED IN THOSE\n# SECTIONS AND ELSEWHERE.\n\nAOSQ\t\tERASE\t+5\t\t# OFFSET ACC. ESTIMATES, UPDATED IN D.P.,\nAOSR\t\tEQUALS\tAOSQ +2\t\t# AND SCALED AT PI/2.\nAOSU\t\tEQUALS\tAOSQ +4\t\t# UV-AXES OFFSET ACC. FROMED BY VECTOR\nAOSV\t\tEQUALS\tAOSQ +5\t\t# ADDITION OF Q,R. AT PI/2 RAD/SEC(2).\n\nAOSQTERM\tERASE\t+1\t\t# (.1-.05K)AOS\nAOSRTERM\tEQUALS\tAOSQTERM +1\t# SCALED AT PI/4 RADIANS/SECOND.\n\n# FOR TJET LAW SUBROUTINES:\t\t\t(TEMPS ONLY)\n\n#NUMBERT\tEQUALS\tDAPTEMP5\t# DEFINED IN QRAXIS.\nEDOTSQ\t\tEQUALS\tDAPTEMP1\nROTSENSE\tEQUALS\tDAPTEMP2\nFIREFCT\t\tEQUALS\tDAPTEMP3\t# LOOKED AT BY PAXIS.\nTTOAXIS\t\tEQUALS\tDAPTEMP4\nADRSDIF2\tEQUALS\tDAPTEMP6\nHOLDQ\t\tEQUALS\tDAPTREG1\nADRSDIF1\tEQUALS\tDAPTREG2\nHH\t\tEQUALS\tDAPTREG3\t# DOUBLE PRECISION.\n# HH +1\t\tEQUALS\tDAPTREG4\nE\t\tEQUALS\tDAPTREG6\t# TIME SHARE WITH VERROR\nEDOT\t\tEQUALS\tOMEGAV\n\n# Page 134\n# INPUT TO TJET LAW (PERMANENT ERASABLES).\t(48D)\n\nTJETU\t\t=\tTJU\t\t# EQUATE NAMES.  INDEXED BY -1, 0, +1.\nBLOCKTOP\tERASE\t+47D\n1/ANET1\t\t=\tBLOCKTOP +16D\t# THESE 8 PARAMETERS ARE SET UP BY 1/ACCS\n1/ANET2\t\t=\t1/ANET1 +1\t# FOR MINIMUM JETS ABOUT THE U-AXIS WHEN\n1/ACOAST\t=\t1/ANET1 +4\t# EDOT IS POSITIVE.  TJETLAW INDEXES BY\nACCFCTZ1\t=\t1/ANET1 +6\t# ADRSDIFF FROM THESE REGISTERS TO PICK UP\nACCFCTZ5\t=\t1/ANET1 +7\t# PARAMETERS FOR THE PROPER AXIS, NUMBER\nFIREDB\t\t=\t1/ANET1 +10D\t# OF JETS AND SIGN OF EDOT.  THERE ARE 48\nCOASTDB\t\t=\t1/ANET1 +12D\t# REGISTERS IN ALL IN THIS BLOCK.\nAXISDIST\t=\t1/ANET1 +14D\t# FOUR NOT REFERENCED (P-AXIS) ARE FILLED\n\t\t\t\t\t# IN BY THE FOLLOWING:\nACCSWU\t\t=\tBLOCKTOP\t# SET BY 1/ACCS TO SHOW WHETHER MAXIMUM\nACCSWV\t\t=\tACCSWU +1\t# JETS ARE REQUIRED BECAUSE OF AOS.\nFLAT\t\t=\tBLOCKTOP +6\t# WIDTH OF MINIMUM IMPULSE ZONE.\nZONE3LIM\t=\tBLOCKTOP +7\t# HEIGHT OF MINIMUM IMPULSE ZONE (AT 4 SEC.)\n\nCOEFFQ\t\tERASE\t+1\t\t# COEFFQ AND COEFFR ARE USED IN ROT-TOUV\nCOEFFR\t\tEQUALS\tCOEFFQ +1\t# TO REXOLVE Q,R COMPONENTS INTO U,V COMP.\n\n# VARIABLES FOR GTS-QRAXIS CONTROL EXCHANGE.\t(4)\n\nALLOWGTS\tEQUALS\tNEGUQ +1\t# INSERT INTO UNUSED LOCATION\nCOTROLER\tERASE\t\t\t# INDICATES WHICH CONTROL SYSTEM TO USE.\nQGIMTIMR\tERASE\t+2\t\t# Q-GIMBAL DRIVE ITMER, DECISECONDS.\nINGTS\t\tEQUALS\tQGIMTIMR +1\t# INDICATOR OF CURRENT GTS CONTROL.\nRGIMTIMR\tEQUALS\tQGIMTIMR +2\t# R-GIMBAL DRIVE TIMER, DECISECONDS.\n\n# PLEASE RETAIN THE ORDER OF CDUXD THRU CDUZD FOR DOWNLINK PURPOSES.\n\n# KALCMANU:DAP INTERFACE\t\t\t(9D)\n\nCDUXD\t\tERASE\t+2\t\t# CDU DESIRED REGISTERS:\nCDUYD\t\tEQUALS\tCDUXD +1\t# SCALED AT PI RADIANS (180 DEGREES)\nCDUZD\t\tEQUALS\tCDUXD +2\t# (STORE IN 2'S COMPLEMENT)\n\nDELCDUX\t\tERASE\t+2\t\t# NEGATIVE OF DESIRED 100MS CDU INCREMENT:\nDELCDUY\t\tEQUALS\tDELCDUX +1\t# SCALED AT PI RADIANS (180 DEGREES)\nDELCDUZ\t\tEQUALS\tDELCDUX +2\t# (STORE IN 2'S COMPLEMENT)\n\n# RETAIN THE ORDER OF OMEGAPD TO OMEGARD FOR DOWNLINK PURPOSES.\n\nOMEGAPD\t\tERASE\t+2\t\t# ATTITUDE MANEUVER DESIRED RATES:\nOMEGAQD\t\tEQUALS\tOMEGAPD +1\t# (NOT EXPLICITLY REFERENCED IN GTS CNTRL)\nOMEGARD\t\tEQUALS\tOMEGAPD +2\t# SCALED AT PI/4 RADIANS/SECOND\n\n# KALCMANU STORAGE.\t\t\t\t(24D)\n\nMIS\t\tERASE\t+23D\t\t# I(18D)\n# Page 135\nCOF\t\tEQUALS\tMIS +18D\t# I(6)\n\n# KALCMANU STORAGE.\t\t\t\t(33D)\nBCDU\t\tERASE\t+30D\t\t# B(3)\nKSPNDX\t\tEQUALS\tBCDU +3\t\t# B(1)\nKDPNDX\t\tEQUALS\tKSPNDX +1\t# B(1)\n\nTMIS\t\tEQUALS\tKDPNDX +1\t# I(18) MUST BE IN SAME BANK AS RCS DAP\nCOFSKEW\t\tEQUALS\tTMIS +18D\t# I(6)  MUST BE IN THE SAME BANK AS RCS DAP\nCAM\t\tEQUALS\tCOFSKEW +6\t# I(2)  MUST BE IN THE SAME BANK AS RCS DAP\n\nAM\t\tERASE\t+1\t\t# I(2) THIS WAS ONCE IN E5 OVERLAYING OGC\n\n# FIRST-ODER OVERLAYS IN KALCMANU\t\t(25D)\nKV1\t\tEQUALS\tTMIS\t\t# I(6)\nMFISYM\t\tEQUALS\tTMIS\t\t# I\nTMFI\t\tEQUALS\tTMIS\t\t# I\nNCDU\t\tEQUALS\tTMIS\t\t# B\nNEXTIME\t\tEQUALS\tTMIS +3\t\t# B\nTTEMP\t\tEQUALS\tTMIS +4\t\t# B\nKV2\t\tEQUALS\tTMIS +6\t\t# I(6)\nBIASTEMP\tEQUALS\tTMIS +6\t\t# B\nKV3\t\tEQUALS\tTMIS +12D\t# I(6)\nOGF\t\tEQUALS\tTMIS +12D\t# I\n\nBRATE\t\tEQUALS\tCOFSKEW\t\t# B\nIG\t\tEQUALS\tCOFSKEW\t\t# I\n\nTM\t\tEQUALS\tCAM\t\t# B\n\n# SECOND-ORDER OVERLAYS IN KALCMANU\t\t(24D)\n\nK1\t\t=\tKV1\nK2\t\t=\tKV2\nK3\t\t=\tKV3\nP21\t\tEQUALS\tKV1\t\t# I(2)\nD21\t\tEQUALS\tKV1 +2\t\t# I(2)\nG21\t\tEQUALS\tKV1 +4\t\t# I(2)\nC2SQP\t\tEQUALS\tKV2\t\t# I(2)\nC2SQM\t\tEQUALS\tKV2 +2\t\t# I(2)\nC2PP\t\tEQUALS\tKV2 +4\t\t# I(2)\nC2MP\t\tEQUALS\tKV3\t\t# I(2)\nC1PP\t\tEQUALS\tKV3 +2\t\t# I(2)\nC1MP\t\tEQUALS\tKV3 +4\t\t# I(2)\n# Page 136\nVECQTEMP\t=\tCOFSKEW\n\nDCDU\t\t=\tCDUXD\nDELDCDU\t\t=\tDELCDUX\nDELDCDU1\t=\tDELCDUY\nDELDCDU2\t=\tDELCDUZ\n\n# *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *\n\n# STORAGE FOR FINDCDUW\n\n# OVERLAYING KALCMANU STORAGE:\t\t\t(26D)\n\nECDUW\t\tEQUALS\tMIS\nECDUWUSR\tEQUALS\tECDUW\t\t# B(1)TMP\nQCDUWUSR\tEQUALS\tECDUWUSR +1\t# I(1)TMP\nNDXCDUW\t\tEQUALS\tQCDUWUSR +1\t# B(1)TMP\nFLAGOODW\tEQUALS\tNDXCDUW +1\t# B(1)TMP\nFLPAUTNO\tEQUALS\tFLAGOODW +1\t# B(1)TMP\nUNFC/2\t\tEQUALS\tFLPAUTNO +1\t# I(6)IN\nUNWC/2\t\tEQUALS\tUNFC/2 +6\t# I(6)IN\nUNFV/2\t\tEQUALS\tUNWC/2 +6\t# I(6) S-S\nUNFVX/2\t\t=\tUNFV/2\nUNFVY/2\t\t=\tUNFV/2 +2\nUNFVZ/2\t\t=\tUNFV/2 +4\n-DELGMB\t\tEQUALS\tUNFV/2 +6\t# B(3)TMP\n\n# DEFINED IN THE WORK AREA:\t\t\t(18D)\n\nUNX/2\t\t=\t0\nUNY/2\t\t=\t6\nUNZ/2\t\t=\t14\n\n# END OF FINDCDUW ERASABLES\n\n# *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *\n\n# THE FOLLOWING ARE THE DAP REPLACEMENTS FOR THE ITEMPS AND RUPTREGS, NEEDED BECAUSE DAP IS NOW A TOB,JASK,JAB,TOSK\n# ... ANYWAY, THE DAP CAN NOW BE INTERRUPTED.\t(18D)\n\nDAPTEMP1\tERASE\t+17D\nDAPTEMP2\tEQUALS\tDAPTEMP1 +1\nDAPTEMP3\tEQUALS\tDAPTEMP1 +2\nDAPTEMP4\tEQUALS\tDAPTEMP1 +3\nDAPTEMP5\tEQUALS\tDAPTEMP1 +4\nDAPTEMP6\tEQUALS\tDAPTEMP1 +5\nDAPTREG1\tEQUALS\tDAPTEMP1 +6\nDAPTREG2\tEQUALS\tDAPTEMP1 +7\nDAPTREG3\tEQUALS\tDAPTEMP1 +8D\n# Page 137\nDAPTREG4\tEQUALS\tDAPTEMP1 +9D\nDAPTREG5\tEQUALS\tDAPTEMP1 +10D\nDAPTREG6\tEQUALS\tDAPTEMP1 +11D\n\nDAPARUPT\tEQUALS\tDAPTEMP1 +12D\nDAPLRUPT\tEQUALS\tDAPARUPT +1\nDAPBQRPT\tEQUALS\tDAPARUPT +2\nDAPZRUPT\tEQUALS\tDAPARUPT +4\n\t\t\t\t\t# (DAPZRUPT IS ALSO A JASK-IN-PROGRESS FLAG)\n\n# NEEDLER (ATTITUDE ERROR EIGHT BALL DISPLAY) STORAGE.\t(6D)\n\nT5TEMP\t\tEQUALS\tITEMP1\nDINDX\t\tEQUALS\tITEMP3\nAK\t\tERASE\t+2\t\t# NEEDLER ATTITUDE INPUTS, SCALED AT 180\nAK1\t\tEQUALS\tAK +1\t\t# DEGREES.  P,Q,R AXES IN AK,AK1,AK2.\nAK2\t\tEQUALS\tAK +2\n\nEDRIVEX\t\tERASE \t+2\t\t# NEEDLER DISPLAY REGS AT 1800 DEGREES.\nEDRIVEY\t\tEQUALS\tEDRIVEX +1\t# SO THAT 384 BITS REPRESENT 42 3/16 DEGREES.\nEDRIVEZ\t\tEQUALS\tEDRIVEX +2\n\n# DOCKED JET INHIBITION COUNTERS\t\t(3D)\n\nPJETCTR\t\tERASE\t+2\nUJETCTR\t\tEQUALS\tPJETCTR +1\nVJETCTR\t\tEQUALS\tPJETCTR +2\n\nEND-E6\t\tEQUALS\tVJETCTR\n\n# Page 138\n# EBANK-7 ASSIGNMENTS\n\n\t\tSETLOC\t3400\n\n# P35 CONSTANTS.\t-- PAD LOADED --\t(4D)\n\nATIGINC\t\tERASE \t+1\t\t# B(2)PL\t*MUST BE AT 1400 FOR SYSTEMSTEST\nPTIGINC\t\tERASE\t+1\t\t# B(2)PL\n\n# AOTMARK STORAGE.\t-- PAD LOADED --\t(12D)\n\nAOTAZ\t\tERASE\t+5\t\t# B(6)PL\nAOTEL\t\tERASE\t+5\t\t# B(6)PL\n\n# LANDING RADAR \t-- PAD LOADED --\t(2D)\n\nLRHMAX\t\tERASE\t\t\t# B(1)\nLRWH\t\tERASE\t\t\t# B(1)\n\n# THROTTLE STORAGE.\t-- PAD LOADED --\t(1D)\n\nZOOMTIME\tERASE\t\t\t# B(1)PL TIME OF DPS THROTTLE-UP COMMAND\n\n# P63 AND P64 CONSTANTS.\t-- PAD LOADED --\t(4D)\n\nTENDBRAK\tERASE\t\t\t# B(1) LANDING PHASE SWITCHING CRITERION.\nTENDAPPR\tERASE\t\t\t# B(1) LANDING PHASE SWITCHING CRITERION.\nDELTTFAP\tERASE\t\t\t# B(1) INCREMENT ADDED TO TTF/8 WHEN\n\t\t\t\t\t#\tSWITCHING FROM P63 TO P64.\nLEADTIME\tERASE\t\t\t# B(1) TIME INCREMENT SPECIFYING HOW MUCH\n\t\t\t\t\t#\tGUIDANCE IS PROJECTED FORWARD\n\n# LANDING RADAR.\t-- PAD LOADED --\t(2D)\n\nRPCRTIME\tERASE\t\t\t# B(1) REPOSITIONING CRITERION (TIME)\nRPCRTQSW\tERASE\t\t\t# B(1) REPOSITIONING CRITERION (ANGLE)\n\n# ASTEER.\t\t-- PAD LOADED --\t(2D)\n\nTNEWA\t\tERASE\t+1\t\t# I(2)PL LAMBERT CYCLE PERIOD.\n\n# P22 STORAGE -- OVERLAYS LANDING PADLOADS --\t(5D)\n# Page 139\nREPOSCNT\tEQUALS\tTENDBRAK\t# B(1)TMP COUNTS NUMBER OF PASSES THROUGH\n\t\t\t\t\t#\t  REPOSITION ROUTINE.\nREPOSTM\t\tEQUALS\tREPOSCNT +1\t# I(2)TMP PRESENT TIME PLUS INCREMENTS OF\n\t\t\t\t\t#\t  TEN SECONDS.\nDELTATM\t\tEQUALS\tREPOSTM +2\t# I(2)TMP TIME INTERVAL FOR RUNNING\n\t\t\t\t\t# \t  DESIGNATE TASK.\n\n# *** RETAIN THE ORDER OF DELVSLV, TIG, RTARG, DELLT4 FOR UPDATE. ***\n\n# P32-35 P72-75 STORAGE.\t\t\t(6D)\n\nDELVLVC\t\tERASE\t+5\t\t# I(6) DELTA VELOCITY -- LOCAL VERTICAL COO\nDELVSLV\t\t=\tDELVLVC\t\t# (TEMP STORAGE OF SAME VECTOR)    -RDINATE\n\n# P30-P40 INTERFACE UNSHARED.\t\t\t(2D)\n\nTIG\t\tERASE\t+1\t\t# B(2)\n\n# INITVEL STORAGE.  ALSO USED BY P34,35,74,75,10,11 OTHERS\t(8D)\n\nRTARG\t\tERASE \t+5\t\t# I(6) TARGET VECTOR\nDELLT4\t\tERASE\t+1\t\t# I(2) TIME DIFFERENCE\n\n# P30-P40 INTERFACE UNSHARED.\t\t\t(3D)\n\nTTOGO\t\tERASE\t+1\t\t# B(2)\nTFI\t\tEQUALS\tTTOGO\nWHICH\t\tERASE\t\t\t# B(1)\n\n# *** R21 ***\t\t\t\t\t(1D)\n\nLOSCOUNT\tERASE\t\t\t# B(1)\n\n# L SR22.3 (RENDEZVOUS NAVIGATION) STORAGE.\t\t(4D)\n\n# RETAIN THE ORDER OF AIG TO TRKMKCNT FOR DOWNLINK PURPOSES.\n\nAIG\t\tERASE\t\t\t# B(1)OUT GIMBAL ANGLES\nAMG\t\tERASE\t\t\t# B(1)OUT (MUST BE\nAOG\t\tERASE\t\t\t# B(1)OUT  CONSECUTIVE)\n\nTRKMKCNT\tERASE\t\t\t# B(1)TMP TEMPORARY MARK STORAGE.\nMARKCTR\t\t=\tTRKMKCNT\n\n# Page 140\n# P32-P35, P72-P75 STORAGE.  -- PERMANENT --\t(6)\n\nNORMEX\t\tERASE\t\t\t# B(1)PRM SAVE FOR Q\nQSAVED\t\tERASE\t\t\t# B(1)PRM SAVE FOR Q\nRTRN\t\tERASE\t\t\t# B(1)PRM SAVE FOR Q\nNN\t\tERASE\t+1\t\t# B(2)\nSUBEXIT\t\tERASE\t\t\t# B(1)PRM SAVE Q\n\nE7OVERLA\tEQUALS\t\t\t# START OF E7 OVERLAYS\nWHOCARES\tEQUALS\tE7OVERLA\t# DUMMY FOR EBANK INSENSITIVE 2CADRS.\n\n# LUNAR LANDING OVERLAYS\t\t\t(6D)\n\n/AFC/\t\tEQUALS\tNORMEX\t\t# B(2)TMP THROTTLE\nFCODD\t\tEQUALS\t/AFC/ +2\t# B(2)TMP THROTTLE\nFP\t\tEQUALS\tFCODD +2\t# B(2)TMP THROTTLE\n# Page 141\n# ******* OVERLAY NUMBER 0 IN EBANK 7 *******\n\n# RENDEZVOUS GUIDANCE STORAGE --P32.....P35--\t(89D)\n\nTSTRT\t\tEQUALS\tDELDV\t\t# MIDCOURSE START TIME\nTDEC2\t\tEQUALS\tDELVCSI\t\t# TEMP STORAGE FOR INTEGRATION TIME INPUT\nKT\t\tEQUALS\tDELVTPI\t\t# TEMP STORAGE FOR MIDCOURSE DELTA TIME\nVACT1\t\tERASE\t+5D\t\t# VELOCITY VECTOR OF ACTIVE AT CSI TIME\nRPASS1\t\tERASE\t+5D\t\t# POSITION VECTOR OF PASSIVE AT CSI TIME\nVPASS1\t\tERASE\t+5D\t\t# VELOCITY VECTOR OF PASSIVE AT CSI TIME\nVACT2\t\tERASE\t+5D\t\t# VELOCITY VECTOR OF ACTIVE AT CDH TIME\nRPASS2\t\tERASE\t+5D\t\t# POSITION VECTOR OF PASSIVE AT CDH TIME\nVPASS2\t\tERASE\t+5D\t\t# VELOCITY VECTOR OF PASSIVE AT CDH TIME\nRACT3\t\tERASE\t+5D\t\t# POSITION VECTOR OF ACTIVE AT TPI TIME\nVACT3\t\tERASE\t+5D\t\t# VELOCITY VECTOR OF ACTIVE AT TPI TIME\nRPASS3\t\tERASE\t+5D\t\t# POSITION VECTOR OF PASSIVE AT TPI TIME\nVPASS3\t\tERASE\t+5D\t\t# VELOCITY VECTOR OF PASSIVE AT TPI TIME\nVACT4\t\tERASE\t+5D\t\t# VELOCITY VECTOR OF ACTIVE AT INTERCEPT\nUNVEC\t\tEQUALS\tVACT3\t\t# CDHMVR UNIT VECTOR TEMP STORAGE.\nDELVCSI\t\tERASE\t+1D\t\t# THRUST VALUE AT CSI\nDELVTPI\t\tERASE\t+1D\t\t# THRUST VALUE AT TPI OR MID\nDELVMID\t\tEQUALS\tDELVTPI\nDIFFALT\t\tERASE\t+1D\t\t# ALT DIFFERENT AT CDH\nPOSTCSI\t\tERASE\t+1\t\t# PERIGEE ALTITUDE AFTER CSI MANEUVER\nPOSTCDH\t\tERASE\t+1\t\t# PERIGEE ALTITUDE AFTER CDH MANEUVER\nPOSTTPI\t\tERASE\t+1\t\t# PERIGEE ALTITUDE AFTER TPI MANEUVER\nLOOPCT\t\tEQUALS\tPOSTTPI\t\t# CSI NEWTON ITERATION COUNTER\nHAFPA1\t\tEQUALS\tPOSTCDH\t\t# HALF PERIOD\nGAMPREV\t\tERASE\t+1\t\t# PREVIOUS GAMMA\nDVPREV\t\tEQUALS\tDELVTPI\t\t# PREVIOUS DELVCSI\nDELDV\t\tERASE\t+1D\nCSIALRM\t\tERASE\t+1\t\t# FIRST SOLUTION ALARM\nVERBNOUN\tERASE\nTITER\t\tEQUALS\tCSIALRM\t\t# ITERATION COUNTER\nRDOTV\t\tERASE\t+1\nVAPREC\t\tEQUALS\tVPASS1\t\t# I(6) S-S PREC VEC FOR NOM TPI TIME (ACTIVE)\nRAPREC\t\tEQUALS\tRPASS1\t\t# I(6) S-S PREC VEC FOR NOM TPI TIME (ACTIVE)\nVPPREC\t\tEQUALS\tVPASS2\t\t# I(6) S-S PREC VEC FOR NOM TPI TIME (PASSIVE)\nRPPREC\t\tEQUALS\tRPASS2\t\t# I(6) S-S PREC VEC FOR NOM TPI TIME (PASSIVE)\nDELEL\t\tEQUALS\tDELVTPI\t\t# I(2) S-S\nDELTEE\t\tEQUALS\tDELDV\t\t# I(2) S-S\nSECMAX\t\tEQUALS \tDELVCSI\t\t# I(2) S-S MAX STOP SIZE FOR ROUTINE\nDELTEEO\t\tEQUALS\tPOSTTPI\t\t# I(2) S-S BACK VALUES OF DELTA TIME\nCENTANG\t\tERASE\t+1\t\t# I(2) CENTRAL ANGLE COVERED (TPI-TPF)\n\n# Page 142\n# SOME P47 STORAGE\t\t\t\t(6D)\n\nDELVIMU\t\tERASE\t+5\t\t# I(6)DSP NOUN 83 FOR P47 DELTA V (IMU)\n\n# P30-P40 COMMON STORAGE.\t\t\t(3D)\n\nTPASS4\t\tERASE\t+1\t\t# INTERCEPT TIME\nQTEMP\t\tERASE\t\t\t# I(1)TMP COMMON RETURN SAVE REGISTER.\n\n# P32,33,34 STORAGE.\t\t\t\t(6D)\n\nTCSI\t\tERASE\t+1\t\t# B(2)TMP CSI TIME IN CENTISECONDS\nTTPI\t\tERASE\t+1\t\t# B(2)TMP TPI TIME IN CENTISECONDS\nTTPIO\t\tERASE\t+1\t\t# B(2)TMP TTPI STORAGE FOR RECYCLE\n\n# P30,P40 INTERFACE.\t\t\t\t(21D)\n\nRTIG\t\tERASE\t+19D\t\t# I(6)TMP\nVTIG\t\tEQUALS\tRTIG +6\t\t# I(6)TMP\nDELVSIN\t\tEQUALS\tVTIG +6\t\t# I(6)TMP\nDELVSAB\t\tEQUALS\tDELVSIN\t+6\t# I(2)TMP\nVGDISP\t\t=\tDELVSAB\n\nQTEMP1\t\tERASE\t\t\t# I(1)TMP HOLDS RETURN.\nRGEXIT\t\tEQUALS\tQTEMP1\t\t# SAVE Q\nSAVQR52\t\tEQUALS\tQTEMP1\n\n# INITVEL STORAGE.  (IN OVERLAY 0 AND OVERLAY 1.\t(2D)\n#\t(CALLS LAMBERT, CONIC SUBROUTINES)\n\nVTPRIME\t\tEQUALS\tVACT4\t\t# TOTAL VELOCITY AT DESIRED RADIUS\nITCTR\t\tEQUALS\tRDOTV\t\t# ITERATION COUNTER\nCOZY4\t\tERASE\t+1\t\t# COS OF ANGLE WHEN ROTATION STARTS\nX1INPUT\t\tEQUALS\tDELDV\t\t# X1 TEMP STORAGE\nINTIME\t\tEQUALS\tGAMPREV\t\t# TIME OF RINIT\n\n# PERIAPO STORAGE.\t\t\t\t(2D)\n\nXXXALT\t\tERASE\t+1\t\t# RADIUS TO LAUNCH PAD OR LANDING SITE\n\nEND-IN/M \tEQUALS\tXXXALT +2\t# NEXT AVAIL ERASABLE AFTER INITVEL/MIDGIM\n\n# Page 143\n# S40.1 STORAGE.\t\t\t\t(12D)\n\nUT\t\tERASE\t+11D\t\t# I(6) THRUST DIRECTION\nVGTIG\t\tEQUALS\tUT +6\t\t# I(6)OUT\nVGPREV\t\t=\tVGTIG\n\n# ASTEER STORAGE.\t\t\t\t(22D)\n\nVG\t\tERASE\t+21D\t\t# I(6)\nRMAG\t\tEQUALS\tVG +6\t\t# I(2)\nMUASTEER\tEQUALS\tRMAG  +2\t# I(2)\nMU/A\t\tEQUALS\tMUASTEER +2\t# I(2)\nRTMAG\t\tEQUALS\tMU/A +2\t\t# I(2)\nR1C\t\tEQUALS\tRTMAG +2\t# I(6)\nSS\t\tEQUALS\tR1C +6\t\t# I(2)\n\nIC\t\t=\tDELVSIN\nTIGSAVE\t\t=\tP21TIME\nTIGSAVEP\t=\tSCAXIS\nMUSCALE\t\t=\tSCAXIS +2\n\n# P40 STORAGE.\t\t\t\t\t(6D)\n\n# F, MDOT, AND TDECAY MUST BE CONTIGUOUS FOR WLOAD\n\nF\t\tERASE\t+5\t\t# I(2)TMP S40.1 GENERATES THIS FOR S40.3\nMDOT\t\tEQUALS\tF +2\t\t# I(2)TMP MASS CHNG RATE, KG/CS AT 2**3.\nTDECAY\t\tEQUALS\tMDOT +2\t\t# I(2)IN DELTA-T TAILOFF, (2**28)CS.\nVEX\t\tERASE\t+1\t\t# I(2) EXHAUST VELOCITY FOR TGO COMPUTAT'N\n\n# MIDTOAV1(2) STORAGE.  (CALLED BY P40,P41,P42)\t\t(1D)\n\nIRETURN1\tERASE\t\t\t# B(1) RETURN FROM MIDTOAV1 AND 2.\n\n# Page 144\n# ******* OVERLAY NUMBER 1 IN EBANK 7 *******\n\n# INITVEL (CALLED BY P34,35,38,39,10,11,S40.9,S40.1)\t(6D)\n\nRTARG1\t\tEQUALS\tVACT1\t\t# I(6)S TEMP STORAGE OF RTARG\n\n# P35-P40 INTERFACE.\t\t\t\t(6D)\n\nVPASS4\t\tEQUALS\tVPASS1\t\t# I(6)TMP VELOCITY OF PASSIVE AT INTERCEPT\n\n# INITVEL OVERLAYS RENDESVOUS GUIDANCE (LISTED IN OVERLAY O)\n\n# SOME P38-30,P78-79 STORAGE\t\t\t\t(2D)\nTINT\t\tEQUALS\tTPASS4\t\t# I(2) TIME OF INTERCEPT\n\n\n# LAT-LONG TEMPORARIES.  CAN OVERLAY WITH S40.1\t\t(3D)\n\nERADM\t\tEQUALS\tUT\t\t# I(2)\nINCORPEX\tEQUALS\tERADM +2\t# I(1)\n\n# LRS24.1 STORAGE.  (CAN SHARE WITH P30'S)\t\t(40D)\n\nRLMSRCH\t\tEQUALS\tINCORPEX +1\t# I(6)TMP LM POSITION VECTOR\nVXRCM\t\tEQUALS\tRLMSRCH +6\t# I(6)\t  CM V X R VECTOR\nLOSDESRD\tEQUALS\tVXRCM +6\t# I(6)\t  DESIRED LOS VECTOR\nUXVECT\t\tEQUALS\tLOSDESRD +6\t# I(6)\t  X-AXIS SRCH PATTERN COORDS\nUYVECT\t\tEQUALS\tUXVECT +6\t# I(6)\t  Y-AXIS SRCH PATTERN COORDS\nDATAGOOD\tEQUALS\tUYVECT +6\t# B(1)DSP FOR R1 -- ALL 1-S WHEN LOCKON\nOMEGDISP\tEQUALS\tDATAGOOD +1\t# B(2)\t  ANGLE OMEGA DISPLAYED IN R2\nOMEGAD\t\t=\tOMEGDISP\t#\t  PINBALL DEFINITION\nNSRCHPNT\tEQUALS\tOMEGDISP +2\t# B(1)TMP SEARCH PATTERN POINT COUNTER.\nSAVLEMV\t\tEQUALS\tNSRCHPNT +1\t# I(6)S-S SAVES LOSVEL\n\n# Page 145\n# ******* OVERLAY NUMBER 2 IN EBANK 7 *******\n\n# INCORP STORAGE IN E7.\t\t\t\t(47D)\n\nTX789\t\tEQUALS\tE7OVERLA\t# I(6)\nGAMMA\t\tEQUALS\tTX789 +6\t# I(3)\nOMEGA\t\tEQUALS\tGAMMA +3\t# I(18)\nBVECTOR\t\tEQUALS\tOMEGA +18D\t# I(18)\nDELTAQ\t\tEQUALS\tBVECTOR +18D\t# I(2)\n\n# AOTMARK STORAGE\t\t\t\t(3D)\n\nMARKCNTR\tEQUALS\tDELTAQ +2\t# I(1)\nXYMARK\t\tEQUALS\tMARKCNTR +1\t# B(1)\nMKDEX\t\tEQUALS\tXYMARK +1\t# B(1)TMP INDEX FOR AOTMARK\n\n# PLANET STORAGE\t\t\t\t(8D)\n\nPLANVEC\t\tEQUALS\tMKDEX +1\t# (6) REFER VECTOR OF PLANET\nTSIGHT\t\tEQUALS \tPLANVEC +6\t# (2) TIME OF MARK OR EST TIME OF MARK\n\n# LRS22.3 STORAGE.  (CAN SHARE WITH P30'S AND OVERLAY LRS24.1)\t(30D)\n\nLGRET\t\tEQUALS\tRLMSRCH\t\t# I(1)TMP\nRDRET\t\tEQUALS\tLGRET\t\t# B(1) TEMP RETURN.\nIGRET\t\tEQUALS\tLGRET\t\t# B(1) TEMP RETURN.\nMX\t\tEQUALS\tRDRET +1\t# I(6)\nMY\t\tEQUALS\tMX +6\t\t# I(6)\nMZ\t\tEQUALS\tMY +6\t\t# I(6)\nE0\t\tEQUALS\tMX\t\t# I(2)\nE1\t\tEQUALS\tMX +2\t\t# I(2)\nE2\t\tEQUALS\tMX +4\t\t# I(2)\nE3\t\tEQUALS\tE2 +2\t\t# I(2)\nSCALSHFT\tEQUALS\tMZ +6\t\t# B(1) SCALE SHIFT FOR EARTH/MOON\nRXZ\t\tEQUALS\tSCALSHFT +1\t# I(2)\nULC\t\tEQUALS\tRXZ +2\t\t# I(6)\nSINTHETA\tEQUALS\tULC +6\t\t# I(2)\n\n# ***** IN OVERLAY ONE *****\n\nN49FLAG\t\tEQUALS\tRDOTMSAV\t# B(1)S FLAG INDICATING V0649 RESPONSE\n\n# LRS22.1 STORAGE.  (MUST NOT SHARE WITH P30'S)\t\t(13D)\n\n# (OUTPUTS ARE TO LRS22.3)\n\n# Page 146\nRRTRUN\t\tEQUALS\tSINTHETA +2\t# B(2)OUT RR TRUNNION ANGLE\nRRSHAFT\t\tEQUALS\tRRTRUN +2\t# B(2)OUT RR SHAFT ANGLE\nLRS22.1X\tEQUALS\tRRSHAFT +2\t# B(1)TMP\nRRBORSIT\tEQUALS\tLRS22.1X +1\t# I(6)TMP RADAR BORESIGHT VECTOR.\nRDOTMSAV\tEQUALS\tRRBORSIT +6\t# B(2)S RR RANGE-RATE (FPS)\n\n# LRS22.1 (SAME AS PREVIOUS SECTION) ALSO DOWNLINK FOR RR (R29)\t\t(10D) CANNOT SHARE WITH L.A.D.\n\nRDOTM\t\tEQUALS\tRDOTMSAV +2\t# B(2)OUT RANGE-RATE READING\nTANGNB\t\tEQUALS\tRDOTM +2\t# B(2)TMP RR GIMBAL ANGLES\n# RETAIN THE ORDER OF MKTIME TO RM FOR DOWNLINK PURPOSES\nMKTIME\t\tEQUALS\tTANGNB +2\t# B(2)OUT TIME OF RR READING\nRM\t\tEQUALS\tMKTIME +2\t# I(2)OUT RANGE READING\nRANGRDOT\tEQUALS\tRM +2\t\t# B(2) DOWNLINKED RAW RANGE AND RRATE\n\n# R61LEM -- PREFERRED TRACKING ATTITUDE ROUTINE **IN OVERLAY ONE**\n# (CALLED BY P20, R22LEM, LSR22.3)\t\t(1D)\n\nR65CNTR\t\tEQUALS\tRRBORSIT +5\t# B(1)SS COUNT NUMBER OF TIMES PREFERRED\n\t\t\t\t\t#\t TRACKING ROUTINE IS TO CYCLE\nWHCHREAD\tEQUALS\tR65CNTR\t\t# TELLS WHICH RR DATA TRIGGERED N49 DISPLAY\n\n# P21 STORAGE\t\t\t\t\t(2D)\n\nP21TIME\t\tEQUALS\tRANGRDOT +2\t# I(2)TMP\n\n# KALCMANU, VECPOINT STORAGE.  CALLED BY R63, R61, R65.\t\t(12D)\n\nSCAXIS\t\tEQUALS\tP21TIME +2\t# I(6)\nPOINTVSM\tEQUALS\tSCAXIS +6\t# I(6)\n# Page 147\n# ******* OVERLAY NUMBER 3 IN EBANK 7 *******\n\n\n# SERVICER STORAGE\t\t\t\t(6D)\n\nABVEL\t\tEQUALS\tE7OVERLA\t# B(2) DISPLAY\nHDOTDISP\tEQUALS\tABVEL +2\t# B(2) DISPLAY\nTTFDISP\t\tEQUALS\tHDOTDISP +2\t# B(2) DISPLAY\n\n# BURN PROG STORAGE.\t\t\t\t(2D)\n\nSAVET-30\tEQUALS\tTTFDISP +2\t# B(2)TMP TIG-30 RESTART\n\n# SERVICER STORAGE.\t\t\t\t(69D)\n\nVGBODY\t\tEQUALS\tSAVET-30 +2\t# B(6)OUT SET BY S41.1 VG LEM, SC.COORDS\nDELVCTL\t\t=\tVGBODY\nDVTOTAL\t\tEQUALS\tVGBODY +6\t# B(2) DISPLAY NOUN\nGOBLTIME\tEQUALS\tDVTOTAL +2\t# B(2) NOMINAL TIG FOR CALC. OF GOBLATE.\nABDVCONV\tEQUALS\tGOBLTIME +2\t# I(2)\nDVCNTR\t\tEQUALS\tABDVCONV +2\t# B(1)\nTGO\t\tEQUALS\tDVCNTR +1\t# B(2)\nR\t\tEQUALS\tTGO +2\t\t# I(6)\nUNITGOBL\tEQUALS\tR\t\t# I(6)\nV\t\tEQUALS\tR +6\nDELVREF\t\tEQUALS\tV\t\t# I(6)\nHCALC\t\tEQUALS\tDELVREF +6\t# B(2) LR\nUNIT/R/\t\tEQUALS\tHCALC +2\t# I(6)\n\n# (THE FOLLOWING SERVICER ERASABLES CAN BE SHARED WITH SECOND DPS GUIDANCE STORAGE)\n\nRN1\t\tEQUALS\tUNIT/R/ +6\t# B(6)\nVN1\t\tEQUALS\tRN1 +6\t\t# I(6)\t\t( IN ORDER )\nPIPTIME1\tEQUALS\tVN1 +6\t\t# B(2)\t\t(    FOR   )\nGDT1/2\t\tEQUALS\tPIPTIME1 +2\t# I(6)\t\t(   COPY   )\nMASS1\t\tEQUALS\tGDT1/2 +6\t# I(2)\t\t(   CYCLE  )\nR1S\t\tEQUALS\tMASS1 +2\t# I(6)\nV1S\t\tEQUALS\tR1S +6\t\t# I(6)\n\n# ALIGNMENT/S40.2,3 COMMON STORAGE.\t\t(18D)\n\nXSMD\t\tEQUALS\tV1S +6\t\t# I(6)\nYSMD\t\tEQUALS\tXSMD +6\t\t# I(6)\nZSMD\t\tEQUALS\tYSMD +6\t\t# I(6)\n\nXSCREF\t\t=\tXSMD\nYSCREF\t\t=\tYSMD\n# Page 148\nZSCREF\t\t=\tZSMD\n\nEND-ALIG\tEQUALS\tZSMD +6\t\t# NEXT AVAIL ERASABLE AFTER ALIGN/S40.2,3\n\n# ****** P22 ******\t\t\t\t(24D)\n\nRSUBL\t\tEQUALS\tEND-ALIG\t# I(6)S-S\tLM POSITION VECTOR\nUCSM\t\tEQUALS\tRSUBL +6\t# I(6)S-S\tVECTOR U\nNEWVEL\t\tEQUALS\tUCSM +6\t\t# I(6)S-S\tTERMINAL VELOCITY VECTOR\nNEWPOS\t\tEQUALS\tNEWVEL +6\t# I(6)S-S\tTERMINAL POSITION VECTOR\nLNCHTM\t\tEQUALS\tNEWPOS +6\t# I(2)S-S\tEST. LAUNCH TIME FOR LEM\nTRANSTM\t\tEQUALS\tLNCHTM +2\t# I(2)S-S\tTRANSFER TIME\nNCSMVEL\t\tEQUALS\tTRANSTM +2\t# I(6)S-S \tNEW CSM VELOCITY\n\n# ****** P21 ******\t\t\t\t(18D)\n\nP21ORIG\t\t=\tDISPDEX\nP21BASER\tEQUALS\tRLMSRCH\t\t# I(6)TMP\nP21BASEV\tEQUALS\tP21BASER +6\t# I(6)TMP\nP21VEL\t\tEQUALS\tP21BASEV +6\t# I(2)TMP\t*** NOUN 91 ***\nP21GAM\t\tEQUALS\tP21VEL +2\t# I(2)TMP\t*** NOUN 91 ***\nP21ALT\t\tEQUALS\tP21GAM +2\t# I(2)TMP\t*** NOUN 91 ***\n\n# Page 149\n# ******* OVERLAY NUMBER 4 IN EBANK 7 *******\n\n# VARIABLES FOR SECOND DPS GUIDANCE (THE LUNAR LANDING)\t\t(18D)\n\n# THESE ERASABLES MAY BE SHARED WITH CARE\n\nOURTEMPS\t=\tRN1\t\t# OVERLAY LAST PART OF SERVICER\nLANDTEMP\t=\tOURTEMPS\t# B(6) \tGUIDANCE\nTTF/8TMP\t=\tLANDTEMP +6\t# B(2)\tGUIDANCE\nELINCR\t\t=\tTTF/8TMP +2\t# B(2)\tGUIDANCE\nAZINCR\t\t=\tELINCR +2\t# B(2)\tGUIDANCE\nKEEP-2\t\t=\tAZINCR +2\t# B(2)\tTP PREVENT PIPTIME1 OVERLAY\nTABLTTF\t\t=\tKEEP-2 +2\t# B(2)\tGUIDANCE\nTPIPOLD\t\t=\tTABLTTF +9D\t# B(2)\tGUIDANCE\nE2DPS\t\tEQUALS\tOURPERMS\n\n# THESE ERASABLES MUST NOT OVERLAY GOBLTIME OR SERVICER\n\nPIFPSET\t\t=\tXSMD\t\t# B(1)\tTHROTTLE\nRTNHOLD\t\t=\tPIFPSET +1\t# B(1)\tTHROTTLE\nFWEIGHT\t\t=\tRTNHOLD +1\t# B(2)\tTHROTTLE\nPIF\t\t=\tFWEIGHT +2\t# B(2)\tTHROTTLE\nPSEUDO55\t=\tPIF +2\t\t# B(1)\tTHROTTLE DOWNLINK\nFC\t\t=\tPSEUDO55 +1\t# B(2)\tTHROTTLE\nTTHROT\t\t=\tFC +2\t\t# B(1)\tTHROTTLE\nFCOLD\t\t=\tTTHROT +1\t# B(1)\tTHROTTLE\n\n# THESE ERASABLES SHOULD NOT BE SHARED DURING P63, P64, P65, P66, P67\n\nOURPERMS\t=\tFCOLD +1\t# MUSTN'T OVERLAY OURTEMPS OR SERVICER\nWCHPHOLD\t=\tOURPERMS\t# B(1)\tGUIDANCE\nFILLER\t\t=\tWCHPHOLD +1\nFLPASS0\t\t=\tFILLER +1\t# B(1) \tGUIDANCE\nTPIP\t\t=\tFLPASS0 +1\t# B(2)\nVGU\t\t=\tTPIP +2\t\t# B(6)\tGUIDANCE\nLAND\t\t=\tVGU +6\t\t# B(6)\tGUIDANCE\tCONTIGUOUS\nTTF/8\t\t=\tLAND +6\t\t# B(2)\tGUIDANCE\tCONTIGUOUS\nELIDUMMY\t=\tTTF/8 +2\t# (1)\tDUMMY FOR ELINCR1\nAZIDUMMY\t=\tELIDUMMY +1\t# (1)\tDUMMY FOR AZINCR1\nZERDUMMY\t=\tAZIDUMMY +1\t# (1)\tDUMMY FOR ZERLINA\nELVDUMMY\t=\tZERDUMMY +1\t# (1)\tDUMMY FOR ELVIRA\nLRADRET\t\t=\tELVDUMMY +1\t# B(1)\tLR\nVSELECT\t\t=\tLRADRET +1\t# B(1)\tLR\nVMEAS\t\t=\tVSELECT +1\t# B(2)\tLR\nHMEAS\t\t=\tVMEAS +2\t# B(2)\tLR\nVN2\t\t=\tHMEAS +2\t# B(6)\tLR\n# Page 150\nGNUR\t\t=\tVN2\t\t# B(6)\tLR\nGNUV\t\t=\tVN2\t\t# B(6)\tLR\nLRADRET1\t=\tVN2\t\t# B(1)\tLR\nDELTAH\t\t=\tVN2 +6\t\t# B(2)\tDISPLAY\nFUNNYDSP\t=\tDELTAH +2\t# B(2)\tDISPLAY\nEOURPERM\tEQUALS\tFUNNYDSP +2\t# NEXT AVAILABLE ERASABLE AFTER OURPERMS\n\n# (ERASABLES WHICH OVERLAY THE ABOVE BLOCK)\n\nVDGVERT\t\t=\tELIDUMMY\t# B(2)\tP65,P66\nNIGNLOOP\t=\tZERDUMMY\t# B(1)\tIGNALG\nNGUIDSUB\t=\tELVDUMMY\t# B(1)\tIGNALG\nWCHVERT\t\t=\tELVDUMMY\t# B(1)\tP65,P66,P67\nFUELNEED\t=\tFUNNYDSP\t# B(1)\tDISPLAY\nTREDES\t\t=\tFUNNYDSP\t# B(1)\tDISPLAY\nLOOKANGL\t=\tFUNNYDSP +1\t# B(1) \tDISPLAY\n\n# ERASABLES CONVENIENTLY DEFINABLE IN THE WORK AREA\n\nPROJ\t\t=\t18D\t\t# I(2) \tGUIDANCE\nUNLRB/2\t\t=\t20D\t\t# I(6)\tGUIDANCE (DURING P64 ONLY)\nUNLR/2\t\t=\t20D\t\t# I(6)\tGUIDANCE\n\n# THE END OF THE LUNAR LANDING ERASABLES\n\n# R12 (FOR LUNAR LANDING)\t\t\t(6D)\n\nLRLCTR\t\tEQUALS\tEOURPERM\t# B(1) LR DATA TEST\nLRRCTR\t\tEQUALS\tLRLCTR +1\t# B(1)\nLRMCTR\t\tEQUALS\tLRRCTR +1\t# B(1)\nLRSCTR\t\tEQUALS\tLRMCTR +1\t# B(1)\nSTILBADH\tEQUALS\tLRSCTR +1\t# B(1)\nSTILBADV\tEQUALS\tSTILBADH +1\t# B(1)\n\n# LANDING ANALOGS DISPLAY STORAGE.\t\t(40D)\n\nLATVMETR\tEQUALS\tSTILBADV +1\t# B(1)PRM LATVEL MONITOR METER (AN ORDER)\nFORVMETR\tEQUALS\tLATVMETR +1\t# B(1)PRM FORVEL MONITOR METER (-ED PAIR)\nLATVEL\t\tEQUALS\tFORVMETR +1\t# B(1)PRM LATERAL VELOCITY (AN ORDER)\nFORVEL\t\tEQUALS\tLATVEL +1\t# B(1)PRM FORWARD VELOCITY (-ED PAIR)\nTRAKLATV\tEQUALS\tFORVEL +1\t# B(1)PRM MONITOR FLG 4 LATVEL (AN ORDER)\nTRAKFWDV\tEQUALS\tTRAKLATV +1\t# B(1)PRM MONIT. FLAG FOR FORVEL (ED PAIR)\nVHY\t\tEQUALS\tTRAKFWDV +1\t# B(1)PRM VHY=VMP.UHYP (AN ORDER)\n# Page 151\nVHZ\t\tEQUALS\tVHY +1\t\t# B(1)PRM VHZ=VMP.UHZP (-ED PAIR)\nVVECT\t\tEQUALS\tVHZ +1\t\t# B(3)PRM UPDATED S.P. VELOCITY VECTOR\nALTRATE\t\tEQUALS\tVVECT +3\t# B(1)PRM ALTITUDE RATE IN BIT UNITS\nALTSAVE\t\tEQUALS\tALTRATE +1\t# B(2)PRM ALTITUDE IN BIT UNITS\nLADQSAVE\tEQUALS\tALTSAVE +2\t# B(1)PARM SAVE Q IN LAND1SP\nDT\t\tEQUALS\tLADQSAVE +1\t# B(1)PRM TIME 1 MINUS (PIPTIME +1)\nDALTRATE\tEQUALS\tDT +1\t\t# B(1)PRM ALTITUDE RATE ERROR CORRECTION\nUHYP\t\tEQUALS\tDALTRATE +1\t# B(6)PRM SM UNIT VECTOR\nQAXIS\t\t=\tUHYP\nUHZP\t\tEQUALS\tUHYP +6\t\t# B(6)PRM SM UNIT VECTOR\nDELVS\t\tEQUALS\tUHZP +6\t\t# B(6)PRM DELVS = WMXR\nALTBITS\t\tEQUALS\tDELVS +6\t# B(2)PRM ALTITUDE IN BIT UNITS. 2.34 FT/BIT\nRUNIT\t\tEQUALS\tALTBITS +2\t# B(3)PRM SM HALF-UNIT R VECTOR\nLASTLADW\tEQUALS\tRUNIT +2\t# ONLY A TAG TO SIGNIFY LAST L.A.D. WORD\n\n# P66 ERASABLES (R.O.D.)\t\t\t(1D)\n\nRODCOUNT\tEQUALS\tRUNIT +3\n\n# P66 ERASABLES (R.O.D.)\t\t\t(14D)\n\nRODSCAL1\tEQUALS\tRM\t\t# B(1)\nLASTTPIP\tEQUALS\tRODSCAL1 +1\t# I(2)\nTHISTPIP\tEQUALS\tLASTTPIP +2\t# B(2)\nOLDPIPAX\tEQUALS\tTHISTPIP +2\t# B(1)\nOLDPIPAY\tEQUALS\tOLDPIPAX +1\t# B(1)\nOLDPIPAZ\tEQUALS\tOLDPIPAY +1\t# B(1)\nDELVROD\t\tEQUALS\tOLDPIPAZ +1\t# B(6)\n\n# NOUN 63 COMPONENT\t\t\t\t(2D)\n\nHCALC1\t\tEQUALS\tDELVROD +6\t# I(2)\n\n# Page 152\n# ******* OVERLAY NUMBER 5 IN EBANK 7 *******\n\n# ASCENT GUIDANCE ERASABLES.\t\t\t(21D)\n\nRCO\t\tEQUALS\tEND-ALIG\t# I(2)TMP TARGET RADIUS AND OUT-OF-PLANE\nYCO\t\tEQUALS\tRCO +2\t\t# I(2)TMP DISTANCE, SCALED AT 2(24).\n1/DV1\t\tEQUALS\tYCO +2\t\t# B(2)TMP ATMAG\n1/DV2\t\tEQUALS\t1/DV1 +2\t# B(2)TMP ATMAG\n1/DV3\t\tEQUALS\t1/DV2 +2\t# B(2)TMP ATMAG\nXRANGE\t\tEQUALS\t1/DV3 +2\t# B(2)TMP\nENGOFFDT\tEQUALS\tXRANGE +2\t# B(1)TMP\nVGVECT\t\tEQUALS\tENGOFFDT +1\t# I(6)OUT VELOCITY-TO-BE-GAINED.\nTXO\t\tEQUALS\tVGVECT +6\t# I(2)TMP TIME AT WHICH X-AXIS OVERRIDE\n\t\t\t\t\t# IS ALLOWED.\n\n# END OF THE ASCENT GUIDANCE ERASABLES\n\n# THE FOLLOWING CARDS KEEP THE ASSEMBLER HAPPY UNTIL THE SYMBOLS ARE DELETED FROM THE PINBALL NOUN TABLES.\n\nEND-E7.0\tEQUALS \tIRETURN1 +1\t# FIRST UNUSED LOCATION IN E7 OVERLAY 0\nEND-E7.1\tEQUALS\tN49FLAG +1\t# FIRST UNUSED LOCATION IN E7 OVERLAY 1\nEND-E7.2\tEQUALS\tPOINTVSM +6\t# FIRST UNUSED LOCATION IN E7 OVERLAY 2\nEND-E7.3\tEQUALS\tEND-ALIG\t# FIRST UNUSED LOCATION IN E7 OVERLAY 3\nEND-E7.4\tEQUALS\t3777\t\t# ** LAST LOCATION USED IN E7 OVERLAY 4 **\nEND-E7.5\tEQUALS\tTXO +2\t\t# FIRST UNUSED LOCATION IN E7 OVERLAY 5\nEND-E7\t\tEQUALS\t3777\t\t# ** LAST LOCATION USED IN E7 **\n"
  },
  {
    "path": "Luminary099/EXECUTIVE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tEXECUTIVE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1103-1114\n# Mod history:\t2009-05-25 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\t\t2011-05-08 JL\tRemoved workaround.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1103\n\t\tBLOCK\t02\n\n# TO ENTER A JOB REQUEST REQUIRING NO VAC AREA:\n\n\t\tCOUNT*\t$$/EXEC\nNOVAC\t\tINHINT\n\t\tAD\tFAKEPRET\t# LOC(MPAC +6) - LOC(QPRET)\n\t\tTS\tNEWPRIO\t\t# PRIORITY OF NEW JOB + NOVAC C(FIXLOC)\n\n\t\tEXTEND\n\t\tINDEX\tQ\t\t# Q WILL BE UNDISTURBED THROUGHOUT.\n\t\tDCA\t0\t\t# 2CADR OF JOB ENTERED.\n\t\tDXCH\tNEWLOC\n\t\tCAF\tEXECBANK\n\t\tXCH\tFBANK\n\t\tTS\tEXECTEM1\n\t\tTCF\tNOVAC2\t\t# ENTER EXECUTIVE BANK.\n\n# TO ENTER A JOB REQUEST REQUIREING A VAC AREA -- E.G., ALL (PARTIALLY) INTERPRETIVE JOBS.\n\nFINDVAC\t\tINHINT\n\t\tTS\tNEWPRIO\n\t\tEXTEND\n\t\tINDEX\tQ\n\t\tDCA\t0\nSPVACIN\t\tDXCH\tNEWLOC\n\t\tCAF\tEXECBANK\n\t\tXCH\tFBANK\n\t\tTCF\tFINDVAC2\t# OFF TO EXECUTIVE SWITCHED-BANK.\n\n# TO ENTER A FINDVAC WITH THE PRIORITY IN NEWPRIO TO THE 2CADR ARRIVING IN A AND L:\n# USERS OF SPVAC MUST INHINT BEFORE STORING IN NEWPRIO.\n\nSPVAC\t\tXCH\tQ\n\t\tAD\tNEG2\n\t\tXCH\tQ\n\t\tTCF\tSPVACIN\n\n# TO SUSPEND A BASIC JOB SO A HIGHER PRIORITY JOB MAY BE SERVICED:\n\nCHANG1\t\tLXCH\tQ\n\t\tCAF\tEXECBANK\n\t\tXCH\tBBANK\n\t\tTCF\tCHANJOB\n\n# TO SUSPEND AN INTERPRETIVE JOB:\n\nCHANG2\t\tCS\tLOC\t\t# NEGATIVE LOC SHOWS JOB = INTERPRETIVE.\n# ITRACE (4) REFERS TO \"CHANG2\"\n\t\tTS\tL\n# Page 1104\n +2\t\tCAF\tEXECBANK\n\t\tTS\tBBANK\n\t\tTCF\tCHANJOB -1\n\n# Page 1105\n# TO VOLUNTARILY SUSPEND A JOB UNTIL THE COMPLETION OF SOME ANTICIPATED EVENT (I/O EVENT ETC.):\n\nJOBSLEEP\tTS\tLOC\n\t\tCAF\tEXECBANK\n\t\tTS\tFBANK\n\t\tTCF\tJOBSLP1\n\n# TO AWAKEN A JOB PUT TO SLEEP IN THE ABOVE FASHION:\n\nJOBWAKE\t\tINHINT\n\t\tTS\tNEWLOC\n\t\tCS\tTWO\t\t# EXIT IS VIA FINDVAC/NOVAC PROCEDURES.\n\t\tADS\tQ\n\t\tCAF\tEXECBANK\n\t\tXCH\tFBANK\n\t\tTCF\tJOBWAKE2\n\n# TO CHANGE THE PRIORITY OF A JOB CURRENTLY UNDER EXECUTION:\n\nPRIOCHNG\tINHINT\t\t\t# NEW PRIORITY ARRIVES IN A.  RETURNS TO\n\t\tTS\tNEWPRIO\t\t# CALLER AS SOON AS NEW JOB PRIORITY IS\n\t\tCAF\tEXECBANK\t# HIGHEST.  PREPARE FOR POSSIBLE BASIC-\n\t\tXCH\tBBANK\t\t# STYLE CHANGE-JOB.\n\t\tTS\tBANKSET\n\t\tCA\tQ\n\t\tTCF\tPRIOCH2\n\n# TO REMOVE A JOB FROM EXECUTIVE CONSIDERATIONS:\n\nENDOFJOB\tCAF\tEXECBANK\n\t\tTS\tFBANK\n\t\tTCF\tENDJOB1\n\nENDFIND\t\tCA\tEXECTEM1\t# RETURN TO CALLER AFTER JOB ENTRY\n\t\tTS\tFBANK\t\t# COMPLETE.\n\t\tTCF\tQ+2\nEXECBANK\tCADR\tFINDVAC2\n\nFAKEPRET\tADRES\tMPAC -36D\t# LOC(MPAC +6) - LOC(QPRET)\n\n# Page 1106\n# LOCATE AN AVAILABLE VAC AREA\n\n\t\tBANK\t01\n\t\tCOUNT*\t$$/EXEC\nFINDVAC2\tTS\tEXECTEM1\t# (SAVE CALLER'S BANK FIRST.)\n\t\tCCS\tVAC1USE\n\t\tTCF\tVACFOUND\n\t\tCCS\tVAC2USE\n\t\tTCF\tVACFOUND\n\t\tCCS\tVAC3USE\n\t\tTCF\tVACFOUND\n\t\tCCS\tVAC4USE\n\t\tTCF\tVACFOUND\n\t\tCCS\tVAC5USE\n\t\tTCF\tVACFOUND\n\t\tLXCH\tEXECTEM1\n\t\tCA\tQ\n\t\tTC\tBAILOUT1\n\t\tOCT\t1201\t\t# NO VAC AREAS.\n\nVACFOUND\tAD\tTWO\t\t# RESERVE THIS VAC AREA BY STORING A ZERO\n\t\tZL\t\t\t# IN ITS VAC USE REGISTER AND STORE THE\n\t\tINDEX\tA\t\t# ADDRESS OF THE FIRST WORD OF IT IN THE\n\t\tLXCH\t0 \t-1\t# LOW NINE BITS OF THE PRIORITY WORD.\n\t\tADS\tNEWPRIO\n\nNOVAC2\t\tCAF\tZERO\t\t# NOVAC ENTERS HERE.  FIND A CORE SET.\n\t\tTS\tLOCCTR\n\t\tCAF\tNO.CORES\t# SEVEN SETS OF ELEVEN REGISTERS EACH.\nNOVAC3\t\tTS\tEXECTEM2\n\t\tINDEX\tLOCCTR\n\t\tCCS\tPRIORITY\t# EACH PRIORITY REGISTER CONTAINS -0 IF\n\t\tTCF\tNEXTCORE\t# THE CORESPONDING CORE SET IS AVAILABLE.\nNO.CORES\tDEC\t7\n\t\tTCF\tNEXTCORE\t# AN ACTIVE JOB HAS A POSITIVE PRIORITY\n\t\t\t\t\t# BUT A DORMANT JOB'S PRIORITY IS NEGATIVE\n\n# Page 1107\nCORFOUND\tCA\tNEWPRIO\t\t# SET THE PRIORITY OF THIS JOB IN THE CORE\n\t\tINDEX\tLOCCTR\t\t# SET'S PRIORITY REGISTER AND SET THE\n\t\tTS\tPRIORITY\t# JOB'S PUSH-DOWN POINTER AT THE BEGINNING\n\t\tMASK\tLOW9\t\t# OF THE WORK AREA AND OVERFLOW INDICATOR.\n\t\tINDEX\tLOCCTR\n\t\tTS\tPUSHLOC\t\t# OFF TO PREPARE FOR INTERPRETIVE PROGRAMS.\n\n\t\tCCS\tLOCCTR\t\t# IF CORE SET ZERO IS BEING LOADED, SET UP\n\t\tTCF\tSETLOC\t\t# OVFIND AND FIXLOC IMMEDIATELY.\n\t\tTS\tOVFIND\n\t\tCA\tPUSHLOC\n\t\tTS\tFIXLOC\n\nSPECTEST\tCCS\tNEWJOB\t\t# SEE IF ANY ACTIVE JOBS WAITING (RARE).\n\t\tTCF\tSETLOC\t\t# MUST BE AWAKENED OUT UNCHANGED JOB.\n\t\tTC\tCCSHOLE\n\t\tTC\tCCSHOLE\n\t\tTS\tNEWJOB\t\t# +0 SHOWS ACTIVE JOB ALREADY SET.\n\t\tDXCH\tNEWLOC\n\t\tDXCH\tLOC\n\t\tTCF\tENDFIND\n\nSETLOC\t\tDXCH\tNEWLOC\t\t# SET UP THE LOCATION REGISTERS FOR THIS\n\t\tINDEX\tLOCCTR\n\t\tDXCH\tLOC\n\t\tINDEX\tNEWJOB\t\t# THIS INDEX INSTRUCTION INSURES THAT THE\n\t\tCS\tPRIORITY\t# HIGHEST ACTIVE PRIORITY WILL BE COMPARED\n\t\tAD\tNEWPRIO\t\t# WITH THE NEW PRIORITY TO SEE IF NEWJOB\n\t\tEXTEND\t\t\t# SHOULD BE SET TO SIGNAL A SWITCH.\n\t\tBZMF\tENDFIND\n\t\tCA\tLOCCTR\t\t# LOCCTR IS LEFT SET AT THIS CORE SET IF\n\t\tTS\tNEWJOB\t\t# THE CALLER WANTS TO LOAD ANY MPAC\n\t\tTCF\tENDFIND\t\t# REGISTERS, ETC.\n\nNEXTCORE\tCAF\tCOREINC\n\t\tADS\tLOCCTR\n\t\tCCS\tEXECTEM2\n\t\tTCF\tNOVAC3\n\t\tLXCH\tEXECTEM1\n\t\tCA\tQ\n\t\tTC\tBAILOUT1\t# NO CORE SETS AVAILABLE.\n\t\tOCT\t1202\n# Page 1108\n# THE FOLLOWING ROUTINE SWAPS CORE SET 0 WITH THAT WHOSE RELATIVE ADDRESS IS IN NEWJOB.\n\n -2\t\tLXCH\tLOC\n -1\t\tCAE\tBANKSET\t\t# BANKSET, NOT BBANK, HAS RIGHT CONTENTS.\nCHANJOB\t\tINHINT\n\t\tEXTEND\n\t\tROR\tSUPERBNK\t# PICK UP CURRENT SBANK FOR BBCON\n\t\tXCH\tL\t\t# LOC IN A AND BBCON IN L.\n +4\t\tINDEX\tNEWJOB\t\t# SWAP LOC AND BANKSET.\n\t\tDXCH\tLOC\n\t\tDXCH\tLOC\n\n\t\tCAE\tBANKSET\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# SET SBANK FOR NEW JOB.\n\t\tDXCH\tMPAC\t\t# SWAP MULTI-PURPOSE ACCUMULATOR AREAS.\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC \t+2\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tMPAC \t+2\n\t\tDXCH\tMPAC\t+2\n\t\tDXCH\tMPAC \t+4\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tMPAC \t+4\n\t\tDXCH\tMPAC \t+4\n\t\tDXCH\tMPAC \t+6\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tMPAC \t+6\n\t\tDXCH\tMPAC \t+6\n\n\t\tCAF\tZERO\n\t\tXCH\tOVFIND\t\t# MAKE PUSHLOC NEGATIVE IF OVFIND NZ.\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tCS\tPUSHLOC\n\t\tTS\tPUSHLOC\n\n\t\tDXCH\tPUSHLOC\n\t\tINDEX\tNEWJOB\n\t\tDXCH\tPUSHLOC\n\t\tDXCH\tPUSHLOC\t\t# SWAPS PUSHLOC AND PRIORITY.\n\t\tCAF\tLOW9\t\t# SET FIXLOC TO BASE OF VAC AREA.\n\t\tMASK\tPRIORITY\n\t\tTS\tFIXLOC\n\n\t\tCCS\tPUSHLOC\t\t# SET OVERFLOW INDICATOR ACCORDING TO\n\t\tCAF\tZERO\n\t\tTCF\tENDPRCHG -1\n\n# Page 1109\n\t\tCS\tPUSHLOC\n\t\tTS\tPUSHLOC\n\t\tCAF\tONE\n\t\tXCH\tOVFIND\n\t\tTS\tNEWJOB\n\nENDPRCHG\tRELINT\n\t\tDXCH\tLOC\t\t# BASIC JOBS HAVE POSITIVE ADDRESSES, SO\n\t\tEXTEND\t\t\t# DISPATCH WITH A DTCB.\n\t\tBZMF\t+2\t\t# IF INTERPRETIVE, SET UP EBANK, ETC.\n\t\tDTCB\n# Page 1110\n\t\tCOM\t\t\t# EPILOGUE TO JOB CHANGE FOR INTERPRETIVE\n\t\tAD\tONE\n\t\tTS\tLOC\t\t# RESUME\n\t\tTCF\tINTRSM\n\n# COMPLETE JOBSLEEP PREPARATIONS.\n\nJOBSLP1\t\tINHINT\n\t\tCS\tPRIORITY\t# NNZ PRIORITY SHOWS JOB ASLEEP.\n\t\tTS\tPRIORITY\n\t\tCAF\tLOW7\n\t\tMASK\tBBANK\n\t\tEXTEND\n\t\tROR\tSUPERBNK\t# SAVE OLD SUPERBANK VALUE.\n\t\tTS\tBANKSET\n\t\tCS\tZERO\nJOBSLP2\t\tTS\tBUF \t+1\t# HOLDS -- HIGHEST PRIORITY.\n\t\tTCF\tEJSCAN\t\t# SCAN FOR HIGHEST PRIORITY ALA ENDOFJOB.\n\nNUCHANG2\tINHINT\t\t\t# QUICK... DON'T LET NEWJOB CHANGE TO +0.\n\t\tCCS\tNEWJOB\n\t\tTCF\t+3\t\t# NEWJOB STILL PNZ\n\t\tRELINT\t\t\t# NEW JOB HAS CHANGED TO +0.  WAKE UP JOB\n\t\tTCF\tADVAN \t+2\t# VIA NUDIRECT.  (VERY RARE CASE.)\n\n\t\tCAF\tTWO\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# TURN ON ACTIVITY LIGHT\n\t\tDXCH\tLOC\t\t# AND SAVE ADDRESS INFO FOR BENEFIT OF\n\t\tTCF\tCHANJOB +4\t# \tPOSSIBLE SLEEPINT JOB.\n\n# Page 1111\n# TO WAKE UP A JOB, EACH CORE SET IS FOUND TO LOCATE ALL JOBS WHICH ARE ASLEEP.  IF THE FCADR IN THE\n# LOC REGISTER OF ANY SUCH JOB MATCHES THAT SUPPLIED BY THE CALLER, THAT JOB IS AWAKENED.  IF NO JOB IS FOUND,\n# LOCCTR IS SET TO -1 AND NO FURTHER ACTION TAKES PLACE.\n\nJOBWAKE2\tTS\tEXECTEM1\n\t\tCAF\tZERO\t\t# BEGIN CORE SET SCAN\n\t\tTS\tLOCCTR\n\t\tCAF\tNO.CORES\nJOBWAKE4\tTS\tEXECTEM2\n\t\tINDEX\tLOCCTR\n\t\tCCS\tPRIORITY\n\t\tTCF\tJOBWAKE3\t# ACTIVE JOB -- CHECK NEXT CORE SET.\nCOREINC\t\tDEC\t12\t\t# 12 REGISTERS PER CORE SET.\n\t\tTCF\tWAKETEST\t# SLEEPING JOB -- SEE IF CADR MATCHES.\n\nJOBWAKE3\tCAF\tCOREINC\n\t\tADS\tLOCCTR\n\t\tCCS\tEXECTEM2\n\t\tTCF\tJOBWAKE4\n\t\tCS\tONE\t\t# EXIT IF SLEEPIN JOB NOT FOUND.\n\t\tTS\tLOCCTR\n\t\tTCF\tENDFIND\n\nWAKETEST\tCS\tNEWLOC\n\t\tINDEX\tLOCCTR\n\t\tAD\tLOC\n\t\tEXTEND\n\t\tBZF\t+2\t\t# IF MATCH.\n\t\tTCF \tJOBWAKE3\t# EXAMINE NEXT CORE SET IF NO MATCH.\n\n\t\tINDEX\tLOCCTR\t\t# RE-COMPLEMENT PRIORITY TO SHOW JOB AWAKE\n\t\tCS\tPRIORITY\n\t\tTS\tNEWPRIO\n\t\tINDEX\tLOCCTR\n\t\tTS\tPRIORITY\n\n\t\tCS\tFBANKMSK\t# MAKE UP THE 2CADR OF THE WAKE ADDRESS\n\t\tMASK\tNEWLOC\t\t# USING THE CADR IN NEWLOC AND THE EBANK\n\t\tAD\t2K\t\t# HALF OF BBANK SAVED IN BANKSET.\n\t\tXCH\tNEWLOC\n\t\tMASK\tFBANKMSK\n\t\tINDEX\tLOCCTR\n\t\tAD\tBANKSET\n\t\tTS\tNEWLOC +1\n\n\t\tCCS\tLOCCTR\t\t# SPECIAL TREATMENT IF THIS JOB WAS\n\t\tTCF\tSETLOC\t\t# ALREADY IN THE RUN (0) POSITION.\n\t\tTCF\tSPECTEST\n\n# Page 1112\n# PRIORITY CHANGE.  CHANGE THE CONTENTS OF PRIORITY AND SCAN FOR THE JOB OF HIGHEST PRIORITY.\n\nPRIOCH2\t\tTS\tLOC\n\t\tCAF\tZERO\t\t# SET FLAG TO TELL ENDJOB SCANNER IF THIS\n\t\tTS\tBUF\t\t# JOB IS STILL HIGHEST PRIORITY.\n\t\tCAF\tLOW9\n\t\tMASK\tPRIORITY\n\t\tAD\tNEWPRIO\n\t\tTS\tPRIORITY\n\t\tCOM\n\t\tTCF\tJOBSLP2\t\t# AND TO EJSCAN.\n\n# Page 1113\n# RELEASE THIS CORE SET AND VAC AREA AND SCAN FOR THE JOB OF HIGHEST ACTIVE PRIORITY.\n\nENDJOB1\t\tINHINT\n\t\tCS\tZERO\n\t\tTS\tBUF \t+1\n\t\tXCH\tPRIORITY\n\t\tMASK\tLOW9\n\t\tTS\tL\n\n\t\tCS\tFAKEPRET\n\t\tAD\tL\n\n\t\tEXTEND\n\t\tBZMF\tEJSCAN\t\t# NOVAC ENDOFJOB\n\n\t\tCCS\tL\n\t\tINDEX\tA\n\t\tTS\t0\n\nEJSCAN\t\tCCS\tPRIORITY +12D\n\t\tTC\tEJ1\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +24D\t# EXAMINE EACH PRIORITY REGISTER TO FIND\n\t\tTC\tEJ1\t\t# THE JOB OF HIGHEST ACTIVE PRIORITY.\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +36D\n\t\tTC\tEJ1\n-CCSPR\t\t-CCS\tPRIORITY\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +48D\n\t\tTC\tEJ1\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +60D\n\t\tTC\tEJ1\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +72D\n\t\tTC\tEJ1\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n\t\tCCS\tPRIORITY +84D\n# Page 1114\n\t\tTC\tEJ1\n\t\tTC\tCCSHOLE\n\t\tTCF\t+1\n\n# Page 1115\n# EVALUATE THE RESULTS OF THE SCAN.\n\n\t\tCCS\tBUF \t+1\t# SEE IF THERE ARE ANY ACTIVE JOBS WAITING\n\t\tTC\tCCSHOLE\n\t\tTC\tCCSHOLE\n\n\t\tTCF\t+2\n\t\tTCF\tDUMMYJOB\n\t\tCCS\tBUF\t\t# BUF IS ZERO IS THIS IS A PRIOCHNG AND\n\t\tTCF\t+2\t\t# CHANGED PRIORITY IS STILL HIGHEST.\n\t\tTCF\tENDPRCHG -1\n\n\t\tINDEX\tA\t\t# OTHERWISE, SET NEWJOB TO THE RELATIVE\n\t\tCAF\t0 \t-1\t# ADDRESS OF THE NEW JOB'S CORE SET.\n\t\tAD\t-CCSPR\n\t\tTS\tNEWJOB\n\t\tTCF\tCHANJOB -2\n\nEJ1\t\tTS\tBUF \t+2\n\t\tAD\tBUF \t+1\t# - OLD HIGH PRIORITY.\n\t\tCCS\tA\n\t\tCS\tBUF \t+2\n\t\tTCF\tEJ2\t\t# NEW HIGH PRIORITY.\n\t\tNOOP\n\t\tINDEX\tQ\n\t\tTC\t2\t\t# PROCEED WITH SEARCH.\n\nEJ2\t\tTS\tBUF \t+1\n\t\tEXTEND\n\t\tQXCH\tBUF\t\t# FOR LOCATING CCS PRIORITY + X INSTR.\n\t\tINDEX\tBUF\n\t\tTC\t2\n\n# Page 1116\n# IDLING AND COMPUTER ACTIVITY (GREEN) LIGHT MAINTENANCE. THE IDLING ROUTINE IS NOT A JOB IN ITSELF,\n# BUT RATHER A SUBROUTINE OF THE EXECUTIVE.\n\n\t\tEBANK=\tSELFRET\t\t# SELF-CHECK STORAGE IN EBANK.\n\nDUMMYJOB\tCS\tZERO\t\t# SET NEWJOB TO -0 FOR IDLING.\n\t\tTS\tNEWJOB\n\t\tRELINT\n\t\tCS\tTWO\t\t# TURN OFF THE ACTIVITY LIGHT.\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\nADVAN\t\tCCS\tNEWJOB\t\t# IS THE NEWJOB ACTIVE?\n\t\tTCF\tNUCHANG2\t# YES... ONE REQUIRING A CHANGE JOB.\n\t\tCAF\tTWO\t\t# NEW JOB ALREADY IN POSITION FOR\n\t\tTCF\tNUDIRECT\t# EXECUTION\n\n\t\tCA\tSELFRET\n\t\tTS\tL\t\t# PUT RETURN ADDRESS IN L.\n\t\tCAF\tSELFBANK\n\t\tTCF\tSUPDXCHZ +1\t# AND DISPATCH JOB.\n\n\t\tEBANK=\tSELFRET\nSELFBANK\tBBCON\tSELFCHK\n\nNUDIRECT\tEXTEND\t\t\t# TURN THE GREEN LIGHT BACK ON.\n\t\tWOR\tDSALMOUT\n\t\tDXCH\tLOC\t\t# JOBS STARTED IN THIS FASHION MUST BE\n\t\tTCF\tSUPDXCHZ\n\n\t\tBLOCK\t2\t\t# IN FIXED-FIXED SO OTHERS MAY USE.\n\n\t\tCOUNT*\t$$/EXEC\n\n# SUPDXCHZ -- ROUTINE TO TRANSFER TO SUPEBANK.\n# CALLING SEQUENCE:\n#\t\tTCF\tSUPDXCHZ\t# WITH 2CADR OF DESIRED LOCATION IN A + L.\n\nSUPDXCHZ\tXCH\tL\t\t# BASIC.\n +1\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\t\tTS\tBBANK\n\t\tTC\tL\n\nNEG100\t\tOCT\t77677\n\n"
  },
  {
    "path": "Luminary099/EXTENDED_VERBS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tEXTENDED_VERBS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t262-300\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\t\t2009-06-05 RSB\tCorrected 5 typos.\n#\t\t2009-06-06 RSB\tEliminated an extraneous 3-instruction block\n#\t\t\t\tand added a missing instruction.\n#\t\t2009-06-07 RSB\tAdded a couple of \"SBANK=\" for compatibility\n#\t\t\t\twith yaYUL. Corrected a typo.\n#\t\t2010-12-31 JL\tFixed page number comments.\n#\t\t2011-01-06 JL\tAdded missing comment characters.\n#\t\t2011-05-08 JL\tFlagged SBANK= workarounds for future removal.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 262\n\t\tBANK\t7\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tEBANK=\tOGC\n\n\t\tCOUNT*\t$$/EXTVB\n\n# FAN-OUT\n\nGOEXTVB\t\tINDEX\tMPAC\t\t# VERB-40 IS IN MPAC\n\t\tTC\tLST2FAN\t\t# FAN AS BEFORE.\n\nLST2FAN\t\tTC\tVBZERO\t\t# VB40 ZERO (USED WITH NOUN 20 OR 72 ONLY)\n\t\tTC\tVBCOARK\t\t# VB41 COARSE ALIGN (USED WITH NOUN 20 OR\n\t\t\t\t\t#\t\t\t\t72 ONLY)\n\t\tTC\tIMUFINEK\t# VB42 FINE ALIGN IMU\n\t\tTC\tIMUATTCK\t# VB43 LOAD IMU ATTITUDE ERROR METERS.\n\t\tTC\tRRDESEND\t# VB44 TERMINATE CONTINUOUS DESIGNATE\n\t\tTC\tALM/END\t\t# VB45 SPARE\n\t\tTC\tALM/END\t\t# VB46 SPARE\n\t\tTC\tV47TXACT\t# VB47 AGS INITIALIZATION\n\t\tTC\tDAPDISP\t\t# VB48 LOAD A/P DATA\n\t\tTCF\tCREWMANU\t# VB49 START AUTOMATIC ATTITUDE MANEUVER\n\t\tTC\tGOLOADLV\t# VB50 PLEASE PERFORM\n\t\tTC\tALM/END\t\t# VB51 SPARE\n\t\tTC\tGOLOADLV\t# VB52 PLEASE MARK X -- RETICLE.\n\t\tTC\tGOLOADLV\t# VB53 PLEASE MARK Y -- RETICLE.\n\t\tTC\tGOLOADLV\t# VB54 PLEASE MARK X OR Y RETICLE\n\t\tTC\tALINTIME\t# VB55 ALIGN TIME\n\t\tTC\tTRMTRACK\t# VB56 TERMINATE TRACKING -- P20 + P25\n\t\tTC\tLRON\t\t# VB57 PERMIT LANDING RADAR UPDATES\n\t\tTC\tLROFF\t\t# VB58 INHIBIT LANDING RADAR UPDATES\n\t\tTC\tALM/END\t\t# VB59 SPARE\n\t\tTC\tLRPOS2K\t\t# VB60 COMMAND LR TO POSITION 2.\n\t\tTC\tDAPATTER\t# VB61 DISPLAY DAP ATTITUDE ERROR\n\t\tTC\tTOTATTER\t# VB62 DISPLAY TOTAL ATTITUDE ERROR\n\t\tTC\tR04\t\t# VB63 SAMPLE RADAR ONCE PER SECOND\n\t\tTC\tVB64\t\t# VB64 CALCULATE, DISPLAY S-BAND ANT ANGLES\n\t\tTC\tSNUFFOUT\t# VB65 DISABLE U,V JETS DURING DPS BURNS.\n\t\tTC\tATTACHED\t# VB66 ATTACHED\t  MOVE THIS TO OTHER STATE\n\t\tTC\tV67\t\t# VB67 W MATRIX MONITOR\n\t\tTC\tALM/END\t\t# VB68 SPARE\nVERB69\t\tTC\tVERB69\t\t# VB69 FORCE A HARDWARE RESTART\n\t\tTC\tV70UPDAT\t# VB70 UPDATE LIFTOFF TIME.\n\t\tTC\tV71UPDAT\t# VB71 UNIVERSAL UPDATE -- BLOCK ADDRESS.\n\t\tTC\tV72UPDAT\t# VB72 UNIVERSAL UPDATE -- SINGLE ADDRESS.\n\t\tTC\tV73UPDAT\t# VB73 UPDATE AGC TIME (OCTAL).\n\t\tTC\tDNEDUMP\t\t# VB74 INITIALIZE DOWN-TELEMETRY PROGRAM\n\t\t\t\t\t#\tFOR ERASABLE DUMP.\n\t\tTC\tOUTSNUFF\t# VB75 ENABLE U,V JETS DURING DPS BURNS.\n# Page 263\n\t\tTC\tMINIMP\t\t# VB76 MINIMUM IMPULSE MODE\n\t\tTC\tNOMINIMP\t# VB77 RATE COMMAND MODE\n\t\tTC\tR77\t\t# VB78 START LR SPURIOUS RETURN TEST\n\t\tTC\tR77END\t\t# VB79 TERMINATE LR SPURIOUS RETURN TEST\n\t\tTC\tLEMVEC\t\t# VB80 UPDATE LEM STATE VECTOR\n\t\tTC\tCSMVEC\t\t# VB81 UPDATE CSM STATE VECTOR\n\t\tTC\tV82PERF\t\t# VB82 REQUEST ORBIT PARAM DISPLAY (R30)\n\t\tTC\tV83PERF\t\t# VB83 REQUEST REND PARAM DISPLAY (R31)\n\t\tTC\tALM/END\t\t# VB84 SPARE\n\t\tTC\tVERB85\t\t# VB85 DISPLAY RR LOS AZ AND ELEV\n\t\tTC\tALM/END\t\t# VB86 SPARE\n\t\tTC\tALM/END\t\t# VB87 SPARE\n\t\tTC\tALM/END\t\t# VB88 SPARE\n\t\tTC\tV89PERF\t\t# VB89 ALIGN XORZ LEM AXIS ALONG LOS (R63)\n\t\tTC\tV90PERF\t\t# VB90 OUT OF PLANE RENDEZVOUS DISPLAY\n\t\tTC\tGOSHOSUM\t# VB91 DISPLAY BANK SUM.\n\t\tTC\tSYSTEST\t\t# VB92 OPERAT IMU PERFORMANCE TEST.\n\t\tTC\tWMATRXNG\t# VB93 CLEAR RENDWFLG\n\t\tTC\tALM/END\t\t# VB94 SPARE\n\t\tTC\tUPDATOFF\t# VB95 NO STATE VECTOR UPDATE ALLOWED\n\t\tTC\tVERB96\t\t# VB96 INTERRUPT INTEGRATION AND GO TO P00\n\t\tTC\tGOLOADLV\t# VB97 PLEASE VERIFY ENGINE FAILURE\n\t\tTC\tALM/END\t\t# VB98 SPARE\n\t\tTC\tGOLOADLV\t# VB99 PLEASE ENABLE ENGINE\n\n# END OF EXTENDED VERB FAN\n\nTESTXACT\tCCS\tEXTVBACT\t# ARE EXTENDED VERBS BUSY\n\t\tTC\tALM/END\t\t# YES, TURN ON OPERATOR LIGHT\n\t\tCA\tFLAGWRD4\t# ARE PRIORITY DISPLAYS USING DSKY\n\t\tMASK\tOC24100\n\t\tCCS\tA\n\t\tTC\tALM/END\t\t# YES\n\t\tCAF\tOCT24\t\t# SET BITS 3 AND 5\nSETXTACT\tTS\tEXTVBACT\t# NO.  SET FLAG TO SHOW EXT VERB DISPLAY\n\t\t\t\t\t# SYSTEM BUSY\n\n\t\tCA\tQ\n\t\tTS\tMPAC +1\n\n\t\tCS\tTWO\t\t# BLANK EVERYTHING EXCEPT MM AND VERB\n\t\tTC\tNVSUB\n\t\tTC\t+1\n\t\tTC\tMPAC +1\n\nXACTALM\t\tTC\tFALTON\t\t# TURN ON OPERATOR ERROR LIGHT.\n\t\tTC\tENDEXT\t\t# RELEASE MARK AND EXT. VERB DISPLAY SYS.\n\nTERMEXTV \tEQUALS \tENDEXT\n# Page 264\nENDEXTVB\tEQUALS\tENDEXT\n\nXACT0\t\tCAF\tZERO\t\t# RELEASE MARK AND EXT. VERB DISPLAY SYS.\n\t\tTC\tSETXTACT\n\nALM/END\t\tTC\tFALTON\t\t# TURN ON OPERATOR ERROR LIGHT\nGOPIN\t\tTC\tPOSTJUMP\n\t\tCADR\tPINBRNCH\n\nCHKPOOH\t\tCA\tMODREG\t\t# CHECK FOR P00 OR P00-.\n\t\tEXTEND\n\t\tBZF\tTCQ\n\t\tTC\tALM/END\n\nOC24100\t\tOCT\t24100\n\n# Page 265\n# VBZERO\tVERB 40\t\tDESCRIPTION\n#\n#\t1. \tREQUIRE NOUN 20 (ICDU ANGLES) OR NOUN 72 (RCDU ANGLES).\n#\t2.\tFOR N20, CHECK IMUCADR IN AN EFFORT TO AVOID A 1210 RESTART.\n#\t\tFOR N72, CHECK IF EITHER RADAR IS IN USE.\n#\t3.\tEXECUTE THE CDU ZERO.\n#\t4.\tSTALL UNTILL THE ZERO IS DONE.\n#\t5.\tDON'T DIFFERENTIATE BETWEEN A BAD OR GOOD RETURN.\n#\t6.\tEXIT, RE-ESTABLISHING THE INTERRUPTED DISPLAY (IF ANY).\n\nVBZERO\t\tTC\tOP/INERT\n\t\tTC\tIMUZEROK\t# RETURN HERE IF NOUN = ICDU(20)\n\t\tTC\tRRZEROK\t\t# RETURN HERE IF NOUN = RCDU(72)\nIMUZEROK\tTC\tCKMODCAD\n\t\tTC\tBANKCALL\t# KEYBOARD REQ FOR ISS CDUZERO\n\t\tCADR\tIMUZERO\n\n\t\tTC\tBANKCALL\t# STALL\n\t\tCADR\tIMUSTALL\n\t\tTC\t+1\n\n\t\tTC\tGOPIN\t\t# IMUZERO\n\nRRZEROK\t\tTC\tRDRUSECK\n\t\tTC\tBANKCALL\n\t\tCADR\tRRZERO\n\nRWAITK\t\tTC\tBANKCALL\n\t\tCADR\tRADSTALL\n\t\tTCF\t+1\n\t\tTC\tGOPIN\t\t# RRZERO\n\n# LRPOS2K\tVERB 60\t\t\tDESCRIPTION\n#\tCOMMAND LANDING RADAR TO POSITION 2\n#\n#\t1.\tEXIT WITH OP ERROR IF SOMEONE IS USING EITHER RADAR.\n#\t2.\tALARM WITH CODE 523 IF POS 2 IS NOT INDICATED WITHIN\n#\t\tTHE PRESCRIBED TIME.\n#\t3.\tRE-ESTABLISH THE DISPLAYS.\n\nLRPOS2K\t\tTC\tRDRUSECK\n\t\tTC\tBANKCALL\t# COMMAND LR TO POSITION 2\n\t\tCADR\tLRPOS2\n\t\tTC\tBANKCALL\n\t\tCADR\tRADSTALL\n\t\tTC\tLRP2ALM\n\t\tTC\tGOPIN\n\nLRP2ALM\t\tTC\tALARM\n\t\tOCT\t523\n\t\tTC\tGOPIN\n# Page 266\n\n# V61\tVERB 61, DISPLAY DAP ATTITUDE ERRORS ON FDAI ATTITUDE ERROR NEEDLES.\n\nDAPATTER\tTC\tDOWNFLAG\n\t\tADRES\tNEEDLFLG\n\t\tTC\tGOPIN\n\n# V62\tVERB 62, DISPLAY TOTAL ATTITUDE ERRORS ON FDAI ATTITUDE ERROR NEEDLES.\n\nTOTATTER\tTC\tUPFLAG\n\t\tADRES\tNEEDLFLG\n\t\tTC\tGOPIN\n\n# Page 267\n# VBCOARK\tVERB 41\t\tDESCRIPTION\n#\tCOARSE ALIGN IMU OR RADAR\n#\n#\t1.\tREQUIRE NOUN 20 OR NOUN 72 OR TURN ON OPERATOR ERROR.\n#\t2.\tREQUIRE EXT VERB DISPLAY SYS AVAILABLE OR TURN ON OPERATOR ERROR LIGHT AND GO TO PINBRNCH.\n#\t\t\t\tCASE 1, NOUN 20 (ICDU ANGLES)\n#\t3.\tSET EXT VERB DISPLAY ACTIVE FLAG.\n#\t4.\tDISPLAY FLASHING V25,N22 (LOAD NEW ICDU ANGLES).\n#\t\tRESPONSES\n#\t\tA.\tTERMINATE\n#\t\t\t1.\tRELEASE EXT VERB DISPLAY SYSTEM\n#\t\tB.\tPROCEED\n#\t\t\t1.\tCOARSE ALIGN TO THE EXISTING THETAD'S (ICORK2).\n#\t\tC.\tENTER\n#\t\t\t1.\tCOARSE ALIGN TO THE LOADED THETAD'S (ICORK2).\n# ICORK2\n#\t1.\tRE-DISPLAY VERB 41.\n#\t2.\tEXECUTE IMUCCARS (IMU COARSE ALIGN).\n#\t3.\tEXECUTE IMUSTALL (ALLOW TIME FOR DATA TRANSFER).\n#\t4.\tRELEASE EXT VERB DISPLAY SYSTEM.\n#\t\t\t\tCASE 2 NOUN 72 (RCDU ANGLES)\n#\t\tEXIT WITH OP ERROR IF SOMEONE IS USING EITHER RADAD.\n#\t5.\tDISPLAY FLASHING V24,N73 (LOAD NEW RR TRUNION ANGLE AND NEW SHAFT ANGLE).\n#\t\tRESPONSES\n#\t\tA.\tTERMINATE\n#\t\t\t1.\tRELEASE EXT VERB DISPLAY SYS.\n#\t\tB.\tPROCEED OR ENTER\n#\t\t\t1.\tEXECUTE AURLOKON (ASK OPERATOR FOR LOCK-ON REQUIREMENTS).\n#\t\t\t2.\tRE-DISPLAY VERB 41.\n#\t\t\t3.\tSCHEDULE RRDESK2 WITH PRIORITY 20.\n#\t\t\t4.\tRELEASE EXT VERB DISPLAY SYS.\n# AURLOKON\n#\t1.\tFLASH V04 N12 R1 = 00006 R2 = 00002\n#\t\tRESPONSES\n#\t\tA.\tTERMINATE\n#\t\tB.\tPROCEED\n#\t\t\t1.\tRESET LOCK-ON SWITCH\n#\t\t\t2.\tSET CONTINUOUS DESIGNATE FLAG\n#\t\t\t3.\tDISABLE R25\n#\t\tC.\tV22 E 1 E, R1 = 00001, PROCEED\n#\t\t\t1.\tSET LOCK-ON SWITCH\n\nVBCOARK\t\tTC\tOP/INERT\n\t\tTC\tIMUCOARK\t\t# RETURN HERE IF NOUN = ICDU (20)\n\t\tTC\tRRDESNBK\t\t# RETURN HERE IF NOUN = RCDU (72)\n\n# RETURNS TO L+1 IF IMU OR L+2 IF RR.\n\nOP/INERT\tCS\tOCT24\n\t\tAD\tNOUNREG\n\t\tEXTEND\n# Page 268\n\t\tBZF\tTCQ\t\t\t# IF = 20.\n\n\t\tAD\tRRIMUDIF\t\t# -52\n\t\tEXTEND\n\t\tBZF\tQ+1\n\n\t\tTC\tALM/END\t\t\t# ILLEGAL.\n\nRRIMUDIF\tDEC\t-52\t\t\t# THE IMU\nIMUCOARK\tTC\tCKMODCAD\n\t\tTC\tTESTXACT\t\t# COARSE ALIGN FROM KEYBOARD.\n\t\tCAF\tVNLODCDU\t\t# CALL FOR THETAD LOAD\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tTERMEXTV\n\t\tTCF\t+1\n\nICORK2\t\tCAF\tIMUCOARV\t\t# RE-DISPLAY COARSE ALIGN VERB.\n\t\tTC\tBANKCALL\n\t\tCADR\tEXDSPRET\n\n\t\tTC\tBANKCALL\t\t# CALL MODE SWITCHING PROG\n\t\tCADR\tIMUCOARS\n\n\t\tTC\tBANKCALL\t\t# STALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tENDEXTVB\n\t\tTC\tENDEXTVB\n\nVNLODCDU\tVN\t2522\nIMUCOARV\tVN\t4100\n\n# Page 269\n# DESIGNATE TO DESIRED GIMBAL ANGLES.\n\nRRDESNBK\tTC\tRDRUSECK\n\t\tTC\tTESTXACT\n\t\tCA\tRNDVZBIT\t\t# IS P20 RUNNING?\n\t\tMASK\tFLAGWRD0\n\t\tCCS\tA\n\t\tTCF\tXACTALM\t\t\t# OPERADOR ERROR IF IN P20\n\t\tCS\tOCT41000\t\t# TERMINATE PRESENT DESIGNATION\n\t\tINHINT\t\t\t\t# RELINT DONE IN GOXDSPF\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\n\n\t\tCAF\tVNLDRCDU\t\t# ASK FOR GIMBAL ANGLES.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tTERMEXTV\n\t\tTCF\t-4\t\t\t# V33\n\n\t\tTC\tBANKCALL\t\t# ASK OP FOR LOCK ON REQUIREMENTS.\n\t\tCADR\tAURLOKON\n\n\t\tCAF\tOPTCOARV\t\t# RE-DISPLAY OUR OWN VERB\n\t\tTC\tBANKCALL\n\t\tCADR\tEXDSPRET\n\n\t\tCAF\tPRIO20\n\t\tTC\tFINDVAC\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tRRDESK2\n\n\t\tTCF\tTERMEXTV\t\t# FREES DISPLAY\n\nVNLDRCDU\tVN\t2473\nOPTCOARV\tEQUALS\tIMUCOARV\t\t# DIFFERENT NOUNS.\n\nRRDESK2\t\tTC\tBANKCALL\n\t\tCADR\tRRDESNB\n\n\t\tTC\t+1\t\t\t# DUMMY NEEDED SINCE DESRETRN DOES INCR\n\t\tCA\tPRIORITY\n\t\tMASK\tLOW9\n\t\tCCS\tA\n\t\tINDEX\tA\n\t\tTS\tA\t\t\t# RELEASE THIS JOBS VAC AREA.\n\t\tCOM\t\t\t\t# INSURE ENDOFJOB DOES A NOVAC END (BZMF).\n\t\tADS\tPRIORITY\n\t\tTC\tBANKCALL\t\t# WAIT FOR COMPLETION OF DESIGNATE\n\t\tCADR\tRADSTALL\n# Page 270\n\t\tTC\t+2\t\t\t# BADEND-NO LOCKON OR OUT OF LIMITS\n\t\tTC\tENDOFJOB\t\t# GOODEND-LOCKON ACHIEVED\n\t\tTC\tALARM\n\t\tOCT\t503\t\t\t# TURN ON ALARM LIGHT -503 DESIGNATE FAIL\n\n\t\tTC\tENDOFJOB\n\nRRDESEND\tCCS\tRADMODES\t\t# TERMINATE CONTINOUS DESIGNATE ONLY\n\t\tTCF\tGOPIN\n\t\tTCF\tGOPIN\n\t\tTCF\t+1\n\t\tCS\tOCT41000\t\t# BEGDES GOES TO ENDRADAR\n\t\tINHINT\t\t\t\t# RELINT DONE IN DOWNFLAG\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\n\t\tTC\tCLRADMOD\n\t\tCAF\t1SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tTC\tDOWNFLAG\t\t# ENABLE R25 GIMBAL MONITOR\n\t\tADRES\tNORRMON\n\t\tTCF\tGOPIN\nOCT41000\tOCT\t41000\t\t\t# CONTINUOUS DESIGNATE - DESIGNATE\n\n# Page 271\n\t\tBANK\t23\n\t\tSETLOC\tEXTVB1\n\t\tBANK\n\t\tCOUNT*\t$$/EXTVB\n\nAURLOKON\tTC\tMAKECADR\n\t\tTS\tDESRET\n\t\tCAF\tTWO\n\t\tTS\tOPTIONX +1\n\t\tCAF\tSIX\t\t\t# OPTION CODE FOR V04N12\n\t\tTS\tOPTIONX\n\n -5\t\tCAF\tV04N1272\n\t\tTC\tBANKCALL\t\t# R2\t00001\tLOCK-ON\n\t\tCADR\tGOMARKFR\n\t\tTCF\tENDEXT\t\t\t# V34\n\t\tTCF\t+5\t\t\t# V33\n\t\tTCF\t-5\t\t\t# V32\n\t\tCAF\tBIT3\n\t\tTC\tBLANKET\n\t\tTC\tENDOFJOB\n\n +5\t\tCA\tOPTIONX +1\n\t\tMASK\tBIT2\n\t\tCCS\tA\n\t\tTCF\tNOLOKON\n\t\tTC\tUPFLAG\n\t\tADRES\tLOKONSW\n\t\tTCF\tAURLKON1\n\nNOLOKON\t\tTC\tDOWNFLAG\t\t# IF NO LOCK-ON, SET BIT15 OF RADMADES TO\n\t\tADRES\tLOKONSW\t\t\t# INDICATE THAT CONTINUOUS DESIGNATION IS\n\t\tTC\tUPFLAG\t\t\t# WANTED (TO BE TERMINATED BY V44.)\n\t\tADRES\tCDESFLAG\n\t\tTC\tUPFLAG\t\t\t# SET NO RR ANGLE MONITOR FLAG.\n\t\tADRES\tNORRMON\t\t\t# DISABLE R25 RR GIMBAL MONITOR IN T4RUPT\nAURLKON1\tRELINT\n\t\tCA\tDESRET\n\t\tTCF\tBANKJUMP\n\nV04N1272\tVN\t412\n-LOKONFG\tOCT\t-20\n\n\t\tBANK\t43\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\t\tCOUNT*\t$$/EXTVB\n\nLRON\t\tTC\tUPFLAG\t\t# PERMIT INCORPORATION OF LR DATA      V57\n\n# Page 272\n\t\tADRES\tLRINH\n\t\tTCF\tGOPIN\n\nLROFF\t\tTC\tDOWNFLAG\t\t# INHIBIT INCORPORATION OF LR DATA\tV58\n\t\tADRES\tLRINH\n\t\tTCF\tGOPIN\n\n\t\tEBANK=\tOGC\n\n# Page 273\n\n# IMUFINEK\tVERB 42\t\tDESCRIPTION\n#\tFINE ALIGN IMU\n#\n#\t1.\tREQUIRE EXT VERB DISPLAY AVAILABLE AND SET BUSY FLAG OR TURN ON OPER ERROR AND GO TO PINBRNCH.\n#\t2.\tDISPLAY FLASHING V25,N93....LOAD DELTA GYRO ANGLES....\n#\t\tRESPONSES\n#\t\tA.\tTERMINATE\n#\t\t\t1.\tRELEASE EXT VERB DISPLAY SYSTEM.\n#\t\tB.\tPROCEED OR ENTER\n#\t\t\t1.\tRE-DISPLAY VERB 42\n#\t\t\t2.\tEXECUTE IMUFINE (IMU FIVE ALIGN MODE SWITCHING).\n#\t\t\t3.\tEXECUTE IMUSTALL (ALLOW FOR DATA TRANSFER)\n#\t\t\t\tA.\tFAILED\n#\t\t\t\t\t1. \tRELEASE EXT VERB DISPLAY SYSTEM.\n#\t\t\t\tB.\tGOOD\n#\t\t\t\t\t1.\tEXECUTE IMUPULSE (TORQUE IRIGS).\n#\t\t\t\t\t2.\tEXECUTE IMUSTALL AND RELEASE EXT VERB DISPLAY SYSTEM.\n\nIMUFINEK\tTC\tCKMODCAD\n\t\tTC\tTESTXACT\t\t# FINE ALIGN WITH GYRO TORQUING.\n\t\tCAF\tVNLODGYR\t\t# CALL FOR LOAD OF GYRO COMMANDS\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tTERMEXTV\n\t\tTC\t+1\t\t\t# PROCEED WITHOUT A LOAD\n\n\t\tCAF\tIMUFINEV\t\t# RE-DISPLAY OUR OWN VERB\n\t\tTC\tBANKCALL\n\t\tCADR\tEXDSPRET\n\n\t\tTC\tBANKCALL\t\t# CALL MODE SWITCH PROG\n\t\tCADR\tIMUFINE\n\n\t\tTC\tBANKCALL\t\t# HIBERNATION\n\t\tCADR\tIMUSTALL\n\t\tTC\tENDEXTVB\n\nFINEK2\t\tCAF\tLGYROBIN\t\t# PINBALL LEFT COMMANDS IN OGC REGISTERS\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\n\t\tTC\tBANKCALL\t\t# WAIT FOR PULSES TO GET OUT.\n\t\tCADR\tIMUSTALL\n\t\tTC\tENDEXTVB\n\t\tTC\tENDEXTVB\n\nLGYROBIN\tECADR\tOGC\nVNLODGYR\tVN\t2593\nIMUFINEV\tVN\t4200\n\n# GOLOADLV\tVERB 50\t\tDESCRIPTION\n#\tAND OTHER PLEASE\n# Page 274\n#\tDO SOMETHING VERBS\n#\n# PLEASE PERFORM, MARK, CALIBRATE, ETC.\n#\n#\t1.\tPRESSING ENTER ON DSKY INDICATES REQUESTED ACTION HAS BEEN PERFORMED, AND THE PROGRAM DOES THE\n#\t\tSAME RECALL AS A COMPLETED LOAD.\n#\t2.\tTHE EXECUTION OF A VERB 33 (PROCEED WITHOUT DATA) INDICATES THE REQUESTED ACTION IS NOT DESIRED.\n\n\t\tSBANK=\tPINSUPER\t# FOR LOADLV1 AND SHOWSUM CADR'S\n\nGOLOADLV\tTC\tFLASHOFF\n\n\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\t\tTC\tPOSTJUMP\n\t\tCADR\tLOADLV1\n\n# VERB 47 -- AGS INITIALIZATION -- R47.\n#\n# SEE LOG SECTION AGS INITIALIZATION FOR OTHER PERTINENT REMARKS.\n\nV47TXACT\tTC\tTESTXACT\t# NO OTHER EXTVERB.\n\t\tCAF\tPRIO4\n\t\tTC\tFINDVAC\n## [WORKAROUND] RSB 2009\n\t\tSBANK=\tLOWSUPER\n## [WORKAROUND]\n\t\tEBANK=\tAGSBUFF\n\t\t2CADR\tAGSINIT\n\n\t\tTC\tENDOFJOB\n\nCKMODCAD\tCA \tMODECADR\n\t\tEXTEND\n\t\tBZF\tTCQ\n\t\tTC\tALM/END\t\t# SOMEBODY IS USING MODECADR SO EXIT\n\n# Page 275\n# ALINTIME\tVERB 55\t\tDESCRIPTION\n#\tREQUIRE P00 OR P00-.\n#\n#\t1.\tSET EXT VERB DISPLAY BUSY FLAG.\n#\t2.\tDISPLAY FLASHING V25,N24 (LOAD DELTA TIME FOR AGC CLOCK.\n#\t3.\tREQUIRE EXECUTION OF VERB 23.\n#\t4.\tADD DELTA TIME, RECEIVED FROM INPUT REGISTER, TO THE COMPUTER TIME.\n#\t5.\tRELEASE EXT VERB DISPLAY SYSTEM\n\nALINTIME\tTC\tTESTXACT\n\t\tTC\tPOSTJUMP\t# NO ROOM IN 43\n\t\tCADR\tR33\n\n\t\tBANK\t42\n\t\tSETLOC\tSBAND\n\t\tBANK\n\t\tCOUNT*\t$$/R33\n\nR33\t\tCAF\tPRIO7\n\t\tTC\tPRIOCHNG\n\t\tCAF\tVNLODDT\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tENDEXT\t\t# TERMINATE\n\t\tTC\tENDEXT\t\t# PROCEED\n\t\tCS\tDEC23\t\t# DATA IN OR RESEQUENCE (UNLIKELY)\n\t\tAD\tMPAC\t\t# RECALL LEFT VERB IN MPAC\n\t\tEXTEND\n\t\tBZF\tUPDATIME\t# GO AHEAD WITH UPDATE ONLY IF RECALL\n\t\tTC\tENDEXT\t\t#\tWITH V23 (DATA IN).\n\nUPDATIME\tINHINT\t\t\t# DELTA TIME IS IN DSPTEM1, +1.\n\t\tCAF\tZERO\n\t\tTS\tMPAC +2\t\t# NEEDED FOR TP AGREE\n\t\tTS\tL\t\t# ZERO T1 + 2 WHILE ALIGNING.\n\t\tDXCH\tTIME2\n\t\tDXCH\tMPAC\n\t\tDXCH\tDSPTEM2 +1\t# INCREMENT\n\t\tDAS\tMPAC\n\n\t\tTC\tTPAGREE\t\t# FORCE SIGN AGREEMENT.\n\t\tDXCH\tMPAC\t\t# NEW CLOCK.\n\t\tDAS\tTIME2\n\t\tRELINT\nUPDTMEND\tTC\tENDEXT\n\nDEC23\t\tDEC\t23\t\t# V 23\n\nVNLODDT\t\tVN\t2524\t\t# V25N24 FOR LOAD DELTA TIME\n\n# Page 276\n# SET UP FOR RADAR SAMPLING.\n\n\t\tBANK\t42\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tEBANK=\tRSTACK\n\n\t\tCOUNT*\t$$/R0477\n\nR77\t\tTC\tRDRUSECK\t# TRY TO AVOID THE 1210.\n\t\tCA\tFLAGWRD3\t# IS R04 RUNNING?\n\t\tMASK\tR04FLBIT\n\t\tCCS\tA\n\t\tTC\tALM/END\t\t# YES.\n\t\tTC\tUPFLAG\n\t\tADRES\tR77FLAG\n\t\tTCF\tR04Z\n\nR04\t\tTC\tRDRUSECK\t# TRY TO AVOID THE 1210.\n\t\tTC\tTESTXACT\n\t\tTC\tUPFLAG\n\t\tADRES\tR04FLAG\t\t# SET R04FLAG FOR ALARMS\n\nR04Z\t\tCAF\tEBANK4\n\t\tTS\tEBANK\n\t\tCAF\t1SEC+1\t\t# SAMPLE ONCE PER SECOND\n\t\tTS\tRSAMPDT\n\t\tCAF\tZERO\n\t\tTS\tRTSTLOC\n\t\tTS\tRFAILCNT\t# ZERO BAD SAMPLE COUNTER\n\n\t\tINHINT\n\t\tCS\tLRPOSCAL\t# INITIALIZE\n\t\tMASK\tRADMODES\t#\tBIT 9\tLR RANGE LOW SCALE =0\n\t\tTS\tRADMODES\t#\tBIT 6\tLR POS 1 =0\n\t\tCAF\tLRPOSCAL\t#\tBIT 3\tRR RANGE LOW SCALE =0\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tADS\tRADMODES\n\t\tRELINT\n\n\t\tCS\tFLAGWRD3\t# CHECK R04FLAG\t\tR04 =1\t\tR77 =0\n\t\tMASK\tR04FLBIT\n\t\tCCS\tA\n\t\tTCF\tR04K\n\n\t\tCAF\tONE\t\t# INDICATES RENDEZVOUS DESIRED\n\t\tTS\tOPTIONX +1\nR04A\t\tCAF\tBIT3\t\t# OPTION CODE FOR V04N12\n\n# Page 277\n\t\tTS\tOPTIONX\n\t\tCAF\tV04N12X\n\t\tTC\tBANKCALL\t#\tR2\t00001\tRENDEZVOUS RADAR\n\t\tCADR\tGOMARKFR\t#\t\t00002\tLANDING RADAR\n\t\tTCF\tR04END\t\t# V34\n\t\tTCF\t+5\t\t# V33\n\t\tTCF\tR04A \t+2\t# R2\n\t\tCAF\tBIT3\n\t\tTC\tBLANKET\n\t\tTC\tENDOFJOB\n\n\t\tCA\tOPTIONX\t+1\t# SAVE DESIRED OPTION\tRR =1\tLR =2\n\t\tTS\tRTSTDEX\n\nR04X\t\tCAF\tSIX\t\t# RR OR LR DESIRED\n\t\tMASK\tRTSTDEX\n\t\tCCS\tA\n\t\tTCF\tR04L\t\t# LANDING RADAR\n\t\tTS\tRTSTBASE\t# FOR RR\tBASE =0, MAX =1\n\nR04B\t\tCAF\tBIT2\t\t# IS RR AUTO MODE DISCRETE PRESENT\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tEXTEND\n\t\tBZF\tR04C\t\t# YES\n\n\t\tCAF\t201R04\t\t# REQUEST SELECTION OF RR AUTO MODE\n\t\tTS\tDSPTEM1\n\t\tCAF\tV50N25X\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARK4\n\t\tTCF\tR04END\t\t# V34\n\t\tTCF\tR04B\t\t# V33\n\t\tTCF\t-7\t\t# E\n\nR04C\t\tCAF\tBIT14\t\t# ENABLE RR AUTO TRACKER\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tCAF\tTWO\n\t\tTS\tRTSTMAX\t\t# FOR SEQUENTIAL STORAGE\n\n\t\tTC\tWAITLIST\n## [WORKAROUND] RSB 2009\n\t\tSBANK=\tPINSUPER\n## [WORKAROUND]\n\t\tEBANK=\tRSTACK\n\t\t2CADR\tRADSAMP\n\n\t\tRELINT\n\n\t\tCS\tFLAGWRD3\t# CHECK R04FLAG\t\tR04 =1\t\tR77 =0\n\t\tMASK\tR04FLBIT\n# Page 278\n\t\tCCS\tA\n\t\tTCF\tGOPIN\t\t# R77\n\n\t\tCAF\tSIX\t\t# RR OR LR\n\t\tMASK\tRTSTDEX\n\t\tCCS\tA\n\t\tTCF\tR04LR\t\t# LR\n\nR04RR\t\tCAF\tV16N72\t\t# DISPLAY RR CDU ANGLES (1/SEC)\n\t\tTC\tBANKCALL\t#\tR1 + XXX.XX DEG\t\tTRUNNION\n\t\tCADR\tGOMARKF\t\t#\tR2 + XXX.XX DEG\t\tSHAFT\n\t\tTCF\tR04END\t\t# V34\tR3   BLANK\n\t\tTCF\t+2\t\t# V33\n\t\tTCF\tR04RR\t\t# V32\n\n\t\tCAF\tV16N78\t\t# DISPLAY RR RANGE AND RANGE RATE (1/SEC)\n\t\tTC\tBANKCALL\t#\tR1 +- XXX.XX NM\t\tRANGE\n\t\tCADR\tGOMARKF\t\t#\tR2 +- XXXXX. FPS\tRANGE RATE\n\t\tTCF\tR04END\t\t# V34\tR3    BLANK\n\t\tTCF\tR04Y\t\t# V33\n\t\tTCF\tR04RR\t\t# V32\n\nR04LR\t\tCAF\tV16N66\t\t# DISPLAY LR RANGE AND POSITON (1/SEC)\n\t\tTC\tBANKCALL\t#\tR1 +- XXXXX, FT\t\tLR RANGE\n\t\tCADR\tGOMARKF\t\t#\tR2 +  0000X. \t\tPOS. NO.\n\t\tTCF\tR04END\t\t# V34\tR3    BLANK\n\t\tTCF\t+2\t\t# V33\n\t\tTCF\tR04LR\t\t# V32\n\n\t\tCAF\tV16N67\t\t# DISPLAY LR VELX, VELY, VELZ (1/SEC)\n\t\tTC\tBANKCALL\t#\tR1 +- XXXXX. FPS\tLR V(X)\n\t\tCADR\tGOMARKF\t\t#\tR2 +- XXXXX. FPS\tLR V(Y)\n\t\tTCF\tR04END\t\t# V34\tR3 +- XXXXX. FPS \tLR V(Z)\n\t\tTCF\tR04Y\t\t# V33\n\t\tTCF\tR04LR\t\t# V32\n\nR04Y\t\tCAF\tZERO\t\t# TO TERMINATE SAMPLING.\n\t\tTS\tRSAMPDT\n\t\tCAF\t2SECS\t\t# WAIT FOR LAST RADARUP\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tCAF\t1SEC+1\t\t# SAMPLE ONCE PER SECOND\n\t\tTS\tRSAMPDT\n\t\tCAF\tZERO\t\t# FOR STORING RESULTS\n\t\tTS\tRTSTLOC\n\t\tCAF\tSIX\n\t\tMASK\tRTSTDEX\n\t\tCCS\tA\n\t\tCS\tONE\t\t# WAS LR\n\t\tAD\tTWO\t\t# WAS RR\n# Page 279\n\n\t\tTCF\tR04X -1\n\nR04K\t\tCAF\t250MS+1\t\t# SAMPLE 4 LR COMPONENTS PER SECOND.\n\t\tTS\tRSAMPDT\n\nR04L\t\tCAF\tTWO\n\t\tTS\tRTSTBASE\t# FOR LR\tBASE =2, MAX =3\n\t\tCAF\tSIX\n\t\tTCF\tR04C +4\nR04END\t\tCAF\tZERO\t\t# ZERO RSAMPDT\n\t\tTS\tRSAMPDT\t\t# TO TERMINATE SAMPLING\n\t\tCAF\tBIT8\t\t# WAIT 1.28 SECONDS FOR POSSIBLE\n\t\tTC\tBANKCALL\t# PENDING RUPT.\n\t\tCADR\tDELAYJOB\n\n\t\tINHINT\n\t\tCS\tBIT14\t\t# DISABLE RR AUTO TRACKER.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tR04FLAG\t\t# SIGNAL END OF R04.\n\n\t\tTC\tENDEXT\n\nR77END\t\tCAF\tEBANK4\t\t# TO TERMINATE SAMPLING\n\t\tTS\tEBANK\n\t\tCAF\tZERO\n\t\tTS\tRSAMPDT\n\t\tCAF\tBIT6\t\t# WAIT 320 MS FOR POSSIBLE\n\t\tTC\tBANKCALL\t# PENDING RUPT.\n\t\tCADR\tDELAYJOB\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tR77FLAG\n\t\tTCF\tGOPIN\n\nV16N72\t\tVN\t1672\nV16N78\t\tVN\t1678\nV16N66\t\tVN\t1666\nV16N67\t\tVN\t1667\nV04N12X\t\tVN\t412\nV50N25X\t\tVN\t5025\n201R04\t\tOCT\t00201\n1SEC+1\t\tDEC\t101\n250MS+1\t\tEQUALS\tCALLCODE\nLRPOSCAL\tOCT\t444\n\n# Page 280\nRDRUSECK\tCS\tFLAGWRD3\t# IS R29 ON?\n\t\tMASK\tNR29FBIT\n\t\tCCS\tA\n\t\tTC\tALM/END\t\t# YES\n\t\tCA\tFLAGWRD5\t# IS R77 RUNNING?\n\t\tMASK\tR77FLBIT\n\t\tCCS\tA\n\t\tTC\tALM/END\t\t# YES.\n\t\tCS\tFLAGWRD7\t# IS SERVICER RUNNING AND HENCE POSSIBLY\n\t\tMASK\tV37FLBIT\t# R12 USING THE LR?\n\t\tCCS\tA\n\t\tTCF\tCHECKRR\t\t# NO\n\t\tCS\tFLGWRD11\t# YES, IS R12 ON?\n\t\tMASK\tLRBYBIT\n\t\tCCS\tA\n\t\tTC\tALM/END\t\t# YES\nCHECKRR\t\tCS\tFLAGWRD1\t# IS THE TRACK FLAG SET AND HENCE POSSIBLY\n\t\tMASK\tTRACKBIT\t# P20 USING THE RR?\n\t\tCCS\tA\n\t\tTCF\tCHECKP22\t# NO, CHECK FOR P22.\n\nCKRNDBIT\tCA\tFLAGWRD0\t# YES, BUT IS IT P25?\n\t\tMASK\tRNDVZBIT\n\t\tCCS\tA\n\t\tTC\tALM/END\nCHECKP22\tCS\tMODREG\n\t\tAD\tDEC22\n\t\tEXTEND\n\t\tBZF\tALM/END\n\t\tTC\tQ\n\nDEC22\t\tDEC\t22\n\n\t\tCOUNT* \t$$/EXTVB\n\nVB64\t\tTC\tCHKPOOH\t\t# DEMAND PROGRAM 00.\n\t\tTC\tTESTXACT\t# IF DISPLAY SYS. NOT BUSY MAKE IT BUSY.\n\t\tCAF\tPRIO4\n\t\tTC\tFINDVAC\n\t\tEBANK=\tALPHASB\n\t\t2CADR\tSBANDANT\t# CALC., DISPLAY S-BAND ANTENNA ANGLES.\n\n\t\tTC\tENDOFJOB\n\n# Page 281\n# IMUATTCK\tVERB 43\t\tDESCRIPTION\n#\tLOAD IMU ATTITUDE ERROR METERS\n#\n#\t1.\tREQUIRE P00 OR FRESH START.\n#\t2.\tREQUIRE COARSE ALIGN ENABLE AND ZERO ICDU BITS OFF.\n#\t3.\tREQUIRE THAT NEEDLES BE OFF.\n#\t4.\tREQUEST LOAD OF N22 (VALUES TO BE DISPLAYED).\n#\t5.\tON PROCEED OR ENTER RE-DISPLAY V43 AND SEND PULSES.\n\nIMUATTCK\tTC\tCHKPOOH\t\t# VB 76 -- LOAD IMU ATT. ERROR METERS\n\n\t\tCAF\tBITS4&5\t\t# SEE IF COARSE ALIGN ENABLE AND ZERO IMU\n\t\tEXTEND\t\t\t# CDUS BITS ARE ON\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTCF\tALM/END\t\t# NOT ALLOWED IF IMU COARSE OR IMU ZERO ON\n\n\t\tCAF\tBIT13-14\t# BOTH BITS 13 AND 14 MUST BE 1\n\t\tEXTEND\t\t\t# INDICATING THE MODE SELECTED IS OFF.\n\t\tRXOR\tCHAN31\n\t\tMASK\tBIT13-14\n\t\tEXTEND\n\t\tBZF\t+2\t\t# NEEDLES IS OFF.\n\t\tTCF\tALM/END\t\t# EXIT.  NEEDLES IS ON.\n\n\t\tTC\tTESTXACT\n\n\t\tCAF\tVNLODCDU\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tENDEXT\t\t# V34\n\t\tTC\t+1\n\t\tCAF\tV43K\t\t# REDISPLAY OUR VERB.\n\t\tTC\tBANKCALL\n\t\tCADR\tEXDSPRET\n\t\tCAF\tBIT6\n\t\tEXTEND\n\t\tWOR\tCHAN12\t\t# ENABLE ERROR COUNTERS.\n\t\tCAF\tTWO\n\t\tTC\tWAITLIST\t# PUT OUT COMMANDS IN .32 SECONDS.\n\t\tEBANK=\tTHETAD\n\t\t2CADR\tATTCK2\n\n\t\tTCF\tENDEXT\n\n\t\tBANK\t42\n\t\tSETLOC\tPINBALL3\t# SOMETHING IN B42.\n\t\tBANK\n\n\t\tCOUNT*\t$$/EXTVB\n# Page 282\nATTCK2\t\tCAF\tTWO\t\t# PUT OUT COMMANDS.\n +1\t\tTS\tQ\t\t# CDU WILL LIMIT EXCESS DATA.\n\t\tINDEX\tA\n\t\tCA\tTHETAD\n\t\tEXTEND\n\t\tMP\tATTSCALE\n\t\tINDEX\tQ\n\t\tXCH\tCDUXCMD\n\t\tCCS\tQ\n\t\tTCF\tATTCK2 +1\n\n\t\tCAF\t13,14,15\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tTCF\tTASKOVER\t# LEAVE ERROR COUNTERS ENABLED.\n\nATTSCALE\tDEC\t0.1\n\n\t\tBANK\t7\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tCOUNT*\t$$/EXTVB\n\nV43K\t\tVN\t4300\n\n# V82PERF\tVERB82\t\tDESCRIPTION\n#\tREQUEST ORBIT PARAMETERS DISPLAY (R30)\n#\n#\t1.\tIF AVERAGE G IS OFF:\n#\t\t\tFLASH DISPLAY V04N06.  R2 INDICATES WHICH SHIP'S STATE VECTOR IS\n#\t\t\tTO BE UPDATED.  INITIAL CHOICE IS THIS SHIP (R2=1).  ASTRONAUT\n#\t\t\tCAN CHANGE TO OTHER SHIP BY V22EXE, WHERE X NOT EQ I.\n#\t\t\tSELECTED STATE VECTOR UPDATED BY THISPREC (OTHPREC).\n#\t\t\tCALLS SR30.1 (WHICH CALLS TFFCONMU + TFFRP/RA) TO CALCULATE\n#\t\t\tRPER (PERIGEE RADIUS), RAP0 (APOGEE RADIUS), HPER (PERIGEE\n#\t\t\tHEIGHT ABOVE LAUNCH PAD OR LUNAR LANDING SITE), HAPO (APOGEE\n#\t\t\tHEIGHT AS ABOVE), TPER (TIME TO PERIGEE), TFF (TIME TO\n#\t\t\tINTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE).\n#\t\t\tFLASH MONITOR V16N44 (HAPO, HPER, TFF).  TFF IS -59M59S IF IT WAS\n#\t\t\tNOT COMPUTABLE, OTHERWISE IT INCREMENTS ONCE PER SECOND.\n#\t\t\tASTRONAUT HAS OPTION TO MONITOR TPER BY KEYING IN N 32 E.\n#\t\t\tDISPLAY IS IN HMS, IS NEGATIVE (AS WAS TFF), AND INCREMENTS\n#\t\t\tONCE PER SECOND ONLY IF TFF DISPLAY WAS -59M59S.\n#\n#\t2.\tIF AVERAGE G IS ON:\n#\t\t\tCALLS SR30.1 APPROX EVERY TWO SECS.  STATE VECTOR IS ALWAYS\n#\t\t\tFOR THIS VEHICLE.  V82 DOES NOT DISTURB STATE VECTOR.  RESULTS\n#\t\t\tOF SR30.1 ARE RAPO, RPER, HAPO, HPER, TPER, TFF.\n#\t\t\tFLASH MONITOR V16N44 (HAPO, HPER, TFF).\n#\t\t\tIF MODE IS P11, THEN CALL DELRSPL SO ASTRONAUT CAN MONITOR\n#\t\t\tRESULTS BY N50E.  SPLASH COMPUTATION DONE ONCE PER TWO SECS.\n\n# Page 283\nV82PERF\t\tTC\tTESTXACT\n\n\t\tCAF\tPRIO7\t\t# LESS THAN LAMBERT.  R30,V82\n\t\tTC\tPRIOCHNG\n\t\tEXTEND\n\t\tDCA\tV82CON\n\t\tTC\tSUPDXCHZ\t# V82CALL IN DIFF SUPERBANK FROM V82PERF\n\n\t\tEBANK=\tHAPO\nV82CON\t\t2CADR\tV82CALL\n\n# VB83PERF\tVERB 83\t\tDESCRIPTION\n#\tREQUEST RENDEZVOUS PARAMETER DISPLAY (R31)\n#\n#\t1.\tSET EXT VERB DISPLAY BUSY FLAG.\n#\t2.\tSCHEDULE R31CALL WITH PRIORITY 5.\n#\t\tA.\tDISPLAY\n#\t\t\tR1\tRANGE\n#\t\t\tR2\tRANGE RATE\n#\t\t\tR3\tTHETA\n\nV83PERF\t\tTC\tTESTXACT\n\n\t\tCAF\tBIT2\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTSTRT\n\t\t2CADR\tR31CALL\n\n\t\tTC\tENDOFJOB\n\n# VERB 89\tDESCRIPTION\tRENDEZVOUS FINAL ATTITUDE ROUTINE (R63)\n#\n# CALLED BY VERB 89 ENTER DURING P00.  PRIO 10 IS USED.  CALCULATES AND\n# DISPLAYS FINAL FDAI BALL ANGLES TO POINT LM +X OR +Z AXIS AT CSM.\n#\n# 1. KEY IN V 89 E ONLY IF IN PROG 00.  IF NOT IN P00, OPERATOR ERROR AND\n# EXIT R63, OTHERWISE CONTINUE.\n#\n# 2. IF IN P00, DO IMU STATUS CHECK ROUTINE (R02BOTH).  IF IMU ON AND ITS\n# ORIENTATION KNOWN TO LGC,CONTINUE.\n#\n# 3. FLASH DISPLAY V 04 N 06.  R2 INDICATES WHICH SPACECRAFT AXIS IS TO\n# BE POINTED AT CSM.  INITIAL CHOICE IS PREFERRED (+Z) AXIS (R2=1).\n# ASTRONAUT CAN CHANGE TO (+X) AXIS (R2 NOT = 1) BY V 22 E 2 E.  CONTINUE\n# AFTER KEYING IN PROCEED.\n#\n# 4. BOTH VEHICLE STATE VECTORS UPDATED BY CONIC EQS.\n#\n# 5. HALF MAGNITUDE UNIT LOS VECTOR (IN STABLE MEMBER COORDINATES) AND\n# Page 284\n# HALF MAGNITUDE UNIT SPACECRAFT AXIS VECTOR (IN BODY COORDINATES)\n# PREPARED FOR VECPOINT.\n#\n# 6. GIMBAL ANGLES FROM VECPOINT TRANSFORMED INTO FDAI BALL ANGLES BY\n# BALLANGS.  FLASH DISPLAY V 06 N 18 AND AWAIT RESPONSE.\n#\n# 7. \tRECYCLE -- RETURN TO STEP 4.\n#    \tTERMINATE -- EXIT R63.\n#\tPROCEED -- RESET 3AXISFLG AND CALL R60LEM FOR ATTITUDE MANEUVER.\n\nV89PERF\t\tTC\tCHKPOOH\n\t\tTC\tTESTXACT\n\t\tCAF\tPRIO10\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRONE\n\t\t2CADR\tV89CALL\n\n\t\tTC\tENDOFJOB\n\n# V90PERF\tVERB 90\t\tDESCRIPTION\n#\tREQUEST RENDEZVOUS OUT-OF-PLANE DISPLAY (R36)\n#\n#\t1.\tSET EXT VERB DISPLAY BUSY FLAG.\n#\t2.\tSCHEDULE R36 CALL WITH PRIORITY 10\n#\t\tA.\tDISPLAY\n#\t\t\tTIME OF EVENT -- HOURS, MINUTES, SECONDS\n#\t\t\tY \tOUT-OF-PLANE POSITION -- NAUTICAL MILES\n#\t\t\tYDOT\tOUT-OF-PLANE VELOCITY -- FEET/SECOND\n#\t\t\tPSI\tANGLE BTW LINE OF SIGHT AND FORWARD\n#\t\t\t\tDIRECTION VECTOR IN HORIZONTAL PLANE -- DEGREES\n\nV90PERF\t\tTC\tTESTXACT\n\t\tCAF\tPRIO7\t\t# R36,V90\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRPASS36\n\t\t2CADR\tR36\n\n\t\tTCF\tENDOFJOB\n\n# MINIMP\tVERB 76\t\tDESCRIPTION\n#\tMINIMUM IMPULSE MODE\n#\n#\t1.\tSET MINIMUM IMPULSE RHO MODE FLAG TO 1.\n\nMINIMP\t\tINHINT\n\t\tCS\tDAPBOOLS\n\t\tMASK\tPULSES\t\t# PULSES = 1 INDICATES MIN IMP MODE\n\t\tADS\tDAPBOOLS\n\t\tTCF\tGOPIN\t\t# RETURN VIA PINBRNCH\n\n# NOMINIMP\tVERB 77\t\tDESCRIPTION\n#\tRATE COMMAND MODE\n\n# Page 285\n\n#\n#\t1.\tSET MINIMUM IMPULSE RHO MODE FLAG TO 0.  (ZERO INDICATES NOT MINIMUM IMPULSE MODE.).\n#\t2.\tMOVE CDUX, CDUY, CDUZ INTO CDUXD, CDUYD, CDUZD.\n\n\nNOMINIMP\tINHINT\n\t\tCS\tPULSES\n\t\tMASK\tDAPBOOLS\n\t\tTS\tDAPBOOLS\t# PULSES = NOT IN MINIMUM UMPULSE MODE\n\t\tTC\tIBNKCALL\n\t\tCADR\tZATTEROR\n\t\tTC\tGOPIN\n\n# Page 286\n# CREMANU\tVERB 49\t\tDESCRIPTION\n#\tSTART AUTOMATIC ATTITUDE MANEUVER\n#\n#\t1.\tREQUIRE PROGRAM 00 ACTIVE.\n#\t2.\tSET EXT VERB DISPLAY BUSY FLAG.\n#\t3.\tSCHEDULE R62DISP WITH PRIORITY 10.\n#\t4.\tRELEASE EXT VERB DISPLAY.\n#\n#\tR62DISP\n#\t1.\tDISPLAY FLASHING V06,N22.\n#\t\tRESPONSES\n#\t\tA.\tTERMINATE\n#\t\t\t1.\tGOTOPOOH\n#\t\tB.\tPROCEED\n#\t\t\t1.\tSET 3AXISFLG TO INDICATE MANEUVER IS SPECIFIED BY 3 AXIS.\n#\t\t\t2.\tEXECUTE R60LEM (ATTITUDE MANEUVER).\n#\t\tC.\tENTER\n#\t\t\t1.\tREPEAT FLASHING V06,N22.\n\nCREWMANU\tTC\tCHKPOOH\t\t# DEMAND P00\n\n\t\tTC\tTESTXACT\n\n\t\tCAF\tPRIO10\n\t\tTC\tFINDVAC\n\t\tEBANK=\tBCDU\n\t\t2CADR\tR62DISP\n\n\t\tTC\tENDOFJOB\n\n# Page 287\n# TRMTRACK\tVERB 56\t\tDESCRIPTION\n#\tTERMINATE TRACKING (P20 AND P25).\n#\n#\t1.\tKNOCK DOWN RENDEZVOUS, TRACK, AND UPDATE FLAGS.\n#\t2.\tREQUIRE P20 OR P25 NOT RUNNING ALONE OR GO TO GOGOPOOH (REQUEST PROGRAM 00).\n#\t3.\tSCHEDULE V56TOVAC WITH PRIORITY 30.\n#\n#\tV56TOVAC\n#\t1.\tEXECUTE INTSTALL (IF INTEGRATION IS RUNNING, STALL UNTIL IT IS FINISHED.).\n#\t2.\tZERO GROUP 2 TO HALT P20.\n#\t3.\tTRANSFER CONTROL TO GOPROG2 (SOFTWARE RESTART).\n\nTRMTRACK\tCA\tBITS9+7\t\t# IS REND OR P25 FLAG ON\n\t\tMASK\tFLAGWRD0\n\t\tEXTEND\n\t\tBZF\tGOPIN\t\t# NO\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tRNDVZFLG\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tP25FLAG\n\n\t\tTC\tDOWNFLAG\t# ENSURE SEARCH FLAG IS OFF\n\t\tADRES\tSRCHOPTN\n\n\t\tCA\tTRACKBIT\t# IS TRACK FLAG ON?\n\t\tMASK\tFLAGWRD1\n\t\tEXTEND\n\t\tBZF\tGOPIN\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tTRMTRAK1\n\nBITS9+7\t\tOCT\t500\n\n\t\tSETLOC\tSBAND\t\t# BANK 42\n\t\tBANK\n\n\t\tCOUNT*\t$$/EXTVB\n\nTRMTRAK1\tTC\tDOWNFLAG\n\t\tADRES\tUPDATFLG\t# UPDATE FLAG DOWN\n\t\tTC\tDOWNFLAG\n\t\tADRES\tTRACKFLG\t# TRACK FLAG DOWN\n\t\tTC\tDOWNFLAG\n\t\tADRES\tIMUSE\n\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tINTSTALL\t# DON'T INTERRUPT INTEGRATION\n# Page 288\n\t\tEXIT\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t2\t\t# KILL GROUP 2 TO HALT P20 ACTIVITY\n\n\t\tINHINT\n\t\tTC\tIBNKCALL\t# ZERO THE COMMANDED RATES TO STOP\n\t\tCADR\tSTOPRATE\t# MANEUVER\n\n\t\tTC\tIBNKCALL\n\t\tCADR\tRESTORDB\n\n\t\tTC\tCLRADMOD\t# CLEAR BITS 10 + 15 OF RADMODES.\n\n\t\tCS\tBIT14\t\t# DISABLE LOCKON\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tTC\tPOSTJUMP\n\t\tCADR\tGOPROG2\t\t# CAUSE RESTART.\n\n# DNEDUMP\tVERB 74\t\tDESCRIPTION\n#\tINITIALZE DOWN-TELEMETRY PROGRAM FOR ERASABLE MEMORY DUMP.\n#\n#\t1.\tSET EXT VERB DISPLAY BUSY FLAG.\n#\t2.\tREPLACE CURRENT DOWNLIST WITH ERASABLE MEMORY.\n#\t3.\tRELEASE EXT VERB DISPLAY.\n\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tCOUNT*\t$$/EXTVB\n\n\t\tEBANK=\t400\nDNEDUMP\t\tCAF\tLDNDUMPI\n\t\tTS\tDNTMGOTO\n\t\tTC\tGOPIN\n\nV74\t\tEQUALS\tDNEDUMP\nLDNDUMPI\tREMADR\tDNDUMPI\n\n# LEMVEC\tVERB 80\t\tDESCRIPTION\n#\tUPDATE LEM STATE VECTOR\n#\t\tRESET VHUPFLG TC 0\n\nLEMVEC\t\tTC\tDOWNFLAG\n\t\tADRES\tVEHUPFLG\t# VB 80 -- VEHUPFLG DOWN INDICATES LEM\n\n\t\tTC\tNOUPDOWN\n\n# CSMVEC\tVERB 81\t\tDESCRIPTION\n#\tUPDATE CSM STATE VECTOR\n# Page 289\n#\t\tSET VEHUPFLG TO 1\n\nCSMVEC\t\tTC\tUPFLAG\n\t\tADRES\tVEHUPFLG\t# VB 81 -- VEHUPFLG UP INDICATES CSM\n\nNOUPDOWN\tTC\tDOWNFLAG\n\t\tADRES\tNOUPFLAG\n\n\t\tTCF\tGOPIN\n\n# UPDATOFF\tVERB 95\t\tDESCRIPTION\n#\tINHIBIT STATE VECTOR UPDATES BY INCORP\n#\t\tSET NOUPFLAG TO 1\n\nUPDATOFF\tTC\tUPFLAG\t\t# VB 95 SET NOUPFLAG\n\t\tADRES\tNOUPFLAG\n\n\t\tTC\tGOPIN\n# Page 290\n# SYSTEST\tVERB 92\t\tDESCRIPTION\n#\tOPERATE IMU PERFORMANCE TEST.\n#\n#\t1.\tREQUIRE PROGRAM 00 OR TURN ON OPERATOR ERROR.\n#\t2.\tSET EXT VERB BUSY FLAG.\n\n\t\tEBANK=\tQPLACE\n\nSYSTEST\t\tTC\tCHKPOOH\t\t# DEMAND P00\n\n\t\tTC\tTESTXACT\n\n\t\tCAF\tPRIO22\n\t\tTC\tFINDVAC\n\t\tEBANK=\tQPLACE\n\t\tSBANK=\tIMUSUPER\n\t\t2CADR\tREDO\n\n\t\tTC\tENDOFJOB\n\n# VERB 93\tCLEAR RENDWFLG, CAUSES W-MATRIX TO BE RE-INITIALIZED.\n\nWMATRXNG\tINHINT\n\t\tCS\tRENDWBIT\n\t\tMASK\tFLAGWRD5\n\t\tTS\tFLAGWRD5\n\n\t\tTC\tGOPIN\n\nGOSHOSUM\tEQUALS\tSHOWSUM\n\nSHOWSUM\t\tTC\tCHKPOOH\t\t# *\n\t\tTC\tTESTXACT\t# *\n\t\tCAF\tPRIO7\t\t# * ALLOW OTHER CHARINS.\n\t\tTC\tPRIOCHNG\t# *\n\t\tCAF\tS+1\t\t# *\n\t\tTS\tSKEEP6\t\t# * SHOWSUM OPTION\n\t\tCAF\tS+ZERO\t\t# *\n\t\tTS\tSMODE\t\t# * TURN OFF SELF-CHECK\n\t\tCA\tSELFADRS\t# *\n\t\tTS\tSELFRET\t\t# *\n\t\tTC\tSTSHOSUM\t# * ENTER ROPECHK\n\nSDISPLAY\tLXCH\tSKEEP2\t\t# * BANK # FOR DISPLAY\n\t\tLXCH\tSKEEP3\t\t# * BUGGER WORD FOR DISPLAY\nNOKILL\t\tCA\tADRS1\t\t# *\n\t\tTS\tMPAC +2\t\t# *\n\t\tCA\tVNCON\t\t# * 0501\n\t\tTC\tBANKCALL\t# *\n\t\tCADR\tGOXDSPF\t\t# *\n\t\tTC\t+3\t\t# *\n\t\tTC\tNXTBNK\t\t# *\n# Page 291\n\t\tTC\tNOKILL\t\t# *\n\t\tCA\tSELFADRS\n\t\tTS\tSKEEP1\n\n\t\tTC\tENDEXT\t\t# *\nVNCON\t\tVN\t501\t\t# *\nENDSUMS\t\tCA\tSKEEP6\t\t# *\n\t\tEXTEND\t\t\t# *\n\t\tBZF\tSELFCHK\t\t# * ROPECHK, START SELFCHK AGAIN.\n\t\tTC\tSTSHOSUM\t# * START SHOWSUM AGAIN.\n\n# Page 292\n# DAPDISP\tVERB 48\t\tDESCRIPTION\n#\tLOAD AUTO PILOT DATA\n#\n#\t1.\tREQUIRE EXT VERB DISPLAY AVAILABLE AND SET BUSY FLAG.\n#\t2.\tEXECUTE DAPDATA1, DAPDATA2, AND DAPDATA3.\n#\t3.\tRELEASE EXT VERB DISPLAY SYSTEM.\n\nDAPDISP\t\tTC\tTESTXACT\n\t\tCAF\tPRIO7\t\t# R03\n\t\tTC\tPRIOCHNG\n\t\tTC\tPOSTJUMP\n\t\tCADR\tDAPDATA1\n\n\t\tBANK\t34\n\t\tSETLOC\tLOADDAP\n\t\tBANK\n\n\t\tCOUNT*\t$$/R03\n\n\t\tSBANK=\tLOWSUPER\t# FOR SUBSEQUENT LOW 2CADR'S\n\nDAPDATA1\tCAF\tBOOLSMSK\t# SET DISPLAY ACCORDING TO DAPBOOLS BITS.\n\t\tMASK\tDAPBOOLS\t# LM\n\t\tTS\tDAPDATR1\t# LM\n\t\tCS\tFLGWRD10\t# SET BIT 14 TO BE COMPLEMENT OF APSFLAG.\n\t\tMASK\tAPSFLBIT\n\t\tCCS\tA\n\t\tCAF\tBIT14\n\t\tADS\tDAPDATR1\nCHKDATA1\tCAE\tDAPDATR1\t# IF BITS 13 AND 14 ARE BOTH ZERO, FORCE\n\t\tMASK\tBIT13-14\t#\tA ONE INTO BIT 13.\n\t\tEXTEND\n\t\tBZF\tFORCEONE\n\t\tCAE\tDAPDATR1\t# ENSURE THAT NO ILLEGAL BITS SET BY CREW.\nMSKDATR1\tMASK\tDSPLYMSK\n\t\tTS\tDAPDATR1\n\t\tCAF\tV01N46\t\t# LM\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPFR\n\t\tTCF\tENDEXT\t\t# V34E TERMINATE\n\t\tTCF\tDPDAT1\t\t# V33E PROCEED\n\t\tTCF\tCHKDATA1\t# E\tNEW DATA\tCHECK AND REDISPLAY\n\t\tCAF\tREVCNT\t\t# BITS 2 & 3:  BLANKS R2 & R3.\n\t\tTC\tBLANKET\n\t\tTCF\tENDOFJOB\nFORCEONE\tCAF\tBIT13\n\t\tADS\tDAPDATR1\n\t\tTCF\tMSKDATR1\n\nDPDAT1\t\tINHINT\t\t\t# INHINT FOR SETTING OF FLAG BITS AND MASS\n\t\tCS\tAPSFLBIT\t# \tON BASIS OF DISPLAYED DAPDATR1.\n\t\tMASK\tFLGWRD10\n\t\tTS\tL\t\t# SET APSFLAG TO BE COMPLEMENT OF BIT 14.\n# Page 293\n\t\tCS\tDAPDATR1\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tCAF\tAPSFLBIT\n\t\tAD\tL\n\t\tTS\tFLGWRD10\n\t\tCS\tDAPDATR1\t# SET BITS OF DAPBOOLS ON BASIS OF DISPLAY\n\t\tMASK\tBIT13-14\t#\tMASK OUT CSMDOCKD (BIT 13) UNLESS BOTH\n\t\tCCS\tA\t\t# \t13 AND 14 ARE SET.\n\t\tCS\tCSMDOCKD\n\t\tAD\tBOOLSMSK\n\t\tMASK\tDAPDATR1\n\t\tTS\tL\n\t\tCS\tBOOLSMSK\n\t\tMASK\tDAPBOOLS\n\t\tAD\tL\n\t\tTS\tDAPBOOLS\n\t\tMASK\tCSMDOCKD\t# LOAD MASS IN ACCORDANCE WITH CSMDOCKD.\n\t\tCCS\tA\t\t#\tMASS IS USUALLY OKAY, SO DO\n\t\tCAE\tCSMMASS\t\t# \tNOT TOUCH ITS LOW-ORDER PART.\n\t\tAD\tLEMMASS\n\t\tTS\tMASS\n\t\tCAE\tDAPBOOLS\n\t\tMASK\tACC4OR2X\t# 2 OR 4 JET X-TRANSLATION\n\t\tEXTEND\t\t\t# (BIT ACC4OR2X = 1 FOR 4 JETS)\n\t\tBZF\t+5\n\t\tCS\tBIT15\n\t\tMASK\tFLAGWRD1\t# CLEAR NJTSFLAG TO 0 FOR 4 JETS\n\t\tTS\tFLAGWRD1\n\t\tTCF\t+4\n\t\tCS\tFLAGWRD1\t# SET NJTSFLAG TO 1 FOR 2 JETS\n\t\tMASK\tBIT15\n\t\tADS\tFLAGWRD1\n\t\tCA\tDAPBOOLS\t# SELECT DESIRED KALCMANU AUTOMATIC\n\t\tMASK\tTHREE\t\t# MANEUVER RATE\n\t\tDOUBLE\t\t\t# RATEINDX HAS TO BE 0,2,4,6 SINCE RATES\n\t\tTS\tRATEINDX\t# ARE DP\n\t\tTC\tPOSTJUMP\n\t\tCADR\tSTIKLOAD\n\nV01N46\t\tVN\t0146\nDSPLYMSK\tOCT\t33113\nBOOLSMSK\tOCT\t13113\n\n\t\tBANK\t01\n\t\tSETLOC\tLOADDAP1\n\t\tBANK\n\n\t\tCOUNT*\t$$/R03\n\nSTIKLOAD\tCAF\tEBANK6\n# Page 294\n\t\tTS\tEBANK\n\t\tEBANK=\tSTIKSENS\n\t\tCA\tRHCSCALE\t# SET STICK SENSITIVITY TO CORRESPOND TO A\n\t\tMASK\tDAPBOOLS\t# MAXIMUM COMMANDED RATE (AT 42 COUNTS) OF\n\t\tCCS\tA\t\t# 20 D/S (NORMAL) OR 4 D/S (FINE), SCALED\n\t\tCA\tNORMAL\t\t# AT 45 D/S.\n\t\tAD\tFINE\n\t\tTS\tSTIKSENS\n\t\tCA\t-0.6D/S\n\t\tTS\t-RATEDB\t\t# LM-ONLY BREAKOUT LEVEL IS .6 D/S.\n\t\tCA\tCSMDOCKD\t# IF CSM-DOCKED, DIVIDE STICK SENSITIVITY\n\t\tMASK\tDAPBOOLS\t# BY 10.  NORMAL SCALING IS THEN 2 D/S AND\n\t\tEXTEND\t\t\t# FINE SCALING IS 0.4 D/S\n\t\tBZF\t+7\t\t# BRANCH IF CSM IS NOT DOCKED.\n\t\tCA\tSTIKSENS\n\t\tEXTEND\n\t\tMP\t1/10\n\t\tTS\tSTIKSENS\n\t\tCA\t-0.3D/S\t\t# CSM-DOCKED BREAKOUT LEVEL IS .3 D/S.\n\t\tTS\t-RATEDB\n\t\tRELINT\t\t\t# PROCEED TO NOUN 47, MASS LOAD.\n\nDAPDATA2\tCAF\tV0647\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPFR\n\t\tTCF\tENDR03\t\t# V34E\tTERMINATE. FIRST SET DB.  DO 1/ACCS\n\t\tTCF\tDAPDAT2\t\t# V33E\tPROCEED\n\t\tTCF\tDAPDATA2\t# \tLOAD NEW DATA AND RECYCLE\n\t\tCAF\tBIT3\t\t# BLANKS R3\n\t\tTC\tBLANKET\t\t#\t\tLM\n\t\tTCF\tENDOFJOB\nENDR03\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tRESTORDB\n\t\tTCF\tENDEXT\t\t# DOES RELINT\n\nDAPDAT2\t\tCS\tFLGWRD10\t# DETERMINE STAGE FROM APSFLAG\n\t\tMASK\tAPSFLBIT\n\t\tCCS\tA\n\t\tCA\tMINLMD\n\t\tAD\tMINMINLM\n\t\tAD\tLEMMASS\t\t# LEMMASS MUST BE GREATER THAN EMPTY LEM\n\t\tEXTEND\n\t\tBZMF\tDAPDATA2\t# ASK FOR NEW MASSES\n\t\tCAE\tDAPBOOLS\n\t\tMASK\tCSMDOCKD\n\t\tEXTEND\n\t\tBZF\tLEMALONE\t# SKIP TEST ON CSMMASS IF NOT DOCKED.\n\t\tCS\tMINCSM\t\t# TEST CSM MASS\n\t\tAD\tCSMMASS\t\t# CSMMASS MUST BE GREATER THAN EMPTY CSM\n# Page 295\n\t\tEXTEND\n\t\tBZMF\tDAPDATA2\t# ASK FOR NEW MASSES\n\t\tCAE\tCSMMASS\t\t# DOCKED:  MASS = CSMMASS + LEMMASS\nLEMALONE\tAD\tLEMMASS\t\t# LEM ALONE:  MASS = LEMMASS\n\t\tZL\n\t\tDXCH\tMASS\n\t\tINHINT\n\t\tTC\tIBNKCALL\t# SET DEADBANK AND COMPUTE MOMENTS OF\n\t\tCADR\tRESTORDB\t#\tINERTIA.\n\t\tRELINT\t\t\t# PROCEED TO NOUN 48 (OR END).\n\nDAPDATA3\tCS\tFLGWRD10\n\t\tMASK\tAPSFLBIT\n\t\tEXTEND\t\t\t# END ROUTINE IF LEM HAS STAGED.\n\t\tBZF\tENDEXT\n\t\tCAF\tV06N48\t\t# DISPLAY TRIM ANGLES AND REQUEST RESPONSE\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPFR\n\t\tTC\tENDEXT\n\t\tTCF\tDPDAT3\t\t# V33E GO DO TRIM (WAITLIST TO TRIMGIMB)\n\t\tTCF\t-5\t\t# LOAD NEW DATA AND RECYCLE\n\t\tCAF\tBIT3\n\t\tTC\tBLANKET\t\t# BLANK R3\n\t\tTCF\tENDOFJOB\nDPDAT3\t\tCAF\tBIT1\t\t# GO TO TRIMGIMB VIA WAITLIST SO IT\n\t\tINHINT\t\t\t# CAN USE FIXDELAY AND VARDELAY\n\t\tTC\tWAITLIST\n\t\tEBANK=\tROLLTIME\n\t\t2CADR\tTRIMGIMB\n\n\t\tTCF\tENDOFJOB\t# DOES A RELINT\nTRIMDONE\tCAF\tV50N48\n\t\tTC\tBANKCALL\t# TRIM IS FINISHED; PLEASE TERMINATE R03\n\t\tCADR\tGOMARK3R\n\t\tTC\tENDEXT\t\t# V34E TERMINATE\n\t\tTC\tENDEXT\n\t\tTC\tENDEXT\n\t\tCAF\tOCT24\t\t# BIT5 TO CHANGE TO PERFORM, 3 TO BLANK 43\n\t\tTC\tBLANKET\n\t\tTCF\tENDOFJOB\n\nV0647\t\tVN\t0647\nV06N48\t\tVN\t0648\n\nV50N48\t\tVN\t5048\nNORMAL\t\tDEC\t.660214\n\t\t\t\t\t# NORMAL SCALING IS 20 D/S\nFINE\t\tDEC\t.165054\t\t# FINE STICK SCALING (4 D/S).\n1/10\t\tDEC\t.1\t\t# FACTOR FOR CSM-DOCKED SCALING\n-0.6D/S\t\tDEC\t-218\n\n# Page 296\n\n-0.3D/S\t\tDEC\t-109\n\n# Page 297\n# VERB 66\tVEHICLES ARE ATTACHED. MOVE THIS VEHICLE STATE VECTOR TO\n#\t\tOTHER VEHICLE STATE VECTOR.\n#\n# USE SUBROUTINE GENTRAN.\n\n\t\tBANK\t7\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tCOUNT*\t$$/EXTVB\n\n\t\tEBANK=\tRRECTHIS\n\nATTACHED\tCAF\tPRIO10\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRRECTHIS\n\n\t\t2CADR\tATTACHIT\n\n\t\tTC\tENDOFJOB\n\nATTACHIT\tTC\tINTPRET\n\t\tCALL\n\t\t\tINTSTALL\n\t\tSET\tBON\n\t\t\tMOONOTH\n\t\t\tMOONTHIS\n\t\t\t+3\n\t\tCLEAR\n\t\t\tMOONOTH\n\t\tEXIT\n\t\tCAF\tOCT51\n\t\tTC\tGENTRAN\n\t\tADRES\tRRECTHIS\t# OUR STATE VECTOR INTO OTHER VIA GENTRAN\n\t\tADRES\tRRECTOTH\n\n\t\tRELINT\n\t\tTC\tINTPRET\n\t\tCALL\t\t\t# UPDATE R-OTHER, V-OTHER\n\t\t\tPTOALEM\n\t\tLXA,2\tCALL\n\t\t\tPBODY\n\t\t\tSVDWN1\n\t\tEXIT\n\n\t\tCAF\tTCPINAD\n\t\tINDEX\tFIXLOC\n\t\tTS\tQPRET\n\t\tTC\tPOSTJUMP\n\t\tCADR\tINTWAKE\t\t# FREE INTEGRATION AND EXIT.\n\n# Page 298\n\nTCPIN\t\tRTB\n\t\t\tPINBRNCH\n\nOCT51\t\tOCT\t51\nTCPINAD\t\tCADR\tTCPIN\n\n# VERB 96\tSET QUITFLAT TO STOP INTEGRATION.\n#\n#\tGO TO V37 WITH ZERO TO CAUSE P00.\n#\t\tSTATEINT WILL CHECK QUITFLAG AND SKIP 1ST PASS,\n#\t\t\tTHUS ALLOWING A 10 MINUT PERIOD WITHOUT INTEGRATION.\n\nVERB96\t\tTC\tUPFLAG\t\t# QUITFLAG WILL CAUSE INTEGRATION TO EXIT\n\t\tADRES\tQUITFLAG\t#\tAT NEXT TIMESTEP\n\n\t\tCAF\tZERO\n\t\tTC\tPOSTJUMP\n\t\tCADR\tV37\t\t# GO TO P00\n\n# VERB 67:\tDISPLAY OF W MATRIX\n\nV67\t\tTC\tTESTXACT\n\t\tCAF\tPRIO5\n\t\tTC\tFINDVAC\n\t\tEBANK=\tWWPOS\n\t\t2CADR\tV67CALL\n\n\t\tTC\tENDOFJOB\n\n# VERB 65\tDISABLE U,V JETS DURING DPS BURNS\n\nSNUFFOUT\tTC\tUPFLAG\n\t\tADRES\tSNUFFER\n\t\tTC\tGOPIN\n\n# VERB 75\tENABLE U,V JETS DURING DPS BURNS\n\nOUTSNUFF\tTC\tDOWNFLAG\n\t\tADRES\tSNUFFER\n\t\tTC\tGOPIN\n\n# VERB 85\tDISPLAY RR LOS AZIMUTH AND ELEVATION.\n#\n# AZIMUTH IS THE ANGLE BETWEEN THE LOS AND THE X-Z NB PLANE, 0-90 DEG IN THE +Y HEMISPHERE,\n# 360-270 DEG IN THE -Y HEMISPHERE.\n#\n# ELEVATION IS THE ANGLE BETWEEN +ZNB AND THE PROJECTION OF THE LOS INTO THE X-Z PLANE, 0-360 ABOUT +Y.\n\n\t\tEBANK=\tRR-AZ\nVERB85\t\tTC\tTESTXACT\n\n# Page 299\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tDSPRRLOS\n\n\t\tSETLOC\tPINBALL1\n\t\tBANK\n\n\t\tCOUNT*\t$$/EXTVB\n\nDSPRRLOS\tCAF\tPRIO5\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRR-AZ\n\t\t2CADR\tRRLOSDSP\n\n\t\tCAF\tPRIO4\n\t\tTC\tPRIOCHNG\n\t\tCAF\tV16N56\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKFR\n\t\tTC\tB5OFF\n\t\tTC\tB5OFF\n\t\tTC\tB5OFF\n\n\t\tCAF\tBIT3\n\t\tTC\tBLANKET\n\t\tTC\tENDOFJOB\n\nRRLOSDSP\tEXTEND\n\t\tDCA\tCDUT\n\t\tDXCH\tMPAC\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tRRNBMPAC\t# GET RR LOS IN BODY AXIS.\n\t\tSTORE\t0D\t\t# UNIT LOS\n\t\tSTODL\t6D\n\t\t\tHI6ZEROS\n\t\tSTOVL\t8D\n\t\t\t6D\n\t\tUNIT\n\t\tSTORE\t6D\t\t# UNIT OF LOS PROJ IN X-Z PLANE\n\t\tDOT\n\t\t\tUNITZ\n\t\tSTOVL\tCOSTH\t\t# 16D\n\t\t\tUNITX\n\t\tDOT\n\t\t\t6D\n\t\tSTCALL\tSINTH\t\t# 18D\n\t\t\tARCTRIG\n\t\tBPL\tDAD\t\t# INSURE DISPLAY OF 0-360 DEG.\n\t\t\t+2\n\t\t\tDPPOSMAX\t# INTRODUCES AND ERROR OF B-28 REVS.\n\n# Page 300\n\n\t\tSTOVL\tRR-ELEV\n\t\t\t0D\n\t\tDOT\n\t\t\tUNITY\n\t\tSTOVL\tSINTH\n\t\t\t0D\n\t\tDOT\n\t\t\t6D\n\t\tSTCALL\tCOSTH\n\t\t\tARCTRIG\n\t\tBPL\tDAD\t\t# INSURE DISPLAY OF 0-360 DEG.\n\t\t\t+2\n\t\t\tDPPOSMAX\t# INTRODUCES AN ERROR OF B-28 REVS.\n\t\tSTORE\tRR-AZ\n\t\tEXIT\n\t\tCA\t1SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\n\t\tCA\tBIT5\n\t\tMASK\tEXTVBACT\n\t\tCCS\tA\n\t\tTC\tRRLOSDSP\n\t\tTC\tENDEXT\n\nV16N56\t\tVN\t1656\n\n"
  },
  {
    "path": "Luminary099/FINDCDUW--GUIDAP_INTERFACE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tFINDCDUW--GUIDAP_INTERFACE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t908-925\n# Mod history:\t2009-05-28 HG\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 908\n# PROGRAM NAME:  FINDCDUW\n# MOD NUMBER:  1\t68-07-15\n# MOD AUTHOR:  KLUMPP\n#\n# OBJECTS OF MOD:\t1.\tTO SUPPLY COMMANDED GIMBAL ANGLES FOR NOUN 22.\n#\t\t\t2.\tTO MAINTAIN CORRECT AND CURRENT THRUST\n#\t\t\t\tDIRECTION DATA IN ALL MODES.  THIS IS DONE BY\n#\t\t\t\tFETCHING FOR THE THRUST DIRECTION FILTER THE\n#\t\t\t\tCDUD'S IN PNGCS-AUTO, THE CDU'S IN ALL OTHER\n#\t\t\t\tMODES.\n#\t\t\t3.\tTO SUBSTITUDE A STOPRATE FOR THE NORMAL\n#\t\t\t\tAUTOPILOT COMMANDS WHENEVER\n#\t\t\t\t1) NOT IN PNGCS-AUTO, OR\n#\t\t\t\t2) ENGINE IS OFF.\n#\n# FUNCTIONAL DESCRIPTION:\n#\n# FINDCDUW PROVIDES THE INTERFACES BETWEEN THE VARIOUS POWERED FLITE GUIDANCE PROGRAMS\n# AND THE DIGITAL AUTOPILOT.  THE INPUTS TO FINDCDUW ARE THE THRUST COMMAND VECTOR\n# AND THE WINDOW COMMAND VECTOR, AND THE OUTPUTS ARE THE GIMBAL ANGLE\n# INCREMENTS, THE COMMANDED ATTITUDE ANGLE RATES, AND THE COMMANDED\n# ATTITUDE LAG ANGLES (WHICH ACCOUNT FOR THE ANGLES BY WHICH THE BODY WILL\n# LAG BEHIND A RAMP COMMAND IN ATTITUDE ANGLE DUE TO THE FINITE ANGULAR\n# ACCELERATIONS AVAILABLE).\n#\n# FINDCDUW ALIGNS THE ESTIMATED THRUST VECTOR FROM THE THRUST DIRECTION\n# FILTER WITH THE THRUST COMMAND VECTOR, AND, WHEN XDVINHIB SET,\n# ALIGNS THE +Z HALF OF THE LM ZX PLANE WITH THE WINDOW COMMAND VECTOR.\n#\n# Page 909\n# SPECIFICATIONS:\n#\n# INITIALIZATION:\tA SINGLE INTERPRETIVE CALL TO INITCDUW IS REQUIRED\n#\t\t\tBEFORE EACH GUIDED MANEUVER USING FINDCDUW.\n#\n# CALL:\t\t\tINTERPRETIVE CALL TO FINDCDUW WITH THE THRUST COMMAND\n#\t\t\tVECTOR IN MPAC.  INTERPRETIVE CALL TO FINDCDUW -2 WITH\n#\t\t\tTHE THRUST COMMAND VECTOR IN UNFC/2 AND NOT IN MPAC.\n#\n# RETURNS:\t\tNORMAL INTERPRETIVE IN ALL CASES\n#\t\t\t1.\tNORMALLY ALL AUTOPILOT CMDS ARE ISSUED.\n#\t\t\t2.\tIF NOT PNGCS AUTO, DO STOPRATE AND RETURN\n#\t\t\t\tWITHOUT ISSUING AUTOPILOT CMDS.\n#\t\t\t3.\tIF ENGINE OFF, DO STOPRATE AND RETURN WITHOUT\n#\t\t\t\tISSUING AUTOPILOT CMDS.\n#\n# ALARMS:\t\t00401\tIF INPUTS DETERMINE AN ATTITUDE IN GIMBAL LOCK.\n#\t\t\t\tFINDCDUW DRIVES CDUXD AND CDUYD TO THE RQD VALUES,\n#\t\t\t\tBUT DRIVES CDUZD ONLY TO THE GIMBAL LOCK CONE.\n#\n#\t\t\t00402\tIF UNFC/2 OR UNWC/2 PRODUCE OVERFLOW WHEN\n#\t\t\t\tUNITIZED USING NORMUNIT.  FINDCDUW ISSUES\n#\t\t\t\tSTOPRATE AS ONLY INPUT TO AUTOPILOT.\n#\n# INPUTS:\t\tUNFC/2\t\tTHRUST COMMAND VECTOR, NEED NOT BE SEMI-UNIT.\n#\t\t\tUNWC/2\t\tWINDOW COMMAND VECTOR, NEED NOT BE SEMI-UNIT.\n#\t\t\tOGABIAS\t\tPOSSIBLE BIAS FOR OUTER GIMBAL ANGLE (ZEROED IN INITCDUW), UNITS OF PI.\n#\t\t\tXOVINHIB\tFLAG DENOTING X AXIS OVERRIDE INHIBITED.\n#\t\t\tCSMDOCKD\tFLAG DENOTING CSM DOCKED.\n#\t\t\tSTEERSW\t\tFLAG DENOTING INSUFF THRUST FOR THRUST DIR FLTR.\n#\n# OUTPUTS:\t\tDELCDUX,Y,Z\n#\t\t\tOMEGAPD,+1,+2\n#\t\t\tDELPEROR,+1,+2\n#\t\t\tCPHI,+1,+2 FOR NOUN22\n#\n# DEBRIS:\t\tFINDCDUW DESTROYS SINCDUX,Y,Z AND COSCDUX,Y,Z BY\n#\t\t\tWRITING INTO THESE LOCATIONS THE SINES AND COSINES\n#\t\t\tOF THE CDUD'S IN PNGCS-AUTO, OF THE CDU'S OTHERWISE.\n\n# Page 910\n# INITIALIZATION FOR FINDCDUW\n\n\t\tBANK\t30\n\t\tSETLOC\tFCDUW\n\t\tBANK\n\n\t\tEBANK=\tECDUW\n\t\tCOUNT*\t$$/FCDUW\n\nINITCDUW\tVLOAD\n\t\t\tUNITX\n\t\tSTORE\tUNFV/2\n\t\tSTORE\tUNWC/2\n\t\tRVQ\n\n# FINDCDUW PRELIMINARIES\n\n\t\tVLOAD\t\t\t# FINDCDUW -2:  ENTRY WHEN UNFC/2 PRE-STORD\n\t\t\tUNFC/2\t\t# INPUT VECTORS NEED NOT BE SEMI-UNIT\nFINDCDUW\tBOV\tSETPD\t\t# FINDCDUW: ENTRY WHEN UNFC/2 IN MPAC\n\t\t\tFINDCDUW\t# INTERPRETER NOW INITIALIZED\n\t\t\t22\t\t# LOCS 0 THRU 21 FOR DIRECTION COSINE MAT\n\t\tSTQ\tEXIT\n\t\t\tQCDUWUSR\t# SAVE RETURN ADDRESS\n\n# MORE HAUSKEEPING\n\t\tCA\tECDUWL\n\t\tXCH\tEBANK\t\t# SET EBANK\n\t\tTS\tECDUWUSR\t# SAVE USER'S EBANK\n\n\t\tCA\tDAPBOOLS\n\t\tMASK\tCSMDOCKD\t# CSMDOCKD MUST NOT BE BIT15\n\t\tCCS\tA\n\t\tCA\tONE\t\t# INDEX IF CSM DOCKED\n\t\tTS\tNDXCDUW\n\n\t\tCA\tXOVINHIB\t# XOVINHIB MUST NOT BE BIT15\n\t\tTS\tFLPAUTNO\t# SET TO POS-NON-ZERO FLAG PNGCS AUTO NOT\n\n\t\tMASK\tDAPBOOLS\n\t\tTS\tFLAGOODW\t# FLAG0ODW = ANY PNZ NUMBER IF XOV INHIBTD\n\n# Page 911\n# FETCH BASIC DATA\n\t\tINHINT\t\t\t# RELINT AT PAUTNO (TC INTPRET)\n\n\t\tCA\tCDUX\t\t# FETCH CDUX,CDUY,CDUZ IN ALL CASES, BUT\n\t\tTS\tCDUSPOTX\t#\tREPLACE BELOW IF PNGCS AUTO\n\t\tCA\tCDUY\n\t\tTS\tCDUSPOTY\n\t\tCA\tCDUZ\n\t\tTS\tCDUSPOTZ\n\n\t\tCA\tBIT10\t\t# PNGCS CONTROL BIT\n\t\tEXTEND\n\t\tRAND\tCHAN30\n\t\tCCS\tA\n\t\tTCF\tPAUTNO\t\t# NOT PNGCS (BITS INVERTED)\n\n\t\tCA\tBIT14\t\t# AUTO MODE BIT\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tCCS\tA\n\t\tTCF\tPAUTNO\t\t# NOT AUTO (BITS INVERTED)\n\n\t\tTS\tFLPAUTNO\t# RESET FLAG PNGCS AUTO NOT\n\n\t\tCA\tCDUXD\t\t# PNGCS AUTO:  FETCH CDUXD,CDUYD,CDUZD\n\t\tTS\tCDUSPOTX\n\t\tCA\tCDUYD\n\t\tTS\tCDUSPOTY\n\t\tCA\tCDUZD\n\t\tTS\tCDUSPOTZ\n\n# Page 912\n# FETCH INPUTS\nPAUTNO\t\tTC\tINTPRET\t\t# ENTERING THRUST CMD STILL IN MPAC\n\t\tRTB\n\t\t\tNORMUNIT\n\t\tSTOVL\tUNX/2\t\t# SEMI-UNIT THRUST CMD AS INITIAL UNX/2\n\t\t\tUNWC/2\n\t\tRTB\tRTB\n\t\t\tNORMUNIT\n\t\t\tQUICTRIG\t# ALWAYS RQD TO OBTAIN TRIGS OF CDUD'S\n\t\tSTOVL\tUNZ/2\t\t# SEMI-UNIT WINDOW CMD AS INITIAL UNZ/2\n\t\t\tDELV\n\t\tBOVB\tUNIT\n\t\t\tNOATTCNT\t# AT LEAST ONE ENTERING CMD VCT ZERO\n\t\tBOV\tCALL\n\t\t\tAFTRFLTR\t# IF UNIT DELV OVERFLOWS SKIP FILTER\n\t\t\t*SMNB*\t\t# YIELDS UNIT(DELV) IN VEH COORDS FOR FLTR\n\n# THRUST DIRECTION FILTER\n\n\t\tEXIT\n\n\t\tCA\tUNFVY/2\t\t# FOR RESTARTS, UNFV/2 ALWAYS INTACT, MPAC\n\t\tLXCH\tMPAC\t+3\t# \tRENEWD AFTER RETURN FROM CALLER,\n\t\tTC\tFLTRSUB\t\t#\tTWO FILTER UPDATES MAY BE DONE.\n\t\tTS\tUNFVY/2\t\t# UNFV/2 NEED NOT BE EXACTLY SEMI-UNIT.\n\n\t\tCA\tUNFVZ/2\n\t\tLXCH\tMPAC +5\n\t\tTC\tFLTRSUB\n\t\tTS\tUNFVZ/2\n\n\t\tTC\tINTPRET\t\t# COMPLETES FILTER\n\n# Page 913\n# FIND A SUITABLE WINDOW POINTING VECTOR\n\nAFTRFLTR\tSLOAD\tBHIZ\t\t# IF XOV NOT INHIBITED, GO FETCH ZNB\n\t\t\tFLAGOODW\n\t\t\tFETCHZNB\n\t\tVLOAD\tCALL\n\t\t\tUNZ/2\n\t\t\tUNWCTEST\n\nFETCHZNB\tVLOAD\n\t\t\tZNBPIP\n\t\tSTCALL\tUNZ/2\n\t\t\tUNWCTEST\n\n\t\tVLOAD\tVCOMP\t\t# Z AND -X CAN'T BOTH PARALLEL UNFC/2\n\t\t\tXNBPIP\n\t\tSTORE\tUNZ/2\n\n# COMPUTE THE REQUIRED DIRECTION COSINE MATRIX\n\nDCMCL\t\tVLOAD\tVXV\n\t\t\tUNZ/2\n\t\t\tUNX/2\n\t\tUNIT\tPUSH\t\t# UNY/2 FIRST ITERATION\n\t\tVXV\tVSL1\n\t\t\tUNX/2\n\t\tSTORE\tUNZ/2\t\t# -UNZ/2 FIRST ITERATION\n\t\tVXSC\tPDVL\t\t# EXCHANGE -UNFVZ/2 UNZ/2 FOR UNY/2\n\t\t\tUNFVZ/2\t\t# MUST BE SMALL\n\t\tVXSC\tBVSU\t\t# YIELDS -UNFVY/2 UNY/2-UNFVZ/2 UNZ/2\n\t\t\tUNFVY/2\t\t# MUST BE SMALL\n\t\tVSL1\tVAD\n\t\t\tUNX/2\n\t\tUNIT\t\t\t# TOTALLY ELIMINATES THRUST POINTING ERROR\n\t\tSTORE\tUNX/2\t\t# UNX/2\n\t\tVXV\tVSL1\n\t\t\tUNZ/2\t\t# -UNZ/2 WAS STORED HERE REMEMBER\n\t\tSTORE\tUNY/2\t\t# UNY/2\n\t\tVCOMP\tVXV\n\t\t\tUNX/2\n\t\tVSL1\n\t\tSTORE\tUNZ/2\t\t# UNZ/2\n\n# Page 914\n# COMPUTES THE REQUIRED GIMBAL ANGLES\n\n\t\tCALL\n\t\t\tNB2CDUSP\t# YIELDS THE RQD GIMBAL ANGLES, 2'S, PI\n\t\tEXIT\n\n# LIMIT THE MIDDLE GIMBAL ANGLE & COMPUTE THE UNLIMITED GIMBAL ANGLE CHGS\n\n\t\tCA\tMPAC +2\t\t# LIMIT THE MGA\n\t\tTS\tL\t\t# CAN'T LXCH:  NEED UNLIMITED MGA FOR ALARM\n\t\tCA\tCDUZDLIM\n\t\tTC\tLIMITSUB\t# YIELDS LIMITED MGA.  1 BIT ERROR POSSIBLE\n\t\tXCH\tMPAC +2\t\t# \tBECAUSE USING 2'S COMP.  WHO CARES?\n\t\tEXTEND\n\t\tMSU\tMPAC +2\t\t# THIS BETTER YIELD ZERO\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tALARMMGA\n\nMGARET\t\tINHINT\t\t\t# RELINT AT TC INTPRET AFTER TCQCDUW\n\n\t\tZL\n\t\tCA\tTWO\nDELGMBLP\tTS\tTEM2\n\n\t\tCA\tL\t\t# TO PREVENT FALSE STARTS ABOUT X, ZERO\n\t\tEXTEND\t\t\t#\tFLAGOODW IF DELGMBZ OR Y TOO BIG.\n\t\tSQUARE\n\t\tAD\tHI5\t\t# WITHIN 1 BIT OF -(45 DEG SQUARED)\n\t\tEXTEND\n\t\tBZMF\t+3\n\t\tCA\tZERO\n\t\tTS\tFLAGOODW\n\n\t\tINDEX\tTEM2\n\t\tCA\tMPAC\n\t\tINDEX\tTEM2\n\t\tTS\tCPHI\t\t# OUTPUTS TO NOUN22\n\t\tEXTEND\n\t\tINDEX\tTEM2\n\t\tMSU\tCDUXD\t\t# NO MATTER THAT THESE SLIGHTLY DIFFERENT\n\t\tCOM\t\t\t# FROM WHEN WE INITIALLY FETCHED THEM\n\t\tINDEX\tTEM2\n\t\tTS\t-DELGMB\t\t# -UNLIMITED GIMBAL ANGLE CHGS, 1'S, PI\n\t\tTS\tL\t\t# FOR PRECEDING TEST ON NEXT LOOP PASS\n\t\tCCS\tTEM2\n\t\tTCF\tDELGMBLP\n\n# Page 915\n# BRANCHES TO NOATTCNT\n\t\tCCS\tFLPAUTNO\n\t\tTCF\tNOATTCNT +2\t# NO PNGCS AUTO\n\n\t\tCA\tFLAGWRD5\n\t\tMASK\tENGONBIT\n\t\tEXTEND\n\t\tBZF\tNOATTCNT +2\t# ENGINE NOT ON\n\n# Page 916\n# LIMIT THE ATTITUDE ANGLE CHANGES\n#\n# THIS SECTION LIMITS THE ATTITUDE ANGLE CHANGES ABOUT A SET OF ORTHOGONAL VEHICLE AXES X,YPRIME,ZPRIME,\n# THESE AXES COINCIDE WITH THE COMMANDED VEHICLE AXES IF AND ONLY IF CDUXD IS ZERO.  THE PRIME SYSTEM IS\n# THE COMMANDED VEHICLE SYSTEM ROTATED ABOUT THE X AXIS TO BRING THE Z AXIS INTO ALIGNMENT WITH THE MIDDLE GIMBAL\n# AXIS.  ATTITUDE ANGLE CHANGES IN THE PRIME SYSTEM ARE RELATED TO SMALL GIMBAL ANGLE CHANGES BY:\n#\n#\t[   -DELATTX    ]   [ 1     SIN(CDUZD)     0 ] [ -DELGMBX ]\n#\t[               ]   [                        ] [          ]\n#\t[ -DELATTYPRIME ] = [ 0     COS(CDUZD)     0 ] [ -DELGMBY ]\n#\t[               ]   [                        ] [          ]\n#\t[ -DELATTZPRIME ]   [ 0         0          1 ] [ -DELGMBZ ]\n\n\t\tLXCH\t-DELGMB +2\t# SAME AS -DELATTZPRIME UNLIMITED\n\t\tINDEX\tNDXCDUW\n\t\tCA\tDAZMAX\n\t\tTC\tLIMITSUB\n\t\tTS\t-DELGMB +2\t# -DELGMBZ\n\n\t\tCA\t-DELGMB +1\n\t\tEXTEND\n\t\tMP\tCOSCDUZ\t\t# YIELDS -DELATTYPRIME/2 UNLIMITED\n\t\tTS\tL\n\t\tINDEX\tNDXCDUW\n\t\tCA\tDAY/2MAX\n\t\tTC\tLIMITSUB\n\t\tEXTEND\n\t\tDV\tCOSCDUZ\n\t\tXCH\t-DELGMB +1\t# -DELGMBY, FETCHING UNLIMITED VALUE\n\n\t\tEXTEND\n\t\tMP\tSINCDUZ\n\t\tDDOUBL\n\t\tCOM\n\t\tEXTEND\t\t\t# YIELDS +DELATTX UNLIMITD, MAG < 180 DEG.\n\t\tMSU\t-DELGMB\t\t#\tBASED ON UNLIMITED DELGMBV.\n\t\tTS\tL\t\t#\tONE BIT ERROR IF OPERANDS IN MSU\n\t\tINDEX\tNDXCDUW\t\t#\tOF MIXED SIGNS.  WHO CARES?\n\t\tCA\tDAXMAX\n\t\tTC\tLIMITSUB\n\t\tTS\t-DELGMB\t\t# SAVE LIMITED +DELATTX\n\t\tCCS\tFLAGOODW\n\t\tCS\t-DELGMB\t\t# FETCH IT BACK CHGING SIGN IF WINDOW GOOD\n\t\tTS\t-DELGMB\t\t# OTHERWISE USE ZERO FOR -DELATTX\n\t\tCS\t-DELGMB +1\n\t\tEXTEND\n\t\tMP\tSINCDUZ\n\t\tDDOUBL\t\t\t# YIELDS -CNTRIB TO -DELATTX FROM -DELGMBY\n\t\tADS\t-DELGMB\t\t# -DELGMBX.  NO OVERFLOW SINCE LIMITED TO\n\t\t\t\t\t# 20DEG(1+SIN(70DEG)/COS(70DEG)) < 180DEG\n\n# Page 917\n# COMPUTE COMMANDED ATTITUDE RATES\n#\n#\t[ OMEGAPD ]   [ -2         -4 SINCDUZ              +0    ] [ -DELGMBZ ]\n#\t[         ]   [                                          ] [          ]\n#\t[ OMEGAQD ] = [ +0     -8 COSCDUZ COSCDUX     -4 SINCDUX ] [ -DELGMBY ]\n#\t[         ]   [                                          ] [          ]\n#\t[ OMEGARD ]   [ +0     +8 COSCDUZ SINCDUX     -4 COSCDUX ] [ -DELGMBZ ]\n#\n# ATTITUDE ANGLE RATES IN UNITS OF PI/4 RAD/SEC = K TRIG FCNS IN UNITS OF 2 X GIMBAL ANGLE RATES IN UNITS OF\n# PI/2 RAD/SEC.  THE CONSTANTS ARE BASED ON DELGMB BEING THE GIMBAL ANGLE CHANGES IN UNITS OF PI RADIANS,\n# AND 2 SECONDS BEING THE COMPUTATION PERIOD (THE PERIOD BETWEEN SUCCESSIVE PASSES THRU FINDCDUW).\n\n\t\tCS\t-DELGMB\n\t\tTS\tOMEGAPD\n\t\tCS\t-DELGMB +1\n\t\tEXTEND\n\t\tMP\tSINCDUZ\n\t\tDDOUBL\n\t\tADS\tOMEGAPD\n\t\tADS\tOMEGAPD\n\n\t\tCS\t-DELGMB +1\n\t\tEXTEND\n\t\tMP\tCOSCDUX\n\t\tDDOUBL\n\t\tEXTEND\n\t\tMP\tCOSCDUZ\n\t\tTS\tOMEGAQD\n\t\tCS\t-DELGMB +2\n\t\tEXTEND\n\t\tMP\tSINCDUX\n\t\tADS\tOMEGAQD\n\t\tADS\tOMEGAQD\n\t\tADS\tOMEGAQD\n\n\t\tCA\t-DELGMB +1\n\t\tEXTEND\n\t\tMP\tSINCDUX\n\t\tDDOUBL\n\t\tEXTEND\n\t\tMP\tCOSCDUZ\n\t\tTS\tOMEGARD\n\t\tCS\t-DELGMB +2\n\t\tEXTEND\n\t\tMP\tCOSCDUX\n\t\tADS\tOMEGARD\n\t\tADS\tOMEGARD\n\t\tADS\tOMEGARD\n\n# Page 918\n# FINAL TRANSFER\n\n\t\tCA\tTWO\nCDUWXFR\t\tTS\tTEM2\n\t\tINDEX\tTEM2\n\t\tCA\t-DELGMB\n\t\tEXTEND\n\t\tMP\tDT/DELT\t\t# RATIO OF DAP INTERVAL TO CDUW INTERVAL\n\t\tTC\tONESTO2S\n\t\tINDEX\tTEM2\n\t\tTS\tDELCDUX\t\t# ANGLE INTERFACE\n\n\t\tINDEX\tTEM2\n\t\tCCS\tOMEGAPD\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tAD\tONE\n\t\tEXTEND\t\t\t# WE NOW HAVE ABS(OMEGAPD,QD,RD)\n\t\tINDEX\tTEM2\n\t\tMP\tOMEGAPD\n\t\tEXTEND\n\t\tMP\tBIT11\t\t# 1/16\n\t\tEXTEND\n\t\tINDEX\tTEM2\t\t#                  2\n\t\tDV\t1JACC\t\t# UNITS PI/4 RAD/SEC\n\t\tTS\tL\n\t\tCA\tDELERLIM\n\t\tTC\tLIMITSUB\n\t\tINDEX\tTEM2\n\t\tTS\tDELPEROR\t# LAG ANGLE = OMEGA ABS(OMEGA)/2 ACCEL\n\t\tCCS\tTEM2\n\t\tTCF\tCDUWXFR\n\n# HAUSKEEPING AND RETURN\n\nTCQCDUW\t\tCA\tECDUWUSR\n\t\tTS\tEBANK\t\t# RETURN USER'S EBANK\n\n\t\tTC\tINTPRET\n\t\tSETPD\tGOTO\n\t\t\t0\n\t\t\tQCDUWUSR\t# NORMAL AND ABNORMAL RETURN TO USER\n\n# Page 919\n# THRUST VECTOR FILTER SUBROUTINE\n\nFLTRSUB\t\tEXTEND\n\t\tQXCH\tTEM2\n\t\tTS\tTEM3\t\t# SAVE ORIGINAL OFFSET\n\t\tCOM\t\t\t# ONE MCT, NO WDS, CAN BE SAVED IF NEG OF\n\t\tAD\tL\t\t#\tORIG OFFSET ARRIVES IN A, BUT IT'S\n\t\tEXTEND\t\t\t# \tNOT WORTH THE INCREASED OBSCURITY.\n\t\tINDEX\tNDXCDUW\n\t\tMP\tGAINFLTR\n\t\tTS\tL\t\t# INCR TO OFFSET, UNLIMITED\n\t\tCA\tDUNFVLIM\t# SAME LIMIT FOR Y AND Z\n\t\tTC\tLIMITSUB\t# YIELDS INCR TO OFFSET, LIMITED\n\t\tAD\tTEM3\t\t# ORIGINAL OFFSET\n\t\tTS\tL\t\t# TOTAL OFFSET, UNLIMITED\n\t\tCA\tUNFVLIM\t\t# SAME LIMIT FOR Y AND Z\n\t\tTC\tLIMITSUB\t# YIELDS TOTAL OFFSET, LIMITED\n\t\tTC\tTEM2\n\n# SUBR TO TEST THE ANGLE BETWEEN THE PROPOSED WINDOW AND THRUST CMD VCTS\n\nUNWCTEST \tDOT\tDSQ\n\t\t\tUNX/2\n\t\tDSU\tBMN\n\t\t\tDOTSWFMX\n\t\t\tDCMCL\n\t\tSSP\tRVQ\t\t# RVQ FOR ALT CHOICE IF DOT MAGN TOO LARGE\n\t\t\tFLAGOODW\t# \tZEROING WINDOW GOOD FLAG\n\t\t\t0\n\n# Page 920\n# NB2CDUSP RETURNS THE 2'S COMPLEMENT, PI, SP CDU ANGLES X,Y,Z IN MPAC,+1,+2 GIVEN THE MATRIX WHOSE ROW VECTORS\n# ARE THE SEMI-UNIT NAV BASE VECTORS X,Y,X EXPRESSED IN STABLE MEMBER COORDINATES, LOCATED AT 0 IN THE PUSH LIST.\n# NB2CDUSP USES THE ARCTRGSP WHICH HAS A MAXIMUM ERROR OF +-4 BITS.\n\nNB2CDUSP\tDLOAD\tDSQ\n\t\t\t2\n\t\tBDSU\tBPL\n\t\t\tDP1/4TH\n\t\t\t+3\n\t\tDLOAD\n\t\t\tZEROVECS\t# IN CASE SIN WAS SLIGHTLY > 1/2\n\t\tSQRT\tEXIT\t\t# YIELDS COS(CDUZ) IN UNITS OF 2\n\n\t\tEXTEND\n\t\tDCA\tMPAC\n\t\tDDOUBL\n\t\tTS\tTEM5\n\t\tTCF\t+3\n\t\tCA\tPOSMAX\t\t# OVERFLOW.  FETCH POSMAX, MPAC ALWAYS POS\n\t\tTS\tTEM5\t\t# COS(CDUZ) IN TEM5, UNITS 1\n\n\t\tINDEX\tFIXLOC\n\t\tCA\t2\n\t\tLXCH\tMPAC\n\t\tTC\tARCTRGSP\n\t\tTS\tMPAC +2\t\t# CDUZ\n\n\t\tCA\tZERO\n\t\tTC\tDVBYCOSM\n\t\tCA\tFOUR\n\t\tTC\tDVBYCOSM\n\t\tCS\tTEM1\n\t\tTC\tARCTRGSP\n\t\tTS\tMPAC +1\t\t# CDUY\n\n\t\tCA\tBIT4\n\t\tTC\tDVBYCOSM\n\t\tCA\t16OCT\n\t\tTC\tDVBYCOSM\n\t\tCS\tTEM1\n\t\tTC\tARCTRGSP\n\t\tTS\tMPAC\t\t# CDUX\n\n\t\tTC\tINTPRET\n\t\tRVQ\n\n16OCT\t\tOCT\t16\n\n# Page 921\n# THE ELEMENTS OF THE NAV BASE MATRIX WHICH WE MUST DIVIDE BY COS(MGA)\n# ALREADY CONTAIN COS(MGA)/2 AS A FACTOR. THEREFORE THE QUOTIENT SHOULD\n# ORDINARILY NEVER EXCEED 1/2 IN MAGNITUDE.  BUT IF THE MGA IS NEAR PI/2\n# THEN COS(MGA) IS NEAR ZERO, AND THERE MAY BE SOME CHAFF IN THE OTHER\n# ELEMENTS OF THE MATRIX WHICH WOULD PRODUCE CHAOS UNDER DIVISION.\n# BEFORE DIVIDING WE MAKE SURE COS(MGA) IS AT LEAST ONE BIT LARGER\n# THAN THE MAGNITUDE OF THE HIGH ORDER PART OF THE OPERAND.\n#\n# IF ONE OR MORE DIVIDES CANNOT BE PERFORMED, THIS MEANS THAT THE\n# REQUIRED MGA IS VERY NEARLY +-PI/2 AND THEREFORE THE OTHER GIMBAL\n# ANGLES ARE INDETERMINATE.  THE INNER AND OUTER GIMBAL ANGLES RETURNED\n# IN THIS CASE WILL BE RANDOM MULTIPLES OF PI/2.\n\nDVBYCOSM\tAD\tFIXLOC\n\t\tTS\tADDRWD\t\t# ADRES OF OPERAND\n\n\t\tINDEX\tADDRWD\t\t# FETCH NEG ABS OF OPERAND, AD TEM5, AND\n\t\tCA\t0\t\t#\tSKIP DIVIDE IF RESULT NEG OR ZERO\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tCOM\n\t\tAD\tTEM5\t\t# C(A) ZERO OR NEG, C(TEM5) ZERO OR POS\n\t\tEXTEND\n\t\tBZMF\tTSL&TCQ\t\t# DIFFERENCE ALWAYS SMALL IF BRANCH\n\n\t\tEXTEND\t\t\t# TEM5 EXCEEDS ABS HIGH ORDER PART OF\n\t\tINDEX\tADDRWD\t\t#\tOPERAND BY AT LEAST ONE BIT.\n\t\tDCA\t0\t\t#\tTHEREFORE IT EXCEEDS THE DP OPERAND\n\t\tEXTEND\t\t\t# \tAND DIVISION WILL ALWAYS SUCCEED.\n\t\tDV\tTEM5\nTSL&TCQ\t\tTS\tL\n\t\tLXCH\tTEM1\n\t\tTC\tQ\n\n# Page 922\n# ARCTRGSP RETURNS THE 2'S COMPLEMENT, PI, SP ANGLE IN THE A REGISTER GIVEN ITS SINE IN A AND ITS COSINE IN L IN\n# UNITS OF 2.  THE RESULT IS AN UNAMBIGUOUS ANGLE ANYWHERE IN THE CIRCLE, WITH A MAXIMUM ERROR OF +-4 BITS.\n# THE ERROR IS PRODUCED BY THE SUBROUTINE SPARCSIN WHICH IS USED ONLY IN THE REGION +-45 DEGREES.\n\nARCTRGSP\tEXTEND\n\t\tBZF\tSINZERO\t\t# TO AVOID DIVIDING BY ZERO\n\n\t\tEXTEND\n\t\tQXCH\tTEM4\n\t\tTS\tTEM2\n\t\tCA\tL\n\t\tTS\tTEM3\n\t\tCA\tZERO\n\t\tEXTEND\n\t\tDV\tTEM2\n\t\tEXTEND\n\t\tBZF\tUSECOS\n\n\t\tCCS\tTEM3\t\t# SIN IS SMALLER OR EQUAL\n\t\tCA\tZERO\n\t\tTCF\t+4\n\t\tCS\tTEM2\t\t# IF COS NEG, REVERSE SIGN OF SIN,\n\t\tTS\tTEM2\t\t#\tANGLE = PI-ARCSIN(SIN)\n\t\tCA\tNEGMAX\t\t# PICK UP PI, 2'S COMPLEMENT\n\t\tTS\tTEM3\t\t# WE NO LONGER NEED COS\n\t\tCA\tTEM2\n\t\tTC\tSPARCSIN -1\n\t\tTC\tONESTO2S\n\t\tEXTEND\n\t\tMSU\tTEM3\n1TO2&TCQ\tTC\tONESTO2S\n\t\tTC\tTEM4\n\nUSECOS\t\tCS\tTEM3\t\t# COS IS SMALLER\n\t\tTC\tSPARCSIN -1\t# ANGLE = SIGN(SIN)(FI/2-ARCSIN(COS))\n\t\tAD\tHALF\n\t\tTS\tTEM3\t\t# WE NO LONGER NEED COS\n\t\tCCS\tTEM2\n\t\tCA\tTEM3\n\t\tTCF\t1TO2&TCQ\n\t\tCS\tTEM3\n\t\tTCF\t1TO2&TCQ\n\nSINZERO\t\tCCS\tL\n\t\tCA\tZERO\n\t\tTC\tQ\n\t\tCA\tNEGMAX\t\t# PI, 2'S COMP\n\t\tTC\tQ\n\n# Page 923\n# SPARCSIN TAKES AN ARGUMENT SCALED UNITY IN A AND RETURNS AN ANGLE SCALED\n# 180 DEGREES IN A.  IT HAS BEEN UNIT TESTED IN THE REGION +-.94 (+-70\n# DEGREES) AND THE MAXIMUM ERROR IS +-5 BITS WITH AN AVERAGE TIME OF\n# 450 MICROSECONDS.  SPARCSIN -1 TAKES THE ARGUMENT SCALED TWO.  (BOB CRISP)\n\n\t\tDOUBLE\nSPARCSIN\tTS\tSR\n\t\tTCF\t+4\n\t\tINDEX\tA\n\t\tCS\tLIMITS\n\t\tTS\tSR\n\t\tEXTEND\n\t\tMP\tA\n\t\tTS\tTEM1\n\t\tEXTEND\n\t\tMP\tDPL9\n\t\tAD\tDPL7\n\t\tEXTEND\n\t\tMP\tTEM1\n\t\tAD\tDPL5\n\t\tEXTEND\n\t\tMP\tTEM1\n\t\tAD\tDPL3\n\t\tEXTEND\n\t\tMP\tTEM1\n\t\tAD\tDPL1\n\t\tEXTEND\n\t\tMP\tSR\n\t\tTC\tQ\nDPL1\t\tDEC\t10502\nDPL3\t\tDEC\t432\nDPL5\t\tDEC\t7300\nDPL7\t\tDEC\t-11803\nDPL9\t\tDEC\t8397\n\n# Page 924\n# LIMITSUB LIMITS THE MAGNITUDE OF THE POSITIVE OR NEGATIVE VARIABLE\n# ARRIVING IN L TO THE POSITIVE LIMIT ARRIVING IN A.\n# THE SIGNED LIMITED VARIABLE IS RETURNED IN A.\n#\n# VERSION COUTESY HUGH BLAIR-SMITH\n\nLIMITSUB\tTS\tTEM1\n\t\tCA\tZERO\n\t\tEXTEND\n\t\tDV\tTEM1\n\t\tCCS\tA\n\t\tLXCH\tTEM1\n\t\tTCF\t+2\n\t\tTCF\t+3\n\t\tCA\tL\n\t\tTC\tQ\n\t\tCS\tTEM1\n\t\tTC\tQ\n\n# SUBROUTINE TO CONVERT 1'S COMP SP TO 2'S COMP\n\nONESTO2S\tCCS\tA\n\t\tAD\tONE\n\t\tTC\tQ\n\t\tCS\tA\n\t\tTC\tQ\n\n# NO ATTITUDE CONTROL\n\nNOATTCNT\tTC\tALARM\n\t\tOCT\t00402\t\t# NO ATTITUDE CONTROL\n\n +2\t\tINHINT\t\t\t# COME HERE FOR NOATTCNT WITHOUT ALARM\n \t\tTC\tIBNKCALL\t# RELINT AT TC INTPRET AFTER TCQCDUW\n\t\tFCADR\tSTOPRATE\n\t\tTCF\tTCQCDUW\t\t# RETURN TO USER SKIPPING AUTOPILOT CMDS\n\n# MIDDLE GIMBAL ANGLE ALARM\n\nALARMMGA\tTC\tALARM\n\t\tOCT\t00401\n\t\tTCF\tMGARET\n\n# Page 925\n#******************************************************************\n# CONSTANTS\n#******************************************************************\n\n# ADDRESS CONSTANTS\n\nECDUWL\t\tECADR\tECDUW\n\n# THRUST DIRECTION FILTER CONSTANTS\n\nGAINFLTR\tDEC\t.2\t\t# GAIN FILTER SANS CSM\n\t\tDEC\t.1\t\t# GAIN FILTER WITH CSM\n\nDUNFVLIM\tDEC\t.007 B-1\t# 7 MR MAX CHG IN F DIR IN VEH IN 2 SECS.\n\t\t\t\t\t# THIS DOES NOT ALLOW FOR S/C ROT RATE.\n\nUNFVLIM\t\tDEC\t.129 B-1\t# 129 MR MAX THRUST OFFSET.  105 MR TRAVEL\n\t\t\t\t\t# +10MR DEFL+5MR MECH MOUNT+9MR ABLATION.\n\n# CONSTANT RELATED TO GIMBAL ANGLE COMPUTATIONS\n\nDOTSWFMX\tDEC\t.93302 B-4\t# LIM COLNRTY OF UNWC/2 & UNFC/2 TO 85 DEG\n\t\t\t\t\t# LOWER PART COMES FROM NEXT CONSTANT\n\nDAXMAX\t\tDEC\t.11111111111\t# DELATTX LIM TO 20 DEG IN 2 SECS, 1'S, PI\n\t\tDEC\t.0111111111\t# 2 DEG WHEN CSM DOCKED\n\nDAY/2MAX\tDEC\t.05555555555\t# LIKEWISE FOR DELATTY\n\t\tDEC\t.0055555555\n\nDAZMAX\t\t=\tDAXMAX\t\t# LIKEWISE FOR DELATTZ\n\nCDUZDLIM\tDEC\t.3888888888\t# 70 DEG LIMIT FOR MGA, 1'S, PI\n\n# CONSTANTS FOR DATA TRANSFER\n\nDT/DELT\t\tDEC\t.05\t\t# .1 SEC/2 SEC WHICH IS THE AUTOPILOT\n\t\t\t\t\t# CONTROL SAMPLE PERIOD/COMPUTATION PERIOD\n\nDELERLIM\t=\tDAY/2MAX\t# \t0 DEG LIMIT FOR LAG ANGLES, 1'S, PI\n\n# *** END OF FLY\t.132 ***\n"
  },
  {
    "path": "Luminary099/FIXED_FIXED_CONSTANT_POOL.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tFIXED_FIXED_CONSTANT_POOL.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1095-1099\n# Mod history:\t2009-05-25 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1095\n\t\tBLOCK\t02\n\n\t\tCOUNT*\t$$/FCONS\n# THE FOLLOWING TABLE OF 18 VALUES IS INDEXED. DO NOT INSERT OR REMOVE ANY QUANTITIES\n\nDPOSMAX\t\tOCT\t37777\t\t# MUST PRECEDE POSMAX\nPOSMAX\t\tOCT\t37777\n\nLIMITS\t\t=\tNEG1/2\n\nNEG1/2\t\tOCT\t-20000\t\t# USED BY SIN ROUTINE (MUST BE TWO\n\t\t\t\t\t# LOCATIONS IN FRONT OF BIT14)\n\n# BIT TABLE\n\nBIT15\t\tOCT\t40000\nBIT14\t\tOCT\t20000\nBIT13\t\tOCT\t10000\nBIT12\t\tOCT\t04000\nBIT11\t\tOCT\t02000\nBIT10\t\tOCT\t01000\nBIT9\t\tOCT\t00400\nBIT8\t\tOCT\t00200\nBIT7\t\tOCT\t00100\nBIT6\t\tOCT\t00040\nBIT5\t\tOCT\t00020\nBIT4\t\tOCT\t00010\nBIT3\t\tOCT\t00004\nBIT2\t\tOCT\t00002\nBIT1\t\tOCT\t00001\n\n# DO NOT DESTROY THIS COMBINATION, SINCE IT IS USED IN DOUBLE PRECISION INSTRUCTIONS.\nNEG0\t\tOCT\t-0\t\t# MUST PRECEDE ZERO\nZERO\t\tOCT\t0\t\t# MUST FOLLOW NEG0\n# BIT1\t\tOCT\t00001\n# NO.WDS\tOCT\t2\t\t# INTERPRETER\n# OCTAL3\tOCT\t3\t\t# INTERPRETER\n# R3D1\t\tOCT\t4\t\t# PINBALL\nFIVE\t\tOCT\t5\n# REVCNT\tOCT\t6\t\t# INTERPRETER\nSEVEN\t\tOCT\t7\n# BIT4\t\tOCT\t00010\n# R2D1\t\tOCT\t11\t\t# PINBALL\nOCT11\t\t=\tR2D1\t\t# P20S\n# BINCON\tDEC\t10\t\t# PINBALL\t     (OCTAL 12)\nELEVEN\t\tDEC\t11\n# OCT14\t\tOCT\t14\t\t# ALARM AND ABORT (FILLER)\nOCT15\t\tOCT\t15\n# R1D1\t\tOCT\t16\t\t# PINBALL\nLOW4\t\tOCT\t17\n# Page 1096\n# BIT5\t\tOCT\t00020\n# ND1\t\tOCT\t21\t\t# PINBALL\n# VD1\t\tOCT\t23\t\t# PINBALL\n# OCT24\t\tOCT\t24\t\t# SERVICE ROUTINES\n# MD1\t\tOCT\t25\t\t# PINBALL\nBITS4&5\t\tOCT\t30\n# OCT31\t\tOCT\t31\t\t# SERVICE ROUTINES\nOCT33\t\tOCT\t33\nDEC27\t\t=\tOCT33\nOCT35\t\tOCT\t35\nDEC29\t\t=\tOCT35\nCALLCODE\tOCT\t00032\n# LOW5\t\tOCT\t37\t\t# PINBALL\n# 33DEC\t\tDEC\t33\t\t# PINBALL\t     (OCTAL 41)\n# 34DEC\t\tDEC\t34\t\t# PINBALL\t     (OCTAL 42)\nTBUILDFX\tDEC\t37\t\t# BUILDUP FOR CONVIENCE IN DAPTESTING\nTDECAYFX\tDEC\t38\t\t# CONVENIENCE FOR DAPTESTING\n# BIT6\t\tOCT\t00040\nOCT50\t\tOCT\t50\nDEC45\t\tDEC\t45\nSUPER011\tOCT\t60\t\t# BITS FOR SUPERBNK SETTING 011.\n.5SEC\t\tDEC\t50\n# BIT7\t\tOCT\t00100\n\nSUPER100\t=\tBIT7\t\t# BITS FOR SUPERBNK SETTING 100\n\t\t\t\t\t# (LAST 4K OF ROPE)\nSUPER101\tOCT\t120\t\t# BITS FOR SUPERBNK SETTING 101\n# OCT121\tOCT\t121\t\t# SERVICE ROUTINES\n\t\t\t\t\t# (FIRST 8K OF ACM)\nSUPER110\tOCT\t140\t\t# BITS FOR SUPERBNK SETTING 110.\n\t\t\t\t\t# (LAST 8K OF ACM)\n1SEC\t\tDEC\t100\n# LOW7\t\tOCT\t177\t\t# INTERPRETER\n# BIT8\t\tOCT\t00200\n# OT215\t\tOCT\t215\t\t# ALARM AND ABORT\n# 8,5\t\tOCT\t00220\t\t# P20-P25 SUNDANCE\n2SECS\t\tDEC\t200\n# LOW8\t\tOCT\t377\t\t# PINBALL\n# BIT9\t\tOCT\t00400\nGN/CCODE\tOCT\t00401\t\t# SET S/C CONTROL SWITCH TO G/N\n3SECS\t\tDEC\t300\n4SECS\t\tDEC\t400\nLOW9\t\tOCT\t777\n# BIT10\t\tOCT\t01000\n# 5.5DEGS\tDEC\t.03056\t\t# P20-P25 SUNDANCE   (OCTAL 00765)\n# OCT1103\tOCT\t1103\t\t# ALARM AND ABORT\nC5/2\t\tDEC\t.0363551\t#\t\t     (OCTAL 01124)\nV05N09\t\tVN\t0509\t\t# (SAME AS OCTAL 1211)\nOCT1400\t\tOCT\t01400\nV06N22\t\tVN\t0622\n# Page 1097\n# MID5\t\tOCT\t1740\t\t# PINBALL\nBITS2-10\tOCT\t1776\nLOW10\t\tOCT\t1777\n# BIT11\t\tOCT\t02000\n# 2K+3\t\tOCT\t2003\t\t# PINBALL\nLOW7+2K\t\tOCT\t2177\t\t# OP CODE MASK + BANK 1 FBANK SETTING.\nEBANK5\t\tOCT\t02400\nPRIO3\t\tOCT\t03000\nEBANK7\t\tOCT\t03400\n# LOW11\t\tOCT\t3777\t\t# PINBALL\n# BIT12\t\tOCT\t04000\n# RELTAB\tOCT\t04025\t\t# T4RUPT\nPRIO5\t\tOCT\t05000\nPRIO6\t\tOCT\t06000\nPRIO7\t\tOCT\t07000\n\n# BIT13\t\tOCT\t10000\n#\t\tOCT\t10003\t\t# T4RUPT     RELTAB +1D\n# 13,7,2\tOCT\t10102\t\t# P20-P25 SUNDANCE\nPRIO11\t\tOCT\t11000\n# PRIO12\tOCT\t12000\t\t# BANKCALL\nPRIO13\t\tOCT\t13000\nPRIO14\t\tOCT\t14000\n#\t\tOCT\t14031\t\t# T4RUPT     RELTAB +2D\nPRIO15\t\tOCT\t15000\nPRIO16\t\tOCT\t16000\n# 85DEGS\tDEC\t.45556\t\t# P20-P25 SUNDANCE   (OCTAL 16450)\nPRIO17\t\tOCT\t17000\nOCT17770\tOCT\t17770\n# BIT14\t\tOCT\t20000\n#\t\tOCT\t20033\t\t# T4RUPT     RELTAB +3D\nPRIO21\t\tOCT\t21000\n\t\tBLOCK\t03\n\t\tCOUNT*\t$$/FCONS\nPRIO22\t\tOCT\t22000\t\t# SERVICE ROUTINES\nPRIO23\t\tOCT\t23000\nPRIO24\t\tOCT\t24000\n# 5/8+1\t\tOCT\t24001\t\t# SINGLE PRECISION SUBROUTINES\n#\t\tOCT\t24017\t\t# T4RUPT     RELTAB +4D\nPRIO25\t\tOCT\t25000\nPRIO26\t\tOCT\t26000\nPRIO27\t\tOCT\t27000\n# CHRPRIO\tOCT\t30000\t\t# PINBALL\n#\t\tOCT\t30036\t\t# T4RUPT     RELTAB +5D\nPRIO31\t\tOCT\t31000\nC1/2\t\tDEC\t.7853134\t#\t\t     (OCTAL 31103)\nPRIO32\t\tOCT\t32000\nPRIO33\t\tOCT\t33000\nPRIO34\t\tOCT\t34000\n#\t\tOCT\t34034\t\t# T4RUPT     RELTAB +6D\n# Page 1098\nPRIO35\t\tOCT\t35000\nPRIO36\t\tOCT\t36000\nPRIO37\t\tOCT\t37000\n63/64+1\t\tOCT\t37401\n# MID7\t\tOCT\t37600\t\t# PINBALL\nOCT37766\tOCT\t37766\nOCT37774\tOCT\t37774\nOCT37776\tOCT\t37776\n# DPOSMAX\tOCT\t37777\n# BIT15\t\tOCT\t40000\n# OCT40001\tOCT\t40001\t\t# INTERPRETER  ( CS   1   INSTRUCTION)\nDLOADCOD\tOCT\t40014\nDLOAD*\t\tOCT\t40015\n#\t\tOCT\t40023\t\t# T4RUPT     RELTAB +7D\nBIT15+6\t\tOCT\t40040\nOCT40200\tOCT\t40200\n#\t\tOCT\t44035\t\t# T4RUPT    RELTAB +8D\n#\t\tOCT\t50037\t\t# T4RUPT     RELTAB +9D\n#\t\tOCT\t54000\t\t# T4RUPT     RELTAB +10D\n-BIT14\t\tOCT\t57777\n# RELTAB11\tOCT\t60000\t\t# T4RUPT\nC3/2\t\tDEC\t-.3216147\t#\t\t     (OCTAL 65552)\n13,14,15\tOCT\t70000\n-1/8\t\tOCT\t73777\nHIGH4\t\tOCT\t74000\n-ENDERAS\tDEC\t-2001\t\t#\t\t     (OCTAL 74056)\n# HI5\t\tOCT\t76000\t\t# PINBALL\nHIGH9\t\tOCT\t77700\n# -ENDVAC\tDEC\t-45\t\t# INTERPRETER\t     (OCTAL 77722)\n# -OCT10\tOCT\t-10\t\t#\t\t      (OCT 77767)\n# NEG4\t\tDEC\t-4\t\t#\t\t     (OCTAL 77773)\nNEG3\t\tDEC\t-3\nNEG2\t\tOCT\t77775\nNEGONE\t\tDEC\t-1\n\n# Page 1099\n\n# DEFINED BY EQUALS\n\n# IT WOULD BE TO THE USERS ADVANTAGE TO OCCASIONALLY CHECK ANY OF THESE SYMBOLS IN ORDER TO PREVENT ANY\n# ACCIDENTAL DEFINITION CHANGES.\n\nMINUS1\t\t=\tNEG1\nNEG1\t\t=\tNEGONE\nONE\t\t=\tBIT1\nTWO\t\t=\tBIT2\nTHREE\t\t=\tOCTAL3\nLOW2\t\t=\tTHREE\nFOUR\t\t=\tBIT3\nSIX\t\t=\tREVCNT\nLOW3\t\t=\tSEVEN\nEIGHT\t\t=\tBIT4\nNINE\t\t=\tR2D1\nTEN\t\t=\tBINCON\nNOUTCON\t\t=\tELEVEN\nOCT23\t\t=\tVD1\nOCT25\t\t=\tMD1\nPRIO1\t\t=\tBIT10\nEBANK3\t\t=\tOCT1400\nPRIO2\t\t=\tBIT11\nOCT120\t\t=\tSUPER101\nOCT140\t\t=\tSUPER110\n2K\t\t=\tBIT11\nEBANK4\t\t=\tBIT11\nPRIO4\t\t=\tBIT12\nEBANK6\t\t=\tPRIO3\nQUARTER\t\t=\tBIT13\nPRIO10\t\t=\tBIT13\nOCT10001\t=\tCCSL\nPOS1/2\t\t=\tHALF\nPRIO20\t\t=\tBIT14\nHALF\t\t=\tBIT14\nPRIO30\t\t=\tCHRPRIO\nBIT13-14\t=\tPRIO30\t\t# INTERPRETER USES IN PROCESSING STORECODE\nOCT30002\t=\tTLOAD +1\nB12T14\t\t=\tPRIO34\nNEGMAX\t\t=\tBIT15\nVLOADCOD\t=\tBIT15\nVLOAD*\t\t=\tOCT40001\nOCT60000\t=\tRELTAB11\nBANKMASK\t=\tHI5\n\n"
  },
  {
    "path": "Luminary099/FLAGWORD_ASSIGNMENTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tFLAGWORD_ASSIGNMENTS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t0061-0089\n# Mod history:\t2009-05-15 OH\tTranscribed from page images.\n#\t\t2009-05-17 RSB\tExtended to (blank) p. 89.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n\n# Page 61\n# FLAGWORDS 0-11\tARE DOWNLINKED AND CAN BE SET AND CLEARED BY UP-FLAG AND DOWN-FLAG INSTRUCTIONS IN THE\n#\t\t\tINTERPRETER.  THESE WERE PREVIOUSLY LISTED UNDER \"INTERPRETIVE SWITCH BIT ASSIGNMENTS\" IN\n#\t\t\tTHE ERASABLE LOG SECTION.  FLAGWORDS 12 & 13 WERE PREVIOUSLY RADMODES AND DAPBOOLS AND\n#\t\t\tARE STILL DOWNLINKED UNDER THOSE NAMES.\n\n# \t\tALPHABETICAL LIST OF FLAGWORDS\n\n#\n# FLAGWORD\tDEC. NUMBER\tBIT AND FLAG\t\tBIT NAME\n\n# ACCOKFLG\t207\t\tBIT  3 FLAG 13\t\tACCSOKAY\n# ACC4-2FL\t199\t\tBIT 11 FLAG 13\t\tACC4OR2X\n# ACMODFLG\t032\t\tBIT 13 FLAG  2\t\tACMODBIT\n# ALTSCALE\t186\t\tBIT  9 FLAG 12\t\tALTSCBIT\n# ANTENFLG\t183\t\tBIT 12 FLAG 12\t\tANTENBIT\n# AORBSFLG\t205\t\tBIT  5 FLAG 13\t\tAORBSYST\n# AORBTFLG\t200\t\tBIT 10 FLAG 13\t\tAORBTRAN\n# APSESW\t130\t\tBIT  5 FLAG  8\t\tAPSESBIT\n# APSFLAG\t152\t\tBIT 13 FLAG 10\t\tAPSFLBIT\n# ASTNFLAG\t108\t\tBIT 12 FLAG  7\t\tASTNBIT\n# ATTFLAG\t104\t\tBIT  1 FLAG  6\t\tATTFLBIT\n# AUTOMODE\t193\t\tBIT  2 FLAG 12\t\tAUTOMBIT\n# AUTR1FLG\t209\t\tBIT  1 FLAG 13\t\tAUTRATE1\n# AUTR2FLG\t208\t\tBIT  2 FLAG 13\t\tAUTRATE2\n# AUXFLAG\t103\t\tBIT  2 FLAG  6\t\tAUXFLBIT\n# AVEGFLAG\t115\t\tBIT  5 FLAG  7\t\tAVEGFBIT\n# AVEMIDSW\t149\t\tBIT  1 FLAG  9\t\tAVEMDBIT\n# AVFLAG\t040\t\tBIT  5 FLAG  2\t\tAVFLBIT\n# CALCMAN2\t043\t\tBIT  2 FLAG  2\t\tCALC2BIT\n# CALCMAN3\t042\t\tBIT  3 FLAG  2\t\tCALC3BIT\n# CDESFLAG\t180\t\tBIT 15 FLAG 12\t\tCDESBIT\n# CMOONFLG\t123\t\tBIT 12 FLAG  8\t\tCMOONBIT\n# COGAFLAG\t131\t\tBIT  4 FLAG  8\t\tCOGAFBIT\n# CSMDKFLG\t197\t\tBIT 13 FLAG 13\t\tCSMDOCKD\n# CULTFLAG\t053\t\tBIT  7 FLAG  3\t\tCULTBIT\n# DAPBOOLS\t\t\tFLGWRD13\n# DBSELFLG\t206\t\tBIT  4 FLAG 13\t\tDBSELECT\n# DESIGFLG\t185\t\tBIT 10 FLAG 12\t\tDESIGBIT\n# DIDFLAG\t016\t\tBIT 14 FLAG\t\tDIDFLBIT\n# DIMOFLAG\t059\t\tBIT  1 FLAG  3\t\tDIMOBIT\n# DMENFLG\t081\t\tBIT  9 FLAG  5\t\tDMENFBIT\n# DRIFTDFL\t202\t\tBIT  8 FLAG 13\t\tDRIFTBIT\n# DRIFTFLG\t030\t\tBIT 15 FLAG  2\t\tDRFTBIT\n# DSKYFLAG\t075\t\tBIT 15 FLAG  5\t\tDSKYFBIT\n# Page 62\n# D6OR9FLG\t058\t\tBIT  2 FLAG  3\t\tD6OR9BIT\n# ENGONFLG\t083\t\tBIT  7 FLAG  5\t\tENGONBIT\n# ERADFLAG\t017\t\tBIT 13 FLAG  1\t\tERADFBIT\n# ETPIFLAG\t038\t\tBIT  7 FLAG  2\t\tETPIBIT\t\tEQUIVALENT FLAG NAME: DPTNSW\n# FINALFLG\t039\t\tBIT  6 FLAG  2\t\tFINALBIT\n# FLAGWRD0\t(000-014)\t(STATE +0)\n# FLAGWRD1\t(015-029)\t(STATE +1)\n# FLAGWRD2\t(030-044)\t(STATE +2)\n# FLAGWRD3\t(045-059)\t(STATE +3)\n# FLAGWRD4\t(060-074)\t(STATE +4)\n# FLAGWRD5\t(075-089)\t(STATE +5)\n# FLAGWRD6\t(090-104)\t(STATE +6)\n# FLAGWRD7\t(105-119)\t(STATE +7)\n# FLAGWRD8\t(120-134)\t(STATE +8D)\n# FLAGWRD9\t(135-149)\t(STATE +9D)\n# FLAP\t\t142\t\tBIT  8 FLAG  9\t\tFLAPBIT\n# FLGWRD10\t(150-164)\t(STATE +10D)\n# FLGWRD11\t(165-179)\t(STATE +11D)\n# FLGWRD12\t(180-194)\t(STATE +12D)\n# FLGWRD13\t(195-209)\t(STATE +13D)\n# FLPC\t\t138\t\tBIT 12 FLAG  9\t\tFLPCBIT\n# FLPI\t\t139\t\tBIT 11 FLAG  9\t\tFLPIBIT\n# FLRCS\t\t149\t\tBIT 10 FLAG  9\t\tFLRCSBIT\n# FLUNDISP\t125\t\tBIT 10 FLAG  8\t\tFLUNDBIT\n# FLVR\t\t136\t\tBIT 14 FLAG  9\t\tFLVRBIT\n# FREEFLAG\t012\t\tBIT  3 FLAG  0\t\tFREEFBIT\n# FSPASFLG\t005\t\tBIT 10 FLAG  0\t\tFSPASBIT\n# GLOKFAIL\t046\t\tBIT 14 FLAG  3\t\tGLOKFBIT\n# GMBDRVSW\t095\t\tBIT 10 FLAG  6\t\tGMBDRBIT\n# GUESSW\t028\t\tBIT  2 FLAG  1\t\tGUESSBIT\n# HFLSHFLG\t179\t\tBIT  1 FLAG 11\t\tHFLSHBIT\n# IDLEFLAG\t113\t\tBIT  7 FLAG  7\t\tIDLEFBIT\n# IGNFLAG\t107\t\tBIT 13 FLAG  7\t\tIGNFLBIT\n# IMPULSW\t036\t\tBIT  9 FLAG  2\t\tIMPULBIT\n# IMUSE\t\t007\t\tBIT  8 FLAG  0\t\tIMUSEBIT\n# INFINFLG\t128\t\tBIT  7 FLAG  8\t\tINFINBIT\n# INITALGN\t133\t\tBIT  2 FLAG  8\t\tINITABIT\n# INTFLAG\t151\t\tBIT 14 FLAG 10\t\tINTFLBIT\n# INTYPFLG\t056\t\tBIT  4 FLAG  3\t\tINTYPBIT\n# ITSWICH\t105\t\tBIT 15 FLAG  7\t\tITSWBIT\n# JSWITCH\t001\t\tBIT 14 FLAG  0\t\tJSWCHBIT\n# LETABORT\t141\t\tBIT  9 FLAG  9\t\tLETABBIT\n# LMOONFLG\t124\t\tBIT 11 FLAG  8\t\tLMOONBIT\n# LOKONSW\t010\t\tBIT  5 FLAG  0\t\tLOKONBIT\n# LOSCMFLG\t033\t\tBIT 12 FLAG  2\t\tLOSCMBIT\n# LRALTFLG\t190\t\tBIT  5 FLAG 12\t\tLRALTBIT\n# LRBYPASS\t165\t\tBIT 15 FLAG 11\t\tLRBYBIT\n# LRINH\t\t172\t\tBIT  8 FLAG 11\t\tLRINHBIT\n# LRPOSFLG\t189\t\tBIT  6 FLAG 12\t\tLRPOSBIT\n# LRVELFLG\t187\t\tBIT  8 FLAG 12\t\tLRVELBIT\n# Page63\n# LUNAFLAG\t048\t\tBIT 12 FLAG  3\t\tLUNABIT\n# MANUFLAG\t106\t\tBIT 14 FLAG  7\t\tMANUFBIT\n# MGLVFLAG\t088\t\tBIT  2 FLAG  5\t\tMGLVFBIT\n# MIDAVFLG\t148\t\tBIT  2 FLAG  9\t\tMIDAVBIT\n# MIDFLAG\t002\t\tBIT 13 FLAG  0\t\tMIDFLBIT\n# MID1FLAG\t147\t\tBIT  3 FLAG  9\t\tMID1BIT\n# MKOVFLAG\t072\t\tBIT  3 FLAG  4\t\tMKOVBIT\n# MOONFLAG\t003\t\tBIT 12 FLAG  0\t\tMOONBIT\n# MRKIDFLG\t060\t\tBIT 15 FLAG  4\t\tMRKIDBIT\n# MRKNVFLG\t066\t\tBIT  9 FLAG  4\t\tMRKNVBIT\n# MRUPTFLG\t070\t\tBIT  5 FLAG  4\t\tMRUPTBIT\n# MUNFLAG\t097\t\tBIT  8 FLAG  6\t\tMUNFLBIT\n# MWAITFLG\t064\t\tBIT 11 FLAG  4\t\tMWAITBIT\n# NEEDLFLG\t011\t\tBIT  4 FLAG  0\t\tNEEDLBIT\n# NEWIFLG\t122\t\tBIT 13 FLAG  8\t\tNEWIBIT\n# NJETSFLG\t015\t\tBIT 15 FLAG\t\tNJETSBIT\n# NODOFLAG\t044\t\tBIT  1 FLAG  2\t\tNODOBIT\n# NOLRREAD\t170\t\tBIT 10 FLAG 11\t\tNOLRRBIT\n# NORMSW\t110\t\tBIT 10 FLAG  7\t\tNORMSBIT\n# NORRMON\t086\t\tBIT  4 FLAG  5\t\tNORRMBIT\n# NOR29FLG\t049\t\tBIT 11 FLAG  3\t\tNR29FBIT\n# NOTHROTL\t078\t\tBIT 12 FLAG  5\t\tNOTHRBIT\n# NOUPFLAG\t024\t\tBIT  6 FLAG  1\t\tNOUPFBIT\n# NRMNVFLG\t067\t\tBIT  8 FLAG  4\t\tNRMNVBIT\n# NRMIDFLG\t062\t\tBIT 13 FLAG  4\t\tNRMIDBIT\n# NRUPTFLG\t071\t\tBIT  4 FLAG  4\t\tNRUPTBIT\n# NTARGFLG\t102\t\tBIT  3 FLAG  6\t\tNTARGBIT\n# NWAITFLG\t065\t\tBIT 10 FLAG  4\t\tNWAITBIT\n# OLDESFLG\t014\t\tBIT  1 FLAG  0\t\tOLDESBIT\n# OPTNSW\t038\t\tBIT  7 FLAG  2\t\tOPTNBIT\t\tEQUIVALENT FLAG NAME: ETPIFLAG\n# ORBWFLAG\t054\t\tBIT  6 FLAG  3\t\tORBWFBIT\n# ORDERSW\t129\t\tBIT  6 FLAG  8\t\tORDERBIT\n# OURRCFLG\t198\t\tBIT 12 FLAG 13\t\tOURRCBIT\n# PDSPFLAG\t063\t\tBIT 12 FLAG  4\t\tPDSPFBIT\n# PFRATFLG\t041\t\tBIT  4 FLAG  2\t\tPFRATBIT\n# PINBRFLG\t069\t\tBIT  6 FLAG  4\t\tPINBRBIT\n# PRECIFLG\t052\t\tBIT  8 FLAG  3\t\tPRECIBIT\n# PRIODFLG\t061\t\tBIT 14 FLAG  1\t\tPRIODBIT\n# PRONVFLG\t068\t\tBIT  7 FLAG  4\t\tPRONVBIT\n# PSTHIGAT\t169\t\tBIT 11 FLAG 11\t\tPSTHIBIT\n# PULSEFLG\t195\t\tBIT 15 FLAG 13\t\tPULSES\n# P21FLAG\t004\t\tBIT 11 FLAG  0\t\tP21FLBIT\n# P25FLAG\t006\t\tBIT  9 FLAG  0\t\tP25FLBIT\n# P39/79SW\t126\t\tBIT  9 FLAG  8\t\tP39SWBIT\n# QUITFLAG\t145\t\tBIT 5 FLAG 9\t\tQUITBIT\n# RADMODES\t\t\tFLGWRD12\n# RASFLAG\t\t\tFLGWRD10\n# RCDUFAIL\t188\t\tBIT  7 FLAG 12\t\tRCDUFBIT\n# RCDU0FLG\t182\t\tBIT 13 FLAG 12\t\tRCDU0BIT\n# READLR\t174\t\tBIT  6 FLAG 11\t\tREADLBIT\n# Page 64\n# READRFLG\t051\t\tBIT  9 FLAG  3\t\tREADRBIT\tEQUIVALENT FLAG NAME FOR R04FLAG\n# READVEL\t175\t\tBIT  5 FLAG 11\t\tREADVBIT\n# REDFLAG\t099\t\tBIT  6 FLAG  6\t\tREDFLBIT\n# REFSMFLG\t047\t\tBIT 13 FLAG  3\t\tREFSMBIT\n# REINTFLG\t158\t\tBIT  7 FLAG 10\t\tREINTBIT\n# REMODFLG\t181\t\tBIT 14 FLAG 12\t\tREMODBIT\n# RENDWFLG\t089\t\tBIT  1 FLAG  5\t\tRENDWBIT\n# REPOSMON\t184\t\tBIT 11 FLAG 12\t\tREPOSBIT\n# RHCSCFLG\t203\t\tBIT  7 FLAG 13\t\tRHCSCALE\n# RNDVZFLG\t008\t\tBIT  7 FLAG  0\t\tRNDVZBIT\n# RNGEDATA\t176\t\tBIT  4 FLAG 11\t\tRNGEDBIT\n# RNGSCFLG\t080\t\tBIT 10 FLAG  5\t\tRNGSCBIT\n# RODFLAG\t018\t\tBIT 12 FLAG  1\t\tRODFLBIT\n# ROTFLAG\t144\t\tBIT  6 FLAG  9\t\tROTFLBIT\n# RPQFLAG\t120\t\tBIT 15 FLAG  8\t\tRPQFLBIT\n# RRDATAFL\t191\t\tBIT  4 FLAG 12\t\tRRDATABT\n# RRNBSW\t009\t\tBIT  6 FLAG  0\t\tRRNBBIT\n# RRRSFLAG\t192\t\tBIT  3 FLAG 12\t\tRRRSBIT\n# RVSW\t\t111\t\tBIT  9 FLAG  7\t\tRVSWBIT\n# R04FLAG\t051\t\tBIT  9 FLAG  3\t\tR04FLBIT\tEQUIVALENT FLAG NAME:  READRFLG\n# R10FLAG\t013\t\tBIT  2 FLAG  0\t\tR10FLBIT\n# R61FLAG\t020\t\tBIT 10 FLAG  1\t\tR61FLBIT\n# R77FLAG\t079\t\tBIT 11 FLAG  5\t\tR77FLBIT\n# SCALBAD\t177\t\tBIT  3 FLAG 11\t\tSCABBIT\n# SLOPESW\t027\t\tBIT  3 FLAG  1\t\tSLOPEBIT\n# SNUFFER\t077\t\tBIT 13 FLAG  5\t\tSNUFFBIT\n# SOLNSW\t087\t\tBIT  3 FLAG  5\t\tSOLNSBIT\n# SRCHOPTN\t031\t\tBIT 14 FLAG  2\t\tSRCHOBIT\n# STATEFLG\t055\t\tBIT  5 FLAG  3\t\tSTATEBIT\n# STEERSW\t034\t\tBIT 11 FLAG  2\t\tSTEERBIT\n# SURFFLAG\t127\t\tBIT  8 FLAG  8\t\tSURFFBIT\n# SWANDISP\t109\t\tBIT 11 FLAG  7\t\tSWANDBIT\n# S32.1F1\t090\t\tBIT 15 FLAG  6\t\tS32BIT1\n# S32.1F2\t091\t\tBIT 14 FLAG  6\t\tS32BIT2\n# S32.1F3A\t092\t\tBIT 13 FLAG  6\t\tS32BIT3A\n# S32.1F3B\t093\t\tBIT 12 FLAG  6\t\tS32BIT3B\n# TFFSW\t\t119\t\tBIT  1 FLAG  7\t\tTFFSWBIT\n# TRACKFLG\t025\t\tBIT  5 FLAG  1\t\tTRACKBIT\n# TURNONFL\t194\t\tBIT  1 FLAG 12\t\tTURNONBT\n# ULLAGFLG\t204\t\tBIT  6 FLAG 13\t\tULLAGER\n# UPDATFLG\t023\t\tBIT  7 FLAG  1\t\tUPDATBIT\n# UPLOCKFL\t116\t\tBIT  4 FLAG 7\t\tUPLOCBIT\n# USEQRFLG\t196\t\tBIT 14 FLAG 13\t\tUSEQRJTS\n# VEHUPFLG\t022\t\tBIT  8 FLAG  1\t\tVEHUPBIT\n# VELDATA\t173\t\tBIT  7 FLAG 11\t\tVELDABIT\n# VERIFLAG\t117\t\tBIT  3 FLAG  7\t\tVERIFBIT\n# VFLAG\t\t050\t\tBIT 10 FLAG  3\t\tVFLAGBIT\n# VFLSHFLG\t178\t\tBIT  2 FLAG 11\t\tVFLSHBIT\n# VINTFLAG\t057\t\tBIT  3 FLAG  3\t\tVINTFBIT\n# VXINH\t\t168\t\tBIT 12 FLAG 11\t\tVXINHBIT\n# Page 65\n# V37FLAG\t114\t\tBIT  6 FLAG  7\t\tV37FLBIT\n# V67FLAG\t112\t\tBIT  8 FLAG  7\t\tV67FLBIT\n# V82EMFLG\t118\t\tBIT  2 FLAG  7\t\tV82EMBIT\n# XDELVFLG\t037\t\tBIT  8 FLAG  2\t\tXDELVBIT\n# XDSPFLAG\t074\t\tBIT  1 FLAG  4\t\tXDSPBIT\n# XORFLG\t171\t\tBIT  9 FLAG 11\t\tXORFLBIT\n# XOVINFLG\t201\t\tBIT  9 FLAG 13\t\tXOVINHIB\n# 3AXISFLG\t084\t\tBIT  6 FLAG  5\t\t3AXISBIT\n# 360SW\t\t134\t\tBIT  1 FLAG  8\t\t360SWBIT\n\n# ASSIGNMENT AND DESCRIPTION OF FLAGWORDS\n\nFLAGWRD0\t=\tSTATE +0\t\t# (000-014)\n\n\t\t\t\t\t\t#  \t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 0\t(S)\n\t\t=\t000D\n\t\t=\tBIT15\n\n# BIT 14 FLAG 0\t(S)\nJSWITCH\t\t=\t001D\t\t\t# \tINTEGRATION OF W\tINTEGRATION OF STATE\nJSWCHBIT\t=\tBIT14\t\t\t#\tMATRIX\t\t\tVECTOR\n\n# BIT 13 FLAG 0\t(S)\nMIDFLAG\t\t=\t002D\t\t\t# \tINTEGRATION WITH\tINTEGRATION WITHOUT\n\t\t\t\t\t\t# \tSECONDARY BODY AND\tSOLAR PERTURBATIONS\nMIDFLBIT\t=\tBIT13\t\t\t# \tSOLAR PERTURBATIONS\n\n# BIT 12 FLAG 0\t(L)\nMOONFLAG\t=\t003D\t\t\t# \tMOON IS SPHERE OF\tEARTH IS SPHERE OF\nMOONBIT\t\t=\tBIT12\t\t\t#\tINFLUENCE\t\tINFLUENCE\n\n# BIT 11 FLAG 0\nP21FLAG\t\t=\t004D\t\t\t#\tUSE BASE VECTORS\t1ST PASS -- CALC-\nP21FLBIT\t=\tBIT11\t\t\t#\tALREADY CALCULATED\tULATE BASE VECTORS\n\n# BIT 10 FLAG 0\nFSPASFLG\t=\t005D\t\t\t#\tFIRST PASS THROUGH\tNOT FIRST PASS THRU\nFSPASBIT\t=\tBIT10\t\t\t#\tREPOSITION ROUTINE\tREPOSITION ROUTINE\n\n# Page 66\n# BIT 9 FLAG 0\t(S)\nP25FLAG\t\t=\t006D\t\t\t# \tP25 OPERATING\t\tP25 NOT OPERATING\nP25FLBIT\t=\tBIT9\n\n# BIT 8 FLAG 0\t(S)\nIMUSE\t\t=\t007D\t\t\t# \tIMU IN USE\t\tIMU NOT IN USE\nIMUSEBIT\t=\tBIT8\n\n# BIT 7 FLAG 0\t(S)\nRNDVZFLG\t=\t008D\t\t\t#\tP20 RUNNING (RADAR\tP20 NOT RUNNING\nRNDVZBIT\t=\tBIT7\t\t\t# \tIN USE)\n\n# BIT 6 FLAG 0\t(S)\nRRNBSW\t\t=\t009D\t\t\t#\tRADAR TARGET IN\t\tRADAR TARGET IN\nRRNBBIT\t\t=\tBIT6\t\t\t# \tNB COORDINATES\t\tSM COORDINATES\n\n# BIT 5 FLAG 0\t(S)\nLOKONSW\t\t=\t010D\t\t\t# \tRADAR LOCK-ON\t\tRADAR LOCK-ON NOT\nLOKONBIT\t=\tBIT5\t\t\t# \tDESIRED\t\t\tDESIRED\n\n# BIT 4 FLAG 0\t(S)\nNEEDLFLG\t=\t011D\t\t\t# \tTOTAL ATTITUDE\t\tA/P FOLLOWING\nNEEDLBIT\t=\tBIT4\t\t\t# \tERROR DISPLAYED\t\tERROR DISPLAYED\n\n# BIT 3 FLAG 0\nFREEFLAG\t=\t012D\t\t\t# (USED BY P51-53 TEMP IN MANY DIFFERENT\n\t\t\t\t\t\t# ROUTINES & BY LUNAR + SOLAR EPHEMERIDES)\nFREEFBIT\t=\tBIT3\n\n# BIT 2 FLAG 0\nR10FLAG\t\t=\t013D\t\t\t# \tR10 OUTPUTS DATA TO \tBESIDES OUTPUT WHEN\nR10FLBIT\t=\tBIT2\t\t\t# \tALTITUDE & ALTITUDE \tSET, R10 ALSO OUTPUT\n\t\t\t\t\t\t# \tRATE METERS ONLY\tTO FORWARD & LATERAL\n\t\t\t\t\t\t#\t\t\t\tVELOCITY CROSSPOINTER\n\n# BIT 1 FLAG 0\t(L)\nOLDESFLG\t=\t014D\t\t\t# \tR29 GYRO CMD LOOP\tR29 GYRO CMD LOOP\nOLDESBIT\t=\tBIT1\t\t\t# \tREQUESTED\t\tNOT REQUESTED\n\n\nFLAGWRD1\t=\tSTATE +1\t\t# (015-029)\n\n# Page 67\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 1\t(S)\nNJETSFLG\t=\t015D\t\t\t#\tTWO JET RCS BURN\tFOUR JET RCS BURN\nNJETSBIT\t=\tBIT15\n\n# BIT 14 FLAG 1\t(L)\nDIDFLAG\t\t= \t016D\t\t\t#\tINERTIAL DATA IS\tPERFORM DATA DISPLAY\nDIDFLBIT\t=\tBIT14\t\t\t#\tAVAILABLE\t\tINITIALIZATION FUNCS\n\n# BIT 13 FLAG 1\t(S)\nERADFLAG\t=\t017D\t\t\t#\tCOMPUTE REARTH\t\tUSE CONSTANT REARTH\nERADFBIT\t=\tBIT13\t\t\t#\tFISCHER ELLIPSOID\tPAD RADIUS\n\n# BIT 12 FLAG 1\nRODFLAG\t\t=\t018D\t\t\t#\tIF IN P66, NORMAL\tIF IN P66, RE-INIT-\nRODFLBIT\t=\tBIT12\t\t\t#\tOPERATION CONTINUES.\tIALIZATION IS PER-\n\t\t\t\t\t\t#\tRESTART CLEARS FLAG\tFORMED AND FLAG IS\n\n# BIT 11 FLAG 1\n\t\t=\t019D\n\t\t=\tBIT11\n\n# BIT 10 FLAG 1\t(L)\nR61FLAG\t\t=\t020D\t\t\t#\tRUN R61 LEM\t\tRUN R65 LEM\nR61FLBIT\t=\tBIT10\n\n# BIT 9 FLAG 1\n\t\t=\t021D\n\t\t=\tBIT9\n\n# BIT 8 FLAG 1\t(S)\nVEHUPFLG\t=\t022D\t\t\t#\tCSM STATE-VECTOR\tLEM STATE VECTOR\nVEHUPBIT\t=\tBIT8\t\t\t#\tBEING UPDATED\t\tBEING UPDATED\n\n# BIT 7 FLAG 1\t(S)\nUPDATFLG\t=\t023D\t\t\t#\tUPDATING BY MARKS\tUPDATING BY MARKS\nUPDATBIT\t=\tBIT7\t\t\t#\tALLOWED\t\t\tNOT ALLOWED\n\n# BIT 6 FLAG 1\t(S)\nNOUPFLAG\t=\t024D\t\t\t#\tNEITHER CSM\t\tEITHER STATE\n\t\t\t\t\t\t#\tNOR LM STATE VECTOR\tVECTOR MAY BE\nNOUPFBIT\t=\tBIT6\t\t\t#\tMAY BE UPDATED\t\tUPDATED\n\n# Page 68\n# BIT 5 FLAG 1\t(S)\nTRACKFLG\t=\t025D\t\t\t#\tTRACKING ALLOWED\tTRACKING NOT ALLOWED\nTRACKBIT\t=\tBIT5\n\n# BIT 4 FLAG 1\n\t\t=\t026D\n\t\t=\tBIT4\n\n# BIT 3 FLAG 1\t(S)\nSLOPESW\t\t=\t027D\t\t\t#\tITERATE WITH BIAS\tITERATE WITH REGULAR\n\t\t\t\t\t\t#\tMETHOD IN ITERATOR\tFALSI METHOD IN\nSLOPEBIT\t=\tBIT3\t\t\t#\t\t\t\tITERATOR\n\n# BIT 2 FLAG 1\t(S)\nGUESSW\t\t=\t028D\t\t\t#\tNO STARTING VALUE\tSTARTING VALUE FOR\nGUESSBIT\t=\tBIT2\t\t\t#\tFOR ITERATION\t\tITERATION EXISTS\n\n# BIT 1 FLAG 1\n\t\t=\t029D\n\t\t=\tBIT1\t\t\t# OH 2009-05-15 Scan does not have this line\n\nFLAGWRD2\t=\tSTATE +2\t\t# (030-044)\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 2\t(S)\nDRIFTFLG\t=\t030D\t\t\t#\tT3RUPT CALLS GYRO\tT3RUPT DOES NO GYRO\nDRFTBIT\t\t=\tBIT15\t\t\t#\tCOMPENSATION\t\tCOMPENSATION\n\n# BIT 14 FLAG 2\t(S)\nSRCHOPTN\t=\t031D\t\t\t#\tRADAR IN AUTOMATIC\tRADAR NOT IN AUTO-\nSRCHOBIT\t=\tBIT14\t\t\t#\tSEARCH OPTION (R24)\tMATIC SEARCH OPTION\n\n# BIT 13 FLAG 2\t(S)\nACMODFLG\t=\t032D\t\t\t#\tMANUAL ACQUISITION\tAUTO ACQUISITION\nACMODBIT\t=\tBIT13\t\t\t#\tBY RENDEZVOUS RADAR\tBY RENDEZVOUS RADAR\n\n# BIT 12 FLAG 2 (S)\nLOSCMFLG\t=\t033D\t\t\t#\tLINE OF SIGHT BEING\tLINE OF SIGHT NOT\n\t\t\t\t\t\t#\tCOMPUTED (R21)\t\tBEING COMPUTED\nLOSCMBIT\t=\tBIT12\n\n# Page 69\n# BIT 11 FLAG 2 (S)\nSTEERSW\t\t=\t034D\t\t\t#\tSUFFICIENT THRUST\tINSUFFICIENT THRUST\nSTEERBIT\t=\tBIT11\t\t\t#\tIS PRESENT\t\tIS PRESENT\n\n# BIT 10 FLAG 2 (S)\n\t\t=\t035D\t\t\t# OH 2009-05-15 These two line don't appear in scan\n\t\t=\tBIT10\n\n# BIT 9 FLAG 2 (S)\nIMPULSW\t\t=\t036D\t\t\t#\tMINIMUM IMPULSE\t\tSTEERING BURN (NO\n\t\t\t\t\t\t#\tBURN (CUTOFF TIME\tCUTOFF TIME YET\nIMPULBIT\t=\tBIT9\t\t\t#\tSPECIFIED)\t\tAVAILABLE)\n\n# BIT 8 FLAG 2 (S)\nXDELVFLG\t=\t037D\t\t\t#\tEXTERNAL DELTAV VG\tLAMBERT (AIMPOINT)\nXDELVBIT\t=\tBIT8\t\t\t#\tCOMPUTATION\t\tVG COMPUTATION\n\n# BIT 7 FLAG 2 (S)\nETPIFLAG\t=\t038D\t\t\t#\tELEVATION ANGLE\t\tTPI TIME SUPPLIED\n\t\t\t\t\t\t#\tSUPPLIED FOR\t\tFOR P34,74 TO COMPUTE\nETPIBIT\t\t=\tBIT7\t\t\t#\tP34,74\t\t\tELEVATION\n\n# BIT 7 FLAG 2 (L)\nOPTNSW\t\t=\tETPIFLAG\t\t#\tSOI PHASE OF P38/78\tSOR PHASE OF P38/78\nOPTNBIT\t\t=\tBIT7\n\n# BIT 6 FLAG 2 (S)\nFINALFLG\t=\t039D\t\t\t#\tLAST PASS THROUGH\tINTERIM PASS THROUGH\n\t\t\t\t\t\t#\tRENDEZVOUS PROGRAM\tRENDEZVOUS PROGRAM\nFINALBIT\t=\tBIT6\t\t\t#\tCOMPUTATIONS\t\tCOMPUTATIONS\n\n# BIT 5 FLAG 2 (S)\nAVFLAG\t\t=\t040D\t\t\t#\tLEM IS ACTIVE\t\tCSM IS ACTIVE\nAVFLBIT\t\t=\tBIT5\t\t\t#\tVEHICLE\t\t\tVEHICLE\n\n# BIT 4 FLAG 2 (S)\nPFRATFLG\t=\t041D\t\t\t#\tPREFERRED ATTITUDE\tPREFERRED ATTITUDE\nPFRATBIT\t=\tBIT4\t\t\t#\tCOMPUTED\t\tNOT COMPUTED\n\n# BIT 3 FLAG 2 (S)\n\n# Page 70\nCALCMAN3\t=\t042D\t\t\t#\tNO FINAL ROLL\t\tFINAL ROLL IS\nCALC3BIT\t=\tBIT3\t\t\t#\t\t\t\tNECESSARY\n\n# BIT 2 FLAG 2 (S)\nCALCMAN2\t=\t043D\t\t\t#\tPERFORM MANEUVER\tBYPASS STARTING\nCALC2BIT\t=\tBIT2\t\t\t#\tSTARTING PROCEDURE\tPROCEDURE\n\n# BIT 1 FLAG 2 (S)\nNODOFLAG\t=\t044D\t\t\t#\tV37 NOT PERMITTED\tV37 PERMITTED\nNODOBIT\t\t=\tBIT1\n\nFLAGWRD3\t=\tSTATE +3\t\t# (045-059)\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 3\n\t\t=\t045D\t\t\t#\n\t\t=\tBIT15\t\t\t# OH 2009-05-15 This line is not in scans\n\n# BIT 14 FLAG 3\t(S)\nGLOKFAIL\t=\t046D\t\t\t#\tGIMBAL LOCK HAS\t\tNOT IN GIMBAL LOCK\nGLOKFBIT\t=\tBIT14\t\t\t#\tOCCURRED\n\n# BIT 13 FLAG 3\t*** PROTECTED FROM FRESH START ***\nREFSMFLG\t=\t047D\t\t\t#\tREFSMMAT GOOD\t\tREFSMMAT NO GOOD\nREFSMBIT\t=\tBIT13\n\n# BIT 12 FLAG 3\t(S)\nLUNAFLAG\t=\t048D\t\t\t#\tLUNAR LAT-LONG\t\tEARTH LAT-LONG\nLUNABIT\t\t=\tBIT12\n\n# BIT 11 FLAG 3\t(L)\nNOR29FLG\t=\t049D\t\t\t#\tR29 NOT ALLOWED\t\tR29 ALLOWED (RR DES-\nNR29FBIT\t=\tBIT11\t\t\t#\t\t\t\tIGNATED POWERED FLT)\n\n# BIT 10 FLAG 3\t(S)\nVFLAG\t\t=\t050D\t\t\t#\tLESS THAN TWO STARS\tTWO STARS IN FIELD\nVFLAGBIT\t=\tBIT10\t\t\t#\tIN FIELD OF VIEW\tOF VIEW\n\n# BIT 9 FLAG 3\t(S)\nR04FLAG\t\t=\t051D\t\t\t#\tALARM 521\t\tALARM 521 ALLOWED\n\t\t\t\t\t\t#\tSUPPRESSED\n# Page 71\nR04FLBIT\t=\tBIT9\n\n# BIT 9 FLAG 3\t(L)\nREADRFLG\t=\tR04FLAG\t\t\t#\tREADING RR DATA\t\tNOT READING RR DATA\nREADRBIT\t=\tBIT9\t\t\t#\tPURSUANT TO R29\t\tPURSUANT TO R29\n\n# BIT 8 FLAG 3\t(S)\nPRECIFLG\t=\t052D\t\t\t#\tNORMAL INTEGRATION\tENGAGES 4-TIME STEP\n\t\t\t\t\t\t#\tIN P00\t\t\t(P00) LOGIC IN INTE-\nPRECIBIT\t=\tBIT8\t\t\t#\t\t\t\tGRATION\n\n# BIT 7 FLAG 3\t(S)\nCULTFLAG\t=\t053D\t\t\t#\tSTAR OCCULTED\t\tSTAR NOT OCCULTED\nCULTBIT\t\t=\tBIT7\n\n# BIT 6 FLAG 3\t(S)\nORBWFLAG\t=\t054D\t\t\t#\tW MATRIX VALID FOR\tW MATRIX INVALID FOR\nORBWFBIT\t=\tBIT6\t\t\t#\tORBITAL NAVIGATION\tORBITAL NAVIGATION\n\n# BIT 5 FLAG 3\t(S)\nSTATEFLG\t=\t055D\t\t\t#\tPERMANENT STATE\t\tPERMANENT STATE\nSTATEBIT\t=\tBIT5\t\t\t#\tVECTOR UPDATED\t\tVECTOR NOT UPDATED\n\n# BIT 4 FLAG 3\t(S)\nINTYPFLG\t=\t056D\t\t\t#\tCONIC INTEGRATION\tENCKE INTEGRATION\nINTYPBIT\t=\tBIT4\n\n# BIT 3 FLAG 3\t(S)\nVINTFLAG\t=\t057D\t\t\t#\tCSM STATE VECTOR\tLEM STATE VECTOR\nVINTFBIT\t=\tBIT3\t\t\t#\tBEING INTEGRATED\tBEING INTEGRATED\n\n# BIT 2 FLAG 3 (S)\nD6OR9FLG\t= \t058D\t\t\t#\tDIMENSION OF W IS 9\tDIMENSION OF W IS 6\nD6OR9BIT\t=\tBIT2\t\t\t#\tFOR INTEGRATION\t\tFOR INTEGRATION\n\n# BIT 1 FLAG 3\t(S)\nDIM0FLAG\t=\t059D\t\t\t#\tW MATRIX IS TO BE\tW MATRIX IS NOT TO\nDIM0BIT\t\t=\tBIT1\t\t\t#\tUSED\t\t\tUSED\n\nFLAGWRD4\t=\tSTATE +4\t\t# (060-074)\n\n# Page 72\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 4\t(S)\nMRKIDFLG\t=\t060D\t\t\t#\tMARK DISPLAY IN \tNO MARK DISPLAY IN\nMRKIDBIT\t=\tBIT15\t\t\t#\tENDIDLE\t\t\tENDIDLE\n\n# BIT 14 FLAG 4\t(S)\nPRIODFLG\t=\t061D\t\t\t#\tPRIORITY DISPLAY IN\tNO PRIORITY DISPLAY\nPRIODBIT\t=\tBIT14\t\t\t#\tENDIDLE\t\t\tIN ENDIDLE\n\n# BIT 13 FLAG 4\t(S)\nNRMIDFLG\t=\t062D\t\t\t#\tNORMAL DISPLAY IN\tNO NORMAL DISPLAY\nNRMIDBIT\t=\tBIT13\t\t\t#\tENDIDLE\t\t\tIN ENDIDLE\n\n# BIT 12 FLAG 4 (S)\nPDSPFLAG\t=\t063D\t\t\t#\tP20 SETS SO AS TO\tLEAVE AS NORMAL DISP\n\t\t\t\t\t\t#\tTURN A NORMAL DIS-\nPDSPFBIT\t=\tBIT12\t\t\t#\tPLAY INTO A PRIORITY\n\t\t\t\t\t\t#\tDISPLAY IN R60\n\n# BIT 11 FLAG 4 (S)\nMWAITFLG\t=\t064D\t\t\t#\tHIGHER PRIORITY\t\tNO HIGHER PRIORITY\n\t\t\t\t\t\t#\tDISPLAY OPERATING\tDISPLAY OPERATING\nMWAITBIT\t=\tBIT11\t\t\t#\tWHEN MARK\t\tWHEN MARK DISPLAY\n\t\t\t\t\t\t#\tDISPLAY INITIATED\tINITIATED\n\n# BIT 10 FLAG 4 (S)\nNWAITFLG\t=\t065D\t\t\t#\tHIGHER PRIORITY\t\tNO HIGHER PRIORITY\n\t\t\t\t\t\t#\tDISPLAY OPERATING\tDISPLAY OPERATING\nNWAITBIT\t=\tBIT10\t\t\t#\tWHEN NORMAL\t\tWHEN NORMAL DISPLAY\n\t\t\t\t\t\t#\tDISPLAY INITIATED\tINITIATED\n\n# BIT 9 FLAG 4\t(S)\nMRKNVFLG\t=\t066D\t\t\t#\tASTRONAUT USING\t\tASTRONAUT NOT USING\n\t\t\t\t\t\t#\tKEYBOARD WHEN MARK\tKEYBOARD WHEN MARK\nMRKNVBIT\t=\tBIT9\t\t\t#\tDISPLAY INITIATED\tDISPLAY INITIATED\n\n# BIT 8 FLAG 4\t(S)\nNRMNVFLG\t=\t067D\t\t\t#\tASTRONAUT USING\t\tASTRONAUT NOT USING\n\t\t\t\t\t\t#\tKEYBOARD WHEN\t\tKEYBOARD WHEN\nNRMNVBIT\t=\tBIT8\t\t\t#\tNORMAL DISPLAY\t\tNORMAL DISPLAY\n\t\t\t\t\t\t#\tINITIATED\t\tINITIATED\n\n# BIT 7 FLAG 4\t(S)\nPRONVFLG\t=\t068D\t\t\t#\tASTRONAUT USING\t\tASTRONAUT NOT USING\n\n# Page 73\n\t\t\t\t\t\t#\tKEYBOARD WHEN\t\tKEYBOARD WHEN\nPRONVBIT\t=\tBIT7\t\t\t#\tPRIORITY DISPLAY\tPRIORITY DISPLAY\n\t\t\t\t\t\t#\tINITIATED\t\tINITIATED\n\n# BIT 6 FLAG 4\t(S)\nPINBRFLG\t=\t069D\t\t\t#\tASTRONAUT HAS\t\tASTRONAUT HAS NOT\n\t\t\t\t\t\t#\tINTERFERED WITH\t\tINTERFERED WITH\nPINBRBIT\t=\tBIT6\t\t\t#\tEXISTING DISPLAY\tEXISTING DISPLAY\n\n# BIT 5 FLAG 4\t(S)\nMRUPTFLG\t=\t070D\t\t\t#\tMARK DISPLAY\t\tMARK DISPLAY NOT\n\t\t\t\t\t\t#\tINTERRUPTED BY\t\tINTERRUPTED BY\nMRUPTBIT\t=\tBIT5\t\t\t#\tPRIORITY DISPLAY\tPRIORITY DISPLAY\n\n# BIT 4 FLAG 4\t(S)\nNRUPTFLG\t=\t071D\t\t\t#\tNORMAL DISPLAY\t\tNORMAL DISPLAY NOT\n\t\t\t\t\t\t#\tINTERRUPTED BY\t\tINTERRUPTED BY\nNRUPTBIT\t=\tBIT4\t\t\t#\tPRIORITY OR MARK\tPRIORITY OR MARK\n\t\t\t\t\t\t#\tDISPLAY\t\t\tDISPLAY\n\n# BIT 3 FLAG 4\t(S)\nMKOVFLAG\t=\t072D\t\t\t#\tMARK DISPLAY OVER\tNO MARK DISPLAY OVER\nMKOVBIT\t\t=\tBIT3\t\t\t#\tNORMAL\t\t\tNORMAL\n\n# BIT 2 FLAG 4\n\t\t=\t073D\n\t\t=\tBIT2\t\t\t# OH 2009-05-15 Not in scan.\n\n\n# BIT 1 FLAG 4\t(S)\nXDSPFLAG\t=\t074D\t\t\t#\tMARK DISPLAY NOT\tNO SPECIAL MARK\nXDSPBIT\t\t=\tBIT1\t\t\t#\tTO BE INTERRUPTED\tINFORMATION\n\nFLAGWRD5\t=\tSTATE +5\t\t# (075-089)\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 5\t(S)\nDSKYFLAG\t=\t075D\t\t\t#\tDISPLAYS SENT TO\tNO DISPLAYS TO DSKY\nDSKYFBIT\t=\tBIT15\t\t\t#\tDSKY\n\n# BIT 14 FLAG 5\n\t\t=\t076D\n\t\t=\tBIT14\n\n# Page 74\n# BIT 13 FLAG 5\t(S,L)\nSNUFFER\t\t=\t077D\t\t\t#\tU,V JETS DISABLED\tU,V JETS ENABLED\n\t\t\t\t\t\t#\tDURING DPS\t\tDURING DPS\nSNUFFBIT\t=\tBIT13\t\t\t#\tBURNS (V65)\t\tBURNS (V75)\n\n# BIT 12 FLAG 5\t(S)\nNOTHROTL\t=\t078D\t\t\t#\tINHIBIT FULL\t\tPERMIT FULL THROTTLE\nNOTHRBIT\t=\tBIT12\t\t\t#\tTHROTTLE\n\n# BIT 11 FLAG 5\t(S,L)\nR77FLAG\t\t=\t079D\t\t\t#\tR77 IS ON,\t\tR77 IS NOT ON.\n\t\t\t\t\t\t#\tSUPPRESS ALL RADAR\n\t\t\t\t\t\t#\tALARMS AND TRACKER\nR77FLBIT\t=\tBIT11\t\t\t#\tFAILS\n\n# BIT 10 FLAG 5\t(S)\nRNGSCFLG\t=\t080D\t\t\t#\tSCALE CHANGE HAS\tNO SCALE CHANGE HAS\n\t\t\t\t\t\t#\tOCCURRED DURING\t\tOCCURRED DURING\nRNGSCBIT\t=\tBIT10\t\t\t#\tRR READING\t\tRR READING\n\n# BIT 9 FLAG 5\t(S)\nDMENFLG\t\t=\t081D\t\t\t#\tDIMENSION OF W IS 9\tDIMENSION OF W IS 6\nDMENFBIT\t=\tBIT9\t\t\t#\tFOR INCORPORATION\tFOR INCORPORATION\n\n# BIT 8 FLAG 5\t(S)\n\t\t=\t082D\n\t\t=\tBIT8\n\n# BIT 7 FLAG 5\t(S)\nENGONFLG\t=\t083D\t\t\t#\tENGINE TURNED ON\tENGINE TURNED OFF\nENGONBIT\t=\tBIT7\t\t\t#\n\n# BIT 6 FLAG 5\t(S)\n3AXISFLG\t=\t084D\t\t\t#\tMANEUVER SPECIFIED\tMANEUVER SPECIFIED\n\t\t\t\t\t\t#\tBY THREE AXES\t\tBY ONE AXIS; R60\n3AXISBIT\t=\tBIT6\t\t\t#\t\t\t\tCALLS VECPOINT.\n\n# BIT 5 FLAG 5\n\t\t=\t085D\n\t\t=\tBIT5\t\t\t# OH 2009-05-15 Not in scan\n\n# BIT 4 FLAG 5\t(S)\n\n# Page 75\nNORRMON\t\t=\t086D\t\t\t#\tBYPASS RR GIMBAL\tPERFORM\nNORRMBIT\t=\tBIT4\t\t\t#\tMONITOR\t\t\tRR GIMBAL MONITOR\n\n# BIT 3 FLAG 5\t(S)\nSOLNSW\t\t=\t087D\t\t\t#\tLAMBERT DOES NOT\tLAMBERT CONVERGES OR\n\t\t\t\t\t\t#\tCONVERGE, OR TIME-RAD\tTIME-RADIUS NON-\nSOLNSBIT\t=\tBIT3\t\t\t#\tNEARLY CIRCULAR\t\tCIRCULAR\n\n# BIT 2 FLAG 5\t(S)\nMGLVFLAG\t=\t088D\t\t\t#\tLOCAL VERTICAL\t\tMIDDLE GIMBAL ANGLE\n\t\t\t\t\t\t#\tCOORDINATES\t\tCOMPUTED\nMGLVFBIT\t=\tBIT2\t\t\t#\tCOMPUTED\n\n# BIT 1 FLAG 5\t(S)\nRENDWFLG\t=\t089D\t\t\t#\tW MATRIX VALID\t\tW MATRIX INVALID\n\t\t\t\t\t\t#\tFOR RENDEZVOUS\t\tFOR RENDEZVOUS\nRENDWBIT\t=\tBIT1\t\t\t#\tNAVIGATION\t\tNAVIGATION\n\n\nFLAGWRD6\t=\tSTATE +6\t\t# (090-104)\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 6\t(S)\nS32.1F1\t\t=\t090D\t\t\t#\tDELTA V AT CSI TIME\tDVT1 LESS THAN MAX\nS32BIT1\t\t=\tBIT15\t\t\t#\tONE EXCEEDS MAX\n\n# BIT 14 FLAG 6\t(S)\nS32.1F2\t\t=\t091D\t\t\t#\tFIRST PASS OF\t\tREITERATION OF\nS32BIT2\t\t=\tBIT14\t\t\t#\tNEWTON ITERATION\tNEWTON\n\n# BIT 13 FLAG 6\t(S)\nS32.1F3A\t=\t092D\t\t\t# BIT 13 AND BIT 12 FUNCTION AS AN ORDERED\nS32BIT3A\t=\tBIT13\t\t\t# PAIR (13,12) INDICATING THE POSSIBLE OC-\n\t\t\t\t\t\t# CURRENCE OF 2 NEWTON ITERATIONS FOR S32.1\n\t\t\t\t\t\t# IN THE PROGRAM IN THE FOLLOWING ORDER:\n# BIT 12 FLAG 6\t(S)\t\t\t\t# (0,1) (I.E. BIT 13 RESET, BIT 12 SET)\nS32.1F3B\t=\t093D\t\t\t#      = FIRST NEWTON ITERATION BEING DONE\nS32BIT3B\t=\tBIT12\t\t\t# (0,0)= FIRST PASS OF SECOND NEWTON ITERATION\n\t\t\t\t\t\t# (1,1)= 50 FT/SEC STAGE OF SECOND NEWTON ITERATION\n\t\t\t\t\t\t# (1,0)= REMAINDER OF SECOND NEWTON ITERATION\n# BIT 11 FLAG 6\t(S)\n\t\t=\t094D\t\t\t#\n\t\t=\tBIT11\t\t\t#\n# Page 76\n# BIT 10 FLAG 6\t(S)\nGMBDRVSW\t=\t095D\t\t\t#\tTRIMGIMB OVER\t\tTRIMGIMB NOT OVER\nGMBDRBIT\t=\tBIT10\t\t\t#\n\n# BIT 9 FLAG 6\n\t\t=\t096D\t\t\t#\n\t\t=\tBIT9\t\t\t#\n\n# BIT 8 FLAG 6\t(S)\nMUNFLAG\t\t=\t097D\t\t\t#\tSERVICER CALLS\t\tSERVICER CALLS\nMUNFLBIT\t=\tBIT8\t\t\t#\tMUNRVG\t\t\tCALCRVG\n\n# BIT 7 FLAG 6\t(L)\n\t\t=\t098D\t\t\t#\n\t\t=\tBIT7\t\t\t#\n\n# BIT 6 FLAG 6\t(L)\nREDFLAG\t\t=\t099D\t\t\t#\tLANDING SITE\t\tLANDING SITE\n\t\t\t\t\t\t#\tREDESIGNATION\t\tREDESIGNATION NOT\nREDFLBIT\t=\tBIT6\t\t\t#\tPERMITTED\t\tPERMITTED\n\n# BIT 5 FLAG 6\n\t\t=\t100D\t\t\t#\n\t\t=\tBIT5\t\t\t# OH 2009-05-15 Not in scan\n\n# BIT 4 FLAG 6\n\t\t=\t101D\t\t\t#\n\t\t=\tBIT4\t\t\t# OH 2009-05-15 Not in scan\n\n# BIT 3 FLAG 6\t(S)\nNTARGFLG\t=\t102D\t\t\t#\tASTRONAUT DID\t\tASTRONAUT DID NOT\n\t\t\t\t\t\t#\tOVERWRITE DELTA\t\tOVERWRITE DELTA\nNTARGBIT\t=\tBIT3\t\t\t#\tVELOCITY AT TPI\t\tVELOCITY\n\t\t\t\t\t\t#\tOR TPM (P34,35)\n\n# BIT 2 FLAG 6\nAUXFLAG\t\t=\t103D\t\t\t#\tPROVIDING IDLEFLAG\tSERVICER WILL SKIP\nAUXFLBIT\t=\tBIT2\t\t\t#\tIS NOT SET, SERV-\tDVMON ON ITS NEXT\n\t\t\t\t\t\t#\tICER WILL EXERCISE\tPASS EVEN IF THE\n\t\t\t\t\t\t#\tDVMON ON ITS NEXT\tIDLEFLAG IS NOT SET.\n\t\t\t\t\t\t#\tPASS.\t\t\tIT WILL THEN SET\n\t\t\t\t\t\t#\t\t\t\tAUXFLAG.\n\n# BIT 1 FLAG 6\t(L)\nATTFLAG\t\t=\t104D\t\t\t#\tLEM ATTITUDE EXISTS\tNO LEM ATTITUDE\n\t\t\t\t\t\t#\tIN MOON-FIXED\t\tAVAILABLE IN MOON-\n\n# Page 77\nATTFLBIT\t=\tBIT1\t\t\t#\tCOORDINATES\t\tFIXED COORDINATES\n\nFLAGWRD7\t=\tSTATE +7\t\t# (105-119)\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 7\t(S)\nITSWICH\t\t=\t105D\t\t\t#\tR34;TPI TIME TO BE\tTPI HAS BEEN\nITSWBIT\t\t=\tBIT15\t\t\t#\tCOMPUTED\t\tCOMPUTED\n\n# BIT 14 FLAG 7\t(S)\nMANUFLAG\t=\t106D\t\t\t#\tATTITUDE MANEUVER\tNO ATTITUDE MANEUVER\n\t\t\t\t\t\t#\tGOING DURING RR\t\tDURING RR SEARCH\nMANUFBIT\t=\tBIT14\t\t\t#\tSEARCH\n\n# BIT 13 FLAG 7\t(S)\nIGNFLAG\t\t=\t107D\t\t\t#\tTIG HAS ARRIVED\t\tTIG HAS NOT ARRIVED\nIGNFLBIT\t=\tBIT13\t\t\t#\n\n# BIT 12 FLAG 7\t(S)\nASTNFLAG\t=\t108D\t\t\t#\tASTRONAUT HAS\t\tASTRONAUT HAS NOT\nASTNBIT\t\t=\tBIT12\t\t\t#\tOKAYED IGNITION\t\tOKAYED IGNITION\n\n# BIT 11 FLAG 7\t(L)\nSWANDISP\t=\t109D\t\t\t#\tLANDING ANALOG\t\tLANDING ANALOG\nSWANDBIT\t=\tBIT11\t\t\t#\tDISPLAYS ENABLED\tDISPLAYS SUPPRESSED\n\n# BIT 10 FLAG 7\t(S)\nNORMSW\t\t=\t110D\t\t\t#\tUNIT NORMAL INPUT\tLAMBERT COMPUTES ITS\nNORMSBIT\t=\tBIT10\t\t\t#\tTO LAMBERT\t\tOWN UNIT NORMAL\n\n# BIT 9 FLAG 7\t(S)\nRVSW\t\t=\t111D\t\t\t#\tDO NOT COMPUTE\t\tCOMPUTE FINAL STATE\n\t\t\t\t\t\t#\tFINAL STATE VECTOR\tVECTOR IN TIME-THETA\nRVSWBIT\t\t=\tBIT9\t\t\t#\tIN TIME-DELTA\n\n# BIT 8 FLAG 7\t(S)\nV67FLAG\t\t=\t112D\t\t\t#\tASTRONAUT OVERWRITE\tASTRONAUT DOES NOT\n\t\t\t\t\t\t#\tW-MATRIX INITIAL\tOVERWRITE W-MATRIX\nV67FLBIT\t=\tBIT8\t\t\t#\tVALUES\t\t\tINITIAL VALUES\n\n# Page 78\n# BIT 7 FLAG 7\t(S)\nIDLEFLAG\t=\t113D\t\t\t#\tNO DV MONITOR\t\tCONNECT DV MONITOR\nIDLEFBIT\t=\tBIT7\t\t\t#\n\n# BIT 6 FLAG 7\t(S)\nV37FLAG\t\t=\t114D\t\t\t#\tAVERAGEG (SERVICER)\tAVERAGEG (SERVICER)\nV37FLBIT\t=\tBIT6\t\t\t#\tRUNNING\t\t\tOFF\n\n# BIT 5 FLAG 7\t(S)\nAVEGFLAG\t=\t115D\t\t\t#\tAVERAGEG (SERVICER)\tAVERAGEG (SERVICER)\nAVEGFBIT\t=\tBIT5\t\t\t#\tDESIRED\t\t\tNOT DESIRED\n\n# BIT 4 FLAG 7\t(S)\nUPLOCKFL\t=\t116D\t\t\t#\tK-KBAR-K FAIL\t\tNO K-KBAR-K FAIL\nUPLOCBIT\t=\tBIT4\t\t\t#\n\n# BIT 3 FLAG 7\t(S)\nVERIFLAG\t=\t117D\t\t\t# CHANGED WHEN V33E OCCURS AT END OF P27\nVERIFBIT\t=\tBIT3\t\t\t#\n\n# BIT 2 FLAG 7\t(L,C)\nV82EMFLG\t=\t118D\t\t\t#\tMOON VICINITY\t\tEARTH VICINITY\nV82EMBIT\t=\tBIT2\t\t\t#\n\n# BIT 1 FLAG 7\t(S)\nTFFSW\t\t=\t119D\t\t\t#\tCALCULATE TPERIGEE\tCALCULATE TFF\nTFFSWBIT\t=\tBIT1\t\t\t#\n\n\nFLAGWRD8\t=\tSTATE +8D\t\t# (120-134)\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 8\t(S)\nRPQFLAG\t\t=\t120D\t\t\t#\tRPQ NOT COMPUTED\tRPQ COMPUTED\n\t\t\t\t\t\t#\t(RPQ = VECTOR BE-\nRPQFLBIT\t=\tBIT15\t\t\t#\tTWEEN SECONDARY BODY\n\t\t\t\t\t\t#\tAND PRIMARY BODY)\n\n# BIT 14 FLAG 8\n\t\t=\t121D\t\t\t#\n\t\t=\tBIT14\t\t\t#\n\n# Page 79\n# BIT 13 FLAG 8\t(S)\nNEWIFLG\t\t=\t122D\t\t\t#\tFIRST PASS THROUGH\tSUCCEEDING ITERATION\nNEWIBIT\t\t=\tBIT13\t\t\t#\tINTEGRATION\t\tOF INTEGRATION\n\n# BIT 12 FLAG 8\t*** PROTECTED FROM FRESH START ***\nCMOONFLG\t=\t123D\t\t\t#\tPERMANENT CSM STATE\tPERMANENT CSM STATE\nCMOONBIT\t=\tBIT12\t\t\t#\tIN LUNAR SPHERE\t\tIN EARTH SPHERE\n\n# BIT 11 FLAG 8\t*** PROTECTED FROM FRESH START ***\nLMOONFLG\t=\t124D\t\t\t#\tPERMANENT LM STATE\tPERMANENT LM STATE\nLMOONBIT\t=\tBIT11\t\t\t#\tIN LUNAR SPHERE\t\tIN EARTH SPHERE\n\n# BIT 10 FLAG 8\t(L)\nFLUNDISP\t=\t125D\t\t\t#\tCURRENT GUIDANCE\tCURRENT GUIDANCE\nFLUNDBIT\t=\tBIT10\t\t\t#\tDISPLAYS INHIBITED\tDISPLAYS PERMITTED\n\n# BIT 9 FLAG 8\t(L)\nP39/79SW\t=\t126D\t\t\t#\tP39/79 OPERATING\tP38/78 OPERATING\nP39SWBIT\t=\tBIT9\t\t\t#\n\n# BIT 8 FLAG 8\t*** PROTECTED FROM FRESH START ***\nSURFFLAG\t=\t127D\t\t\t#\tLM ON LUNAR SURFACE\tLM NOT ON LUNAR\nSURFFBIT\t=\tBIT8\t\t\t#\t\t\t\tSURFACE\n\n# BIT 7 FLAG 8\t(S)\nINFINFLG\t=\t128D\t\t\t#\tNO CONIC SOLUTION\tCONIC SOLUTION\n\t\t\t\t\t\t#\t(CLOSURE THROUGH\tEXISTS\nINFINBIT\t=\tBIT7\t\t\t#\tINFINITY REQUIRED)\n\n# BIT 6 FLAG 8\t(S)\nORDERSW\t\t=\t129D\t\t\t#\tITERATOR USES 2ND\tITERATOR USES 1ST\nORDERBIT\t=\tBIT6\t\t\t#\tORDER MINIMUM MODE\tORDER STANDARD MODE\n\n# BIT 5 FLAG 8\t(S)\nAPSESW\t\t=\t130D\t\t\t#\tRDESIRED OUTSIDE\tRDESIRED INSIDE\n\t\t\t\t\t\t#\tPERICENTER-APOCENTER\tPERICENTER-APOCENTER\nAPSESBIT\t=\tBIT5\t\t\t#\tRANGE IN TIME-RADIUS\tRANGE IN TIME-RADIUS\n\n# BIT 4 FLAG 8\t(S)\nCOGAFLAG\t=\t131D\t\t\t#\tNO CONIC SOLUTION --\tCONIC SOLUTION\n\t\t\t\t\t\t#\tTOO CLOSE TO RECTI-\tEXISTS (COGA DOES NOT\n\n# Page 80\nCOGAFBIT\t=\tBIT4\t\t\t#\tLINEAR (COGA OVERFLWS)\tOVERFLOW)\n\n# BIT 3 FLAG 8\t(S)\n\t\t=\t132D\t\t\t#\n\t\t=\tBIT3\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 2 FLAG 8\t(L)\nINITALGN\t=\t133D\t\t\t#\tINITIAL PASS THRU\tSECOND PASS THRU P57\nINITABIT\t=\tBIT2\t\t\t#\tP57\t\t\t(CHECK RESET-MILLARD)\n\n# BIT 1 FLAG 8\t(S)\n360SW\t\t=\t134D\t\t\t#\tTRANSFER ANGLE NEAR\tTRANSFER ANGLE NOT\n360SWBIT\t=\tBIT1\t\t\t#\t360 DEGREES\t\tNEAR 360 DEGREES\n\n\nFLAGWRD9\t=\tSTATE +9D\t\t# (135-149)\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 9\n\t\t=\t135D\t\t\t#\n\t\t=\tBIT15\t\t\t#\n\n# BIT 14 FLAG 9\t(L)\nFLVR\t\t=\t136D\t\t\t#\tVERTICAL RISE\t\tNON-VERTICAL RISE\nFLVRBIT\t\t=\tBIT14\t\t\t#\t(ASCENT GUIDANCE)\n\n# BIT 13 FLAG 9\n\t\t=\t137D\t\t\t#\n\t\t=\tBIT13\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 12 FLAG 9\t(L)\nFLPC\t\t=\t138D\t\t\t#\tNO POSITION CONTROL\tPOSITION CONTROL\nFLPCBIT\t\t=\tBIT12\t\t\t#\t(ASCENT GUIDANCE)\n\n# BIT 11 FLAG 9\t(L)\nFLPI\t\t=\t139D\t\t\t#\tPRE-IGNITION PHASE\tREGULAR GUIDANCE\nFLPIBIT\t\t=\tBIT11\t\t\t#\t(ASCENT GUIDANCE)\n\n# BIT 10 FLAG 9\t(L)\nFLRCS\t\t=\t140D\t\t\t#\tRCS INJECTION MODE\tMAIN ENGINE MODE\nFLRCSBIT\t=\tBIT10\t\t\t#\t(ASCENT GUIDANCE)\n\n# BIT 9 FLAG 9\t(L)\n\n# Page 81\nLETABORT\t=\t141D\t\t\t#\tABORT PROGRAMS\t\tABORT PROGRAMS\nLETABBIT\t=\tBIT9\t\t\t#\tARE ENABLED\t\tARE NOT ENABLED\n\n# BIT 8 FLAG 9\t(L)\nFLAP\t\t=\t142D\t\t\t#\tAPS CONTINUED ABORT\tAPS ABORT IS NOT A\n\t\t\t\t\t\t#\tAFTER DPS STAGING\tCONTINUATION\nFLAPBIT\t\t=\tBIT8\t\t\t#\t(ASCENT GUIDANCE)\n\n# BIT 7 FLAG 9\t(L)\n\t\t=\t143D\n\t\t=\tBIT7\t\t\t# OH 2009-05-15 Line not in scan\n\n\n# BIT 6 FLAG 9\t(L)\nROTFLAG\t\t=\t144D\t\t\t#\tP70 AND P71 WILL\tP70 AND P71 WILL NOT\nROTFLBIT\t=\tBIT6\t\t\t#\tFORCE VEHICLE\t\tFORCE VEHICLE\n\t\t\t\t\t\t#\tROTATION IN THE\t\tROTATION IN THE\n\t\t\t\t\t\t#\tPREFERRED DIRECTION\tPREFERRED DIRECTION\n\n# BIT 5 FLAG 9\t(S)\nQUITFLAG\t=\t145D\t\t\t#\tDISCONTINUE INTEGR.\tCONTINUE INTEGRATION\nQUITBIT\t\t=\tBIT5\t\t\t#\n\n# BIT 4 FLAG 9\n\t\t=\t146D\t\t\t#\n\t\t=\tBIT4\t\t\t#\n\n# BIT 3 FLAG 9\t(L)\nMID1FLAG\t=\t147D\t\t\t#\tINTEGRAT TO TDEC\tINTEGRATE TO THE\nMID1FBIT\t=\tBIT3\t\t\t#\t\t\t\tTHEN-PRESENT TIME\n\n# BIT 2 FLAG 9\t(L)\nMIDAVFLG\t=\t148D\t\t\t#\tINTEGRATION ENTERED\tINTEGRATION WAS\n\t\t\t\t\t\t#\tFROM ONE OF MIDTOAV\tNOT ENTERED VIA\nMIDAVBIT\t=\tBIT2\t\t\t#\tPORTALS\t\t\tMIDTOAV\n\n# BIT 1 FLAG 9\t(S)\nAVEMIDSW\t=\t149D\t\t\t#\tAVETOMID CALLING\tNO AVETOMID W INTEGR\n\t\t\t\t\t\t#\tFOR W.MATRIX INTEGR\tALLOW SET UP RM, VN\nAVEMDBIT\t=\tBIT1\t\t\t#\tDON'T WRITE OVER RN, \tPIPTIME\n\t\t\t\t\t\t#\tVN,PIPTIME\n\n\nRASFLAG\t\tEQUALS\tFLGWRD10\t\t# WAS ONLY AN INSTALL-ERASTALL FLAG\n\n# Page 82\nFLGWRD10\t=\tSTATE +10D\t\t# (150-164)\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 10 (S)\n\t\t=\t150D\t\t\t#\n\t\t=\tBIT15\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 14 FLAG 10 (L,C)\nINTFLAG\t\t=\t151D\t\t\t#\tINTEGRATION IN\t\tINTEGRATION NOT IN\nINTFLBIT\t=\tBIT14\t\t\t#\tPROGRESS\t\tPROGRESS\n\n# BIT 13 FLAG 10 (S,L)\nAPSFLAG\t\t=\t152D\t\t\t#\tASCENT STAGE\t\tDESCENT STAGE\nAPSFLBIT\t=\tBIT13\t\t\t#\t *** PROTECTED FROM FRESH START ***\n\n# BIT 12 FLAG 10\n\t\t=\t153D\t\t\t#\n\t\t=\tBIT12\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 11 FLAG 10\n\t\t=\t154D\t\t\t#\n\t\t=\tBIT11\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 10 FLAG 10\n\t\t=\t155D\t\t\t#\n\t\t=\tBIT10\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 9 FLAG 10\n\t\t=\t156D\t\t\t#\n\t\t=\tBIT9\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 8 FLAG 10\n\t\t=\t157D\t\t\t#\n\t\t=\tBIT8\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 7 FLAG 10 (L,C)\nREINTFLG\t=\t158D\t\t\t#\tINTEGRATION ROUTINE\tINTEGRATION ROUTINE\nREINTBIT\t=\tBIT7\t\t\t#\tTO BE RESTARTED\t\tNOT TO BE RESTARTED\n\n# BIT 6 FLAG 10\n\t\t=\t159D\t\t\t#\n\t\t=\tBIT6\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 5 FLAG 10\n\t\t=\t160D\t\t\t#\n\t\t=\tBIT5\t\t\t# OH 2009-05-15 Line not in scan\n\n# Page 83\n# BIT 4 FLAG 10\n\t\t=\t161D\t\t\t#\n\t\t=\tBIT4\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 3 FLAG 10\n\t\t=\t162D\t\t\t#\n\t\t=\tBIT3\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 2 FLAG 10\n\t\t=\t163D\t\t\t#\n\t\t=\tBIT2\t\t\t# OH 2009-05-15 Line not in scan\n\n# BIT 1 FLAG 10\n\t\t=\t164D\t\t\t#\n\t\t=\tBIT1\t\t\t# OH 2009-05-15 Line not in scan\n\n\n\nFLGWRD11\t=\tSTATE +11D\t\t# (165-179)\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 11 (L)(R12)\nLRBYPASS\t=\t165D\t\t\t#\tBYPASS ALL LANDING\tDO NOT BYPASS LR\nLRBYBIT\t\t=\tBIT15\t\t\t#\tRADAR UPDATES\t\tUPDATES\n\n# BIT 14 FLAG 11\n\t\t=\t166D\t\t\t#\n\t\t=\tBIT14\t\t\t#\n\n# BIT 13 FLAG 11\n\t\t=\t167D\t\t\t#\n\t\t=\tBIT13\t\t\t#\n\n# BIT 12 FLAG 11 (L)(R12)\nVXINH\t\t=\t168D\t\t\t#\tIF Z VELOCITY DATA\tUPDATE X AXIS\n\t\t\t\t\t\t#\tUNREASONABLE,\t\tVELOCITY\nVXINHBIT\t=\tBIT12\t\t\t#\tBYPASS X VELOCITY\n\t\t\t\t\t\t#\tUPDATE ON NEXT PASS\n\n# BIT 11 FLAG 11 (L)(R12)\nPSTHIGAT\t=\t169D\t\t\t#\tPAST HIGATE\t\tPREHIGATE\nPSTHIBIT\t=\tBIT11\t\t\t#\n\n# BIT 10 FLAG 11 (L)(R12)\n\n# Page 84\nNOLRREAD\t=\t170D\t\t\t#\tLANDING RADAR\t\tLR NOT REPOSITIONING\n\t\t\t\t\t\t#\tREPOSITIONING;\nNOLRRBIT\t=\tBIT10\t\t\t#\tBYPASS UPDATE\n\n# BIT 9 FLAG 11 (L)(R12)\nXORFLG\t\t=\t171D\t\t\t#\tBELOW LIMIT\t\tABOVE LIMIT DO\n\t\t\t\t\t\t#\tINHIBIT X AXIS\t\tNOT INHIBIT\nXORFLBIT\t=\tBIT9\t\t\t#\tOVERRIDE\n\n# BIT 8 FLAG 11\nLRINH\t\t=\t172D\t\t\t#\tLANDING RADAR UP-\tLR UPDATES INHIBITED\nLRINHBIT\t=\tBIT8\t\t\t#\tDATES PERMITTED\t\tBY ASTRONAUT\n\t\t\t\t\t\t#\tBY ASTRONAUT\n\n# BIT 7 FLAG 11\t(L)(R12)\nVELDATA\t\t=\t173D\t\t\t#\tLR VELOCITY\t\tLR VELOCITY MEASURE\nVELDABIT\t=\tBIT7\t\t\t#\tMEASUREMENT MADE\tNOT MADE\n\n# BIT 6 FLAG 11\t(L)(R12)\nREADLR\t\t=\t174D\t\t\t#\tOK TO READ LR\t\tDO NOT READ LR RANGE\nREADLBIT\t=\tBIT6\t\t\t#\tRANGE DATA\t\tDATA\n\n# BIT 5 FLAG 11\t(L)(R12)\nREADVEL\t\t=\t175D\t\t\t#\tOK TO READ LR\t\tDO NOT READ LR\nREADVBIT\t=\tBIT5\t\t\t#\tVELOCITY DATA\t\tVELOCITY DATA\n\n# BIT 4 FLAG 11\t(L)(R12)\nRNGEDATA\t=\t176D\t\t\t#\tLR ALTITUDE\t\tLR ALTITUDE MEASURE\nRNGEDBIT\t=\tBIT4\t\t\t#\tMEASUREMENT MADE\tNOT MADE\n\n# BIT 3 FLAG 11\nSCALBAD\t\t=\t177D\t\t\t#\tLR LOW SCALE DISP-\tLS SCALE DISCRETE\nSCABBIT\t\t=\tBIT3\t\t\t#\tCRETE NOT PRESENT\tAPPEARS OK\n\t\t\t\t\t\t# \tWHEN IT SHOULD\n\n# BIT 2 FLAG 11\t(L)(R12)\nVFLSHFLG\t=\t178D\t\t\t#\tLR VELOCITY FAIL\tLR VEL FAIL LAMP\n\t\t\t\t\t\t#\tLAMP SHOULD BE\t\tSHOULDN'T FLASH\nVFLSHBIT\t=\tBIT2\t\t\t#\tFLASHING\n\n# BIT 1 FLAG 11\t(L)(R12)\n# Page 85\nHFLSHFLG\t=\t179D\t\t\t#\tLR ALTITUDE FAIL\tLR ALTITUDE FAIL\nHFLSHBIT\t=\tBIT1\t\t\t#\tLAMP SHOULD BE\t\tLAMP SHOULD NOT BE\n\t\t\t\t\t\t#\tFLASHING\t\tFLASHING\n\nRADMODES\tEQUALS\tFLGWRD12\t\t# RADAR FLAG WORD\n\nFLGWRD12\t=\tSTATE +12D\t\t# (180-194)\t\tWAS RADMODES\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 12\nCDESFLAG\t=\t180D\t\t\t#\tCONTINUOUS DESIG-\tLGC CHECKS FOR LOCK-\nCDESBIT\t\t=\tBIT15\t\t\t#\tNATE, LGC COMMANDS\tON WHEN ANTENNA\n\t\t\t\t\t\t#\tRR REGARDLESS OF\tBEING DESIGNATED\n\t\t\t\t\t\t#\tLOCK-ON\n\n# BIT 14 FLAG 12\nREMODFLG\t=\t181D\t\t\t#\tCHANGE IN ANTENNA\tNO REMODE REQUESTED\nREMODBIT\t=\tBIT14\t\t\t#\tMODE BEEN REQUESTED\tOR OCCURRING\n\t\t\t\t\t\t#\tI.E., REMODE\n\n# BIT 13 FLAG 12\nRCDU0FLG\t=\t182D\t\t\t#\tRR CDU'S BEING\t\tRR CDU'S NOT BEING\nRCDU0BIT\t=\tBIT13\t\t\t#\tZEROED\t\t\tZEROED\n\n# BIT 12 FLAG 12\nANTENFLG\t=\t183D\t\t\t#\tRR ANTENNA MODE IS\tRR ANTENNA IN MODE 1\nANTENBIT\t=\tBIT12\t\t\t#\tMODE 2\n\n# BIT 11 FLAG 12\nREPOSMON\t=\t184D\t\t\t#\tREPOSITION MONITOR.\tNO REPOSITION TAKING\nREPOSBIT\t=\tBIT11\t\t\t#\tRR REPOSITION IS\tPLACE\n\t\t\t\t\t\t#\tTAKING PLACE\n\n# BIT 10 FLAG 12\nDESIGFLG\t=\t185D\t\t\t#\tRR DESIGNATE\t\tRR DESIGNATE NOT\nDESIGBIT\t=\tBIT10\t\t\t#\tREQUESTED OR IN\t\tREQUESTED OR IN\n\t\t\t\t\t\t#\tPROGRESS\t\tPROGRESS\n\n# BIT 9 FLAG 12\nALTSCALE\t=\t186D\t\t\t#\tLR ALTITUDE READING\tLR ALTITUDE READING\nALTSCBIT\t=\tBIT9\t\t\t#\tIS ON HIGH SCALE\tIS ON LOW SCALE\n\n# Page 86\n# BIT 8 FLAG 12\nLRVELFLG\t=\t187D\t\t\t#\tLR VELOCITY DATA\tNO LR VELOCITY DATA\nLRVELBIT\t=\tBIT8\t\t\t#\tFAIL\t\t\tFAIL\n\n# BIT 7 FLAG 12\nRCDUFAIL\t=\t188D\t\t\t#\tRR CDU FAIL HAS\t\tRR CDU FAIL OCCURRED\nRCDUFBIT\t=\tBIT7\t\t\t#\tNOT OCCURRED\n\n# BIT 6 FLAG 12\nLRPOSFLG\t=\t189D\t\t\t#\tLANDING RADAR\t\tLR POSITION 1\nLRPOSBIT\t=\tBIT6\t\t\t#\tPOSITION 2\n\n# BIT 5 FLAG 12\nLRALTFLG\t=\t190D\t\t\t#\tLR ALTITUDE DATA\tNO LR ALTITUDE DATA\nLRALTBIT\t=\tBIT5\t\t\t#\tFAIL.  COULD NOT BE\tFAIL\n\t\t\t\t\t\t#\tREAD SUCCESSFULLY.\n\n# BIT 4 FLAG 12\nRRDATAFL\t=\t191D\t\t\t#\tRR DATA FAIL.\t\tNO RR DATA FAIL\nRRDATABT\t=\tBIT4\t\t\t#\tDATA COULD NOT BE\n\t\t\t\t\t\t# \tREAD SUCCESSFULLY\n\n# BIT 3 FLAG 12\nRRRSFLAG\t=\t192D\t\t\t#\tRR RANGE READING\tRR RANGE READING ON\nRRRSBIT\t\t=\tBIT3\t\t\t#\tON THE HIGH SCALE\tTHE LOW SCALE\n\n# BIT 2 FLAG 12\nAUTOMODE\t=\t193D\t\t\t#\tRR NOT IN AUTO MODE.\tRR IN AUTO MODE\nAUTOMBIT\t=\tBIT2\t\t\t#\tAUTO MODE DISCRETE\n\t\t\t\t\t\t#\tIS NOT PRESENT\n\n# BIT 1 FLAG 12\nTURNONFL\t=\t194D\t\t\t#\tRR TURN-ON SEQUENCE\tNO RR TURN-ON\nTURNONBT\t=\tBIT1\t\t\t#\tIN PROGRESS.  (ZERO\tSEQUENCE IN PROGRESS\n\t\t\t\t\t\t#\tCDU'S, FIX ANTENNA\n\t\t\t\t\t\t#\tMODE)\n\nDAPBOOLS\tEQUALS\tFLGWRD13\t\t# DIGITAL AUTOPILOT FLAGWORD\n\n# Page 87\nFLGWRD13\t=\tSTATE +13D\t\t# (195-209)\tWAS DAPBOOLS\n\n\t\t\t\t\t\t#\t(SET)\t\t\t(RESET)\n\n# BIT 15 FLAG 13\nPULSEFLG\t=\t195D\t\t\t#\tMINIMUM IMPUSE\t\tNOT IN MINIMUM\nPULSES\t\t=\tBIT15\t\t\t#\tCOMMAND MODE IN\t\tIMPULSE COMMAND MODE\n\t\t\t\t\t\t#\t\"ATT HOLD\" (V76)\t(V77)\n\n# BIT 14 FLAG 13\nUSEQRFLG\t=\t196D\t\t\t#\tGIMBAL UNUSABLE.\tTRIM GIMBAL MAY BE\nUSEQRJTS\t=\tBIT14\t\t\t#\tUSE JETS ONLY.\t\tUSED.\n\n# BIT 13 FLAG 13\nCSMDKFLG\t=\t197D\t\t\t#\tCSM DOCKED.  USE\tCSM NOT DOCKED TO LM\nCSMDOCKD\t=\tBIT13\t\t\t#\tBACKUP DAP\n\n# BIT 12 FLAG 13\nOURRCFLG\t=\t198D\t\t\t#\tCURRENT DAP PASS\tCURRENT DAP PASS IS\nOURRCBIT\t=\tBIT12\t\t\t#\tIS RATE COMMAND\t\tNOT RATE COMMAND\n\n# BIT 11 FLAG 13\nACC4-2FL\t=\t199D\t\t\t#\t4 JET X-AXIS TRANS-\t2 JET X-AXIS TRANS-\nACC4OR2X\t=\tBIT11\t\t\t#\tLATION REQUESTED\tLATION REQUESTED\n\n# BIT 10 FLAG 13\nAORBTFLG\t=\t200D\t\t\t#\tB SYSTEM FOR X-\t\tA SYSTEM FOR X-\nAORBTRAN\t=\tBIT10\t\t\t#\tTRANSLATION\t\tTRANSLATION PREFER'D\n\n# BIT 9 FLAG 13\nXOVINFLG\t=\t201D\t\t\t#\tX-AXIS OVERRIDE\t\tX-AXIS OVERRIDE OKAY\nXOVINHIB\t=\tBIT9\t\t\t#\tLOCKED OUT\n\n# BIT 8 FLAG 13\nDRIFTDFL\t=\t202D\t\t\t#\tASSUME 0 OFFSET\t\tUSE OFFSET ACCELERA-\nDRIFTBIT\t=\tBIT8\t\t\t#\tDRIFTING FLIGHT\t\tION ESTIMATE\n\n# BIT 7 FLAG 13\nRHCSCFLG\t=\t203D\t\t\t#\tNORMAL RHC SCALING\tFINE RHC SCALING\nRHCSCALE\t=\tBIT7\t\t\t#\tREQUESTED\t\tREQUESTED\n\n# Page 88\n# BIT 6 FLAG 13\nULLAGFLG\t=\t204D\t\t\t#\tULLAGE REQUEST BY\tNO INTERNAL ULLAGE\nULLAGER\t\t=\tBIT6\t\t\t#\tMISSION PROGRAM\t\tREQUEST\n\n# BIT 5 FLAG 13\nAORBSFLG\t=\t205D\t\t\t#\tP-AXIS COUPLES 7.15\tP-AXIS COUPLES 4.12\nAORBSYST\t=\tBIT5\t\t\t#\tAND 8.16 PREFERRED\tAND 3.11 PREFERRED\n\n# BIT 4 FLAG 13\nDBSELFLG\t=\t206D\t\t\t#\tMAX DB SELECTED\t\tMIN DB SELECTED BY\nDBSELECT\t=\tBIT4\t\t\t#\tBY CREW\t(5 DEG)\t\tCREW (0.3 DEG)\n\n# BIT 3 FLAG 13\nACCOKFLG\t=\t207D\t\t\t#\tCONTROL AUTHORITY\tRESTART OR FRESH ST.\nACCSOKAY\t=\tBIT3\t\t\t#\tVALUES FROM 1/ACCS\tSINCE LAST 1/ACCS;\n\t\t\t\t\t\t#\tUSABLE\t\t\tOUTPUTS SUSPECT.\n\n# BIT 2 FLAG 13\nAUTR2FLG\t=\t208D\t\t\t# THESE FLAGS ARE USED TOGETHER TO INDICATE\nAUTRATE2\t=\tBIT2\t\t\t# ASTRONAUT-CHOSEN KALCMANU MANEUVER RATES\n\t\t\t\t\t\t# (0,0)=(BIT2,BIT1)=\t0.2 DEG/SEC\n# BIT 1 FLAG 13\t\t\t\t\t# (0,1)= \t\t0.5 DEG/SEC\nAUTR1FLG\t=\t209D\t\t\t# (1,0)=\t\t2.0 DEG/SEC\nAUTRATE1\t=\tBIT1\t\t\t# (1,1)=\t       10.0 DEG/SEC\n\n# Page 89 (nothing on this page)\n\n"
  },
  {
    "path": "Luminary099/FRESH_START_AND_RESTART.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tFRESH_START_AND_RESTART.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t211-237\n# Mod history:\t2009-05-19 HG\tTranscribed from page images.\n#\t\t2010-12-31 JL\tFixed page number comments.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\t\t2011-01-06 JL\tAdded missing comment characters.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 211\n\t\tBANK\t10\n\t\tSETLOC\tFRANDRES\n\t\tBANK\n\n\t\tEBANK=\tLST1\n\n\t\tCOUNT*\t$$/START\t# FRESH AND RESTART\nSLAP1\t\tINHINT\t\t\t# FRESH START.  COMES HERE FROM PINBALL.\n\t\tTC\tSTARTSUB\t# SUBROUTINE DOES MOST OF THE WORK\n\nSTARTSW\t\tTCF\tSKIPSIM\t\t# PATCH....TCF STARTSIM FOR SIMULATION\nSTARTSIM\tCAF\tBIT14\n\t\tTC\tFINDVAC\nSIM2CADR\tOCT\t77777\t\t# PATCH 2CADR (AND EBANK DESIGNATION) OF\n\t\tOCT\t77777\t\t# SIMULATION START ADDRESS.\n\nSKIPSIM\t\tCA\tDSPTAB +11D\t# TURN OFF ALL DSPTAB +11D LAMPS\n\t\tMASK\tBITS4&6\t\t# EXCEPT THE GIMBAL LOCK & NO ATT ONLY ON\n\t\tAD\tBIT15\t\t# REQUESTED FRESH START.\n\t\tTS\tDSPTAB +11D\n\n\t\tCA\tBIT12\t\t# INITIALIZE DOWNLINK EARASABLE MEMORY\n\t\tTS\tDUMPCNT\t\t# DUMP FOR ONE PASS\n\n\t\tCA\tZERO\n\t\tTS\tERCOUNT\n\t\tTS\tFAILREG\n\t\tTS\tFAILREG +1\n\t\tTS\tFAILREG +2\n\t\tTS\tREDOCTR\n\n\t\tCS\tPRIO12\n\t\tTS\tDSRUPTSW\n\nDOFSTART\tCAF\tBIT14\t\t# INSURE ENGINE IS OFF.\n\t\tEXTEND\n\t\tWRITE\tDSALMOUT\n\t\tCS\tZERO\n\t\tTS\tTHRUST\n\nDOFSTRT1\tCAF\tFOUR\n\t\tTS\tRCSFLAGS\t# INITIALIZE ATTITUDE ERROR DISPLAYS.\n\t\tCA\tPRIO30\n\t\tTS\tRESTREG\t\t# SUPER BANK PRIORITY FOR DISPLAYS.\n\n\t\tCA\tZERO\n\t\tTS\tABDELV\t\t# DAP INITIALIZATION\n\t\tTS\tNVSAVE\n\t\tTS\tEBANKTEM\n# Page 212\n\t\tTS\tCH5MASK\n\t\tTS\tCH6MASK\n\t\tTS\tPVALVEST\t# FOR RCS FAILURE MONITOR\n\t\tTS\tERESTORE\t# ***** MUST NOT BE REMOVED FROM DOFSTART\n\t\tTS\tSMODE\t\t# ***** MUST NOT BE REMOVED FROM DOFSTART\n\t\tTS\tDNLSTCOD\t# SELECT P00 DOWNLIST\n\t\tTS\tAGSWORD\t\t# ALLOW AGS INITIALIZATION\n\t\tTS\tUPSVFLAG\t# ZERO UPDATE STATE VECTOR REQUEST FLAGWRD\n\t\tEXTEND\n\t\tWRITE\tCHAN5\t\t# TURN OFF RCS JETS.\n\t\tEXTEND\n\t\tWRITE\tCHAN6\t\t# TURN OFF RCS JETS.\n\t\tEXTEND\n\t\tWRITE\tCHAN12\n\t\tEXTEND\n\t\tWRITE\tCHAN13\n\t\tEXTEND\n\t\tWRITE\tCHAN14\n\t\tCS\tDSPTAB +11D\n\t\tMASK\tBITS4&6\n\t\tCCS\tA\n\t\tTC\t+4\n\t\tCA\tBITS4&6\n\t\tEXTEND\t\t\t# THE IMU WAS IN COARSE ALIGN IN GIMBAL\n\t\tWOR\tCHAN12\t\t# LOCK, SO PUT IT BACK INTO COARSE ALIGN.\n +4\t\tTC\tMR.KLEAN\n\n\t\tCS\tZERO\n\t\tTS\tMODREG\n\n\t\tCAF\tIM30INIF\t# FRESH START IMU INITIALIZATION\n\t\tTS\tIMODES30\n\n\t\tCAF\tMAXDB\n\t\tTS\tDB\n\t\tCAF\tFOUR\n\t\tTS\tRATEINDX\t# INITIALZE KALCMANU RATE\n\t\tCA\tBOOLSTRT\n\t\tTS\tDAPBOOLS\n\t\tCAF\tEBANK6\n\t\tTS\tEBANK\n\t\tEBANK=\tHIASCENT\n\n\t\tCA\tSTIKSTRT\n\t\tTS\tSTIKSENS\n\t\tCA\tRATESTRT\n\t\tTS\t-RATEDB\n\t\tCAF\tFULLAPS\t\t# INITIALIZE MAXIMUM ASCENT MASS FOR USE\n\t\tTS\tHIASCENT\t#   BY 1/ACCS UNTIL THE PAD LOAD IS DONE.\n\t\tCA\t77001OCT\t#     LOAD DAP FILTER GAINS PAD LOAD.\n# Page 213\n\t\tTS\tDKTRAP\t\t#       TO BEST PRESENT ESTIMATE OF GOODIES\n\t\tTS\tLMTRAP\t\t# .14 DEG\n\t\tCA\t60DEC\n\t\tTS\tDKKAOSN\n\t\tTS\tLMKAOSN\t\t# 6 SEC GAIN FOR ALPHA\n\t\tCA\tZERO\n\t\tTS\tLMOMEGAN\t# UNITY GAIN\n\t\tCA\tTEN\n\t\tTS\tDKOMEGAN\t# 1 SEC GAIN FOR OMEGA\n\t\tCAF\tBIT8\t\t# SET DOCKED DB TO 1.4 DEG.  MAY OVERWRITE\n\t\tTS\tDKDB\t\t#\tWITH PAD LOAD.\n\t\tCAF\tIM33INIT\n\t\tAD\tBIT6\t\t# KEEP BOTH DAP AND ERROR-NEEDLES DISPLAY\n\t\tTS\tIMODES33\t#\tOFF UNTIL ICDU ZERO IS FINISHED.\n\n\t\tEXTEND\t\t\t# INITIALIZE SWITCHES ONLY ON FRESH START.\n\t\tDCA\tSWINIT\n\t\tDXCH\tSTATE\n\t\tCA\tSWINIT +2\n\t\tTS\tSTATE +2\n\t\tCA\tREFSMBIT\t# DO NOT ALTER REFSMFLG ON FRESH START.\n\t\tMASK\tSTATE +3\n\t\tAD\tSWINIT +3\n\t\tTS\tSTATE +3\n\t\tEXTEND\n\t\tDCA\tSWINIT +4\n\t\tDXCH\tSTATE +4\n\t\tEXTEND\n\t\tDCA\tSWINIT +6\n\t\tDXCH\tSTATE +6\n\t\tCA\tSURFFBIT\t# DO NOT ALTER\tSURFFLAG ON FRESH START.\n\t\tAD\tCMOONBIT\t#\t\tCMOONFLG\n\t\tAD\tLMOONBIT\t#\t\tLMOONFLG\n\t\tMASK\tSTATE +8D\n\t\tAD\tSWINIT +8D\n\t\tTS\tSTATE +8D\n\t\tCA\tSWINIT +9D\n\t\tTS\tSTATE +9D\n\t\tCA\tAPSFLBIT\t# DO NOT ALTER APSFLAG ON FRESH START.\n\t\tMASK\tSTATE +10D\n\t\tAD\tSWINIT +10D\n\t\tTS\tSTATE +10D\n\t\tCAF\tSWINIT +11D\n\t\tTS\tSTATE +11D\n\nENDRSTRT\tTC\tPOSTJUMP\t# NOW IN ANOTHER BANK.\n\t\tCADR\tDUMMYJOB +2\t# PICKS UP AT RELINT.\t(DON'T ZERO NEWJOB)\n\nMR.KLEAN\tINHINT\n# Page 214\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE2\nP00KLEAN\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE4\nV37KLEAN\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE1\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE3\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE5\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE6\n\t\tTC\tQ\n\n# Page 215\n# COMES HERE FROM LOCATION 4000, GOJAM, RESTART ANY PROGRAMS WHICH MAY HAVE BEEN RUNNING AT THE TIME.\n\n\t\tEBANK=\tLST1\nGOPROG\t\tINCR\tREDOCTR\t\t# ADVANCE RESTART COUNTER.\n\n\t\tLXCH\tQ\n\t\tEXTEND\n\t\tROR\tSUPERBNK\n\t\tDXCH\tRSBBQ\n\t\tCA\tDSPTAB +11D\n\t\tMASK\tBIT4\n\t\tEXTEND\n\t\tBZF\t+4\n\t\tAD\tBIT6\t\t# SET ERROR COUNTER ENABLE\n\t\tEXTEND\n\t\tWOR\tCHAN12\t\t# ISS WAS IN COARSE ALIGN SO GO BACK TO\nBUTTONS\t\tTC\tLIGHTSET\n\n# ERASCHK TEMPORARILY STORES THE CONTENST OF TWO ERASABLE LOCATIONS, X\n# AND X+1 INTO SKEEP5 AND SKEEP6.  IT ALSO STORES X INTO SKEEP7 AND\n# ERESTORE.  IF ERASCHK IS INTERRUPTED BY A RESTART, C(ERESTORE) SHOULD\n# EQUAL C(SKEEP7), AND SHOULD BE A + NUMBER LESS THAN 2000 OCT.  OTHERWISE\n# C(ERESTORE) SHOULD EQUAL +0.\n\n\t\tCAF\tHI5\n\t\tMASK\tERESTORE\n\t\tEXTEND\n\t\tBZF\t+2\t\t# IF ERESTORE NOT = +0 OR +N LESS THAN 2K,\n\t\tTCF\tNONAVKEY +3\t# DO FRESH START -- E MEMORY MIGHT BE BAD\n\t\tCS\tERESTORE\n\t\tEXTEND\n\t\tBZF\tDORSTART\t# = +0 CONTINUE WITH RESTART.\n\t\tAD\tSKEEP7\n\t\tEXTEND\n\t\tBZF\t+2\t\t# = SKEEP7, RESTORE E MEMORY.\n\t\tTCF\tNONAVKEY +3\t# DO FRESH START -- E MEMORY MIGHT BE BAD\n\t\tCA\tSKEEP4\n\t\tTS\tEBANK\t\t# EBANK OF E MEMORY THAT WAS UNDER TEST.\n\t\tEXTEND\t\t\t# (NOT DXCH SINCE THIS MIGHT HAPPEN AGAIN)\n\t\tDCA\tSKEEP5\n\t\tINDEX\tSKEEP7\n\t\tDXCH\t0000\t\t# E MEMORY RESTORED\n\t\tCA\tZERO\n\t\tTS\tERESTORE\nDORSTART\tTC\tSTARTSUB\t# DO INITIALIZATION AFTER ERASE RESTORE.\n\nSETINFL\t\tCS\tINTFLBIT\n\t\tMASK\tFLGWRD10\n\t\tTS\tFLGWRD10\n# Page 216\n\t\tCA\t9,6,4\t\t# LEAVE PROG ALARM, GIMBAL LOCK, NO ATT\n\t\tMASK\tDSPTAB +11D\t# LAMPS INTACT ON HARDWARE RESTART\n\t\tAD\tBIT15\n\t\tXCH\tDSPTAB +11D\n\t\tCAF\tIFAILINH\t# LEAVE IMU FAILURE INHIBITS INTACT ON\n\t\tMASK\tIMODES30\t# HARDWARE RESTART, RESET ALL FAILURE\n\t\tAD\tIM30INIR\t# CODES.\n\t\tTS\tIMODES30\n\n\t\tCA\tAGSWORD\t\t# BE SURE OF CORRECT DOWNLIST\n\t\tTS\tDNLSTCOD\n\n\t\tCA\tBIT4\t\t# TURN ON THROTTLE COUNTER\n\t\tEXTEND\n\t\tWOR\tCHAN14\t\t# TURN ON THRUST DRIVE\n\t\tCS\tFLAGWRD5\n\t\tMASK\tENGONBIT\n\t\tCCS\tA\n\t\tTCF\t+5\n\t\tCAF\tBIT13\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# TURN ENGINE ON\n\t\tTCF\tGOPROG3\n +5\t\tCAF\tBIT14\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# TURN ENGINE OFF\n\t\tTCF\tGOPROG3\n\nENEMA\t\tINHINT\n\t\tTC\tSTARTSB1\n\t\tTCF\tGOPROG2A\nGOPROG2\t\tTC\tSTARTSB2\nGOPROG2A\tTC\tLIGHTSET\n\t\tCS\tRSFLGBTS\t# CLEAR BITS 7 AND 14.\n\t\tMASK\tFLGWRD10\n\t\tTS\tFLGWRD10\n\nGOPROG3\t\tCAF\tNUMGRPS\t\t# VERIFY PHASE TABLE AGREEMENTS\nPCLOOP\t\tTS\tMPAC +5\n\t\tDOUBLE\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\t-PHASE1\t\t# COMPLEMENT INTO A, DIRECT INTO L.\n\t\tEXTEND\n\t\tRXOR\tLCHAN\t\t# RESULT MUST BE -0 FOR AGREEMENT.\n\t\tCCS\tA\n\t\tTCF\tPTBAD\t\t# RESTART FAILURE.\n\t\tTCF\tPTBAD\n\t\tTCF\tPTBAD\n# Page 217\n\t\tCCS\tMPAC +5\t\t# PROCESS ALL RESTART GROUPS.\n\t\tTCF\tPCLOOP\n\n\t\tTS\tMPAC +6\t\t# SET TO +0.\n\t\tTC\tMMDSPLAY\t# DISPLAY MAJOR MODE\n\n\t\tINHINT\t\t\t# RELINT DONE IN MMDSPLAY\n\n\t\tCS\tDIDFLBIT\t# CLEAR DIDFLAG IN ORDER TO FORCE R10 TO\n\t\tMASK\tFLAGWRD1\t# RE-INITIALIZE ITSELF IF IT HAD BEEN\n\t\tTS\tFLAGWRD1\t# OPERATION AT THE TIME OF THE RESTART.\n\n\t\tCS\tRODFLBIT\t# CLEAR RODFLAG.  IF P66 IS IN OPERATION\n\t\tMASK\tFLAGWRD1\t#\tIT WILL RE-INITIALIZE ITSELF AND\n\t\tTS\tFLAGWRD1\t#\tCONTINUE.\n\n\t\tCS\tP21FLBIT\t# CLEAR P21 FLAG SO THAT P21 WILL COMPUTE\n\t\tMASK\tFLAGWRD0\t# NEW BASE STATE VECTORS.\n\t\tTS\tFLAGWRD0\n\n\t\tCAF\tNUMGRPS\t\t# SEE IF ANY GROUPS RUNNING.\nNXTRST\t\tTS\tMPAC +5\n\t\tDOUBLE\n\t\tINDEX\tA\n\t\tCCS\tPHASE1\n\t\tTCF\tPACTIVE\t\t# PNZ -- GROUP ACTIVE.\n\t\tTCF\tPINACT\t\t# +0 -- GROUP NOT RUNNING.\n\nPACTIVE\t\tTS\tMPAC\n\t\tINCR\tMPAC\t\t# ABS OF PHASE.\n\t\tINCR\tMPAC +6\t\t# INDICATE GROUP DEMANDS PRESENT.\n\t\tCA\tRACTCADR\n\t\tTC\tSWCALL\t\t# MUST RETURN TO SWRETURN.\n\nPINACT\t\tCCS\tMPAC +5\t\t# PROCESS ALL RESTART GROUPS.\n\t\tTCF\tNXTRST\n\n\t\tCCS\tMPAC +6\t\t# NO, CHECK PHASE ACTIVITY FLAG\n\t\tTCF\tENDRSTRT\t# PHASE ACTIVE\n\t\tCAF\tBIT15\t\t# IS MODE -0\n\t\tMASK\tMODREG\n\t\tEXTEND\n\t\tBZF\tGOTOPOOH\t# NO\n\t\tTCF\tENDRSTRT\t# YES\nPTBAD\t\tTC\tALARM\t\t# SET ALARM TO SHOW PHASE TABLE FAILURE.\n\t\tOCT\t1107\n\n\t\tTCF\tDOFSTRT1\n#******** ****** ******\n# Page 218\n# DO NOT USE GOPROG2 OR ENEMA WITHOUT CONSULTING POOH PEOPLE.\n\nOCT10000\t=\tBIT13\nOCT30000\t=\tPRIO30\nOCT7777\t\tOCT\t7777\nSTIKSTRT\tDEC\t0.825268\t# 20 D/S MAXIMUM COMPANDED RATE\nRATESTRT\tDEC\t-218\nRACTCADR\tCADR\tRESTARTS\nBOOLSTRT\tOCT\t21312\n77001OCT\tOCT\t77001\t\t# .14 DEG SCALED AT 4.5 DEG\n60DEC\t\tDEC\t60\nRSFLGBTS\tOCT\t20100\nMAXDB\t\tOCTAL\t03434\t\t# 5 DEG ATTITUDE DEADBAND, SCALED AT 45.\n\nLIGHTSET\tCAF\tBIT5\t\t# CHECK FOR MARK REJECT AND ERROR RESET\n\t\tEXTEND\n\t\tRAND\tNAVKEYIN\n\t\tEXTEND\n\t\tBZF\tNONAVKEY\t# NO MARK REJECT\n\t\tEXTEND\n\t\tREAD\tMNKEYIN\t\t# CHECK IF KEYS 2M AND 5M ON\n\t\tAD\t-ELR\t\t# MAIN DSKY KEYCODE (BITS 1-5)\n\t\tEXTEND\n\t\tBZF\t+2\n\nNONAVKEY\tTC\tQ\n\n\t\tTC\tSTARTSUB\n\t\tTCF\tDOFSTART\n +3\t\tTC\tSTARTSUB\n\t\tTCF\tDOFSTRT1\t# DO FRESH START BUT DON'T TOUCH ENGINE\n\n# Page 219\n# INITIALIZATION COMMON TO BOTH FRESH START AND RESTART.\n\n\t\tEBANK=\tAOSQ\nSTARTSUB\tCAF\tLDNPHAS1\t# SET POINTER SO NEXT 20MS DOWNRUPT WILL\n\t\tTS\tDNTMGOTO\t# CAUSE THE CURRENT DOWNLIST TO BE\n\t\t\t\t\t# INTERRUPTED AND START SENDING FROM THE\n\t\t\t\t\t# BEGINNING OF THE CURRENT DOWNLIST.\n\t\tCAF\tBIT6\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tAD\tRMODINIT\n\t\tTS\tRADMODES\n\nSTARTSB1\tCAF\tPOSMAX\n\t\tTS\tTIME3\n\t\tAD\tMINUS2\n\t\tTS\tTIME4\n\t\tAD\tNEGONE\n\t\tTS\tTIME5\n\n\t\tCAF\tEBANK6\n\t\tTS\tEBANK\n\n\t\tCS\tBIT13\t\t# CAUSE DAPIDLER TO CALL 1/ACCS\n\t\tMASK\tRCSFLAGS\n\t\tTS\tRCSFLAGS\t# ZERO BIT 13\n\t\tCAF\tPOSMAX\t\t# DISABLE TIME6 CLOCK.  JUST IN CASE A T6\n\t\tTS\tT6NEXT\t\t#\tRUPT IS ALREADY IN THE PRIORITY CHAIN,\n\t\tEXTEND\t\t\t#\tENSURE THAT ITS INPUTS WILL RENDER IT\n\t\tWAND\tCHAN13\t\t#\tINEFFECTUAL.\n\t\tCAF\tZERO\n\t\tTS\tNXT6ADR\n\t\tTS\tNEXTP\n\n\t\tCS\tACCSOKAY\n\t\tMASK\tDAPBOOLS\n\t\tTS\tDAPBOOLS\n\n\t\tEXTEND\t\t\t# SET T5RUPT FOR DAPIDLER PROGRAM.\n\t\tDCA\tIDLEADR\n\t\tDXCH\tT5ADR\n\nSTARTSB2\tCAF\tOCT30001\t# DURING SOFTWARE RESTART, DO NOT DISTURB\n\t\tEXTEND\t\t\t# ENGINE ON, OFF AND ISS WARNING.\n\t\tWAND\tDSALMOUT\n\n\t\tCS\tREADRBIT\t# CLEAR READRFLG FOR R29\n\t\tMASK\tFLAGWRD3\n\t\tTS\tFLAGWRD3\n# Page 220\n\n\t\tCS\tFLAGWRD3\t# DURING SOFTWARE RESTART, CLEAR TURNON,\n\t\tMASK\tNR29FBIT\t# REPOSITION, CDU ZERO AND REMODE BITS\n\t\tEXTEND\t\t\t# IN RADMODES, SINCE TASKS ASSOCIATED\n\t\tBZF\t+2\t\t# WITH THESE BITS HAVE BEEN KILLED\n\t\tCAF\tBIT10\t\t# ALSO IF R29 HAD BEEN REQUESTED.\n\t\tAD\tOCT32001\t# (NOR29FLG = 0) CLEAR BIT 10 RADMODES\n\t\tCOM\t\t\t# TO MAKE R29 FORGET IT HAD STARTED\n\t\tMASK\tRADMODES\t# DESIGNATING\n\t\tTS\tRADMODES\n\t\tCAF\tOCT27470\t# DURING SOFTWARE RESTART, DO NOT DISTURB\n\t\tEXTEND\t\t\t# IMU FLAGS.  (COARSE ALIGN ENABLE, ZERO\n\t\tWAND\tCHAN12\t\t# IMU CDUS, ENABLE IMU COUNTER) AND GIMBAL\n\t\t\t\t\t# TRIM DRIVES.  LEAVE RR LOCKON ENABLE\n\t\t\t\t\t# ALONE.\n\n\t\tCS\tNORRMBIT\t# ENABLE R25.\n\t\tMASK\tFLAGWRD5\n\t\tTS\tFLAGWRD5\n\n\t\tCS\tR77FLBIT\t# CLEAR R77FLAG\n\t\tMASK\tFLAGWRD5\n\t\tTS\tFLAGWRD5\n\t\tCAF\tOCT74160\t# DURING SOFTWARE RESTART, DO NOT DISTURB\n\t\tEXTEND\t\t\t# TELEMETRY FLAGS, RESET TRAP FLAGS, AND\n\t\tWAND\tCHAN13\t\t# ENABLE T6RUPT FLAG.\n\n\t\tCAF\tBIT12\t\t# REENABLE RUPT10 (RUPT QUICKLY\n\t\tEXTEND\t\t\t#\tRESUMES EXCEPT DURING P64)\n\t\tWOR\tCHAN13\n\n\t\tCAF\tBIT6\t\t# DURING SOFTWARE RESTART, DO NOT DISTURB\n\t\tEXTEND\t\t\t# GYRO ENABLE FLAG.\n\t\tWAND\tCHAN14\n\n\t\tEBANK=\tLST1\n\t\tCAF\tSTARTEB\n\t\tTS\tEBANK\t\t# SET FOR E3\n\n\t\tCAF\tNEG1/2\t\t# INITIALIZE WAITLIST DELTA-TS.\n\t\tTS\tLST1 +7\n\t\tTS\tLST1 +6\n\t\tTS\tLST1 +5\n\t\tTS\tLST1 +4\n\t\tTS\tLST1 +3\n\t\tTS\tLST1 +2\n\t\tTS\tLST1 +1\n\t\tTS\tLST1\n\n\t\tCS\tENDTASK\n\t\tTS\tLST2\n# Page 221\n\t\tTS\tLST2 +2\n\t\tTS\tLST2 +4\n\t\tTS\tLST2 +6\n\t\tTS\tLST2 +8D\n\t\tTS\tLST2 +10D\n\t\tTS\tLST2 +12D\n\t\tTS\tLST2 +14D\n\t\tTS\tLST2 +16D\n\t\tCS\tENDTASK +1\n\t\tTS\tLST2 +1\n\t\tTS\tLST2 +3\n\t\tTS\tLST2 +5\n\t\tTS\tLST2 +7\n\t\tTS\tLST2 +9D\n\t\tTS\tLST2 +11D\n\t\tTS\tLST2 +13D\n\t\tTS\tLST2 +15D\n\t\tTS\tLST2 +17D\n\n\t\tCS\tZERO\t\t# MAKE ALL EXECUTIVE REGISTER SETS\n\t\tTS\tPRIORITY\t# AVAILABLE.\n\t\tTS\tPRIORITY +12D\n\t\tTS\tPRIORITY +24D\n\t\tTS\tPRIORITY +36D\n\t\tTS\tPRIORITY +48D\n\t\tTS\tPRIORITY +60D\n\t\tTS\tPRIORITY +72D\n\t\tTS\tPRIORITY +84D\n\n\t\tTS\tDSRUPTSW\n\t\tTS\tNEWJOB\t\t# SHOWS NO ACTIVE JOBS.\n\n\t\tCAF\tVAC1ADRC\t# MAKE ALL VAC AREAS AVAILABLE.\n\t\tTS\tVAC1USE\n\t\tAD\tLTHVACA\n\t\tTS\tVAC2USE\n\t\tAD\tLTHVACA\n\t\tTS\tVAC3USE\n\t\tAD\tLTHVACA\n\t\tTS\tVAC4USE\n\t\tAD\tLTHVACA\n\t\tTS\tVAC5USE\n\n\t\tCAF\tTEN\nDSPOFF\t\tTS\tMPAC\t\t# R1, R2, R3\n\t\tCS\tBIT12\n\t\tINDEX\tMPAC\n\t\tTS\tDSPTAB\n\t\tCCS\tMPAC\n\t\tTCF\tDSPOFF\n\n# Page 222\n\t\tTS\tDELAYLOC\n\t\tTS\tDELAYLOC +1\n\t\tTS\tDELAYLOC +2\n\t\tTS\tR1SAVE\n\t\tTS\tINLINK\n\t\tTS\tDSPCNT\n\t\tTS\tCADRSTOR\n\t\tTS\tREQRET\n\t\tTS\tCLPASS\n\t\tTS\tDSPLOCK\n\t\tTS\tMONSAVE\t\t# KILL MONITOR\n\t\tTS\tMONSAVE1\n\t\tTS\tVERBREG\n\t\tTS\tNOUNREG\n\t\tTS\tDSPLIST\n\t\tTS\tMARKSTAT\n\t\tTS\tEXTVBACT\t# MAKE EXTENDED VERBS AVAILABLE\n\t\tTS\tIMUCADR\n\t\tTS\tOPTCADR\n\t\tTS\tRADCADR\n\t\tTS\tATTCADR\n\t\tTS\tLGYRO\n\t\tTS\tFLAGWRD4\t# KILL INTERFACE DISPLAYS\n\t\tCAF\tNOUTCON\n\t\tTS\tNOUT\n\n\t\tCS\tONE\n\t\tTS\tSAMPLIM\n\t\tCAF\tBIT6\n\t\tMASK\tIMODES33\t# LEAVE BIT 6 UNCHANGED\n\t\tAD\tIM33INIT\t# NO PIP OR TM FAILS.  BIT6=0 IN THIS WORD.\n\t\tTS\tIMODES33\n\n\t\tCAF\tLESCHK\t\t# SELF CHECK GO-TO REGISTER.\n\t\tTS\tSELFRET\n\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\n\t\tTC\tQ\n\t\tEBANK=\tAOSQ\nIDLEADR\t\t2CADR\tDAPIDLER\n\nIFAILINH\tOCT\t435\nLDNPHAS1\tGENADR\tDNPHASE1\nLESCHK\t\tGENADR\tSELFCHK\nVAC1ADRC\tADRES\tVAC1USE\nOCT32001\tOCT\t32001\nLTHVACA\t\tDEC\t44\n\n# Page 223\nOCT27470\tOCT\t27470\nOCT74160\tOCT\t74160\nOCT30001\tOCT\t30001\nSTARTEB\t\tEQUALS\tEBANK3\nNUMGRPS\t\tEQUALS\tFIVE\n-ELR\t\tOCT\t-22\t\t# -ERROR LIGHT RESET KEY CODE.\nIM30INIF\tOCT\t37411\t\t# INHIBITS IMU FAIL FOR 5 SEC AND PIP ISSW\nIM30INIR\tOCT\t37000\nIM33INIT\t=\tPRIO16\t\t# NO PIP OR TM FAIL SIGNALS.\n9,6,4\t\tOCT\t450\nRMODINIT\tOCT\t00102\nSWINIT\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t02000\t\t# BIT 11 = NOR29FLG\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t00100\n\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t0\n\t\tOCT\t40000\t\t# BIT 15 = LRBYPASS.\n\n# Page 224\n# PROGRAM NAME\t\tGOTOPOOH\t\tASSEMBLY SUNDANCE\n# LOG SECTION\t\tFRESH START AND RESTART\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tFLASH V 37 ON DSKY MM CHANGE REQUEST\n#\n# INPUT/OUTPUT INFORMATION\n#\n#\tA. CALLING SEQUENCE\t\t\tTC GOTOPOOH\n#\tB. ERASABLE INITIALIZATION\t\tNONE\n#\tC. OUTPUT FLASH V 37 ON DSKY\n#\tD. DEBRIS\t\t\t\tL\n#\n# PROGRAM ANALYSIS\n#\n#\tA. SUBROUTINES CALLED\t\t\tPRIODSPR, LINUS\n#\tB. NORMAL EXIT\t\t\t\tTCF ENDOFJOB\n#\tC. ALARM AND ABORT EXITS\t\tNONE\n\n\t\tBLOCK\t03\n\t\tSETLOC\tFFTAG5\n\t\tBANK\n\n\t\tCOUNT*\t$$/P00\nGOTOPOOH\tCAF\tOCT33\t\t\t# 4.33 SPOT FOR GOP00FIX\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE4\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tGOP00FIX\nOCT24\t\tMM\t20\nOCT31\t\tMM\t25\n\n\t\tBANK\t20\n\t\tSETLOC\tVERB37\n\t\tBANK\n\n\t\tCOUNT*\t$$/P00\t\t\t# VERB 37 AND P00 IN BANK 4.\nGOP00FIX\tTC\tDOWNFLAG\t\t# ALLOW X-AXIS OVERRIDE\n\t\tADRES\tXOVINFLG\n\n\t\tTC\tDOWNFLAG\t\t# INSURE THAT ULLAGE IS OFF\n\t\tADRES\tULLAGFLG\n# Page 225\n\t\tTC\tCLEARMRK +2\t\t# RELEASE MARK DISPLAY SYSTEM.\n\t\tCAF\tV37N99\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\t-3\n\t\tTCF\t-4\n\t\tTCF\t-5\n\nV37N99\t\tVN\t3799\n\n# Page 226\n# PROGRAM NAME\t\tV37\t\t\tASSEMBLY SUNDANCE\n#\n# LOG SECTION\t\tFRESH START AND RESTART\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\t1. CHECK IF NEW PROGRAM ALLOWED.  IF BIT 1 OF FLAGWRD2 (NODOFLAG) IS SET, AN ALARM 1520 IS CALLED.\n#\t2. CHECK FOR VALIDITY OF PROGRAM SELECTED.  IF AN INVALID PROGRAM IS SELECTED, THE OPERATOR ERROR LIGHT IS\n#\t   SET AND CURRENT ACTIVITY, IF ANY, CONTINUE.\n#\t3. SERVICER IS TERMINATED IF IT HAS BEEN RUNNING.\n#\t4. INSTALL IS EXECUTED TO AVOID INTERRUPTING INTEGRATION.\n#\t5. THE ENGINE IS TURNED OFF AND THE DAP IS INITIALIZED FOR COAST.\n#\t6. TRACK AND UPDATE FLAGS ARE SET TO ZERO.\n#\t7. DISPLAY SYSTEM IS RELEASED.\n#\t8. THE FOLLOWING ARE PERFORMED FOR EACH OF THE THREE CASES.\n#\t\tA. PROGRAM SELECTED IS P00\n#\t\t\t1. RENDEZVOUS AND P25 FLAGS ARE RESET.  (KILL P20 AND P25)\n#\t\t\t2. STATINT1 IS SCHEDULED BY SETTING RESTART GROUP 2.\n#\t\t\t3. MAJOR MODE 00 IS STORED IN THE MODE REGISTER (MODREG).\n#\t\t\t4. SUPERBANK 3 IS SELECTED.\n#\t\t\t5. NODOFLAG IS RESET.\n#\t\t\t6. ALL RESTART GROUPS EXCEPT GROUP2 ARE CLEARED. CONTROL IS TRANSFERRED TO RESTART PROGRAM (GOPROG2)\n#\t\t\t   WHICH CAUSES ALL CURRENT ACTIVITY TO BE DISCONTINUED AND A 9 MINUTE INTEGRATION CYCLE TO BE\n#\t\t\t   INITIATED.\n#\t\tB. PROGRAM SELECTES IS P20 OR P25.\n#\t\t\t1. IF THE CURRENT MAJOR MODE IS THE SAME AS THE SELECTED NEWPROGRAM.  THE PROGRAM IS RE-INITIALIZED\n#\t\t\t   VIA V37XEQ, ALL RESTART GROUPS, EXCEPT GROUP 4 ARE CLEARED.\n#\t\t\t2. IF THE CURRENT MAJOR MODE IS NOT EQUAL TO THE NEW REQUEST, A CHECK IS MADE TO SEE IF THE REQUEST-\n#\t\t\t   ED MAJOR MODE HAS BEEN RUNNING THE BACKGROUND,\n#\t\t\t   AND IF IT HAS, NO NEW PROGRAM IS SCHEDULED, THE EXISTING\n#\t\t\t   P20 OR P25 IS RESTARTED TO CONTINUE, AND ITS MM IS SET.\n#\t\t\t3. CONTROL IS TRANSFERRED TO GOPROG2.\n#\t\tC. PROGRAM SELECTED IS NEITHER P00, P20, NOR P25\n#\t\t\t1. V37XEQ IS SCHEDULED (AS A JOB) BY SETTING RESTART GROUP 4\n#\t\t\t2. ALL CURRENT ACTIVITY EXCEPT RENDEZVOUS AND TRACKING IS DISCONTINUED BY CLEARING ALL RESTART\n#\t\t\t   GROUPS.  IF THE RENDEZVOUS OR THE P25 FLAG IS ON, GROUP 2 IS NOT CLEARED, ALLOWING THESE PROGRAMS\n#\t\t\t   TO CONTINUE.\n#\n# INPUT/OUTPUT INFORMATION\n#\n#\tA. CALLING SEQUENCE\n#\t\tCONTROL IS DIRECTED TO V37 BY THE VERBFAN ROUTINE.\n#\t\tVERBFAN GOES TO C(VERBTAB+C(VERBREG)). VERB 37 = MMCHANG.\n#\t\tMMCHANG EXECUTES A `TC POSTJUMP', CADR V37.\n#\n#\tB. ERASABLE INITIALIZATION\t\tNONE\n#\n# \tC. OUTPUT\n# Page 227\n#\t\tMAJOR MOD CHANGE\n#\n#\tD. DEBRIS\n#\t\tMMNUMBER, MPAC +1, MINDEX, BASETEMP +C(MINDEX), FLAGWRD0, FLAGWRD1, FLAGWRD2, MODREG, GOLOC -1,\n#\t\tGOLOC, GOLOC +1, GOLOC +2, BASETEMP, -PHASE2, PHASE2, -PHASE4\n#\n# PROGRAM ANALYSIS\n#\n#\tA. SUBROUTINES CALLED\n#\t\tALARM, RELDSP, PINBRNCH, INTSTALL, ENGINOF2, ALLCOAST, V37KLEAN, GOPROG2, FALTON, FINDVAC, SUPERSW,\n#\t\tDSPMM\n#\n#\tB. NORMAL EXIT\t\t\t\tTC ENDOFJOB\n#\n#\tC. ALARMS\t\t\t\t1520 (MAJOR MODE CHANGE NOT PERMITTED)\n\nV37\t\tTS\tMMNUMBER\t\t# SAVE MAJOR MODE\n\t\tCAF\tPRIO30\t\t\t# RESTART AT PINBALL PRIORITY\n\t\tTS\tRESTREG\n\n\t\tCA\tIMODES30\t\t# IS IMU BEING INITIALIZED\n\t\tMASK\tBIT6\n\t\tCCS\tA\n\t\tTCF\tCANTROD\n\n\t\tCS\tMMNUMBER\t\t# IS P70 REQUESTED?\n\t\tAD\tDEC70\n\t\tEXTEND\n\t\tBZF\tSETUP70\t\t\t# YES\n\t\tAD\tONE\t\t\t# IS P71 REQUESTED?\n\t\tEXTEND\n\t\tBZF\tSETUP71\t\t\t# YES\n\n\t\tCA\tMMNUMBER\t\t# IS NEW REQUEST P00\n\t\tEXTEND\n\t\tBZF\tISSERVON\t\t# YES, CHECK SERVICER STATUS\n\n\t\tCS\tFLAGWRD2\t\t# NO, IS NODO V37 FLAG SET\n\t\tMASK\tNODOBIT\n\t\tCCS\tA\n\t\tTCF\tCHECKTAB\t\t# NO\nCANTROD\t\tTC\tALARM\n\t\tOCT\t1520\n\nV37BAD\t\tTC\tRELDSP\t\t\t# RELEASES DISPLAY FROM ASTRONAUT\n\n\t\tTC\tPOSTJUMP\t\t# BRING BACK LAST NORMAL DISPLAY IF THERE\n\t\tCADR\tPINBRNCH\t\t# WAS ONE.  OTHERWISE DO AN EOJ.\n\nCHECKTAB\tCA\tNOV37MM\t\t\t# INDEX FOR MM TABLES.\n\n# Page 228\nAGAINMM\t\tTS\tMPAC +1\n\t\tNDX\tMPAC +1\n\t\tCA\tPREMM1\t\t\t# OBTAIN WHICH MM THIS IS FOR\n\t\tMASK\tLOW7\n\t\tCOM\n\t\tAD\tMMNUMBER\n\t\tCCS\tA\n\t\tCCS\tMPAC +1\t\t\t# IF GR, SEE IF ANY MORE IN LIST\n\t\tTCF\tAGAINMM\t\t\t# YES, GET NEXT ONE\n\t\tTCF\tV37NONO\t\t\t# LAST TIME OR PASSED MM\n\n\t\tCA\tMPAC +1\n\t\tTS\tMINDEX\t\t\t# SAVE INDEX FOR LATER\n\nISSERVON\tCS\tFLAGWRD7\t\t# V37 FLAG SET -- I.E., IS SERVICER GOING\n\t\tMASK\tV37FLBIT\n\t\tCCS\tA\n\t\tTCF\tCANV37\t\t\t# NO\n\n\t\tTC\tDOWNFLAG\t\t# YES, TURN OFF THE AVERAGE FLAG AND\n\t\tADRES\tAVEGFLAG\t\t# WAIT FOR SERVICER TO RETURN TO CANV37\n\n\t\tCAF\tV37RETAD\n\t\tTS\tOUTROUTE\n\n\t\tTCF\tENDOFJOB\n\nV37RET\t\tCS\tFLAGWRD0\t\t# IS P20 OR P22 RUNNING?\n\t\tMASK\tRNDVZBIT\n\t\tCCS\tA\n\t\tTCF\t+2\t\t\t# NO. CHECK FOR P25.\n\t\tTCF\t2.7SPT\t\t\t# YES. DO 2.7SPOT\n\t\tCS\tFLAGWRD0\t\t# IS P25 RUNNING?\n\t\tMASK\tP25FLBIT\n\t\tCCS\tA\n2.0SPT\t\tCA\tOCT37667\n2.11SPT\t\tAD\tBIT5\n2.7SPT\t\tAD\tOCT40072\n\t\tTC\tPHSCHNGA\n\nCANV37\t\tCAF\tZERO\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\n\t\tCAF\tR00AD\n\t\tTS\tTEMPFLSH\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t14\n\n# Page 229\n\nR00\t\tTC\tINTPRET\n\n\t\tCALL\t\t\t\t# WAIT FOR INTEGRATION TO FINISH\n\t\t\tINTSTALL\nDUMMYAD\t\tEXIT\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\t3AXISFLG\t\t# RESET 3-AXIT FLAG\n\n\t\tCAF\tLRBYBIT\t\t\t# CLEAN UP THE R12 FLAGWORD.\n\t\tTS\tFLGWRD11\n\n\t\tTC\tDOWNFLAG\t\t# INSURE THAT THE R04FLAG IS CLEAR.\n\t\tADRES\tR04FLAG\n\n\t\tTC\tDOWNFLAG\t\t# INSURE MUNFLAG IS CLEAR.\n\t\tADRES\tMUNFLAG\n\n\t\tTC\tDOWNFLAG\t\t# ALLOW X-AXIS OVERRIDE.\n\t\tADRES\tXOVINFLG\n\t\tCCS\tMMNUMBER\t\t# IS THIS A POOH REQUEST\n\t\tTCF\tNOUVEAU\t\t\t# NO, PICK UP NEW PROGRAM\n\nPOOH\t\tTC\tRELDSP\t\t\t# RELEASE DISPLAY SYSTEM\n\n\t\tCAF\tPRIO5\t\t\t# SET VARIABLE RESTART PRIORITY FOR\n\t\tTS\tPHSPRDT2\t\t# P00 INTEGRATION.\n\n\t\tTC\tCLRADMOD\t\t# CLRADMOD DOES AN INHINT.\n\n\t\tCS\tNODOBIT\t\t\t# TURN OFF NODOFLAG.\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\n\n\t\tCA\tFIVE\t\t\t# SET RESTART FOR STATEINT1\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE2\n\n\t\tCS\tOCT700\t\t\t# TURN OFF P20, P25, IMU IN USE FLAG\n\t\tMASK\tFLAGWRD0\n\t\tTS\tFLAGWRD0\t\t#\t\t\t REMDFLG\n\n\t\tCAF\tDNLADP00\n\nSEUDOP00\tTS\tDNLSTCOD\t\t# SET UP APPROPRIATE DOWNLIST CODE\n\t\tTS\tAGSWORD\t\t\t#   (CURRENT LIST WILL BE COMPLETED BEFORE\n\t\t\t\t\t\t#     NEW ONE IS STARTED)\n\t\tTC\tIBNKCALL\n\t\tCADR\tENGINOF1\n\n# Page 230\n\t\tTC\tIBNKCALL\t\t# INSURE ALLCOAST.\n\t\tCADR\tALLCOAST\t\t# DOES A RESTORDB.\n\n\t\tCS\tOCT120\t\t\t# TURN OFF TRACK, UPDATE FLAGS\n\t\tTS\tEBANKTEM\n\t\tMASK\tFLAGWRD1\n\t\tTS\tFLAGWRD1\n\n\t\tTC\tIBNKCALL\t\t# KILL GROUPS 1,3,5,6\n\t\tCADR\tV37KLEAN\n\n\t\tCCS\tMMNUMBER\t\t# IS IT POOH\n\t\tTCF\tRENDV00\t\t\t# NO\nGOMOD\t\tTC\tIBNKCALL\t\t# REDUNDANT EXCEPT FOR GROUP 4\n\t\tCADR\tP00KLEAN\n\n\t\tCA\tMMNUMBER\n\t\tTS\tMODREG\n\nGOGOPROG\tTC\tPOSTJUMP\n\t\tCADR\tGOPROG2\n\nRENDV00\t\tCS\tMODREG\t\t\t# IS CURRENT PROGRAM 22\n\t\tAD\tOCT26\n\t\tEXTEND\n\t\tBZF\tRESET22\t\t\t# YES -- CLEAR RENDEZVOUS FLAG\n\n\t\tCS\tMMNUMBER\t\t# IS NE PROGRAM P22\n\t\tAD\tOCT26\n\t\tEXTEND\n\t\tBZF\tRESET22\n\n\t\tAD\tNEG2\t\t\t# IS NEW PROGRAM = P20 OR P25\n\t\tEXTEND\n\t\tBZF\tRENDN00\t\t\t# YES\n\t\tAD\tFIVE\t\t\t# 25\n\t\tEXTEND\n\t\tBZF\tRENDN00\t\t\t# YES\n\n\t\tCA\tOCT500\t\t\t# NO, IS EITHER P20 OR P25 RUNNING\n\t\tMASK\tFLAGWRD0\n\t\tCCS\tA\n\t\tTCF\tP00FIZZ\t\t\t# YES, LEAVE GROUP 2 TO PICK UP P20 OR P25\n\nRESET22\t\tCS\tOCT700\t\t\t# CLEAR RENDEZVOUS, P25\n\t\tMASK\tFLAGWRD0\t\t# AND IMU IN USE FLAGS\n\t\tTS\tFLAGWRD0\n\t\tTC\tCLRADMOD\n# Page 231\n\nKILL2\t\tEXTEND\t\t\t\t# NO, KILL 2\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE2\n\nP00FIZZ\t\tCAF\tV37QCAD\t\t\t# RESTART POINT FOR V37XEQ\n\t\tTS\tTEMPFLSH\n\n\t\tTCF\tGOGOPROG\n\nRENDN00\t\tCS\tMODREG\n\t\tAD\tOCT24\n\t\tEXTEND\n\t\tBZF\tKILL2\t\t\t# P20 OR P25 ON TOP OF P20 OR P25 --\n\n\t\tAD\tFIVE\n\t\tEXTEND\n\t\tBZF\tKILL2\n\n\t\tCA\tOCT500\n\t\tMASK\tFLAGWRD0\n\t\tAD\tMMNUMBER\n\t\tCOM\n\t\tAD\tP20REG\t\t\t# IS IT 20 AND IS RENDEZVOUS FLAG ON\n\t\tEXTEND\n\t\tBZF\tSTATQUO\t\t\t# YES\n\t\tAD\tOCT305\t\t\t# IS IT 25 AND IS P25 BIT ON\n\t\tEXTEND\n\t\tBZF\tSTATQUO\t\t\t# YES, LEAVE AS IS\n\t\tTCF\tKILL2\n\nSTATQUO\t\tCS\tFLAGWRD1\t\t# SET TRACKFLAG\n\t\tMASK\tOCT120\t\t\t#\tUPDATE FLAG\n\t\tADS\tFLAGWRD1\n\n\t\tTCF\tGOMOD\n\nNOUVEAU\t\tCAF\tOCT500\t\t\t# IS P20 OR P25 FLAG SET\n\t\tMASK\tFLAGWRD0\n\t\tCCS\tA\n\t\tTCF\t+3\t\t\t# YES\n\t\tTC\tDOWNFLAG\t\t# NO, RESET IMUINUSE FLAG\n\t\tADRES\tIMUSE\n\n\t\tINDEX\tMINDEX\n\t\tCAF\tDNLADMM1\t\t# OBTAIN APPROPIRATE DOWNLIST ADDRESS\n\n\t\tINHINT\n\t\tTCF\tSEUDOP00\n\nV37NONO\t\tTC\tFALTON\t\t\t# COME HERE IF MM REQUESTED DOESN'T EXIST\n# Page 232\n\t\tTCF\tV37BAD\n\nOCT00010\tEQUALS\tBIT4\nOCT500\t\tOCT\t500\t\t\t# BITS 7 AND 9\nOCT305\t\tOCT\t305\nOCT26\t\tOCT\t26\nP20REG\t\tOCT\t124\n\nV37XEQ\t\tINHINT\n\t\tINDEX\tMINDEX\n\t\tCAF\tPREMM1\t\t\t# OBTAIN PRIO, EBANK, AND MM\n\t\tTS\tMMTEMP\n\t\tTS\tCYR\t\t\t# SHIFT RIGHT TO BITS 14-10\n\n\t\tCA\tCYR\n\t\tMASK\tPRIO37\n\t\tTS\tPHSPRDT4\t\t# PRESET GROUP 4 RESTART PRIORITY\n\t\tTS\tNEWPRIO\t\t\t# STORE PRIO FOR SPVAC\n\n\t\tCA\tMMTEMP\t\t\t# OBTAIN EBANK -- BITS 8, 9, 10 OF MMTEMP.\n\t\tEXTEND\n\t\tMP\tBIT8\n\t\tMASK\tLOW3\n\t\tTS\tL\n\n\t\tINDEX\tMINDEX\n\t\tCAF\tFCADRMM1\n\t\tTS\tBASETEMP\t\t# MAKE BBCON BY ADDING HI5 OR FCADR\n\t\tMASK\tHI5\n\t\tADS\tL\n\n\t\tCA\tBASETEMP\t\t# OBTAIN GENADR PORTION OF 2CADR.\n\t\tMASK\tLOW10\n\t\tAD\tBIT11\n\n\t\tTC\tSPVAC\n\nV37XEQC\t\tCA\tMMTEMP\t\t\t# UPON RETURN FROM FINDVAC PLACE THE\n\t\tMASK\tLOW7\t\t\t# NEW MM IN MODREG (THE LOW 7 BITS OF\n\t\tTC\tNEWMODEA\t\t# PHSPRDT1)\n\n\t\tTC\tRELDSP\t\t\t# RELEASE DISPLAY\n\t\tTC\tENDOFJOB\t\t# AND EXIT\n\nNEG7\t\tEQUALS\tOCT77770\n\nMMTEMP\t\tEQUALS\tPHSPRDT3\nBASETEMP\tEQUALS\tTBASE4\nV37QCAD\t\tCADR\tV37XEQ +3\nR00AD\t\tCADR\tDUMMYAD\n\n# Page 233\nV37RETAD\tCADR\tV37RET\nOCT37667\tOCT\t37667\nOCT40072\tOCT\t40072\nOCT700\t\tOCT\t700\n\nSETUP71\t\tCAF\tTHREE\nSETUP70\t\tTS\tQ\n\t\tEXTEND\n\t\tDCA\tP70CADR\n\t\tAD\tQ\n\t\tDTCB\n\nDEC70\t\tDEC\t70\n\t\tEBANK=\tR\nP70CADR\t\t2CADR\tP70\n\n# FOR VERB 37 TWO TABLES ARE MAINTAINED.  EACH TABLE HAS AN ETRY FOR EACH\n# MAJOR MODE THAT CAN BE STARTED FROM THE KEYBOARD.  THE ENTRIES ARE PUT\n# INTO THE TABLE WITH THE ENTRY FOR THE HIGHEST MAJOR MODE COMING FIRST,\n# TO THE LOWEST MAJOR MODE WHICH IS THE LAST ENTRY IN EACH TABLE.\n#\n# THE FCADRMM TABLE CONTAINS THE FCADR OF THE STARTING JOB OF\n# THE MAJOR MODE.  FOR EXAMPLE,\n#\n#\tFCADRMM1\tFCADR\tP79\t\t# START OF P 79\n#\t\t\tFCADR\tPROG18\t\t# START OF P 18\n#\t\t\tFCADR\tP01\t\t# START OF P 01\n#\n# NOTE:\t\tTHE FIRST ENTRY MUST BE LABELED FCADRMM1.\n# -----\n\nFCADRMM1\tFCADR\tP79\n\t\tFCADR\tP78\n\t\tFCADR\tP76\n\t\tFCADR\tP75\n\t\tFCADR\tP74\n\t\tFCADR\tP73\n\t\tFCADR\tP72\n\t\tFCADR\tLANDJUNK\n\t\tFCADR\tP63LM\n\t\tFCADR\tP57\n\t\tFCADR\tPROG52\n\t\tFCADR\tP51\n\t\tFCADR\tP47LM\n\t\tFCADR\tP42LM\n\t\tFCADR\tP41LM\n\t\tFCADR\tP40LM\n\t\tFCADR\tP39\n\t\tFCADR\tP38\n# Page 234\n\t\tFCADR\tP35\n\t\tFCADR\tP34\n\t\tFCADR\tP33\n\t\tFCADR\tP32\n\t\tFCADR\tP31\n\t\tFCADR\tP30\n\t\tFCADR\tPROG25\n\t\tFCADR\tPROG22\n\t\tFCADR\tPROG21\n\t\tFCADR\tPROG20\n\t\tFCADR\tP12LM\n\t\tFCADR\tP06\n\n# THE PREMM TABLE CONTAINS THE E-BANK, MAJOR MODE, AND PRIORITY\n# INFORMATION, IT IS IN THE FOLLOWING FORM,\n#\n#\tPPP PPE EEM MMM MMM\n#\n#\tWHERE THE\t7 M BITS CONTAIN THE MAJOR MODE NUMBER\n#\t\t\t3 E BITS CONTAIN THE E-BANK NUMBER\n#\t\t\t5 P BITS CONTAIN THE PRIORITY AT WHICH THE JOB IS\n#\t\t\t    TO BE STARTED\n#\n#\tFOR EXAMPLE,\n#\n#\t\tPREMM1\t\tOCT\t67213\t\t# PRIORITY\t33\n#\t\t\t\t\t\t\t# E-BANK\t5\n#\t\t\t\t\t\t\t# MAJOR MODE\t11\n#\t\t\t\tOCT\t25437\t\t# PRIORITY\t12\n#\t\t\t\t\t\t\t# E-BANK\t6\n#\t\t\t\t\t\t\t# MAJOR MODE\t31\n#\n# NOTE:\t\tTHE FIRST ENTRY MUST BE LABELED PREMM1\n\nPREMM1\t\tOCT\t27717\t\t# MM 79\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27716\t\t# MM 78\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27714\t\t# MM 76\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27713\t\t# MM 75\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27712\t\t# MM 74\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27711\t\t# MM 73\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27710\t\t# MM 72\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27704\t\t# MM 68\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27677\t\t# MM 63\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27271\t\t# MM 57\t\tEBANK 5\t\tPRIO 13\n\t\tOCT\t27264\t\t# MM 52\t\tEBANK 5\t\tPRIO 13\n\t\tOCT\t27263\t\t# MM 51\t\tEBANK 5\t\tPRIO 13\n\t\tOCT\t27657\t\t# MM 47\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27652\t\t# MM 42\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27651\t\t# MM 41\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27650\t\t# MM 40\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27647\t\t# MM 39\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27646\t\t# MM 38\t\tEBANK 7\t\tPRIO 13\n# Page 235\n\t\tOCT\t27643\t\t# MM 35\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27642\t\t# MM 34\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27641\t\t# MM 33\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27640\t\t# MM 32\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27637\t\t#\n\t\tOCT\t27636\t\t# MM 30\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27631\t\t# MM 25\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27626\t\t# MM 22\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27625\t\t# MM 21\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27624\t\t# MM 20\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27614\t\t# MM 12\t\tEBANK 7\t\tPRIO 13\n\t\tOCT\t27006\t\t# MM 06\t\tEBANK 4\t\tPRIO 13\n\n# NOTE:\t\tTHE FOLLOWING CONSTANT IS THE NUMBER OF ENTRIES IN EACH OF\n# -----\t\tTHE ABOVE LISTS-1 (I.E., THE NUMBER OF MAJOR MODES (EXCEPT P00)\n#\t\tTHAT CAN BE CALLED FROM THE KEYBOARD MINUS ONE)\n\nNOV37MM\t\tDEC\t29\t\t# MM'S -1\n\nDNLADMM1\tADRES\tRENDEZVU\t# P79\n\t\tADRES\tRENDEZVU\t# P78\n\t\tADRES\tRENDEZVU\n\t\tADRES\tRENDEZVU\t# P75\n\t\tADRES\tRENDEZVU\t# P74\n\t\tADRES\tRENDEZVU\t# P73\n\t\tADRES\tRENDEZVU\t# P72\n\t\tADRES\tDESASCNT\t# P68\n\t\tADRES\tDESASCNT\t# P63\n\t\tADRES\tLUNRSALN\t# P57\n\t\tADRES\tCOSTALIN\t# P52\n\t\tADRES\tCOSTALIN\t# P51\n\t\tADRES\tORBMANUV\t# P47\n\t\tADRES\tORBMANUV\t# P42\n\t\tADRES\tORBMANUV\t# P41\n\t\tADRES\tORBMANUV\t# P40\n\t\tADRES\tRENDEZVU\t# P39\n\t\tADRES\tRENDEZVU\t# P38\n\t\tADRES\tRENDEZVU\t# P35\n\t\tADRES\tRENDEZVU\t# P34\n\t\tADRES\tRENDEZVU\t# P33\n\t\tADRES\tRENDEZVU\t# P32\n\t\tADRES   RENDEZVU\t# P31LM\n\t\tADRES\tRENDEZVU\t# P30\n\t\tADRES\tRENDEZVU\t# P25\n\t\tADRES\tLUNRSALN\t# P22\n\t\tADRES\tRENDEZVU\t# P21\n\t\tADRES\tRENDEZVU\t# P20\n\t\tADRES\tDESASCNT\t# P12\n\t\tADRES\tCOSTALIN\t# P06\nDNLADP00\t=\tZERO\nCOSTALIN\t=\t0\n# Page 236\nAGSUPDAT\t=\t1\nRENDEZVU\t=\t2\nORBMANUV\t=\t3\nDESASCNT\t=\t4\nLUNRSALN\t=\t5\n\n\t\tBANK\t13\n\t\tSETLOC\tINTINIT\n\t\tBANK\n\n\t\tCOUNT*\t$$/INTIN\n\n\t\tEBANK=\tRRECTCSM\n\n# THIS ROUTINE DOES THE P00 INTEGRATION\n\nSTATEUP\t\tSET\tBOF\t\t# EXTRAPOLATE CM STATE VECTOR\n\t\t\tVINTFLAG\n\t\t\tSURFFLAG\t# ALSO 6X6 W-MATRIX IF LM ON LUNAR\n\t\t\tDOINT\t\t# \tSURFACE AND W-MATRIX VALID\n\t\tBOF\tSET\t\t#\tFOR RENDEZVOUS NAVIGATION.\n\t\t\tRENDWFLG\n\t\t\tDOINT\n\t\t\tDIM0FLAG\nDOINT\t\tCLEAR\tCALL\n\t\t\tPRECIFLG\t# ENGAGES 4-TIME STEP LOGIC IN INTEGRATION\n\t\t\tINTEGRV\t\t# WHEN MODREG = 0\n\n\t\tBON\tDLOAD\n\t\t\tSURFFLAG\n\t\t\tNO-INT\n\t\t\tTETCSM\n\t\tSTCALL\tTDEC1\n\t\t\tINTSTALL\n\t\tCLEAR\tCALL\t\t# EXTRAPOLATE LM STATE VECTOR\n\t\t\tVINTFLAG\n\t\t\tSETIFLGS\n\t\tBOF\t\t\t# ALSO 9X9 W-MATRIX IF W IS VALID\n\t\t\tRENDWFLG\n\t\t\tDOINT2\n\t\tSET\tSET\n\t\t\tDIM0FLAG\n\t\t\tD6OR9FLG\nDOINT2\t\tSET\tCALL\n\t\t\tPRECIFLG\t# DISENGAGE 4 TIME STEP LOGIC IN INTEG.\n\t\t\tINTEGRV\nNO-INT\t\tCLRGO\n\t\t\tNODOFLAG\n\t\t\tENDINT\n# Page 237\n# THISVINT IS CALLED BY MIDTOAV1 AND 2\n\nTHISVINT\tCLEAR\tRVQ\n\t\t\tVINTFLAG\n\n\n"
  },
  {
    "path": "Luminary099/GENERAL_LAMBERT_AIMPOINT_GUIDANCE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tLAMBERT_AIMPOINT_GUIDANCE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t651-653\n# Mod history:\t2009-05-18 RSB\tTranscribed from Luminary 099\n#\t\t\t\tpage images.\n#\t\t2009-06-05 RSB\tCorrected 4 typos.\n#\t\t2009-06-07 RSB\tFixed a typo.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14,1969\n\n# Page 651\n\n# GENERAL  LAMBERT AIMPOINT GUIDANCE **\n# WRITTEN  BY RAMA M AIYAWAR\n\n# PROGRAM P-31 DESCRIPTION **\n#\n# 1.\t   TO ACCEPT TARGETING PARAMETERS OBTAINED FROM A SOURCE EXTERNAL\n#\t   TO THE LEM AND COMPUTE THERE FROM THE REQUIRED-VELOCITY AND\n#\t   OTHER INITIAL CONDITIONS REQUIRED BY LM FOR DESIRED MANEUVER.\n#\t   THE TARGETING PARAMETERS ARE TIG (TIME OF IGNITION), TARGET\n#\t   VECTOR (RTARG), AND THE TIME FROM TIG UNTIL THE TARGET IS\n#\t   REACHED(DELLT4),DESIRED TIME OF FLIGHT FROM  RINIT TO RTARG..\n\n# ASSUMPTIONS **\n#\n# 1.\t   THE TARGET PARAMETERS MAY HAVE BEEN LOADED PRIOR TO THE\n#\t   EXECUTION OF THIS PROGRAM.\n# 2.\t   THIS PROGRAM IS APPLICABLE IN EITHER EARTH OR LUNAR ORBIT.\n# 3.\t   THIS PROGRAM IS DESIGNED FOR ONE-MAN OPERATION, AND SHOULD\n#\t   BE SELECTED BY THE ASTRONAUT BY DSKY ENTRY  V37 E31.\n\n# SUBROUTINES USED **\n#\n# MANUPARM, TTG/N35, R02BOTH, MIDGIM, DISPMGA, FLAGDOWN, BANKCALL,\n# GOTOPOOH, ENDOFJOB, PHASCHNG, GOFLASHR, GOFLASH.\n#\n# MANUPARM\t  CALCULATES APOGEE, PERIGEE ALTITUDES AND DELTAV DESIRED\n#\t\t  FOR THE MANEUVER.\n#\n# TTG/N35\t  CLOCKTASK - UPDATES CLOCK.\n#\n# MIDGIM\t  CALCULATES MIDDLE GIMBAL ANGLE FOR DISPLAY.\n#\n# R02BOTH\t  IMU - STATUS CHECK ROUTINE.\n\n# DISPLAYS USED IN P-31LM **\n#\n# V06N33\t  DISPLAY SOTRED  TIG (IN HRS. MINS. SECS)\n# V06N42\t  DISPLAY APOGEE, PERIGEE, DELTAV.\n# V16N35\t  DISPLAY TIME FROM TIG.\n# V06N45\t  TIME FROM IGNITION AND MIDDLE GIMBAL ANGLE.\n\n# ERASABLE INITIALIZATION REQUIRED **\n#\n# TIG\t\t  TIME OF IGNITION    DP    (B+28) CS.\n#\n# DELLT4\t  DESIRED TIME OF FLIGHT   DP  (B+28) CS\n#\t\t  FROM RINIT TO RTARG .\n#\n# RTARG\t\t  RADIUS VECTOR OF TARGET POSITION VECTOR\n#\t\t  RADIUS VECTOR   SCALED TO  (B+29)METERS IF EARTH ORBIT\n# Page 652\n#\t\t  RADIUS VECTOR SCALED TO    (B+27)METERS IF MOON  ORBIT\n\n# OUTPUT **\n#\n# HAPO\t\t  APOGEE ALTITUDE\n# HPER\t\t  PERIGEE ALTITUDE\n# VGDISP\t  MAG.OF DELTAV FOR DISPLAY ,SCALING\t  B+7 M/CS EARTH\n#\t\t  MAG.OF DELTAV FOR DISPLAY,SCALING\t  B+5 M/CS MOON\n# MIDGIM\t  MIDDLE GIMBAL ANGLE\n# XDELVFLG\t  RESETS XDELVFLG FOR LAMBERT VG COMPUTATIONS\n\n# ALARMS OR ABORTS  NONE **\n\n# RESTARTS  ARE VIA GROUP 4 **\n\n\t\tSETLOC\tGLM\n\t\tBANK\n\n\t\tEBANK=\tSUBEXIT\n\n\t\tCOUNT*\t$$/P31\nP31\t\tTC\tP20FLGON\n\t\tCAF\tV06N33\t\t# TIG\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tCLEAR\tDLOAD\n\t\t\tUPDATFLG\n\t\t\tTIG\n\t\tSTCALL\tTDEC1\t\t# INTEGRATE STATE VECTORS TO TIG\n\t\t\tLEMPREC\n\t\tVLOAD\tSETPD\n\t\t\tRATT\n\t\t\t0D\n\t\tSTORE\tRTIG\n\t\tSTOVL\tRINIT\n\t\t\tVATT\n\t\tSTORE\tVTIG\n\t\tSTODL\tVINIT\n\t\t\tP30ZERO\n\t\tPUSH\tPDDL\t\t# E4 AND NUMIT = 0\n\t\t\tDELLT4\n\t\tDAD\tSXA,1\n\t\t\tTIG\n\t\t\tRTX1\n\t\tSTORE\tTPASS4\n\t\tSXA,2\tCALL\n\t\t\tRTX2\n\t\t\tINITVEL\n\t\tVLOAD\tPUSH\n# Page 653\n\t\t\tDELVEET3\n\t\tSTORE\tDELVSIN\n\t\tABVAL\tCLEAR\n\t\t\tXDELVFLG\n\t\tSTCALL\tVGDISP\n\t\t\tGET.LVC\n\t\tVLOAD\tPDVL\n\t\t\tRTIG\n\t\t\tVIPRIME\n\t\tCALL\n\t\t\tPERIAPO1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tCALL\t\t\t# LIMIT DISPLAY TO 9999.9 N. MI.\n\t\t\tMAXCHK\n\t\tSTODL\tHPER\n\t\t\t4D\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tCALL\t\t\t# LIMIT DISPLAY TO 9999.9 N. MI.\n\t\t\tMAXCHK\n\t\tSTORE\tHAPO\n\t\tEXIT\n\t\tCAF\tV06N81\t\t# DELVLVC\n\t\tTC\tVNPOOH\n\t\tCAF\tV06N42\t\t# HAPO, HPER, VGDISP\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\nREVN1645\tSET\tCALL\t\t# TRKMKCNT, TTOGO, +MGA\n\t\t\tFINALFLG\n\t\t\tVN1645\n\t\tGOTO\n\t\t\tREVN1645\n\n\n# *** END OF LEMP30S .103 ***\n"
  },
  {
    "path": "Luminary099/GIMBAL_LOCK_AVOIDANCE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tGIMBAL_LOCK_AVOIDANCE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t364\n# Mod history:\t2009-05-17 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2010-12-31 JL\tFixed page number comment.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 364\n\t\tBANK\t15\n\n\t\tSETLOC\tKALCMON1\n\t\tBANK\n\n# DETECTING GIMBAL LOCK\nLOCSKIRT\tEQUALS\tNOGIMLOC\n\nNOGIMLOC\tSET\n\t\t\tCALCMAN3\nWCALC\t\tLXC,1\tDLOAD*\n\t\t\tRATEINDX\t# CHOOSE THE DESIRED MANEUVER RATE\n\t\t\tARATE,1\t\t# FROM A LIST OF FOUR\n\t\tSR4\tCALL\t\t# COMPUTE THE INCREMENTAL ROTATION MATRIX\n\t\t\tDELCOMP\t\t# DEL CORRESPONDING TO A 1 SEC ROTATION\n\t\t\t\t\t# ABOUT COF\n\t\tDLOAD*\tVXSC\n\t\t\tARATE,1\n\t\t\tCOF\n\t\tSTODL\tBRATE\t\t# COMPONENT MANEUVER RATES 45 DEG/SEC\n\t\t\tAM\n\t\tDMP\tDDV*\n\t\t\tANGLTIME\n\t\t\tARATE,1\n\t\tSR\n\t\t\t5\n\t\tSTORE\tTM\t\t# MANEUVER EXECUTION TIME SCALED AS T2\n\t\tSETGO\n\t\t\tCALCMAN2\t# 0(OFF) = CONTINUE MANEUVER\n\t\t\tNEWANGL +1\t# 1(ON) = START MANEUVER\n\n# THE FOUR SELECTABLE FREE FALL MANEUVER RATES SELECTED BY\n# LOADING RATEINDX WITH 0,2,4,6, RESPECTIVELY\n\nARATE\t\t2DEC\t.0088888888\t# = 0.2 DEG/SEC\t\t$ 22.5 DEG/SEC\n\n\t\t2DEC\t.0222222222\t# = 0.5 DEG/SEC\t\t$ 22.5 DEG/SEC\n\n\t\t2DEC\t.0888888888\t# = 2.0 DEG/SEC\t\t$ 22.5 DEG/SEC\n\n\t\t2DEC\t.4444444444\t# = 10.0 DEG/SEC\t$ 22.5 DEG/SEC\n\nANGLTIME\t2DEC\t.0001907349\t# = 1008-19 FUDGE FACTOR TO CONVERT\n\t\t\t\t\t# MANEUVER ANGLE TO MANEUVER TIME\n\n\n"
  },
  {
    "path": "Luminary099/GROUND_TRACKING_DETERMINATION_PROGRAM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tGROUND_TRACKING_DETERMINATION_PROGRAM.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t654-657\n# Mod history:\t2009-05-18 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 654\n# GROUND TRACKING DETERMINATION PROGRAM P21\n# PROGRAM DESCRIPTION\n# MOD NO - 1\n# MOD BY - N.M.NEVILLE\n# FUNCTIONAL DECRIPTION-\n#\n# TO PROVIDE THE ASTRONAUT DETAILS OF THE LM OR CSM GROUND TRACK WITHOUT\n# THE NEED FOR GROUND COMMUNICATION (REQUESTED BY DSKY).\n# CALLING SEQUENCE -\n#\n# ASTRONAUT REQUEST THROUGH DSKY V37E21E\n# SUBROUTINES CALLED-\n#\n# GOPERF4\n# GOFLASH\n# THISPREC\n# OTHPREC\n# LAT-LONG\n# NORMAL EXIT MODES-\n#\n# ASTRONAUT REQUEST TROUGH DSKY TO TERMINATE PROGRAM V34E\n# ALARM OR ABORT EXIT MODES-\n#\n# NONE\n# OUTPUT -\n#\n# OCTAL DISPLAY OF OPTION CODE AND VEHICLE WHOSE GROUND TRACK IS TO BE\n# COMPUTED\n#\tOPTION CODE\t00002\n#\tTHIS\t\t00001\n#\tOTHER\t\t00002\n# DECIMAL DISPLAY OF TIME TO BE INTEGRATED TO HOURS , MINUTES , SECONDS\n# DECIMAL DISPLAY OF LAT,LONG,ALT\n# ERASABLE INITIALIZATION REQUIRED\n#\n# AXO\t\t2DEC\t4.652459653 E-5\t\tRADIANS\t\t%68-69 CONSTANTS\"\n#\n# -AYO\t\t2DEC\t2.147535898 E-5\t\tRADIANS\n#\n# AZO\t\t2DEC\t.7753206164\t\tREVOLUTIONS\n# FOR LUNAR ORBITS 504LM VECTOR IS NEEDED\n#\n# 504LM\t\t2DEC\t-2.700340600 E-5\tRADIANS\n#\n# 504LM\t_2\t2DEC\t-7.514128400 E-4\tRADIANS\n#\n# 504LM\t_4\t2DEC\t_2.553198641 E-4\tRADIANS\n#\n# NONE\n# DEBRIS\n#\n# Page 655\n# CENTRALS-A,Q,L\n# OTHER-THOSE USED BY THE ABOVE LISTED SUBROUTINES\n# SEE LEMPREC,LAT-LONG\n\t\tSBANK=\tLOWSUPER\t# FOR LOW 2CADR'S.\n\n\t\tBANK\t33\n\t\tSETLOC\tP20S\n\t\tBANK\n\n\t\tEBANK=\tP21TIME\n\t\tCOUNT*\t$$/P21\nPROG21\t\tCAF\tONE\n\t\tTS\tOPTION2\t\t# ASSUMED VEHICLE IS LM , R2 = 00001\n\t\tCAF\tBIT2\t\t#  OPTION 2\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF4\n\t\tTC\tGOTOPOOH\t# TERMINATE\n\t\tTC\t+2\t\t# PROCEED VALUE OF ASSUMED VEHICLE OK\n\t\tTC\t-5\t\t# R2 LOADED THROUGH DSKY\nP21PROG1\tCAF\tV6N34\t\t# LOAD DESIRED TIME OF LAT-LONG.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# TERM\n\t\tTC\t+2\t\t# PROCEED VALUES OK\n\t\tTC\t-5\t\t# TIME LOADED THROUGH DSKY\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tDSPTEM1\n\t\tSTCALL\tTDEC1\t\t# INTEGRATE TO TIME SPECIFIED IN TDEC\n\t\t\tINTSTALL\n\t\tBON\tCLEAR\n\t\t\tP21FLAG\n\t\t\tP21CONT\t\t# ON---RECYCLE USING BASE VECTOR\n\t\t\tVINTFLAG\t# OFF--IST PASS CALL BASE VECTOR\n\t\tSLOAD\tSR1\n\t\t\tOPTION2\n\t\tBHIZ\tSET\n\t\t\t+2\t\t# ZERO--THIS VEHICLE(LM)\n\t\t\tVINTFLAG\t# ONE--OTHER VEHICLE(CM)\n\t\tCLEAR\tCLEAR\n\t\t\tDIM0FLAG\n\t\t\tINTYPFLG\t# PRECISION\n\t\tCALL\n\t\t\tINTEGRV\t\t# CALCULATE\n\t\tGOTO\t\t\t# -AND\n\t\t\tP21VSAVE\t# -SAVE BASE VECTOR\nP21CONT\t\tVLOAD\n\t\t\tP21BASER\t# RECYCLE--INTEG FROM BASE VECTOR\n\t\tSTOVL\tRCV\t\t# --POS\n# Page 656\n\t\t\tP21BASEV\n\t\tSTODL\tVCV\t\t# --VEL\n\t\t\tP21TIME\n\t\tSTORE\tTET\t\t# --TIME\n\t\tCLEAR\tCLEAR\n\t\t\tDIM0FLAG\n\t\t\tMOONFLAG\n\t\tSLOAD\tBZE\n\t\t\tP21ORIG\n\t\t\t+3\t\t# ZERO=EARTH\n\t\tSET\t\t\t# ---2=MOON\n\t\t\tMOONFLAG\n +3\t\tCALL\n\t\t\tINTEGRVS\nP21VSAVE\tDLOAD\t\t\t# SAVE CURRENT BASEVECTOR\n\t\t\tTAT\n\t\tSTOVL\tP21TIME\t\t# --TIME\n\t\t\tRATT1\n\t\tSTOVL\tP21BASER\t# --POS B-29 OR B-27\n\t\t\tVATT1\n\t\tSTORE\tP21BASEV\t# --VEL B-07 OR B-05\n\t\tABVAL\tSL*\n\t\t\t0,2\n\t\tSTOVL\tP21VEL\t\t# VEL/ FOR N91 DISP\n\t\t\tRATT\n\t\tUNIT\tDOT\n\t\t\tVATT\t\t#  U(R).V\n\t\tDDV\tASIN\t\t# U(R).U(V)\n\t\t\tP21VEL\n\t\tSTORE\tP21GAM\t\t# SIN-1 U(R).U(V) , -90 TO &90\n\t\tSXA,2\tSLOAD\n\t\t\tP21ORIG\t\t# 0=EARTH\n\t\t\tOPTION2\n\t\tSR1\tBHIZ\n\t\t\t+3\n\t\tGOTO\n\t\t\t+4\n +3\t\tBON\n\t\t\tSURFFLAG\n\t\t\tP21DSP\n +4\t\tSET\n\t\t\tP21FLAG\nP21DSP\t\tCLEAR\tSLOAD\t\t# GENERATE DISPLAY DATA\n\t\t\tLUNAFLAG\n\t\t\tX2\n\t\tBZE\tSET\n\t\t\t+2\t\t# 0 = EARTH\n\t\t\tLUNAFLAG\n\t\tVLOAD\n\t\t\tRATT\n# Page 657\n\t\tSTODL\tALPHAV\n\t\t\tTAT\n\t\tCLEAR\tCALL\n\t\t\tERADFLAG\n\t\t\tLAT-LONG\n\t\tDMP\t\t\t# MPAC = ALT, METERS B-29\n\t\t\tK.01\n\t\tSTORE\tP21ALT\t\t# ALT/100 FOR N91 DISP\n\t\tEXIT\n\t\tCAF\tV06N43\t\t# DISPLAY LAT, LONG, ALT\n\t\tTC\tBANKCALL\t# LAT, LONG = 1/2 REVS B0\n\t\tCADR\tGOFLASH\t\t# ALT = KM B14\n\t\tTC\tGOTOPOOH\t# TERM\n\t\tTC\tGOTOPOOH\n\t\tTC\tINTPRET\t\t# V32E RECYCLE\n\t\tDLOAD\tDAD\n\t\t\tP21TIME\n\t\t\t600SEC\t\t# 600 SECONDS OR 10 MIN\n\t\tSTORE\tDSPTEM1\n\t\tRTB\n\t\t\tP21PROG1\n600SEC\t\t2DEC\t60000\t\t# 10 MIN\n\nV06N43\t\tVN\t00643\nV6N34\t\tVN\t00634\nK.01\t\t2DEC\t.01\n"
  },
  {
    "path": "Luminary099/IMU_COMPENSATION_PACKAGE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tIMU_COMPENSATION_PACKAGE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t326-337\n# Mod history:\t2009-05-16 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-07 RSB\tCorrected a typo.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 326\n\t\tBANK\t7\n\t\tSETLOC\tIMUCOMP\n\t\tBANK\n\n\t\tEBANK=\tNBDX\n\n\t\tCOUNT*\t$$/ICOMP\n1/PIPA\t\tCAF\tLGCOMP\t\t# SAVE EBANK OF CALLING PROGRAM\n\t\tXCH\tEBANK\n\t\tTS\tMODE\n\n\t\tCCS\tGCOMPSW\t\t# BYPASS IF GCOMPSW NEGATIVE\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\tIRIG1\t\t# RETURN\n\n1/PIPA1\t\tCAF\tFOUR\t\t# PIPAZ, PIPAY, PIPAX\n\t\tTS\tBUF +2\n\n\t\tINDEX\tBUF +2\n\t\tCA\tPIPASCF\t\t# (P.P.M.) X 2(-9)\n\t\tEXTEND\n\t\tINDEX\tBUF +2\n\t\tMP\tDELVX\t\t# (PP) X 2(+14) NOW (PIPA PULSES) X 2(+5)\n\t\tTS\tQ\t\t# SAVE MAJOR PART\n\n\t\tCA\tL\t\t# MINOR PART\n\t\tEXTEND\n\t\tMP\tBIT6\t\t# SCALE 2(+9)   SHIFT RIGHT 9\n\t\tINDEX \tBUF +2\n\t\tTS\tDELVX +1\t# FRACTIONAL PIPA PULSES SCALED 2(+14)\n\n\t\tCA\tQ\t\t# MAJOR PART\n\t\tEXTEND\n\t\tMP\tBIT6\t\t# SCALE 2(+9)\tSHIFT RIGHT 9\n\t\tINDEX\tBUF  +2\n\t\tDAS\tDELVX\t\t# (PIPAI) + (PIPAI)(SFE)\n\n\t\tINDEX\tBUF +2\n\t\tCS\tPIPABIAS\t# (PIPA PULSES)/(CS) X 2(-5)\t\t *\n\t\tEXTEND\n\t\tMP\t1/PIPADT\t# (CS) X 2(+8)  NOW (PIPA PULSES) X 2(+3)*\n\t\tEXTEND\n\t\tMP\tBIT4\t\t# SCALE 2(+11)  SHIFT RIGHT 11\t\t *\n\t\tINDEX\tBUF +2\n\t\tDAS\tDELVX\t\t# (PIPAI) + (PIPAI)(SFE) - (BIAS)(DELTAT)\n\n\t\tCCS\tBUF \t+2\t# PIPAZ, PIPAY, PIPAX\n\t\tAD\tNEG1\n\t\tTCF\t1/PIPA1\t+1\n# Page 327\n\t\tNOOP\t\t\t# LESS THAN ZERO IMPOSSIBLE\n\n# Page 328\nIRIGCOMP\tTS\tGCOMPSW\t\t# INDICATE COMMANDS 2 PULSES OR LESS.\n\t\tTS\tBUF\t\t# INDEX COUNTER .  IRIGX, IRIGY, IRIGZ.\n\n\t\tTC\tIRIGX\t\t# COMPENSATE ACCELERATION TERMS\n\n\t\tCS\tNBDX\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tDRIFTSUB\t# -(NBOX)(DELTAT)   (GYRO PULSES) X 2(+14)\n\n\t\tTC\tIRIGY\t\t# COMPENSATE ACCELERATION TERMS\n\n\t\tCS\tNBDY\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tDRIFTSUB\t# -(NBDY)(DELTAT)   (GYRO PULSES) X 2(+14)\n\n\t\tTC\tIRIGZ\t\t# COMPENSATE ACCELERATION TERMS\n\n\t\tCA\tNBDZ\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tDRIFTSUB\t# +(NBDZ)(DELTAT)   (GYRO PULSES) X 2(+14)\n\n\t\tCCS\tGCOMPSW\t\t# ARE GYRO COMMANDS GREATER THAN 2 PULSES\n\t\tTCF\t+2\t\t# YES  SEND OUT GYRO TORQUING COMMANDS.\n\t\tTCF\tIRIG1\t\t# NO  RETURN\n\n\t\tCA\tPRIO21\t\t# PRIO GREATER THAN SERVICER\n\t\tTC\tNOVAC\t\t# SEND OUT GYRO TORQUING COMMANDS.\n\t\tEBANK=\tNBDX\n\t\t2CADR\t1/GYRO\n\n\t\tRELINT\nIRIG1\t\tCA\tMODE\t\t# RESTORE CALLERS EBANK\n\t\tTS\tEBANK\n\t\tTCF\tSWRETURN\n\n# Page 329\nIRIGX\t\tEXTEND\n\t\tQXCH\tMPAC +2\t        # SAVE Q\n\t\tEXTEND\n\t\tDCS\tDELVX\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCA\tADIAX\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-6)     *\n\t\tTC\tGCOMPSUB\t# -(ADIAX)(PIPAX)   (GYRO PULSES) X 2(+14)\n\n\t\tEXTEND\t\t\t#\n\t\tDCS\tDELVY\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\t\t#\n\t\tCS\tADSRAX\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-6)\t *\n\t\tTC\tGCOMPSUB\t# +(ADSRAX)(PIPAY)  (GYRO PULSES) X 2(+14)\n\n#\t\tEXTEND\t\t # ***\n#\t\tDCS\tDELVZ\t # ***    (PIPA PULSES) X 2(+14)\n#\t\tDXCH\tMPAC\t # ***\n#\t\tCA\tADOAX\t # ***    (GYRO PULSES)/(PIPA PULSE) X 2(-6)\t *\n#\t\tTC\tGCOMPSUB # ***    -(ADOAX)(PIPAZ)   (GYRO PULSES) X 2(+14)\n\n\t\tTC\tMPAC  +2\n\nIRIGY\t\tEXTEND\n\t\tQXCH\tMPAC  +2\t# SAVE Q\n\t\tEXTEND\n\t\tDCS\tDELVY\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCA\tADIAY\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-6)     *\n\t\tTC\tGCOMPSUB\t# -(ADIAY)(PIPAY)   (GYRO PULSES) X 2(+14)\n\n\t\tEXTEND\n\t\tDCS\tDELVZ\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCS\tADSRAY\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-6)\t *\n\t\tTC\tGCOMPSUB\t# +(ADSRAY)(PIPAZ)  (GYRO PULSES) X 2(+14)\n\n#\t\tEXTEND\t\t # ***\n#\t\tDCS\tDELVX\t # ***    (PIPA PULSES) X 2(+14)\n#\t\tDXCH\tMPAC\t # ***\n#\t\tCA\tADOAY\t # ***    (GYRO PULSES)/(PIPA PULSE) X 2(-6)\t *\n#\t\tTC\tGCOMPSUB # ***    -(ADOAY)(PIPAX)   (GYRO PULSES) X 2(+14)\n\n\t\tTC\tMPAC +2\n\nIRIGZ\t\tEXTEND\n\t\tQXCH\tMPAC +2\t\t# SAVE Q\n\t\tEXTEND\n\t\tDCS\tDELVY\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCA\tADSRAZ\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-6)\t *\n# Page 330\n\t\tTC\tGCOMPSUB\t# -(ADSRAZ)(PIPAY)  (GYRO PULSES) X 2(+14)\n\n\t\tEXTEND\n\t\tDCS\tDELVZ\t\t# (PIPA PULSES) X 2(+14)\n\t\tDXCH\tMPAC\n\t\tCA\tADIAZ\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-6)\t *\n\t\tTC\tGCOMPSUB\t# -(ADIAZ)(PIPAZ)   (GYRO PULSES) X 2(+14)\n\n#\t\tEXTEND\t\t # ***\n#\t\tDCS\tDELVX\t # ***\t  (PIPA PULSE) X 2(+14)\n#\t\tDXCH\tMPAC\t # ***\n#\t\tCS\tADOAZ\t # ***\t  (GYRO PULSES)/(PIPA PULSE) X 2(-6)     *\n#\t\tTC\tGCOMPSUB # ***\t  +(ADOAZ)(PIPAX)   (GYRO PULSES) X 2(+14)\n\n\t\tTC\tMPAC +2\n\n# Page 331\nGCOMPSUB\tXCH\tMPAC\t\t# ADIA OR ADSRA COEFFICIENT ARRIVES IN A\n\t\tEXTEND\t\t\t# C(MPAC) = (PIPA PULSES) X 2(+14)\n\t\tMP\tMPAC\t\t# (GYRO PULSES)/(PIPA PULSE) X 2(-6)\t *\n\t\tDXCH\tVBUF\t\t# NOW = (GYRO PULSES) X 2(+8)\t\t *\n\n\t\tCA\tMPAC +1\t\t# MINOR PART OF PIPA PULSES\n\t\tEXTEND\n\t\tMP\tMPAC\t\t# ADIA OR ADSRA\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tDAS\tVBUF\t\t# NOW = (GYRO PULSES) X 2(+8)\t\t *\n\n\t\tCA\tVBUF\t\t# PARTIAL RESULT - MAJOR\n\t\tEXTEND\n\t\tMP\tBIT9\t\t# SCALE 2(+6)\t   SHIFT RIGHT           *\n\t\tINDEX\tBUF\t\t# RESULT = (GYRO PULSES) X 2(+14)\n\t\tDAS\tGCOMP\t\t# HI(ADIA)(PIPAI)  OR  HI(ADSRA)(PIPAI)\n\n\t\tCA\tVBUF +1\t\t# PARTIAL RESULT - MINOR\n\t\tEXTEND\n\t\tMP\tBIT9\t\t# SCALE 2(+6)\tSHIFT RIGHT 6\t\t *\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tINDEX\tBUF\t\t# RESULT = (GYRO PULSES) X 2(+14)\n\t\tDAS\tGCOMP\t\t# (ADIA)(PIPAI) OR (ADSRA)(PIPAI)\n\n\t\tTC\tQ\n\n# Page 332\nDRIFTSUB\tEXTEND\n\t\tQXCH\tBUF +1\n\n\t\tEXTEND\t\t\t# C(A) = NBD\t(GYRO PULSES)/(CS) X 2(-5)\n\t\tMP\t1/PIPADT\t# (CS) X 2(+8)\t NOW (GYRO PULSES) X 2(+3)\n\t\tLXCH\tMPAC +1\t        # SAVE FOR FRACTIONAL COMPENSATION\n\t\tEXTEND\n\t\tMP\tBIT4\t\t# SCALE 2(+11)\t   SHIFT RIGHT 11\n\t\tINDEX\tBUF\n\t\tDAS\tGCOMP\t\t# HI(NBD)(DELTAT)   (GYRO PULSES) X 2(+14)\n\n\t\tCA\tMPAC +1\t        # NOW MINOR PART\n\t\tEXTEND\n\t\tMP\tBIT4\t\t# SCALE 2(+11)\t   SHIFT RIGHT 11\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tINDEX\tBUF\t\t# ADD IN FRACTIONAL COMPENSATION\n\t\tDAS\tGCOMP\t\t# (NBD)(DELTAT)     (GYRO PULSES) X 2(+14)\n\nDRFTSUB2\tCAF\tTWO\t\t# PIPAX, PIPAY, PIPAZ\n\t\tAD\tBUF\n\t\tXCH\tBUF\n\t\tINDEX\tA\n\t\tCCS\tGCOMP\t\t# ARE GYRO COMMANDS 1 PULSE OR GREATER\n\t\tTCF\t+2\t\t# YES\n\t\tTC\tBUF +1\t        # NO\n\n\t\tMASK\tCOMPCHK\t\t# DEC -1\n\t\tCCS\tA\t\t# ARE GYRO COMMANDS GREATER THAN 2 PULSES\n\t\tTS\tGCOMPSW\t\t# YES - SET GCOMPSW POSITIVE\n\t\tTC\tBUF +1\t        # NO\n\n# Page 333\n1/GYRO\t\tCAF\tFOUR\t\t# PIPAZ, PIPAY, PIPAX\n\t\tTS\tBUF\n\n\t\tINDEX\tBUF\t\t# SCALE GYRO COMMANDS FOR IMUPULSE\n\t\tCA\tGCOMP  +1\t# FRACTIONAL PULSES\n\t\tEXTEND\n\t\tMP\tBIT8\t\t# SHIFT RIGHT 7\n\t\tINDEX\tBUF\n\t\tTS\tGCOMP  +1\t# FRACTIONAL PULSES SCALED\n\n\t\tCAF\tZERO\t\t# SET GCOMP = 0 FOR DAS INSTRUCTION\n\t\tINDEX\tBUF\n\t\tXCH\tGCOMP\t\t# GYRO PULSES\n\t\tEXTEND\n\t\tMP\tBIT8\t\t# SHIFT RIGHT 7\n\t\tINDEX\tBUF\n\t\tDAS\tGCOMP\t\t# ADD THESE TO FRACTIONAL PULSES ABOVE\n\n\t\tCCS\tBUF\t\t# PIPAZ, PIPAY, PIPAX\n\t\tAD\tNEG1\n\t\tTCF\t1/GYRO +1\nLGCOMP\t\tECADR\tGCOMP\t\t# LESS THAN ZERO IMPOSSIBLE\n\n\t\tCAF\tLGCOMP\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\t# CALL GYRO TORQUING ROUTINE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\t# WAIT FOR PULSES TO GET OUT\n\t\tTCF\tENDOFJOB\t# TEMPORARY\n\nGCOMP1\t\tCAF\tFOUR\t\t# PIPAZ, PIPAY, PIPAX\n\t\tTS\tBUF\n\n\t\tINDEX\tBUF\t\t# RESCALE\n\t\tCA\tGCOMP +1\n\t\tEXTEND\n\t\tMP\tBIT8\t\t# SHIFT MINOR PART LEFT 7 - MAJOR PART = 0\n\t\tINDEX\tBUF\n\t\tLXCH\tGCOMP +1\t# BITS 8-14 OF MINOR PART WERE = 0\n\n\t\tCCS\tBUF\t\t# PIPAZ, PIPAY, PIPAX\n\t\tAD\tNEG1\n\t\tTCF\tGCOMP1 +1\nCOMPCHK\t\tDEC\t-1\t\t# LESS THAN ZERO IMPOSSIBLE\n\t\tTCF\tENDOFJOB\n\n# Page 334\nNBDONLY\t\tCCS\tGCOMPSW\t\t# BYPASS IF GCOMPSW NEGATIVE\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\tENDOFJOB\n\n\t\tINHINT\n\t\tCCS\tFLAGWRD2\t# PREREAD T3RUPT MAY COINCIDE\n\t\tTCF\tENDOFJOB\n\t\tTCF\tENDOFJOB\n\t\tTCF\t+1\n\n\t\tCA\tFLAGWRD8\t# IF SURFACE FLAG IS SET, SET TEM1\n\t\tMASK\tBIT8\t\t# POSITIVE SO THAT THE ACCELERATION TERMS\n\t\tTS\tTEM1\t\t# WILL BE COMPENSATED.\n\t\tEXTEND\n\t\tBZF\t+3\t\t# ARE WE ON THE SURFACE\n\n\t\tTC\tIBNKCALL\t# ON THE SURFACE\n\t\tCADR\tPIPASR +3\t# READ PIPAS, BUT DO NOT SCALE THEM\n\n\t\tCA\tTIME1\t\t# (CS) X 2(+14)\n\t\tXCH\t1/PIPADT\t# PREVIOUS TIME\n\t\tRELINT\n\t\tCOM\n\t\tAD\t1/PIPADT\t# PRESENT TIME - PREVIOUS TIME\nNBD2\t\tAD\tHALF\t\t# CORRECT FOR POSSIBLE TIME1 TICK\n\t\tAD\tHALF\n\t\tXCH\tL\t\t# IF TIME1 DID NOT TICK, REMOVE RESULTING\n\t\tXCH\tL\t\t# OVERFLOW.\n\nNBD3\t\tEXTEND\t\t\t# C(A) = DELTAT    (CS) X 2(+14)\n\t\tMP\tBIT10\t\t# SHIFT RIGHT 5\n\t\tDXCH\tVBUF +2\n\n\t\tCA\tZERO\n\t\tTS\tGCOMPSW\t\t# INDICATE COMMANDS 2 PULSES OR LESS.\n\t\tTS\tBUF\t\t# INDEX  X, Y, Z.\n\n\t\tCCS\tTEM1\t\t# IF SURFACE FLAG IS SET,\n\t\tTC\tIRIGX\t\t# COMPENSATE ACCELERATION TERMS.\n\n\t\tEXTEND\n\t\tDCA\tVBUF +2\n\t\tDXCH\tMPAC\t\t# DELTAT NOW SCALED (CS) X 2(+19)\n\n\t\tCS\tNBDX\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tFBIASSUB\t# -(NBDX)(DELTAT)   (GYRO PULSES) X 2(+14)\n\n\t\tCCS\tTEM1\t\t# IF SURFACE FLAG IS SET,\n\t\tTC\tIRIGY\t\t# COMPENSATE ACCELERATION TERMS.\n# Page 335\n\t\tEXTEND\n\t\tDCS\tVBUF +2\n\t\tDXCH\tMPAC\t\t# DELTAT SCALED (CS) X 2(+19)\n\t\tCA\tNBDY\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tFBIASSUB\t# -(NBDY)(DELTAT)   (GYRO PULSES) X 2(+14)\n\n\t\tCCS\tTEM1\t\t# IF SURFACE FLAG IS SET.\n\t\tTC\tIRIGZ\t\t# COMPENSATE ACCELERATION TERMS\n\n\t\tEXTEND\n\t\tDCS\tVBUF +2\n\t\tDXCH\tMPAC\t\t# DELTAT SCALED (CS) X 2(+19)\n\t\tCS\tNBDZ\t\t# (GYRO PULSES)/(CS) X 2(-5)\n\t\tTC\tFBIASSUB\t# +(NBDZ)(DELTAT)   (GYRO PULSES) X 2(+14)\n\n\t\tCCS\tGCOMPSW\t\t# ARE GYRO COMMANDS GREATER THAN 2 PULSES\n\t\tTCF\t1/GYRO\t\t# YES\n\t\tTCF\tENDOFJOB\t# NO\n\n# Page 336\nFBIASSUB\tXCH\tQ\n\t\tTS\tBUF +1\n\n\t\tCA\tQ\t\t# NBD SCALED (GYRO PULSES)/(CS) X 2(-5)\n\t\tEXTEND\n\t\tMP\tMPAC\t\t# DELTAT SCALED (CS) X 2(+19)\n\t\tINDEX\tBUF\n\t\tDAS\tGCOMP\t\t# HI(NBD)(DELTAT)   (GYRO PULSES) X 2(+14)\n\n\t\tCA\tQ\t\t# NOW FRACTIONAL PART\n\t\tEXTEND\n\t\tMP\tMPAC +1\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tINDEX\tBUF\n\t\tDAS\tGCOMP\t\t# (NBD)(DELTAT)     (GYRO PULSES) X 2(+14)\n\n\t\tTCF\tDRFTSUB2\t# CHECK MAGNITUDE OF COMPENSATION\n\nLASTBIAS\tTC\tBANKCALL\n\t\tCADR\tPIPUSE1\n\n\t\tCCS\tGCOMPSW\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\tENDOFJOB\n\n\t\tCA\tFLAGWRD8\t# IF SURFACE FLAG IS SET, SET TEM1\n\t\tMASK\tSURFFBIT\t# POSITIVE SO THAT THE ACCELERATION TERMS\n\t\tTS\tTEM1\t\t# WILL BE COMPENSATED.\n\n\t\tCAF\tPRIO31\t\t# 2 SECONDS SCALED (CS) X 2(+8)\n\t\tXCH\t1/PIPADT\n\t\tCOM\n\t\tAD\tPIPTIME +1\n\t\tTCF\tNBD2\n\nGCOMPZER\tCAF\tLGCOMP\t\t# ROUTINE TO ZERO GCOMP BEFORE FIRST\n\t\tXCH\tEBANK\t\t# CALL TO 1/PIPA\n\t\tTS\tMODE\n\n\t\tCAF\tZERO\n\t\tTS\tGCOMPSW\n\t\tTS\tGCOMP\n\t\tTS\tGCOMP +1\n\t\tTS\tGCOMP +2\n\t\tTS\tGCOMP +3\n\t\tTS\tGCOMP +4\n# Page 337\n\t\tTS\tGCOMP +5\n\n\t\tTCF\tIRIG1\t\t# RESTORE EBANK AND RETURN\n"
  },
  {
    "path": "Luminary099/IMU_MODE_SWITCHING_ROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tIMU_MODE_SWITCHING_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1309-1337\n# Mod history:\t2009-05-28 OH\tTranscribed from page images.\n#\t\t2009-06-05 RSB\tFixed a typo.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\t\t2011-05-08 JL\tRemoved workaround. Flagged SBANK=\n#\t\t\t\tworkaround for future removal.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n\n# Page 1309\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG3\n\t\tBANK\n\n\t\tEBANK=\tCOMMAND\n\n# FIXED-FIXED ROUTINES\n\n\t\tCOUNT*\t$$/IMODE\nZEROICDU\tCAF\tZERO\t\t# ZERO ICDU COUNTERS.\n\t\tTS\tCDUX\n\t\tTS\tCDUY\n\t\tTS\tCDUZ\n\t\tTC\tQ\n\nSPSCODE\t\t=\tBIT9\n\n# Page 1310\n# IMU ZEROING ROUTINES\n\n\t\tBANK\t11\n\t\tSETLOC\tMODESW\n\t\tBANK\n\n\t\tCOUNT*\t$$/IMODE\nIMUZERO\t\tINHINT\t\t\t# ROUTINE TO ZERO ICDUS.\n\t\tCS\tDSPTAB +11D\t# DON'T ZERO CDUS IF IMU IN GIMBAL LOCK AND\n\t\tMASK\tBITS4&6\t\t# COARSE ALIGN (GIMBAL RUNAWAY PROTECTION)\n\t\tCCS\tA\n\t\tTCF\tIMUZEROA\n\n\t\tTC\tALARM\t\t# IF SO.\n\t\tOCT\t00206\n\n\t\tTCF\tCAGETSTJ +4\t# IMMEDIATE FAILURE.\n\nIMUZEROA\tTC\tCAGETSTJ\n\n\t\tCS\tIMODES33\t# DISABLE DAP AUTO AND HOLD MODES\n\t\tMASK\tSUPER011\t# \tBIT5 FOR GROUND\n\t\tADS\tIMODES33\n\n\t\tCS\tIMODES30\t# INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE\n\t\tMASK\tBITS3&4\t\t# JUST CAME OUT OF COARSE ALIGN).\n\t\tADS\tIMODES30\n\n\t\tCS\tBITS4&6\t\t# SEND ZERO ENCODE WITH COARSE AND ERROR\n\t\tEXTEND\t\t\t# COUNTER DISABLED.\n\t\tWAND \tCHAN12\n\n\t\tTC\tNOATTOFF\t# TURN OFF NO ATT LAMP.\n\n\t\tCAF\tBIT5\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tTC\tZEROICDU\n\t\tCAF\tBIT6\t\t# WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO\n\t\tTC\tWAITLIST\t# RECEIVE ITS PULSE TRAIN.\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tIMUZERO2\n\n\t\tCS\tIMODES30\t# SEE IF IMU OPERATING AND ALARM IF NOT.\n\t\tMASK\tBIT9\n\t\tCCS\tA\n\t\tTCF\tMODEEXIT\n# Page 1311\n\t\tTC\tALARM\n\t\tOCT\t210\n\nMODEEXIT\tRELINT\t\t\t# GENERAL MODE-SWITCHING EXIT.\n\t\tTCF\tSWRETURN\n\nIMUZERO2\tTC\tCAGETEST\n\t\tTC\tZEROICDU\t# ZERO CDUX, CDUY, CDUZ\n\n\t\tCS\tBIT5\t\t# REMOVE ZERO DISCRETE.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCAF\tBIT11\t\t# WAIT 10 SECS FOR CTRS TO FIND GIMBALS\n\t\tTC\tVARDELAY\n\nIMUZERO3\tTC\tCAGETEST\n\t\tCS\tBITS3&4\t\t# REMOVE IMUFAIL AND ICDUFAIL INHIBIT.\n\t\tMASK\tIMODES30\n\t\tTS\tIMODES30\n\n\t\tCS\tSUPER011\t# ENABLE DAP AUTO AND HOLD MODES\n\t\tMASK\tIMODES33\t#\tBIT5 FOR GROUND\n\t\tTS\tIMODES33\n\n\t\tTC\tIBNKCALL\t# SET ISS WARNING IF EITHER OF ABOVE ARE\n\t\tCADR\tSETISSW\t\t# PRESENT.\n\n\t\tTCF\tENDIMU\n\n# Page 1312\n# IMU COARSE ALIGN MODE.\n\nIMUCOARS\tINHINT\n\t\tTC\tCAGETSTJ\n\t\tTC\tSETCOARS\n\n\t\tCAF\tSIX\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tCOARS\n\n\t\tTCF\tMODEEXIT\n\nCOARS\t\tTC\tCAGETEST\n\t\tCAF\tBIT6\t\t# ENABLE ALL THREE ISS CDU ERROR COUNTERS\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tCAF\tTWO\t\t# SET CDU INDICATOR\nCOARS1\t\tTS\tCDUIND\n\n\t\tINDEX\tCDUIND\t\t# COMPUTE THETAD -- THETAA IN 1'S\n\t\tCA\tTHETAD\t\t# \tCOMPLEMENT FORM\n\t\tEXTEND\n\t\tINDEX\tCDUIND\n\t\tMSU\tCDUX\n\t\tEXTEND\n\t\tMP\tBIT13\t\t# SHIFT RIGHT 2\n\t\tXCH\tL\t\t# ROUND\n\t\tDOUBLE\n\t\tTS\tITEMP1\n\t\tTCF\t+2\n\t\tADS\tL\n\n\t\tINDEX\tCDUIND\t\t# DIFFERENCE TO BE COMPUTED\n\t\tLXCH\tCOMMAND\n\t\tCCS\tCDUIND\n\t\tTC\tCOARS1\n\n\t\tCAF\tTWO\t\t# MINIMUM OF 4 MS WAIT\n\t\tTC \tVARDELAY\n\n# Page 1313\nCOARS2\t\tTC\tCAGETEST\t# DON'T CONTINUE IF CAGED.\n\t\tTS\tITEMP1\t\t# SET TO +0.\n\t\tCAF\tTWO\t\t# SET CDU INDICATOR.\n +3\t\tTS\tCDUIND\n\n\t\tINDEX\tCDUIND\n\t\tCCS\tCOMMAND\t\t# NUMBER OF PULSES REQUIRED\n\t\tTC\tCOMPOS\t\t# GREATER THAN MAX ALLOWED\n\t\tTC\tNEXTCDU +1\n\t\tTC\tCOMNEG\n\t\tTC\tNEXTCDU +1\n\nCOMPOS\t\tAD\t-COMMAX\t\t# COMMAX = MAX NUMBER OF PULSES ALLOWED\n\t\tEXTEND\t\t\t# \tMINUS ONE\n\t\tBZMF\tCOMZERO\n\t\tINDEX\tCDUIND\n\t\tTS\tCOMMAND\t\t# REDUCE COMMAND BY MAX NUMBER OF PULSES\n\t\tCS\t-COMMAX-\t# \tALLOWED\n\nNEXTCDU\t\tINCR\tITEMP1\n\t\tAD\tNEG0\n\t\tINDEX\tCDUIND\n\t\tTS\tCDUXCMD\t\t# SET UP COMMAND REGISTER.\n\n\t\tCCS\tCDUIND\n\t\tTC\tCOARS2 +3\n\n\t\tCCS\tITEMP1\t\t# SEE IF ANY PULSES TO GO OUT.\n\t\tTCF\tSENDPULS\n\n\t\tTC\tFIXDELAY\t# WAIT FOR GIMBALS TO SETTLE.\n\t\tDEC\t150\n\n\t\tCAF\tTWO\t\t# AT END OF COMMAND, CHECK TO SEE THAT\nCHKCORS\t\tTS\tITEMP1\t\t# GIMBALS ARE WITHIN 2 DEGREES OF THETAD.\n\t\tINDEX\tA\n\t\tCA\tCDUX\n\t\tEXTEND\n\t\tINDEX\tITEMP1\n\t\tMSU\tTHETAD\n\t\tCCS\tA\n\t\tTCF\tCOARSERR\n\t\tTCF\tCORSCHK2\n\t\tTCF\tCOARSERR\n\n# Page 1314\nCORSCHK2\tCCS\tITEMP1\n\t\tTCF\tCHKCORS\n\t\tTCF\tENDIMU\t\t# END OF COARSE ALIGNMENT\n\nCOARSERR\tAD\tCOARSTOL\t# 2 DEGREES.\n\t\tEXTEND\n\t\tBZMF\tCORSCHK2\n\n\t\tTC\tALARM\t\t# COARSE ALIGN ERROR.\n\t\tOCT\t211\n\n\t\tTCF\tIMUBAD\n\nCOARSTOL\tDEC\t-.01111\t\t# 2 DEGREES SCALED AT HALF-REVOLUTIONS\n\nCOMNEG\t\tAD\t-COMMAX\n\t\tEXTEND\n\t\tBZMF\tCOMZERO\n\t\tCOM\n\t\tINDEX\tCDUIND\n\t\tTS\tCOMMAND\n\t\tCA\t-COMMAX-\n\t\tTC\tNEXTCDU\n\nCOMZERO\t\tCAF\tZERO\n\t\tINDEX\tCDUIND\n\t\tXCH\tCOMMAND\n\t\tTC\tNEXTCDU\n\nSENDPULS\tCAF\t13,14,15\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tCAF\t600MS\n\t\tTCF\tCOARS2 -1\t# THEN TO VARDELAY\n\nCA+ECE\t\tCAF\tBIT6\t\t# ENABLE ALL THREE ISS CDU ERROR COUNTERS\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\t\tTC\tTASKOVER\n\n# Page 1315\nSETCOARS\tCAF\tBIT4\t\t# BYPASS IF ALREADY IN COARSE ALIGN\n\t\tEXTEND\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTC\tQ\n\n\t\tCS\tBIT6\t\t# CLEAR ISS ERROR COUNTERS\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCS\tBIT10\t\t# KNOCK DOWN GYRO ACTIVITY\n\t\tEXTEND\n\t\tWAND\tCHAN14\n\t\tCS\tZERO\n\t\tTS\tGYROCMD\n\n\t\tCAF\tBIT4\t\t# PUT ISS IN COARSE ALIGN\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tCS\tDSPTAB +11D\t# TURN ON NO ATT LAMP\n\t\tMASK\tOCT40010\n\t\tADS\tDSPTAB +11D\n\n\t\tCS\tIMODES33\t# DISABLE DAP AUTO AND HOLD MODES\n\t\tMASK\tBIT6\n\t\tADS\tIMODES33\n\n\t\tCS\tIMODES30\t# DISABLE IMUFAIL\n\t\tMASK\tBIT4\n\t\tADS\tIMODES30\n\nRNDREFDR\tCS\tTRACKBIT\t# CLEAR TRACK FLAG\n\t\tMASK\tFLAGWRD1\n\t\tTS\tFLAGWRD1\n\n\t\tCS\tDRFTBIT\t\t# CLEAR DRIFT FLAG\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\n\n\t\tCS\tREFSMBIT\t# CLEAR REFSMMAT FLAG\n\t\tMASK\tFLAGWRD3\n\t\tTS\tFLAGWRD3\n\n\t\tTC\tQ\n\nOCT40010\tOCT\t40010\n\n# Page 1316\n# IMU FINE ALIGN MODE SWITCH.\n\nIMUFINE\t\tINHINT\n\t\tTC\tCAGETSTJ\t# SEE IF IMU BEING CAGED.\n\n\t\tCS\tBITS4-5\t\t# RESET ZERO AND COARSE\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCS\tBIT6\t\t# INSURE DAP AUTO AND HOLD MODES ENABLED\n\t\tMASK\tIMODES33\n\t\tTS\tIMODES33\n\n\t\tTC\tNOATTOFF\n\n\t\tCAF\tBIT10\t\t# IMU FAIL WAS INHIBITED DURING THE\n\t\tTC\tWAITLIST\t# PRESUMABLY PRECEDING COARSE ALIGN.  LEAVE\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tIFAILOK\t\t# IT ON FOR THE FIRST 5 SECS OF FINE ALIGN\n\n\t\tCAF\t2SECS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tIMUFINED\n\n\t\tTCF\tMODEEXIT\n\nIMUFINED\tTC\tCAGETEST\t# SEE THAT NO ONE HAS CAGED THE IMU.\n\t\tTCF\tENDIMU\n\n# Page 1317\nIFAILOK\t\tTC\tCAGETSTQ\t# ENABLE IMU FAIL UNLESS IMU BEING CAGED.\n\t\tTCF\tTASKOVER\t# IT IS.\n\n\t\tCAF\tBIT4\t\t# DON'T RESET IMU FAIL INHIBIT IF SOMEONE\n\t\tEXTEND\t\t\t# HAS GONE INTO COARSE ALIGN.\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTCF\tTASKOVER\n\n\t\tCS\tIMODES30\t# RESET IMUFAIL.\n\t\tMASK\tBIT13\n\t\tADS\tIMODES30\n\t\tCS\tBIT4\nPFAILOK2\tMASK\tIMODES30\n\t\tTS\tIMODES30\n\t\tTC\tIBNKCALL\t# THE ISS WARNING LIGHT MAY COME ON NOW\n\t\tCADR\tSETISSW\t\t# THAT THE INHIBIT WAS BEEN REMOVED.\n\t\tTCF\tTASKOVER\n\nPFAILOK\t\tTC\tCAGETSTQ\t# ENABLE PIP FAIL PROG ALARM.\n\t\tTCF\tTASKOVER\n\n\t\tCS\tIMODES30\t# RESET IMU AND PIPA FAIL BITS.\n\t\tMASK\tBIT10\n\t\tADS\tIMODES30\n\n\t\tCS\tIMODES33\n\t\tMASK\tBIT13\n\t\tADS\tIMODES33\n\n\t\tCS\tBIT5\n\t\tTCF\tPFAILOK2\n\nNOATTOFF\tCS\tOCT40010\t# SUBROUTINE TO TURN OFF NO ATT LAMP.\n\t\tMASK\tDSPTAB +11D\n\t\tAD\tBIT15\n\t\tTS\tDSPTAB +11D\n\t\tTC\tQ\n\n# Page 1318\n# ROUTINES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE.\n\nPIPUSE\t\tCS\tZERO\n\t\tTS\tPIPAX\n\t\tTS\tPIPAY\n\t\tTS\tPIPAZ\n\nPIPUSE1\t\tTC\tCAGETSTQ\t# DO NOT ENABLE PIPA FAIL IF IMU IS CAGED\n\t\tTCF\tSWRETURN\n\n\t\tINHINT\n\t\tCS\tBIT1\t\t# IF PIPA FAILS FROM NOW ON (UNTIL\n\t\tMASK\tIMODES30\t# PIPFREE), LIGHT ISS WARNING.\n\t\tTS\tIMODES30\n\nPIPFREE2\tTC\tIBNKCALL\t# ISS WARNING MIGHT COME ON NOW.\n\t\tCADR\tSETISSW\t\t# (OR GO OFF ON PIPFREE).\n\n\t\tTCF\tMODEEXIT\n\nPIPFREE\t\tINHINT\t\t\t# PROGRAM DONE WITH PIPAS.  DON'T LIGHT\n\t\tCS\tIMODES30\t# ISS WARNING.\n\t\tMASK\tBIT1\n\t\tADS\tIMODES30\n\n\t\tMASK\tBIT10\t\t# IF PIP FAIL ON, DO PROG ALSRM AND RESET\n\t\tCCS\tA\t\t# ISS WARNING.\n\t\tTCF\tMODEEXIT\n\n\t\tTC\tALARM\n\t\tOCT\t212\n\n\t\tINHINT\n\n\t\tTCF\tPIPFREE2\n\n# Page 1319\n#          THE FOLLOWING ROUTINE TORQUES THE IRIGS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIX REGISTERS\n# BEGINNING AT THE ECADR ARRIVING IN A. THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS). THE\n# UNSENT PORTION OF THE COMMAND IS LEFT INTACT IN THE INPUT COMMAND REGISTERS.\n\n\t\tEBANK=\t1400\t\t# VARIABLE, ACTUALLY.\n\nIMUPULSE\tTS\tMPAC +5\t\t# SAVE ARRIVING ECADR.\n\t\tTC\tCAGETSTJ\t# DON'T PROCEED IF IMU BEING CAGED.\n\n\t\tCCS\tLGYRO\t\t# SEE IF GYROS BUSY.\n\t\tTC\tGYROBUSY\t# SLEEP.\n\n\t\tTS\tMPAC +2\n\t\tCAF\tBIT6\t\t# ENABLE THE POWER SUPPLY.\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\n\t\tCAF\tFOUR\nGWAKE2\t\tTC\tWAITLIST\t# (IF A JOB WAS PUT TO SLEEP, THE POWER\n\t\tEBANK=\tCDUIND\t\t# SUPPLY IS LEFT ON BY THE WAKING JOB).\n\t\t2CADR\tSTRTGYRO\n\n\t\tCA\tMPAC +5\t\t# SET UP EBANK, SAVING CALLER'S EBANK FOR\n\t\tXCH\tEBANK\t\t# RESTORATION ON RETURN.\n\t\tXCH\tMPAC +5\n\t\tTS\tLGYRO\t\t# RESERVES GYROS.\n\t\tMASK\tLOW8\n\t\tTS\tITEMP1\n\n\t\tCAF\tTWO\t\t# FORCE SIGN AGREEMENT ON INPUTS.\nGYROAGRE\tTS\tMPAC +3\n\t\tDOUBLE\n\t\tAD\tITEMP1\n\t\tTS\tMPAC +4\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\t1400\n\t\tDXCH\tMPAC\n\t\tTC\tTPAGREE\n\t\tDXCH\tMPAC\n\t\tINDEX\tMPAC +4\n\t\tDXCH\t1400\n\n\t\tCCS\tMPAC +3\n\t\tTCF\tGYROAGRE\n\n\t\tCA\tMPAC +5\t\t# RESTORE CALLER'S EBANK.\n\t\tTS\tEBANK\n\t\tTCF\tMODEEXIT\n\n# Page 1320\n# ROUTINES TO ALLOW TORQUING ONLY ONE JOB AT A TIME.\n\nGYROBUSY\tEXTEND\t\t\t# SAVE RETURN 2FCADR.\n\t\tDCA\tBUF2\n\t\tDXCH\tMPAC\nREGSLEEP\tCAF\tLGWAKE\n\t\tTCF\tJOBSLEEP\n\nGWAKE\t\tCCS\tLGYRO\t\t# WHEN AWAKENED, SEE IF GYROS STILL BUSY.\n\t\tTCF\tREGSLEEP\t# IF SO, SLEEP SOME MORE.\n\n\t\tTS\tMPAC +2\n\t\tEXTEND\n\t\tDCA\tMPAC\n\t\tDXCH\tBUF2\t\t# RESTORE SWRETURN INFO.\n\t\tCAF\tONE\n\t\tTCF\tGWAKE2\n\nLGWAKE\t\tCADR\tGWAKE\n\n# Page 1321\n# GYRO-TORQUING WAITLIST TASKS.\n\nSTRTGYRO\tCS\tGDESELCT\t# DE-SELECT LAST GYRO.\n\t\tEXTEND\n\t\tWAND\tCHAN14\n\n\t\tTC\tCAGETEST\n\nSTRTGYR2\tCA\tLGYRO\t\t# JUMP ON PHASE COUNTER IN BITS 13-14.\n\t\tEXTEND\n\t\tMP\tBIT4\n\t\tINDEX\tA\n\t\tTCF\t+1\n\t\tTC\tGSELECT\t\t# =0.  DO Y GYRO.\n\t\tOCT\t00202\n\n\t\tTC\tGSELECT\t\t# =1.  DO Z GYRO.\n\t\tOCT\t00302\n\n\t\tTC\tGSELECT -2\t# =2.  DO X GYRO.\n\t\tOCT\t00100\n\n\t\tCAF\tZERO\t\t# =3.  DONE\n\t\tTS\tLGYRO\n\t\tCAF\tLGWAKE\t\t# WAKE A POSSIBLE SLEEPING JOB.\n\t\tTC\tJOBWAKE\n\nNORESET\t\tTCF\tIMUFINED\t# DO NOT RESET POWER SUPPLY\n# Page 1322\n -2\t\tCS\tFOUR\t\t# SPECIAL ENTRY TO REGRESS LGYRO FOR X.\n\t\tADS\tLGYRO\n\nGSELECT\t\tINDEX\tQ\t\t# SELECT GYRO.\n\t\tCAF\t0\t\t# PACKED WORD CONTAINS GYRO SELECT BITS\n\t\tTS\tITEMP4\t\t# AND INCREMENT TO LGYRO.\n\t\tMASK\tSEVEN\n\t\tAD\tBIT13\n\t\tADS\tLGYRO\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n\t\tTS\tITEMP1\n\n\t\tCS\tSEVEN\n\t\tMASK\tITEMP4\n\t\tTS\tITEMP4\n\n\t\tEXTEND\t\t\t# MOVE DP COMMAND TO RUPTREGS FOR TESTING.\n\t\tINDEX\tITEMP1\n\t\tDCA\t1400\n\t\tDXCH\tRUPTREG1\n\n\t\tCCS\tRUPTREG1\n\t\tTCF\tMAJ+\n\t\tTCF\t+2\n\t\tTCF\tMAJ-\n\n\t\tCCS\tRUPTREG2\n\t\tTCF\tMIN+\n\t\tTCF\tSTRTGYR2\n\t\tTCF\tMIN-\n\t\tTCF\tSTRTGYR2\n\n# Page 1323\nMIN+\t\tAD\t-GYROMIN\t# SMALL POSITIVE COMMAND.  SEE IF AT LEAST\n\t\tEXTEND\t\t\t# 16 GYRO PULSES.\n\t\tBZMF\tSTRTGYR2\n\nMAJ+\t\tEXTEND\t\t\t# DEFINITE POSITIVE OUTPUT.\n\t\tDCA\tGYROFRAC\n\t\tDAS\tRUPTREG1\n\n\t\tCA\tITEMP4\t\t# SELECT POSITIVE TORQUING FOR THIS GYRO.\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\n\t\tCAF\tLOW7\t\t# LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS\n\t\tMASK\tRUPTREG2\t# TO INITIAL COMMAND IN MAJOR PART OF LONG\n\t\tXCH\tRUPTREG2\t# TERM STORAGE AND TRUNCATED FRACTION\nGMERGE\t\tEXTEND\t\t\t# IN MINOR PART.  THE MAJOR PART WILL BE\n\t\tMP\tBIT8\t\t# COUNTED DOWN TO ZERO IN THE COURSE OF\n\t\tTS\tITEMP2\t\t# PUTTING OUT THE ENTIRE COMMAND.\n\t\tCA\tRUPTREG1\n\t\tEXTEND\n\t\tMP\tBIT9\n\t\tTS\tRUPTREG1\n\t\tCA\tL\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tADS\tITEMP2\t\t# INITIAL COMMAND.\n\n\t\tEXTEND\t\t\t# SEE IF MORE THAN ONE PULSE TRAIN NEEDED\n\t\tDCA\tRUPTREG1\t# (MORE THAN 16383 PULSES).\n\t\tAD\tMINUS1\n\t\tCCS\tA\n\t\tTCF\tLONGGYRO\n-GYROMIN\tOCT\t-176\t\t# MAY BE ADJUSTED TO SPECIFY MINIMUM CMD\n\t\tTCF\t+4\n\n\t\tCAF\tBIT14\n\t\tADS\tITEMP2\n\t\tCAF\tZERO\n\n +4\t\tINDEX\tITEMP1\n\t\tDXCH\t1400\n# Page 1324\n\t\tCA\tITEMP2\t\t# ENTIRE COMMAND.\nLASTSEG\t\tTS\tGYROCMD\n\t\tEXTEND\n\t\tMP\tBIT10\t\t# WAITLIST DT\n\t\tAD\tTHREE\t\t# TRUNCATION AND PHASE UNCERTAINTIES.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tSTRTGYRO\n\nGYROEXIT\tCAF\tBIT10\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tTCF\tTASKOVER\n\nLONGGYRO\tINDEX\tITEMP1\n\t\tDXCH\t1400\t\t# INITIAL COMMAND OUT PLUS N AUGMENTS OF\n\t\tCAF\tBIT14\t\t# 8192.  INITIAL COMMAND IS AT LEAST 8192.\n\t\tAD\tITEMP2\n\t\tTS\tGYROCMD\n\nAUG3\t\tEXTEND\t\t\t# GET WAITLIST DT TO TIME WHEN TRAIN IS\n\t\tMP\tBIT10\t\t# ALMOST OUT.\n\t\tAD\tNEG3\n\t\tTC\tWAITLIST\n\t\tEBANK=\tCDUIND\n\t\t2CADR\t8192AUG\n\n\t\tTCF\tGYROEXIT\n\n8192AUG\t\tTC\tCAGETEST\n\n\t\tCAF\tBIT4\n\t\tEXTEND\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTCF\tIMUBAD\n\t\tCA\tLGYRO\t\t# ADD 8192 PULSES TO GYROCMD\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n\t\tTS\tITEMP1\n\n\t\tINDEX\tITEMP1\t\t# SEE IF THIS IS THE LAST AUG.\n\t\tCCS\t1400\n\t\tTCF\tAUG2\t\t# MORE TO COME.\n\n\t\tCAF\tBIT14\n\t\tADS\tGYROCMD\n\t\tTCF\tLASTSEG +1\n\n# Page 1325\nAUG2\t\tINDEX\tITEMP1\n\t\tTS\t1400\n\t\tCAF\tBIT14\n\t\tADS\tGYROCMD\n\t\tTCF\tAUG3\t\t# COMPUTE DT.\n\n# Page 1326\nMIN-\t\tAD\t-GYROMIN\t# POSSIBLE NEGATIVE OUTPUT.\n\t\tEXTEND\n\t\tBZMF\tSTRTGYR2\n\nMAJ-\t\tEXTEND\t\t\t# DEFINITE NEGATIVE OUTPUT.\n\t\tDCS\tGYROFRAC\n\t\tDAS\tRUPTREG1\n\n\t\tCA\tITEMP4\t\t# SELECT NEGATIVE TORQUING FOR THIS GYRO.\n\t\tAD\tBIT9\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\n\t\tCS\tRUPTREG1\t# SET UP RUPTREGS TO FALL INTO GMERGE.\n\t\tTS\tRUPTREG1\t# ALL NUMBERS PUT INTO GYROCMD ARE\n\t\tCS\tRUPTREG2\t# POSITIVE -- BIT9 OF CHAN 14 DETERMINES\n\t\tMASK\tLOW7\t\t# THE SIGN OF THE COMMAND.\n\t\tCOM\n\t\tXCH\tRUPTREG2\n\t\tCOM\n\t\tTCF\tGMERGE\n\nGDESELCT\tOCT\t1700\t\t# TURN OFF SELECT AND ACTIVITY BITS.\n\nGYROFRAC\t2DEC\t.215 B -21\n\n# Page 1327\n# IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE.\n\nENDIMU\t\tEXTEND\t\t\t# MODE IS BAD IF CAGE HAS OCCURRED OR IF\n\t\tREAD\tDSALMOUT\t# ISS WARNING IS ON.\n\t\tMASK\tBIT1\n\t\tCCS\tA\n\t\tTCF\tIMUBAD\n\nIMUGOOD\t\tTCF\tGOODEND\t\t# WITH C(A) = 0.\n\nIMUBAD\t\tCAF\tZERO\n\t\tTCF\tBADEND\n\nCAGETEST\tCAF\tBIT6\t\t# SUBROUTINE TO TERMINATE IMU MODE\n\t\tMASK\tIMODES30\t# SWITCH IF IMU HAS BEEN CAGED.\n\t\tCCS\tA\n\t\tTCF\tIMUBAD\t\t# DIRECTLY.\n\t\tTC\tQ\t\t# WITH C(A) = +0.\n\nCAGETSTQ\tCS\tIMODES30\t# SKIP IF IMU NOT BEING CAGED.\n\t\tMASK\tBIT6\n\t\tCCS\tA\n\t\tINCR\tQ\n\t\tTC\tQ\n\nCAGETSTJ\tCS\tIMODES30\t# IF DURING MODE SWITCH INITIALIZATION\n\t\tMASK\tBIT6\t\t# IT IS FOUND THAT THE IMU IS BEING CAGED,\n\t\tCCS\tA\t\t# SET IMUCADR TO -0 TO INDICATE OPERATION\n\t\tTC\tQ\t\t# COMPLETE BUT FAILED.  RETURN IMMEDIATELY\n\n\t\tCS\tZERO\t\t# TO SWRETURN.\n\t\tTS\tIMUCADR\n\t\tTCF\tMODEEXIT\n\n# Page 1328\n#          GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION\n# OR AT BADEND FOR A N UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS.\n\nBADEND\t\tTS\tRUPTREG2\t# DEVICE INDEX.\n\t\tCS\tZERO\t\t# FOR FAILURE.\n\t\tTCF\tGOODEND +2\n\nGOODEND\t\tTS\tRUPTREG2\n\t\tCS\tONE\t\t# FOR SUCCESS.\n\n\t\tTS\tRUPTREG3\n\t\tINDEX\tRUPTREG2\t# SEE IF USING PROGRAM ASLEEP.\n\t\tCCS\tMODECADR\n\t\tTCF\t+4\t\t# YES -- WAKE IT UP.\n\t\tTCF\tENDMODE\t\t# IF 0, PROGRAM NOT IN YET.\n\n\t\tEXTEND\n\t\tBZF\tENDMODE +1\t# BZF = TCF IF MODECADR = -0.\n\n\t\tCAF\tZERO\t\t# WAKE SLEEPING PROGRAM.\n\t\tINDEX\tRUPTREG2\n\t\tXCH\tMODECADR\n\t\tTC\tJOBWAKE\n\n\t\tCS\tRUPTREG3\t# ADVANCE LOC IF SUCCESSFUL.\n\t\tINDEX\tLOCCTR\n\t\tADS\tLOC\n\n\t\tTCF\tTASKOVER\n\nENDMODE\t\tCA\tRUPTREG3\t# -0 INDICATES OPERATION COMPLETE BUT\n +1\t\tINDEX\tRUPTREG2\t# UNSUCCESSFUL: -1 INDICATES COMPLETE AND\n\t\tTS\tMODECADR\t# SUCCESSFUL.\n\t\tTCF\tTASKOVER\n\n# Page 1329\n#          GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION.\n#\n# PROGRAM DESCRIPTION                                    DATE- 21 FEB 1967\n#                                           LOG SECTION IMU MODE SWITCHING\n# MOD BY- R.MELANSON TO ADD DOCUMENTATION       ASSEMBLY SUNDISK  REV.  82\n#\n# FUNCTIONAL DESCRIPTION-\n#\tTO DELAY FURTHER EXECUTION OF THE CALLING ROUTINE UNTIL ITS SELECTED\n#\tI/O FUNCTION IS COMPLETE.THE FOLLOWING CHECKS ON THE CALLING ROUTINE:S\n#\tMODECADR ARE MADE AND ACTED UPON.\n#\t  1) +0 INDICATES INCOMPLETE I/O OPERATION.CALLING ROUTINE IS PUT TO\n#\t     SLEEP.\n#\t  2) -1 INDICATES COMPLETED I/O OPERATION. STALL BYPASSES JOBSLEEP\n#\t     CALL AND RETURNS TO CALLING ROUTINE AT L+3\n#\t  3) -0 INDICATES COMPLETED I/O WITH FAILURE. STALL CLEARS MODECADR\n#\t     AND RETURNS TO CALLING ROUTINE AT L+2.\n#\t  4) VALUE GREATER THAN 0 INDICATES TWO ROUTINES CALLING FOR USE OF\n#\t     SAME DEVICE.  STALL EXITS TO ABORT WHICH EXECUTES A PROGRAM\n#\t     RESTART WHICH IN TURN CLEARS ALL MODECADR REGISTERS.\n#\n#  CALLING SEQUENCE-\n#\tL \tTC\t BANKCALL\n#\tL+1\tCADR (ONE OF 5 STALL ADDRESSES I.E. IMUSTALL,OPTSTALL,RADSTALL,\n#\t\t\t  AOTSTALL,OR ATTSTALL)\n#\n# NORMAL-EXIT MODE-\n#\tTCF  JOBSLEEP OR TCF   MODEXIT\n#\n# ALARM OR ABORT EXIT MODE-\n#\tTC   ABORT\n#\n# OUTPUT-\n#\tMODECADR= CADR IF JOBSLEEP\n#\tMODECADR=+0    IF I/O COMPLETE\n#\tBUF2=L+3       IF I/O COMPLETE AND GOOD.\n#\tBUF2=L+2 IF I/O COMPLETE BUT FAILED.\n#\n# ERASABLE INITIALIZATION-\n#\tBUF2 CONTAINS RETURN ADDRESS PLUS 1,(L+2)\n#\tBUF2+1 CONTAINS FBANK VALUE OF CALLING ROUTINE.\n#\tMODECADR OF CALLING ROUTINE CONTAINS +0,-1,-0 OR  CADR RETURN ADDRESS.\n#\n# DEBRIS-\n#\tRUPTREG2 AND CALLING ROUTINE MODECADR.\n\nAOTSTALL\tCAF\tONE\t\t# AOT.\n\t\tTC\tSTALL\n\nRADSTALL\tCAF\tTWO\n\t\tTCF\tSTALL\n\n# Page 1330\nOPTSTALL\tEQUALS\tAOTSTALL\n\nIMUSTALL\tCAF\tZERO\t\t# IMU.\n\nSTALL\t\tINHINT\n\t\tTS\tRUPTREG2\t# SAVE DEVICE INDEX.\n\t\tINDEX\tA\t\t# SEE IF OPERATION COMPLETE.\n\t\tCCS\tMODECADR\n\t\tTCF\tMODABORT\t# ALLOWABLE STATES ARE +0, -1, AND -0.\n\t\tTCF\tMODESLP\t\t# OPERATION INCOMPLETE.\n\t\tTCF\tMODEGOOD\t# COMPLETE AND GOOD IF = -1.\n\nMG2\t\tINDEX\tRUPTREG2\t# COMPLETE AND FAILED IF -0.  RESET TO +0.\n\t\tTS\tMODECADR\t# RETURN TO CALLER.\n\t\tTCF\tMODEEXIT\n\nMODEGOOD\tCCS\tA\t\t# MAKE SURE INITIAL STATE -1.\n\t\tTCF\tMODABORT\n\n\t\tINCR\tBUF2\t\t# IF SO, INCREMENT RETURN ADDRESS AND\n\t\tTCF\tMG2\t\t# RETURN IMMEDIATELY, SETTING CADR = +0.\n\nMODESLP\t\tTC\tMAKECADR\t# CALL FROM SWITCHABLE FIXED ONLY.\n\t\tINDEX\tRUPTREG2\n\t\tTS\tMODECADR\n\t\tTCF\tJOBSLEEP\n\nMODABORT\tDXCH\tBUF2\n\t\tTC\tBAILOUT1\t# TWO PROGRAMS USING THE SAME DEVICE.\n\t\tOCT\t1210\n\n# Page 1331\n# CONSTANTS FOR MODE SWITCHING ROUTINES\n\nBITS3&4\t\t=\tOCT14\nBITS4&6\t\t=\tOCT50\nBITS4-5\t\tOCT\t00030\nIMUSEFLG\tEQUALS\tBIT8\t\t# INTERPRETER SWITCH 7.\n-COMMAX\t\tDEC\t-191\n-COMMAX-\tDEC\t-192\n600MS\t\tDEC\t60\nIMUFIN20\t=\tIMUFINE\nGOMANUR\t\tCA\tATTCADR\t\t# IS KALCMANU FREE\n\t\tEXTEND\n\t\tBZF\t+3\n\n\t\tTC\tPOODOO\t\t# NO\n\t\tOCT\t1210\t\t# 2 TRYING TO USE SAME DEVICE\n\n +3\t\tEXTEND\n\t\tDCA\tBUF2\n\t\tDXCH\tATTCADR\t\t# SAVE FINAL RETURN FOR KALCMAN3\n\n\t\tCA\tBBANK\n\t\tMASK\tSEVEN\n\t\tADS\tATTCADR +1\n\n\t\tCA\tPRIORITY\n\t\tMASK\tPRIO37\n\t\tTS\tATTPRIO\t\t# SAVE USERS PRIO\n\n\t\tCAF\tKALEBCON\t# SET EBANK FOR KALCMAN3\n\t\tTS\tEBANK\n\t\tTC\tPOSTJUMP\n\t\tCADR\tKALCMAN3\nKALEBCON\tECADR\tBCDU\n\n# Page 1332\n# PROGRAM DESCRIPTION\n# IMU STATUS CHECK ROUTINE R02 (SUBROUTINE UTILITY)\n# MOD NO - 1\n# MOD BY - N.BRODEUR\n# FUNCTIONAL DESCRIPTION\n#\n# TO CHECK WHETHER IMU IS ON AND IF ON WHETHER IT IS ALIGNED TO AN\n# ORIENTATION KNOWN BY THE CMC. TO REQUEST SELECTION OF THE APPROPRIATE\n# PROGRAM IF THE IMU IS OFF OR NOT ALIGNED TO AN ORIENTATION KNOWN BY THE\n# CMC. CALLED THROUGH BANKCALL\n# CALLING SEQUENCE-\n#\n# L        TC     BANKCALL\n# L+1      CADR   R02BOTH\n# SUBROUTINES CALLED\n#\n#       VARALARM\n#       FLAGUP\n# NORMAL EXIT MODES\n#\n# AT L+2 OF CALLING SEQUENCE\n# ALARM OR ABORT EXIT MODES\n#       GOTOPOOH, WITH ALARM\n# ERASABLE INITIALIZATION REQUIRED\n#\n# NONE\n# DEBRIS\n#\n# CENTRALS-A,Q,L\n\n\t\tBANK\t34\n\t\tSETLOC\tR02\n\t\tBANK\n\t\tCOUNT*\t$$/R02\nDEC51\t\tDEC\t51\nR02BOTH\t\tCAF\tREFSMBIT\n\t\tMASK\tFLAGWRD3\n\t\tCCS\tA\n\t\tTC\tR02ZERO\t\t# ZERO IMUS\n\n\t\tCA\tIMODES30\n\t\tMASK\tBIT9\t\t# IS ISS INITIALIZED\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tCS\tBIT4\t\t# SEND IMU ALARM CODE 210\n\t\tAD\tOCT220\t\t# SEND REFSMM ALARM\n\t\tTC\tVARALARM\n\n\t\tTC\tGOTOPOOH\n\nR02ZERO\t\tTC\tUPFLAG\n# Page 1333\n\t\tADRES\tIMUSE\n\t\tTCF\tSWRETURN\nOCT220\t\tOCT\t220\n\n# Page 1334\n# PROGRAM DESCRIPTION   P06   10FEB67\n#\n# TRANSFER THE ISS/CMC FROM THE OPERATE TO THE STANDBY CONDITION.\n#\n# THE NORMAL CONDITION OF READINESS OF THE GNCS WHEN NOT IN USE IS STANDBY. IN THIS CONDITION THE IMU\n# HEATER POWER IS ON. THE IMU OPERATE POWER IS OFF. THE COMPUTER POWER IS ON. THE OPTICS POWER IS OFF. THE\n# CMC  STANDBY ON THE MAIN AND LEB DISKYS IS ON.\n#\n# CALLING SEQUENCE:\n#          ASTRONAUT REQUEST THROUGH DSKY     V37E 06E.\n#\n# SUBROUTINES CALLED:\n#          GOPERF1\n#          BANKCALL\n#          FLAGDOWN\n#\n# Page 1335\n# PRESTAND PREPARES FOR STANDBY BY SNAPSHOTTING THE SCALER AND TIME1 TIME2\n# THE LOW 5 BITS OF THE SCALER ARE INSPECTED TO INSURE COMPATIBILITY\n# BETWEEN THE SCALER READING AND THE TIME1 TIME2 READING.\n\n\t\tSETLOC\tP05P06\n\t\tBANK\n\n\t\tEBANK=\tTIME2SAV\n\t\tCOUNT*\t$$/P06\n\nP06\t\tTC\tUPFLAG\t\t# SET NODOV37 BIT\n\t\tADRES\tNODOFLAG\n\nPRESTAND\tINHINT\n\t\tEXTEND\n\t\tDCA\tTIME2\t\t# SNAPSHOT TIME1TIME2\n\t\tDXCH\tTIME2SAV\n\t\tTC\tSCALPREP\n\t\tTC\tPRESTAND\t# T1,T2,SCALER NOT COMPATIBLE\n\t\tDXCH\tMPAC\t\t# T1,T2 AND SCALER OK\n\t\tDXCH\tSCALSAVE\t# STORE SCALER\n\t\tINHINT\n\t\tTC\tBANKCALL\n\t\tCADR\tRNDREFDR\t# REFSMM, DRIFT, TRACK FLAGS DOWN\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tIMUSE\t\t# IMUSE DOWN\n\t\tTC\tDOWNFLAG\n\t\tADRES\tRNDVZFLG\t# RNDVZFLG DOWN\n\n\t\tCAF\tBIT11\n\t\tEXTEND\n\t\tWOR\tCHAN13\t\t# SET STANDBY ENABLE BIT\n\n\t\tTC\tPHASCHNG\t# SET RESTART TO POSTAND WHEN STANDBY\n\t\tOCT\t07024\t\t#\tRECOVERS\n\t\tOCT\t20000\n\t\tEBANK=\tSCALSAVE\n\t\t2CADR\tPOSTAND\n\n\t\tCAF\tOCT62\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTCF\t-3\n\t\tTCF\t-4\n\t\tTCF\t-5\n\nOCT62\t\tEQUALS\t.5SEC\t\t# DEC 50 = OCT 62\n\n# THE LOW 5 BITS OF THE SCALER READS 10000 FOR THE FIRST INTERVAL AFTER A\n# Page 1336\n# T1 INCREMENT. IF SCALPREP DETECTS THIS INTERVAL THE T1,T2 AND SCALER\n# DATA ARE NOT COMPATIBLE AND RETURN IS TO L+1 FOR ANOTHER READING OF THE\n# DATA. OTHERWISE, THE RETURN IS TO L+2 TO PROCEED. ROUTINE ALSO PREPARES\n# THE SCALER READING FOR COMPUTATION OF THE INCREMENT TO UPDATE T1T2. (THE\n# 10 MS BIT (BIT 6) OF THE SCALER IS INCREMENTED 5 MS OUT OF PHASE FROM\n# T1.) ADDITION OF 5 MS (BIT 5) TO THE SCALER READING HAS THE EFFECT OF\n# ADJUSTING BIT 6 IN THE SCALER TO BE IN PHASE WITH BIT 1 OF T1. THE LOW 5\n# BITS OF THE SCALER READING ARE THEN SET TO ZERO, TO TRUNCATE THE SCALER\n# DATA TO 10 MS. RESULTS ARE STORED IN MPAC, +1.\n\nSCALPREP\tEXTEND\n\t\tQXCH\tMPAC +2\n\t\tTC\tFINETIME +1\n\t\tRELINT\n\t\tDXCH\tMPAC\n\t\tCA\tBIT5\t\t# ADD 5 MS TO THE SCALER READING.\n\t\tTS\tL\n\t\tCA\tZERO\n\t\tDAS\tMPAC\n\t\tCS\tLOW5\t\t# SET LOW 5 BITS OF (SCALER+5MS) TO ZERO\n\t\tMASK \tMPAC +1\t\t# AND STORE RESULTS IN MPAC,+1.\n\t\tXCH\tMPAC +1\n\t\tMASK\tLOW5\t\t# TEST LOW 5 BITS OF SCALER FOR THE FIRST\n\t\t\t\t\t# INTERVAL AFTER THE T1 INCREMENT\n\t\t\t\t\t# (NOW = 00000, SINCE BIT 5 ADDED).\n\t\tCCS\tA\t\t# IS IT 1ST INTERVAL AFTER T1 INCREMENT\n\t\tINCR\tMPAC +2\t\t# NO\n\t\tTC\tMPAC +2\t\t# YES\n\n# POSTAND RECOVERS TIME AFTER STANDBY.THE SCALER IS SNAPSHOTTED AND THE\n# TIME1 TIME2 COUNTER IS SET TO ZERO. THE LOW 5 BITS OF THE SCALER ARE\n# INSPECTED TO INSURE COMPATIBILITY BETWEEN THE SCALER READING AND THE\n# CLEARING OF THE TIME COUNTER.  IT THEN COMPUTES THE DIFFERENCE IN SCALER\n# VALUES (IN DP) AND ADDS THIS TO THE PREVIOUSLY SNAPSHOTTED VALUES OF\n# TIME1 TIME2 AND PLACES THIS NEW TIME INTO THE TIME1 TIME2 COUNTER.\n\n\t\tCOUNT*\t$$/P05\n\nPOSTAND\t\tCS\tBIT11\t\t# RECOVER TIME AFTER STANDBY.\n\t\tEXTEND\n\t\tWAND\tCHAN13\t\t# CLEAR STANDBY ENABLE BIT\n\t\tINHINT\n\t\tCA\tZERO\n\t\tTS\tL\n\t\tDXCH\tTIME2\t\t# CLEAR TIME1TIME2\n\t\tTC\tSCALPREP\t# STORE SCALER IN MPAC, MPAC+1\n\t\tTC\tPOSTAND +3\t# T1,T2,SCALER NOT COMPATIBLE\n\t\tEXTEND\t\t\t# T1,T2 AND SCALER OK\n\t\tDCS\tSCALSAVE\n\t\tDAS\tMPAC\t\t# FORM DP DIFFERENCE OF POSTSTANDBY SCALER\n# Page 1337\n\t\tCAF\tBIT10\t\t# MINUS PRESTANDBY SCALER AND SHIFT RIGHT\n\t\tTC\tSHORTMP\t\t# 5 TO ALIGN BITS WITH TIME1TIME2.\n\t\tCAF\tZERO\n\t\tTS\tMPAC +2\t\t# NEEDED FOR TP AGREE\n\t\tTC\tTPAGREE\t\t# MAKE DP DIFF AGREE\n\t\tCCS\tMPAC\n\t\tTC\tPOSTCOM\t\t# IF DP DIFF NET +, NO SCALER OVERFLOW\n\t\tTC\tPOSTCOM\t\t# BETWEEN PRE AND POST STANDBY.\n\t\tTC\t+1\t\t# IF DP DIFF NET -, SCALER OVERFLOWED. ADD\n\t\tCAF\tBIT10\t\t# BIT 10 TO HIGH DIFF TO CORRECT.\n\t\tADS\tMPAC\nPOSTCOM\t\tEXTEND\t\t\t# C(MPAC,+1) IS MAGNITUDE OF DELTA SCALER.\n\t\tDCA\tTIME2SAV\t# PRESTANDBY TIME1TIME2\n\t\tDAS\tMPAC\n\t\tTC\tTPAGREE\t\t# FORCE SIGN AGREEMENT\n\t\tDXCH\tMPAC\t\t# UPDATED VALUE FOR T1,T2.\n\t\tDAS\tTIME2\t\t# LOAD UPDATED VALUE INTO T1,T2, WITH\n\t\tTC\tDOWNFLAG\t# CLEAR NODOFLAG\n\t\tADRES\tNODOFLAG\n\n\t\tTC\tGOTOPOOH\n\n"
  },
  {
    "path": "Luminary099/IMU_PERFORMANCE_TESTS_4.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tIMU_PERFORMANCE_TESTS_4.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t382-389\n# Mod history:\t2009-05-17 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 382\n# PROGRAM --\tIMU PERFORMANCE TESTS 4\n# DATE --\tNOV 15, 1966\n# BY --\t\tGEORGE SCHMIDT IL7-146 EXT 1126\n# MOD NO-ZERO\n#\n# FUNCTIONAL DESCRIPTION\n#\n# THIS SECTION CONSISTS OF THE FILTER FOR THE GYRO DRIFT TESTS.  NO COMPASS\n# IS DONE IN LEM.  FOR A DESCRIPTION OF THE FILTER SEE E-1973.  THIS\n# SECTION IS ENTERED FROM IMU 2.  IT RETURNS THERE AT END OF TEST.\n#\n# EARTHR,OGC ZERO,ERTHRVSE\n#\n# NORMAL EXIT\n#\n# LENGTHOT GOES TO ZERO -- RETURN TO IMU PERF TESTS 2 CONTROL\n#\n# ALARMS\n#\n# 1600\tOVERFLOW IN DRIFT TEST\n# 1601\tBAD IMU MODING IN ANY ROUTINE THAT USES IMUSTALL\n#\tOUTPUT\n#\n# FLASHING DISPLAY OF RESULTS -- CONTROLLED IN IMU PERF TESTS 2\n#\n# DEBRIS\n#\n# ALL CENTRALS -- ALL OF EBANK XSM\n\n# Page 383\n\t\tBANK\t33\n\t\tSETLOC\tIMU4\n\t\tBANK\n\t\tCOUNT*\t$$/P07\n\n\t\tEBANK=\tXSM\n\nESTIMS\t\tINHINT\n\t\tCAE\t1SECXT\n\t\tTC\tTWIDDLE\n\t\tEBANK=\tXSM\n\t\tADRES\tALLOOP\n\t\tCAF\tZERO\t\t# ZERO THE PIPAS\n\t\tTS\tPIPAX\n\t\tTS\tPIPAY\n\t\tTS\tPIPAZ\n\t\tRELINT\n\t\tCA\t77DECML\n\t\tTS\tZERONDX\n\t\tCA\tALXXXZ\n\t\tTC\tZEROING\n\t\tTC\tINTPRET\n\t\tSLOAD\n\t\t\tSCHZEROS\n\t\tSTOVL\tGCOMPSW -1\n\t\t\tINTVAL \t+2\n\t\tSTOVL\tALX1S\n\t\t\tSCHZEROS\n\t\tSTORE\tDELVX\n\t\tSTORE\tGCOMP\n\t\tSLOAD\n\t\t\tTORQNDX\n\t\tDCOMP\tBMN\n\t\t\tVERTSKIP\n\t\tCALL\n\t\t\tERTHRVSE\nVERTSKIP\tEXIT\n\t\tTC\tSLEEPIE +1\n\n# Page 384\nALLOOP\t\tCA\tOVFLOWCK\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tTASKOVER\n\t\tCCS\tALTIM\n\t\tCA\tA\t\t# SHOULD NEVER HIT THIS LOCATION\n\t\tTS\tALTIMS\n\t\tCS\tA\n\t\tTS\tALTIM\n\t\tCS\tONE\n\t\tAD\tGEOCOMPS\n\t\tEXTEND\n\t\tBZF\t+4\n\t\tCA\tLENGTHOT\n\t\tEXTEND\n\t\tBZMF\t+5\n\t\tCAE\t1SECXT\n\t\tTC\tTWIDDLE\n\t\tEBANK=\tXSM\n\t\tADRES\tALLOOP\n\t\tCAF\tZERO\n\t\tXCH\tPIPAX\n\t\tTS\tDELVX\n\t\tCAF\tZERO\n\t\tXCH\tPIPAY\n\t\tTS\tDELVY\n\t\tCAF\tZERO\n\t\tXCH\tPIPAZ\n\t\tTS\tDELVZ\nSPECSTS\t\tCAF\tPRIO20\n\t\tTC\tFINDVAC\n\t\tEBANK=\tXSM\n\t\t2CADR\tALFLT\t\t# START THE JOB\n\n\t\tTC\tTASKOVER\n\n# Page 385\nALFLT\t\tCCS\tGEOCOMPS\n\t\tTC\t+2\n\t\tTC\tNORMLOP\n\t\tTC\tBANKCALL\n\t\tCADR\t1/PIPA\nNORMLOP\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tINTVAL\n\t\tSTOVL\tS1\n\t\t\tDELVX\n\t\tVXM\tVSL1\n\t\t\tXSM\n\t\tDLOAD\tDCOMP\n\t\t\tMPAC +3\n\t\tSTODL\tDPIPAY\n\t\t\tMPAC +5\n\t\tSTORE\tDPIPAZ\n\n\t\tSETPD\tAXT,1\n\t\t\t0\n\t\t\t8D\n\t\tSLOAD\tDCOMP\n\t\t\tGEOCOMPS\n\t\tBMN\n\t\t\tPERFERAS\nALCGKK\t\tSLOAD\tBMN\n\t\t\tALTIMS\n\t\t\tALFLT3\nALKCG\t\tAXT,2\tLXA,1\t\t# LOADS SLOPES AND TIME CONSTANTS AT RQST\n\t\t\t12D\n\t\t\tALX1S\nALKCG2\t\tDLOAD*\tINCR,1\n\t\t\tALFDK \t+144D,1\n\t\tDEC\t-2\n\t\tSTORE\tALDK \t+10D,2\n\t\tTIX,2\tSXA,1\n\t\t\tALKCG2\n\t\t\tALX1S\n\nALFLT3\t\tAXT,1\n\t\t\t8D\nDELMLP\t\tDLOAD*\tDMP\n\t\t\tDPIPAY \t+8D,1\n\t\t\tPIPASC\n\t\tSLR\tBDSU*\n\t\t\t9D\n\t\t\tINTY\t+8D,1\n\t\tSTORE\tINTY \t+8D,1\n\t\tPDDL\tDMP*\n\t\t\tVELSC\n# Page 386\n\t\t\tVLAUN \t+8D,1\n\t\tSL2R\n\t\tDSU\tSTADR\n\t\tSTORE\tDELM \t+8D,1\n\t\tSTORE\tDELM \t+10D,1\n\t\tTIX,1\tAXT,2\n\t\t\tDELMLP\n\t\t\t4\nALILP\t\tDLOAD*\tDMPR*\n\t\t\tALK \t+4,2\n\t\t\tALDK \t+4,2\n\t\tSTORE\tALK \t+4,2\n\t\tTIX,2\tAXT,2\n\t\t\tALILP\n\t\t\t8D\nALKLP\t\tLXC,1\tSXA,1\n\t\t\tCMPX1\n\t\t\tCMPX1\n\t\tDLOAD*\tDMPR*\n\t\t\tALK \t+1,1\n\t\t\tDELM \t+8D,2\n\t\tDAD*\n\t\t\tINTY \t+8D,2\n\t\tSTORE\tINTY \t+8D,2\n\t\tDLOAD*\tDAD*\n\t\t\tALK \t+12D,2\n\t\t\tALDK \t+12D,2\n\t\tSTORE\tALK \t+12D,2\n\t\tDMPR*\tDAD*\n\t\t\tDELM \t+8D,2\n\t\t\tINTY \t+16D,2\n\t\tSTORE\tINTY \t+16D,2\n\t\tDLOAD*\tDMP*\n\t\t\tALSK \t+1,1\n\t\t\tDELM \t+8D,2\n\t\tSL1R\tDAD*\n\t\t\tVLAUN \t+8D,2\n\t\tSTORE\tVLAUN \t+8D,2\n\t\tTIX,2\tAXT,1\n\t\t\tALKLP\n\t\t\t8D\n\nLOOSE\t\tDLOAD*\tPDDL*\n\t\t\tACCWD \t+8D,1\n\t\t\tVLAUN \t+8D,1\n\t\tPDDL*\tVDEF\n\t\t\tPOSNV \t+8D,1\n\t\tMXV\tVSL1\n\t\t\tTRANSM1\n# Page 387\n\t\tDLOAD\n\t\t\tMPAC\n\t\tSTORE\tPOSNV\t +8D,1\n\t\tDLOAD\n\t\t\tMPAC\t +3\n\t\tSTORE\tVLAUN \t+8D,1\n\t\tDLOAD\n\t\t\tMPAC\t+5\n\t\tSTORE\tACCWD \t+8D,1\n\t\tTIX,1\n\t\t\tLOOSE\n\n\t\tAXT,2\tAXT,1\t\t# EVALUATE SINES AND COSINES\n\t\t\t6\n\t\t\t2\nBOOP\t\tDLOAD*\tDMPR\n\t\t\tANGX \t+2,1\n\t\t\tGEORGEJ\n\t\tSR2R\n\t\tPUSH\tSIN\n\t\tSL3R\tXAD,1\n\t\t\tX1\n\t\tSTORE\t16D,2\n\t\tDLOAD\n\t\tCOS\n\t\tSTORE\t22D,2\t\t# COSINES\n\t\tTIX,2\n\t\t\tBOOP\n\nPERFERAS\tEXIT\n\t\tCA\tEBANK7\n\t\tTS\tEBANK\n\t\tEBANK=\tATIGINC\n\t\tTC\tATIGINC\t\t# GOTO ERASABLE TO CALCULATE ONLY TO RETN\n\n# \t\t\t     CAUTION\n#\n# THE ERASABLE PROGRAM THAT DOES THE CALCULATIONS MUST BE LOADED\n# BEFORE ANY ATTEMPT IS MAKE TO RUN THE IMU PERFORMANCE TEST\n\n\t\tEBANK=\tAZIMUTH\n\t\tCCS\tLENGTHOT\n\t\tTC\tSLEEPIE\n\t\tCCS\tTORQNDX\n\t\tTCF\t+2\n\t\tTC\tSETUPER1\n\t\tCA\tCDUX\n\t\tTS\tLOSVEC\t +1\t# FOR TROUBLESHOOTING VD POSNS 2$4\n\n# Page 388\nSETUPER1\tTC\tINTPRET\n\t\tDLOAD\tPDDL\t\t# ANGLES FROM DRIFT TEST ONLY\n\t\t\tANGZ\n\t\t\tANGY\n\t\tPDDL\tVDEF\n\t\t\tANGX\n\t\tVCOMP\tVXSC\n\t\t\tGEORGEJ\n\t\tMXV\tVSR1\n\t\t\tXSM\n\t\tSTORE\tOGC\n\t\tEXIT\n\n\t\tCA\tOGCPL\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTC\tIMUSLLLG\nGEOSTRT4\tCCS\tTORQNDX\t\t# ONLY POSITIVE IF IN VERTICAL DRIFT TEST\n\t\tTC\tVALMIS\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tERTHRVSE\n\t\tEXIT\n\t\tTC\tTORQUE\n\nSLEEPIE\t\tTS\tLENGTHOT\t# TEST NOT OVER-DECREMENT LENGTHOT\n\t\tCCS\tTORQNDX\t\t# ARE WE DOING VERTDRIFT\n\t\tTC\tEARTHR*\n\t\tTC\tENDOFJOB\n\nSOMEERRR\tCA\tEBANK5\n\t\tTS\tEBANK\n\t\tCA\tONE\n\t\tTS\tOVFLOWCK\t# STOP ALLOOP FROM CALLING ITSELF\n\t\tTC\tALARM\n\t\tOCT\t1600\n\t\tTC\tENDTEST1\nSOMERR2\t\tCAF\tOCT1601\n\t\tTC\tVARALARM\n\t\tTC\tDOWNFLAG\n\t\tADRES\tIMUSE\n\t\tTC\tENDOFJOB\n\nOCT1601\t\tOCT\t01601\nDEC585\t\tOCT\t06200\t\t# 3200 B+14 ORDER IS IMPORTANT\nSCHZEROS\t2DEC\t.00000000\n# Page 389\n\t\t2DEC\t.00000000\n\n\t\tOCT\t00000\nONEDPP\t\tOCT\t00000\t\t# ORDER IS IMPORTANT\n\t\tOCT\t00001\n\nINTVAL\t\tOCT\t4\n\t\tOCT\t2\n\t\tDEC\t144\n\t\tDEC\t-1\nSOUPLY\t\t2DEC\t.93505870\t# INITIAL GAINS FOR PIP OUTPUTS\n\n\t\t2DEC\t.26266423\t# INITIAL GAINS/4 FOR ERECTION ANGLES\n\n77DECML\t\tDEC\t77\nALXXXZ\t\tGENADR\tALX1S \t-1\nPIPASC\t\t2DEC\t.13055869\n\nVELSC\t\t2DEC\t-.52223476\t# 512/980.402\n\nALSK\t\t2DEC\t.17329931\t# SSWAY VEL GAIN X 980.402/4096\n\n\t\t2DEC\t-.00835370\t# SSWAY ACCEL GAIN X 980.402/4096\n\nGEORGEJ\t\t2DEC\t.63661977\n\nGEORGEK\t\t2DEC\t.59737013\n\n"
  },
  {
    "path": "Luminary099/IMU_PERFORMANCE_TEST_2.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tIMU_PERFORMANCE_TEST_2.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t373-381\n# Mod history:\t2009-05-17 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 373\n# NAME --\tIMU PERFORMANCE TESTS 2\n#\n# DATE --\tMARCH 20, 1967\n#\n# BY --\t\tSYSTEM TEST GROUP 864-6900 EXT. 1274\n#\n# MODNO. --\tZERO\n#\n# FUNCTIONAL DESCRIPTION\n#\n# POSITIONING ROUTINES FOR THE IMU PERFORMANCE TESTS AS WELL AS SOME OF\n# THE TESTS THEMSELVES.  FOR A DESCRIPTION OF THESE SUBROUTINES AND THE\n# OPERATING PROCEDURES (TYPICALLY) SEE STG MEMO 685.  THEORETICAL REF. E-1973\n\n\t\tBANK\t33\n\t\tSETLOC\tIMU2\n\t\tBANK\n\t\tEBANK=\tPOSITON\n\t\tCOUNT*\t$$/P07\n\nREDO\t\tTC\tNEWMODEX\n\t\tMM\t07\n\nGEOIMUTT\tTC\tIMUZERR\nIMUBACK\t\tCA\tZERO\n\t\tTS\tNDXCTR\n\t\tTS\tTORQNDX\n\t\tTS\tTORQNDX +1\n\t\tTS\tOVFLOWCK\nNBPOSPL\t\tCA\tDEC17\n\t\tTS\tZERONDX\n\t\tCA\tXNBADR\n\t\tTC\tZEROING\n\t\tCA\tHALF\n\t\tTS\tXNB\nGUESS\t\tTC\tINTPRET\nLATAZCHK\tDLOAD\tSL2\n\t\t\tLATITUDE\n\t\tSTODL\tDSPTEM1 +1\n\t\t\tAZIMUTH\n\t\tRTB\tEXIT\n\t\t\t1STO2S\n\t\tXCH\tMPAC\n\t\tTS\tDSPTEM1\n\t\tCAF\tVN0641\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tENDTEST1\n\t\tTC\t+2\n\t\tTC\t-5\n# Page 374\n\t\tTC\tINTPRET\n\t\tSLOAD\tRTB\n\t\t\tDSPTEM1\n\t\t\tCDULOGIC\n\t\tSTORE\tAZIMUTH\n\t\tSLOAD\tSR2\n\t\t\tDSPTEM1 +1\n\t\tSTORE\tLATITUDE\n\t\tCOS\tDCOMP\n\t\tSL1\n\t\tSTODL\tWANGI\n\t\t\tLATITUDE\n\t\tSIN\tSL1\n\t\tSTODL\tWANGO\n\t\t\tAZIMUTH\n\t\tPUSH\tSIN\n\t\tSTORE\tYNB \t+2\n\t\tSTODL\tZNB \t+4\n\t\tCOS\n\t\tSTORE\tYNB\t+4\n\t\tDCOMP\nPOSGMBL\t\tSTCALL\tZNB \t+2\n\t\t\tCALCGA\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUCOARS\n\t\tCAF\tBIT14\t\t# IF BIT14 SET, GIMBAL LOCK\n\t\tMASK\tFLAGWRD3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tINCR\tNDXCTR\t\t# +1 IF IN GIMBAL LOCK, OTHERWISE 0\n\t\tTC\tDOWNFLAG\n\t\tADRES\tGLOKFAIL\t# RESET GIMBAL LOCK FLAG\n\t\tTC\tIMUSLLLG\n\t\tCCS\tNDXCTR\t\t# IF ONE GO AND DO A PIPA TEST ONLY\n\t\tTC\tPIPACHK\t\t# ALIGN AND MEASURE VERTICAL PIPA RATE\n\t\tTC\tFINIMUDD\n\t\tEXTEND\n\t\tDCA\tPERFDLAY\n\t\tTC\tLONGCALL\t# DELAY WHILE SUSPENSION STABILIZES\n\t\tEBANK=\tPOSITON\n\t\t2CADR\tGOESTIMS\n\n\t\tCA\tESTICADR\n\t\tTC\tJOBSLEEP\nGOESTIMS\tCA\tESTICADR\n\t\tTC\tJOBWAKE\n\t\tTC\tTASKOVER\nESTICADR\tCADR\tESTIMS\nTORQUE\t\tCA\tZERO\n# Page 375\n\t\tTS\tDSPTEM2\n\t\tCA\tDRIFTI\n\t\tTS\tDSPTEM2 +1\n\t\tINDEX\tPOSITON\n\t\tTS\tSOUTHDR -1\n\t\tTC\tSHOW\n\nPIPACHK\t\tINDEX\tNDXCTR\t\t# PIPA TEST\n\t\tTC\t+1\n\t\tTC\tEARTHR*\n\t\tCA\tDEC17\t\t# ALLOW PIP COUNTER TO OVERFLOW 17 TIMES\n\t\tTS\tDATAPL\t+4\t# IN THE ALLOTTED TIME INTERVAL\n\t\tCA\tDEC58\n\t\tTS\tLENGTHOT\n\t\tCA\tONE\n\t\tTS\tRESULTCT\n\t\tCA\tZERO\n\t\tINDEX\tPIPINDEX\n\t\tTS\tPIPAX\n\t\tTS\tDATAPL\n\t\tTC\tCHECKG\n\t\tINHINT\n\t\tCAF\tTWO\n\t\tTC\tTWIDDLE\n\t\tEBANK=\tXSM\n\t\tADRES\tPIPATASK\n\t\tTC\tENDOFJOB\n\nPIPATASK\tEXTEND\n\t\tDIM\tLENGTHOT\n\t\tCA\tLENGTHOT\n\t\tEXTEND\n\t\tBZMF\tSTARTPIP\n\t\tCAF\tBIT10\n\t\tTC\tTWIDDLE\n\t\tEBANK=\tXSM\n\t\tADRES\tPIPATASK\nSTARTPIP\tCAF\tPRIO20\n\t\tTC\tFINDVAC\n\t\tEBANK=\tXSM\n\t\t2CADR\tPIPJOBB\n\n\t\tTC\tTASKOVER\n\nPIPJOBB\t\tINDEX\tNDXCTR\n\t\tTC\t+1\n\t\tTC\tEARTHR*\n\t\tCA\tLENGTHOT\n# Page 376\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTC\tENDOFJOB\n\n\t\tCA\tFIVE\n\t\tTS\tRESULTCT\n\t\tTC\tCHECKG\n\t\tCCS\tDATAPL \t+1\n\t\tTC\t+4\n\t\tTC\tCCSHOLE\n\t\tCS\tDATAPL\t+4\n\t\tTS\tDATAPL\t+4\n\t\tEXTEND\n\t\tDCS\tDATAPL\n\t\tDAS\tDATAPL \t+4\n\n\t\tTC\tINTPRET\n\t\tDLOAD\tDSU\n\t\t\tDATAPL\t+6\n\t\t\tDATAPL \t+2\n\t\tBPL\tCALL\n\t\t\tAINGOTN\n\t\t\tOVERFFIX\nAINGOTN\t\tPDDL\tDDV\n\t\t\tDATAPL \t+4\n\t\tDMPR\tRTB\n\t\t\tDEC585\t\t# DEC585 HAS BEEN REDEFINED FOR LEM\n\t\t\tSGNAGREE\n\t\tSTORE\tDSPTEM2\n\t\tEXIT\n\t\tCCS\tNDXCTR\n\t\tTC\tCOAALIGN\t# TAKE PLATFORM OUT OF GIMBAL LOCK\n\t\tTC\tSHOW\nVERTDRFT\tCA\t3990DEC\t\t# ABOUT 1 HOUR VERTICAL DRIFT TEST\n\t\tTS\tLENGTHOT\n\t\tINDEX\tPOSITON\n\t\tCS\tSOUTHDR -2\n\t\tTS\tDRIFTT\n\t\tCCS\tPIPINDEX\t# OFFSET PLATFORM TO MISS PIP DEAD-ZONES\n\t\tTCF\tPON4\t\t# Z-UP IN POS 4\nPON2\t\tCS\tBIT5\t\t# X-UP\n\t\tADS\tERCOMP \t+2\n\t\tCA\tBIT5\n\t\tADS\tERCOMP \t+4\n\t\tTCF\tPON\nPON4\t\tCS\tBIT5\n\t\tADS\tERCOMP\t+2\n\t\tCA\tBIT5\n\t\tADS\tERCOMP\nPON\t\tTC\tEARTHR*\n# Page 377\n\t\tCA\tZERO\t\t# ALLOW ONLY SOUTH GYRO EARTH RATE COMPENS\n\t\tTS\tERVECTOR\n\t\tTS\tERVECTOR +1\nGUESS1\t\tCAF\tPOSMAX\n\t\tTS\tTORQNDX\n\t\tTS\tTORQNDX +1\n\t\tCA\tCDUX\n\t\tTS\tLOSVEC\n\t\tTC\tESTIMS\nVALMIS\t\tCA\tDRIFTO\n\t\tTS\tDSPTEM2 +1\n\t\tCA\tZERO\n\t\tTS\tDSPTEM2\n\t\tTC\tSHOW\n\nENDTEST1\tTC\tDOWNFLAG\n\t\tADRES\tIMUSE\n\t\tCS\tZERO\n\t\tTC\tNEWMODEA\n\t\tTC\tENDEXT\n\n# Page 378\nOVERFFIX\tDAD\tDAD\n\t\t\tDPPOSMAX\n\t\t\tONEDPP\n\t\tRVQ\n\nCOAALIGN\tEXTEND\t\t\t# COARSE ALIGN SUBROUTINE\n\t\tQXCH\tZERONDX\n\t\tCA\tZERO\n\t\tTS\tTHETAD\n\t\tTS\tTHETAD +1\n\t\tTS\tTHETAD +2\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUCOARS\nALIGNCOA\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tSOMERR2\n\t\tTC\tZERONDX\n\nIMUSLLLG\tEXTEND\n\t\tQXCH\tZERONDX\n\t\tTC\tALIGNCOA\n\nFINIMUDD\tEXTEND\n\t\tQXCH\tZERONDX\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUFINE\n\t\tTC\tALIGNCOA\n\nIMUZERR\t\tEXTEND\n\t\tQXCH\tZERONDX\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUZERO\n\t\tTC\tALIGNCOA\n\nCHECKG\t\tEXTEND\t\t\t# PIP PULSE CATCHING ROUTINE\n\t\tQXCH\tQPLACE\n\t\tTC\t+6\nCHECKG1\t\tRELINT\n\t\tCA\tNEWJOB\n\t\tEXTEND\n\t\tBZMF\t+6\n\t\tTC\tCHANG1\n\t\tINHINT\n\t\tINDEX\tPIPINDEX\n\t\tCS\tPIPAX\n\t\tTS\tZERONDX\n\t\tINHINT\n# Page 379\n\t\tINDEX\tPIPINDEX\n\t\tCA\tPIPAX\n\t\tAD\tZERONDX\n\t\tEXTEND\n\t\tBZF\tCHECKG1\n\t\tINDEX\tPIPINDEX\n\t\tCA\tPIPAX\n\t\tINDEX\tRESULTCT\n\t\tTS\tDATAPL\n\t\tTC\tFINETIME\n\t\tINDEX\tRESULTCT\n\t\tTS\tDATAPL +1\n\t\tINDEX\tRESULTCT\n\t\tLXCH\tDATAPL +2\n\t\tRELINT\nENDCHKG\t\tTC\tQPLACE\n\nZEROING\t\tTS\tL\n\t\tTCF\t+2\nZEROING1\tTS\tZERONDX\n\t\tCAF\tZERO\n\t\tINDEX\tL\n\t\tTS\t0\n\t\tINCR\tL\n\t\tCCS\tZERONDX\n\t\tTCF\tZEROING1\n\t\tTC\tQ\n\n# Page 380\nERTHRVSE\tDLOAD\tPDDL\n\t\t\tSCHZEROS\t# PD24 = (SIN             -COS     0)(OMEG/MS)\n\t\t\tLATITUDE\n\t\tCOS\tDCOMP\n\t\tPDDL\tSIN\n\t\t\tLATITUDE\n\t\tVDEF\tVXSC\n\t\t\tOMEG/MS\n\t\tSTORE\tERVECTOR\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTOVL\tTMARK\n\t\t\tSCHZEROS\n\t\tSTORE\tERCOMP\n\t\tRVQ\n\nEARTHR\t\tITA\tRTB\n\t\t\tS2\n\t\t\tLOADTIME\n\t\tSTORE\tTEMPTIME\n\t\tDSU\tBPL\n\t\t\tTMARK\n\t\t\tERTHR\n\t\tCALL\n\t\t\tOVERFFIX\nERTHR\t\tSL\tVXSC\n\t\t\t9D\n\t\t\tERVECTOR\n\t\tMXV\tVAD\n\t\t\tXSM\n\t\t\tERCOMP\n\t\tSTODL\tERCOMP\n\t\t\tTEMPTIME\n\t\tSTORE\tTMARK\n\t\tAXT,1\tRTB\n\t\tECADR\tERCOMP\n\t\t\tPULSEIMU\n\t\tGOTO\n\t\t\tS2\n\nEARTHR*\t\tEXTEND\n\t\tQXCH\tQPLACES\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tEARTHR\n\t\tEXIT\n\t\tTC\tIMUSLLLG\n\t\tTC\tQPLACES\n\nSHOW\t\tEXTEND\n# Page 381\n\t\tQXCH\tQPLACE\nSHOW1\t\tCA\tPOSITON\n\t\tTS\tDSPTEM2 +2\n\t\tCA\tVB06N98\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tENDTEST1\t# V34\n\t\tTC\tQPLACE\t\t# V33\n\t\tTCF\tSHOW1\n\n3990DEC\t\tDEC\t3990\nVB06N98\t\tVN\t0698\nVN0641\t\tVN\t0641\nDEC17\t\t=\tND1\nDEC58\t\tDEC\t58\nOGCPL\t\tECADR\tOGC\n1SECX\t\t=\t1SEC\nXNBADR\t\tGENADR\tXNB\nXSMADR\t\tGENADR\tXSM\n\t\tBLOCK\t2\n\t\tCOUNT*\t$$/P07\nFINETIME\tINHINT\t\t\t# RETURNS WITH INTERRUPT INHIBITED\n\t\tEXTEND\n\t\tREAD\tLOSCALAR\n\t\tTS\tL\n\t\tEXTEND\n\t\tRXOR\tLOSCALAR\n\t\tEXTEND\n\t\tBZF\t+4\n\t\tEXTEND\n\t\tREAD\tLOSCALAR\n\t\tTS\tL\n +4\t\tCS\tPOSMAX\n\t\tAD\tL\n\t\tEXTEND\n\t\tBZF\tFINETIME +1\n\t\tEXTEND\n\t\tREAD\tHISCALAR\n\t\tTC Q\n\n"
  },
  {
    "path": "Luminary099/INFLIGHT_ALIGNMENT_ROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINFLIGHT_ALIGNMENT_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1249-1258\n# Mod history:\t2009-05-26 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1249\n\t\tBANK\t22\n\t\tSETLOC\tINFLIGHT\n\t\tBANK\n\n\t\tEBANK=\tXSM\n\n# CALCGTA COMPUTES THE GYRO TORQUE ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.\n#\n# THE INPUT IS THE DESIRED STABLE MEMBER COORDINATES REFERRED TO PRESENT STABLE MEMBER COORDINATES.  THE THREE\n# HALF-UNIT VECTORS ARE STORED AT XDC, YDC, AND ZDC.\n#\n# THE OUTPUTS ARE THE THREE GYRO TORQUE ANGLES TO BE APPLIED TO THE Y, Z, AND X GYROS AND ARE STORED DP AT IGC,\n# MGC, AND OGC RESPECTIVELY.\n\n\t\tCOUNT*\t$$/INFLT\nCALCGTA\t\tITA\tDLOAD\t\t# PUSHDOWN 00-03, 16D-27D, 34D-37D\n\t\t\tS2\t\t# XDC = (XD1 XD2 XD3)\n\t\t\tXDC\t\t# YDC = (YD1 YD2 YD3)\n\t\tPDDL\tPDDL\t\t# ZDC = (ZD1 ZD2 ZD3)\n\t\t\tHI6ZEROS\n\t\t\tXDC \t+4\n\t\tDCOMP\tVDEF\n\t\tUNIT\n\t\tSTODL\tZPRIME\t\t# ZP = UNIT(-XD3 0 XD1) = (ZP1 ZP2 ZP3)\n\t\t\tZPRIME\n\n\t\tSR1\n\t\tSTODL\tSINTH\t\t# SIN(IGC) = ZP1\n\t\t\tZPRIME \t+4\n\t\tSR1\n\t\tSTCALL\tCOSTH\t\t# COS(IGC) = ZP3\n\t\t\tARCTRIG\n\n\t\tSTODL\tIGC\t\t# Y GYRO TORQUING ANGLE   FRACTION OF REV.\n\t\t\tXDC \t+2\n\t\tSR1\n\t\tSTODL\tSINTH\t\t# SIN(MGC) = XD2\n\t\t\tZPRIME\n\n\t\tDMP\tPDDL\n\t\t\tXDC \t+4\t# PD00 = (ZP1)(XD3)\n\t\t\tZPRIME \t+4\n\n\t\tDMP\tDSU\n\t\t\tXDC\t\t# MPAC = (ZP3)(XD1)\n\t\tSTADR\n\t\tSTCALL\tCOSTH\t\t# COS(MGC) = MPAC - PD00\n\t\t\tARCTRIG\n# Page 1250\n\t\tSTOVL\tMGC\t\t# Z GYRO TORQUING ANGLE   FRACTION OF REV.\n\t\t\tZPRIME\n\t\tDOT\n\t\t\tZDC\n\t\tSTOVL\tCOSTH\t\t# COS(OGC) = ZP . ZDC\n\t\t\tZPRIME\n\t\tDOT\n\t\t\tYDC\n\t\tSTCALL\tSINTH\t\t# SIN(OGC) = ZP . YDC\n\t\t\tARCTRIG\n\n\t\tSTCALL\tOGC\t\t# X GYRO TORQUING ANGLE   FRACTION OF REV.\n\t\t\tS2\n\n# Page 1251\n# ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE.\n#\n# THE INPUTS ARE SIN/4 AND COS/4 STORED DP AT SINTH AND COSTH.\n#\n# THE OUTPUT IS THE CALCULATED ANGLE BETWEEN +.5 AND -.5 REVOLUTIONS AND STORED AT THETA.  THE OUTPUT IS ALSO\n# AVAILABLE AT MPAC.\n\nARCTRIG\t\tDLOAD\tABS\t\t# PUSHDOWN  16D-21D\n\t\t\tSINTH\n\t\tDSU\tBMN\n\t\t\tQTSN45\t\t# ABS(SIN/4) - SIN(45)/4\n\t\t\tTRIG1\t\t# IF (-45,45) OR (135,-135)\n\n\t\tDLOAD\tSL1\t\t# (45,135) OR (-135,-45)\n\t\t\tCOSTH\n\t\tACOS\tSIGN\n\t\t\tSINTH\n\t\tSTORE\tTHETA\t\t# X = ARCCOS(COS) WITH SIGN(SIN)\n\t\tRVQ\n\nTRIG1\t\tDLOAD\tSL1\t\t# (-45,45) OR (135,-135)\n\t\t\tSINTH\n\t\tASIN\n\t\tSTODL\tTHETA\t\t# X = ARCSIN(SIN) WITH SIGN(SIN)\n\t\t\tCOSTH\n\t\tBMN\n\t\t\tTRIG2\t\t# IF (135,-135)\n\n\t\tDLOAD\tRVQ\n\t\t\tTHETA\t\t# X = ARCSIN(SIN)   (-45,45)\n\nTRIG2\t\tDLOAD\tSIGN\t\t# (135,-135)\n\t\t\tHIDPHALF\n\t\t\tSINTH\n\t\tDSU\n\t\t\tTHETA\n\t\tSTORE\tTHETA\t\t# X = .5 WITH SIGN(SIN) - ARCSIN(SIN)\n\t\tRVQ\t\t\t#\t(+) - (+) OR (-) - (-)\n\n# Page 1252\n# SMNB, NBSM, AND AXISROT, WHICH USED TO APPEAR HERE, HAVE BEEN\n# COMBINED IN A ROUTINE CALLED AX*SR*T, WHICH APPEARS AMONG THE POWERED\n# FLIGHT SUBROUTINES.\n\n# Page 1253\n# CALCGA COMPUTES THE CDU DRIVING ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.\n#\n# THE INPUTS ARE  1) THE NAVIGATION BASE COORDINATES REFERRED TO ANY COORDINATE SYSTEM.  THE THREE HALF-UNIT\n# VECTORS ARE STORED AT XNB, YNB, AND ZNB.  2) THE DESIRED STABLE MEMBER COORDINATES REFERRED TO THE SAME\n# COORDINATE SYSTEM ARE STORED AT XSM, YSM, AND ZSM.\n#\n# THE OUTPUTS ARE THE THREE CDU DRIVING ANGLES AND ARE STORED SP AT THETAD, THETAD +1, AND THETAD +2.\n\nCALCGA\t\tSETPD\t\t\t# PUSHDOWN 00-05, 16D-21D, 34D-37D\n\t\t\t0\n\t\tVLOAD\tVXV\n\t\t\tXNB\t\t# XNB = OGA (OUTER GIMBAL AXIS)\n\t\t\tYSM\t\t# YSM = IGA (INNER GIMBAL AXIS)\n\t\tUNIT\tPUSH\t\t# PD0 = UNIT(OGA X IGA) = MGA\n\n\t\tDOT\tITA\n\t\t\tZNB\n\t\t\tS2\n\t\tSTOVL\tCOSTH\t\t# COS(OG) = MGA . ZNB\n\t\t\t0\n\t\tDOT\n\t\t\tYNB\n\t\tSTCALL\tSINTH\t\t# SIN(OG) = MGA . YNB\n\t\t\tARCTRIG\n\t\tSTOVL\tOGC\n\t\t\t0\n\n\t\tVXV\tDOT\t\t# PROVISION FOR MG ANGLE OF 90 DEGREES\n\t\t\tXNB\n\t\t\tYSM\n\t\tSL1\n\t\tSTOVL\tCOSTH\t\t# COS(MG) = IGA . (MGA X OGA)\n\t\t\tYSM\n\t\tDOT\n\t\t\tXNB\n\t\tSTCALL\tSINTH\t\t# SIN(MG) = IGA . OGA\n\t\t\tARCTRIG\n\t\tSTORE\tMGC\n\n\t\tABS\tDSU\n\t\t\t.166...\n\t\tBPL\n\t\t\tGIMLOCK1\t# IF ANGLE GREATER THAN 60 DEGREES\n\nCALCGA1\t\tVLOAD\tDOT\n\t\t\tZSM\n\t\t\t0\n\t\tSTOVL\tCOSTH\t\t# COS(IG) = ZSM . MGA\n\t\t\tXSM\n# Page 1254\n\t\tDOT\tSTADR\n\t\tSTCALL\tSINTH\t\t# SIN(IG) = XSM . MGA\n\t\t\tARCTRIG\n\n\t\tSTOVL\tIGC\n\t\t\tOGC\n\t\tRTB\n\t\t\tV1STO2S\n\t\tSTCALL\tTHETAD\n\t\t\tS2\n\nGIMLOCK1\tEXIT\n\t\tTC\tALARM\n\t\tOCT\t00401\n\t\tTC\tUPFLAG\t\t# GIMBAL LOCK HAS OCCURRED\n\t\tADRES\tGLOKFAIL\n\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tCALCGA1\n\n# Page 1255\n# AXISGEN COMPUTES THE COORDINATES OF ONE COORDINATE SYSTEM REFERRED TO ANOTHER COORDINATE SYSTEM.\n#\n# THE INPUTS ARE  1) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM A STORED AT STARAD.  2) THE STAR2 VECTOR\n# REFERRED TO COORDINATE SYSTEM A STORED AT STARAD +6.  3) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM B STORED\n# AT LOCATION 6 OF THE VAC AREA.  4) THE STAR2 VECTOR REFERRED TO COORDINATE SYSTEM B STORED AT LOCATION 12D OF\n# THE VAC AREA.\n#\n# THE OUTPUT DEFINES COORDINATE SYSTEM A REFERRED TO COORDINATE SYSTEM B.  THE THREE HALF-UNIT VECTORS ARE STORED\n# AT LOCATIONS XDC, XDC +6, XDC +12D, AND STARAD, STARAD +6, STARAD +12D.\n\nAXISGEN\t\tAXT,1\tSSP\t\t# PUSHDOWN 00-30D, 34D-37D\n\t\t\tSTARAD \t+6\n\t\t\tS1\n\t\t\tSTARAD \t-6\n\n\t\tSETPD\n\t\t\t0\nAXISGEN1\tVLOAD*\tVXV*\t\t# 06D\tUA = S1\n\t\t\tSTARAD \t+12D,1\t#\tSTARAD +00D\tUB = S1\n\t\t\tSTARAD \t+18D,1\n\t\tUNIT\t\t\t# 12D\tVA = UNIT(S1 X S2)\n\t\tSTORE\tSTARAD \t+18D,1\t#\tSTARAD +06D\tVB = UNIT(S1 X S2)\n\t\tVLOAD*\n\t\t\tSTARAD \t+12D,1\n\n\t\tVXV*\tVSL1\n\t\t\tSTARAD \t+18D,1\t# 18D\tWA = UA X VA\n\t\tSTORE\tSTARAD \t+24D,1\t#\tSTARAD +12D\tWB = UB X VB\n\n\t\tTIX,1\n\t\t\tAXISGEN1\n\n\t\tAXC,1\tSXA,1\n\t\t\t6\n\t\t\t30D\n\n\t\tAXT,1\tSSP\n\t\t\t18D\n\t\t\tS1\n\t\t\t6\n\n\t\tAXT,2\tSSP\n\t\t\t6\n\t\t\tS2\n\t\t\t2\n\nAXISGEN2\tXCHX,1\tVLOAD*\n\t\t\t30D\t\t# X1=-6 X2=+6\tX1=-6 X2=+4\tX1=-6 X2=+2\n\t\t\t0,1\n\n# Page 1256\n\t\tVXSC*\tPDVL*\t\t# J=(UA)(UB1)\tJ=(UA)(UB2)\tJ=(UA)(UB3)\n\t\t\tSTARAD \t+6,2\n\t\t\t6,1\n\t\tVXSC*\n\t\t\tSTARAD \t+12D,2\n\t\tSTOVL*\t24D\t\t# K=(VA)(VB1)\tJ=(VA)(VB2)\tJ=(VA)(VB3)\n\t\t\t12D,1\n\n\t\tVXSC*\tVAD\n\t\t\tSTARAD \t+18D,2\t# L=(WA)(WB1)\tJ=(WA)(WB2)\tJ=(WA)(WB3)\n\t\tVAD\tVSL1\n\t\t\t24D\n\t\tXCHX,1\tUNIT\n\t\t\t30D\n\t\tSTORE\tXDC \t+18D,1\t# XDC = L+J+K\tYDC = L+J+K\tZDC = L+J+K\n\n\t\tTIX,1\n\t\t\tAXISGEN3\n\nAXISGEN3\tTIX,2\n\t\t\tAXISGEN2\n\n\t\tVLOAD\n\t\t\tXDC\n\t\tSTOVL\tSTARAD\n\t\t\tYDC\n\t\tSTOVL\tSTARAD \t+6\n\t\t\tZDC\n\t\tSTORE\tSTARAD \t+12D\n\n\t\tRVQ\n\n# Page 1257\nQTSN45\t\t2DEC\t.1768\n\n.166...\t\t2DEC\t.1666666667\n\n# Page 1258 (empty page)\n\n"
  },
  {
    "path": "Luminary099/INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t0054-0060\n# Mod history:\t2009-05-14 OH\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 54\n\n# ***\tCHANNEL DESCRIPTIONSF WORDS ARE ALLOCATED IN ERASABLE ASSIGNMENTS ***\n\n#\tCHANNEL 1\tIDENTICAL TO COMPUTER REGISTER L (0001)\n\n#\tCHANNEL 2\tIDENTICAL TO COMPUTER REGISTER Q (0002)\n\n#\tCHANNEL 3\tHISCALAR; INPUT CHANNEL; MOST SIGNIFICANT 14 BITS FROM 33 STAGE BINARY COUNTER. SCALE\n#\t\t\tFACTOR IS B23 IN CSEC, SO MAX VALUE ABOUT 23.3 HOURS AND LEAST SIGNIFICANT BIT 5.12 SECS.\n\n#\tCHANNEL 4\tLOSCALAR; INPUT CHANNEL; NEXT MOST SIGNIFICANT 14 BITS FROM THE 33 STAGE BINARY COUNTER\n#\t\t\tASSOCIATED WITH CHANNEL 3. SCALE FACTOR IS B9 IN  CSEC. SO MAX VAL IS 5.12 SEC AND LEAST\n#\t\t\tSIGNIFICANT BIT IS 1/3200 SEC. SCALE FACTOR OF D.P. WORD WITH CHANNEL 3 IS B23 CSEC.\n\n#\tCHANNEL 5\tPYJETS; OUTPUT CHANNEL; PITCH RCS JET CONTROL.   (REACTION CONTROL SYSTEM) USES BITS 1-8.\n\n#\tCHANNEL 6\tROLLJETS; OUTPUT CHANNEL; ROLL RCS JET CONTROL.   (REACTION CONTROL SYSTEM) USES BIT 1-8.\n\n#\tCHANNEL 7\tSUPERBNK; OUTPUT CHANNEL; NOT RESET BY RESTART;   FIXED EXTENSION BITS USED TO SELECT THE\n#\t\t\tAPPROPRIATE FIXED MEMORY BANK IF FBANK IS 30 OCTAL OR MORE. USES BITS 5-7.\n\n#\tCHANNEL 10\tOUT0; OUTPUT CHANNEL; REGISTER USED TO TRANSMIT    LATCHING-RELAY DRIVING INFORMATION FOR\n#\t\t\tTHE DISPLAY SYSTEM.  BITS 15-12 ARE SET TO THE ROW NUMBER (1-14 OCTAL) OF THE RELAY TO BE\n#\t\t\tCHANGED AND BITS 11-1 CONTAIN THE REQUIRED SETTINGS FOR THE RELAYS IN THE ROW.\n\n#\tCHANNEL 11\tDSALMOUT; OUTPUT CHANNEL; REGISTER WHOSE BITS ARE USED FOR ENGINE ON-OFF CONTROL AND TO\n#\t\t\tDRIVE INDIVIDUAL INDICATORS OF THE DISPLAY SYSTEM. BITS 1-7 ARE A RELAYS.\n#\n#\t  BIT 1\t\tISS WARNING\n#\t  BIT 2\t\tLIGHT COMPUTER ACTIVITY LAMP\n#\t  BIT 3\t\tLIGHT UPLINK ACTIVITY LAMP\n#\t  BIT 4\t\tLIGHT TEMP CAUTION LAMP\n#\t  BIT 5\t\tLIGHT KEYBOARD RELEASE LAMP\n#\t  BIT 6\t\tFLASH VERB AND NOUN LAMPS\n#\t  BIT 7\t\tLIGHT OPERATOR ERROR LAMP\n# Page 55\n#\t  BIT 8\t\tSPARE\n#\t  BIT 9\t\tTEST CONNECTOR OUTBIT\n#\t  BIT 10\tCAUTION RESET\n#\t  BIT 11\tSPARE\n#\t  BIT 12\tSPARE\n#\t  BIT 13\tENGINE ON\n#\t  BIT 14\tENGINE OFF\n#\t  BIT 15\tSPARE\n\n#\tCHANNEL 12\tCHAN12; OUTPUT CHANNEL; BITS USED TO DRIVE NAVIGATION AND SPAECRAFT HARDWARE\n#\n#\t  BIT 1\t\tZERO RR CDU; CDU'S GIVE RRADAR INFORMATION FOR LM\n#\t  BIT 2\t\tENABLE CDU RADAR ERROR COUNTERS\n#\t  BIT 3\t\tNOT USED\n#\t  BIT 4\t\tCOARSE ALIGN ENABLE OF IMU\n#\t  BIT 5\t\tZERO IMU CDU'S\n#\t  BIT 6\t\tENABLE IMU ERROR COUNTER, CDU ERROR COUNTER.\n#\t  BIT 7\t\tSPARE\n#\t  BIT 8\t\tDISPLAY INERTIAL DATA\n#\t  BIT 9\t\t-PITCH GIMBAL TRIM (BELL MOTION) DESCENT ENGINE\n#\t  BIT 10\t+PITCH GIMBAL TRIM (BELL MOTION) DESCENT ENGINE\n#\t  BIT 11\t-ROLL  GIMBAL TRIM (BELL MOTION) DESCENT ENGINE\n#\t  BIT 12\t+ROLL  GIMBAL TRIM (BELL MOTION) DESCENT ENGINE\n#\t  BIT 13\tLR POSITION 2 COMMAND\n#\t  BIT 14\tENABLE RENDESVOUS RADAR LOCK-ON;AUTO ANGLE TRACK'G\n#\t  BIT 15\tISS TURN ON DELAY COMPLETE\n\n# Page 56\n#\tCHANNEL 13\tCHAN13; OUTPUT CHANNEL.\n#\n#\t  BIT 1\t\tRADAR C\t\tPROPER SETTING OF THE A,B,C MATRIX\n#\t  BIT 2\t\tRADAR B\t\tSELECTS CERTAIN RADAR\n#\t  BIT 3\t\tRADAR A\t\tPARAMETERS TO BE READ.\n#\t  BIT 4\t\tRADAR ACTIVITY\n#\t  BIT 5\t\tNOT USED (CONNECTS AN ALTERNATE INPUT TO UPLINK)\n#\t  BIT 6\t\tBLOCK INPUTS TO UPLINK CELL\n#\t  BIT 7\t\tDOWNLINK TELEMETRY WORD ORDER CODE BIT\n#\t  BIT 8\t\tRHC COUNTER ENABLE (READ HAND CONTROLLER ANGLES)\n#\t  BIT 9\t\tSTART RHC READ INTO COUNTERS IF BIT 8 SET\n#\t  BIT 10\tTEST ALARMS, TEST DSKY LIGHTS\n#\t  BIT 11\tENABLE STANDBY\n#\t  BIT 12\tRESET TRAP 31-A\t\tALWAYS APPEAR TO BE SET TO 0\n#\t  BIT 13\tRESET TRAP 31-B\t\tALWAYS APPEAR TO BE SET TO 0\n#\t  BIT 14\tRESET TRAP 32\t\tALWAYS APPEAR TO BE SET TO 0\n#\t  BIT 15\tENABLE T6 RUPT\n\n#\tCHANNEL 14\tCHAN14; OUTPUT CHANNEL; USED TO CONTROL COMPUTER  COUNTER CELLS (CDU,GYRO,SPACECRAFT FUNC.\n#\n#\t  BIT 1\t\tOUTLINK ACTIVITY (NOT USED)\n#\t  BIT 2\t\tALTITUDE RATE OR ALTITIDE SELECTOR\n#\t  BIT 3\t\tALTITUDE METER ACTIVITY\n#\t  BIT 4\t\tTHRUST DRIVE ACTIVITY FOR DESCENT ENGINE\n#\t  BIT 5\t\tSPARE\n#\t  BIT 6\t\tGYRO ENABLE POWER FOR PULSES\n#\t  BIT 7\t\tGYRO SELECT B\t\tPAIR OF BITS IDENTIFIES AXIS OF -\n#\t  BIT 8\t\tGYRO SELECT A\t\tGYRO SYSTEM TO BE TORQUED.\n#\t  BIT 9\t\tGYRO TORQUING COMMAND IN NEGATIVE DIRECTION\n# Page 57\n#\t  BIT 10\tGYRO ACTIVITY\n#\t  BIT 11\tDRIVE CDU S\n#\t  BIT 12\tDRIVE CDU T\n#\t  BIT 13\tDRIVE CDU Z\n#\t  BIT 14\tDRIVE CDU Y\n#\t  BIT 15\tDRIVE CDU X\n\n#\tCHANNEL 15\tMNKEYIN; INPUT CHANNEL;KEY CODE INPUT FROM KEYBOARD OF DSKY, SENSED BY PROGRAM WHEN\n#\t\t\tPROGRAM INTERRUPT #5 IS RECEIVED. USES BITS 5-1\n\n#\tCHANNEL 16\tNAVKEYIN; INPUT CHANNEL; OPTICS MARK INFORMATION AND NAVIGA ION PANEL DSKY (CM) OR THRUST\n#\t\t\tCONTROL (LM) SENSED BY PROGRAM WHEN PROGRAM INTER-RUPT #6 IS RECEIVED. USES BITS 3-7 ONLY.\n#\n#\t  BIT 1\t\tNOT ASSIGNED\n#\t  BIT 2\t\tNOT ASSIGNED\n#\t  BIT 3\t\tOPTICS X-AXIS MARK SIGNAL FOR ALIGN OPTICAL TSCOPE\n#\t  BIT 4\t\tOPTICS Y-AXIS MARK SIGNAL FOR AOT\n#\t  BIT 5\t\tOPTICS MARK REJECT SIGNAL\n#\t  BIT 6\t\tDESCENT+ ; CREW DESIRED SLOWING RATE OF DESCENT\n#\t  BIT 7\t\tDESCENT- ; CREW DESIRED SPEEDING UP RATE OF D'CENT\n\n# NOTE: ALL BITS IN CHANNELS 30-33 ARE INVERTED AS SENSED BY THE  PROGRAM, SO THAT A VALUE OF ZERO MEANS\n# THAT THE INDICATED SIGNAL IS PRESENT.\n\n#\tCHANNEL 30\tINPUT CHANNEL\n#\n#\t  BIT 1\t\tABORT WITH DESCENT STAGE\n#\t  BIT 2\t\t   UNUSED\n#\t  BIT 3\t\tENGINE ARMED SIGNAL\n#\t  BIT 4\t\tABORT WITH ASCENT ENGINE STAGE\n#\t  BIT 5\t\tAUTO THROTTLE; COMPUTER CONTROL OF DESCENT ENGINE\n# Page 58\n#\t  BIT 6\t\tDISPLAY INERTIAL DATA\n#\t  BIT 7\t\tRR CDU FAIL\n#\t  BIT 8\t\tSPARE\n#\t  BIT 9\t\tIMU OPERATE WITH NO MALFUNCTION\n#\t  BIT 10\tLM COMPUTER (NOT AGS) HAS CONTROL OF LM\n#\t  BIT 11\tIMU CAGE COMMAND TO DRIVE IMU GIMBAL ANGLES TO 0.\n#\t  BIT 12\tIMU CDU FAIL (MALFUNCTION OF IMU CDU,S)\n#\t  BIT 13\tIMU FAIL (MALFUNCTION OF IMU STABILIZATION LOOPS)\n#\t  BIT 14\tISS TURN ON REQUESTED\n#\t  BIT 15\tTEMPERATURE OF STABLE MEMBER WITHIN DESIGN LIMITS\n\n#\tCHANNEL 31\tINPUT CHANNEL; BITS ASSOCIATED WITH THE ATTITUDE  CONTROLLER, TRANSLATIONAL CONTROLLER,\n#\t\t\tAND SPACECRAFT ATTITUDE CONTROL; USED BY RCS DAP\n#\n#\t  BIT 1\t\tROTATION (BY RHC) COMMANDED IN POSITIVE PITCH DIRECTION; MUST BE IN MINIMUM IMPULSE MODE.\n#\t\t\tALSO POSITIVE ELEVATION CHANGE FOR LANDING POINT  DESIGNATOR\n#\t  BIT 2\t\tAS BIT 1 EXCEPT NEGATIVE PITCH AND ELEVATION\n#\t  BIT 3\t\tROTATION (BY RHC) COMMANDED IN POSITIVE YAW DIRECTION; MUST BE IN MINIMUM IMPULSE MODE.\n#\t  BIT 4\t\tAS BIT 3 EXCEPT NEGATIVE YAW\n#\t  BIT 5\t\tROTATION (BY RHC) COMMANDED IN POSITIVE ROLL DIRECTION; MUST BE IN MINIMUM IMPULSE MODE.\n#\t\t\tALSO POSITIVE AZIMUTH CHANGE FOR LANDING POINT DESIGNATOR\n#\t  BIT 6\t\tAS BIT 5 EXCEPT NEGATIVE ROLL AND AZIMUTH\n#\t  BIT 7\t\tTRANSLATION IN +X DIRECTION COMMANDED BY THC\n#\t  BIT 8\t\tTRANSLATION IN -X DIRECTION COMMANDED BY THC\n#\t  BIT 9\t\tTRANSLATION IN +Y DIRECTION COMMANDED BY THC\n#\t  BIT 10\tTRANSLATION IN -Y DIRECTION COMMANDED BY THC\n#\t  BIT 11\tTRANSLATION IN +Z DIRECTION COMMANDED BY THC\n#\t  BIT 12\tTRANSLATION IN -Z DIRECTION COMMANDED BY THC\n# Page 59\n#\t  BIT 13\tATTITUDE HOLD MODE ON SCS MODE CONTROL SWITCH\n#\t  BIT 14\tAUTO STABILIZATION OF ATTITUDE ON SCS MODE SWITCH\n#\t  BIT 15\tATTITUDE CONTROL OUT OF DETENT (RHC NOT IN NEUTRAL\n\n#\tCHANNEL 32\t   INPUT CHANNEL.\n#\n#\t  BIT 1\t\t   THRUSTERS 2 & 4 DISABLED BY CREW\n#\t  BIT 2\t\t   THRUSTERS 5 & 8 DISABLED BY CREW\n#\t  BIT 3\t\t   THRUSTERS 1 & 3 DISABLED BY CREW\n#\t  BIT 4\t\t   THRUSTERS 6 & 7 DISABLED BY CREW\n#\t  BIT 5\t\t   THRUSTERS 14 & 16 DISABLED BY CREW\n#\t  BIT 6\t\t   THRUSTERS 13 & 15 DISABLED BY CREW\n#\t  BIT 7\t\t   THRUSTERS 9 & 12 DISABLED BY CREW\n#\t  BIT 8\t\t   THRUSTERS 10 & 11 DISABLED BY CREW\n#\t  BIT 9\t\t   DESCENT ENGINE GIMBALS DISABLED BY CREW\n#\t  BIT 10\t   APPARENT DESCENT ENGINE GIMBAL FAILURE\n#\t  BIT 14\tINDICATES PROCEED KEY IS DEPRESSED\n\n#\tCHANNEL 33\tCHAN33; INPUT CHANNEL; FOR HARDWARE STATUS AND COMMAND INFORMATION. BITS 15-11 ARE FLIP-\n#\t\t\tFLOP BITS RESET BY A CHANNEL \"WRITE\" COMMAND THAT ARE RESET BY A RESTART & BY T4RUPT LOOP.\n#\n#\t  BIT 1\t\tSPARE\n#\t  BIT 2\t\tRR AUTO-POWER ON\n#\t  BIT 3\t\tRR RANGE LOW SCALE\n#\t  BIT 4\t\tRR DATA GOOD\n#\t  BIT 5\t\tLR RANGE DATA GOOD\n#\t  BIT 6\t\tLR POS1\n#\t  BIT 7\t\tLR POS2\n# Page 60\n#\t  BIT 8\t\tLR VEL DATA GOOD\n#\t  BIT 9\t\tLR RANGE LOW SCALE\n#\t  BIT 10\tBLOCK UPLINK INPUT\n#\t  BIT 11\tUPLINK TOO FAST\n#\t  BIT 12\tDOWNLINK TOO FAST\n#\t  BIT 13\tPIPA FAIL\n#\t  BIT 14\tWARNING OF REPEATED ALARMS: RESTART,COUNTER FAIL, VOLTAGE FAIL,AND SCALAR DOUBLE.\n#\t  BIT 15\tLGC OSCILLATOR STOPPED\n\n#\tCHANNEL 34\tDNT M1; OUTPUT CHANNEL; DOWNLINK 1  FIRST OF TWO WORDS SERIALIZATION.\n#\tCHANNEL 35\tDNT M2; OUTPUT CHANNEL DOWNLINK 2 SOCOND OF TWO   WORDS SERIALIZATION.\n\n"
  },
  {
    "path": "Luminary099/INTEGRATION_INITIALIZATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINTEGRATION_INITIALIZATION.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1205-1226\n# Mod history:\t2009-05-26 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1205\n# 1.0 INTRODUCTION\n# ----------------\n#\n# FROM A USER'S POINT OF VIEW, ORBITAL INTEGRATION IS ESSENTIALLY THE SAME AS THE 278 INTEGRATION\n# PROGRAM.  THE SAME ENTRANCES TO THE PROGRAM WILL BE MAINTAINED, THE SAME STALLING ROUTINE WILL BE USED AND\n# OUTPUT WILL STILL BE VIA THE PUSHLIST.  THE PRIMARY DIFFERENCES TO A USER INVOLVE THE ADDED CAPABILITY OF\n# TERMINATING INTEGRATION AT A SPECIFIC FINAL RADIUS AND THE DIFFERENCE IN STATE VECTOR SCALING INSIDE AND OUTSIDE\n# THE LUNAR SPHERE OF INFLUENCE.\n#\n# IN ORDER TO MAKE THE CSM(LEM)PREC AND CSM(LEM)CONIC ENTRANCES SIMILAR TO FLIGHT 278, THE INTEGRATION PROGRAM\n# WILL ITSELF SET THE FINAL RADIUS (RFINAL) TO 0 SO THAT REACHING THE DESIRED TIME ONLY WILL TERMINATE\n# INTEGRATION.  THE DP REGISTER RFINAL MUST BE SET BY USERS OF INTEGRVS AND INTEGRV, AND MUST BE DONE AFTER THE\n# CALL TC INTSTALL.\n#\n# WHEN THE LM IS ON THE LUNAR SURFACE (INDICATED BY LUNAR SURFACE FLAG SET) CALLS TO LEMCONIC, LEMPREC, AND\n# INTEGRV WITH VINFLAG = 0 WILL RESULT IN THE USE OF THE PLANETARY INERTIAL ORIENTATION SUBROUTINES TO PROVIDE\n# BOTH THE LM'S POSITION AND VELOCITY IN THE REFERENCE COORDINATE SYSTEM.\n# THE PROGRAM WILL PROVIDE OUTPUT AS IF INTEGRATION WAS USED.  THAT IS, THE PUSHLIST WILL BE SET AS NOTED BELOW AND\n# THE PERMANENT STATE VECTOR UPDATED WHEN SPECIFIED BY AN INTEGRV CALL.\n#\n# USERS OF INTEGRVS DESIRING INTEGRATION (INTYPFLG = 0) SHOULD NOTE THAT THE OBLATENESS PERTURBATION COMPUTATION\n# IN LUNAR ORBIT IS TIME DEPENDENT.  THEREFORE, THE USER SHOULD SUPPLY AN INITIAL STATE VECTOR VALID AT SOME REAL\n# TIME AND THE DESIRED TIME (TDEC1) ALSO AT SOME REAL TIME.  FOR CONIC \"INTEGRATION\" THE USER MAY STILL USE ZERO\n# AS THE INITIAL TIME AND DELTA TIME AS THE DESIRED TIME.\n#\n# 2.0 GENERAL DESCRIPTION\n# -----------------------\n#\n# THE INTEGRATION PROGRAM OPERATES AS A CLOSED INTERPRETIVE SUBROUTINE AND PERFORMS THESE FUNCTIONS --\n#\t1) INTEGRATES (PRECISION OR CONIC) EITHER CSM OR LM STATE VECTOR\n#\t2) INTEGRATES THE W-MATRIX\n#\t3) PERMANENT OR TEMPORARY UPDATE OF THE STATE VECTOR\n#\n# THERE ARE SIX ENTRANCES TO THE INTEGRATION PROGRAM.  FOUR OF THESE (CSMPREC, LEMPREC, CSMCONIC, LEMCONIC) SET\n# ALL THE FLAGS REQUIRED IN THE INTEGRATION PROGRAM ITSELF TO CAUSE THE PRECISION OR CONIC INTEGRATION (KEPLER) OF\n# THE LM OR CSM STATE VECTOR, AS THE NAMES SUGGEST.  ONE ENTRANCE (INTEGRVS) PERMITS THE CALLING PROGRAM TO\n# PROVIDE A STATE VECTOR TO BE INTEGRATED.  THE CALLING PROGRAM MUST SET THE FLAGS INDICATING (1) PRECISION OR\n# CONIC INTEGRATION, (2) IN OR OUT OF LUNAR SPHERE, (3) MIDCOURSE OR NOT, AND THE INTEGRATION PROGRAM COMPLETES\n# THE FLAG SETTING TO BYPASS W-MATRIX INTEGRATION.  THE LAST ENTRANCE (INTEGRV, USED IN GENERAL BY THE\n# NAVIGATION PROGRAMS) PERMITS THE CALLER TO SET FIVE FLAGS (NOT MOONFLAG OR MIDFLAG) BUT NOT TO INPUT A STATE\n# VECTOR.  ANY PROGRAM WHICH CALLS INTEGRVS OR INTEGRV MUST CALL INTSTALL BEFORE IT SETS THE INTEGRATION FLAGS\n# AND/OR STATE VECTOR.\n#\n# THREE SETS OF 42 REGISTERS AND 2 FLAGS ARE USED FOR THE STATE VECTORS.  TWO SETS, WHICH MAY NOT BE OVERLAYED, ARE\n# USED FOR THE PERMANENT STATE VECTORS FOR THE CSM AND LM.  THE THIRD SET, WHICH MAY BE OVERLAYED WHEN INTEGRATION\n# IS NOT BEING DONE, IS USED IN THE COMPUTATIONS.\n#\n# THE PERMANENT STATE VECTORS WILL BE PERIODICALLY UPDATED SO THAT THE VECTORS WILL NOT BE OLDER THAN 4 TIMESTEPS.\n# THE PERMANENT STATE VECTORS WILL ALSO BE UPDATED WHENEVER THE W-MATRIX IS INTEGRATED OR WHEN A CALLER OF INTEGRV\n# SETS STATEFLG (THE NAVIGATION PROGRAMS P20, P22.)\n#\n# Page 1206\n# APPENDIX B OF THE USERS' GUIDE LISTS THE STATE VECTOR QUANTITIES.\n#\n# 2.1 RESTARTS\n#\n# PHASE CHANGES WILL BE MADE IN THE INTEGRATION PROGRAM ONLY FOR THE INTEGRV ENTRANCE (I.E., WHEN THE W-MATRIX IS\n# INTEGRATED OR PERMANENT STATE VECTOR IS UPDATED.)  THE GROUP NUMBER USED WILL BE THAT FOR THE P20-25 PROGRAMS\n# (I.E., GROUP2) WINCE THE INTEGRV ENTRANCE WILL ONLY BE USED BY THESE PROGRAMS.  IF A RESTART OCCURS DURING AN\n# INTEGRATION OF THE STATE VECTOR ONLY, THE RECOVERY WILL BE TO THE LAST PHASE IN THE CALLING PROGRAM.  CALLING\n# PROGRAMS WHICH USE THE INTEGRV OR INTEGRVS ENTRANCE OF INTEGRATION WHOULD ENSURE THAT IF PHASE CHANGING IS DONE\n# THAT IT IS PRIOR TO SETTING THE INTEGRATION INPUTS IN THE PUSHLIST.\n# THIS IS BECAUSE THE PUSHLIST IS LOST DURING A RESTART.\n#\n# 2.2 SCALING\n#\n# THE INTEGRATION ROUTINE WILL MAINTAIN THE PERMANENT MEMORY STATE VECTORS IN THE SCALING AND UNITS DEFINED IN\n# APPENDIX B OF THE USERS GUIDE.  THE SCALING OF THE OUTPUT POSITION VECTOR DEPENDS ON THE ORIGIN OF THE COORDINATE\n# SYSTEM AT THE DESIRED INTEGRATION TIME.  THE COORDINATE SYSTEM TRANSFORMATION WILL BE DONE AUTOMATICALLY ON\n# MULTIPLE TIMESTEP ENCKE INTEGRATION ONLY.  THUS IT IS POSSIBLE TO HAVE OUTPUT FROM SUCCESSIVE INTEGRATIONS IN\n# DIFFERENT SCALING.\n# HOWEVER, RATT, VATT WILL ALWAYS BE SCALED THE SAME.\n#\n# 3.0 INPUT/OUTPUT\n# ----------------\n#\n# PROGRAM INPUTS ARE THE FLAGS DESCRIBED IN APPENDIX A AND THE PERMANENT STATE VECTOR QUANTITIES DESCRIBED IN\n# APPENDIX B OF THE USERS GUIDE, PLUS THE DESIRED TIME TO INTEGRATE TO IN TDEC1 (A PUSH LIST LOCATION).\n# FOR INTEGRVS, THE RCV,VCV,TET OR THE TEMPORARY STATE VECTOR MUST BE SET, PLUS MOONFLAG AND MIDFLAG\n#\n# FOR SIMULATION THE FOLLOWING QUANTITIES MUST BE PRESET ---\n#\t\t\t\t\t\t\t\t\t\tEARTH\tMOON\n#\t\t\t\t\t\t\t\t\t\t 29\t 27\n#\tRRECTCSM(LEM) \t\tRECTIFIED POSITION VECTOR\tMETERS\t\t2\t2\n#\n#\t\t\t\t\t\t\t\t\t\t 7\t 5\n#\tVRECTCSM(LEM)\t\tRECTIFIED VELOCITY VECTOR\tM/CSEC\t\t2\t2\n#\n#\t\t\t\t\t\t\t\t\t\t 28\t 28\n#\tTETCSM(LEM)\t\tTIME STATE VECTOR IS VALID\tCSEC\t\t2\t2\n#\t\t\t\tCUSTOMARILY 0, BUT NOTE LUNAR\n#\t\t\t\tORBIT DEPENDENCE ON REAL TIME.\n#\n#\t\t\t\t\t\t\t\t\t\t 22\t 18\n#\tDELTAVCSM(LEM)\t\tPOSITION DEVIATION\t\tMETERS\t\t2\t2\n#\t\t\t\t0 IF TCCSM(LEM) = 0\n#\n#\t\t\t\t\t\t\t\t\t\t 3\t -1\n#\tNUVCSM(LEM)\t\tVELOCITY DEVIATION\t\tM/CSEC\t\t2\t2\n#\t\t\t\t0 IF TCCSM(LEM) = 0\n# Page 1207\n#\t\t\t\t\t\t\t\t\t\t 29\t 27\n#\tRCVSM(LEM)\t\tCONIC POSITION\t\t\tMETERS\t\t2\t2\n#\t\t\t\tEQUALS RRECTCSM(LEM) IF\n#\t\t\t\tTCCSM(LEM) = 0\n#\n#\t\t\t\t\t\t\t\t\t\t 7\t 5\n#\tVCVCSM(LEM)\t\tCONIC VELOCITY\t\t\tM/CSEC\t\t2\t2\n#\t\t\t\tEQUALS VRECTCSM(LEM) IF\n#\t\t\t\tTCCSM(LEM) = 0\n#\n#\t\t\t\t\t\t\t\t\t\t 28\t 28\n#\tTCCSM(LEM)\t\tTIME SINCE RECTIFICATION\tCSECS\t\t2\t2\n#\t\t\t\tCUSTOMARILY 0\n#\n#\t\t\t\t\t\t\t\t 1/2\t\t 17\t 16\n#\tXKEPCSM(LEM)\t\tROOT OF KEPLER'S EQUATION\tM\t\t2\t2\n#\t\t\t\t0 IF TCCSM(LEM) = 0\n#\n#\tCMOONFLG\t\tPERMANENT FLAGS CORRESPONDING\t\t\t0\t0\n#\tCMIDFLAG\t\tTO MOONFLAG AND MIDFLAG\t\t\t\t0,1\t0,1\n#\tLMOONFLG\t\tC = CSM, L = LM\t\t\t\t\t0\t0\n#\tLMIDFLG\t\t\t\t\t\t\t\t\t0,1\t0,1\n#\n#\tSURFFLAG\t\tLUNAR SURFACE FLAG\t\t\t\t0,1\t0,1\n#\n# IN ADDITION, IF (L)CMIDFLAG IS SET, THE INITIAL INPUT VALUES FOR LUNAR\n# SOLAR EPHEMERIDES SUBROUTINE AND PLANETARY INERTIAL ORIENTATION SUB-\n# ROUTINE MUST BE PRESET.\n#\n# OUTPUT\n#\tAFTER EVERY CALL TO INTEGRATION\n#\t\t\t\t\t\t\t\t\tEARTH\tMOON\n#\t\t\t\t\t\t\t\t\t 29\t 29\n#\t0D\tRATT\tPOSITION\t\t\tMETERS\t\t2\t2\n#\n#\t\t\t\t\t\t\t\t\t 7\t 7\n#\t6D\tVATT\tVELOCITY\t\t\tM/CSEC\t\t2\t2\n#\n#\t\t\t\t\t\t\t\t\t 28\t 28\n#\t12D\tTAT\tTIME\t\t\t\t\t\t2\t2\n#\n#\t\t\t\t\t\t\t\t\t 29\t 27\n#\t14D\tRATT1\tPOSITION\t\t\tMETERS\t\t2\t2\n#\n#\t\t\t\t\t\t\t\t\t 7 \t 5\n#\t20D\tVATT1\tVELOCITY\t\t\tM/CSEC\t\t2\t2\n#\n#\t\t\t\t\t\t \t 3   2\t\t 36\t 30\n#\t26D\tMU(P)\tMU\t\t\t\tM /CS\t\t2\t2\n#\n#\tX1\t\tMUTABLE ENTRY\t\t\t\t\t-2\t-10D\n#\n#\tX2\t\tCOORDINT\n#\tX2\t\tCOORDINATE SYSTEM ORIGIN\t\t\t0\t2\n#\t\t\t(THIS, NOT MOONFLAG, SHOULD BE\n# Page 1208\n#\t\t\tUSED TO DETERMINE ORIGIN.)\n#\n# IN ADDITION TO THE ABOVE, THE PERMANENT STATE VECTOR IS UPDATED WHENEVER\n# STATEFLG WAS SET AND WHENEVER A W-MATRIX IS TO BE INTEGRATED.  THE PUSH\n# COUNTER IS SET TO 0 AND OVERFLOW IS CLEARED BEFORE RETURNING TO THE\n# CALLING PROGRAM.\n#\n# 4.0 CALLING SEQUENCES AND SAMPLE CODE\n# -------------------------------------\n#\n#\tA) PRECISION ORBITAL INTEGRATION.  CSMPREC, LEMPREC ENTRANCES\n#\t\tL-X\tSTORE TIME TO 96T5791T5 T 95 PUS L9ST (T4531)\n#\t\tL\tCALL\n#\t\tL+1\t\tCSMPREC (OR LEMPREC)\n#\t\tL+2\tRETURN\n#\t   INPUT\t\t\t\t\t\t\t   28\n#\t\tTDEC1 (PD 32D) TIME TO INTEGRATE TO...CENTISECONDS SCALED 2\n#\t   OUTPUT\n#\t\tTHE DATA LISTED IN SECTION 3.0 PLUS\n#\t\tRQVV\tPOSITION VECTOR OF VEHICLE WITH RESPECT TO SECONDARY\n#\t\tBODY... METERS B-29 ONLY IF MIDFLAG = DIM0FLAG = 1\n#\tB) CONIC INTEGRATION.  CSMCONIC, LEMCONIC ENTRANCES\n#\t\tL-X\tSTORE TIME IN PUSH LIST (TDEC1)\n#\t\tL\tCALL\n#\t\tL+1\t\tCSMCONIC (OR LEMCONIC)\n#\t   INPUT/OUTPUT\n#\t\tSAME AS PRECISION INTEGRATION, EXCEPT RQVV NOT SET\n#\tC) INTEGRATE GIVEN STATE VECTOR.  INTEGRVS ENTRANCE\n#\t\tCALL\n#\t\t\t\tINTSTALL\n#\t\tVLOAD\n#\t\t\t\tPOSITION VECTOR\n#\t\tSTOVL\t\tRCV\n#\t\t\t\tVELOCITY VECTOR\n#\t\tSTODL\t\tVCV\n#\t\t\t\tTIME STATE VECTOR VALID\n#\t\tSTODL\t\tTET\n#\t\t\t\tFINAL RADIUS\n#\t\tSTORE\t\tRFINAL\n#\t\tSET(CLEAR)\tSET(CLEAR)\n#\t\t\t\tINTYPFLAG\n#\t\t\t\tMOONFLAG\n#\t\tSET(CLEAR)\tDLOAD\n#\t\t\t\tDESIRED TIME\n#\t\tSTCALL\t\tTDEC1\n#\t\t\t\tINTEGRVS\n#\t  INPUT\n#\t\tRCV\tPOSITION VECTOR\t\t\tMETERS\n#\t\tVCV\tVELOCITY VECTOR\t\t\tM/CSEC\n#\t\tTET\tTIME OF STATE VECTOR (MAY = 0)\tCSEC B-28\n# Page 1209\n#\t\tTDEC1\tTIME TO INTEGRATE TO\t\tCSEC B-28 (PD 32D)\n#\t\t\t(MAY BE INCREMENT IF TET=0)\n#\t  OUTPUT\n#\t\tSAME AS FOR PRECISION OR CONIC INTEGRATION,\n#\t\tDEPENDING ON INTYPFLG.\n#\tD) INTEGRATE STATE VECTOR.  INTGRV ENTRANCE\n#\t\tL-X\tSTORE TIME IN PUSH LIST (TDEC1) (MAY BE DONE AFTER CALL TO INTSTALL)\n#\t\tL-8\tCALL\n#\t\tL-7\n#\t\tL-6\tSET(CLEAR)\tSET(CLEAR)\n#\t\tL-5\t\t\tVINTFLAG\t1=CSM, 0=LM\n#\t\tL-4\t\t\tINTYPFLAG\t1=CONIC, 0=PRECISION\n#\t\tL-3\tSET(CLEAR)\tSET(CLEAR)\n#\t\tL-2\t\t\tDIM0FLAG\t1=W-MATRIX, 0=NO W-MATRIX\n#\t\tL-1\t\t\tD6OR9FLG\t1=9X9, 0=6X6\n#\t\tL\tSET\t\tDLOAD\n#\t\tL+1\t\t\tSTATEFLG\tDESIRE PERMANENT UPDATE\n#\t\tL+2\t\t\tFINAL RAD.\tOF STATE VECTOR\n#\t\tL+3\tSTCALL\t\tRFINAL\n#\t\tL+4\t\t\tINTEGRV\n#\t\tL\tCALL\t\t\t\tNORMAL USE -- WILL UPDATE STATE\n#\t\tL+1\t\t\tINTEGRV\t\tVECTOR IF DIM0FLAG=1. (STATEFLG IS\n#\t\tL+2\tRETURN\t\t\t\tALWAYS RESET IN INTEGRATION AFTER\n#\t\t\t\t\t\t\tIT USED.)\n#\t  INPUT\n#\t\tTDEC1 (PD 32D) TIME TO INTEGRATE TO \tCSEC B-28\n#\t  OUTPUT\n#\t\tSAME AS FOR PRECISION OR CONIC INTEGRATION\n#\t  THE PROGRAM WILL SET MOONFLAG, MIDFLAG DEPENDING ON\n#\t  THE PERMANENT STATE VECTOR REPRESENTATION.\n\n\t\tBANK\t11\n\t\tSETLOC\tINTINIT\n\t\tBANK\n\t\tEBANK=\tRRECTCSM\n\t\tCOUNT*\t$$/INTIN\nSTATEINT\tTC\tPHASCHNG\n\t\tOCT\t00052\n\t\tCAF\tPRIO5\n\t\tTC\tFINDVAC\n\t\tEBANK=\tRRECTCSM\n\t\t2CADR\tSTATINT1\n\n\t\tTC\tTASKOVER\nSTATINT1\tTC\tINTPRET\n\t\tBON\tRTB\n\t\t\tQUITFLAG\t# KILL INTEGRATION UNTIL NEXT P00.\n\t\t\tNOINT\n\t\t\tLOADTIME\n\t\tSTORE\tTDEC1\n# Page 1210\n\t\tCALL\n\t\t\tINTSTALL\n\t\tSET\tCALL\n\t\t\tNODOFLAG\n\t\t\tSETIFLGS\n\t\tGOTO\n\t\t\tSTATEUP\n600SECS\t\t2DEC\t60000\n\nENDINT\t\tCLEAR\tEXIT\n\t\t\tSTATEFLG\n\t\tTC\tPHASCHNG\n\t\tOCT\t20032\n\t\tEXTEND\n\t\tDCA\t600SECS\n\t\tTC\tLONGCALL\n\t\tEBANK=\tRRECTHIS\n\t\t2CADR\tSTATEINT\n\n\t\tTC\tENDOFJOB\nSETIFLGS\tSET\tCLEAR\n\t\t\tSTATEFLG\n\t\t\tINTYPFLG\n\t\tCLEAR\tCLEAR\n\t\t\tDIM0FLAG\n\t\t\tD6OR9FLG\n\t\tRVQ\nNOINT\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t00002\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tQUITFLAG\n\t\tTC\tENDOFJOB\n\n# ATOPCSM TRANSFERS RRECT TO RRECT +41 TO RRECTCSM TO RRECTCSM +41\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tATOPCSM\n#\n# NORMAL EXIT AT L+2\n\nATOPCSM\t\tSTQ\tRTB\n\t\t\tS2\n\t\t\tMOVEACSM\n\t\tSET\tCALL\n\t\t\tCMOONFLG\n\t\t\tSVDWN1\n\t\tBON\tCLRGO\n# Page 1211\n\t\t\tMOONFLAG\n\t\t\tS2\n\t\t\tCMOONFLG\n\t\t\tS2\nMOVEACSM\tTC\tSETBANK\n\t\tTS\tDIFEQCNT\t# INITIALIZE INDEX\n\t\tINDEX\tDIFEQCNT\n\t\tCA\tRRECT\n\t\tINDEX\tDIFEQCNT\n\t\tTS\tRRECTCSM\n\t\tCCS\tDIFEQCNT\t# IS TRANSFER COMPLETE\n\t\tTCF\tMOVEACSM +1\t# NO-LOOP\n\t\tTC\tDANZIG\t\t# COMPLETE -- RETURN\n\n# PTOACSM TRANSFERS RRECTCSM TO RRECTCSM +41 TO RRECT TO RRECT +41\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\t\t\tPTOACSM\n#\n# NORMAL EXIT AT L+2\n\nPTOACSM\t\tRTB\tBON\n\t\t\tMOVEPCSM\n\t\t\tCMOONFLG\n\t\t\tSETMOON\nCLRMOON\t\tCLEAR\tSSP\n\t\t\tMOONFLAG\n\t\t\tPBODY\n\t\t\t0\n\t\tRVQ\nSETMOON\t\tSET\tSSP\n\t\t\tMOONFLAG\n\t\t\tPBODY\n\t\t\t2\n\t\tRVQ\nMOVEPCSM\tTC\tSETBANK\n\t\tTS\tDIFEQCNT\n\t\tINDEX\tDIFEQCNT\n\t\tCA\tRRECTCSM\n\t\tINDEX\tDIFEQCNT\n\t\tTS\tRRECT\n\t\tCCS\tDIFEQCNT\n\t\tTCF\tMOVEPCSM +1\n\t\tTC\tDANZIG\n\n# ATOPLEM TRANSFERS RRECT TO RRECT +41 TO RRECTLEM TO RRECTLEM +41\nATOPLEM\t\tSTQ\tRTB\n# Page 1212\n\t\t\tS2\n\t\t\tMOVEALEM\n\t\tSET\tCALL\n\t\t\tLMOONFLG\n\t\t\tSVDWN2\n\t\tBON\tCLRGO\n\t\t\tMOONFLAG\n\t\t\tS2\n\t\t\tLMOONFLG\n\t\t\tS2\nMOVEALEM\tTC\tSETBANK\n\t\tTS\tDIFEQCNT\n\t\tINDEX\tDIFEQCNT\n\t\tCA\tRRECT\n\t\tINDEX\tDIFEQCNT\n\t\tTS\tRRECTLEM\n\t\tCCS\tDIFEQCNT\n\t\tTCF\tMOVEALEM +1\n\t\tTC\tDANZIG\n\n# PTOALEM TRANSFERS RRECTLEM TO RRECTLEM +41 TO RRECT TO RRECT +41\n\nPTOALEM\t\tBON\tRTB\n\t\t\tSURFFLAG\n\t\t\tUSEPIOS\n\t\t\tMOVEPLEM\n\t\tBON\tGOTO\n\t\t\tLMOONFLG\n\t\t\tSETMOON\n\t\t\tCLRMOON\nMOVEPLEM\tTC\tSETBANK\n\t\tTS\tDIFEQCNT\n\t\tINDEX\tDIFEQCNT\n\t\tCA\tRRECTLEM\n\t\tINDEX\tDIFEQCNT\n\t\tTS\tRRECT\n\t\tCCS\tDIFEQCNT\n\t\tTCF\tMOVEPLEM +1\n\t\tTC\tDANZIG\n\nUSEPIOS\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tRLS\n\t\tPDDL\tPUSH\n\t\t\tTDEC1\n\t\tSTODL\tTET\n\t\t\t5/8\n\t\tCALL\n# Page 1213\n\t\t\tRP-TO-R\n\t\tSTOVL\tRCV\n\t\t\tZUNIT\n\t\tSTODL\t0D\n\t\t\tTET\n\t\tSTODL\t6D\n\t\t\t5/8\n\t\tSET\tCALL\t\t# NEEDED FOR SETTING X1 ON EXIT\n\t\t\tMOONFLAG\n\t\t\tRP-TO-R\n\t\tVXV\tVXSC\n\t\t\tRCV\n\t\t\tOMEGMOON\n\t\tSTOVL\tVCV\n\t\t\tZEROVEC\n\t\tSTORE\tTDELTAV\n\t\tAXT,2\tSXA,2\n\t\t\t2\n\t\t\tPBODY\n\t\tSTCALL\tTNUV\n\t\t\tA-PCHK\nSETBANK\t\tCAF\tINTBANK\n\t\tTS\tBBANK\n\t\tCAF\tFORTYONE\n\t\tTC\tQ\n\t\tEBANK=\tRRECTCSM\nINTBANK\t\tBBCON\tINTEGRV\n\n# SPECIAL PURPOSE ENTRIES TO ORBITAL INTEGRATION.  THESE ROUTINES PROVIDE ENTRANCES TO INTEGRATION WITH\n# APPROPRIATE SWITCHES SET OR CLEARED FOR THE DESIRED INTEGRATION.\n#\n# CSMPREC AND LEMPREC PERFORM ORBIT INTEGRATION BY THE ENCKE METHOD TO THE TIME INDICATED IN TDEC1.\n# ACCELERATIONS DUE TO OBLATENESS ARE INCLUDED.  NO W-MATRIX INT. IS DONE.\n# THE PERMANENT STATE VECTOR IS NOT UPDATED.\n#\n# CSMCONIC AND LEMCONIC PERFORM ORBIT INTEG. BY KEPLER'S METHOD TO THE TIME INDICATED IN TDEC1.\n# NO DISTURBING ACCELERATIONS ARE INCLUDED.  IN THE PROGRAM FLOW THE GIVEN\n# STATE VECTOR IS RECTIFIED BEFORE SOLUTION OF KEPLER'S EQUATION.\n#\n# THE ROUTINES ASSUME THAT THE CSM (LEM) STATE VECTOR IN P-MEM IS VALID.\n# SWITCHES SET PRIOR TO ENTRY TO THE MAIN INTEG. PROG ARE AS FOLLOWS:\n#\t\t\tCSMPREC\t\tCSMCONIC\tLEMPREC\t\tLEMCONIC\n#\tVINTFLAG\tSET\t\tSET\t\tCLEAR\t\tCLEAR\n#\tINTYPFLG\tCLEAR\t\tSET\t\tCLEAR\t\tSET\n#\tDIM0FLAG\tCLEAR\t\tCLEAR\t\tCLEAR\t\tCLEAR\n#\n# CALLING SEQUENCE\n#\tL-X\tSTORE\tTDEC1\n#\tL\tCALL\t\t\t(STCALL TDEC1)\n# Page 1214\n#\tL+1\t\tCSMPREC\t\t(CSMCONIC, LEMPREC, LEMCONIC)\n#\n# NORMAL EXIT TO L+2\n#\n# SUBROUTINES CALLED\n#\tINTEGRV1\n#\tPRECOUT FOR CSMPREC AND LEMPREC\n#\tCONICOUT FOR CSMCONIC AND LEMCONIC\n#\n# OUTPUT -- SEE PAGE 2 OF THIS LOG SECTION\n#\n# INPUT\n#\tTDEC1\t\tTIME TO INTEGRATE TO.  CSECS B-28\n\nCSMPREC\t\tSTQ\tCALL\n\t\t\tX1\n\t\t\tINTSTALL\n\t\tSXA,1\tSET\n\t\t\tIRETURN\n\t\t\tVINTFLAG\n\nIFLAGP\t\tSET\tCLEAR\n\t\t\tPRECIFLG\n\t\t\tDIM0FLAG\n\t\tCLRGO\n\t\t\tINTYPFLG\n\t\t\tINTEGRV1\nLEMPREC\t\tSTQ\tCALL\n\t\t\tX1\n\t\t\tINTSTALL\n\t\tSXA,1\tCLRGO\n\t\t\tIRETURN\n\t\t\tVINTFLAG\n\t\t\tIFLAGP\n\nCSMCONIC\tSTQ\tCALL\n\t\t\tX1\n\t\t\tINTSTALL\n\t\tSXA,1\tSET\n\t\t\tIRETURN\n\t\t\tVINTFLAG\nIFLAGC\t\tCLEAR\tSETGO\n\t\t\tDIM0FLAG\n\t\t\tINTYPFLG\n\t\t\tINTEGRV1\nLEMCONIC\tSTQ\tCALL\n\t\t\tX1\n\t\t\tINTSTALL\n\t\tSXA,1\tCLRGO\n\t\t\tIRETURN\n# Page 1215\n\t\t\tVINTFLAG\n\t\t\tIFLAGC\n\nINTEGRVS\tSET\tSSP\n\t\t\tPRECIFLG\n\t\t\tPBODY\n\t\t\t0\n\t\tBOF\tSSP\n\t\t\tMOONFLAG\n\t\t\t+3\n\t\t\tPBODY\n\t\t\t2\n\t\tSTQ\tVLOAD\n\t\t\tIRETURN\n\t\t\tZEROVEC\n\t\tSTORE\tTDELTAV\n\t\tSTCALL\tTNUV\n\t\t\tRECTIFY\n\t\tCLEAR\tSET\n\t\t\tDIM0FLAG\n\t\t\tNEWIFLG\n\t\tSETGO\n\t\t\tRPQFLAG\n\t\t\tALOADED\n\n# INTEGRV IS AN ENTRY TO ORBIT INTEGRATION WHICH PERMITS THE CALLER,\n# NORMALLY THE NAVIGATION PROGRAM, TO SET THE INTEG. FLAGS.  THE ROUTINE\n# IS ENTERED AT INTEGRV1 BY CSMPREC ET AL. AND AT ALOADED BY INTEGRVS.\n# THE ROUTINE SETS UP A-MEMORY IF ENTERED AT INTEGRV,1 AND SETS THE INTEG.\n# PROGRAM FOR PRECISION OR CONIC.\n#\n# THE CALLER MUST FIRST CALL INTSTALL TO CHECK IF INTEG. IS IN USE BEFORE\n# SETTING ANY FLAGS.\n#\n# THE FLAGS WHICH SHOULD BE SET OR CLEARED ARE\n#\tVINTFLAG\t(IGNORED WHEN ENTERED FROM INTEGRVS)\n#\tINTYPFLG\n#\tDIM0FLAG\n#\tD6OR9FLG\n#\n# CALLING SEQUENCE\n#\tL-X\tCALL\n#\tL-Y\t\tINTSTALL\n#\tL-1\tSET OR CLEAR ALL FOUR FLAGS.  ALSO CAN SET STATEFLG IF DESIRED\n#\t\tAND DIM0FLAG IS CLEAR.\n#\tL\tCALL\n#\tL+1\t\tINTEGRV\n#\n# INITIALIZATION\n#\tFLAGS AS ABOVE\n#\tSTORE TIME TO INTEGRATE TO IN TDEC1\n#\n# OUTPUT\n#\tRATT\tAS\n#\tVATT\t      DEFINED\n# Page 1216\n#\tTAT\t\t\tBEFORE\n\nINTEGRV\t\tSTQ\n\t\t\tIRETURN\nINTEGRV1\tSET\tSET\n\t\t\tRPQFLAG\n\t\t\tNEWIFLG\nINTEGRV2\tSSP\n\t\t\tQPRET\n\t\t\tALOADED\n\t\tBON\tGOTO\n\t\t\tVINTFLAG\n\t\t\tPTOACSM\n\t\t\tPTOALEM\nALOADED\t\tDLOAD\n\t\t\tTDEC1\n\t\tSTORE\tTDEC\n\t\tBOFF\tGOTO\n\t\t\tINTYPFLG\n\t\t\tTESTLOOP\n\t\t\tRVCON\nA-PCHK\t\tBOF\tEXIT\n\t\t\tSTATEFLG\n\t\t\tRECTOUT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tUPFLAG\t\t# PHASE CHANGE HAS OCCURRED BETWEEN\n\t\tADRES\tREINTFLG\t# INTSTALL AND INTWAKE\n\t\tTC\tINTPRET\n\t\tSSP\n\t\t\tQPRET\n\t\t\tPHEXIT\n\t\tBON\tGOTO\n\t\t\tVINTFLAG\n\t\t\tATOPCSM\n\t\t\tATOPLEM\nPHEXIT\t\tCALL\n\t\t\tGRP2PC\nRECTOUT\t\tSETPD\tCALL\n\t\t\t0\n\t\t\tRECTIFY\n\t\tVLOAD\tVSL*\n\t\t\tRRECT\n\t\t\t0,2\n\t\tPDVL\tVSL*\t\t# RATT TO PD0\n\t\t\tVRECT\n\t\t\t0,2\n\t\tPDDL\tPDVL\t\t# VATT TO PD6\tTAT TO PD12\n\t\t\tTET\n# Page 1217\n\t\t\tRRECT\n\t\tPDVL\tPDDL*\n\t\t\tVRECT\n\t\t\tMUEARTH,2\n\t\tPUSH\tAXT,1\n\t\tDEC\t-10\n\t\tBON\tAXT,1\n\t\t\tMOONFLAG\n\t\t\t+2\n\t\tDEC\t-2\nINTEXIT\t\tSETPD\tBOV\n\t\t\t0\n\t\t\t+1\n\t\tCLEAR\tCLEAR\n\t\t\tAVEMIDSW\t# ALLOW UPDATE OF DOWNLINK STATE VECTOR\n\t\t\tPRECIFLG\n\t\tCLEAR\n\t\t\tSTATEFLG\n\t\tSLOAD\tEXIT\n\t\t\tIRETURN\n\t\tCA\tMPAC\n\t\tINDEX\tFIXLOC\n\t\tTS\tQPRET\n\t\tTC\tINTWAKE\n\n# RVCON SETS UP ORBIT INTEGRATION TO DO A CONIC SOLUTION FOR POSITION AND\n# VELOCITY FOR THE INTERVAL (TET-TDEC)\n\nRVCON\t\tDLOAD\tDSU\n\t\t\tTDEC\n\t\t\tTET\n\t\tSTCALL\tTAU.\n\t\t\tRECTIFY\n\t\tCALL\n\t\t\tKEPPREP\n\t\tDLOAD\tDAD\n\t\t\tTC\n\t\t\tTET\n\t\tSTCALL\tTET\n\t\t\tRECTOUT\n\n# Page 1218\nTESTLOOP\tBOF\tCLRGO\n\t\t\tQUITFLAG\n\t\t\t+3\n\t\t\tSTATEFLG\n\t\t\tINTEXIT\t\t# STOP INTEGRATION\n +3\t\tSETPD\tLXA,2\n\t\t\t10D\n\t\t\tPBODY\n\t\tVLOAD\tABVAL\n\t\t\tRCV\n\t\tPUSH\tCLEAR\t\t# RC TO 10D\n\t\t\tMIDFLAG\n\t\tDSU*\tBMN\t\t# MIDFLAG=0 IF R G.T. RMP\n\t\t\tRME,2\n\t\t\t+3\n\t\tSET\n\t\t\tMIDFLAG\nNORFINAL\tDLOAD\tDMP\n\t\t\t10D\n\t\t\t34D\n\t\tSR1R\tDDV*\n\t\t\tMUEARTH,2\n\t\tSQRT\tDMP\n\t\t\t.3D\n\t\tSR3\tSR4\t\t# DT IS TRUNCATED TO A MULTIPLE\n\t\tDLOAD\tSL\n\t\t\tMPAC\n\t\t\t15D\t\t#\tOF 128 CSECS.\n\t\tPUSH\tBOV\n\t\t\tMAXDT\n\t\tBDSU\tBMN\n\t\t\tDT/2MAX\n\t\t\tMAXDT\nDT/2COMP\tDLOAD\tDSU\n\t\t\tTDEC\n\t\t\tTET\n\t\tRTB\tSL\n\t\t\tSGNAGREE\n\t\t\t8D\n\t\tSTORE\tDT/2\t\t# B-19\n\t\tBOV\tABS\n\t\t\tGETMAXDT\n\t\tDSU\tBMN\t\t# IS TIME TO INTEG. TO GR THAN MAXTIME\n\t\t\t12D\n\t\t\tPOOHCHK\nUSEMAXDT\tDLOAD\tSIGN\n\t\t\t12D\n\t\t\tDT/2\n# Page 1219\n\t\tSTCALL\tDT/2\n\t\t\tPOOHCHK\nMAXDT\t\tDLOAD\tPDDL\t\t# EXCHANGE DT/2MAX WITH COMPUTED MAX.\n\t\t\tDT/2MAX\n\t\tGOTO\n\t\t\tDT/2COMP\nGETMAXDT\tRTB\n\t\t\tSIGNMPAC\n\t\tSTCALL\tDT/2\n\t\t\tUSEMAXDT\nPOOHCHK\t\tDLOAD\tABS\n\t\t\tDT/2\n\t\tDSU\tBMN\n\t\t\tDT/2MIN\n\t\t\tA-PCHK\n\t\tSLOAD\tBHIZ\n\t\t\tMODREG\n\t\t\t+3\n\t\tGOTO\n\t\t\tTIMESTEP\n\t\tBON\t\t\t# WAS THIS CALL VIA CSM(LEM)PREC\n\t\t\tPRECIFLG\n\t\t\tTIMESTEP\t# YES\n\t\tDLOAD\tDSU\n\t\t\tDT/2\n\t\t\t12D\n\t\tBMN\tBOFCLR\n\t\t\tA-PCHK\n\t\t\tNEWIFLG\n\t\t\tTIMESTEP\n\t\tDLOAD\tDSU\n\t\t\tTDEC\n\t\t\tTET\n\t\tBMN\t\t\t# NO BACKWARD INTEGRATION\n\t\t\tINTEXIT\n\t\tPDDL\tSR4\n\t\t\tDT/2\t\t# IS 4(DT) LS (TDEC - TET)\n\t\tSR2R\tBDSU\n\t\tBMN\tGOTO\n\t\t\tINTEXIT\n\t\t\tTIMESTEP\nDT/2MIN\t\t2DEC\t3 B-20\n\nDT/2MAX\t\t2DEC\t4000 E2 B-20\n\nINTSTALL\tEXIT\n\t\tCA\tRASFLAG\n\t\tMASK\tINTBITAB\t# IS THIS STALL AREA FREE\n\t\tEXTEND\n\t\tBZF\tOKTOGRAB\t# YES\n# Page 1220\n\t\tCAF\tWAKESTAL\n\t\tTC\tJOBSLEEP\nINTWAKE0\tEXIT\n\t\tTCF\tINTWAKE1\n\nINTWAKE\t\tCS\tRASFLAG\t\t# IS THIS INTSTALLED ROUTINE TO BE\n\t\tMASK\tREINTBIT\t#\tRESTARTED\n\t\tCCS\tA\n\t\tTC\tINTWAKE1\t# NO\n\n\t\tINDEX\tFIXLOC\n\t\tCA\tQPRET\n\t\tTS\tTBASE2\t\t# YES, DON'T RESTART WITH SOMEONE ELSE'S Q\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\n\t\tCA\tTBASE2\n\t\tINDEX\tFIXLOC\n\t\tTS\tQPRET\n\n\t\tCAF\tREINTBIT\n\t\tMASK\tRASFLAG\n\t\tEXTEND\n\t\tBZF\tGOBAC\t\t# DON'T INTWAKE IF WE CAME HERE VIA RESTART\n\nINTWAKE1\tCAF\tWAKESTAL\n\t\tINHINT\n\t\tTC\tJOBWAKE\n\t\tCCS\tLOCCTR\n\t\tTCF\tINTWAKE1\nFORTYONE\tDEC\t41\n\t\tCS\tINTBITAB\n\t\tMASK\tRASFLAG\n\t\tTS\tRASFLAG\t\t# RELEASE STALL AREA\n\t\tRELINT\n\t\tTCF\tGOBAC\nOKTOGRAB\tCAF\tINTFLBIT\n\t\tINHINT\n\t\tADS\tRASFLAG\nGOBAC\t\tTC\tINTPRET\n\t\tRVQ\nWAKESTAL\tCADR\tINTSTALL +1\nINTBITAB\tOCT\t20100\n\n# Page 1221\n# AVETOMID\n#\n# THIS ROUTINE PERFORMS THE TRANSITION FROM A THRUSTING PHASE TO THE COAST\n# PHASE BY INITIALIZING THIS VEHICLE'S PERMANENT STATE VECTOR WITH THE\n# VALUES LEFT BY THE AVERAGEG ROUTINE IN RN,VN,PIPTIME.\n#\n# BEFORE THIS IS DONE THE W-MATRIX, IF ITS VALID (OR WFLAG OR RENDWFLT IS\n# SET) IS INTEGRATED FORWARD TO PIPTIME WITH THE PRE-THRUST STATE VECTOR.\n#\n# IN ADDITION, THE OTHER VEHICLE IS INTEGRATED (PERMANENT) TO PIPTIME.\n#\n# FINALLY TRKMKCNT IS ZEROED.\n\n\t\tSETLOC\tINTINIT\n\t\tBANK\n\n\t\tCOUNT*\t$$/INTIN\nAVETOMID\tSTQ\tBON\n\t\t\tEGRESS\n\t\t\tRENDWFLG\n\t\t\tINT/W\t\t# W-MATRIX VALID, GO INTEGRATE IT\n\t\tBON\n\t\t\tORBWFLAG\n\t\t\tINT/W\t\t# W-MATRIX VALID, GO INTEGRATE IT.\n\nOTHERS\t\tDLOAD\tCALL\t\t# GET SET FOR OTHER VEHICLE INTEGRATION\n\t\t\tPIPTIME\t\t# DESIRED TIME\n\t\t\tINTSTALL\n\t\tSET\tCALL\n\t\t\tVINTFLAG\t# CM\n\t\t\tSETIFLGS\t# SETS UP NONE W-MAT. PERMANENT INTEG.\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRV\n\n\t\tAXT,2\tCALL\t\t# NOW MOVE PROPERLY SCALE RN,UN AS WELL AS\n\t\t\t2\t\t# PIPTIME TO INTEGRATION ERASABLES.\n\t\t\tINTSTALL\n\t\tBON\tAXT,2\n\t\t\tMOONTHIS\n\t\t\t+2\n\t\t\t0\n\t\tVLOAD\tVSR*\n\t\t\tRN\n\t\t\t0,2\n\t\tSTORE\tRRECT\n\t\tSTODL\tRCV\n\t\t\tPIPTIME\n\t\tSTOVL\tTET\n\t\t\tVN\n# Page 1222\n\t\tVSR*\tCALL\n\t\t\t0,2\n\t\t\tMINIRECT\t# FINISH SETTING UP STATE VECTOR\n\t\tRTB\tSSP\n\t\t\tMOVATHIS\t# PUT TEMP STATE VECTOR INTO PERMANENT\n\t\t\tTRKMKCNT\n\t\t\t0\n\t\tGOTO\n\t\t\tFAZAB5\n\nINT/W\t\tDLOAD\tCALL\n\t\t\tPIPTIME\t\t# INTEGRATE W THRU BURN\n\t\t\tINTSTALL\n\t\tSET\tSET\n\t\t\tDIM0FLAG\t# DO W-MATRIX\n\t\t\tAVEMIDSW\t# SO WON'T CLOBBER RN,VN,PIPTIME\n\t\tSET\tCLEAR\n\t\t\tD6OR9FLG\t# 9X9 FOR LM\n\t\t\tVINTFLAG\t# LM\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRV\n\t\tGOTO\n\t\t\tOTHERS\t\t# NOW GO DO THE OTHER VEHICLE\n\n# Page 1223\n# MIDTOAV1\n#\n# THIS ROUTINE INTEGRATES (PRECISION) TO THE TIME SPECIFIED IN TDEC1.\n# IF, AT THE END OF AN INTEGRATION TIME STEP, CURRENT TIME PLUS A DELTA\n# TIME (SEE TIMEDELT.....BASED ON THE COMPUTATION TIME FOR ONE TIME STEP)\n# IS GREATER THAN THE DESIRED TIME, ALARM 1703 IS SET AND THE INTEGRATION\n# IS DONE TO THE CURRENT TIME.\n# RETURN IS IN BASIC TO THE RETURN ADDRESS PLUS ONE.\n#\n# IF THE INTEGRATION IS FINISHED TO THE DESIRED TIME, RETURN IS IN BASIC\n# TO THE RETURN ADDRESS.\n#\n# IN EITHER CASE, BEFORE RETURNING, THE EXTRAPOLATED STATE VECTOR IS TRANSFERRED\n# FROM R,VATT TO R,VN1-PIPTIME1 IS SET TO THE FINISHING INTEGRATION\n# TIME AND MPAC IS SET TO THE DELTA TIME --\n#\t\t\tTAT MINUS CURRENT TIME\n\n# MIDTOAV2\n#\n# THIS ROUTINE INTEGRATES THIS VEHICLE'S STATE VECTOR TO THE CURRENT TIME.\n# NO INPUTS ARE REQUIRED OF THE CALLER.  RETURN IS IN BASIC TO THE RETURN\n# ADDRESS WITH THE ABOVE TRANSFERS TO R,VN1-PIPTIME1-AND MPAC DONE\n\n\t\tEBANK=\tIRETURN1\nMIDTOAV2\tSTQ\tCLRGO\t\t# INTEGRATE TO PRESENT TIME PLUS TIMEDELT\n\t\t\tIRETURN1\n\t\t\tMID1FLAG\n\t\t\tENTMID2\n\nMIDTOAV1\tSTQ\tSET\t\t# INTEGRATE TO TDEC1\n\t\t\tIRETURN1\n\t\t\tMID1FLAG\n\t\tRTB\tDAD\t\t# INITIAL CHECK, IS TDEC1 IN THE FUTURE\n\t\t\tLOADTIME\n\t\t\tTIMEDELT\n\t\tBDSU\tBPL\n\t\t\tTDEC1\n\t\t\tENTMID1\t\t# Y5S\n\t\tCALL\n\t\t\tNOTIME\t\t# NO, SET ALARM, SWITCH TO MIDTOAV2\n\nENTMID2\t\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\tTIMEDELT\n\t\tSTORE\tTDEC1\n\nENTMID1\t\tCALL\n\t\t\tINTSTALL\n\t\tCLEAR\tCALL\n# Page 1224\n\t\t\tDIM0FLAG\t# NO W-MATRIX\n\t\t\tTHISVINT\n\t\tCLEAR\tSET\n\t\t\tINTYPFLG\n\t\t\tMIDAVFLG\t# LET INTEG. KNOW THE CALL IS FOR MIDTOAV.\n\t\tCALL\n\t\t\tINTEGRV\t\t# GO INTEGRATE\n\t\tCLEAR\tVLOAD\n\t\t\tMIDAVFLG\n\t\t\tRATT\n\t\tSTOVL\tRN1\n\t\t\tVATT\n\t\tSTODL\tVN1\n\t\t\tTAT\n\t\tSTORE\tPIPTIME1\n\t\tSXA,2\tSXA,1\n\t\t\tRTX2\n\t\t\tRTX1\n\t\tEXIT\n\n\t\tINHINT\n\t\tEXTEND\n\t\tDCS\tTIME2\n\t\tDAS\tMPAC\n\t\tTC\tTPAGREE\n\n\t\tCA\tIRETURN1\n\t\tTC\tBANKJUMP\nCKMID2\t\tBOF\tRTB\n\t\t\tMID1FLAG\n\t\t\tMID2\n\t\t\tLOADTIME\n\t\tDAD\tBDSU\n\t\t\tTIMEDELT\n\t\t\tTDEC\n\t\tBPL\tCALL\n\t\t\tTESTLOOP\t# YES\n\t\t\tNOTIME\n\nTIMEINC\t\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\tTIMEDELT\n\t\tSTCALL\tTDEC\n\t\t\tTESTLOOP\n\nMID2\t\tDLOAD\tDSU\n\t\t\tTDEC\n\t\t\tTET\n\t\tABS\tDSU\n\t\t\t3CSECS\n\n# Page 1225\n\t\tBMN\tGOTO\n\t\t\tA-PCHK\n\t\t\tTIMEINC\n\nNOTIME\t\tCLEAR\tEXIT\t\t# TOO LATE\n\t\t\tMID1FLAG\n\t\tINCR\tIRETURN1\t# SET ERROR EXIT (CALLOC +2)\n\t\tTC\tALARM\t\t# INSUFFICIENT TIME FOR INTEGRATION --\n\t\tOCT\t1703\t\t#\tTIG WILL BE SLIPPED...\n\t\tTC\tINTPRET\n\t\tRVQ\n\n3CSECS\t\t2DEC\t3\n\nTIMEDELT\t2DEC\t2000\n\n\t\tBANK\t27\n\t\tSETLOC\tUPDATE2\n\t\tBANK\n\t\tEBANK=\tINTWAKUQ\n\n\t\tCOUNT*\t$$/INTIN\n\nINTWAKUQ\t=\tINTWAK1Q\t# TEMPORARY UNTIL NAME OF INTWAK1Q IS CHNG\n\nINTWAKEU\tRELINT\n\t\tEXTEND\n\t\tQXCH\tINTWAKUQ\t# SAVE Q FOR RETURN\n\n\t\tTC\tINTPRET\n\n\t\tSLOAD\tBZE\t\t# IS THIS A CSM/LEM STATE VECTOR UPDATE\n\t\t\tUPSVFLAG\t# REQUEST.  IF NOT GO TO INTWAKUP.\n\t\t\tINTWAKUP\n\n\t\tVLOAD\t\t\t# MOVE PRECT(6) AND VRECT(6) INTO\n\t\t\tRRECT\t\t#\tRCV(6) AND VCV(6) RESPECTIVELY.\n\t\tSTOVL\tRCV\n\t\t\tVRECT\t\t# NOW GO TO `RECTIFY +13D' TO\n\t\tCALL\t\t\t# STORE VRECT INTO VCV AND ZERO OUT\n\t\t\tRECTIFY +13D\t# TDELTAV(6),TNUV(6),TC(2), AND XKEP(2)\n\t\tSLOAD\tABS\t\t# COMPARE ABSOLUTE VALUE OF `UPSVFLAG'\n\t\t\tUPSVFLAG\t# TO `UPDATE MOON STATE VECTOR CODE'\n\t\tDSU\tBZE\t\t# TO DETERMINE WHETHER THE STATE VECTOR TO\n\t\t\tUPMNSVCD\t# BE UPDATED IS IN THE EARTH OR LUNAR\n\t\t\tINTWAKEM\t# SPHERE OF INFLUENCE........\n\t\tAXT,2\tCLRGO\t\t# EARTH SPHERE OF INFLUENCE.\n\t\tDEC\t0\n\t\t\tMOONFLAG\n# Page 1226\n\t\t\tINTWAKEC\nINTWAKEM\tAXT,2\tSET\t\t# LUNAR SPHERE OF INFLUENCE.\n\t\tDEC\t2\n\t\t\tMOONFLAG\nINTWAKEC\tSLOAD\tBMN\t\t# COMMON CODING AFTER X2 INITIALIZED AND\n\t\t\t\t\t# MOONFLAG SET (OR CLEARED).\n\t\t\tUPSVFLAG\t# IS THIS A REQUEST FOR A LEM OR CSM\n\t\t\tINTWAKLM\t# \tSTATE VECTOR UPDATE......\n\t\tCALL\t\t\t# UPDATE CSM STATE VECTOR\n\t\t\tATOPCSM\n\n\t\tCLEAR\tGOTO\n\t\t\tORBWFLAG\n\t\t\tINTWAKEX\n\nINTWAKLM\tCALL\t\t\t# UPDATE LM STATE VECTOR\n\t\t\tATOPLEM\n\nINTWAKEX\tCLEAR\n\t\t\tRENDWFLG\n\nINTWAKUP\tSSP\tCALL\t\t# REMOVE `UPDATE STATE VECTOR INDICATOR'\n\t\t\tUPSVFLAG\n\t\t\t0\n\t\t\tINTWAKE0\t# RELEASE `GRAB' OF ORBIT INTEG.\n\t\tEXIT\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04026\n\t\tTC\tINTWAKUQ\n\nUPMNSVCD\tOCT\t2\n\t\tOCT\t0\n\nGRP2PC\t\tSTQ\tEXIT\n\t\t\tGRP2SVQ\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tGRP2SVQ\n\n"
  },
  {
    "path": "Luminary099/INTER-BANK_COMMUNICATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINTER-BANK_COMMUNICATION.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t998-1001\n# Mod history:\t2009-05-24 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-05-08 JL\tRemoved workaround.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 998\n# \t   THE FOLLOWING ROUTINE CAN BE USED TO CALL A SUBROUTINE IN ANOTHER BANK. IN THE BANKCALL VERSION, THE\n# CADR OF THE SUBROUTINE IMMEDIATELY FOLLOWS THE  TC BANKCALL  INSTRUCTION, WITH C(A) AND C(L) PRESERVED.\n\n\t\tBLOCK\t02\n\t\tCOUNT*\t$$/BANK\nBANKCALL\tDXCH\tBUF2\t\t# SAVE INCOMING A,L.\n\t\tINDEX\tQ\t\t# PICK UP CADR.\n\t\tCA\t0\n\t\tINCR\tQ\t\t# SO WE RETURN TO THE LOC. AFTER THE CADR.\n\n# \t   SWCALL IS IDENTICAL TO BANKCALL, EXCEPT THAT THE CADR ARRIVES IN A.\n\nSWCALL\t\tTS\tL\n\t\tLXCH\tFBANK\t\t# SWITCH BANKS, SAVING RETURN.\n\t\tMASK\tLOW10\t\t# GET SUB-ADDRESS OF CADR.\n\t\tXCH\tQ\t\t# A,L NOW CONTAINS DP RETURN.\n\t\tDXCH\tBUF2\t\t# RESTORING INPUTS IF THIS IS A BANKCALL.\n\t\tINDEX\tQ\n\t\tTC\t10000\t\t# SETTING Q TO SWRETURN.\n\nSWRETURN\tXCH\tBUF2 \t+1\t# COMES HERE TO RETURN TO CALLER. C(A,L)\n\t\tXCH\tFBANK\t\t# ARE PRESERVED FOR RETURN.\n\t\tXCH\tBUF2 \t+1\n\t\tTC\tBUF2\n\n# \t   THE FOLLOWING ROUTINE CAN BE USED AS A UNILATERAL JUMP WITH C(A,L) PRESERVED AND THE CADR IMMEDIATELY\n# FOLLOWING THE TC POSTJUMP INSTRUCTION.\n\nPOSTJUMP\tXCH\tQ\t\t# SAVE INCOMING C(A).\n\t\tINDEX\tA\t\t# GET CADR.\n\t\tCA\t0\n\n# \t   BANKJUMP IS THE SAME AS POSTJUMP, EXCEPT THAT THE CADR ARRIVES IN A.\n\nBANKJUMP\tTS\tFBANK\n\t\tMASK\tLOW10\n\t\tXCH\tQ\t\t# RESTORING INPUT C(A) IF THIS WAS A\nQ+10000\t\tINDEX\tQ\t\t# POSTJUMP.\nPRIO12\t\tTCF\t10000\t\t# PRIO12 = TCF\t 10000 = 12000\n\n# Page 999\n# \t   THE FOLLOWING ROUTINE GETS THE RETURN CADR SAVED BY SWCALL OR BANKCALL AND LEAVES IT IN A.\n\nMAKECADR\tCAF\tLOW10\n\t\tMASK\tBUF2\n\t\tAD\tBUF2 \t+1\n\t\tTC\tQ\n\nSUPDACAL\tTS\tMPTEMP\n\t\tXCH\tFBANK\t\t# SET FBANK FOR DATA.\n\t\tEXTEND\n\t\tROR\tSUPERBNK\t# SAVE FBANK IN BITS 15-11, AND\n\t\tXCH\tMPTEMP\t\t#  SUPERBANK IN BITS  7-5.\n\t\tMASK\tLOW10\n\t\tXCH\tL\t\t# SAVE REL. ADR. IN BANK, FETCH SUPERBITS.\n\t\tINHINT\t\t\t# BECAUSE RUPT DOES NOT SAVE SUPERBANK.\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# SET SUPERBANK FOR DATA.\n\t\tINDEX\tL\n\t\tCA\t10000\t\t# PINBALL (FIX MEM DISP) PREVENTS DCA HERE\n\t\tXCH\tMPTEMP\t\t# SAVE 1ST WD, FETCH OLD FBANK AND SBANK.\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# RESTORE SUPERBANK.\n\t\tRELINT\n\t\tTS\tFBANK\t\t# RESTORE FBANK.\n\t\tCA\tMPTEMP\t\t# RECOVER FIRST WORD OF DATA.\n\t\tRETURN\t\t\t# 24 WDS. DATACALL 516 MU, SUPDACAL 432 MU\n\n# Page 1000\n# \t   THE FOLLOWING ROUTINES ARE IDENTICAL TO BANKCALL AND SWCALL EXCEPT THAT THEY ARE USED IN INTERRUPT.\n\nIBNKCALL\tDXCH\tRUPTREG3\t# USES RUPTREG3,4 FOR DP RETURN ADDRESS.\n\t\tINDEX\tQ\n\t\tCAF\t0\n\t\tINCR\tQ\n\nISWCALLL\tTS\tL\n\t\tLXCH\tFBANK\n\t\tMASK\tLOW10\n\t\tXCH\tQ\n\t\tDXCH\tRUPTREG3\n\t\tINDEX\tQ\n\t\tTC\t10000\n\nISWRETRN\tXCH\tRUPTREG4\n\t\tXCH\tFBANK\n\t\tXCH\tRUPTREG4\n\t\tTC\tRUPTREG3\n\n# 2. USPRCADR ACCESSES INTERPRETIVE CODING IN OTHER THAN THE USER'S FBANK.  THE CALLING SEQUENCE IS AS FOLLOWS:\n\n# L\t\tTC\tUSPRCADR\n# L+1\t\tCADR\tINTPRETX\t  INTPRETX IS THE INTERPRETIVE CODING\n#\t\t\t\t\t  RETURN IS TO L+2\n\nUSPRCADR\tTS\tLOC\t\t# SAVE A\n\t\tCA\tBIT8\n\t\tTS\tEDOP\t\t# EXIT INSTRUCTION TO EDOP\n\t\tCA\tBBANK\n\t\tTS\tBANKSET\t\t# USER'S BBANK TO BANKSET\n\t\tINDEX\tQ\n\t\tCA\t0\n\t\tTS\tFBANK\t\t# INTERPRETIVE BANK TO FBANK\n\t\tMASK\tLOW10\t\t# YIELDS INTERPRETIVE RELATIVE ADDRESS\n\t\tXCH\tQ\t\t# INTERPRETIVE ADDRESS TO Q, FETCHING L+1\n\t\tXCH\tLOC\t\t# L+1 TO LOC, RETRIEVING ORIGINAL A\n\t\tTCF\tQ+10000\n\n# Page 1001\n# THERE ARE FOUR POSSIBLE SETTINGS FOR CHANNEL 07. (CHANNEL 07 CONTAINS SUPERBANK SETTING.)\n#\t\t\t\t\t    PSEUDO-FIXED      OCTAL PSEUDO\n# SUPERBANK\tSETTING\t    S-REG. VALUE    BANK NUMBERS      ADDRESSES\n# ----------\t-------\t    ------------     ------------      ------------\n#\n# SUPERBANK 3\t  OXX\t    2000 - 3777\t       30 - 37\t      70000 - 107777\t(WHERE XX CAN BE ANYTHING AND\n#\t\t\t\t\t\t\t\t\t\tWILL USUALLY BE SEEN AS 11)\n# SUPERBANK 4\t  100\t    2000 - 3777        40 - 47\t      110000 - 127777\t(AS FAR AS IT CAN BE SEEN,\n#\t\t\t\t\t\t\t\t\t\tONLY BANKS 40-43 WILL EVER BE\n#\t\t\t\t\t\t\t\t\t\tAND ARE PRESENTLY AVAILABLE)\n# SUPERBANK 5\t  101\t    2000 - 3777\t       50 - 57\t      130000 - 147777\t(PRESENTLY NOT AVAILABLE TO\n#\t\t\t\t\t\t\t\t\t\tTHE USER)\n# SUPERBANK 6\t  110\t    2000 - 3777\t       60 - 67\t      150000 - 167777\t(PRESENTLY NOT AVAILABLE TO\n#\t\t\t\t\t\t\t\t\t\tTHE USER)\n# ***  THIS ROUTINE MAYBE CALLED BY ANY PROGRAM LOCATED IN BANKS 00 - 27.  I.E., NO PROGRAM LIVING IN ANY\n# SUPERBANK SHOULD USE SUPERSW.  ***\n#\n# SUPERSW MAYBE CALLED IN THIS FASHION:\n#\n#\t   CAF\t  ABBCON\t  WHERE  --  ABBCON   BBCON  SOMETHIN  --\n#\t   TCR\t  SUPERSW\t  (THE SUPERBNK BITS ARE IN THE BBCON)\n#\t   ...\t    ...\n#\t    .\t     .\n#\t    .\t     .\n# OR IN THIS FASHION :\n#\t   CAF\t  SUPERSET\t  WHERE SUPERSET IS ONE OF THE FOUR AVAILABLE\n#\t   TCR\t  SUPERSW\t  SUPERBANK BIT CONSTANTS:\n#\t   ...\t    ...\t\t\t\t\t  SUPER011 OCTAL  60\n#\t    .\t     .\t\t\t\t\t  SUPER100 OCTAL 100\n#\t    .\t     .\t\t\t\t\t  SUPER101 OCTAL 120\n#\t\t\t\t\t\t\t  SUPER110 OCTAL 140\n\nSUPERSW\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# WRITE BITS 7-6-5 OF THE ACCUMULATOR INTO\n\t\t\t\t\t# CHANNEL 07\n\t\tTC\tQ\t\t# TC TO INSTRUCTION FOLLOWING\n\t\t\t\t\t#   TC  SUPERSW\n\n"
  },
  {
    "path": "Luminary099/INTERPRETER.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINTERPRETER.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1002-1094\n# Mod history:\t2009-05-25 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\t\t2011-05-08 JL\tRemoved workarounds.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1002\n# SECTION 1:  DISPATCHER\n#\n# ENTRY TO THE INTERPRETER.  INTPRET SETS LOC TO THE FIRST INSTRUCTION, BANKSET TO THE BBANK OF THE\n# OBJECT INTERPRETIVE PROGRAM, AND INTBIT15 TO THE BIT15 CONTENTS OF FBANK.  INTERPRETIVE PROGRAMS MAY BE IN\n# VIRTUALLY ALL BANKS PRESENT UNDER ANY SUPER-BANK SETTING, WITH THE RESTRICTION THAT PROGRAMS IN HIGH BANKS\n# (BIT15 OF FBANK = 1) DO NOT REFER TO LOWBANKS, AND VICE-VERSA.  THE INTERPRETER DOES NOT SWITCH SUPERBANKS.\n# E-BANK SWITCHING OCCURS WHENEVER GENERAL ERASABLE (100-3777) IS ADDRESSED.\n\n\t\tBLOCK\t03\n\n\t\tCOUNT*\t$$/INTER\nINTPRET\t\tRELINT\n\t\tEXTEND\t\t\t\t# SET LOC TO THE WORD FOLLOWING THE TC.\n\t\tQXCH\tLOC\n\n +2\t\tCA\tBBANK\t\t\t# INTERPRETIVE BRANCHES FINISH HERE.\n\t\tTS\tBANKSET\n\t\tMASK\tBIT15\t\t\t# GET 15TH BIT FOR INDEXABLE ADDRESSES.\n\t\tTS\tINTBIT15\n\n\t\tTS\tEDOP\t\t\t# MAKE SURE NO INSTRUCTIONS LEFT OVER\n\n\t\tTCF\tNEWOPS\t\t\t# PICK UP OP CODE PAIR AND BEGIN.\n\nINTRSM\t\tLXCH\tBBANK\t\t\t# RESUME SUSPENDED INTERPRETIVE JOB\n\t\tTCF\tINTPRET +3\n\n# DLOAD LOADS MPAC, MPAC +1, LEAVING ZERO IN MPAC +2.\n\nDLOAD\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\t\t\t# LOAD DP C(C(ADDRWD)) INT MPAC,MPAC +1\nSLOAD2\t\tDXCH\tMPAC\n\t\tCAF\tZERO\t\t\t# ZERO MPAC +2\n\n# Page 1003\n# AT THE END OF MOST INSTRUCTIONS, CONTROL IS GIVEN TO DANZIG TO DISPATCH THE NEXT OPERATION.\n\n\t\tTS\tMPAC \t+2\t\t# AND DECLARE DP MODE\n\nNEWMODE\t\tTS\tMODE\t\t\t# PROLOGUE FOR MODE-CHANGING INSTRUCTIONS.\n\nDANZIG\t\tCA\tBANKSET\t\t\t# SET BBANK BEFORE TESTING NEWJOB SO THAT\n\t\tTS \tBBANK\t\t\t# IT MAY BE SAVED DIRECTLY BY CHANJOB.\n\nNOIBNKSW\tCCS\tEDOP\t\t\t# SEE IF AN ORDER CODE IS LEFT OVER FROM\n\t\tTCF\tOPJUMP\t\t\t# THE LAST PAIR RETRIEVED.  IF SO, EXECUTE.\n\t\t\t\t\t\t# EDOP IS SET TO ZERO ON ITS RE-EDITIING.\n\n\t\tCCS\tNEWJOB\t\t\t# SEE IF A JOB OF HIGHER PRIORITY IS\n\t\tTCF\tCHANG2\t\t\t# PRESENT, AND IF SO, CHANGE JOBS.\n\n\t\tINCR\tLOC\t\t\t# ADVANCE THE LOCATION COUNTER.\n\n# ITRACE (1) REFERS TO \"NEWOPS\"\nNEWOPS\t\tINDEX\tLOC\t\t\t# ENTRY TO BEGIN BY PICKING OP CODE PAIR.\n\t\tCA\t0\t\t\t# MAY BE AN OPCODE PAIR OR A STORE CODE.\n\t\tCCS\tA\t\t\t# TEST SIGN AND GET DABS(A).\n\t\tTCF\tDOSTORE\t\t\t# PROCESS STORE CODE.\n\nLOW7\t\tOCT\t177\n\n\t\tTS\tEDOP\t\t\t# OP CODE PAIR.  LEAVE THE OTHER IN EDOP\n\t\tMASK\tLOW7\t\t\t# WHERE CCS EDOP WILL HONOR IT NEXT.\n\nOPJUMP\t\tTS\tCYR\t\t\t# LOWWD ENTERS HERE IF A RIGHT-HAND OP\n\t\tCCS\tCYR\t\t\t# CODE IS TO BE PROCESSED.  TEST PREFICES.\n\t\tTCF\tOPJUMP2\t\t\t# TEST SECOND PREFIX BIT.\n\n\t\tTCF\tEXIT\t\t\t# +0 OP CODE IS EXIT\n\n# Page 1004\n# PROCESS ADDRESSES WHICH MAY BE DIRECT, INDEXED, OR REFERENCE THE PUSHDOWN LIST.\n\nADDRESS\t\tMASK\tBIT1\t\t\t# SEE IF ADDRESS IS INDEXED.  CYR CONTAINED\n\t\tCCS\tA\t\t\t# 400XX, SO BIT 1 IS NOW AS IT WAS IN CYR.\n\t\tTCF\tINDEX\t\t\t# FORM INDEXED ADDRESS.\n\nDIRADRES\tINDEX\tLOC\t\t\t# LOOK AHEAD TO NEXT WORD TO SEE IF\nOCT40001\tCS\t1\t\t\t# ADDRESS IS GIVEN.\n\t\tCCS\tA\n\t\tTCF\tPUSHUP\t\t\t# IF NOT.\n\nNEG4\t\tDEC\t-4\n\n\t\tINCR\tLOC\t\t\t# IF SO, TO SHOW WE PICKED UP A WORD.\n\t\tTS\tADDRWD\n\n# Page 1005\n# FINAL DIGESTION OF DIRECT ADDRESSES OF OP CODES WITH 01 PREFIX IS DONE HERE.   IN EACH CASE, THE\n# REQUIRED 12-BIT SUB-ADDRESS IS LEFT IN ADDRWD, WITH ANY REQUIRED E OR F BANK SWITCHING DONE.  ADDRESSES LESS\n# THAN 45D ARE TAKEN TO BE RELATIVE TO THE WORK AREA.  THE OP CODE IS NOW IN BITS 1-5 OF CYR WITH BIT 14 = 1.\n\n\t\tAD\t-ENDVAC\t\t\t# SEE IF ADDRESS RELATIVE TO WORK AREA.\n\t\tCCS\tA\n\t\tAD\t-ENDERAS\t\t# IF NOT, SEE IF IN GENERAL ERASABLE.\n\t\tTCF\tIERASTST\n\nNETZERO\t\tCA\tFIXLOC\t\t\t# IF SO, LEAVE THE MODIFIED ADDRESS IN\n\t\tADS\tADDRWD\t\t\t# ADDRWD AND DISPATCH.\nITR15\t\tINDEX\tCYR\t\t\t# THIS INDEX MAKES THE NEXT INSTRUCTION\n\t\t7\tINDJUMP -1\t\t# TCF INDJUMP + OP, EDITING CYR.\n\nIERASTST\tEXTEND\n\t\tBZMF\tGEADDR\t\t\t# GO PROCESS GENERAL-ERASABLE ADDRESS.\n\n\t\tMASK\tLOW10\t\t\t# FIXED BANK ADDRESS. RESTORE AND ADD B15.\n\t\tAD\tLOW10\t\t\t# SWITCH BANKS AND LEAVE SUBADDRESS IN\n\t\tXCH\tADDRWD\t\t\t# ADDRWD FOR OPERAND RETRIEVAL. (THIS\n\t\tAD\tINTBIT15\t\t# METHOD PRECLUDES USE OF THE LAST\n\t\tTS\tFBANK\t\t\t# LOCATION IN EACH FBANK.)\nITR12\t\tINDEX\tCYR\n\t\t7\tINDJUMP -1\n\nGEADDR\t\tMASK\tLOW8\n\t\tAD\tOCT1400\n\t\tXCH\tADDRWD\n\t\tTS\tEBANK\nITR10\t\tINDEX\tCYR\n\t\t7\tINDJUMP -1\n\n# Page 1006\n# THE FOLLOWING ROUTINE PROCESSES INTERPRETIVE INDEXED ADDRESSES.  AN INTERPRETER INDEX REGISTER MAY\n# CONTAIN THE ADDRESS OF ANY ERASABLE REGISTER (0-42 BEING RELATIVE TO THE VAC AREA) OR ANY INTERPRETIVE PROGRAM\n# BANK, OR ANY INTEGER IN THAT RANGE.\n\nDODLOAD*\tCAF\tDLOAD*\t\t\t# STODL* COMES HERE TO PROCESS LOAD ADR.\n\t\tTS\tCYR\t\t\t# (STOVL* ENTERS HERE).\n\nINDEX\t\tCA\tFIXLOC\t\t\t# SET UP INDEX LOCATION.\n\t\tTS\tINDEXLOC\n\t\tINCR\tLOC\t\t\t# (ADDRESS ALWAYS GIVEN).\n\t\tINDEX\tLOC\n\t\tCS\t0\n\t\tCCS\tA\t\t\t# INDEX 2 IF ADDRESS STORED COMPLEMENTED.\n\t\tINCR\tINDEXLOC\n\t\tNOOP\n\n\t\tTS \tADDRWD\t\t\t# 14 BIT ADDRESS TO ADDRWD.\n\t\tMASK\tHIGH4\t\t\t# IF ADDRESS GREATER THAN 2K, ADD INTBIT15\n\t\tEXTEND\n\t\tBZF \tINDEX2\n\t\tCA\tINTBIT15\n\t\tADS\tADDRWD\n\nINDEX2\t\tINDEX\tINDEXLOC\n\t\tCS\tX1\n\t\tADS\tADDRWD\t\t\t# DO AUGMENT, IGNORING AND CORRECTING OVF.\n\n\t\tMASK\tHIGH9\t\t\t# SEE IF ADDRESS IS IN WORK AREA.\n\t\tEXTEND\n\t\tBZF\tINDWORK\n\t\tMASK\tHIGH4\t\t\t# SEE IF IN FIXED BANK.\n\t\tEXTEND\n\t\tBZF\tINDERASE\n\n\t\tCA\tADDRWD\t\t\t# IN FIXED -- SWITCH BANKS AND CREATE\n\t\tTS\tFBANK\t\t\t# SUB-ADDRESS\n\t\tMASK\tLOW10\n\t\tAD\t2K\n\t\tTS\tADDRWD\nITR11\t\tINDEX\tCYR\n\t\t3\tINDJUMP -1\n\nINDWORK\t\tCA\tFIXLOC\t\t\t# MAKE ADDRWD RELATIVE TO WORK AREA.\n\t\tTCF\tITR13 \t-1\n\nINDERASE\tCA\tOCT1400\n\t\tXCH\tADDRWD\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n -1\t\tADS\tADDRWD\n# Page 1007\nITR13\t\tINDEX\tCYR\n\t\t3\tINDJUMP -1\n\n# Page 1008\n# PUSH-UP ROUTINES.  WHEN NO OPERAND ADDRESS IS GIVEN, THE APPROPRIATE OPERAND IS TAKEN FROM THE PUSH-DOWN\n# LIST.  IN MOST CASES THE MODE OF THE RESULT (VECTOR OR SCALAR) OF THE LAST ARITHMETIC OPERATION PERFORMED\n# IS THE SAME AS THE TYPE OF OPERAND DESIRED (ALL ADD/SUBTRACT ETC.).  EXCEPTIONS TO THIS GENERAL RULE ARE LISTED\n# BELOW (NOTE THAT IN EVERY CASE THE MODE REGISTER IS LEFT INTACT):\n#\n#\t1.\tVXSC AND V/SC WANT THE OPPOSITE TYPE OF OPERAND, E.G., IF THE LAST OPERATION YIELDED A VECTOR\n#\t\tRESULT, VXSC WANTS A SCALAR.\n#\n#\t2.\tTHE LOAD CODES SHOULD LOAD THE ACCUMULATOR INDEPENDENT OF THE RESULT OF THE LAST OPERATION.  THIS\n#\t\tINCLUDES VLOAD, DLOAD, TLOAD, PDDL, AND PDVL (NO PUSHUP WITH SLOAD).\n#\n#\t3.\tSOME ARITHMETIC OPERATIONS REQUIRE A STANDARD TYPE OF OPERAND REGARDLESS OF THE PREVIOUS OPERATION.\n#\t\tTHIS INCLUDES SIGN WANTING DP AND TAD REQUIRING TP.\n\nPUSHUP\t\tCAF\tOCT23\t\t# IF THE LOW 5 BITS OF CYR ARE LESS THAN\n\t\tMASK\tCYR\t\t# 20, THIS OP REQUIRES SPECIAL ATTENTION.\n\t\tAD\t-OCT10\t\t# (NO -0).\n\t\tCCS\tA\n\t\tTCF\tREGUP\t\t# FOR ALL CODES GREATEER THAN OCT 7.\n\n-OCT10\t\tOCT\t-10\n\n\t\tAD\tNEG4\t\t# WE NOW HAVE 7 -- OP CODE (MOD4).  SEE IF\n\t\tCCS\tA\t\t# THE OP CODE (MOD4) IS THREE (REVERSE).\n\t\tINDEX\tA\t\t# NO -- THE MODE IS DEFINITE.  PICK UP THE\n\t\tCS\tNO.WDS\n\t\tTCF\tREGUP \t+2\n\n\t\tINDEX\tMODE\t\t# FOR VXSC AND V/SC WE WANT THE REQUIRED\n\t\tCS\tREVCNT\t\t# PUSHLOC DECREMENT WITHOUT CHANGING THE\n\t\tTCF\tREGUP \t+2\t# MODE AT THIS TIME.\n\nREGUP\t\tINDEX\tMODE\t\t# MOST ALL OP CODES PUSHUP HERE.\n\t\tCS\tNO.WDS\n +2\t\tADS\tPUSHLOC\n\t\tTS\tADDRWD\nITR14\t\tINDEX\tCYR\n\t\t7\tINDJUMP -1\t# (THE INDEX MAKES THIS A TCF.)\n\n\t\tOCT\t2\t\t# REVERSE PUSHUP DECREMENT. VECTOR TAKES 2\nREVCNT\t\tOCT\t6\t\t# WORDS, SCALAR TAKES 6.\n\t\tOCT\t6\nNO.WDS\t\tOCT\t2\t\t# CONVENTIONAL DECREMENT IS 6 WORDS VECTOR\nOCTAL3\t\tOCT\t3\t\t# 2 IN DP, AND 3 IN TP.\n\t\tOCT\t6\n\n# Page 1009\n# TEST THE SECOND PREFIX BIT TO SEE IF THIS IS A MISCELLANEOUS OR A UNARY/SHORT SHIFT OPERATION.\n\nOPJUMP2\t\tCCS\tCYR\t\t# TEST SECOND PREFIX BIT.\n\t\tTCF\tOPJUMP3\t\t# TEST THIRD BIT TO SEE IF UNARY OR SHIFT\n\n-ENDVAC\t\tDEC\t-45\n\n# THE FOLLOWING ROUTINE PROCESSES ADDRESSES OF SUFFIX CLASS 10.  THEY ARE BASICALLY WORK AREA ADDRESSES\n# IN THE RANGE 0-52, ERASABLE ECADR CONSTANTS FROM 100-3777, AND FCADRS ABOVE THAT.  ALL 15 BITS ARE AVAILABLE\n# IN CONTRAST TO SUFFIX 1, IN WHICH ONLY THE LOW ORDER 14 ARE AVAILABLE.\n\n15BITADR\tINCR\tLOC\t\t# (ENTRY HERE FROM STCALL).\n\t\tINDEX\tLOC\t\t# PICK UP ADDRESS WORD.\n\t\tCA\t0\n\t\tTS\tPOLISH\t\t# WE MAY NEED A SUBADDRESS LATER.\n\n\t\tCAF\tLOW7+2K\t\t# THESE INSTRUCTIONS ARE IN BANK 1.\n\t\tTS\tFBANK\n\t\tMASK\tCYR\nITR7\t\tINDEX\tA\n\t\tTCF \tMISCJUMP\n\n# Page 1010\n# COMPLETE THE DISPATCHING OF UNARY AND SHORT SHIFT OPERATIONS.\n\nOPJUMP3\t\tTS\tFBANK\t\t# CALL IN BANK 0 (BIT5S 11-15 OF A ARE 0.)\n# ITRACE (6) REFERS TO \"OPJUMP3\"\n\t\tCCS\tCYR\t\t# TEST THIRD PREFIX BIT.\n\t\tINDEX\tA\t\t# THE DECREMENTED UNARY CODE IS IN BITS\n\t\tTCF\tUNAJUMP\t\t# 1-4 OF A (ZERO, EXIT, HAS BEEN DETECTED)\n\n\t\tCCS\tMODE\t\t# IT'S A SHORT SHIFT CODE.  SEE IF PRESENT\n\t\tTCF\tSHORTT\t\t# SCALAR OR VECTOR.\n\t\tTCF\tSHORTT\n\t\tTCF\tSHORTV\t\t# CALLS THE APPROPRIATE ROUTINE.\n\nFBANKMSK\tEQUALS\tBANKMASK\nLVBUF\t\tADRES\tVBUF\n\n# Page 1011\n# THE FOLLOWING IS THE JUMP TABLE FOR OP CODES WHICH MAY HAVE INDEXABLE ADDRESSES OR MAY PUSH UP.\n\nINDJUMP\t\tTCF\tVLOAD\t\t# 00 -- LOAD MPAC WITH A VECTOR.\n\t\tTCF\tTAD\t\t# 01 -- TRIPLE PRECISION ADD TO MPAC.\n\t\tTCF\tSIGN\t\t# 02 -- COMPLEMENT MPAC (V OR SC) IF X NEG.\n\t\tTCF\tVXSC\t\t# 03 -- VECTOR TIMES SCALAR.\n\t\tTCF\tCGOTO\t\t# 04 -- COMPUTED GO TO.\n\t\tTCF\tTLOAD\t\t# 05 -- LOAD MPAC WITH TRIPLE PRECISION.\n\t\tTCF\tDLOAD\t\t# 06 -- LOAD MPAC WITH A DP SCALAR.\n\t\tTCF\tV/SC\t\t# 07 -- VECTOR DIVIDED BY A SCALAR.\n\n\t\tTCF\tSLOAD\t\t# 10 -- LOAD MPACIN SINGLE PRECISION.\n\t\tTCF\tSSP\t\t# 11 -- SET SINGLE PRECISION INTO X.\n\t\tTCF\tPDDL\t\t# 12 -- PUSH DOWN MPAC AND RE-LOAD IN DP.\n\t\tTCF\tMXV\t\t# 13 -- MATRIX POST-MULTIPLIED BY VECTOR.\n\t\tTCF\tPDVL\t\t# 14 -- PUSH DOWN AND VECTOR LOAD.\n\t\tTCF\tCCALL\t\t# 15 -- COMPUTED CALL.\n\t\tTCF\tVXM\t\t# 16 -- MATRIX PRE-MULTIPLIED BY VECTOR.\n\t\tTCF\tTSLC\t\t# 17 -- NORMALIZE MPAC (SCALAR ONLY).\n\n\t\tTCF\tDMPR\t\t# 20 -- DP MULTIPLY AND ROUND.\n\t\tTCF\tDDV\t\t# 21 -- DP DIVIDE BY.\n\t\tTCF\tBDDV\t\t# 22 -- DP DIVIDE INTO.\n\t\tTCF\tGSHIFT\t\t# 23 -- GENERAL SHIFT INSTRUCTION\n\t\tTCF\tVAD\t\t# 24 -- VECTOR ADD.\n\t\tTCF\tVSU\t\t# 25 -- VECTOR SUBTRACT.\n\t\tTCF\tBVSU\t\t# 26 -- VECTOR SUBTRACT FROM.\n\t\tTCF\tDOT\t\t# 27 -- VECTOR DOT PRODUCT.\n\n\t\tTCF\tVXV\t\t# 30 -- VECTOR CROSS PRODUCT.\n\t\tTCF\tVPROJ\t\t# 31 -- VECTOR PROJECTION.\n\t\tTCF\tDSU\t\t# 32 -- DP SUBTRACT.\n\t\tTCF\tBDSU\t\t# 33 -- DP SUBTRACT FROM.\n\t\tTCF\tDAD\t\t# 34 -- DP ADD.\n\t\tTCF\t\t\t# 35 -- AVAILABLE\n\t\tTCF\tDMP1\t\t# 36 -- DP MULTIPLY.\n\t\tTCF\tSETPD\t\t# 37 -- SET PUSH DOWN POINTER (DIRECT ONLY)\n\n# CODES 10 AND 14 MUST NOT PUSH UP. CODE 04 MAY BE USED FOR VECTOR DECLARE BEFORE PUSHUP IF DESIRED.\n\n# Page 1012\n# THE FOLLOWING JUMP TABLE APPLIES TO INDEX, BRANCH, AND MISCELLANEOUS INSTRUCTIONS.\n\nMISCJUMP\tTCF\tAXT\t\t# 00 -- ADDRESS TO INDEX TRUE.\n\t\tTCF\tAXC\t\t# 01 -- ADDRESS TO INDEX COMPLEMENTED.\n\t\tTCF\tLXA\t\t# 02 -- LOAD INDEX FROM ERASABLE.\n\t\tTCF\tLXC\t\t# 03 -- LOAD INDEX FROM COMPLEMENT OF ERAS.\n\t\tTCF\tSXA\t\t# 04 -- STORE INDEX IN ERASABLE.\n\t\tTCF\tXCHX\t\t# 05 -- EXCHANGE INDEX WITH ERASABLE.\n\t\tTCF\tINCR\t\t# 06 -- INCREMENT INDEX REGISTER.\n\t\tTCF\tTIX\t\t# 07 -- TRANSFER ON INDEX.\n\n\t\tTCF\tXAD\t\t# 10 -- INDEX REGISTER ADD FROM ERASABLE.\n\t\tTCF\tXSU\t\t# 11 -- INDEX SUBTRACT FROM ERASABLE.\n\t\tTCF\tBZE/GOTO\t# 12 -- BRANCH ZERO AND GOTO\n\t\tTCF\tBPL/BMN\t\t# 13 -- BRANCH PLUS AND BRANCH MINUS.\n\t\tTCF\tRTB/BHIZ\t# 14 -- RETURN TO BASIC AND BRANCH HI ZERO.\n\t\tTCF\tCALL/ITA\t# 15 -- CALL AND STORE QPRET.\n\t\tTCF\tSW/\t\t# 16 -- SWITCH INSTRUCTIONS AND AVAILABLE.\n\t\tTCF\tBOV(B)\t\t# 17 -- BRANCH ON OVERFLOW TO BASIC OR INT.\n\n# Page 1013\n# THE FOLLOWING JUMP TABLE APPLIES TO UNARY INSTRUCTIONS.\n\n\t\tCOUNT*\t$$/INTER\n\t\tBANK\t0\t\t# 00 -- EXIT -- DETECTED EARLIER.\nUNAJUMP\t\tTCF\tSQRT\t\t# 01 -- SQUARE ROOT.\n\t\tTCF\tSINE\t\t# 02 -- SIN.\n\t\tTCF\tCOSINE\t\t# 03 -- COS.\n\t\tTCF\tARCSIN\t\t# 04 -- ARC SIN.\n\t\tTCF\tARCCOS\t\t# 05 -- ARC COS.\n\t\tTCF\tDSQ\t\t# 06 -- DP SQUARE.\n\t\tTCF\tROUND\t\t# 07 -- ROUND TO DP.\n\n\t\tTCF\tCOMP\t\t# 10 -- COMPLEMENT VECTOR OR SCALAR\n\t\tTCF\tVDEF\t\t# 11 -- VECTOR DEFINE.\n\t\tTCF\tUNIT\t\t# 12 -- UNIT VECTOR.\n\t\tTCF\tABVALABS\t# 13 -- LENGTH OF VECTOR OR MAG OF SCALAR.\n\t\tTCF\tVSQ\t\t# 14 -- SQUARE OF LENGTH OF VECTOR.\n\t\tTCF\tSTADR\t\t# 15 -- PUSH UP ON STORE CODE.\n\t\tTCF\tRVQ\t\t# 16 -- RETURN VIA QPRET.\n\t\tTCF\tPUSH\t\t# 17 -- PUSH MPAC DOWN.\n\n# Page 1014\n# SECTION 2\tLOAD AND STORE PACKAGE.\n#\n# A SET OF EIGHT STORE CODES IS PROVIDED AS THE PRIMARY METHOD OF STORING THE MULTI-PURPOSE\n# ACCUMULATOR (MPAC).  IF IN THE DANZIG SECTION LOC REFERS TO AN ALGEBRAICALLY POSITIVE WORD, IT IS TAKEN AS A\n# STORE CODE WITH A CORRESPONDING ERASABLE ADDRESS.  MOST OF THESE CODES ARE TWO ADDRESS, SPECIFYING THAT THE WORD\n# FOLLOWING THE STORE CODE IS TO BE USED AS AN ADDRESS FROM WHICH TO RE-LOAD MPAC.  FOUR OPTIONS ARE AVAILABLE:\n#\n#\t1. STORE\tSTORE MPAC.  THE E ADDRESS MAY BE INDEXED.\n#\t2. STODL\tSTORE MPAC AND RE-LOAD IT IN DP WITH THE NEXT ADDRESS (THE LOAD MAY BE INDEXED).\n#\t3. STOVL\tSTORE MPAC AND RE-LOAD A VECTOR (AS ABOVE).\n#\t4. STCALL\tSTORE AND DO A CALL (BOTH ADDRESES MUST BE DIRECT HERE).\n#\n# STODL AND STOVL WILL TAKE FROM THE PUSH-DOWN LIST IF NO LOAD ADDRESS IS GIVEN.\n\n\t\tBLOCK\t3\n\n\t\tCOUNT*\t$$/INTER\nSTADR\t\tCA\tBANKSET\t\t# THE STADR CODE (PUSHUP UP ON STORE\n\t\tTS\tFBANK\t\t# ADDRESS) ENTERS HERE.\n\t\tINCR\tLOC\nITR1\t\tINDEX\tLOC\t\t# THE STORECODE WAS STORED COMPLEMENTED TO\n\t\tCS\t0\t\t# MAKE IT LOOK LIKE AN OPCODE PAIR.\n\t\tAD\tNEGONE\t\t# (YUL CAN'T REMOVE 1 BECAUSE OF EARLY CCS)\n\nDOSTORE\t\tTS\tADDRWD\n\t\tMASK \tLOW11\t\t# ENTRY FROM DISPATCHER.  SAVE THE ERASABLE\n\t\tXCH\tADDRWD\t\t# ADDRESS AND JUMP ON THE STORE CODE NO.\n\t\tMASK\tB12T14\n\t\tEXTEND\n\t\tMP\tBIT5\t\t# EACH TRANSFER VECTOR ENTRY IS TWO WORDS.\n\t\tINDEX\tA\n\t\tTCF\tSTORJUMP\n\n# Page 1015\n# STORE CODE JUMP TABLE.  CALLS THE APPROPRIATE STORING ROUTINE AND EXITS TO DANZIG OR TO ADDRESS WITH\n# A SUPPLIED OPERATION CODE.\n#\n# STORE STORE,1 AND STORE,2 RETURN TO DANZIG, THUS RESETTING THE EBANK TO ITS STATE AT INTPRET.\n\nSTORJUMP\tTC\tSTORE\t\t# STORE.\n\t\tTCF\tDANZIG\t\t# PICK UP NEW OP CODE(S).\n\t\tTC\tSTORE,1\n\t\tTCF\tDANZIG\n\t\tTC\tSTORE,2\n\t\tTCF\tDANZIG\n\n\t\tTC\tSTORE\t\t# STODL.\n\t\tTCF\tDODLOAD\n\n\t\tTC\tSTORE\t\t# STODL WITH INDEXED LOAD ADDRESS.\n\t\tTCF\tDODLOAD*\n\n\t\tTC\tSTORE\t\t# STOVL.\n\t\tTCF\tDOVLOAD\n\n\t\tTC\tSTORE\t\t# STOVL WITH INDEXED LOAD ADDRESS.\n\t\tTCF\tDOVLOAD*\n\t\tTC\tSTORE\t\t# STOTC.\n\t\tCAF\tCALLCODE\n\t\tTS\tCYR\n\t\tTCF\t15BITADR\t# GET A 15 BIT ADDRESS.\n\n# Page 1016\n# STORE CODE ADDRESS PROCESSOR.\n\nSTORE,1\t\tINDEX\tFIXLOC\n\t\tCS\tX1\n\t\tTCF\tPRESTORE\n\nSTORE,2\t\tINDEX\tFIXLOC\n\t\tCS\tX2\nPRESTORE\tADS\tADDRWD\t\t# RESULTANT ADDRESS IS IN ERASABLE.\n\nSTORE\t\tCS\tADDRWD\n\t\tAD\tDEC45\n\t\tCCS\tA\t\t# DOES THE ADDRESS POINT TO THE WORK AREA?\n\t\tCA\tFIXLOC\t\t# YES.\n\t\tTCF\tAHEAD5\n\t\tCA\tOCT1400\t\t# NO.  SET EBANK & MAKE UP SUBADDRESS.\n\t\tXCH\tADDRWD\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\nAHEAD5\t\tADS\tADDRWD\n\n# Page 1017\n# STORING ROUTINES.  STORE DP, TP, OR VECTOR AS INDICATED BY MODE.\n\nSTARTSTO\tEXTEND\t\t\t# MPAC,+1 MUST BE STORED IN ANY EVENT.\n# ITRACE (5) REFERS TO \"STARTSTO\".\n\t\tDCA\tMPAC\n\t\tINDEX\tADDRWD\n\t\tDXCH\t0\n\n\t\tCCS\tMODE\n\t\tTCF\tTSTORE\n\t\tTC\tQ\n\nVSTORE\t\tEXTEND\n\t\tDCA\tMPAC\t +3\n\t\tINDEX \tADDRWD\n\t\tDXCH\t2\n\n\t\tEXTEND\n\t\tDCA\tMPAC\t +5\n\t\tINDEX\tADDRWD\n\t\tDXCH\t4\n\t\tTC\tQ\n\nTSTORE\t\tCA\tMPAC \t+2\n\t\tINDEX\tADDRWD\n\t\tTS\t2\n\t\tTC\tQ\n\n# Page 1018\n# ROUTINES TO BEGIN PROCESSING OF THE SECOND ADDRES ASSOCIATED WITH ALL STORE-TYPE CODES EXCEPT STORE\n# ITSELF.\n\nDODLOAD\t\tCAF\tDLOADCOD\n\t\tTS\tCYR\n\t\tTCF\tDIRADRES\t# GO GET A DIRECT ADDRESS.\n\nDOVLOAD\t\tCAF\tVLOADCOD\n\t\tTS\tCYR\n\t\tTCF\tDIRADRES\n\nDOVLOAD*\tCAF\tVLOAD*\n\t\tTCF\tDODLOAD* +1\t# PROLOGUE TO INDEX ROUTINE.\n\n# Page 1019\n# THE FOLLOWING LOAD INSTRUCTIONS ARE PROVIDED FOR LOADING THE MULTI-PURPOSE ACCUMULATOR MPAC.\n\nTLOAD\t\tINDEX \tADDRWD\n\t\tCA\t2\t\t# LOAD A TRIPLE PRECISION ARGUMENT INTO\n\t\tTS\tMPAC \t+2\t# THE FIRST THREE MPAC REGISTERS, WITH THE\n\t\tEXTEND\t\t\t# CONTENTS OF THE OTHER FOUR IRRELEVANT.\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\nTMODE\t\tCAF\tONE\n\t\tTCF\tNEWMODE\t\t# DECLARE TRIPLE PRECISION MODE.\n\nSLOAD\t\tZL\t\t\t# LOAD A SINGLE PRECISION NUMBER INTO\n\t\tINDEX\tADDRWD\t\t# MPAC, SETTING MPAC+1,2 TO ZERO.  THE\n\t\tCA\t0\t\t# CONTENTS OF THE REMAINING MPAC REGISTERS\n\t\tTCF\tSLOAD2\t\t# ARE IRRELEVANT.\n\nVLOAD\t\tEXTEND\t\t\t# LOAD A DOUBLE PRECISION VECTOR INTO\n\t\tINDEX\tADDRWD\t\t# MPAC,+1, MPAC+3,4, AND MPAC+5,6.  THE\n\t\tDCA\t0\t\t# CONTENTS OF MPAC +2 ARE IRRELEVANT.\n\t\tDXCH\tMPAC\n\nENDVLOAD\tEXTEND\t\t\t# PDVL COMES HERE TO FINISH UP FOR DP, TP.\n\t\tINDEX\tADDRWD\n\t\tDCA\t2\n\t\tDXCH\tMPAC \t+3\n\n +4\t\tEXTEND\t\t\t# TPDVL FINISHES HERE.\n\t\tINDEX\tADDRWD\n\t\tDCA\t4\n\t\tDXCH\tMPAC \t+5\n\nVMODE\t\tCS\tONE\t\t# DECLARE VECTOR MODE.\n\t\tTCF\tNEWMODE\n\n# Page 1020\n# THE FOLLOWING INSTRUCTIONS ARE PROVIDED FOR STORING OPERANDS IN THE PUSHDOWN LIST:\n#\t1.\tPUSH\t\tPUSHDOWN AND NO LOAD.\n#\t2.\tPDDL\t\tPUSHDOWN AND DOUBLE PRECISION LOAD.\n#\t3.\tPDVL\t\tPUSHDOWN AND VECTOR LOAD.\n\nPDDL\t\tEXTEND\n\t\tINDEX\tADDRWD\t\t# LOAD MPAC,+1, PUSHING THE FORMER\n\t\tDCA\t0\t\t# CONTENTS DOWN.\n\t\tDXCH\tMPAC\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0\n\n\t\tINDEX\tMODE\t\t# ADVANCE THE PUSHDOWN POINTER APPRO-\n\t\tCAF\tNO.WDS\t\t# PRIATELY.\n\t\tADS\tPUSHLOC\n\n\t\tCCS\tMODE\n\t\tTCF\tENDTPUSH\n\t\tTCF\tENDDPUSH\n\n\t\tTS\tMODE\t\t# NOW DP.\nENDVPUSH\tTS\tMPAC \t+2\n\t\tDXCH\tMPAC \t+3\t# PUSH DOWN THE REST OF THE VECTOR HERE.\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 \t-4\n\n\t\tDXCH\tMPAC \t+5\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 \t-2\n\n\t\tTCF\tDANZIG\n\nENDDPUSH\tTS\tMPAC\t+2\t# SET MPAC +2 TO ZERO AND EXIT ON DP.\n\t\tTCF\tDANZIG\n\nENDTPUSH\tTS\tMODE\n\t\tXCH\tMPAC \t+2\t# ON TRIPLE, SET MPAC +2 TO ZERO, PUSHING\n +2\t\tINDEX\tPUSHLOC\t\t# DOWN THE OLD CONTENTS\n\t\tTS\t0 \t-1\n\t\tTCF\tDANZIG\n\n# Page 1021\n# PDVL -- PUSHDOWN AND VECTOR LOAD\n\nPDVL\t\tEXTEND\t\t\t# RELOAD MPAC AND PUSH DOWN ITS CONTENTS.\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0\n\n\t\tINDEX\tMODE\t\t# ADVANCE THE PUSHDOWN POINTER.\n\t\tCAF\tNO.WDS\n\t\tADS\tPUSHLOC\n\n\t\tCCS\tMODE\t\t# TEST PAST MODE.\n\t\tTCF\tTPDVL\n\t\tTCF\tENDVLOAD\t# JUST LOAD LAST FOUR REGISTERS ON DP.\n\nVPDVL\t\tEXTEND\t\t\t# PUSHDOWN AND RE-LOAD LAST TWO COMPONENTS\n\t\tINDEX\tADDRWD\n\t\tDCA\t2\n\t\tDXCH\tMPAC \t+3\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 \t-4\n\n\t\tEXTEND\n\t\tINDEX \tADDRWD\n\t\tDCA\t4\n\t\tDXCH\tMPAC \t+5\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 \t-2\n\n\t\tTCF\tDANZIG\n\nTPDVL\t\tEXTEND\t\t\t# ON TP, WE MUST LOAD THE Y COMPONENT\n\t\tINDEX\tADDRWD\t\t# BEFORE STORING MPAC +2 IN CASE THIS IS A\n\t\tDCA\t2\t\t# PUSHUP.\n\t\tDXCH\tMPAC\t+3\n\n\t\tCA\tMPAC \t+2\n\t\tINDEX\tPUSHLOC\t\t# IN DP.\n\t\tTS\t0 \t-1\n\t\tTCF\tENDVLOAD +4\n\n# SSP (STORE SINGLE PRECISION) IS EXECUTED HERE.\n\nSSP\t\tINCR\tLOC\t\t# PICK UP THE WORD FOLLOWING THE GIVEN\n\t\tINDEX\tLOC\t\t# ADDRESS AND STORE IT AT X.\n\t\tCA\t0\nSTORE1\t\tINDEX\tADDRWD\t\t# SOME INDEX AND MISCELLANEOUS OPS END\n\t\tTS\t0\t\t# HERE.\n# Page 1022\n\t\tTCF\tDANZIG\n\n# Page 1023\n# SEQUENCE CHANGING AND SUBROUTINE CALLING OPTIONS.\n#\n# THE FOLLOWING OPERATIONS ARE AVAILABLE FOR SEQUENCING CHANGING, BRANCHING, AND CALLING SUBROUTINES:\n#\t1.\tGOTO\t\tGO TO.\n#\t2.\tCALL\t\tCALL SUBROUTINE SETTING QPRET.\n#\t3.\tCGOTO\t\tCOMPUTED GO TO.\n#\t4.\tCCALL\t\tCOMPUTED CALL.\n#\t7.\tBPL\t\tBRANCH IF MPAC POSITIVE OR ZERO.\n#\t8.\tBZE\t\tBRANCH IF MPAC ZERO.\n#\t9.\tBMN\t\tBRANCH IF MPAC NEGATIVE NON-ZERO.\n\nCCALL\t\tINCR\tLOC\t\t# MAINTAIN LOC FOR QPRET COMPUTATION\n\t\tINDEX\tLOC\n\t\tCAF\t0\t\t# GET BASE ADDRESS OF CADR LIST.\n\t\tINDEX\tADDRWD\n\t\tAD\t0\t\t# ADD INCREMENT.\n\t\tTS\tFBANK\t\t# SELECT DESIRED CADR.\n\t\tMASK\tLOW10\n\t\tINDEX\tA\n\t\tCAF\t10000\n\t\tTS\tPOLISH\n\nCALL\t\tCA\tBANKSET\t\t# FOR ANY OF THE CALL OPTIONS, MAKE UP THE\n\t\tMASK\tBANKMASK\t# ADDRESS OF THE NEXT OP-CODE PAIR/STORE\n\t\tAD\tBANKMASK\t# CODE AND LEAVE IT IN QPRET.  NOTE THAT\n\t\tAD\tLOC\t\t# BANKMASK = -(2000 - 1).\n\t\tINDEX\tFIXLOC\n\t\tTS\tQPRET\n\nGOTO\t\tCA\tPOLISH\t\t# BASIC BRANCHING SEQUENCE.\n +1\t\tMASK \tHIGH4\n\t\tEXTEND\n\t\tBZF\tGOTOERS\t\t# SEE IF ADDRESS POINTS TO FIXED OR ERAS.\n +4\t\tCA\tBANKSET\t\t# SET EBANK PART OF BBANK.  NEXT, SET UP\n\t\tTS\tBBANK\t\t# FBANK.  THE COMBINATION IS PICKED UP &\n\t\tCA\tPOLISH\t\t# PUT INTO BANKSET AT INTPRET +2.\n\t\tTS\tFBANK\n\t\tMASK \tLOW10\n\t\tAD\t2K\n\t\tTS\tLOC\n\t\tTCF\tINTPRET +3\n\n\t\tEBANK=\t1400\t\t# SO YUL DOESN'T CUSS THE \"CA 1400\" BELOW.\n\nGOTOERS\t\tCA\tPOLISH\t\t# THE GIVEN ADDRESS IS IN ERASABLE -- SEE\n\t\tAD\t-ENDVAC\t\t# IF RELATIVE TO THE WORK ARA.\n\t\tCCS\tA\n\t\tCA\tPOLISH\t\t# GENERAL ERASABLE.\n\t\tTCF\tGOTOGE\n\n# Page 1024\n\t\tCA\tFIXLOC\t\t# WORK AREA.\n\t\tAD\tPOLISH\n\t\tINDEX\tA\t\t# USE THE GIVEN ADDRESS AS THE ADDRESS OF\n\t\tCA\t0\t\t# THE BRANCH ADDRESS.\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO \t+1\t# ALLOWS ARBITRARY INDIRECTNESS LEVELS.\n\nGOTOGE\t\tTS\tEBANK\n\t\tMASK\tLOW8\n\t\tINDEX\tA\t\t# USE THE GIVEN ADDRESS AS THE ADDRESS OF\n\t\tCA\t1400\t\t# THE BRANCH ADDRESS.\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO \t+1\n\nCGOTO\t\tINDEX\tLOC\t\t# COMPUTED GO TO.  PICK UP ADDRESS OF CADR\n\t\tCA\t1\t\t# LIST\n\t\tINDEX\tADDRWD\t\t# ADD MODIFIER.\n\t\tAD\t0\n\t\tTS\tFBANK\t\t# SELECT GOTO ADDRESS\n\t\tMASK\tLOW10\n\t\tINDEX\tA\n\t\tCA\t10000\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO \t+1\t# WITH ADDRESS IN A.\n\nSWBRANCH\tCA\tBANKSET\t\t# SWITCH INSTRUCTIONS WHICH ELECT TO\n\t\tTS\tFBANK\t\t# BRANCH COME HERE TO DO SO.\n\t\tINDEX\tLOC\n\t\tCA\t1\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO \t+1\n\n# Page 1025\n# TRIPLE PRECISION BRANCHING ROUTINE.  IF CALLING TC IS AT L, RETURN IS AS FOLLOWS:\n#\tL+1\tIF MPAC IS GREATER THAN ZERO.\n#\tL+2\tIF MPAC IS EQUAL TO +0 OR -0.\n#\tL+3\tIF MPAC IS LESS THAN ZERO.\n\nBRANCH\t\tCCS\tMPAC\n\t\tTC\tQ\n\t\tTCF\t+2\t\t# ON ZERO.\n\t\tTCF\tNEG\n\n\t\tCCS\tMPAC \t+1\n\t\tTC\tQ\n\t\tTCF\t+2\n\t\tTCF\tNEG\n\n\t\tCCS\tMPAC \t+2\n\t\tTC\tQ\n\t\tTCF\t+2\n\t\tTCF\tNEG\n\nQ+1\t\tINDEX\tQ\n\t\tTC\t1\n\nNEG\t\tINDEX\tQ\t\t# IF FIRST NON-ZERO REGISTER WAS NEGATIVE.\n\t\tTC\t2\n\nQ+2\t\t=\tNEG\n\n# ITRACE (3) REFERS TO \"EXIT\".\n\nEXIT\t\tCA\tBANKSET\t\t# RESTORE USER'S BANK SETTING, AND LEAVE\n\t\tTS\tBBANK\t\t# INTERPRETIVE MODE.\n\t\tINDEX\tLOC\n\t\tTC\t1\n\n# Page 1026\n# SECTION 3 -- ADD/SUBTRACT PACKAGE.\n#\n# THE FOLLOWING OPERATIONS ARE PROVIDED FOR ADDING TO AND SUBTRACTING FROM THE MULTI-PURPOSE ACCUMULATOR\n# MPAC:\n#\t1.\tDAD\tDOUBLE PRECISION ADD.\n#\t2.\tDSU\tDOUBLE PRECISION SUBTRACT.\n#\t3.\tBDSU\tDOUBLE PRECISION SUBTRACT FROM.\n#\t4.\tTAD\tTRIPLE PRECISION ADD.\n#\t5.\tVAD\tVECTOR ADD.\n#\t6.\tVSU\tVECTOR SUBTRACT.\n#\t7.\tBVSU\tVECTOR SUBTRACT FROM.\n# THE INTERPRETIVE OVERFLOW INDICATOR OVFIND IS SET NON-ZERO IF OVERFLOW OCCURS IN ANY OF THE ABOVE.\n\nVSU\t\tCAF\tBIT15\t\t# CHANGES 0 TO DCS.\n\t\tTCF\t+2\n\nVAD\t\tCAF\tPRIO30\t\t# CHANGES 0 TO DCA.\n\t\tADS\tADDRWD\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tREAD\tHISCALAR\t# DCA 2 OR DCS 2\n\t\tDAS \tMPAC \t+3\n\t\tEXTEND\t\t\t# CHECK OVERFLOW.\n\t\tBZF\t+2\n\t\tTC\tOVERFLWY\n\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tREAD\tCHAN5\t\t# DCA 4 OR DCS 4\n\t\tDAS\tMPAC \t+5\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWZ\n\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tREAD\tLCHAN\t\t# DCA 0 OR DCS 0\n\t\tTCF\tENDVXV\n\nDAD\t\tEXTEND\n\t\tINDEX \tADDRWD\n\t\tDCA\t0\nENDVXV\t\tDAS\tMPAC\t\t# VXV FINISHES HERE.\n\t\tEXTEND\n\t\tBZF\tDANZIG\n\n# Page 1027\nSETOVF\t\tTC\tOVERFLOW\n\t\tTCF\tDANZIG\n\n# Page 1028\nDSU\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCS\t0\n\t\tTCF\tENDVXV\n\nOVERFLWZ\tTS\tL\t\t# ENTRY FOR THIRD COMPONENT.\n\t\tCAF\tFIVE\n\t\tTCF\t+3\n\nOVERFLWY\tTS\tL\t\t# ENTRY FOR SECOND COMPONENT.\n\t\tCAF\tTHREE\n\t\tXCH\tL\n\nOVERFLOW\tINDEX\tA\t\t# ENTRY FOR 1ST COMP OR DP (L=0).\n\t\tCS\tLIMITS\t\t# PICK UP POSMAX OR NEGMAX.\n\t\tTS\tBUF\n\t\tEXTEND\n\t\tAUG\tA\t\t# FORCE OVERFLOW.\n\t\tINDEX\tL\n\t\tADS\tMPAC \t+1\n\t\tTS\t7\n\t\tCAF\tZERO\n\t\tAD\tBUF\n\t\tINDEX\tL\n\t\tADS\tMPAC\n\t\tTS\t7\n\t\tTC\tQ\t\t# NO OVERFLOW EXIT.\n\t\tTCF\tSETOVF2\t\t# SET OVFIND AND EXIT.\n\nBVSU\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t2\n\t\tDXCH\tMPAC \t+3\n\t\tEXTEND\n\t\tDCOM\n\t\tDAS\tMPAC \t+3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWY\n\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t4\n\t\tDXCH\tMPAC \t+5\n\t\tEXTEND\n\t\tDCOM\n\t\tDAS\tMPAC \t+5\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWZ\n\n# Page 1029\nBDSU\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n\t\tEXTEND\n\t\tDCOM\n\t\tTCF\tENDVXV\n\n# Page 1030\n# TRIPLE PRECISION ADD ROUTINE.\n\nTAD\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t1\t\t# ADD MINOR PARTS FIRST.\n\t\tDAS\tMPAC \t+1\n\t\tINDEX\tADDRWD\n\t\tAD\t0\n\t\tAD\tMPAC\n\t\tTS\tMPAC\n\t\tTCF\tDANZIG\n\n\t\tTCF\tSETOVF\t\t# SET OVFIND IF SUCH OCCURS.\n\n# Page 1031\n# ARITHMETIC SUBROUTINES REQUIRED IN FIXED-FIXED.\n#\t1.  DMPSUB\tDOUBLE PRECISION MULTIPLY, MULTIPLY THE CONTENTS OF MPAC,+1 BY THE DP WORD WHOSE ADDRESS\n#\t\t\tIS IN ADDRWD AND LEAVE A TRIPLE-PRECISION RESULT IN MPAC.\n#\t2.  ROUNDSUB\tROUND THE TRIPLE PRECISION CONTENTS OF MPAC TO DOUBLE PRECISION.\n#\t3.  DOTSUB\tTAKE THE DOT PRODUCT OF THE VECTOR IN MPAC AND THE VECTOR WHOSE ADDRESS IS IN ADDRWD\n#\t\t\tAND LEAVE THE TRIPLE PRECISION RESULT IN MPAC.\n#\t4.  POLY\tUSING THE CONTENTS OF MPAC AS A DP ARGUMENT, EVALUATE THE POLYNOMIAL WHOSE DEGREE AND\n#\t\t\tCOEFFICIENTS IMMEDIATELY FOLLOW THE TC POLY INSTRUCTION (SEE ROUTINE FOR DETAILS).\n\nDMP\t\tINDEX\tQ\t\t# BASIC SUBROUTINE FOR USE BY PINBALL, ETC\n\t\tCAF\t0\t\t# ADRES OF ARGUMENT FOLLOWS  TC DMP .\n\t\tINCR\tQ\n -1\t\tTS\tADDRWD\t\t# (PROLOGUE FOR SETTING ADDRWD.)\n\nDMPSUB\t\tINDEX\tADDRWD\t\t# GET MINOR PART OF OPERAND AT C(ADDRWD).\n\t\tCA\t1\n\t\tTS\tMPAC \t+2\t# THIS WORKS FOR SQUARING MPAC AS WELL.\n\t\tCAF\tZERO\t\t# SET MPAC +1 TO ZERO SO WE CAN ACCUMULATE\n\t\tXCH\tMPAC \t+1\t# THE PARTIAL PRODUCTS WITH DAS\n\t\tTS\tMPTEMP\t\t# INSTRUCTIONS.\n\t\tEXTEND\n\t\tMP\tMPAC \t+2\t# MINOR OF MPAC X MINOR OF C(ADDRWD).\n\n\t\tXCH\tMPAC \t+2\t# DISCARD MINOR PART OF ABOVE RESULT AND\n\t\tEXTEND\t\t\t# FORM MAJOR OF MPAC X MINOR OF C(ADDRWD).\n\t\tMP\tMPAC\n\t\tDAS\tMPAC \t+1\t# GUARANTEED NO OVERFLOW.\n\n\t\tINDEX\tADDRWD\t\t# GET MAJOR PART OF ARGUMENT AT C(ADDRWD).\n\t\tCA\t0\n\t\tXCH\tMPTEMP\t\t# SAVE AND BRING OUT MINOR OF MPAC.\nDMPSUB2\t\tEXTEND\n\t\tMP\tMPTEMP\t\t# MAJOR OF C(ADDRWD) X MINOR OF MPAC.\n\t\tDAS\tMPAC \t+1\t# ACCUMULATE, SETTING A TO NET OVERFLOW.\n\n\t\tXCH\tMPAC\t\t# SETTING MPAC TO 0 OR +-1.\n\t\tEXTEND\n\t\tMP\tMPTEMP\t\t# MAJOR OF MPAC X MAJOR OF C(ADDRWD).\n\t\tDAS\tMPAC\t\t# GUARANTEED NO OVERFLOW.\n\t\tTC\tQ\t\t# 49 MCT = .573 MS. INCLUDING RETURN.\n\n# Page 1032\n# ROUND MPAC TO DOUBLE PRECISION, SETTING OVFIND ON THE RARE EVENT OF OVERFLOW.\n\nROUNDSUB\tCAF\tZERO\t\t# SET MPAC +2 = 0 FOR SCALARS AND CHANGE\n +1\t\tTS\tMODE\t\t# MODE TO DP.\n\nVROUND\t\tXCH\tMPAC \t+2\t# BUT WE NEEDN'T TAKE THE TIME FOR VECTORS.\n\t\tDOUBLE\n\t\tTS\tL\n\t\tTC\tQ\n\n\t\tAD\tMPAC \t+1\t# ADD ROUDING BIT IF MPAC +2 WAS GREATER\n\t\tTS\tMPAC \t+1\t# THAN .5 IN MAGNITUDE.\n\t\tTC\tQ\n\n\t\tAD\tMPAC\t\t# PROPAGATE INTERFLOW.\n\t\tTS\tMPAC\n\t\tTC\tQ\n\nSETOVF2\t\tTS\tOVFIND\t\t# (RARE).\n\t\tTC\tQ\n\n# Page 1033\n# THE DOT PRODUCT SUBROUTINE USUALLY FORMS THE DOT PRODUCT OF THE VECTOR IN MPAC WITH A STANDARD SIX\n# REGISTER VECTOR WHOSE ADDRESS IS IN ADDRWD.  IN THIS CASE C(DOTINC) ARE SET TO 2.   VXM, HOWEVER, SETS C(DOTINC) TO\n# 6 SO THAT DOTSUB DOTS MPAC WITH A COLUMN VECTOR OF THE MATRIX IN QUESTION IN THIS CASE.\n\nPREDOT\t\tCAF\tTWO\t\t# PROLOGUE TO SET DOTINC TO 2.\n\t\tTS\tDOTINC\n\nDOTSUB\t\tEXTEND\n\t\tQXCH\tDOTRET\t\t# SAVE RETURN\n\t\tTC\tDMPSUB\t\t# DOT X COMPONENTS.\n\t\tDXCH\tMPAC \t+3\t# POSITION Y COMPONENT OF MPAC FOR\n\t\tDXCH\tMPAC\t\t# MULTIPLICATION WHILE SAVING RESULT IN\n\t\tDXCH\tBUF\t\t# THREE WORD BUFFER, BUF.\n\t\tCA\tMPAC \t+2\n\t\tTS\tBUF \t+2\n\n\t\tCA\tDOTINC\t\t# ADVANCE ADDRWD TO Y COMPONENT OF\n\t\tADS\tADDRWD\t\t# OTHER ARGUMENT.\n\t\tTC\tDMPSUB\n\t\tDXCH\tMPAC \t+1\t# ACCUMULATE PARTIAL PRODUCTS.\n\t\tDAS\tBUF \t+1\n\t\tAD\tMPAC\n\t\tAD\tBUF\n\t\tTS\tBUF\n\t\tTCF\t+2\n\t\tTS\tOVFIND\t\t# IF OVERFLOW OCCURS.\n\n\t\tDXCH\tMPAC \t+5\t# MULTIPLY Z COMPONENTS.\n\t\tDXCH\tMPAC\n\t\tCA\tDOTINC\n\t\tADS\tADDRWD\n\t\tTC\tDMPSUB\nENDDOT\t\tDXCH\tBUF \t+1\t# LEAVE FINAL ACCUMULATION IN MPAC.\n\t\tDAS\tMPAC \t+1\n\t\tAD\tMPAC\n\t\tAD\tBUF\n\t\tTS\tMPAC\n\t\tTC\tDOTRET\n\n\t\tTC\tOVERFLOW\t# ON OVERFLOW HERE.\n\t\tTC\tDOTRET\n\n# Page 1034\n# DOUBLE PRECISION POLYNOMIAL EVALUATOR\n#\t                          N        N-1\n#\tTHIS ROUTINE EVALUATES A X  + A   X    + ... + A  X + A  LEAVING THE DP RESULT IN MPAC ON EXIT.\n#\t                        N      N-1              1      0\n#\n# THE ROUTINE HAS TWO ENTRIES\n#\n#\t1\tENTRY THRU POWRSERS.  THE COEFFICIENTS MAY BE EITHER IN FIXED OR ERASABLE E.  THE CALL IS BY\n#\t\tTC POWRSERS, AND THE RETURN IS TO LOC(TC POWRSERS)+1.  THE ENTERING DATA MUST BE AS FOLLOWS:\n#\n#\t\t\tA\t\tSP\tLOC-3\t\t# ADDRESS FOR REFERENCING COEF TABLE\n#\t\t\tL\t\tSP\tN-1\t\t# N IS THE DEGREE OF THE POWER SERIES\n#\t\t\tMPAC\t\tDP\tX\t\t# ARGUMENT\n#\t\t\tLOC-2N\t\tDP\tA(0)\n#\t\t\t\t\t...\n#\t\t\tLOC\t\tDP\tA(N)\n#\n#\t2.\tENTRY THRU POLY.  THE CALL TO POLY AND THE ENTERING DATA MUST BE AS FOLLOWS\n#\n#\t\t\tMPAC\t\tDP\tX\t\t# ARGUMENT\n#\t\t\tLOC\t\tTC\tPOLY\n#\t\t\tLOC+1\t\tSP\tN-1\n#\t\t\tLOC+2\t\tDP\tA(0)\n#\t\t\t\t\t...\n#\t\t\tLOC+2N+2\tDP\tA(N)\t\t# RETURN IS TO LOC+2N+4\n\nPOWRSERS\tEXTEND\n\t\tQXCH\tPOLYRET\t\t# RETURN ADDRESS\n\t\tTS\tPOLISH\t\t# POWER SERIES ADDRESS\n\t\tLXCH\tPOLYCNT\t\t# N-1 TO COUNTER\n\t\tTCF\tPOLYCOM\t\t# SKIP SET UP BY POLY\n\nPOLY\t\tINDEX\tQ\n\t\tCAF\t0\n\t\tTS\tPOLYCNT\t\t# N-1 TO COUNTER\n\t\tDOUBLE\n\t\tAD\tQ\n\t\tTS\tPOLISH\t\t# L(A(N))-3 TO POLISH\n\t\tAD\tFIVE\n\t\tTS\tPOLYRET\t\t# STORE RETURN ADDRESS\n\nPOLYCOM\t\tCAF\tLVBUF\t\t# INCOMING X WILL BE MOVED TO VBUF, SO\n\t\tTS\tADDRWD\t\t# SET ADDRWD SO DMPSUB WILL MPY BY VBUF.\n\n\t\tEXTEND\n\t\tINDEX\tPOLISH\n\t\tDCA\t3\n\n# Page 1035\n\t\tDXCH\tMPAC\t\t# LOAD A(N) INTO MPAC\n\t\tDXCH\tVBUF\t\t# SAVING X IN VBUF\n\t\tTCF\tPOLY2\n\nPOLYLOOP\tTS\tPOLYCNT\t\t# SAVE DECREMENTD LOOP COUNTER\n\t\tCS\tTWO\n\t\tADS\tPOLISH\t\t# REGRESS COEFFICIENT POINTER\n\nPOLY2\t\tTC\tDMPSUB\t\t# MULTIPLY BY X\n\t\tEXTEND\n\t\tINDEX\tPOLISH\n\t\tDCA\t1\t\t# ADD IN NEXT COEFFICIENT\n\t\tDAS\tMPAC\t\t# USER'S RESPONSIBILITY TO ASSURE NO OVFLOW\n\n\t\tCCS\tPOLYCNT\n\t\tTCF\tPOLYLOOP\n\t\tTC\tPOLYRET\t\t# RETURN CALLER\n\n# Page 1036\n# MISCELLANEOUS MULTI-PRECISION ROUTINES REQUIRED IN FIXED-FIXED BUT NOT USED BY THE INTERPRETER.\n\nDPAGREE\t\tCAF\tZERO\t\t# DOUBLE PRECISION ENTRY --\n\t\tTS\tMPAC \t+2\t# ZERO LOW-ORDER WORD\n\nTPAGREE\t\tLXCH\tQ\t\t# FORCE SIGN AGREEMENT AMONG THE TRIPLE\n\t\tTC\tBRANCH\t\t# PRECISION CONTENTS OF MPAC.  RETURNING\n\t\tTCF\tARG+\t\t# WITH SIGNUM OF THE INPUT IN A.\n\t\tTCF\tARGZERO\n\n\t\tCS\tPOSMAX\t\t# IF NEGATIVE.\n\t\tTCF\t\t+2\n\nARG+\t\tCAF\tPOSMAX\n\t\tTS\tQ\n\t\tEXTEND\n\t\tAUG\tA\t\t# FORMS +-1.0.\n\t\tAD\tMPAC \t+2\n\t\tTS\tMPAC \t+2\n\t\tCAF\tZERO\n\t\tAD\tQ\n\t\tAD\tMPAC \t+1\n\t\tTS\tMPAC \t+1\n\t\tCAF\tZERO\n\t\tAD\tQ\t\t# Q STILL HAS POSMAX OR NEGMAX IN IT.\n\t\tAD\tMPAC\nARGZERO2\tTS\tMPAC\t\t# ALWAYS SKIPPING UNLESS ARGZERO.\n\t\tTS\tMPAC \t+1\n\t\tTC\tL\t\t# RETURN VIA L.\n\nARGZERO\t\tTS\tMPAC \t+2\t# SET ALL THREE MPAC REGISTERS TO ZERO.\n\t\tTCF\tARGZERO2\n\n# SHORTMP MULTIPLIES THE TP CONTENTS OF MPAC BY THE SINGLE PRECISION NUMBER ARRIVING IN A.\n\nSHORTMP\t\tTS\tMPTEMP\n\t\tEXTEND\n\t\tMP\tMPAC \t+2\n\t\tTS\tMPAC \t+2\nSHORTMP2\tCAF\tZERO\t\t# SO SUBSEQUENT DAS WILL WORK.\n\t\tXCH\tMPAC \t+1\n\t\tTCF\tDMPSUB2\n\n# Page 1037\n# DMPNSUB MULTIPLIES THE DP FRACTION ARRIVING IN MPAC BY THE SP\n# INTEGER ARRIVING IN A.  THE DP PRODUCT DEPARTS BOTH IN MPAC AND IN\n# A AND L.  NOTE THAT DMPNSUB NORMALLY INCREASES THE MAGNITUDE OF THE\n# CONTENTS OF MPAC.  THE CUSTOMER MUST INSURE THAT B(A) X B(MPAC,MPAC+1)\n# AND B(A) X B(MPAC) ARE LESS THAN 1 IN MAGNITUDE, WHERE B, AS IS OBVIOUS,\n# INDICATES THE ARRIVING CONTENTS.\n\nDMPNSUB\t\tTS\tDMPNTEMP\n\t\tEXTEND\n\t\tMP\tMPAC \t+1\n\t\tDXCH\tMPAC\t\t# LOW PRODUCT TO MPAC, HIGH FACTOR TO A\n\t\tEXTEND\n\t\tMP\tDMPNTEMP\n\t\tCA\tL\n\t\tADS\tMPAC\t\t# COMPLETING THE PRODUCT IN MPAC\n\t\tEXTEND\n\t\tDCA\tMPAC\t\t# BRINGING THE PRODUCT INTO A AND L\n\t\tTC\tQ\n\n# Page 1038\n# MISCELLANEOUS VECTOR OPERATIONS.  INCLUDED HERE ARE THE FOLLOWING.\n#\t1.\tDOT\tDP VECTOR DOT PRODUCT.\n#\t2.\tVXV\tDP VECTOR CROSS PRODUCT.\n#\t3.\tVXSC\tDP VECTOR TIMES SCALAR.\n#\t4.\tV/SC\tDP VECTOR DIVIDED BY SCALAR.\n#\t5.\tVPROJ\tDP VECTOR PROJECTION.  ( (MPAC.X)MPAC ).\n#\t6.\tVXM\tDP VECTOR POST-MULTIPLIED BY MATRIX.\n#\t7.\tMXV\tDP VECTOR PRE-MULTIPLIED BY MATRIX.\n\nDOT\t\tTC\tPREDOT\t\t# DO THE DOT PRODUCT AND EXIT, CHANGING\nDMODE\t\tCAF\tZERO\t\t# THE MODE TO DP SCALAR.\n\t\tTCF\tNEWMODE\n\nMXV\t\tCAF\tTWO\t\t# SET UP MATINC AND DOTINC FOR ROW\n\t\tTS\tMATINC\t\t# VECTORS.\n\t\tTCF\tVXM/MXV\t\t# GO TO COMMON PORTION.\n\nVXM\t\tCS\tTEN\t\t# SET MATINC AND DOTINC TO REFER TO MATRIX\n\t\tTS\tMATINC\t\t# AS THREE COLUMN VECTORS.\n\t\tCAF\tSIX\n\n# Page 1039\n# COMMON PORTION OF MXV AND VXM.\n\nVXM/MXV\t\tTS\tDOTINC\n# ITRACE (2) REFERS TO \"VXM/MXV\".\n\t\tTC\tMPACVBUF\t# SAVE VECTOR IN MPAC FOR FURTHER USE.\n\n\t\tTC\tDOTSUB\t\t# GO DOT TO GET X COMPONENT OF ANSWER.\n\t\tEXTEND\n\t\tDCA\tVBUF\t\t# MOVE MPAC VECTOR BACK INTO MPAC, SAVING\n\t\tDXCH\tMPAC\t\t# NEW X COMPONENT IN BUF2.\n\t\tDXCH\tBUF2\n\t\tEXTEND\n\t\tDCA\tVBUF \t+2\n\t\tDXCH\tMPAC \t+3\n\t\tEXTEND\n\t\tDCA\tVBUF \t+4\n\t\tDXCH\tMPAC \t+5\n\t\tCA\tMATINC\t\t# INITIALIZE ADDRWD FOR NEXT DOT PRODUCT.\n\t\tADS\tADDRWD\t\t# FORMS HAS ADDRESS OF NEXT COLUMN(ROW).\n\n\t\tTC\tDOTSUB\n\t\tDXCH\tVBUF\t\t# MORE GIVEN VECTOR BACK TO MPAC, SAVING Y\n\t\tDXCH\tMPAC\t\t# COMPONENT OF ANSWER IN VBUF +2.\n\t\tDXCH\tVBUF \t+2\n\t\tDXCH\tMPAC\t+3\n\t\tDXCH\tVBUF \t+4\n\t\tDXCH\tMPAC \t+5\n\t\tCA\tMATINC\t\t# FORM ADDRESS OF LAST COLUMN OR ROW.\n\t\tADS\tADDRWD\n\n\t\tTC\tDOTSUB\n\t\tDXCH\tBUF2\t\t# ANSWER NOW COMPLETE. PUT COMPONENTS INTO\n\t\tDXCH\tMPAC\t\t# PROPER MPAC REGISTERS.\n\t\tDXCH\tMPAC \t+5\n\t\tDXCH\tVBUF \t+2\n\t\tDXCH\tMPAC \t+3\n\t\tTCF\tDANZIG\t\t# EXIT.\n\n# Page 1040\n# VXSC -- VECTOR TIMES SCALAR.\n\nVXSC\t\tCCS\tMODE\t\t# TEST PRESENT MODE.\n\t\tTCF\tDVXSC\t\t# SEPARATE ROUTINE WHEN SCALAR IS IN MPAC.\n\t\tTCF\tDVXSC\n\nVVXSC\t\tTC\tDMPSUB\t\t# COMPUTE X COMPONENT\n\t\tTC\tVROUND\t\t# AND ROUND IT.\n\t\tDXCH\tMPAC \t+3\t# PUT Y COMPONENT INTO MPAC SAVING MPAC IN\n\t\tDXCH\tMPAC\t\t# MPAC +3.\n\t\tDXCH\tMPAC \t+3\n\n\t\tTC\tDMPSUB\t\t# DO SAME FOR Y AND Z COMPONENTS.\n\t\tTC\tVROUND\n\t\tDXCH\tMPAC \t+5\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC\t+5\n\n\t\tTC\tDMPSUB\n\t\tTC\tVROUND\nVROTATEX\tDXCH\tMPAC\t\t# EXIT USED TO RESTORE MPAC AFTER THIS\n\t\tDXCH\tMPAC \t+5\t# TYPE OF ROTATION.  CALLED BY VECTOR SHIFT\n\t\tDXCH\tMPAC \t+3\t# RIGHT, V/SC, ETC.\n\t\tDXCH\tMPAC\n\t\tTCF\tDANZIG\n\n# Page 1041\n# DP VECTOR PROJECTION ROUTINE.\n\nVPROJ\t\tTC\tPREDOT\t\t# (MPAC.X)MPAC IS COMPUTED AND LEFT IN\n\t\tCS\tFOUR\t\t# MPAC.  DO DOT AND FALL INTO DVXSC.\n\t\tADS\tADDRWD\n\n# VXSC WHEN SCALAR ARRIVES IN MPAC AND VECTOR IS AT X.\n\nDVXSC\t\tEXTEND\t\t\t# SAVE SCALAR IN MPAC +3 AND GET X\n\t\tDCA\tMPAC\t\t# COMPONENT OF ANSWER.\n\t\tDXCH\tMPAC \t+3\n\t\tTC\tDMPSUB\n\t\tTC\tVROUND\n\n\t\tCAF\tTWO\t\t# ADVANCE ADDRWD TO Y COMPONENT OF X.\n\t\tADS\tADDRWD\n\t\tEXTEND\n\t\tDCA\tMPAC \t+3\t# PUT SCALAR BACK INTO MPAC AND SAVE\n\t\tDXCH\tMPAC\t\t# X RESULT IN MPAC +5.\n\t\tDXCH\tMPAC \t+5\n\t\tTC\tDMPSUB\n\t\tTC\tVROUND\n\n\t\tCAF\tTWO\n\t\tADS\tADDRWD\t\t# TO Z COMPONENT.\n\t\tDXCH\tMPAC \t+3\t# BRING SCALAR BACK, PUTTING Y RESULT IN\n\t\tDXCH\tMPAC\t\t# THE PROPER PLACE.\n\t\tDXCH\tMPAC \t+3\n\t\tTC\tDMPSUB\n\t\tTC\tVROUND\n\n\t\tDXCH\tMPAC\t\t# PUT Z COMPONENT IN PROPER PLACE, ALSO\n\t\tDXCH\tMPAC \t+5\t# POSITIONING X.\n\t\tDXCH\tMPAC\n\n\t\tTCF\tVMODE\t\t# MODE HAS CHANGED TO VECTOR.\n\n# Page 1042\n# VECTOR CROSS PRODUCT ROUTINE CALCULATES (X M -X M ,X M -X M ,X M -X M ) WHERE M IS THE VECTOR IN\n#                                           3 2  2 3  1 3  3 1  2 1  1 2\n# MPAC AND X THE VECTOR AT THE GIVEN ADDRESS.\n\nVXV\t\tEXTEND\n\t\tDCA\tMPAC \t+5\t# FORM UP M3X1, LEAVING M1 IN VBUF.\n\t\tDXCH\tMPAC\n\t\tDXCH\tVBUF\n\t\tTC\tDMPSUB\t\t# BY X1.\n\n\t\tEXTEND\n\t\tDCS\tMPAC \t+3\t# CALCULATE -X1M2, SAVING X1M3 IN VBUF +2.\n\t\tDXCH\tMPAC\n\t\tDXCH\tVBUF \t+2\n\t\tTC\tDMPSUB\n\n\t\tCAF\tTWO\t\t# ADVANCE ADDRWD TO X2.\n\t\tADS\tADDRWD\n\t\tEXTEND\n\t\tDCS\tMPAC \t+5\t# PREPARE TO GET -X2M3, SAVING -X1M2 IN\n\t\tDXCH\tMPAC\t\t# MPAC +5.\n\t\tDXCH\tMPAC \t+5\n\t\tTC\tDMPSUB\n\n\t\tEXTEND\n\t\tDCA\tVBUF\t\t# GET X2M1, SAVING -X2M3 IN VBUF +4.\n\t\tDXCH\tMPAC\n\t\tDXCH\tVBUF \t+4\n\t\tTC\tDMPSUB\n\n\t\tCAF\tTWO\t\t# ADVANCE ADDRWD TO X3.\n\t\tADS\tADDRWD\n\t\tEXTEND\n\t\tDCS\tVBUF\t\t# GET -X3M1, ADDING X2M1 TO MPAC +5 TO\n\t\tDXCH\tMPAC\t\t# COMPLETE THE Z COMPONENT OF THE ANSWER.\n\t\tDAS\tMPAC \t+5\n\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWZ\n\n\t\tTC\tDMPSUB\n\t\tDXCH\tVBUF \t+2\t# MOVE X1M3 TO MPAC +3 SETTING UP FOR X3M2\n\t\tDXCH\tMPAC \t+3\t# AND ADD -X3M1 TO MPAC +3 TO COMPLETE THE\n\t\tDXCH\tMPAC\t\t# Y COMPONENT OF THE RESULT.\n\t\tDAS\tMPAC \t+3\n\n\t\tEXTEND\n\t\tBZF\t\t+2\n# Page 1043\n\t\tTC OVERFLWY\n\n\t\tTC\tDMPSUB\n\t\tDXCH\tVBUF \t+4\t# GO ADD -X2M3 TO X3M2 TO COMPLETE THE X\n\t\tTCF\tENDVXV\t\t# COMPONENT (TAIL END OF DAD).\n\n# THE MPACVBUF SUBROUTINE SAVES THE VECTOR IN MPAC IN VBUF WITHOUT CLOBBERING MPAC.\n\nMPACVBUF\tEXTEND\t\t\t# CALLED BY MXV, VXM, AND UNIT.\n\t\tDCA\tMPAC\n\t\tDXCH\tVBUF\n\t\tEXTEND\n\t\tDCA\tMPAC \t+3\n\t\tDXCH\tVBUF \t+2\n\t\tEXTEND\n\t\tDCA\tMPAC \t+5\n\t\tDXCH\tVBUF \t+4\n\t\tTC\tQ\t\t# RETURN TO CALLER.\n\n# DOUBLE PRECISION SIGN AGREE ROUTINE.  ARRIVE WITH INPUT IN A+L.  OUTPUT IS IN A + L.\n\nALSIGNAG\tCCS\tA\t\t# TEST UPPER PART.\n\t\tTCF\tUPPOS\t\t# IT IS POSITIVE\n\t\tTC\tQ\t\t# ZERO\n\t\tTCF\tUPNEG\t\t# NEGATIVE\n\t\tTC\tQ\t\t# ZERO\n\nUPPOS\t\tXCH\tL\t\t# SAVE DECREMENTED UPPER PART.\n\t\tAD\tHALF\n\t\tAD\tHALF\n\t\tTS\tA\t\t# SKIPS ON OVERFLOW\n\t\tTCF\t+2\n\t\tINCR\tL\t\t# RESTORE UPPER TO ORIGINAL VALUE\n\t\tXCH\tL\t\t# SWAP A + L BANCK.\n\t\tTC\tQ\n\nUPNEG\t\tXCH\tL\t\t# SAVE COMPLEMENTED + DECREMENTED UPPER PT\n\t\tAD\tNEGMAX\n\t\tAD\tNEGONE\n\t\tTS\tA\n\t\tTCF\t+2\t\t# DON'T INCREMENT IF NO OVERFLOW.\n\t\tINCR\tL\n\t\tXCH\tL\n\t\tCOM\t\t\t# MAKE NEGATIVE AGAIN.\n\t\tTC\tQ\n\n# Page 1044\n# INTERPRETIVE INSTRUCTIONS WHOSE EXECUTION CONSISTS OF PRINCIPALLY CALLING SUBROUTINES.\n\nDMP1\t\tTC\tDMPSUB\t\t# DMP INSTRUCTIONS\n\t\tTCF\tDANZIG\n\nDMPR\t\tTC\tDMPSUB\n\t\tTC\tROUNDSUB +1\t# (C(A) = +0).\n\t\tTCF\tDANZIG\n\nDDV\t\tEXTEND\n\t\tINDEX\tADDRWD\t\t# MOVE DIVIDEND INTO BUF.\n\t\tDCA\t0\n\t\tTCF\tBDDV \t+4\n\nBDDV\t\tEXTEND\t\t\t# MOVE DIVISOR INTO MPAC SAVING MPAC, THE\n\t\tINDEX\tADDRWD\t\t# DIVIDEND, IN BUF.\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n +4\t\tDXCH\tBUF\n\t\tCAF\tZERO\t\t# DIVIDE ROUTINES IN BANK 0.\n\t\tTS\tFBANK\n\t\tTCF\tDDV/BDDV\n\nSETPD\t\tCA\tADDRWD\t\t# MUST SET TO WORK AREA, OR EBANK TROUBLE.\n\t\tTS\tPUSHLOC\n\t\tTCF\tNOIBNKSW\t# NO FBANK SWITCH REQUIRED.\n\nTSLC\t\tCAF\tZERO\t\t# SHIFTING ROUTINES LOCATED IN BANK 00.\n\t\tTS\tFBANK\n\t\tTCF\tTSLC2\n\nGSHIFT\t\tCAF\tLOW7\t\t# USED AS MASK AT GENSHIFT. THIS PROCESSES\n\t\tTS\tFBANK\t\t# ANY SHIFT INSTRUCTION (EXCEPT TSLC) WITH\n\t\tTCF\tGENSHIFT\t# AN ADDRESS (ROUTINES IN BANK 0).\n\n# Page 1045\n# THE FOLLOWING IS THE PROLOGUE TO V/SC.  IF THE PRESENT MODE IS VECTOR, IT SAVES THE SCALAR AT X IN BUF\n# AND CALLS THE V/SC ROUTINE IN BANK 0.  IF THE PRESENT MODE IS SCALAR, IT MOVES THE VECTOR AT X INTO MPAC, SAVING\n# THE SCALAR IN MPAC IN BUF BEFORE CALLING THE V/SC ROUTINE IN BANK 0.\n\nV/SC\t\tCCS\tMODE\n\t\tTCF\tDV/SC\t\t# MOVE VECTOR INTO MPAC.\n\t\tTCF\tDV/SC\n\nVV/SC\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\nV/SC1\t\tDXCH\tBUF\t\t# IN BOTH CASES, VECTOR IS NOW IN MPAC AND\n\t\tCAF\tZERO\t\t# SCALAR IN BUF.\n\t\tTS\tFBANK\n\t\tTCF\tV/SC2\n\nDV/SC\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t2\n\t\tDXCH\tMPAC \t+3\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t4\n\t\tDXCH\tMPAC \t+5\n\n\t\tCS\tONE\t\t# CHANGE MODE TO VECTOR.\n\t\tTS\tMODE\n\n\t\tEXTEND\n\t\tINDEX\tADDRWD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n\t\tTCF\tV/SC1\t\t# FINISH PROLOGUE AT COMMON SECTION.\n\n# Page 1046\n# SIGN AND COMPLEMENT INSTRUCTIONS.\n\nSIGN\t\tINDEX \tADDRWD\t\t# CALL COMP INSTRUCTION IF WORD AT X IS\n\t\tCCS\t0\t\t# NEGATIVE NON-ZERO.\n\t\tTCF\tDANZIG\n\t\tTCF\t+2\n\t\tTCF\tCOMP\t\t# DO THE COMPLEMENT.\n\n\t\tINDEX\tADDRWD\nCCSL\t\tCCS\t1\n\t\tTCF\tDANZIG\n\t\tTCF\tDANZIG\n\t\tTCF\tCOMP\n\t\tTCF\tDANZIG\nCOMP\t\tEXTEND\t\t\t# COMPLEMENT DP MPAC IN EVERY CASE.\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\n\t\tCCS\tMODE\t\t# EITHER COMPLEMENT MPAC +3 OR THE REST OF\n\t\tTCF\tDCOMP\t\t# THE VECTOR ACCUMULATOR.\n\t\tTCF\tDCOMP\n\n\t\tEXTEND\t\t\t# VECTOR COMPLEMENT.\n\t\tDCS\tMPAC \t+3\n\t\tDXCH\tMPAC \t+3\n\t\tEXTEND\n\t\tDCS\tMPAC \t+5\n\t\tDXCH\tMPAC \t+5\n\t\tTCF\tDANZIG\n\nDCOMP\t\tCS\tMPAC \t+2\n\t\tTS\tMPAC \t+2\n\t\tTCF\tDANZIG\n\n# Page 1047\n# THE FOLLOWING SHORT SHIFT CODES REQUIRE NO ADDRESS WORD:\n#\t1.\tSR1 TO SR4\tSCALAR SHIFT RIGHT.\n#\t2.\tSR1R TO SR4R\tSCALAR SHIFT RIGHT AND ROUND.\n#\t3.\tSL1 TO SL4\tSCALAR SHIFT LEFT.\n#\t4.\tSL1R TO SL4R\tSCALAR SHIFT LEFT AND ROUND.\n#\t5.\tVSR1 TO VSR8\tVECTOR SHIFT RIGHT (ALWAYS ROUNDS).\n#\t6.\tVSL1 TO VSL8\tVECTOR SHIFT LEFT (NEVER ROUNDS).\n# THE FOLLOWING CODES REQUIRE AND ADDRESS WHICH MAY BE INDEXED:*\n#\t1.\tSR\t\tSCALAR SHIFT RIGHT.\n#\t2.\tSRR\t\tSCALAR SHIFT RIGHT AND ROUND.\n#\t3.\tSL\t\tSCALAR SHIFT LEFT.\n#\t4.\tSLR\t\tSCALAR SHIFT LEFT AND ROUND.\n#\t5.\tVSR\t\tVECTOR SHIFT RIGHT.\n#\t6.\tVSL\t\tVECTOR SHIFT LEFT.\n# * IF THE ADDRESS IS INDEXED, AND THE INDEX MODIFICATION RESULTS IN A NEGATIVE SHIFT COUNT, A SHIFT OF THE\n# ABSOLUTE VALUE OF THE COUNT IS DONE IN THE OPPOSITE DIRECTION.\n\n\t\tBANK\t00\n\n\t\tCOUNT*\t$$/INTER\nSHORTT\t\tCAF\tSIX\t\t# SCALAR SHORT SHIFTS COME HERE.  THE SHIFT\n\t\tMASK\tCYR\t\t# COUNT-1 IS NOW IN BITS 2-3 OF CYR.  THE\n\t\tTS\tSR\t\t# ROUNDING BIT IS IN BIT1 AT THIS POINT.\n\n\t\tCCS\tCYR\t\t# SEE IF RIGHT OR LEFT SHIFT DESIRED.\n\t\tTCF\tTSSL\t\t# SHIFT LEFT.\n\nSRDDV\t\tDEC\t20\t\t# MPTEMP SETTING FOR SR BEFORE DDV.\n\nTSSR\t\tINDEX\tSR\t\t# GET SHIFTING BIT.\n\t\tCAF\tBIT14\n\t\tTS\tMPTEMP\n\n\t\tCCS\tCYR\t\t# SEE IF A ROUND IS DESIRED.\nRIGHTR\t\tTC\tMPACSRND\t# YES -- SHIFT RIGHT AND ROUND.\n\t\tTCF\tNEWMODE\t\t# SET MODE TO DP (C(A) = 0).\nMPACSHR\t\tCA\tMPTEMP\t\t# DO A TRIPLE PRECISION SHIFT RIGHT.\n\t\tEXTEND\n\t\tMP\tMPAC \t+2\n +3\t\tTS\tMPAC \t+2\t# (EXIT FROM SQRT AND ABVAL).\n\t\tCA\tMPTEMP\n\t\tEXTEND\n\t\tMP\tMPAC\t\t# SHIFT MAJOR PART INTO A,L AND PLACE IN\n# Page 1048\n\t\tDXCH\tMPAC\t\t# MPAC,+1.\n\t\tCA\tMPTEMP\n\t\tEXTEND\n\t\tMP\tL\t\t# ORIGINAL C(MPAC +1).\n\t\tDAS\tMPAC \t+1\t# GUARANTEED NO OVERFLOW.\n\t\tTCF\tDANZIG\n\n# MPAC SHIFT RIGHT AND ROUND SUBROUTINES\n\nMPACSRND\tCA\tMPAC \t+2\t# WE HAVE TO DO ALL THREE MULTIPLIES SINCE\n\t\tEXTEND\t\t\t# MPAC +1 AND MPAC +2 MIGHT HAVE SIGN\n\t\tMP\tMPTEMP\t\t# DISAGREEMENT WITH A SHIFT RIGHT OF L.\n\t\tXCH\tMPAC \t+1\n\t\tEXTEND\n\t\tMP\tMPTEMP\n\t\tXCH\tMPAC \t+1\t# TRIAL MINOR PART.\n\t\tAD\tL\n\nVSHR2\t\tDOUBLE\t\t\t# (FINISH VECTOR COMPONENT SHIFT RIGHT\n\t\tTS\tMPAC \t+2\t# AND ROUND.)\n\t\tTCF\t+2\n\t\tADS\tMPAC \t+1\t# GUARANTEED NO OVERFLOW.\n\n\t\tCAF\tZERO\n\t\tTS\tMPAC \t+2\n\t\tXCH\tMPAC\t\t# SETTING TO ZERO SO FOLLOWING DAS WORKS.\n\t\tEXTEND\n\t\tMP\tMPTEMP\n\t\tDAS\tMPAC\t\t# AGAIN NO OVERFLOW.\n\t\tTC\tQ\n\nVSHRRND\t\tCA\tMPTEMP\t\t# ENTRY TO SHIFT RIGHT AND ROUND MPAC WHEN\n\t\tEXTEND\t\t\t# MPAC CONTAINS A VECTOR COMPONENT.\n\t\tMP\tMPAC \t+1\n\t\tTS\tMPAC \t+1\n\t\tXCH\tL\n\t\tTCF\tVSHR2\t\t# GO ADD ONE IF NECESSARY AND FINISH.\n\n# Page 1049\n# ROUTINE FOR SHORT SCALAR SHIFT LEFT (AND MAYBE ROUND).\n\nTSSL\t\tCA\tSR\t\t# GET SHIFT COUNT FOR SR.\n +1\t\tTS\tMPTEMP\n\n +2\t\tEXTEND\t\t\t# ENTRY HERE FROM SL FOR SCALARS.\n\t\tDCA\tMPAC \t+1\t# SHIFTING LEFT ONE PLACE AT A TIME IS\n\t\tDAS\tMPAC \t+1\t# FASTER THAN DOING THE WHOLE SHIFT WITH\n\t\tAD\tMPAC\t\t# MULTIPLIES ASSUMING THAT FREQUENCY OF\n\t\tAD\tMPAC\t\t# SHIFT COUNTS GOES DOWN RAPIDLY AS A\n\t\tTS\tMPAC\t\t# FUNCTION OF THEIR MAGNITUDE.\n\t\tTCF \t+2\n\t\tTS\tOVFIND\t\t# OVERFLOW.  (LEAVES OVERFLOW-CORRECTED\n\t\t\t\t\t# RESULT ANYWAY).\n\t\tCCS\tMPTEMP\t\t# LOOP ON DECREMENTED SHIFT COUNT.\n\t\tTCF\tTSSL \t+1\n\n\t\tCCS\tCYR\t\t# SEE IF ROUND WANTED.\nROUND\t\tTC\tROUNDSUB\t# YES -- ROUND AND EXIT.\n\t\tTCF\tDANZIG\t\t# SL LEAVES A ZERO IN CYR FOR NO ROUND.\n\t\tTCF\tDANZIG\t\t# NO -- EXIT IMMEDIATELY\n\n# Page 1050\n# VECTOR SHIFTING ROUTINES.\n\nSHORTV\t\tCAF\tLOW3\t\t# SAVE 3 BIT SHIFT COUNT -- 1 WITHOUT\n\t\tMASK\tCYR\t\t# EDITING CYR.\n\t\tTS\tMPTEMP\n\t\tCCS\tCYR\t\t# SEE IF LEFT OR RIGHT SHIFT.\n\t\tTCF\tVSSL\t\t# VECTOR SHIFT LEFT.\nOCT176\t\tOCT\t176\t\t# USED IN PROCESSED SHIFTS WITH - COUNT.\n\nVSSR\t\tINDEX\tMPTEMP\t\t# (ENTRY FROM SR).  PICK UP SHIFTING BIT.\n\t\tCAF\tBIT14\t\t# MPTEMP CONTAINS THE SHIFT COUNT - 1.\n\t\tTS\tMPTEMP\n\t\tTC\tVSHRRND\t\t# SHIFT X COMPONENT.\n\n\t\tDXCH\tMPAC\t\t# SWAP X AND Y COMPONENTS.\n\t\tDXCH\tMPAC \t+3\n\t\tDXCH\tMPAC\n\t\tTC\tVSHRRND\t\t# SHIFT Y COMPONENT.\n\n\t\tDXCH\tMPAC\t\t# SWAP Y AND Z COMPONENTS.\n\t\tDXCH\tMPAC \t+5\n\t\tDXCH\tMPAC\n\t\tTC\tVSHRRND\t\t# SHIFT Z COMPONENT.\n\n\t\tTCF\tVROTATEX\t# RESTORE COMPONENTS TO PROPER PLACES.\n\n# Page 1051\n# VECTOR SHIFT LEFT -- DONE ONE PLACE AT A TIME.\n\n -1\t\tTS\tMPTEMP\t\t# SHIFTING LOOP.\n\nVSSL\t\tEXTEND\n\t\tDCA\tMPAC\n\t\tDAS\tMPAC\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLOW\n\n\t\tEXTEND\n\t\tDCA\tMPAC \t+3\n\t\tDAS\tMPAC \t+3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWY\n\n\t\tEXTEND\n\t\tDCA\tMPAC \t+5\n\t\tDAS\tMPAC \t+5\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tOVERFLWZ\n\n\t\tCCS\tMPTEMP\t\t# LOOP ON DECREMENTED SHIFT COUNTER.\n\t\tTCF\tVSSL \t-1\n\t\tTCF\tDANZIG\t\t# EXIT.\n\n# Page 1052\n# TSLC -- TRIPLE SHIFT LEFT AND COUNT.  SHIFTS MPAC LEFT UNTIL GREATER THAN .5 IN MAGNITUDE, LEAVING\n# THE COMPLEMENT OF THE NUMBER OF SHIFTS REQUIRED IN X.\n\nTSLC2\t\tTS\tMPTEMP\t\t# START BY ZEROING SHIFT COUNT (IN A NOW).\n\t\tTC\tBRANCH\t\t# EXIT WITH NO SHIFTING IF ARGUMENT ZERO.\n\t\tTCF\t+2\n\t\tTCF\tENDTSLC\t\t# STORES ZERO SHIFT COUNT IN THIS CASE.\n\n\t\tTC\tTPAGREE\t\t# MAY CAUSE UPSHIFT OF ONE EXTRA PLACE.\n\n\t\tCA\tMPAC\t\t# BEGIN NORMALIZATION LOOP.\n\t\tTCF\tTSLCTEST\n\nTSLCLOOP\tINCR\tMPTEMP\t\t# INCREMENT SHIFT COUNTER.\n\t\tEXTEND\n\t\tDCA\tMPAC \t+1\n\t\tDAS\tMPAC \t+1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\nTSLCTEST\tDOUBLE\t\t\t# SEE IF (ANOTHER) SHIFT IS REQUIRED\n\t\tOVSK\n\t\tTCF\tTSLCLOOP\t# YES -- INCREMENT COUNT AND SHIFT AGAIN.\n\nENDTSLC\t\tCS\tMPTEMP\n\t\tTCF\tSTORE1\t\t# STORE SHIFT COUNT AND RETURN TO DANZIG.\n\n# Page 1053\n# THE FOLLOWING ROUTINE PROCESSES THE GENERAL SHIFT INSTRUCTIONS SR, SRR, SL, AND SLR.\n# THE GIVEN ADDRESS IS DECODED AS FOLLOWS:\n#\tBITS 1-7\tSHIFT COUNT (SUBADDRESS) LESS THAN 125 DECIMAL.\n#\tBIT 8\t\tPSEUDO SIGN BIT (DETECTS CHANGE IN SIGN IN INDEXED SHIFTS).\n#\tBIT 9\t\t0 FOR LEFT SHIFT, AND 1 FOR RIGHT SHIFT.\n#\tBIT 10\t\t1 FOR TERMINAL ROUND ON SCALAR SHIFTS, 0 OTHERWISE\n#\tBITS 11-13\t0.\n#\tBIT 14\t\t1.\n#\tBIT 15\t\t0.\n# THE ABOVE ENCODING IS DONE BY THE YUL SYSTEM.\n\nGENSHIFT\tMASK\tADDRWD\t\t# GET SHIFT COUNT, TESTING FOR ZERO.\n\t\tCCS\tA\t\t# (ARRIVES WITH C(A) = LOW7).\n\t\tTCF\tGENSHFT2\t# IF NON-ZERO, PROCEED WITH DECREMENTED CT\n\n\t\tCAF\tBIT10\t\t# ZERO SHIFT COUNT.  NO SHIFTS NEEDED BUT\n\t\tMASK\tADDRWD\t\t# WE MIGHT HAVE TO ROUND MPAC ON SLR AND\n\t\tCCS\tA\t\t# SRR (SCALAR ONLY).\n\t\tTC\tROUNDSUB\n\t\tTCF\tDANZIG\n\nGENSHFT2\tTS\tMPTEMP\t\t# DECREMENTED SHIFT COUNT TO MPTEMP.\n\t\tCAF\tBIT8\t\t# TEST MEANING OF LOW SEVEN BIT COUNT IN\n\t\tEXTEND\t\t\t# MPTEMP NOW.\n\t\tMP\tADDRWD\n\t\tMASK\tLOW2\t\t# JUMPS ON SHIFT DIRECTION (BIT8) AND\n\t\tINDEX\tA\n\t\tTCF\t+1\t\t# ORIGINAL SHIFT DIRECTION (BIT 9)\n\t\tTCF\tRIGHT-\t\t# NEGATIVE SHIFT COUNT FOR SL OR SLR.\n\t\tTCF\tLEFT\t\t# SL OR SLR.\n\t\tTCF\tLEFT-\t\t# NEGATIVE SHIFT COUNT WITH SR OR SRR.\n\n# Page 1054\n# GENERAL SHIFT RIGHT\n\nRIGHT\t\tCCS\tMODE\t\t# SET IF VECTOR OR SCALAR.\n\t\tTCF\tGENSCR\n\t\tTCF\tGENSCR\n\n\t\tCA\tMPTEMP\t\t# SEE IF SHIFT COUNT LESS THAN 14D.\nVRIGHT2\t\tAD\tNEG12\n\t\tEXTEND\n\t\tBZMF\tVSSR\t\t# IF SO, BRANCH AND SHIFT IMMEDIATELY.\n\n\t\tAD\tNEGONE\t\t# IF NOT, REDUCE MPTEMP BY A TOTAL OF 14.\n\t\tTS\tMPTEMP\t\t# AND DO A SHIFT RIGHT AND ROUND BY 14.\n\t\tCAF\tZERO\t\t# THE ROUND AT THIS STAGE MAY INTRODUCE A\n\t\tTS\tL\t\t# ONE BIT ERROR IN A SHIFT RIGHT 15D.\n\t\tXCH\tMPAC\n\t\tXCH\tMPAC \t+1\n\t\tTC\tSETROUND\t# X COMPONENT NOW SHIFTED, SO MAKE UP THE\n\t\tDAS\tMPAC\t\t# ROUNDING QUANTITY (0 IN A AND 0 OR +-1\n\t\t\t\t\t# IN L).\n\t\tXCH\tMPAC \t+3\t# REPEAT THE ABOVE PROCESS FOR Y AND Z.\n\t\tXCH\tMPAC \t+4\n\t\tTC\tSETROUND\n\t\tDAS\tMPAC \t+3\t# NO OVERFLOW ON THESE ADDS.\n\n\t\tXCH\tMPAC \t+5\n\t\tXCH\tMPAC \t+6\n\t\tTC\tSETROUND\n\t\tDAS\tMPAC \t+5\n\n\t\tCCS\tMPTEMP\t\t# SEE IF DONE, DOING FINAL DECREMENT.\n\t\tTS\tMPTEMP\n\t\tTCF\tVRIGHT2\nBIASLO\t\tDEC\t.2974 \tB-1\t# SQRT CONSTANT\n\n\t\tTCF\tDANZIG\n\nSETROUND\tDOUBLE\t\t\t# MAKES UP ROUNDING QUANTITY FROM ARRIVING\n\t\tTS\tMPAC \t+2\t# C(A).  L IS ZERO INITIALLY.\n\t\tCAF\tZERO\n\t\tXCH\tL\n\t\tTC\tQ\t\t# RETURN AND DO THE DAS, RESETTING L TO 0.\n\n# Page 1055\n# PROCESS SR AND SRR FOR SCALARS.\n\nGENSCR\t\tCA\tMPTEMP\t\t# SEE IF THE ORIGINAL SHIFT COUNT WAS LESS\n +1\t\tAD\tNEG12\t\t# THAN 14D.\n\t\tEXTEND\n\t\tBZMF\tDOSSHFT\t\t# DO THE SHIFT IMMEDIATELY IF SO.\n\n +4\t\tAD\tNEGONE\t\t# IF NOT, DECREMENT SHIFT COUNT BY 14D AND\n\t\tTS\tMPTEMP\t\t# SHIFT MPAC RIGHT 14 PLACES.\n\t\tCAF\tZERO\n\t\tXCH\tMPAC\n\t\tXCH\tMPAC \t+1\n\t\tTS\tMPAC \t+2\n\t\tCCS\tMPTEMP\t\t# SEE IF FINISHED, DO FINAL DECREMENT.\n\t\tTS\tMPTEMP\n\t\tTC\tGENSCR\t+1\nSLOPEHI\t\tDEC\t.5884\t\t# SQRT CONSTANT.\n\t\tCAF\tBIT10\t\t# FINISHED WITH SHIFT.  SEE IF ROUND\n\t\tMASK\tADDRWD\t\t# WANTED.\n\t\tCCS\tA\n\t\tTC\tROUNDSUB\n\t\tTCF\tDANZIG\t\t# DO SO AND/OR EXIT.\n\nDOSSHFT\t\tINDEX\tMPTEMP\t\t# PICK UP SHIFTING BIT.\n\t\tCAF\tBIT14\n\t\tTS\tMPTEMP\n\t\tCAF\tBIT10\t\t# SEE IF TERMINAL ROUND DESIRED.\n\t\tMASK\tADDRWD\n\t\tCCS\tA\n\t\tTCF\tRIGHTR\t\t# YES.\n\t\tTCF\tMPACSHR\t\t# JUST SHIFT RIGHT.\n\n# Page 1056\n# PROCESS THE RIGHT- (SL(R) WITH A NEGATIVE COUNT), LEFT-, AND LEFT OPTIONS.\n\nRIGHT-\t\tCS\tMPTEMP\t\t# GET ABSOLUTE VALUE - 1 OF SHIFT COUNT\n\t\tAD\tOCT176\t\t# UNDERSTANDING THAT BIT8 (PSEUDO-SIGN)\n\t\tTS\tMPTEMP\t\t# WAS 1 INITIALLY.\n\t\tTCF\tRIGHT\t\t# DO NORMAL SHIFT RIGHT.\n\nLEFT-\t\tCS\tOCT176\t\t# SAME PROLOGUE TO LEFT FOR INDEXED RIGHT\n\t\tAD\tMPTEMP\t\t# SHIFT WHOSE NET SHIFT COUNT IS NEGATIVE\n\t\tCOM\n\t\tTS\tMPTEMP\n\nLEFT\t\tCCS\tMODE\t\t# SINCE LEFT SHIFTING IS DONE ONE PLACE AT\n\t\tTCF\tGENSCL\t\t# A TIME, NO COMPARISON WITH 14 NEED BE\n\t\tTCF\tGENSCL\t\t# DONE.  FOR SCALARS, SEE IF TERMINAL ROUND\n\t\tTCF\tVSSL\t\t# DESIRED.  FOR VECTORS, SHIFT IMMEDIATELY.\n\nGENSCL\t\tCS\tADDRWD\t\t# PUT ROUNDING BIT (BIT 10 OF ADDRWD) INTO\n\t\tEXTEND\t\t\t# BIT 15 OF CYR WHERE THE ROUNDING BIT OF\n\t\tMP\tBIT6\t\t# A SHORT SHIFT LEFT WOULD BE\n\t\tTS\tCYR\n\t\tTCF\tTSSL \t+2\t# DO THE SHIFT.\n\n# Page 1057\n# SCALAR DIVISION INSTRUCTIONS, DDV AND BDDV, ARE EXECUTED HERE.  AT THIS POINT, THE DIVIDEND IS IN MPAC\n# AND THE DIVISOR IS IN BUF.\n\nDDV/BDDV\tCS\tONE\t\t# INITIALIZATION\n\t\tTS\tDVSIGN\t\t# +-1 FOR POSITIVE QUOTIENT -- -0 FOR NEG.\n\t\tTS\tDVNORMCT\t# DIVIDENT NORMALIZATION COUNT.\n\t\tTS\tMAXDVSW\t\t# NEAR-ONE DIVIDE FLAG.\n\n\t\tCCS\tBUF\t\t# FORCE BUF POSITIVE WITH THE MAJOR PART\n\t\tTCF\tBUFPOS\t\t# NON-ZERO.\n\t\tTCF\t+2\n\t\tTCF\tBUFNEG\n\nBUFZERO\t\tTS\tMPAC \t+2\t# ZERO THIS.\n\t\tTC\tTPAGREE\t\t# FORCE SIGN AGREEMENT BEFORE OVERFLOW\n\n\t\tCCS\tMPAC\t\t# TEST TO SEE IF MPAC NON-ZERO.  (TOO BIG)\n\t\tTCF\tOVF+\t\t# MAJOR PART OF DIVIDEND IS POSITIVE NON-0\n\t\tTCF\t+2\n\t\tTCF\tOVF+ \t-1\t# MAJOR PART OF DIVIDEND IS NEG. NON-ZERO\n\n\t\tXCH\tBUF \t+1\t# SHIFT DIVIDEND AND DIVISOR LEFT 14\n\t\tXCH\tBUF\n\t\tXCH\tMPAC \t+1\n\t\tXCH\tMPAC\n\t\tCCS\tBUF\t\t# TRY AGAIN ON FORMER MINOR PART.\n\t\tTCF\tBUF+\n\t\tTCF\t+2\t\t# OVERFLOW ON ZERO DIVISOR.\n\t\tTCF\tBUF-\n\n\t\tCS\tMPAC\t\t# SIGN OF MPAC DETERMINES SIGN OF RESULT.\nSGNDVOVF\tEXTEND\n\t\tBZMF\t+2\n\t\tINCR\tDVSIGN\t\t# NEGMAX IN MPAC PERHAPS.\nDVOVF\t\tCAF\tPOSMAX\t\t# ON DIVISION OVERFLOW OF ANY SORT, SET\n\t\tTS\tMPAC\t\t# SET DP MPAC TO +-POSMAX.\n\t\tTC\tFINALDV +3\n\t\tCAF\tONE\t\t# SET OVERFLOW INDICATOR AND EXIT.\n\t\tTS\tOVFIND\n\t\tTC\tDANZIG\n\n -1\t\tINCR\tDVSIGN\nOVF+\t\tCS\tBUF \t+1\t# LOAD LOWER ORDER PART OF DIVISOR.\n\t\tTCF\tSGNDVOVF\t# GET SIGN OF RESULT.\n\nBUF-\t\tEXTEND\t\t\t# IF BUF IS NEGATIVE, COMPLEMENT IT AND\n\t\tDCS\tBUF\t\t# MAINTAIN DVSIGN FOR FINAL QUOTIENT SIGN.\n\t\tDXCH\tBUF\n\t\tINCR\tDVSIGN\t\t# NOW -0.\n\n# Page 1058\nBUF+\t\tCCS\tMPAC\t\t# FORCE MPAC POSITIVE, CHECKING FOR ZERO\n\t\tTCF\tMPAC+\t\t# DIVIDEND IN THE PROCESS.\n\t\tTCF\t+2\n\t\tTCF\tMPAC-\n\t\tCCS\tMPAC \t+1\n\t\tTCF\tMPAC+\n\t\tTCF\tDANZIG\t\t# EXIT IMMEDIATELY ON ZERO DIVIDEND.\n\t\tTCF\tMPAC-\n\t\tTCF\tDANZIG\n\nMPAC-\t\tEXTEND\t\t\t# FORCE MPAC POSITIVE AS BUF IN BUF-.\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\t\tINCR\tDVSIGN\t\t# NOW +1 OR -0.\n\n# Page 1059\nMPAC+\t\tCS\tMPAC\t\t# CHECK FOR DIVISION OVERFLOW.  IF THE\n\t\tAD\tNEGONE\t\t# MAJOR PART OF THE DIVIDEND IS LESS THAN\n\t\tAD\tBUF\t\t# THE MAJOR PART OF THE DIVISOR BY AT\n\t\tCCS\tA\t\t# LEAST TWO, WE CAN PROCEED IMMEDIATELY\n\t\tTCF\tDVNORM\t\t# WITHOUT NORMALIZATION PRODUCING A DVMAX.\n-1/2+2\t\tOCT\t60001\t\t# USED IN SQRTSUB.\n\n\t\tTCF\t+1\t\t# IF THE ABOVE DOES NOT HOLD, FORCE SIGN\n\t\tCAF\tHALF\t\t# AGREEMENT IN NUMERATOR AND DENOMINATOR\n\t\tDOUBLE\t\t\t# TO FACILITATE OVERFLOW AND NEAR-ONE\n\t\tAD\tMPAC \t+1\t# CHECKING.\n\t\tTS\tMPAC \t+1\n\t\tCAF\tZERO\n\t\tAD\tPOSMAX\n\t\tADS\tMPAC\n\n\t\tCAF\tHALF\t\t# SAME FOR BUF.\n\t\tDOUBLE\n\t\tAD\tBUF \t+1\n\t\tTS\tBUF \t+1\n\t\tCAF\tZERO\n\t\tAD\tPOSMAX\n\t\tADS\tBUF\n\n\t\tCS\tMPAC\t\t# CHECK MAGNITUDE OF SIGN-CORRECTED\n\t\tAD\tBUF\t\t# OPERANDS.\n\t\tCCS\tA\n\t\tTCF\tDVNORM\t\t# DIVIDE OK -- WILL NOT BECOME MAXOV CASE.\nLBUF2\t\tADRES \tBUF2\n\t\tTCF\tDVOVF\t\t# DIVISOR NOT LESS THAN DIVIDEND -- OVF.\n\n\t\tTS\tMAXDVSW\t\t# IF THE MAJOR PARTS OF THE DIVIDEND AND\n\t\tCS\tMPAC \t+1\t# DIVISOR ARE EQUAL, A SPECIAL APPROXIMA-\n\t\tAD\tBUF\t+1\t# TION IS USED (PROVIDED THE DIVISION IS\n\t\tEXTEND\t\t\t# POSSIBLE, OF COURSE).\n\t\tBZMF\tDVOVF\n\t\tTCF\tDVNORM\t\t# IF NO OVERFLOW.\n\n# Page 1060\nBUFNORM\t\tEXTEND\t\t\t# ADD -1 TO AUGMENT SHIFT COUNT AND SHIFT\n\t\tAUG\tDVNORMCT\t# LEFT ONE PLACE.\n\t\tEXTEND\n\t\tDCA\tBUF\n\t\tDAS\tBUF\n\nDVNORM\t\tCA\tBUF\t\t# SEE IF DIVISOR NORMALIZED YET.\n\t\tDOUBLE\n\t\tOVSK\n\t\tTCF\tBUFNORM\t\t# NO -- SHIFT LEFT ONE AND TRY AGAIN.\n\n\t\tDXCH\tMPAC\t\t# CALL DIVIDEND NORMALIZATION SEQUENCE\n\t\tINDEX\tDVNORMCT\t# PRIOR TO DOING THE DIVIDE.\n\t\tTC\tMAXTEST\n\n\t\tTS\tMPAC \t+2\t# RETURNS WITH DIVISION DONE AND C(A) = 0.\n\t\tTCF\tDANZIG\n\nBUFPOS\t\tCCS\tA\n\t\tTCF\tBUF+\t\t# TO BUF+ IF BUF IS GREATER THAN +1.\n\n\t\tCS\tBUF \t+1\t# IF BUF IS +1, FORCING SIGN AGREEMENT\n\t\tEXTEND\t\t\t# MAY CAUSE BUF TO BECOME ZERO.\n\t\tBZMF\tBUF+\t\t# BRANCH IF SIGNS AGREE.\n\n\t\tCA\tHALF\t\t# SIGNS DISAGREE.  FORCE AGREEMENT.\n +6\t\tDOUBLE\n\t\tADS\tBUF \t+1\n\t\tCA\tZERO\n\t\tTS\tBUF\n\t\tTCF\tBUFZERO\n\nBUFNEG\t\tCCS\tA\n\t\tTCF\tBUF-\t\t# TO BUF- IF BUF IS LESS THAN -1.\n\n\t\tCA\tBUF \t+1\t# IF BUF IS -1, FORCING SIGN AGREEMENT\n\t\tEXTEND\t\t\t# MAY CAUSE BUF TO BECOME ZERO.\n\t\tBZMF\tBUF-\t\t# BRANCH IF SIGNS AGREE.\n\n\t\tCS\tHALF\t\t# SIGNS DISAGREE.  FORCE AGREEMENT.\n\t\tTCF\tBUFPOS +6\n\n# Page 1061\n# THE FOLLOWING ARE PROLOGUES TO SHIFT THE DIVIDEND ARRIVING IN A AND L BEFORE THE DIVIDE.\n\n -21D\t\tLXCH\tSR\t\t# SPECIAL PROLOGUE FOR UNIT WHEN THE\n\t\tEXTEND\t\t\t# LENGTH OF THE ARGUMENT WAS NOT LESS THAN\n\t\tMP\tHALF\t\t# .5.  IN THIS CASE, EACH COMPONENT MUST BE\n\t\tXCH\tL\t\t# SHIFTED RIGHT ONE TO PRODUCE A HALF-UNIT\n\t\tAD\tSR\t\t# VECTOR.\n\t\tXCH\tL\n\t\tTCF\tGENDDV \t+1\t# WITH DP DIVIDEND IN A,L.\n\n\t\tDDOUBL\t\t\t# PROLOGUE WHICH NORMALIZES THE DIVIDEND\n\t\tDDOUBL\t\t\t# WHEN IT IS KNOWN THAT NO DIVISION\n\t\tDDOUBL\t\t\t# OVEFLOW WILL OCCUR.\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDXCH\tMPAC\n\nMAXTEST\t\tCCS\tMAXDVSW\t\t# 0 IF MAJORS MIGHT BE =, -1 OTHERWISE.\nBIASHI\t\tDEC\t.4192 \tB-1\t# SQRT CONSTANTS.\n\n\t\tTCF\tMAXDV\t\t# CHECK TO SEE IF THAY ARE NOW EQUAL.\n\n# Page 1062\n# THE FOLLOWING IS A GENERAL PURPOSE DOUBLE PRECISION DIVISION ROUTINE.  IT DIVIDES MPAC BY BUF AND LEAVES\n# THE RESULT IN MPAC.  THE FOLLOWING CONDITIONS MUST BE SATISFIED:\n#\n#\t1.\tTHE DIVISOR (BUF) MUST BE POSITIVE AND NOT LESS THAN .5.\n#\n#\t2.\tTHE DIVIDEND (MPAC) MUST BE POSITIVE WITH THE MAJOR PART OF MPAC STRICTLY LESS THAN THAT OF BUF\n#\t\t(A SPECIAL APPROXIMATION, MAXDV, IS USED WHEN THE MAJOR PARTS ARE EQUAL).\n#\n# UNDERSTANDING THAT A/B = Q + S(R/B) WHERE S = 2(-14) AND Q AND R ARE QUOTIENT AND REMAINDER, RESPEC-\n# TIVELY, THE FOLLOWING APPROXIMATION IS OBTAINED BY MULTIPLYING ABOVE AND BELOW BY C - SD AND NEGLECTING TERMS OF\n# ORDER S-SQUARED (POSSIBLY INTRODUCING ERROR INTO THE LOW TWO BITS OF THE RESULT).  SIGN AGREEMENT IS UNNECESSARY.\n#\n#\tA + SB .      (R - QD)                                             A + SB\n#\t------ = Q + S(------) WHERE Q AND R ARE QUOTIENT AND REMAINDER OF ------ RESPECTIVELY.\n#\tC + SD        (  C   }                                                C\n\nGENDDV\t\tDXCH\tMPAC\t\t# WE NEED A AND B ONLY FOR FIRST DV.\n +1\t\tEXTEND\t\t\t# (SPECIAL UNIT PROLOGUE ENTERS HERE).\n\t\tDV\tBUF\t\t# A NOW CONTAINS Q AND L, R.\n\t\tDXCH\tMPAC\n\n\t\tCS\tMPAC\t\t# FORM DIVIDEND FOR MINOR PART OF RESULT.\n\t\tEXTEND\n\t\tMP\tBUF \t+1\n\t\tAD\tMPAC \t+1\t# OVERFLOW AT THIS POINT IS POSITIVE SINCE\n\t\tOVSK\t\t\t# R IS POSITIVE IN EVERY CASE.\n\t\tTCF\t+5\n\n\t\tEXTEND\t\t\t# OVERFLOW CAN BE REMOVED BY SUBTRACTING C\n\t\tSU\tBUF\t\t# (BUF) ONCE SINCE R IS ALWAYS LESS THAN C\n\t\tINCR\tMPAC\t\t# IN THIS CASE.  INCR COMPENSATES SUBTRACT.\n\t\tTCF\t+DOWN\t\t# (SINCE C(A) IS STILL POSITIVE).\n\n +5\t\tEXTEND\t\t\t# C(A) CAN BE MADE LESS THAN C IN MAGNI-\n\t\tBZMF\t-UP\t\t# TUDE BY DIMINISHING IT BY C (SINCE C IS\n\t\t\t\t\t# NOT LESS THAN .5) UNLESS C(A) = 0.\n\n# Page 1063\n+DOWN\t\tEXTEND\n\t\tSU\tBUF\t\t# IF POSITIVE, REDUCE ONLY IF NECESSARY\n\t\tEXTEND\t\t\t# SINCE THE COMPENSATING INCR MIGHT CAUSE\n\t\tBZF\t+3\t\t# OVERFLOW.\n\t\tEXTEND\t\t\t# DON'T SUBTRACT UNLESS RESULT IS POSITIVE\n\t\tBZMF\tENDMAXDV\t# OR ZERO.\n\n +3\t\tINCR\tMPAC\t\t# KEEP SUBTRACT HERE AND COMPENSATE.\n\t\tTCF\tFINALDV\n\n-UP\t\tEXTEND\t\t\t# IF ZERO, SET MINOR PART OF RESULT TO\n\t\tBZF\tFINALDV +3\t# ZERO.\n\n\t\tEXTEND\t\t\t# IF NEGATIVE, ADD C TO A, SUBTRACTING ONE\n\t\tDIM\tMPAC\t\t# TO COMPENSATE.  DIM IS OK HERE SINCE THE\nENDMAXDV\tAD\tBUF\t\t# MAJOR PART NEVER GOES NEGATIVE.\n\n# Page 1064\nFINALDV\t\tZL\t\t\t# DO DV TO OBTAIN MINOR PART OF RESULT.\n\t\tEXTEND\n\t\tDV\tBUF\n +3\t\tTS\tMPAC \t+1\n\n\t\tCCS\tDVSIGN\t\t# LEAVE RESULT POSITIVE UNLESS C(DVSIGN)=\n\t\tTC\tQ\t\t# -0.\n\t\tTC\tQ\n\t\tTC\tQ\n\n\t\tEXTEND\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\t\tCAF\tZERO\t\t# SO WE ALWAYS RETURN WITH C(A) = 0.\n\t\tTC\tQ\n\n# Page 1065\n# IF THE MAJOR PARTS OF THE DIVISOR AND DIVIDEND ARE EQUAL, BUT THE MINOR PARTS ARE SUCH THAT THE\n# DIVIDEND IS STRICTLY LESS THAN THE DIVISOR IN MAGNITUDE, THE FOLLOWING APPROXIMATION IS USED.  THE ASSUMPTIONS\n# ARE THE SAME AS THE GENERAL ROUTINE WITH THE ADDITION THAT SIGN AGREEMENT IS NECESSARY (B, C, & D POSITIVE).\n#\n#\tC + SB .          (C + B - D)\n#\t------ = 37777 + S(---------)\n#\tC + SD            (    C    )\n#\n# THE DIVISION MAY BE PERFORMED IMMEDIATELY SINCE B IS STRICTLY LESS THAN D AND C IS NOT LESS THAN .5.\n\nMAXDV\t\tCS\tMPAC\t\t# SEE IF MAXDV CASE STILL HOLDS AFTER\n\t\tAD\tBUF\t\t# NORMALIZATION.\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tGENDDV\t\t# MPAC NOW LESS THAN BUFF -- DIVIDE AS USUAL.\n\n +2\t\tCAF\tPOSMAX\t\t# SET MAJOR PART OF RESULT.\n\t\tTS\tMPAC\n\n\t\tCS\tBUF \t+1\t# FORM DIVIDEND OF MINOR PART OF RESULT.\n\t\tAD\tMPAC \t+1\n\t\tTCF\tENDMAXDV\t# GO ADD C AND DO DIVIDE, ATTACHING SIGN\n\t\t\t\t\t# BEFORE EXITING.\n\n# Page 1066\n# VECTOR DIVIDED BY SCALAR, V/SC, IS EXECUTED HERE.  THE VECTOR IS NOW IN MPAC WITH SCALAR IN BUF.\n\nV/SC2\t\tCS\tONE\t\t# INITIALIZE DIVIDEND NORMALIZATION COUNT\n\t\tTS\tDVNORMCT\t# AND DIVISION SIGN REGISTER.\n\t\tTS\tVBUF \t+5\n\n\t\tTC\tVECAGREE\t# FORCE SIGN AGREEMENT IN VECTOR\n\n\t\tDXCH\tBUF\n\t\tTC\tALSIGNAG\t# SIGN AGREE BUF\n\t\tDXCH\tBUF\n\t\tCCS\tBUF\t\t# FORCE DIVISOR POSITIVE WITH MAJOR PART\n\t\tTCF\t/BUF+\t\t# NON-ZERO (IF POSSIBLE).\n\t\tTCF\t+2\n\t\tTCF\t/BUF-\n\n\t\tXCH\tBUF\t+1\t# SHIFT VECTOR AND SCALAR LEFT 14.\n\t\tXCH\tBUF\n\t\tXCH\tMPAC  \t+1\n\t\tXCH\tMPAC\n\t\tEXTEND\t\t\t# CHECK FOR OVERFLOW IN EACH CASE.\n\t\tBZF\t+2\n\t\tTCF\tDVOVF\n\n\t\tXCH\tMPAC  \t+4\n\t\tXCH\tMPAC  \t+3\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tDVOVF\n\n\t\tXCH\tMPAC  \t+6\n\t\tXCH\tMPAC  \t+5\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tDVOVF\n\n\t\tCCS\tBUF\n\t\tTCF\t/BUF+\n\t\tTCF\tDVOVF\t\t# ZERO DIVISOR - OVERFLOW.\n\t\tTCF\t/BUF-\n\t\tTCF\tDVOVF\n\n/BUF-\t\tEXTEND\t\t\t# ON NEGATIVE, COMPLEMENT BUF AND MAINTAIN\n\t\tDCS\tBUF\t\t# DVSIGN IN VBUF +5.\n\t\tDXCH\tBUF\n\t\tINCR\tVBUF  \t+5\n\n# Page 1067\n/BUF+\t\tEXTEND\n\t\tDCA\tBUF\t\t# LEAVE ABS(ORIG DIVISOR) IN BUF2\n\t\tDXCH\tBUF2\t\t# FOR OVERFLOW TESTING\n\t\tTCF\t/NORM\t\t# NORMALIZE DIVISOR IN BUF.\n\n/NORM2\t\tEXTEND\t\t\t# IF LESS THAN .5, AUGMENT DVNORMCT AND\n\t\tAUG\tDVNORMCT\t# DOUBLE DIVISOR.\n\t\tEXTEND\n\t\tDCA\tBUF\n\t\tDAS\tBUF\n\n/NORM\t\tCA\tBUF\t\t# SEE IF DIVISOR NORMALIZED.\n\t\tDOUBLE\n\t\tOVSK\n\t\tTCF\t/NORM2\t\t# DOUBLE AND TRY AGAIN IF NOT.\n\n\t\tTC\tV/SCDV\t\t# DO X COMPONENT DIVIDE.\n\t\tDXCH\tMPAC \t+3\t# SUPPLY ARGUMENTS IN USUAL SEQUENCE.\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC \t+3\n\n\t\tTC\tV/SCDV\t\t# Y COMPONENT.\n\t\tDXCH\tMPAC \t+5\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC \t+5\n\n\t\tTC\tV/SCDV\t\t# Z COMPONENT.\n\t\tTCF\tVROTATEX\t# GO RE-ARRANGE COMPONENTS BEFORE EXIT.\n\n# Page 1068\n# SUBROUTINE USED BY V/SC TO DIVIDE VECTOR COMPONENT IN MPAC,+1 BY THE SCALAR GIVEN IN BUF.\n\nV/SCDV\t\tCA\tVBUF \t+5\t# REFLECTS SIGN OF SCALAR.\n\t\tTS\tDVSIGN\n\n\t\tCCS\tMPAC\t\t# FORCE MPAC POSITIVE, EXITING ON ZERO.\n\t\tTCF\t/MPAC+\n\t\tTCF\t+2\n\t\tTCF\t/MPAC-\n\n\t\tCCS\tMPAC \t+1\n\t\tTCF\t/MPAC+\n\t\tTC\tQ\n\t\tTCF\t/MPAC-\n\t\tTC\tQ\n\n/MPAC-\t\tEXTEND\t\t\t# USUAL COMPLEMENTING AND SETTING OF SIGN.\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\t\tINCR\tDVSIGN\n\n/MPAC+\t\tCS\tONE\t\t# INITIALIZE NEAR-ONE SWITCH.\n\t\tTS\tMAXDVSW\n\n\t\tCS\tMPAC\t\t# CHECK POSSIBLE OVERFLOW.\n\t\tAD\tBUF2\t\t# UNNORMALIZED INPUT DIVISOR.\n\t\tCCS\tA\n\t\tTCF\tDDVCALL\t\t# NOT NEAR-ONE\n\t\tTCF\t+2\t\t# +0 IS JUST POSSIBLE\n\t\tTCF\tDVOVF\t\t# NO HOPE\n\t\tTS\tMAXDVSW\t\t# SIGNAL POSSIBLE NEAR-ONE CASE\n\t\tCS\tMPAC \t+1\t# SEE IF DIVISION CAN BE DONE\n\t\tAD\tBUF2 \t+1\n\t\tEXTEND\n\t\tBZMF\tDVOVF\n\nDDVCALL\t\tDXCH\tMPAC\t\t# CALL PRE-DIVIDE NORMALIZATION.\n\t\tINDEX\tDVNORMCT\n\t\tTCF\tMAXTEST\n\n# Page 1069\nSLOPELO\t\tDEC\t.8324\n\nVECAGREE\tXCH\tQ\t\t# SAVE Q IN A\n\t\tDXCH\tMPAC\n\t\tTC\tALSIGNAG\t# SIGNAGREE MPAC\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC \t+3\n\t\tTC\tALSIGNAG\t# SIGN AGREE MPAC +3\n\t\tDXCH\tMPAC \t+3\n\t\tDXCH\tMPAC \t+5\n\t\tTC\tALSIGNAG\t# SIGNAGREE MPAC +5\n\t\tDXCH\tMPAC \t+5\n\t\tTC\tA\n\n# Page 1070\n# THE FOLLOWING ROUTINE EXECUTES THE UNIT INSTRUCTION, WHICH TAKES THE UNIT OF THE VECTOR IN MPAC.\n\nUNIT\t\tTC\tVECAGREE\t# FORCE SIGN AGREEMENT IN VECTOR\n\t\tTC\tMPACVBUF\t# SAVE ARGUMENT IN VBUF\n\t\tCAF\tZERO\t\t# MUST SENSE OVERFLOW IN FOLLOWING DOT.\n\t\tXCH\tOVFIND\n\t\tTS\tTEM1\n\t\tTC\tVSQSUB\t\t# DOT MPAC WITH ITSELF.\n\t\tCA\tTEM1\n\t\tXCH\tOVFIND\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tDVOVF\n\t\tEXTEND\n\t\tDCA\tMPAC\t\t# LEAVE THE SQUARE OF THE LENGTH OF THE\n\t\tINDEX\tFIXLOC\t\t# ARGUMENT IN LVSQUARE.\n\t\tDXCH\tLVSQUARE\n\n\t\tTC\tSQRTSUB\t\t# GO TAKE THE NORMALIZED SQUARE ROOT.\n\n\t\tCCS\tMPAC\t\t# CHECK FOR UNIT OVERFLOW.\n\t\tTCF\t+5\t\t# MPAC IS NOT LESS THAN .5 UNLESS\n\t\tTS\tL\n\t\tINDEX\tFIXLOC\n\t\tDXCH\tLV\n\t\tTCF\tDVOVF\t\t# INPUT TO SQRTSUB WAS 0.\n\n\t\tCS\tFOURTEEN\t# SEE IF THE INPUT WAS SO SMALL THAT THE\n\t\tAD\tMPTEMP\t\t# FIRST TWO REGISTERS OF THE SQUARE WERE 0\n\t\tCCS\tA\n\t\tCOM\t\t\t# IF SO, SAVE THE NEGATIVE OF THE SHIFT\n\t\tTCF\tSMALL\t\t# COUNT -15D.\n\n\t\tTCF\tLARGE\t\t# (THIS IS USUALLY THE CASE.)\n\n\t\tCS\tTHIRTEEN\t# IF THE SHIFT COUNT WAS EXACTLY 14, SET\n\t\tTS\tMPTEMP\t\t# THE PRE-DIVIDE NORM COUNT TO -13D.\n\n\t\tCA\tMPAC\t\t# SHIFT THE LENGTH RIGHT 14 BEFORE STORING\nSMALL2\t\tTS\tL\t\t# (SMALL EXITS TO THIS POINT).\n\t\tCAF\tZERO\n\t\tTCF\tLARGE2\t\t# GO TO STORE LENGTH AND PROCEED.\n\nLARGE\t\tCCS\tMPTEMP\t\t# MOST ALL CASES COME HERE.\n\t\tTCF\tLARGE3\t\t# SEE IF NO NORMALIZATION WAS REQUIRED BY\n\n\t\tCS\tSRDDV\t\t# SQRT, AND IF SO, SET UP FOR A SHIFT\n\t\tTS\tMPTEMP\t\t# RIGHT 1 BEFORE DIVIDING TO PRODUCE\n\t\tEXTEND\t\t\t# THE DESIRED HALF UNIT VECTOR.\n\t\tDCA\tMPAC\n# Page 1071\n\t\tTCF\tLARGE2\n\n# Page 1072\nLARGE3\t\tCOM\t\t\t# LEAVE NEGATIVE OF SHIFT COUNT-1 FOR\n\t\tTS\tMPTEMP\t\t# PREDIVIDE LEFT SHIFT.\n\n\t\tCOM\t\t\t# PICK UP REQUIRED SHIFTING BIT TO UNNORM-\n\t\tINDEX\tA\t\t# ALIZE THE SQRT RESULT.\n\t\tCAF\tBIT14\n\t\tTS\tBUF\n\t\tEXTEND\n\t\tMP\tMPAC \t+1\n\t\tXCH\tBUF\n\t\tEXTEND\t\t\t# (UNNORMALIZE THE SQRT FOR LV).\n\t\tMP\tMPAC\n\t\tXCH\tL\n\t\tAD\tBUF\n\t\tXCH\tL\n\nLARGE2\t\tINDEX\tFIXLOC\n\t\tDXCH\tLV\t\t# LENGTH NOW STORED IN WORK AREA.\n\n\t\tCS\tONE\n\t\tTS\tMAXDVSW\t\t# NO MAXDV CASES IN UNIT.\n\n\t\tDXCH\tVBUF\t\t# PREPARE X COMPONENT FOR DIVIDE, SETTING\n\t\tDXCH\tMPAC\t\t# LENGTH OF VECTOR AS DIVISOR IN BUF.\n\t\tDXCH\tBUF\n\t\tTC\tUNITDV\n\n\t\tDXCH\tVBUF \t+2\t# DO Y AND Z IN USUAL FASHION SO WE CAN\n\t\tDXCH\tMPAC\t\t# EXIT THROUGH VROTATEX.\n\t\tDXCH\tMPAC \t+3\n\t\tTC\tUNITDV\n\n\t\tDXCH\tVBUF \t+4\n\t\tDXCH\tMPAC\n\t\tDXCH\tMPAC \t+5\n\t\tTC\tUNITDV\n\t\tTCF\tVROTATEX\t# AND EXIT.\n\n# Page 1073\n# IF THE LENGTH OF THE ARGUMENT VECTOR WAS LESS THAN 2(-28), EACH COMPONENT MUST BE SHIFTED LEFT AT LEAST\n# 14 PLACES BEFORE THE DIVIDE. NOTE THAT IN THIS CASE, THE MAJOR PART OF EACH COMPONENT IS ZERO.\n\nSMALL\t\tTS\tMPTEMP\t\t# NEGATIVE OF PRE-DIVIDE SHIFT COUNT.\n\n\t\tCAF\tZERO\t\t# SHIFT EACH COMPONENT LEFT 14.\n\t\tXCH\tVBUF \t+1\n\t\tXCH\tVBUF\n\t\tXCH\tVBUF \t+3\n\t\tXCH\tVBUF \t+2\n\t\tXCH\tVBUF \t+5\n\t\tXCH\tVBUF \t+4\n\n\t\tCS\tMPTEMP\n\t\tINDEX\tA\n\t\tCAF\tBIT14\n\t\tEXTEND\n\t\tMP\tMPAC\n\t\tTCF\tSMALL2\n\nTHIRTEEN\t=\tOCT15\nFOURTEEN\t=\tOCT16\nOCT16\t\t=\tR1D1\n\n# Page 1074\n# THE FOLLOWING ROUTINE SETS UP THE CALL TO THE DIVIDE ROUTINES.\n\nUNITDV\t\tCCS\tMPAC\t\t# FORCE MPAC POSITIVE IF POSSIBLE, SETTING\n\t\tTCF\tUMPAC+\t\t# DVSIGN ACCORDING TO THE SIGN OF MPAC\n\t\tTCF\t+2\t\t# SINCE THE DIVISOR IS ALWAYS POSITIVE\n\t\tTCF\tUMPAC-\t\t# HERE.\n\n\t\tCCS\tMPAC \t+1\n\t\tTCF\tUMPAC+\n\t\tTC\tQ\t\t# EXIT IMMEDIATELY ON ZERO.\n\t\tTCF\tUMPAC-\n\t\tTC\tQ\n\nUMPAC-\t\tCS\tZERO\t\t# IF NEGATIVE, SET -0 IN DVSIGN FOR FINAL\n\t\tTS\tDVSIGN\t\t# COMPLEMENT.\n\t\tEXTEND\n\t\tDCS\tMPAC\t\t# PICK UP ABSOLUTE VALUE OF ARG AND JUMP.\n\t\tINDEX\tMPTEMP\n\t\tTCF\tMAXTEST -1\n\nUMPAC+\t\tTS\tDVSIGN\t\t# SET DVSIGN FOR POSITIVE QUOTIENT.\n\t\tDXCH\tMPAC\n\t\tINDEX\tMPTEMP\n\t\tTCF\tMAXTEST -1\n\n# Page 1075\n# MISCELLANEOUS UNARY OPERATIONS.\n\nDSQ\t\tTC\tDSQSUB\t\t# SQUARE THE DP CONTENTS OF MPAC.\n\t\tTCF\tDANZIG\n\nABVALABS\tCCS\tMODE\t\t# ABVAL OR ABS INSTRUCTION.\n\t\tTCF\tABS\t\t# DO ABS ON SCALAR.\n\t\tTCF\tABS\n\nABVAL\t\tTC\tVSQSUB\t\t# DOT MPAC WITH ITSELF.\n\t\tLXCH\tMODE\t\t# MODE IS NOW DP (L ZERO AFTER DAS).\n\n\t\tEXTEND\t\t\t# STORE SQUARE OF LENGTH IN WORK AREA.\n\t\tDCA\tMPAC\n\t\tINDEX\tFIXLOC\n\t\tDXCH\tLVSQUARE\n\n# Page 1076\n# PROGRAM DESCRIPTION -- SUBROUTINE SQRT\n#\n# FUNCTIONAL DESCRIPTION -- DOUBLE PRECISION SQUARE ROOT ROUTINE\n#\tTHIS PROGRAM TAKES THE SQUARE ROOT OF THE 27 OR 28 MOST SIGNIFICANT BITS IN THE TRIPLE PRECISION SET OF\n#\tNUMBERS -- MPAC, MPAC+1, AND MPAC+2.  THE ROOT IS RETURNED DOUBLE PRECISION IN MPAC AND MPAC+1.\n#\n# WARNING -- THIS SUBROUTINE USES A TRIPLE PRECISION INPUT.  THE PROGRAMMER MUST ASSURE THE CONTENTS OF MPAC+2\n#\tESPECIALLY IF THE CONTENTS OF MPAC IS SMALL OR ZERO.  FOR DETAILS SEE STG MEMO NO.949.\n#\n# CALLING SEQUENCE -- IN INTERPRETIVE MODE, I.E., FOLLOWING `TC INTPRET', `SQRT', NO ADDRESS IS ALLOWED.\n#\tINPUT SCALING: THE BINARY POINT IS ASSUMED TO THE RIGHT OF BIT 15.  THE ANSWER IS RETURNED WITH THE SAME SCALING.\n#\n# SUBROUTINES -- GENSCR, MPACSHR, SQRTSUB, ABORT\n#\n# ABORT EXIT MODE -- ABORTS ON NEGATIVE INPUT -1.2X10E-4 (77775 OCTAL) OR LESS.\n#\tDISPLAYS ERROR CODE 1302\n#\t\tTC\tABORT\n#\t\tOCT\t1302\n#\n# DEBRIS -- LOCATIONS BUF, MPTEMP, ADDRWD ARE USED\n\nSQRT\t\tTC\tSQRTSUB\t\t# TAKE THE SQUARE ROOT OF MPAC.\n\t\tCCS\tMPTEMP\t\t# RETURNED NORMALIZED SQUARE ROOT.  SEE IF\n\t\tTCF\t+2\t\t# ANY UN-NORMALIZATION REQUIRED AND EXIT\n\t\tTCF\tDANZIG\t\t# IF NOT.\n\n\t\tAD\tNEG12\t\t# A RIGHT SHIFT OF MORE THAN 13 COULD BE\n\t\tEXTEND\t\t\t# REQUIRED IF INPUT WAS ZERO IN MPAC,+1.\n\t\tBZMF\tSQRTSHFT\t# GOES HERE IN MOST CASES.\n\t\tZL\t\t\t# IF A LONG SHIFT IS REQUIRED, GO TO\n\t\tLXCH\tADDRWD\t\t# GENERAL RIGHT SHIFT ROUTINES.\n\t\tTCF\tGENSCR \t+4\t# ADDRWD WAS ZERO TO PREVENT ROUND.\n\nSQRTSHFT\tINDEX\tMPTEMP\t\t# SELECT SHIFTING BIT AND EXIT THROUGH\n\t\tCAF\tBIT15\t\t# SHIFT ROUTINES.\n\t\tTS\tMPTEMP\n\t\tCAF\tZERO\t\t# TO ZERO MPAC +2 IN THE PROCESS.\n\t\tTCF\tMPACSHR +3\n\nABS\t\tTC\tBRANCH\t\t# TEST SIGN OF MPAC AND COMPLEMENT IF\n\t\tTCF\tDANZIG\n\t\tTCF\tDANZIG\n\t\tTCF\tCOMP\n\n# Page 1077\nVDEF\t\tCS\tFOUR\t\t# VECTOR DEFINE -- ESSENTIALLY TREATS\n\t\tADS\tPUSHLOC\t\t# SCALAR IN MPAC AS X COMPONENT, PUSHES UP\n\t\tEXTEND\t\t\t# FOR Y AND THEN AGAIN FOR Z.\n\t\tINDEX\tA\n\t\tDCA\t2\n\t\tDXCH\tMPAC \t+3\n\t\tEXTEND\n\t\tINDEX\tPUSHLOC\n\t\tDCA\t0\n\t\tDXCH\tMPAC \t+5\n\t\tTCF\tVMODE\t\t# MODE IS NON VECTOR.\n\nVSQ\t\tTC\tVSQSUB\t\t# DOT MPAC WITH ITSELF.\n\t\tTCF\tDMODE\t\t# MODE IS NOW DP.\n\nPUSH\t\tEXTEND\t\t\t# PUSH DOWN MPAC LEAVING IT LOADED.\n\t\tDCA\tMPAC\n\t\tINDEX\tPUSHLOC\t\t# PUSH DOWN FIRST TWO REGISTERS IN EACH\n\t\tDXCH\t0\n\n\t\tINDEX\tMODE\t\t# INCREMENT PUSHDOWN POINTER.\n\t\tCAF\tNO.WDS\n\t\tADS\tPUSHLOC\n\n\t\tCCS\tMODE\n\t\tTCF\tTPUSH\t\t# PUSH DOWN MPAC +2.\n\t\tTCF\tDANZIG\t\t# DONE FOR DP.\n\n\t\tEXTEND\t\t\t# ON VECTOR, PUSH DOWN Y AND Z COMPONENTS.\n\t\tDCA\tMPAC \t+3\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 \t-4\n\t\tEXTEND\n\t\tDCA\tMPAC \t+5\n\t\tINDEX\tPUSHLOC\n\t\tDXCH\t0 \t-2\n\t\tTCF\tDANZIG\n\nTPUSH\t\tCA\tMPAC \t+2\n\t\tTCF\tENDTPUSH +2\n\nRVQ\t\tINDEX\tFIXLOC\t\t# RVQ -- RETURN IVA QPRET.\n\t\tCA\tQPRET\n\t\tTS\tPOLISH\n\t\tTCF\tGOTO \t+4\t# (ASSUME QPRET POINTS TO FIXED ONLY.)\n\n# Page 1078\n# THE FOLLOWING SUBROUTINES ARE USED IN SQUARING MPAC, IN BOTH THE SCALAR AND VECTOR SENSE.  THEY ARE\n# SPECIAL CASES OF DMPSUB AND DOTSUB, PUT IN TO SAVE SOME TIME.\n\nDSQSUB\t\tCA\tMPAC \t+1\t# SQUARES THE SCALAR CONTENTS OF MPAC.\n\t\tEXTEND\n\t\tSQUARE\n\t\tTS\tMPAC \t+2\n\t\tCAF\tZERO\t\t# FORM 2(CROSS TERM).\n\t\tXCH\tMPAC \t+1\n\t\tEXTEND\n\t\tMP\tMPAC\n\t\tDDOUBL\t\t\t# AND MAYBE OVEFLOW.\n\t\tDAS\tMPAC \t+1\t# AND SET A TO NET OVERFLOW.\n\t\tXCH\tMPAC\n\t\tEXTEND\n\t\tSQUARE\n\t\tDAS\tMPAC\n\t\tTC\tQ\n\nVSQSUB\t\tEXTEND\t\t\t# DOTS THE VECTOR IN MPAC WITH ITSELF.\n\t\tQXCH\tDOTRET\n\t\tTC\tDSQSUB\t\t# SQUARE THE X COMPONENT.\n\t\tDXCH\tMPAC \t+3\n\t\tDXCH\tMPAC\n\t\tDXCH\tBUF\t\t# SO WE CAN END IN DOTSUB.\n\t\tCA\tMPAC \t+2\n\t\tTS\tBUF \t+2\n\n\t\tTC\tDSQSUB\t\t# SQUARE Y COMPONENT.\n\t\tDXCH\tMPAC \t+1\n\t\tDAS\tBUF \t+1\n\t\tAD\tMPAC\n\t\tAD\tBUF\n\t\tTS\tBUF\n\t\tTCF\t+2\n\t\tTS\tOVFIND\t\t# IF OVERFLOW.\n\n\t\tDXCH\tMPAC \t+5\n\t\tDXCH\tMPAC\n\t\tTC\tDSQSUB\t\t# SQUARE Z COMPONENT.\n\t\tTCF\tENDDOT\t\t# END AS IN DOTSUB.\n\n# Page 1079\n# DOUBLE PRECISION SQUARE ROOT ROUTINE.  TAKE THE SQUARE ROOT OF THE TRIPLE PRECISION (MPAC +2 USED ONLY\n# IN NORMALIZATION) CONTENTS OF MPAC AND LEAVE THE NORMALIZED RESULT IN MPAC (C(MPAC) GREATER THAN OR EQUAL TO\n# .5).  THE RIGHT SHIFT COUNT (TC UNNORMALIZE) IS LEFT IN MPTEMP.\n\nSQRTSUB\t\tCAF\tZERO\t\t# START BY ZEROING RIGHT SHIFT COUNT.\n\t\tTS\tMPTEMP\n\n\t\tCCS\tMPAC\t\t# CHECK FOR POSITIVE ARGUMENT, SHIFTING\n\t\tTCF\tSMPAC+\t\t# FIRST SIGNIFICANT MPAC REGISTER INTO\n\t\tTCF\t+2\t\t# MPAC ITSELF.\n\t\tTCF\tSQRTNEG\t\t# SEE IF MAG OF ARGUMENT LESS THAN 10(-4).\n\n\t\tXCH\tMPAC \t+2\t# MPAC IS ZERO -- SHIFT LEFT 14.\n\t\tXCH\tMPAC \t+1\n\t\tTS\tMPAC\n\t\tCAF\tSEVEN\t\t# AUGMENT RIGHT SHIFT COUNTER.\n\t\tTS\tMPTEMP\n\n\t\tCCS\tMPAC\t\t# SEE IF MPAC NOW PNZ.\n\t\tTCF\tSMPAC+\n\t\tTCF\t+2\n\t\tTCF\tZEROANS\t\t# NEGATIVE BUT LESS THAN 10(-4) IN MAG.\n\n\t\tXCH\tMPAC \t+1\t# XERO -- SHIFT LEFT 14 AGAIN.\n\t\tTS\tMPAC\n\t\tCAF\tSEVEN\t\t# AUGMENT RIGHT SHIFT COUNTER.\n\t\tADS\tMPTEMP\n\n\t\tCCS\tMPAC\n\t\tTCF\tSMPAC+\n\t\tTC\tQ\t\t# SQRT(0) = 0.\n\t\tTCF\tZEROANS\n\t\tTCF\tFIXROOT\t\t# DO NOT LEAVE SQRTSUB WITH -0 IN MPAC.\n\nSQRTNEG\t\tCCS\tA\t\t# ARGUMENT IS NEGATIVE, BUT SEE IF SIGN-\n\t\tTCF\tSQRTABRT\t# CORRECTED ARGUMENT IS LESS THAN 10(-4)\n\n\t\tCCS\tMPAC \t+1\t# IN MAGNITUDE.  IF SO, CALL ANSWER ZERO.\nZEROANS\t\tCAF\tZERO\t\t# FORCE ANSWER TO ZERO HERE.\n\t\tTCF\tFIXROOT\n\t\tTCF\tSQRTABRT\n\t\tTCF\tFIXROOT\n\nSQRTABRT\tDXCH\tLOC\n\t\tTC\tPOODOO1\n\t\tOCT\t1302\n\n# Page 1080\nSMPAC+\t\tAD\t-1/2+2\t\t# SEE IF ARGUMENT GREATER THAN OR EQUAL TO\n\t\tEXTEND\t\t\t# .5.\n\t\tBZMF\tSRTEST\t\t# IF SO, SEE IF LESS THAN .25.\n\n\t\tDXCH\tMPAC\t\t# WE WILL TAKE THE SQUARE ROOT OF MPAC/2.\n\t\tLXCH\tSR\t\t# SHIFT RIGHT 1 AND GO TO THE SQRT ROUTINE\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tDXCH\tMPAC\n\t\tXCH\tSR\n\t\tADS\tMPAC \t+1\t# GUARANTEED NO OVERFLOW.\n\nARGHI\t\tCAF\tSLOPEHI\t\t# ARGUMENT BETWEEN .25 AND .5, GET A\n\t\tEXTEND\t\t\t# LINEAR APPROXIMATION FOR THIS RANGE.\n\t\tMP\tMPAC\n\t\tAD\tBIASHI\t\t# X0/2 = (MPAC/2)(SLOPHI) + BIASHI/2.\n\n +4\t\tTS\tBUF\t\t# X0/2 (ARGLO ENTERS HERE).\n\t\tCA\tMPAC\t\t# SINGLE-PRECISION THROUGHOUT.\n\t\tZL\n\t\tEXTEND\n\t\tDV\tBUF\t\t# (MPAC/2)/(X0/2)\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tADS\tBUF\t\t# X1 = X0/2 + .5(MPAX/2)/(X0/2)\n\n\t\tEXTEND\n\t\tMP\tHALF\t\t# FORM UP X1/2.\n\t\tDXCH\tMPAC\t\t# SAVE AND BRING OUT ARGUMENT.\n\t\tEXTEND\t\t\t# TAKE DP QUOTIENT WITH X1.\n\t\tDV\tBUF\n\t\tTS\tBUF \t+1\t# SAVE MAJOR PART OF QUOTIENT.\n\t\tCAF\tZERO\t\t# FORM MINOR PART OF QUOTIENT USING\n\t\tXCH\tL\t\t# (REMAINDER,0).\n\t\tEXTEND\n\t\tDV\tBUF\n\t\tTS\tL\t\t# IN PREPARATION FOR DAS.\n\t\tCA\tBUF \t+1\n\t\tDAS\tMPAC\t\t# X2 = X1/2 + (MPAC/2)X1\n\n\t\tEXTEND\t\t\t# OVERFLOWS IF ARG. NEAR POSMAX.\n\t\tBZF\tTCQBNK00\n\t\tCAF\tPOSMAX\nFIXROOT\t\tTS\tMPAC\n\t\tTS\tMPAC \t+1\nTCQBNK00\tTC\tQ\t\t# RETURN TO CALLER TO UNNORMALIZE, ETC.\n\n# Page 1081\nSRTEST\t\tAD\tQUARTER\t\t# ARGUMENT WAS LESS THAN .5, SEE IF LESS\n\t\tEXTEND\t\t\t# THAN .25.\n\t\tBZMF\tSQRTNORM\t# IF SO, BEGIN NORMALIZATION.\n\n\t\tDXCH\tMPAC\t\t# IF BETWEEN .5 AND .25, SHIFT RIGHT 1 AND\n\t\tLXCH\tSR\t\t# START AT ARGLO.\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tDXCH\tMPAC\n\t\tXCH\tSR\n\t\tADS\tMPAC \t+1\t# NO OVERFLOW.\n\nARGLO\t\tCAF\tSLOPELO\t\t# (NORMALIZED) ARGUMENT BETWEEN .125 AND\n\t\tEXTEND\t\t\t# .25\n\t\tMP\tMPAC\n\t\tAD\tBIASLO\n\t\tTCF\tARGHI \t+4\t# BEGIN SQUARE ROOT.\n\nSQRTNM2\t\tEXTEND\t\t\t# SHIFT LEFT 2 AND INCREMENT RIGHT SHIFT\n\t\tDCA\tMPAC \t+1\t# COUNT (FOR TERMINAL UNNORMALIZATION).\n\t\tDAS\tMPAC \t+1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\t\t# (NO OVERFLOW).\n\nSQRTNORM\tINCR\tMPTEMP\t\t# FIRST TIME THROUGH, JUST SHIFT LEFT 1\n\t\tEXTEND\t\t\t# (PUTS IN EFFECTIVE RIGHT SHIFT SINCE\n\t\tDCA\tMPAC \t+1\t# WE WANT MPAC/2).\n\t\tDAS\tMPAC \t+1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\t\t# (AGAIN NO OVERFLOW).\n\t\tDOUBLE\n\t\tTS\tCYL\n\nNORMTEST\tCCS\tCYL\t\t# SEE IF ARGUMENT NOW NORMALIZED AT\n\t\tCCS\tCYL\t\t# GREATER THAN .125.\n\t\tTCF\tSQRTNM2\t\t# NO -- SHIFT LEFT 2 MORE AND TRY AGAIN.\n\t\tTCF\tARGHI\t\t# YES -- NOW BETWEEN .5 AND .25.\n\t\tTCF\tARGLO\t\t# ARGUMENT NOW BETWEEN .25 AND .125.\n\n# Page 1082\n# TRIGONOMETRIC FUNCTION PACKAGE.\n#\tTHE FOLLOWING TRIGONOMETRIC FUNCTIONS ARE AVAIALABLE AS INTERPRETIVE OPERATIONS:\n#\t1.\tSIN\t\tCOMPUTES (1/2)SINE(2 PI MPAC).\n#\t2.\tCOS\t\tCOMPUTES (1/2)COSINE(2 PI MPAC).\n#\t3.\tASIN\t\tCOMPUTES (1/2PI)ARCSINE(2 MPAC).\n#\t4.\tACOS\t\tCOMPUTES (1/2PI)ARCCOSINE(2 MPAC).\n#\n# SIN-ASIN AND COS-ACOS ARE MUTUALLY INVERSE, I.E., SIN(ASIN(X)) = X.\n\nCOSINE\t\tTC\tBRANCH\t\t# FINDS COSINE USING THE IDENTITY\n\t\tTCF\t+3\t\t# COS(X) = SIN(PI/2 - ABS(X)).\n\t\tTCF\tPRESINE\n\t\tTCF\tPRESINE\n\n +3\t\tEXTEND\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC\n\nPRESINE\t\tCAF\tQUARTER\t\t# PI/2 SCALED.\n\t\tADS\tMPAC\n\nSINE\t\tDXCH\tMPAC\t\t# DOUBLE ARGUMENT.\n\t\tDDOUBL\n\t\tOVSK\t\t\t# SEE IF OVERFLOW PRESENT.\n\t\tTCF\t+3\t\t# IF NOT, ARGUMENT OK AS IS.\n\n\t\tEXTEND\t\t\t# IF SO, WE LOST (OR GAINED) PI, SO\n\t\tDCOM\t\t\t# COMPLEMENT MPAC USING THE IDENTITY\n\t\t\t\t\t# SIN(X-(+)PI) = SIN(-X).\n +3\t\tDXCH\tMPAC\n\t\tCA\tMPAC\t\t# SEE IF ARGUMENT GREATER THAN .5 IN\n\t\tDOUBLE\t\t\t# MAGNITUDE.  IF SO, REDUCE IT TO LESS THAN\n\t\tTS\tL\t\t# .5 (+-PI/2 SCALED) AS FOLLOWS:\n\t\tTCF\tSN1\n\n\t\tINDEX\tA\t\t# IF POSITIVE, FORM PI - X, IF NEGATIVE\n\t\tCAF\tNEG1/2 +1\t# USE -PI -X.\n\t\tDOUBLE\n\t\tEXTEND\n\t\tSU\tMPAC\t\t# GUARANTEED NO OVERFLOW.\n\t\tTS\tMPAC\n\t\tCS\tMPAC \t+1\n\t\tTS\tMPAC \t+1\n\n# Page 1083\nSN1\t\tEXTEND\t\t\t# SET UP TO EVALUATE HASTINGS POLYNOMIAL\n\t\tDCA\tMPAC\n\t\tDXCH\tBUF2\n\t\tTC\tDSQSUB\t\t# SQUARE MPAC.\n\n\t\tTC\tPOLY\t\t# EVALUATE FOURTH ORDER POLYNOMIAL.\n\t\tDEC\t3\n\t\t2DEC\t+.3926990796\n\n\t\t2DEC\t-.6459637111\n\n\t\t2DEC\t+.318758717\n\n\t\t2DEC\t-.074780249\n\n\t\t2DEC\t+.009694988\n\n\t\tCAF\tLBUF2\t\t# MULTIPLY BY ARGUMENT AND SHIFT LEFT 2.\n\t\tTC\tDMPSUB \t-1\n\n\t\tEXTEND\n\t\tDCA\tMPAC \t+1\n\t\tDAS\tMPAC \t+1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\t\t# NEITHER SHIFT OVERFLOWS.\n\t\tEXTEND\n\t\tDCA\tMPAC \t+1\n\t\tDAS\tMPAC \t+1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\n\t\tTCF\tDANZIG\n\n# Page 1084\n# ARCSIN/ARCCOS ROUTINE.\n\nARCSIN\t\tCAF\tLASINEX\t\t# COMPUTE ARCSIN BY USING THE IDENTITY\n\t\tTCF\t+2\t\t# ARCSIN(X) = PI/2 - ARCCOS(X).\n\nARCCOS\t\tCAF\tLDANZIG\t\t# (EXITS IMMEDIATELY).\n\t\tTS\tESCAPE\n\t\tTC\tBRANCH\t\t# TEST SIGN OF INPUT.\n\t\tTCF\tACOSST\t\t# START IMMEDIATELY IF POSITIVE.\n\t\tTCF\tACOSZERO\t# ARCCOS(0) = PI/2 = .25.\n\t\tEXTEND\t\t\t# IF NEGATIVE, USE THE IDENTITY\n\t\tDCS\tMPAC\t\t# ARCCOS(X) = PI - ARCCOS(-X), FORCING\n\t\tDXCH\tMPAC\t\t# ARGUMENT POSITIVE.\n\t\tCAF\tTCSUBTR\t\t# SET EXIT TO DO ABOVE BEFORE\n\t\tXCH\tESCAPE\t\t# ARCSIN/ARCCOS CONSIDERATIONS.\n\t\tTS\tESCAPE2\n\nACOSST\t\tCS\tHALF\t\t# TEST MAGNITUDE OF INPUT.\n\t\tAD\tMPAC\n\t\tCCS\tA\n\t\tTCF\tACOSOVF\t\t# THIS IS PROBABLY AN OVERFLOW CASE.\n\nLASINEX\t\tTCF\tASINEX\n\n\t\tTCF\tACOSST2\t\t# NO OVERFLOW -- PROCEED.\n\n\t\tCCS\tMPAC \t+1\t# IF MAJOR PART IS .5, CALL ANSWER 0\n\t\tCAF\tZERO\t\t# UNLESS MINOR PART NEGATIVE.\n\t\tTCF\tACOS=0\n\n\t\tTCF\tACOSST2\n\nACOS=0\t\tTS\tMPAC \t+1\n\t\tTS\tMPAC\n\t\tTC\tESCAPE\n\nACOSST2\t\tEXTEND\t\t\t# NOW THAT ARGUMENT IS IN PROPER RANGE,\n\t\tDCS\tMPAC\t\t# BEGIN COMPUTATION.  USE HASTINGS\n\t\tAD\tHALF\t\t# APPROXIMATION ARCCOS(X) = SQRT(1-X)P(X)\n\t\tDXCH\tMPAC\t\t# IN A SCALED VERSION WHERE P(X) IS A\n\t\tDXCH\tBUF2\t\t# SEVENTH ORDER POLYNOMIAL.\n\n\t\tTC\tSQRTSUB\t\t# RETURNS WITH NORMALIZED SQUARE ROOT.\n\n\t\tCCS\tMPTEMP\t\t# SEE IF UN-NORMALIZATION REQUIRED.\n\t\tTCF\tACOSSHR\t\t# IF SO.\n\n# Page 1085\nACOS3\t\tDXCH\tMPAC\t\t# SET UP FOR POLYNOMIAL EVALUATION.\n\t\tDXCH\tBUF2\n\t\tDXCH\tMPAC\n\n\t\tTC\tPOLY\n\t\tDEC\t6\n\t\t2DEC\t+.353553385\t# COEFFICIENTS ARE C 2(+I)/PISQRT(2) WHERE\n\n\t\t2DEC*\t-.0483017006 B+1*\t# I\n\n\t\t2DEC*\t+.0200273085 B+2*\t# WHERE C STANDS FOR ORIGINAL COEFFS.\n\n\t\t2DEC*\t-.0112931863 B+3*\n\n\t\t2DEC*\t+.00695311612 B+4*\n\n\t\t2DEC*\t-.00384617957 B+5*\n\n\t\t2DEC*\t+.001501297736 B+6*\n\n\t\t2DEC*\t-.000284160334 B+7*\n\n\n\t\tCAF\tLBUF2\t\t# DO FINAL MULTIPLY AND GO TO ANY\n\t\tTC\tDMPSUB \t-1\t# EPILOGUE SEQUENCES.\n\t\tTC\tESCAPE\n\nSUBTR\t\tEXTEND\t\t\t# EPILOGUE FOR NEGATIVE INPUTS TO ARCCOS.\n\t\tDCS\tMPAC\n\t\tAD\tHALF\t\t# FORMS PI - ARCCOS(-X) = ARCCOS(X).\n\t\tDXCH\tMPAC\n\t\tTC\tESCAPE2\t\t# GO TO POSSIBLE ARCSIN EPILOGUE.\n\nASINEX\t\tEXTEND\n\t\tDCS\tMPAC\t\t# ARCSIN EPILOGUE -- GET ARCSIN(X)\n\t\tAD\tQUARTER\t\t# = PI/2 - ARCCOS(X).\n\t\tDXCH\tMPAC\nLDANZIG\t\tTCF\tDANZIG\n\n# Page 1086\nACOSSHR\t\tINDEX\tA\t\t# THE SHIFT RIGHT IS LESS THAN 14 SINCE\n\t\tCAF\tBIT14\t\t# THE INPUT WAS NON-ZERO DP.\n\t\tTS\tMPTEMP\n\t\tTC\tVSHRRND\t\t# DP SHIFT RIGHT AND ROUND.\n\t\tTCF\tACOS3\t\t# PROCEED.\n\nACOSOVF\t\tEXTEND\t\t\t# IF MAJOR PART WAS ONLY 1 MORE THAN .5,\n\t\tBZF\tACOS=0\t\t# CALL ANSWER ZERO.\n\nACOSABRT\tEXTEND\t\t\t# IF OVERFLOW, CALL ANSWER ZERO BUT\n\t\tDCA\tLOC\t\t# SOUND AN ALARM.\n\t\tTC\tALARM1\n\t\tOCT\t1301\n\n\t\tCAF\tZERO\n\t\tTCF\tACOS=0\n\nACOSZERO\tCAF\tQUARTER\t\t# ACOS(0) = PI/2.\n\t\tTCF\tACOS=0 \t+1\t# SET MPAC AND EXIT VIA ESCAPE.\n\nNEG12\t\tDEC\t-12\nTCSUBTR\t\tTCF\tSUBTR\n\n# Page 1087\n# THE FOLLOWING INSTRUCTIONS ARE AVAILABLE FOR SETTING, MODIFYING, AND BRANCHING ON INDEX REGISTERS:\n#\t1.\tAXT\tADDRESS TO INDEX TRUE.\n#\t2.\tAXC\tADDRESS TO INDEX COMPLEMENTED.\n#\t3.\tLXA\tLOAD INDEX FROM ERASABLE.\n#\t4.\tLXC\tLOAD INDEX COMPLEMENTED FROM ERASABLE.\n#\t5.\tSXA\tSTORE INDEX IN ERASABLE.\n#\t6.\tXCHX\tEXCHANGE INDEX REGISTER WITH ERASABLE.\n#\t7.\tINCR\tINCREMENT INDEX REGISTER.\n#\t8.\tXAD\tERASABLE ADD TO INDEX REGISTER.\n#\t9.\tXSU\tERASABLE SUBTRACT FROM INDEX REGISTER.\n#\t10.\tTIX\tBRANCH ON INDEX REGISTER AND DECREMENT.\n\n\t\tBANK\t01\n\n\t\tCOUNT*\t$$/INTER\nAXT\t\tTC\tTAGSUB\t\t# SELECT APPROPRIATE INDEX REGISTER.\n\t\tCA\tPOLISH\nXSTORE\t\tINDEX\tINDEXLOC\t# CONTAINS C(FIXLOC) OR C(FIXLOC)+1\n\t\tTS\tX1\n\t\tTCF\tDANZIG\n\nAXC\t\tTC\tTAGSUB\n\t\tCS\tPOLISH\n\t\tTC\tXSTORE\n\nLXA\t\tTC\t15ADRERS\t# LOAD INDEX REGISTER FROM ERASABLE.\n\t\tINDEX\tPOLISH\n\t\tCA\t0\n\t\tTCF\tXSTORE\n\nLXC\t\tTC\t15ADRERS\t# LOAD NDX REG FROM ERASABLE COMPLEMENTED.\n\t\tINDEX\tPOLISH\n\t\tCS\t0\n\t\tTCF\tXSTORE\n\nSXA\t\tTC\t15ADRERS\t# STORE INDEX REGISTER IN ERASABLE.\n\t\tINDEX\tINDEXLOC\n\t\tCA\tX1\nMSTORE1\t\tINDEX\tPOLISH\n\t\tTS\t0\n\t\tTCF\tDANZIG\n\n# Page 1088\nXCHX\t\tTC\t15ADRERS\t# EXCHANGE INDEX REGISTER WITH ERASABLE.\n\t\tINDEX\tPOLISH\n\t\tCA\t0\n\t\tINDEX\tINDEXLOC\n\t\tXCH\tX1\n\t\tTCF\tMSTORE1\n\nXAD\t\tTC\t15ADRERS\t# ADD ERASABLE TO INDEX REGISTER.\n\t\tINDEX\tPOLISH\n\t\tCA\t0\nXAD2\t\tINDEX\tINDEXLOC\n\t\tADS\tX1\t\t# IGNORING OVERFLOWS.\n\t\tTCF\tDANZIG\n\nINCR\t\tTC\tTAGSUB\t\t# INCREMENT INDEX REGISTER.\n\t\tCA\tPOLISH\n\t\tTCF\tXAD2\n\nXSU\t\tTC\t15ADRERS\t# SUBTRACT ERASABLE FROM INDEX REGISTER.\n\t\tINDEX\tPOLISH\n\t\tCS\t0\n\t\tTCF\tXAD2\n\nTIX\t\tTC\tTAGSUB\t\t# BRANCH AND DECREMENT ON INDEX.\n\t\tINDEX\tINDEXLOC\n\t\tCS\tS1\n\t\tINDEX\tINDEXLOC\n\t\tAD\tX1\n\t\tEXTEND\t\t\t# NO OPERATION IF DECREMENTED INDEX IS\n\t\tBZMF\tDANZIG\t\t# NEGATIVE OR ZERO.\n\nDOTIXBR\t\tINDEX\tINDEXLOC\n\t\tXCH\tX1\t\t# IGNORING OVERFLOWS.\n\n\t\tTCF\tGOTO\t\t# DO THE BRANCH USING THE CADR IN POLISH.\n\n# Page 1089\n# SUBROUTINE TO CONVERT AN ERASABLE ADDRESS (11 BITS) TO AN EBANK SETTING AND SUBADDRESS.\n\n15ADRERS\tCS\tPOLISH\n\t\tAD\tDEC45\n\t\tCCS\tA\t\t# DOES THE ADDRESS POINT TO THE WORK AREA?\n\t\tCA\tFIXLOC\t\t# YES.  ADD FIXLOC.  EBANK OK AS IS.\n\t\tTCF\t+5\n\n\t\tCA\tOCT1400\t\t# NO. SET EBANK & MAKE UP SUBADDRESS.\n\t\tXCH\tPOLISH\n\t\tTS\tEBANK\n\t\tMASK\tLOW8\n +5\t\tADS\tPOLISH\t\t# FALL INTO TAGSUB, AND RETURN VIA Q.\n\n# SUBROUTINE WHICH SETS THE ADDRESS OF THE SPECIFIED INDEX IN INDEXLOC.  (ACTUALLY, THE ADDRESS -38D.)\n\nTAGSUB\t\tCA\tFIXLOC\n\t\tTS\tINDEXLOC\n\n\t\tCCS\tCYR\t\t# BIT 15 SPECIFIES INDEX.\n\t\tINCR\tINDEXLOC\t# 0 MEANS USE X2.\n\t\tTC\tQ\n\t\tTC\tQ\t\t# 1 FOR X1.\n\n# Page 1090\n# MISCELLANEOUS OPERATION CODES WITH DIRECT ADDRESSES.  INCLUDED HERE ARE:\n#\t1.\tITA\tSTORE CPRET (RETURN ADDRESS) IN ERASABLE.\n#\t2.\tCALL\tCALL A SUBROUTINE, LEAVING RETURN IN QPRET.\n#\t3.\tRTB\tRETURN TO BASIC LANGUAGE AT THE GIVEN ADDRESS.\n#\t4.\tBHIZ\tBRANCH IF THE HIGH ORDER OF MPAC IS ZERO (SINGLE PRECISION).\n#\t5.\tBOV\tBRANCH ON OVERFLOW.\n#\t6.\tGOTO\tSIMPLE SEQUENCE CHANGE.\n\nRTB/BHIZ\tCCS\tCYR\nRTB\t\tCA\tPOLISH\n\t\tTC\tSWCALL \t-1\t# SO A \"TC Q\" FROM ROUTINE LEADS TO DANZIG\n\nBHIZ\t\tCCS\tMPAC\n\t\tTCF\tDANZIG\n\t\tTCF\tGOTO\n\t\tTCF\tDANZIG\n\t\tTCF\tGOTO\n\nBOV(B)\t\tCCS\tOVFIND\t\t# BRANCH ON OVERFLOW TO BASIC OR INTERP.\n\t\tTCF\t+2\n\t\tTCF\tDANZIG\n\t\tTS\tOVFIND\n\t\tCCS\tCYR\n\t\tTCF\tRTB\t\t# IF BASIC.\nB5TOBB\t\tOCT\t360\n\t\tTCF\tGOTO\n\n# Page 1091\nBZE/GOTO\tCCS\tCYR\t\t# SEE WHICH OP-CODE IS DESIRED.\n\t\tTC\tBRANCH\t\t# DO BZE.\n\t\tTCF\tDANZIG\n\t\tTCF\tGOTO\t\t# DO GOTO.\n\t\tTCF\tDANZIG\n\nBPL/BMN\t\tCCS\tCYR\n\t\tTCF\tBPL\n5B10\t\tDEC\t5 B+10\t\t# SHIFTS OP CODE IN SWITCH INSTRUCTION ADR\n\n\t\tTC\tBRANCH\t\t# DO BMN\n\t\tTCF\tDANZIG\n\t\tTCF\tDANZIG\n\t\tTCF\tGOTO\t\t# ONLY IF NNZ.\n\nBPL\t\tTC\tBRANCH\n\t\tTCF\tGOTO\t\t# IF POSITIVE OR ZERO.\n\t\tTCF\tGOTO\n\t\tTCF\tDANZIG\n\nCALL/ITA\tCCS\tCYR\n\t\tTCF\tCALL\n\n\t\tTC\tCCSHOLE\n\t\tTC\t15ADRERS\t# STORE QPRET.  (TAGSUB AFTER 15ADRERS IS\n\t\tINDEX\tFIXLOC\t\t# SLOW IN THIS CASE, BUT SAVES STORAGE.)\n\t\tCA\tQPRET\n\t\tTCF\tMSTORE1\n\n# Page 1092\n# THE FOLLOWING OPERATIONS ARE AVAILABLE FOR ALTERING AND TESTING INTERPRETATIVE SWITCHES:\n\n#\t00\tBONSET\t\tSET A SWITCH AND DO A GOTO IF IT WAS ON.\n#\t01\tSETGO\t\tSET A SWITCH AND DO A GOTO.\n#\t02\tBOFSET\t\tSET A SWITCH AND DOA GOTO IF IT WAS OFF\n#\t03\tSET\t\tSET A SWITCH.\n\n#\t04\tBONINV\t\tINVERT A SWITCH AND BRANCH IF IT WAS ON.\n#\t05\tINVGO\t\tINVERT A SWITCH AND DO A GOTO.\n#\t06\tBOFINV\t\tINVERT A SWITCH AND BRANCH IF IT WAS OFF\n#\t07\tINVERT\t\tINVERT A SWITCH.\n\n#\t10\tBONCLR\t\tCLEAR A SWITCH AND BRANCH IF IT WAS ON.\n#\t11\tCLRGO\t\tCLEAR A SWITCH AND DO A GOTO.\n#\t12\tBOFCLR\t\tCLEAR A SWITCH AND BRANCH IF IT WAS OFF.\n#\t13\tCLEAR\t\tCLEAR A SWITCH.\n\n#\t14\tBON\t\tBRANCH IF A SWITCH WAS ON.\n#\t16\tBOFF\t\tBRANCH IF A SWITCH WAS OFF.\n\n# THE ADDRESS SUPPLIED WITH THE SWITCH INSTRUCTION IS INTERPRETED AS FOLLOWS:\n\n#\tBITS 1-4\tSWITCH BIT NUMBER (1-15).\n#\tBITS 5-8\tSWITCH OPERATION NUMBER\n#\tBITS 9-\t\tSWITCH WORD NUMBER (UP TO 64 SWITCH WORDS).\n\n# THE ADDRESS ITSELF IS MADE UP BY THE YUL SYSTEM ASSEMBLER.  THE BRANCH INSTRUCTIONS REQUIRE TWO\n# ADDRESSES, THE SECOND TAKEN AS THE DIRECT (OR INDIRECT IF IN ERASABLE) ADDRESS OF THE BRANCH.\n\nSWITCHES\tCAF\tLOW4\t\t# LEAVE THE SWITCH BIT IN SWBIT.\n\t\tMASK\tPOLISH\n\t\tINDEX\tA\n\t\tCAF\tBIT15\t\t# (NUMBER FROM LEFT TO RIGHT.)\n\t\tTS\tSWBIT\n\n\t\tCAF\tBIT7\t\t# LEAVE THE SWITCH NUMBER IN SWWORD.\n\t\tEXTEND\n\t\tMP\tPOLISH\n\t\tTS\tSWWORD\n\n\t\tINHINT\t\t\t# DURING SWITCH CHANGE SO RUPT CAN USE TOO\n\t\tINDEX\tA\t\t# LEAVE THE SWITCH WORD ITSELF IN L.\n\t\tCA\tSTATE\n\t\tTS\tQ\t\t# Q WILL BE USED AS A CHANNEL.\n# Page 1093\n\t\tCAF\tBIT11\n\t\tEXTEND\t\t\t# DISPATCH SWITCH BIT OPERATION AS IN BITS\n\t\tMP\tPOLISH\t\t# 7-8 OF POLISH.\n\t\tMASK\tB3TOB4\t\t# GETS 4X2-BIT CODE.\n\t\tINDEX\tA\n\t\tTCF\t+1\n\n +1\t\tCA\tSWBIT\t\t# 00 -- SET SWITCH IN QUESTION.\n\t\tEXTEND\n\t\tROR\tQCHAN\n\t\tTCF\tSWSTORE\n\n +5\t\tCA\tSWBIT\t\t# 01 -- INVERT SWITCH.\n\t\tEXTEND\n\t\tRXOR\tQCHAN\n\t\tTCF\tSWSTORE\n\n +9D\t\tCS\tSWBIT\t\t# 10 -- CLEAR.\n\t\tMASK\tQ\nSWSTORE\t\tINDEX\tSWWORD\n\t\tTS\tSTATE\t\t# NEW SWITCH WORD.\n\n# Page 1094\n +13D\t\tRELINT\t\t\t# 11 -- NOOP.\n\t\tCAF\tBIT13\n\t\tEXTEND\t\t\t# DISPATCH SEQUENCE CHANGING OR BRANCING\n\t\tMP\tPOLISH\t\t# CODE.\n\t\tMASK\tB3TOB4\n\t\tINDEX\tA\n\t\tTCF\t+1\t\t# ORIGINALLY STORED IN BITS 5-6\n\n +1\t\tCS\tQ\t\t# 00 -- BRANCH IF ON.\nTEST\t\tMASK\tSWBIT\n\t\tCCS\tA\n\t\tTCF\tSWSKIP\n\n +5\t\tTCF\tSWBRANCH\t# 01 -- GO TO.\n\n\t\tTCF\tSWSKIP\t\t# HERE ONLY ON BIT 15.\n\n\t\tTC\tCCSHOLE\n\t\tTC\tCCSHOLE\n\n +9D\t\tCA\tQ\t\t# 10 -- BRANCH IF OFF.\n\t\tTCF\tTEST\n\nB3TOB4\t\tOCT\t0014\nSWSKIP\t\tINCR\tLOC\n\nSW/\t\tEQUALS\tSWITCHES\n\n +13D\t\tTCF\tDANZIG\t\t# 11 -- NOOP.\n\n"
  },
  {
    "path": "Luminary099/INTERPRETIVE_CONSTANT.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINTERPRETIVE_CONSTANT.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1100-1101\n# Mod history:\t2009-05-25 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1100\n\t\tSETLOC\tINTPRET1\n\t\tBANK\n\n\t\tCOUNT*\t$$/ICONS\nDP1/4TH\t\t2DEC\t.25\n\nUNITZ\t\t2DEC\t0\n\nUNITY\t\t2DEC\t0\n\nUNITX\t\t2DEC\t.5\n\nZEROVECS\t2DEC\t0\n\n\t\t2DEC\t0\n\n\t\t2DEC\t0\n\nDPHALF\t\t=\tUNITX\nDPPOSMAX\tOCT\t37777\n\t\tOCT\t37777\n\n# Page 1101\n# INTERPRETIVE CONSTANTS IN THE OTHER HALF-MEMORY\n\n\t\tSETLOC\tINTPRET2\n\t\tBANK\n\n\t\tCOUNT*\t$$/ICONS\nZUNIT\t\t2DEC\t0\n\nYUNIT\t\t2DEC\t0\n\nXUNIT\t\t2DEC\t.5\n\nZEROVEC\t\t2DEC\t0\n\n\t\t2DEC\t0\n\n\t\t2DEC\t0\n\n\t\tOCT\t77777\t\t# -0, -6, -12 MUST REMAIN IN THIS ORDER\nDFC-6\t\tDEC\t-6\nDFC-12\t\tDEC\t-12\nLODPMAX\t\t2OCT\t3777737777\t# THESE TWO CONSTANTS MUST REMAIN\n\nLODPMAX1\t2OCT\t3777737777\t# ADJACENT AND THE SAME FOR INTEGRATION\n\nZERODP\t\t=\tZEROVEC\nHALFDP\t\t=\tXUNIT\n\n\n"
  },
  {
    "path": "Luminary099/INTERRUPT_LEAD_INS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tINTERRUT_LEAD_INS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t0153-0154\n# Mod history:\t2009-05-14 OH\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n\n# Page 153\n\t\tSETLOC\t4000\n\n\t\tCOUNT*\t$$/RUPTS\t# FIX-FIX LEAD INS\n\t\tINHINT\t\t\t# GO\n\t\tCAF\tGOBB\n\t\tXCH\tBBANK\n\t\tTCF\tGOPROG\n\n\t\tDXCH\tARUPT\t\t# T6RUPT\n\t\tEXTEND\n\t\tDCA\tT6ADR\n\t\tDTCB\n\n\t\tDXCH\tARUPT\t\t# T5RUPT - AUTOPILOT\n\t\tEXTEND\n\t\tDCA\tT5ADR\n\t\tDTCB\n\n\t\tDXCH\tARUPT\t\t# T3RUPT\n\t\tCAF\tT3RPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tT3RUPT\n\n\t\tDXCH\tARUPT\t\t# T4RUPT\n\t\tCAF\tT4RPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tT4RUPT\n\n\t\tDXCH\tARUPT\t\t# KEYRUPT1\n\t\tCAF\tKEYRPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tKEYRUPT1\n\n\t\tDXCH\tARUPT\t\t# KEYRUPT2\n\t\tCAF\tMKRUPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tMARKRUPT\n\n\t\tDXCH\tARUPT\t\t# UPRUPT\n\t\tCAF\tUPRPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tUPRUPT\n\n\t\tDXCH\tARUPT\t\t# DOWNRUPT\n\t\tCAF\tDWNRPTBB\n\t\tXCH\tBBANK\n\t\tTCF\tDODOWNTM\n\n\t\tDXCH\tARUPT\t\t# RADAR RUPT\n\t\tCAF\tRDRPTBB\n# Page 154\n\t\tXCH\tBBANK\n\t\tTCF\tRADAREAD\n\n\t\tDXCH\tARUPT\t\t# RUPT10 IS USED ONLY BY LANDING GUIDANCE\n\t\tCA\tRUPT10BB\n\t\tXCH\tBBANK\n\t\tTCF\tPITFALL\n\n\n\t\tEBANK=\tLST1\t\t# RESTART USES E0, E3\nGOBB\t\tBBCON\tGOPROG\n\n\t\tEBANK=\tPERROR\nT6ADR\t\t2CADR\tDOT6RUPT\n\n\t\tEBANK=\tLST1\nT3RPTBB\t\tBBCON\tT3RUPT\n\n\t\tEBANK=\tKEYTEMP1\nKEYRPTBB\tBBCON\tKEYRUPT1\n\n\t\tEBANK=\tAOTAZ\nMKRUPTBB\tBBCON\tMARKRUPT\n\nUPRPTBB\t\t=\tKEYRPTBB\n\n\t\tEBANK=\tDNTMBUFF\nDWNRPTBB\tBBCON\tDODOWNTM\n\n\t\tEBANK=\tRADMODES\nRDRPTBB\t\tBBCON\tRADAREAD\n\n\t\tEBANK=\tM11\nT4RPTBB\t\tBBCON\tT4RUPT\n\n\t\tEBANK=\tELVIRA\nRUPT10BB\tBBCON\tPITFALL\n\n"
  },
  {
    "path": "Luminary099/KALCMANU_STEERING.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tKALCMANU_STEERING.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t365-369\n# Mod history:\t2009-05-17 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-01-06 JL\tAdded missing comment characters.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 365\n# GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS\n#\n# NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER\n\n\t\tEBANK=\tTTEMP\n\nNEWDELHI\tTC\tBANKCALL\t# CHECK FOR AUTO STABILIZATION\n\t\tCADR\tISITAUTO\t# ONLY\n\t\tCCS\tA\n\t\tTCF\tNOGO -2\nNEWANGL\t\tTC\tINTPRET\n\t\tAXC,1\tAXC,2\n\t\t\tMIS\t\t# COMPUTE THE NEW MATRIX FROM S/C TO\n\t\t\tKEL\t\t# STABLE MEMBER AXES\n\t\tCALL\n\t\t\tMXM3\n\t\tVLOAD\tSTADR\n\t\tSTOVL\tMIS +12D\t# CALCULATE NEW DESIRED CDU ANGLES\n\t\tSTADR\n\t\tSTOVL\tMIS +6D\n\t\tSTADR\n\t\tSTORE\tMIS\n\t\tAXC,1\tCALL\n\t\t\tMIS\n\t\t\tDCMTOCDU\t# PICK UP THE NEW CDU ANGLES FROM MATRIX\n\t\tRTB\n\t\t\tV1STO2S\n\t\tSTORE\tNCDU\t\t# NEW CDU ANGLES\n\t\tBONCLR\tEXIT\n\t\t\tCALCMAN2\n\t\t\tMANUSTAT\t# TO START MANEUVER\n\t\tCAF\tTWO\t\t#\t   +0 OTHERWISE\nINCRDCDU\tTS\tSPNDX\n\t\tINDEX\tSPNDX\n\t\tCA\tBCDU\t\t# INITIAL CDU ANGLES\n\t\tEXTEND\t\t\t# OR PREVIOUS DESIRED CDU ANGLES\n\t\tINDEX\tSPNDX\n\t\tMSU\tNCDU\n\t\tEXTEND\n\t\tSETLOC\tKALCMON1\n\t\tBANK\n\t\tMP\tDT/TAU\n\t\tCCS\tA\t\t# CONVERT TO 2S COMPLEMENT\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tCOM\n\t\tINDEX\tSPNDX\n\t\tTS\tDELDCDU\t\t# ANGLE INCREMENTS TO BE ADDED TO\n\t\tINDEX\tSPNDX\t\t# CDUXD, CDUYD, CDUZD EVERY TENTH SECOND\n# Page 366\n\t\tCA\tNCDU\t\t# BY LEM DAP\n\t\tINDEX\tSPNDX\n\t\tXCH\tBCDU\n\t\tINDEX\tSPNDX\n\t\tTS\tCDUXD\n\t\tCCS\tSPNDX\n\t\tTCF\tINCRDCDU\t# LOOP FOR THREE AXES\n\n\t\tRELINT\n\n# COMPARE PRESENT TIME WITH TIME TO TERMINATE MANEUVER\n\nTMANUCHK\tTC\tTIMECHK\n\t\tTCF\tCONTMANU\n\t\tCAF\tONE\nMANUSTAL\tINHINT\t\t\t# END MAJOR PART OF MANEUVER WITHIN 1 SEC\n\t\tTC\tWAITLIST\t# UNDER WAITLIST CALL TO MANUSTOP\n\t\tEBANK=\tTTEMP\n\t\t2CADR\tMANUSTOP\n\n\t\tRELINT\n\t\tTCF\tENDOFJOB\n\nTIMECHK\t\tEXTEND\n\t\tDCS\tTIME2\n\t\tDXCH\tTTEMP\n\t\tEXTEND\n\t\tDCA\tTM\n\t\tDAS\tTTEMP\n\t\tCCS\tTTEMP\n\t\tTC\tQ\n\t\tTCF\t+2\n\t\tTCF\t2NDRETRN\n\t\tCCS\tTTEMP +1\n\t\tTC\tQ\n\t\tTCF\tMANUOFF\n\t\tCOM\nMANUOFF\t\tAD\tONESEK +1\n\t\tEXTEND\n\t\tBZMF\t2NDRETRN\n\t\tINCR\tQ\n2NDRETRN\tINCR\tQ\n\t\tTC\tQ\n\nDT/TAU\t\tDEC\t.1\n\nMANUSTAT\tEXIT\t\t\t# INITIALIZATION ROUTINE\n\t\tEXTEND\t\t\t# FOR AUTOMATIC MANEUVERS\n\t\tDCA\tTIME2\n# Page 367\n\t\tDAS\tTM\t\t# TM+TO\t   MANEUVER COMPLETION TIME\n\t\tEXTEND\n\t\tDCS\tONESEK\n\t\tDAS\tTM\t\t# (TM+TO)-1\n\t\tINHINT\n\t\tCAF\tTWO\nRATEBIAS\tTS\tKSPNDX\n\t\tDOUBLE\n\t\tTS\tKDPNDX\n\t\tINDEX\tA\n\t\tCA\tBRATE\n\t\tINDEX\tKSPNDX\t\t# STORE MANEUVER RATE IN\n\t\tTS\tOMEGAPD\t\t# OMEGAPD, OMEGAQD, OMEGARD\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# COMPUTE ATTITUDE ERROR\n\t\tCOM\t\t\t# OFFSET = (WX)ABS(WX)/2AJX\n\t\tEXTEND\t\t\t# WHERE AJX= 2-JET ACCELERATION\n\t\tMP\tBIASCALE\t# = -1/16\n\t\tEXTEND\n\t\tINDEX\tKDPNDX\n\t\tMP\tBRATE\n\t\tEXTEND\n\t\tINDEX\tKSPNDX\n\t\tDV\t1JACC\t\t# =AJX\t$ 90 DEG/SEC-SEC\n\t\tINDEX\tKSPNDX\n\t\tTS\tDELPEROR\t#     $ 180 DEG\n\t\tCCS\tKSPNDX\n\t\tTCF\tRATEBIAS\n\n\t\tCA\tTIME1\n\t\tAD\tONESEK +1\n\t\tXCH\tNEXTIME\n\t\tTCF\tINCRDCDU -1\n\nONESEK\t\tDEC\t0\n\t\tDEC\t100\n\nBIASCALE\tOCT\t75777\t\t# = -1/16\n\nCONTMANU\tCS\tTIME1\t\t# RESET FOR NEXT DCDU UPDATE\n\t\tAD\tNEXTIME\n\t\tCCS\tA\n\t\tAD\tONE\n\t\tTCF\tMANUCALL\n\t\tAD\tNEGMAX\n\t\tCOM\nMANUCALL\tINHINT\t\t\t# CALL FOR NEXT UPDATE VIA WAITLIST\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTTEMP\n\t\t2CADR\tUPDTCALL\n# Page 368\n\t\tCAF\tONESEK +1\t# INCREMENT TIME FOR NEXT UPDATE\n\t\tADS\tNEXTIME\n\t\tTCF\tENDOFJOB\n\nUPDTCALL\tCAF\tPRIO26\t\t# SATELLITE PROGRAM TO CALL FOR UPDATE\n\t\tTC\tFINDVAC\t\t# OF STEERING COMMANDS\n\t\tEBANK=\tTTEMP\n\t\t2CADR\tNEWDELHI\n\n\t\tTC\tTASKOVER\n\n# Page 369\n# ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS\n\nMANUSTOP\tCAF\tZERO\t\t# ZERO MANEUVER RATES\n\t\tTS\tDELDCDU2\n\t\tTS\tOMEGARD\n\t\tTS\tDELREROR\n\t\tTS\tDELDCDU1\n\t\tTS\tOMEGAQD\n\t\tTS\tDELQEROR\n\t\tCA\tCPSI\t\t# SET DESIRED GIMBAL ANGLES TO\n\t\tTS\tCDUZD\t\t# DESIRED FINAL GIMBAL ANGLES\n\t\tCA\tCTHETA\n\t\tTS\tCDUYD\nENDROLL\t\tCA\tCPHI\t\t# NO FINAL YAW\n\t\tTS\tCDUXD\n\t\tCAF\tZERO\n\t\tTS\tOMEGAPD\t\t# I.E. MANEUVER DID NOT GO THRU\n\t\tTS\tDELDCDU\t\t# GIMBAL LOCK ORIGINALLY\n\t\tTS\tDELPEROR\nGOODMANU\tCA\tATTPRIO\t\t# RESTORE USERS PRIO\n\t\tTS\tNEWPRIO\n\n\t\tCA\tZERO\t\t# ZERO ATTCADR\n\t\tDXCH\tATTCADR\n\n\t\tTC\tSPVAC\t\t# RETURN TO USER\n\n\t\tTC\tTASKOVER\n"
  },
  {
    "path": "Luminary099/KALMAN_FILTER.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tKALMAN_FILTER.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1470-1471\n# Mod history:\t2009-05-27 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1470\n\t\tEBANK=\tNO.UJETS\n\t\tBANK\t16\n\t\tSETLOC\tDAPS1\n\t\tBANK\n\n\t\tCOUNT*\t$$/DAP\n\nRATELOOP\tCA\tTWO\n\t\tTS\tDAPTEMP6\n\t\tDOUBLE\n\t\tTS\tQ\n\t\tINDEX\tDAPTEMP6\n\t\tCCS\tTJP\n\t\tTCF\t+2\n\t\tTCF\tLOOPRATE\n\t\tAD\t-100MST6\n\t\tEXTEND\n\t\tBZMF\tSMALLTJU\n\t\tINDEX\tDAPTEMP6\n\t\tCCS\tTJP\n\t\tCA\t-100MST6\n\t\tTCF\t+2\n\t\tCS\t-100MST6\n\t\tINDEX\tDAPTEMP6\n\t\tADS\tTJP\n\t\tINDEX\tDAPTEMP6\n\t\tCCS\tTJP\n\t\tCS\t-100MS\t\t# 0.1 AT 1\n\t\tTCF\t+2\n\t\tCA\t-100MS\nLOOPRATE\tEXTEND\n\t\tINDEX\tDAPTEMP6\n\t\tMP\tNO.PJETS\n\t\tCA\tL\n\t\tINDEX\tDAPTEMP6\n\t\tTS\tDAPTEMP1\t# SIGNED TORQUE AT 1 JET-SEC FOR FILTER\n\t\tEXTEND\n\t\tMP\tBIT10\t\t# RESCALE TO 32; ONE BIT ABOUT 2 JET-MSEC\n\t\tEXTEND\n\t\tBZMF\tNEGTORK\nSTORTORK\tINDEX\tQ\t\t# INCREMENT DOWNLIST REGISTER.\n\t\tADS\tDOWNTORK\t#   NOTE: NOT INITIALIZED; OVERFLOWS.\n\n\t\tCCS\tDAPTEMP6\n\t\tTCF\tRATELOOP +1\n\t\tTCF\tROTORQUE\nSMALLTJU\tCA\tZERO\n\t\tINDEX\tDAPTEMP6\n\t\tXCH\tTJP\n\t\tEXTEND\n# Page 1471\n\t\tMP\tELEVEN\t\t# 10.24 PLUS\n\t\tCA\tL\n\t\tTCF\tLOOPRATE\nROTORQUE\tCA\tDAPTEMP2\n\t\tAD\tDAPTEMP3\n\t\tEXTEND\n\t\tMP\t1JACCR\n\t\tTS\tJETRATER\n\t\tCS\tDAPTEMP3\n\t\tAD\tDAPTEMP2\n\t\tEXTEND\n\t\tMP\t1JACCQ\n\t\tTS\tJETRATEQ\n\t\tTCF\tBACKP\n-100MST6\tDEC\t-160\n\nNEGTORK\t\tCOM\n\t\tINCR\tQ\n\t\tTCF\tSTORTORK\n\n\n"
  },
  {
    "path": "Luminary099/KEYRUPT_UPRUPT.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tKEYRUPT_UPRUPT.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1338-1340\n# Mod history:\t2009-05-27 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1338\n\t\tBANK\t14\n\t\tSETLOC\tKEYRUPT\n\t\tBANK\n\t\tCOUNT*\t$$/KEYUP\n\nKEYRUPT1\tTS\tBANKRUPT\n\t\tXCH\tQ\n\t\tTS\tQRUPT\n\t\tTC\tLODSAMPT\t# TIME IS SNATCHED IN RUPT FOR NOUN 65.\n\t\tCAF\tLOW5\n\t\tEXTEND\n\t\tRAND\tMNKEYIN\t\t# CHECK IF KEYS 5M-1M ON\nKEYCOM\t\tTS\tRUPTREG4\n\t\tCS\tFLAGWRD5\n\t\tMASK\tDSKYFBIT\n\t\tADS\tFLAGWRD5\n\nACCEPTUP\tCAF\tCHRPRIO\t\t# (NOTE: RUPTREG4 = KEYTEMP1)\n\t\tTC\tNOVAC\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tCHARIN\n\n\t\tCA\tRUPTREG4\n\t\tINDEX\tLOCCTR\n\t\tTS\tMPAC\t\t# LEAVE 5 BIT KEY CDE IN MPAC FOR CHARIN\n\t\tTC\tRESUME\n\n# Page 1339\n# UPRUPT PROGRAM\n\nUPRUPT\t\tTS\tBANKRUPT\n\t\tXCH\tQ\n\t\tTS\tQRUPT\n\t\tTC\tLODSAMPT\t# TIME IS SNATCHED IN RUPT FOR NOUN 65.\n\t\tCAF\tZERO\n\t\tXCH\tINLINK\n\t\tTS\tKEYTEMP1\n\t\tCAF\tBIT3\t\t# TURN ON UPACT LIGHT\n\t\tEXTEND\t\t\t# (BIT 3 OF CHANNEL 11)\n\t\tWOR\tDSALMOUT\nUPRPT1\t\tCAF\tLOW5\t\t# TEST FOR TRIPLE CHAR REDUNDANCY\n\t\tMASK\tKEYTEMP1\t# LOW5 OF WORD\n\t\tXCH\tKEYTEMP1\t# LOW5 INTO KEYTEMP1\n\t\tEXTEND\n\t\tMP\tBIT10\t\t# SHIFT RIGHT 5\n\t\tTS\tKEYTEMP2\n\t\tMASK\tLOW5\t\t# MID 5\n\t\tAD\tHI10\n\t\tTC\tUPTEST\n\t\tCAF\tBIT10\n\t\tEXTEND\n\t\tMP\tKEYTEMP2\t# SHIFT RIGHT 5\n\t\tMASK\tLOW5\t\t# HIGH 5\n\t\tCOM\n\t\tTC\tUPTEST\n\nUPCK\t\tCS\tELRCODE\t\t# CODE IS GOOD. IF CODE = 'ERROR RESET',\n\t\tAD\tKEYTEMP1\t# CLEAR UPLOCKFL(SET BIT4 OF FLAGWRD7 = 0)\n\t\tEXTEND\t\t\t# IF CODE DOES NOT = 'ERROR RESET', ACCEPT\n\t\tBZF\tCLUPLOCK\t# CODE ONLY IF UPLOCKFL IS CLEAR (=0).\n\n\t\tCAF\tUPLOCBIT\t# TEST UPLOCKFL FOR 0 OR 1\n\t\tMASK\tFLAGWRD7\n\t\tCCS\tA\n\t\tTC\tRESUME\t\t# UPLOCKFL = 1\n\t\tTC\tACCEPTUP\t# UPLOCKFL = 0\n\nCLUPLOCK\tCS\tUPLOCBIT\t# CLEAR UPLOCKFL (I.E.,SET BIT 4 OF )\n\t\tMASK\tFLAGWRD7\t# FLAGWRD7 = 0)\n\t\tTS\tFLAGWRD7\n\t\tTC\tACCEPTUP\n\n\t\t\t\t\t# CODE IS BAD\nTMFAIL2\t\tCS\tFLAGWRD7\t# LOCK OUT FURTHER UPLINK ACTIVITY\n\t\tMASK\tUPLOCBIT\t# (BY SETTING UPLOCKFL = 1) UNTIL\n\t\tADS\tFLAGWRD7\t# 'ERROR RESET' IS SENT VIA UPLINK.\n\t\tTC\tRESUME\nUPTEST\t\tAD\tKEYTEMP1\n# Page 1340\n\t\tCCS\tA\n\t\tTC\tTMFAIL2\nHI10\t\tOCT\t77740\n\t\tTC\tTMFAIL2\n\t\tTC\tQ\n\nELRCODE\t\tOCT\t22\n\n# 'UPLINK ACTIVITY LIGHT' IS TURNED OFF BY .....\n#\t   1.\t  VBRELDSP\n#\t   2.\t  ERROR RESET\n#\t   3.\t  UPDATE PROGRAM(P27) ENTERED BY V70,V71,V72,AND V73.\n#\n#\t\t\t\t    _\n# THE RECEPTION OF A BAD CODE(I.E  CCC FAILURE) LOCKS OUT FURTHER UPLINK ACTIVITY BY SETTING BIT4 OF FLAGWRD7 = 1.\n# THIS INDICATION WILL BE TRANSFERRED TO THE GROUND BY THE DOWNLINK WHICH DOWNLINKS ALL FLAGWORDS.\n# WHEN UPLINK ACTIVITY IS LOCKED OUT ,IT CAN BE ALLOWED WHEN THE GROUND UPLINKS AND 'ERROR RESET' CODE.\n# (IT IS RECOMMENDED THAT THE 'ERROR LIGHT RESET' CODE IS PRECEEDED BY 16 BITS THE FIRST OF WHICH IS 1 FOLLOWED\n# BY 15 ZEROES. THIS WILL ELIMINATE EXTRANEOUS BITS FROM INLINK WHICH MAY HAVE BEEN LEFT OVER FROM THE ORIGINAL\n# FAILURE)\n# UPLINK ACTIVITY IS ALSO ALLOWED(UNLOCKED) DURING FRESH START WHEN FRESH START SETS BIT4 OF FLAGWRD7 = 0.\n\t\tCS\tXDSPBIT\n"
  },
  {
    "path": "Luminary099/LANDING_ANALOG_DISPLAYS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tLANDING_ANALOG_DISPLAYS.agc\n# Purpose:\tPart of the source code for Luminary, build 099. It\n#\t\tis part of the source code for the Lunar Module's\n#\t\t(LM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 898-907\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t05/06/09 FB\tTranscription Batch 4 Assignment.\n#\n# The contents of the \"Luminary099\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 001 of AGC program Luminary099 by NASA\n#\t2021112-061.  July 14, 1969.\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 898\n\t\tBANK\t21\n\t\tSETLOC\tR10\n\t\tBANK\n\n\t\tEBANK=\tUNIT/R/\n\t\tCOUNT*\t$$/R10\n\nLANDISP\t\tLXCH\tPIPCTR1\t\t# UPDATE TBASE2 AND PIPCTR SIMULTANEOUSLY.\n\t\tCS\tTIME1\n\t\tDXCH\tTBASE2\n\n\t\tCS\tFLAGWRD7\t# IS LANDING ANALOG DISPLAYS FLAG SET?\n\t\tMASK\tSWANDBIT\n\t\tCCS\tA\n\t\tTCF\tDISPRSET\t# NO.\n\t\tCA\tIMODES33\t# BIT 7 = 0 (DO ALTRATE), =1 (DO ALT.)\n\t\tMASK\tBIT7\n\t\tCCS\tA\n\t\tTCF\tALTOUT\nALTROUT\t\tTC\tDISINDAT\t# CHECK MODE SELECT SWITCH AND DIDFLG.\n\t\tCS\tIMODES33\n\t\tMASK\tBIT7\n\t\tADS\tIMODES33\t# ALTERNATE ALTITUDE RATE WITH ALTITUDE.\n\t\tCAF\tBIT2\t\t# RATE COMMAND IS EXECUTED BEFORE RANGE.\n\t\tEXTEND\n\t\tWOR\tCHAN14\t\t# ALTRATE (BIT2 = 1), ALTITUDE (BIT2 = 0).\nARCOMP\t\tCA\tRUNIT\t\t# COMPUTE ALTRATE=RUNIT.VVECT M/CS *2(-6).\n\t\tEXTEND\n\t\tMP\tVVECT\t\t# MULTIPLY X-COMPONENTS.\n\t\tXCH\tRUPTREG1\t# SAVE SINGLE PRECISION RESULT M/CS*2(-6).\n\t\tCA\tRUNIT +1\t# MULTIPLY Y-COMPONENTS.\n\t\tEXTEND\n\t\tMP\tVVECT +1\n\t\tADS\tRUPTREG1\t# ACCUMULATE PARTIAL PRODUCTS.\n\t\tCA\tRUNIT +2\t# MULTIPLY Z-COMPONENTS.\n\t\tEXTEND\n\t\tMP\tVVECT +2\n\t\tADS\tRUPTREG1\t# ALTITUDE RATE IN M/CS *2(-6).\n\t\tCA\tARCONV\t\t# CONVERT ALTRATE TO BIT UNITS (.5FPS/BIT)\n\t\tEXTEND\n\t\tMP\tRUPTREG1\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tXCH\tRUPTREG1\t# ALTITUDE RATE IN BIT UNITS*2(-14).\n\t\tCA\tDALTRATE\t# ALTITUDE RATE COMPENSATION FACTOR.\n\t\tEXTEND\n\t\tMP\tDT\n\t\tAD\tRUPTREG1\n\t\tTS\tALTRATE\t\t# ALTITUDE RATE IN BIT UNITS*2(-14).\n\t\tCS\tALTRATE\n# Page 899\n\t\tEXTEND\t\t\t# CHECK POLARITY OF ALTITUDE RATE.\n\t\tBZMF\t+2\n\t\tTCF\tDATAOUT\t\t# NEGATIVE - SEND POS. PULSES TO ALTM REG.\n\t\tCA\tALTRATE\t\t# POSITIVE OR ZERO - SET SIGN BIT = 1 AND\n\t\tAD\tBIT15\t\t# SEND TO ALTM REGISTER. *DO NOT SEND +0*\nDATAOUT\t\tTS\tALTM\t\t# ACTIVATE THE LANDING ANALOG DISPLAYS - -\n\t\tCAF\tBIT3\n\t\tEXTEND\n\t\tWOR\tCHAN14\t\t# BIT3 DRIVES THE ALT/ALTRATE METER.\n\t\tTCF\tTASKOVER\t# EXIT\n\nALTOUT\t\tTC\tDISINDAT\t# CHECK MODE SELECT SWITCH AND DIDFLG.\n\t\tCS\tBIT7\n\t\tMASK\tIMODES33\n\t\tTS\tIMODES33\t# ALTERNATE ALTITUDE RATE WITH ALTITUDE.\n\t\tCS\tBIT2\n\t\tEXTEND\n\t\tWAND\tCHAN14\n\t\tCCS\tALTBITS\t\t# =-1 IF OLD ALT. DATA TOBE EXTRAPOLATED.\n\t\tTCF\t+4\n\t\tTCF\t+3\n\t\tTCF\tOLDDATA\n\t\tTS\tALTBITS\t\t# SET ALTBITS FROM -0 TO +0.\n\t\tCS\tONE\n\t\tDXCH\tALTBITS\t\t# SET ALTBITS=-1 FOR SWITCH USE NEXT PASS.\n\t\tDXCH\tALTSAVE\n\t\tCA\tBIT10\t\t# NEW ALTITUDE EXTRAPOLATION WITH ALTRATE.\n\t\tXCH\tQ\n\t\tLXCH\t7\t\t# ZL\n\t\tCA\tDT\n\t\tEXTEND\n\t\tDV\tQ\t\t# RESCALE DT*2(-14) TO *2(-9) TIME IN CS.\n\t\tEXTEND\n\t\tMP\tARTOA2\t\t# .0021322 *2(+8)\n\t\tTCF\tOLDDATA +1\t# RATE APPLIES FOR DT CS.\n\nZDATA2\t\tDXCH\tALTSAVE\n\t\tTCF\tNEWDATA\nOLDDATA\t\tCA\tARTOA\t\t# RATE APPLIES FOR .5 SEC. (4X/SEC. CYCLE)\n\t\tEXTEND\n\t\tMP\tALTRATE\t\t# EXTRAPOLATE WITH ALTITUDE RATE.\n\t\tDDOUBL\n\t\tAD\tALTSAVE +1\n\t\tTS\tALTSAVE +1\n\t\tCAF\tZERO\n\t\tADS\tALTSAVE\n\t\tCAF\tPOSMAX\t\t# FORCE SIGN AGREEMENT ASSUMING A\n\t\tAD\tONE\t\t# NON-NEGATIVE ALTSAVE.\n\t\tAD\tALTSAVE +1\t# IF ALTSAVE IS NEGATIVE, ZERO ALTSAVE\n\t\tTS\tALTSAVE +1\t# AND ALTSAVE +1 AT ZERODATA.\n# Page 900\n\t\tCAF\tZERO\n\t\tAD\tPOSMAX\n\t\tAD\tALTSAVE\n\t\tTS\tALTSAVE\t\t# POSSIBLY SKIP TO NEWDATA.\n\t\tTCF\tZERODATA\nNEWDATA\t\tCCS\tALTSAVE +1\n\t\tTCF\t+4\n\t\tTCF\t+3\n\t\tCAF\tZERO\t\t# SET NEGATIVE ALTSAVE +1 TO +0.\n\t\tTS\tALTSAVE +1\n\t\tCCS\tALTSAVE\t\t# PROVIDE A 15 BIT UNSIGNED OUTPUT.\n\t\tCAF\tBIT15\t\t# THE HI-ORDER PART IS +1 OR +0.\n\t\tAD\tALTSAVE +1\n\t\tTCF\tDATAOUT\t\t# DISPATCH UNSIGNED BITS TO ALTM REG.\nDISINDAT\tEXTEND\n\t\tQXCH\tLADQSAVE\t# SAVE RETURN TO ALTROUT +1 OR ALTOUT +1\n\t\tCAF\tBIT6\n\t\tEXTEND\t\t\t# WISHETH THE ASTRONAUT THE ANALOG\n\t\tRAND\tCHAN30\t\t# DISPLAYS?  I.E.,\n\t\tCCS\tA\t\t# IS THE MODE SELECT SWITCH IN PGNCS?\n\t\tTCF\tDISPRSET\t# NO.  ASTRONAUT REQUESTS NO INERTIAL DATA\n\t\tCS\tFLAGWRD1\t# YES. CHECK STATUS OF DIDFLAG.\n\t\tMASK\tDIDFLBIT\n\t\tEXTEND\n\t\tBZF\tSPEEDRUN\t# SET. PERFORM DATA DISPLAY SEQUENCE.\n\t\tCS\tFLAGWRD1\t# RESET. PERFORM INITIALIZATION FUNCTIONS.\n\t\tMASK\tDIDFLBIT\n\t\tADS\tFLAGWRD1\t# SET DIDFLAG.\n\t\tCS\tBIT7\n\t\tMASK\tIMODES33\t# TO DISPLAY ALTRATE FIRST AND ALT. SECOND\n\t\tTS\tIMODES33\n\t\tCS\tFLAGWRD0\t# ARE WE IN DESCENT TRAJECTORY?\n\t\tMASK\tR10FLBIT\n\t\tEXTEND\n\t\tBZF\tTASKOVER\t# NO\n\t\tCAF\tBIT8\t\t# YES.\n\t\tEXTEND\n\t\tWOR\tCHAN12\t\t# SET DISPLAY INERTIAL DATA OUTBIT.\n\t\tCAF\tZERO\n\t\tTS\tTRAKLATV\t# LATERAL VELOCITY MONITOR FLAG\n\t\tTS\tTRAKFWDV\t# FORWARD VELOCITY MONITOR FLAG\n\t\tTS\tLATVMETR\t# LATVEL MONITOR METER\n\t\tTS\tFORVMETR\t# FORVEL MONITOR METER\n\t\tCAF\tBIT4\n\t\tTC\tTWIDDLE\n\t\tADRES\tINTLZE\n\t\tTCF\tTASKOVER\nINTLZE\t\tCAF\tBIT2\n\t\tEXTEND\n\t\tWOR\tCHAN12\t\t# ENABLE RR ERROR COUNTER.\n# Page 901\n\t\tCS\tIMODES33\n\t\tMASK\tBIT8\n\t\tADS\tIMODES33\t# SET INERTIAL DATA FLAG.\n\t\tTCF\tTASKOVER\n\nSPEEDRUN\tCS\tPIPTIME +1\t# UPDATE THE VELOCITY VECTOR\n\t\tAD\tTIME1\t\t# COMPUTE T - TN\n\t\tAD\tHALF\t\t# CORRECT FOR POSSIBLE OVERFLOW OF TIME1.\n\t\tAD\tHALF\n\t\tXCH\tDT\t\t# SAVE FOR LATER USE\n\t\tCA\t1SEC\n\t\tTS\tITEMP5\t\t# INITIALIZE FOR DIVISION LATER\n\t\tEXTEND\n\t\tDCA\tGDT/2\t\t# COMPUTE THE X-COMPONENT OF VELOCITY.\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tEXTEND\n\t\tMP\tDT\n\t\tEXTEND\n\t\tDV\tITEMP5\n\t\tXCH\tVVECT\t\t# VVECT = G(T-TN) M/CS *2(-5)\n\t\tEXTEND\n\t\tDCA\tV\t\t# M/CS *2(-7)\n\t\tDDOUBL\t\t\t# RESCALE TO 2(-5)\n\t\tDDOUBL\n\t\tADS\tVVECT\t\t# VVECT = VN + G(T-TN) M/CS *2(-5)\n\t\tCA\tPIPAX\t\t# DELV CM/SEC *2(-14)\n\t\tAD\tPIPATMPX\t# IN CASE PIPAX HAS BEEN ZEROED\n\t\tEXTEND\n\t\tMP\tKPIP1(5)\t# DELV M/CS *2(-5)\n\t\tADS\tVVECT\t\t# VVECT = VN + DELV + GN(T-TN) M/CS *2(-5)\n\t\tEXTEND\n\t\tDCA\tGDT/2 +2\t# COMPUTE THE Y-COMPONENT OF VELOCITY.\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tEXTEND\n\t\tMP\tDT\n\t\tEXTEND\n\t\tDV\tITEMP5\n\t\tXCH\tVVECT +1\n\t\tEXTEND\n\t\tDCA\tV +2\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tADS\tVVECT +1\n\t\tCA\tPIPAY\n\t\tAD\tPIPATMPY\n\t\tEXTEND\n\t\tMP\tKPIP1(5)\n\t\tADS\tVVECT +1\n# Page 902\n\t\tEXTEND\n\t\tDCA\tGDT/2 +4\t# COMPUTE THE Z-COMPONENT OF VELOCITY.\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tEXTEND\n\t\tMP\tDT\n\t\tEXTEND\n\t\tDV\tITEMP5\n\t\tXCH\tVVECT +2\n\t\tEXTEND\n\t\tDCA\tV +4\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tADS\tVVECT +2\n\t\tCA\tPIPAZ\n\t\tAD\tPIPATMPZ\n\t\tEXTEND\n\t\tMP\tKPIP1(5)\n\t\tADS\tVVECT +2\n\n\t\tCAF\tBIT3\t\t# PAUSE 40 MS TO LET OTHER RUPTS IN.\n\t\tTC\tVARDELAY\n\n\t\tCS\tFLAGWRD0\t# ARE WE IN DESCENT TRAJECTORY?\n\t\tMASK\tR10FLBIT\n\t\tCCS\tA\n\t\tTCF\t+2\t\t# YES.\n\t\tTC\tLADQSAVE\t# NO.\n\n\t\tCA\tDELVS\t\t# HI X OF VELOCITY CORRECTION TERM.\n\t\tAD\tVVECT\t\t# HI X OF UPDATED VELOCITY VECTOR.\n\t\tTS\tITEMP1\t\t# = VX - DVX M/CS*2(-5).\n\t\tCA\tDELVS +2\t#    Y\n\t\tAD\tVVECT +1\t#    Y\n\t\tTS\tITEMP2\t\t# = VY - DVY M/CS*2(-5).\n\t\tCA\tDELVS +4\t#    Z\n\t\tAD\tVVECT +2\t#    Z\n\t\tTS\tITEMP3\t\t# = VZ - DVZ M/CS*2(-5).\n\t\tCA\tITEMP1\t\t# COMPUTE VHY, VELOCITY DIRECTED ALONG THE\n\t\tEXTEND\t\t\t# Y-COORDINATE.\n\t\tMP\tUHYP\t\t# HI X OF CROSS-RANGE HALF-UNIT VECTOR.\n\t\tXCH\tRUPTREG1\n\t\tCA\tITEMP2\n\t\tEXTEND\n\t\tMP\tUHYP +2\t\t#    Y\n\t\tADS\tRUPTREG1\t# ACCUMULATE PARTIAL PRODUCTS.\n\t\tCA\tITEMP3\n\t\tEXTEND\n\t\tMP\tUHYP +4\t\t#    Z\n\t\tADS\tRUPTREG1\n# Page 903\n\t\tCA\tRUPTREG1\n\t\tDOUBLE\n\t\tXCH\tVHY\t\t# VHY=VMP.UHYP M/CS*2(-5).\n\t\tCA\tITEMP1\t\t# NO COMPUTE VHZ, VELOCITY DIRECTED ALONG\n\t\tEXTEND\t\t\t# THE Z-COORDINATE.\n\t\tMP\tUHZP\t\t# HI X OF DOWN-RANGE HALF-UNIT VECTOR.\n\t\tXCH\tRUPTREG1\n\t\tCA\tITEMP2\n\t\tEXTEND\n\t\tMP\tUHZP +2\t\t#    Y\n\t\tADS\tRUPTREG1\t# ACCUMULATE PARTIAL PRODUCTS.\n\t\tCA\tITEMP3\n\t\tEXTEND\n\t\tMP\tUHZP +4\t\t#    Z\n\t\tADS\tRUPTREG1\n\t\tCA\tRUPTREG1\n\t\tDOUBLE\n\t\tXCH\tVHZ\t\t# VHZ = VMP.UHZP M/CS*2(-5).\nGET22/32\tCAF\tEBANK6\t\t# GET SIN(AOG),COS(AOG) FROM GPMATRIX.\n\t\tTS\tEBANK\n\t\tEBANK=\tM22\n\t\tCA\tM22\n\t\tTS\tITEMP3\n\t\tCA\tM32\n\t\tTS\tITEMP4\n\t\tCAF\tEBANK7\n\t\tTS\tEBANK\n\t\tEBANK=\tUNIT/R/\nLATFWDV\t\tCA\tITEMP4\t\t# COMPUTE LATERAL AND FORWARD VELOCITIES.\n\t\tEXTEND\n\t\tMP\tVHY\n\t\tXCH\tRUPTREG1\n\t\tCA\tITEMP3\n\t\tEXTEND\n\t\tMP\tVHZ\n\t\tADS\tRUPTREG1\t# =VHY(COS)AOG+VHZ(SIN)AOG M/CS *2(-5)\n\t\tCA\tVELCONV\t\t# CONVERT LATERAL VELOCITY TO BIT UNITS.\n\t\tEXTEND\n\t\tMP\tRUPTREG1\n\t\tDDOUBL\n\t\tXCH\tLATVEL\t\t# LATERAL VELOCITY IN BIT UNITS *2(-14).\n\t\tCA\tITEMP4\t\t# COMPUTE FORWARD VELOCITY.\n\t\tEXTEND\n\t\tMP\tVHZ\n\t\tXCH\tRUPTREG1\n\t\tCA\tITEMP3\n\t\tEXTEND\n\t\tMP\tVHY\n\t\tCS\tA\n\t\tADS\tRUPTREG1\t# =VHZ(COS)AOG-VHY(SIN)AOG M/CS *2(-5).\n# Page 904\n\t\tCA\tVELCONV\t\t# CONVERT FORWARD VELOCITY TO BIT UNITS.\n\t\tEXTEND\n\t\tMP\tRUPTREG1\n\t\tDDOUBL\n\t\tXCH\tFORVEL\t\t# FORWARD VELOCITY IN BIT UNITS *2(-14).\n\n\t\tCS\tMAXVBITS\t# ACC.=-199.9989 FT./SEC.\n\t\tTS\tITEMP6\t\t# -547 BIT UNITS (OCTAL) AT 0.5571 FPS/BIT\n\n\t\tCAF\tONE\t\t# LOOP TWICE.\nVMONITOR\tTS\tITEMP5\t\t# FORWARD AND LATERAL VELOCITY LANDING\n\t\tINDEX\tITEMP5\t\t#    ANALOG DISPLAYS MONITOR.\n\t\tCCS\tLATVEL\n\t\tTCF\t+4\n\t\tTCF\tLVLIMITS\n\t\tTCF\t+8D\n\t\tTCF\tLVLIMITS\n\t\tINDEX\tITEMP5\n\t\tCS\tLATVEL\n\t\tAD\tMAXVBITS\t# +199.9989 FT.SEC.\n\t\tEXTEND\n\t\tBZMF\tCHKLASTY\n\t\tTCF\tLVLIMITS\n\t\tINDEX\tITEMP5\n\t\tCA\tLATVEL\n\t\tAD\tMAXVBITS\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\tLVLIMITS\nCHKLASTY\tINDEX\tITEMP5\n\t\tCCS\tLATVMETR\n\t\tTCF\t+4\n\t\tTCF\tLASTOK\n\t\tTCF\t+7\n\t\tTCF\tLASTOK\n\t\tINDEX\tITEMP5\n\t\tCA\tLATVEL\n\t\tEXTEND\n\t\tBZMF\tLASTPOSY +5\n\t\tTCF\t+5\n\t\tINDEX\tITEMP5\n\t\tCS\tLATVEL\n\t\tEXTEND\n\t\tBZMF\tLASTNEGY +4\nLASTOK\t\tINDEX\tITEMP5\n\t\tCCS\tTRAKLATV\n\t\tTCF\tLASTPOSY\n\t\tTCF\t+2\n\t\tTCF\tLASTNEGY\n\t\tINDEX\tITEMP5\n# Page 905\n\t\tCA\tLATVEL\n\t\tEXTEND\n\t\tBZMF\tNEGVMAXY\n\t\tTCF\tPOSVMAXY\nLASTPOSY\tINDEX\tITEMP5\n\t\tCA\tLATVEL\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\tPOSVMAXY\n\t\tCS\tMAXVBITS\n\t\tTCF\tZEROLSTY\nPOSVMAXY\tINDEX\tITEMP5\n\t\tCS\tLATVMETR\n\t\tAD\tMAXVBITS\n\t\tINDEX\tITEMP5\n\t\tXCH\tRUPTREG3\n\t\tCAF\tONE\n\t\tTCF\tZEROLSTY +3\nLASTNEGY\tINDEX\tITEMP5\n\t\tCA\tLATVEL\n\t\tEXTEND\n\t\tBZMF\tNEGVMAXY\n\t\tCA\tMAXVBITS\n\t\tTCF\tZEROLSTY\nNEGVMAXY\tINDEX\tITEMP5\n\t\tCA\tLATVMETR\n\t\tAD\tMAXVBITS\n\t\tCOM\n\t\tINDEX\tITEMP5\n\t\tXCH\tRUPTREG3\n\t\tCS\tONE\n\t\tTCF\tZEROLSTY +3\nLVLIMITS\tINDEX\tITEMP5\n\t\tCCS\tTRAKLATV\n\t\tTCF\tLATVPOS\n\t\tTCF\t+2\n\t\tTCF\tLATVNEG\n\t\tINDEX\tITEMP5\n\t\tCS\tLATVMETR\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\tNEGLMLV\n\t\tINDEX\tITEMP5\n\t\tCS\tLATVEL\n\t\tEXTEND\n\t\tBZMF\tLVMINLM\n\t\tAD\tITEMP6\n\t\tINDEX\tITEMP5\n\t\tAD\tLATVMETR\n\t\tEXTEND\n# Page 906\n\t\tBZMF\tLVMINLM\n\t\tINDEX\tITEMP5\n\t\tAD\tLATVEL\n\t\tEXTEND\n\t\tINDEX\tITEMP5\n\t\tSU\tLATVMETR\n\t\tTCF\tZEROLSTY\nLATVPOS\t\tINDEX\tITEMP5\n\t\tCS\tLATVEL\n\t\tEXTEND\n\t\tBZMF\tLVMINLM\n\t\tTCF\t+5\nLATVNEG\t\tINDEX\tITEMP5\n\t\tCA\tLATVEL\n\t\tEXTEND\n\t\tBZMF\tLVMINLM\n\t\tINDEX\tITEMP5\n\t\tCS\tLATVMETR\n\t\tTCF\tZEROLSTY\nNEGLMLV\t\tINDEX\tITEMP5\n\t\tCA\tLATVEL\n\t\tEXTEND\n\t\tBZMF\tLVMINLM\n\t\tCA\tMAXVBITS\n\t\tINDEX\tITEMP5\n\t\tAD\tLATVMETR\n\t\tCOM\n\t\tINDEX\tITEMP5\n\t\tAD\tLATVEL\n\t\tEXTEND\n\t\tBZMF\tLVMINLM\n\t\tEXTEND\n\t\tINDEX\tITEMP5\n\t\tSU\tLATVEL\n\t\tINDEX\tITEMP5\n\t\tAD\tLATVMETR\n\t\tCOM\n\t\tTCF\tZEROLSTY\nLVMINLM\t\tINDEX\tITEMP5\n\t\tCS\tLATVMETR\n\t\tINDEX\tITEMP5\n\t\tAD\tLATVEL\nZEROLSTY\tINDEX\tITEMP5\n\t\tXCH\tRUPTREG3\n\t\tCAF\tZERO\n\t\tINDEX\tITEMP5\n\t\tTS\tTRAKLATV\n\t\tINDEX\tITEMP5\n\t\tCA\tRUPTREG3\n\t\tAD\tNEG0\t\t# AVOIDS +0 DINC HARDWARE MALFUNCTION\n# Page 907\n\t\tINDEX\tITEMP5\n\t\tTS\tCDUTCMD\n\t\tINDEX\tITEMP5\n\t\tCA\tRUPTREG3\n\t\tINDEX\tITEMP5\n\t\tADS\tLATVMETR\n\t\tCCS\tITEMP5\t\t# FIRST MONITOR FORWARD THEN LATERAL VEL.\n\t\tTCF\tVMONITOR\n\n\t\tCAF\tBITSET\t\t# DRIVE THE X-POINTER DISPLAY.\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tTC\tLADQSAVE\t# GO TO ALTROUT +1 OR TO ALTOUT +1\nZERODATA\tCAF\tZERO\t\t# ZERO ALTSAVE AND ALTSAVE +1 - - -\n\t\tTS\tL\t\t#\t NO NEGATIVE ALTITUDES ALLOWED.\n\t\tTCF\tZDATA2\n\n# ************************************************************************\n\nDISPRSET\tCS\tFLAGWRD0\t# ARE WE IN DESCENT TRAJECTORY?\n\t\tMASK\tR10FLBIT\n\t\tEXTEND\n\t\tBZF\tABORTON\t\t# NO.\n\t\tCAF\tBIT8\t\t# YES.\n\t\tMASK\tIMODES33\t# CHECK IF INERTIAL DATA JUST DISPLAYED.\n\t\tCCS\tA\n\t\tCAF\tBIT2\t\t# YES. DISABLE RR ERROR COUNTER\n\t\tAD\tBIT8\t\t# NO. REMOVE DISPLAY INERTIAL DATA\n\t\tCOM\n\t\tEXTEND\n\t\tWAND\tCHAN12\nABORTON\t\tCS\tBITS8/7\t\t# RESET INERTIAL DATA, INTERLEAVE FLAGS.\n\t\tMASK\tIMODES33\n\t\tTS\tIMODES33\n\t\tCS\tDIDFLBIT\n\t\tMASK\tFLAGWRD1\n\t\tTS\tFLAGWRD1\t# RESET DIDFLAG.\n\t\tTCF\tTASKOVER\n# ************************************************************************\nBITS8/7\t\tOCT\t00300\t\t# INERTIAL DATA AND INTERLEAVE FLAGS.\n\nBITSET\t\t=\tPRIO6\n# ************************************************************************\n\n\n"
  },
  {
    "path": "Luminary099/LATITUDE_LONGITUDE_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tLATITUDE_LONGITUDE_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n#\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim DOT lawton AT gmail DOT com>\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1133-1139\n# Mod history:\t2009-05-28 JL\tUpdated from page images.\n#\t\t2011-01-06 JL\tFixed interpretive indentation.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#    16:27 JULY 14, 1969\n\n# Page 1133\n# SUBROUTINE TO CONVERT RAD VECTOR AT GIVEN TIME TO LAT,LONG AND ALT\n#\n# CALLING SEQUENCE\n#\n#   L-1\t   CALL\n#   L\t\t  LAT-LONG\n# SUBROUTINES USED\n#\n#  R-TO-RP,ARCTAN,SETGAMMA,SETRE\n# ERASABLE INIT. REQ.\n#\n#   AXO,-AYO,AZO,TEPHEM (SET AT LAUNCH TIME)\n# ALPHAV = POSITION VECTOR METERS B-29\n#   MPAC-- TIME  (CSECS B-28)\n#  ERADFLAG =1, TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS\n#  LUNAFLAG=0 FOR EARTH,1 FOR MOON\n# OUTPUT\n#\n#   LATITUDE IN LAT   (REVS. B-0)\n#   LONGITUDE IN LONG\t(REVS. B-0)\n# ALTITUDE IN ALT METERS B-29\n\t\tBANK\t30\n\t\tSETLOC\tLATLONG\n\t\tBANK\n\n\t\tCOUNT*\t$$/LT-LG\n\t\tEBANK=\tALPHAV\nLAT-LONG\tSTQ\tSETPD\n\t\t\tINCORPEX\n\t\t\t0D\n\t\tSTOVL\t6D\t\t# SAVE TIME IN 6-7D FOR R-TO-RP\n\t\t\tALPHAV\n\t\tPUSH\tABVAL\t\t# 0-5D= R FOR R-TO-RP\n\t\tSTODL\tALPHAM\t\t# ABS. VALUE OF R FOR ALT FORMULA BELOW\n\t\t\tZEROVEC\t\t# SET MPAC=0 FOR EARTH,NON-ZERO FOR MOON\n\t\tBOFF\tCOS\t\t# USE COS(0) TO GET NON-ZERO IN MPAC\n\t\t\tLUNAFLAG\t# 0=EARTH,1=MOON\n\t\t\tCALLRTRP\nCALLRTRP\tCALL\n\t\t\tR-TO-RP\t\t# RP VECTOR CONVERTED FROM R B-29\n\t\tUNIT\t\t\t# UNIT RP B-1\n\t\tSTCALL\tALPHAV\t\t# U2= 1/2 SINL FOR SETRE SUBR BELOW\n\t\t\tSETGAMMA\t#  SET GAMMA=B2/A2 FOR EARTH,=1 FOR MOON\n\t\tCALL\t\t\t#  SCALED B-1\n\t\t\tSETRE\t\t# CALC RE METERS B-29\n\t\tDLOAD\tDSQ\n\t\t\tALPHAV\n\t\tPDDL\tDSQ\n\t\t\tALPHAV +2\n\t\tDAD\tSQRT\n# Page 1134\n\t\tDMP\tSL1R\n\t\t\tGAMRP\n\t\tSTODL\tCOSTH\t\t# COS(LAT) B-1\n\t\t\tALPHAV +4\n\t\tSTCALL\tSINTH\t\t# SIN(LAT) B-1\n\t\t\tARCTAN\n\t\tSTODL\tLAT\t\t# LAT B0\n\t\t\tALPHAV\n\t\tSTODL\tCOSTH\t\t# COS(LONG) B-1\n\t\t\tALPHAV +2\n\t\tSTCALL\tSINTH\t\t# SIN(LONG) B-1\n\t\t\tARCTAN\n\t\tSTODL\tLONG\t\t# LONG. REVS B-0 IN RANGE -1/2 TO 1/2\n\t\t\tALPHAM\n\t\tDSU\t\t\t# ALT= R-RE METERS B-29\n\t\t\tERADM\n\t\tSTCALL\tALT\t\t# EXIT WITH ALT METERS B-29\n\t\t\tINCORPEX\n# Page 1135\n# SUBROUTINE TO CONVERT LAT,LONG,ALT AT GIVEN TIME TO RADIUS VECTOR\n# CALLING SEQUENCE\n#\n#   L-1\t   CALL\n#   L\t\t  LALOTORV\n# SUBROUTINES USED\n#\n#  SETGAMMA,SETRE,RP-TO-R\n# ERASABLE INIT. REQ.\n#\n#   AXO,AYO,AZO,TEPHEM  SET AT LAUNCH TIME\n#   LAT-- LATITUDE  (REVS B0)\n#   LONG-- LONGITUDE  (REVS B0)\n# ALT--ALTITUDE\t(METERS) B-29\n#   MPAC-- TIME\t (CSECS B-28)\n#   ERADFLAG =1 TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS\n#  LUNAFLAG=0 FOR EARTH,1 FOR MOON\n# OUTPUT\n#\n# R-VECTOR IN ALPHAV (METERS B-29)\nLALOTORV\tSTQ\tSETPD\t\t# LAT,LONG,ALT TO R VECTOR\n\t\t\tINCORPEX\n\t\t\t0D\n\t\tSTCALL\t6D\t\t# 6-7D= TIME FOR RP-TO-R\n\t\t\tSETGAMMA\t# GAMMA=B2/A2 FOR EARTH,1 FOR MOON B-1\n\t\tDLOAD\tSIN\t\t#           \tCOS(LONG)COS(LAT) IN MPAC\n\t\t\tLAT\t\t#     UNIT RP=\tSIN(LONG)COS(LAT)    2-3D\n\t\tDMPR\tPDDL\t\t# PD 2      \tGAMMA*SIN(LAT)       0-1D\n\t\t\tGAMRP\n\t\t\tLAT\t\t#     \t  0-1D= GAMMA*SIN(LAT) B-2\n\t\tCOS\tPDDL\t\t# PD4 \t   2-3D=COS(LAT) B-1 TEMPORARILY\n\t\t\tLONG\n\t\tSIN\tDMPR\t\t# PD 2\n\t\tPDDL\tCOS\t\t# PD 4 \t  2-3D=SIN(LONG)COS(LAT) B-2\n\t\t\tLAT\n\t\tPDDL\tCOS\t\t# PD 6 \t   4-5D=COS(LAT) B-1 TEMPORARILY\n\t\t\tLONG\n\t\tDMPR\tVDEF\t\t# PD 4 \t MPAC=\tCOS(LONG)COS(LAT) B-2\n\t\tUNIT\tPUSH\t\t# 0-5D= UNIT RP FOR RP-TO-R SUBR.\n\t\tSTCALL\tALPHAV\t\t# ALPHAV +4= SINL FOR SETRE SUBR.\n\t\t\tSETRE\t\t# RE METERS B-29\n\t\tDLOAD\tBOFF\t\t# SET MPAC=0 FOR EARTH,NON-ZERO FOR MOON\n\t\t\tZEROVEC\n\t\t\tLUNAFLAG\n\t\t\tCALLRPRT\n\t\tCOS\t\t\t# USE COS(0) TO GET NON-ZERO IN MPAC\nCALLRPRT\tCALL\n\t\t\tRP-TO-R\t\t# EXIT WITH UNIT R VECTOR IN MPAC\n\t\tSTODL\tALPHAV\n\t\t\tERADM\n# Page 1136\n\t\tDAD\tVXSC\t\t# (RE + ALT)(UNIT R) METERS B-30\n\t\t\tALT\n\t\t\tALPHAV\n\t\tVSL1\t\t\t# R METERS B-29\n\t\tSTCALL\tALPHAV\t\t# EXIT WITH R IN METERS B-29\n\t\t\tINCORPEX\n# SUBROUTINE TO COMPUTE EARTH RADIUS\n#\n# INPUT\n#\n#   1/2 SIN LAT IN ALPHAV +4\n#\n# OUTPUT\n#\n#   EARTH RADIUS IN ERADM AND MPAC (METERS B-29)\n\nGETERAD\t\tDLOAD\tDSQ\n\t\t\tALPHAV +4\t# SIN**2(L)\n\t\tSL1\tBDSU\n\t\t\tDP1/2\t\t# COS**2(L)\n\t\tDMPR\tBDSU\n\t\t\tEE\n\t\t\tDP1/2\n\t\tBDDV\tSQRT\n\t\t\tB2XSC\n\t\tSR4R\n\t\tSTORE\tERADM\n\t\tRVQ\n\n# THE FOLLOWING CONSTANTS WERE COMPUTED WITH A=6378166,B=6356784 METERS\n# B2XSC= B**2 SCALED B-51\n# B2/A2= B**2/A**2 SCALED B-1\n# EE=(1-B**2/A**2) SCALED B-0\nB2XSC\t\t2DEC\t.0179450689\t# B**2 SCALED B-51\nDP1/2\t\t=\tXUNIT\nB2/A2\t\t2DEC\t.9933064884 B-1\t# GAMMA= B**2/A**2 B-1\nEE\t\t2DEC\t6.6935116 E-3\t# (1-B**2/A**2) B-0\n\n# Page 1137\n# ARCTAN SUBROUTINE\n#\n# CALLING SEQUENCE\n#\n#   SIN THETA IN SINTH B-1\n#   COS THETA IN COSTH B-1\n#   CALL ARCTAN\n#\n# OUTPUT\n#   ARCTAN THETA IN MPAC AND THETA B-0 IN RANGE -1/2 TO +1/2\n\nARCTAN\t\tBOV\n\t\t\tCLROVFLW\nCLROVFLW\tDLOAD\tDSQ\n\t\t\tSINTH\n\t\tPDDL\tDSQ\n\t\t\tCOSTH\n\t\tDAD\n\t\tBZE\tSQRT\n\t\t\tARCTANXX\t# ATAN=0/0  SET THETA=0\n\t\tBDDV\tBOV\n\t\t\tSINTH\n\t\t\tATAN=90\n\t\tSR1\tASIN\n\t\tSTORE\tTHETA\n\t\tPDDL\tBMN\n\t\t\tCOSTH\n\t\t\tNEGCOS\n\t\tDLOAD\tRVQ\nNEGCOS\t\tDLOAD\tDCOMP\n\t\tBPL\tDAD\n\t\t\tNEGOUT\n\t\t\tDP1/2\nARCTANXX\tSTORE\tTHETA\n\t\tRVQ\n\nNEGOUT\t\tDSU\tGOTO\n\t\t\tDP1/2\n\t\t\tARCTANXX\nATAN=90\t\tDLOAD\tSIGN\n\t\t\tLODP1/4\n\t\t\tSINTH\n\t\tSTORE\tTHETA\n\t\tRVQ\n\n2DZERO\t\t=\tDPZERO\n\n# Page 1138\n# ..... SETGAMMA SUBROUTINE .....\n# SUBROUTINE TO SET GAMMA FOR THE LAT-LONG AND LALOTORV SUBROUTINES\n#\n# GAMMA = B**2/A**2 FOR EARTH (B-1)\n# GAMMA = 1 FOR MOON (B-1)\n#\n# CALLING SEQUENCE\n#  L\t   CALL\n#  L+1\t\t  SETGAMMA\n#\n# INPUT\n#  LUNAFLAG=0 FOR EARTH,=1 FOR MOON\n#\n# OUTPUT\n#  GAMMA IN GAMRP  (B-1)\n\nSETGAMMA\tDLOAD\tBOFF\t\t# BRANCH FOR EARTH\n\t\t\tB2/A2\t\t# EARTH GAMMA\n\t\t\tLUNAFLAG\n\t\t\tSETGMEX\n\t\tSLOAD\n\t\t\t1B1\t\t# MOON GAMMA\nSETGMEX\t\tSTORE\tGAMRP\n\t\tRVQ\nGAMRP\t\t=\t8D\n\n# Page 1139\n# .....SETRE SUBROUTINE .....\n# SUBROUTINE TO SET RE (EARTH OR MOON RADIUS)\n#\n# RE= RM FOR MOON\n#  RE= RREF FOR FIXED EARTH RADIUS OR COMPUTED RF FOR FISCHER ELLIPSOID\n#\n# CALLING SEQUENCE\n#  L\t   CALL\n#  L+1\t\t  SETRE\n#\n# SUBROUTINES USED\n#  GETERAD\n#\n# INPUT\n#  ERADFLAG=0 FOR FIXED RE, 1 FOR COMPUTED RE\n#  ALPHAV +4= 1/2 SINL IF GETERAD IS CALLED\n#  LUNAFLAG=0 FOR EARTH,=1 FOR MOON\n#\n# OUTPUT\n#  ERADM= 504RM FOR MOON (METERS B-29)\n#  ERADM= ERAD OR COMPUTED RE FOR EARTH (METERS B-29)\n\nSETRE\t\tSTQ\tDLOAD\n\t\t\tSETREX\n\t\t\t504RM\n\t\tBON\tDLOAD\t\t# BRANCH FOR MOON\n\t\t\tLUNAFLAG\n\t\t\tTSTRLSRM\n\t\t\tERAD\n\t\tBOFF\tCALL\t\t# ERADFLAG=0 FOR FIXED RE,1 FOR COMPUTED\n\t\t\tERADFLAG\n\t\t\tSETRXX\n\t\t\tGETERAD\nSETRXX\t\tSTCALL\tERADM\t\t# EXIT WITH RE OR RM METERS B-29\n\t\t\tSETREX\nTSTRLSRM\tBON\tVLOAD\t\t# ERADFLAG=0,SET R0=RLS\n\t\t\tERADFLAG\t#         =1     R0=RM\n\t\t\tSETRXX\n\t\t\tRLS\n\t\tABVAL\tSR2R\t\t# SCALE FROM B-27 TO B-29\n\t\tGOTO\n\t\t\tSETRXX\nSETREX\t\t=\tS2\n"
  },
  {
    "path": "Luminary099/LEM_GEOMETRY.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tLEM_GEOMETRY.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t320-325\n# Mod history:\t2009-05-16 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 320\n\t\tBANK\t23\n\t\tSETLOC\tLEMGEOM\n\t\tBANK\n\n\t\tSBANK=\tLOWSUPER\n\t\tEBANK=\tXSM\n\n# THESE TWO ROUTINES COMPUTE THE ACTUAL STATE VECTOR FOR LM,CSM BY ADDING\n# THE CONIC R,V AND THE DEVIATIONSR,V. THE STATE VECTORS ARE CONVERTED TO\n# METERS B-29 AND METERS/CSEC B-7 AND STORED APPROPRIATELY IN RN,VN OR\n# R-OTHER , V-OTHER FOR DOWNLINK. THE ROUTINES NAMES ARE SWITCHED IN THE\n# OTHER VEHICLES COMPUTER.\n#\n# INPUT\n#   STATE VECTOR IN TEMPORARY STORAGE AREA\n#   IF STATE VECTOR IS SCALED POS B27 AND VEL B5\n#      SET X2 TO +2\n#   IF STATE VECTOR IS SCALED POS B29 AND VEL B7\n#      SET X2 TO 0\n#\n# OUTPUT\n#   R(T) IN RN, V(T) IN VN, T IN PIPTIME\n# OR\n#   R(T) IN R-OTHER, V(T) IN V-OTHER   (T IS DEFINED BY T-OTHER)\n\n\t\tCOUNT*\t$$/GEOM\nSVDWN2\t\tBOF\tRVQ\t\t# SW=1=AVETOMID DOING W-MATRIX INTEG.\n\t\t\tAVEMIDSW\n\t\t\t+1\n\t\tVLOAD\tVSL*\n\t\t\tTDELTAV\n\t\t\t0 -7,2\n\t\tVAD\tVSL*\n\t\t\tRCV\n\t\t\t0,2\n\t\tSTOVL\tRN\n\t\t\tTNUV\n\t\tVSL*\tVAD\n\t\t\t0 -4,2\n\t\t\tVCV\n\t\tVSL*\n\t\t\t0,2\n\t\tSTODL\tVN\n\t\t\tTET\n\t\tSTORE\tPIPTIME\n\t\tRVQ\n# Page 321\nSVDWN1\t\tVLOAD\tVSL*\n\t\t\tTDELTAV\n\t\t\t0 -7,2\n\t\tVAD\tVSL*\n\t\t\tRCV\n\t\t\t0,2\n\t\tSTOVL\tR-OTHER\n\t\t\tTNUV\n\t\tVSL*\tVAD\n\t\t\t0 -4,2\n\t\t\tVCV\n\t\tVSL*\n\t\t\t0,2\n\t\tSTORE\tV-OTHER\n\t\tRVQ\n\n# Page 322\n#\t   THE FOLLOWING ROUTINE TAKES A HALF UNIT TARGET VECTOR REFERRED TO NAV BASE COORDINATES AND FINDS BOTH\n# GIMBAL ORIENTATIONS AT WHICH THE RR MIGHT SIGHT THE TARGET. THE GIMBAL ANGLES CORRESPONDING TO THE PRESENT MODE\n# ARE LEFT IN MODEA AND THOSE WHICH WOULD BE USED AFTER A REMODE IN MODEB. THIS ROUTINE ASSUMES MODE 1 IS TRUNNION\n# ANGLE LESS THAN 90 DEGS IN ABS VALUE WITH ARBITRARY SHAFT, WITH A CORRESPONDING DEFINITION FOR MODE 2. MODE\n# SELECTION AND LIMIT CHECKING ARE DONE ELSEWHERE.\n#\n#\t   THE MODE 1 CONFIGURATION IS CALCULATED FROM THE VECTOR AND THEN MODE 2 IS FOUND USING THE RELATIONS\n#\n#\t   S(2) = 180 + S(1)\n#\t   T(2) = 180 - T(1)\n#\n#     THE VECTOR ARRIVES IN MPAC WHERE TRG*SMNB OR *SMNB* WILL HAVE LEFT IT.\n\nRRANGLES\tSTORE\t32D\n\t\tDLOAD\tDCOMP\t\t# SINCE WE WILL FIND THE MODE 1 SHAFT\n\t\t\t34D\t\t# ANGLE LATER, WE CAN FIND THE MODE 1\n\t\tSETPD\tASIN\t\t# TRUNNION BY SIMPLY TAKING THE ARCSIN OF\n\t\t\t0\t\t# THE Y COMPONENT, THE ASIN GIVIN AN\n\t\tPUSH\tBDSU\t\t# ANSWER WHOSE ABS VAL IS LESS THAN 90 DEG\n\t\t\tLODPHALF\n\t\tSTODL\t4\t\t# MODE 2 TRUNNION TO 4.\n\n\t\t\tLO6ZEROS\n\t\tSTOVL\t34D\t\t# UNIT THE PROJECTION OF THE VECTOR\n\t\t\t32D\t\t#   IN THE X-Z PLANE\n\t\tUNIT\tBOVB\t\t# IF OVERFLOW,TARGET VECTOR IS ALONG Y\n\t\t\tLUNDESCH\t# CALL FOR MANEUVER UNLESS ON LUNAR SURF\n\t\tSTODL\t32D\t\t# PROJECTION VECTOR.\n\t\t\t32D\n\t\tSR1\tSTQ\n\t\t\tS2\n\t\tSTODL\tSINTH\t\t# USE ARCTRIG SINCE SHAFT COULD BE ARB.\n\t\t\t36D\n\t\tSR1\n\t\tSTCALL\tCOSTH\n\t\t\tARCTRIG\n# Page 323\n\t\tPUSH\tDAD\t\t# MODE 1 SHAFT TO 2.\n\t\t\tLODPHALF\n\t\tSTOVL\t6\n\t\t\t4\n\t\tRTB\t\t\t# FIND MODE 2 CDU ANGLES.\n\t\t\t2V1STO2S\n\t\tSTOVL\tMODEB\n\t\t\t0\n\t\tRTB\t\t\t# MODE 1 ANGLES TO MODE A.\n\t\t\t2V1STO2S\n\t\tSTORE\tMODEA\n\t\tEXIT\n\n\t\tCS\tRADMODES\t# SWAP MODEA AND MODEB IF RR IN MODE 2.\n\t\tMASK\tANTENBIT\n\t\tCCS\tA\n\t\tTCF\t+4\n\n\t\tDXCH\tMODEA\n\t\tDXCH\tMODEB\n\t\tDXCH\tMODEA\n\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tS2\n# Page 324\n# GIVEN RR TRUNNION AND SHAFT (T,S) IN TANGNB,+1,FIND THE ASSOCIATED\n# LINE OF SIGHT IN NAV BASE AXES.  THE HALF UNIT VECTOR, .5(SIN(S)COS(T),\n# -SIN(T),COS(S)COS(T)) IS LEFT IN MPAC AND 32D.\n\n\t\tSETLOC\tINFLIGHT\n\t\tBANK\n\n\t\tCOUNT*\t$$/GEOM\n\nRRNB\t\tSLOAD\tRTB\n\t\t\tTANGNB\n\t\t\tCDULOGIC\n\t\tSETPD\tPUSH\t\t# TRUNNION ANGLE TO 0\n\t\t\t0\n\t\tSIN\tDCOMP\n\t\tSTODL\t34D\t\t# Y COMPONENT\n\n\t\tCOS\tPUSH\t\t# .5 COS(T) TO 0\n\t\tSLOAD\tRTB\n\t\t\tTANGNB +1\n\t\t\tCDULOGIC\nRRNB1\t\tPUSH\tCOS\t\t# SHAFT ANGLE TO 2\n\t\tDMP\tSL1\n\t\t\t0\n\t\tSTODL\t36D\t\t# Z COMPONENT\n\n\t\tSIN\tDMP\n\t\tSL1\n\t\tSTOVL\t32D\n\t\t\t32D\n\t\tRVQ\n\n# THIS ENTRY TO RRNB REQUIRES THE TRUNNION AND SHAFT ANGLES IN MPAC AND MPAC +1 RESPECTIVELY\n\nRRNBMPAC\tSTODL\t20D\t\t# SAVE SHAFT CDU IN 21.\n\t\t\tMPAC\t\t# SET MODE TO DP.  (THE PRECEEDING STORE\n\t\t\t\t\t# MAY BE DP. TP OR VECTOR.)\n\t\tRTB\tSETPD\n\t\t\tCDULOGIC\n\t\t\t0\n\t\tPUSH\tSIN\t\t# TRUNNION ANGLE TO 0\n\t\tDCOMP\n\t\tSTODL\t34D\t\t# Y COMPONENT\n\t\tCOS\tPUSH\t\t# .5COS(T) TO 0\n\t\tSLOAD\tRTB\t\t# PICK UP CDU'S.\n\t\t\t21D\n\t\t\tCDULOGIC\n\t\tGOTO\n\t\t\tRRNB1\n# Page 325 (empty page)\n"
  },
  {
    "path": "Luminary099/LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tLUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t984-987\n# Mod history:\t2009-05-24 HG\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 984\n# NAME - LSPOS  - LOCATE SUN AND MOON\t\t\tDATE - 25 OCT 67\n# MOD NO.1\n# MOD BY NEVILLE\t\t\t\t\tASSEMBLY SUNDANCE\n#\n# FUNCTIONAL DESCRIPTION\n#\n#        COMPUTES UNIT POSITION VECTOR OF THE SUN AND MOON IN THE BASIC REFERENCE SYSTEM. THE SUN VECTOR S IS\n# LOCATED VIA TWO ANGLES. THE FIRST ANGLE(OBLIQUITY) IS THE ANGLE BETWEEN THE EARTH EQUATOR AND THE ECLIPTIC. THE\n# SECOND ANGLE IS THE LONGITUDE OF THE SUN MEASURED IN THE ECLIPTIC.\n# THE POSITION VECTOR OF THE SUN IS\n#\t -\n#\t S=(COS(LOS), COS(OBL)*SIN(LOS), SIN(OBL)*SIN(LOS)), WHERE\n#\n#      LOS=LOS +LOS *T-(C *SIN(2PI*T)/365.24 +C *COS(2PI*T)/365.24)\n#\t      0    R     0                     1\n#      LOS  (RAD) IS THE LONGITUDE OF THE SUN FOR MIGNIGHT JUNE 30TH OF THE PARTICULAR YEAR.\n#         0\n#      LOS  (RAD/DAY) IS THE MEAN RATE FOR THE PARTICULAR YEAR.\n#    \t  R\n# LOS  AND LOS  ARE STORED AS LOSO AND LOSR IN RATESP.\n#    0        R\n# COS(OBL) AND SIN(OBL) ARE STORED IN THE MATRIX KONMAT.\n# T, TIME MEASURED IN DAYS(24 HOURS), IS STORED IN TIMEP.\n# C  AND C  ARE FUDGE FACTORS TO MINIMIZE THE DEVIATION. THEY ARE STORED AS ONE CONSTANT(CMOD), SINCE\n#  0      1                               2  2 1/2\n# C *SIN(X)+C *COS(X) CAN BE WRITTEN AS (C +C )   *SIN(X+PHI), WHERE PHI=ARCTAN(C /C ).\n#  0         1                            0  1                                   1  0\n#\n# THE MOON IS LOCATED VIA FOUR ANGLES. THE FIRST IS THE OBLIQUITY. THE SECOND IS THE MEAN LONGITUDE OF THE MOON,\n# MEASURED IN THE ECLIPTIC FROM THE MEAN EQUINOX TO THE MEAN ASCENDING NODE OF THE LUNAR ORBIT, AND THEN ALONG THE\n# ORBIT. THE THIRD ANGLE IS THE ANGLE BETWEEN THE ECLIPTIC AND THE LUNAR ORBIT. THE FOURTH ANGLE IS THE LONGITUDE\n# OF THE NODE OF THE MOON, MEASURED IN THE LUNAR ORBIT. LET THESE ANGLES BE OBL,LOM,IM, AND LON RESPECTIVELY.\n#\n# THE SIMPLIFIED POSITION VECTOR OF THE MOON IS\n#   -\n#   M=(COS(LOM), COS(OBL)*SIN(LOM)-SIN(OBL)*SIN(IM)*SIN(LOM-LON), SIN(OBL)*SIN(LOM)+COS(OBL)*SIN(IM)*SIN(LOM-LON))\n#\n#   WHERE\n#      LOM=LOM +LOM *T-(A *SIN(2PI*T/27.5545)+A *COS(2PI*T/27.5545)+B *SIN(2PI*T/32)+B *COS(2PI*T/32)), AND\n#\t      0    R     0                     1                     0                1\n#      LON=LON +LON\n#\t      0    R\n# A , A , B  AND B  ARE STORED AS AMOD AND BMOD (SEE DESCRIPTION OF CMOD, ABOVE).  COS(OBL), SIN(OBL)*SIN(IM),\n#  0   1   0      1\n# SIN(OBL), AND COS(OBL)*SIN(IM) ARE STORED IN KONMAT AS K1, K2, K3 AND K4, RESPECTIVELY. LOM , LOM , LON , LON\n# ARE STORED AS LOMO, LOMR, LONO, AND LONR IN RATESP.                                        0     R     0     R\n# THE THREE PHIS ARE STORED AS AARG, BARG, AND CARG(SUN).  ALL CONSTANTS ARE UPDATED BY YEAR.\n#\n# CALLING SEQUENCE\n# Page 985\n#   CALL LSPOS.  RETURN IS VIA QPRET.\n# ALARMS OR ABORTS\n#   NONE\n# ERASABLE INITIALIZATION REQUIRED\n#   TEPHEM - TIME FROM MIGNIGHT 1 JULY PRECEDING THE LAUNCH TO THE TIME OF THE LAUNCH (WHEN THE AGC CLOCK WENT\n# TO ZERO). TEPHEM IS TP WITH UNITS OF CENTI-SECONDS.\n#   TIME2 AND TIME1 ARE IN MPAC AND MPAC +1 WHEN PROGRAM IS CALLED.\n# OUTPUT\n#   UNIT POSITIONAL VECTOR OF SUN IN VSUN.   (SCALED B-1)\n#   UNIT POSITIONAL VECTOR OF MOON IN VMOON. (SCALED B-1)\n# SUBROUTINES USED\n#   NONE\n# DEBRIS\n#   CURRENT CORE SET,WORK AREA AND FREEFLAG\n\t\tBANK\t04\n\t\tSETLOC\tEPHEM\n\t\tBANK\n\t\tEBANK=\tVSUN\n\t\tCOUNT*\t$$/EPHEM\nLUNPOS\t\tEQUALS\tLSPOS\nLSPOS\t\tSETPD\tSR\n\t\t\t0\n\t\t\t14D\t\t# TP\n\t\tTAD\tDDV\n## Comments in [...] are hand-written notations in original listing\n\t\t\tTEPHEM\t\t# TIME OF LAUNCH [in centisec B 42]\n\t\t\tCSTODAY\t\t# 24 HOURS-8640000 CENTI-SECS/DAY B-33\n\t\tSTORE\tTIMEP\t\t# T IN DAYS [@ B 9 = 512 days]\n\t\tAXT,1\tAXT,2\t\t#\t    [∴ granularity ≈ 0.164 sec]\n\t\t\t0\n\t\t\t0\n\t\tCLEAR\n\t\t\tFREEFLAG\t# SWITCH BIT\nPOSITA\t\tDLOAD\n\t\t\tKONMAT +2\t# ZERO$\n\t\tSTORE\tGTMP\nPOSITB\t\tDLOAD\tDMP*\n\t\t\tTIMEP\t\t# T\n\t\t\tVAL67 +4,1\t# 1/27 OR 1/32 OR 1/365\n# Page 986\n\t\tSL\tDAD*\n\t\t\t8D\n\t\t\tVAL67 +2,1\t# AARG\n\t\tSIN\tDMP*\t\t# SIN(T/27+PHI) OR T/32 OR T/365\n\t\t\tVAL67,1\t\t# (A0**2+A1**2)**1/2SIN(X+PHIA)\n\t\tDAD\tINCR,1\t\t# PLUS\n\t\t\tGTMP\t\t# (B0**2+B1**2)**1/2SIN(X+PHIB)\n\t\tDEC\t-6\n\t\tSTORE\tGTMP\t\t# OR (C0**2+C1**2)**1/2SIN(X+PHIC)\n\t\tBOFSET\n\t\t\tFREEFLAG\n\t\t\tPOSITB\nPOSITD\t\tDLOAD\tDMP*\n\t\t\tTIMEP\t\t# T\n\t\t\tRATESP,2\t# LOMR,LOSR,LONR\n\t\tSL\tDAD*\n\t\t\t5D\n\t\t\tRATESP +6,2\t# LOMO,LOSO,LONO\n\t\tDSU\n\t\t\tGTMP\n\t\tSTORE\tSTMP,2\t\t# LOM,LOS,LON\n\t\tSLOAD\tINCR,2\n\t\t\tX2\n\t\tDEC\t-2\n\t\tDAD\tBZE\n\t\t\tRCB-13\t\t# PLUS 2\n\t\t\tPOSITE\t\t# 2ND\n\t\tBPL\n\t\t\tPOSITA\t\t# 1ST\nPOSITF\t\tDLOAD\tDSU\t\t# 3RD\n\t\t\tSTMP\t\t# LOM\n\t\t\tSTMP +4\t\t# LON\n\t\tSIN\tPDDL\t\t# SIN(LOM-LON)\n\t\t\tSTMP\n\t\tSIN\tPDDL\t\t# SIN LOM\n\t\t\tSTMP\n\t\tCOS\tVDEF\t\t# COS LOM\n\t\tMXV\tUNIT\n\t\t\tKONMAT\t\t# K1,K2,K3,K4,\n\t\tSTORE\tVMOON\n\t\tDLOAD\tPDDL\n\t\t\tKONMAT +2\t# ZERO\n\t\t\tSTMP +2\n\t\tSIN\tPDDL\t\t# SIN LOS\n\t\t\tSTMP +2\n\t\tCOS\tVDEF\t\t# COS LOS\n\t\tMXV\tUNIT\n\t\t\tKONMAT\n\t\tSTORE\tVSUN\n\t\tRVQ\n# Page 987\nPOSITE\t\tDLOAD\n\t\t\tKONMAT +2\t# ZEROS\n\t\tSTORE\tGTMP\n\t\tGOTO\n\t\t\tPOSITD\nLUNVEL\t\tRVQ                     #         TO FOOL INTEGRATION\n\t\tSETLOC\tEPHEM1\n\t\tBANK\n\n\t\tCOUNT*\t$$/EPHEM\nSTMP\t\tEQUALS\t16D\nGTMP\t\tEQUALS\t22D\nTIMEP\t\tEQUALS\t24D\n\n# *** END OF LEMP50S .115 ***\n"
  },
  {
    "path": "Luminary099/LUNAR_LANDING_GUIDANCE_EQUATIONS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tLUNAR_LANDING_GUIDANCE_EQUATIONS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHARTMUTH GUTSCHE <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t798-828\n# Mod history:\t2009-05-23 HG\tTranscribed from page images.\n#\t\t2009-06-05 RSB\tFixed a goofy thing that was apparently\n#\t\t\t\tlegal in GAP but not in yaYUL.  Eliminated\n#\t\t\t\ta couple of lines of code that shouldn't\n#\t\t\t\thave survived from Luminary 131 to here.\n#\t\t2009-06-07 RSB\tFixed a typo.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 798\n\t\tEBANK=\tE2DPS\n\t\tCOUNT*\t$$/F2DPS\n\n# ********************************************************\n# LUNAR LANDING FLIGHT SEQUENCE TABLES\n# ********************************************************\n\n# FLIGHT SEQUENCE TABLES ARE ARRANGED BY FUNCTION.  THEY ARE REFERENCED USING AS AN INDEX THE REGISTER WCHPHASE:\n#\tWCHPHASE = -1 ---> IGNALG\n#\tWCHPHASE =  0 ---> BRAKQUAD\n#\tWCHPHASE =  1 ---> APPRQUAD\n#\tWCHPHASE =  2 ---> VERTICAL\n\n#*********************************************************\n\n# ROUTINES FOR STARTING NEW GUIDANCE PHASES:\n\n\t\tTCF\tTTFINCR\t\t# IGNALG\nNEWPHASE\tTCF\tTTFINCR\t\t# BRAKQUAD\n\t\tTCF\tSTARTP64\t# APPRQUAD\n\t\tTCF\tP65START\t# VERTICAL\n\n# PRE-GUIDANCE COMPUTATIONS:\n\n\t\tTCF\tCALCRGVG\t# IGNALG\nPREGUIDE\tTCF\tRGVGCALC\t# BRAKQUAD\n\t\tTCF\tREDESIG\t\t# APPRQUAD\n\t\tTCF\tRGVGCALC\t# VERTICAL\n\n# GUIDANCE EQUATIONS:\n\n\t\tTCF\tTTF/8CL\t\t# IGNALG\nWHATGUID\tTCF\tTTF/8CL\t\t# BRAKQUAD\n\t\tTCF\tTTF/8CL\t\t# APPRQUAD\n\t\tTCF\tVERTGUID\t# VERTICAL\n\n# POST GUIDANCE EQUATION COMPUTATIONS:\n\n\t\tTCF\tCGCALC\t\t# IGNALG\nAFTRGUID\tTCF\tCGCALC\t\t# BRAKQUAD\n\t\tTCF\tCGCALC\t\t# APPRQUAD\n\t\tTCF\tSTEER?\t\t# VERTICAL\n\n# Page 799\n# WINDOW VECTOR COMPUTATIONS:\n\n\t\tTCF\tEXGSUB\t\t# IGNALG\nWHATEXIT\tTCF\tEXBRAK\t\t# BRAKQUAD\n\t\tTCF\tEXNORM\t\t# APPRQUAD\n\n# DISPLAY ROUTINES:\n\nWHATDISP\tTCF\tP63DISPS\t# BRAKQUAD\n\t\tTCF\tP64DISPS\t# APPRQUAD\n\t\tTCF\tVERTDISP\t# VERTICAL\n\n# ALARM ROUTINE FOR TTF COMPUTATION:\n\n\t\tTCF\t1406P00\t\t# IGNALG\nWHATALM\t\tTCF\t1406ALM\t\t# BRAKQUAD\n\t\tTCF\t1406ALM\t\t# APPRQUAD\n\n# INDICES FOR REFERENCING TARGET PARAMETERS\n\n\t\tOCT\t0\t\t# IGNALG\nTARGTDEX\tOCT\t0\t\t# BRAKQUAD\n\t\tOCT\t34\t\t# APPRQUAD\n\n#************************************************************************\n# ENTRY POINTS:  ?GUIDSUB FOR THE IGNITION ALGORITHM, LUNLAND FOR SERVOUT\n#************************************************************************\n\n# IGNITION ALGORITHM ENTRY:  DELIVERS N PASSES OF QUADRATIC GUIDANCE\n\n?GUIDSUB\tEXIT\n\t\tCAF\tTWO\t\t# N = 3\n\t\tTS\tNGUIDSUB\n\t\tTCF\tGUILDRET +2\n\nGUIDSUB\t\tTS\tNGUIDSUB\t# ON SUCCEEDING PASSES SKIP TTFINCR\n\t\tTCF\tCALCRGVG\n\n# NORMAL ENTRY:  CONTROL COMES HERE FROM SERVOUT\n\nLUNLAND\t\tTC\tPHASCHNG\n\t\tOCT\t00035\t\t# GROUP 5:  RETAIN ONLY PIPA TASK\n\t\tTC\tPHASCHNG\n\t\tOCT\t05023\t\t# GROUP 3:  PROTECT GUIDANCE WITH PRIO 21\n\t\tOCT\t21000\t\t#\tJUST HIGHER THAN SERVICER'S PRIORITY\n\n# Page 800\n#*******************************************************************\n# GUILDENSTERN:  AUTO-MODES MONITOR (R13)\n#*******************************************************************\n\n\t\tCOUNT*\t$$/R13\n\n# HERE IS THE PHILOSOPHY OF GUILDENSTERN:\tON EVERY APPEARANCE OR DISAPPEARANCE OF THE MANUAL THROTTLE\n# DISCRETE TO SELECT P67 OR P66 RESPECTIVELY:   ON EVERY APPEARANCE OF THE ATTITUDE-HOLD DISCRETE TO SELECT P66\n# UNLESS THE CURRENT PROGRAM IS P67 IN WHICH CASE THERE IS NO CHANGE\n\nGUILDEN\t\tEXTEND\t\t\t# IS UN-AUTO-THROTTLE DISCRETE PRESENT?\n# STERN\t\t\t\t\t# RSB 2009: Not originally a comment.\n \t\tREAD CHAN30\n\t\tMASK\tBIT5\n \t\tCCS\tA\n \t\tTCF\tSTARTP67\t# YES\nP67NOW?\t\tTC\tCHECKMM\t\t# NO:  ARE WE IN P67 NOW?\n\t\tDEC\t67\n\t\tTCF\tSTABL?\t\t# NO\nSTARTP66\tTC\tFASTCHNG\t# YES\n\t\tTC\tNEWMODEX\nDEC66\t\tDEC\t66\n\t\tEXTEND\n\t\tDCA\tHDOTDISP\t# SET DESIRED ALTITUDE RATE = CURRENT\n\t\tDXCH\tVDGVERT\t\t# \tALTITUDE RATE.\nSTRTP66A\tTC\tINTPRET\n\t\tSLOAD\tPUSH\n\t\t\tPBIASZ\n\t\tSLOAD\tPUSH\n\t\t\tPBIASY\n\t\tSLOAD\tVDEF\n\t\t\tPBIASX\n\t\tVXSC\tSET\n\t\t\tBIASFACT\n\t\t\tRODFLAG\n\t\tSTOVL\tVBIAS\n\t\t\tTEMX\n\t\tVCOMP\n\t\tSTOVL\tOLDPIPAX\n\t\t\tZEROVECS\n\t\tSTODL\tDELVROD\n\t\t\tRODSCALE\n\t\tSTODL\tRODSCAL1\n\t\t\tPIPTIME\n\t\tSTORE\tLASTTPIP\n\t\tEXIT\n\t\tCAF\tZERO\n\t\tTS\tFCOLD\n\t\tTS\tFWEIGHT\n\t\tTS\tFWEIGHT +1\nVRTSTART\tTS\tWCHVERT\n# Page 801\n\t\tCAF\tTWO\t\t# WCHPHASE = 2 ---> VERTICAL: P65,P66,P67\n\t\tTS\tWCHPHOLD\n\t\tTS\tWCHPHASE\n\t\tTC\tBANKCALL\t# TEMPORARY, I HOPE HOPE HOPE\n\t\tCADR\tSTOPRATE\t# TEMPORARY, I HOPE HOPE HOPE\n\t\tTC\tDOWNFLAG\t# PERMIT X-AXIS OVERRIDE\n\t\tADRES\tXOVINFLG\n\t\tTC\tDOWNFLAG\n\t\tADRES\tREDFLAG\n\t\tTCF\tVERTGUID\n\nSTARTP67\tTC\tNEWMODEX\t# NO HARM IN \"STARTING\" P67 OVER AND OVER\n\t\tDEC\t67\t\t# SO NO NEED FOR A FASTCHNG AND NO NEED\n\t\tCAF\tZERO\t\t# TO SEE IF ALREADY IN P67.\n\t\tTS\tRODCOUNT\n\t\tCAF\tTEN\n\t\tTCF\tVRTSTART\n\nSTABL?\t\tCAF\tBIT13\t\t# IS UN-ATTITUDE-HOLD DISCRETE PRESENT?\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tCCS\tA\n\t\tTCF\tGUILDRET\t# YES ALL'S WELL\n\nP66NOW?\t\tCS\tMODREG\n\t\tAD\tDEC66\n\t\tEXTEND\n\t\tBZF\tRESTART?\n\n\t\tCA\tRODCOUNT\t# NO. HAS THE ROD SWITCH BEEN \"CLICKED\"?\n\t\tEXTEND\n\t\tBZF\tGUILDRET\t# NO. CONTINUE WITH AUTOMATIC LANDING\n\t\tTCF\tSTARTP66\t# YES. SWITCH INTO THE ROD MODE.\n\nRESTART?\tCA\tFLAGWRD1\t# HAS THERE BEEN A RESTART?\n\t\tMASK\tRODFLBIT\n\t\tEXTEND\n\t\tBZF\tSTRTP66A\t# YES.  REINITIALIZE BUT LEAVE VDGVERT AS\n\t\t\t\t\t#\tIS.\n\n\t\tTCF\tVERTGUID\t# NO: CONTINUE WITH R.O.D.\n\n# *******************************************************************************\n# INITIALIZATION FOR THIS PASS\n# *******************************************************************************\n\n\t\tCOUNT*\t$$/F2DPS\n\nGUILDRET\tCAF\tZERO\n\t\tTS\tRODCOUNT\n\n# Page 802\n +2\t\tEXTEND\n \t\tDCA\tTPIP\n\t\tDXCH\tTPIPOLD\n\n\t\tTC\tFASTCHNG\n\n\t\tEXTEND\n\t\tDCA\tPIPTIME1\n\t\tDXCH\tTPIP\n\n\t\tEXTEND\n\t\tDCA\tTTF/8\n\t\tDXCH\tTTF/8TMP\n\n\t\tCCS\tFLPASS0\n\t\tTCF\tTTFINCR\n\nBRSPOT1\t\tINDEX\tWCHPHASE\n\t\tTCF\tNEWPHASE\n\n# ******************************************************************\n# ROUTINES TO START NEW PHASES\n# ******************************************************************\n\nP65START\tTC\tNEWMODEX\n\t\tDEC\t65\n\t\tCS\tTWO\n\t\tTS\tWCHVERT\n\t\tTC\tDOWNFLAG\t# PERMIT X-AXIS OVERRIDE\n\t\tADRES\tXOVINFLG\n\t\tTCF\tTTFINCR\n\nSTARTP64\tTC\tNEWMODEX\n\t\tDEC\t64\n\t\tCA\tDELTTFAP\t# AUGMENT TTF/8\n\t\tADS\tTTF/8TMP\n\t\tCA\tBIT12\t\t# ENABLE RUPT10\n\t\tEXTEND\n\t\tWOR\tCHAN13\n\t\tTC\tDOWNFLAG\t# INITIALIZE REDESIGNATION FLAG\n\t\tADRES\tREDFLAG\n\n\n#\t\t(CONTINUE TO TTFINCR)\n\n# *********************************************************************************\n# INCREMENT TTF/8, UPDATE LAND FOR LUNAR ROTATION, DO OTHER USEFUL THINGS\n# *********************************************************************************\n#\n#\tTTFINCR COMPUTATIONS ARE AS FOLLOWS --\n# Page 803\n#\t\tTTF/8 UPDATED FOR TIME SINCE LAST PASS:\n#\t\t\tTTF/8 = TTF/8 + (TPIP - TPIPOLD)/8\n#\t\tLANDING SITE VECTOR UPDATED FOR LUNAR ROTATION:\n#\t\t\t____               ____   ____                   __\n#\t\t\tLAND = /LAND/ UNIT(LAND - LAND(TPIP - TPIPOLD) * WM)\n#\t\tSLANT RANGE TO LANDING SITE, FOR DISPLAY:\n#\t\t\t                 ____   _\n#\t\t\tRANGEDSP = ABVAL(LAND - R)\n\nTTFINCR\t\tTC\tINTPRET\n\t\tDLOAD\tDSU\n\t\t\tTPIP\n\t\t\tTPIPOLD\n\t\tSLR\tPUSH\t\t# SHIFT SCALES DELTA TIME TO 2(17) CSECS\n\t\t\t11D\n\t\tVXSC\tVXV\n\t\t\tLAND\n\t\t\tWM\n\t\tBVSU\tRTB\n\t\t\tLAND\n\t\t\tNORMUNIT\n\t\tVXSC\tVSL1\n\t\t\t/LAND/\n\t\tSTODL\tLANDTEMP\n\t\tEXIT\n\n\t\tDXCH\tMPAC\n\t\tDAS\tTTF/8TMP\t# NOW HAVE INCREMENTED TTF/8 IN TTF/8TMP\n\n\t\tTC\tFASTCHNG\n\n\t\tEXTEND\n\t\tDCA\tTTF/8TMP\n\t\tDXCH\tTTF/8\n\n\t\tEXTEND\n\t\tDCA\tLANDTEMP\n\t\tDXCH\tLAND\n\t\tEXTEND\n\t\tDCA\tLANDTEMP +2\n\t\tDXCH\tLAND     +2\n\t\tEXTEND\n\t\tDCA\tLANDTEMP +4\n\t\tDXCH\tLAND\t +4\n\n# Page 804\n\t\tTC\tTDISPSET\n\t\tTC\tFASTCHNG\t# SINCE REDESIG MAY CHANGE LANDTEMP\n\nBRSPOT2\t\tINDEX\tWCHPHASE\n\t\tTCF\tPREGUIDE\n\n# *********************************************************************\n# LANDING SITE PERTURBATION EQUATIONS\n# *********************************************************************\n\nREDESIG\t\tCA\tFLAGWRD6\t# IS REDFLAG SET?\n\t\tMASK\tREDFLBIT\n\t\tEXTEND\n\t\tBZF\tRGVGCALC\t# NO:  SKIP REDESIGNATION LOGIC\n\n\t\tCA\tTREDES\t\t# YES:  HAS TREDES REACHED ZERO?\n\t\tEXTEND\n\t\tBZF\tRGVGCALC\t# YES:  SKIP REDESIGNATION LOGIC\n\n\t\tINHINT\n\t\tCA\tELINCR1\n\t\tTS\tELINCR\n\t\tCA\tAZINCR1\n\t\tTS\tAZINCR\n\t\tTC\tFASTCHNG\n\n\t\tCA\tZERO\n\t\tTS\tELINCR1\n\t\tTS\tAZINCR1\n\t\tTS\tELINCR\t+1\n\t\tTS\tAZINCR  +1\n\n\t\tCA\tFIXLOC\t\t# SET PD TO 0\n\t\tTS\tPUSHLOC\n\n\t\tTC\tINTPRET\n\t\tVLOAD\tVSU\n\t\t\tLAND\n\t\t\tR\t\t#                 ____   _\n\t\tRTB\tPUSH\t\t# PUSH DOWN UNIT (LAND - R)\n\t\t\tNORMUNIT\n\t\tVXV\tVSL1\n\t\t\tYNBPIP\t\t#                    ___        ____   _\n\t\tVXSC\tPDDL\t\t# PUSH DOWN - ELINCR(YNB * UNIT(LAND - R))\n\t\t\tELINCR\n\t\t\tAZINCR\n\t\tVXSC\tVSU\n\t\t\tYNBPIP\n\t\tVAD\tPUSH\t\t# RESULTING VECTOR IS 1/2 REAL SIZE\n\n# Page 805\n\n\t\tDLOAD\tDSU\t\t# MAKE SURE REDESIGNATION IS NOT\n\t\t\t0\t\t# \tTOO CLOSE TO THE HORIZON.\n\t\t\tDEPRCRIT\n\t\tBMN\tDLOAD\n\t\t\tREDES1\n\t\t\tDEPRCRIT\n\t\tSTORE\t0\nREDES1\t\tDLOAD\tDSU\n\t\t\tLAND\n\t\t\tR\n\t\tDDV\tVXSC\n\t\t\t0\n\t\tVAD\tUNIT\n\t\t\tR\n\t\tVXSC\tVSL1\n\t\t\t/LAND/\n\t\tSTORE\tLANDTEMP\n\t\tEXIT\t\t\t# LOOKANGL WILL BE COMPUTED AT RGVGCALC\n\n\t\tTC\tFASTCHNG\n\n\t\tEXTEND\n\t\tDCA\tLANDTEMP\n\t\tDXCH\tLAND\n\t\tEXTEND\n\t\tDCA\tLANDTEMP +2\n\t\tDXCH\tLAND +2\n\t\tEXTEND\n\t\tDCA\tLANDTEMP +4\n\t\tDXCH\tLAND +4\n\n\t\tTCF\tRGVGCALC\n\n# *********************************************************************\n# COMPUTE STATE IN GUIDANCE COORDINATES\n# *********************************************************************\n#\n#\tRGVGCALC COMPUTATIONS ARE AS FOLLOWS:--\n#\tVELOCITY RELATIVE TO THE SURFACE:\n#\t\t_______   _   _   __\n#\t\tANGTERM = V + R * WM\n#\tSTATE IN GUIDANCE COORDINATES:\n#\t\t___   *   _   ____\n#\t\tRGU = CG (R - LAND)\n#\t\t___   *   _   __   _\n#\t\tVGU = CG (V - WM * R)\n# Page 806 actually starts one line earlier but that would separate the markers from their variables\n#\n#\tHORIZONTAL VELOCITY FOR DISPLAY\n#\n#\t\tVHORIZ = 8 ABVAL (0, VG , VG )\n#\t\t                       2    1\n# \tDEPRESSION ANGLE FOR DISPLAY:\n#\t\t                       _   ____  ______\n#\t\tLOOKANGL = ARCSIN(UNIT(R - LAND).XMBPIP)\n\nCALCRGVG\tTC\tINTPRET\t\t# IN IGNALG, COMPUTE V FROM INTEGRATION\n\t\tVLOAD\tMXV\t\t#\tOUTPUT AND TRIM CORRECTION TERM\n\t\t\tVATT1\t\t#\tCOMPUTED LAST PASS AND LEFT IN UNFC/2\n\t\t\tREFSMMAT\n\t\tVSR1\tVAD\n\t\t\tUNFC/2\n\t\tSTORE\tV\n\t\tEXIT\n\nRGVGCALC\tTC\tINTPRET\t\t# ENTER HERE TO RECOMPUTE RG AND VG\n\t\tVLOAD\tVXV\n\t\t\tR\n\t\t\tWM\n\t\tVAD\tVSR2\t\t# RESCALE TO UNITS OF 2(9) M/CS\n\t\t\tV\n\t\tSTORE\tANGTERM\n\t\tMXV\n\t\t\tCG\t\t# NO SHIFT SINCE ANGTERM IS DOUBLE SIZED\n\t\tSTORE\tVGU\n\t\tPDDL\tVDEF\t\t# FORM (0,VG ,VG ) IN UNITS OF 2(10) M/CS\n\t\t\tZEROVECS\t#           2   1\n\t\tABVAL\tSL3\n\t\tSTOVL\tVHORIZ\t\t# VHORIZ FOR DISPLAY DURING P65.\n\t\t\tR\t\t#           _   ____\n\t\tVSU\tPUSH\t\t# PUSH DOWN R - LAND\n\t\t\tLAND\n\t\tMXV\tVSL1\n\t\t\tCG\n\t\tSTORE\tRGU\n\t\tABVAL\n\t\tSTOVL\tRANGEDSP\n\t\tRTB\tDOT\t\t# NOW IN MPAC IS SINE(LOOKANGL)/4\n\t\t\tNORMUNIT\n\t\t\tXNBPIP\n\t\tEXIT\n\n\t\tCA\tFIXLOC\t\t# RESET PUSH DOWN POINTER\n\t\tTS\tPUSHLOC\n\n# Page 807\n\t\tCA\tMPAC\t\t# COMPUTE LOOKANGLE ITSELF\n\t\tDOUBLE\n\t\tTC\tBANKCALL\n\t\tCADR\tSPARCSIN -1\n\t\tAD\t1/2DEG\n\t\tEXTEND\n\t\tMP\t180DEGS\n\t\tTS\tLOOKANGL\t# LOOKANGL FOR DISPLAY DURING P64\n\nBRSPOT3\t\tINDEX\tWCHPHASE\n\t\tTCF\tWHATGUID\n\n# **************************************************************************\n# TTF/8 COMPUTATION\n# **************************************************************************\n\nTTF/8CL\t\tTC\tINTPRETX\n\t\tDLOAD*\n\t\t\tJDG2TTF,1\n\t\tSTODL*\tTABLTTF +6\t# A(3) = 8 JDG  TO TABLTTF\n\t\t\tADG2TTF,1\t#             2\n\t\tSTODL\tTABLTTF +4\t# A(2) = 6 ADG  TO TABLTTF\n\t\t\tVGU \t+4\t#             2\n\t\tDMP\tDAD*\n\t\t\t3/4DP\n\t\t\tVDG2TTF,1\n\t\tSTODL*\tTABLTTF +2\t# A(1) = (6 VGU  + 18 VDG )/8 TO TABLTTF\n\t\t\tRDG +4,1\t#              2         2\n\t\tDSU\tDMP\n\t\t\tRGU +4\n\t\t\t3/8DP\n\t\tSTORE\tTABLTTF\t\t# A(0) = -24 (RGU  - RDG )/64 TO TABLTTF\n\t\tEXIT\t\t\t#                2      2\n\n\t\tCA\tBIT8\n\t\tTS\tTABLTTF +10\t# FRACTIONAL PRECISION FOR TTF TO TABLE\n\n\t\tEXTEND\n\t\tDCA\tTTF/8\n\t\tDXCH\tMPAC\t\t# LOADS TTF/8 (INITIAL GUESS) INTO MPAC\n\t\tCAF\tTWO\t\t# DEGREE - ONE\n\t\tTS\tL\n\t\tCAF\tTABLTTFL\n\t\tTC\tROOTPSRS\t# YIELDS TTF/8 IN MPAC\n\t\tINDEX\tWCHPHASE\n\t\tTCF\tWHATALM\n\n\t\tEXTEND\t\t\t# GOOD RETURN\n\t\tDCA\tMPAC\t\t# FETCH TTF/8 KEEPING IT IN MPAC\n\t\tDXCH\tTTF/8\t\t# CORRECTED TTF/8\n\n# Page 808\n\t\tTC\tTDISPSET\n\n# \t\t(CONTINUE TO QUADGUID)\n\n# *********************************************************************************\n# MAIN GUIDANCE EQUATION\n# *********************************************************************************\n#\n#\tAS PUBLISHED --\n#\t\t              ___   __       ___   __\n#\t\t___   ___   6(VDG + VG)   12(RDG - RG)\n#\t\tACG = ADG + ----------- + ------------\n#\t\t                TTF        (TTF)(TTF)\n#\tAS HERE PROGRAMMED --\n#\t\t             ___   __\n#\t\t      3 (1/4(RDG - RG)   ___   __)\n#\t\t      - (------------- + VDG + VG)\n#\t\t___   4 (    TTF/8               )   ___\n#\t\tACG = ---------------------------- + ADG\n#\t\t                  TTF/8\n\nQUADGUID\tCS\tTTF/8\n\t\tAD\tLEADTIME\t# LEADTIME IS A NEGATIVE NUMBER\n\t\tAD\tPOSMAX\t\t# SAFEGUARD THE COMPUTATIONS THAT FOLLOW\n\t\tTS\tL\t\t#\tBY FORCING -TTF*LEADTIME > OR = ZERO\n\t\tCS\tL\n\t\tAD\tL\n\t\tZL\n\t\tEXTEND\n\t\tDV\tTTF/8\n\t\tTS\tBUF\t\t# - RATIO OF LAG-DIMINISHED TTF TO TTF\n\t\tEXTEND\n\t\tSQUARE\n\t\tTS\tBUF +1\n\t\tAD\tBUF\n\t\tXCH\tBUF +1\t\t# RATIO SQUARED - RATIO\n\t\tAD\tBUF +1\n\t\tTS\tMPAC\t\t# COEFFICIENT FOR VGU TERM\n\t\tAD\tBUF +1\n\t\tINDEX\tFIXLOC\n\t\tTS\t26D\t\t# COEFFICIENT FOR RDG-RGU TERM\n\t\tAD\tBUF +1\n\t\tINDEX\tFIXLOC\n\t\tTS\t28D\t\t# COEFFICIENT FOR VDG TERM\n\t\tAD\tBUF\n\t\tAD\tPOSMAX\n# Page 809\n\t\tAD\tBUF +1\n\t\tAD\tBUF +1\n\t\tINDEX\tFIXLOC\n\t\tTS\t30D\t\t# COEFFICIENT FOR ADG TERM\n\n\t\tCAF\tZERO\n\t\tTS\tMODE\n\n\t\tTC\tINTPRETX\n\t\tVXSC\tPDDL\n\t\t\tVGU\n\t\t\t28D\n\t\tVXSC*\tPDVL*\n\t\t\tVDG,1\n\t\t\tRDG,1\n\t\tVSU\tV/SC\n\t\t\tRGU\n\t\t\tTTF/8\n\t\tVSR2\tVXSC\n\t\t\t26D\n\t\tVAD\tVAD\n\t\tV/SC\tVXSC\n\t\t\tTTF/8\n\t\t\t3/4DP\n\t\tPDDL\tVXSC*\n\t\t\t30D\n\t\t\tADG,1\n\t\tVAD\nAFCCALC1\tVXM\tVSL1\t\t# VERGUID COMES HERE\n\t\t\tCG\n\t\tPDVL\tV/SC\n\t\t\tGDT/2\n\t\t\tGSCALE\n\t\tBVSU\tSTADR\n\t\tSTORE\tUNFC/2\t\t# UNFC/2 NEED NOT BE UNITIZED\n\t\tABVAL\nAFCCALC2\tSTODL\t/AFC/\t\t# MAGNITUDE OF AFC FOR THROTTLE\n\t\t\tUNFC/2\t\t# VERTICAL COMPONENT\n\t\tDSQ\tPDDL\n\t\t\tUNFC/2 +2\t# OUT-OF-PLANE\n\t\tDSQ\tPDDL\n\t\t\tHIGHESTF\n\t\tDDV\tDSQ\n\t\t\tMASS\t\t#                        2    2    2\n\t\tDSU\tDSU\t\t# AMAXHORIZ = SQRT(ATOTAL - A  - A  )\n\t\tBPL\tDLOAD\t\t#                            1    0\n\t\t\tAFCCALC3\n\t\t\tZEROVECS\nAFCCALC3\tSQRT\tDAD\n\t\t\tUNFC/2 +4\n# Page 810\n\t\tBPL\tBDSU\n\t\t\tAFCCLEND\n\t\t\tUNFC/2 +4\n\t\tSTORE\tUNFC/2 +4\nAFCCLEND\tEXIT\n\t\tTC\tFASTCHNG\n\n\t\tCA\tWCHPHASE\t# PREPARE FOR PHASE SWITCHING LOGIC\n\t\tTS\tWCHPHOLD\n\t\tINCR\tFLPASS0\t\t# INCREMENT PASS COUNTER\n\nBRSPOT4\t\tINDEX\tWCHPHASE\n\t\tTCF\tAFTRGUID\n\n# ***********************************************************************\n# ERECT GUIDANCE-STABLE MEMBER TRANSFORMATION MATRIX\n# ***********************************************************************\n\nCGCALC\t\tCAF\tEBANK5\n\t\tTS\tEBANK\n\t\tEBANK=\tTCGIBRAK\n\t\tEXTEND\n\t\tINDEX\tWCHPHASE\n\t\tINDEX\tTARGTDEX\n\t\tDCA\tTCGFBRAK\n\t\tINCR\tBBANK\n\t\tINCR\tBBANK\n\t\tEBANK=\tTTF/8\n\t\tAD\tTTF/8\n\t\tXCH\tL\n\t\tAD\tTTF/8\n\t\tCCS\tA\n\t\tCCS\tL\n\t\tTCF\tEXTLOGIC\n\t\tTCF\tEXTLOGIC\n\t\tNOOP\n\n\t\tTC\tINTPRETX\n\t\tVLOAD\tUNIT\n\t\t\tLAND\n\t\tSTODL\tCG\n\t\t\tTTF/8\n\t\tDMP*\tVXSC\n\t\t\tGAINBRAK,1\t# NUMERO MYSTERIOSO\n\t\t\tANGTERM\n\t\tVAD\n\t\t\tLAND\n\t\tVSU\tRTB\n\t\t\tR\n\t\t\tNORMUNIT\n# Page 811\n\t\tVXV\tRTB\n\t\t\tLAND\n\t\t\tNORMUNIT\n\t\tSTOVL\tCG +6\t\t# SECOND ROW\n\t\t\tCG\n\t\tVXV\tVSL1\n\t\t\tCG +6\n\t\tSTORE\tCG +14\n\t\tEXIT\n\n#\t\t(CONTINUE TO EXTLOGIC)\n#\n# ***********************************************************************\n# PREPARE TO EXIT\n# ***********************************************************************\n#\n# DECIDE (1) HOW TO EXIT, AND (2) WHETHER TO SWITCH PHASES\n#\nEXTLOGIC\tINDEX\tWCHPHASE\t# WCHPHASE = 1   APPRQUAD\n\t\tCA\tTENDBRAK\t# WCHPHASE = 0   BRAKQUAD\n\t\tAD\tTTF/8\n\nEXSPOT1\t\tEXTEND\n\t\tINDEX\tWCHPHASE\n\t\tBZMF\tWHATEXIT\n\n\t\tTC\tFASTCHNG\n\n\t\tCA\tWCHPHOLD\n\t\tAD\tONE\n\t\tTS\tWCHPHASE\n\t\tCA\tZERO\n\t\tTS\tFLPASS0\t\t# RESET FLPASS0\n\n\t\tINDEX\tWCHPHOLD\n\t\tTCF\tWHATEXIT\n\n# ***********************************************************************\n# ROUTINES FOR EXITING FROM LANDING GUIDANCE\n# ***********************************************************************\n#\n# 1.\tEXGSUB IS THE RETURN WHEN GUIDSUB IS CALLED BY THE IGNITION ALGORITHM.\n# 2.\tEXBRAK IN THE EXIT USED DURING THE BRAKING PHASE.  IN THIS CASE UNIT(R) IS THE WINDOW POINTING VECTOR.\n# 3.\tEXNORM IS THE EXIT USED AT OTHER TIMES DURING THE BURN.\n# (EXOVFLOW IS A SUBROUTINE OF EXBRAK AND EXNORM CALLED WHEN OVERFLOW OCCURRED ANYWHERE IN GUIDANCE.)\n\nEXGSUB\t\tTC\tINTPRET\t\t# COMPUTE TRIM VELOCITY CORRECTION TERM.\n# Page 812\n\t\tVLOAD\tRTB\n\t\t\tUNFC/2\n\t\t\tNORMUNIT\n\t\tVXSC\tVXSC\n\t\t\tZOOMTIME\n\t\t\tTRIMACCL\n\t\tSTORE\tUNFC/2\n\t\tEXIT\n\n\t\tCCS\tNGUIDSUB\n\t\tTCF\tGUIDSUB\n\t\tCCS\tNIGNLOOP\n\t\tTCF\t+3\n\t\tTC\tALARM\n\t\tOCT\t01412\n\n +3\t\tTC\tPOSTJUMP\n \t\tCADR\tDDUMCALC\n\nEXBRAK\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tUNIT/R/\n\t\tSTORE\tUNWC/2\n\t\tEXIT\n\t\tTCF\tSTEER?\n\nEXNORM\t\tTC\tINTPRET\n\t\tVLOAD\tVSU\n\t\t\tLAND\n\t\t\tR\n\t\tRTB\n\t\t\tNORMUNIT\n\t\tSTORE\tUNWC/2\t\t# UNIT(LAND - R) IS TENTATIVE CHOICE\n\t\tVXV\tDOT\n\t\t\tXNBPIP\n\t\t\tCG +6\n\t\tEXIT\t\t\t# WITH PROJ IN MPAC 1/8 REAL SIZE\n\n\t\tCS\tMPAC\t\t# GET COEFFICIENT FOR CG +14\n\t\tAD\tPROJMAX\n\t\tAD\tPOSMAX\n\t\tTS\tBUF\n\t\tCS\tBUF\n\t\tADS\tBUF\t\t# RESULT IS 0 IF PROJMAX - PROJ NEGATIVE\n\n\t\tCS\tPROJMIN\t\t# GET COEFFICIENT FOR UNIT(LAND - R)\n\t\tAD\tMPAC\n\t\tAD\tPOSMAX\n\t\tTS\tBUF +1\n\t\tCS\tBUF +1\n# Page 813\n\t\tADS\tBUF +1\t\t# RESULT IS 0 IF PROJ - PROJMIN NEGATIVE\n\n\t\tCAF\tFOUR\nUNWCLOOP\tMASK\tSIX\n\t\tTS\tQ\n\t\tCA\tEBANK5\n\t\tTS\tEBANK\n\t\tEBANK=\tCG\n\t\tCA\tBUF\n\t\tEXTEND\n\t\tINDEX\tQ\n\t\tMP\tCG +14\n\t\tINCR\tBBANK\n\t\tEBANK=\tUNWC/2\n\t\tINDEX\tQ\n\t\tDXCH\tUNWC/2\n\t\tEXTEND\n\t\tMP\tBUF +1\n\t\tINDEX\tQ\n\t\tDAS\tUNWC/2\n\t\tCCS\tQ\n\t\tTCF\tUNWCLOOP\n\n\t\tINCR\tBBANK\n\t\tEBANK=\tPIF\n\nSTEER?\t\tCA\tFLAGWRD2\t# IF STEERSW DOWN NO OUTPUTS\n\t\tMASK\tSTEERBIT\n\t\tEXTEND\n\t\tBZF\tRATESTOP\n\nEXVERT\t\tCA\tOVFIND\t\t# IF OVERFLOW ANYWHERE IN GUIDANCE\n\t\tEXTEND\t\t\t#\tDON'T CALL THROTTLE OR FINDCDUW\n\t\tBZF\t+13\n\nEXOVFLOW\tTC\tALARM\t\t# SOUND THE ALARM NON-ABORTIVELY\n\t\tOCT\t01410\n\nRATESTOP\tCAF\tBIT13\t\t# ARE WE IN ATTITUDE-HOLD?\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZF\tDISPEXIT\t# YES\n\n\t\tTC\tBANKCALL\t# NO:  DO A STOPRATE\n\t\tCADR\tSTOPRATE\n\n\t\tTCF\tDISPEXIT\n\nGDUMP1\t\tTC\tTHROTTLE\n# Page 814\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tFINDCDUW -2\n\t\tEXIT\n\n# \t\t(CONTINUE TO DISPEXIT)\n\n# ***********************************************************************\n# GUIDANCE LOOP DISPLAYS\n# ***********************************************************************\n\nDISPEXIT\tEXTEND\t\t\t# KILL GROUP 3:  DISPLAYS WILL BE\n\t\tDCA\tNEG0\t\t#\tRESTORED BY NEXT GUIDANCE CYCLE.\n\t\tDXCH\t-PHASE3\n\n +3\t\tCS\tFLAGWRD8\t# IF FLUNDISP IS SET, NO DISPLAY THIS PASS\n \t\tMASK\tFLUNDBIT\n\t\tEXTEND\n\t\tBZF\tENDLLJOB\t# TO PICK UP THE TAG\n\n\t\tINDEX\tWCHPHOLD\n\t\tTCF\tWHATDISP\n\n-2\t\tTC\tPHASCHNG\t# KILL GROUP 5\n\t\tOCT\t00035\n\nP63DISPS\tCAF\tV06N63\nDISPCOMN\tTC\tBANKCALL\n\t\tCADR\tREGODSPR\n\nENDLLJOB\tTCF\tENDOFJOB\n\nP64DISPS\tCA\tTREDES\t\t# HAS TREDES REACHED ZERO?\n\t\tEXTEND\n\t\tBZF\tRED-OVER\t# YES: CLEAR REDESIGNATION FLAG\n\n\t\tCS\tFLAGWRD6\t# NO:  IS REDFLAG SET?\n\t\tMASK\tREDFLBIT\n\t\tEXTEND\n\t\tBZF\tREDES-OK\t# YES:  DO STATIC DISPLAY\n\n\t\tCAF\tV06N64\t\t# OTHERWISE USE FLASHING DISPLAY\n\t\tTC\tBANKCALL\n\t\tCADR\tREFLASHR\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\tP64CEED\t\t# PROCEED\tPERMIT REDESIGNATIONS\n\t\tTCF\tP64DISPS\t# RECYCLE\n# Page 815\n\t\tTCF\tENDLLJOB\n\nP64CEED\t\tCAF\tZERO\n\t\tTS\tELINCR1\n\t\tTS\tAZINCR1\n\n\t\tTC\tUPFLAG\t\t# ENABLE REDESIGNATION LOGIC\n\t\tADRES\tREDFLAG\n\n\t\tTCF\tENDOFJOB\n\nRED-OVER\tTC\tDOWNFLAG\n\t\tADRES\tREDFLAG\nREDES-OK\tCAF\tV06N64\n\t\tTCF\tDISPCOMN\n\n\nVERTDISP\tCAF\tV06N60\n\t\tTCF\tDISPCOMN\n\n\n# **************************************************************************\n# GUIDANCE FOR P65\n# **************************************************************************\n\nVERTGUID\tCCS\tWCHVERT\n\t\tTCF\tP67VERT\t\t# POSITIVE NON-ZERO ---> P67\n\t\tTCF\tP66VERT\t\t# +0\n#\n# \tTHE P65 GUIDANCE EQUATION IS AS FOLLOWS --\n#\t\t      ____   ___\n#\t\t      V2FG - VGU\n#\t\tACG = ----------\n#\t\t        TAUVERT\n\nP65VERT\t\tTC\tINTPRET\n\t\tVLOAD\tVSU\n\t\t\tV2FG\n\t\t\tVGU\n\t\tV/SC\tGOTO\n\t\t\tTAUVERT\n\t\t\tAFCCALC1\n# Page 816\n# **********************************************************\n# GUIDANCE FOR P66\n# **********************************************************\n\nP66VERT\t\tTC\tPOSTJUMP\n\t\tCADR\tP66VERTA\n\nP67VERT\t\tTC\tPHASCHNG\t# TERMINATE GROUP 3.\n\t\tOCT\t00003\n\n\t\tTC\tINTPRET\n\t\tVLOAD\tGOTO\n\t\t\tV\n\t\t\tVHORCOMP\n\n\t\tSETLOC\tP66LOC\n\t\tBANK\n\t\tCOUNT*\t$$/F2DPS\n\nRODTASK\t\tCAF\tPRIO22\n\t\tTC\tFINDVAC\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tRODCOMP\n\n\t\tTCF\tTASKOVER\n\nP66VERTA\tTC\tPHASCHNG\t# TERMINATE GROUP 3.\n\t\tOCT\t00003\n\n\t\tCAF\t1SEC\n\t\tTC\tTWIDDLE\n\t\tADRES\tRODTASK\n\nRODCOMP\t\tINHINT\n\t\tCAF\tZERO\n\t\tXCH\tRODCOUNT\n\t\tEXTEND\n\t\tMP\tRODSCAL1\n\t\tDAS\tVDGVERT\t\t# UPDATE DESIRED ALTITUDE RATE.\n\n\t\tEXTEND\t\t\t# SET OLDPIPAX,Y,Z = PIPAX,Y,Z\n\t\tDCA\tPIPAX\n\t\tDXCH\tOLDPIPAX\n\t\tDXCH\tRUPTREG1\t# SET RUPTREG1,2,3 = OLDPIPAX,Y,Z\n\t\tCA\tPIPAZ\n\t\tXCH\tOLDPIPAZ\n\t\tXCH\tRUPTREG3\n\n\t\tEXTEND\t\t\t# SNAPSHOT TIME OF PIPA READING.\n\t\tDCA\tTIME2\n# Page 817\n\t\tDXCH\tTHISTPIP\n\n\t\tCA\tOLDPIPAX\n\t\tAD\tPIPATMPX\n\t\tTS\tMPAC\t\t# MPAC(X) = PIPAX + PIPATMPX\n\t\tCA\tOLDPIPAY\n\t\tAD\tPIPATMPY\n\t\tTS\tMPAC +3\t\t# MPAC(Y) = PIPAY + PIPATMPY\n\t\tCA\tOLDPIPAZ\n\t\tAD\tPIPATMPZ\n\t\tTS\tMPAC +5\t\t# MPAC(Z) = PIPAZ + PIPATMPZ\n\n\t\tCS\tOLDPIPAX\n\t\tAD\tTEMX\n\t\tAD\tRUPTREG1\n\t\tTS\tDELVROD\n\t\tCS\tOLDPIPAY\n\t\tAD\tTEMY\n\t\tAD\tRUPTREG2\n\t\tTS\tDELVROD +2\n\t\tCS\tOLDPIPAZ\n\t\tAD\tTEMZ\n\t\tAD\tRUPTREG3\n\t\tTS\tDELVROD +4\n\n\t\tCAF\tZERO\n\t\tTS\tMPAC +1\t\t# ZERO LO-ORDER MPAC COMPONENTS\n\t\tTS\tMPAC +4\n\t\tTS\tMPAC +6\n\t\tTS\tTEMX\t\t# ZERO TEMX, TEMY, AND TEMZ SO WE WILL\n\t\tTS\tTEMY\t\t#\tKNOW WHEN READACCS CHANGES THEM.\n\t\tTS\tTEMZ\n\t\tCS\tONE\n\t\tTS\tMODE\n\t\tTC\tINTPRET\nITRPNT1\t\tVXSC\tPDDL\t\t# SCALE MPAC TO M/CS *2(-7) AND PUSH \t(6)\n\t\t\tKPIP1\n\t\t\tTHISTPIP\n\t\tDSU\n\t\t\tPIPTIME\n\t\tSTORE\t30D\t\t# 30-31D CONTAINS TIME IN CS SINCE PIPTIME\n\t\tDDV\tPDVL\t\t#\t\t\t\t\t(8)\n\t\t\t4SEC(28)\n\t\t\tGDT/2\n\t\tVSU\tVXSC\t\t#\t\t\t\t\t(6)\n\t\t\tVBIAS\n\t\tVSL2\tVAD\n\t\t\tV\n\t\tVAD\tSTADR\t\t#\t\t\t\t\t(0)\n\t\tSTOVL\t24D\t\t# STORE UPDATED VELOCITY IN 24-29D\n# Page 818\n\t\t\tR\n\t\tUNIT\n\t\tSTORE\t14D\n\t\tDOT\tSL1\n\t\t\t24D\n\t\tSTODL\tHDOTDISP\t# UPDATE HDOTDISP RATE FOR NOUN 63.\n\t\t\t30D\n\t\tSL\tDMP\n\t\t\t11D\n\t\t\tHDOTDISP\n\t\tDAD\tDSU\n\t\t\t36D\n\t\t\t/LAND/\n\t\tSTODL\tHCALC1\t\t# UPDATE HCALC1 FOR NOUN 63.\n\t\t\tHDOTDISP\n\t\tBDSU\tDDV\n\t\t\tVDGVERT\n\t\t\tTAUROD\n\t\tPDVL\tABVAL\t\t#\t\t\t\t(2)\n\t\t\tGDT/2\n\t\tDDV\tSR2\n\t\t\tGSCALE\n\t\tSTORE\t20D\n\t\tDAD\t\t\t#\t\t\t\t(0)\n\t\tPDVL\tCALL\t\t#\t\t\t\t(2)\n\t\t\tUNITX\n\t\t\tCDU*NBSM\n\t\tDOT\n\t\t\t14D\n\t\tSTORE\t22D\n\t\tBDDV\tSTADR\t\t#\t\t\t\t(0)\n\t\tSTOVL\t/AFC/\n\t\t\tDELVROD\n\t\tVXSC\tVAD\n\t\t\tKPIP1\n\t\t\tVBIAS\n\t\tABVAL\tPDDL\t\t#\t\t\t\t(2)\n\t\t\tTHISTPIP\n\t\tDSU\tPDDL\t\t#\t\t\t\t(4)\n\t\t\tLASTTPIP\n\t\t\tTHISTPIP\n\t\tSTODL\tLASTTPIP\t#\t\t\t\t(2)\n\t\tDDV\tBDDV\t\t#\t\t\t\t(0)\n\t\t\tSHFTFACT\n\t\tPDDL\tDMP\t\t#\t\t\t\t(2)\n\t\t\tFWEIGHT\n\t\t\tBIT1H\n\t\tDDV\tDDV\n\t\t\tMASS\n\t\t\tSCALEFAC\n# Page 819\n\t\tDAD\tPDDL\t\t#\t\t\t\t(4)\n\t\t\t0D\n\t\t\t20D\n\t\tDDV\tDSU\t\t#\t\t\t\t(2)\n\t\t\t22D\n\t\tDMP\tDAD\n\t\t\tLAG/TAU\n\t\t\t/AFC/\n\t\tPDDL\tDDV\t\t#\t\t\t\t(4)\n\t\t\tMAXFORCE\n\t\t\tMASS\n\t\tPDDL\tDDV\t\t#\t\t\t\t(6)\n\t\t\tMINFORCE\n\t\t\tMASS\n\t\tPUSH\tBDSU\t\t#\t\t\t\t(8)\n\t\t\t2D\n\t\tBMN\tDLOAD\t\t#\t\t\t\t(6)\n\t\t\tAFCSPOT\n\t\tDLOAD\tPUSH\t\t#\t\t\t\t(6)\n\t\tBDSU\tBPL\n\t\t\t2D\n\t\t\tAFCSPOT\n\t\tDLOAD\t\t\t#\t\t\t\t(4)\nAFCSPOT\t\tDLOAD\t\t\t#\t\t\t\t(2), (4), OR (6)\n\t\tSETPD\t\t\t#\t\t\t\t(2)\n\t\t\t2D\n\t\tSTODL\t/AFC/\t\t#\t\t\t\t(0)\nITRPNT2\t\tEXIT\n\t\tDXCH\tMPAC\t\t# MPAC = MEASURED ACCELERATION.\n\t\tTC\tBANKCALL\n\t\tCADR\tTHROTTLE +3\n\t\tTC\tINTPRET\n\t\tVLOAD\t\t\t# PICK UP UPDATED VELOCITY VECTOR.\n\t\t\t24D\nVHORCOMP\tVSL2\tVAD\n\t\t\tDELVS\n\t\tVSR2\tPDVL\n\t\t\tR\n\t\tUNIT\tVXSC\n\t\t\tHDOTDISP\n\t\tVSL1\tBVSU\n\t\tABVAL\n\t\tSTORE\tVHORIZ\n\t\tEXIT\n\t\tTC\tBANKCALL\t# PUT UP V06N60 DISPLAY BUT AVOID PHASCHNG\n\t\tCADR\tDISPEXIT +3\n\nBIT1H\t\tOCT\t00001\nSHFTFACT\t2DEC\t1 B-17\n# Page 820\nBIASFACT\t2DEC\t655.36 B-28\n\n# *********************************************************************************\n# REDESIGNATOR TRAP\n# *********************************************************************************\n\n\t\tBANK\t11\n\t\tSETLOC\tF2DPS*11\n\t\tBANK\n\n\t\tCOUNT*\t$$/F2DPS\n\nPITFALL\t\tXCH\tBANKRUPT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tTC\tCHECKMM\t\t# IF NOT IN P64, NO REASON TO CONTINUE\n\t\tDEC\t64\n\t\tTCF\tRESUME\n\n\t\tEXTEND\n\t\tREAD\tCHAN31\n\t\tCOM\n\t\tMASK\tALL4BITS\n\t\tTS\tELVIRA\n\t\tCAF\tTWO\n\t\tTS\tZERLINA\n\t\tCAF\tFIVE\n\t\tTC\tTWIDDLE\n\t\tADRES\tREDESMON\n\t\tTCF\tRESUME\n\n# REDESIGNATOR MONITOR (INITIATED BY PITFALL)\n\nPREMON1\t\tTS\tZERLINA\nPREMON2\t\tCAF\tSEVEN\n\t\tTC\tVARDELAY\nREDESMON\tEXTEND\n\t\tREAD\t31\n\t\tCOM\n\t\tMASK\tALL4BITS\n\t\tXCH\tELVIRA\n\t\tTS\tL\n\t\tCCS\tELVIRA\t\t# DO ANY BITS APPEAR THIS PASS?\n\t\tTCF\tPREMON2\t\t# Y:\tCONTINUE MONITOR\n\n\t\tCCS\tL\t\t# N:\tANY LAST PASS?\n\t\tTCF\tCOUNT'EM\t#\tY: \tCOUNT 'EM, RESET RUPT, TERMINATE\n# Page 821\n\t\tCCS\tZERLINA\t\t#\tN: \tHAS ZERLINA REACHED ZERO YET?\n\t\tTCF\tPREMON1\t\t#\t\tN:\tDIMINISH ZERLINA, CONTINUE\nRESETRPT\tCAF\tBIT12\t\t#\t\tY:\tRESET RUPT. TERMINATE\n\t\tEXTEND\n\t\tWOR\tCHAN13\n\t\tTCF\tTASKOVER\n\nCOUNT'EM\tCAF\tBIT13\t\t# ARE WE IN ATTITUDE-HOLD?\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZF\tRESETRPT\t# YES: SKIP REDESIGNATION LOGIC.\n\n\t\tCA\tL\t\t# NO.\n\t\tMASK \t-AZBIT\n\t\tCCS\tA\n-AZ\t\tCS\tAZEACH\n\t\tADS\tAZINCR1\n\t\tCA\tL\n\t\tMASK\t+AZBIT\n\t\tCCS\tA\n+AZ\t\tCA\tAZEACH\n\t\tADS\tAZINCR1\n\t\tCA\tL\n\t\tMASK\t-ELBIT\n\t\tCCS\tA\n-EL\t\tCS\tELEACH\n\t\tADS\tELINCR1\n\t\tCA\tL\n\t\tMASK\t+ELBIT\n\t\tCCS\tA\n+EL\t\tCA\tELEACH\n\t\tADS\tELINCR1\n\t\tTCF\tRESETRPT\n\n# THESE EQUIVALENCES ARE BASED ON GSOP CHAPTER 4, REVISION 16 OF P64LM\n\n+ELBIT\t\t=\tBIT2\t\t# -PITCH\n-ELBIT\t\t=\tBIT1\t\t# +PITCH\n+AZBIT\t\t=\tBIT5\n-AZBIT\t\t=\tBIT6\n\n# Page 822\nALL4BITS\tOCT\t00063\nAZEACH\t\tDEC\t.03491\t\t# 2 DEGREES\nELEACH\t\tDEC\t.00873\t\t# 1/2 DEGREE\n\n# ****************************************************************\n# R.O.D. TRAP\n# ****************************************************************\n\n\t\tBANK\t20\n\t\tSETLOC\tRODTRAP\n\t\tBANK\n\t\tCOUNT*\t$$/F2DPS\t# ************************\n\nDESCBITS\tMASK\tBIT7\t\t# COME HERE FROM MARKRUPT CODING WITH BIT\n\t\tCCS\tA\t\t#\t7 OR 6 OF CHANNEL 16 IN A; BIT 7 MEANS\n\t\tCS\tTWO\t\t#\t- RATE INCREMENT, BIT 6 + INCREMENT.\n\t\tAD\tONE\n\t\tADS\tRODCOUNT\n\t\tTCF\tRESUME\t\t# TRAP IS RESET WHEN SWITCH IS RELEASED\n\n\t\tBANK\t31\n\t\tSETLOC\tF2DPS*31\n\t\tBANK\n\n\t\tCOUNT*\t$$/F2DPS\n\n# ***********************************************************************************\n# DOUBLE PRECISION ROOT FINDER SUBROUTINE (BY ALLAN KLUMPP)\n# ***********************************************************************************\n#\n#\t                                               N        N-1\n#\tROOTPSRS FINDS ONE ROOT OF THE POWER SERIES A X  + A   X    + ... + A X + A\n#\t                                             N      N-1              1     0\n# USING NEWTON'S METHOD STARTING WITH AN INITIAL GUESS FOR THE ROOT.  THE ENTERING DATA MUST BE AS FOLLOWS:\n#\tA\tSP\tLOC-3\t\tADRES FOR REFERENCING PWR COF TABL\n#\tL\tSP\tN-1\t\tN IS THE DEGREE OF THE POWER SERIES\n#\tMPAC\tDP\tX\t\tINITIAL GUESS FOR ROOT\n#\n#\tLOC-2N\tDP\tA(0)\n#\t\t...\n#\tLOC\tDP\tA(N)\n#\tLOC+2\tSP\tPRECROOT\t PREC RQD OF ROOT (AS FRACT OF 1ST GUESS)\n#\n# Page 823\n# THE DP RESULT IS LEFT IN MPAC UPON EXIT, AND A SP COUNT OF THE ITERATIONS TO CONVERGENCE IS LEFT IN MPAC+2.\n# RETURN IS NORMALLY TO LOC(TC ROOTPSRS)+3.  IF ROOTPSRS FAILS TO CONVERGE TO IN 8 PASSES, RETURN IS TO LOC+1 AND\n# OUTPUTS ARE NOT TO BE TRUSTED.\n#\n# PRECAUTION:  ROOTPSRS MAKES NO CHECKS FOR OVERFLOW OR FOR IMPROPER USAGE.  IMPROPER USAGE COULD\n# PRECLUDE CONVERGENCE OR REQUIRE EXCESSIVE ITERATIONS.  AS A SPECIFIC EXAMPLE, ROOTPSRS FORMS A DERIVATIVE\n# COEFFICIENT TABLE BY MULTIPLYING EACH A(I) BY I, WHERE I RANGES FROM 1 TO N.  IF AN ELEMENT OF THE DERIVATIVE\n# COEFFICIENT TABLE = 1 OR >1 IN MAGNITUDE, ONLY THE EXCESS IS RETAINED.  ROOTPSRS MAY CONVERGE ON THE CORRECT\n# ROOT NONETHELESS, BUT IT MAY TAKE AN EXCESSIVE NUMBER OF ITERATIONS.  THEREFORE THE USER SHOULD RECOGNIZE:\n#\t1.  USER'S RESPONSIBILITY TO ASSUR THAT I X A(I) < 1 IN MAGNITUDE FOR ALL I.\n#\t2.  USER'S RESPONSIBILITY TO ASSURE OVERFLOW WILL NOT OCCUR IN EVALUATING EITHER THE RESIDUAL OR THE DERIVATIVE\n#\t    POWER SERIES.  THIS OVERFLOW WOULD BE PRODUCED BY SUBROUTINE POWRSERS, CALLED BY ROOTPSRS, AND MIGHT NOT\n#\t    PRECLUDE EVENTUAL CONVERGENCE.\n#\t3.  AT PRESENT, ERASABLE LOCATIONS ARE RESERVED ONLY FOR N UP TO 5.  AN N IN EXCESS OF 5 WILL PRODUCE CHAOS.\n#\t    ALL ERASABLES USED BY ROOTPSRS ARE UNSWITCHED LOCATED IN THE REGION FROM MPAC-33 OCT TO MPAC+7.\n#\t4.  THE ITERATION COUNT RETURNED IN MPAC+2 MAY BE USED TO DETECT ABNORMAL PERFORMANCE.\n\n\t\t\t\t\t# STORE ENTERING DATA, INITIALIZE ERASABLES\nROOTPSRS\tEXTEND\n\t\tQXCH\tRETROOT\t\t# RETURN ADRES\n\t\tTS\tPWRPTR\t\t# PWR TABLE POINTER\n\t\tDXCH\tMPAC +3\t\t# PWR TABLE ADRES, N-1\n\t\tCA\tDERTABLL\n\t\tTS\tDERPTR\t\t# DER TABL POINTER\n\t\tTS\tMPAC +5\t\t# DER TABL ADRES\n\t\tCCS\tMPAC +4\t\t# NO POWER SERIES DEGREE 1 OR LESS\n\t\tTS\tMPAC +6\t\t# N-2\n\t\tCA\tZERO\t\t# MODE USED AS ITERATION COUNTER.  MODE\n\t\tTS\tMODE\t\t# MUST BE POS SO ABS WON'T COMP MPAC+3 ETC.\n\n\t\t\t\t\t# COMPUTE CRITERION TO STOP ITERATING\n\t\tEXTEND\n\t\tDCA\tMPAC\t\t# FETCH ROOT GUESS, KEEPING IT IN MPAC\n\t\tDXCH\tROOTPS\t\t# AND IN ROOTPS\n\t\tINDEX\tMPAC +3\t\t# PWR TABLE ADRES\n\t\tCA\t5\t\t# PRECROOT TO A\n\t\tTC\tSHORTMP\t\t# YIELDS DP PRODUCT IN MPAC\n\t\tTC\tUSPRCADR\n\t\tCADR\tABS\t\t# YIELDS ABVAL OF CRITERION ON DX IN MPAC\n\t\tDXCH\tMPAC\n\t\tDXCH\tDXCRIT\t\t# CRITERION\n\n\t\t\t\t\t# SET UP DER COF TABL\n# Page 824\n\t\tEXTEND\n\t\tINDEX\tPWRPTR\n\t\tDCA\t3\n\t\tDXCH\tMPAC\t\t# A(N) TO MPAC\n\n\t\tCA\tMPAC +4\t\t# N-1 TO A\n\nDERCLOOP\tTS\tPWRCNT\t\t# LOOP COUNTER\n\t\tAD\tONE\n\t\tTC\tDMPNSUB\t\t# YIELDS DERCOF = I X A(I) IN MPAC\n\t\tEXTEND\n\t\tINDEX\tPWRPTR\n\t\tDCA\t1\n\t\tDXCH\tMPAC\t\t# (I-1) TO MPAC, FETCHING DERCOF\n\t\tINDEX\tDERPTR\n\t\tDXCH\t3\t\t# DERCOF TO DER TABLE\n\t\tCS\tTWO\n\t\tADS\tPWRPTR\t\t# DECREMENT PWR POINTER\n\t\tCS\tTWO\n\t\tADS\tDERPTR\t\t# DECREMENT DER POINTER\n\t\tCCS\tPWRCNT\n\t\tTCF\tDERCLOOP\n\n\t\t\t\t\t# CONVERGE ON ROOT\nROOTLOOP\tEXTEND\n\t\tDCA\tROOTPS\t\t# FETCH CURRENT ROOT\n\t\tDXCH\tMPAC\t\t# LEAVE IN MPAC\n\t\tEXTEND\n\t\tDCA\tMPAC +5\t\t# LOAD A, L WITH DER TABL ADRES, N-2\n\t\tTC\tPOWRSERS\t# YIELDS DERIVATIVE IN MPAC\n\n\t\tEXTEND\n\t\tDCA\tROOTPS\n\t\tDXCH\tMPAC\t\t# CURRENT ROOT TO MPAC, FETCHING DERIVATIVE\n\t\tDXCH\tBUF\t\t# LEAVE DERIVATIVE IN BUF AS DIVISOR\n\t\tEXTEND\n\t\tDCA\tMPAC +3\t\t# LOAD A, L WITH PWR TABL ADRES, N-1\n\t\tTC\tPOWRSERS\t# YIELDS RESIDUAL IN MPAC\n\n\t\tTC\tUSPRCADR\n\t\tCADR\tDDV/BDDV\t# YIELDS -DX IN MPAC\n\n\t\tEXTEND\n\t\tDCS\tMPAC\t\t# FETCH DX, LEAVING -DX IN MPAC\n\t\tDAS\tROOTPS\t\t# CORRECTED ROOT NOW IN ROOTPS\n\n\t\tTC\tUSPRCADR\n\t\tCADR\tABS\t\t# YIELDS ABS(DX) IN MPAC\n\t\tEXTEND\n# Page 825\n\t\tDCS\tDXCRIT\n\t\tDAS\tMPAC\t\t# ABS(DX)-ABS(DXCRIT) IN MPAC\n\n\t\tCA\tMODE\n\t\tMASK\tBIT4\t\t# KLUMPP SAYS GIVE UP AFTER EIGHT PASSES\n\t\tCCS\tA\nBADROOT\t\tTC\tRETROOT\n\n\t\tINCR\tMODE\t\t# INCREMENT ITERATION COUNTER\n\t\tCCS\tMPAC\t\t# TEST HI ORDER DX\n\t\tTCF\tROOTLOOP\n\t\tTCF\tTESTLODX\n\t\tTCF\tROOTSTOR\nTESTLODX\tCCS\tMPAC +1\t\t# TEST LO ORDER DX\n\t\tTCF\tROOTLOOP\n\t\tTCF\tROOTSTOR\n\t\tTCF\tROOTSTOR\nROOTSTOR\tDXCH\tROOTPS\n\t\tDXCH\tMPAC\n\t\tCA\tMODE\n\t\tTS\tMPAC +2\t\t# STORE SP ITERATION COUNT IN MPAC+2\n\t\tINDEX\tRETROOT\n\t\tTCF\t2\n\nDERTABLL\tADRES\tDERCOFN -3\n\n# ****************************************************************************\n# TRASHY LITTLE SUBROUTINES\n# ****************************************************************************\n\nINTPRETX\tINDEX\tWCHPHASE\t# SET X1 ON THE WAY TO THE INTERPRETER\n\t\tCS\tTARGTDEX\n\t\tINDEX\tFIXLOC\n\t\tTS\tX1\n\t\tTCF\tINTPRET\n\nTDISPSET\tCA\tTTF/8\n\t\tEXTEND\n\t\tMP\tTSCALINV\n\t\tDXCH\tTTFDISP\n\n\t\tCA\tEBANK5\t\t# TREDES BECOMES ZERO TWO PASSES\n\t\tTS\tEBANK\t\t#\tBEFORE TCGFAPPR IS REACHED\n\t\tEBANK=\tTCGFAPPR\n\t\tCA\tTCGFAPPR\n\t\tINCR\tBBANK\n\t\tINCR\tBBANK\n\t\tEBANK=\tTTF/8\n# Page 826\n\t\tAD\tTTF/8\n\t\tEXTEND\n\t\tMP\tTREDESCL\n\t\tAD\t-DEC103\n\t\tAD\tNEGMAX\n\t\tTS\tL\n\t\tCS\tL\n\t\tAD\tL\n\t\tAD\t+DEC99\n\t\tAD\tPOSMAX\n\t\tTS\tTREDES\n\t\tCS\tTREDES\n\t\tADS\tTREDES\n\t\tTC\tQ\n\n1406P00\t\tTC\tPOODOO\n\t\tOCT\t01406\n1406ALM\t\tTC\tALARM\n\t\tOCT\t01406\n\t\tTCF\tRATESTOP\n\n# *********************************************************************\n# SPECIALIZED \"PHASCHNG\" SUBROUTINE\n# *********************************************************************\n\n\t\tEBANK=\tPHSNAME2\nFASTCHNG\tCA\tEBANK3\t\t# SPECIALIZED 'PHASCHNG' ROUTINE\n\t\tXCH\tEBANK\n\t\tDXCH\tL\n\t\tTS\tPHSNAME3\n\t\tLXCH\tEBANK\n\t\tEBANK=\tE2DPS\n\t\tTC\tA\n\n# *************************************************************************************\n# PARAMETER TABLE INDIRECT ADDRESSES\n# *************************************************************************************\n\nRDG\t\t=\tRBRFG\nVDG\t\t=\tVBRFG\nADG\t\t=\tABRFG\nVDG2TTF\t\t=\tVBRFG*\nADG2TTF\t\t=\tABRFG*\nJDG2TTF\t\t=\tJBRFG*\n\n# *************************************************************************************\n# LUNAR LANDING CONSTANTS\n# *************************************************************************************\n\n# Page 827\nTABLTTFL\tADRES\tTABLTTF +3\t# ADDRESS FOR REFERENCING TTF TABLE\nTTFSCALE\t=\tBIT12\nTSCALINV\t=\tBIT4\n-DEC103\t\tDEC\t-103\n+DEC99\t\tDEC\t+99\nTREDESCL\tDEC\t-.08\n180DEGS\t\tDEC\t+180\n1/2DEG\t\tDEC\t+.00278\nPROJMAX\t\tDEC\t.42262 B-3\t# SIN(25')/8 TO COMPARE WITH PROJ\nPROJMIN\t\tDEC\t.25882 B-3\t# SIN(15')/8 TO COMPARE WITH PROJ\nV06N63\t\tVN\t0663\t\t# P63\nV06N64\t\tVN\t0664\t\t# P64\nV06N60\t\tVN\t0660\t\t# P65, P66, P67\n\n\t\tBANK\t22\n\t\tSETLOC\tLANDCNST\n\t\tBANK\n\t\tCOUNT*\t$$/F2DPS\n\nHIGHESTF\t2DEC\t4.34546769 B-12\nGSCALE\t\t2DEC\t100 B-11\n3/8DP\t\t2DEC\t.375\n3/4DP\t\t2DEC\t.750\nDEPRCRIT\t2DEC\t-.02 B-1\n\n# Page 828\n# **************************************************************************\n# **************************************************************************\n"
  },
  {
    "path": "Luminary099/MAIN.agc",
    "content": "$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.agc\t\t\t# pp. 38-53\n$INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc\t# pp. 54-60\n$FLAGWORD_ASSIGNMENTS.agc\t\t\t# pp. 61-88\n\t\t\t\t\t\t# p.  89 is a GAP-generated table\n$ERASABLE_ASSIGNMENTS.agc\t\t\t# pp. 90-152\n$INTERRUPT_LEAD_INS.agc\t\t\t\t# pp. 153-154\n$T4RUPT_PROGRAM.agc\t\t\t\t# pp. 155-189\n$RCS_FAILURE_MONITOR.agc\t\t\t# pp. 190-192\n$DOWNLINK_LISTS.agc\t\t\t\t# pp. 193-205\n$AGS_INITIALIZATION.agc\t\t\t\t# pp. 206-210\n$FRESH_START_AND_RESTART.agc\t\t\t# pp. 211-237\n$RESTART_TABLES.agc\t\t\t\t# pp. 238-243\n$AOTMARK.agc\t\t\t\t\t# pp. 244-261\n$EXTENDED_VERBS.agc\t\t\t\t# pp. 262-300\n$PINBALL_NOUN_TABLES.agc\t\t\t# pp. 301-319\n$LEM_GEOMETRY.agc\t\t\t\t# pp. 320-325\n$IMU_COMPENSATION_PACKAGE.agc\t\t\t# pp. 326-337\n$R63.agc\t\t\t\t\t# pp. 338-341\n$ATTITUDE_MANEUVER_ROUTINE.agc\t\t\t# pp. 342-363\n$GIMBAL_LOCK_AVOIDANCE.agc\t\t\t# p.  364\n$KALCMANU_STEERING.agc\t\t\t\t# pp. 365-369\n$SYSTEM_TEST_STANDARD_LEAD_INS.agc\t\t# pp. 370-372\n$IMU_PERFORMANCE_TEST_2.agc\t\t\t# pp. 373-381\n$IMU_PERFORMANCE_TESTS_4.agc\t\t\t# pp. 382-389\n$PINBALL_GAME_BUTTONS_AND_LIGHTS.agc\t\t# pp. 390-471\n$R60_62.agc\t\t\t\t\t# pp. 472-485\n$S-BAND_ANTENNA_FOR_LM.agc\t\t\t# pp. 486-489\n$RADAR_LEADIN_ROUTINES.agc\t\t\t# pp. 490-491\n$P20-P25.agc\t\t\t\t\t# pp. 492-614\n$P30_P37.agc\t\t\t\t\t# pp. 615-617\n$P32-P35_P72-P75.agc\t\t\t\t# pp. 618-650\n$LAMBERT_AIMPOINT_GUIDANCE.agc\t\t\t# pp. 651-653\n$GROUND_TRACKING_DETERMINATION_PROGRAM.agc\t# pp. 654-657\n$P34-35_P74-75.agc\t\t\t\t# pp. 658-702\n$R31.agc\t\t\t\t\t# pp. 703-708\n$P76.agc\t\t\t\t\t# pp. 709-711\n$R30.agc\t\t\t\t\t# pp. 712-722\n$STABLE_ORBIT.agc\t\t\t\t# pp. 723-730\n$BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc\t# pp. 731-751\n$P40-P47.agc\t\t\t\t\t# pp. 752-784\n$THE_LUNAR_LANDING.agc\t\t\t\t# pp. 785-792\n$THROTTLE_CONTROL_ROUTINES.agc\t\t\t# pp. 793-797\n$LUNAR_LANDING_GUIDANCE_EQUATIONS.agc\t\t# pp. 798-828\n$P70-P71.agc\t\t\t\t\t# pp. 829-837\n$P12.agc\t\t\t\t\t# pp. 838-842\n$ASCENT_GUIDANCE.agc\t\t\t\t# pp. 843-856\n$SERVICER.agc\t\t\t\t\t# pp. 857-897\n$LANDING_ANALOG_DISPLAYS.agc\t\t\t# pp. 898-907\n$FINDCDUW--GUIDAP_INTERFACE.agc\t\t\t# pp. 908-925\n$P51-P53.agc\t\t\t\t\t# pp. 926-983\n$LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc\t# pp. 984-987\n$DOWN_TELEMETRY_PROGRAM.agc\t\t\t# pp. 988-997\n$INTER-BANK_COMMUNICATION.agc\t\t\t# pp. 998-1001\n$INTERPRETER.agc\t\t\t\t# pp. 1002-1094\n$FIXED_FIXED_CONSTANT_POOL.agc\t\t\t# pp. 1095-1099\n$INTERPRETIVE_CONSTANT.agc\t\t\t# pp. 1100-1101\n$SINGLE_PRECISION_SUBROUTINES.agc\t\t# p.  1102\n$EXECUTIVE.agc\t\t\t\t\t# pp. 1103-1116\n$WAITLIST.agc\t\t\t\t\t# pp. 1117-1132\n$LATITUDE_LONGITUDE_SUBROUTINES.agc\t\t# pp. 1133-1139\n$PLANETARY_INERTIAL_ORIENTATION.agc\t\t# pp. 1140-1148\n$MEASUREMENT_INCORPORATION.agc\t\t\t# pp. 1149-1158\n$CONIC_SUBROUTINES.agc\t\t\t\t# pp. 1159-1204\n$INTEGRATION_INITIALIZATION.agc\t\t\t# pp. 1205-1226\n$ORBITAL_INTEGRATION.agc\t\t\t# pp. 1227-1248\n$INFLIGHT_ALIGNMENT_ROUTINES.agc\t\t# pp. 1249-1258\n$POWERED_FLIGHT_SUBROUTINES.agc\t\t\t# pp. 1259-1267\n$TIME_OF_FREE_FALL.agc\t\t\t\t# pp. 1268-1283\n$AGC_BLOCK_TWO_SELF_CHECK.agc\t\t\t# pp. 1284-1293\n$PHASE_TABLE_MAINTENANCE.agc\t\t\t# pp. 1294-1302\n$RESTARTS_ROUTINE.agc\t\t\t\t# pp. 1303-1308\n$IMU_MODE_SWITCHING_ROUTINES.agc\t\t# pp. 1309-1337\n$KEYRUPT_UPRUPT.agc\t\t\t\t# pp. 1338-1340\n$DISPLAY_INTERFACE_ROUTINES.agc\t\t\t# pp. 1341-1373\n$SERVICE_ROUTINES.agc\t\t\t\t# pp. 1374-1380\n$ALARM_AND_ABORT.agc\t\t\t\t# pp. 1381-1385\n$UPDATE_PROGRAM.agc\t\t\t\t# pp. 1386-1396\n$RTB_OP_CODES.agc\t\t\t\t# pp. 1397-1402\n$T6-RUPT_PROGRAMS.agc\t\t\t\t# pp. 1403-1405\n$DAP_INTERFACE_SUBROUTINES.agc\t\t\t# pp. 1406-1409\n$DAPIDLER_PROGRAM.agc\t\t\t\t# pp. 1410-1420\n$P-AXIS_RCS_AUTOPILOT.agc\t\t\t# pp. 1421-1441\n$Q_R-AXIS_RCS_AUTOPILOT.agc\t\t\t# pp. 1442-1459\n$TJET_LAW.agc\t\t\t\t\t# pp. 1460-1469\n$KALMAN_FILTER.agc\t\t\t\t# pp. 1470-1471\n$TRIM_GIMBAL_CNTROL_SYSTEM.agc\t\t\t# pp. 1472-1484\n$AOSTASK_AND_AOSJOB.agc\t\t\t\t# pp. 1485-1506\n$SPS_BACK-UP_RCS_CONTROL.agc\t\t\t# pp. 1507-1510\n\t\t\t\t\t\t# pp. 1511-1743: GAP-generated tables.\n"
  },
  {
    "path": "Luminary099/MEASUREMENT_INCORPORATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tMEASUREMENT_INCORPORATION.agc\n# Purpose:\tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n#\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim DOT lawton AT gmail DOT com>\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1149-1158\n# Mod history:\t2009-05-28 JL\tUpdated from page images.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#    16:27 JULY 14, 1969\n\n# Page 1149\n# INCORP1 -- PERFORMS THE SIX DIMENSIONAL STATE VECTOR DEVIATION FOR POSITION\n# AND VELOCITY OR THE NINE-DIMENSIONAL DEVIATION OF POSITION, VELOCITY, AND\n# RADAR OR LANDMARK BIAS. THE OUTPUT OF THE BVECTOR ROUTINE ALONG WITH THE\n# ERROR TRANSITION MATRIX (W) ARE USED AS INPU TO THE ROUTINE. THE DEVIATION\n# IS OBTAINED BY COMPUTING AN ESTIMATED TRACKING MEASUREMENT FROM THE\n# CURRENT STATE VECTOR AND COMPARING IT WITH AN ACTUAL TRACKING MEASUREMENT\n# AND APPLYING A STATISTICAL WEIGHTING VECTOR.\n#\n# INPUT\n#\t DMENFLG = 0 (6-DIMENSIONAL BVECTOR), =1 (9-DIMENSIONAL)\n#\t       W = ERROR TRANSITION MATRIX 6X6 OR 9X9\n#\tVARIANCE = VARIANCE (SCALAR)\n#\t  DELTAQ = MEASURED DEVIATION (SCALAR)\n#\t BVECTOR = 6 OR 9 DIMENSIONAL BVECTOR\n#\n# OUTPUT\n#\t  DELTAX = STATE VECTOR DEVIATIONS 6 OR 9 DIMENSIONAL\n#\t      ZI = VECTOR USED FOR THE INCORPORATION 6 OR 9 DIMENSIONAL\n#\t   GAMMA = SCALAR\n#\t   OMEGA = OMEGA WEIGHTING VECTOR 6 OR 9 DIMENSIONAL\n#\n# CALLING SEQUENCE\n#\tL\tCALL \tINCORP1\n#\n# NORMAL EXIT\n#\tL+1 OF CALLING SEQUENCE\n\n\t\tBANK\t37\n\t\tSETLOC\tMEASINC\n\t\tBANK\n\n\t\tCOUNT*\t$$/INCOR\n\n\t\tEBANK=\tW\n\nINCORP1\t\tSTQ\n\t\t\tEGRESS\n\t\tAXT,1\tSSP\n\t\t\t54D\n\t\t\tS1\n\t\t\t18D\t\t# IX1 = 54 \tS1= 18\n\t\tAXT,2\tSSP\n\t\t\t18D\n\t\t\tS2\n\t\t\t6\t\t# IX2 = 18\tS2=6\nZ123\t\tVLOAD\tMXV*\n\t\t\tBVECTOR\t\t# BVECTOR (0)\n\t\t\tW +54D,1\n\t\tSTORE\tZI +18D,2\n\t\tVLOAD\n\t\t\tBVECTOR +6\t# BVECTOR (1)\n# Page 1150\n\t\tMXV*\tVAD*\n\t\t\tW +108D,1\n\t\t\tZI +18D,2\n\t\tSTORE\tZI +18D,2\n\t\tVLOAD\n\t\t\tBVECTOR +12D\t# BVECTOR (2)\n\t\tMXV*\tVAD*\n\t\t\tW +162D,1\n\t\t\tZI +18D,2\t# B(0)*W+B(1)*(W+54)+B(2)*(W+108) FIRST PASS\n\t\tSTORE\tZI +18D,2\t# ZI THEN Z2 THEN Z3\n\t\tTIX,1\n\t\t\tINCOR1\nINCOR1\t\tTIX,2\tBON\n\t\t\tZ123\t\t# LOOP FOR Z1,Z2,Z3\n\t\t\tDMENFLG\n\t\t\tINCOR1A\n\t\tVLOAD\n\t\t\tZEROVECS\n\t\tSTORE\tZI +12D\nINCOR1A\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tZI\n\t\tVSQ\tRTB\n\t\t\tTPMODE\n\t\tPDVL\tVSQ\n\t\t\tZI +6\n\t\tRTB\tTAD\n\t\t\tTPMODE\n\t\tPDVL\tVSQ\n\t\t\tZI +12D\n\t\tRTB\tTAD\n\t\t\tTPMODE\n\t\tTAD\tAXT,2\n\t\t\tVARIANCE\n\t\t\t0\n\t\tSTORE\tTRIPA\t\t# ZI*2 + Z2*2 + Z3*2 + VARIANCE\n\t\tTLOAD\tBOV\n\t\t\tVARIANCE\t# CLEAR OVFIND\n\t\t\t+1\n\t\tSTORE\tTEMPVAR\t\t# TEMP STORAGE FOR VARIANCE\n\t\tBZE\n\t\t\tINCOR1C\nINCOR1B\t\tSL2\tBOV\n\t\t\tINCOR1C\n\t\tSTORE\tTEMPVAR\n\t\tINCR,2\tGOTO\n\t\tDEC\t1\n\t\t\tINCOR1B\nINCOR1C\t\tTLOAD\tROUND\n\t\t\tTRIPA\n# Page 1151\n\t\tDMP\tSQRT\n\t\t\tTEMPVAR\n\t\tSL*\tTAD\n\t\t\t0,2\n\t\t\tTRIPA\n\t\tNORM\tINCR,2\n\t\t\tX2\n\t\tDEC\t-2\n\t\tSXA,2\tAXT,2\n\t\t\tNORMGAM\t\t# NORMALIZATION COUNT -2 FOR GAMMA\n\t\t\t162D\n\t\tBDDV\tSETPD\n\t\t\tDP1/4TH\n\t\t\t0\n\t\tSTORE\tGAMMA\n\t\tTLOAD\tNORM\n\t\t\tTRIPA\n\t\t\tX1\n\t\tDLOAD\tPDDL\t\t# PD 0-1 = NORM (A)\n\t\t\tMPAC\n\t\t\tDELTAQ\n\t\tNORM\n\t\t\tS1\n\t\tXSU,1\tSR1\n\t\t\tS1\n\t\tDDV\tPUSH\t\t# PD 0-1 = DELTAQ/A\n\t\tGOTO\n\t\t\tNEWZCOMP\n -3\t\tSSP\n\t\t\tS2\n\t\t\t54D\nINCOR2\t\tVLOAD\tVXM*\t\t# COMPUT OMEGA1,2,3\n\t\t\tZI\n\t\t\tW +162D,2\n\t\tPUSH\tVLOAD\n\t\t\tZI +6\n\t\tVXM*\tVAD\n\t\t\tW +180D,2\n\t\tPUSH\tVLOAD\n\t\t\tZI +12D\n\t\tVXM*\tVAD\n\t\t\tW +198D,2\n\t\tPUSH\tTIX,2\t\t# PD 2-7=OMEGA1, 8-13=OMEGA2, 14-19=OMEGA3\n\t\t\tINCOR2\n\t\tVLOAD\tSTADR\n\t\tSTORE\tOMEGA +12D\n\t\tVLOAD\tSTADR\n\t\tSTORE\tOMEGA +6\n\t\tVLOAD\tSTADR\n\t\tSTORE\tOMEGA\n# Page 1152\n\t\tBON\tVLOAD\n\t\t\tDMENFLG\n\t\t\tINCOR2AB\n\t\t\tZEROVECS\n\t\tSTORE\tOMEGA +12D\nINCOR2AB\tAXT,2\tSSP\n\t\t\t18D\n\t\t\tS2\n\t\t\t6\nINCOR3\t\tVLOAD*\n\t\t\tOMEGA +18D,2\n\t\tVXSC\tVSL*\n\t\t\t0\t\t# DELTAQ/A\n\t\t\t0,1\n\t\tSTORE\tDELTAX +18D,2\n\t\tTIX,2\tVLOAD\n\t\t\tINCOR3\n\t\t\tDELTAX +6\n\t\tVSL3\n\t\tSTORE\tDELTAX +6\n\t\tGOTO\n\t\t\tEGRESS\n\n# Page 1153\n# INCORP2 - INCORPORATES THE COMPUTED STATE VECTOR DEVIATIONS INTO THE\n# ESTIMATED STATE VECTOR. THE STATE VECTOR UPDATED MAY BE FOR EITHER THE\n# LEM OR THE CSM. DETERMINED BY FLAG VEHUPFLG. (ZERO = LEM) (1 = CSM)\n#\n# INPUT\n#\tPERMANENT STATE VECTOR FOR EITHER THE LEM OR CSM\n#\tVEHUPFLG = UPDATE VEHICLE 0=LEM  1=CSM\n#\tW = ERROR TRANSITION MATRIX\n#\tDELTAX = COMPUTED STATE VECTOR DEVIATIONS\n# \tDMENFLG = SIZE OF W MATRIX (ZERO=6X6) (1=9X9)\n#\tGAMMA = SCALAR FOR INCORPORATION\n# \tZI = VECTOR USED IN INCORPORATION\n#\tOMEGA = WEIGHTING VECTOR\n#\n# OUTPUT\n#\tUPDATED PERMANENT STATE VECTOR\n#\n# CALLING SEQUENCE\n#\tL\tCALL\tINCORP2\n#\n# NORMAL EXIT\n#\tL+1 OF CALLING SEQUENCE\n#\n\n\t\tSETLOC\tMEASINC1\n\t\tBANK\n\n\t\tCOUNT*\t$$/INCOR\n\nINCORP2\t\tSTQ\tCALL\n\t\t\tEGRESS\n\t\t\tINTSTALL\n\t\tVLOAD\tVXSC\t\t# CALC. GAMMA * OMEGA1,2,3\n\t\t\tOMEGA\n\t\t\tGAMMA\n\t\tSTOVL\tOMEGAM1\n\t\t\tOMEGA +6\n\t\tVXSC\n\t\t\tGAMMA\n\t\tSTOVL\tOMEGAM2\n\t\t\tOMEGA +12D\n\t\tVXSC\n\t\t\tGAMMA\n\t\tSTORE\tOMEGAM3\n\t\tEXIT\n\t\tCAF\t54DD\t\t# INITIAL IX 1 SETTING FOR W MATRIX\n\t\tTS\tWIXA\n\t\tTS\tWIXB\n\t\tCAF\tZERO\n\t\tTS\tZIXA\t\t# INITIAL IX 2 SETTING FOR Z COMPONENT\n\t\tTS\tZIXB\nFAZA\t\tTC\tPHASCHNG\n# Page 1154\n\t\tOCT\t04022\n\t\tTC\tUPFLAG\n\t\tADRES\tREINTFLG\nFAZA1\t\tCA\tWIXB\t\t# START FIRST PHASE OF INCORP2\n\t\tTS\tWIXA\t\t# TO UPDATE 6 OR 9 DIM. W MATRIX IN TEMP\n\t\tCA\tZIXB\n\t\tTS\tZIXA\n\t\tTC\tINTPRET\n\t\tLXA,1\tLXA,2\n\t\t\tWIXA\n\t\t\tZIXA\n\t\tSSP\tDLOAD*\n\t\t\tS1\n\t\t\t6\n\t\t\tZI,2\n\t\tDCOMP\tNORM\t\t# CALC UPPER 3X9 PARTITION OF W MATRIX\n\t\t\tS2\n\t\tVXSC\tXCHX,2\n\t\t\tOMEGAM1\n\t\t\tS2\n\t\tLXC,2\tXAD,2\n\t\t\tX2\n\t\t\tNORMGAM\n\t\tVSL*\tXCHX,2\n\t\t\t0,2\n\t\t\tS2\n\t\tVAD*\n\t\t\tW +54D,1\n\t\tSTORE\tHOLDW\n\t\tDLOAD*\tDCOMP\t\t# CALC MIDDLE 3X9 PARTITION OF W MATRIX\n\t\t\tZI,2\n\t\tNORM\tVXSC\n\t\t\tS2\n\t\t\tOMEGAM2\n\t\tXCHX,2\tLXC,2\n\t\t\tS2\n\t\t\tX2\n\t\tXAD,2\tVSL*\n\t\t\tNORMGAM\n\t\t\t0,2\n\t\tXCHX,2\tVAD*\n\t\t\tS2\n\t\t\tW +108D,1\n\t\tSTORE\tHOLDW +6\n\t\tBOFF\n\t\t\tDMENFLG\t\t# BRANCH IF 6 DIMENSIONAL\n\t\t\tFAZB\n\t\tDLOAD*\tDCOMP\t\t# CALC LOWER 3X9 PARTITION OF W MATRIX\n\t\t\tZI,2\n\t\tNORM\tVXSC\n# Page 1155\n\t\t\tS2\n\t\t\tOMEGAM3\n\t\tXCHX,2\tLXC,2\n\t\t\tS2\n\t\t\tX2\n\t\tXAD,2\tVSL*\n\t\t\tNORMGAM\n\t\t\t0,2\n\t\tXCHX,2\tVAD*\n\t\t\tS2\n\t\t\tW +162D,1\n\t\tSTORE\tHOLDW +12D\nFAZB\t\tCALL\n\t\t\tGRP2PC\n\t\tEXIT\nFAZB1\t\tCA\tWIXA\t\t# START 2ND PHASE OF INCORP2 TO TRANSFER\n\t\tAD\t6DD\t\t# \tTEMP REG TO PERM W MATRIX\n\t\tTS\tWIXB\n\t\tCA\tZIXA\n\t\tAD\tMINUS2\n\t\tTS\tZIXB\n\t\tTC\tINTPRET\n\t\tLXA,1\tSSP\n\t\t\tWIXA\n\t\t\tS1\n\t\t\t6\n\t\tVLOAD\n\t\t\tHOLDW\n\t\tSTORE\tW +54D,1\n\t\tVLOAD\n\t\t\tHOLDW +6\n\t\tSTORE\tW +108D,1\n\t\tBOFF\tVLOAD\n\t\t\tDMENFLG\n\t\t\tFAZB5\n\t\t\tHOLDW +12D\n\t\tSTORE\tW +162D,1\nFAZB2\t\tTIX,1\tGOTO\n\t\t\t+2\n\t\t\tFAZC\t\t# DONE WITH W MATRIX.  UPDATE STATE VECTOR\n\t\tRTB\n\t\t\tFAZA\nFAZB5\t\tSLOAD\tDAD\n\t\t\tZIXB\n\t\t\t12DD\n\t\tBHIZ\tGOTO\n\t\t\tFAZC\n\t\t\tFAZB2\nFAZC\t\tCALL\n\t\t\tGRP2PC\n# Page 1156\n\t\tVLOAD\tVAD\t\t# START 3RD PHASE OF INCORP2\n\t\t\tX789\t\t# 7TH, 8TH, 9TH COMPONENT OF STATE VECTOR\n\t\t\tDELTAX +12D\t# INCORPORATION FOR X789\n\t\tSTORE\tTX789\n\t\tBON\tRTB\n\t\t\tVEHUPFLG\n\t\t\tDOCSM\n\t\t\tMOVEPLEM\nFAZAB\t\tBOVB\tAXT,2\n\t\t\tTCDANZIG\n\t\t\t0\n\t\tBOFF\tAXT,2\n\t\t\tMOONTHIS\n\t\t\t+2\n\t\t\t2\n\t\tVLOAD\tVSR*\n\t\t\tDELTAX\t\t# B27 IF MOON ORBIT, B29 IF EARTH\n\t\t\t0 -7,2\n\t\tVAD\tBOV\n\t\t\tTDELTAV\n\t\t\tFAZAB1\n\t\tSTOVL\tTDELTAV\n\t\t\tDELTAX +6\t# B5 IF MOON ORBIT, B7 IF EARTH\n\t\tVSR*\tVAD\n\t\t\t0 -4,2\n\t\t\tTNUV\n\t\tBOV\n\t\t\tFAZAB2\n\t\tSTCALL\tTNUV\n\t\t\tFAZAB3\nFAZAB1\t\tVLOAD\tVAD\n\t\t\tRCV\n\t\t\tDELTAX\n\t\tSTORE\tRCV\nFAZAB2\t\tVLOAD\tVAD\n\t\t\tVCV\n\t\t\tDELTAX +6\n\t\tSTORE\tVCV\n\t\tSXA,2\tCALL\n\t\t\tPBODY\n\t\t\tRECTIFY\nFAZAB3\t\tCALL\n\t\t\tGRP2PC\n\t\tBON\tRTB\n\t\t\tVEHUPFLG\n\t\t\tDOCSM1\n\t\t\tMOVEALEM\n\t\tCALL\n\t\t\tSVDWN2\t\t# STORE DOWNLINK STATE VECTOR\nFAZAB4\t\tCALL\n# Page 1157\n\t\t\tGRP2PC\t\t# PHASE CHANGE\n\t\tBOFF\tVLOAD\n\t\t\tDMENFLG\n\t\t\tFAZAB5\t\t# 6 DIMENSIONAL\n\t\t\tTX789\t\t# 9 DIMENSIONAL\n\t\tSTORE\tX789\nFAZAB5\t\tLXA,1\tSXA,1\n\t\t\tEGRESS\n\t\t\tQPRET\n\t\tEXIT\n\t\tTC\tPOSTJUMP\t# EXIT\n\t\tCADR\tINTWAKE\nDOCSM\t\tRTB\tGOTO\n\t\t\tMOVEPCSM\n\t\t\tFAZAB\nDOCSM1\t\tRTB\tCALL\n\t\t\tMOVEACSM\n\t\t\tSVDWN1\t\t# STORE DOWNLINK STATE VECTOR\n\t\tGOTO\n\t\t\tFAZAB4\nZEROD\t\t=\tZEROVECS\n54DD\t\tDEC\t54\n6DD\t\tDEC\t-6\n12DD\t\tDEC\t12\n\n\t\tSETLOC\tRENDEZ\n\t\tBANK\n\t\tCOUNT*\t$$/INCOR\n\nNEWZCOMP\tVLOAD\tABVAL\n\t\t\tZI\n\t\tSTOVL\tNORMZI\n\t\t\tZI +6\n\t\tABVAL\tPUSH\n\t\tDSU\tBMN\n\t\t\tNORMZI\n\t\t\t+3\n\t\tDLOAD\tSTADR\n\t\tSTORE\tNORMZI\n\t\tVLOAD\tABVAL\n\t\t\tZI +12D\n\t\tPUSH\tDSU\n\t\t\tNORMZI\n\t\tBMN\tDLOAD\n\t\t\t+3\n\t\tSTADR\n\t\tSTORE\tNORMZI\t\t# LARGEST ABVAL\n\t\tDLOAD\tSXA,1\n\t\t\tNORMZI\n\t\t\tNORMZI\t\t# SAVE X1\n\t\tNORM\tINCR,1\n# Page 1158\n\t\t\tX1\n\t\tDEC\t2\n\t\tVLOAD\tVSL*\n\t\t\tZI\n\t\t\t0,1\n\t\tSTOVL\tZI\n\t\t\tZI +6\n\t\tVSL*\n\t\t\t0,1\n\t\tSTOVL\tZI +6\n\t\t\tZI +12D\n\t\tVSL*\tSXA,1\n\t\t\t0,1\n\t\t\tNORMZI +1\t# SAVE SHIFT\n\t\tSTORE\tZI +12D\n\t\tLXA,1\tXSU,1\n\t\t\tNORMGAM\n\t\t\tNORMZI +1\n\t\tXSU,1\n\t\t\tNORMZI +1\n\t\tSXA,1\tLXC,1\n\t\t\tNORMGAM\n\t\t\tNORMZI +1\n\t\tXAD,1\tSETPD\n\t\t\tNORMZI\n\t\t\t2D\n\t\tGOTO\n\t\t\tINCOR2 -3\nNORMZI\t\t=\t36D\n\n\n"
  },
  {
    "path": "Luminary099/ORBITAL_INTEGRATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tORBITAL_INTEGRATION.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1227-1248\n# Mod history:\t2009-05-26 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-05 RSB\tFixed 3 typos.\n#\t\t2009-06-06 RSB\tPage 1248 was missing entirely for some reason.\n#\t\t2009-06-07 RSB\tCorrected a typo.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1227\n# ORBITAL INTEGRATION\n\n# DELETE\n\t\tBANK\t13\n\t\tSETLOC\tORBITAL\n\t\tBANK\n\t\tCOUNT*\t$$/ORBIT\n\n# DELETE\nKEPPREP\t\tLXA,2\tSETPD\n\t\t\tPBODY\n\t\t\t0\n\t\tDLOAD*\tSQRT\t\t# SQRT(MU) (+18 OR +15)\t\t0D\tPL 2D\n\t\t\tMUEARTH,2\n\t\tPDVL\tUNIT\t\t#\t\t\t\t\tPL 8D\n\t\t\tRCV\n\t\tPDDL\tNORM\t\t# NORM R (+29 OR +27 - N1)\t2D\tPL 4D\n\t\t\t36D\n\t\t\tX1\n\t\tPDVL\n\t\tDOT\tPDDL\t\t# F*SQRT(MU) (+7 OR +5) \t4D\tPL 6D\n\t\t\tVCV\n\t\t\tTAU.\t\t# (+28)\n\t\tDSU\tNORM\n\t\t\tTC\n\t\t\tS1\n\t\tSR1\n\t\tDDV\tPDDL\n\t\t\t2D\n\t\tDMP\tPUSH\t\t# FS (+6 +N1-N2) \t\t6D\tPL 8D\n\t\t\t4D\n\t\tDSQ\tPDDL\t\t# (FS)SQ (+12 +2(N1-N2))\t8D\tPL 10D\n\t\t\t4D\n\t\tDSQ\tPDDL*\t\t# SSQ/MU (-20R +2(N1-N2))\t10D\tPL 12D\n\t\t\tMUEARTH,2\n\t\tSR3\tSR4\n\t\tPDVL\tVSQ\t\t# PREALIGN MU (+43 OR +37) \t12D\tPL 14D\n\t\t\tVCV\n\t\tDMP\tBDSU\t\t#\t\t\t\t\tPL 12D\n\t\t\t36D\n\t\tDDV\tDMP\t\t#\t\t\t\t\tPL 10D\n\t\t\t2D\t\t# -(1/R-ALPHA) (+12 +3N1-2N2)\n\t\tDMP\tSL*\n\t\t\tDP2/3\n\t\t\t0 \t-3,1\t# 10L(1/R-ALPHA) (+13 +2(N1-N2))\n\t\tXSU,1\tDAD\t\t# 2(FS)SQ - ETCETERA\t\t\tPL 8D\n\t\t\tS1\t\t# X1 = N2-N1\n\t\tSL*\tDSU\t\t# -FS+2(FS)SQ ETC (+6 +N1-N2)\t\tPL 6D\n\t\t\t8D,1\n\t\tDMP\tDMP\n\t\t\t0D\n\t\t\t4D\n\t\tSL*\tSL*\n# Page 1228\n\t\t\t8D,1\n\t\t\t0,1\t\t# S(-FS(1-2FS)-1/6...) (+17 OR +16)\n\t\tDAD\tPDDL\t\t#\t\t\t\t\tPL 6D\n\t\t\tXKEP\n\t\tDMP\tSL*\t\t# S(+17 OR +16)\n\t\t\t0D\n\t\t\t1,1\n\t\tBOVB\tDAD\n\t\t\tTCDANZIG\n\t\tSTADR\n\t\tSTORE\tXKEPNEW\n\t\tSTQ\tAXC,1\n\t\t\tKEPRTN\n\t\tDEC\t10\n\t\tBON\tAXC,1\n\t\t\tMOONFLAG\n\t\t\tKEPLERN\n\t\tDEC\t2\n\t\tGOTO\n\t\t\tKEPLERN\n\n# Page 1229\nFBR3\t\tLXA,1\tSSP\n\t\t\tDIFEQCNT\n\t\t\tS1\n\t\tDEC\t-13\n\t\tDLOAD\tSR\n\t\t\tDT/2\n\t\t\t9D\n\t\tTIX,1\tROUND\n\t\t\t+1\n\t\tPUSH\tDAD\n\t\t\tTC\n\t\tSTODL\tTAU.\n\t\tDAD\n\t\t\tTET\n\t\tSTCALL\tTET\n\t\t\tKEPPREP\n\n# Page 1230\n# AGC ROUTINE TO COMPUTE ACCELERATION COMPONENTS.\n\nACCOMP\t\tLXA,1\tLXA,2\n\t\t\tPBODY\n\t\t\tPBODY\n\t\tVLOAD\n\t\t\tZEROVEC\n\t\tSTOVL\tFV\n\t\t\tALPHAV\n\t\tVSL*\tVAD\n\t\t\t0 \t-7,2\n\t\t\tRCV\n\t\tSTORE\tBETAV\n\t\tBOF\tXCHX,2\n\t\t\tDIM0FLAG\n\t\t\t+5\n\t\t\tDIFEQCNT\n\t\tSTORE\tVECTAB,2\n\t\tXCHX,2\n\t\t\tDIFEQCNT\n\t\tVLOAD\tUNIT\n\t\t\tALPHAV\n\t\tSTODL\tALPHAV\n\t\t\t36D\n\t\tSTORE\tALPHAM\n\t\tCALL\n\t\t\tGAMCOMP\n\t\tVLOAD\tSXA,1\n\t\t\tBETAV\n\t\t\tS2\n\t\tSTODL\tALPHAV\n\t\t\tBETAM\n\t\tSTORE\tALPHAM\n\t\tBOF\tDLOAD\n\t\t\tMIDFLAG\n\t\t\tOBLATE\n\t\t\tTET\n\t\tCALL\n\t\t\tLSPOS\n\t\tAXT,2\tLXA,1\n\t\t\t2\n\t\t\tS2\n\t\tBOF\n\t\t\tMOONFLAG\n\t\t\t+3\n\t\tVCOMP\tAXT,2\n\t\t\t0\n\t\tSTORE\tBETAV\n\t\tSTOVL\tRPQV\n# Page 1231\n\t\t\t2D\n\t\tSTORE\tRPSV\n\t\tSLOAD\tDSU\n\t\t\tMODREG\n\t\t\tOCT27\n\t\tBHIZ\tBOF\n\t\t\t+3\n\t\t\tDIM0FLAG\n\t\t\tGETRPSV\n\t\tVLOAD\tVXSC\n\t\t\tALPHAV\n\t\t\tALPHAM\n\t\tVSR*\tVSU\n\t\t\t1,2\n\t\t\tBETAV\n\t\tXCHX,2\n\t\t\tDIFEQCNT\n\t\tSTORE\tVECTAB \t+6,2\n\t\tSTORE\tRQVV\n\t\tXCHX,2\n\t\t\tDIFEQCNT\nGETRPSV\t\tVLOAD\tINCR,1\n\t\t\tRPQV\n\t\t\t4\n\t\tCLEAR\tBOF\n\t\t\tRPQFLAG\n\t\t\tMOONFLAG\n\t\t\t+5\n\t\tVSR\tVAD\n\t\t\t9D\n\t\t\tRPSV\n\t\tSTORE\tRPSV\n\t\tCALL\n\t\t\tGAMCOMP\n\t\tAXT,2\tINCR,1\n\t\t\t4\n\t\t\t4\n\t\tVLOAD\n\t\t\tRPSV\n\t\tSTCALL\tBETAV\n\t\t\tGAMCOMP\n\t\tGOTO\n\t\t\tOBLATE\nGAMCOMP\t\tVLOAD\tVSR1\n\t\t\tBETAV\n\t\tVSQ\tSETPD\n\t\t\t0\n\t\tNORM\tROUND\n\t\t\t31D\n\t\tPDDL\tNORM\t\t# NORMED B SQUARED TO PD LIST\n# Page 1232\n\t\t\tALPHAM\t\t# NORMALIZE (LESS ONE) LENGTH OF ALPHA\n\t\t\t32D\t\t# SAVING NORM SCALE FACTOR IN X1\n\t\tSR1\tPDVL\n\t\t\tBETAV\t\t# C(PDL+2) = ALMOST NORMED ALPHA\n\t\tUNIT\n\t\tSTODL\tBETAV\n\t\t\t36D\n\t\tSTORE\tBETAM\n\t\tNORM\tBDDV\t\t# FORM NORMALIZE QUOTIEN ALPHAM/BETAM\n\t\t\t33D\n\t\tSR1R\tPUSH\t\t# C(PDL+2) = ALMOST NORMALIZE RHO.\n\t\tDLOAD*\n\t\t\tASCALE,1\n\t\tSTORE\tS1\n\t\tXCHX,2\tXAD,2\n\t\t\tS1\n\t\t\t32D\n\t\tXSU,2\tDLOAD\n\t\t\t33D\n\t\t\t2D\n\t\tSR*\tXCHX,2\n\t\t\t0 \t-1,2\n\t\t\tS1\n\t\tPUSH\tSR1R\t\t# RHO/4 TO 4D\n\t\tPDVL\tDOT\n\t\t\tALPHAV\n\t\t\tBETAV\n\t\tSL1R\tBDSU\t\t# (RHO/4) - 2(ALPHAV/2.BETAV/2)\n\t\tPUSH\tDMPR\t\t# TO PDL+6\n\t\t\t4\n\t\tSL1\n\t\tPUSH\tDAD\n\t\t\tDQUARTER\n\t\tPUSH\tSQRT\n\t\tDMPR\tPUSH\n\t\t\t10D\n\t\tSL1\tDAD\n\t\t\tDQUARTER\n\t\tPDDL\tDAD\t\t# (1/4)+2((Q+1)/4)\tTO PD+14D\n\t\t\t10D\n\t\t\tHALFDP\n\t\tDMPR\tSL1\n\t\t\t8D\n\t\tDAD\tDDV\n\t\t\tTHREE/8\n\t\t\t14D\n\t\tDMPR\tVXSC\n\t\t\t6\n\t\t\tBETAV\t\t#\t\t_\n\t\tPDVL\tVSR3\t\t# (G/2)(C(PD+4))B/2 TO PD+16D\n# Page 1233\n\t\t\tALPHAV\n\t\tVAD\tPUSH\t\t# A12 + C(PD+16D) TO PD+16D\n\t\tDLOAD\tDMP\n\t\t\t0\n\t\t\t12D\n\t\tNORM\tROUND\n\t\t\t30D\n\t\tBDDV\tDMP*\n\t\t\t2\n\t\t\tMUEARTH,2\n\t\tDCOMP\tVXSC\n\t\tXCHX,2\tXAD,2\n\t\t\tS1\n\t\t\tS2\n\t\tXSU,2\tXSU,2\n\t\t\t30D\n\t\t\t31D\n\t\tBOV\t\t\t# CLEAR OVIND\n\t\t\t+1\n\t\tVSR*\tXCHX,2\n\t\t\t0\t-1,2\n\t\t\tS1\n\t\tVAD\n\t\t\tFV\n\t\tSTORE\tFV\n\t\tBOV\tRVQ\t\t# RETURN IF NO OVERFLOW\n\t\t\t+1\nGOBAQUE\t\tVLOAD\tABVAL\n\t\t\tTDELTAV\n\t\tBZE\n\t\t\tINT-ABRT\n\t\tDLOAD\tSR\n\t\t\tH\n\t\t\t9D\n\t\tPUSH\tBDSU\n\t\t\tTC\n\t\tSTODL\tTAU.\n\t\t\tTET\n\t\tDSU\tSTADR\n\t\tSTCALL\tTET\n\t\t\tKEPPREP\n\t\tCALL\n\t\t\tRECTIFY\n\t\tSETGO\n\t\t\tRPQFLAG\n\t\t\tTESTLOOP\n\nINT-ABRT\tEXIT\n\t\tTC\tPOODOO\n\t\tOCT\t00430\n\n# Page 1234\n# THE OBLATE ROUTINE COMPUTES THE ACCELERATION DUE TO OBLATENESS.  IT USES THE UNIT OF THE VEHICLE\n# POSITION VECTOR FOUND IN ALPHAV AND THE DISTANCE TO THE CENTER IN ALPHAM.  THIS IS ADDED TO THE SUM OF THE\n# DISTURBING ACCELERATIONS IN FV AND THE PROPER DIFEQ STAGE IS CALLED VIA X1.\n\nOBLATE\t\tLXA,2\tDLOAD\n\t\t\tPBODY\n\t\t\tALPHAM\n\t\tSETPD\tDSU*\n\t\t\t0\n\t\t\tRDE,2\n\t\tBPL\tBOF\t\t# GET URPV\n\t\t\tNBRANCH\n\t\t\tMOONFLAG\n\t\t\tCOSPHIE\n\t\tVLOAD\tPDDL\n\t\t\tALPHAV\n\t\t\tTET\n\t\tPDDL\tCALL\n\t\t\t3/5\n\t\t\tR-TO-RP\n\t\tSTORE\tURPV\n\t\tVLOAD\tVXV\n\t\t\t504LM\n\t\t\tZUNIT\n\t\tVAD\tVXM\n\t\t\tZUNIT\n\t\t\tMMATRIX\n\t\tUNIT\t\t\t# POSSIBLY UNNECESSARY\nCOMTERM\t\tSTORE\tUZ\n\t\tDLOAD\tDMPR\n\t\t\tCOSPHI/2\n\t\t\t3/32\n\t\tPDDL\tDSQ\t\t# P2/64 TO PD0\n\t\t\tCOSPHI/2\n\t\tDMPR\tDSU\n\t\t\t15/16\n\t\t\t3/64\n\t\tPUSH\tDMPR\t\t# P3/32 TO PD2\n\t\t\tCOSPHI/2\n\t\tDMP\tSL1R\n\t\t\t7/12\n\t\tPDDL\tDMPR\n\t\t\t0\n\t\t\t2/3\n\t\tBDSU\tPUSH\t\t# P4/128 TO PD4\n\t\tDMPR\tDMPR\n\t\t\tCOSPHI/2\t# BEGIN COMPUTING P5/1024\n\t\t\t9/16\n\t\tPDDL\tDMPR\n\t\t\t2\n\t\t\t5/128\n# Page 1235\n\t\tBDSU\n\t\tDMP*\n\t\t\tJ4REQ/J3,2\n\t\tDDV\tDAD\t\t#\t       -3\n\t\t\tALPHAM\t\t# (((P5/256)B 2  /R+P4/32)  /R+P3/8)ALPHAV\n\t\t\t4\t\t#\t     4\t\t   3\n\t\tDMPR*\tDDV\n\t\t\t2J3RE/J2,2\n\t\t\tALPHAM\n\t\tDAD\tVXSC\n\t\t\t2\n\t\t\tALPHAV\n\t\tSTODL\tTVEC\n\t\tDMP*\tSR1\n\t\t\tJ4REQ/J3,2\n\t\tDDV\tDAD\n\t\t\tALPHAM\n\t\tDMPR*\tSR3\n\t\t\t2J3RE/J2,2\n\t\tDDV\tDAD\n\t\t\tALPHAM\n\t\tVXSC\tVSL1\n\t\t\tUZ\n\t\tBVSU\n\t\t\tTVEC\n\t\tSTODL\tTVEC\n\t\t\tALPHAM\n\t\tNORM\tDSQ\n\t\t\tX1\n\t\tDSQ\tNORM\n\t\t\tS1\t\t#\t  4\n\t\tPUSH\tBDDV*\t\t# NORMED R  TO 0D\n\t\t\tJ2REQSQ,2\n\t\tVXSC\tBOV\n\t\t\tTVEC\n\t\t\t+1\t\t# (RESET OVERFLOW INDICATOR)\n\t\tXAD,1\tXAD,1\n\t\t\tX1\n\t\t\tX1\n\t\tXAD,1\tVSL*\n\t\t\tS1\n\t\t\t0 -22D,1\n\t\tVAD\tBOV\n\t\t\tFV\n\t\t\tGOBAQUE\n\t\tSTCALL\tFV\n\t\t\tQUALITY1\n\nQUALITY3\tDSQ\t\t\t# J22 TERM X R**4 IN 2D, SCALED B61\n\t\t\t\t\t# AS VECTOR.\n# Page 1236\n\t\tPUSH\tDMP\t\t# STORE COSPHI**2 SCALED B2 IN 8D\n\t\t\t5/8\t\t# 5 SCALED B3\n\t\tPDDL\tSR2\t\t# PUT 5 COSPHI**2, D5, IN 8D.  GET\n\t\t\t\t\t# COSPHI**2 D2 FROM 8D\n\t\tDAD\tBDSU\t\t# END UP WITH (1-7 COSPHI**2), B5\n\t\t\t8D\t\t# ADDING COSPHI**2 B4 SAME AS COSPHI**2\n\t\t\t\t\t# X 2 D5\n\t\t\tD1/32\t\t# 1 SCALED B5\n\t\tDMP\tDMP\n\t\t\tURPV\t\t# X COMPONENT\n\t\t\t5/8\t\t# 5 SCALED B3\n\t\tVXSC\tVSL5\t\t# AFTER SHIFT, SCALED B5\n\t\t\tURPV\t\t# VECTOR, B1.\n\t\tPDDL\t\t\t# VECTOR INTO 8D, 10D, 12D, SCALED B5.\n\t\t\t\t\t# GET 5 COSPHI**2 OUT OF 8D\n\t\tDSU\tDAD\n\t\t\tD1/32\t\t# 1 B5\n\t\t\t8D\t\t# X COMPONENT (SAME AS MULTIPLYING\n\t\t\t\t\t# BY UNITX)\n\t\tSTODL\t8D\n\t\t\tURPV\t\t# X COMPONENT\n\t\tDMP\tDMP\n\t\t\tURPV\t+4\t# Z COMPONENT\n\t\t\t5/8\t\t# 5 B3 ANSWER B5\n\t\tSL1\tDAD\t\t# FROM 12D FOR Z COMPONENT (SL1 GIVES 10\n\t\t\t\t\t# INSTEAD OF 5 FOR COEFFICIENT)\n\t\tPDDL\tNORM\t\t# BACK INTO 12D FOR Z COMPNENT.\n\t\t\tALPHAM\t\t# SCALED B27 FOR MOON\n\t\t\tX2\n\t\tPUSH\tSLOAD\t\t# STORE IN 14D, DESTROYING URPV\n\t\t\t\t\t# X COMPONENT\n\t\t\tE32C31RM\n\t\tDDV\tVXSC\t\t# IF X2 = 0, DIVISION GIVES B53, VXSC\n\t\t\t\t\t# OUT OF 8D B5 GIVES B58\n\t\tVSL*\tVAD\t\t# SHIFT MAKES B61, FOR ADDITION OF\n\t\t\t\t\t# VECTOR IN 2D\n\t\t\t0\t-3,2\n\t\tVSL*\tV/SC\t\t# OPERAND FROM 0D.  B108 FOR X1 = 0\n\t\t\t0\t-27D,1\t# FOR X1 = 0, MAKES B88, GIVING B-20\n\t\t\t\t\t# FOR RESULT.\n\t\tPDDL\tPDDL\n\t\t\tTET\n\t\t\t5/8\t\t# ANY NON-ZERO CONSTANT\n\t\tLXA,2\tCALL\t\t# POSITION IN 0D, TIME IN 6D.  X2 LEFT\n\t\t\t\t\t# ALONE.\n\t\t\tPBODY\n\t\t\tRP-TO-R\n\t\tVAD\tBOV\t\t# OVERFLOW INDICATOR RESET IN \"RP-TO-R\"\n\t\t\tFV\n\t\t\tGOBAQUE\n# Page 1237\n\t\tSTORE\tFV\nNBRANCH\t\tSLOAD\tLXA,1\n\t\t\tDIFEQCNT\n\t\t\tMPAC\n\t\tDMP\tCGOTO\n\t\t\t-1/12\n\t\t\tMPAC\n\t\t\tDIFEQTAB\nCOSPHIE\t\tDLOAD\n\t\t\tALPHAV \t+4\n\t\tSTOVL\tCOSPHI/2\n\t\t\tZUNIT\n\t\tGOTO\n\t\t\tCOMTERM\nDIFEQTAB\tCADR\tDIFEQ+0\n\t\tCADR\tDIFEQ+1\n\t\tCADR\tDIFEQ+2\nTIMESTEP\tBOF\tVLOAD\n\t\t\tMIDFLAG\n\t\t\tRECTEST\n\t\t\tRCV\n\t\tDOT\tDMP\n\t\t\tVCV\n\t\t\tDT/2\t\t# (R.V) X (DELTA T)\n\t\tBMN\n\t\t\tRECTEST\n\t\tBON\tBOF\n\t\t\tMOONFLAG\n\t\t\tLUNSPH\n\t\t\tRPQFLAG\n\t\t\tEARSPH\n\t\tDLOAD\tCALL\n\t\t\tTET\n\t\t\tLSPOS\t\t# RPQV IN MPAC\n\t\tSTORE\tRPQV\t\t# RPQV\n\t\tLXA,2\n\t\t\tPBODY\nINLUNCHK\tBVSU\tABVAL\n\t\t\tRCV\n\t\tDSU\tBMN\n\t\t\tRSPHERE\n\t\t\tDOSWITCH\nRECTEST\t\tVLOAD\tABVAL\t\t# RECTIFY IF\n\t\t\tTDELTAV\n\t\tBOV\n\t\t\tCALLRECT\n\t\tDSU\tBPL\t\t#\t1) EITHER TDELTAV OR TNUV EQUALS OR\n\t\t\t3/4\t\t#\t   EXCEEDS 3/4 IN MAGNITUDE\n\t\t\tCALLRECT\t#\n\t\tDAD\tSL*\t\t#\t\t\tOR\n# Page 1238\n\t\t\t3/4\t\t#\n\t\t\t0 \t-7,2\t#\t2) ABVAL(TDELTAV) EQUALS OR EXCEEDS\n\t\tDDV\tDSU\t\t#\t   .01(ABVAL(RCV))\n\t\t\t10D\n\t\t\tRECRATIO\n\t\tBPL\tVLOAD\n\t\t\tCALLRECT\n\t\t\tTNUV\n\t\tABVAL\tDSU\n\t\t\t3/4\n\t\tBOV\n\t\t\tCALLRECT\n\t\tBMN\n\t\t\tINTGRATE\nCALLRECT\tCALL\n\t\t\tRECTIFY\nINTGRATE\tVLOAD\n\t\t\tTNUV\n\t\tSTOVL\tZV\n\t\t\tTDELTAV\n\t\tSTORE\tYV\n\t\tCLEAR\n\t\t\tJSWITCH\nDIFEQ0\t\tVLOAD\tSSP\n\t\t\tYV\n\t\t\tDIFEQCNT\n\t\t\t0\n\t\tSTODL\tALPHAV\n\t\t\tDPZERO\n\t\tSTORE\tH\t\t# START H AT ZERO.  GOES 0(DELT/2)DELT.\n\t\tBON\tGOTO\n\t\t\tJSWITCH\n\t\t\tDOW..\n\t\t\tACCOMP\nEARSPH\t\tVLOAD\tGOTO\n\t\t\tRPQV\n\t\t\tINLUNCHK\nLUNSPH\t\tDLOAD\tSR2\n\t\t\t10D\n\t\tDSU\tBMN\n\t\t\tRSPHERE\n\t\t\tRECTEST\n\t\tBOF\tDLOAD\n\t\t\tRPQFLAG\n\t\t\tDOSWITCH\n\t\t\tTET\n\t\tCALL\n\t\t\tLUNPOS\n\t\tVCOMP\n\t\tSTORE\tRPQV\n# Page 1239\nDOSWITCH\tCALL\n\t\t\tORIGCHNG\n\t\tGOTO\n\t\t\tINTGRATE\nORIGCHNG\tSTQ\tCALL\n\t\t\tORIGEX\n\t\t\tRECTIFY\n\t\tVLOAD\tVSL*\n\t\t\tRCV\n\t\t\t0,2\n\t\tVSU\tVSL*\n\t\t\tRPQV\n\t\t\t2,2\n\t\tSTORE\tRRECT\n\t\tSTODL\tRCV\n\t\t\tTET\n\t\tCALL\n\t\t\tLUNVEL\n\t\tBOF\tVCOMP\n\t\t\tMOONFLAG\n\t\t\t+1\n\t\tPDVL\tVSL*\n\t\t\tVCV\n\t\t\t0,2\n\t\tVSU\n\t\tVSL*\n\t\t\t0 \t+2,2\n\t\tSTORE\tVRECT\n\t\tSTORE\tVCV\n\t\tLXA,2\tSXA,2\n\t\t\tORIGEX\n\t\t\tQPRET\n\t\tBON\tGOTO\n\t\t\tMOONFLAG\n\t\t\tCLRMOON\n\t\t\tSETMOON\n# Page 1240\n# THE RECTIFY SUBROUTINE IS CALLED BY THE INTEGRATION PROGRAM AND OCCASIONALLY BY THE MEASUREMENT INCORPORATION\n# ROUTINES TO ESTABLISH A NEW CONIC.\n\nRECTIFY\t\tLXA,2\tVLOAD\n\t\t\tPBODY\n\t\t\tTDELTAV\n\t\tVSL*\tVAD\n\t\t\t0 \t-7,2\n\t\t\tRCV\n\t\tSTORE\tRRECT\n\t\tSTOVL\tRCV\n\t\t\tTNUV\n\t\tVSL*\tVAD\n\t\t\t0 \t-4,2\n\t\t\tVCV\nMINIRECT\tSTORE\tVRECT\n\t\tSTOVL\tVCV\n\t\t\tZEROVEC\n\t\tSTORE\tTDELTAV\n\t\tSTODL\tTNUV\n\t\t\tZEROVEC\n\t\tSTORE\tTC\n\t\tSTORE\tXKEP\n\t\tRVQ\n\n# Page 1241\n# THE THREE DIFEQ ROUTINES -- DIFEQ+0, DIFEQ+12, DIFEQ+24 -- ARE ENTERED TO PROCESS THE CONTRIBUTIONS AT THE\n# BEGINNING, MIDDLE, AND END OF THE TIMESTEP, RESPECTIVELY.  THE UPDATING IS DONE BY THE NYSTROM METHOD.\n\nDIFEQ+0\t\tVLOAD\tVSR3\n\t\t\tFV\n\t\tSTCALL\tPHIV\n\t\t\tDIFEQCOM\nDIFEQ+1\t\tVLOAD\tVSR1\n\t\t\tFV\n\t\tPUSH\tVAD\n\t\t\tPHIV\n\t\tSTOVL\tPSIV\n\t\tVSR1\tVAD\n\t\t\tPHIV\n\t\tSTCALL\tPHIV\n\t\t\tDIFEQCOM\nDIFEQ+2\t\tDLOAD\tDMPR\n\t\t\tH\n\t\t\tDP2/3\n\t\tPUSH\tVXSC\n\t\t\tPHIV\n\t\tVSL1\tVAD\n\t\t\tZV\n\t\tVXSC\tVAD\n\t\t\tH\n\t\t\tYV\n\t\tSTOVL\tYV\n\t\t\tFV\n\t\tVSR3\tVAD\n\t\t\tPSIV\n\t\tVXSC\tVSL1\n\t\tVAD\n\t\t\tZV\n\t\tSTORE\tZV\n\t\tBOFF\tCALL\n\t\t\tJSWITCH\n\t\t\tENDSTATE\n\t\t\tGRP2PC\n\t\tLXA,2\tVLOAD\n\t\t\tCOLREG\n\t\t\tZV\n\t\tVSL3\t\t\t# ADJUST W-POSITION FOR STORAGE\n\t\tSTORE\tW \t+54D,2\n\t\tVLOAD\n\t\t\tYV\n\t\tVSL3\tBOV\n\t\t\tWMATEND\n\t\tSTORE\tW,2\n\n\t\tCALL\n\t\t\tGRP2PC\n# Page 1242\n\t\tLXA,2\tSSP\n\t\t\tCOLREG\n\t\t\tS2\n\t\t\t0\n\t\tINCR,2\tSXA,2\n\t\t\t6\n\t\t\tYV\n\t\tTIX,2\tCALL\n\t\t\tRELOADSV\n\t\t\tGRP2PC\n\t\tLXA,2\tSXA,2\n\t\t\tYV\n\t\t\tCOLREG\n\nNEXTCOL\t\tCALL\n\t\t\tGRP2PC\n\t\tLXA,2\tVLOAD*\n\t\t\tCOLREG\n\t\t\tW,2\n\t\tVSR3\t\t\t# ADJUST W-POSITION FOR INTEGRATION\n\t\tSTORE\tYV\n\t\tVLOAD*\tAXT,1\n\t\t\tW \t+54D,2\n\t\t\t0\n\t\tVSR3\t\t\t# ADJUST W-VELOCITY FOR INTEGRATION\n\t\tSTCALL\tZV\n\t\t\tDIFEQ0\n\nENDSTATE\tBOV\tVLOAD\n\t\t\tGOBAQUE\n\t\t\tZV\n\t\tSTOVL\tTNUV\n\t\t\tYV\n\t\tSTORE\tTDELTAV\n\t\tBON\tBOFF\n\t\t\tMIDAVFLG\n\t\t\tCKMID2\t\t# CHECK FOR MID2 BEFORE GOING TO TIMEINC\n\t\t\tDIM0FLAG\n\t\t\tTESTLOOP\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\t\t# PHASE 1\n\t\tTC\tUPFLAG\t\t# PHASE CHANGE HAS OCCURRED BETWEEN\n\t\tADRES\tREINTFLG\t# INSTALL AND INTWAKE\n\t\tTC\tINTPRET\n\t\tSSP\n\t\t\tQPRET\n\t\t\tAMOVED\n\t\tBON\tGOTO\n\t\t\tVINTFLAG\n# Page 1243\n\t\t\tATOPCSM\n\t\t\tATOPLEM\nAMOVED\t\tSET\tSSP\n\t\t\tJSWITCH\n\t\t\tCOLREG\n\t\tDEC\t-30\n\t\tBOFF\tSSP\n\t\t\tD6OR9FLG\n\t\t\tNEXTCOL\n\t\t\tCOLREG\n\t\tDEC\t-48\n\t\tGOTO\n\t\t\tNEXTCOL\n\nRELOADSV\tDLOAD\t\t\t# RELOAD TEMPORARY STATE VECTOR\n\t\t\tTDEC\t\t# FROM PERMANENT IN CASE OF\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRV2\t# BY STARTING AT INTEGRV2.\nDIFEQCOM\tDLOAD\tDAD\t\t# INCREMENT H AND DIFEQCNT.\n\t\t\tDT/2\n\t\t\tH\n\t\tINCR,1\tSXA,1\n\t\tDEC\t-12\n\t\t\tDIFEQCNT\t# DIFEQCNT SET FOR NEXT ENTRY.\n\t\tSTORE\tH\n\t\tVXSC\tVSR1\n\t\t\tFV\n\t\tVAD\tVXSC\n\t\t\tZV\n\t\t\tH\n\t\tVAD\n\t\t\tYV\n\t\tSTORE\tALPHAV\n\t\tBON\tGOTO\n\t\t\tJSWITCH\n\t\t\tDOW..\n\t\t\tFBR3\n\nWMATEND\t\tCLEAR\tCLEAR\n\t\t\tDIM0FLAG\t# DON'T INTEGRATE W THIS TIME\n\t\t\tORBWFLAG\t# INVALIDATE W\n\t\tCLEAR\n\t\t\tRENDWFLG\n\t\tSET\tEXIT\n\t\t\tSTATEFLG\t# PICK UP STATE VECTOR UPDATE\n\t\tTC\tALARM\n\t\tOCT\t421\n\t\tTC\tINTPRET\n# Page 1244\n\t\tGOTO\n\t\t\tTESTLOOP\t# FINISH INTEGRATING STATE VECTOR\n\n# Page 1245\n# ORBITAL ROUTINE FOR EXTRAPOLATION OF THE W MATRIX.  IT COMPUTES THE SECOND DERIVATIVE OF EACH COLUMN POSITION\n# VECTOR OF THE MATRIX AND CALLS THE NYSTROM INTEGRATION ROUTINES TO SOLVE THE DIFFERENTIAL EQUATIONS.  THE PROGRAM\n# USES A TABLE OF VEHICLE POSITION VECTORS COMPUTED DURING THE INTEGRATION OF THE VEHICLE'S POSITION AND VELOCITY.\n\nDOW..\t\tLXA,2\tDLOAD*\n\t\t\tPBODY\n\t\t\tMUEARTH,2\n\t\tSTCALL\tBETAM\n\t\t\tDOW..1\n\t\tSTORE\tFV\n\t\tBOF\tINCR,1\n\t\t\tMIDFLAG\n\t\t\tNBRANCH\n\t\tDEC\t-6\n\t\tLXC,2\tDLOAD*\n\t\t\tPBODY\n\t\t\tMUEARTH -2,2\n\t\tSTCALL\tBETAM\n\t\t\tDOW..1\n\t\tBON\tVSR6\n\t\t\tMOONFLAG\n\t\t\t+1\n\t\tVAD\n\t\t\tFV\n\t\tSTCALL\tFV\n\t\t\tNBRANCH\nDOW..1\t\tVLOAD\tVSR4\n\t\t\tALPHAV\n\t\tPDVL*\tUNIT\n\t\t\tVECTAB,1\n\t\tPDVL\tVPROJ\n\t\t\tALPHAV\n\t\tVXSC\tVSU\n\t\t\t3/4\n\t\tPDDL\tNORM\n\t\t\t36D\n\t\t\tS2\n\t\tPUSH\tDSQ\n\t\tDMP\n\t\tNORM\tPDDL\n\t\t\t34D\n\t\t\tBETAM\n\t\tSR1\tDDV\n\t\tVXSC\n\t\tLXA,2\tXAD,2\n\t\t\tS2\n\t\t\tS2\n\t\tXAD,2\tXAD,2\n\t\t\tS2\n\t\t\t34D\n\t\tVSL*\tRVQ\n# Page 1246\n\t\t\t0 \t-8D,2\n\n# ********************************************************************************\n# ********************************************************************************\nSETITCTR\tSSP\tBOFF\t\t# SET ITERCTR FOR LAMBERT CALLS.  THIS\n\t\t\tITERCTR\t\t# CODING BELONGS IN INITVEL AND IS HERE\n\t\t\t20D\t\t# FOR PURPOSES OF A ONE-MODULE\n\t\t\tAVEGFLAG\t# REMANUFACTURE ONLY.  CODING SHOULD\n\t\t\tLAMBERT\t\t# BE MOVED BACK TO INITVEL FOR LUMINARY 1B\n\t\tSSP\tGOTO\n\t\t\tITERCTR\n\t\t\t5\n\t\t\tLAMBERT\n# ********************************************************************************\n# ********************************************************************************\n\n\t\tSETLOC\tORBITAL1\n\t\tBANK\n\n3/5\t\t2DEC\t.6 B-2\n\nTHREE/8\t\t2DEC\t.375\n\n.3D\t\t2DEC\t.3 B-2\n\n3/64\t\t2DEC\t3 B-6\n\nDP1/4\t\t2DEC\t.25\n\nDQUARTER\tEQUALS\tDP1/4\nPOS1/4\t\tEQUALS\tDP1/4\n3/32\t\t2DEC\t3 B-5\n\n15/16\t\t2DEC\t15. B-4\n\n3/4\t\t2DEC\t3.0 B-2\n\n7/12\t\t2DEC\t.5833333333\n\n9/16\t\t2DEC\t9 B-4\n\n5/128\t\t2DEC\t5 B-7\n\nDPZERO\t\tEQUALS\tZEROVEC\nDP2/3\t\t2DEC\t.6666666667\n\n2/3\t\tEQUALS\tDP2/3\nOCT27\t\tOCT\t27\n\n# Page 1247\n\t\tBANK\t13\n\t\tSETLOC\tORBITAL2\n\t\tBANK\n# IT IS VITAL THAT THE FOLLOWING CONSTANTS NOT BE SHUFFLED\n\t\tDEC\t-11\n\t\tDEC\t-2\n\t\tDEC\t-9\n\t\tDEC\t-6\n\t\tDEC\t-2\n\t\tDEC\t-2\n\t\tDEC\t0\n\t\tDEC\t-12\n\t\tDEC\t-9\n\t\tDEC\t-4\nASCALE\t\tDEC\t-7\n\t\tDEC\t-6\n5/8\t\t2DEC\t5 B-3\n\n-1/12\t\t2DEC\t-.1\n\nRECRATIO\t2DEC\t.01\n\nRSPHERE\t\t2DEC\t64373.76 E3 B-29\n\nRDM\t\t2DEC\t16093.44 E3 B-27\n\nRDE\t\t2DEC\t80467.20 E3 B-29\n\nRATT\t\tEQUALS \t00\nVATT\t\tEQUALS\t6D\nTAT\t\tEQUALS\t12D\nRATT1\t\tEQUALS\t14D\nVATT1\t\tEQUALS\t20D\nMU(P)\t\tEQUALS\t26D\nTDEC1\t\tEQUALS\t32D\nURPV\t\tEQUALS\t14D\nCOSPHI/2\tEQUALS\tURPV \t+4\nUZ\t\tEQUALS\t20D\nTVEC\t\tEQUALS\t26D\n\nQUALITY1\tBOF\tDLOAD\n\t\t\tMOONFLAG\n\t\t\tNBRANCH\n\t\t\tURPV\n\t\tDSQ\nQUALITY2\tPDDL\tDSQ\t\t# SQUARE INTO 2D, B2\n\t\t\tURPV\t+2\t# Y COMPONENT, B1\n\t\tDSU\n\t\tDMP\tVXSC\t\t# 5(Y**2-X**2)UR\n\t\t\t5/8\t\t# CONSTANT, 5B3\n\t\t\tURPV\t\t# VECTOR.  RESULT MAXIMUM IS 5, SCALING\n# Page 1248\n\t\t\t\t\t# HERE B6\n\t\tVSL3\tPDDL\t\t# STORE SCALED B3 IN 2D, 4D, 6D FOR XYZ\n\t\t\tURPV\t\t# X COMPONENT, B1\n\t\tSR1\tDAD\t\t# 2 X X COMPONENT FOR B3 SCALING\n\t\t\t2D\t\t# ADD TO VECTOR X COMPONENT OF ANSWER,\n\t\t\t\t\t# SAME AS MULTIPLYING BY UNITX.  MAX IS 7.\n\t\tSTODL\t2D\n\t\t\tURPV\t+2\t# Y COMPONENT, B1\n\t\tSR1\tBDSU\t\t# 2 X Y COMPONENT FOR B3 SCALING\n\t\t\t4D\t\t# SUBTRACT FROM VECTOR Y COMPONENT OF\n\t\t\t\t\t# ANSWER, SAME AS MULTIPLYING BY UNITY.\n\t\t\t\t\t# MAX IS 7.\n\t\tSTORE\t4D\t\t# 2D HAS VECTOR, B3.\n\t\tSLOAD\tVXSC\t\t# MULTIPLY COEFFICIENT TIMES VECTOR IN 2D\n\t\t\tE3J22R2M\n\t\tPDDL\tRVQ\t\t# J22 TERM X R**4 IN 2D, SCALED B61\n\t\t\tCOSPHI/2\t# SAME AS URPV +4  Z COMPONENT\n\n"
  },
  {
    "path": "Luminary099/P-AXIS_RCS_AUTOPILOT.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP-AXIS_RCS_AUTOPILOT.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1421-1441\n# Mod history:\t2009-05-27 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-05 RSB\tCorrected a relative jump from\n#\t\t\t\t+8 to +8D.\n#\t\t2009-06-07 RSB\tCorrected a typo.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1421\n\t\tBANK\t16\n\t\tSETLOC\tDAPS1\n\t\tBANK\n\n\t\tEBANK=\tPERROR\n\t\tCOUNT*\t$$/DAPP\n\n# THE FOLLOWING T5RUPT ENTRY BEGINS THE PROGRAM WHICH CONTROLS THE P-AXIS ACTION OF THE LEM USING THE RCS JETS.\n# THE NOMINAL TIME BETWEEN THE P-AXIS RUPTS IS 100 MS IN ALL NON-IDLING MODES OF THE DAP.\n\nPAXIS\t\tCA\tMS100\n\t\tADS\tTIME5\t\t# *** NECESSARY IN ORDER TO ALLOW\n\t\t\t\t\t# SYNCHRONIZATION WITH OTHER INTERRUPTS ***\n\n\t\tLXCH\tBANKRUPT\t# INTERRUPT LEAD IN (CONTINUED)\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n# CHECK IF DAP PASS IS PERMISSIBLE\n\n\t\tCCS\tDAPZRUPT\t# IF DAPZRUPT POSITIVE, DAP (JASK) IS\n\t\tTC\tBAILOUT\t\t# STILL IN PROGRESS AND A RESTART IS\n\t\tOCT\t02000\t\t# CALLED FOR.  IT IS NEVER ZERO\n\n\t\tTC\tCHEKBITS\t# RETURN IS TC I+1 IF DAP SHOULD STAY ON.\n\n\t\tCA\tCDUX\t\t# READ AND STORE CDU'S\n\t\tTS\tDAPTREG4\n\t\tCA\tCDUY\n\t\tTS\tDAPTREG5\n\t\tCA\tCDUZ\n\t\tTS\tDAPTREG6\n\n# ***** KALCMANU-DAP AND \"RATE-HOLD\"-DAP INTERFACE *****\n#\n# THE FOLLOWING SECTION IS EXECUTED EVERY 100 MS (10 TIMES A SECOND) WITHIN THE P-AXIS REACTION CONTROL SYSTEM\n# AUTOPILOT (WHENEVER THE DAP IS IN OPERATION).\n\n\t\tCA\tCDUXD\n\t\tEXTEND\n\t\tMSU\tDELCDUX\n\t\tTC\t1STOTWOS\n\t\tTS\tCDUXD\n\t\tCA\tCDUYD\n\t\tEXTEND\n\t\tMSU\tDELCDUY\n\t\tTC\t1STOTWOS\n\t\tTS\tCDUYD\n\t\tCA\tCDUZD\n\t\tEXTEND\n\t\tMSU\tDELCDUZ\n# Page 1422\n\t\tTC\t1STOTWOS\n\t\tTS\tCDUZD\n\t\tEXTEND\t\t\t# DIMINISH MANUAL CONTROL DIRECT RATE\n\t\tDIM\tTCP\t\t# TIME COUNTERS.\n\t\tEXTEND\n\t\tDIM\tTCQR\n\n# RATFLOOP COMPUTES JETRATEQ, JRATER, AND 1JACC*NO. PJEETS IN ITEMP1.\n# RETURNS TO BACKP.\n#\n# JETRATE = 1JACC*NO.PJETS*TJP\t\t(NOTE TJ IS THE TIME FIRED DURING CSP)\n# JETRATEQ = 1JACCQ(TJU*NO.UJETS - TJV*NO.VJETS)\n# JETRATER = 1JACCR(TJU*NO.UJETS + TJV*NO.VJETS)\n\n\t\tTCF\tPAXFILT\t\t# PROCEEDS TO RATELOOP AFTER SUPERJOB\n1STOTWOS\tCCS\tA\n\t\tAD\tONE\n\t\tTC\tQ\n\t\tCS\tA\n\t\tTC\tQ\nSUBDIVDE\tEXTEND\t\t\t# OVERFLOW PROTECTION ROUTINE TO GIVE\n\t\tMP\tDAPTEMP3\t# POSMAX OR NEGMAX IF THE DIVIDE WOULD\n\t\tDAS\tOMEGAU\t\t# OVERFLOW\n\n +3\t\tEXTEND\n\t\tDCA\tOMEGAU\n\t\tDXCH\tDAPTEMP5\n\t\tCCS\tOMEGAU\n\t\tTCF\t+2\n\t\tTCF\tDIVIDER\n\t\tAD\t-OCT630\n\t\tEXTEND\n\t\tBZMF\tDIVIDER\n\n\t\tCCS\tOMEGAU\n\t\tCA\tPOSMAX\t\t# 45 DEG/SEC\n\t\tTC\tQ\n\t\tCS\tPOSMAX\n\t\tTC\tQ\n\nDIVIDER\t\tDXCH\tOMEGAU\n\t\tEXTEND\n\t\tDV\tDAPTREG4\n\t\tTC\tQ\n\nOVERSUB\t\tTS\t7\t\t# RETURNS A UNCHANGED OR LIMITED TO\n\t\tTC\tQ\t\t# POSMAX OR NEGMAX IF A HAS OVERFLOW\n\t\tINDEX\tA\n\t\tCS\tBIT15 \t-1\n# Page 1423\n\t\tTC\tQ\n\n-OCT630\t\tOCT\t77147\n\nBACKP\t\tCA\tDAPTEMP1\n\t\tEXTEND\n\t\tMP\t1JACC\n\t\tTS\tJETRATE\n\n# BEGINNING OF THE RATE DERIVATION\n#\tOMEGAP,Q,R\tBODY RATES SCALED AT PI/4\n#\tTRAPEDP,Q,R\tBODY ANGLE ERRORS FROM PREDICTED ANGLE (PI/40)\n#\tNP(QR)TRAPS\tNUMBER OF TIMES ANGLE ERROR HAS BEEN ACCUMULATED\n#\tAOSQ(R)TERM\tCHANGE IN RATE DUE TO OFFSET ACCELERATION.  (PI/4)\n#\tJETRATE,Q,R\tCHANGE IN RATE DUE TO  JET   ACCELERATION.  (PI/4)\n#\tTRAPSIZE\tNEGATIVE LIMIT OF MAGNITUDE OF TRAPEDP, ETC.\n#\tOMEGAU\t\tDP-TEMPORARY STORAGE\n# OMEGA = OMEGA + JETRATE + AOSTERM (+TRAPED/NTRAPS IF TRAPED BIG)\n\n\t\tCAE\tDAPTREG4\t# CDUX IS STORED HERE\n\t\tTS\tL\n\t\tEXTEND\n\t\tMSU\tOLDXFORP\t# SCALED AT PI\n\t\tLXCH\tOLDXFORP\n\t\tTS\tDAPTEMP1\n\t\tCA\t1/40\n\t\tTS\tDAPTREG4\n\t\tCS\tJETRATE\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tADS\tTRAPEDP\n\t\tCA\tJETRATEQ\n\t\tAD\tAOSQTERM\n\t\tEXTEND\n\t\tMP\t-BIT14\n\t\tADS\tTRAPEDQ\n\t\tCA\tJETRATER\n\t\tAD\tAOSRTERM\n\t\tEXTEND\n\t\tMP\t-BIT14\n\t\tADS\tTRAPEDR\n\n\t\tCA\tDAPTREG5\t# CDUY IS STORED HERE\n\t\tTS\tL\n\t\tEXTEND\n\t\tMSU\tOLDYFORP\t# SCALED AT PI\n\t\tLXCH\tOLDYFORP\n\t\tTS\tDAPTEMP2\n\t\tEXTEND\n\t\tMP\tM11\t\t# M11 SCALED AT 1\n# Page 1424\n\t\tAD\tDAPTEMP1\n\t\tDXCH\tOMEGAU\n\n\t\tTC\tSUBDIVDE +3\t# RETURNS WITH CDU-RATE AT PI/4\n\n\t\tEXTEND\n\t\tSU\tOMEGAP\n\t\tADS\tTRAPEDP\n\t\tTC\tOVERSUB\n\t\tTS\tTRAPEDP\n\t\tEXTEND\n\t\tDCA\tDAPTEMP5\n\t\tDAS\tDXERROR\n\t\tCS\tPLAST\n\t\tEXTEND\n\t\tMP\t1/40\n\t\tDAS\tDXERROR\t\t# MANUAL MODE X-ATTITUDE ERROR (DP)\n\t\tCA\tDAPTREG6\t# CDUZ IS STORED HERE\n\t\tTS\tL\n\t\tEXTEND\n\t\tMSU\tOLDZFORQ\n\t\tTS\tDAPTEMP3\n\t\tLXCH\tOLDZFORQ\n\t\tCA\tM21\n\t\tEXTEND\n\t\tMP\tDAPTEMP2\n\t\tDXCH\tOMEGAU\n\t\tCA\tM22\n\t\tTC\tSUBDIVDE\n\n\t\tEXTEND\n\t\tSU\tOMEGAQ\n\t\tADS\tTRAPEDQ\n\t\tTC\tOVERSUB\n\t\tTS\tTRAPEDQ\n\t\tEXTEND\n\t\tDCA\tDAPTEMP5\n\t\tDAS\tDYERROR\n\t\tCS\tQLAST\n\t\tEXTEND\n\t\tMP\t1/40\n\t\tDAS\tDYERROR\t\t# MANUAL MODE Y-ATTITUDE ERROR (DP)\n\t\tCA\tM31\n\t\tEXTEND\n\t\tMP\tDAPTEMP2\n\t\tDXCH\tOMEGAU\n\t\tCA\tM32\n\n\t\tTC\tSUBDIVDE\n# Page 1425\n\t\tEXTEND\n\t\tSU\tOMEGAR\n\t\tADS\tTRAPEDR\n\t\tTC\tOVERSUB\n\t\tTS\tTRAPEDR\t\t# TRAPEDS HAVE ALL BEEN COMPUTED\n\n\t\tEXTEND\n\t\tDCA\tDAPTEMP5\n\t\tDAS\tDZERROR\n\t\tCS\tRLAST\n\t\tEXTEND\n\t\tMP\t1/40\n\t\tDAS\tDZERROR\t\t# MANUAL MODE Z-ATTITUDE ERROR (DP)\n\t\tCA\tDAPBOOLS\t# PICK UP PAD LOADED STATE ESTIMATOR GAINS\n\t\tMASK\tCSMDOCKD\n\t\tEXTEND\n\t\tBZF\tLMONLY\n\t\tEXTEND\t\t\t# DOCKED\n\t\tDCA\tDKOMEGAN\n\t\tDXCH\tDAPTREG4\n\t\tCA\tDKTRAP\n\t\tTCF\t+5\nLMONLY\t\tEXTEND\t\t\t# UNDOCKED\n\t\tDCA\tLMOMEGAN\n\t\tDXCH\tDAPTREG4\n\t\tCA\tLMTRAP\n +5\t\tTS\tDAPTREG6\n\t\tCCS\tTRAPEDP\n\t\tTCF\t+2\n\t\tTCF\tSMALPDIF\n\t\tAD\tDAPTREG6\t# TRAPSIZE > ABOUT 77001 %-1.4DEG/SEC\"\n\t\tEXTEND\n\t\tBZMF\tSMALPDIF\n\t\tZL\n\t\tLXCH\tTRAPEDP\n\t\tCA\tZERO\n\t\tEXTEND\n\t\tDV\tNPTRAPS\n\t\tADS\tOMEGAP\n\t\tTC\tOVERSUB\n\t\tTS\tOMEGAP\n\t\tCA\tDAPTREG4\tABOUT 10 OR 0 FOR DOCKED OR UNDOCKED\n\t\tTS\tNPTRAPS\nSMALPDIF\tINCR\tNPTRAPS\nP-RATE\t\tCA\tJETRATE\n\t\tADS\tOMEGAP\n\t\tTC\tOVERSUB\n\t\tTS\tOMEGAP\n\n\t\tCCS\tTRAPEDQ\n# Page 1426\n\t\tTCF\t+2\n\t\tTCF\tQ-RATE\n\t\tAD\tDAPTREG6\t# TRAPSIZE > ABOUT 77001 %-1.4DEG/SEC\"\n\t\tEXTEND\n\t\tBZMF\tQ-RATE\n\t\tZL\n\t\tLXCH\tTRAPEDQ\n\t\tCA\tZERO\n\t\tEXTEND\n\t\tDV\tNQTRAPS\n\t\tTS\tDAPTEMP1\t# SAVE FOR OFFSET ESTIMATE\n\t\tADS\tOMEGAQ\n\t\tTC\tOVERSUB\n\t\tTS\tOMEGAQ\n\t\tCA\tDAPTREG4\t# ABOUT 10 OR 0 FOR DOCKED OR UNDOCKED\n\t\tXCH\tNQTRAPS\n\t\tAD\tDAPTREG5\t# KAOS > ABOUT 60D %N/N_60\"\n\t\tXCH\tDAPTEMP1\n\t\tEXTEND\n\t\tMP\tFIVE\n\t\tEXTEND\n\t\tDV\tDAPTEMP1\n\t\tADS\tAOSQ\nQ-RATE\t\tINCR\tNQTRAPS\n\t\tCA\tJETRATEQ\n\t\tAD\tAOSQTERM\n\t\tADS\tOMEGAQ\n\t\tTC\tOVERSUB\n\t\tTS\tOMEGAQ\n\n\t\tCCS\tTRAPEDR\n\t\tTCF\t+2\n\t\tTCF\tR-RATE\n\t\tAD\tDAPTREG6\t# TRAPSIZE > ABOUT 77001 %-1.4DEG/SEC\"\n\t\tEXTEND\n\t\tBZMF\tR-RATE\n\t\tZL\n\t\tLXCH\tTRAPEDR\n\t\tCA\tZERO\n\t\tEXTEND\n\t\tDV\tNRTRAPS\n\t\tTS\tDAPTEMP2\t# SAVE FOR OFFSET ESTIMATE\n\t\tADS\tOMEGAR\n\t\tTC\tOVERSUB\n\t\tTS\tOMEGAR\n\t\tCA\tDAPTREG4\t# ABOUT 10 OR 0 FOR DOCKED OR UNDOCKED\n\t\tXCH\tNRTRAPS\n\t\tAD\tDAPTREG5\t# KAOS > ABOUT 60D %N/N_60\"\n\t\tXCH\tDAPTEMP2\n\t\tEXTEND\n# Page 1427\n\t\tMP\tFIVE\n\t\tEXTEND\n\t\tDV\tDAPTEMP2\n\t\tADS\tAOSR\nR-RATE\t\tINCR\tNRTRAPS\n\t\tCA\tJETRATER\n\t\tAD\tAOSRTERM\n\t\tADS\tOMEGAR\n\t\tTC\tOVERSUB\n\t\tTS\tOMEGAR\n\n# END OF RATE DERIVATION\n#\tBEGIN OFFSET ESTIMATER\n#\t\tIN POWERED FLIGHT, AOSTASK WILL BE CALLED EVERY 2 SECONDS.\n#\t\t\tAOS = AOS + K*SUMRATE\n\n\t\tCS\tDAPBOOLS\n\t\tMASK \tDRIFTBIT\n\t\tCCS\tA\n\t\tTCF\tWORKTIME\n\t\tTS\tALPHAQ\t\t# ZERO THE OFFSET ACCELERATION VALUES.\n\t\tTS\tALPHAR\n\t\tTS\tAOSQTERM\n\t\tTS\tAOSRTERM\n\t\tTS\tAOSQ\n\t\tTS\tAOSR\n\t\tTCF\tPRETIMCK\nKAOS\t\tDEC\t60\nWORKTIME\tCA\tQACCDOT\n\t\tEXTEND\n\t\tMP\tCALLCODE\t# OCTAL 00032 IS DECIMAL .1 AT 2(6).\n\t\tDAS\tAOSQ\n\t\tCA\tAOSQ\n\t\tTS\tALPHAQ\n\t\tEXTEND\n\t\tMP\t200MS\t\t# .2 AT 1\n\t\tTS\tAOSQTERM\n\t\tCA\tRACCDOT\n\t\tEXTEND\n\t\tMP\tCALLCODE\t# OCTAL 00032 IS DECIMAL .1 AT 2(6).\n\t\tDAS\tAOSR\n\t\tCA\tAOSR\n\t\tTS\tALPHAR\n\t\tEXTEND\n\t\tMP\t200MS\t\t# .2 AT 1\n\t\tTS\tAOSRTERM\n\t\tTCF\tPRETIMCK\n\n# Page 1428\nPAXFILT\t\tCA\tCALLGMBL\t# EXECUTE ACDT+C12, IF NEEDED.\n\t\tMASK\tRCSFLAGS\n\t\tCCS\tA\t\t# CALLGMBL IS NOT BIT15, SO THIS TEST IS\n\t\tTC\tACDT+C12\t# VALID.\n\n\t\tDXCH\tARUPT\n\t\tDXCH\tDAPARUPT\n\t\tCA\tSUPERJOB\t# SETTING UP THE SUPERJOB\n\t\tXCH\tBRUPT\n\t\tLXCH\tQRUPT\n\t\tDXCH\tDAPBQRPT\n\t\tCA\tSUPERADR\n\t\tDXCH\tZRUPT\n\t\tDXCH\tDAPZRUPT\n\t\tTCF\tNOQBRSM +1\t# RELINT (JUST IN CASE) AND RESUME, IN THE\n\t\t\t\t\t# \tFORM OF A JASK, AT SUPERJOB.\n\nSUPERADR\tGENADR\tSUPERJOB +1\n\n# COUNT DOWN GIMBAL DRIVE TIMERS AND TURN OFF DRIVES IF REQUIRED.\n\nSUPERJOB\tTCF\tRATELOOP\nPRETIMCK\tCCS\tQGIMTIMR\n\t\tTCF\tDECQTIMR\t# POSITIVE -- COUNTING DOWN\n\t\tTCF\tTURNOFFQ\t# NEGATIVE -- DRIVE SHOULD BE ENDED\nCHKRTIMR\tCCS\tRGIMTIMR\t# NEGATIVE -- INACTIVE\n\t\tTCF\tDECRTIMR\t# (NEG ZERO -- IMPOSSIBLE)\n\t\tTCF\tTURNOFFR\t# REPEATED (ABOVE) FOR R AXIS.\n\n\t\tEXTEND\t\t\t# DECREMENT DOCKED JET INHIBITION COUNTERS\n\t\tDIM\tPJETCTR\n\t\tEXTEND\n\t\tDIM\tUJETCTR\n\t\tEXTEND\n\t\tDIM\tVJETCTR\n\t\tCA\tBIT12\n\t\tMASK\tRCSFLAGS\n\t\tEXTEND\n\t\tBZF\tSKIPPAXS\n\t\tTC\tCHKVISFZ\nDECQTIMR\tTS\tQGIMTIMR\t# COUNT TIMERS DOWN TO POS ZERO.\n\t\tTCF\tCHKRTIMR\nDECRTIMR\tTS\tRGIMTIMR\n\t\tTCF\tCHKRTIMR +3\n\nTURNOFFQ\tTS\tNEGUQ\t\t# HALT DRIVES.\n\t\tTS\tQACCDOT\n\t\tCS\tQGIMBITS\n\t\tEXTEND\n# Page 1429\n\t\tWAND\tCHAN12\n\t\tCAF\tNEGMAX\n\t\tTS\tQGIMTIMR\n\t\tTCF\tCHKRTIMR\nTURNOFFR\tTS\tNEGUR\n\t\tTS\tRACCDOT\n\t\tCS\tRGIMBITS\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tCAF\tNEGMAX\n\t\tTS\tRGIMTIMR\n\t\tTCF\tCHKRTIMR +3\nQGIMBITS\tEQUALS\tOCT1400\t\t# BITS 9 AND 10 (OF CHANNEL 12).\nRGIMBITS\tEQUALS\tPRIO6\t\t# BITS 11 AND 12 (OF CHANNEL 12).\n\nSKIPPAXS\tCS\tRCSFLAGS\n\t\tMASK\tBIT12\n\t\tADS\tRCSFLAGS\t# BIT 12 SET TO 1.\n\t\tTCF\tQRAXIS\t\t# GO TO QRAXIS OR TO CTS.\n\n# Y-X TRANSLATION\n#\n# INPUT:\tBITS 9-12 OF CH31 (FROM TRANSLATION CONTROLLER)\n#\n# OUTPUT:\tNEXTP\n#\n#\t\tNEXTP IS THE CHANNEL 6 CODE OF JETS FOR THE DESIRED TRANSLATION.\n#\t\tIF THERE ARE FAILURES IN THE DESIRED POLICY, THEN\n#\t\t(1) FOR DIAGONAL TRANS:\t\tUNFAILED PAIR\n#\t\t\t\t\t\tALARM (IF NO PAIR)\n#\t\t(2) FOR PRINCIPAL TRANS:\tTRY TO TACK WITH DIAGONAL PAIRS\n#\t\t\t\t\t\tALARM (IF DIAGONAL PAIRS ARE FAILED)\n\nCHKVISFZ\tEXTEND\n\t\tREAD\tCHAN31\n\t\tCS\tA\n\t\tMASK\t07400OCT\n\t\tEXTEND\n\t\tBZF\tTSNEXTP\n\t\tEXTEND\n\t\tMP\tBIT7\n\t\tINDEX\tA\n\t\tCA\tINDXYZ\n\t\tTS\tROTINDEX\nTRYUORV\t\tCA\tSIX\n\t\tTC\tSELECTYZ\n\t\tCS\tSIX\n\t\tAD\tNUMBERT\n\t\tEXTEND\n# Page 1430\n\t\tBZF\tTSNEXTP -1\n\t\tCS\tFIVE\n\t\tAD\tROTINDEX\n\t\tEXTEND\n\t\tBZMF\tALTERYZ\n\t\tCS\tNUMBERT\n\t\tAD\tFOUR\n\t\tEXTEND\n\t\tBZMF\tTSNEXTP -1\nABORTYZ\t\tTC\tALARM\n\t\tOCT\t02001\n\t\tCA\tBIT1\t\t# INVERT BIT 1 OF RCSFLAGS.\n\t\tLXCH\tRCSFLAGS\n\t\tEXTEND\n\t\tRXOR\t1\n\t\tTS\tRCSFLAGS\n\t\tCA\tZERO\n\t\tTCF\tTSNEXTP\nALTERYZ\t\tCA\tBIT1\t\t# INVERT BIT 1 OF RCSFLAGS.\n\t\tLXCH\tRCSFLAGS\n\t\tEXTEND\n\t\tRXOR\t1\n\t\tTS\tRCSFLAGS\n\t\tMASK\tBIT1\n\t\tAD\tFOUR\n\t\tADS\tROTINDEX\n\t\tTCF\tTRYUORV\n\t\tCA\tPOLYTEMP\nTSNEXTP\t\tTS\tNEXTP\n\n# STATE LOGIC\n#\tCHECK IN ORDER:\t\tIF ON\n#\tLPDPHASE\t\tGO TO PURGENCY\n#\tPULSES\t\t\tMINIMUM PULSE LOTIC\n#\tDETENT(BIT15 CH31)\tRATE COMMAND\n#\tGOTO TO PURGENCY\n\n\t\tCA\tBIT13\t\t# CHECK STICK IF IN ATT. HOLD.\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZF\tMANMODE\n\n\t\tCA\tDAPBOOLS\n\t\tMASK\tXOVINHIB\n\t\tCCS\tA\n\t\tTCF\tPURGENCY\t# ATTITUDE STEER DURING VISIBILITY PHASE\n\n\t\tTCF\tDETENTCK\nMANMODE\t\tCA\tPULSES\t\t# PULSES IS ONE FOR PULSE MODE\n\t\tMASK\tDAPBOOLS\n# Page 1431\n\t\tEXTEND\n\t\tBZF\tDETENTCK\t# BRANCH FOR RATE COMMAND\n\n\t\tCA\tZERO\n\t\tTS\tPERROR\n\n# MINIMUM IMPULSE MODE\n\n\t\tCA\tCDUX\n\t\tTS\tCDUXD\n\n\t\tCCS\tOLDPMIN\n\t\tTCF\tCHECKP\n\nFIREP\t\tCA\tBIT3\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZF\t+XMIN\n\n\t\tCA\tBIT4\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZF\t-XMIN\n\n\t\tTCF\tJETSOFF\n\nCHECKP\t\tEXTEND\n\t\tREAD\tCHAN31\n\t\tCS\tA\n\t\tMASK\tOCT14\n\t\tTS\tOLDPMIN\n\t\tTCF\tJETSOFF\n\n-XMIN\t\tCS\tTEN\t\t# ANYTHING LESS THAN 14MS. CORRECTED\n\t\tTCF\t+2\t\t#\tIN JET SELECTION ROUTINE\n+XMIN\t\tCA\tTEN\n\t\tTS\tTJP\n\t\tCA\tONE\n\t\tTS\tOLDPMIN\n\t\tTCF\tPJETSLEC -6\n\n# \t\t\t\t\tMANUAL RATE COMMAND MODE\n# \t\t\t\t\t========================\n# \t\t\t\t\t  BY ROBERT F. STENGEL\n#\n# THIS MODE PROVIDES RCAH MANUAL CONTROL THRU 2 CONTROL LAWS:  1) DIRECT RATE AND 2) PSEUDO-AUTO.\n# THE DIRECT RATE MODE AFFORDS IMMEDIATE CONTROL WITHOUT OVERSHOOT.  THE PSEUDO-AUTO MODE PROVIDES PRECISE\n# RATE CONTROL AND ATTITUDE HOLD.\n#\n# Page 1432\n# IN DIRECT RATE, JETS ARE FIRED WHEN STICK POSITION CHANGES BY A FIXED NUMBER OF INCREMENTS IN ONE DAP CYCLE.\n# THE `BREAKOUT LEVEL' IS .6 D/S FOR LM-ONLY AND .3 D/S FOR CSM-DOCKED.  THIS LAW NULLS THE RATE ERROR TO WITHIN\n# THE `TARGET DEADBAND', WHICH EQUALS THE BREAKOUT LEVEL.\n#\n# IN PSEUDO-AUTO, BODY-FIXED RATE AND ATTITUDE ERRORS ARE SUPPLIED TO TJETLAW, WHICH EXERCISES CONTROL.\n# CONTROL SWITCHES FROM DIRECT RATE TO PSEUDO-AUTO IF THE TARGET DB IS ACHIEVED OR IF TIME IN (1) EXCEEDS 4 SEC.\n# IF THE INITIAL COMMAND DOES NOT EXCEED THE BREAKOUT LEVEL, CONTROL GOES TO PSEUDO-AUTO IMMEDIATELY.\n#\n# SINCE P-AXIS CONTROL IS SEPARATE FROM Q,R AXES CONTROL, IT IS POSSIBLE TO USE (1) IN P-AXIS AND (2) IN Q,R AXES,\n# OR VICE VERSA.  THIS ALLOWS A DEGREE OF ATTITUDE HOLD IN UNCONTROLLED AXES.  DUE TO U,V CONTROL, HOWEVER, Q AND\n# R AXES ARE COUPLED AND MUST USE THE SAME CONTROL LAW.\n#\n# HAND CONTROLLER COMMANDS ARE SCALED BY A LINEAR/QUADRATIC LAW.  FOR THE LM-ALONE, MAXIMUM COMMANDED RATES ARE 20\n# AND 4 D/S IN NORMAL AND FINE SCALING; HOWEVER, STICK SENSITIVITY AT ZERO COUNTS (OBTAINED AT A STICK DEFLECTION\n# OF 2 DEGREES FROM THE CENTERED POSITION) IS .5 OR .1 D/S PER DEGREE.  NORMAL AND FINE SCALINGS FOR THE CSM-DOCKED\n# CASE IS AUTOMATICALLY SET TO 1/10 THE ABOVE VALUES.  SCALING IS DETERMINED IN ROUTINE 3.\n#\n# ZEROENBL\tENABLES COUNTERS SO THEY CAN BE READ NEXT TIME\n# JUSTOUT\tFIRST DETECTION OF OUT OF DETENT (BY OURRCBIT)\n\nDETENTCK\tEXTEND\n\t\tREAD\tCHAN31\n\t\tTS\tCH31TEMP\n\t\tMASK\tBIT15\t\t# CHECK OUT-OF-DETENT BIT.\n\t\tEXTEND\n\t\tBZF\tRHCMOVED\t# BRANCH IF OUT OF DETENT.\n\t\tCAF\tOURRCBIT\t# IN DETENT.  CHECK THE RATE COMMAND BIT.\n\t\tMASK\tDAPBOOLS\n\t\tEXTEND\n\t\tBZF\tPURGENCY\t# BRANCH IF NOT IN RATE COMMAND LAST PASS.\n\n# ................................................................................\n\n\t\tCA\tBIT9\t\t# JUST IN DETENT??\n\t\tMASK\tRCSFLAGS\n\t\tEXTEND\n\t\tBZF\tRUTH\n\t\tCAF\tBIT13\t\t# CHECK FOR ATTITUDE HOLD.\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZF\tRATEDAMP\t# BRANCH IF IN ATTITUDE HOLD.\n\n\t\tCS\tBITS9,11\t# IN AUTO.\n\t\tMASK\tRCSFLAGS\t# (X-AXIS OVERRIDE)\n\t\tTS\tRCSFLAGS\t# ZERO ORBIT (BIT 11) AND JUST-IN BIT (9).\n\t\tTCF\tRATEDAMP\n\nRUTH\t\tCA\tRCSFLAGS\n\t\tMASK\tPBIT\t\t# IN ATTITUDE HOLD.\n\t\tEXTEND\n\t\tBZF\t+2\t\t# BRANCH IF P-RATE DAMPING IS FINISHED.\n\t\tTCF\tRATEDAMP\n\n# Page 1433\n\t\tCA\tRCSFLAGS\n\t\tMASK\tQRBIT\n\t\tEXTEND\n\t\tBZF\tRATEDONE\t# BRANCH IF Q,R RATE DAMPING IS FINISHED.\n\t\tTCF\tRATEDAMP\n\n# ============================================\n\n1/10SEC\t\tOCT\t1\n40CYC\t\tOCT\t50\nPQRBIT\t\tOCT\t74777\nBITS9,11\tEQUALS\tEBANK5\nLINRATP\t\tDEC\t46\n\n# ============================================\n\nRATEDONE\tCS\tOURRCBIT\t# MANUAL COMMAND AND DAMPING COMPLETED IN\n\t\tINHINT\t\t\t# ALL AXES.\n\t\tMASK\tDAPBOOLS\n\t\tTS\tDAPBOOLS\n\n# READ CDUS INTO CDU DESIRED REGISTERS\n\n\t\tCAF\tBIT13\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZF\t+4\n\t\tCA\tCDUX\t\t# (X-AXIS OVERRIDE)\n\t\tTS\tCDUXD\n\t\tTC\t+3\n\t\tTC\tIBNKCALL\n\t\tFCADR\tZATTEROR\n\t\tRELINT\n\t\tTCF\tPURGENCY\n\n\t\tTS\tPERROR\nJUSTOUT\t\tCA\tOURRCBIT\t# INITIALIZATION -- FIRST MANUAL PASS.\n\t\tADS\tDAPBOOLS\n\t\tCA\tZERO\n\t\tTS\tDXERROR\n\t\tTS\tDXERROR +1\n\t\tTS\tDYERROR\n\t\tTS\tDYERROR +1\n\t\tTS\tDZERROR\n\t\tTS\tDZERROR +1\n\t\tTS\tPLAST\n\t\tTS\tQLAST\n\t\tTS\tRLAST\n\t\tTS\tQ-RHCCTR\n\t\tTS\tR-RHCCTR\n\t\tCA\tPQRBIT\n\t\tMASK\tRCSFLAGS\n\t\tTS\tRCSFLAGS\t# BITS 10 AND 11 OF RCSFLAGS ARE 0.\n# Page 1434\n\t\tCS\tRCSFLAGS\t# SET 'JUST-IN' BIT TO 1.\n\t\tMASK\tBIT9\n\t\tADS\tRCSFLAGS\n\t\tTC\tZEROENBL\n\t\tTCF\tJETSOFF\nZEROENBL\tLXCH\tR-RHCCTR\n\t\tCA\tQ-RHCCTR\n\t\tDXCH\tSAVEHAND\n\t\tCA\tZERO\n\t\tTS\tP-RHCCTR\n\t\tTS\tQ-RHCCTR\n\t\tTS\tR-RHCCTR\n\t\tCA\tBITS8,9\n\t\tEXTEND\n\t\tWOR\tCHAN13\t\t# COUNTERS ZEROED AND ENABLED\n\t\tTC\tQ\nRATEDAMP\tCA\tZERO\n\t\tTS\tP-RHCCTR\n\t\tTCF\tRATERROR\n\nRHCMOVED\tCA\tOURRCBIT\t# P CONTROL\n\t\tMASK\tDAPBOOLS\n\t\tEXTEND\n\t\tBZF\tJUSTOUT -1\nRATERROR\tCA\tCDUX\t\t# FINDCDUW REQUIRES THAT CDUXD=CDUX DURING\n\t\tTS\tCDUXD\t\t# X-AXIS OVERRIDE\n\t\tCCS\tP-RHCCTR\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\t+1\n\t\tDOUBLE\t\t\t# LINEAR/QUADRATIC CONTROLLER SCALING\n\t\tDOUBLE\t\t\t# (SEE EXPLANATION OF Q,R-AXES RCS\n\t\tAD\tLINRATP\t\t# AUTOPILOT)\n\t\tEXTEND\n\t\tMP\tP-RHCCTR\n\t\tCA\tL\n\t\tEXTEND\n\t\tMP\tSTIKSENS\n\t\tXCH\tPLAST\n\t\tCOM\n\t\tAD\tPLAST\n\t\tTS\tDAPTEMP1\n\t\tTC\tZEROENBL\t# INTERVAL.  ZERO AND ENABLE ACA COUNTERS.\n\t\tCS\tPLAST\n\t\tAD\tOMEGAP\n\t\tTS\tEDOTP\n\t\tCCS\tDAPTEMP1\t# IF P COMMAND CHANGE EXCEEDS BREAKOUT\n\t\tTCF\t+3\t\t# LEVEL, GO TO DIRECT RATE CONTROL.  IF NOT\n\t\tTCF\t+8D\t\t# CHECK FOR DIRECT RATE CONTROL LAST TIME.\n\t\tTCF\t+1\n# Page 1435\n\t\tAD\t-RATEDB\n\t\tEXTEND\n\t\tBZMF\t+4\n\t\tCA\t40CYC\n\t\tTS\tTCP\n\t\tTC\tPEGI\n\t\tCA\tRCSFLAGS\t# CHECK FOR DIRECT RATE COMMAND LAST TIME.\n\t\tMASK\tPBIT\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tPEGI\t\t# TO PURE RATE COMMAND\n\t\tCA\tDXERROR\t\t# PSEUDO-AUTO CONTROL.\n\t\tTS\tE\t\t# X-ATTITUDE ERROR (SP)\n\t\tTS\tPERROR\t\t# LOAD P-AXIS ERROR FOR MODE1 FDAI DISPLAY\n\t\tTC\tPURGENCY +4\nPEGI\t\tCA\tCDUX\t\t# DIRECT RATE CONTROL.\n\t\tTS\tCDUXD\n\t\tCA\tZERO\n\t\tTS\tDXERROR\n\t\tTS\tDXERROR +1\n\t\tTS\tPERROR\t\t# ZERO P-AXIS ERROR FOR MODE1 FDAI DISPLAY\n\t\tCCS\tEDOTP\n\t\tTC\t+3\n\t\tTC\t+2\n\t\tTC\t+1\n\t\tTS\tABSEDOTP\n\t\tAD\tTARGETDB\n\t\tEXTEND\t\t\t# IF RATE ERROR IS LESS THAN DEADBANK,\n\t\tBZMF\tLAST\t\t# FIRE, AN SWITCH TO PSEUDO-AUTO.\n\t\tCA\tTCP\n\t\tEXTEND\t\t\t# IF TIME IN RATE COMMAND EXCEEDS 4 SEC.\n\t\tBZMF\tLAST\n\t\tCS\tRCSFLAGS\n\t\tMASK\tPBIT\n\t\tADS\tRCSFLAGS\t# BIT 10 IS 1.\n\t\tTCF\t+4\nLAST\t\tCS\tPBIT\n\t\tMASK\tRCSFLAGS\n\t\tTS\tRCSFLAGS\t# BIT 10 IS 0.\n\t\tCS\tEDOTP\n\t\tEXTEND\n\t\tMP\t1/ANETP\t\t# 1/2JTACC SCALED AT 2EXP(7)/PI\n\t\tDAS\tA\n\t\tTC\tOVERSUB\n\t\tEXTEND\n\t\tMP\t25/32\t\t# A CONTAINS TJET SCALED AT 2EXP(4)(16/25)\n\t\tTS\tTJP\t\t# 4.JET TIME\n\t\tCA\tABSEDOTP\n\t\tAD\t-2JETLIM\t# COMPARING DELTA RATE WITH 2 JET LIMIT\n\t\tEXTEND\n# Page 1436\n\t\tBZMF\t+3\n\n\t\tCA\tSIX\n\t\tTCF\t+8D\n\t\tCA\tTJP\n\t\tADS\tTJP\n\n# GOES TO PJETSLEC FOR TWO JETS\n# P-JET-SELECTION-ROUTINE (ROTATION)\n#\n# INPUT:\tNUMBERT\t\t4,5,6 FOR WHICH PAIR OR 4 JETS\n#\t\tTJP\t\t+ FOR +P ROTATION\n#\n# OUTPUT:\tCHANNEL 6\n#\t\tPJUMPADR\tFOR P-AXIS SKIP\n#\t\t(JTLST CALL)\t(SMALL TJP)\n#\n# ORDER OF POLICIES TRIED IN CASE OF FAILURE.\n#\t+P\t-P\n#\t7,15\t8,16\n#\t4,12\t3,11\n#\t4,7\t8,11\n#\t7,12\t11,16\n#\t12,15\t3,16\n#\t4,15\t3,8\n#\tALARM\tALARM\n\n\t\tCA\tAORBSYST\n\t\tMASK\tDAPBOOLS\n\t\tCCS\tA\n\t\tCA\tONE\n\t\tAD\tFOUR\n\t\tTS\tNUMBERT\nPJETSLEC\tCA\tONE\n\t\tTS\tL\n\t\tCCS\tTJP\n\t\tTCF\t+5\n\t\tTCF\tJETSOFF\n\t\tTCF\t+2\n\t\tTCF\tJETSOFF\n\t\tZL\n\t\tAD\tONE\n\t\tTS\tABSTJ\n\t\tLXCH\tROTINDEX\n\t\tTC\tSELECTP\n\t\tCS\tSIX\n\t\tAD\tNUMBERT\n\t\tEXTEND\n\t\tBZF\t+2\n\n\t\tCS\tTWO\n\n# Page 1437\n\t\tAD\tFOUR\n\t\tTS\tNO.PJETS\n\t\tCA\tPOLYTEMP\n\t\tTC\tWRITEP\n\t\tCS\tABSTJ\n\t\tAD\t+150MST6\n\t\tEXTEND\n\t\tBZMF\tQRAXIS\t\t# GO TO QRAXIS OR TO GTS.\n\n\t\tAD\t-136MST6\n\t\tEXTEND\n\t\tBZMF\t+5\n\n\t\tADS\tABSTJ\n\t\tINDEX\tROTINDEX\n\t\tCA\tMINTIMES\n\t\tTS\tTJP\n\n\t\tCA\tABSTJ\n\t\tZL\n\t\tINHINT\n\t\tDXCH\tT6FURTHA\n\t\tTC\tIBNKCALL\n\t\tCADR\tJTLST\n\t\tCS\tBIT12\n\t\tMASK\tRCSFLAGS\n\t\tTS\tRCSFLAGS\t# BIT 12 SET TO 0.\n\t\tTC\tALTSYST\n\t\tTCF\tQRAXIS\n\nALTSYST\t\tCA\tDAPBOOLS\t# ALTERNATE P-AXIS JETS\n\t\tTS\tL\n\t\tCA\tAORBSYST\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tDAPBOOLS\n\t\tRELINT\n\t\tTC\tQ\n\nDKALT\t\tTC\tALTSYST\n\nJETSOFF\t\tTC\tWRITEP \t-1\n\t\tCA\tZERO\n\t\tTS\tTJP\n\t\tTCF\tQRAXIS\n\n# (NOTE -- M13 = 1 IDENTICALLY IMPLIES NULL MULTIPLICATION.)\n\nCALCPERR\tCA\tCDUY\t\t# P-ERROR CALCULATION.\n\t\tEXTEND\n\t\tMSU\tCDUYD\t\t# CDU VALUE -- ANGLE DESIRED (Y-AXIS)\n# Page 1438\n\t\tEXTEND\n\t\tMP\tM11\t\t# (CDUY-CDUYD)M11 SCALED AT PI RADIANS\n\t\tXCH\tE\t\t# SAVE FIRST TERM (OF TWO)\n\t\tCA\tCDUX\t\t# THIRD COMPONENT\n\t\tEXTEND\n\t\tMSU\tCDUXD\t\t# CDU VALUE -- ANGLE DESIRED (X-AXIS)\n#\t\tEXTEND\n#\t\tMP\tM13\n\t\tAD\tDELPEROR\t# KALCMANU INTERFACE ERROR.\n\t\tADS\tE\t\t# SAVE SUM OF TERMS.  COULD BE OVERFLOW.\n\t\tXCH\tPERROR\t\t# SAVE P-ERROR FOR EIGHT-BALL DISPLAY.\n\t\tTC\tQ\t\t# RETURN TO CALLER\n\n# P-AXIS URGENCY FUNCTION CALCULATION.\n\nPURGENCY\tTC\tCALCPERR\t# CALCULATE P-AXIS ERRORS.\n\t\tCS\tOMEGAPD\t\t# THIS CODING IS COMMON TO BOTH LM DAP AND\n\t\tAD\tOMEGAP\t\t# SPS-BACKUP MODE.\n\t\tTS\tEDOTP\t\t# EDOTP = OMEGAP - OMEGAPD AT PI/4 RAD/SEC\n\n\t\tCS\tONE\n\t\tTS\tAXISCTR\n\t\tCA\tDAPBOOLS\n\t\tMASK\tCSMDOCKD\n\t\tEXTEND\n\t\tBZF\tHEADTJET\n\t\tINHINT\t\t\t# IF CSMDOCKD = 1, GOT TO DOCKED RCS LOGIC\n\t\tTC\tIBNKCALL\n\t\tCADR\tSPSRCS\n\n\t\tCA\tTJP\n\t\tEXTEND\n\t\tBZF\tDKALT\t\t# IF TJP = ZERO, CHANGE AORBSYST.\n\t\tRELINT\n\t\tTCF\tPJETSLEC -6\t# SELECT AORBSYST AND USE TWO JETS.\nHEADTJET\tCA\tZERO\n\t\tTS\tSENSETYP\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tTJETLAW\n\t\tRELINT\n\n\t\tCS\tFIREFCT\n\t\tAD\t-FOURDEG\n\t\tEXTEND\n\t\tBZMF\tPJETSLEC -6\n\t\tCCS\tTJP\n\t\tTCF\t+2\n\t\tTCF\tJETSOFF\n# Page 1439\n\t\tAD\t-160MST6\n\t\tEXTEND\n\t\tBZMF\tPJETSLEC -6\n\t\tCA\tSIX\n\t\tTCF\tPJETSLEC -1\n-160MST6\tDEC\t-256\n-FOURDEG\tDEC\t-.08888\n\n# Page 1440\n# JET POLICY CONSTRUCTION SUBROUTINE\n#\n# INPUT:\tROTINDEX, NUMBERT\n#\n# OUTPUT:\tPOLYTEMP (JET POLICY)\n#\n# THIS SUBROUTINE SELECT A SUBSET OF THE DESIRED JETS WHICH HAS NO FAILURE\n\nSELECTP\t\tCA\tSIX\n\t\tTS\tTEMPNUM\n\t\tINDEX\tNUMBERT\n\t\tCA\tTYPEP\n\t\tINDEX\tROTINDEX\n\t\tMASK\tJETSALL\n\t\tTS\tPOLYTEMP\n\t\tMASK\tCH6MASK\n\t\tCCS\tA\n\t\tTCF\t+2\n\t\tTC\tQ\n\t\tCCS\tTEMPNUM\n\t\tTCF\t+4\n\t\tTC\tALARM\n\t\tOCT\t02003\n\t\tTCF\tJETSOFF\t\t# ********** TCF ALARMJET **********\nSELECTYZ\tTS\tNUMBERT\n\t\tTCF\tSELECTP\t+1\n -1\t\tTCF\tABORTYZ +2\nJETSALL\t\tOCT\t00252\n\t\tOCT\t00125\t\t# +P\n\t\tOCT\t00140\t\t# -Y\n\t\tOCT\t00006\t\t# -Z\n\t\tOCT\t00220\t\t# +Y\n\t\tOCT\t00011\t\t# +Z\n\t\tOCT\t00151\t\t# +V\nTYPEP\t\tOCT\t00146\t\t# -U\n\t\tOCT\t00226\t\t# -V\n\t\tOCT\t00231\t\t# +U\n\t\tOCT\t00151\t\t# +V\n\t\tOCT\t00132\t\t# 1-3\n\t\tOCT\t00245\t\t# 2-4\n\t\tOCT\t00377\t\t# ALL\nINDXYZ\t\t=\t-136MST6\n-136MST6\tDEC\t-218\n\t\tDEC\t4\n\t\tDEC\t2\n\t\tOCT\t07776\n\t\tDEC\t5\n\t\tDEC\t9\n\t\tDEC\t10\n\t\tOCT\t07776\n\t\tDEC\t3\n# Page 1441\n\t\tDEC\t8\n\t\tDEC\t7\n\t\tOCT\t07776\t\t# THESE INDEXES OF MASK JETSALL WILL\n\t\tOCT\t07776\t\t# CHANGE THE INSTRUCTION AT SELECTP +4\n\t\tOCT\t07776\t\t# TO BE\t\tTC JETSALL -1\n\t\tOCT\t07776\t\t# ONLY USED FOR TRANSLATION FAILURE\n\t\tOCT\t07776\n+150MST6\tDEC\t240\n07400OCT\tOCT\t07400\n\n# T-JET LAW FIXED CONSTANTS\n\nNORMSCL\t\tOCT\t266\n-100MS\t\tDEC\t-.1\n200MS\t\tDEC\t.2\n25/32\t\t=\tPRIO31\t\t# (DEC .78125)\nBITS8,9\t\tOCTAL\t00600\n1/40\t\tDEC\t.02500\nMINTIMES\tDEC\t-22\n\t\tDEC\t22\nPSKIPADR\tGENADR\tSKIPPAXS\n\n# GOES TO Q,R-AXES RCS AUTOPILOT\n\nQRAXIS\t\tCS\tOMEGARD\n\t\tAD\tOMEGAR\n\t\tTC\tOVERSUB\n\t\tTS\tEDOTR\n\t\tCS\tOMEGAQD\n\t\tAD\tOMEGAQ\n\t\tTC\tOVERSUB\n\t\tTS\tEDOTQ\n\t\tEXTEND\n\t\tDCA\tQERRCALL\n\t\tDTCB\n\n\t\tEBANK=\tAOSQ\nQERRCALL\t2CADR\tCALLQERR\n"
  },
  {
    "path": "Luminary099/P12.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP12.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t838-842\n# Mod history:\t2009-05-23 HG\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 838\n\t\tBANK\t24\n\t\tSETLOC\tP12\n\t\tBANK\n\n\t\tEBANK=\tDVCNTR\n\t\tCOUNT*\t$$/P12\n\nP12LM\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\t\t# CHECK THE STATUS OF THE IMU.\n\n\t\tTC\tUPFLAG\n\t\tADRES\tMUNFLAG\n\n\t\tTC\tUPFLAG\t\t# INSURE 4-JET TRANSLATION CAPABILITY.\n\t\tADRES\tACC4-2FL\n\n\t\tTC\tUPFLAG\t\t# PREVENT R10 FROM ISSUING CROSS-POINTER\n\t\tADRES\tR10FLAG\t\t# OUTPUTS.\n\n\t\tTC\tCLRADMOD\t# INITIALIZE RADMODES FOR R29.\n\n\t\tTC\tDOWNFLAG\t# CLEAR RENDEZVOUS FLAG FOR P22\n\t\tADRES\tRNDVZFLG\n\n\t\tCAF\tTHRESH2\t\t# INITIALIZE DVMON\n\t\tTS\tDVTHRUSH\n\t\tCAF\tFOUR\n\t\tTS\tDVCNTR\n\n\t\tCA\tZERO\n\t\tTS\tTRKMKCNT\t# SHOW THAT R29 DOWNLINK DATA ISN'T READY.\n\t\tCAF\tV06N33A\n\t\tTC\tBANKCALL\t# FLASH TIG\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTCF\t+2\t\t# PROCEED\n\t\tTCF\t-5\t\t# ENTER\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\n\t\tCALL\t\t\t# INITIALZE WM AND /LAND/\n\t\t\tGUIDINIT\n\t\tSET\tCALL\n\t\t\tFLPI\n\t\t\tP12INIT\n# Page 839\nP12LMB\t\tDLOAD\n\t\t\t(TGO)A\t\t# SET TGO TO AN INITIAL NOMINAL VALUE.\n\t\tSTODL\tTGO\n\t\t\tTIG\n\t\tSTCALL\tTDEC1\n\t\t\tLEMPREC\t\t# ROTATE THE STATE VECTORS TO THE\n\t\tVLOAD\tMXV\t\t# IGNITION TIME.\n\t\t\tVATT\n\t\t\tREFSMMAT\n\t\tVSL1\n\t\tSTOVL\tV1S\t\t# COMPUTE V1S = VEL(TIG)*2(-7)M/CS.\n\t\t\tRATT\n\t\tMXV\tVSL6\n\t\t\tREFSMMAT\n\t\tSTCALL\tR\t\t# COMPUTE R = POS(TIG)*2(-24)M.\n\t\t\tMUNGRAV\t\t# COMPUTE GDT1/2(TIG)*2(-7)M/CS.\n\t\tVLOAD\tUNIT\n\t\t\tR\n\t\tSTCALL\tUNIT/R/\t\t# COMPUTE UNIT/R/ FOR YCOMP.\n\t\t\tYCOMP\n\t\tSR\tDCOMP\n\t\t\t5D\n\t\tSTODL\tXRANGE\t\t# INITIALIZE XRANGE FOR NOUN 76.\n\t\t\tVINJNOM\n\t\tSTODL\tZDOTD\n\t\t\tRDOTDNOM\n\t\tSTORE\tRDOTD\n\t\tEXIT\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\nNEWLOAD\t\tCAF\tV06N76\t\t# FLASH CROSS-RANGE, AND APOLUNE VALUES.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTCF\t+2\t\t# PROCEED\n\t\tTCF\tNEWLOAD\t\t# ENTER NEW DATA.\n\n\t\tCAF\tP12ADRES\n\t\tTS\tWHICH\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\n\t\tDLOAD\tSL\n\t\t\tXRANGE\n\t\t\t5D\n\t\tDAD\n# Page 840\n\t\t\tY\n\t\tSTOVL\tYCO\n\t\t\tUNIT/R/\n\t\tVXSC\tVAD\n\t\t\t49FPS\n\t\t\tV1S\n\t\tSTORE\tV\t\t# V(TIPOVER) = V(IGN) + 57FPS (UNIT/R/)\n\t\tDOT\tSL1\n\t\t\tUNIT/R/\n\t\tSTOVL\tRDOT\t\t# RDOT * 2(-7)\n\t\t\tUNIT/R/\n\t\tVXV\tUNIT\n\t\t\tQAXIS\n\t\tSTORE\tZAXIS1\n\t\tSETGO\n\t\t\tFLVR\n\t\t\tASCENT\nP12RET\t\tDLOAD\n\t\t\tATP\t\t# ATP(2)*2(18)\n\t\tDSQ\tPDDL\n\t\t\tATY\t\t# ATY(2)*2(18)\n\t\tDSQ\tDAD\n\t\tBZE\tSQRT\n\t\t\tYAWDUN\n\t\tSL1\tBDDV\n\t\t\tATY\n\t\tARCSIN\nYAWDUN\t\tSTOVL\tYAW\n\t\t\tUNFC/2\n\t\tUNIT\tDOT\n\t\t\tUNIT/R/\n\t\tSL1\tARCCOS\n\t\tDCOMP\n\t\tSTORE\tPITCH\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tFLPI\n\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tPFLITEDB\n\t\tRELINT\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tBURNBABY\n\nP12INIT\t\tDLOAD\t\t\t# INITIALIZE ENGINE DATA.  USED FOR P12 AND\n# Page 841\n\t\t\t(1/DV)A\t\t# P71.\n\t\tSTORE\t1/DV3\n\t\tSTORE\t1/DV2\n\t\tSTODL\t1/DV1\n\t\t\t(AT)A\n\t\tSTODL\tAT\n\t\t\t(TBUP)A\n\t\tSTODL\tTBUP\n\t\t\tATDECAY\n\t\tDCOMP\tSL\n\t\t\t11D\n\t\tSTORE\tTTO\n\t\tSLOAD\tDCOMP\n\t\t\tAPSVEX\n\t\tSR2\n\t\tSTORE\tVE\n\t\tBOFF\tRVQ\n\t\t\tFLAP\n\t\t\tCOMMINIT\nCOMMINIT\tDLOAD\tDAD\t\t# INITIALIZE TARGET DATA.  USED BY P12, P70\n\t\t\tHINJECT\t\t# AND P71 IF IT DOES NOT FOLLOW P70.\n\t\t\t/LAND/\n\t\tSTODL\tRCO\n\t\t\tHI6ZEROS\n\t\tSTORE\tTXO\n\t\tSTORE\tYCO\n\t\tSTORE\tRDOTD\n\t\tSTOVL\tYDOTD\n\t\t\tVRECTCSM\n\t\tVXV\tMXV\n\t\t\tRRECTCSM\n\t\t\tREFSMMAT\n\t\tUNIT\n\t\tSTORE\tQAXIS\n\t\tRVQ\nP12ADRES\tREMADR\tP12TABLE\n\n\t\tSETLOC\tP12A\n\t\tBANK\n\t\tCOUNT*\t$$/P12\n\nGUIDINIT\tSTQ\tSETPD\n\t\t\tTEMPR60\n\t\t\t0D\n\t\tVLOAD\tPUSH\n\t\t\tUNITZ\n\t\tRTB\tPUSH\n\t\t\tLOADTIME\n\t\tCALL\n\t\t\tRP-TO-R\n# Page 842\n\t\tMXV\tVXSC\n\t\t\tREFSMMAT\n\t\t\tMOONRATE\n\t\tSTOVL\tWM\n\t\t\tRLS\n\t\tABVAL\tSL3\n\t\tSTCALL\t/LAND/\n\t\t\tTEMPR60\n\n49FPS\t\t2DEC\t.149352 B-6\t# EXPECTED RDOT AT TIPOVER\nVINJNOM\t\t2DEC\t16.7924 B-7\t# 5509.5 FPS(APO=30NM WITH RDOT=19.5FPS)\nRDOTDNOM\t2DEC\t.059436 B-7\t# 19.5 FPS\n"
  },
  {
    "path": "Luminary099/P20-P25.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP20-P25.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t0492-0613\n# Mod history:\t2009-05-26 OH\tTranscribed from page images.\n#\t\t2009-06-05 RSB\tCorrected a typos.\n#\t\t2009-06-06 RSB\tAdded a missing instruction, and a block\n#\t\t\t\tof 3 missing instructions.\n#\t\t2009-06-07 RSB\tFixed a misprint.\n#\t\t2009-06-07 RSB\tChanged the construct \"2DEC E-6 B12\"\n#\t\t\t\t(which isn't legal in yaYUL) to\n#\t\t\t\t\"2DEC 1.0 E-6 B12\".\n#\t\t2011-05-07 JL\tRemoved workarounds.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 492\n# RENDEZVOUS NAVIGATION PROGRAM 20\n#\n# PROGRAM DESCRIPTION\n#\n# \tMOD NO -- 2\n# \tBY P. VOLANTE\n#\n# FUNCTIONAL DESCRIPTION\n#\n# \tTHE PURPOSE OF THIS PROGRAM IS TO CONTROL THE RENDEZVOUS RADAR FROM\n# \tSTARTUP THROUGH ACQUISITION AND LOCKON TO THE CSM AND TO UPDATE EITHER\n# \tTHE LM OR CSM STATE VECTOR (AS SPECIFIED BY THE ASTRONAUT BY DSKY ENTRY)\n# \tON THE BASIS OF THE RR TRACKING DATA.\n#\n# CALLING SEQUENCE --\n#\n# \tASTRONAUT REQUEST THROUGH DSKY V37E20E\n#\n# SUBROUTINES CALLED\n#\n#\tR02BOTH\t(IMU STATUS CHECK)\t\t\tFLAGUP\n#\tGOFLASH\t(PINBALL-DISPLAY)\t\t\tFLAGDOWN\n#\tR23LEM\t(MANUAL ACQUISITION)\t\t\tBANKCALL\n#\tLS201\t(LOS DETERMINATION)\t\t\tTASKOVER\n#\tLS202\t(RANGE LIMIT TEST)\n#\tR61LEM\t(PREFERRED TRACKING ATTITUDE)\n#\tR21LEM\t(RR DESIGNATE)\t\t\t\tENDOFJOB\n#\tR22LEM\t(DATA READ)\t\t\t\tGOPERF1\n#\tR31LEM\t(RENDEZVOUS PARAMETER DISPLAY)\n#\tPRIOLARM (PRIORITY DISPLAY)\n#\n# NORMAL EXIT MODES --\n#\n# \tP20 MAY BE TERMINATED IN TWO WAYS -- ASTRONAUT SELECTION OF IDLING\n#\tPROGRAM (P00) BY KEYING V37E00E OR BY KEYING IN V56E\n#\n# ALARM OR ABORT EXIT MODES --\n#\n# \tRANGE GREATER THAN 400 NM DISPLAY\n#\n# OUTPUT\n#\n# \tTRKMKCNT = NO OF RENDEZVOUS TRACKING MARKS TAKEN (COUNTER)\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n# FLAGS SET + RESET\n#\n#\tSRCHOPT, RNDVZFLG, ACMODFLG, VEHUPFLG, UPDATFLG, TRACKFLG\n#\n# DEBRIS\n#\n#\tCENTRALS -- A,Q,L\n\n\t\tSBANK=\tLOWSUPER\t# FOR LOW 2CADR'S.\n\n\t\tBANK\t33\n\t\tSETLOC\tP20S\n\t\tBANK\n\n\t\tEBANK=\tLOSCOUNT\n\t\tCOUNT*\t$$/P20\nPROG22\t\t=\tPROG20\nPROG20\t\tTC\t2PHSCHNG\n\t\tOCT\t4\n\t\tOCT\t05022\n\t\tOCT\t26000\t\t# PRIORITY 26\n\t\tTC\tLUNSFCHK\t# CHECK IF ON LUNAR SURFACE\n# Page 493\n\t\tTC\tORBCHGO\t\t# YES\n\t\tTC\tPROG20A -2\t# NO -- CONTINUE WITH P20\nORBCHGO\t\tTC\tUPFLAG\t\t# SET VEHUPFLG -- CSM STATE\n\t\tADRES\tVEHUPFLG\t# VECTOR TO BE UPDATED\n\t\tCAF\tONE\t\t# SET R2 FOR OPTION CSM WILL NOT\n\t\tTS\tOPTION2\t\t# CHANGE PRESENT ORBIT\n\t\tCAF\tOCT00012\n\t\tTC\tBANKCALL\t# DISPLAY ASSUMED CSM ORBIT OPTION\n\t\tCADR\tGOPERF4\n\t\tTC\tGOTOPOOH\t# TERMINATE\n\t\tTC\tORBCHG1\t\t# PROCEED VALUE OF ASSUMED OPTION OK\n\t\tTC\t-5\t\t# R2 LOADED THRU DSKY\nORBCHG1\t\tCS\tP22ONE\n\t\tAD\tOPTION2\n\t\tEXTEND\n\t\tBZF\tPROG20A\n\t\tCAF\tV06N33*\n\t\tTC\tBANKCALL\t# FLASH VERB-NOUN TO REQUEST ESTIMATED\n\t\tCADR\tGOFLASH\t\t# TIME OF LAUNCH\n\t\tTC\tGOTOPOOH\t# TERMINATE\n\t\tTC\tORBCHG2\t\t# PROCEED VALUES OK\n\t\tTC\t-5\t\t# TIME LOADED THRU DSKY\nORBCHG2\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tORBCHG3\n\t \tBANK\t32\n\t\tSETLOC\tP20S4\n\t\tBANK\n\t\tCOUNT*\t$$/P20\n\nORBCHG3\t\tCALL\n\t\t\tINTSTALL\n\t\tDLOAD\n\t\t\tTIG\n\t\tSTORE\tLNCHTM\n\t\tSTORE\tTDEC1\t\t# ESTIMATED LAUNCH TIME\n\t\tCLEAR\tCLEAR\n\t\t\tVINTFLAG\t# LM INTEGRATION\n\t\t\tINTYPFLG\t# PRECISION -- ENCKE\n\t\tCLEAR\tCLEAR\n\t\t\tDIM0FLAG\t# NO W-MATRIX\n\t\t\tD6OR9FLG\n\t\tCALL\n\t\t\tINTEGRV\t\t# PLANETARY INERTIAL ORIENTATION\n\t\tCALL\n\t\t\tGRP2PC\n\t\tVLOAD\n\t\t\tRATT1\n\t\tSTODL\tRSUBL\t\t# SAVE LM POSITION\n\t\t\tTAT\n# Page 494\n\t\tSTCALL\tTDEC1\n\t\t\tINTSTALL\n\t\tSET\tCLEAR\n\t\t\tVINTFLAG\t# CSM INTEGRATION\n\t\t\tINTYPFLG\n\t\tCLEAR\tBOFF\n\t\t\tDIM0FLAG\n\t\t\tRENDWFLG\t# W MATRIX VALID\n\t\t\tNOWMATX\t\t# NO\n\t\tSET\tSET\t\t# YES -- SET FOR W MATRIX\n\t\t\tDIM0FLAG\n\t\t\tD6OR9FLG\nNOWMATX\t\tCALL\n\t\t\tINTEGRV\t\t# CSM INTEGRATION\n\t\tCALL\n\t\t\tGRP2PC\n\t\tVLOAD\n\t\t\tVATT1\n\t\tSTOVL\tVSUBC\t\t# SAVE CSM POSITION\n\t\t\tRATT1\n\t\tSTORE\tRSUBC\t\t# SAVE CSM POSITION\n\t\tVXV\tUNIT\t\t# COMPUTE NORMAL TO CSM ORBITAL PLANE\n\t\t\tVSUBC\t\t# NSUB1=UNIT(R(CM) CROSS V(CM))\n\t\tSTOVL\t20D\t\t# SAVE NSUB1\n\t\t\tRSUBL\t\t# COMPUTE ESTIMATED ORBITAL\n\t\tVXV\tUNIT\t\t# PLANE CHANGE\n\t\t\t20D\t\t# UCSM = UNIT(R(LM) CROSS NSUB1)\n\t\tSTOVL\tUCSM\n\t\t\tRSUBC\t\t# COMPUTE ANGLE BETWEEN UCSM\n\t\tUNIT\tDOT\t\t# AND RSUBC\n\t\t\tUCSM\t\t# COS A = UCSM DOT UNIT (R(CM))\n\t\tSL1\n\t\tSTORE\tCSTH\t\t# SAVE DOE TIME-THETA SUBROUTINE\n\t\tDSQ\tBDSU\t\t# COMPUTE SINE A\n\t\t\tONEB-2\n\t\tSQRT\n\t\tSTOVL\tSNTH\t\t# SAVE FOR TIME-THETA SUBROUTINE\n\t\t\tRSUBC\t\t# POSITION OF CSM AT EST. LAUNCH\n\t\tSTOVL\tRVEC\t\t# TIME FOR TIME-THETHA\tB-27\n\t\t\tVSUBC\t\t# VELOCITY OF CSM AT EST. LAUNCH.\n\t\tVCOMP\n\t\tSTORE\tVVEC\t\t# TIME FOR TIME THETA \tB-5\n\t\tCLEAR\tCALL\n\t\t\tRVSW\n\t\t\tTIMETHET\n\t\tVCOMP\n\t\tSTORE\tNEWVEL\t\t# TERMINAL VELOCITY OF CSM\n\t\tDLOAD\n\t\t\tT\n\t\tSTOVL\tTRANSTM\t\t# TRANSFER TIME\n# Page 495\n\t\t\tNEWVEL\n\t\tABVAL\n\t\tSTOVL\t20D\n\t\t\t0D\n\t\tSTORE\tNEWPOS\t\t# TERMINAL POSITION OF CSM\n\t\tVXV\tUNIT\t\t# COMPUTE NORMAL TO SCM ORBITAL PLANE\n\t\t\tRSUBL\t\t# NSUB2 = UNIT(NEWPOS CROSS R(LM))\n\t\tVXV\tUNIT\t\t# ROTATE TERMINAL VEL INTO DESIRED\n\t\t\tNEWPOS\t\t# ORBITAL PLANE\n\t\tVXSC\tVSL1\t\t# VSUBC = ABVAL(NEWVEL) $ UNIT (NSUB2\n\t\t\t20D\n\t\tSTCALL\tNCSMVEL\t\t# NEW CSM VELOCITY\n\t\t\tGRP2PC\n\t\tCALL\n\t\t\tINTSTALL\n\t\tDLOAD\tBDSU\n\t\t\tTRANSTM\t\t# LAUNCH TIME -- TRANSFER TIME\n\t\t\tLNCHTM\n\t\tSTOVL\tTET\n\t\t\tNEWPOS\n\t\tSTORE\tRCV\n\t\tSTOVL\tRRECT\n\t\t\tNCSMVEL\n\t\tSTCALL\tVRECT\n\t\t\tMINIRECT\n\t\tAXT,2\tCALL\n\t\t\t2\n\t\t\tATOPCSM\n\t\tCALL\n\t\t\tINTWAKE0\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tPROG20A\n\n\t\tBANK\t24\n\t\tSETLOC\tP20S\n\t\tBANK\n\t\tCOUNT*\t$$/P20\n\n\t\tTC\tDOWNFLAG\t# RESET VEHUPFLG -- LM STATE VECTOR\n\t\tADRES\tVEHUPFLG\t# TO BE UPDATED\nPROG20A\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\n\t\tTC\tUPFLAG\n\t\tADRES\tUPDATFLG\t# SET UPDATE FLAG\n\t\tTC\tUPFLAG\n\t\tADRES\tTRACKFLG\t# SET TRACK FLAG\n\t\tTC\tUPFLAG\n\t\tADRES\tRNDVZFLG\t# SET RENDEZVOUS FLAG\n\t\tTC\tDOWNFLAG\n\t\tADRES\tSRCHOPTN\t# INSURE SEARCH OPTION OFF\n# Page 496\n\t\tTC\tDOWNFLAG\t# ALSO MANUAL ACQUISITION FLAG RESET\n\t\tADRES\tACMODFLG\n\t\tTC\tDOWNFLAG\t# TURN OFF R04FLAG TO ENSURE GETTING\n\t\tADRES\tR04FLAG\t\t# ALARM 521 IF CAN'T READ RADAR\n\t\tTC\tDOWNFLAG\t# ENSURE R25 GIMBAL MONITOR IS ENABLED\n\t\tADRES\tNORRMON\t\t# (RESET NORRMON FLAG)\n\t\tTC\tDOWNFLAG\t# RESET LOS BEING COMPUTED FLAG\n\t\tADRES\tLOSCMFLG\n\t\tTC\tCLRADMOD\nP20LEM1\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCAF\tZERO\t\t# ZERO MARK COUNTER\n\t\tTS\tMARKCTR\n\t\tTC\tINTPRET\t\t# LOS DETERMINATION ROUTINE\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTCALL\tTDEC1\n\t\t\tLPS20.1\n\t\tCALL\n\t\t\tLPS20.2\t\t# TEST RANGE R/UTINE\n\t\tEXIT\n\t\tINDEX\tMPAC\n\t\tTC\t+1\n\t\tTC\tP20LEMA\t\t# NORMAL RETURN WITHIN 400 N M\n526ALARM\tCAF\tALRM526\t\t# ERROR EXIT -- RANGE > 400 N. MI.\n\t\tTC\tBANKCALL\n\t\tCADR\tPRIOLARM\n\t\tTC\tGOTOV56\t\t# TERMINATE EXITS P20 VIA V56 CODING\n\t\tTC\t-4\t\t# PROC (ILLEGAL)\n\t\tTC\tP20LEM1\t\t# ENTER RECYCLE\n\t\tTC\tENDOFJOB\n\nP20LEMA\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tLUNSFCHK\t# CHECK LUNAR SURFACE FLAG (P22 FLAG)\n\t\tTC\tP20LEMB\n\t\tTC\tBANKCALL\n\t\tCADR\tR61LEM\t\t# PREFERRED TRACKING ATTITUDE ROUTINE\nP20LEMB\t\tTC\tPHASCHNG\n\t\tOCT\t05022\t\t# RESTART AT PRIORITY 10 TO ALLOW V37\n\t\tOCT\t10000\t\t# REQUESTED PROGRAM TO RUN FIRST\n\t\tCAF\tPRIO26\t\t# RESTORE PRIORITY 26\n\t\tTC\tPRIOCHNG\n\t\tCA\tFLAGWRD1\t# IS THE TRACK FLAG SET\n\t\tMASK\tTRACKBIT\n\t\tEXTEND\n\t\tBZF\tP20LEMWT\t# BRANCH -- NO -- WAIT FOR IT TO BE SET\nP20LEMB7\tCAF\tBIT2\t\t# IS RR AUTO MODE DISCRETE PRESENT\n\t\tEXTEND\n# Page 497\n\t\tRAND\tCHAN33\n\t\tEXTEND\n\t\tBZF\tP20LEMB3\t# YES -- DO AUTOMATIC ACQUISITION (R21)\n\nP20LEMB5\tCS\tOCT24\t\t# RADAR NOT IN AUTO CHECK IF\n\t\tAD\tMODREG\t\t# MAJOR MODE IS 20\n\t\tEXTEND\n\t\tBZF\tP20LEMB6\t# BRANCH -- YES -- OKAY TO DO PLEASE PERFORM\n\n\t\tAD\tNEG2\t\t# ALSO CHECK FOR P22\n\t\tEXTEND\n\t\tBZF\tP20LEMB6\t# BRANCH -- YES OK TO DO PLEASE PERFORM\n\t\tCAF\tALRM514\t\t# TRACK FLAG SET -- FLASH PRIORITY ALARM 514 --\n\t\tTC\tBANKCALL\t# RADAR GOES OUT OF AUTO MODE WHILE IN USE\n\t\tCADR\tPRIOLARM\n\t\tTC\tGOTOV56\t\t# TERMINATE EXITS VIA V56\n\t\tTC\tP20LEMB\t\t# PROCEED AND ENTER BOTH GO BACK\n\t\tTC\tP20LEMB\t\t# TO CHECK AUTO MODE AGAIN\n\t\tTC\tENDOFJOB\nP20LEMB6\tCAF\tOCT201\t\t# REQUEST RR AUTO MODE SELECTION\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTC\tGOTOV56\t\t# TERMINATE EXITS P20 VIA V56 CODING\n\t\tTC\tP20LEMB\t\t# PROCEED CHECKS AUTO MODE DISCRETE AGAIN\n\t\tTC\tLUNSFCHK\t# ENTER INDICATES MANUAL ACQUISITION (R23)\n\t\tTC\tP20LEMB2\t# YES -- R23 NOT ALLOWED -- TURN ON OPR ERROR\n\t\tTC\tR23LEM\t\t# NO -- DO MANUAL ACQUISITION\n\nP20LEMB1\tTC\tUPFLAG\t\t# RETURN FROM R23 -- LOCKON ACHIEVED\n\t\tADRES\tACMODFLG\t# SET MANUAL FLAG AND GO BACK TO CHECK\n\t\tTC\tP20LEMB\t\t# RR AUTO MODE\n\nP20LEMB2\tTC\tFALTON\t\t# TURNS ON OPERATOR ERROR LIGHT ON DSKY\n\t\tTC\tP20LEMB\t\t# AND GOES BACK TO CHECK AUTO MODE\n\nP20LEMB3\tCS\tRADMODES\t# ARE RR CDUS BEING ZEROED\n\t\tMASK\tRCDU0BIT\n\t\tEXTEND\n\t\tBZF\tP20LEMB4\t# BRANCH -- YES -- WAIT\n\t\tCAF\tBIT13-14\t# IS SEARCH OR MANUAL ACQUISITION FLAG SET\n\t\tMASK\tFLAGWRD2\n\t\tEXTEND\n\t\tBZF\tP20LEMC3\t# ZERO MEANS AUTOMATIC RR ACQUISITION\n\t\tTC\tDOWNFLAG\t# RESET TO AUTO MODE\n\t\tADRES\tSRCHOPTN\n# Page 498\n\t\tTC\tDOWNFLAG\n\t\tADRES\tACMODFLG\n\t\tTC\tP20LEMWT\t# WAIT 2.5 SECONDS THEN GO TO RR DATA READ\n\nP20LEMB4\tCAF\t250DEC\n\t\tTC\tBANKCALL\t# WAIT 2.5 SECONDS WHILE RR CDUS ARE BEING\n\t\tCADR\tDELAYJOB\t# ZEROED -- THEN GO BACK AND CHECK AGAIN\n\t\tTC\tP20LEMB3\n\nP20LEMC3\tTC\tINTPRET\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTCALL\tTDEC1\n\t\t\tUPPSV\nP20LEMC4\tEXIT\nP20LEMC\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCAE\tFLAGWRD0\t# IS THE RENDEZVOUS FLAG SET\n\t\tMASK\tRNDVZBIT\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\t# NO -- EXIT P20\n\t\tCAE\tFLAGWRD1\t# IS TRACK FLAG SET (BIT 5 FLAGWORD 1)\n\t\tMASK\tTRACKBIT\n\t\tEXTEND\n\t\tBZF\tP20LEMD\t\t# BRANCH -- TRACK FLAG NOT ON -- WAIT 15 SECONDS\nP20LEMF\t\tTC\tR21LEM\n\nP20LEMWT\tCAF\t250DEC\n\t\tTC\tTWIDDLE\t\t# USE INSTEAD OF WAITLIST SINCE SAME BANK\n\t\tADRES\tP20LEMC1\t# WAIT 2.5 SECONDS\n\t\tCAE\tFLAGWRD1\t# IS TRACK FLAG SET\n\t\tMASK\tTRACKBIT\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\t# NO -- EXIT WITHOUT DOING 2.7 PHASE CHANGE\nP20LMWT1\tTC\tPHASCHNG\n\t\tOCT\t40072\n\t\tTC\tENDOFJOB\n\nP20LEMC1\tCAE\tFLAGWRD0\t# IS RENDEZVOUS FLAG SET\n\t\tMASK\tRNDVZBIT\n\t\tEXTEND\n\t\tBZF\tTASKOVER\t# NO -- EXIT P20/R22\n\t\tCAE\tFLAGWRD1\t# IS TRACK FLAG SET\n\t\tMASK\tTRACKBIT\n\t\tEXTEND\n\t\tBZF\tP20LEMC2\t# NO -- DON'T SCHEDULE R22 JOB\n# Page 499\n\t\tCAF\tPRIO26\t\t# YES -- SCHEDULE R22 JOB (RR DATA READ)\n\t\tTC\tFINDVAC\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tR22LEM42\n\n\t\tTC\tTASKOVER\n\nP20LEMC2\tTC\tFIXDELAY\t# TRACK FLAG NOT SET, WAIT 15 SECONDS\n\t\tDEC\t1500\t\t# AND CHECK AGAIN\n\n\t\tTC\tP20LEMC1\n\nP20LEMD\t\tCAF\t1500DEC\n\t\tTC\tTWIDDLE\t\t# WAITLIST FOR 15 SECONDS\n\t\tADRES\tP20LEMD1\n\t\tTC\tENDOFJOB\n\nP20LEMD1\tCAE\tFLAGWRD1\t# IS TRACK FLAG SET\n\t\tMASK \tTRACKBIT\n\t\tCCS\tA\n\t\tTCF\tP20LEMD2\t# YES -- SCHEDULE DESIGNATE JOB\n\t\tTC\tFIXDELAY\t# NO -- WAIT 15 SECONDS\n\t\tDEC\t1500\n\t\tTC\tP20LEMD1\n\nP20LEMD2\tCAF\tPRIO26\t\t# SCHEDULE JOB TO DO R21\n\t\tTC\tFINDVAC\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tP20LEMC3\t# START AT PERM.  MEMORY INTEGRATION\n\n\t\tTC\tTASKOVER\n\n250DEC\t\tDEC\t250\nALRM526\t\tOCT\t00526\nOCT201\t\tOCT\t00201\nALRM514\t\tOCT\t514\nMAXTRIES\tDEC\t60\nOCT00012\tOCT\t00012\nP22ONE\t\tOCT\t00001\nONEB-2\t\t2DEC\t1.0 B-2\n\nV06N33*\t\tVN\t0633\nUPPSV\t\tSTQ\tCALL\t\t# UPDATES PERMANENT STATE VECTORS\n\t\t\tLS21X\t\t# \tTO PRESENT TIME\n\t\t\tINTSTALL\n\t\tCALL\n# Page 500\n\t\t\tSETIFLGS\n\t\tBOF\tSET\t\t# IF W-MATRIX INVALID, DON'T INTEGRATE IT\n\t\t\tRENDWFLG\n\t\t\tUPPSV1\n\t\t\tDIM0FLAG\t# SET DIM0FLAG TO INTEGRATE W-MATRIX\n\t\tBON\tSET\n\t\t\tSURFFLAG\t# IF ON LUNAR SURFACE W IS 6X6\n\t\t\tUPPSV5\n\t\t\tD6OR9FLG\t# OTHERWISE 9X9\nUPPSV5\t\tBOF\n\t\t\tVEHUPFLG\n\t\t\tUPPSV3\nUPPSV1\t\tSET\n\t\t\tVINTFLAG\n\t\tCALL\n\t\t\tINTEGRV\n\t\tCALL\t\t\t# GROUP 2 PHASE CHANGE\n\t\t\tGRP2PC\t\t# TO PROTECT INTEGRATION\n\t\tCALL\n\t\t\tINTSTALL\n\t\tDLOAD\tCLEAR\t\t# GET TETCSM TO STORE IN TDEC FOR LM INT.\n\t\t\tTETCSM\n\t\t\tVINTFLAG\nUPPSV4\t\tCALL\t\t\t# INTEGRATE OTHER VEHICLE\n\t\t\tSETIFLGS\t#\tWITHOUT W-MATRIX\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRV\n\t\tBOFF\tVLOAD\n\t\t\tSURFFLAG\n\t\t\tP20LEMC4\n\t\t\tRCVLEM\n\t\tVSR2\n\t\tSTOVL\tLMPOS\n\t\t\tVCVLEM\n\t\tVSR2\n\t\tSTORE\tLMVEL\n\t\tGOTO\n\t\t\tLS21X\n\nUPPSV3\t\tCLEAR\tCALL\n\t\t\tVINTFLAG\n\t\t\tINTEGRV\n\t\tCALL\n\t\t\tGRP2PC\n\t\tCALL\n\t\t\tINTSTALL\n\t\tSET\tDLOAD\n\t\t\tVINTFLAG\n\t\t\tTETLEM\t\t# GET TETLEM TO STORE IN TDEC FOR CSM INT.\n# Page 501\n\t\tGOTO\n\t\t\tUPPSV4\n\t\tEBANK=\tLOSCOUNT\n\t\tCOUNT*\t$$/P22\n\n# Page 502\n# PROGRAM DESCRIPTION\n#\n#\tPREFERRED TRACKING ATTITUDE PROGRAM P25\n#\tMOD NO -- 3\n# \tBY P. VOLANTE\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tTHE PURPOSE OF THIS PROGRAM IS TO COMPUTE THE PREFERRED TRACKING\n# \tATTITUDE OF THE LM TO CONTINUOUSLY POINT THE LM TRTACKING BEACON AT THE\n#\tCSM AND TO PERFORM THE MANEUVER TO THE PREFERRED TRACKING ATTITUDE AND\n# \tCONTINUOUSLY MAINTAIN THIS ATTITUDE WITHIN PRESCRIBED LIMITS.\n#\n# CALLING SEQUENCE --\n#\n#\tASTRONAUT REQUEST THROUGH DSKY V37E25E\n#\n# SUBROUTINES CALLED --\n#\n#\tBANKCALL\t\t\t\t\tFLAGUP\n#\tR02BOTH\t(IMU STATUS CHECK)\t\t\tENDOFJOB\n#\tR61LEM\t(PREF TRK ATT ROUT)\t\t\tWAITLIST\n#\tTASKOVER\t\t\t\t\tFINDVAC\n#\n# NORMAL EXIT MODES --\n#\n# \tP25 MAY BE TERMINATED IN TWO WAYS -- ASTRONAUT SELECTION OF IDLING\n#\tPROGRAM (P00) BY KEYING V37E00E OR BY KEYING IN V56E\n#\n# ALARM OR ABORT EXIT MODES --\n#\n#\tNONE\n#\n# OUTPUT\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n# FLAGS SET + RESET\n#\n#\tTRACKFLG, P25FLAG\n#\n# DEBRIS\n#\n#\tNONE\n\n\t\tEBANK=\tLOSCOUNT\n\t\tCOUNT*\t$$/P25\nPROG25\t\tTC\t2PHSCHNG\n\t\tOCT\t4\t\t# MAKE GROUP 4 INACTIVE (VERB 37)\n\t\tOCT\t05022\n\t\tOCT\t26000\t\t# PRIORITY 26\n\n\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\t\t# IMU STATUS CHECK\n\t\tTC\tUPFLAG\n\t\tADRES\tTRACKFLG\t# SET TRACK FLAG\n\t\tTC\tUPFLAG\n\t\tADRES\tP25FLAG\t\t# SET P25FLAG\nP25LEM1\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCAF\tP25FLBIT\n\t\tMASK\tSTATE\t\t# IS P25FLAG SET\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\n\t\tCAF\tTRACKBIT\t# IS TRACKFLAG SET?\n\t\tMASK\tSTATE +1\n\t\tEXTEND\n# Page 503\n\t\tBZF\tP25LMWT1\t# NO -- SKIP PHASE CHANGE AND WAIT 1 MINUTE\n\t\tCAF\tSEVEN\t\t# CALL R65 -- FINE PREFERRED\n\t\tTS\tR65CNTR\n\t\tTC\tBANKCALL\t# TRACKING ATTITUDE ROUTINE\n\t\tCADR\tR65LEM\n\t\tTC\tP25LEM1\t\t# THEN GO CHECK FLAGS\nP25LEMWT\tTC\tPHASCHNG\n\t\tOCT\t00112\nP25LMWT1\tCAF\t60SCNDS\n\t\tTC\tTWIDDLE\t\t# WAIT ONE MINUTE THEN CHECK AGAIN\n\t\tADRES\tP25LEM2\n\t\tTC\tENDOFJOB\nP25LEM2\t\tCAF\tPRIO14\n\t\tTC\tFINDVAC\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tP25LEM1\n\n\t\tTC\tTASKOVER\n60SCNDS\t\tDEC\t6000\n\n# Page 504\n# DATA READ ROUTINE 22 (LEM)\n# PROGRAM DESCRIPTION\n#\n#\tMOD NO -- 2\n#\tBY P. VOLANTE\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tTO PROCESS AUTOMATIC RR MARK DATA TO UPDATE THE STATE VECTOR OF EITHER\n# \tLM OR CSM AS DEFINED IN THE RENDEZVOUS NAVIGATION PROGRAM (P20)\n#\n# CALLING SEQUENCE --\n#\n#\tTC\tBANKCALL\n#\tCADR\tR22LEM\n#\n# SUBROUTINES CALLED --\n#\n#\tLSR22.1\t\tGOFLASH\t\tWAITLIST\n#\tLSR22.2\t\tPRIOLARM\tBANKCALL\n#\tLSR22.3\t\tR61LEM\n#\n# NORMAL EXIT MODES --\n#\n#\tR22 WILL CONTINUE TO RECYCLE, UPDATING STATE VECTORS WITH RADAR DATA\n#\tUNTIL P20 CEASES TO OPERATE (RENDEZVOUS FLAG SET TO ZERO) AT WHICH TIME\n#\tR22 WILL TERMINATE SELF.\n#\n# ALARM OR ABORT EXIT MODES --\n#\n#\tPRIORITY ALARM\n#\tPRIORITY ALARM 525 LOS NOT WITHIN 3 DEGREE LIMIT\n#\n# OUTPUT\n#\n#\tSEE OUTPUT FROM LSR22.3\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tSEE LSR22.1, LSR22.2, LSR22.3\n#\n# FLAGS SET + RESET\n#\n#\tNOANGFLG\n#\n# DEBRIS\n#\n#\tSEE LSR22.1, LSR22.2, LSR22.3\n\n\t\tEBANK=\tLRS22.1X\n\t\tCOUNT*\t$$/R22\nR22LEM\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCAF\tRNDVZBIT\t# IS RENDEZVOUS FLAG SET?\n\t\tMASK\tSTATE\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\t# NO -- EXIT R22 AND P20\n\t\tCAF\tTRACKBIT\t# IS TRACKFLAG SET?\n\t\tMASK\tSTATE +1\n\t\tEXTEND\n\t\tBZF\tR22WAIT\t\t# NO WAIT\nR22LEM12\tCAF\tBIT14\t\t# IS RR AUTO TRACK ENABLE DISCRETE STILL\n\t\tEXTEND\t\t\t# ON (A MONITOR REPOSITION BY R25 CLEARS IT)\n\t\tRAND\tCHAN12\n\t\tEXTEND\n\t\tBZF\tP20LEMA\t\t# NO -- RETURN TO P20\n\t\tCAF\tBIT2\t\t# YES\n\t\tEXTEND\t\t\t# IS RR AUTO MODE DISCRETE PRESENT\n\t\tRAND\tCHAN33\n# Page 505\n\t\tEXTEND\n\t\tBZF\t+2\t\t# YES CONTINUE\n\t\tTC\tP20LEMB5\t# NO -- SET IT\n\t\tCS\tRADMODES\t# ARE RR CDUS BEING ZEROED\n\t\tMASK\tRCDU0BIT\n\t\tEXTEND\n\t\tBZF\tR22LEM42\t# CDUS BEING ZEROED\n\t\tTC\tPHASCHNG\t# IF A RESTART OCCURS, AND EXTRA RADAR\n\t\tOCT\t00152\t\t# READING IS TAKEN, SO BAD DATA ISN'T USED\n\t\tTC\tBANKCALL\t# YES READ DATA + CALCULATE LOS\n\t\tCADR\tLRS22.1\t\t# DATA READ SUBROUTINE\n\t\tINDEX\tMPAC\n\t\tTC\t+1\n\t\tTC\tR22LEM2\t\t# NORMAL RETURN (GOOD DATA)\n\t\tTC\tP20LEMC\t\t# COULD NOT READ RADAR -- TRY TO REDESIGNATE\n\t\tCAF\tALRM525\t\t# RR LOS NOT WITHIN 3 DEGREES (ALARM)\n\t\tTC\tBANKCALL\n\t\tCADR\tPRIOLARM\n\t\tTC\tGOTOV56\t\t# TERMINATE EXITS P20 VIA V56 CODING\n\t\tTC\tR22LEM1\t\t# PROC (DISPLAY DELTA THETA)\n\t\tTC\t-5\t\t# ENTER (ILLEGAL OPTION)\n\t\tTC\tENDOFJOB\n\nR22LEM1\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCAF\tV06N05\t\t# DISPLAY DELTA THETA\n\t\tTC\tBANKCALL\n\t\tCADR\tPRIODSP\n\t\tTC\tGOTOV56\t\t# TERMINATE EXITS P20 VIA V56 CODING\n\t\tTC\tR22LEM2\t\t# PROC (OK CONTINUE)\n\t\tTC\tP20LEMC\t\t# ENTER (RECYCLE)\nR22LEM2\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tLUNSFCHK\t# CHECK IF ON LUNAR SURFACE (P22FLAG SET)\n\t\tTC\tR22LEM3\t\t# YES -- BYPASS FLAG CHECKS AND LRS22.2\n\t\tCA\tFLAGWRD1\t# IS TRACK FLAG SET\n\t\tMASK\tTRACKBIT\n\t\tEXTEND\n\t\tBZF\tR22WAIT\t\t# NO -- WAIT\n\t\tTC\tBANKCALL\t# YES\n\t\tCADR\tLRS22.2\t\t# CHECKS RR BORESIGHT WITHIN 30 DEG OF +Z\n\t\tINDEX\tMPAC\n\t\tTC\t+1\n\t\tTC\tR22LEM3\t\t# NORMAL RETURN (LOS WITHIN 30 OF Z-AXIS)\n\t\tTC\tBANKCALL\n\t\tCADR\tR61LEM\n\t\tTC\tR22WAIT\t\t# NOT WITHIN 30 DEG OF Z-AXIS\nR22LEM3\t\tCS\tFLAGWRD1\t# SHOULD WE BYPASS STATE VECTOR UPDATE\n\t\tMASK\tNOUPFBIT\t# (IS NO UPDATE FLAG SET?)\n# Page 506\n\t\tEXTEND\n\t\tBZF\tR22LEM42\t# BRANCH -- YES\n\t\tCA\tFLAGWRD1\t# IS UPDATE FLAG SET\n\t\tMASK\tUPDATBIT\n\t\tEXTEND\n\t\tBZF\tR22LEM42\t# UPDATE FLAG NOT SET\n\t\tCAF\tPRIO26\t\t# INSURE HIGH PRIO IN RESTART\n\t\tTS\tPHSPRDT2\n\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tLSR22.3\nR22LEM93\tEXIT\t\t\t# NORMAL EXIT FROM LSR22.3\n\t\tTC\tPHASCHNG\t# PHASE CHANGE TO PROTECT AGAINST\n\t\tOCT\t04022\t\t# CONFLICT WITH GRP2PC ERASEABLE\n\t\tTCF\tR22LEM44\nR22LEM96\tEXIT\n\t\tCAF\tZERO\t\t# SET N49FLAG = ZERO TO INDICATE\n\t\tTS\tN49FLAG\t\t# V06 N49 DISPLAY HASN'T BEEN ANSWERED\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\t\t# TO PROTECT DISPLAY\n\t\tCAF\tPRIO27\t\t# PROTECT DISPLAY\n\t\tTC\tNOVAC\n\t\tEBANK=\tN49FLAG\n\t\t2CADR\tN49DSP\n\n\t\tTC\tINTPRET\n\t\tSLOAD\n\t\t\tN49FLAG\n\t\tBZE\tBMN\t\t# LOOP TO CHECK IF FLAG\n\t\t\t-3\t\t# SETTING CHANGED -- BRANCH -- NO\n\t\t\tR22LEM7\t\t# PROCEED\n\t\tEXIT\t\t\t# DISPLAY ANSERED BY RECYCLE\n\t\tTC\tLUNSFCHK\t# ARE WE ON LUNAR SURFACE\n\t\tTC\tR22WAIT\t\t# YES -- 15 SECOND DELAY\n\t\tCA\tZERO\t\t# NO -- SET R65COUNTER = 0, DO FINE\n\t\tTC\tR22LEM45\t# TRACKING TAKE ANOTHER RADAR READING\nR22LEM7\t\tCALL\t\t\t# PROCEED\n\t\t\tGRP2PC\t\t# PHASE CHANGE AND\n\t\tGOTO\t\t\t# GO TO INCOPORATE DATA.\n\t\t\tASTOK\nR22LEM44\tINCR\tMARKCTR\t\t# INCREMENT COUNT OF MARKS INCORPORATED.\n\t\tTC\tLUNSFCHK\t# ARE WE ON LUNAR SURFACE\n\t\tTC\tR22LEM46\t# YES -- WAIT 2 SECONDS\n\t\tCA\tFIVE\t\t# NOT ON LUNAR SURFACE\n\t\tTC\tR22LEM45\t# R65COUNTER = 5\nR22LEM42\tTC\tLUNSFCHK\t# CHECK IF ON LUNAR SURFACE (P22FLAG SET)\n\t\tTC\tR22LEM46\t# YES -- WAIT 2 SECONDS\n\t\tCA\tTWO\t\t# NO -- SET R65COUNTER = 2\nR22LEM45\tTS\tR65CNTR\n# Page 507\n\t\tTC\tBANKCALL\n\t\tCADR\tR65LEM\t\t# FINE PREFERRED TRACKING ATTITUDE\n\t\tTC\tR22LEM\nR22WAIT\t\tCAF\t1500DEC\n\t\tTC\tP20LEMWT +1\n\nR22LEM46\tCAF\t2SECS\n\t\tTC\tBANKCALL\t# WAIT 2 SECONDS AND TAKE ANOTHER MARK\n\t\tCADR\tDELAYJOB\n\t\tTC\tR22LEM\n\nN49DSP\t\tCAF\tV06N49NB\n\t\tTC\tBANKCALL\t# EXCESSIVE STATE VECTOR UPDATE -- FLASH\n\t\tCADR\tPRIODSP\t\t# VERB 06 NOUN 49 R1=DELTA R, R2=DELTA V\n\t\tTC\tGOTOV56\t\t# TERMINATE -- EXIT R22 AND P20\n\t\tCS\tONE\t\t# PROCEED -- N49FLAG = -1\n\t\tTS\tN49FLAG\t\t# RECYCLE -- N49FLAG = + VALUE\n\t\tTC\tENDOFJOB\nR22RSTRT\tTC\tPHASCHNG\t# IF A RESTART OCCURS WHILE READING RADAR\n\t\tOCT\t00152\t\t# COME HERE TO TAKE A RANGE-RATE READING\n\t\tTC\tBANKCALL\t# WHICH ISN'T USED TO PREVENT TAKING A BAD\n\t\tCADR\tRRRDOT\t\t# READING AND TRYING TO INCORPORATE THE\n\t\tTC\tBANKCALL\t# BAD DATA\n\t\tCADR\tRADSTALL\t# WAIT FOR READ COMPLETE\n\t\tTC\tP20LEMC\t\t# COULD NOT READ RADAR -- TRY TO REDISGNATE\n\t\tTC\tR22LEM\t\t# READ SUCCESSFUL -- CONTINUE AT R22\n\nALRM525\t\tOCT\t00525\nV06N05\t\tVN\t00605\nV06N49NB\tVN\t00649\n1500DEC\t\tDEC\t1500\n\n# LUNSFCHECK -- CLOSED SUBROUTINE TO CHECK IF ON LUNAR SURFACE (P22FLAG)\n#\tRETURNS TO CALLER +1 IF P22FLAG SET\n#\t\tTO CALLER +2 IF P22FLAG NOT SET\n\n\t\tCOUNT* \t$$/P22\nLUNSFCHK\tCS\tFLAGWRD8\t# CHECK IF ON LUNAR SURFACE\n\t\tMASK\tSURFFBIT\t# IS SURFFLAG SET?\n\t\tCCS\tA\t\t# BRANCH -- P22FLAG SET\n\t\tINCR\tQ\t\t# NOT SET\n\t\tTC\tQ\t\t# RETURN\n\n# Page 508\n# RR DESIGNATE ROUTINE (R21LEM)\n# PROGRAM DESCRIPTION\n#\n# \tMOD NO -- 2\n#\tBY P. VOLANTE\n#\n# FUNCTIONAL DESCRIPTION\n#\n# \tTO POINT THE RENDEZVOUS RADAR AT THE CSM UNTIL AUTOMATIC ACQUISITION\n# \tOF THE CSM IS ACCOMPLISHED BY THE RADAR.  ROUTINE IS CALLED BY P20.\n#\n# CALLING SEQUENCE --\n#\n#\tTC\tBANKCALL\n#\tCADR\tR21LEM\n#\n# SUBROUTINES CALLED --\n#\n#\tFINDVAC\t\tFLAGUP\t\tENDOFJOB\tPRIOLARM\n#\tNOVAC\t\tINTPRET\t\tLPS20.1\t\tPHASCHNG\n#\tWAITLIST\tJOBSLEEP\tJOBWAKE\t\tFLAGDOWN\n#\tTASKOVER\tBANKCALL\tRADSTALL\tRRDESSM\n#\n# NORMAL EXIT MODES\n#\n#\tWHEN LOCK-ON IS ACHIEVED, BRANCH WILL BE TO P20 WHERE R22 (DATA READ\n#\tWILL BE SELECTED OR A NEED FOR A MANEUVER (BRANCH TO P20LEMA)\n#\n# ALARM OR ABORT EXIT MODES --\n#\n#\tPRIORITY ALARM 503 WHEN LOCK-ON HASN'T BEEN ACHIEVED AFTER 30SECS --\n#\tTHIS REQUIRES ASTRONAUT INTERFACE: SELECTION OF SEARCH OPTION OF\n#\tACQUISITION\n#\n# OUTPUT\n#\n#\tSEE LPS20.1, RRDESSM\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tRRTARGET, RADMODES ARE USED BY LPS20.1 AND RRDESSM\n#\n# FLAGS SET + RESET\n#\n#\tLOSCMFLG\tLOKONSW\n#\n# DEBRIS\n#\n#\tSEE LPS20.1, RRSESSM\n\n\t\tEBANK=\tLOSCOUNT\n\t\tCOUNT*\t$$/R21\nR21LEM\t\tCS\tBIT14\t\t# REMOVE RR SELF TRACK ENABLE\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tTC\tLUNSFCHK\n\t\tTC\tR21LEM5\n\t\tCAF\tZERO\t\t# COMMAND ANTENNA TO MODE CENTER\n\t\tTS\tTANG\t\t# IF NOT ON SURFACE -- MODE 1 -- (T=0,S=0)\n\t\tTS\tTANG +1\n\t\tTC\tR21LEM6\nR21LEM5\t\tCAF\tBIT12\n\t\tMASK\tRADMODES\n\t\tCCS\tA\n\t\tTC\tR21LEM10\n\t\tCAF\tBIT15\n\t\tTS\tTANG\n\t\tCS\tHALF\n\t\tTS\tTANG +1\n\n# Page 509\nR21LEM6\t\tTC\tDOWNFLAG\n\t\tADRES\tLOKONSW\n\t\tTC\tBANKCALL\n\t\tCADR\tRRDESNB\n\t\tTC\t+1\n\t\tTC\tBANKCALL\n\t\tCADR\tRADSTALL\n\t\tTC\tR21-503\t\t# BAD RETURN FROM DESIGNATE -- ISSUE ALARM\nR21LEM10\tTC\tUPFLAG\n\t\tADRES\tLOSCMFLG\t# EVERY FOURTH PASS THRU DODES\n\t\tCAF\tMAXTRIES\t# ALLOW 60 PASSES (APPROX 45 SECONDS)\n\t\tTS\tDESCOUNT\t# TO DESIGNATE AND LOCK ON\nR21LEM2\t\tCAF\tTHREE\n\t\tTS\tLOSCOUNT\nR21LEM1\t\tTC\tINTPRET\n\t\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\tHALFSEC\t\t# EXTRAPOLATE TO PRESENT TIME + .5 SEC.\n\t\tSTCALL\tTDEC1\t\t# LOS DETERMINATION ROUTINE\n\t\t\tLPS20.1\n\t\tEXIT\nR21LEM3\t\tTC\tUPFLAG\t\t# SET LOKONSW TO RADAR -- ON DESIRED\n\t\tADRES\tLOKONSW\n\t\tTC\tDOWNFLAG\n\t\tADRES\tNORRMON\n\t\tTC\tINTPRET\n\t\tCALL\t\t\t# INPUT (RRTARGET UPDATED BY LPS20.1)\n\t\t\tRRDESSM\t\t# DESIGNATE ROUTINE\n\t\tEXIT\n\t\tTC\tR21LEM4\t\t# LOS NOT IN MODE 2 COVERAGE\n\t\t\t\t\t# ON LUNAR SURFACE\n\t\tTC\tP20LEMA\t\t# VEHICLE MANEUVER REQUIRED.\n\t\tTC\tBANKCALL\t# NO VEHICLE MANEUVER REQUIRED\n\t\tCADR\tRADSTALL\t# WAIT FOR DESIGNATE COMPLETE -- LOCKON OR\n\t\tTC\t+2\t\t# BAD END -- LOCKON NOT ACHIEVED IN 60 TRIES\n\t\tTC\tR21END\t\t# EXIT ROUTINE RETURN TO P20 (LOCK-ON)\nR21-503\t\tCAF\tALRM503\t\t# ISSUE ALARM 503\n\t\tTC\tBANKCALL\n\t\tCADR\tPRIOLARM\n\t\tTC\tGOTOV56\t\t# TERMINATE EXITS P20 VIA V56 CODING\n\t\tTC\tR21SRCH\t\t# PROC\n\t\tTC\tP20LEMC3\n\t\tTC\tENDOFJOB\nR21END\t\tTC\tDOWNFLAG\n\t\tADRES\tLOSCMFLG\t# RESET LOSCMFLG\n\t\tTC\tR21DISP\t\t# PUT UP VERIFY MAIN LOBE LOCKON DISPLAY\nR21SRCH\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tR24LEM\t\t# SEARCH ROUTINE\nALRM503\t\tOCT\t00503\n# Page 510\nALRM527\t\tOCT\t527\n\nR21LEM4\t\tCAF\tMAXTRIES\t# SET UP COUNTER FOR\n\t\tTS\tREPOSCNT\t# 60 PASSES (APPROX 600 SECS.)\n\t\tTC\tUPFLAG\n\t\tADRES\tFSPASFLG\t# SET FIRST PASS FLAG\n\t\tTC\tDOWNFLAG\t# RESET LOS BEING\n\t\tADRES\tLOSCMFLG\t# COMPUTED FLAG\n\t\tTC\tINTPRET\nR21LEM12\tRTB\n\t\t\tLOADTIME\n\t\tDAD\n\t\t\tTENSEC\t\t# TIME T = T + 10 SECS.\n\t\tSTORE\tREPOSTM\t\t# SAVE FOR LONGCALL AND UPPSV\n\t\tSTCALL\tTDEC1\n\t\t\tLPS20.1\t\t# COMPUTE LOS AT TIME T\n\t\tCALL\n\t\t\tRRDESSM\n\t\tEXIT\n\t\tTC\tR21LEM13\t# LOS NOT IN MODE 2 COVERAGE\n\t\tTC\tENDOFJOB\t# VEHICLE MANEUVER REQUIRED\n\t\tTC\tKILLTASK\n\t\tCADR\tBEGDES\n\t\tTC\tINTPRET\n\t\tBOF\n\t\t\tFSPASFLG\t# FIRST PASS THRU REPOSITION\n\t\t\tR21LEMB\t\t# NO -- GO TO CONTINUOUS DESIGNATE\n\t\tCLRGO\n\t\t\tFSPASFLG\t# YES -- RESET FIRST PASS FLAG\n\t\t\tR21LEM7 +1\nR21LEM13\tCCS\tREPOSCNT\t# HAVE WE TRIED 60 TIMES?\n\t\tTC\tR21LEM7\t\t# NO -- ADD 10 SECS.  RECOMPUTE LOS\n\t\tTC\tR21LEM11\t# YES -- PUT OUT ALARM 530\nR21LEM7\t\tTS\tREPOSCNT\n\t\tTC\tINTPRET\n\t\tDLOAD\tGOTO\n\t\t\tREPOSTM\n\t\t\tR21LEM12 +2\nR21LEMB\t\tDLOAD\n\t\t\tREPOSTM\n\t\tSTCALL\tTDEC1\n\t\t\tUPPSV\n\t\tEXIT\n\t\tTC\tUPFLAG\t\t# SET RADMODES BIT 15 FOR\n\t\tADRES\tCDESFLAG\t# CONTINUOUS DESIGNATION\n\t\tTC\tDOWNFLAG\n\t\tADRES\tLOKONSW\n\t\tTC\tUPFLAG\n\t\tADRES\tNORRMON\n# Page 511\n\t\tTC\tBANKCALL\n\t\tCADR\tRRDESNB\n\t\tTC\t+1\n\t\tTC\tINTPRET\n\t\tRTB\tBDSU\n\t\t\tLOADTIME\t# COMPUTE DELTA TIME\n\t\t\tREPOSTM\t\t# FOR LONGCALL\n\t\tSTORE\tDELTATM\n\t\tEXIT\n\t\tEXTEND\n\t\tDCA\tDELTATM\n\t\tTC\tLONGCALL\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tR21LEM9\n\n\t\tTC\tENDOFJOB\nR21LEM9\t\tTC\tKILLTASK\n\t\tCADR\tSTDESIG\n\t\tTC\tCLRADMOD\n\t\tCAF\tPRIO26\n\t\tTC\tFINDVAC\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tR21LEM10\n\n\t\tTC\tTASKOVER\nR21LEM11\tCAF\tALRM530\t\t# ALARM 530 -- LOS NOT IN COVERAGE\n\t\tTC\tBANKCALL\t# AFTER TRYING TO DESIGNATE FOR\n\t\tCADR\tPRIOLARM\t# 600 SECS.\n\t\tTC\tGOTOV56\n\t\tTC\tGOTOV56\n\t\tTC\tGOTOV56\n\t\tTC\tENDOFJOB\nALRM530\t\tOCT\t00530\nTENSEC\t\t2DEC\t1000 B-28\n\nHALFSEC\t\t2DEC\t50\n\nR21DISP\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCAF\tV06N72PV\t# FLASH V 50 N 72 -- PLEASE PERFORM RR\n\t\tTC\tBANKCALL\t# MAIN LOBE LOCKON VERIFICATION\n\t\tCADR\tGOPERF2R\n\t\tTC\tGOTOV56\t\t# TERMINATE EXITS VIA V 56\n\t\tTC\tP20LEMWT\t# PROCEED CONTINUES TO R22\n\t\tTC \t-5\t\t# ENTER ILLEGAL\n\t\tCAF\tBIT7\n\t\tTC\tLINUS\t\t# SET BITS TO MAKE THIS A PRIORITY DISPLAY\n\t\tTC\tENDOFJOB\n\n# Page 512\nV06N72PV\tVN\t00672\n\n# Page 513\n# MANUAL ACQUISITION ROUTINE R23LEM\n# PROGRAM DESCRIPTION\n#\n#\tMOD NO -- 2\n#\tBY P. VOLANTE\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tTO ACQUIRE THE CSM BY MANUAL OPERATION OF THE RENDEZVOUS RADAR\n#\n# CALLING SEQUENCE --\n#\n#\tTC\tR23LEM\n#\n# SUBROUTINES CALLED\n#\n#\tBANKCALL\tR61LEM\n#\tSETMINDB\tGOPERF1\n#\n# NORMAL EXIT MODES --\n#\n#\tIN RESPONSE TO THE GOPERF1,\tSELECTION OF ENTER WILL RECYCLE R23\n#\t\t\t\t\tSELECTION OF PROC WILL CONTINUE R23\n#\t\t\t\t\tSELECTION OF TERM WILL TERMINATE R23 + P20\n#\n# ALARM OR ABORT EXIT MODES --\n#\n#\tSEE NORMAL EXIT MODES ABOVE\n#\n# OUTPUT\n#\n#\tN.A.\n#\n# ERASABLE INITIALIZATION REQUIRED --\n#\n#\tACMODFLG MUST BE SET TO 1 (MANUAL MODE)\n\n\t\tEBANK=\tGENRET\n\t\tCOUNT*\t$$/R23\nR23LEM\t\tTC\tUPFLAG\t\t# SET NO ANGLE MONITOR FLAG\n\t\tADRES\tNORRMON\n\t\tINHINT\n\t\tTC\tIBNKCALL\t# SELECT MINIMUM DEADBAND\n\t\tCADR\tSETMINDB\n\t\tRELINT\nR23LEM1\t\tCAF\tBIT14\t\t# ENABLE TRACKER\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\t\tCAF\tOCT205\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTC\tR23LEM2\t\t# TERMINATE\n\t\tTC\tR23LEM11\t# PROCEDE\n\t\tTC\tR23LEM3\t\t# ENTER -- DO ANOTHER MANEUVER\nR23LEM11\tINHINT\n\t\tTC\tRRLIMCHK\t# YES -- CHECK IF ANTENNA IS WITHIN LIMITS\n\t\tADRES\tCDUT\n\t\tTC\tOUTOFLIM\t# NOT WITHIN LIMITS\n\t\tTC\tIBNKCALL\t# RESTORE DEADBAND TO\n\t\tCADR\tRESTORDB\t# ASTRONAUT SELECTED VALUE\n\t\tRELINT\n\t\tTC\tDOWNFLAG\t# CLEAR NO ANGLE MONITOR FLAG\n\t\tADRES\tNORRMON\n\t\tTC\tP20LEMB1\t# RADAR IS LOCKED ON CONTINUE IN P20\nOUTOFLIM\tRELINT\n# Page 514\n\t\tCAF\tOCT501PV\n\t\tTC\tBANKCALL\t# ISSUE ALARM -- RR ANTENNA NOT WITHIN\n\t\tCADR\tPRIOLARM\t# LIMITS\n\t\tTC\tR23LEM2\t\t# TERMINATE -- EXIT R23 TO R00 (GO TO POOH)\n\t\tTC\tOUTOFLIM +1\t# PROCEED ILLEGAL\n\t\tTC\tR23LEM3\t\t# RECYCLE -- TO ANOTHER MANEUVER\n\t\tTC\tENDOFJOB\nR23LEM2\t\tTC\tDOWNFLAG\t# CLEAR NO ANGLE MONITOR FLAG\n\t\tADRES\tNORRMON\n\t\tTC\tGOTOV56\t\t# AND EXIT VIA V56\nR23LEM3\t\tTC\tBANKCALL\n\t\tCADR\tR61LEM\n\t\tTC\tR23LEM1\n\nOCT501PV\tOCT\t501\nOCT205\t\tOCT\t205\n\n# Page 515\n# SEARCH ROUTINE R24LEM\n# PROGRAM DESCRIPTION\n#\n#\tMOD NO -- 2\n#\tBY P. VOLANTE\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tTO ACQUIRE THE CSM BY A SEARCH PATTERN WHEN THE RENDEZVOUS RADAR HAS\n#\tFAILED TO ACQUIRE TEH CSM IN THE AUTOMATIC TRACKING MODE AND TO ALLOW\n# \tTHE ASTRONAUT TO CONFIRM THAT REACQUISITION HAS NOT BEEN IN SIDELOBE.\n#\n# CALLING SEQUENCE\n#\n#\tCAF\tPRIONN\n#\tTC\tFINDVAC\n#\tEBANK=\tDATAGOOD\n#\t2CADR\tR24LEM\n#\n# SUBROUTINES CALLED\n#\n#\tFLAGUP\t\tFLAGDOWN\tBANKCALL\n#\tR61LEM\t\tGOFLASHR\tFINDVAC\n#\tENDOFJOB\tNOVAC\t\tLSR24.1\n#\n# NORMAL EXIT MODES --\n#\n#\tASTRONAUT RESPONSE TO DISPLAY OF OMEGA AND DATAGOOD.  HE CAN EITHER\n# \tREJECT BY TERMINATING (SEARCH OPTION AND RESELECTING P20) OR ACCEPT BY\n#\tPROCEEDING (EXIT ROUTINE AND RETURN TO AUTO MODE IN P20)\n#\n# ALARM OR ABORT EXIT MODES --\n#\n#\tSEE NORMAL EXIT MODES ABOVE\n#\n# OUTPUT --\n#\n#\tSEE OUTPUT FROM LSR24.1 + R61LEM\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tSET INPUT FOR LSR24.1\n#\n# FLAGS SET + RESET\n#\n#\tSRCHOPT, ACMODFLG\n\n\t\tEBANK=\tDATAGOOD\n\t\tCOUNT*\t$$/R24\nR24LEM\t\tTC\tUPFLAG\n\t\tADRES\tSRCHOPTN\t# SET SRCHOPT FLAG\n\t\tTC\tDOWNFLAG\t# RESET LOS BEING COMPUTED FLAG TO MAKE\n\t\tADRES\tLOSCMFLG\t# SURE DODES DOESN'T GO TO R21\nR24LEM1\t\tCAF\tZERO\n\t\tTS\tDATAGOOD\t# ZERO OUT DATA INDICATOR\n\t\tTS\tOMEGAD\t\t# ZERO OMEGA DISPLAY REGS\n\t\tTS\tOMEGAD +1\t# ZERO OMEGA DISPLAY REGS\nR24LEM2\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCAF\tV16N80\n\t\tTC\tBANKCALL\n\t\tCADR\tPRIODSPR\n\t\tTC\tGOTOV56\n\t\tTC\tR24END\t\t# PROCEED EXIT R24 TO P20LEM1\n\n\t\tTC\tR24LEM3\t\t# RECYCLE -- CALL R61 TO MANEUVER S/C\n# Page 516\n\t\tTC\tBANKCALL\n\t\tCADR\tLRS24.1\nR24END\t\tTC\tKILLTASK\n\t\tCADR\tCALLDGCH\n\t\tTC\tCLRADMOD\t# CLEAR BITS 10 & 15 OF RADMODES.\n\t\tTCF\tP20LEM1\t\t# AND GO TO 400 MI. RANGE CHECK IN P20\n\n\t\tBLOCK\t3\n\t\tSETLOC\tFFTAG6\n\t\tBANK\n\t\tCOUNT*\t$$/R24\n\nCLRADMOD\tCS\tBIT10+15\n\t\tINHINT\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\n\t\tCS\tBIT2\t\t# DISABLE RR ERROR COUNTERS\n\t\tEXTEND\n\t\tWAND\tCHAN12\t\t# USER WILL RELINT\n\n\t\tTC\tQ\n\nBIT10+15\tOCT\t41000\n\t\tBANK\t24\n\t\tSETLOC\tP20S\n\t\tBANK\n\t\tCOUNT*\t$$/R24\n\nR24LEM3\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tKILLTASK\n\t\tCADR\tCALLDGCH\t# KILL WAITLIST FOR NEXT POINT IN PATTERN\n\t\tTC\tCLRADMOD\t# CLEAR BITS 10 + 15 OF RADMODES TO KILL\n\t\tRELINT\t\t\t# HALF SECOND DESIGNATE LOOP\n\t\tCAF\t.5SEC\n\t\tTC\tBANKCALL\t# WAIT FOR DESIGNATE LOOP TO DIE\n\t\tCADR\tDELAYJOB\n\t\tTC\tLUNSFCHK\t# CHECK IF ON LUNAR SURFACE\n\t\tTC\tR24LEM4\t\t# YES -- DON'T DO ATTITUDE MANEUVER\n\t\tTC\tBANKCALL\t# CALL R61 TO DO PREFERRED TRACKING\n\t\tCADR\tR61LEM\t\t# ATTITUDE MANEUVER\nR24LEM4\t\tCAF\tZERO\t\t# ZERO OUT RADCADR (WHICH WAS SET BY\n\t\tTS\tRADCADR\t\t# ENDRADAR WHEN DESIGNATE STOPPED) SO THAT\n\t\t\t\t\t# RRDESSM WILL RETURN TO CALLER\n\t\tTC\tR24LEM2\t\t# AND GO BACK TO PUT UP V16 N80 DISPLAY\n\nV16N80\t\tVN\t01680\n\n# Page 517\n# PREFERRED TRACKING ATTITUDE ROUTINE R61LEM\n# PROGRAM DESCRIPTION\n#\n#\tMOD NO: 3\t\tDATE: 4-11-67\n#\tMOD BY: P. VOLANTE, SDC\n#\n# FUNCTIONAL DESCRIPTION --\n#\n#\tTO COMPUTE THE PREFERRED TRACKING ATTITUDE OF THE LM TO ENABLE RR\n#\tTRACKING OF THE CSM AND TO PERFORM THE MANEUVER TO THE PREFERRED\n#\tATTITUDE.\n#\n# CALLING SEQUENCE --\n#\n#\tTC\tBANKCALL\n#\tCADR\tR61LEM\n#\n# SUBROUTINES CALLED\n#\n#\tLPS20.1\t\tVECPOINT\n#\tKALCMAN3\n#\n# NORMAL EXIT MODES --\n#\n#\tNORMAL RETURN IS TO CALLER + 1\n#\n# ALARM OR ABORT EXIT MODES --\n#\n#\tTERMINATE P20 + R61 BY BRANCHING TO P20END IF BOTH TRACKFLAG +\n#\tRENDEZVOUS FLAG ARE NOT SET.\n#\n# OUTPUT --\n#\n#\tSEE OUTPUT FOR LPS20.1 + ATTITUDE MANEUVER ROUTINE (R60)\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tGENRET USED TO SAVE Q FOR RETURN\n#\n# FLAGS SET + RESET\n#\n#\t3AXISFLG\n#\n# DEBRIS\n#\n# \tSEE SUBROUTINES\n\n\t\tSETLOC\tR61\n\t\tBANK\n\t\tEBANK=\tLOSCOUNT\n\t\tCOUNT*\t$$/R61\nR61LEM\t\tTC\tMAKECADR\n\t\tTS\tGENRET\n\t\tTC\tUPFLAG\t\t# SET R61 FLAG\n\t\tADRES\tR61FLAG\n\t\tTC\tR61C+L01\nR65LEM\t\tTC\tMAKECADR\n\t\tTS\tGENRET\n\t\tTC\tDOWNFLAG\t# RESET R61 FLAG\n\t\tADRES\tR61FLAG\nR61C+L01\tCAF\tTRACKBIT\t# TRACKFLAG\n\t\tMASK\tSTATE +1\n\t\tEXTEND\n\t\tBZF\tR65WAIT\t\t# NOT SET\nR61C+L03\tTC\tINTPRET\n\t\tVLOAD\n# Page 518\n\t\t\tHIUNITZ\n\t\tSTORE\tSCAXIS\t\t# TRACK AXIS UNIT VECTOR\nR61LEM1\t\tRTB\tDAD\n\t\t\tLOADTIME\t# EXTRAPOLATE FORWARD TO CENTER\n\t\t\t3SECONDS\t# SIX SECOND PERIOD.\n\t\tSTCALL\tTDEC1\n\t\t\tLPS20.1\t\t# LOS DETERMINATION + VEH ATTITUDE\n\t\tVLOAD\n\t\t\tRRTARGET\n\t\tSTORE\tPOINTVSM\n\t\tRTB\tCALL\t\t# GET DESIRED CDU'S FOR VECPNT1\n\t\t\tREADCDUD\n\t\t\tVECPNT1\t\t# COMPUTES FINAL ANGLES FROM PRESENT CDUDS\n\t\tSTORE\tCPHI\t\t# STORE FINAL ANGLES -- CPHI, CTHETA, CPSI\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tCAF\tTRACKBIT\t# IS TRACK FLAG SET\n\t\tMASK\tFLAGWRD1\n\t\tEXTEND\n\t\tBZF\tR65WAIT\n\t\tTC\tBANKCALL\n\t\tCADR\tG+N,AUTO\t# CHECK FOR AUTO MODE\n\t\tCCS\tA\n\t\tTC\tR61C+L04\t# NOT IN AUTO\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\n\t\t\tRRTARGET\n\t\t\tCDU*SMNB\n\t\tDLOAD\tDSU\t\t# GET PHI -- ARCCOS OF Z-COMPONENT OF LOS\n\t\t\tMPAC +5\n\t\t\tCOS15DEG\nR61LEM2\t\tBMN\tEXIT\t\t# BRANCH -- PHI > 15 DEGREES\n\t\t\tR61C+L05\t# PHI GRE 10DEG\n\t\tEBANK=\tCDUXD\n\t\tCAF\tEBANK6\n\t\tTS\tEBANK\n\t\tINHINT\n\t\tEXTEND\n\t\tDCA\tCPHI\n\t\tDXCH\tCDUXD\n\t\tCA\tCPSI\n\t\tTS\tCDUZD\n\t\tRELINT\n\t\tEBANK=\tLOSCOUNT\n\t\tCAF\tEBANK7\n\t\tTS\tEBANK\n\t\tTC\tR61C+L06\nR61C+L05\tEXIT\n\t\tINHINT\n# Page 519\n\t\tTC\tIBNKCALL\n\t\tFCADR\tZATTEROR\n\t\tTC\tIBNKCALL\n\t\tFCADR\tSETMINDB\t# REDUCE ATTITUDE ERROR\n\t\tTC\tDOWNFLAG\n\t\tADRES\t3AXISFLG\n\t\tTC\tUPFLAG\n\t\tADRES\tPDSPFLAG\t# SET PRIORITY DISPLAY FLAG\n\t\tTC\tBANKCALL\n\t\tCADR\tR60LEM\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tFCADR\tRESTORDB\n\t\tTC\tPHASCHNG\n\t\tOCT\t04022\n\t\tTC\tDOWNFLAG\n\t\tADRES\tPDSPFLAG\t# RESET PRIORITY DISPLAY FLAG\nR61C+L06\tCA\tFLAGWRD1\n\t\tMASK\tR61FLBIT\n\t\tCCS\tA\n\t\tTC\tR61C+L4\n\t\tCCS\tR65CNTR\n\t\tTC\t+2\n\t\tTC\tR61C+L4\t\t# R65CNTR = 0 - EXIT ROUTINE\n\t\tTS\tR65CNTR\n\t\tCAF\t06SEC\n\t\tTC\tTWIDDLE\n\t\tADRES\tR61C+L2\n\t\tTC\tENDOFJOB\nR61C+L2\t\tCAF\tPRIO26\n\t\tTC\tFINDVAC\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tR61C+L01\n\n\t\tTC\tTASKOVER\nR61C+L04\tTC\tBANKCALL\t# TO CONVERT ANGLES TO FDAI\n\t\tCADR\tBALLANGS\n\t\tTC\tR61C+L06\nR61C+L4\t\tCAE\tGENRET\n\t\tTCF\tBANKJUMP\t# EXIT R61\nR61C+L1\t\tCAF\tBIT7+9PV\t# IS RENDEZVOUS OR P25FLAG SET\n\t\tMASK\tSTATE\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\t# NO -- EXIT ROUTINE AND PROGRAM.\n\t\tTC\tR61C+L06\t# YES EXIT ROUTINE\nR65WAIT\t\tTC\tPOSTJUMP\n\t\tCADR\tP20LEMWT\n\nBIT7+9PV\tOCT\t00500\n# Page 520\nCOS15DEG\t2DEC\t0.96593 B-1\n\n06SEC\t\tDEC\t600\nPHI\t\tEQUALS\t20D\nREADCDUD\tINHINT\t\t\t# READS DESIRED CDU'S AND STORES IN\n\t\tCAF\tEBANK6\t\t# MPAC TP EXITS WITH MODE SET TO TP\n\t\tXCH\tEBANK\n\t\tTS\tRUPTREG1\n\t\tEBANK=\tCDUXD\n\t\tCA\tCDUXD\n\t\tTS\tMPAC\n\t\tEXTEND\n\t\tDCA\tCDUYD\n\t\tDXCH\tMPAC +1\n\t\tCA\tRUPTREG1\n\t\tTS\tEBANK\n\t\tRELINT\n\t\tTCF\tTMODE\n\t\tBLOCK\t02\n\t\tSETLOC\tRADARFF\n\t\tBANK\n\n\t\tEBANK=\tLOSCOUNT\n\t\tCOUNT*\t$$/RRSUB\n\n# Page 521\n# THE FOLLOWING SUBROUTINE RETURNS TO CALLER +2 IF THE ABSOLUTE VALUE OF VALUE OF C(A) IS GREATER THAN THE\n# NEGATIVE OF THE NUMBER AT CALLER +1.  OTHERWISE IT RETURNS TO CALLER +3.  MAY BE CALLED IN RUPT OR UNDER EXEC.\n\nMAGSUB\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\t+2\n\t\tCOM\n\n\t\tINDEX\tQ\n\t\tAD\t0\n\t\tEXTEND\n\t\tBZMF\tQ+2\t\t# ABS(A) <= CONST GO TO L+3\n\t\tTCF\tQ+1\t\t# ABS(A) > CONST GO TO L+2\n\n# Page 522\n# PROGRAM NAME:\tRRLIMCHK\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tRRLIMCHK CHECKS RR DESIRED GIMBAL ANGLES TO SEE IF THEY ARE WITHIN\n# \tTHE LIMITS OF THE CURRENT MODE.  INITIALLY THE DESIRED TRUNNION AND\n#\tSHAFT ANGLES ARE STORED IN ITEMP1 AND ITEMP2.  THE CURRENT RR\n# \tANTENNAE MODE (RADMODES BIT 12) IS CHECKED WHICH IS = 0 FOR\n#\tMODE 1 AND =1 FOR MODE 2.\n#\n#\tMODE 1 -- THE TRUNNION ANGLE IS CHECKED AT MAGSUB TO SEE IF IT IS\n#\tBETWEEN -55 AND +55 DEGREES.  IF NOT, RETURN TO L +2.  IF WITHIN LIMITS,\n#\tTHE SHAFT ANGLE IS CHECKED TO SEE IF IT IS BETWEEN -70 AND +59 DEGREES.\n#\tIF NOT, RETURN TO L +2.  IF IN LIMITS, RETURN TO L +3.\n#\n#\tMODE 2 -- THE SHAFT ANGLE IS CHECKED AT MAGSUB TO SEE IF IT IS\n#\tBETWEEN -139 AND -25 DEGREES.  IF NOT, RETURN TO L +2.  IF WITHIN\n#\tLIMITS, THE TRUNNION ANGLE IS CHECKED TO SEE IF IT IS BETWEEN +125\n# \tAND -125 (+235) DEGREES.  IF NOT, RETURN TO L +2.  IF IN LIMITS, RETURN\n#\tTO L +3.\n#\n# CALLING SEQUENCE:\n#\n#\tL  TC  RLIMCHK (WITH INTERRUPT INHIBITED)\n#\tL  +1  ADRES  T,S  (DESIRED TRUNNION ANGLE ADDRESS)\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tRADMODES, MODEA, MODEB (OR DESIRED TRUNNION AND SHAFT\n#\tANGLES ELSEWHERE IN CONSECUTIVE LOCATIONS -- UNSWITCHED ERASABLE OR\n#\tCURRENT EBANK).\n#\n# SUBROUTINES CALLED:\tMAGSUB\n#\n# JOBS OR TASKS INITIATED:  NONE\n#\n# ALARMS:  NONE\n#\n# EXIT:\t\tL + 2\t(EITHER OR BOTH ANGLES NOT WITHIN LIMITS OF CURRENT MODE)\n#\t\tL + 3\t(BOTH ANGLES WITHIN LIMITS OF CURRENT MODE)\n\nRRLIMCHK\tEXTEND\n\t\tINDEX\tQ\n\t\tINDEX\t0\n\t\tDCA\t0\n\t\tINCR\tQ\n\t\tDXCH\tITEMP1\n\t\tLXCH\tQ\t\t# L(CALLER +2) TO L.\n\n\t\tCAF\tANTENBIT\t# SEE WHICH MODE RR IS IN.\n\t\tMASK\tRADMODES\n\t\tCCS\tA\n\t\tTCF\tMODE2CHK\n\n\t\tCA\tITEMP1\t\t# MODE 1 IS DEFINED AS\n# Page 523\n\t\tTC\tMAGSUB\t\t# \t1. ABS(T) L 55 DEGS.\n\t\tDEC\t-.30555\t\t# \t2. ABS(S + 5.5 DEGS) L 64.5 DEGS\n\t\tTC\tL\t\t#\t\t(SHAFT LIMITS AT +59, -70 DEGS)\n\n\t\tCAF\t5.5DEGS\n\t\tAD\tITEMP2\n\t\tTC\tMAGSUB\n\t\tDEC\t-.35833\t\t# 64.5 DEGS\n\t\tTC\tL\n\t\tTC\tRRLIMOK\t\t# IN LIMITS.\n\nMODE2CHK\tCAF\t82DEGS\t\t# MODE 2 IS DEFINED AS\n\t\tAD\tITEMP2\t\t#\t1. ABS(T) G 125 DEGS.\n\t\tTC\tMAGSUB\t\t#\t2. ABS(S + 82 DEGS) L 57 DEGS\n\t\tDEC\t-.31667\t\t#\t\t(SHAFT LIMITS AT -25, -139 DEGS)\n\t\tTC\tL\n\n\t\tCA\tITEMP1\n\t\tTC\tMAGSUB\n\t\tDEC\t-.69444\t\t# 125 DEGS\n\nRRLIMOK\t\tINDEX\tL\n\t\tTC\tL\t\t# ( = TC 1 )\n\n5.5DEGS\t\tDEC\t.03056\n82DEGS\t\tDEC\t.45556\n\n# Page 524\n# PROGRAM NAME:\tSETTRKF\n#\n# FUNCTIONAL DESCRIPTION:\n#\n# \tSETTRKF UPDATES THE TRACKER FAIL LAMP ON THE DSKY.\n#\tINITIALLY THE LAMP TEST FLAG (IMODES33 BIT 1) IS CHECKED.\n# \tIF A LAMP TEST IS IN PROGRESS, THE PROGRAM EXITS TO L +1.\n#\tIF NO LAMP TEST THE FOLLOWING IS CHECKED SEQUENTIALLY:\n#\t\t1) RR CDU'S BEING ZEROED, RR CDU OK, AND RR NOT IN\n#\t\t   AUTO MODE (RADMODES BITS 13, 7, 2).\n#\t\t2) LR VEL DATA FAIL AND NO LR POS DATA (RADMODES BITS\n#\t\t   8,5)\n#\t\t3) NO RR DATA (RADMODES BIT 4)\n#\tTHE ABSENCE OF ALL THREE SIMULTANEOUSLY IN (1), THE PRESENCE OF BOTH\n#\tIN (2), AND THE PRESENCE OF (3) RESULTS IN EITHER THE TRACKER FAIL\n#\tLAMP (DSPTAB +11D BIT 8) BEING TURNED OFF OR IS LEFT OFF.  THEREFORE, THE\n#\tTRACKER FAIL LAMP IS TURN ON IF:\n#\t\tA) RR CDU FAILED WITH RR IN AUTO MODE AND RR CDU'S NOT BEING ZEROED\n#\t\tB) N SAMPLES OF LR DATA COULD NOT BE TAKEN IN 2N TRIES WITH\n#\t\t   EITHER THE ALT OR VEL INFORMATION\n#\t\tC) N SAMPLES OF RR DATA COULD NOT BE OBTAINED FROM 2N TRIES\n#\t\t   WITH EITHER THE AL\n#\n# CALLING SEQUENCE:\n#\n#\tL\tTC\tSETTRKF\n#\n# ERASABLE INITIALIZATION REQUIRED:  IMODES33, RADMODES, DSPTAB +11D\n#\n# SUBROUTINES CALLED:  NONE\n#\n# JOBS OR TASKS INITIATED:  NONE\n#\n# ALARMS:  TRACKER FAIL LAMP\n#\n# EXIT:  L +1 (ALWAYS)\n\nSETTRKF\t\tCAF\tBIT1\t\t# NO ACTION IF DURING LAMP TEST\n\t\tMASK\tIMODES33\n\t\tCCS\tA\n\t\tTC\tQ\n\nRRTRKF\t\tCA\tBIT8\n\t\tTS\tL\n\n\t\tCAF\t13,7,2\t\t# SEE IF CDU FAILED.\n\t\tMASK\tRADMODES\n\t\tEXTEND\n\t\tBZF\tTRKFLON\t\t# CONDITION 3 ABOVE.\n\nRRCHECK\t\tCAF\tRRDATABT\t# SEE IF RR DATA FAILED.\n\t\tMASK\tRADMODES\n# Page 525\n\t\tCCS\tA\nTRKFLON\t\tCA\tL\n\t\tAD\tDSPTAB +11D\t# HALF ADD DESIRED AND PRESENT STATES.\n\t\tMASK\tL\n\t\tEXTEND\n\t\tBZF\tTCQ\t\t# NO CHANGE.\n\nFLIP\t\tCA\tDSPTAB +11D\t# CAN'T USE LXCH DSPTAB +11D (RESTART PROB)\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tMASK\tPOSMAX\n\t\tAD\tBIT15\n\t\tTS\tDSPTAB +11D\n\t\tTC\tQ\n\n13,7,2\t\tOCT\t10102\nENDRMODF\tEQUALS\n\n# Page 526\n# PROGRAM NAME:  RRTURNON\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tRRTURNON IS THE TURN-ON SEQUENCE WHICH, ALONG WTIH\n#\tRRZEROSB, ZEROES THE CDU'S AND DETERMINES THE RR MODE.\n#\tINITIALLY, CONTROL IS TRANSFERRED TO RRZEROSB FOR THE\n#\tACTUAL TURN-ON SEQUENCE.  UPON RETURN THE PROGRAM\n#\tWAITS 1 SECOND BEFORE REMOVING THE TURN-ON FLAG\n#\t(RADMODES BIT1) SO THE REPOSITION ROUTINE WON'T\n#\tINITIATE PROGRAM ALARM 00501.  A CHECK IS THEN MADE\n#\tTO SEE IF A PROGRAM IS USING THE RR (STATE BIT 7).  IF\n#\tSO, THE PROGRAM EXITS TO ENDRADAR SO THAT THE RR CDU\n#\tFAIL FLAG (RADMODES BIT 7) CAN BE CHECKED BEFORE\n#\tRETURNING TO THE WAITING PROGRAM.  IF NOT, THE PROGRAM EXITS\n#\tTO TASKOVER.\n#\n# CALLING SEQUENCE:  WAITLIST TASK FROM RRAUTCHK IF THE RR POWER-ON AUTO\n# BIT (CHAN 33 BIT 2) CHANGES TO 0 AND NO PROGRAM WAS USING\n# THE RR (STATE BIT 7).\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tRADMODES, STATE\n#\n# SUBROUTINES CALLED:  RRZEROSB, FIXDELAY, TASKOVER, ENDRADAR\n#\n# JOBS OR TASKS INITIATED:\n#\n#\tNONE\n#\n# ALARMS:  NONE (SEE RRZEROSB)\n#\n# EXIT:  TASKOVER, ENDRADAR (WAITING PROGRAM)\n\n\t\tBANK\t24\n\t\tSETLOC\tP20S1\n\t\tBANK\n\n\t\tEBANK=\tLOSCOUNT\n\t\tCOUNT*\t$$/RSUB\nRRTURNON\tTC\tRRZEROSB\n\t\tTC\tFIXDELAY\t# WAIT 1 SEC BEFORE REMOVING TURN ON FLAG\n\t\tDEC\t100\t\t# SO A MONITOR REPOSITION WON'T ALARM.\n\t\tCS\tTURNONBT\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\n\t\tTCF\tTASKOVER\n# Page 527\n# PROGRAM NAME:  RRZEROSB\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tRRZEROSB IS A CLOSED SUBROUTINE TO ZERO THE RR CDU'S,\n#\tDETERMINE THE RR MODE, AND TURN ON THE TRACKER FAIL\n#\tLAMP IF REQUIRED.  INITIALLY THE RR CDU ZERO BIT (CHAN 12\n#\tBIT 1) IS SET.  FOLLOWING A 20 MILLISECOND WAIT, THE LGC\n#\tRR CDU COUNTERS (OPTY, OPTX) ARE SET = 0 AFTER\n# \tWHICH THE RR CDU ZERO DISCRETE (CHAN 12 BIT 1) IS\n#\tREMOVED.  A 4 SECOND WAIT IS SET TO ALL THE RR CDU'S\n#\tTO REPEAT THE ACTUAL TRUNNION AND SHAFT ANGLES.  THE\n#\tRR CDU ZERO FLAG (RADMODES BIT 13) IS REMOVED.  THE\n#\tCONTENTS OF OPTY IS THEN CHECKED TO SEE IF THE TRUNNION\n#\tANGLE IS LESS THAN 90 DEGREES.  IF NOT, BIT 12 OF\n#\tRADMODES IS SET = 1 TO INDICATE RR ANTENNA MODE 2.\n#\tIF LESS THAN 90 DEGREES, BIT 12 OF RADMODES IS SET = 0 TO\n#\tINDICATE RR ANTENNA MODE 1.  SETTRKF IS THEN CALLED TO\n#\tSEE IF THE TRACKER FAIL LAMP SHOULD BE TURNED ON.\n#\n# CALLING SEQUENCE:  L  TC  RRZEROSB  (FROM RRTURNON AND RRZERO)\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tRADMODES (BIT 13 SET), DSPTAB +11D\n#\n# SUBROUTINES CALLED:  FIXDELAY, MAGSUB, SETTRKF\n#\n# JOBS OR TASKS INITIATED:\n#\n#\tNONE\n#\n# ALARMS:  TRAKCER FAIL\n#\n# EXIT:  L +1 (ALWAYS)\n\nRRZEROSB\tEXTEND\n\t\tQXCH\tRRRET\n\t\tCAF\tBIT1\t\t# BIT 13 OF RADMODES MUST BE SET BEFORE\n\t\tEXTEND\t\t\t# COMING HERE.\n\t\tWOR\tCHAN12\t\t# TURN ON ZERO RR CDU\n\t\tTC\tFIXDELAY\n\t\tDEC\t2\n\n\t\tCAF\tZERO\n\t\tTS\tCDUT\n\t\tTS\tCDUS\n\t\tCS\tONE\t\t# REMOVE ZEROING BIT.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tTC\tFIXDELAY\n\t\tDEC\t1000\t\t# RESET FAIL INHIBIT IN 10 SECS. -- D.281\n\n\t\tCS\tRCDU0BIT\t# REMOVE ZEROING IN PROCESS BIT\n# Page 528\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\n\n\t\tCA\tCDUT\n\t\tTC\tMAGSUB\n\t\tDEC\t-.5\n\t\tTCF\t+3\t\t# IF MODE 2.\n\n\t\tCAF\tZERO\n\t\tTCF\t+2\n\t\tCAF\tANTENBIT\n\t\tXCH\tRADMODES\n\t\tMASK\t-BIT12\n\t\tADS\tRADMODES\n\n\t\tTC\tSETTRKF\t\t# TRACKER LAMP MIGHT GO ON NOW.\n\n\t\tTC\tRRRET\t\t# DONE.\n\n-BIT12\t\tEQUALS\t-1/8\t\t# IN SPROOT\n\n# Page 529\n# PROGRAM NAME:  DORREPOS\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tDORREPOS IS A SEQUENCE OF TASKS TO DRIVE THE RENDEZVOUS RADAR\n#\tTO A SAFE POSITION.  INIITALLY SETRRECR IS CALLED WHERE THE RR\n#\tERROR COUNTERS (CHAN 12 BIT 2) ARE ENABLED AND LASTYCMD\n#\tAND LASTXCMD SET = 0 TO INDICATE THE DIFFERENCE BETWEEN THE\n#\tDESIRED STATE AND PRESENT STATE OF THE COMMANDS.  THE RR\n#\tTURN-ON FLAG (RADMODES BIT 1) IS CHECKED AND IF NOT PRESENT,\n#\tPROGRAM ALARM 00501 IS REQUESTED BEFORE CONTINUING.  IN EITHER\n#\tCASE, FOLLOWING A 20 MILLISECOND WAIT THE PROGRAM CHECKS THE CURRENT\n#\tRR ANTENNA MODE (RADMODES BIT 12).  RRTONLY IS THEN CALLED\n#\tTO DRIVE THE TRUNNION ANGLE TO 0 DEGREES IF IN MODE 1 AND TO 180\n#\tDEGREES IF IN MODE 2.  UPON RETURN, THE CURRENT RR ANTENNA\n#\tMODE (RADMODES BIT 12) IS AGAIN CHECKED.  RRSONLY IS THEN\n#\tCALLED TO DRIVE THE SHAFT ANGLE TO 0 DEGREES IF IN MODE 1 AND TO\n#\t-90 DEGREES IF IN MODE 2.  IF DURING RRTONLY OR RRSONLY A\n#\tREMODE HAS BEEN REQUESTED (RADMODES BIT 14), AND ALWAYS\n#\tFOLLOWING COMPLETION OF RRSONLY, CONTROL IS TRANFERRED TO\n#\tREPOSRPT.  HERE THE REPOSITION FLAG (RADMODES BIT 11) IS\n#\tREMOVED.  A CHECK IS THEN MADE ON THE DESIGNATE FLAG (RADMODES\n#\tBIT 10).  IF PRESENT, CONTROL IS TRANSFERRED TO BEGDES.  IF NOT PRESENT\n#\tINDICATING NO FURTHER ANTENNA CONTROL REQUIRED, THE RR ERROR\n#\tCOUNTER BIT (CHAN 12 BIT 2) IS REMOVED AND THE ROUTINE EXITS TO\n#\tTASKOVER.\n#\n# CALLING SEQUENCE:\n#\n#\tWAITLIST CALL FROM RRGIMON IF TRUNNION AND SHAFT CDU ANGLES\n#\tNOT WITHIN LIMITS OF CURRENT MODE.\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tRADMODES\n#\n# SUBROUTINES CALLED\n#\n#\tRRTONLY, RRSONLY, BEGDES (EXIT)\n#\n# JOBS OR TASKS INITIATED:\n#\n#\tNONE\n#\n# ALARMS:  NONE\n#\n# EXIT:  TASKOVER, BEGDES\n\nDORREPOS\tTC\tSETRRECR\t# SET UP RR CDU ERROR COUNTERS.\n\n# ALARM 501 DELETED IN DANCE 279 PER PCR 97.\n\n\t\tTC\tFIXDELAY\n\t\tDEC\t2\n\n\t\tCAF\tANTENBIT\t# MANEUVER TRUNNION ANGLE TO NOMINAL POS.\n# Page 530\n\t\tMASK RADMODES\n\t\tCCS\tA\n\t\tCAF\tBIT15\t\t# 0 FOR MODE 1 AND 180 FOR MODE 2.\n\t\tTC\tRRTONLY\n\n\t\tCAF\tANTENBIT\t# NOT PUT SHAFT IN RIGHT POSITION\n\t\tMASK\tRADMODES\n\t\tCCS\tA\n\t\tCS\tHALF\t\t# -90 FOR MODE 2.\n\t\tTC\tRRSONLY\n\nREPOSRPT\tCS\tREPOSBIT\t# RETURNS HERE FROM RR1AXIS IN REMODE\n\t\t\t\t\t# REQUESTED DURING REPOSITION.\n\t\tMASK\tRADMODES\t# REMOVE REPOSITION BIT.\n\t\tTS\tRADMODES\n\t\tMASK\tDESIGBIT\t# SEE IF SOMEONE IS WAITING TO DESIGNATE.\n\t\tCCS\tA\n\t\tTCF\tBEGDES\n\t\tCS\tBIT2\t\t# IF NO FURTHER ANTENNA CONTROL REQUIRED,\n\t\tEXTEND\t\t\t# REMOVE ERROR COUNTER ENABLE.\n\t\tWAND\tCHAN12\n\t\tTCF\tTASKOVER\n\nSETRRECR\tCAF\tBIT2\t\t# SET UP RR ERROR COUNTERS\n\t\tEXTEND\n\t\tRAND\tCHAN12\n\t\tCCS\tA\t\t# DO NOT CLEAR LAST COMMAND IF\n\t\tTC\tQ\t\t# ERROR COUNTERS ARE ENABLED\n\n\t\tTS\tLASTYCMD\n\t\tTS\tLASTXCMD\n\t\tCAF\tBIT2\n\t\tEXTEND\n\t\tWOR\tCHAN12\t\t# ENABLE RR CDU ERROR COUNTERS.\n\t\tTC\tQ\n# Page 531\n# PROGRAM NAME:  REMODE\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tREMODE IS THE GENERAL REMODING SUBROUTINE.  IT DRIVES THE\n#\tTRUNNION ANGLE TO 0 DEGREES IF THE CURRENT MODE IS MODE 1,\n#\t180 DEGREES FOR MODE 2, THEN DRIVES THE SHAFT ANGLE TO -45\n#\tDEGREES, AND FINALLY DRIVES THE TRUNNION ANGLE TO -130 DEGREES,\n#\tTO PLACE THE RR IN MODE 2, -50 DEGREES FOR MODE 1, BEFORE\n#\tINITIATING 2-AXIS CONTROL.  ALL REMODING IS DONE WITH SINGLE\n#\tAXIS ROTATIONS (RR1AXIS).  INITIALLY THE RR ANTENNA MODE FLAG\n#\t(RADMODES BIT 12) IS CHECKED.  CONTROL IS THEN TRANSFERRED TO\n#\tRRTONLY TO DRIVE THR TRUNNION ANGLE TO 0 DEGREES IF IN MODE 1\n#\tOR 180 DEGREES IF IN MODE 2.  RRSONLY IS THEN CALLED TO DRIVE\n#\tTHE SHAFT ANGLE TO -45 DEGREES. THE RR ANTENNA MODE FLAG\n#\t(RADMODES BIT 12) IS CHECKED AGAIN.  CONTROL IS AGAIN\n#\tTRANSFERRED TO RRTONLY TO DRIVE THE TRUNNION ANGLE TO -130\n#\tDEGREES TO PLACE THE RR IN MODE 2 IF CURRENTLY IN MODE 1 OR TO\n#\t-50 DEGREES IF IN MODE 2 TO PLACE THE RR IN MODE 1.  RMODINV\n#\tIS THEN CALLED TO SET RADMODES BIT 12 TO INDICATE THE NEW\n#\tRR ANTENNA MODE.  THE REMODE FLAG (RADMODES BIT 14)\n#\tIS REMOVED TO INDICATE THAT REMODING IS COMPLETE.  THE PROGRAM\n#\tTHEN EXITS TO STDESIG TO BEGIN 2-AXIS CONTROL.\n#\n# CALLIN SEQUENCE:\n#\n#\tFROM BEGDES WHEN REMODE FLAG (RADMODES BIT 14) IS SET.\n#\tTHIS FLAG MAY BE SET IN RRDESSM AND RRDESNB IF RRLIMCHK\n#\tDETERMINES THAT THE DESIRED ANGLES ARE WITHIN THE LIMITS OF THE\n#\tOTHER MODE.\n#\n# ERASABLE INIITIALIZATION REQUIRED:\n#\n#\tRADMODES\n#\n# SUBROUTINES CALLED:\n#\n#\tRRTONLY, RRSONL, RMODINV (ACTUALLY PART OF)\n#\n# JOBS OR TASKS INITIATED:\n#\n#\tNONE\n#\n# ALARMS:  NONE\n#\n# EXIT:  STDESIG\n\nREMODE\t\tCAF\tANTENBIT\t# DRIVE TRUNNION TO 0 (180)\n\t\tMASK\tRADMODES\t# (ERROR COUNTER ALREADY ENABLED)\n\t\tCCS\tA\n\t\tCAF\tBIT15\n\t\tTC\tRRTONLY\n\n\t\tCAF\t-45DEGSR\n\t\tTC\tRRSONLY\n# Page 532\n\t\tCS\tRADMODES\n\t\tMASK\tANTENBIT\n\t\tCCS\tA\n\t\tCAF\t-80DEGSR\t# GO TO T = -130 (-50).\n\t\tAD\t-50DEGSR\n\t\tTC\tRRTONLY\n\n\t\tCS\tRADMODES\n\t\tMASK\tANTENBIT\n\t\tCCS\tA\n\t\tCAF\tBIT15\t\t# GO TO T = -180 (+0).\n\t\tTC\tRRTONLY\n\n\t\tCS\tRADMODES \t# GO TO S = -90 (+0).\n\t\tMASK\tANTENBIT\n\t\tCCS\tA\n\t\tCS\tHALF\n\t\tTC\tRRSONLY\n\n\t\tTC\tRMODINV\n\n\t\tCS\tREMODBIT\t# END OF REMODE.\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\n\n\t\tCAF\tDESIGBIT\t# WAS REMODE CALLED DURING DESIGNATE?\n\t\tMASK\tRADMODES\t# (BIT10 RADMODES = 1)\n\t\tEXTEND\n\t\tBZF\tRGOODEND\t# NO -- RETURN TO CALLER WAITING IN RADSTALL\n\t\tTC\tSTDESIG\t\t# YES -- RETURN TO DESIGNATE\n-45DEGSR\t=\t13,14,15\n-50DEGSR\tDEC\t-.27778\n-80DEGSR\tDEC\t-.44444\n\nRMODINV\t\tLXCH\tRADMODES\t# INVERT THE MODE STATUS.\n\t\tCAF\tANTENBIT\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tRADMODES\n\t\tTC\tQ\n\n# Page 533\n# PROGRAM NAMES:\tRRTONLY, RRSONLY\n#\n# FUNCTIONAL DESCRIPTION:\n#\n# \tRRTONLY AND RRSONLY ARE SUBROUTINES FOR DOING SINGLE AXIS\n#\tRR MANEUVERS FOR REMODE AND REPOSITION.  IT DRIVES TO\n#\tWITHIN 1 DEGREE.  INITIALLY, AT RR1AX2, THE REMODE AND REPOSITION\n#\tFLAGS (RADMODES BITS 14, 11) ARE CHECKED.  IF BOTH EXIST,\n#\tTHE PROGRAM EXITS TO REPOSRPT (SEE DORREPOS).  THIS INDICATES\n#\tTHAT SOMEONE POSSIBLY REQUESTED A DESIGNATE (RADMODES BIT 10)\n#\tWHICH REQUIRES A REMODE (RADMODES BIT 14) AND THAT A\n#\tREPOSITION IS IN PROGRESS (RADMODES BIT 11).  IF NONE\n# \tOR ONLY ONE OF THE FLAGS EXIST, REMODE OR REPOSITION, MAGSUB\n#\tIS CALLED TO SEE IF THE APPROPRIATE ANGLE IS WITHIN 1 DEGREE.  IF YES,\n#\tCONTROL RETURNS TO THE CALLING ROUTINE.  IF NOT, CONTROL IS\n#\tTRANSFERRED TO RROUT FOR SINGLE AXIS MANEUVERS WITH THE OTHER\n#\tANGLE SET = 0.  FOLLOWING A .5 SECOND WAIT, THE ABOVE PROCEDURE IS\n#\tREPEATED.\n#\n# CALLING SEQUENCE:\tL-1\tCAF\t*ANGLE*\t\t(DESIRED ANGLE SCALED PI)\n#\t\t\tL\tTC\tRRTONLY\t\t(TRUNNION ONLY)\n#\t\t\tRRSONLY\t\t\t\t(SHAFT ONLY)\n#\t\t\tRRTONLY IS CALLED BY PREPOS29;\n#\t\t\tRRTONLY AND RRSONLY ARE CALLED BY DORREPOS AND REMODE\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tC(A) = DESIRED ANGLE, RADMODES\n#\n# SUBROUTINES CALLED:\n#\n#\tFIXDELAY, REPOSRPT, MAGSUB, RROUT\n#\n# JOBS OR TASKS INITIATED:\n#\n#\tNONE\n#\n# ALARMS:  NONE\n#\n# EXIT:\tREPOSRPT (REMODE AND REPOSITION FLAGS PRESENT -- RADMODES\n#\tBITS 14, 11)\n#\tL+1 (ANGLE WITHIN ONE DEGREE OR RR OUT OF AUTO MODE)\n\nRRTONLY\t\tTS\tRDES\t\t# DESIRED TRUNNION ANGLE.\n\t\tCAF\tZERO\n\t\tTCF\tRR1AXIS\n\nRRSONLY\t\tTS\tRDES\t\t# SHAFT COMMANDS ARE UNRESOLVED SINCE THIS\n\t\tCAF\tONE\t\t# ROUTINE ENTERED ONLY WHEN T = 0 OR 180.\n\nRR1AXIS\t\tTS\tRRINDEX\n\t\tEXTEND\n\t\tQXCH\tRRRET\n\t\tTCF\tRR1AX2\n\n# Page 534\nNXTRR1AX\tTC\tFIXDELAY\n\t\tDEC\t50\t\t# 2 SAMPLES PER SECOND.\n\nRR1AX2\t\tCS\tRADMODES\t# IF SOMEONE REQUESTS A DESIGNATE WHICH\n\t\tMASK\tPRIO22\t\t# REQUIRES A REMODE AND A REPOSITION IS IN\n\t\tEXTEND\t\t\t# PROGRESS, INTERRUPT IT AND START THE\n\t\tBZF\tREPOSRPT\t# REMODE IMMEDIATELY.\n\n\t\tCA\tRDES\n\t\tEXTEND\n\t\tINDEX\tRRINDEX\n\t\tMSU\tCDUT\n\t\tTS\tITEMP1\t\t# SAVE ERROR SIGNAL.\n\t\tEXTEND\n\t\tMP\tRRSPGAIN\t# TRIES TO NULL .7 OF ERROR OVER NEXT .5\n\t\tTS\tL\n\t\tCA\tRADMODES\n\t\tMASK\tAUTOMBIT\n\t\tXCH\tITEMP1\t\t# STORE RR-OUT-OF-AUTO-MODE BIT.\n\t\tTC\tMAGSUB\t\t# SEE IF WITHIN ONE DEGREE.\n\t\tDEC\t-.00555\t\t# SCALED IN HALF-REVS.\n\n\t\tCCS\tITEMP1\t\t# NO.  IF RR OUT OF AUTO MODE, EXIT.\n\t\tTC\tRRRET\t\t# RETURN TO CALLER.\n\n\t\tCCS\tRRINDEX\t\t# COMMAND FOR OTHER AXIS IS ZERO.\n\t\tTCF\t+2\t\t# SETTING A TO 0.\n\t\tXCH\tL\n\t\tDXCH\tTANG\n\n\t\tTC\tRROUT\n\n\t\tTCF\tNXTRR1AX\t# COME BACK IN .5 SECONDS.\n\nRRSPGAIN\tDEC\t.59062\t\t# NULL .7 ERROR IN .5 SEC.\n\n# Page 535\n# PROGRAM NAME:  RROUT\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tRROUT RECEIVES RR GYRO COMMANDS IN TANG, TANG +1 IN RR\n#\tERROR COUNTER SCALING.  RROUT THEN LIMITS THEM AND\n#\tGENERATES COMMANDS TO THE CDU TO ADJUST THE ERROR COUNTERS\n#\tTO THE DESIRED VALUES.  INITIALLY MAGSUB CHECKS THE MAGNITUDE OF\n#\tTHE COMMAND (SHAFT ON 1ST PASS) TO SEE IF IT IS GREATER THAN\n#\t384 PULSES.  IF NOT, CONTROL IS TRANFERRED TO RROUTLIM TO\n#\tLIMIT THE COMMAND TO +384 OR -384 PULSES.  THE DIFFERENCE IS\n#\tTHEN CALCULATED BETWEEN THE DESIRED STATE AND TEH PRESENT STATE OF\n#\tTHE ERROR COUNTER AS RECORDED IN LASTYCMD AND LASTXCMD.\n#\tTHE RESULT IS STORED IN OPTXCMD (1ST PASS) AND OPTYCMD (2ND\n#\tPASS).  FOLLOWING THE SECOND PASS, FOR THE TRUNNION COMMAND, THE\n#\tOCDUT AND OCDUS ERROR COUNTER DRIVE BITS (CHAN 14 BITS 12, 11)\n#\tARE SET.  THIS PROGRAM THEN EXITS TO THE CALLING PROGRAM.\n#\n# CALLING SEQUENCE:\n#\n#\tL TC RROUT (WITH RUPT INHIBITED) RROUT IS CALLED BY\n#\tRRTONLY, RRSONLY, AND DODES\n#\n# ERASABLE INITIALIZATION REQURIED:\n#\n#\tTANG, TANG +1 (DESIRED COMMANDS), LASTYCMD, LASTXCMD\n#\t(1ST PASS = 0), RR ERROR COUNTER ENAGLE SET (CHAN 12 BIT 2).\n#\n# SUBROUTINES CALLED:\n#\n#\tMAGSUB\n#\n# JOBS OR TASKS INITIATED:\n#\n#\tNONE\n#\n# ALARMS:  NONE\n#\n# EXIT:  L+1 (ALWAYS)\n\nRROUT\t\tLXCH\tQ\t\t# SAVE RETURN\n\t\tCAF\tONE\t\t# LOOP TWICE.\nRROUT2\t\tTS\tITEMP2\n\t\tINDEX\tA\n\t\tCA\tTANG\n\t\tTS\tITEMP1\t\t# SAVE SIGN COMMAND FOR LIMITING.\n\n\t\tTC\tMAGSUB\t\t# SEE IF WITHIN LIMITS.\n-RRLIMIT\tDEC\t-384\n\t\tTCF\tRROUTLIM\t# LIMIT COMMAND TO MAG OF 384.\n\nSETRRCTR\tCA\tITEMP1\t\t# COUNT OUT DIFFERENCE BETWEEN DESIRED\n\t\tINDEX\tITEMP2\t\t# STATE AND PRESENT STATE AS RECORDED IN\n\t\tXCH\tLASTYCMD\t# LASTYCMD AND LASTXCMD\n\t\tCOM\n# Page 536\n\t\tAD\tITEMP1\n\t\tAD\tNEG0\t\t# PREVENT +0 IN OUTCOUNTER\n\t\tINDEX\tITEMP2\n\t\tTS\tCDUTCMD\n\n\t\tCCS\tITEMP2\t\t# PROCESS BOTH INPUTS.\n\t\tTCF\tRROUT2\n\n\t\tCAF\tPRIO6\t\t# ENABLE COUNTERS.\n\t\tEXTEND\n\t\tWOR\tCHAN14\t\t# PUT ON CDU DRIVES S AND T\n\t\tTC\tL\t\t# RETURN.\n\nRROUTLIM\tCCS\tITEMP1\t\t# LIMIT COMMAND TO ABS VAL OF 384.\n\t\tCS\t-RRLIMIT\n\t\tTCF\t+2\n\t\tCA\t-RRLIMIT\n\t\tTS\tITEMP1\n\t\tTCF\tSETRRCTR +1\n\n# Page 537\n# ROUTINE TO ZERO THE RR CDUS AND DETERMINE THE ANTENNA MODE.\n\nRRZERO\t\tCAF\tBIT11+1\t\t# SEE IF MONITOR REPOSITION OR NOT IN AUTO\n\t\tMASK\tRADMODES\t# IF SO, DON'T RE-ZERO CDUS.\n\t\tCCS\tA\n\t\tTCF\tRADNOOP\t\t# (IMMEDIATE TASK TO RGOODEND).\n\n\t\tINHINT\n\t\tCS\tRCDU0BIT\t# SET FLAG TO SHOW ZEROING IN PROGRESS.\n\t\tMASK\tRADMODES\n\t\tAD\tRCDU0BIT\n\t\tTS\tRADMODES\n\n\t\tCAF\tONE\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tRRZ2\n\n\t\tCS\tRADMODES\t# SEE IF IN AUTO MODE.\n\t\tMASK\tAUTOMBIT\n\t\tCCS\tA\n\t\tTCF\tROADBACK\n\t\tTC\tALARM\t\t# AUTO DISCRETE NOT PRESENT -- TRYING\n\t\tOCT\t510\nROADBACK\tRELINT\n\t\tTCF\tSWRETURN\n\nRRZ2\t\tTC\tRRZEROSB\t# COMMON TO TURNON AND RRZERO.\n\t\tTCF\tENDRADAR\n\nBIT11+1\t\tOCT\t02001\n\n# Page 538\n# PROGRAM NAME:  RRDESSM\n#\n# FUNCTIONAL DESCRIPTION:\n#\n# \tTHIS INTERPRETIVE ROUTINE WILL DESIGNATE, IF DESIRED ANGLES ARE\n#\tWITHIN THE LIMITS OF EITHER MODE, TO A LINE-OF-SIGHT (LOS) VECTOR\n#\t(HALF-UNIT) KNOWN WITH RESPECT TO THE STABLE MEMBER PRESENT\n#\tORIENTATION.  INITIALLY THE IMU CDU'S ARE READ AND CONTROL\n#\tTRANSFERRED TO SMNB TO TRANSFORM THE LOS VECTOR FROM STABLE\n#\tMEMBER TO NAVIGATION BASE COORDINATES (SEE STG MEMO 699)\n#\tRRANGLES IS THEN CALLED TO CALCULATE THE RR GIMBAL ANGLES,\n#\tTRUNNION AND SHAFT, FOR BOT THE PRESENT AND ALTERNATE MODE.\n#\tRRLIMCHK IS CALLED TO SEE IF THE ANGLES CALCULATED FOR THE\n#\tPRESENT MODE ARE WITHIN LIMITS.  IF WITHIN LIMITS, THE RETUREN\n#\tLOCATION IS INCREMENTED, INASMUCH AS NO VEHICLE MANEUVER IS\n#\tREQUIRED, BEFORE EXITING TO STARTDES.  IF NOT WITHIN THE LIMITS OF THE\n#\tCURRENT MODE, TRYSWS IS CALLED.  FOLLOWING INVERTING OF THE RR\n#\tANTENNA MODE FLAG (RADMODES BIT 12), RRLIMCHK IS CALLED\n#\tTO SEE IF THE ANGLES CALCULATED FOR THE ALTERNATE MODE ARE WITHIN\n#\tLIMITS.  IF YES, THE RR ANTENNA MODE FLAG IS AGAIN INVERTED,\n#\tTHE REMODE FLAG (RADMODES BIT 14) SET, AND THE RETURN LOCATION\n#\tINCREMENTED, TO INDICATE NO VEHICLE MANEUVER IS REQUIRED, BEFORE\n#\tEXITING TO STARTDES.  IF THESE ANGLES ARE NOT WITHIN LIMITS\n#\tOF THE ALTERNATE MODE, THE RR ANTENNA MODE FLAG (RADMODES\n#\tBIT 12) IS INVERTED BEFORE RETURNING DIRECTLY TO THE CALLING PROGRAM\n# \tTO INDICATE THAT A VEHICLE MANEUVER IS REQUIRED.\n#\n# CALLING SEQUENCE:\n#\n#\tL\tSTCALL\tRRTARGET\t(LOS HALF-UNIT VECTOR IN SM COORDINATES)\n#\tL+1\tRRDESM\n#\tL+2\tBASIC\t\t\t(VEHICLE MANEUVER REQUIRED)\n#\tL+3\tBASIC\t\t\t(NO VEHICLE MANEUVER REQUIRED)\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tRRTARGET, RADMODES\n#\n# SUBROUTINES CALLED:\n#\n#\tREADCDUS, SMNB, RRANGLES, RRLIMCHK, TRYSWS (ACTUALLY\n#\tPART OF), RMODINV\n#\n# JOBS OR TASKS INITIATED:\n#\n#\tNONE\n#\n# ALARMS:  NONE\n#\n# EXIT:  L+2 (NEITHER SET OF ANGLES ARE WITHIN LIMITS OF RELATED MODE)\n# STARTDES (DESIGNATE POSSIBLE AT PRESENT VEHICLES ATTITUDE -- RETURNS\n# TO L+3 FROM STARTDES)\n\nRRDESSM\t\tSTQ\tCLEAR\n\t\t\tDESRET\n# Page 539\n\t\t\tRRNBSW\n\t\tCALL\t\t\t# COMPUTES SINES AND COSINES, ORDER Y Z X\n\t\t\tCDUTRIG\n\t\tVLOAD\tCALL\t\t# LOAD VECTOR AND CALL TRANSFORMATION\n\t\t\tRRTARGET\n\t\t\t*SMNB*\n\n\t\tCALL\t\t\t# GET RR GIMBAL ANGLES IN PRESENT AND\n\t\t\tRRANGLES\t# ALTERNATE MODE.\n\t\tEXIT\n\n\t\tINHINT\n\t\tTC\tRRLIMCHK\n\t\tADRES\tMODEA\t\t# CONFIGURATION FOR CURRENT MODE.\n\t\tTC\t+3\t\t# NOT IN CURRENT MODE\nOKDESSM\t\tINCR\tDESRET\t\t# INCREMENT SAYS NO VEHICLE MANEUVER REQ.\n\t\tTC\tSTARTDES\t# SHOW DESIGNATE REQUIRED\n\t\tCS\tFLAGWRD8\n\t\tMASK\tSURFFBIT\t# CHECK IF ON LUNAR SURFACE (SURFFLAG=P22F)\n\t\tEXTEND\n\t\tBZF\tNORDSTAL\t# BRANCH -- YES -- CANNOT DESIGNATE IN MODE 2\n\t\tTC\tTRYSWS\n\nLUNDESCH\tCS\tFLAGWRD8\t# OVERFLOW RETURN FROM RRANGLES\n\t\tMASK\tSURFFBIT\t# CHECK IF ON LUNAR SURFACE\n\t\tEXTEND\n\t\tBZF\tNORDSTAL\t# BRANCH -- YES -- RETURN TO CALLER -- ALARM 527\n\t\tCA\tSTATE\n\t\tMASK\tRNDVZBIT\n\t\tCCS\tA\t\t# TEST RNDVZFLG\n\t\tTC\tNODESSM\t\t# NOT ON MOON -- CALL FOR ATTITUDE MANEUVER\n\t\tTCF\tENDOFJOB\t# ... BUT NOT IN R29.\n\n# Page 540\n# PROGRAM NAME:  STARTDES\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tSTARTDES IS ENTERED WHEN WE ARE READY TO BEGIN DESIGNATION.\n#\tBIT 14 OF RADMODES IS ALREADY SET IF A REMODE IS REQUIRED.\n#\tAT THIS TIME, THE RR ANTENNA MAY BE IN A REPOSITON\n#\tOPERATION.  IN THIS CASE, IF A REMODE IS REQUIRED IT MAY HAVE\n#\tALREADY BEGUN BUT IN ANY CASE THE REPOSITION WILL BE INTERRUPTED.\n#\tOTHERWISE, THE REPOSITION WILL BE COMPLETED BEFORE 2-AXIS\n#\tDESIGNATION BEGINS.  INITIALLY DESCOUNT IS SET = 60 TO INDICATE\n#\tTHAT 30 SECONDS WILL BE ALLOWED FOR THE RR DATA GOOD INBIT\n#\t(CHAN 33 BIT 4) IF LOCK-ON IS DESIRED (STATE BIT 5).  BIT 10\n#\tOF RADMODES IS SET TO SHOW THAT A DESIGNATE IS REQUIRED.\n#\tTHE REPOSITON FLAG (RADMODES BIT 11) IS CHECKED.  IF SET,\n#\tTHE PROGRAM EXITS TO L+3 OF THE CALLING PROGRAM (SEE RRDESSM\n#\tAND RRDESNB).  THE PROGRAM WILL BEGIN DESIGNATING TO THE DESIRED\n#\tANGLES FOLLOWING THE REPOSITON OR REMODE IF ONE WAS\n#\tREQUESTED.  IF THE REPOSITON FLAG IS NOT SET, SETRRECR IS CALLED\n#\tWITH SETS THE RR ERROR COUNTER ENABLE BIT (CHAN 12 BIT 2)\n# \tAND SETS LASTYCMD AND LASTXCMD = 0 TO INDICATE THE\n#\tDIFFERENCE BETWEEN THE PRESENT AND DESIRED STATE OF THE ERROR\n#\tCOUNTERS.  A 20 MILLISECOND WAITLIST CALL IS SET FOR BEGDES\n#\tAFTER WHICH THE PROGRAM EXITS TO L+3 OF TEH CALLING PROGRAM.\n#\n# CALLING SEQUENCE:\n#\n#\tFROM RRDESSM AND RRDESNB WHEN ANGLES WITHIN LIMITS.\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tRADMODES, (SEE DODES)\n#\n# SUBROUTINES CALLED\n#\n#\tSETRRECR, WAITLIST\n#\n# JOBS OR TASKS INITIATED:\n#\n#\tBEGDES\n#\n# ALARMS:  NONE\n#\n# EXIT:\tL+3 OF CALLING PROGRAM (SEE RRDESSM)\n#\tL+2 OF CALLING PROGRAM (SEE RRDESNB)\n\nSTARTDES\tINCR\tDESRET\n\t\tCS\tRADMODES\n\t\tMASK\tDESIGBIT\n\t\tADS\tRADMODES\n\t\tMASK\tREPOSBIT\t# SEE IF REPOSITIONING IN PROGRESS.\n\t\tCCS\tA\n\t\tTCF\tDESRETRN\t# ECTR ALREADY SET UP.\n\n\t\tTC\tSETRRECR\t# SET UP ERROR COUNTERS.\n# Page 541\n\t\tCAF\tTWO\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tBEGDES\n\nDESRETRN\tCA\tRADCADR\t\t# FIRST PASS THRU DESIGNATE\n\t\tEXTEND\n\t\tBZF\tDESRTRN\t\t# YES\tSET EXIT\n\t\tTC\tENDOFJOB\t# NO\nDESRTRN\t\tRELINT\n\t\tINCR\tDESRET\n\t\tCA\tDESRET\n\t\tTCF\tBANKJUMP\n\nNORDSTAL\tCAF\tZERO\t\t# ZERO RADCADR TO WIPE OUT ANYONE\n\t\tTS\tRADCADR\t\t# WAITING IN RADSTALL SINCE WE ARE NOW\n\t\tTCF\tDESRTRN\t\t# RETURNING TO P20 AND MAY DO NEW RADSTALL\n\n# Page 542\n# SEE IF RRDESSM CAN BE ACCOMPLISHED AFTER A REMODE.\n\nTRYSWS\t\tTC\tRMODINV\t\t# (NOTE RUPT INHIBIT)\n\t\tTC\tRRLIMCHK\t# TRY DIFFERENT MODE.\n\t\tADRES\tMODEB\n\t\tTCF\tNODESSM\t\t# VEHICLE MANEUVER REQUIRED\n\n\t\tTC\tRMODINV\t\t# RESET BIT12\n\t\tCAF\tREMODBIT\t# SET FLAG FOR REMODE.\n\t\tADS\tRADMODES\n\n\t\tTCF\tOKDESSM\n\nNODESSM\t\tTC\tRMODINV\t\t# RE-INVERT MODE AND RETURN\n\t\tINCR \tDESRET\t\t# TO CALLER +2\n\t\tTCF\tNORDSTAL\n\nMAXTRYS\t\tDEC\t60\n\n# Page 543\n# DESIGNATE TO SPECIFIC RR GIMBAL ANGLES (INDEPENDENT OF VEHICLE MOTION).  ENTER WITH DESIRED ANGLES IN\n# TANG AND TANG +1.\n\nRRDESNB\t\tTC\tMAKECADR\n\t\tTS\tDESRET\n\n\t\tTC\tDOWNFLAG\t# RESET FLAG TO PREVENT DODES FROM GOING\n\t\tADRES\tLOSCMFLG\t# BACK TO R21\n\t\tCA\tMAXTRYS\t\t# SET TIME LIMIT COUNTER\n\t\tTS\tDESCOUNT\t# FOR DESIGNATE\n\t\tINHINT\t\t\t# SEE IF CURRENT MODE OK.\n\t\tTC\tRRLIMNB\t\t# DO SPECIAL V41 LIMIT CHECK\n\t\tADRES\tTANG\n\t\tTCF\tTRYSWN\t\t# SEE IF IN OTHER MODE.\n\nOKDESNB\t\tRELINT\n\t\tEXTEND\n\t\tDCA\tTANG\n\t\tDXCH\tTANGNB\n\t\tTC\tINTPRET\n\n\t\tCALL\t\t\t# GET LOS IN NB COORDS.\n\t\t\tRRNB\n\t\tSTORE\tRRTARGET\n\n\t\tSET\tEXIT\n\t\t\tRRNBSW\n\n\t\tINHINT\n\t\tTCF\tSTARTDES +1\nTRYSWN\t\tTC\tRMODINV\t\t# SEE IF OTHER MODE WILL DO.\n\t\tTC\tRRLIMNB\t\t# DO SPECIAL V41 LIMIT CHECK\n\t\tADRES\tTANG\n\t\tTCF\tNODESNB\t\t# NOT POSSIBLE.\n\n\t\tTC\tRMODINV\n\t\tCAF\tREMODBIT\t# CALL FOR REMODE.\n\t\tADS\tRADMODES\n\t\tTCF\tOKDESNB\n\nNODESNB\t\tTC\tRMODINV\t\t# REINVERT MODE BIT.\n\t\tTC\tALARM\t\t# BAD INPUT ANGLES.\n\t\tOCT\t502\n\t\tTC\tCLRADMOD\n\t\tTC\tENDOFJOB\t# AVOID 503 ALARM.\n\nRRLIMNB\t\tINDEX\tQ\t\t# THIS ROUTINE IS IDENTICAL TO RRLIMCHK\n\t\tCAF\t0\t\t# EXCEPT THAT THE MODE 1 SHAFT LOWER\n\t\tINCR\tQ\t\t# LIMIT IS -85 INSTEAD OF -70 DEGREES\n\t\tEXTEND\n# Page 544\n\t\tINDEX\tA\t\t# READ GIMBAL ANGLES INTO ITEMP STORAGE\n\t\tDCA\t0\n\t\tDXCH\tITEMP1\n\t\tLXCH\tQ\t\t# L(CALLER +2) TO L\n\n\t\tCAF\tANTENBIT\t# SEE WHICH MODE RR IS IN\n\t\tMASK\tRADMODES\n\t\tCCS\tA\n\t\tTCF\tMODE2CHK\t# MODE 2 CAN USE RRLIMCHK CODING\n\t\tCA\tITEMP1\n\t\tTC\tMAGSUB\t\t# MODE 1 IS DEFINED AS\n\t\tDEC\t-.30555\t\t# 1 \tABS(T) L 55 DEGS\n\t\tTC\tL\t\t# 2 \tSHAFT LIMITS AT +59, -85 DEGS\n\n\t\tCA\tITEMP2\t\t# LOAD SHAFT ANGLE\n\t\tEXTEND\n\t\tBZMF\tNEGSHAFT\t# IF NEGATIVE SHAFT ANGLE, ADD 20.5 DEGS\n\t\tAD\t5.5DEGS\nSHAFTLIM\tTC\tMAGSUB\n\t\tDEC\t-.35833\t\t# 64.5 DEGREES\n\t\tTC\tL\t\t# NOT IN LIMITS\n\t\tTC\tRRLIMOK\t\t# IN LIMITS\nNEGSHAFT\tAD\t20.5DEGS\t# MAKE NEGATIVE SHAFT LIMIT -85 DEGREES\n\t\tTCF\tSHAFTLIM\n\n20.5DEGS\tDEC\t.11389\n\n# Page 545\n# PROGRAM NAME:  BEGDES\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tBEGDES CHECKS VARIOUS DESIGNATE REQUESTS AND REQUESTS THE\n#\tACTUAL RR DESIGNATION.  INITIALLY A CHECK IS MADE TO SEE IF A\n# \tREMODE (RADMODES BIT 14) IS REQUESTED OR IN PROGRESS.  IF SO,\n#\tCONTROL IS TRANFERRED TO STDESIG AFTER ROUTINE REMODE IS\n#\tEXECUTED.  IF NO REMODE, STDESIG IS IMMEDIATELY CALLED WHERE\n#\tFIRST THE REPOSITION FLAG (RADMODES BIT 11) IS CHECKED.  IF\n#\tPRESENT, THE DESIGNATE FLAG (RADMODES BIT 10) IS REMOVED\n#\tAFTER WHICH THE PROGRAM EXITS TO RDBADEND.  IF THE REPOSITION\n#\tFLAG IS NOT PRESET, THE CONTINUOUS DESIGNATE FLAG (RADMODES\n#\tBIT 15) IS CHECKED.  IF PRESENT, AN EXECUTIVE CALL IS IMMEDIATELY\n#\tMADE FOR DODES AFTER WHICH A .5 SECOND WAIT IS INITIATED BEFORE\n#\tREPEATING AT STDESIG.  IF THE RR SEARCH ROUTINE (LRS24.1) IS DESIGNATING\n#\tTO A NEW POINT (NEWPTFLG SET) THE CURRENT DESIGNATE TASK IS TERMINATED.\n#\tIF CONTINUOUS DESIGNATE IS NOT WANTED, THE DESIGNATE FLAG (RADMODES\n#\tBIT 10) IS CHECKED.  IF NOT PRESENT, THE PROGRAM EXITS TO ENDRADAR TO\n#\tCHECK RR CDU FAIL BEFORE RETURNING TO THE CALLING PROGRAM.  IF DESIGNATE\n#\tIS STILL REQUIRED, DESCOUNT IS CHECKED TO SEE IF THE 30 SECONDS HAS\n#\tEXPIRED BEFORE RECEIVING THE RR DATA GOOD (CHAN 33 BIT 4)\n#\tSIGNAL.  IF OUT OF TIME, PROGRAM ALARM 00503 IS REQUESTED, THE\n#\tRR AUTO TRACKER ENABLE AND RR ERROR COUNTER ENABLE\n#\t(CHAN 12 BITS 14,2) BITS REMOVED, AND THE DESIGNATE FLAG\n#\t(RADMODES BIT 10) REMOVED BEFORE EEXITING TO RDBADEND.  IF\n#\tTIME HAS NOT EXPIRED, DESCOUNT IS DECREMENTED, THE\n#\tEXECUTIVE CALL MADE FOR DODES, AND A .5 SECOND WAIT INITIATED\n#\tBEFORE REPEATING THIS PROCEDURE AT STDESIG.\n#\n# CALLING SEQUENCE:\n#\n#\tWAITLIST CALL FROM STARTDES\n#\tTCF BEGDES FROM DORREPOS\n#\tTC STDESIG RETURNING, FROM REMODE\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tDESCOUNT, FINDVAC\n#\n# JOBS OR TASKS INITIATED:  DODES\n#\n# ALARMS:  PROGRAM ALARM 00503 (30 SECONDS HAVE EXPIRED) WITH NO RR DATA\n# GOOD (CHAN 33 BIT 4) RECEIVED WHEN LOCK-ON (STATE BIT 5) WAS REQUESTED.\n#\n# EXIT:  \tTASKOVER (SEARCH PATTERN DESIGNATING TO NEW POINT)\n# \t\tENDRADAR (NO DESIGNATE -- RADMODES BIT 10)\n#\t\tRDBADEND (REPOSITION OR 30 SECONDS EXPIRED)\n\nBEGDES\t\tCS\tRADMODES\n# Page 546\n\t\tMASK\tREMODBIT\n\t\tCCS\tA\n\t\tTC\tSTDESIG\n\t\tTC\tREMODE\nDESLOOP\t\tTC\tFIXDELAY\t# 2 SAMPLES PER SECOND.\n\t\tDEC\t50\n\nSTDESIG\t\tCAF\tREPOSBIT\n\t\tMASK\tRADMODES\t# SEE IF GIMBAL LIMIT MONITOR HAS FOUND US\n\t\tCCS\tA\t\t# OUT OF BOUNDS.  IF SO, THIS BIT SHOWS A\n\t\tTCF\tBADDES\t\t# REPOSITION TO BE IN PROGRESS.\n\n\t\tCCS\tRADMODES\t# SEE IF CONTINUOUS DESIGNATE WANTED.\n\t\tTCF\t+3\t\t# IF SO, DON'T CHECK BIT 10 TO SEE IF IN\n\t\tTCF\t+2\t\t# LIMITS BUT GO RIGHT TO FINDVAC ENTRY.\n\t\tTCF\tMOREDES +1\n\n\t\tCS\tRADMODES\t# IF NON-CONTINUOUS, SEE IF END OF\n\t\tMASK\tDESIGBIT\t# PROBLEM (DATA GOOD IF LOCK-ON WANTED OR\n\t\tCCS\tA\t\t# WITHIN LIMITS IF NOT).  IF SO, EXIT AFTER\n\t\tTCF\tENDRADAR\t# CHECKING RR CDU FAIL.\n\nSTDESIG1\tCCS\tDESCOUNT\t# SEE IF THE TIME LIMIT HAS EXPIRED\n\t\tTCF\tMOREDES\n\n\t\tCS\tB14+B2\t\t# IF OUT OF TIME, REMOVE ECR ENABLE + TRKR\n\t\tEXTEND\n\t\tWAND\tCHAN12\nBADDES\t\tCS\tDESIGBIT\t# REMOVE DESIGNATE FLAG\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\n\t\tTCF\tRDBADEND\n\nMOREDES\t\tTS\tDESCOUNT\n\t\tCAF\tPRIO26\t\t# UPDATE GYRO TORQUE COMMANDS.\n\t\tTC\tFINDVAC\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tDODES\n\n\t\tTCF\tDESLOOP\n\nB14+B2\t\tOCT\t20002\n\n# Page 547\n# PROGRAM NAME:  DODES\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tDODES CALCULATES AND REQUESTS ISSUANCE OF RR GYRO TORQUE\n#\tCOMMANDS.  INITIALLY THE CURRENT RR CDU ANGLES ARE STORED AND\n#\tTHE LOS HALF-UNIT VECTOR TRANSFORMED FROM STABLE MEMBER TO\n#\tNAVIGATION BASE COORDINATES VIA SMNB IF NECESSARY.  THE\n#\tSHAFT AND TRUNNION COMMANDS ARE THEN CALCULATED AS FOLLOWS:\n#\t\t+ SHAFT = LOS . (COS(S), 0, -SIN(S))  (DOT PRODUCT)\n#\t\t- TRUNNION = LOS . (SIN(T)SIN(S), COS(T), SIN(T)COS(S))\n#\tTHE SIGN OF THE SHAFT COMMAND IS THEN REVERSED IF IN MODE 2\n#\t(RADMODES BIT 12) BECAUSE A RELAY IN THE RR REVERSES THE\n#\tPOLARITY OF THE COMMAND.  AT RRSCALUP EACH COMMAND IS\n#\tSCALED AND IF EITHER, OR BOTH, OF THE COMMANDS IS GREATER THAN\n#\t.5 DEGREES, MPAC +1 IS SET POSITIVE.  IF A CONTINUOUS DESIGNATE\n#\t(RADMODES BIT 15) IS DESIRED AND THE SEARCH ROUTINE IS NOT OPERATING,\n#\tTHE RR AUTO TRACKER ENABLE BIT (CHAN 12 BIT 14) IS CLEARED AND RROUT\n#\tCALLED TO PUT OUT THE COMMANDS PROVIDED NO REPOSITION (RADMODES BIT 11)\n#\tIS IN PROGRESS.  IF A CONTINUOUS DESIGNATE AND THE SEARCH ROUTINE IS\n#\tOPERATING (SRCHOPT FLAT SET) THE TRACK ENABLE IS NOT CLEARED.  IF NO\n#\tCONTINUOUS DESIGNATE AND BOTH COMMANDS ARE NOT LESS THAN .5 DEGREES AS\n#\tINDICATED BY MPAC +1, THE RR AUTO TRACKER ENABLE BIT (CHAN 12 BIT 14) IS\n# \tCLEARED AND RROUT CALLED TO PUT OUT THE COMMANDS PROVIDED NO REPOSITON\n#\t(RADMODES BIT 11) IS IN PROGRESS.  IF BOTH COMMANDS ARE LESS THAN .5\n#\tDEGREES AS INDICATED BY MPAC+1, THE RR AUTO TRACKER ENABLE BIT\n#\t(CHAN 12 BIT 14) IS CLEARED AND RROUT CALLED TO PUT OUT THE\n#\tCOMMANDS PROVIDED NO REPOSITION (RADMODES BIT 11) IS IN\n#\tPROGRESS.  IF BOTH COMMANDS ARE LESS THAN .5 DEGREES, THE\n#\tLOCK-ON FLAG (STATE BIT 5) IS CHECKED.  IF NOT PRESETN, THE\n#\tDESIGNATE FLAG (RADMODES BIT 10) IS CLEARED, AND ENDOFJOB\n#\tCALLED.  IF LOCK-ON IS DESIRED, THE RR AUTO TRACKER (CHAN 12\n#\tBIT 14) IS ENABLED FOLLOWED BY A CHECK OF THE RECEIPT OF THE\n#\tRR DATA GOOD (CHAN 33 BIT 4) SIGNAL.  IF RR DATA GOOD\n#\tPRESENT, THE DESIGNATE FLAG (RADMODES BIT 10) IS CLEARED,\n# \tTHE RR ERROR COUNTER ENABLE BIT (CHAN 12 BIT 2) IS CLEARED,\n#\tAND ENDOFJOB CALLED.  IF RR DATA GOOD IS NOT PRESENT, RROUT\n#\tIS CALLED TO PUT OUT THE COMMANDS PROVIDED NO REPOSITION\n#\t(RADMODES BIT 11) IS IN PROGRESS AFTER WHICH THE JOB IS TERMINATED\n#\tVIA ENDOFJOB.\n#\n# CALLING SEQUENCE:\n#\n#\tEXECUTIVE CALL EVERY .5 SECONDS FROM BEGDES.\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tRRTARGET (HALF-UNIT LOS VECTOR IN EITHER SM OR NB COORDINATES),\n#\tLOKONSW (STATE BIT 5), RRNBSW (STATE BIT 6), RADMODES\n#\n# SUBROUTINES CALLED:\n#\n# \tREADCDUS, SMNB, CDULOGIC, MAGSUB, RROUT\n# Page 548\n#\n# JOBS OR TASKS INITIATED:\n#\n#\tNONE\n#\n# ALARMS:  NONE\n#\n# EXIT:  ENDOFJOB (ALWAYS)\n\nDODES\t\tEXTEND\n\t\tDCA\tCDUT\n\t\tDXCH\tTANG\n\n\t\tTC\tINTPRET\n\n\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tRRTARGET\n\t\tBON\tVXSC\n\t\t\tRRNBSW\n\t\t\tDONBRD\t\t# TARGET IN NAV-BASE COORDINATES\n\t\t\tMLOSV\t\t# MULTIPLY UNIT LOS BY MAGNITUDE\n\t\tVSL1\tPDVL\n\t\t\tLOSVEL\n\t\tVXSC\tVAD\t\t# ADD ONE SECOND RELATIVE VELOCITY TO LOS\n\t\t\tMCTOMS\n\t\tUNIT\tCALL\n\t\t\tCDUTRIG\n\t\tCALL\n\t\t\t*SMNB*\n\nDONBRD\t\tSTODL\t32D\n\t\t\tTANG +1\n\t\tRTB\tPUSH\t\t# SHAFT COMMAND = V(32D).(COS(S), 0,\n\t\t\tCDULOGIC\t#\t-SIN(S)).\n\t\tSIN\tPDDL\t\t# SIN(S) TO 0 AND COS(S) TO 2.\n\t\tCOS\tPUSH\n\t\tDMP\tPDDL\n\t\t\t32D\n\t\t\t36D\n\t\tDMP\tBDSU\n\t\t\t0\n\t\tSTADR\n\t\tSTORE\tTANG +1\t\t# SHAFT COMMAND\n\n\t\tSLOAD\tRTB\n\t\t\tTANG\n\t\t\tCDULOGIC\n\t\tPUSH\tCOS\t\t# COS(T) TO 4.\n\t\tPDDL\tSIN\n\t\tPUSH\tDMP\t\t# SIN(T) TO 6.\n\t\t\t2\n# Page 549\n\t\tSL1\tPDDL\t\t# DEFINE VECTOR U =\t[SIN(T)SIN(S)]\n\t\t\t4\t\t#\t\t\t[   COS(T)   ]\n\t\tPDDL\tDMP\t\t#\t\t\t[SIN(T)COS(S)]\n\t\t\t6\n\t\t\t0\n\t\tSL1\tVDEF\n\t\tDOT\tEXIT\t\t# DOT U WITH LOS TO GET TRUNNION COMMAND.\n\t\t\t32D\n\n# Page 550\n# AT THIS POINT WE HAVE A ROTATION VECTOR IN DISH AXES LYING IN THE TS PLANE.  CONVERT THIS TO A\n# COMMANDED RATE AND ENABLE THE TRACKER IF WE ARE WITHIN .5 DEGREES OF THE TARGET.\n\n\t\tCS\tMPAC\t\t# DOT WAS NEGATIVE OF DESREG ANGLE.\n\t\tEXTEND\n\t\tMP\tRDESGAIN\t# SCALING ON INPUT ANGLE WAS 4 RADIANS.\n\t\tTS\tTANG\t\t# TRUNNION COMMAND.\n\t\tCS\tRADMODES\t# A RELAY IN THE RR REVERSES POLARITY OF\n\t\tMASK\tBIT12\t\t# THE SHAFT COMMANDS IN MODE 2 SO THAT A\n\t\tEXTEND\t\t\t# POSITIVE TORQUE APPLIED TO THE SHAFT\n\t\tBZF\t+3\t\t# GYRO CAUSES A POSITIVE CHANGE IN THE\n\t\tCA\tTANG +1\t\t# SHAFT ANGLE.  COMPENSATE FOR THIS SWITCH\n\t\tTCF\t+2\t\t# BY CHANGING THE POLARITY OF OUR COMMAND.\n +3\t\tCS\tTANG +1\n\t\tEXTEND\n\t\tMP\tRDESGAIN\t# SCALING ON INPUT ANGLE WAS 4 RADIANS.\n\t\tTS\tTANG +1\t\t# SHAFT COMMAND FOR RROUT\n\t\tTC\tINTPRET\n\n\t\tDLOAD\tDMP\n\t\t\t2\t\t# COS(S).\n\t\t\t4\t\t# COS(T).\n\t\tSL1\tPDDL\t\t# Z COMPONENT OF URR.\n\t\tDCOMP\tPDDL\t\t# Y COMPONENT = -SIN(T)\n\t\t\t0\t\t# SIN(S).\n\t\tDMP\tSL1\n\t\t\t4\t\t# COS(T).\n\t\tVDEF\tBON\t\t# FORM URR IN NB AXES.\n\t\t\tRRNBSW\t\t# BYPASS NBSM CONVERSION IN VERB 41\n\t\t\t+3\n\t\tCALL\n\t\t\t*NBSM*\t\t# GET URR IN SM AXES.\n\t\tDOT\tEXIT\n\t\t\tRRTARGET\t# GET COSIN OF ANGLE BETWEEN RR AND LOS\n\n\t\tEXTEND\n\t\tDCS\tCOS1/2DG\n\t\tDAS\tMPAC\t\t# DIFFERENCE OF COSINES, SCALED B-2.\n\t\tCCS\tMPAC\n\t\tCA\tZERO\t\t# IF COS ERROR BIGGER, ERROR IS SMALLER\n\t\tTCF\t+2\n\t\tCA\tONE\n\t\tTS\tMPAC +1\t\t# ZERO IF RR IS POINTED OK, ONE IF NOT.\n# Page 551\n# SEE IF TRACKER SHOULD BE ENABLED OR DISABLED.\n\n\t\tCCS\tRADMODES\t# IF CONTINUOUS DESIGNATE WANTED, PUT OUT\n\t\tTCF\tSIGNLCHK\t# COMMANDS WITHOUT CHECKING MAGNITUDE OF\n\t\tTCF\tSIGNLCHK\t# ERROR SIGNALS\n\t\tTCF\tDORROUT\nSIGNLCHK\tCCS\tMPAC +1\t\t# SEE IF BOTH AXES WERE WITHIN .5 DEGS.\n\t\tTCF\tDGOODCHK\n\t\tCS\tSTATE\t\t# IF WITHIN LIMITS AND NO LOCK-ON WANTED,\n\t\tMASK\tLOKONBIT\t# PROBLEM IS FINISHED.\n\t\tCCS\tA\n\t\tTCF\tRRDESDUN\n\n\t\tCAF\tBIT14\t\t# ENABLE THE TRACKER\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\nDGOODCHK\tCAF\tBIT4\t\t# SEE IF DATA GOOD RECEIVED YET\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tCCS\tA\n\t\tTCF\tDORROUT\n\nRRDESDUN\tCS\tBIT10\t\t# WHEN PROBLEM DONE, REMOVE BIT 10 SO NEXT\n\t\tMASK\tRADMODES\t# WAITLIST TASK WE WILL GO TO RGOODEND.\n\t\tINHINT\n\t\tTS \tRADMODES\n\n\t\tTC\tDOWNFLAG\t# RESET LOSCMFLG TO PREENT A\n\t\tADRES \tLOSCMFLG\t# RECOMPUTATION OF LOS AFTER DATA GOOD\n\t\tCS\tBIT2\t\t# TURN OFF ENABLE RR ERROR COUNTER\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tTCF\tENDOFJOB\t# WITH ECTR DISABLED.\n\nDORROUT\t\tCA\tFLAGWRD2\t# IF BOTH LOSCMFLAG AND SEARCH FLAG ARE\n\t\tMASK\tBIT12,14\t# ZERO, BYPASS VELOCITY ADJUSTMENT TO LOS\n\t\tEXTEND\n\t\tBZF\tNOTP20\n\t\tTC\tINTPRET\n\t\tVLOAD\tVXSC\t\t# MULTIPLY UNIT LOS BY MAGNITUDE\n\t\t\tRRTARGET\n\t\t\tMLOSV\n\t\tVSL1\tPUSH\n\t\tVLOAD\tVXSC\t\t# ADD .5 SEC. OF VELOCITY\n\t\t\tLOSVEL\t\t# TO LOS VECTOR\n\t\t\tMCTOMS\n\t\tVSR1\tVAD\n\t\tUNIT\n\t\tSTODL\tRRTARGET\t# STORE VELOCITY-CORRECTED LOS (UNIT)\n# Page 552\n\t\t\t36D\n\t\tSTORE\tMLOSV\t\t# AND STORE MAGNITUDE\n\t\tEXIT\nNOTP20\t\tINHINT\n\t\tCS\tRADMODES\t# PUT OUT COMMAND UNLESS MONITOR\n\t\tMASK\tREPOSBIT\t# REPOSITION HAS TAKEN OVER\n\t\tCCS\tA\n\t\tTC\tRROUT\n\n\t\tCA\tFLAGWRD2\n\t\tMASK\tLOSCMBIT\t# IF LOSCMFLG NOT SET, DON'T TEST\n\t\tEXTEND\t\t\t# LOS COUNTER\n\t\tBZF\tENDOFJOB\n\t\tCCS\tLOSCOUNT\t# TEST LOS COUNTER TO SEE IF TIME TO GET\n\t\tTC\tDODESEND\t# A NEW LOS\n\t\tINHINT\n\t\tTC\tKILLTASK\t# YES -- KILL TASK WHICH SCHEDULES DODES\n\t\tCADR\tDESLOOP +2\n\t\tRELINT\n\t\tCCS\tNEWJOB\n\t\tTC\tCHANG1\n\t\tTC\tBANKCALL\n\t\tCADR\tR21LEM2\n\nDODESEND\tTS\tLOSCOUNT\n\t\tTC\tENDOFJOB\n\nRDESGAIN\tDEC\t.53624\t\t# TRIES TO NULL .5 ERROR IN .5 SEC.\nBIT12,14\tEQUALS\tPRIO24\t\t# OCT 24000\nCOS1/2DG\t2DEC\t.999961923 B-2\t# COSINE OF 0.5 DEGREES.\nMCTOMS\t\t2DEC\t100 B-13\n\n# Page 553\n# RADAR READ INITIALIZATION\n#\n# RADAR DATA READ BY A BANKCALL FOR THE APPROPRIATE LEAD-IN BELOW.\n\nLRALT\t\tTC\tINITREAD -1\t# ONE SAMPLE PER READING.\nALLREAD\t\tOCT\t17\n\nLRVELZ\t\tTC\tINITREAD\n\t\tOCT\t16\n\nLRVELY\t\tTC\tINITREAD\n\t\tOCT\t15\n\nLRVELX\t\tTC\tINITREAD\n\t\tOCT\t14\n\nRRRDOT\t\tTC\tINITREAD -1\n\t\tOCT\t12\n\nRRRANGE\t\tTC\tINITREAD -1\n\t\tOCT\t11\n\n# LRVEL IS THE ENTRY TO THE LR VELOCITY READ ROUTINE WHEN 5 SAMPLES ARE\n# WANTED.  ENTER WITH C(A)= 0,2,4 FOR LRVELZ,LRVELY,LRVELX RESP.\n\nLRVEL\t\tTS\tTIMEHOLD\t# STORE VBEAM INDEX HERE MOMENTARILY\n\t\tCAF\tFIVE\t\t# SPECIFY FIVE SAMPLES\n\t\tINDEX\tTIMEHOLD\n\t\tTCF\tLRVELZ\n\n# Page 554\n -1\t\tCAF\tONE\t\t# ENTRY TO TAKE ONLY 1 SAMPLE\nINITREAD\tINHINT\n\n\t\tTS\tTIMEHOLD\t# GET DT OF MIDPOINT OF NOMINAL SAMPLING\n\t\tEXTEND\t\t\t# INTERVAL (ASSUMES NO BAD SAMPLES WILL BE\n\t\tMP\tBIT3\t\t# ENCOUNTERED).\n\t\tDXCH\tTIMEHOLD\n\n\t\tCCS\tA\n\t\tTS\tNSAMP\n\t\tAD\tONE\n# INSERT FOLLOWING INSTRUCTION TO GET 2N TRIES FOR N SAMPLES.\n#\t\tDOUBLE\n\t\tTS\tSAMPLIM\n\n\t\tCAF\tDGBITS\t\t# READ CURRENT VALUE OF DATA GOOD BITS.\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tTS\tOLDATAGD\n\n\t\tCS\tALLREAD\n\t\tEXTEND\n\t\tWAND\tCHAN13\t\t# REMOVE ALL RADAR BITS\n\n\t\tINDEX\tQ\n\t\tCAF\t0\n\t\tEXTEND\n\t\tWOR\tCHAN13\t\t# SET NEW RADAR BITS\n\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDAS\tTIMEHOLD\t# TIME OF NOMINAL MIDPOINT\n\n\t\tCAF\tZERO\n\t\tTS\tL\n\t\tDXCH\tSAMPLSUM\n\t\tTCF\tROADBACK\n\nDGBITS\t\tOCT\t230\n\n# Page 555\n# RADAR RUPT READER\n#\n# THIS ROUTINE STARTS FROM A RADARUPT.  IT READS THE DATA & LOTS MORE.\n\n\t\tSETLOC\tRADARUPT\n\t\tBANK\n\n\t\tCOUNT*\t$$/RRUPT\nRADAREAD\tEXTEND\t\t\t# MUST SAVE SBANK BECAUSE OF RUPT EXITS\n\t\tROR\tSUPERBNK\t# VIA TASKOVER (BADEND OR GOODEND).\n\t\tTS\tBANKRUPT\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tCAF\tSEVEN\n\t\tEXTEND\n\t\tRAND\tCHAN13\n\t\tTS\tDNINDEX\n\t\tEXTEND\t\t\t# IF RADAR SELECT BITS ZERO, DO NOT STORE\n\t\tBZF\tTRYCOUNT\t# DATA FOR DOWNLIST (ERASABLE PROBLEMS)\n\t\tCA\tRNRAD\n\t\tINDEX\tDNINDEX\n\t\tTS\tDNRRANGE -1\nTRYCOUNT\tCCS\tSAMPLIM\n\t\tTCF\tPLENTY\n\t\tTCF\tNOMORE\n\t\tTC\tALARM\n\t\tOCT\t520\n\t\tTC\tRESUME\n\nNOMORE\t\tCA\tFLGWRD11\t# IS LRBYPASS SET?\n\t\tMASK\tLRBYBIT\n\t\tEXTEND\n\t\tBZF\tBADRAD\t\t# NO.  R12 IS ON -- BYPASS 521 ALARM.\n\n\t\tCS\tFLAGWRD3\t# CHECK R04FLAG.\n\t\tMASK\tR04FLBIT\t# IF 1, R04 IS RUNNING.  DO NOT ALARM\n\t\tEXTEND\n\t\tBZF\tBADRAD\n\n\t\tTC\tALARM\t\t# P20 WANTS THE ALARM.\n\t\tOCT\t521\nBADRAD\t\tCS\tONE\n\t\tTS\tSAMPLIM\n\t\tTC\tRDBADEND -2\nPLENTY\t\tTS\tSAMPLIM\n\t\tCAF\tBIT3\n\t\tEXTEND\n\t\tRAND\tCHAN13\t\t# TO FIND OUT WHICH RADAR\n\t\tEXTEND\n# Page 556\n\t\tBZF\tRENDRAD\n\n\t\tTC\tR77CHECK\t# R77 QUITS HERE.\nLRPOSCHK\tCA\tRADMODES\t# SEE IF LR IN DESIRED POSITION\n\t\tEXTEND\n\t\tRXOR\tCHAN33\n\t\tMASK\tBIT6\n\t\tEXTEND\n\t\tBZF\tVELCHK\n\n\t\tTC\tALARM\n\t\tOCT\t522\n\t\tTC\tBADRAD\n\nVELCHK\t\tCAF\tBIN3\t\t# = 00003 OCT\n\t\tEXTEND\n\t\tRXOR\tCHAN13\t\t# RESET ACTIVITY BIT\n\t\tMASK\tBIN3\n\t\tEXTEND\n\t\tBZF\tLRHEIGHT\t# TAKE A LR RANGE READING\n\n\t\tCAF\tPOSMAX\n\t\tMASK\tRNRAD\n\t\tAD\tLVELBIAS\n\t\tTS\tL\n\t\tCAE\tRNRAD\n\t\tDOUBLE\n\t\tMASK\tBIT1\n\t\tDXCH\tITEMP3\n\n\t\tCAF\tBIT8\t\t# DATA GOOD ISN'T CHECKED UNTIL AFTER READ-\n\t\tTC\tDGCHECK\t\t# ING DATA SO SOME RADAR TESTS WILL WORK\n\t\t\t\t\t# INDEPENDENT OF DATA GOOD.\n\n\t\tCCS\tNSAMP\n\t\tTC\tNOEND\nGOODRAD\t\tCS\tONE\n\t\tTS\tSAMPLIM\n\t\tCS\tITEMP1\t\t# WHEN ENOUGH GOOD DATA HAS BEEN GATHERED,\n\t\tMASK\tRADMODES\t# RESET DATA FAIL FLAGS FOR SETTRKF.\n\t\tTS\tRADMODES\n\t\tTC\tRADLITES\t# LAMPS MAY GO OFF IF DATA JUST GOOD.\n\t\tTC\tRGOODEND -2\n\nNOEND\t\tTS\tNSAMP\nRESAMPLE\tCCS\tSAMPLIM\t\t# SEE IF ANY MORE TRIES SHOULD BE MADE.\n\t\tTCF\t+2\n\t\tTCF\tDATAFAIL\t# N SAMPLES NOT AVAILABLE.\n\t\tCAF\tBIT4\t\t# RESET ACTIVITY BIT.\n\t\tEXTEND\n# Page 557\n\t\tWOR\tCHAN13\t\t# RESET ACTIVITY BIT\n\t\tTC\tRESUME\n\n\nLRHEIGHT\tCAF\tBIT5\n\t\tTS\tITEMP1\t\t# (POSITION OF DATA GOOD BIT IN CHAN 33)\n\n\t\tCAF\tBIT9\n\t\tTC\tSCALECHK -1\n\nRENDRAD\t\tCAF\tREPOSBIT\t# MAKE SURE ANTENNA HAS NOT GONE OUT OF\n\t\tMASK\tRADMODES\t# LIMITS.\n\t\tCCS\tA\n\t\tTCF\tBADRAD\n\n\t\tCS\tRADMODES\t# BE SURE RR CDU HASN'T FAILED.\n\t\tMASK\tRCDUFBIT\n\t\tCCS\tA\n\t\tTCF\tBADRAD\n\n\t\tCAF\tBIT4\t\t# SEE IF DATA HAS BEEN GOOD.\n\t\tTS\tITEMP1\t\t# (POSITION OF DATA GOOD BIT IN CHAN 33)\n\n\t\tCAF\tBIT1\t\t# SEE IF RR RDOT.\n\t\tEXTEND\n\t\tRAND\tCHAN13\n\t\tTS\tQ\t\t# FOR LATER TESTING.\n\t\tCCS\tA\n\t\tTCF\t+2\n\t\tTCF\tRADIN\t\t# NO SCALE CHECK FOR RR RDOT.\n\t\tCAF\tBIT3\n\t\tTS\tL\n\nSCALECHK\tEXTEND\n\t\tRAND\tCHAN33\t\t# SCALE STATUS NOW\n\t\tXCH\tL\n\t\tMASK\tRADMODES\t# SCALE STATUS BEFORE\n\t\tEXTEND\n\t\tRXOR\tLCHAN\t\t# SEE IF THEY DIFFER\n\t\tCCS\tA\n\t\tTC\tSCALCHNG\t# THEY DIFFER.\n\nRADIN\t\tCAF\tPOSMAX\n\t\tMASK\tRNRAD\n\t\tTS\tITEMP4\n\n\t\tCAE\tRNRAD\n\t\tDOUBLE\n\t\tMASK\tBIT1\n\t\tTS\tITEMP3\n# Page 558\n\t\tCCS\tQ\t\t# SEE IF RR RDOT.\n\t\tTCF\tSCALADJ\t\t# NO, BUT SCALE CHANGING MAY BE NEEDED.\n\n\t\tEXTEND\t\t\t# IF RR RANGE RATE, THROW OUT BIAS\n\t\tDCS\tRDOTBIAS\nDASAMPL\t\tDAS\tITEMP3\nDGCHECK2\tCA\tITEMP1\t\t# SEE THAT DATA HAS BEEN GOOD BEFORE AND\n\t\tTC\tDGCHECK +1\t# AFTER TAKING SAMPLE.\n\t\tTC\tGOODRAD\n\nSCALCHNG\tLXCH\tRADMODES\n\t\tAD\tBIT1\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tRADMODES\n\t\tCAF\tDGBITS\t\t# UPDATE LAST VALUE OF DATA GOOD BITS.\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tTS\tOLDATAGD\n\t\tTC\tUPFLAG\t\t# SET RNGSCFLG\n\t\tADRES\tRNGSCFLG\t# FOR LRS24.1\n\t\tTCF\tBADRAD\n\n# R77 MUST IGNORE DATA FAILS SO AS NOT TO DISTURB THE ASTRONAUT.\n\nR77CHECK\tCS\tFLAGWRD5\n\t\tMASK\tR77FLBIT\n\t\tCCS\tA\n\t\tTC\tQ\t\t# NOT R77\n\t\tCS\tBITS5,8\t\t# UPDATE LR DATA GOOD BITS IN RADMODES\n\t\tMASK\tRADMODES\n\t\tTS\tL\n\t\tCA\tBITS5,8\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tAD\tL\n\t\tTS\tRADMODES\n\t\tTC\tRGOODEND -2\nBITS5,8\t\tOCT\t220\n\n# Page 559\n# THE FOLLOWING ROUTINE INCORPORATES RR RANGE AND LR ALT SCALE INFORMATION AND LEAVES DATA AT LO SCALE.\n\nSCALADJ\t\tCCS\tL\t\t# L HAS SCALE INBIT FOR THIS RADAR.\n\t\tTCF\t+2\t\t# ON HIGH SCALE.\n\t\tTCF\tDGCHECK2\n\n\t\tCA\tDNINDEX\n\t\tMASK \tBIT3\n\t\tCCS\tA\n\t\tTCF\tLRSCK\n\n\t\tDXCH\tITEMP3\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDXCH\tITEMP3\n\n\t\tTCF\tDGCHECK2\n\nLRSCK\t\tCCS\tITEMP3\n\t\tTCF\t+11\n\t\tCS\tITEMP4\n\t\tAD\tHISCALIM\n\t\tEXTEND\n\t\tBZMF\t+5\n\n\t\tCS\tFLGWRD11\n\t\tMASK\tSCABBIT\n\t\tADS\tFLGWRD11\n\t\tTCF\t+4\n\n\t\tCS\tSCABBIT\n\t\tMASK\tFLGWRD11\n\t\tTS\tFLGWRD11\n\n\t\tEXTEND\n\t\tDCA\tITEMP3\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tTCF\tDASAMPL\n\nHISCALIM\tDEC\t460\t\t# 2481.7 FT ******************************\n# Page 560\nDGCHECK\t\tTS\tITEMP1\t\t# UPDATE DATA GOOD BIT IN OLDATAGD AND\n\t\tEXTEND\t\t\t# MAKE SURE IT WAS ON BEFORE AND AFTER THE\n\t\tRAND\tCHAN33\t\t# SAMPLE WAS TAKEN BEFORE RETURNING.  IF\n\t\tTS\tL\t\t# NOT, GOES TO RESAMPLE TO TRY AGAIN.  IF\n\t\tCS\tITEMP1\t\t# MAX NUMBER OF TRIES HAS BEEN REACHED,\n\t\tMASK\tOLDATAGD\t# THE BIT CORRESPONDING TO THE DATA GOOD\n\t\tAD\tL\t\t# WHICH FAILED TO APPEAR IS IN ITEMP1 AND\n\t\tXCH\tOLDATAGD\t# CAN BE USED TO SET RADMODES WHICH VIA\n\t\tMASK\tITEMP1\t\t# SETTRKF SETS THE TRACKER FAIL LAMP.\n\t\tAD\tL\n\t\tCCS\tA\t\t# SHOULD BOTH BE ZERO.\n\t\tTC\tRESAMPLE\n\t\tDXCH\tITEMP3\t\t# IF DATA GOOD BEFORE AND AFTER, ADD TO\n\t\tDAS\tSAMPLSUM\t# ACCUMULATION.\n\t\tTC\tQ\n\nDATAFAIL\tCS\tITEMP1\t\t# IN THE ABOVE CASE, SET RADMODES BIT\n\t\tMASK\tRADMODES\t# SHOWING SOME RADAR DATA FAILED.\n\t\tAD\tITEMP1\n\t\tTS\tRADMODES\n\n\t\tDXCH\tITEMP3\t\t# IF WE HAVE BEEN UNABLE TO GATHER N\n\t\tDXCH\tSAMPLSUM\t# SAMPLES, USE LAST ONE ONLY.\n\t\tTC\tRADLITES\n\t\tTCF\tNOMORE\n# Page 561\n# THIS ROUTINE CHANGES THE LR POSITION, AND CHECKS THAT IT GOT THERE.\n\n\t\tSETLOC\tP20S1\n\t\tBANK\n\n\t\tCOUNT*\t$$/RSUB\nLRPOS2\t\tINHINT\n\n\t\tCS\tRADMODES\n\t\tMASK\tLRPOSBIT\t# SHOW DESIRED LR POSITION IS 2\n\t\tADS\tRADMODES\n\n\t\tCAF\tBIT7\n\t\tEXTEND\n\t\tRAND\tCHAN33\t\t# SEE IF ALREADY THERE.\n\t\tEXTEND\n\t\tBZF\tRADNOOP\n\n\t\tCAF\tBIT13\n\t\tEXTEND\n\t\tWOR\tCHAN12\t\t# COMMAND TO POSITION 2\n\t\tCAF\t6SECS\t\t# START SCANNING FOR INBIT AFTER 7 SECS.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tLRPOSCAN\n\n\t\tTC\tROADBACK\n\nLRPOSNXT\tTS\tSAMPLIM\n\t\tTC\tFIXDELAY\t# SCAN ONCE PER SECOND 15 TIMES MAX AFTER\n\t\tDEC\t100\t\t# INITIAL DELAY OF 7 SECONDS.\n\n\t\tCAF\tBIT7\t\t# SEE IF LR POS2 IS ON\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tEXTEND\n\t\tBZF\tLASTLRDT\t# IF THERE, WAIT FINAL SECOND FOR BOUNCE.\n\n\t\tCCS\tSAMPLIM\t\t# SEE IF MAX TIME UP.\n\t\tTCF\tLRPOSNXT\n\n\t\tCS\tBIT13\t\t# IF TIME UP, DISABLE COMMAND AND ALARM.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tTCF\tRDBADEND\n\nRADNOOP\t\tCAF\tONE\t\t# NO FURTHER ACTION REQUESTED.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tRGOODEND\n# Page 562\n\t\tTC\tROADBACK\n\nLASTLRDT\tCA\t2SECS\t\t# WAIT TWO SECONDS AFTER RECEIPT OF INBIT\n\t\tTC\tVARDELAY\t# TO WAIT FOR ANTENNA BOUNCE TO DIE OUT.\n\n\t\tCS\tBIT13\t\t# REMOVE COMMAND\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tTCF\tRGOODEND\n\nLRPOSCAN\tCAF\tFOURTEEN\t# SET UP FOR 15 SAMPLES.\n\t\tTCF\tLRPOSNXT\n6SECS\t\tDEC\t600\n# Page 563\n# SEQUENCES TO TERMINATE RR OPERATIONS.\n\nENDRADAR\tCAF\tRCDUFBIT\t# PROLOG TO CHECK RR CDU FAIL BEFORE END.\n\t\tMASK\tRADMODES\n\t\tCCS\tA\n\t\tTCF\tRGOODEND\n\t\tTCF\tRDBADEND\n -2\t\tCS\tZERO\t\t# RGOODEND WHEN NOT UNDER WAITLIST CONTROL\n\t\tTS\tRUPTAGN\n\nRGOODEND\tCAF\tTWO\n\t\tTC\tPOSTJUMP\n\t\tCADR\tGOODEND\n\n -2\t\tCS\tZERO\t\t# RDBADEND WHEN NOT UNDER WIATLIST.\n\t\tTS\tRUPTAGN\nRDBADEND\tCAF\tTWO\n\t\tTC\tPOSTJUMP\n\t\tCADR\tBADEND\n\nBIN3\t\tEQUALS\tTHREE\n\n# Page 564\n# PROGRAM NAME:  LPS20.1 VECTOR EXTRAPOLATION AND LOS COMPUTATION\n# MOD. NO. 2\tBY J.D. COYNE\tSDC\tDATE 12-7-66\n#\n# FUNCTIONAL DESCRPIPTION:\n#\t1)\tEXTRAPOLATE THE LEM AND CSM VECTORS IN ACCORDANCE WITH THE TIME REFERRED TO IN CALLER + 1.\n#\t2)\tCOMPUTES THE LOS VECTOR TO THE CSM, CONVERTS IT TO STABLE MEMBER COORDINATES AND STORES IT IN RRTARGET.\n#\t3)\tCOMPUTES THE MAGNITUDE OF TEH LOS VECTOR AND STORES IT IN MLOSV\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tLPS20.1\n#\n# SUBROUTINES CALLED:\n#\tLEMPREC, CSMPREC\n#\n# NORMAL EXIT:  RETURN TO CALLER + 2.\n#\n# ERROR EXITS:  NONE\n#\n# ALARMS:  NONE\n#\n# OUTPUT:\n#\tLOS VECTOR (HALF UNIT) IN SM COORDINATES STORED IN RRTARGET\n#\tMAGNITUDE OF TEH LOS VECTOR (METERS SCALED B-29) STORED IN MSLOV\n#\tRRNBSW CLEARED.\n#\n# INITIALIZED ERASABLE\n#\tTDEC1 MUST CONTAIN THE TIME FOR EXTRAPOLATION\n#\tSEE ORBITAL INTEGRATION ROUTINE\n#\n# DEBRIS:\n#\tMPAC DESTROYED BY THE ROUTINE\n\n\t\tBANK\t23\n\t\tSETLOC\tP20S\n\t\tBANK\n# Page 565\n\t\tCOUNT*\t$$/LPS20\n\nLPS20.1\t\tSTQ\tBOFF\n\t\t\tLS21X\n\t\t\tLOSCMFLG\t# LOSCMFLG = 0 MEANS NOT CALLED BY R21\n\t\t\tLMINT\t\t# SO CALL LEMCONIC TO GET LM STATE\n\t\tBON\t\t\t# IF IN R21 AND ON LUNAR SURFACE\n\t\t\tSURFFLAG\t# DON'T CALL LEMCONIC\n\t\t\tCSMINT\nLMINT\t\tCALL\n\t\t\tLEMCONIC\t# EXTRAPOLATE LEM\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTOVL\tLMPOS\t\t# SAVE LM POSITION B-29\n\t\t\tVATT\n\t\tSTODL\tLMVEL\t\t# SAVE LM VELOCITY B-7\n\t\t\tTAT\nCSMINT\t\tSTCALL\tTDEC1\n\t\t\tCSMCONIC\t# EXTRAPOLATE CSM\n\t\tVLOAD\tVSU\t\t# COMPUTE RELATIVE VELOCITY V(CSM) - V(LM)\n\t\t\tVATT\n\t\t\tLMVEL\n\t\tMXV\tVSL1\n\t\t\tREFSMMAT\n\t\tEXIT\n\t\tTC\tKILLTASK\t# KILL THE TASK WHICH CALLS DODES SINCE\n\t\tCADR\tDESLOOP +2\t# STORING INTO ERASEABLES DODES USES\n\t\tTC\tINTPRET\n\t\tSTOVL\tLOSVEL\n\t\t\tRATT\n\t\tVSU\tBOFF\n\t\t\tLMPOS\n\t\t\tRNDVZFLG\n\t\t\tNOTSHIFT\n\t\tBOVB\n\t\t\tTCDANZIG\n\t\tVSL\n\t\t\t9D\nNOTSHIFT\tUNIT\tBOVB\t\t# IF OVERFLOW, RANGE MUST BE GREATER\n\t\t\t526ALARM\t# THAN 400 N. M.\n\t\tMXV\tVSL1\n\t\t\tREFSMMAT\t# CONVERT TO STABLE MEMBER\n\t\tSTODL\tRRTARGET\n\t\t\t36D\t\t# SAVE MAGNITUDE OF LOS VECTOR FOR\n\t\tSTORE\tMLOSV\t\t# VELOCITY CORRECTION IN DESIGNATE\n\t\tCLRGO\n\t\t\tRRNBSW\n\t\t\tLS21X\n\n# Page 566\n# PROGRAM NAME:  LPS20.2  400 NM RANGE CHECK\n# MOD. NO. 2\tBY J.D. COYNE\tSDC\tDATE 12-7-66\n#\n# FUNCTIONAL DESCRIPTION:\n#\tCOMPARES THE MAGNITUDE OF THE LOS VECTOR TO 400 NM.\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tLPS20.2\n#\n# SUBROUTINES CALLED:  NONE\n#\n# NORMAL EXIT:  RETURN TO CALLER +1, MPAC EQ 0 (RANGE 400NM OR LESS.)\n#\n# ERROR EXITS:  RETURN TO CALLER +1, MPAC EQ 1 (RANGE GREATER THAN 400NM)\n#\n# ALARMS:  NONE\n#\n# OUTPUT:  NONE\n#\n# INITIALIZED ERASEABLE:\n#\tPDL 36D MUST CONTAIN THE MAGNITUDE OF THE VECTOR\n#\n# DEBRIS:\n#\tMPAC DESTROYED BY THIS ROUTINE\n\n\t\tSETLOC\tP20S1\n\t\tBANK\n\t\tCOUNT*\t$$/LPS20\n\nLPS20.2\t\tDLOAD\tDSU\n\t\t\tMLOSV\t\t# MAGNITUDE OF LOS\n\t\t\tFHNM\t\t# OVER 400NM\n\t\tBPL\n\t\t\tTOFAR\n\t\tSLOAD\tRVQ\n\t\t\tZERO/SP\nTOFAR\t\tSLOAD\tRVQ\n\t\t\tONE/SP\nONE/SP\t\tDEC\t1\n# Page 567\nFHNM\t\t2DEC\t740800 B-20\t# 400 NAUTICAL MILES IN METERS B-20\n\n# Page 568\n# PROGRAM NAME:  LRS22.1 (DATA READ SUBROUTINE 1)\n# MOD. NO.: 1\t\tBY: P. VOLANTE  SDC\t\tDATE:  11-15-66\n#\n# FUNCTIONAL DESCRIPTION:\n#\t1)\tREADS RENDEZVOUS RADAR RANGE AND RANGE-RATE, TRUNNION AND SHAFT ANGLES, THREE CDU VALUES AND TIME.  CONVERTS THIS\n#\t\tDATA AND LEAVES IT FOR THE MEASUREMENT INCORPORATION ROUTINE (LSR22.3).  CHECKS FOR THE RR DATA GOOD DISCRETE, FOR\n#\t\tRR REPOSITION AND RR CDU FAIL\n#\t2)\tCOMPARES RADAR LOS WITH LOS COMPUTED FROM STATE VECTORS TO SEE IF THEY ARE WITHIN THREE DEGREES\n#\n# CALLING SEQUENCE:  BANKCALL FOR LRS22.1\n#\n# SUBROUTINES CALLED:\n#\tRRDOT\t\tLPS20.1\n#\tRRRANGE\t\tBANKCALL\n#\tRADSTALL\tCDULOGIC\n#\tRRNB\t\tSMNB\n#\n# NORMAL EXIT:  RETURN TO CALLER+1 WITH MPAC SET TO +0\n#\n# ERROR EXITS:  RETURN TO CALLER+1 WITH ERROR CODE STORED IN MPAC AS FOLLOWS:\n#\t00001 -- ERROR EXIT 1 -- RR DATA NO GOOD (NO RR DATA GOOD DISCRETE OR RR CDU FAIL OR RR REPOSITION)\n#\t00002 -- ERROR EXIT 2 -- RR LOS NOT WITHIN THREE DEGREES OF LOS COMPUTED FROM STATE VECTORS\n#\n# ALARMS:  521 -- COULD NOT READ RADAR DATA (RR DATA GOOD DISCRETE NOT PRESENT BEFORE AND AFTER READING THE RADAR)\n#\t(THIS ALARM IS ISSUED BY RADARREAD SUBROUTINE WHICH IS ENTERED FROM A RADARUPT)\n#\n# OUTPUT:  RRLOSVEC -- THE RR LINE-OF-SIGHT VECTOR (USED BY LRS22.2) -- A HALF-UNIT VECTOR\n# \tRM -- THE RR RANGE READING (TO THE CSM) DP, IN METERS SCALED BY B-29 (USED BY LRS22.2 AND LRS22.3)\n#\n#\tALL OF THE FOLLOWING OUTPUTS ARE USED BY LRS22.3:\n#\t\tRDOTM -- THE RR RANGE-RATE READING, DP, IN METERS PER CENTISECOND, SCALED BY B-7\n#\t\tRRTRUN -- THE RR TRUNNION ANGLE, DP, IN REVOLUTIONS, SCALED B0\n#\t\tRRSHAFT -- RR SHAFT ANGLE, DP, IN REVOLUTIONS, SCALED B0\n#\t\tAIG,AMG,AOG -- THE CDU ANGLES, THREE SP WORDS\n#\t\tMKTIME -- THE TIME OF THE RR READING, DP, IN CENTISECONDS\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\tRNRAD, THE RADAR READ COUNTER FROM WHICH IS OBTAINED:\n# Page 569\n#\t\t1) RR RANGE SCALED 9.38 FT. PER BIT ON THE LOW SCALE AND 75.04 FT. PER BIT ON THE HIGH SCALE\n#\t\t2) RR RANGE RATE, SCALED .6278 FT./SEC. PER BIT\n#\tTHE CDU ANGLES FROM CDUX, CDUY, CDUZ, AND TIME1 AND TIME2\n#\n# DEBRIS:  LRS22.1X, A, L, Q, PUSHLIST\n\n\t\tBANK\t32\n\t\tSETLOC\tLRS22\n\t\tBANK\n\t\tCOUNT*\t$$/LRS22\n\nLRS22.1\t\tTC\tMAKECADR\n\t\tTS\tLRS22.1X\n\t\tTC\tDOWNFLAG\n\t\tADRES\tRNGSCFLG\n\t\tINHINT\n\t\tCAF\tBIT3\n\t\tEXTEND\t\t\t# GET RR RANGE SCALE\n\t\tRAND\tCHAN33\t\t# FROM CHANNEL 33 BIT 3\n\t\tTS\tL\n\t\tCS\tRRRSBIT\n\t\tMASK\tRADMODES\n\t\tAD\tL\n\t\tTS\tRADMODES\n\t\tRELINT\nREADRDOT\tTC\tBANKCALL\n\t\tCADR\tRRRDOT\t\t# READ RANGE-RATE (ONE SAMPLE)\n\t\tTC\tBANKCALL\n\t\tCADR\tRADSTALL\t# WAIT FOR DATA READ COMPLETION\n\t\tTCF\tEREXIT1\t\t# COULD NOT READ RADAR-ERROR EXIT 1\n\n\t\tINHINT\t\t\t# NO INTERRUPTS WHILE READING TIME AND CDU\n\t\tDXCH\tTIMEHOLD\t# SET MARK TIME EQUAL TO THE MID-POINT\n\t\tDXCH\tMPAC +5\t\t# TEMP BUFFER FOR DOWNLINK\n\t\tDXCH\tSAMPLSUM\t# SAVE RANGE-RATE READING\n\t\tDXCH\tRDOTMSAV\n\t\tEXTEND\n\t\tDCA\tCDUY\t\t# SAVE ICDU ANGLES\n\t\tDXCH\tMPAC +3\t\t# TEMP BUFFER FOR DOWNLINK\n\t\tCA\tCDUX\n\t\tTS\tMPAC +2\t\t# TEMP BUFFER FOR DOWNLINK\n\t\tEXTEND\n\t\tDCA\tTIME2\t\t# SAVE TIME\n\t\tDXCH\tMPAC\t\t# SAVE TIME OF CDUY READINGS IN MPAC\n\t\tEXTEND\n\t\tDCA\tCDUT\t\t# SAVE TRUNNION AND SHAFT ANGLES FOR RRNB\n\t\tDXCH\tTANG\n# Page 570\n\t\tRELINT\n\t\tTC\tBANKCALL\n\t\tCADR\tRRRANGE\t\t# READ RR RANGE (ONE SAMPLE)\n\t\tTC\tBANKCALL\n\t\tCADR\tRADSTALL\t# WAIT FOR READ COMPLETE\n\t\tTC\tCHEXERR\t\t# CHECK FOR ERRORS DURING READ\n\t\tINHINT\t\t\t# COPY CYCLE FOR MARK DATA ON DOWNLINK\n\t\tDXCH\tDNRRANGE\t# RANGE, RANGE RATE (RAW DATA)\n\t\tDXCH\tRANGRDOT\n\t\tDXCH\tMPAC +5\n\t\tDXCH\tMKTIME\t\t# MARK TIME\n\t\tDXCH\tMPAC +3\n\t\tDXCH\tAIG\t\t# CDUY, CDUZ\n\t\tEXTEND\n\t\tDCA\tTANG\t\t# PRESERVE TANG\n\t\tDXCH\tTANGNB\t\t# TRUNNION AND SHAFT ANGLES\n\t\tCA\tMPAC +2\n\t\tTS\tAOG\t\t# CDUX\n\t\tTC\tINTPRET\n\t\tSTODL\t20D\t\t# SAVE TIME OF CDU READINGS IN 20D\n\t\t\tRDOTMSAV\t# CONVERT RDOT UNITS AND SCALING\n\t\tSL\tDMPR\t\t# START WITH READING SCALED B-28, -.6278\n\t\t\t14D\t\t# FT./SECOND PER BIT\n\t\t\tRDOTCONV\t# END WITH METERS/CENTISECOND, B-7\n\t\tSTORE\tRDOTM\n\t\tSLOAD\tRTB\n\t\t\tTANG\t\t# GET TRUNNION ANGLE\n\t\t\tCDULOGIC\t# CONVERT TO DP ONES COMP. IN REVOLUTIOINS\n\t\tSTORE\tRRTRUN\t\t# AND SAVE FOR TMI ROUTINE (LSR22.3)\n\t\tSLOAD\tRTB\n\t\t\tTANG +1\t\t# DITTO FOR SHAFT ANGLE\n\t\t\tCDULOGIC\n\t\tSTODL\tRRSHAFT\n\t\t\tSAMPLSUM\n\t\tDMP\tSL2R\t\t# CONVERT UNITS AND SCALING DP RANGE\n\t\t\tRANGCONV\t# PER BIT, END WITH METERS, SCALED -29\n\t\tSTCALL\tRM\n\t\t\tRRNB\t\t# COMPUTE RADAR LOS USING RRNB\n\t\tSTODL\tRRBORSIT\t# AND SAVE\n\t\t\t20D\n\t\tSTCALL\tTDEC1\t\t# GET STATE VECTOR LOS AT TIME OF CDU READ\n\t\t\tLPS20.1\n\t\tEXIT\n\t\tCA\tAIG\t\t# STORE IMU CDU ANGLES AT MARKTIME\n\t\tTS\tCDUSPOT\t\t# IN CDUSPOT FOR TRG*SMNB\n\t\tCA\tAMG\n\t\tTS\tCDUSPOT +2\n\t\tCA\tAOG\n\t\tTS\tCDUSPOT +4\n\t\tTC\tINTPRET\n# Page 571\n\t\tVLOAD\tCALL\t\t# LOAD VECTOR AND CALL TRANSFORMATION\n\t\t\tRRTARGET\n\t\t\tTRG*SMNB\t# ROTATE LOS AT MARKTIME FROM SM TO NB.\n\t\tDOT\t\t\t# DOT WITH RADAR LOS TO GET ANGLE\n\t\t\tRRBORSIT\n\t\tSL1\tACOS\t\t# BETWEEN THEM\n\t\tSTORE\tDSPTEM1\t\t# STORE FOR POSSIBLE DISPLAY\n\t\tDSU\tBMN\t\t# IS IT LESS THAN 3 DEGREES\n\t\t\tTHREEDEG\n\t\t\tNORMEXIT\t# YES -- NORMAL EXIT\n\n\t\tEXIT\t\t\t# ERROR EXIT 2\n\t\tCAF\tBIT2\t\t# SET ERROR CODE\n\t\tTS\tMPAC\n\t\tTCF\tOUT22.1\n\nNORMEXIT\tEXIT\t\t\t# NORMAL EXIT -- SET MPAC EQUAL ZERO\n\t\tCAF\tZERO\n\t\tTS\tMPAC\nOUT22.1\t\tCAE\tLRS22.1X\t# EXIT FROM LRS22.1\n\t\tTC\tBANKJUMP\nCHEXERR\t\tCAE\tFLAGWRD5\n\t\tMASK\tRNGSCBIT\n\t\tCCS\tA\t\t# CHECK IF RANGE SCALE CHANGED\n\t\tTCF\tREADRDOT\t# YES -- TAKE ANOTHER READING\n\nEREXIT1\t\tCA\tBIT1\t\t# SET ERROR CODE\n\t\tTS\tMPAC\n\t\tTC\tOUT22.1\nTHREEDEG\t2DEC\t.008333333\t# THREE DEGREES, SCALED REVS, B0\n\nRRLOSVEC\tEQUALS\tRRTARGET\n\n# Page 572\n# PROGRAM NAME -- LRS22.2 (DATA READ SUBROUTINE 2)\n# MOD. NO.: 1\t\tBY: P. VOLANTE  SDC\t\tDATE: 4-11-67\n#\n# FUNCTIONAL DESCRIPTION:\n#\t(Yes, I know point #1 is missing.  It is missing from the program listing -- RSB 2003)\n#\t2)  CHECKS IF THE RR LOS (I.E., THE RADAR BORESIGHT VECTOR) IS WITHIN 30 DEGREES OF THE LM +Z AXIS\n#\n# CALLING SEQUENCE:  BANKCALL FOR LRS22.2\n#\n# SUBROUTINES CALLED:  G+N, AUTO, SETMAXDB\n#\n# NORMAL EXIT:  RETURN TO CALLER WITH MPAC SET TO +0 (VIA SWRETURN)\n#\n# ERROR EXIT:  RETURN TO CALLER WITH MPAC SET TO 00001 -- RADAR LOS NOT WITHIN 30 DEGREES OF LM +Z AXIS.\n#\n# ALARMS:  NONE\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\tRRLOSVEC -- THE RR LINE-OF-SIGHT VECTOR -- A HALF UNIT VECTOR COMPUTED BY LRS22.1\n#\tRM -- RR RANGE, METERS B-29, FROM LRS22.1\n#\tBIT 14 CHANNEL 31 -- INDICATES AUTOPILOT IS IN AUTO MODE\n#\n# DEBRIS -- A,L,Q,MPAC -- PUSHLIST AND PUSHLOC ARE NOT CHANGED BY THIS ROUTINE\n\n\t\tSETLOC\tP20S\n\t\tBANK\nLRS22.2\t\tTC\tMAKECADR\n\t\tTS\tLRS22.1X\n\t\tTC\tINTPRET\n\t\t\t\t\t# CHECK IF RR LOS IS WITHIN 30 DEG OF\n30DEGCHK\tDLOAD\tACOS\t\t# THE SPACECRAFT +Z AXIT\n\t\t\tRRBORSIT +4\t# BY TAKING ARCCOS OF Z-COMP. OF THE RR\n\t\t\t\t\t# LOS VECTOR, A HALF UNIT VECTOR\n\t\t\t\t\t# IN NAV BASE AXES)\n\t\tDSU\tBMN\n\t\t\t30DEG\n\t\t\tOKEXIT\t\t# NORMAL EXIT -- WITHIN 30 DEG.\n\t\tEXIT\t\t\t# ERROR EXIT -- NOT WITHIN 30 DEG.\n\t\tCAF\tBIT1\t\t# SETS ERROR CODE IN MPAC\n\t\tTS\tMPAC\n\t\tTCF\tOUT22.2\nOKEXIT\t\tEXIT\t\t\t# NORMAL EXIT -- SET MPAC = ZERO\n\n# Page 573\n\t\tCAF\tZERO\n\t\tTS\tMPAC\nOUT22.2\t\tCAE\tLRS22.1X\n\t\tTC\tBANKJUMP\n\n30DEG\t\t2DEC\t.083333333\t# THIRTY DEGREES, SCALED REVS, B0\n\n# Page 574\n# PROGRAM NAME -- LSR22.3\t\t\t\tDATE -- 29 MAY 1967\n# MOD. NO 3\t\t\t\t\t\tLOG SECTION -- P20-P25\n# MOD. BY -- DANFORTH\t\t\t\t\tASSEMBLY LEMP20S REV 10\n#\n# FUNCTIONAL DESCRIPTION:\n#\tTHIS ROUTINE COMPUTES THE B-VECTORS ADN DELTA Q FOR EACH OF THE QUANTITIES MEASURED BY THE RENDEZVOUS\n#\tRADAR.  (RANGE, RANGE RATE, SHAFT AND TRUNNION ANGLES).  THE ROUTINE CALLS THE INCORP1 AND INCORP2 ROUTINES\n#\tWHICH COMPUTE THE DEVIATIONS AND CORRECT THE STATE VECTOR.\n#\n# CALLING SEQUENCE:\n#\tTHIS ROUTINE IS PART OF P20 RENDEZVOUS NAVIGATION FOR THE LM COMPUTER ONLY.  THE ROUTINE IS ENTERED FROM\n# \tR22 LEM ONLY AND RETURNS DIRECTLY TO R22LEM FOLLOWING SUCCESSFUL INCORPORATION OF MEASURED DATA.  IF THE\n#\tCOMPUTED STATE VECTOR DEVATIONS EXCEED THE MAXIMUM PERMITTED.  THE ROUTINE RETURNS TO R22LEM TO DISPLAY\n#\tTHE DEVIATIONS.  IF THE ASTRONAUT ACCEPTS THE DATA R22LEM RETURNS TO LSR22.3 TO INCORPORATE THE\n#\tDEVIATIONS INTO THE STATE VECTOR.  IF THE ASTRONAUT REJECTS THE DEVIATIONS, NO MORE MEASUREMENTS ARE\n#\tPROCESSED FOR THIS MARK, I.E.,  R22LEM GETS THE NEXT MARK.\n#\n# SUBROUTINES CALLED:\n#\tWLINIT\t\tLGCUPDTE\tINTEGRV\t\tINCORP1\t\tARCTAN\n#\tGETULC\t\tRADARANG\tINCORP2\t\tNBSM\t\tINTSTALL\n#\n# OUTPUT:\n#\tCORRECTED LM OR CSM STATE VECTOR (PERMANENT)\n#\tNUMBER OF MARKS INCORPORATED IN MARKCTR\n#\tMAGNITUDE OF POSITION DEVIATION (FOR DISPLAY) IN R22DISP METERS B-29\n#\tMAGNITUDE OF VELOCITY DEVIATION (FOR DISPLAY) IN R22DISP +2 M/CSEC B-7\n#\tUPDATED W-MATRIX\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\tLM AND CSM STATE VECTORS\n#\tW-MATRIX\n#\tMARK TIME IN MKTIME\n#\tRADAR RANGE IN RM METERS B-29\n#\t\tRANGE RATE IN RDOTM METERS/CSES B-7\n#\t\tSHAFT ANGLE IN RRSHAFT REVS. B0\n#\t\tTRUNNION ANGLE IN RRTRUN REVS. B0\n#\tGIMBAL ANGLES\tINNER IN AIG\n#\t\t\tMIDDLE IN AMG\n#\t\t\tOUTER IN ACG\n#\tREFSMMAT\n#\tRENDWFLG\n#\tNOANGFLG\n#\tVEHUPFLG\n#\n# DEBRIS:\n#\tPUSHLIST -- ALL\n#\tMX, MY, MZ (VECTORS)\n# Page 575\n#\tULC, RXZ, SINTHETA, LGRET, RDRET, BVECTOR, W.IND, X78T\n\n\t\tBANK\t13\n\t\tSETLOC\tP20S3\n\t\tBANK\n\n\t\tEBANK=\tLOSCOUNT\n\t\tCOUNT*\t$$/LSR22\nLSR22.3\t\tCALL\n\t\t\tGRP2PC\n\t\tBON\tSET\n\t\t\tSURFFLAG\t# ARE WE ON LUNAR SURFACE\n\t\t\tLSR22.4\t\t# YES\n\t\t\tDMENFLG\n\t\tBOFF\tCALL\n\t\t\tVEHUPFLG\n\t\t\tDOLEM\n\t\t\tINTSTALL\n\t\tCLEAR\tCALL\t\t# LM PRECISION INTEGRATION\n\t\t\tVINTFLAG\n\t\t\tSETIFLGS\n\t\tCALL\n\t\t\tINTGRCAL\n\t\tCALL\n\t\t\tGRP2PC\n\t\tCALL\n\t\t\tINTSTALL\n\t\tCLEAR\tBOFF\n\t\t\tDIM0FLAG\n\t\t\tRENDWFLG\n\t\t\tNOTWCSM\n\t\tSET\tSET\t\t# CSM WITH W-MATRIX INTEGRATION\n\t\t\tDIM0FLAG\n\t\t\tD6OR9FLG\nNOTWCSM\t\tSET\tCLEAR\n\t\t\tVINTFLAG\n\t\t\tINTYPFLG\n\t\tSET\tCALL\n\t\t\tSTATEFLG\n\t\t\tINTGRCAL\n\t\tGOTO\n\t\t\tMARKTEST\nDOLEM\t\tCALL\n\t\t\tINTSTALL\n\t\tSET\tCALL\n\t\t\tVINTFLAG\n\t\t\tSETIFLGS\n\t\tCALL\n\t\t\tINTGRCAL\n# Page 576\n\t\tCALL\n\t\t\tGRP2PC\n\t\tCALL\n\t\t\tINTSTALL\n\t\tCLEAR\tBOFF\n\t\t\tDIM0FLAG\n\t\t\tRENDWFLG\n\t\t\tNOTWLEM\n\t\tSET\tSET\t\t# LM WITH W-MATRIX INTEGRATION\n\t\t\tDIM0FLAG\n\t\t\tD6OR9FLG\nNOTWLEM\t\tCLEAR\tCLEAR\n\t\t\tINTYPFLG\n\t\t\tVINTFLAG\n\t\tSET\tCALL\n\t\t\tSTATEFLG\n\t\t\tINTGRCAL\nMARKTEST\tBON\tCALL\t\t# HAS W-MATRIX BEEN INVALIDATED\n\t\t\tRENDWFLG\t# HAS W-MATRIX BEEN INVALIDATED\n\t\t\tRANGEBQ\n\t\t\tWLINIT\t\t# YES -- REINITIALIZE\nRANGEBQ\t\tBON\tEXIT\t\t# DON'T CALL R65 IF ON SURFACE\n\t\t\tSURFFLAG\n\t\t\tRANGEBQ1\n\t\tCA\tZERO\n\t\tTS\tR65CNTR\n\t\tTC\tBANKCALL\n\t\tCADR\tR65LEM\n\t\tTC\tINTPRET\nRANGEBQ1\tAXT,2\tBON\t\t# CLEAR X2\n\t\t\t0\n\t\t\tLMOONFLG\t# IS MOON SPHERE OF INFLUENCE\n\t\t\tSETX2\t\t# YES.  STORE ZERO IN SCALSHFT REGISTER\n\t\tINCR,2\n\t\t\t2\nSETX2\t\tSXA,2\tCALL\n\t\t\tSCALSHFT\t# 0 -- MOON.  2 -- EARTH.\n\t\t\tGRP2PC\n\t\tAXT,1\tSXA,1\t\t# STORE RANGE CODE (1) FOR R3 IN NOUN 49\n\t\t\t1\n\t\t\tWHCHREAD\n\t\tSLOAD\tSR\t\t# GET SINGLE PRECISION RVARMIN (B-12)\n\t\t\tRVARMIN\t\t# SHIFT TO TRIPLE PRECISION (B-40)\n\t\t\t28D\n\t\tRTB\n\t\t\tTPMODE\t\t# AND SAVE IN 20D\n\t\tSTORE\t20D\n\t\tCALL\t\t\t# BEGIN COMPUTING THE B-VECTORS, DELTAQ\n\t\t\tGETULC\t\t# B-VECTORS FOR RANGE\n\t\tBON\tVCOMP\t\t# B0, COMP. IF LM BEING CORRECTED\n# Page 577\n\t\t\tVEHUPFLG\n\t\t\t+1\n\t\tSTOVL\tBVECTOR\n\t\t\tZEROVECS\n\t\tSTORE\tBVECTOR +6\t# B1\n\t\tSTODL\tBVECTOR +12D\t# B2\n\t\t\t36D\n\t\tSRR*\tBDSU\n\t\t\t2,2\t\t# SHIFT FROM EARTH/MOON SPHERE TO B-29\n\t\t\tRM\t\t# RM - (MAGNITUDE RCSM-RLM)\n\t\tSLR*\n\t\t\t2,2\t\t# SHIFT TO EARTH/MOON SPHERE\n\t\tSTODL\tDELTAQ\t\t# EARTH B-29.  MOON B-27\n\t\t\t36D\t\t# RLC B-29/B-27\n\t\tNORM\tDSQ\t\t# NORMALIZE AND SQUARE\n\t\t\tX1\n\t\tDMP\tSR*\n\t\t\tRANGEVAR\t# MULTIPLY BY RANGEVAR (B12) THEN\n\t\t\t0 -2,1\t\t# UNNORMALIZE\n\t\tSR*\tSR*\n\t\t\t0,1\n\t\t\t0,2\n\t\tSR*\tRTB\n\t\t\t0,2\n\t\t\tTPMODE\n\t\tSTORE\tVARIANCE\t# B-40\n\t\tDCOMP\tTAD\n\t\t\t20D\t\t# B-40\n\t\tBMN\tTLOAD\n\t\t\tQOK\n\t\t\t20D\t\t# B-40\n\t\tSTORE\tVARIANCE\nQOK\t\tCALL\n\t\t\tLGCUPDTE\n\n\t\tSSP\tCALL\n\t\t\tWHCHREAD\n\t\tDEC\t2\t\t# STORE R-RATE CODE (2) FOR R3 IN NOUN 49\n\t\t\tGRP2PC\n\t\tCALL\t\t\t# B-VECTOR, DELTAQ FOR RANGE RATE\n\t\t\tGETULC\n\t\tPDDL\tSR*\t\t# GET RLC SCALED B-29/B-27\n\t\t\t36D\t\t# AND SHIFT TO B-23\n\t\t\t0 -4,2\n\t\tSTOVL\t36D\t\t# THEN STORE BACK IN 36D\n\t\tBON\tVCOMP\t\t# B1, COMP. IF LM BEING CORRECTED\n\t\t\tVEHUPFLG\n\t\t\t+1\n\t\tVXSC\n\t\t\t36D\t\t# B1 = RLC (B-24/B-22)\n# Page 578\n\t\tSTOVL\tBVECTOR +6\n\t\t\tNUVLEM\n\t\tVSR*\tVAD\n\t\t\t6,2\t\t# SHIFT FOR EARTH/MOON SPHERE\n\t\t\tVCVLEM\t\t# EARTH B-7. MOON B-5\n\t\tPDVL\tVSR*\t\t# VL TO PD6\n\t\t\tNUVCSM\n\t\t\t6,2\t\t# SHIFT FOR EARTH/MOON SPHERE\n\t\tVAD\tVSU\n\t\t\tVCVCSM\n\t\tPDVL\tDOT\t\t# VC - VL = VLC TO PD6\n\t\t\t0\n\t\t\t6\n\t\tPUSH\tSRR*\t\t# RDOT B-8/B-6 TO PD12\n\t\t\t2,2\t\t# SHIFT FROM EARTH/MOON SPHERE TO B-8\n\t\tDSQ\tDMPR\t\t# RDOT**2 B-16 X RATEVAR B12\n\t\t\tRATEVAR\n\t\tSTORE\tVARIANCE\n\t\tSLOAD\tSR\n\t\t\tVVARMIN\t\t# GET SINGLE PRECISION VVARMIN (B+12)\n\t\t\t16D\t\t# SHIFT TO DP (B-4)\n\t\tSTORE\t24D\t\t# AND SAVE IN 24D\n\t\tDSU\tBMN\t\t# IS MIN. VARIANCE > COMPUTED VARIANCE\n\t\t\tVARIANCE\n\t\t\tVOK\t\t# BRANCH -- NO\n\t\tDLOAD\t\t\t# YES -- USE MINIMUM VARIANCE\n\t\t\t24D\n\t\tSTORE \tVARIANCE\nVOK\t\tDLOAD\tSR2\t\t# RDOT (PD12) FROM B-8/B-6\n\t\tPDDL\tSLR*\t\t# TO B-10/B-8\n\t\t\tRDOTM\t\t# SHIFT TO EARTH/MOON SPHERE\n\t\t\t0 -1,2\t\t# B-7 TO B-10/B-8\n\t\tDSU\n\t\tDMPR\n\t\t\t36D\n\t\tSTOVL\tDELTAQ\t\t# B-33\n\t\t\t0\t\t# NOW GET B0\n\t\tVXV\tVXV\t\t# (ULC X VLC) X ULC\n\t\tBON\tVCOMP\t\t# B0, COMP. IF LM BEING CORRECTED\n\t\t\tVEHUPFLG\n\t\t\t+1\n\t\tVSR*\n\t\t\t0 -2,2\t\t# SCALED B-5\n\t\tSTOVL\tBVECTOR\n\t\t\tZEROVECS\n\t\tSTORE\t20D\t\t# ZERO OUT 20 TO 25 IN PUSHLIST\n\t\tSTOVL\tBVECTOR +12D\n\t\t\tBVECTOR\n\t\tABVAL\tNORM\t\t# LOAD B0, GET MAGNITUDE AND NORMALIZE\n\t\t\t20D\t\t# SHIFT COUNT IN 20D\n# Page 579\n\t\tVLOAD\tABVAL\n\t\t\tBVECTOR +6D\t# LOAD B1, GET MAGNITUDE AND NORMALIZE\n\t\tNORM\tDLOAD\n\t\t\t22D\t\t# SHIFT COUNT IN 22D\n\t\t\t22D\t\t# FIND WHICH SHIFT IS SMALLER\n\t\tDSU\tBMN\t\t# BRANCH -- B0 HAS A SMALLER SHIFT COUNT\n\t\t\t20D\n\t\t\tVOK1\n\t\tLXA,1\tGOTO\n\t\t\t22D\t\t# LOAD X2 WITH THE SMALLER SHIFT COUNT\n\t\t\tVOK2\nVOK1\t\tLXA,1\n\t\t\t20D\nVOK2\t\tVLOAD\tVSL*\t\t# THEN ADJUST B0, B1, DELTAQ AND VARIANCE\n\t\t\tBVECTOR\t\t# WITH THI SSHIFT COUNT\n\t\t\t0,1\n\t\tSTOVL\tBVECTOR\n\t\t\tBVECTOR +6\n\t\tVSL*\n\t\t\t0,1\n\t\tSTODL\tBVECTOR +6\n\t\t\tDELTAQ\n\t\tSL*\n\t\t\t0,1\n\t\tSTORE\tDELTAQ\n\t\tDLOAD\tSL*\t\t# GET RLC AND ADJUST FOR SCALE SHIFT\n\t\t\t36D\n\t\t\t0 -1,1\n\t\tDSQ\tDMP\t\t# MULTIPLY RLC**2 BY VARIANCE\n\t\t\tVARIANCE\n\t\tSL4\tRTB\t\t# SHIFT TO CONFORM TO BVECTORS AND DELTAQ\n\t\t\tTPMODE\n\t\tSTCALL\tVARIANCE\t# AND STORE TP VARIANCE\n\t\t\tLGCUPDTE\n\n\t\tCALL\n\t\t\tGRP2PC\n\t\tBON\tEXIT\t\t# ARE ANGLES TO BE DONE\n\t\t\tSURFFLAG\n\t\t\tRENDEND\t\t# NO\n\t\tEBANK=\tAIG\nMXMYMZ\t\tCAF\tAIGBANK\n\t\tTS\tBBANK\n\t\tCA\tAIG\t\t# YES, COMPUTE\tMX, MY, MZ\n\t\tTS\tCDUSPOT\n\t\tCA\tAMG\n\t\tTS\tCDUSPOT +2\n\t\tCA \tAOG\n\t\tTS\tCDUSPOT +4\t# GIMBAL ANGLES NOW IN CDUSPOT FOR TRG*NBSM\n\t\tTC\tINTPRET\n# Page 580\n\t\tVLOAD\tCALL\n\t\t\tUNITX\n\t\t\tTRG*NBSM\n\t\tVXM\tVSL1\n\t\t\tREFSMMAT\n\t\tSTOVL\tMX\n\t\t\tUNITY\n\t\tCALL\n\t\t\t*NBSM*\n\t\tVXM\tVSL1\n\t\t\tREFSMMAT\n\t\tSTOVL\tMY\n\t\t\tUNITZ\n\t\tCALL\n\t\t\t*NBSM*\n\t\tVXM\tVSL1\n\t\t\tREFSMMAT\nSHAFTBQ\t\tSTCALL\tMZ\n\t\t\tRADARANG\n\t\tSSP\tCALL\t\t# STORE SHAFT CODE (3) FOR R3 IN NOUN 49\n\t\t\tWHCHREAD\n\t\tDEC\t3\n\t\t\tGRP2PC\n\t\tVLOAD\tDOT\t\t# COMPUTE DELTAQ,B VECTORS FOR SHAFT ANG.\n\t\t\tULC\n\t\t\tMX\n\t\tSL1\n\t\tSTOVL\tSINTH\t\t# 18D\n\t\t\tULC\n\t\tDOT\tSL1\n\t\t\tMZ\n\t\tSTCALL\tCOSTH\t\t# 16D\n\t\t\tARCTAN\n\t\tBDSU\tDMP\n\t\t\tRRSHAFT\n\t\t\t2PI/8\n\t\tSL3R\tPUSH\n\t\tDLOAD\tSL3\n\t\t\tX789\n\t\tSRR*\tBDSU\t\t# SHIFT FROM -5/-3 TO B0\n\t\t\t0,2\n\t\tDMP\tSRR*\n\t\t\tRXZ\n\t\t\t0,1\t\t# SHIFT TO EARTH/MOON SPHERE\n\t\tSTOVL\tDELTAQ\t\t# EARTH B-29.  MOON B-27\n\t\t\tULC\n\t\tVXV\tVSL1\n\t\t\tMY\n\t\tUNIT\n\t\tBOFF\tVCOMP\t\t# B0, COMP. IF CSM BEING CORRECTED\n# Page 581\n\t\t\tVEHUPFLG\n\t\t\t+1\n\t\tSTOVL\tBVECTOR\n\t\t\tZEROVECS\n\t\tSTORE\tBVECTOR +6\n\t\tSTODL\tBVECTOR +12D\n\t\t\tRXZ\n\t\tSR*\tSRR*\t\t# SHIFT FROM EARTH/MOON SPHERE TO B-25\n\t\t\t0 -2,1\n\t\t\t0,2\n\t\tSTORE\tBVECTOR +12D\n\t\tSLOAD\n\t\t\tSHAFTVAR\n\t\tDAD\tDMP\n\t\t\tIMUVAR\t\t# RAD**2 B12\n\t\t\tRXZ\n\t\tSRR*\tDMP\n\t\t\t0,1\t\t# SHIFT TO EARTH/MOON SPHERE\n\t\t\tRXZ\n\t\tSR*\tSR*\n\t\t\t0 -2,1\n\t\t\t0,2\n\t\tSR*\tRTB\n\t\t\t0,2\n\t\t\tTPMODE\t\t# STORE VARIANCE TRIPLE PRECISION\n\t\tSTCALL\tVARIANCE\t# B-40\n\t\t\tLGCUPDTE\n\n\t\tCALL\n\t\t\tGRP2PC\nTRUNBQ\t\tCALL\n\t\t\tRADARANG\n\t\tSSP\tCALL\t\t# STORE TRUNNION CODE (4) FOR R3 IN N49\n\t\t\tWHCHREAD\n\t\tDEC\t4\n\t\t\tGRP2PC\n\t\tVLOAD\tVXV\n\t\t\tULC\n\t\t\tMY\n\t\tVSL1\tVXV\n\t\t\tULC\n\t\tVSL1\t\t\t# (ULC X MY) X ULC\n\t\tBOFF\tVCOMP\t\t# B0, COMP. IF CSM BEING CORRECTED\n\t\t\tVEHUPFLG\n\t\t\t+1\n\t\tSTOVL\tBVECTOR\n\t\t\tZEROVECS\n\t\tSTORE\tBVECTOR +6\n\t\tSTODL\tBVECTOR +12D\n\t\t\tRXZ\n# Page 582\n\t\tSR*\tSRR*\t\t# SHIFT FROM EARTH/MOON SPHERE TO B-25\n\t\t\t0 -2,1\n\t\t\t0,2\n\t\tSTORE\tBVECTOR +14D\n\t\tSLOAD\n\t\t\tTRUNVAR\n\t\tDAD\tDMP\n\t\t\tIMUVAR\n\t\t\tRXZ\n\t\tSRR*\tDMP\n\t\t\t0,1\t\t# SHIFT TO EARTH/MOON SPHERE\n\t\t\tRXZ\n\t\tSR*\tSR*\n\t\t\t0 -2,1\n\t\t\t0,2\n\t\tSR*\tRTB\n\t\t\t0,2\n\t\t\tTPMODE\t\t# STORE VARIANCE TRIPLE PRECISION\n\t\tSTODL\tVARIANCE\n\t\t\tSINTHETA\n\t\tASIN\tBDSU\t\t# SIN THETA IN PD6\n\t\t\tRRTRUN\n\t\tDMP\tSL3R\n\t\t\t2PI/8\n\t\tPDDL\tSL3\n\t\t\tX789 +2\n\t\tSRR*\tBDSU\t\t# SHIFT FROM -5/-3 TO B0\n\t\t\t0,2\n\t\tDMP\tSRR*\n\t\t\tRXZ\n\t\t\t0,1\n\t\tSTCALL\tDELTAQ\t\t# EARTH B-29.  MOON B-27\n\t\t\tLGCUPDTE\n\t\tCALL\n\t\t\tGRP2PC\nRENDEND\t\tGOTO\n\t\t\tR22LEM93\n\n# FUNCTIONAL DESCRIPTION:\n#\tLSR22.4 IS THE ENTRY TO PERFORM LUNAR SURFACE NAVIGATION FOR THE LM\n#\tCOMPUTER ONLY.  THIS ROUTINE COMPUTES THE BE-VECTORS AND DELTA Q FOR RANGE\n#\tAND RANGE RATE MEASURED BY THE RENDEZVOUS RADAR\n#\n# SUBROUTINES CALLED:\n#\tINTSTALL\tLGCUPDTE\tINCORP1\t\tRP-TO-R\n#\tINTEGRV\t\tGETULC\t\tINCORP2\n#\n# OUTPUT\n#\tCORRECTED CSM STATE VECTOR (PERMANENT)\n#\tNUMBER OF MARKS INCORPORATED IN MARKCTR\n# Page 583\n#\tMAGNITUDE OF POSITION DEVIATION (FOR DISPLAY) IN R22 DISP METERS B-29\n# \tMAGNITUDE OF VELOCITY DEVIATION (FOR DISPLAY) IN R22DISP +2 M/CSEC B-7\n# \tUPDATED W-MATRIX\n\n# ERASABLE INITIALIZATION REQUIRED\n#\tLM AND CSM STATE VECTORS\n#\tW-MATRIX\n#\tMARK TIME IN MKTIME\n#\tRADAR RANGE IN RM METERS B-29\n#\tRANGE RATE IN RDOTM METERS/CSEC B-7\n#\tVEHUPFLG\n\nLSR22.4\t\tCALL\n\t\t\tINTSTALL\n\t\tSET\tCLEAR\n\t\t\tSTATEFLG\n\t\t\tVINTFLAG\t# CALL TO GET LM POS + VEL IN REF COORD.\n\t\tCALL\n\t\t\tINTGRCAL\n\t\tCALL\n\t\t\tGRP2PC\n\t\tCLEAR\tCALL\n\t\t\tDMENFLG\t\t# SET MATRIX SIZE TO 6X6 FOR INCORP\n\t\t\tINTSTALL\n\t\tDLOAD\tBHIZ\t\t# IS THIS FIRST TIME THROUGH\n\t\t\tMARKCTR\n\t\t\tINITWMX6\t# YES, INITIALIZE 6X6 W-MATRIX\n\t\tCLEAR\tSET\n\t\t\tD6OR9FLG\n\t\t\tDIM0FLAG\n\t\tSET\tCLEAR\n\t\t\tVINTFLAG\n\t\t\tINTYPFLG\n\t\tCALL\n\t\t\tINTGRCAL\n\t\tGOTO\n\t\t\tRANGEBQ\n\nINITWMX6\tCALL\n\t\t\tWLINIT\t\t# INITIALIZE W-MATRIX\n\t\tSET\tCALL\n\t\t\tVINTFLAG\n\t\t\tSETIFLGS\n\t\tCALL\n\t\t\tINTGRCAL\n\t\tGOTO\n\t\t\tRANGEBQ\n\n# THIS ROUTINE CLEARS RFINAL (DP) AND CALLS INTEGRV\n# Page 584\nINTGRCAL\tSTQ\tDLOAD\n\t\t\tIGRET\n\t\t\tMKTIME\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRV\n\t\tGOTO\n\t\t\tIGRET\n\n# THIS ROUTINE INITIALIZES THE W-MATRIX BY ZEROING ALL W THEN SETTING\n# DIAGONAL ELEMENTS TO INITIAL STORED VALUES.\n\n\t\tEBANK=\tW\nWLINIT\t\tEXIT\n\t\tCAF\tWBANK\n\t\tTS\tBBANK\n\t\tCAF\tWSIZE\n\t\tTS\tW.IND\n\t\tCAF\tZERO\n\t\tINDEX\tW.IND\n\t\tTS\tW\n\t\tCCS\tW.IND\n\t\tTC\t-5\n\t\tCAF\tAIGBANK\t\t# RESTORE EBANK 7\n\t\tTS\tBBANK\n\t\tTC\tINTPRET\n\t\tBON\tSLOAD\t\t# IF ON LUNAR SURFACE, INITIALIZE WITH\n\t\t\tSURFFLAG\t# WSURFPOS AND WSURFVEL INSTEAD OF\n\t\t\tWLSRFPOS\t# WRENDPOS AND WRENDVEL\n\t\t\tWRENDPOS\n\t\tGOTO\n\t\t\tWPOSTORE\nWLSRFPOS\tSLOAD\n\t\t\tWSURFPOS\nWPOSTORE\tSR\t\t\t# SHIFT TO B-19 SCALE\n\t\t\t5\n\t\tSTORE\tW\n\t\tSTORE\tW +8D\n\t\tSTORE\tW +16D\n\t\tBON\tSLOAD\n\t\t\tSURFFLAG\n\t\t\tWLSRFVEL\n\t\t\tWRENDVEL\n\t\tGOTO\n\t\t\tWVELSTOR\nWLSRFVEL\tSLOAD\n\t\t\tWSURFVEL\nWVELSTOR\tSTORE\tW +72D\n\t\tSTORE\tW +80D\n\t\tSTORE\tW +88D\n\t\tSLOAD\n# Page 585\n\t\t\tWSHAFT\n\t\tSTORE\tW +144D\n\t\tSLOAD\n\t\t\tWTRUN\n\t\tSTORE\tW +152D\n\t\tSET\tSSP\t\t# SET RENDWFLG -- W-MATRIX VALID\n\t\t\tRENDWFLG\n\t\t\tMARKCTR\t\t# SET MARK COUNTER EQUAL ZERO\n\t\t\t0\n\t\tRVQ\n\n\t\tEBANK=\tW\nWBANK\t\tBBCON\tWLINIT\n\t\tEBANK=\tAIG\nAIGBANK\t\tBBCON\tLSR22.3\n\n# GETULC\n#\n# THIS SUBROUTINE COMPUTES THE RELATIVE POSITION VECTOR BETWEEN THE CSM\n# AND THE LM, LEAVING THE UNIT VECTOR IN THE PUSHLIST AND MPAC AND THE\n# MAGNITUDE IN 36D.\n\nGETULC\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tDELTALEM\n\t\tLXA,2\n\t\t\tSCALSHFT\t# LOAD X2 WITH SCALE SHIFT\n\t\tVSR*\tVAD\n\t\t\t9D,2\t\t# SHIFT FOR EARTH/MOON SPHERE\n\t\t\tRCVLEM\n\t\tPDVL\tVSR*\n\t\t\tDELTACSM\n\t\t\t9D,2\t\t# SHIFT FOR EARTH/MOON SPHERE\n\t\tVAD\tVSU\n\t\t\tRCVCSM\n\t\tRTB\tPUSH\t\t# USE NORMUNIT TO PRESERVE ACCURACY\n\t\t\tNORMUNX1\n\t\tSTODL\tULC\n\t\t\t36D\n\t\tSL*\t\t\t# ADJUST MAGNITUDE FROM NORMUNIT\n\t\t\t0,1\n\t\tSTOVL\t36D\t\t# ULC IN PD0 AND MPAC,RLC IN 36D\n\t\t\tULC\n\t\tRVQ\n\n# RADARANG\n#\n# THIS SUBROUTINE COMPUTS SINTHETA = -ULC DOT MY\n# RXZ = (SQRT (1-SINTHETA**2))RLC\n# OUTPUT\n#\tULC IN ULC, PD0\n# Page 586\n#\tRLC IN PD36D\n#\tSIN THETA IN SINTHETA AND PD6\n#\tRXZ NORM IN RXZ (N IN X1)\n\nRADARANG\tSTQ\tCALL\n\t\t\tRDRET\n\t\t\tGETULC\n\t\tVCOMP\tDOT\n\t\t\tMY\n\t\tSL1R\tPUSH\t\t# SIN THETA TO PD6\n\t\tSTORE\tSINTHETA\n\t\tDSQ\tBDSU\n\t\t\tDP1/4TH\t\t# 1-(SIN THETA)**2\n\t\tSQRT\tDMP\n\t\t\t36D\n\t\tSL1\tNORM\n\t\t\tX1\t\t# SET SHIFT COUNTER IN X1\n\t\tSTORE\tRXZ\n\t\tGOTO\t\t\t# EXIT\n\t\t\tRDRET\nLGCUPDTE\tSTQ\tCALL\n\t\t\tLGRET\n\t\t\tINCORP1\n\t\tVLOAD\tABVAL\n\t\t\tDELTAX +6\n\t\tLXA,2\tSRR*\n\t\t\tSCALSHFT\t# 0 -- MOON.  2 -- EARTH\n\t\t\t2,2\t\t# SET VEL DISPLAY TO B-7\n\t\tSTOVL\tR22DISP +2\n\t\t\tDELTAX\n\t\tABVAL\tSRR*\n\t\t\t2,2\t\t# SET POS DISPLAY TO B-29\n\t\tSTORE\tR22DISP\n\t\tSLOAD\tSR\n\t\t\tRMAX\n\t\t\t10D\n\t\tDSU\tBMN\n\t\t\tR22DISP\n\t\t\tR22LEM96\t# GO DISPLAY\n\t\tSLOAD\tDSU\n\t\t\tVMAX\n\t\t\tR22DISP +2\t# VMAX MINUS VEL. DEVIATION\n\t\tBMN\n\t\t\tR22LEM96\t# GO DISPLAY\nASTOK\t\tCALL\n\t\t\tINCORP2\n\t\tGOTO\n\t\t\tLGRET\nIMUVAR\t\t2DEC\tE-6 B12\t\t# RAD**2\n\nWSIZE\t\tDEC\t161\n# Page 587\n2PI/8\t\t2DEC\t3.141592653 B-2\n\n\t\tEBANK=\tLOSCOUNT\n# Page 588\n\n# PROGRAM NAME LRS24.1\t\tRR SEARCH ROUTINE\n# MCD NO. 0\t\t\tBY P. VOLANTE, SDC\t\tDATE 1-15-67\n#\n# FUNCTIONAL DESCRIPTION\n#\n# DRIVES THE RENDEZVOUS RADAR IN A HEXAGONAL SEARCH PATTERN ABOUT THE LOS TO THE CSM (COMPUTED FROM THE CSM AND LM\n# STATE VECTORS) CHECKING FOR THE DATA GOOD DISCRETE AND MONITORING THE ANGLE BETWEEN THE RADAR BORESIGHT AND THE\n# LM +Z AXIS.  IF THIS ANGLE EXCEEDS 30 DEGREES THE PREFERRED TRACKING ATTITUDE ROUTINE IS CALLED TO PERFORM AN\n# ATTITUDE MANEUVER.\n#\n# CALLING SEQUENCE -- BANKCALL FOR LRS24.1\n#\n# SUBROUTINES CALLED\n#\n#\tLEMCONIC\tR61LEM\n#\tCSMCONIC\tRRDESSM\n#\tJOBDELAY\tFLAGDOWN\n#\tWAITLIST\tFLAGUP\n#\tRRNB\t\tBANKCALL\n#\n# EXIT -- TO ENDOFJOB WHEN THE SEARCH FLAG (SRCHOPT) IS NOT SET\n#\n# OUTPUT\n#\n#\tDATAGOOD (SP) -- FOR DISPLAY IN R1 --\t00000 INDICATES NO LOCKON\n#\t\t\t\t\t\t11111 INDICATES LOCKON ACHIEVED\n#\tOMEGAD (SP)   -- FOR DISPLAY IN R2 --\tANGLE BETWEEN RR BORESIGNT VECTOR AND THE SPACECRAFT +Z AXIS\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tSEARCH FLAG MUST BE SET\n#\tLM AND CSM STATE VECTORS AND REFSMMAT MATRIX\n#\n# DEBRIS\n#\n#\tRLMSRCH\t\tUXVECT\n#\tVXRLM\t\tUYVECT\n#\tLOSDESRD\tNSRCHPNT\n#\tDATAGOOD\tOMEGAD\n#\tMPAC\t\tPUSHLIST\n\n\t\tCOUNT*\t$$/LRS24\nLRS24.1\t\tCAF\tZERO\n\t\tTS\tNSRCHPNT\t# SET SEARCH PATTERN POINT COUNTER TO ZERO\nCHKSRCH\t\tCAF\tBIT14\t\t# ISSUE AUTO TRACK ENABLE TO RADAR\n\t\tEXTEND\n# Page 589\n\t\tWOR\tCHAN12\n\t\tCAF\tSRCHOBIT\t# CHECK IF SEARCH STILL REQUESTED\n\t\tMASK\tFLAGWRD2\t# (SRCHOPT FLAG SET)\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\t# NO-TERMINATE JOB\n\n\t\tCAF\t6SECONDS\t# SCHEDULE TASK TO DRIVE RADAR TO NEXT PT.\n\t\tINHINT\n\t\tTC\tWAITLIST\t# IN 6 SECONDS\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tCALLDGCH\n\n\t\tRELINT\n\t\tCS\tRADMODES\t# IS REMODE IN PROGRESS\n\t\tMASK\tREMODBIT\n\t\tEXTEND\n\t\tBZF\tENDOFJOB\t# YES -- WAIT SIX SECONDS\n\t\tTC\tINTPRET\n\n\t\tRTB\tDAD\t\t# COMPUTE LOS AT PRESENT TIME + 1.5 SEC.\n\t\t\tLOADTIME\n\t\t\t1.5SECS\nLRS24.11\tSTCALL\tTDEC1\n\t\t\tLEMCONIC\t# EXTRAPOLATE LM STATE VECTOR\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTOVL\tRLMSRCH\t\t# SAVE LEM POSITION\n\t\t\tVATT\n\t\tSTODL\tSAVLEMV\t\t# SAVE LEM VELOCITY\n\t\t\tTAT\n\t\tSTCALL\tTDEC1\t\t# EXTRAPOLATE CSM STATE VECTOR\n\t\t\tCSMCONIC\t# EXTRAPOLATE CSM STATE VECTOR\n\t\tVLOAD\tVSU\t\t# LOS VECTOR = R(CSM) - R(LM)\n\t\t\tRATT\n\t\t\tRLMSRCH\n\t\tUNIT\n\t\tSTOVL\tLOSDESRD\t# STORE DESIRED LOS\n\t\t\tVATT\t\t# COMPUTE UNIT(V(CM) CROSS R(CM))\n\t\tUNIT\tVXV\n\t\t\tRATT\n\t\tUNIT\n\t\tSTORE\tVXRCM\n\t\tVLOAD\tVSU\n\t\t\tVATT\n\t\t\tSAVLEMV\n\t\tMXV\tVSL1\t\t# CONVERT FROM REFERENCE TO STABLE MEMBER\n\t\t\tREFSMMAT\n\t\tSTORE\tSAVLEMV\t\t# VLC = V(CSM) - V(LM)\n\t\tSLOAD\tBZE\t\t# CHECK IF N=0\n# Page 590\n\t\t\tNSRCHPNT\n\t\t\tDESGLOS\t\t# YES -- DESIGNATE ALONG LOS\n\t\tDSU\tBZE\t\t# IS N=1\n\t\t\tONEOCT\t\t# YES -- CALCULATE X AND Y AXES OF\n\t\t\tCALCXY\t\t# SEARCH PATTERN COORDINATE SYSTEM\n\t\tVLOAD\t\t\t# NO -- ROTATE X-Y AXES TO NEXT SEARCH POINT\n\t\t\tUXVECT\n\t\tSTOVL\tUXVECTPR\t# SAVE ORIGINAL X AND Y VECTORS\n\t\t\tUYVECT\t\t# UXPRIME = ORIGINAL UX\n\t\tSTORE\tUYVECTPR\t# UYPRIME = ORIGINAL UY\n\t\tVXSC\n\t\t\tSIN60DEG\t# UX = (COS 60)UXPR + (SIN 60)UYPR\n\t\tSTOVL\tUXVECT\n\t\t\tUXVECTPR\n\t\tVXSC\tVAD\n\t\t\tCOS60DEG\n\t\t\tUXVECT\n\t\tUNIT\n\t\tSTOVL\tUXVECT\n\t\t\tUXVECTPR\t# UY = (-SIN 60)UXPR + (COS 60)UYPR\n\t\tVXSC\n\t\t\tSIN60DEG\n\t\tSTOVL\tUYVECT\n\t\t\tUYVECTPR\n\t\tVXSC\tVSU\n\t\t\tCOS60DEG\n\t\t\tUYVECT\n\t\tUNIT\n\t\tSTORE\tUYVECT\nOFFCALC\t\tVXSC\tVAD\t\t# OFFSET VECTOR = K(UY)\n\t\t\tOFFSTFAC\t# LOS VECTOR + OFFSET VECTOR DEFINES\n\t\t\tLOSDESRD\t# DESIRED POINT IN SEARCH PATTERN\n\t\tUNIT\tMXV\n\t\t\tREFSMMAT\t# CONVERT TO STABLE MEMBER COORDINATES\n\t\tVSL1\nCONTDESG\tSTOVL\tRRTARGET\n\t\t\tSAVLEMV\n\t\tSTORE\tLOSVEL\n\t\tEXIT\n\t\tINHINT\n\t\tTC\tKILLTASK\t# KILL ANY PRESENTLY WAITLISTED TASK\n\t\tCADR\tDESLOOP +2\t# WHICH WOULD DESIGNATE TO THE LAST\n\t\t\t\t\t# POINT IN THE PATTERN\nCONTDES2\tCS\tCDESBIT\n\t\tMASK\tRADMODES\t# SET BIT 15 OF RADMODES TO INDICATE\n\t\tAD\tCDESBIT\t\t# A CONTINUOUS DESIGNATE WANTED.\n\t\tTS\tRADMODES\n\t\tTC\tINTPRET\n\n\t\tCALL\n# Page 591\n\t\t\tRRDESSM\t\t# DESIGNATE RADAR TO RRTARGET VECTOR\n\n\t\tEXIT\n\t\tTC\tLIMALARM\t# LOS NOT IN MODE 2 COVERAGE (P22)\n\t\tTC\tLIMALARM\t# VEHICLE MANEUVER REQUIRED (P20)\n\n\t\t\t\t\t# COMPUTE OMEGA,ANGLE BETWEEN RR LOS AND\n\t\t\t\t\t# SPACECRAFT +Z AXIS\nOMEGCALC\tEXTEND\n\t\tDCA\tCDUT\n\t\tDXCH\tTANGNB\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tRRNB\n\t\tDLOAD\tACOS\t\t# OMEGA IS ARCCOSINE OF Z-COMPONENT OF\n\t\t\t36D\t\t# VECTOR COMPUTED BY RRNB (LEFT AT 32D)\n\t\tSTORE\tOMEGDISP\t# STORE FOR DISPLAY IN R2\n\t\tEXIT\n\t\tTC\tENDOFJOB\n# Page 592\n# CALCULATE X AND Y VECTORS FOR SEARCH PATTERN COORDINATE SYSTEM.\n\nCALCXY\t\tVLOAD\tVXV\n\t\t\tVXRCM\n\t\t\tLOSDESRD\n\t\tUNIT\n\t\tSTOVL\tUXVECT\t\t# UX = (VLM X RLM) X LOS\n\t\t\tLOSDESRD\n\t\tVXV\tUNIT\n\t\t\tUXVECT\n\t\tSTORE\tUYVECT\t\t# UY = LOS X UX\n\t\tGOTO\n\t\t\tOFFCALC\n\nDESGLOS\t\tVLOAD\tMXV\t\t# WHEN N= 0,DESIGNATE ALONG LOS\n\t\t\tLOSDESRD\n\t\t\tREFSMMAT\t# CONVERT LOS FROM REFERENCE TO SM COORDS\n\t\tVSL1\tGOTO\n\t\t\tCONTDESG\n\nCALLDGCH\tCAE\tFLAGWRD0\t# IS RENDEZVOUS FLAG SET\n\t\tMASK\tRNDVZBIT\n\t\tEXTEND\n\t\tBZF\tTASKOVER\t# NO -- EXIT R24\n\t\tCAF\tPRIO25\t\t# YES -- SCHEDULE JOB TO DRIVE RADAR TO NEXT\n\t\tTC\tFINDVAC\t\t# PONT IN SEARCH PATTERN\n\t\tEBANK=\tRLMSRCH\n\t\t2CADR\tDATGDCHK\n\n\t\tTC\tTASKOVER\n\nDATGDCHK\tCAF\tBIT4\n\t\tEXTEND\t\t\t# CHECK IF DATA GOOD DISCRETE PRESENT\n\t\tRAND\tCHAN33\n\t\tEXTEND\n\t\tBZF\tSTORE1S\t\t# YES -- GO TO STORE 11111 FOR DISPLAY IN R1\n\t\tCS\tSIX\n\t\tAD\tNSRCHPNT\t# IS N GREATER THAN 6\n\t\tEXTEND\n\t\tBZF\tLRS24.1\t\t# YES -- RESET N = 0 AND START AROUND AGAIN\n\t\tINCR\tNSRCHPNT\t# NO -- SET N = N+1 AND GO TO\n\t\tTCF\tCHKSRCH\t\t# NEXT POINT IN PATTERN\n\nSTORE1S\t\tCAF\tALL1S\t\t# STORE 11111 FOR DISPLAY IN R1\n\t\tTS\tDATAGOOD\n# Page 593\n\t\tINHINT\n\t\tTC\tKILLTASK\t# DELETE DESIGNATE TASK FROM\n\t\tCADR\tDESLOOP +2\t# WAITLIST USING KILLTASK\n\t\tTC\tENDOFJOB\n\nLIMALARM\tTC\tALARM\t\t# ISSUE ALARM 527 -- LOS NOT IN MODE2\n\t\tOCT\t527\t\t# COVERAGE IN P22 OR VEHICLE MANEUVER\n\t\tINHINT\t\t\t# REQUIRED IN P20\n\t\tTC\tKILLTASK\t# KILL WAITLIST CALL FOR NEXT\n\t\tCADR\tCALLDGCH\t# POINT IN SEARCH PATTERN\n\t\tTC\tENDOFJOB\n\nALL1S\t\tDEC\t11111\nSIN60DEG\t2DEC\t.86603\nCOS60DEG\t=\tDPHALF\t\t# (2DEC .50)\nUXVECTPR\tEQUALS\t12D\t\t# PREVIOUS\nUYVECTPR\tEQUALS\t18D\nRLMUNIT\t\tEQUALS\t12D\nOFFSTFAC\t2DEC\t0.05678\t\t# TANGENT OF 3.25 DEGREES\n\nONEOCT\t\tOCT\t00001\t\t# **** NOTE -- THESE TWO CONSTANTS MUST ****\n3SECONDS\t2DEC\t300\t\t# **** BE IN THIS ORDER BECAUSE         ****\n\n\t\t\t\t\t# **** ONEOCT NEEDS A LOWER ORDER \t****\n\t\t\t\t\t# **** WORD OF ZEROES\t\t\t****\n6SECONDS\tDEC\t600\n1.5SECS\t\t2DEC\t150\n\nZERO/SP\t\tEQUALS\tHI6ZEROS\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG5\n\t\tBANK\n\t\tCOUNT*\t$$/P20\nGOTOV56\t\tEXTEND\t\t\t# P20 TERMINATES BY GOTOV56 INSTEAD OF\n\t\tDCA\tVB56CADR\t# GOTOPOOH\n\t\tTCF\tSUPDXCHZ\n\t\tEBANK=\tWHOCARES\nVB56CADR\t2CADR\tTRMTRACK\n\n# Page 594\n# PROGRAM NAME: R29 \t(RENDEZVOUS RADAR DESIGNATE DURING POWERED FLIGHT)\n# MOD NO. 2\tBY H. BLAIR-SMITH\tJULY 2, 1968\n#\n# FUNCTIONAL DESCRIPTION:\n#\n#\tDESIGNATES THE RENDEZVOUS RADAR TOWARD THE COMPUTES LOS TO THE CSM, WITH THE CHIEF OBJECTIVE OF OBTAINING RANGE\n#\tAND RANGE RATE DATA AT 2-SECOND INTERVALS FOR TRANSMISSION TO THE GROUND.  WHEN THE RR IS WITHIN .5 DEGREE OF\n#\tTHE COMPUTED LOS, TRACKING IS ENABLED, AND DESIGNATION CONTINUES UNTIL THE DATA-GOOD DISCRETE IS RECEIVED.  AT\n#\tTHAT POINT, DESIGNATION CEASES AND A RADAR-READING ROUTINE TAKES OVER, PREPARING A CONSISTENT SET OF DATA FOR\n#\tDOWN TELEMETRY.  THE SET INCLUDES RANGE, RANGE RATE, MARK TIME, TWO RR CDU ANGLES, THREE IMUCDU ANGLES, AND AN\n#\tINDICATOR WHICH IS 1 WHEN THE SET IS CONSISTENT AND 0 OTHERWISE.  THE INDICATOR IS IN TRKMKCNT.\n#\n# CALLING SEQUENCE:  BEGUN EVERY 2 SECONDS AS AN INTEGRAL PART OF SERVICER\n#\n# SUBROUTINES CALLED:\n#\n#\tREMODE\t\tRRPONLY\n#\tUNIT\t\tMPACVBUF\n#\tQUICTRIG\tAX*SR*T\n#\tSPSIN\t\tSPCOS\n#\tSETRRECR\tRROUT\n#\tRRRDOT\t\tRRRANGE\n#\n# EXIT:  TO NOR29NOW, IN SERVICER.\n#\n# OUTPUT:  (ALL FOR DOWNLINK)\n#\n#\tRM\t\tRDOTM\t\t(RAW)\n#\tAIG\t\tAMG\n#\tAOG\t\tTRKMKCNT\tTRKMKCNT = 00001 IF SET IS CONSISTENT,\n#\tTANGNB\t\tTANGNB +1\tOTHERWISE TRKMKCNT = 00000.\n#\tMKTIME\n# Page 595\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\tNOR29FLG\tREADRFLG\t\t(TO 1 AND 0 BY FRESH START) (RESET NOR29FLG TO LET SERVICER RUN R29)\n#\tPIPTIME\t\tRADMODES (BIT 10)\t(BIT SET TO 0 BY FRESH START)\n#\tR(CSM)\t\tV(CSM)\n#\tR\t\tV\t\t\t(PIPTIME THRU V BY AVE G IN SERVICER)\n#\n# DEBRIS:\n#\n#\tRADMODES (BIT 10)\n#\tLOSSM\t\tLOSVDT/4\t\t(= RRTARGET & LOSVEL)\n#\tSAVECDUT\tOLDESFLG\t\t(SAVECDUT = MLOSV)\n#\tLOSCMFLG\tREADRFLG\n#\n# ALARMS:  NONE.\n#\n# COMPONENT JOBS AND TASKS:\n#\n#\tINITIALIZING, IF RR IS FOUND TO BE IN MODE 1:  JOB R29REMOJ AND TASK REMODE:  ALWAYS: TASK PREPOS29.\n#\tDESIGNATING:  TASK BEGDES29 & JOB R29DODES.\n#\tRADAR READING:  TASK R29READ AND JOB R29RDJOB.  ALL JOBS ARE NOVAC TYPE.\n\n\t\tBANK\t33\n\t\tSETLOC\tR29/SERV\n\t\tBANK\n\n\t\tCOUNT*\t$$/r29\n\nNR29&RDR\tEQUALS\tEBANK5\n\n# Page 596\n# SERVICER COMES TO R29 FROM \"R29?\" IF NOR29FLG, READRFLG, RRREMODE, RRCDUZRO, RRREPOS, AND DISPLAY-INERTIAL-DATA\n# ARE ALL RESET, AND THE RR IS IN LGC MODE (OFTEN CONFUSINGLY CALLED AUTO MODE).\n\nR29\t\tCS\tRADMODES\n\t\tMASK\tDESIGBIT\n\t\tEXTEND\n\t\tBZF\tR29.LOS\t\t# BRANCH IF DESIGNATION IS ALREADY ON.\n\n\t\tINHINT\n\t\tADS\tRADMODES\t# SHOW THAT DESIGNATION IS NOW ON.\n\t\tCS\tBIT14\n\t\tEXTEND\n\t\tWAND\tCHAN12\t\t# REMOVE RR TRACK ENABLE DISCRETE.\n\t\tCS\tLOSCMBIT\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\t# CLEAR LOSCMFLG TO SHOW DES. LOOP IS OFF.\n\t\tCS\tOLDESBIT\n\t\tMASK\tSTATE\n\t\tTS\tSTATE\t\t# SHOW THAT DES. LOOP IS NOT REQUESTED.\n\t\tTC\tBANKCALL\n\t\tCADR\tSETRRECR\t# ENABLE RR ERROR COUNTERS.\n\t\tCA\tANTENBIT\n\t\tMASK\tRADMODES\n\t\tCCS\tA\t\t# TEST RR MODE BIT.\n\t\tTCF\tSETPRPOS\t# MODE 2.\n\n\t\tCA\tPRIO21\t\t# MODE 1:  MUST REMODE.\n\t\tTC\tNOVAC\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tR29REM0J\t# NEEDS OWN JOB TO RADSTALL IN.\n\n\t\tCS\tDESIGBIT\n\t\tMASK\tRADMODES\t# CLEAR DESIGNATE FLAG IN RADMODES\n\t\tTS\tRADMODES\t# BEFORE CALLING REMODE\n\t\tCA\tREMODBIT\n\t\tADS\tRADMODES\t# SHOW THAT REMODING IS ON.\n\t\tTCF\tNOR29NOW\t# CONTINUE SERVICER FUNCTIONS.\n\nSETPRPOS\tCA\tONE\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tPREPOS29\t# TASK TO SET TRUNNION ANGLE TO 180 DEG.\n\n\t\tCA\tREPOSBIT\n\t\tADS\tRADMODES\t# SHOW THAT REPOSITIONING IS ON.\n\t\tTCF\tNOR29NOW\n\n# Page 597\n# FORCE RENDEZVOUS RADAR INTO MODE 2.\n\nR29REM0J\tCA\tONE\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tREMODE\t\t# REMODE MUST RUN AS A TASK.\n\n\t\tTC\tBANKCALL\t# WAIT FOR END OF REMODING\n\t\tCADR\tRADSTALL\n\n\t\tTCF\tENDOFJOB\t# BAD EXIT CAN'T HAPPEN.\n\t\tTCF\tENDOFJOB\n\n# TASK TO PREPOSITION THE RR TRUNNION ANGLE TO -180 DEG.\n\n\t\tSETLOC\tR29S1\n\t\tBANK\n\nPREPOS29\tCA\tNEGMAX\t\t# -180 DEG.\n\t\tTC\tRRTONLY\t\t# DRIVE TRUNNION CDU.\n\t\tCS\tREPOSBIT\t# SHOW THAT REPOSITIONING IS OFF.\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\n\t\tTCF\tTASKOVER\n\n# COMPUTE THE LINE-OF-SIGHT AND LOS VELOCITY, AND PASS THEM TO THE R29DODES LOOP.\n\n\t\tSETLOC\tR29\n\t\tBANK\n\nR29.LOS\t\tEXTEND\n\t\tDCS\tPIPTIME\n\t\tDXCH\tMPAC\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDAS\tMPAC\t\t# (MPAC) = T-PIPTIME, SCALED B-28.\n\t\tTS\tMODE\t\t# SET MODE TO DOUBLE PRECISION.\n\t\tCA\tMPAC +1\n\t\tEXTEND\n\t\tMP\tBIT12\n\t\tDXCH\tMPAC\t\t# T-PIPTIME NOW SCALED B-17.\n\t\tTC\tINTPRET\n# Page 598\n# LOSCMFLG = 0 MEANS THAT THE DESIGNATION IS READY FOR NEW DATA.  SETTING LOSCMFLG MAKES IT GO AWAY SO SETUP29D CAN\n# START IT UP WHEN THE DATA IS IN PLACE.\n\n\t\tPDVL\tVSU\t\t# PUSH DOWN T-PIPTIME\n\t\t\tV(CSM)\n\t\t\tV\t\t# LOSVEL = V(CSM) - V\n\t\tPDDL\tVXSC\t\t# SWAP LOSVEL FOR T-PIPTIME, MULTIPLY THEM\n\t\tVAD\tVSU\t\t# \tAND ADD THE RESULT TO R(CSM) - R TO GET\n\t\t\tR(CSM)\t\t# \tAN UP-TO-DATE LOS VECTOR IN SM AXES.\n\t\t\tR\n\t\tBOFSET\tEXIT\t\t# (BOFSET DOES ITS THING INHINTED.)\n\t\t\tLOSCMFLG\t# IF DESIGNATE LOOP IS OFF, CHANGE LOSCM-\n\t\t\tSETUP29D\t# FLG TO ON AND GO TO SET UP NEW DATA.\n\t\tTCF\tNOR29NOW\t# IF DES. LOOP IS ON, LET IT USE OLD DATA.\n\nSETUP29D\tSTOVL\tLOSSM\t\t# LINE-OF-SIGHT VECTOR, STABLE MEMBER AXES\n\t\t\t0\n\t\tVXSC\n\t\t\t.5SECB17\n\t\tSTORE\tLOSVDT/4\t# 1/2 SECOND'S WORTH OF LOS VELOCITY.\n\t\tCLEAR\tEXIT\n\t\t\tLOSCMFLG\t# LET R29DLOOP USE NEW DATA.\n\n\t\tCS\tSTATE\n\t\tMASK\tOLDESBIT\n\t\tEXTEND\n\t\tBZF\tNOR29NOW\t# BRANCH IF R29 DES. LOOP IS REQUESTED.\n\t\tINHINT\n\t\tADS\tSTATE\t\t# OTHERWISE REQUEST IT NOW.\n\n\t\tCCS\tPIPCTR\t\t# SEE IF TASK SHOULD BE OFFSET ONE SECOND.\n\t\tCS\tSUPER110\t# -96D +100D = 4.\n\t\tAD\t1SEC\t\t# 0 +100D = 100D.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tBEGDES29\t# START BEGDES29 TASK ASAP.\n\n\t\tTCF\tNOR29NOW\t# RELINT AND CONTINUE SERVICER FUNCTIONS.\n\n.5SECB17\t2DEC\t50 B-17\n\n# Page 599\n# R29 DESIGNATE JOB AND TASK MACHINERY.  TASK RECURS EVERY .5 SEC UNTIL DESIGNATE IS CALLED OFF; IT MAY WAIT FOR A\n# CENTISECOND OR TWO IF IT COMES UP WHILE SETUP29D IS SUPPLYING NEW DATA.\n\n\t\tBANK\t24\n\t\tSETLOC\tP20S\n\t\tBANK\n\n\t\tCOUNT*\t$$/R29\n\nBEGDES29\tCAF\tPRIO21\n\t\tTC\tNOVAC\n\t\tEBANK=\tLOSVDT/4\n\t\t2CADR\tR29DODES\t# START R29DODES JOB TWICE A SECOND.\n\nR29DLOOP\tCAF\t.5SEC\n\t\tTC\tVARDELAY\n\n\t\tCS\tRADMODES\n\t\tMASK\tDESIGBIT\n\t\tCCS\tA\n\t\tTCF\tTASKOVER\t# QUIT IF DESIGNATION IS CALLED OFF.\n\n\t\tCS\tFLAGWRD2\n\t\tMASK\tLOSCMBIT\n\t\tEXTEND\n\t\tBZF\t+3\t\t# BRANCH IF SETUP29D'S SUPPLYING NEW DATA.\n\t\tADS\tFLAGWRD2\t# SET LOSCMFLG:  SHOW THAT DES. LOOP IS ON.\n\t\tTCF\tBEGDES29\n\n\t\tCA\tONE\n\t\tTCF\tR29DLOOP +1\t# WAIT A CENTISECOND FOR NEW DATA.\n# Page 600\n# R29DODES:  RR DESIGNATION LOOP FOR R29\n#\n# THIS ROUTINE DOES MUCH THE SAME THING AS DODES, BUT A GREAT DEAL FASTER.  IT TAKES THE NON-UNITIZED LOS VECTOR\n# IN STABLE MEMBER COORDINATES (LOSSM) AND A DELTA-LOS IN SM AXES (LOSVDT/4) WHICH IS 1/2 SEC TIMES LOS VELOCITY,\n# AND DEVELOPS THE SHAFT AND TRUNNION COMMANDS USING SINGLE PRECISION AS MUCH AS POSSIBLE, AND INTERPRETIVE NOT AT\n# ALL.  THE UNIT(LOSM + LOSVEL * 1 SEC) IS COMPUTED IN DP AND TRANSFORMED TO NAV BASE COORDINATES IN DOUBLE PRE-\n# CISION (USING SP SINES AND COSINES OF CDU ANGLES), AND THE REST IS DONE IN SP.\n#\n# THE FUNCTIONAL DIFFERENCE IS THAT R29DODES ALWAYS CLEARS LOSCMFLG WHEN IT ENDS, AND IT STARTS UP THE R29READ\n# TASK WHEN LOCK-ON IS ACHIEVED.\n\n\t\tBANK\t32\n\t\tSETLOC\tF2DPS*32\n\t\tBANK\n\n\t\tCOUNT*\t$$/R29\n\t\tEBANK=\tLOSVDT/4\n\nR29DODES\tCA\tONE\n\t\tTS\tTANG\t\t# INDICATE 1ST PASS THRU VECTOR LOOP.\n\t\tCA\tFIVE\n\nR29DVBEG\tCCS\tA\t\t# COUNT DOWN BY TWO'S IN VECTOR LOOP.\n\t\tTS\tQ\n\t\tCCS\tTANG\n\t\tTCF\tR29DPAS1\t# DO THIS ON 1ST PASS THRU LOOP.\n\n\t\tEXTEND\t\t\t# (A \"PASS\" HERE MEANS 3 TIMES AROUND).\n\t\tINDEX\tQ\n\t\tDCA\tLOSVDT/4\n\t\tINDEX\tQ\n\t\tDAS\tLOSSM\t\t# ADVANCE LOS VECTOR 1/2 SECOND.\n\nR29DPAS1\tEXTEND\n\t\tINDEX\tQ\n\t\tDCA\tLOSSM\n\t\tINDEX\tQ\t\t# MOVE CURRENT LOS (1ST PASS) OR LOS PRO-\n\t\tDXCH\tMPAC +1\t\t# JECTED 1/2 SEC AHEAD (2ND PASS).\n\t\tCCS\tTANG\n\t\tTCF\tR29DVEND\t# BUG OUT HERE IN 1ST PASS.\n\n\t\tEXTEND\n\t\tINDEX\tQ\n\t\tDCA\tLOSVDT/4\n\t\tINDEX\tQ\n\t\tDAS\tMPAC +1\t\t# PROJECT LOS 1 SECOND AHEAD (2ND PASS).\n\nR29DVEND\tCCS\tQ\n\t\tTCF\tR29DVBEG\t# BRANCH TO CONTINUE VECTOR LOOP.\n\n# Page 601\n# UNITIZE AND TRANSFORM TO NAV BASE AXES THE PRESENT LOS (1ST PASS) OR THE 1-SEC PROJECTED LOS (2ND PASS).\n\n\t\tDXCH\tMPAC +1\n\t\tDXCH\tMPAC\n\t\tCA\tR29FXLOC\t# = ADRES INTB15 + -34D\n\t\tTS\tFIXLOC\n\t\tTC\tUSPRCADR\t# WITH FIXLOC ARMED FOR LENGTH AND LENGTH\n\t\tCADR\tUNIT\t\t# SQUARED, BORROW UNITIZING ROUTINE.\n\t\tTC\tMPACVBUF\t# MOVE UNIT(LOS) TO AX*SR*T ARG AREA.\n\n\t\tCCS\tTANG\n\t\tTCF\t+2\n\t\tTCF\tGOTANGLS\t# GET CDU ANGLES ONLY AFTER 1ST PASS.\n\t\tINHINT\t\t\t# ENSURE CONSISTENT CDU READINGS.\n\t\tEXTEND\n\t\tDCA\tCDUT\n\t\tDXCH\tSAVECDUT\t# TRUNNION AND SHAFT ANGLES.\n\t\tCA\tCDUY\n\t\tTS\tCDUSPOT\n\t\tCA\tCDUZ\n\t\tTS\tCDUSPOT +2\n\t\tCA\tCDUX\n\t\tTS\tCDUSPOT +4\t# CDU ANGLES IN FUNNY ORDER FOR AX*SR*T.\n\t\tTC\tBANKCALL\n\t\tCADR\tQUICTRIG\t# GET SINES AND COSINES OF CDU ANGLES.\n\nGOTANGLS\tCS\tTHREE\n\t\tTC\tBANKCALL\n\t\tCADR\tAX*SR*T\t\t# TRANSFORM UNIT LOS TO NB AXES (ULOSNB).\n\n\t\tCCS\tTANG\n\t\tTCF\t+2\n\t\tTCF\tR29DPAS2\t# GO TO RR COMMAND COMP. AFTER 2ND PASS.\n\n# Page 602\n# COMPUTE COSINE OF THE ANGLE BETWEEN THE PRESENT LOS AND THE RR BORESIGHT VECTOR, AND SET THE SELFTRACK ENABLE IF\n# THE COSINE IS APPROXIMATELY COS(.5 DEG) OR GREATER (I.E., SMALLER ANGLE).\n\n\t\tINHINT\n\t\tTS\tTANG\t\t# INDICATE 2ND PASS THRU VECTOR LOOP.\n\t\tCA\tSAVECDUT\n\t\tTC\tSPCOS\n\t\tTS\tPUSHLOC\t\t# PUSHLOC = COS T.\n\t\tCS\tSAVECDUT\n\t\tTC\tSPSIN\n\t\tTS\tMODE\t\t# MODE = -SIN T.\n\t\tEXTEND\n\t\tMP\tVBUF +2\t\t# FORM - SIN T ULOSNBY.\n\t\tDXCH\tMPAC\n\t\tCA\tSAVECDUT +1\n\t\tTC\tSPSIN\n\t\tTS\tSAVECDUT\t# SAVECDUT NOW = SIN S.\n\t\tEXTEND\n\t\tMP\tPUSHLOC\n\t\tEXTEND\n\t\tMP\tVBUF\t\t# FORM SIN S COS T ULOSNBX.\n\t\tDAS\tMPAC\n\t\tCA\tSAVECDUT +1\n\t\tTC\tSPCOS\n\t\tTS\tSAVECDUT +1\t# SAVECDUT +1 NOW = COS S.\n\t\tEXTEND\n\t\tMP\tPUSHLOC\n\t\tEXTEND\n\t\tMP\tVBUF +4\t\t# FORM COS S COS T ULOSNBZ.\n\t\tDAS\tMPAC\t\t# COS(ERROR) = ULOSNB . (SIN S COS T,\n\t\tEXTEND\t\t\t# -SIN T, COS S COS T).\n\t\tDCA\tMPAC\nTESTCOS\t\tDAS\tMPAC\t\t# (ULOSNB IN VBUF WAS A HALF-UNIT VECTOR).\n\t\tCCS\tA\t\t# TEST FOR + OVERFLOW, NONE, OR MINUS.\n\t\tCA\tBIT14\n\t\tNOOP\n\t\tEXTEND\n\t\tWOR\tCHAN12\t\t# IF PLUS OVERFLOW, SET SELFTRACK ENABLE.\n\t\tRELINT\n\t\tTCF\tR29DVBEG -1\t# MAKE 2ND PASS THRU VECTOR LOOP.\n\n# Page 603\n# COMPUTE SHAFT AND TRUNNION COMMANDS TO NULL HAVE THE ERROR IN HALF A SECOND.\n\nR29DPAS2\tCA\tSAVECDUT +1\n\t\tEXTEND\n\t\tMP\tVBUF\t\t# FORM COS S ULOSNB'X.\n\t\tDXCH\tTANG\n\t\tCS\tSAVECDUT\n\t\tEXTEND\n\t\tMP\tVBUF +4\t\t# FORM - SIN S ULOSNB'Z.\n\t\tDAS\tTANG\t\t# RAW SHAFT CMD = ULOSNB' . (COS S, 0,\n\t\tCS\tMODE\t\t# - SIN S)\n\t\tEXTEND\n\t\tMP\tSAVECDUT\n\t\tEXTEND\n\t\tMP\tVBUF\t\t# FORM SIN T SIN S ULOSNB'X.\n\t\tDXCH\tMPAC\n\t\tCA\tPUSHLOC\n\t\tEXTEND\n\t\tMP\tVBUF +2\t\t# FORM COS T ULOSNB'Y.\n\t\tDAS\tMPAC\n\t\tCS\tMODE\n\t\tEXTEND\n\t\tMP\tSAVECDUT +1\n\t\tEXTEND\n\t\tMP\tVBUF +4\t\t# FORM SIN T COS S ULOSNB'Z.\n\t\tDAS\tMPAC\t\t# RAW TRUNNION CMD = ULOSNB'.\n\t\tCA\tMPAC\t\t# (SIN S SIN T, COS T, SIN S COS T).\n\t\tEXTEND\n\t\tMP\tRR29GAIN\n\t\tXCH\tTANG\t\t# STORE REFINED T CMD, GET RAW S CMD.\n\t\tEXTEND\n\t\tMP\tRR29GAIN\n\t\tTS\tTANG +1\t\t# STORE REFINED S CMD.\n\n# Page 604\n# WHETHER OR NOT TRACKING WAS ENABLED THIS TIME, CHECK ON RR DATA-GOOD.  IF PRESENT, STOP DESIGNATING AND START\n# READING DATA FROM THE RENDEZVOUS RADAR.\n\nDGOOD?\t\tCAF\tBIT4\n\t\tEXTEND\n\t\tRAND\tCHAN33\t\t# GET RR DATA-GOOD BIT.\n\t\tINHINT\t\t\t# (MAINLY FOR RROUT).\n\t\tEXTEND\n\t\tBZF\tR29LOKON\t# BRANCH IF DATA-GOOD IS PRESENT.\n\n\t\tTC\tBANKCALL\n\t\tCADR\tRROUT\t\t# DATA-GOOD IS ABSENT, SO SEND COMMANDS.\n\t\tTCF\tEND29DOD\n\nR29LOKON\tCS\tDESIGBIT\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\t# SHOW THAT DESIGNATION IS OVER.\n\t\tCS\tBIT2\n\t\tEXTEND\n\t\tWAND\tCHAN12\t\t# DISABLE RR ERROR COUNTERS.\n\t\tCA\tREADRBIT\n\t\tADS\tFLAGWRD3\t# SHOW THAT READING HAS BEEN REQUESTED.\n\t\tCCS\tPIPCTR\t\t# SEE IF TASK SHOULD BE OFFSET 1 SEC.\n\t\tCS\tSUPER110\t# -96D + 100D = 4.\n\t\tAD\t1SEC\t\t# 0 + 100D = 100D.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tR29READ\t\t# START READING TASK AND JOB.\n\nEND29DOD\tCS\tLOSCMBIT\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\t# ALWAYS CLEAR LOSCMFLG.\n\t\tTCF\tENDOFJOB\n\nR29FXLOC\tADRES\tINTB15+ -34D\nRR29GAIN\tDEC\t-.53624\nLOSVDT/4\tEQUALS\tLOSVEL\nLOSSM\t\tEQUALS\tRRTARGET\nSAVECDUT\tEQUALS \tMLOSV\n\n# Page 605\n# RR READING IS SET UP BY R29DODES WHEN IT DETECTS RR LOCK-ON\n\n\t\tBANK\t24\n\t\tSETLOC\tP20S\n\t\tBANK\n\n\t\tCOUNT*\t$$/R29\n\n\t\tEBANK=\tLOSCOUNT\n\nR29READ\t\tCAF\tPRIO26\t\t# CALLED BY WAITLIST\n\t\tTC\tNOVAC\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tR29RDJOB\t# START JOB TO READ AND DOWNLINK FOR R29.\n\n\t\tCA\t2SECS\n\t\tTC\tVARDELAY\n\n\t\tCA\tFLAGWRD3\t# 2 SECONDS LATER, SEE IF READING IS STILL\n\t\tMASK\tREADRBIT\t# ALLOWED (NO TRACKER FAIL ETC.)\n\t\tCCS\tA\n\t\tTCF\tR29READ\t\t# IT'S OK:  CALL IT AGAIN.\n\t\tTCF\tTASKOVER\t# IT AIN'T:  WAIT FOR REDESIGNATE.\n\nR29RDJOB\tCA\tFLAGWRD3\t# CALLED VIA NOVAC.\n\t\tMASK\tNR29FBIT\n\t\tCCS\tA\t\t# TEST \"NOR29FLG\".\n\t\tTCF\tENDRRD29\t# R29 IS NOW OVER, STOP AT ONCE.\n\n\t\tCA\tRADMODES\n\t\tMASK\tAUTOMBIT\n\t\tCCS\tA\t\t# TEST RR-NOT-IN-AUTO-MODE BIT.\n\t\tTCF\tENDRRD29\t# ASTRO TOOK RR OUT OF AUTO MODE.\n\n\t\tTC\tBANKCALL\n\t\tCADR\tRRRDOT\t\t# INITIATE READING OF RANGE RATE.\n\t\tTC\tBANKCALL\n\t\tCADR\tRADSTALL\t# GOT TO SLEEP UNTIL IT'S READY.\n\t\tTCF\tENDRRD29\t# BAD READ; REDESIGNATE.\n\n# Page 606\n# R29 RADAR READING CONTINUED.\n\n\t\tDXCH\tTIMEHOLD\n\t\tDXCH\tMPAC\t\t# TIME OF RR READING, FOR DOWNLINK.\n\t\tINHINT\t\t\t# BE SURE OF 5 CONSISTENT CDU ANGLES.\n\t\tEXTEND\n\t\tDCA\tCDUT\n\t\tDXCH\tMPAC +2\t\t# RRCDU ANGLES AT RR READ, FOR DOWNLINK.\n\t\tEXTEND\n\t\tDCA\tCDUY\n\t\tDXCH\tMPAC +4\t\t# MPAC'S 7 WORDS ARE BUFFERED FOR COPYCYCLE.\n\t\tCA\tCDUX\n\t\tTS\tMPAC +6\t\t# IMUCDU ANGLES AT RR READ, FOR DOWNLINK.\n\nR29RANGE\tTC\tBANKCALL\n\t\tCADR\tRRRANGE\t\t# INITIATE READING OF RR RANGE.\n\t\tTC\tBANKCALL\n\t\tCADR\tRADSTALL\t# GO TO SLEEP UNTIL IT'S READY.\n\t\tTCF\tR29RRR?\t\t# BAD READ OR SCALE CHANGE ... WHICH?\n\n\t\tINHINT\n\t\tDXCH\tDNRRANGE\t# COPYCYCLE TO LAY OUT NEW R29 DOWNLINK.\n\t\tDXCH\tRM\n\t\tDXCH\tMPAC\n\t\tDXCH\tMKTIME\n\t\tDXCH\tMPAC +2\n\t\tDXCH\tTANGNB\n\t\tDXCH\tMPAC +4\n\t\tDXCH\tAIG\n\t\tCA\tMPAC +6\n\t\tTS\tAOG\n\t\tCA\tONE\n\t\tTS\tTRKMKCNT\t# SHOW THAT DOWNLINK DATA IS CONSISTENT.\n\t\tTCF\tENDOFJOB\n\nR29RRR?\t\tCS\tFLAGWRD5\n\t\tMASK\tBIT10\n\t\tCCS\tA\t\t# WAS IT A SCALE CHANGE (REAL OR PHONY)?\n\t\tTCF\tENDRRD29\t# NO, A BAD READ; REDESIGNATE.\n\t\tTC\tDOWNFLAG\n\t\tADRES\tRNGSCFLG\n\t\tTCF\tR29RANGE\t# YES; CLEAR FLAG AND READ AGAIN.\n\nENDRRD29\tCA\tZERO\t\t# TROUBLE MADE US COME HERE TO LEAVE THE\n\t\tTS\tTRKMKCNT\t# RR-READING MODE.  DISCREDIT DOWNTEL.\n\t\tTC\tDOWNFLAG\n\t\tADRES\tREADRFLG\n\t\tCS\tBIT14\n\t\tEXTEND\n# Page 607\n\t\tWAND\tCHAN12\t\t# REMOVE TRACK-ENABLE DISCRETE.\n\t\tTCF\tENDOFJOB\n\n# Page 608\n# W-MATRIX MONITOR\n\n\t\tBANK\t31\n\t\tSETLOC\tVB67\n\t\tBANK\n\t\tCOUNT*\t$$/EXTVB\n\n\t\tEBANK=\tWWPOS\n\nV67CALL\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tV67WW\n\t\tEXIT\n\t\tEXTEND\t\t\t# SAVE THE PRESENT N99 VALUES FOR\n\t\tDCA\tWWPOS\t\t# COMPARISON AFTER THE DISPLAY\n\t\tDXCH\tWWBIAS +2\n\t\tEXTEND\n\t\tDCA\tWWVEL\n\t\tDXCH\tWWBIAS +4\n\t\tEXTEND\n\t\tDCA\tWWBIAS\n\t\tDXCH\tWWBIAS +6\nV06N99DS\tCAF\tV06N99\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTCF\tENDEXT\n\t\tTCF\tV6N99PRO\n\t\tTCF\tV06N99DS\nV6N99PRO\tZL\n\t\tCA\tFIVE\nN99LOOP\t\tTS\tQ\n\t\tINDEX\tQ\n\t\tCS\tWWPOS\n\t\tINDEX\tQ\n\t\tAD\tWWPOS +6\n\t\tADS\tL\n\t\tCCS\tQ\t\t# THE SUM OF ALL DIFFERENCES MUST BE ZERO.\n\t\tTCF\tN99LOOP\n\t\tLXCH\tA\n\t\tEXTEND\n\t\tBZF\tV06N9933\n\t\tTC\tUPFLAG\n\t\tADRES\tV67FLAG\n\nV06N9933\tTC\tINTPRET\n\t\tBON\tEXIT\n\t\t\tV67FLAG\n\t\t\t+2\n\t\tTCF\tENDEXT\n\t\tDLOAD\n# Page 609\n\t\t\tWWPOS\n\t\tSL4\tSL1\n\t\tSTODL\t0D\n\t\t\tWWVEL\n\t\tSTODL\t2D\n\t\t\tWWBIAS\n\t\tSL\t\t\t# SHIFT FROM NOUN SCALING (B-5) TO\n\t\t\t10D\t\t# INTERNAL SCALING (B+5)\n\t\tSTORE\t4D\n\t\tBON\tLXA,1\n\t\t\tSURFFLAG\n\t\t\tV67SURF\n\t\t\t0D\n\t\tSXA,1\tLXA,1\n\t\t\tWRENDPOS\n\t\t\t2D\n\t\tSXA,1\tGOTO\n\t\t\tWRENDVEL\n\t\t\tV67CLRF\nV67SURF\t\tLXA,1\tSXA,1\n\t\t\t0D\n\t\t\tWSURFPOS\n\t\tLXA,1\tSXA,1\n\t\t\t2D\n\t\t\tWSURFVEL\nV67CLRF\t\tLXA,1\tSXA,1\n\t\t\t4D\n\t\t\tWTRUN\n\t\tSXA,1\n\t\t\tWSHAFT\n\t\tCLEAR\tEXIT\n\t\t\tRENDWFLG\n\t\tTCF\tENDEXT\nV67WW\t\tSTQ\tBOV\n\t\t\tS2\n\t\t\t+1\n\t\tCLEAR\tCALL\n\t\t\tV67FLAG\n\t\t\tINTSTALL\n\t\tSSP\tDLOAD\n\t\t\tS1\n\t\tDEC\t6\n\t\t\tZEROVECS\n\t\tSTORE\tWWPOS\n\t\tSTORE\tWWVEL\n\t\tSTORE\tWWBIAS\n\t\tAXT,1\n\t\tDEC\t54\nNXPOSVEL\tVLOAD*\tVSQ\n\t\t\tW +54D,1\n# Page 610\n\t\tGOTO\n\t\t\tADDPOS\nV06N99\t\tVN\t0699\n\n\t\tSETLOC\tVB67A\n\t\tBANK\n\t\tCOUNT*\t$$/EXTVB\n\nADDPOS\t\tDAD\n\t\t\tWWPOS\n\t\tSTORE\tWWPOS\n\t\tVLOAD*\tVSQ\n\t\t\tW +108D,1\n\t\tDAD\n\t\t\tWWVEL\n\t\tSTORE\tWWVEL\n\t\tVLOAD*\tVSQ\n\t\t\tW +162D,1\n\t\tDAD\n\t\t\tWWBIAS\n\t\tSTORE\tWWBIAS\n\t\tTIX,1\tSQRT\n\t\t\tNXPOSVEL\n\t\tSR\t\t\t# SHIFT FROM INTERNAL SCALING (B+5) TO\n\t\t\t10D\t\t# NOUN SCALING (B-5)\n\t\tSTODL\tWWBIAS\n\t\t\tWWVEL\n\t\tSQRT\n\t\tSTODL\tWWVEL\n\t\t\tWWPOS\n\t\tSQRT\n\t\tSTORE\tWWPOS\n\t\tBOV\tGOTO\n\t\t\t+2\n\t\t\tV67XXX\n\t\tDLOAD\n\t\t\tDPPOSMAX\n\t\tSTORE\tWWPOS\n\t\tSTORE\tWWVEL\n\t\tSTORE\tWWBIAS\nV67XXX\t\tDLOAD\tDSU\n\t\t\tWWPOS\n\t\t\tFT99999\n\t\tBMN\tDLOAD\n\t\t\t+3\n\t\t\tFT99999\n\t\tSTORE\tWWPOS\n\t\tLXA,1\tSXA,1\n\t\t\tS2\n\t\t\tQPRET\n# Page 611\n\t\tEXIT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tINTWAKE\n\nFT99999\t\t2DEC\t30479 B-19\n\n# Page 612\n\t\tBANK\t25\n\t\tSETLOC\tRADARUPT\n\t\tBANK\n\t\tCOUNT*\t$$/RRUPT\n\n\t\tEBANK=\tLOSCOUNT\n\nR12LITES\tCA\tONE\n\t\tMASK \tIMODES33\n\t\tCCS\tA\n\t\tTCF\tISWRETRN\n\n\t\tTC\tHLIGHT\n\t\tTC\tHLIGHT -3\n\t\tTCF\tISWRETRN\n\nRADLITES\tCA\tBIT1\n\t\tMASK\tIMODES33\n\t\tCCS\tA\n\t\tTC\tQ\n\n\t\tCS\tBIT5\n\t\tAD\tITEMP1\n\t\tCCS\tA\n\t\tCS\tONE\n\t\tTCF\tVLIGHT\n\n\t\tTCF\tRRTRKF\n\nHLIGHT\t\tTS\tITEMP5\t\t# ZERO ITEMP5 FOR H INDEX\n\n\t\tCA\tHLITE\n\t\tTS\tL\n\n\t\tCA\tFLGWRD11\n\t\tMASK\tSCABBIT\n\t\tCCS\tA\n\t\tTCF\tONLITES\n\t\tCA\tLRALTBIT\nBOTHLITS\tMASK\tRADMODES\n\t\tCCS\tA\n\t\tTCF\tONLITES\n\n\t\tCA\tFLGWRD11\n\t\tINDEX\tITEMP5\n\t\tMASK\tHFLSHBIT\n\t\tCCS\tA\n\t\tTCF\tRRTRKF\n# Page 613\nLITIT\t\tEXTEND\n\t\tQXCH\tITEMP6\n\t\tTC\tTRKFLON +1\n\n\t\tEXTEND\n\t\tQXCH\tITEMP6\n\t\tTCF\tRRTRKF\n\n\nONLITES\t\tINDEX\tITEMP5\n\t\tCS\tHFLSHBIT\n\t\tMASK\tFLGWRD11\n\t\tTS\tFLGWRD11\n\n\t\tCA\tL\n\t\tTCF\tLITIT\nVLIGHT\t\tTS\tITEMP5\n\t\tCA\tVLITE\n\t\tTS\tL\n\t\tCA\tBIT8\n\t\tTCF\tBOTHLITS\n\nHLITE\t\tEQUALS\tBIT5\nVLITE\t\tEQUALS\tBIT3\n\n# *** END OF LEMP20S .127 ***\n"
  },
  {
    "path": "Luminary099/P30_P37.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP30_P37.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t614-617\n# Mod history:\t2009-05-17 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-05 RSB\tRemoved 4 lines of code that shouldn't\n#\t\t\t\thave survived from Luminary 131.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 614\n# PROGRAM DESCRIPTION P30\tDATE 3-6-67\n#\n# MOD.1 BY RAMA AIYAWAR\n# FUNCTIONAL DESCRIPTION\n#\tACCEPT ASTRONAUT INPUTS OF TIG.DELV(LV)\n#\tCALL IMU STATUS CHECK ROUTINE (R02)\n#\tDISPLAY TIME TO GO, APOGEE, PERIGEE, DELV(MAG), MGA AT IGN\n#\tREQUEST BURN PROGRAM\n#\n# CALLING SEQUENCE VIA JOB FROM V37\n#\n# EXIT VIA V37 CALL OR TO GOTOPOOH (V34E)\n#\n# SUBROUTINE CALLS-FLAGUP, PHASCHNG, BANKCALL, ENDOFJOB, GOFLASH, GOFLASHR\n#\t\t   GOPERF3R, INTPRET, BLANKET, GOTOPOOH, R02BOTH, S30.1,\n#\t\t   TIG/N35, MIDGIM, DISPMGA\n#\n# ERASABLE INITIALIZATION- STATE VECTOR\n#\n# OUTPUT-RINIT, VINIT, +MGA, VTIG, RTIG, DELVSIN, DELVSAB, DELVSLV, HAPO,\n#\t HPER, TTOGO\n#\n# DEBRIS- A,L, MPAC, PUSHLIST\n\n\t\tBANK\t32\n\t\tSETLOC\tP30S\n\t\tBANK\n\t\tEBANK=\t+MGA\n\t\tCOUNT*\t$$/P30\nP30\t\tTC\tUPFLAG\t\t# SET UPDATE FLAG\n\t\tADRES\tUPDATFLG\n\t\tTC\tUPFLAG\t\t# SET TRACK FLAG\n\t\tADRES\tTRACKFLG\n\nP30N33\t\tCAF\tV06N33\t\t# T OF IGN\n\t\tTC\tVNPOOH\t\t# RETURNS ON PROCEED, POOH ON TERMINATE\n\n\t\tCAF\tV06N81\t\t# DISPLAY DELTA V (LV)\n\t\tTC\tVNPOOH\t\t#     REDISPLAY ON RECYCLE\n\n\t\tTC\tDOWNFLAG\t# RESET UPDATE FLAG\n\t\tADRES\tUPDATFLG\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tS30.1\n\t\tSET\tEXIT\n\t\t\tUPDATFLG\nPARAM30\t\tCAF\tV06N42\t\t# DISPLAY APOGEE,PERIGEE ,DELTA V\n\t\tTC\tVNPOOH\n# Page 615\n\n\t\tTC\tINTPRET\n\t\tSETGO\n\t\t\tXDELVFLG\t# FOR P40'S: EXTERNAL DELTA-V GUIDANCE.\n\t\t\tREVN1645\t# TRKMKCNT, T60, +MGA  DISPLAY\n\nV06N33\t\tVN\t0633\nV06N42\t\tVN\t0642\n\n# Page 616\n# PROGRAM DESCRIPTION S30.1\tDATE 9NOV66\n# MOD NO 1\t\t\tLOG SECTION P30,P37\n# MOD BY RAMA AIYAWAR **\n# FUNCTIONAL DESCRIPTION\n#\tBASED ON STORED TARGET PARAMETERS(R OF IGNITION(RTIG),V OF\n#\tIGNITION(VTIG),TIME OF IGNITION (TIG)),COMPUTE PERIGEE ALTITUDE\n#\tAPOGEE ALTITUDE AND DELTAV REQUIRED(DELVSIN).\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\ts30.1\n# NORMAL EXIT MODE\n#\tAT L+2 OR CALLING SEQUENCE (GOTO L+2)\n# SUBROUTINES CALLED\n#\tLEMPREC\n#\tPERIAPO\n# ALARM OR ABORT EXIT MODES\n#\tNONE\n# ERASABLE INITIALIZATION REQUIRED\n#\tTIG\t\tTIME OF IGNITION\tDP B28CS\n#\tDELVSLV\t\tSPECIFIED DELTA-V IN LOCAL VERT.\n#\t\t\tCOORDS. OF ACTIVE VEHICLE AT\n#\t\t\tTIME OF IGNITION\tVECTOR \tB+7 METERS/CS\n#\n# OUTPUT\n#\tRTIG\t\tPOSITION AT TIG\t\tVECTOR \tB+29 METERS\n#\tVTIG\t\tVELOCITY AT TIG\t\tVECTOR \tB+29 METERS/CS\n#\tPDL 4D\t\tAPOGEE ALTITUDE\t\tDP \tB+29 M ,  B+27 METERS.\n#\tHAPO\t\tAPOGEE ALTITUDE\t\tDP \tB+29 METERS\n#\tPDL 8D\t\tPERIGEE ALTITUDE\tDP \tB+29 M ,  B+27 METERS.\n#\tHPER\t\tPERIGEE ALTITUDE\tDP \tB+29 METERS\n#\tDELVSIN\t\tSPECIFIED DELTA-V IN INTERTIAL\n#\t\t\tCOORD. OF ACTIVE VEHICLE AT\n#\t\t\tTIME OF IGNITION\tVECTOR \tB+7 METERS/CS\n#\tDELVSAB\t\tMAG. OF DELVSIN\t\tVECTOR \tB+7 METERS/CS\n#\n# DEBRIS\tQTEMP\tTEMP. ERASABLE\n#\t\tQPRET,MPAC\n#\t\tPUSHLIST\n\n\t\tSETLOC\tP30S1\n\t\tBANK\n\n\t\tCOUNT*\t$$/S30S\n\nS30.1\t\tSTQ\tDLOAD\n\t\t\tQTEMP\n\t\t\tTIG\t\t# TIME IGNITION SCALED AT 2(+28)CS\n\t\tSTCALL\tTDEC1\n\t\t\tLEMPREC\t\t# ENCKE ROUTINE FOR LEM\n\n\t\tVLOAD\tSXA,2\n# Page 617\n\t\t\tRATT\n\t\t\tRTX2\n\t\tSTORE\tRTIG\t\t# RADIUS VECTOR AT IGNITION TIME\n\t\tUNIT\tVCOMP\n\t\tSTOVL\tDELVSIN\t\t# ZRF/LV IN DELVSIN SCALED AT 2\n\t\t\tVATT\t\t# VELOCITY VECTOR AT TIG, SCALED 2(7) M/CS\n\t\tSTORE\tVTIG\n\t\tVXV\tUNIT\n\t\t\tRTIG\n\t\tSETPD\tSXA,1\n\t\t\t0\n\t\t\tRTX1\n\t\tPUSH\tVXV\t\t# YRF/LV PDL 0  SCALED AT 2\n\t\t\tDELVSIN\n\t\tVSL1\tPDVL\n\t\tPDVL\tPDVL\t\t# YRF/LV PDL 6 SCALED AT 2\n\t\t\tDELVSIN\t\t# ZRF/LV PDL 12D SCALED AT 2\n\t\t\tDELVSLV\n\t\tVXM\tVSL1\n\t\t\t0\n\t\tSTORE\tDELVSIN\t\t# DELTAV IN INERT. COOR. SCALED TO B+7M/CS\n\t\tABVAL\n\t\tSTOVL\tDELVSAB\t\t# DELTA V MAG.\n\t\t\tRTIG\t\t# (FOR PERIAPO)\n\t\tPDVL\tVAD\t\t# VREQUIRED = VTIG + DELVSIN (FOR PERIAPO)\n\t\t\tVTIG\n\t\t\tDELVSIN\n\t\tCALL\n\t\t\tPERIAPO1\n\t\tCALL\n\t\t\tSHIFTR1\t\t# RESCALE IF NEEDED\n\t\tCALL\t\t\t# LIMIT DISPLAY TO 9999.9 N. MI.\n\t\t\tMAXCHK\n\t\tSTODL\tHPER\t\t# PERIGEE ALT 2(29) METERS, FOR DISPLAY\n\t\t\t4D\n\t\tCALL\n\t\t\tSHIFTR1\t\t# RESCALE IF NEEDED\n\t\tCALL\t\t\t# LIMIT DISPLAY TO 9999.9 N. MI.\n\t\t\tMAXCHK\n\t\tSTCALL\tHAPO\t\t# APOGEE  ALT 2(29) METERS, FOR DISPLAY\n\t\t\tQTEMP\n\n"
  },
  {
    "path": "Luminary099/P32-P35_P72-P75.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP32-P35_P72-P75.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t618-650\n# Mod history:\t2009-05-18 RSB\tAdapted from the Luminary 131 file of the\n#\t\t\t\tsame name, as corrected from Luminary 099\n#\t\t\t\tpage images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 618\n# COELLIPTIC SEQUENCE INITIATION (CSI) PROGRAMS (P32 AND P72)\n#\n# MOD NO -1       LOG SECTION -- P32-P35, P72-P75\n# MOD BY WHITE.P  DATE 1JUNE67\n#\n# PURPOSE\n\n#\t(1)\tTO CALCULATE PARAMETERS ASSOCIATED WITH THE TIME FOLLOWING\n#\t\tCONCENTRIC FLIGHT PLAN MANEUVERS -- THE CO-ELLIPTIC SEQUENCE\n#\t\tINITIATION (CSI) MANEUVER AND THE CONSTANT DELTA ALTITUDE\n#\t\t(CDH) MANEUVER.\n\n#\t(2)\tTO CALCULATE THESE PARAMETERS BASED UPON MANEUVER DATA\n#\t\tAPPROVED AND KEYED INTO THE DSKY BY THE ASTRONAUT.\n\n#\t(3)\tTO DISPLAY TO THE ASTRONAUT AND THE GROUND DEPENDENT VARIABLES\n#\t\tASSOCIATED WITH THE CONCENTRIC FLIGHT PLAN MANEUVERS FOR\n#\t\tAPPROVAL BY THE ASTRONAUT/GROUND.\n\n#\t(4)\tTO STORE THE CSI TARGET PARAMETERS FOR USE BY THE DESIRED\n#\t\tTHRUSTING PROGRAM.\n#\n# ASSUMPTIONS\n\n#\t(1)\tAT A SELECTED TPI TIME THE LINE OF SIGHT BETWEEN THE ACTIVE\n#\t\tAND PASSIVE VEHICLES IS SELECTED TO BE A PRESCRIBED ANGLE (E)\n#\t\tFROM THE HORIZONTAL PLANE DEFINED BY THE ACTIVE VEHICLE\n#\t\tPOSITION.\n\n#\t(2)\tTHE TIME BETWEEN CSI IGNITION AND CDH IGNITION MUST BE\n#\t\tCOMPUTED TO BE GREATER THAN 10 MINUTES FOR SUCCESSFUL\n#\t\tCOMPLETION OF THE PROGRAM.\n\n#\t(3)\tTHE TIME BETWEEN CDH IGNITION AND TPI IGNITION MUST BE\n#\t\tCOMPUTED TO BE GREATER THAN 10 MINUTES FOR SUCCESSFUL\n#\t\tCOMPLETION OF THE PROGRAM.\n\n#\t(4)\tCDH DELTA V IS SELECTED TO MINIMIZE THE VARIATION OF THE\n#\t\tALTITUDE DIFFERENCE BETWEEN THE ORBITS.\n\n#\t(5)\tCSI BURN IS DEFINED SUCH THAT THE IMPULSIVE DELTA V IS IN THE\n#\t\tHORIZONTAL PLANE DEFINED BY THE ACTIVE VEHICLE POSITION AT CSI\n#\t\tIGNITION.\n\n#\t(6)\tTHE PERICENTER ALTITUDE OF THE ORBIT FOLLOWING CSI AND CDH\n#\t\tMUST BE GREATER THAN 35,000 FT (LUNAR ORBIT) OR 85 NM (EARTH\n#\t\tORBIT) FOR SUCCESSFUL COMPLETION OF THIS PROGRAM.\n\n#\t(7)\tTHE CSI AND CDH MANEUVERS ARE ORIGINALLY ASSUMED TO BE\n#\t\tPARALLEL TO THE PLANE OF THE CSM ORBIT.  HOWEVER, CREW\n# Page 619\n#\t\tMODIFICATION OF DELTA V (LV) COMPONENTS MAY RESULT IN AN\n#\t\tOUT-OF-PLANE CSI MANEUVER\n\n#\t(8)\tSTATE VECTOR UPDATES BY P27 ARE DISALLOWED DURING AUTOMATIC\n#\t\tSTATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION 10).\n\n#\t(9)\tCOMPUTED VARIABLES MAY BE STORED FOR LATER VERIFICATION BY\n#\t\tTHE GROUND.  THESE STORAGE CAPABILITIES ARE NORMALLY LIMITED\n#\t\tONLY TO THE PARAMETERS FOR ONE THRUSTING MANEUVER AT A TIME\n#\t\tEXCEPT FOR CONCENTRIC FLIGHT PLAN MANEUVER SEQUENCES.\n\n#\t(10)\tTHE RENDEZVOUS RADAR MAY OR MAY NOT BE USED TO UPDATE THE LM\n#\t\tOR CSM STATE VECTORS FOR THIS PROGRAM.  IF RADAR USE IS\n#\t\tDESIRED THE RADAR WAS TURNED ON AND LOCKED BY THE CSM BY\n#\t\tPREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS WILL BE MADE\n#\t\tAUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN ENABLED BY THE\n#\t\tTRACK AND UPDATE FLAGS (SEE P20).  THE RENDEZVOUS TRACKING\n#\t\tMARK COUNTER IS ZEROED BY THE SELECTION OF P20 AND AFTER EACH\n#\t\tTHRUSTING MANEUVER.\n\n#\t(11)\tTHE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.\n\n#\t(12)\tTHE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS --\n#\n#\t\t\tACTIVE VEHICLE FLAG -- DESIGNATES THE VEHICLE WHICH IS\n#\t\t\tDOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH\n#\t\t\tCALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF\n#\t\t\tEACH RENDEZVOUS PRE-THRUSTING PROGRAM.\n#\n#\t\t\tFINAL FLAG -- SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS\n#\t\t\tCOMPLETED THE FINAL MANEUVER COMPUTATION AND DISPLAY\n#\t\t\tCYCLE.\n#\n#\t\t\tEXTERNAL DELTA V STEERING FLAG -- DESIGNATES THE TYPE OF\n#\t\t\tSTEERING REQUIRED FOR EXECUTION OF THIS MANEUVER BY THE\n#\t\t\tTHRUSTING PROGRAM SELECTED AFTER COMPLETION OF THIS\n#\t\t\tPROGRAM.\n#\n#\t(13)\tIT IS NORMALLY REQUIRED THAT THE ISS BE ON FOR 1 HOUR PRIOR TO\n#\t\tA THRUSTING MANEUVER.\n#\n#\t(14)\tTHIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY\n#\n#\t\t\tP32 IF THIS VEHICLE IS ACTIVE VEHICLE.\n#\n#\t\t\tP72 IF THIS VEHICLE IS THE PASSIVE VEHICLE.\n#\n# INPUT\n\n#\t(1)\tTCSI\t\tTIME OF THE CSI MANEUVER\n\n# Page 620\n#\t(2)\tNN\t\tNUMBER OF APSIDAL CROSSINGS THRU WHICH THE ACTIVE\n#\t\t\t\tVEHICLE ORBIT CAN BE ADVANCED TO OBTAIN THE CDH\n#\t\t\t\tMANEUVER POINT.\n#\t(3)\tELEV\t\tDESIRED LOS ANGLE AT TPI\n#\t(4)\tTTPI\t\tTIME OF THE TPI MANEUVER\n#\n# OUTPUT\n\n#\t(1)\tTRKMKCNT\tNUMBER OF MARKS\n#\t(2)\tTTOGO\t\tTIME TO GO\n#\t(3)\t+MGA\t\tMIDDLE GIMBAL ANGLE\n#\t(4)\tDIFFALT\t\tDELTA ALTITUDE AT CDH\n#\t(5)\tT1TOT2\t\tDELTA TIME FROM CSI TO CDH\n#\t(6)\tT2TOT3\t\tDELTA TIME FROM CDH TO TPI\n#\t(7)\tDELVLVC\t\tDELTA VELOCITY AT CSI -- LOCAL VERTICAL COORDINATES\n#\t(8)\tDELVLVC\t\tDELTA VELOCITY AT CDH -- LOCAL VERTICAL COORDINATES\n#\n# DOWNLINK\n\n#\t(1)\tTCSI\t\tTIME OF THE CSI MANEUVER\n#\t(2)\tTCDH\t\tTIME OF THE CDH MANEUVER\n#\t(3)\tTTPI\t\tTIME OF THE TPI MANEUVER\n#\t(4)\tTIG\t\tTIME OF THE CSI MANEUVER\n#\t(5)\tDELVEET1\tDELTA VELOCITY AT CSI -- REFERENCE COORDINATES\n#\t(6)\tDELVEET2\tDELTA VELOCITY AT CDH -- REFERENCE COORDINATES\n#\t(7)\tDIFFALT\t\tDELTA ALTITUDE AT CDH\n#\t(8)\tNN\t\tNUMBER OF APSIDAL CROSSINGS THRU WHICH THE ACTIVE\n#\t\t\t\tVEHICLE ORBIT CAN BE ADVANCED TO OBTAIN THE CDH\n#\t\t\t\tMANEUVER POINT\n#\t(9)\tELEV\t\tDESIRED LOS ANGLE AT TPI\n#\n# COMMUNICATION TO THRUSTING PROGRAM\n\n#\t(1)\tTIG\t\tTIME OF THE CSI MANEUVER\n#\t(2)\tRTIG\t\tPOSITION OF ACTIVE VEHICLE AT CSI -- BEFORE ROTATION\n#\t\t\t\tINTO PLANE OF PASSIVE VEHICLE\n#\t(3)\tVTIG\t\tVELOCITY OF ACTIVE VEHICLE AT CSE -- BEFORE ROTATION\n#\t\t\t\tINTO PLANE OF PASSIVE VEHICLE\n#\t(4)\tDELVSIN\t\tDELTA VELOCITY AT CSI -- REFERENCE COORDINATES\n#\t(5)\tDELVSAB\t\tMAGNITUDE OF DELTA VELOCITY AT CSI\n#\t(6)\tXDELVFLG\tSET TO INDICATE EXTERNAL DELTA V VG COMPUTATION\n#\n# SUBROUTINES USED\n\n#\tAVFLAGA\n#\tAVFLAGP\n#\tP20FLGON\n#\tVARALARM\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n# Page 621\n#\tVNPOOH\n#\tGOFLASHR\n#\tBLANKET\n#\tENDOFJOB\n#\tSELECTMU\n#\tADVANCE\n#\tINTINT\n#\tPASSIVE\n#\tCSI/A\n#\tS32/33.1\n#\tDISDVLVC\n#\tVN1645\n\n\t\tBANK\t35\n\t\tSETLOC\tCSI/CDH\n\t\tBANK\n\t\tEBANK=\tSUBEXIT\n\t\tCOUNT*\t$$/P3272\nP32\t\tTC\tAVFLAGA\n\t\tTC\tP32STRT\nP72\t\tTC\tAVFLAGP\nP32STRT\t\tEXTEND\n\t\tDCA\tP30ZERO\n\t\tDXCH\tCENTANG\n\t\tTC\tP32/P72A\nALMXITA\t\tSXA,2\n\t\t\tCSIALRM\nALMXIT\t\tLXC,1\n\t\t\tCSIALRM\n\t\tSLOAD*\tEXIT\n\t\t\tALARM/TB -1,1\n\t\tCA\tMPAC\n\t\tTC\tVARALARM\n\t\tCAF\tV05N09\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t-4\nP32/P72A\tTC\tP20FLGON\n\t\tCAF\tP30ZERO\n\t\tTS\tNN \t+1\n\t\tTS\tTCSI\n\t\tTS\tTCSI \t+1\nVN0611\t\tCAF\tV06N11\t\t# TCSI\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tDLOAD\tDCOMP\n\t\t\tTCSI\n\t\tBMN\tDLOAD\n\t\t\tVN0655\n# Page 622\n\t\t\tTETLEM\n\t\tSTCALL\tTDEC1\n\t\t\tPRECSET\n\t\tVLOAD\tVSR*\n\t\t\tRACT3\n\t\t\t0,2\n\t\tSTOVL\tRVEC\n\t\t\tVACT3\n\t\tVSR*\tSET\n\t\t\t0,2\n\t\t\tRVSW\n\t\tSTODL\tVVEC\n\t\t\tDPPOSMAX\n\t\tSTCALL\tRDESIRED\n\t\t\tTIMERAD\n\t\tDAD\n\t\t\tTDEC2\n\t\tSTORE\tTCSI\n\t\tEXIT\n\t\tTC\tVN0611\nVN0655\t\tEXIT\n\t\tCAF\tV06N55\t\t# NN, ELEV(RGLOS)\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tCAF\tV06N37\t\t# TTPI\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tTCSI\n\t\tSTCALL\tTIG\n\t\t\tSELECTMU\nP32/P72B\tCALL\n\t\t\tADVANCE\n\t\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tVPASS1\n\t\tPDVL\tPDDL\n\t\t\tRPASS1\n\t\t\tTCSI\n\t\tPDDL\tPDDL\n\t\t\tTTPI\n\t\t\tTWOPI\n\t\tPUSH\tCALL\n\t\t\tINTINT\n\t\tCALL\n\t\t\tPASSIVE\n\t\tCALL\n# Page 623\n\t\t\tCSI/A\nP32/P72C\tBON\tSET\n\t\t\tFINALFLG\n\t\t\tP32/P72D\n\t\t\tUPDATFLG\nP32/P72D\tDLOAD\n\t\t\tT1TOT2\nP32/P72E\tSTORE\tT1TOT2\n\t\tDSU\tBPL\n\t\t\t60MIN\n\t\t\tP32/P72E\n\t\tDLOAD\n\t\t\tT2TOT3\nP32/P72F\tSTORE\tT2TOT3\n\t\tDSU\tBPL\n\t\t\t60MIN\n\t\t\tP32/P72F\n\t\tEXIT\n\t\tCAF\tV06N75\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\n\t\t\tDELVEET1\n\t\t\tS32/33.1\n\t\tSTOVL\tDELVEET1\n\t\t\tRACT2\n\t\tSTOVL\tRACT1\n\t\t\tDELVEET2\n\t\tAXT,1\tCALL\n\t\tVN\t0682\n\t\t\tDISDVLVC\n\t\tDLOAD\n\t\t\tTTPI\n\t\tSTCALL\tTTPIO\n\t\t\tVN1645\n\t\tGOTO\n\t\t\tP32/P72B\n\n# Page 624\n# CONSTANT DELTA HEIGHT (CDH) PROGRAMS (P33 AND P73)\n# MOD NO -1\t\t\tLOC SECTION -- P32-P35, P72-P75\n# MOD BY WHITE, P.\t\tDATE: 1 JUNE 67\n#\n# PURPOSE\n#\n#\t(1)\tTO CALCULATE PARAMETERS ASSOCIATED WITH THE CONSTANT DELTA\n#\t\tALTITUDE MANEUVER (CDH).\n#\n#\t(2)\tTO CALCULATE THESE PARAMETERS BASED UPON MANEUVER DATA\n#\t\tAPPROVED AND KEYED INTO THE DSKY BY THE ASTRONAUT.\n#\n#\t(3)\tTO DISPLAY TO THE ASTRONAUT AND THE GROUND DEPENDENT VARIABLES\n#\t\tASSOCIATED WITH THE CDH MANEUVER FOR APPROVAL BY THE\n#\t\tASTRONAUT/GROUND.\n#\n#\t(4)\tTO STORE THE CDH TARGET PARAMETERS FOR USE BY THE DESIRED\n#\t\tTHRUSTING PROGRAM.\n#\n# ASSUMPTIONS\n#\n#\t(1)\tTHIS PROGRAM IS BASED UPON PREVIOUS COMPLETION OF THE\n#\t\tCO-ELLIPTIC SEQUENCE INITIATION (CSI) PROGRAM (P32/P72).\n#\t\tTHEREFORE --\n#\n#\t\t(A)\tAT A SELECTED TPI TIME (NOW IN STORAGE) THE LINE OF SIGHT\n#\t\t\tBETWEEN THE ACTIVE AND PASSIVE VEHICLES WAS SELECTED TO BE\n#\t\t\tA PRESCRIBED ANGLE (E) (NOW IN STORAGE) FROM THE\n#\t\t\tHORIZONTAL PLANE DEFINED BY THE ACTIVE VEHICLE POSITION.\n#\n#\t\t(B)\tTHE TIME BETWEEN CSI IGNITION AND CDH IGNITION WAS\n#\t\t\tCOMPUTED TO BE GREATER THAN 10 MINUTES.\n#\n#\t\t(C)\tTHE TIME BETWEEN CDH IGNITION AND TPI IGNITION WAS\n#\t\t\tCOMPUTED TO BE GREATER THAN 10 MINUTES.\n#\n#\t\t(D)\tTHE VARIATION OF THE ALTITUDE DIFFERENCE BETWEEN THE\n#\t\t\tORBITS WAS MINIMIZED.\n#\n#\t\t(E)\tCSI BURN WAS DEFINED SUCH THAT THE IMPULSIVE DELTA V WAS\n#\t\t\tIN THE HORIZONTAL PLANE DEFINED BY ACTIVE VEHICLE\n#\t\t\tPOSITION AT CSI IGNITION.\n#\n#\t\t(F) \tTHE PERICENTER ALTITUDES OF THE ORBITS FOLLOWING CSI AND\n#\t\t\tCDH WERE COMPUTED TO BE GREATER THAN 35,000 FT FOR LUNAR\n#\t\t\tORBIT OR 85 NM FOR EARTH ORBIT.\n#\n#\t\t(G)\tTHE CSI AND CDH MANEUVERS WERE ASSUMED TO BE PARALLEL TO\n#\t\t\tTHE PLANE OF THE PASSIVE VEHICLE ORBIT.  HOWEVER, CREW\n# Page 625\n#\t\t\tMODIFICATION OF DELTA V (LV) COMPONENTS MAY HAVE RESULTED\n#\t\t\tIN AN OUT-OF-PLANE MANEUVER.\n#\n#\t(2)\tSTATE VECTOR UPDATES BY P27 ARE DISALLOWED DURING AUTOMATIC\n#\t\tSTATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION 4).\n#\n#\t(3)\tCOMPUTED VARIABLES MAY BE STORED FOR LATER VERIFICATION BY\n#\t\tTHE GROUND.  THESE STORAGE CAPABILITIES ARE NORMALLY LIMITED\n#\t\tONLY TO THE PARAMETERS FOR ONE THRUSTING MANEUVER AT A TIME\n#\t\tEXCEPT FOR CONCENTRIC FLIGHT PLAN MANEUVER SEQUENCES.\n#\n#\t(4)\tTHE RENDEZVOUS RADAR MAY OR MAY NOT BE USED TO UPDATE THE LM.\n#\t\tOR CSM STATE VECTORS FOR THIS PROGRAM.  IF RADAR USE IS\n#\t\tDESIRED THE RADAR WAS TURNED ON AND LOCKED ON THE CSM BY\n#\t\tPREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS WILL BE MADE\n#\t\tAUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN ENABLED BY THE\n#\t\tTRACK AND UPDATE FLAGS (SEE P20).  THE RENDEZVOUS TRACKING\n#\t\tMARK COUNTER IS ZEROED BY THE SELECTION OF P20 AND AFTER EACH\n#\t\tTHRUSTING MANEUVER.\n#\n#\t(5)\tTHE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.\n#\n#\t(6)\tTHE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS --\n#\n#\t\t\tACTIVE VEHICLE FLAG -- DESIGNATES THE VEHICLE WHICH IS\n#\t\t\tDOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH\n#\t\t\tCALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF\n#\t\t\tEACH RENDEZVOUS PRE-THRUSTING PROGRAM.\n#\n#\t\t\tFINAL FLAG -- SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS\n#\t\t\tCOMPLETED THE FINAL MANEUVER COMPUTATION AND DISPLAY\n#\t\t\tCYCLE.\n#\n#\t\t\tEXTERNAL DELTA V STEERING FLAG -- DESIGNATES THE TYPE OF\n#\t\t\tSTEERING REQUIRED FOR EXECUTION OF THIS MANEUVER BY THE\n#\t\t\tTHRUSTING PROGRAM SELECTED AFTER COMPLETION OF THIS\n#\t\t\tPROGRAM.\n#\n#\t(7)\tIT IS NORMALLY REQUIRED THAT THE ISS BE ON FOR 1 HOUR PRIOR TO\n#\t\tA THRUSTING MANEUVER.\n#\n#\t(8)\tTHIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY.\n#\n#\t\t\tP33 IF THIS VEHICLE IS ACTIVE VEHICLE.\n#\n#\t\t\tP73 IF THIS VEHICLE IS PASSIVE VEHICLE.\n#\n# INPUT\n#\n#\t(1)\tTTPIO\tTIME OF THE TPI MANEUVER -- SAVED FROM P32/P72\n# Page 626\n#\t(2)\tELEV\tDESIRED LOS ANGLE AT TPI -- SAVED FROM P32/P72\n#\t(3)\tTCDH\tTIME OF THE CDH MANEUVER\n#\n# OUTPUT\n#\n#\t(1)\tTRKMKCNT\tNUMBER OF MARKS\n#\t(2)\tTTOGO\t\tTIME TO GO\n#\t(3)\t+MGA\t\tMIDDLE GIMBAL ANGLE\n#\t(4)\tDIFFALT\t\tDELTA ALTITUDE AT CDH\n#\t(5)\tT2TOT3\t\tDELTA TIME FROM CDH TO COMPUTED TPI\n#\t(6)\tNOMTPI\t\tDELTA TIME FROM NOMINAL TPI TO COMPUTED TPI\n#\t(7)\tDELVLVC\t\tDELTA VELOCITY AT CDH -- LOCAL VERTICAL COORDINATES\n#\n# DOWNLINK\n#\n#\t(1)\tTCDH\t\tTIME OF THE CDH MANEUVER\n#\t(2)\tTTPI\t\tTIME OF THE TPI MANEUVER\n#\t(3)\tTIG\t\tTIME OF THE CDH MANEUVER\n#\t(4)\tDELLVEET2\tDELTA VELOCITY AT CDH -- REFERENCE COORDINATES\n#\t(5)\tDIFFALT\t\tDELTA ALTITUDE AT CDH\n#\t(6)\tELEV\t\tDESIRED LOS ANGLE AT TPI\n#\n# COMMUNICATION TO THRUSTING PROGRAMS\n#\n#\t(1)\tTIG\t\tTIME OF THE CDH MANEUVER\n#\t(2)\tRTIG\t\tPOSITION OF ACTIVE VEHICLE AT CDH -- BEFORE ROTATION\n#\t\t\t\tINTO PLANE OF PASSIVE VEHICLE.\n#\t(3)\tVTIG\t\tVELOCITY OF ACTIVE VEHICLE AT CDH -- BEFORE ROTATION\n#\t\t\t\tINTO PLANE OF PASSIVE VEHICLE.\n#\t(4)\tDELVSIN\t\tDELTA VELOCITY AT CDH -- REFERENCE COORDINATES.\n#\t(5)\tDELVSAB\t\tMAGNITUDE OF DELTA VELOCITY AT CDH.\n#\t(6)\tXDELVFLG\tSET TO INDICATE EXTERNAL DELTA V VG COMPUTATION.\n#\n# SUBROUTINES USED\n#\n#\tAVFLAGA\n#\tAVFLAGP\n#\tP20FLGON\n#\tVNPOOH\n#\tSELECTMU\n#\tADVANCE\n#\tCDHMVR\n#\tINTINT3P\n#\tACTIVE\n#\tPASSIVE\n#\tS33/S34.1\n#\tALARM\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n#\tS32/33.1\n# Page 627\n#\tVN1645\n\n\t\tCOUNT*\t$$/P3373\nP33\t\tTC\tAVFLAGA\n\t\tTC\tP33/P73A\nP73\t\tTC\tAVFLAGP\nP33/P73A\tTC\tP20FLGON\n\t\tCAF\tV06N13\t\t# TCDH\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tTTPIO\n\t\tSTODL\tTTPI\n\t\t\tTCDH\n\t\tSTCALL\tTIG\n\t\t\tSELECTMU\nP33/P73B\tCALL\n\t\t\tADVANCE\n\t\tCALL\n\t\t\tCDHMVR\n\t\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tVACT3\n\t\tPDVL\tCALL\n\t\t\tRACT2\n\t\t\tINTINT3P\n\t\tCALL\n\t\t\tACTIVE\n\t\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tVPASS2\n\t\tPDVL\tCALL\n\t\t\tRPASS2\n\t\t\tINTINT3P\n\t\tCALL\n\t\t\tPASSIVE\n\t\tDLOAD\tSET\n\t\t\tP30ZERO\n\t\t\tITSWICH\n\t\tSTCALL\tNOMTPI\n\t\t\tS33/34.1\n\t\tBZE\tEXIT\n\t\t\tP33/P73C\n\t\tTC\tALARM\n\t\tOCT\t611\n\t\tCAF\tV05N09\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\n# Page 628\n\t\tTC\tP33/P73A\n\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tP30ZERO\n\t\tSTORE\tNOMTPI\nP33/P73C\tBON\tSET\n\t\t\tFINALFLG\n\t\t\tP33/P73D\n\t\t\tUPDATFLG\nP33/P73D\tDLOAD\tDAD\n\t\t\tNOMTPI\n\t\t\tTTPI\n\t\tSTORE\tTTPI\n\t\tDSU\n\t\t\tTCDH\nP33/P73E\tDSU\tBPL\n\t\t\t60MIN\n\t\t\tP33/P73E\n\t\tDAD\n\t\t\t60MIN\n\t\tSTODL\tT1TOT2\n\t\t\tTTPI\n\t\tDSU\tPUSH\n\t\t\tTTPIO\nP33/P73F\tABS\tDSU\n\t\t\t60MIN\n\t\tBPL\tDAD\n\t\t\tP33/P73F\n\t\t\t60MIN\n\t\tSIGN\tSTADR\n\t\tSTORE\tT2TOT3\n\t\tEXIT\n\t\tCAF\tV06N75\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\n\t\t\tDELVEET2\n\t\t\tS32/33.1\n\t\tSTCALL\tDELVEET2\n\t\t\tVN1645\n\t\tGOTO\n\t\t\tP33/P73B\n\n# Page 629\n# ***** ADFLAG/P *****\n#\n# SUBROUTINES USED\n#\n#\tUPFLAG\n#\tDOWNFLAG\n\nAVFLAGA\t\tEXTEND\t\t\t# AVFLAG = LEM\n\t\tQXCH\tSUBEXIT\n\t\tTC\tUPFLAG\n\t\tADRES\tAVFLAG\n\t\tTC\tSUBEXIT\nAVFLAGP\t\tEXTEND\t\t\t# AVFLAG = CSM\n\t\tQXCH\tSUBEXIT\n\t\tTC\tDOWNFLAG\n\t\tADRES\tAVFLAG\n\t\tTC\tSUBEXIT\nP20FLGON\tEXTEND\n\t\tQXCH\tSUBEXIT\n\t\tTC\tUPFLAG\n\t\tADRES\tUPDATFLG\t# SET UPDATFLG\n\t\tTC\tUPFLAG\n\t\tADRES\tTRACKFLG\t# SET TRACKFLG\n\t\tTC\tSUBEXIT\n\n# Page 630\n# ***** DISDVLVC *****\n#\n# SUBROUTINES USED\n#\n#\tS32/33.X\n#\tVNPOOH\n\nDISDVLVC\tSTORE\tDELVLVC\n\t\tSTQ\tCALL\n\t\t\tNORMEX\n\t\t\tS32/33.X\n\t\tVLOAD\tMXV\n\t\t\tDELVLVC\n\t\t\t0D\n\t\tVSL1\tSXA,1\n\t\t\tVERBNOUN\n\t\tSTORE\tDELVLVC\n\t\tEXIT\n\t\tCA\tVERBNOUN\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tNORMEX\n\n# Page 631\n# ***** CONSTANTS *****\n\nV06N11\t\tVN\t0611\nV06N13\t\tVN\t0613\nV06N75\t\tVN\t0675\nSN359+\t\t2DEC\t-.000086601\n\nCS359+\t\t2DEC\t+.499999992\n\nP30ZERO\t\t2DEC\t0\n\n60MIN\t\t2DEC\t360000\n\nALARM/TB\tOCT\t00600\t\t# NO 1\n\t\tOCT\t00601\t\t#    2\n\t\tOCT\t00602\t\t#    3\n\t\tOCT\t00603\t\t#    4\n\t\tOCT\t00604\t\t#    5\n\t\tOCT\t00605\t\t#    6\n\t\tOCT\t00606\t\t#    7\n\n# Page 632\n# ***** CSI/A *****\n#\n# SUBROUTINES USED\n#\n#\tVECSHIFT\n#\tTIMETHET\n#\tPERIAPO\n#\tSHIFTR1\n#\tINTINT2C\n#\tCDHMVR\n#\tPERIAPO1\n#\tINTINT\n#\tACTIVE\n\n\t\tBANK\t34\n\t\tSETLOC\tCSI/CDH1\n\t\tBANK\n\t\tEBANK=\tSUBEXIT\n\t\tCOUNT*\t$$/CSI\nLOOPMX\t\t2DEC\t16\n\nINITST\t\t2DEC\t.03048 B-7\t# INITIAL DELDV = 10 FPS\n\nDVMAX1\t\t2DEC\t3.0480 B-7\t# MAXIMUM DV1 = 1000 FPS\n\nDVMAX2\t\t2DEC\t3.014472 B-7\t#\t\t 989 FPS\n\n1DPB2\t\t2DEC\t1.0 B-2\n\n1DPB28\t\t2DEC\t1\n\nPMINE\t\t2DEC\t157420 B-29\t# 85 NM -- MUST BE 8 WORDS BEFORE PMINM\n\nEPSILN1\t\t2DEC\t.0003048 B-7\t# .1 FPS\n\nNICKELDP\t2DEC\t.021336 B-7\t# 7 FPS (CHANGED FROM .05 FPS)\n\nFIFPSDP\t\t2DEC\t-.152400 B-7\t# 50 FPS\n\nPMINM\t\t2DEC\t10668 B-29\t# 35000 FT -- MUST BE 8 WORDS AFTER PMINE\n\nDELMAX1\t\t2DEC\t.6096000 B-7\t# 200 FPS\n\nONETHTH\t\t2DEC\t.0001 B-3\n\nTMIN\t\t2DEC\t60000\t\t# 10 MIN\n\nCSI/A\t\tCLEAR\tSET\t\t# INITIALIZE INDICATORS\n\t\t\tS32.1F1\t\t# DVT1 HAS EXCEEDED MAX INDICATOR\n\t\t\tS32.1F2\t\t# FIRST PASS FOR NEWTON ITERATION INDICATOR\n# Page 633\n\t\tCLEAR\tSET\n\t\t\tS32.1F3A\t# 00=1ST 2 PASSES 2ND CYCLE, 01=FIRST CYCLE\n\t\t\tS32.1F3B\t# 10=2ND CYCLE, 11=50 FPS STAGE 2ND CYCLE\n\t\tDLOAD\n\t\t\tP30ZERO\n\t\tSTORE\tLOOPCT\n\t\tSTORE\tCSIALRM\nCSI/B\t\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tRACT1\n\t\tABVAL\tPUSH\t\t# RA1\t\t\t      B29 PL02D\n\t\tNORM\tSR1\n\t\t\tX2\t\t#\t\t       B29-N2+ B1 PL04D\n\t\tPDVL\tABVAL\n\t\t\tRPASS3\n\t\tNORM\tBDDV\t\t# RA1/RP3\t\t       B1 PL02D\n\t\t\tX1\n\t\tXSU,2\tSR*\t\t#\t\t\t       B2\n\t\t\tX1\n\t\t\t1,2\n\t\tDAD\tDMP\t\t# (1+(RA1/RP3))RA1\tB29+B2=B31 PL00D\n\t\t\t1DPB2\n\t\tNORM\tPDDL\t\t#\t\t\t\t   PL02D\n\t\t\tX1\n\t\t\tRTMU\n\t\tSR1\tDDV\t\t#\t\t       B38-B31= B7 PL00D\n\t\tSL*\tSQRT\t\t#\t\t\t\tB7\n\t\t\t0 \t-7,1\n\t\tPDVL\tUNIT\t\t#\t\t\t\t   PL02D\n\t\t\tRACT1\n\t\tPDVL\tVXV\n\t\t\tUP1\n\t\tUNIT\t\t\t# UNIT(URP1 X UVP1 X URA1) = UH1\n\t\tDOT\tSL1\t\t# VA1 . UH1\t\t\tB7\n\t\t\tVACT1\n\t\tBDSU\tSTADR\t\t#\t\t\t\t   PL00D\n\t\tSTODL\tDELVCSI\n\t\t\tINITST\t\t# 10 FPS\n\t\tSTORE\tDELDV\nCSI/B1\t\tDLOAD\tDAD\t\t# IF LOOPCT = 16\n\t\t\tLOOPCT\n\t\t\t1DPB28\n\t\tSTORE\tLOOPCT\n\t\tDSU\tAXT,2\n\t\t\tLOOPMX\n\t\t\t6\n\t\tBPL\n\t\t\tSCNDSOL\nCSI/B2\t\tSETPD\n\t\t\t0D\n# Page 634\n\t\tDLOAD\tABS\n\t\t\tDELVCSI\n\t\tDSU\tBMN\n\t\t\tDVMAX1\n\t\t\tCSI/B23\n\t\tAXT,2\tBON\n\t\t\t7\n\t\t\tS32.1F1\n\t\t\tSCNDSOL\n\t\tBOFF\tBON\n\t\t\tS32.1F3A\n\t\t\tCSI/B22\t\t# FLAG 3 NEQ 3\n\t\t\tS32.1F3B\n\t\t\tSCNDSOL\nCSI/B22\t\tSET\tDLOAD\n\t\t\tS32.1F1\n\t\t\tDVMAX2\n\t\tSIGN\n\t\t\tDELVCSI\n\t\tSTORE\tDELVCSI\nCSI/B23\t\tVLOAD\tPUSH\n\t\t\tRACT1\n\t\tUNIT\tPDVL\n\t\t\tUP1\n\t\tVXV\tUNIT\t\t# UNIT (URP1 X UVP1 X URA1) = UH1\n\t\tVXSC\tVSL1\n\t\t\tDELVCSI\n\t\tSTORE\tDELVEET1\n\t\tVAD\tBOV\n\t\t\tVACT1\n\t\t\tCSI/B23D\nCSI/B23D\tSTCALL\tVACT4\n\t\t\tVECSHIFT\n\t\tSTOVL\tVVEC\n\t\tSET\n\t\t\tRVSW\n\t\tSTOVL\tRVEC\n\t\t\tSN359+\n\t\tSTCALL\tSNTH\t\t# ALSO CSTH\n\t\t\tTIMETHET\n\t\tSR1\tLXA,1\n\t\t\tRTX1\n\t\tSTCALL\tHAFPA1\n\t\t\tPERIAPO\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSTODL\tPOSTCSI\n\t\t\tCENTANG\n\t\tBZE\tGOTO\n\t\t\t+2\n# Page 635\n\t\t\tCIRCL\n\t\tDLOAD\n\t\t\tECC\n\t\tDSU\tBMN\n\t\t\tONETHTH\n\t\t\tCIRCL\n\t\tDLOAD\tCALL\n\t\t\tR1\n\t\t\tSHIFTR1\n\t\tSETPD\tNORM\n\t\t\t2D\n\t\t\tX1\n\t\tPDVL\tDOT\t\t#\t\t\t\t\tPL04D\n\t\t\tRACT1\n\t\t\tVACT4\n\t\tABS\tDDV\n\t\t\t02D\t\t# (/RDOTV/)/R1\t\t   B38-B29= B7\n\t\tSL*\tDSU\n\t\t\t0,1\n\t\t\tNICKELDP\n\t\tBMN\tDLOAD\n\t\t\tCIRCL\n\t\t\tP\n\t\tSL2\tDSU\n\t\t\t1DPB2\n\t\tSTODL\t14D\n\t\t\tRTSR1/MU\n\t\tSR1\tDDV\t\t# (1/ROOTMU)/R1\t\tB-16-B29 = B-45 PL02D\n\t\tPDDL\tDMP\n\t\t\tP\n\t\t\tR1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSL4\tSL1\n\t\tSQRT\tDMP\t\t# ((P/MU)**.5)/R1\tB14+B-14 = B-31 PL02D\n\t\tBOFF\tSL3\n\t\t\tCMOONFLG\n\t\t\tCSI/B3\nCSI/B3\t\tPDVL\tDOT\n\t\t\tRACT1\n\t\t\tVACT4\n\t\tSTORE\tRDOTV\n\t\tABS\n\t\tNORM\tDMP\t\t# ((P/MU)**.5)RDOTV/R1\t\t\tPL02D\n\t\t\tX2\n\t\tXSU,1\tSL*\t\t#\t\t       B-31+B36-B3 = B2\n\t\t\tX2\n\t\t\t3,1\n\t\tSTODL\t12D\n\t\t\tP30ZERO\n# Page 636\n\t\tSTORE\t16D\n\t\tVLOAD\tUNIT\n\t\t\t12D\n\t\tSTOVL\tSNTH\t\t# ALSO STORES CSTH AND 0\n\t\t\tRACT1\n\t\tPDVL\tSIGN\n\t\t\tVACT4\n\t\t\tRDOTV\n\t\tVCOMP\tCALL\n\t\t\tVECSHIFT\n\t\tSTOVL\tVVEC\n\t\tSET\n\t\t\tRVSW\n\t\tSTCALL\tRVEC\n\t\t\tTIMETHET\n\t\tPDDL\tBPL\n\t\t\tRDOTV\n\t\t\tNTP/2\n\t\tDLOAD\tDSU\n\t\t\tHAFPA1\n\t\tPUSH\tGOTO\n\t\t\tNTP/2\nCIRCL\t\tSETPD\tDLOAD\n\t\t\t00D\n\t\t\tP30ZERO\n\t\tPUSH\nNTP/2\t\tDLOAD\tDMP\n\t\t\tNN\n\t\t\tHAFPA1\n\t\tSL\tDSU\n\t\t\t14D\n\t\tDAD\n\t\t\tTCSI\n\t\tSTORE\tTCDH\n\t\tBDSU\tAXT,2\n\t\t\tTTPI\n\t\t\t5D\n\t\tBMN\tSETPD\n\t\t\tSCNDSOL\n\t\t\t0D\n\t\tVLOAD\tPDVL\n\t\t\tVACT4\n\t\t\tRACT1\n\t\tCALL\n\t\t\tINTINT2C\n\t\tSTOVL\tRACT2\n\t\t\tVATT\n\t\tSTOVL\tVACT2\n\t\t\tVPASS1\n\t\tSETPD\tPDVL\n# Page 637\n\t\t\t0D\n\t\t\tRPASS1\n\t\tCALL\n\t\t\tINTINT2C\n\t\tSTOVL\tRPASS2\n\t\t\tVATT\n\t\tSTCALL\tVPASS2\n\t\t\tCDHMVR\n\t\tVLOAD\tSETPD\n\t\t\tRACT2\n\t\t\t0D\n\t\tPDVL\tCALL\n\t\t\tVACT3\n\t\t\tPERIAPO1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSTOVL\tPOSTCDH\n\t\t\tVACT3\n\t\tSETPD\tPDVL\n\t\t\t0D\n\t\t\tRACT2\n\t\tPDDL\tPDDL\n\t\t\tTCDH\n\t\t\tTTPI\n\t\tPDDL\tPUSH\n\t\t\tTWOPI\n\t\tCALL\n\t\t\tINTINT\n\t\tCALL\n\t\t\tACTIVE\n\t\tDLOAD\n\t\t\tELEV\n\t\tSETPD\tSINE\n\t\t\t6D\n\t\tPDVL\tUNIT\n\t\t\tRACT3\n\t\tSTORE\t00D\t\t# URA3 AT 00D\n\t\tPDVL\tVXV\t\t# PL14D, PL08D\n\t\t\tUP1\n\t\tUNIT\n\t\tPDDL\tCOSINE\t\t# UNIT(URA3 X UVA3 X URA3) = UH3\tB1 PL14D\n\t\t\tELEV\n\t\tVXSC\tSTADR\t\t# (COSLOS)(UH3)\t\t\t\tB2 PL08D\n\t\tSTORE\t18D\t\t#\tPLUS\n\t\tDLOAD\tVXSC\t\t# (SINLOS)(URA3) = U\t\t\tB2 PL00D\n\t\tVAD\tVSL1\n\t\t\t18D\t\t#\t\t\t\t\tB1\n\t\tPUSH\tDOT\t\t#\t\t\t\t\t   PL06D\n\t\t\tRACT3\t\t# (U . RA3) = TEMP1\t      B1 +B29 = B30\n\t\tSL1\tPUSH\t\t#\t\t\t\t       B29 PL08D\n# Page 638\n\t\tDSQ\tTLOAD\t\t# TEMP1**2\t\t\t       B58\n\t\t\tMPAC\n\t\tPDVL\tDOT\t\t#\t\t\t\t\t   PL11D\n\t\t\tRACT3\n\t\t\tRACT3\n\t\tTLOAD\tDCOMP\t\t# RA3 . RA3\n\t\t\tMPAC\n\t\tPDVL\tDOT\t\t# RP3 . RP3\t\t\t       B58 PL14D\n\t\t\tRPASS3\n\t\t\tRPASS3\t\t#\t\t\t\t\t   PL11D\n\t\tTAD\tTAD\t\t# TEMP1**2 + RA3.RA3 + RP3.RP3 = TEMP2\t   PL08D\n\t\tBPL\tDLOAD\n\t\t\tK10RK2\n\t\t\tLOOPCT\n\t\tDSU\tAXT,2\n\t\t\t1DPB28\n\t\t\t1D\n\t\tBZE\n\t\t\tALMXITA\n\t\tDLOAD\tSR1\n\t\t\tDELDV\n\t\tSTORE\tDELDV\n\t\tBDSU\n\t\t\tDVPREV\n\t\tSTCALL\tDELVCSI\n\t\t\tCSI/B1\nK10RK2\t\tSQRT\tPUSH\t\t# TEMP3 = TEMP2**.5\t\t       B29 PL10D\n\t\tDCOMP\tDSU\n\t\t\t06D\t\t# -TEMP1-TEMP3 = K2 AT 10D\n\t\tSTODL\t10D\t\t#\t\t\t\t\t   PL08D\n\t\tDSU\tSTADR\t\t#\t\t\t\t\t   PL06D\n\t\tSTORE\t12D\t\t# -TEMP1+TEMP3 = K1 AT 12D\n\t\tABS\n\t\tSTODL\t14D\n\t\t\t10D\n\t\tABS\tDSU\n\t\t\t14D\n\t\tBMN\tDLOAD\n\t\t\tK2.\n\t\t\t12D\n\t\tSTORE\t10D\t\t# K = K1\nK2.\t\tDLOAD\n\t\t\t10D\n\t\tVXSC\tVSL1\n\t\tVAD\tUNIT\t\t# V = RA3 + KU UNIT\t\t\tB1\n\t\t\tRACT3\n\t\tPDVL\tUNIT\n\t\t\tRPASS3\t\t#\t\t\t\t\t   PL06D\n\t\tPDVL\tUNIT\n\t\t\tVPASS3\t\t#\t\t\t\t\t   PL12D\n# Page 639\n\t\tVXV\tPDVL\t\t# UVP3 X URP3\t\t\t\t   PL18D\n\t\t\t06D\n\t\t\t06D\n\t\tVXV\tDOT\n\t\t\t00D\n\t\tSTADR\t\t\t#\t\t\t\t\t   PL12D\n\t\tSTOVL\t12D\t\t# (URP3 X V).(UVP3 X URP3)=TEMP\t\t   PL06D\n\t\tDOT\tSL1\t\t#\t\t\t\t\t   PL00D\n\t\tARCCOS\tSIGN\n\t\t\t12D\t\t#\t\t\t\t\tB0\n\t\tSR1\tPUSH\t\t# GAMMA = SIGN(TEMP)ARCOS(UNITV.URP3)\t   PL02D\n\t\tBON\tDLOAD\n\t\t\tS32.1F2\n\t\t\tFRSTPAS\n\t\t\t00D\t\t# NOT THE FIRST PASS OF A CYCLE\n\t\tDSU\tPDDL\t\t# GAMMA-GAMPREV\t\t\t\tB1 PL04D\n\t\t\tGAMPREV\n\t\t\tDELVCSI\n\t\tDSU\tNORM\t\t#\t\t\t\t\tB7\n\t\t\tDVPREV\n\t\t\tX1\n\t\tBDDV\tPDDL\t\t# (GAM-GAMPREV)/(DV-DVPREV)\t     B-6+N1 PL06D\n\t\t\t02D\t\t#\t= SLOPE\n\t\t\tDELVCSI\n\t\tSTORE\tDVPREV\n\t\tBOFF\tBOFF\n\t\t\tS32.1F3A\n\t\t\tTHRDCHK\n\t\t\tS32.1F3B\n\t\t\tTHRDCHK\n\t\tDLOAD\tDMP\n\t\t\t02D\n\t\t\tGAMPREV\n\t\tBPL\tDLOAD\n\t\t\tFIFTYFPS\n\t\t\tINITST\n\t\tSIGN\n\t\t\tDELDV\n\t\tSTORE\tDELDV\n\t\tSET\tCLEAR\n\t\t\tS32.1F3A\n\t\t\tS32.1F3B\nFRSTPAS\t\tDLOAD\n\t\t\t00D\n\t\tSTODL\tGAMPREV\n\t\t\tDELVCSI\n\t\tSTORE\tDVPREV\n\t\tDSU\tCLEAR\n\t\t\tDELDV\n\t\t\tS32.1F2\n# Page 640\n\t\tSTCALL\tDELVCSI\n\t\t\tCSI/B1\nTHRDCHK\t\tBON\tBON\n\t\t\tS32.1F3A\n\t\t\tNEWTN\n\t\t\tS32.1F3B\n\t\t\tNEWTN\nFIFTYFPS\tDLOAD\tSIGN\n\t\t\tFIFPSDP\n\t\t\t04D\n\t\tSIGN\n\t\t\tGAMPREV\n\t\tSTORE\tDELDV\n\t\tDCOMP\tDAD\n\t\t\tDELVCSI\n\t\tSTODL\tDELVCSI\n\t\t\t00D\n\t\tSET\tSET\n\t\t\tS32.1F3B\n\t\t\tS32.1F3A\n\t\tSTCALL\tGAMPREV\n\t\t\tCSI/B2\nNEWTN\t\tDLOAD\tNORM\n\t\t\t04D\n\t\t\tX2\n\t\tBDDV\tXSU,1\n\t\t\t00D\n\t\t\tX2\n\t\tSR*\n\t\t\t0,1\n\t\tSTODL\tDELDV\n\t\t\t00D\n\t\tSTORE\tGAMPREV\n\t\tDLOAD\tABS\n\t\t\tDELDV\t\t#\t\t\t\t\t   PL08D\n\t\tPUSH\tDSU\n\t\t\tEPSILN1\n\t\tBMN\tDLOAD\n\t\t\tCSI/SOL\n\t\tDSU\tBMN\n\t\t\tDELMAX1\n\t\t\tCSISTEP\n\t\tDLOAD\tSIGN\n\t\t\tDELMAX1\n\t\t\tDELDV\n\t\tSTORE\tDELDV\nCSISTEP\t\tDLOAD\tDSU\n\t\t\tDELVCSI\n\t\t\tDELDV\n\t\tSTCALL\tDELVCSI\n# Page 641\n\t\t\tCSI/B1\nCSI/SOL\t\tDLOAD\tAXT,2\n\t\t\tPOSTCSI\n\t\t\t2\n\t\tLXA,1\n\t\t\tRTX1\n\t\tDSU*\tBMN\n\t\t\tPMINE \t-2,1\n\t\t\tSCNDSOL\n\t\tAXT,2\tDLOAD\n\t\t\t3\n\t\t\tPOSTCDH\n\t\tDSU*\tBMN\n\t\t\tPMINE \t-2,1\n\t\t\tSCNDSOL\n\t\tDLOAD\tDSU\n\t\t\tTCDH\n\t\t\tTCSI\n\t\tSTORE\tT1TOT2\n\t\tAXT,2\tDSU\n\t\t\t4\n\t\t\tTMIN\n\t\tBMN\tAXT,2\n\t\t\tSCNDSOL\n\t\t\t5\n\t\tDLOAD\tDSU\n\t\t\tTTPI\n\t\t\tTCDH\n\t\tSTORE\tT2TOT3\n\t\tDSU\tBPL\n\t\t\tTMIN\n\t\t\tP32/P72C\nSCNDSOL\t\tBON\tBOFF\n\t\t\tS32.1F3A\n\t\t\tALMXIT\n\t\t\tS32.1F3B\n\t\t\tALMXIT\n\t\tSXA,2\tDLOAD\n\t\t\tCSIALRM\n\t\t\tP30ZERO\n\t\tCLEAR\tSET\n\t\t\tS32.1F1\n\t\t\tS32.1F2\n\t\tCLEAR\tCLEAR\n\t\t\tS32.1F3A\n\t\t\tS32.1F3B\n\t\tSTCALL\tLOOPCT\n\t\t\tCSI/B\n\n# Page 642\n# ***** ADVANCE *****\n#\n# SUBROUTINES USED\n#\tPRECSET\n#\tROTATE\n\nADVANCE\t\tSTQ\tDLOAD\n\t\t\tSUBEXIT\n\t\t\tTIG\n\t\tSTCALL\tTDEC1\n\t\t\tPRECSET\n\t\tSET\tVLOAD\n\t\t\tXDELVFLG\n\t\t\tVPASS3\n\t\tSTORE\tVPASS2\n\t\tSTOVL\tVPASS1\n\t\t\tRPASS3\n\t\tSTORE\tRPASS2\n\t\tSTORE\tRPASS1\n\t\tUNIT\tVXV\n\t\t\tVPASS1\n\t\tUNIT\n\t\tSTOVL\tUP1\n\t\t\tRACT3\n\t\tSTCALL\tRTIG\n\t\t\tROTATE\n\t\tSTORE\tRACT2\n\t\tSTOVL\tRACT1\n\t\t\tVACT3\n\t\tSTCALL\tVTIG\n\t\t\tROTATE\n\t\tSTORE\tVACT2\n\t\tSTCALL\tVACT1\n\t\t\tSUBEXIT\n\n# Page 643\n# ***** ROTATE *****\n\nROTATE\t\tPUSH\tPUSH\n\t\tDOT\tVXSC\n\t\t\tUP1\n\t\t\tUP1\n\t\tVSL2\tBVSU\n\t\tUNIT\tPDVL\n\t\tABVAL\tVXSC\n\t\tVSL1\tRVQ\n\n# Page 644\n# ***** INTINTNA *****\n\nINTINT2C\tPDDL\tPDDL\n\t\t\tTCSI\n\t\t\tTCDH\n\t\tPDDL\tPUSH\n\t\t\tTWOPI\n\t\tGOTO\n\t\t\tINTINT\nINTINT3P\tPDDL\tPDDL\n\t\t\tTCDH\n\t\t\tTTPI\n\t\tPDDL\tPUSH\n\t\t\tP30ZERO\n\t\tGOTO\n\t\t\tINTINT\n\n# Page 645\n# ***** S32/33.1 *****\n#\n# SUBROUTINES USED\n#\tS32/33.X\n\nS32/33.1\tSTQ\tAXT,1\n\t\t\tSUBEXIT\n\t\tVN\t0681\n\t\tCALL\n\t\t\tDISDVLVC\n\t\tCALL\n\t\t\tS32/33.X\n\t\tVLOAD\tVXM\n\t\t\tDELVLVC\n\t\t\t0D\n\t\tVSL1\n\t\tSTORE\tDELVSIN\n\t\tPUSH\tABVAL\n\t\tSTOVL\tDELVSAB\n\t\tGOTO\n\t\t\tSUBEXIT\n\n# Page 646\n# ***** S32/33.X *****\n\nS32/33.X\tSETPD\tVLOAD\n\t\t\t6D\n\t\t\tUP1\n\t\tVCOMP\tPDVL\n\t\t\tRACT1\n\t\tUNIT\tVCOMP\n\t\tPUSH\tVXV\n\t\t\tUP1\n\t\tVSL1\n\t\tSTORE\t0D\n\t\tRVQ\n\n# Page 647\n# ***** CDHMVR *****\n#\n# SUBROUTINES USED\n#\tVECSHIFT\n#\tTIMETHET\n#\tSHIFTR1\n\nCDHMVR\t\tSTQ\tVLOAD\n\t\t\tSUBEXIT\n\t\t\tRACT2\n\t\tPUSH\tUNIT\n\t\tSTOVL\tUNVEC\t\t# UR SUB A\n\t\t\tRPASS2\n\t\tUNIT\tDOT\n\t\t\tUNVEC\n\t\tPUSH\tSL1\n\t\tSTODL\tCSTH\n\t\tDSQ\tPDDL\n\t\t\tDP1/4TH\n\t\tSR2\tDSU\n\t\tSQRT\tSL1\n\t\tPDVL\tVCOMP\n\t\tVXV\n\t\t\tRPASS2\n\t\tDOT\tPDDL\n\t\t\tUP1\n\t\tSIGN\tSTADR\n\t\tSTOVL\tSNTH\n\t\t\tRPASS2\n\t\tPDVL\tCALL\n\t\t\tVPASS2\n\t\t\tVECSHIFT\n\t\tSTOVL\tVVEC\n\t\tCLEAR\n\t\t\tRVSW\n\t\tSTCALL\tRVEC\n\t\t\tTIMETHET\n\t\tLXA,2\tVSL*\n\t\t\tRTX2\n\t\t\t0,2\n\t\tSTORE\t18D\n\t\tDOT\tSL1R\n\t\t\tUNVEC\n\t\tPDVL\tABVAL\t\t# 0D = V SUB PV\n\t\tSL*\tPDVL\n\t\t\t0,2\n\t\t\tRACT2\n\t\tABVAL\tPDDL\t\t# 2D = LENGTH OF R SUB A\n\t\tDSU\n# Page 648\n\t\t\t02D\n\t\tSTODL\tDIFFALT\t\t# DELTA H IN METERS\t\tB+29\n\t\t\tR1A\n\t\tNORM\tPDDL\t\t# 2 - R V**/MU\t\t\t\t04D\n\t\t\tX1\n\t\t\tR1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSR1R\tDDV\n\t\tSL*\tPUSH\n\t\t\t0 \t-5,1\n\t\tDSU\tPDDL\t\t# A SUB A\t\t\tB+29 \t04D\n\t\t\tDIFFALT\n\t\tSR2\tDDV\t\t# A SUB P\t\t\tB+31\n\t\t\t04D\t\t#\t\t\t\tB+2\n\t\tPUSH\tSQRT\t\t# A SUB P/A SUB A\t\t\t06D\n\t\tDMPR\tDMP\n\t\t\t06D\n\t\t\t00D\n\t\tSL3R\tPDDL\t\t# V SUB AV METERS/CS\t\tB+7 \t08D\n\t\t\t02D\t\t# R SUB A MAGNITUDE\t\tB+29\n\t\tNORM\tPDDL\n\t\t\tX1\n\t\t\tRTMU\n\t\tSR1\tDDV\t\t# 2MU \t\t\t\tB+38\n\t\tSL*\tPDDL\t\t# 2 MU/R SUBAA\t\t\tB+14 \t10D\n\t\t\t0 \t-5,1\n\t\t\t04D\t\t# ASUBA\t\t\t\tB+29\n\t\tNORM\tPDDL\n\t\t\tX2\n\t\t\tRTMU\n\t\tSR1\tDDV\n\t\tSL*\tBDSU\n\t\t\t0 \t-6,2\t# 2U/R - U/A\t\tB+14 (METERS/CS)SQ\n\t\tPDDL\tDSQ\t\t#\t\t\t\t\t10D\n\t\t\t08D\n\t\tBDSU\tSQRT\n\t\tPDVL\tVXV\t\t# SQRT(MU(2/R SUB A-1/A SUB A)-VSUBA2)\t10D\n\t\t\tUP1\n\t\t\tUNVEC\n\t\tUNIT\tVXSC\n\t\t\t10D\n\t\tPDVL\tVXSC\n\t\t\tUNVEC\n\t\t\t08D\n\t\tVAD\tVSL1\n\t\tSTADR\n\t\tSTORE\tVACT3\n\t\tVSU\n\t\t\tVACT2\n# Page 649\n\t\tSTCALL\tDELVEET2\t# DELTA VCDH -- REFERENCE COORDINATES\n\t\t\tSUBEXIT\n\n# Page 650\n# ***** COMPTGO *****\n#\n# SUBROUTINES USED\n#\tCLOKTASK\n#\t2PHSCHNG\n\n\t\tBANK\t35\n\t\tSETLOC\tCSI/CDH\n\t\tBANK\n\n\t\tEBANK=\tRTRN\n\n\t\tCOUNT*\t$$/P3575\n\nCOMPTGO\t\tEXTEND\n\t\tQXCH\tRTRN\n\t\tCAF\tZERO\n\t\tTS\tDISPDEX\n\t\tCAF\tBIT2\n\t\tINHINT\n\t\tTC\tWAITLIST\n\t\tEBANK=\tWHICH\n\t\t2CADR\tCLOKTASK\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40036\n\t\tOCT\t05024\n\t\tOCT\t13000\n\t\tTC\tRTRN\n\n"
  },
  {
    "path": "Luminary099/P34-35_P74-75.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP34-35_P74-75.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t658-702\n# Mod history:\t2009-05-19 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-05 RSB\tCorrected a typo.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\t\t2011-01-06 JL\tAdded missing comment characters.\n#\t\t2011-05-07 JL\tRemoved workaround.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 658\n# TRANSFER PHASE INITITIATION (TPI) PROGRAMS (P34 AND P74)\n\n# MOD NO -1\t\t\tLOG SECTION -- P32-P35, P72-P75\n# MOD BY WHITE, P.\t\tDATE: 1 JUNE 67\n#\n# PURPOSE\n#\n#\t(1)\tTO CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL CONDITIONS\n#\t\tREQUIRED BY THE ACTIVE VEHICLE FOR EXECUTION OF THE TRANSFER\n#\t\tPHASE INITITATION (TPI) MANEUVER, GIVEN --\n\n#\t\t(A)\tTIME OF IGNITION TIG (TPI) OR THE ELEVATION ANGLE (E) OF\n#\t\t\tTHE ACTIVE/PASSIVE VEHICLE LOS AT TIG (TPI).\n\n#\t\t(B)\tCENTRAL ANGLE OF TRANSFER (CENTANG) FROM TIG (TPI) TO\n#\t\t\tINTERCEPT TIME (TIG (TPF)).\n\n#\t(2)\tTO CALCULATE TIG (TPI) GIVEN E OR E GIVEN TIG (TPI).\n\n#\t(3)\tTO CALCULATE THESE PARAMETERS BASED UPON MANEUVER DATA\n#\t\tAPPROVED AND KEYED INTO THE DSKY BY THE ASTRONAUT.\n\n#\t(4)\tTO DISPLAY TO THE ASTRONAUT AND THE GROUND CERTAIN DEPENDENT\n#\t\tVARIABLES ASSOCIATED WITH THE MANEUVER FOR APPROVAL BY THE\n#\t\tASTRONAUT/GROUND.\n\n#\t(5)\tTO STORE THE TPI TARGET PARAMETERS FOR USE BY THE DESIRED\n#\t\tTHRUSTING PROGRAM.\n#\n# ASSUMPTIONS\n\n#\t(1)\tLM ONLY -- THIS PROGRAM IS BASED UPON PREVIOUS COMPLETION OF\n#\t\tTHE CONSTANT DELTA ALTITUDE (CDH) PROGRAM (P33/P73).\n#\t\tTHEREFORE --\n\n#\t\t(A)\tAT A SELECTED TPI TIME (NOW IN STORAGE) THE LINE OF SIGHT\n#\t\t\tBETWEEN THE ACTIVE AND PASSIVE VEHICLES WAS SELECTED TO BE\n#\t\t\tA PRESCRIBED ANGLE (E) (NOW IN STORAGE) FROM THE\n#\t\t\tHORIZONTAL PLANE DEFINED BY THE ACTIVE VEHICLE POSITION.\n\n#\t\t(B)\tTHE TIME BETWEEN CDH IGNITION AND TPI IGNITION WAS\n#\t\t\tCOMPUTED TO BE GREATER THAN 10 MINUTES.\n\n#\t\t(C)\tTHE VARIATION OF THE ALTITUDE DIFFERENCE BETWEEN THE\n#\t\t\tORBITS WAS MINIMIZED.\n\n#\t\t(D)\tTHE PERICENTER ALTITUDES OF ORBITS FOLLOWING CSI AND\n#\t\t\tCDH WERE COMPUTED TO BE GREATER THAN 35,000 FT FOR LUNAR\n# Page 659\n#\t\t\tORBIT OR 85 NM FOR EARTH ORBIT.\n\n#\t\t(E)\tTHE CSI AND CDH MANEUVERS WERE ASSUMED TO BE PARALLEL TO\n#\t\t\tTHE PLANE OF THE PASSIVE VEHICLE ORBIT.  HOWEVER, CREW\n#\t\t\tMODIFICATION OF DELTA V (LV) COMPONENTS MAY HAVE RESULTED\n#\t\t\tIN AN OUT-OF-PLANE MANEUVER.\n\n#\t(2)\tSTATE VECTOR UPDATED BY P27 ARE DISALLOWED DURING AUTOMATIC\n#\t\tSTATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION (4)).\n\n#\t(3)\tTHIS PROGRAM MUST BE DONE OVER A TRACKING STATION FOR REAL\n#\t\tTIME GROUND PARTICIPATION IN DATA INPUT AND OUTPUT.  COMPUTED\n#\t\tVARIABLES MAY BE STORED FOR LATER VERIFICATION BY THE GROUND.\n#\t\tTHESE STORAGE CAPABILITIES ARE LIMITED ONLY TO THE PARAMETERS\n#\t\tFOR ONE THRUSTING MANEUVER AT A TIME EXCEPT FOR CONCENTRIC\n#\t\tFLIGHT PLAN MANEUVER SEQUENCES.\n\n#\t(4)\tTHE RENDEZVOUS RADAR MAY OR MAY NOT BE USED TO UPDATE THE LM\n#\t\tOR CSM STATE VECTORS FOR THIS PROGRAM.  IF RADAR USE IS\n#\t\tDESIRED THE RADAR WAS TURNED ON AND LOCKED ON THE CSM BY\n#\t\tPREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS WILL BE MADE\n#\t\tAUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN ENABLED BY THE\n#\t\tTRACK AND UPDATE FLAGS (SEE P20).  THE RENDEZVOUS TRACKING\n#\t\tMARK COUNTER IS ZEROED BY THE SELECTION OF P20 AND AFTER EACH\n#\t\tTHRUSTING MANEUVER.\n\n#\t(5)\tTHE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.\n\n#\t(6)\tTHE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS --\n#\n#\t\t\tACTIVE VEHICLE FLAG -- DESIGNATES THE VEHICLE WHICH IS\n#\t\t\tDOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH\n#\t\t\tCALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF\n#\t\t\tEACH RENDEZVOUS PRE-THRUSTING PROGRAM.\n#\n#\t\t\tFINAL FLAG -- SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS\n#\t\t\tSELECTED THE FINAL MANEUVER COMPUTATION CYCLE.\n#\n#\t\t\tEXTERNAL DELTA V FLAG -- DESIGNATES THE TYPE OF STEERING\n#\t\t\tREQUIRED FOR EXECUTION OF THIS MANEUVER BY THE THRUSTING\n#\t\t\tPROGRAM SELECTED AFTER COMPLETION OF THIS PROGRAM.\n#\n#\t(7)\tONCE THE PARAMETERS REQUIRED FOR COMPUTATION OF THE MANEUVER\n#\t\tHAVE BEEN COMPLETELY SPECIFIED, THE VALUE OF THE ACTIVE\n#\t\tVEHICLE CENTRAL ANGLE OF TRANSFER IS COMPUTED AND STURED.\n#\t\tTHIS NUMBER WILL BE AVAILABLE FOR DISPLAY TO THE ASTRONAUT\n#\t\tTHROUGH THE USE OF V06N52.\n#\n#\t\tTHE ASTRONAUT WILL CALL THIS DISPLAY TO VERIFY THAT THE\n#\t\tCENTRAL ANGLE OF TRANSFER OF THE ACTIVE VEHICLE IS NOT WITHIN\n# Page 660\n#\t\t170 TO 190 DEGREES.  IF THE ANGLE IS WITHIN THIS ZONE THE\n#\t\tASTRONAUT SHOULD REASSES THE INPUT TARGETING PARAMETERS BASED\n#\t\tUPON DELTA V AND EXPECTED MANEUVER TIME.\n#\n#\t(8)\tTHIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY --\n#\n#\t\t\tP34 IF THIS VEHICLE IS ACTIVE VEHICLE.\n#\n#\t\t\tP74 IF THIS VEHICLE IS PASSIVE VEHICLE.\n#\n# INPUT\n#\n#\t(1)\tTTPI\tTIME OF THE TPI MANEUVER.\n#\t(2)\tELEV\tDESIRED LOS ANGLE AT TPI\n#\t(3)\tCENTANG\tORBITAL CENTRAL ANGLE OF THE PASSIVE VEHICLE DURING\n#\t\t\tTRANSFER FROM TPI TO TIME OF INTERCEPT\n#\n# OUTPUT\n#\n#\t(1)\tTRKMKCNT\tNUMBER OF MARKS\n#\t(2)\tTTOGO\t\tTIME TO GO\n#\t(3)\t+MGA\t\tMIDDLE GIMBAL ANGLE\n#\t(4)\tTTPI\t\tCOMPUTED TIME OF TPI MANEUVER\n#\t\t OR\n#\t\tELEV\t\tCOMPUTED LOS ANGLE AT TPI\n#\t(5)\tPOSTTPI\t\tPERIGEE ALTITUDE AFTER THE TPI MANEUVER\n#\t(6)\tDELVTPI\t\tMAGNITUDE OF DELTA V AT TPI\n#\t(7)\tDELVTPF\t\tMAGNITUDE OF DELTA V AT INTERCEPT\n#\t(8)\tDVLOS\t\tDELTA VELOCITY AT TPI -- LINE OF SIGHT\n#\t(9)\tDELVLVC\t\tDELTA VELOCITY AT TPI -- LOCAL VERTICAL COORDINATES\n#\n# DOWNLINK\n#\n#\t(1)\tTTPI\t\tTIME OF TPI MANEUVER\n#\t(2)\tTIG\t\tTIME OF TPI MANEUVER\n#\t(3)\tELEV\t\tDESIRED LOS ANGLE AT TPI\n#\t(4)\tCENTANG\t\tORBITAL CENTRAL ANGLE OF THE PASSIVE VEHICLE DURING\n#\t\t\t\tTRANSFER FROM TPI TO TIME OF INTERCEPT\n#\t(5)\tDELVEET3\tDELTA VELOCITY AT TPI -- REFERENCE COORDINATES\n#\t(6)\tTPASS4\t\tTIME OF INTERCEPT\n#\n# COMMUNICATION TO THRUSTING PROGRAMS\n#\n#\t(1)\tTIG\t\tTIME OF THE TPI MANEUVER\n#\t(2)\tRTARG\t\tOFFSET TARGET POSITION\n#\t(3)\tTPASS4\t\tTIME OF INTERCEPT\n#\t(4)\tXDELVFLG\tRESET TO INDICATE LAMBERT (AIMPOINT) VG COMPUTATION\n#\n# SUBROUTINES USED\n#\n#\tAVFLAGA\n# Page 661\n#\tAVFLAGP\n#\tVNPOOH\n#\tDISPLAYE\n#\tSELECTMU\n#\tPRECSET\n#\tS33/34.1\n#\tALARM\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n#\tTIMETHET\n#\tS34/35.2\n#\tPERIAPO1\n#\tSHIFTR1\n#\tS34/35.5\n#\tVN1645\n\n\t\tSETLOC\tCSI/CDH\n\t\tBANK\n\t\tEBANK=\tSUBEXIT\n\t\tCOUNT*\t$$/P3474\nP34\t\tTC\tAVFLAGA\n\t\tTC\tP34/P74A\nP74\t\tTC\tAVFLAGP\nP34/P74A\tTC\tP20FLGON\t# SET UPDATFLG, TRACKFLG\n\t\tCAF\tV06N37\t\t# TTPI\n\t\tTC\tVNPOOH\n\t\tEXTEND\n\t\tDCA\t130DEG\n\t\tDXCH\tCENTANG\n\t\tCAF\tP30ZERO\n\t\tTS\tNN\n\t\tTC\tDISPLAYE\t# ELEV AND CENTANG\n\t\tTC\tINTPRET\n\t\tCLEAR\tDLOAD\n\t\t\tETPIFLAG\n\t\t\tTTPI\n\t\tSTODL\tTIG\n\t\t\tELEV\n\t\tBZE\tSET\n\t\t\tP34/P74B\n\t\t\tETPIFLAG\nP34/P74B\tCALL\n\t\t\tSELECTMU\nDELELO\t\tEQUALS\t26D\nP34/P74C\tDLOAD\tSET\n\t\t\tZEROVECS\n\t\t\tITSWICH\n\t\tBON\tCLEAR\n\t\t\tETPIFLAG\n# Page 662\n\t\t\tSWCHSET\n\t\t\tITSWICH\nSWCHSET\t\tSTORE\tNOMTPI\nINTLOOP\t\tDLOAD\tDAD\n\t\t\tTTPI\n\t\t\tNOMTPI\n\t\tSTCALL\tTDEC1\n\t\t\tPRECSET\n\t\tCALL\n\t\t\tS33/34.1\n\t\tBZE\tEXIT\n\t\t\tSWCHCLR\n\t\tTC\tALARM\n\t\tOCT\t611\n\t\tCAF\tV05N09\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\tP34/P74A\t# PROCEED\n\t\tTC\t-7\t\t# V32\n\nSWCHCLR\t\tBONCLR\tBON\n\t\t\tITSWICH\n\t\t\tINTLOOP\n\t\t\tETPIFLAG\n\t\t\tP34/P74D\t# DISPLAY TTPI\n\t\tEXIT\n\t\tTC\tDISPLAYE\t# DISPLAY ELEV AND CENTANG\n\t\tTC\tP34/P74E\nP34/P74D\tEXIT\n\t\tCAF\tV06N37\t\t# TTPI\n\t\tTC\tVNPOOH\nP34/P74E\tTC\tINTPRET\n\t\tSETPD\tDLOAD\n\t\t\t0D\n\t\t\tRTX1\n\t\tSTODL\tX1\n\t\t\tCENTANG\n\t\tPUSH\tCOS\n\t\tSTODL\tCSTH\n\t\tSIN\n\t\tSTOVL\tSNTH\n\t\t\tRPASS3\n\t\tVSR*\n\t\t\t0,2\n\t\tSTOVL\tRVEC\n\t\t\tVPASS3\n\t\tVSR*\tSET\n\t\t\t0,2\n\t\t\tRVSW\n# Page 663\n\t\tSTCALL\tVVEC\n\t\t\tTIMETHET\n\t\tDLOAD\n\t\t\tTTPI\n\t\tSTORE\tINTIME\t\t# FOR INITVEL\n\t\tDAD\n\t\t\tT\t\t# RENDEZVOUS TIME\n\t\tSTCALL\tTPASS4\t\t# FOR INITVEL\n\t\t\tS34/35.2\n\t\tVLOAD\tABVAL\n\t\t\tDELVEET3\n\t\tSTOVL\tDELVTPI\n\t\t\tVPASS4\n\t\tVSU\tABVAL\n\t\t\tVTPRIME\n\t\tSTOVL\tDELVTPF\n\t\t\tRACT3\n\t\tPDVL\tCALL\n\t\t\tVIPRIME\n\t\t\tPERIAPO1\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSTODL\tPOSTTPI\n\t\t\tTTPI\n\t\tSTORE\tTIG\n\t\tEXIT\n\t\tCAF\tV06N58\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tS34/35.5\n\t\tCALL\n\t\t\tVN1645\n\t\tGOTO\n\t\t\tP34/P74C\n# Page 664\n# RENDEZVOUS MID-COURSE MANEUVER PROGRAMS (P35 AND P75)\n\n# MOD NO -1\t\t\tLOG SECTION -- P32-P35, P72-P75\n# MOD BY WHITE, P.\t\tDATE:  1 JUNE 67\n#\n# PURPOSE\n#\n#\t(1) \tTO CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL CONDITIONS\n#\t\tREQUIRED BY THE ACTIVE VEHICLE FOR EXECUTION OF THE NEXT\n#\t\tMID-COURSE CORRECTION OF THE TRANSFER PHASE OF AN ACTIVE\n#\t\tVEHICLE RENDEZVOUS.\n#\n#\t(2)\tTO DISPLAY TO THE ASTRONAUT AND THE GROUND CERTAIN DEPENDENT\n#\t\tVARIABLES ASSOCIATED WITH THE MANEUVER FOR APPROVAL BY THE\n#\t\tASTRONAUT/GROUND.\n#\n#\t(3)\tTO STORE THE TPM TARGET PARAMETERS FOR USE BY THE DESIRED\n#\t\tTHRUSTING PROGRAM.\n#\n# ASSUMPTIONS\n#\n#\t(1)\tTHE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.\n#\n#\t(2)\tSTATE VECTOR UPDATES BY P27 ARE DISALLOWED DURING AUTOMATIC\n#\t\tSTATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION (3)).\n#\n#\t(3)\tTHE RENDEZVOUS RADAR IS ON AND IS LOCKED ON THE CSM.  THIS WAS\n#\t\tDONE DURING PREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS\n#\t\tWILL BE MADE AUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN\n#\t\tENABLED BY THE TRACK AND UPDATE FLAGS (SEE P20).  THE\n#\t\tRENDEZVOUS TRACKING MARK COUNTER IS ZEROED BY THE SELECTION OF\n#\t\tP20 AND AFTER EACH THRUSTING MANEUVER.\n#\n#\t(4)\tTHE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS --\n#\n#\t\t\tTHE ACTIVE VEHICLE FLAG -- DESIGNATES THE VEHICLE WHICH IS\n#\t\t\tDOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH\n#\t\t\tCALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF\n#\t\t\tEACH RENDEZVOUS PRE-THRUSTING PROGRAM.\n#\n#\t\t\tFINAL FLAG -- SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS\n#\t\t\tSELECTED THE FINAL MANEUVER COMPUTATION CYCLE.\n#\n#\t\t\tEXTERNAL DELTA V FLAG -- DESIGNATES THE TYPE OF STEERING\n#\t\t\tREQUIRED FOR EXECUTION OF THIS MANEUVER BY THE THRUSTING\n#\t\t\tPROGRAM SELECTED AFTER COMPLETION OF THIS PROGRAM.\n#\n#\t(5)\tTHE TIME OF INTERCEPT (T(INT)) WAS DEFINED BY PREVIOUS\n#\t\tCOMPLETION OF THE TRANSFER PHASE INITIATION (TPI) PROGRAM\n#\t\t(P34/P74) AND IS PRESENTLY AVAILABLE IN STORAGE.\n#\n# Page 665\n#\t(6)\tONCE THE PARAMETERS REQUIRED FOR COMPUTATION OF THE MANEUVER\n#\t\tHAVE BEEN COMPLETELY SPECIFIED, THE VALUE OF THE ACTIVE\n#\t\tVEHICLE CENTRAL ANGLE OF TRANSFER IS COMPUTED AND STORED.\n#\t\tTHIS NUMBER WILL BE AVAILABLE FOR DISPLAY TO THE ASTRONAUT\n#\t\tTHROUGH THE USE OF V06N52\n#\n#\t\tTHE ASTRONAUT WILL CALL THIS DISPLAY TO VERIFY THAT THE\n#\t\tCENTRAL ANGLE OF TRANSFER OF THE ACTIVE VEHICLE IS NOT WITHIN\n#\t\t170 TO 190 DEGREES.  IF THE ANGLE IS WITHIN THIS ZONE THE\n#\t\tASTRONAUT SHOULD REASSESS THE INPUT TARGETING PARAMETERS BASED\n#\t\tUPON DELTA V AND EXPECTED MANEUVER TIME.\n#\n#\t(7)\tTHIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY --\n#\n#\t\t\tP35 IF THIS VEHICLE IS ACTIVE VEHICLE.\n#\n#\t\t\tP75 IF THIS VEHICLE IS PASSIVE VEHICLE.\n#\n# INPUT\n#\n#\t(1)\tTPASS4\t\tTIME OF INTERCEPT -- SAVED FROM P34/P74\n#\n# OUTPUT\n#\n#\t(1)\tTRKMKCNT\tNUMBER OF MARKS\n#\t(2)\tTTOGO\t\tTIME TO GO\n#\t(3)\t+MGA\t\tMIDOLF GIMBAL ANGLE\n#\t(4)\tDVLOS\t\tDELTA VELOCITY AT MID -- LINE OF SIGHT\n#\t(5)\tDELVLVC\t\tDELTA VELOCITY AT MID -- LOCAL VERTICAL COORDINATES\n#\n# DOWNLINK\n#\n#\t(1)\tTIG\t\tTIME OF THE TPM MANEUVER\n#\t(2)\tDELVEET3\tDELTA VELOCITY AT TPM -- REFERENCE COORDINATES\n#\t(3)\tTPASS4\t\tTIME OF INTERCEPT\n#\n# COMMUNICATION TO THRUSTING PROGRAMS\n#\n#\t(1)\tTIG\t\tTIME OF THE TPM MANEUVER\n#\t(2)\tRTARG\t\tOFFSET TARGET POSITION\n#\t(3)\tTPASS4\t\tTIME OF INTERCEPT\n#\t(4)\tXDELVFLG\tRESET TO INDICATE LAMBERT (AIMPOINT) VG COMPUTATION.\n#\n# SUBROUTINES USED\n#\n#\tAVFLAGA\n#\tAVFLAGP\n#\tLOADTIME\n#\tSELECTMU\n#\tPRECSET\n#\tS34/35.1\n#\tS34/35.2\n# Page 666\n#\tS34/35.5\n#\tVN1645\n\n\t\tCOUNT*\t$$/P3575\n\t\tEBANK=\tKT\n\nP35\t\tTC\tAVFLAGA\n\t\tEXTEND\n\t\tDCA\tATIGINC\n\t\tTC\tP35/P75A\nP75\t\tTC\tAVFLAGP\n\t\tEXTEND\n\t\tDCA\tPTIGINC\nP35/P75A\tDXCH\tKT\n\t\tTC\tP20FLGON\t# SET UPDATFLG, TRACKFLG\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tSELECTMU\nP35/P75B\tRTB\n\t\t\tLOADTIME\n\t\tSTORE\tTSTRT\n\t\tDAD\n\t\t\tKT\n\t\tSTORE\tTIG\n\t\tSTORE\tINTIME\t\t# FOR INITVEL\n\t\tSTCALL\tTDEC1\n\t\t\tPRECSET\t\t# ADVANCE BOTH VEHICLES\n\t\tCALL\n\t\t\tS34/35.1\t# GET NORM AND LOS FOR TRANSFORM\n\t\tCALL\n\t\t\tS34/35.2\t# GET DELTA V(LV)\n\t\tCALL\n\t\t\tS34/35.5\n\t\tCALL\n\t\t\tVN1645\n\t\tGOTO\n\t\t\tP35/P75B\n# Page 667\n# ***** S33/34.1 *****\n\nS33/34.1\tSTQ\tSSP\n\t\t\tNORMEX\n\t\t\tTITER\n\t\tOCT\t40000\n\t\tDLOAD\tSETPD\n\t\t\tMAX250\n\t\t\t0D\n\t\tSTOVL\tSECMAX\n\t\t\tRACT3\n\t\tSTOVL\tRAPREC\n\t\t\tVACT3\n\t\tSTOVL\tVAPREC\n\t\t\tRPASS3\n\t\tSTOVL\tRPPREC\n\t\t\tVPASS3\n\t\tSTORE\tVPPREC\nELCALC\t\tCALL\n\t\t\tS34/35.1\t# NORMAL AND LOS\n\t\tVXV\tPDVL\n\t\t\tRACT3\t\t# (RA*VA)*RA 0D\n\t\tPDVL\tUNIT\t\t# ULOS AT 6D\n\t\t\tRACT3\n\t\tPDVL\tVPROJ\t\t# XCHNJ AND UP\n\t\tVSL2\tBVSU\n\t\t\tULOS\n\t\tUNIT\tPDVL\t\t# UP AT 0D\n\t\tDOT\tPDVL\t\t# UP.UN*RA AT 0D\n\t\t\t0D\t\t# UP IN MPAC\n\t\tDOT\tSIGN\n\t\t\tULOS\n\t\tSL1\tACOS\n\t\tPDVL\tDOT\t\t# EA AT 0D\n\t\t\tULOS\n\t\t\tRACT3\n\t\tBPL\tDLOAD\n\t\t\tTESTY\n\t\t\tDPPOSMAX\n\t\tDSU\tPUSH\nTESTY\t\tBOFF\tDLOAD\n\t\t\tITSWICH\n\t\t\tELEX\n\t\t\tDELEL\n\t\tSTODL\tDELELO\n\t\tDSU\n\t\t\tELEV\n\t\tSTORE\tDELEL\n\t\tABS\tDSU\n\t\t\tELEPS\n# Page 668\n\t\tBMN\n\t\t\tTIMEX\t\t# COMMERCIALS EVERYWHERE\nFIGTIME\t\tSLOAD\tSR1\n\t\t\tTITER\n\t\tBHIZ\tLXA,1\n\t\t\tNORMEX\t\t# TOO MANY ITERATIONS\n\t\t\tMPAC\n\t\tSXA,1\tVLOAD\n\t\t\tTITER\n\t\t\tRPASS3\n\t\tUNIT\tPDDL\n\t\t\t36D\n\t\tPDVL\tUNIT\n\t\t\tRACT3\n\t\tPDDL\n\t\tPDDL\tPUSH\n\t\t\t36D\n\t\tBDSU\n\t\t\t12D\n\t\tSTODL\t30D\t\t# RP - RA MAGNITUDES\n\t\t\tDPHALF\n\t\tDSU\tPUSH\n\t\t\tELEV\n\t\tSIGN\tBMN\n\t\t\t30D\n\t\t\tNORMEX\n\t\tDLOAD\tCOS\n\t\tDMP\tDDV\n\t\t\t14D\n\t\t\t12D\n\t\tDCOMP\t\t\t# SINCE COS(180-A)=-COS A\n\t\tSTORE\t28D\n\t\tABS\tBDSU\n\t\t\tDPHALF\n\t\tBMN\tVLOAD\n\t\t\tNORMEX\n\t\t\tUNRM\n\t\tVXV\tUNIT\n\t\t\t6D\t\t# UN*RA\n\t\tDOT\tDMP\n\t\t\tVACT3\n\t\t\t12D\n\t\tPDVL\tVXV\n\t\t\t0D\n\t\t\tVPASS3\n\t\tVXV\tUNIT\n\t\t\t0D\t\t# (RP*VP)*RP\n\t\tDOT\tDMP\n\t\t\tVPASS3\n\t\t\t14D\n# Page 669\n\t\tBDSU\n\t\tNORM\tPDVL\t\t# NORMALIZED WA - WP 12D\n\t\t\tX1\n\t\t\t6D\n\t\tVXV\tDOT\n\t\t\t0D\n\t\t\tUNRM\t\t# RA*RP.UN 14D\n\t\tPDVL\tDOT\n\t\t\t0D\n\t\t\t6D\n\t\tSL1\tACOS\n\t\tSIGN\n\t\tDSU\tDAD\t\t# ALPHA PI\n\t\t\tDPHALF\n\t\t\tELEV\n\t\tPDDL\tACOS\n\t\t\t28D\n\t\tBDSU\tSIGN\n\t\t\tDPHALF\n\t\t\t30D\t\t# CONTAINS RP-RA\n\t\tDAD\n\t\tDMP\tDDV\n\t\t\tTWOPI\n\t\tDMP\n\t\tSL*\tDMP\n\t\t\t0 \t-3,1\n\t\tPUSH\tABS\n\t\tDSU\tBMN\n\t\t\tSECMAX\n\t\t\tOKMAX\n\t\tDLOAD\tSIGN\t\t# REPLACE TIME WITH MAX TIME SIGNED\n\t\t\tSECMAX\n\t\tPUSH\nOKMAX\t\tSLOAD\tBPL\t\t# TEST FIRST ITERATION\n\t\t\tTITER\n\t\t\tREPETE\n\t\tSSP\tDLOAD\n\t\t\tTITER\n\t\tOCT\t37777\n\t\tGOTO\n\t\t\tSTORDELT\nREPETE\t\tDLOAD\tDMP\n\t\t\tDELEL\n\t\t\tDELELO\n\t\tBPL\tDLOAD\n\t\t\tNEXTES\n\t\t\tSECMAX\n\t\tDMP\n\t\t\tTHIRD\n\t\tSTODL\tSECMAX\n# Page 670\n\t\tABS\tSR1\t\t# CROSSED OVER SOLUTION\n\t\tDCOMP\tGOTO\t\t# DT=(-SIGN(DTO)//DT//)/2\n\t\t\tRESIGN\nNEXTES\t\tDLOAD\tABS\n\t\t\tDELEL\n\t\tPDDL\tABS\n\t\t\tDELELO\n\t\tDSU\n\t\tBMN\tDLOAD\n\t\t\tREVERS\t\t# WRONG DIRECTION\n\t\tABS\nRESIGN\t\tSIGN \tGOTO\n\t\t\tDELTEEO\n\t\t\tSTORDELT\nREVERS\t\tDLOAD\tDCOMP\n\t\t\tDELTEEO\n\t\tPUSH\tSR1\n\t\tSTORE\tDELTEEO\n\t\tDAD\n\t\tGOTO\n\t\t\tADTIME\nSTORDELT\tSTORE\tDELTEEO\nADTIME\t\tDAD\n\t\t\tNOMTPI\t\t# SUM OF DELTA T'S\n\t\tSTORE\tNOMTPI\n\t\tVLOAD\tPDVL\n\t\t\tVAPREC\n\t\t\tRAPREC\n\t\tCALL\n\t\t\tGOINT\n\t\tCALL\n\t\t\tACTIVE\t\t# STORE NEW RACT3 VACT3\n\t\tVLOAD\tPDVL\n\t\t\tVPPREC\n\t\t\tRPPREC\n\t\tCALL\n\t\t\tGOINT\n\t\tCALL\n\t\t\tPASSIVE\t\t# STORE NEW RPASS3 VPASS3\n\t\tGOTO\n\t\t\tELCALC\nELEX\t\tDLOAD\tDAD\n\t\t\tTTPI\n\t\t\tNOMTPI\n\t\tSTODL\tTTPI\n\t\tBON\n\t\t\tETPIFLAG\n\t\t\tTIMEX\n\t\tSTORE\tELEV\nTIMEX\t\tDLOAD\tGOTO\n# Page 671\n\t\t\tZEROVECS\n\t\t\tNORMEX\n\n# Page 672\n# ***** S34/35.1 *****\n\n# COMPUTE UNIT NORMAL AND LINE OF SIGHT VECTORS GIVEN THE ACTIVE AND\n# PASSIVE POS AND VEL AT TIME T3\n\nS34/35.1\tVLOAD\tVSU\n\t\t\tRPASS3\n\t\t\tRACT3\n\t\tUNIT\tPUSH\n\t\tSTOVL\tULOS\n\t\t\tRACT3\n\t\tVXV\tUNIT\n\t\t\tVACT3\n\t\tSTORE\tUNRM\n\t\tRVQ\n\n# Page 673\n# ***** S34/35.2 *****\n\n# ADVANCE PASSIVE VEH TO RENDEZVOUS TIME AND GET REQ VEL FROM LAMBERT\n\nS34/35.2 \tSTQ\tVLOAD\n\t\t\tSUBEXIT\n\t\t\tVPASS3\n\t\tPDVL\tPDDL\n\t\t\tRPASS3\n\t\t\tINTIME\n\t\tPDDL\tPDDL\n\t\t\tTPASS4\n\t\t\tTWOPI\t\t# CONIC\n\t\tPDDL\tBHIZ\n\t\t\tNN\n\t\t\tS3435.23\n\t\tDLOAD\n\t\tDLOAD\tPUSH\n\t\t\tZEROVECS\t# PRECISION\nS3435.23\tCALL\n\t\t\tINTINT\t\t# GET TARGET VECTOR\nS3435.25\tSTOVL\tRTARG\n\t\t\tVATT\n\t\tSTOVL\tVPASS4\n\t\t\tRTARG\n# COMPUTE PHI = PI + (ACOS(UNIT RA.UNIT RP) - PI)SIGN(RA*RP.U)\n\t\tUNIT\tPDVL\t\t# UNIT RP\n\t\t\tRACT3\n\t\tUNIT\tPUSH\t\t# UNIT RA\n\t\tVXV\tDOT\n\t\t\t0D\n\t\t\tUNRM\t\t# RA*RP.U\n\t\tPDVL\n\t\tDOT\tSL1\t\t# UNIT RA.UNIT RP\n\t\t\t0D\n\t\tACOS\tSIGN\n\t\tBPL\tDAD\n\t\t\tNOPIE\n\t\t\tDPPOSMAX\t# REASONABLE TWO PI\nNOPIE\t\tSTODL\tACTCENT\n\t\t\tTPASS4\n\t\tDSU\n\t\t\tINTIME\n\t\tSTORE\tDELLT4\n\t\tSLOAD\tSETPD\n\t\t\tNN\t\t# NUMBER OF OFFSETS\n\t\t\t0D\n\t\tPDDL\tPDVL\n\t\t\tEPSFOUR\n\t\t\tRACT3\n\t\tSTOVL\tRINIT\n# Page 674\n\t\t\tVACT3\n\t\tSTCALL\tVINIT\n\t\t\tINITVEL\n\t\tCALL\n\t\t\tLOMAT\n\t\tVLOAD\tMXV\n\t\t\tDELVEET3\n\t\t\t0D\n\t\tVSL1\n\t\tSTCALL\tDELVLVC\n\t\t\tSUBEXIT\n\n# Page 675\n# ***** S34/35.3 *****\n\nS34/35.3\tSTQ\tCALL\n\t\t\tNORMEX\n\t\t\tLOMAT\t\t# GET MATRIX IN PUSH LIST\n\t\tVLOAD\tVXM\n\t\t\tDELVLVC\t\t# NEW DEL V TPI\n\t\t\t0D\n\t\tVSL1\n\t\tSTORE\tDELVEET3\t# SAVE FOR TRANSFORM\n\t\tVAD\tPDVL\n\t\t\tVACT3\t\t# NEW V REQ\n\t\t\tRACT3\n\t\tPDDL\tPDDL\n\t\t\tTIG\n\t\t\tTPASS4\n\t\tPDDL\tPUSH\n\t\t\tDPPOSMAX\n\t\tCALL\t\t\t# INTEG. FOR NEW TARGET VEC\n\t\t\tINTINT\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTORE\tRTARG\nNOVRWRT\t\tVLOAD\tPUSH\n\t\t\tULOS\n\t\tVXV\tVCOMP\n\t\t\tUNRM\n\t\tUNIT\tPUSH\n\t\tVXV\tVSL1\n\t\t\tULOS\n\t\tPDVL\n\t\tPDVL\tMXV\n\t\t\tDELVEET3\n\t\t\t0D\n\t\tVSL1\n\t\tSTCALL\tDVLOS\n\t\t\tNORMEX\n\n# Page 676\n# ***** S34/35.4 *****\n\nS34/35.4\tSTQ\tSETPD\t\t# NO ASTRONAUT OVERWRITE\n\t\t\tNORMEX\n\t\t\t0D\n\t\tGOTO\n\t\t\tNOVRWRT\n\n# Page 677\n# ***** LOMAT *****\n\nLOMAT\t\tVLOAD\tVCOMP\n\t\t\tUNRM\n\t\tSTOVL\t6D\t\t# Y\n\t\t\tRACT3\n\t\tUNIT\tVCOMP\n\t\tSTORE\t12D\n\t\tVXV\tVSL1\n\t\t\tUNRM\t\t# Z*-Y\n\t\tSTORE\t0D\n\t\tSETPD\tRVQ\n\t\t\t18D\nGOINT\t\tPDDL\tPDDL\t\t# DO\n\t\t\tZEROVECS\t#\tNOT\n\t\t\tNOMTPI\t\t#\n\t\tPUSH\tPUSH\t\t#\t\tORDER OR INSERT BEFORE INTINT\nINTINT\t\tSTQ\tCALL\n\t\t\tRTRN\n\t\t\tINTSTALL\n\t\tCLEAR\tDLOAD\n\t\t\tINTYPFLG\n\t\tBZE\tSET\n\t\t\t+2\n\t\t\tINTYPFLG\n\t\tDLOAD\tSTADR\n\t\tSTODL\tTDEC1\n\t\tSET\tLXA,2\n\t\t\tMOONFLAG\n\t\t\tRTX2\n\t\tBON\tCLEAR\n\t\t\tCMOONFLG\n\t\t\tALLSET\n\t\t\tMOONFLAG\nALLSET\t\tSTOVL\tTET\n\t\tVSR*\n\t\t\t0,2\n\t\tSTOVL\tRCV\n\t\tVSR*\n\t\t\t0,2\n\t\tSTCALL\tVCV\n\t\t\tINTEGRVS\n\t\tVLOAD\tGOTO\n\t\t\tRATT\n\t\t\tRTRN\n\n# Page 678\n# ***** S34/35.5 *****\n# SUBROUTINES USED\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n#\tS34/35.3\n#\tS34.35.4\n#\tVNPOOH\n\nS34/35.5\tSTQ\tBON\n\t\t\tSUBEXIT\n\t\t\tFINALFLG\n\t\t\tFLAGON\n\t\tSET\tGOTO\n\t\t\tUPDATFLG\n\t\t\tFLAGOFF\nFLAGON\t\tCLEAR\tVLOAD\n\t\t\tNTARGFLG\n\t\t\tDELVLVC\n\t\tSTORE\tGDT/2\n\t\tEXIT\n +5\t\tCAF\tV06N81\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\t\t# PRO\n\t\tTC\tFLAGON \t+5\t# LOAD\n +2\t\tCA\tEBANK7\n\t\tTS\tEBANK\t\t# TO BE SURE\n\n\t\tZL\n\t\tCA\tFIVE\nNTARGCHK\tTS\tQ\n\t\tINDEX\tQ\n\t\tCS\tDELVLVC\n\t\tINDEX\tQ\n\t\tAD\tGDT/2\n\t\tADS\tL\n\t\tCCS\tQ\n\t\tTCF\tNTARGCHK\n\t\tLXCH\tA\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tTC\tUPFLAG\n\t\tADRES\tNTARGFLG\n\n\t\tTC\tINTPRET\n\t\tBOFF\tCALL\n\t\t\tNTARGFLG\n# Page 679\n\t\t\tNOCHG\n\t\t\tS34/35.3\nNOCHG\t\tCLEAR\tVLOAD\n\t\t\tXDELVFLG\n\t\t\tDELVEET3\n\t\tSTORE\tDELVSIN\nFLAGOFF\t\tCALL\n\t\t\tS34/35.4\n\t\tEXIT\n\t\tCAF\tV06N59\n\t\tTC\tVNPOOH\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tSUBEXIT\n\n# Page 680\n# ***** VN1645 *****\n#\n# SUBROUTINES USED\n#\tP3XORP7X\n#\tGET+MGA\n#\tBANKCALL\n#\tDELAYJOB\n#\tCOMPTGO\n#\tGOFLASHR\n#\tGOTOPOOH\n#\tFLAGUP\n\nVN1645\t\tSTQ\tDLOAD\n\t\t\tSUBEXIT\n\t\t\tDP-.01\n\t\tSTORE\t+MGA\t\t# MGA = -.01\n\t\tBOFF\tDLOAD\n\t\t\tFINALFLG\n\t\t\tGET45\n\t\t\tDP-.01\n\t\tDAD\n\t\t\tDP-.01\n\t\tSTORE\t+MGA\t\t# MGA = -.02\n\t\tBOFF\tEXIT\n\t\t\tREFSMFLG\n\t\t\tGET45\n\t\tTC\tP3XORP7X\n\t\tTC\t+2\t\t# P3X\n\t\tTC\tGET45 \t+1\t# P7X\n\t\tTC\tINTPRET\n\t\tVLOAD\tPUSH\n\t\t\tDELVSIN\n\t\tCALL\t\t\t# COMPUTE MGA\n\t\t\tGET+MGA\nGET45\t\tEXIT\n\t\tTC\tCOMPTGO\t\t# INITIATE TASK TO UPDATE TTOGO\n\t\tCA\tSUBEXIT\n\t\tTS\tQSAVED\n\t\tCAF\t1SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tCAF\tV16N45\t\t# TRKMKCNT, TTOGO, +MGA\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tKILCLOCK\t# TERMINATE\n\t\tTC\tN45PROC\t\t# PROCEED\n\t\tTC\tCLUPDATE\t# RECYCLE -- RETURN FOR INITIAL COMPUTATION\nKILCLOCK\tCA\tZ\n\t\tTS\tDISPDEX\n# Page 681\n\t\tTC\tGOTOPOOH\nN45PROC\t\tCS\tFLAGWRD2\n\t\tMASK\tBIT6\n\t\tEXTEND\n\t\tBZF\tKILCLOCK\t# FINALFLG IS SET -- FLASH V37 -- AWAIT NEW PGM\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\t\tTC\tUPFLAG\t\t# SET\n\t\tADRES\tFINALFLG\t# FINALFLG\nCLUPDATE\tCA\tZ\n\t\tTS\tDISPDEX\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\t\tTC\tINTPRET\n\t\tCLEAR\tGOTO\n\t\t\tUPDATFLG\n\t\t\tQSAVED\n\n# Page 682\n# ***** DISPLAYE *****\n#\n# SUBROUTINES USED\n#\tBANKCALL\n#\tGOFLASHR\n#\tGOTOPOOH\n#\tBLANKET\n#\tENDOFJOB\n\nDISPLAYE\tEXTEND\n\t\tQXCH\tNORMEX\n\t\tCAF\tV06N55\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTC\tNORMEX\n\t\tTCF\t-5\n\n# Page 683\n# ***** P3XORP7X *****\n\nP3XORP7X\tCAF\tHIGH9\n\t\tMASK\tMODREG\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tINCR\tQ\n\t\tRETURN\n\n# ***** VNPOOH *****\n#\n# SUBROUTINES USED\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n\nVNPOOH\t\tEXTEND\n\t\tQXCH\tRTRN\n\t\tTS\tVERBNOUN\n\t\tCA\tVERBNOUN\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTC\tRTRN\n\t\tTCF\t-5\n\n# Page 684\n# ***** CONSTANTS *****\n\nV06N37\t\tVN\t0637\nV06N55\t\tVN\t0655\nV06N58\t\tVN\t0658\nV06N59\t\tVN\t0659\nV06N81\t\tVN\t0681\nV16N45\t\tVN\t1645\nTWOPI\t\t2DEC\t6.283185307 B-4\n\nMAX250\t\t2DEC\t25 E3\n\nTHIRD\t\t2DEC\t.333333333\n\nELEPS\t\t2DEC\t.27777777 E-3\n\nDP-.01\t\tOCT\t77777\t\t# CONSTANTS\n\t\tOCT\t61337\t\t# ADJACENT\t-.01 FOR MGA DSP\nEPSFOUR\t\t2DEC\t.0416666666\n\n130DEG\t\t2DEC\t.3611111111\n\n# Page 685\n# ***** INITVEL *****\n\n# MOD NO -1\t\t\tLOG SECTION -- P34-P35, P74-P75\n# MOD BY WHITE, P.\t\tDATE:  21 NOV 67\n#\n# FUNCTIONAL\n#\n#\tTHIS SUBROUTINE COMPUTES THE REQUIRED INITIAL VELOCITY VECTOR FOR\n#\tA TRAJECTORY OF SPECIFIC TRANSFER TIME BETWEEN SPECIFIED INITIAL\n#\tAND TARGET POSITIONS.  THE TRAJECTORY MAY BE EITHER CONIC OR\n#\tPRECISION DEPENDING ON AN INPUT PARAMETER (NAMELY, NUMBER OF\n#\tOFFSETS).  IN ADDITION, IN THE PRECISION TRAJECTORY CASE, THE\n#\tSUBROUTINE ALSO COMPUTES AN OFFSET TARGET VECTOR, TO BE USED\n#\tDURING PURE-CONIC CROSS-PRODUCT STEERING.  THE OFFSET TARGET\n#\tVECTOR IS THE TERMINAL POSITION VECTOR OF A CONIC TRAJECTORY WHICH\n#\tHAS THE SAME INITIAL STATE AS A PRECISION TRAJECTORY WHOSE\n#\tTERMINAL POSITION VECTOR IS THE SPECIFIED TARGET VECTOR.\n#\n#\tIN ORDER TO AVOID THE INHERENT SINGULARITIES IN THE 180 DEGREE\n#\tTRANSFER CASE WHEN THE (TRUE OR OFFSET) TARGET VECTOR MAY BE\n#\tSLIGHTLY OUT OF THE ORBITAL PLANE, THIS SUBROUTINE ROTATES THIS\n#\tVECTOR INTO A PLANE DEFINED BY THE INPUT INITIAL POSITION VECTOR\n#\tAND ANOTHER INPUT VECTOR (USUALLY THE INITIAL VELOCITY VECTOR),\n#\tWHENEVER THE INPUT TARGET VECTOR LIES INSIDE A CONE WHOSE VERTEX\n#\tIS THE ORIGIN OF COORDINATES, WHOSE AXIS IS THE 180 DEGREE\n#\tTRANSFER DIRECTION, AND WHOSE CONE ANGLE IS SPECIFIED BY THE USER.\n#\n#\tTHE LAMBERT SUBROUTINE IS UTILIZED FOR THE CONIC COMPUTATIONS AND\n#\tTHE COASTING INTEGRATION SUBROUTINE IS UTILIZED FOR THE PRECISION\n#\tTRAJECTORY COMPUTATIONS.\n#\n# CALLING SEQUENCE\n#\n#\tL\tCALL\n#\tL+1\t\tINITVEL\n#\tL+2\t(RETURN -- ALWAYS)\n#\n# INPUT\n#\n#\t(1)\tRINIT\t\tINITIAL POSITION RADIUS VECTOR\n#\t(2)\tVINIT\t\tINITIAL POSITION VELOCITY VECTOR\n#\t(3)\tRTARG\t\tTARGET POSITION RADIUS VECTOR\n#\t(4)\tDELLT4\t\tDESIRED TIME OF FLIGHT FROM RINIT TO RTARG\n#\t(5)\tINTIME\t\tTIME OF RINIT\n#\t(6)\t0D\t\tNUMBER OF ITERATIONS OF LAMBERT/INTEGRVS\n#\t(7)\t2D\t\tANGLE TO 180 DEGREES WHEN ROTATION STARTS\n#\t(8)\tRTX1\t\t-2 FOR EARTH, -10D FOR LUNAR\n#\t(9)\tRTX2\t\tCOORDINATE SYSTEM ORIGIN -- 0 FOR EARTH, 2 FOR LUNAR\n#\tPUSHLOC SET AT 4D\n#\n# Page 686\n# OUTPUT\n#\n#\t(1)\tRTARG\t\tOFFSET TARGET POSITION VECTOR\n#\t(2)\tVIPRIME\t\tMANEUVER VELOCITY REQUIRED\n#\t(3)\tVTPRIME\t\tVELOCITY AT TARGET AFTER MANEUVER\n#\t(4)\tDELVEET3\tDELTA VELOCITY REQUIRED FOR MANEUVER\n#\n# SUBROUTINES USED\n#\n#\tLAMBERT\n#\tINTSTALL\n#\tINTEGRVS\n\n\t\tSETLOC\tINTVEL\n\t\tBANK\n\n\t\tCOUNT*\t$$/INITV\nINITVEL\t\tSET\t\t\t# COGA GUESS NOT AVAILABLE\n\t\t\tGUESSW\nHAVEGUES\tVLOAD\tSTQ\n\t\t\tRTARG\n\t\t\tNORMEX\n\t\tSTORE\tRTARG1\n\t\tABVAL\n\t\tSTORE\tRTMAG\n\t\tSLOAD\tBHIZ\n\t\t\tRTX2\n\t\t\tINITVEL1\n\t\tVLOAD\tVSL2\n\t\t\tRINIT\t\t# B29\n\t\tSTOVL\tRINIT\t\t# B27\n\t\t\tVINIT\t\t# B7\n\t\tVSL2\n\t\tSTOVL\tVINIT\t\t# B5\n\t\t\tRTARG1\n\t\tVSL2\n\t\tSTORE\tRTARG1\n\t\tABVAL\n\t\tSTORE\tRTMAG\n\n# INITIALIZATION\n\nINITVEL1\tSSP\tDLOAD\t\t# SET ITCTR TO -1,LOAD MPAC WITH E4 (PL 2D)\n\t\t\tITCTR\n\t\t\t0 \t-1\n\t\tCOSINE\tSR1\t\t# CALCULATE COSINE (E4) (+2)\n\t\tSTODL\tCOZY4\t\t# SET COZY4 TO COSINE (E4) \t    (PL 0D)\n\t\tLXA,2\tSXA,2\n\t\t\tMPAC\n\t\t\tVTARGTAG\t# SET VTARGTAG TO 0D (SP)\n\t\tVLOAD\n# Page 687\n\t\t\tRINIT\n\t\tSTOVL\tR1VEC\t\t# R1VEC EQ RINIT\n\t\t\tRTARG1\n\t\tSTODL\tR2VEC\t\t# R2VEC EQ RTARG\n\t\t\tDELLT4\n\t\tSTORE\tTDESIRED\t# TDESIRED EQ DELLT4\n\t\tSETPD\tVLOAD\n\t\t\t0D\t\t# INITIALIZE PL TO 0D\n\t\t\tRINIT\t\t# MPAC EQ RINIT (+29)\n\t\tUNIT\tPUSH\t\t# UNIT(RI) (+1)\t\t            (PL 6D)\n\t\tVXV\tUNIT\n\t\t\tVINIT\t\t# MPAC EQ UNIT(RI) X VI (+8)\n\t\tSTOVL\tUN\n\t\t\tRTARG1\n\t\tUNIT\tDOT\t\t# TEMP*RT.URI (+2)\t\t    (PL 0D)\n\t\tDAD\tCLEAR\n\t\t\tCOZY4\n\t\t\tNORMSW\n\t\tSTORE\tCOZY4\nINITVEL2\tBPL\tSET\n\t\t\tINITVEL3\t# UN CALCULATED IN LAMBERT\n\t\t\tNORMSW\n\n# ROTATE RC INTO YC PLANE -- SET UNIT NORMAL TO YC\n\n\t\tVLOAD\tPUSH\t\t#\t\t\t\t    (PL 6D)\n\t\t\tR2VEC\t\t# RC TO 6D (+29)\n\t\tABVAL\tPDVL\t\t# RC TO MPAC, ABVAL(RC) (+29) TO OD (PL 2D)\n\t\tPUSH\tVPROJ\t\t#\t\t\t\t    (PL 8D)\n\t\t\tUN\n\t\tVSL2\tBVSU\n\t\tUNIT\tVXSC\t\t#\t\t\t\t    (PL 0D)\n\t\tVSL1\n\t\tSTORE\tR2VEC\n\t\tTLOAD\tSLOAD\n\t\t\tZEROVEC\n\t\t\tITCTR\n\t\tBPL\tVLOAD\n\t\t\tINITVEL3\n\t\t\tR2VEC\n\t\tSTORE\tRTARG1\nINITVEL3\tDLOAD\tPDVL\t\t#\t\t\t\t    (PL 2D)\n\t\t\tMUEARTH\t\t# POSITIVE VALUE\n\t\t\tR2VEC\n\t\tUNIT\tPDVL\t\t# 2D = UNIT(R2VEC)\t\t    (PL 8D)\n\t\t\tR1VEC\n\t\tUNIT\tPUSH\t\t# 8D = UNIT(R1VEC)\t\t   (PL 14D)\n\t\tVXV\tVCOMP\t\t# -N = UNIT(R2VEC) X UNIT(R1VEC)\n\t\t\t2D\n\t\tPUSH\t\t\t#\t\t\t\t   (PL 20D)\n\t\tLXA,1\tDLOAD\n# Page 688\n\t\t\tRTX1\n\t\t\t18D\n\t\tBMN\tINCR,1\n\t\t\t+2\n\t\tDEC\t-8\n\t\tINCR,1\tSLOAD\n\t\t\t10D\n\t\t\tX1\n\t\tBHIZ\tVLOAD\t\t#\t\t\t\t   (PL 14D)\n\t\t\t+2\n\t\tVCOMP\tPUSH\t\t#\t\t\t\t   (PL 20D)\n\t\tVLOAD\t\t\t#\t\t\t\t   (PL 14D)\n\t\tVXV\tDOT\t\t#\t\t\t\t    (PL 2D)\n\t\tBPL\tDLOAD\t\t#\t\t\t\t    (PL 0D)\n\t\t\tINITVEL4\n\t\tDCOMP\tPUSH\t\t#\t\t\t\t    (PL 2D)\nINITVEL4\tLXA,2\tSXA,2\n\t\t\t0D\n\t\t\tGEOMSGN\n\n# SET INPUTS UP FOR LAMBERT\n\n\t\tLXA,1\tCALL\n\t\t\tRTX1\n\n#  OPERATE THE LAMBERT CONIC ROUTINE (COASTFLT SUBROUTINE)\n\n\t\t\tSETITCTR\t# GO TO END OF BANK TO SET ITERCTR BEFORE\n\t\t\t\t\t# CALLING LAMBER (FOR REMANUFACTURE ONLY)\n\n# ARRIVED AT SOLUTION IS GOOD ENOUGH ACCORDING TO SLIGHTLY WIDER BOUNDS.\n\n\t\tCLEAR\tVLOAD\n\t\t\tGUESSW\n\t\t\tVVEC\n\n# STORE CALCULATED INITIAL VELOCITY REQUIRED IN VIPRIME\n\n\t\tSTODL\tVIPRIME\t\t# INITIAL VELOCITY REQUIRED (+7)\n\n# IF NUMIT IS ZERO, CONTINUE AT INITVELB, OTHERWISE\n# SET UP INPUTS FOR ENCKE INTEGRATION (INTEGRVS).\n\n\t\t\tVTARGTAG\n\t\tBHIZ\tCALL\n\t\t\tINITVEL7\n\t\t\tINTSTALL\n\t\tSLOAD\tCLEAR\n\t\t\tRTX2\n\t\t\tMOONFLAG\n\t\tBHIZ\tSET\n\t\t\tINITVEL5\n# Page 689\n\t\t\tMOONFLAG\nINITVEL5\tVLOAD\n\t\t\tRINIT\n\t\tSTORE\tR1VEC\n\t\tSTOVL\tRCV\n\t\t\tVIPRIME\n\t\tSTODL\tVCV\n\t\t\tINTIME\n\t\tSTORE\tTET\n\t\tDAD\tCLEAR\n\t\t\tDELLT4\n\t\t\tINTYPFLG\n\t\tSTCALL\tTDEC1\n\t\t\tINTEGRVS\n\t\tVLOAD\n\t\t\tVATT1\n\t\tSTORE\tVTARGET\n\n# IF ITERATION COUNTER (ITCTR) EQ NO. ITERATIONS (NUMIT), CONTINUE AT\n# INITVELC, OTHERWISE REITERATE LAMBERT AND ENCKE\n\n\t\tLXA,2\tINCR,2\n\t\t\tITCTR\n\t\t\t1D\t\t# INCREMENT ITCTR\n\t\tSXA,2\tXSU,2\n\t\t\tITCTR\n\t\t\tVTARGTAG\n\t\tSLOAD\tBHIZ\t\t# IF SP(MPAC) EQ 0, CONTINUE AT INITVELC\n\t\t\tX2\n\t\t\tINITVEL6\n\n# OFFSET CONIC TARGET VECTOR\n\n\t\tVLOAD\tVSU\n\t\t\tRTARG1\n\t\t\tRATT1\n\t\tVAD\n\t\t\tR2VEC\n\t\tSTODL\tR2VEC\n\t\t\tCOZY4\n\t\tGOTO\n\t\t\tINITVEL2\t# CONTINUE ITERATING AT INITVEL2\n\n# COMPUTE THE DELTA VELOCITY\n\nINITVEL6\tVLOAD\n\t\t\tR2VEC\n\t\tSTORE\tRTARG1\nINITVEL7\tVLOAD\tVSU\n\t\t\tVIPRIME\n\t\t\tVINIT\n\t\tSTOVL\tDELVEET3\t# DELVEET3 = VIPRIME-VINIT (+7)\n# Page 690\n\t\t\tVTARGET\n\t\tSTORE\tVTPRIME\n\t\tSLOAD\tBHIZ\n\t\t\tRTX2\n\t\t\tINITVELX\n\t\tVLOAD\tVSR2\n\t\t\tVTPRIME\n\t\tSTOVL\tVTPRIME\n\t\t\tVIPRIME\n\t\tVSR2\n\t\tSTOVL\tVIPRIME\n\t\t\tRTARG1\n\t\tVSR2\n\t\tSTOVL\tRTARG1\n\t\t\tDELVEET3\n\t\tVSR2\n\t\tSTORE\tDELVEET3\nINITVELX\tLXA,1\tDLOAD*\n\t\t\tRTX1\n\t\t\tMUTABLE -2,1\n\t\tPUSH\tDMP\n\t\t\tR1A\n\t\tSR1\tDDV\n\t\t\tR1\n\t\tSTODL\tMU/A\n\t\tSR\n\t\t\t6\n\t\tSTORE\tMUASTEER\n\t\tSETPD\tVLOAD\n\t\t\t0D\n\t\t\tRTARG1\n\t\tSTCALL\tRTARG\n\t\t\tNORMEX\n\n# ***** END OF INITVEL ROUTINE *****\n\n# Page 691\n# ***** MIDGIM *****\n\n# MOD NO. 0, BY WILLMAN, SUBROUTINE RENDGUID, LOG P34-P35, P74-P75\n# REVISION 03, 17 FEB 67\n#\n# IF THE ACTIVE VEHICLE IS DOING THE COMPUTATION, MIDGIM COMPUTES\n# THE POSITIVE MIDDLE GIMBAL ANGLE OF THE ACTIVE VEHICLE TO THE INPUT\n# DELTA VELOCITY VECTOR (0D IN PUSH LIST), OTHERWISE\n# MIDGIM CONVERTS THE INPUT DELTA VELOCITY VECTOR FROM INERTIAL COORDIN-\n# ATES TO LOCAL VERTICAL COORDINATES OF THE ACTIVE VEHICLE.\n#\n# ** INPUTS **\n#\n#\tNAME\tMEANING\t\t\t\t\t\tUNITS/SCALING/MODE\n#\n#\tAVFLAG\tINT FLAG -- 0 IS CSM ACTIVE, 1 IS LEM ACTIVE\t\t\tBIT\n#\tRINIT\tACTIVE VEHICLE RADIUS VECTOR\t\t\tMETERS/CSEC (+7) VT\n#\tVINIT\tACTIVE VEHICLE VELOCITY VECTOR\t\t\tMETERS/CSEC (+7) VT\n#\t0D(PL)\tACTIVE VEHICLE DELTA VELOCITY VECTOR\t\tMETERS/CSEC (+7) VT\n#\n# ** OUTPUTS **\n#\n#    NAME\tMEANING\t\t\t\t\t\tUNITS/SCALING/MODE\n#\n#    +MGA\t+ MIDDLE GIMBAL ANGLE\t\t\t\tREVOLUTIONS (+0) DP\n#    DELVLVC\tDELTA VELOCITY VECTOR IN LV COORD.\t\tMETERS/CSEC (+7) VT\n#    MGLVFLAG\tINT FLAG: 0 IS +MGA COMPUTED, 1 IS DELVLVC COMP.\t\tBIT\n#\n# ** CALLING SEQUENCE **\n#\n#\tL \tCALL\n#\tL+1\t\tMIDGIM\n#\tL+2\t(RETURN -- ALWAYS)\n#\n# ** NO SUBROUTINES CALLED **\n#\n# ** DEBRIS -- ERASABLE TEMPORARY USAGE **\n#\n#\tA,Q,L, PUSH LIST, MPAC.\n#\n# ** ALARMS -- NONE **\n\n# Page 692\n# MIDDLE GIMBAL ANGLE COMPUTATION.\n\n\t\tSETLOC\tMIDDGIM\n\t\tBANK\n\n\t\tCOUNT*\t$$/MIDG\n\nHALFREV\t\t2DEC\t1 B-1\n\nGET+MGA\t\tVLOAD\tUNIT\t\t# (PL 0D) V (+7) TO MPAC UNITIZE UV (+1)\n\t\tUNIT\n\t\tDOT\tSL1\t\t# DOT UV WITH Y(STABLE MEMBER) AND RESCALE\n\t\t\tREFSMMAT +6\t# FROM +2 TO +1 FOR ASIN ROUTINE\n\t\tARCSIN\tBPL\n\t\t\tSETMGA\n\t\tDAD\tDAD\t\t# CONVERT -MGA TO +MGA BY\n\t\t\tHALFREV\t\t# ADDING ONE REVOLUTION\n\t\t\tHALFREV\nSETMGA\t\tSTORE\t+MGA\n\t\tCLR\tRVQ\t\t# CLEAR MGLVFLAG TO INDICATE +MGA CALC\n\t\t\tMGLVFLAG\t# AND EXIT\nGET.LVC\t\tVLOAD\tUNIT\t\t# (PL 6D) R (+29) IN MPAC UNITIZE UR\n\t\t\tRINIT\n\t\tVCOMP\t\t\t# U(-R)\n\t\tSTORE\t18D\t\t# U(-R) TO 18D\n\t\tVXV\tUNIT\t\t# U(-R)*V EQ V*U(R), U(V*R)\n\t\t\tVINIT\n\t\tSTORE\t12D\t\t# U(V*R) TO 12D\n\t\tVXV\tUNIT\t\t# U(V*R)*U(-R), U((V*R)*(-R))\n\t\t\t18D\n\t\tSTOVL\t6D\t\t# TRANSFORMATION MATRIX IS IN 6D (+1)\n\t\t\t0D\t\t# DELTA V (+7) IN 0D\n\t\tMXV\tVSL1\t\t# CONVERT FROM INER COOR TO LV COOR (+8)\n\t\t\t6D\t\t# AND SCALE +7 IN MPAC\n\t\tSTORE\tDELVLVC\t\t# STORE IN DELVLVC (+7)\n\t\tSET\tRVQ\t\t# SET MGLVFLAG TO INDICATE LVC CALC\n\t\t\tMGLVFLAG\t# AND EXIT\n\n# ***** END OF MIDGIM ROUTINE *****\n\n# Page 693\n\t\tBANK\t10\n\t\tSETLOC\tSLCTMU\n\t\tBANK\n\t\tCOUNT*\t$$/MIDG\n\nSELECTMU\tAXC,1\tAXT,2\n\t\t\t2D\n\t\t\t0D\n\t\tBOFF\n\t\t\tCMOONFLG\n\t\t\tSETMUER\n\t\tAXC,1\tAXT,2\n\t\t\t10D\n\t\t\t2D\nSETMUER\t\tDLOAD*\tSXA,1\n\t\t\tMUTABLE +4,1\n\t\t\tRTX1\n\t\tSTODL*\tRTSR1/MU\n\t\t\tMUTABLE -2,1\n\t\tBOFF\tSR\n\t\t\tCMOONFLG\n\t\t\tRTRNMU\n\t\t\t6D\nRTRNMU\t\tSTORE\tRTMU\n\t\tSXA,2\tCLEAR\n\t\t\tRTX2\n\t\t\tFINALFLG\n\t\tGOTO\n\t\t\tVN1645\n\n# Page 694\n# ***** PERIAPO *****\n#\n# MOD NO -1\t\t\tLOG SECTION -- P34-P35, P74-P75\n# MOD BY WHITE, P.\t\tDATE 18 JAN 68\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tTHIS SUBROUTINE COMPUTES THE TWO BODY APOCENTER AND PERICENTER\n#\tALTITUDES GIVEN THE POSITION AND VELOCITY VECTORS FOR A POINT ON\n#\tTRAJECTORY AND THE PRIMARY BODY.\n#\n#\tSETRAD IS CALLED TO DETERMINE THE RADIUS OF THE PRIMARY BODY.\n#\n#\tAPSIDES IS CALLED TO SOVE FOR THE TWO BODY RADII OF APOCENTER AND\n#\tPERICENTER AND THE ECCENTRICITY OF THE TRAJECTORY.\n#\n# CALLING SEQUENCE\n#\n#\tL\tCALL\n#\tL+1\t\tPERIAPO\n#\tL+2\t(RETURN -- ALWAYS)\n#\n# INPUT\n#\n#\t(1)\tRVEC\tPOSITION VECTOR IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(2)\tVVEC\tVELOCITY VECTOR IN METERS/CENTISECOND\n#\t\t\tSCALE FACTOR -- EARTH +7, MOON +5\n#\t(3)\tX1\tPRIMARY BODY INDICATOR\n#\t\t\tEARTH -1, MOON -10\n#\n# OUTPUT\n#\n#\t(1)\t2D\tAPOCENTER RADIUS IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(2)\t4D\tAPOCENTER ALTITUDE IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(3)\t6D\tPERICENTER RADIUS IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(4)\t8D\tPERICENTER ALTITUDE IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(5)\tECC\tECCENTRICITY OF CONIC TRAJECTORY\n#\t\t\tSCALE FACTOR -- +3\n#\t(6)\tXXXALT\tRADIUS OF THE PRIMARY BODY IN METERS\n#\t\t\tSCALE FACTOR -- EARTH +29, MOON +27\n#\t(7)\tPUSHLOC\tEQUALS 10D\n#\n# SUBROUTINES USED\n#\n#\tSETRAD\n# Page 695\n#\tAPSIDES\n\n\t\tSETLOC\tAPOPERI\n\t\tBANK\n\n\t\tCOUNT*\t$$/PERAP\n\nRPAD\t\t2DEC\t6373338 B-29\t# STANDARD RADIUS OF PAD 37-B.\n\t\t\t\t\t# = 20 909 901.57 FT\n\nPERIAPO1\tLXA,2\tVSR*\n\t\t\tRTX2\n\t\t\t0,2\n\t\tSTOVL\tVVEC\n\t\tLXA,1\tVSR*\n\t\t\tRTX1\n\t\t\t0,2\n\t\tSTORE\tRVEC\nPERIAPO\t\tSTQ\tCALL\n\t\t\tNORMEX\n\t\t\tSETRAD\n\t\tSTCALL\tXXXALT\n\t\t\tAPSIDES\n\t\tSETPD\tPUSH\t\t# 2D = APOCENTER RADIUS\t\tB29 OR B27\n\t\t\t2D\n\t\tDSU\tPDDL\t\t# 4D = APOGEE ALTITUDE \t\tB29 OR B27\n\t\t\tXXXALT\n\t\t\t0D\n\t\tPUSH\tDSU\t\t# 6D = PERICENTER RADIUS\tB29 OR B27\n\t\t\tXXXALT\n\t\tPUSH\tGOTO\t\t# 8D = PERIGEE ALTITUDE \tB29 OR B27\n\t\t\tNORMEX\n\n# Page 696\nSETRAD\t\tDLOAD\tPUSH\n\t\t\tRPAD\n\t\tSXA,1\tINCR,2\n\t\t\tX2\n\t\t\t2D\n\t\tSLOAD\tBHIZ\n\t\t\tX2\n\t\t\tSETRADX\n\t\tVLOAD\tABVAL\n\t\t\tRLS\n\t\tPDDL\nSETRADX\t\tDLOAD\tRVQ\n\n# Page 697\nPRECSET\t\tSTQ\n\t\t\tNORMEX\n\t\tSTCALL\tTDEC2\n\t\t\tLEMPREC\n\t\tCALL\n\t\t\tLEMSTORE\n\t\tDLOAD\n\t\t\tTDEC2\n\t\tSTCALL\tTDEC1\n\t\t\tCSMPREC\n\t\tCALL\n\t\t\tCSMSTORE\n\t\tGOTO\n\t\t\tNORMEX\nLEMSTORE\tVLOAD\tBOFF\n\t\t\tRATT\n\t\t\tAVFLAG\n\t\t\tPASSIVE\nACTIVE\t\tSTOVL\tRACT3\n\t\t\tVATT\n\t\tSTORE\tVACT3\n\t\tRVQ\nCSMSTORE\tVLOAD\tBOFF\n\t\t\tRATT\n\t\t\tAVFLAG\n\t\t\tACTIVE\nPASSIVE\t\tSTOVL\tRPASS3\n\t\t\tVATT\n\t\tSTORE\tVPASS3\n\t\tRVQ\n\n# Page 698\nVECSHIFT\tLXA,2\tVSR*\n\t\t\tRTX2\n\t\t\t0,2\n\t\tLXA,1\tPDVL\n\t\t\tRTX1\n\t\tVSR*\tPDVL\n\t\t\t0,2\n\t\tRVQ\n\n# Page 699\nSHIFTR1\t\tLXA,2\tSL*\n\t\t\tRTX2\n\t\t\t0,2\n\t\tRVQ\n\n# Page 700\n# PROGRAM DESCRIPTION\n# SUBROUTINE NAME\tR36\tOUT-OF-PLANE RENDEZVOUS ROUTINE\n# MOD NO. 0\t\tDATE \t22 DECEMBER 67\n# MOD BY N.M.NEVILLE\tLOG SECTION EXTENDED VERBS\n# FUNCTIONAL DESCRIPTION\n#\n# TO DISPLAY AT ASTRONAUT REQUEST LGC CALCULATED RENDEZVOUS\n# OUT-OF-PLANE PARAMETERS (Y, YDOT, PSI).  (REQUESTED BY DSKY).\n#\n# CALLING SEQUENCE\n#\n#\tASTRONAUT REQUEST THROUGH DSKY V 90 E\n#\n# SUBROUTINES CALLED\n#\n#\tEXDSPRET\n#\tGOMARKF\n#\tCSMPREC\n#\tLEMPREC\n#\tSGNAGREE\n#\tLOADTIME\n#\n# NORMAL EXIT MODES\n#\n#\tASTRONAUT REQUEST THROUGH DSKY TO TERMINATE PROGRAM V 34 E\n#\n# ALARM OR ABORT EXIT MODES\n#\n#\tNONE\n#\n# OUTPUT\n#\n#\tDECIMAL DISPLAY OF TIME, Y, YDOT AND PSI\n#\n#\tDISPLAYED VALUES Y, YDOT, AND PSI, ARE STORED IN ERASABLE\n#\tREGISTERS RANGE, RRATE, AND RTHETA RESPECTIVELY.\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n#\tCSM AND LEM STATE VECTORS\n#\n# DEBRIS\n#\n#\tCENTRALS A,Q,L\n#\tOTHER:  THOSE USED BY THE ABOVE LISTED SUBROUTINES\n\n\t\tBANK\t20\n\t\tSETLOC\tR36LM\n\t\tBANK\n# Page 701\n\t\tEBANK=\tRPASS36\n\n\t\tCOUNT*\t$$/R36\n\nR36\t\tZL\n\t\tCAF\tZERO\t\t# SET TIME OF EVENT TO ZERO FOR FIRST\n\t\tDXCH\tDSPTEMX\t\t# DISPLAY\n\t\tCAF\tV06N16N\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKF\n\t\tTCF\tENDEXT\t\t# TERMINATE\n\t\tTCF\t+2\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE FOR ASTRONAUT INPUT TIME\n\t\tDXCH\tDSPTEMX\n\t\tEXTEND\n\t\tBZF\tLREGCHK\t\t# A-REG ZERO GOTO CHECK L-REG FOR ZERO\nASTROTIM\tDXCH\tMPAC\t\t# A-REG NON-ZERO, TIME = ASTRO INPUT TIME\n\t\tTC\tINTPRET\n\t\tRTB\n\t\t\tDPMODE\nR36INT\t\tSTCALL\tTDEC1\n\t\t\tOTHPREC\n\t\tVLOAD\tPDVL\n\t\t\tVATT\n\t\t\tRATT\t\t# _\n\t\tSTORE\tRPASS36\t\t# R\n\t\tUNIT\tPDVL\t\t#  P\n\t\tVXV\tUNIT\n\t\tSTADR\t\t\t# _\n\t\tSTODL\tUNP36\t\t# U\n\t\t\tTAT\n\t\tSTCALL\tTDEC1\n\t\t\tTHISPREC\n\t\tVLOAD\tPDVL\t\t#\t\t  -\n\t\t\tVATT\t\t# VELOCITY VECTOR V\t\t00D\n\t\t\tRATT\t\t# \t\t   A\n\t\tPDDL\n\t\t\tTAT\t\t# SAVE TIME IN LOCATION 30D FOR REDISPLAY\n\t\tSTOVL\t30D\t\t#\t\t  _\n\t\tPUSH\tPUSH\t\t# POSITION VECTOR R  IN 06D AND 12D\n\t\tBVSU\tPDVL\t\t#\t\t   A   _   _\n\t\t\tRPASS36\t\t# LINE OF SIGHT VECTOR R - R  \t12D\n\t\tDOT\tSL1\t\t#\t\t\tP   A\n\t\t\tUNP36\t\t#     _   _\n\t\tSTOVL\tRANGE\t\t# Y = U . R\n\t\t\t00D\t\t#          A\n\t\tDOT\tSL1\n\t\t\tUNP36\t\t# .   _   _\n\t\tSTOVL\tRRATE\t\t# Y = U . V\n\t\t\t06D\t\t#          A\n# Page 702\n\t\t\t\t\t# _           _\n\t\tUNIT\tPUSH\t\t# U  = UNIT ( R  )\t\t18D\n\t\tVXV\tVXV\t\t#  RA          A\n\t\t\t00D\t\t#  _    _     _     _\n\t\t\t18D\t\t# (U  X V ) X U   = U\n\t\tVSL2\tUNIT\t\t#   RA   A     RA    A\n\t\tUNIT\n\t\tSTOVL\t00D\t\t# UNIT HORIZONTAL IN FORWARD DIR. 00D\n\t\t\t18D\n\t\tDOT\tVXSC\t\t# _\n\t\t\t12D\t\t# U\n\t\tVSL2\t\t\t#  L\n\t\tBVSU\tUNIT\n\t\tUNIT\n\t\tPUSH\tDOT\t\t# LOS PROJECTED INTO HORIZONTAL  12D\n\t\t\t00D\t\t# PLANE\n\t\tSL1\tARCCOS\t\t#              _   _\n\t\tSTOVL\tRTHETA\t\t# PSI = ARCCOS(U . U )\n\t\tVXV\tDOT\t\t#               A   L\n\t\t\t00D\n\t\tBPL\tDLOAD\n\t\t\tR36TAG2\n\t\t\tLODPMAX\n\t\tDSU\n\t\t\tRTHETA\n\t\tSTORE\tRTHETA\nR36TAG2\t\tDLOAD\tRTB\n\t\t\t30D\n\t\t\tSGNAGREE\n\t\tSTORE\tDSPTEMX\n\t\tEXIT\n\t\tCAF\tV06N90N\t\t# DISPLAY Y, YDOT, AND PSI.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKF\n\t\tTCF\tENDEXT\t\t# TERMINATE\n\t\tTCF\tENDEXT\t\t# PROCEED, END OF PROGRAM\n\t\tTCF\tR36\t+3\t# REDISPLAY OUTPUT\nLREGCHK\t\tXCH\tL\n\t\tEXTEND\n\t\tBZF\tENTTIM2\t\t# L-REG ZERO, SET TIME = PRESENT TIME\n\t\tXCH\tL\t\t# L-REG NON ZERO, TIME = ASTRO INPUT TIME\n\t\tTCF\tASTROTIM\nENTTIM2\t\tTC\tINTPRET\n\t\tRTB\tGOTO\n\t\t\tLOADTIME\n\t\t\tR36INT\nV06N16N\t\tVN\t00616\nV06N90N\t\tVN\t00690\n"
  },
  {
    "path": "Luminary099/P40-P47.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP40-P47.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t752-784\n# Mod history:\t2009-05-19 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-01-06 JL\tFixed interpretive indentation.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 752\n# PROGRAM DESCRIPTION: P40BOTH\t\tDECEMBER 22, 1966\n# MOD 03 BY PETER ADLER\t\t\tMARCH 3, 1967\n# CALLED VIA JOB FROM V37E\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\t1)\tTO COMPUTE A PREFERRED IMU ORIENTATION AND A PREFERRED VEHICLE ATTITUDE FOR A LM DPS\n#\t\tTHRUSTING MANEUVER.\n# \t(There is no item #2 in the original program listing --- RSB 2009.)\n#\t3)\tTO DO THE VEHICLE MANEUVER TO THE THRUSTING ATTITUDE.\n#\t4)\tTO CONTROL THE PGNCS DURING COUNTDOWN, IGNITION, THRUSTING, AND THRUST TERMINATION OF A\n#\t\tPGNCS CONTROLLED DPS MANEUVER.\n#\t5)\tIN POSTBURN --- ZERO RENDEZVOUS COUNTER, MAINTAIN VG CALCULATIONS FOR POSSIBLE RCS MANEUVER,\n#\t\tSET MAXIMUM DEADBAND IN DAP, RESET STEERLAW CSTEER TO ZERO.\n#\n#\tNOTE:\tP42, WHICH IS IN THIS LOG SECTION, DOES THE SAME FOR AN APS BURN, AND P41 DOES 1-3 FOR\n#\t\tRCS PLUS DISPLAYS PARAMETERS FOR MANUAL CONTROL.\n#\n# SUBROUTINES USED\n#\n#\tR02\t\tIMU STATUS CHECK\n#\tS40.1\t\tCOMPUTATION OF THRUST DIRECTION\n#\tS40.13\t\tLENGTH OF BURN\n#\tS40.2,3\t\tPREFERRED IMU ORIENTATION\n#\tS40.8\t\tX PRODUCT STEERING\n#\tS40.9\t\tLAMBERT VTOGAIN\n#\tR60LEM\t\tATTITUDE MANEUVER\n#\tLEMPREC\t\tEXTRAPOLATE STATE VECTOR\n#\tPREREAD\t\tAVERAGE G, SERVICER\n#\tALLCOAST\tDAP COASTING INITIALIZATION\n#\tCLOKTASK\tERGO CLOCKJOB -- COUNT DOWN\n#\tPHASCHANG, INTPRET, FLAGUP, FLAGDOWN, WAITLIST, LONGCALL, GOFLASH, GOFLASHR, GOPERF1, ALARM,\n#\tPRIOLARM, GOTOPOOH, ENDOFJOB, BANKCALL, SETMAXDB, SETMINDB, CHECKMM, FLATOUT, OUTFLAT,\n#\tKILLTASK, SGNAGREE, TPAGREE, ETC.\n#\n# RESTARTS VIA GROUP 4\n#\n# DISPLAYS\n#\n#\tV50N25\t203 A/P TO PGNCS, AUTO-THROTTLE MODE, AUTO ATTITUDE CONTROL\n#\tV06N40\tTTI, VG, DELTAVM (DISPLAYED ONCE/SECOND BY CLOKTASK)\n#\tV50N99\tPLEASE PERFORM ENGINE ON ENABLE\n#\tV06N40\tTG (TIME TO GO TO CUTOFF), VG, DELTAVM -- ONCE/SECOND\n#\tV16N40\tFINAL VALUES OF TG, VG, DELTAVM\n#\tV16N85\tCOMP OF VG (BODY AXES) FOR POSS. RCS MANUAL MANEUVER\n#\tV05N09\tPOSSIBLE ALARMS\n#\tV50N07\tPLEASE SELECT P00\n#\n# Page 753\n#\tVIA R30\n#\n#\tV06N44\tHAPO, PERI, TFF\n#\tV06N35\tTIME TO PERIGEE, HMS\n#\n# ALARM OR ABORT EXIT MODES\n#\n#\tPROGRAM ALARM, FLASHING DISPLAY OF ALARM CODE 1706 IF P40 SELECTED WITH DESCENT UNIT STAGED.\n#\tV34E (TERMINATE) IS THE ONLY RESPONSE ACCEPTED.  TC GOTOPOOH.\n#\n#\tPROGRAM ALARM, FLASH CODE 1703:  TIG LESS THAN 45 SECS AWAY.  V34E= GOTOPOOH OR V33E= SLIP\n#\tTIG BY 45 SECS.\n#\n# ERASABLE INITIALIZATION\n#\n# DEBRIS\n#\n# OUTPUT\n#\n#\tSEE SUBROUTINES E.G.:  S40.1, S40.2,3, S40.13, S40.8, S40.9, TRIMGIMB\n#\tXDELVFLG = 1 FOR EXT DELV COMPUTATION\n#\t         = 0 FOR AIMPT (LAMBERT COMP\n\n\t\tCOUNT*\t$$/P40\n\t\tEBANK=\tWHICH\n\n\t\tBANK\t36\n\t\tSETLOC\tP40S\n\t\tBANK\n\nP40LM\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tCAF\tP40ADRES\t# INITIALIZATION FOR BURNBABY\n\t\tTS\tWHICH\n\n\t\tCA\tFLGWRD10\n\t\tMASK\tAPSFLBIT\n\t\tCCS\tA\n\t\tTCF\tP40ALM\n\t\tTC\tBANKCALL\t# GO DO IMU STATUS CHECK ROUTINE.\n\t\tCADR\tR02BOTH\n\n\t\tCS\tDAPBOOLS\t# INITIALIZE DVMON\n\t\tMASK\tCSMDOCKD\n\t\tCCS\tA\n\t\tCAF\tTHRESH1\n\t\tAD\tTHRESH3\n\t\tTS\tDVTHRUSH\n\t\tCAF\tFOUR\n\t\tTS\tDVCNTR\n# Page 754\n\t\tTC\tINTPRET\t\t# LOAD CONSTANTS FOR DPS BURN\n\t\tVLOAD\tCLEAR\t\t# LOAD F, MDOT, TDECAY\n\t\t\tFDPS\n\t\t\tNOTHROTL\n\t\tSTORE\tF\n\t\tSLOAD\n\t\t\tDPSVEX\nP40IN\t\tDCOMP\tSR1\n\t\tSTCALL\tVEX\t\t# LOAD EXHAUST VELOCITY FOR TGO COMP.\n\t\t\tS40.1\t\t# COMPUTES UT AND VGTIG\n\t\tCALL\n\t\t\tS40.2,3\t\t# COMPUTES PREFERRED IMU ORIENTATION\n\t\tEXIT\n\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tPFLITEDB\t# ZERO ATTITUDE ERRORS, SET DB TO ONE DEG.\n\n\t\tTC\tP40SXT4\n\n#\t********************************\n\n\t\tTCF\tBURNBABY\n\n#\t********************************\n\nP40SXT4\t\tEXTEND\n\t\tQXCH\tP40/RET\nP41MANU\t\tRELINT\n\n\t\tTC\tDOWNFLAG\t# CLEAR 3AXISFLG -- R60 USE VECPOINT.\n\t\tADRES\t3AXISFLG\n\n\t\tTC\tBANKCALL\n\t\tCADR\tR60LEM\t\t# DO ATTITUDE MANEUVER ROUTINE\n\t\tTC\tP40/RET\n\n\t\tEBANK=\tTRKMKCNT\nPOSTBURN\tCA\tZ\n\t\tTS\tDISPDEX\n\t\tEXTEND\n\t\tDCA\tACADN85\n\t\tDXCH\tAVEGEXIT\n\t\tCAF\tV16N40\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tTERM40\n\t\tTCF\tTIGNOW\n\t\tTC\tPOSTBURN\n# Page 755\nP40PHS1\t\tTC\tPHASCHNG\n\t\tOCT\t00014\n\t\tTCF\tENDOFJOB\n\nTIGNOW\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tZATTEROR\n\t\tTC\tIBNKCALL\n\t\tCADR\tSETMINDB\n\t\tRELINT\n\t\tCAF\tV16N85B\n\t\tTC\tBANKCALL\n\t\tCADR\tREFLASHR\n\t\tTC\tTERM40\n\t\tTCF\tTERM40\n\t\tTC\t-5\n\n\t\tTCF\tP40PHS1\n\nTERM40\t\tEXTEND\n\t\tDCA\tSERVCADR\n\t\tDXCH\tAVEGEXIT\n\t\tCAF\tZERO\n\t\tTS\tTRKMKCNT\t# ZERO RENDZVS CNTERS\n\t\tCA\tZ\n\t\tTS\tDISPDEX\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tRESTORDB\n\t\tRELINT\n\t\tTC\tGOTOPOOH\n\n\t\tEBANK=\tWHICH\n\t\tCOUNT*\t$$/P41\nP41LM\t\tCAF\tP41ADRES\t# INITIALIZATION FOR BURNBABY\n\t\tTS\tWHICH\n\n\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\n\n\t\tTC\tINTPRET\t\t# BOTH LM\n\t\tBON\tDLOAD\t\t# IF NJETSFLAG IS SET, LOAD Z JET F\n\t\t\tNJETSFLG\n\t\t\tP41FJET1\n\t\t\tFRCS4\t\t# IF NJETSFLG IS CLEAR, LOAD 4 JET F\n\nP41FJET\t\tSTCALL\tF\n\t\t\tP41IN\nP41FJET1\tDLOAD\n# Page 756\n\t\t\tFRCS2\n\t\tSTORE\tF\n\nP41IN\t\tCALL\n\t\t\tS40.1\t\t# BOTH\nP41NORM\t\tCALL\n\t\t\tS40.2,3\t\t# CALCULATE PREFERRED IMU ORIENTATION AND\n\t\tEXIT\t\t\t# SET PFRATFLG.\n\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tZATTEROR\t# ZERO ATTITUDE ERRORS\n\t\tTC\tIBNKCALL\n\t\tCADR\tSETMINDB\t# SET 0.3 DEGREE DEADBAND\n\t\tTC\tP40SXT4\n\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\t\t# TRANSFORM VELOCITY-TO-BE-GAINED AT TIG\n\t\t\tVGTIG\t\t# FROM REFERENCE COORDINATES TO LM BODY-\n\t\t\tS41.1\t\t# AXIS COORDINATES FOR V16N85 DISPLAY.\n\t\tSTORE\tVGBODY\t\t# (SCALED AT 2 (+7) METERS/CENTISECOND)\n\t\tEXIT\n\n\t\tCAF\tV16N85B\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPRET\n\n\t\tCAF\tPRIO5\n\t\tTS\tDISPDEX\t\t# FOR SAFETY ONLY\n\t\tTC\tFINDVAC\n\t\tEBANK=\tVGPREV\n\t\t2CADR\tDYNMDISP\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00076\t\t# GROUP 6 RESTARTS AT REDO6.7\n\t\tOCT\t04024\t\t# GROUP 4 RESTARTS HERE\n\n#\t********************************\n\n\t\tTCF\tB*RNB*B*\n\n#\t********************************\n\nBLNKWAIT\tCAF\t1SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\nREDO6.7\t\tCA\tDISPDEX\t\t# ON A RESTART, DO NOT PUT UP DISPLAY IF\n\t\tAD\tTWO\t\t# BLANKING (BETWEEN TIG-35 AND TIG-30)\n\n#\t********************************\n# Page 757\n\n\t\tEXTEND\n\t\tBZF\tBLNKWAIT\n\n\t\tCAF\tV16N85B\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPRET\n\n\t\tCAF\tPRIO5\n\t\tTC\tPRIOCHNG\n\nDYNMDISP\tCA\tDISPDEX\t\t# A NON-POSITIVE DISPDEX INDICATES PAST\n\t\tEXTEND\t\t\t# TIG-35, SO SERVICER WILL BE DOING THE\n\t\tBZMF\tENDOFJOB\t# UPDATING OF NOUN 85.  STOP DYNMDISP.\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\n\t\t\tVGPREV\n\t\t\tS41.1\n\t\tSTORE\tVGBODY\n\t\tEXIT\n\t\tCAF\t1SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tTCF\tDYNMDISP\n\nCALCN85\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tUPDATEVG\n\t\tVLOAD\tCALL\n\t\t\tVGPREV\n\t\t\tS41.1\n\t\tSTORE\tVGBODY\n\t\tEXIT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tSERVEXIT\n\n\t\tCOUNT*\t$$/P42\n\t\tEBANK=\tWHICH\n\nP42LM\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tCAF\tP42ADRES\t# INITIALIZATION FOR BURNBABY.\n\t\tTS\tWHICH\n\n\t\tCS\tFLGWRD10\n\t\tMASK\tAPSFLBIT\n\t\tCCS\tA\n\t\tTC\tP40ALM\nP42STAGE\tTC\tBANKCALL\n# Page 758\n\t\tCADR\tR02BOTH\n\t\tCAF\tTHRESH2\t\t# INITIALIZE DVMON\n\t\tTS\tDVTHRUSH\n\t\tCAF\tFOUR\n\t\tTS\tDVCNTR\n\n\t\tTC\tINTPRET\n\t\tSET\tVLOAD\t\t# LOAD FAPS, MDOTAPS, AND ATDECAY INTO\n\t\t\tAVFLAG\t\t# F, MDOT, AND TDECAY BY VECTOR LOAD.\n\t\t\tFAPS\n\t\tSTORE\tF\n\t\tSLOAD\tGOTO\n\t\t\tAPSVEX\n\t\t\tP40IN\n\n\t\tEBANK=\tWHICH\n\n\t\tCOUNT*\t$$/P47\nP47LM\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\n\t\tTC\tINTPRET\n\t\tCALRB\n\t\t\tMIDTOAV2\n\n\t\tCA\tMPAC +1\n\t\tTC\tTWIDDLE\n\t\tADRES\tSTARTP47\n\n\t\tTCF\tENDOFJOB\n\nSTARTP47\tTC\tPHASCHNG\n\t\tOCT\t05014\n\t\tOCT\t77777\n\n\t\tEXTEND\n\t\tDCA\tACADN83\n\t\tDXCH\tAVEGEXIT\n\t\tCAF\tPRIO20\n\t\tTC\tFINDVAC\n\t\tEBANK=\tDELVIMU\n\t\t2CADR\tP47BODY\n\n\t\tTCF\tREDO4.2\t\t# CHECKS PHASE 5 AND GOES TO PREREAD\n\t\t\t\t\t# SEE TIG-30 IN BURNBABY\n\nCALCN83\t\tTC\tINTPRET\n\t\tVLOAD\tVAD\n\t\t\tDELVCTL\n\t\t\tDELVREF\n\t\tSTORE\tDELVSIN\t\t# TEMP STORAGE FOR RESTARTS\n# Page 759\n\t\tCALL\n\t\t\tS41.1\n\t\tSTORE\tDELVIMU\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t10035\t\t# REREADAC AND HERE\n\n\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tDELVSIN\n\t\tSTORE\tDELVCTL\n\t\tEXIT\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tSERVEXIT\n\nP47BOD\t\tCAF\tV1683\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTC\tGOTOPOOH\n\t\tTC\tGOTOPOOH\n\n\t\tTCF\tP47BODY\n\n\t\tTCF\tP40PHS1\n\nP47BODY\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tHI6ZEROS\n\t\tSTORE\tDELVIMU\n\t\tSTORE\tDELVCTL\n\t\tEXIT\n\t\tTC\tP47BOD\n\n\t\tCOUNT*\t$$/P40\nIMPLBURN\tCA\tTGO \t+1\n\t\tTC\tGETDT\n\t\tTC\tTWIDDLE\n\t\tADRES\tENGOFTSK\n\t\tTC\tDOWNFLAG\t# TURN OFF IGNFLAG\n\t\tADRES\tIGNFLAG\n\t\tTC\tDOWNFLAG\t# TURN OFF ASTNFLG\n\t\tADRES\tASTNFLAG\n\t\tTC\tDOWNFLAG\t# TURN OFF IMPULSW\n\t\tADRES\tIMPULSW\n\t\tTC\tPHASCHNG\t# RESTART PROTECT ENGOFTSK (ENGINOFF)\n\t\tOCT\t40114\n\n\t\tTC\tFIXDELAY\t# WAIT HALF A SECOND\n\t\tDEC\t50\n# Page 760\n\t\tTC\tNOULLAGE\t# TURN OFF ULLAGE\n\n\t\tTC\tTASKOVER\n\nENGOFTSK\tTC\tIBNKCALL\t# THIS CODING ALLOWS ENGINOFF ET AL TO BE\n\t\tCADR\tENGINOFF\t# USED BOTH BY WAITLIST AND BY TC IBNKCALL\n\t\tTC\tTASKOVER\n\nENGINOFF\tCAF\tPRIO12\t\t# MUST BE LOWER PRIO THAN CLOCKJOB\n\t\tTC\tFINDVAC\n\t\tEBANK=\tTRKMKCNT\n\t\t2CADR\tPOSTBURN\n\nENGINOF2\tCAF\tBIT1\n\t\tTC\tWAITLIST\n\t\tEBANK=\tOMEGAQ\n\t\t2CADR\tCOASTSET\n\nENGINOF1\tCS\tFLAGWRD7\t# SET THE IDLE BIT.\n\t\tMASK\tIDLEFBIT\n\t\tADS\tFLAGWRD7\n\n\t\tTC\tNOULLAGE\n\nENGINOF4\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tTEVENT\n\nENGINOF3\tCS\tENGONBIT\t# INSURE ENGONFLG IS CLEAR.\n\t\tMASK\tFLAGWRD5\n\t\tTS\tFLAGWRD5\n\t\tCS\tPRIO30\t\t# ENGINOF3 IS USED AS A PRE-ENGINE ARM\n\t\tEXTEND\t\t\t# SUBROUTINE.\n\t\tRAND\tDSALMOUT\n\t\tAD\tPRIO20\t\t# TURN OFF THE ENGINE -- DPS OR APS\n\t\tEXTEND\n\t\tWRITE\tDSALMOUT\n\n\t\tCS\tDAPBOOLS\t# TURN OFF TRIM GIMBAL\n\t\tMASK\tUSEQRJTS\n\t\tADS\tDAPBOOLS\n\n\t\tCS\tHIRTHROT\t# ZERO AUTO-THROTTLE WHENEVER THE ENGINE\n\t\tTS\tTHRUST\t\t# IS TURNED OFF.\n\t\tCAF\tBIT4\t\t# THE HARDWARE DOES SO ONLY WHEN THE\n\t\tEXTEND\t\t\t# ENGINE IS DISARMED.\n\t\tWOR\tCHAN14\n\n\t\tTC\tISWRETRN\n# Page 761\nCOASTSET\tTC\tIBNKCALL\t# DO DAP COASTING INITIALIZATION\n\t\tCADR\tALLCOAST\n\t\tTC\tTASKOVER\n\n\t\tEBANK=\tOMEGAQ\nUPDATEVG\tSTQ\tCALL\n\t\t\tQTEMP1\n\t\t\tS40.8\t\t# X-PRODUCT STEERING\n\t\tBON\tBON\n\t\t\tXDELVFLG\n\t\t\tQTEMP1\n\t\t\tNORMSW\n\t\t\t180SETUP\n\t\tDLOAD\tDSU\n\t\t\tPIPTIME\n\t\t\tTIGSAVE\n\t\tDSU\tBMN\n\t\t\tTNEWA\n\t\t\tGETRANS\n\t\tDLOAD\tDAD\n\t\t\tTIGSAVE\n\t\t\tTNEWA\n\t\tSTORE\tTIGSAVEP\n180SETUP\tEXIT\n\t\tCCS\tPHASE2\n\t\tTCF\tNO.9\n\t\tCAF\tPRIO10\n\t\tINHINT\n\t\tTC\tFINDVAC\n\t\tEBANK=\tVG\n\t\t2CADR\tS40.9\t\t# LAMBERT VTOGAIN\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t00172\t\t# 2.17SPOT FOR S40.9\n\t\tOCT\t10035\t\t# HERE AND REREADAC AFTER RESTART\n\nENDSTEER\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tTIGSAVEP\n\t\tSTOVL\tTIGSAVE\n\t\t\tRN\n\t\tSTOVL\tRINIT\n\t\t\tVN\n\t\tSTORE\tVINIT\nGETRANS\t\tDLOAD\tDSU\n\t\t\tTPASS4\n\t\t\tPIPTIME\n\t\tSTCALL\tDELLT4\n\t\t\tQTEMP1\n\n# Page 762\nNO.9\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tQTEMP1\nSTEERING\tTC\tINTPRET\n\n\t\tCALL\n\t\t\tUPDATEVG\n\t\tEXIT\n\n\t\tEBANK=\tDVCNTR\nNSTEER\t\tINHINT\n\t\tCA\tEBANK7\n\t\tTS\tEBANK\n\t\tCS\tFLAGWRD2\t# CHECK IMPULSE SWITCH.  IT IS SET EITHER\n\t\tMASK\tIMPULBIT\t# BY S40.13 IF TBURN<6 SECS OR BY S40.8 IF\n\t\tCCS\tA\t\t# STEERING IS ALMOST DONE.\n\n\t\tTCF\t+5\t\t# IMPULSW = 0\tEXIT\n\t\tCS\tFLAGWRD7\t# IMPULSW = 1\tWHY?  CHECK IDLEFLAG\n\t\tMASK\tIDLEFBIT\t#\t(IDLEFLAG = 0 --> DVMON ON)\n\t\tCCS\tA\n\t\tTCF\t+3\t\t# DVMON ON --> THRUSTING --> IMPULSW VIA S40.8\n\t\tTC\tPOSTJUMP\t# DVMON OFF --> IMPULSW ON VIA S40.13 --> EXIT\n\t\tCADR\tSERVEXIT\n\n\t\tTC\tIBNKCALL\n\t\tCADR\tSTOPRATE\n\n\t\tTC\tDOWNFLAG\t# TURN OFF IMPULSW\n\t\tADRES\tIMPULSW\n\n\t\tTC\tUPFLAG\n\t\tADRES\tIDLEFLAG\t# TURN OFF DVMON\n\n\t\tINHINT\n\t\tEXTEND\n\t\tDCA\tTIG\n\t\tDXCH\tMPAC\n\t\tEXTEND\n\t\tDCS\tTIME2\n\t\tDAS\tMPAC\n\t\tTC\tTPAGREE\n\t\tCAE\tMPAC \t+1\n\t\tTC\tGETDT\n\t\tTC\tTWIDDLE\n\t\tADRES\tENGOFTSK\n\t\tTC\t2PHSCHNG\n\t\tOCT\t40114\t\t# ENGOFTSK (ENGINOFF)\n\t\tOCT\t00035\t\t# SERVICER -- REREADAC\n# Page 763\n\t\tTCF\tENDOFJOB\n\nGETDT\t\tCCS\tA\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tCAF\tZERO\n\t\tAD\tONE\n\t\tXCH\tL\n\t\tCAF\tZERO\n\t\tDXCH\tTGO\n\t\tCA\tTGO \t+1\n\t\tTC\tQ\n\n# **************************************\n\nSEC15DP\t\tOCT\t00000\t\t# DON'T SEPARATE\nSEC15\t\tDEC\t1500\t\t# DON'T SEPARATE\nSEC30DP\t\t2DEC\t3000\n\nSEC45DP\t\tOCT\t00000\t\t# DON'T MOVE FROM JUST BEFORE SEC45\nSEC45\t\tDEC\t4500\n5SECDP\t\tOCT\t00000\t\t# DON'T MOVE FROM JUST BEFORE 5SEC\n5SEC\t\tDEC\t500\n26SECS\t\tDEC\t2600\nV16N40\t\tVN\t1640\nV16N85B\t\tVN\t1685\nV1683\t\tVN\t1683\nSEC01\t\t=\t1SEC\nACADN85\t\t=\tP41TABLE +2\n\n\t\tEBANK=\tDELVIMU\nACADN83\t\t2CADR\tCALCN83\n\n# ******************************************\n# Page 764\n# PROGRAM DESCRIPTION: S40.1\t\tDATE: 15 NOV 66\n# MOD N02\t\t\t\tLOG SECTION P40-P47\n# MOD BY ZELDIN AND ADAPTED BY TALAYCO\n#\n# FUNCTIONAL DESCRIPTION\n#\tCOMPUTE INITIAL THRUST DIRECTION(UT) AND INITIAL VALUE OF VG\n#\tVECTOR(VGTIG).\n#\n# CALLING SEQUENCE\n#\tL\tCALL\n#\tL+1\t\tS40.1\n#\n# NORMAL EXIT MODE\n#\tAT L+2 OF CALLING SEQUENCE (GOTO L+2) NORMAL RETURN OR\n#\tERROR RETURN IF NOSOFLAG =1\n#\n# SUBROUTINES CALLED\n#\tLEMPREC\n#\tINITVEL\n#\tCALCGRAV\n#\tMIDGIM\n#\n# ALARM OR ABORT EXIT MODES\n#\tL+2 OF CALLING SEQUENCE, UNSOLVABLE CONIC IF NOSOFLAG=1\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\tWEIGHT/G\tANTICIPATED VEHICLE MASS\tDP B16 KGM\n#\tXDELVFLG\t1=DELTA-V MANEUVER, 0=AIMPT STEER\n#\tF\t\tTHRUST FOR ENGINE USED\n#   IF DELTA-V MANEUVER:\n#\tDELVSIN\t\tSPECIFIED DELTA-V REQUIRED IN\n#\t\t\tINERTIAL COORDS. OF ACTIVE VEHICLE\n#\t\t\tAT TIME OF IGNITION\t\tVECTOR B7 M/CS\n#\tDELVSAB\t\tMAG. OF DELVSIN\t\t\tDP B7 M/CS\n#\tRTIG\t\tPOSITION AT TIME OF IGNITION\tVECTOR B29 M\n#\tVTIG\t\tVELOCITY AT TIME OF IGNITION\tVECTOR B7 M/CS.\n#   IF AIMPT STEER:\n#\tTIG\t\tTIME OF IGNITION\t\tDP B28 CS\n#\tRTARG\t\tPOSITION TARGET TIME\t\tVECTOR B29 M\n#\tCSTEER\t\tC FOR STEER LAW\t\t\tDP B2\n#\tDLTARG\t\tTARGET TIME-IGNITION TIME\tDP B28 CS\n#\n# OUTPUT\n#\tUT\t\tDESIRED THRUST DIRECTION\tVECT. B2 M/(CS.CS)\n#\tVGTIG\t\tINITIAL VALUE OF VELOCITY\n#\t\t\tTO BE GAINED (INERT. COORD.)\tVECTOR B7 M/CS\n#\tDELVLVC\t\tVGTIG IN LOC. VERT. COORDS.\tB7 M/CS\n#\tBDT\t\tV REQUIRED AT TIG -V REQUIRED AT (TIG-2SEC)\n#\t   -GDT\t\tFOR S40.13\t\t\tVECT B7 M/CS\n#\tRTIG\t\tCALC IN S40.1B (AIMPT) FOR S40.2,3\tVECTOR B27M\n#\t\t\tPOSITION AT TIME OF IGNITION\n#\n# DEBRIS\tQTEMP1\n#\t\tMPAC, QPRET\n#\t\tPUSHLIST\n\n\t\tBANK\t14\n\t\tSETLOC\tP40S1\n\t\tBANK\n# Page 765\n\t\tCOUNT*\t$$/S40.1\nS40.1\t\tSTQ\tDLOAD\n\t\t\tQTEMP\n\t\t\tTIG\n\t\tSTORE\tTIGSAVE\nDELVTEST\tBOFF\n\t\t\tXDELVFLG\n\t\t\tS40.1B\nCALCTHET\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tVTIG\n\t\tSTORE\tVINIT\n\t\tVXV\tUNIT\n\t\t\tRTIG\n\t\tSTOVL\tUT\t\t# UP IN UT\n\t\t\tRTIG\n\t\tSTORE\tRINIT\n\t\tVSQ\tPDDL\n\t\t\t36D\n\t\tDMP\tDDV\n\t\t\tTHETACON\n\t\tDMP\tDMP\n\t\t\tDELVSAB\n\t\t\tWEIGHT/G\n\t\tDDV\n\t\t\tF\n\t\tSTOVL\t14D\n\t\t\tDELVSIN\n\n\t\tDOT\tVXSC\n\t\t\tUT\n\t\t\tUT\n\t\tVSL2\tPUSH\t\t# (DELTAV.UP)UP SCALED AT 2(+7) P.D.L. 0\n\t\tBVSU\tPDDL\t\t# DELTA VP SCALED AT 2(+7) P.D.L. 6\n\t\t\tDELVSIN\n\t\t\t14D\n\t\tSIN\tPDVL\n\t\t\t6D\n\t\tVXV\tUNIT\n\t\t\tUT\n\t\tVXSC\tSTADR\n\t\tSTOVL\tVGTIG\t\t# UNIT(VP X UP)SIN(THETAT/2) IN VGTIG.\n\t\tUNIT\tPDDL\t\t# UNIT(DELTA VP) IN P.D.L. 6\n\t\t\t14D\n\t\tCOS\tVXSC\n\t\tVAD\tVXSC\n\t\t\tVGTIG\n\t\t\t36D\n\t\tVSL2 \tVAD\n\t\tSTADR\n# Page 766\n\t\tSTORE\tVGTIG\t\t# VG IGNITION SCALED AT 2(+7) M/CS\n\n\t\tUNIT\n\t\tSTOVL\tUT\t\t# THRUST DIRECTION SCALED AT 2(+1)\n\t\t\tVGTIG\n\t\tPUSH\tCALL\n\t\t\tGET.LVC\t\t# VGTIG IN LV COOR AT 2(+7) M/CS IN DELVLVC\n\t\tGOTO\n\t\t\tQTEMP\nS40.1B\t\tDLOAD\n\t\t\tTIG\n\t\tSTORE\tTDEC1\n\t\tBDSU\n\t\t\tTPASS4\n\t\tSTCALL\tDELLT4\t\t# INTERCEPT TIME -- TIG.\n\t\t\tLEMPREC\n\t\tVLOAD\tSETPD\t\t# LOAD STATE VECTOR AT TIG FOR INITVEL.\n\t\t\tRATT\n\t\t\t0\n\t\tSTORE\tRTIG\n\t\tSTORE\tRINIT\n\t\tUNIT\n\t\tSTOVL\tUNIT/R/\n\t\t\tVATT\n\t\tSTORE\tVTIG\n\t\tSTORE\tVINIT\n\t\tDLOAD\tPDDL\t\t# NUMIT = 0\n\t\t\tZEROVECS\n\t\t\tEPS1\n\t\tBOFF\tDAD\n\t\t\tNORMSW\n\t\t\tSMALLEPS\n\t\t\tEPS2\t\t# EPSILON4 = 10 DEGREES OR 45 DEGREES.\nSMALLEPS\tPUSH\tSXA,1\n\t\t\tRTX1\n\t\tSXA,2\tCALL\n\t\t\tRTX2\n\t\t\tINITVEL\n\t\tVLOAD\tPUSH\n\t\t\tDELVEET3\t# VGTIG = VR - VN.\n\t\tSTORE\tVGTIG\n\t\tUNIT\t\t\t# UT = UNIT (VGTIG)\n\t\tSTODL\tUT\n\t\t\t36D\n\t\tSTCALL\tVGDISP\t\t# CONVERT VGTIG (IN PUSHLIST) TO LOCAL\n\t\t\tGET.LVC\t\t# VERTICAL COORDINATES.\n\t\tGOTO\n\t\t\tQTEMP\n\nEPS1\t\t2DEC*\t2.777777778 E-2*\t# 10 DEGREES AT 1 REVOLUTION\n\n# Page 767\nEPS2\t\t2DEC*\t9.722222222 E-2*\t# 35 DEGREES AT 1 REVOLUTION.\n\nTHETACON\t2DEC\t.31830989 B-8\n\n# Page 768\n# SUBROUTINE NAME:  S40.2,3\t\tMOD. NO. 3, DATE APRIL 4, 1967\n# MODIFICATION BY:  JONATHON D. ADDELSTON (ADAMS ASSOCIATES)\n# MOD. NO. 4:  JULY 18, 1967: PETER ADLER (MIT/IL)\n# MOD. NO. 5:  OCTOBER 18, 1967:  PETER ADLER (MIT/IL)\n# ORIGINALLY BY:  SAYDEAN ZELDIN (MIT INSTRUMENTATION LAB) AND RICHARD TALAYCO (SYSTEM DELVELOPMENT CORP)\n#\n# S40.2,3 COMPUTES \"POINTVSM\" WHICH IS THE HALF-UNIT DESIRED THRUST VECTOR IN STABLE-MEMBER COORDINATES FROM \"UT\"\n# WHICH IS THE SAME VECTOR IN REFERENCE COORDINATES.  IT DETERMINES THE CORRECT VALUES FOR \"SCAXIS\" USING THE +X\n# AXIS FOR DPS, APS, AND RCS BURNS.  THE \"WINGS-LEVEL HEADS-UP\" LM ORIENTATION IS THEN COMPUTED IN REFERENCE\n# COORDINATES.  THESE VECTORS ALSO DEFINE THE \"PREFERRED IMU ORIENTATION\".  UPON COMPLETION OF THIS CALCULATION,\n# THE \"PREFERRED ATTITUDE COMPUTED\" FLAG IS SET (PFRATFLG).\n#\n# CALLING SEQUENCE:\n#\tL\tCALL\t\t\t# INTERPRETIVE CALL.\n#\tL +1\t\tS40.2,3\n#\tL +2\t(RETURN)\t\t# GIMBAL ANGLE VECTOR IN MPAC.\n#\n# SUBROUTINES CALLED:  NONE.\n#\n# NORMAL RETURN:  L +2 (SEE CALLING SEQUENCE ABOVE).\n#\n# ALARM/ABORT MODES:  NONE.\n#\n# INPUT:\n#\t1.\tREFSMMAT\tMATRIX FROM REFERENCE TO STABLE-MEMBER COORDINATES SCALED AT 2.\n#\t2.\tUT\t\tHALF-UNIT DESIRED THRUST DIRECTION.\n#\t3.\tRTIG\t\tPOSITION AT TIG IN REFERENCE COORDINATES.\n#\n# OUTPUT:\n#\t1.\t`XSCREF'\tWINGS-LEVEL HEADS-UP LM ORIENTATION\n#\t\t`YSCREF'\tIN REFERENCE COORDINATES\n#\t\t`ZSCREF'\t(PREFERRED IMU ORIENTATION).\n#\t2.\tPOINTVSM\tDESIRED THRUST DIRECTION IN STABLE-MEMBER COORDINATES.\n#\t3.\tSCAXIS\t\tHALF-UNIT OF AXIS TO ALIGN IN STABLE-MEMBER COORDINATES.\n#\t4.\tPFRATFLG\tINTERPRETIVE FLAG.  ON: PREFERRED ORIENTATION COMPUTED; OFF: NOT COMPUTED.\n#\n# DEBRIS:  NONE\n# Page 769\n\n\t\tCOUNT*\t$$/S40.2\nS40.2,3\t\tVLOAD\t\t\t# UT:  DESIRED THRUST DIRECTION (HALF-UNIT)\n\t\t\tUT\t\t# (PUT INTO TOP OF PUSH-DOWN-LIST.)\n\t\tMXV\tVSL1\t\t# TRANSFORM THRUST DIRECTION TO STABLE-\n\t\t\tREFSMMAT\t# MEMBER FROM REFERENCE COORDS (RESCALE).\n\t\tSTOVL\tPOINTVSM\t# SAVE FOR \"VECPOINT\" ROUTINE (LEMMANU).\n\t\t\tUNITX\t\t# SCAXIS SET TO +X, FOR P40 AND P42 AND\n\t\tSTOVL\tSCAXIS\t\t# FOR P41 IF RCS NOT -X,+Y,-Y,+Z,-Z.\n\n\t\t\tUT\t\t# ASSUME +X BURN ALWAYS, EVEN FOR RCS.\nPLUSX\t\tSTORE\tXSCREF\t\t# XSCREF = UT (DESIRED THRUST DIRECTION)\n\t\tVXV\tUNIT\t\t# RTIG = POSITION AT TIME-OF-IGNITION.\n\t\t\tRTIG\t\t# YSCREF = UNIT(UT X RTIG)\n\t\tPDDL\tBHIZ\n\t\t\t36D\t\t# TEST MAGNITUDE OF UT X RTIG\n\t\t\tFIXY\t\t# IF SMALL, USE UT X VTIG AS YSC\nSTORY\t\tVLOAD\tSTADR\n\t\tSTORE\tYSCREF\n\t\tVXV\tVSL1\t\t# COMPUTE (YSCREF X XCREF), BUT FOR A\n\t\t\tXSCREF\t\t# RIGHT HANDED SYSTEM, NEED (X CROSS Y).\n\t\tVCOMP\t\t\t# ZSCREF = - (YSCREF X XSCREF)\n\t\tSTORE\tZSCREF\t\t#        = + (XSCREF X YSCREF)\n\n\t\tSET\tRVQ\n\t\t\tPFRATFLG\nFIXY\t\tVLOAD\tVXV\t\t# IN THIS CASE,\n\t\t\tXSCREF\t\t# YSCREF = UNIT(XSCREF X VTIG)\n\t\t\tVTIG\n\t\tUNIT\tPUSH\n\t\tGOTO\n\t\t\tSTORY\n# Page 770\n# SUBROUTINE S40.8\n# MODIFIED APRIL 3, 1968 BY PETER ADLER, MIT/IL\n#\n# DESCRIPTION\n#\tS40.8 UPDATES THE VELOCITY-TO-BE-GAINED VECTOR, VG, (AND FOR LAMBERT TARGETTED BURNS ALSO EXTRAPOLATES VG\n#\tUSING THE BDT VECTOR) COMPUTES THE TIME FOR ISSUING THE ENGINE OFF COMMAND, TGO, AND CALLS THE ROUTINE\n#\t\"FINDCDUW\", WHICH GENERATES STEERING COMMANDS FOR THE DAP.\n#\n# CALLING SEQUENCE\n#\tL-1\tCALL\n#\tL\t\tS40.8\n#\tL+1\t\t\tINTERPRETIVE RETURN\n#\n# ALARM\n#\tIF VG . DELVREF IS NEGATIVE (VG AND DELVREF OVER 90 DEGREES APART), BYPASS TGO AND STEERING COMPUTATIONS\n#\tAND SET ALARM 1407.  RETURN TO CALLER NORMALLY.\n#\n# INPUT AND INITIALIZATION\n#\tVGPREV\t\tREFERENCE\t2(7) M/CS\n#\tDELVREF\t\tREFERENCE\t2(7) M/CS\n#\tBDT\t\tREFERENCE\t2(7) M/CS\n#\tTDECAY\t\tTAIL-OFF TIME\t2(28) CS\n#\tXDELVFLG\t1 = EXTERNAL DELTA-V; 0 = LAMBERT (AIMPOINT)\n#\tSTEERSW\t\t1 = DO STEERING AND TGO COMPUTATIONS; 0 = VG UPDATE ONLY\n#\tFIRSTFLG\t1 = GONE TO LAMBERT AT LEAST ONCE; 0 = HAVEN'T GONE TO LAMBERT YET.\n#\n# NOTE:  VGTIG EQUALS VGPREV\n#\n# OUTPUT\n#\tSTEERSW\t\tSEE INPUT\n#\tINPULSW\t\t1 = ENGINE OFF IN TGO CENTISECONDS; 0 = CONTINUE BURN\n#\tTGO\t\tTIME TO CUT-OFF 2(28) CS\n# \tSEE FINDCDUW FOR STEERING OUTPUTS.\n#\n# SUBROUTINE CALLED\n#\tFINDCDUW\n#\n# DEBRIS\n#\tMPACS, PUSHLIST\n\n\t\tCOUNT*\t$$/S40.8\n# Page 771\nS40.8\t\tBOF\t\t\t# GENERATE VR IF NOT EXTERNAL DELTA-V BURN\n\t\t\tXDELVFLG\n\t\t\tRASTEER1\n\t\tVLOAD\tVSU\n\t\t\tVGPREV\n\t\t\tDELVREF\nVGAIN*\t\tSTORE\tVG\t\t# VELOCITY TO BE GAINED SCALED AT (7) M/CS\n\t\tMXV\tVSL1\n\t\t\tREFSMMAT\n\t\tSTORE\tUNFC/2\nBDTOK\t\tVLOAD\tABVAL\n\t\t\tVG\n\t\tSTORE\tVGDISP\nTGDCALC\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tVG\n\t\tSTOVL\tVGPREV\n\t\t\tDELVREF\n\t\tBOFF\tVCOMP\n\t\t\tSTEERSW\n\t\t\tQPRET\n\t\tUNIT\n\t\tDOT\tPUSH\n\t\t\tVG\n\t\tBPL\tDDV\n\t\t\tALARMIT\t\t# DELV IS MORE THAN 90 DEGREES FROM VG.\n\t\t\tVEX\n\t\tDAD\tDMP\n\t\t\tDPHALF\n\t\tSR\tDDV\n\t\t\t10D\n\t\t\t36D\n\t\tDMP\tDAD\n\t\t\t-FOURDT\n\t\t\tTDECAY\n\t\tSTORE\tTGO\n\t\tDAD\n\t\t\tPIPTIME\n\t\tSTODL\tTIG\n\t\t\tTGO\n\t\tDSU\tBPL\n\t\t\tFOURSECS\t# 400 CS\n\t\t\tFINDCDUW -2\n\t\tSET\tCLRGO\n\t\t\tIMPULSW\n\t\t\tSTEERSW\n\t\t\tQPRET\n\nALARMIT\t\tEXIT\n\n# Page 772\n\t\tTC\tALARM\n\t\tOCT\t01407\n\t\tTC\tINTPRET\n\t\tGOTO\t\t\t# SKIP TGO COMPUTATION BUT CALL FINDCDUW.\n\t\t\tFINDCDUW -2\t# FINDCDUW WILL EXIT TO UPDATEVG +3.\n\n-FOURDT\t\t2DEC\t-800 B-18\t# -4 (200 CS.) B(-18)\nFOURSECS\t2DEC\t400\t\t# 400 CS SCALED AT 2(+28) CS\n2VEXHUST\t=\tVEX\n\n# Page 773\n# NAME:  \t\tS40.13 -- TIMEBURN\n#\n# FUNCTION\t\t(1) DETERMINE WHETHER A GIVEN COMBINATION OF VELOCITY TO\n#\t\t\tBE GAINED AND ENGINE CHOICE RESULT IN A BURN TIME\n#\t\t\tSUFFICIENT TO ALLOW STEERING AT THE VEHICLE DURING THE\n#\t\t\tBURN\n#\t\t\t(2) THE MAGNITUDE OF THE RESULTING BURN TIME -- IF IT\n#\t\t\tIS SHORT -- AND THE ASSOCIATED TIME OF THE ENGINE OFF\n#\t\t\tSIGNAL\n#\n# CALLING SEQUENCE\tVIA FINDVAC AS A NEW JOB\n#\n# INPUT\t\t\tVGTIG -- VELOCITY TO BE GAINED VECTOR (METERS/CS) AT +7\n#\t\t\tWEIGHT/G -- MASS OF VEHICLE IN KGM AT +16\n#\t\t\tF -- APS ENGINE THRUST IN M.NEWTONS AT +7\n#\t\t\t\tAND ALSO FOR RCS ENGINE\n#\t\t\tMDOT -- RATE OF DECREASE OF VEHICLE MASS DURING ENGINE\n#\t\t\t\tBURN IN KILOGRAMS/CS AT +3.  THIS SCALING MAY\n#\t\t\t\tREQUIRE MODIFICATION FOR SATURN BURNS.\n#\t\t\tENG1FLAG -- SWITCH TO DECIDE WHETHER APS OR DPS ENGINE IS USED\n#\t\t\t\t=0\tDPS\n#\t\t\t\t=1\tAPS\n#\n# OUTPUT\t\tIMPULSW\t\tZERO FOR STEERING\n#\t\t\t\t\tONE FOR ATTITUDE HOLD\n#\t\t\tNOTHROTL\tZERO FOR THROTTLING\n#\t\t\t\t\tONE TO INHIBIT THROTTLING\n#\t\t\tTGO\t\tTIME TO BURN IN CS\n#\n#\t\t\tTHE QUANTITY M.NEWTON = 10000 NEWTONS WILL BE USED TO EXPRESS\n#\t\t\tFORCE.\n\n\t\tEBANK=\tTGO\n\t\tCOUNT*\t$$/40.13\nS40.13\t\tTC\tINTPRET\n\t\tSETPD\tCLEAR\n\t\t\t00D\n\t\t\tIMPULSW\t\t# ASSUME NO STEERING UNTIL FOUND OTHERWISE\n\t\tVLOAD\tABVAL\n\t\t\tVGTIG\t\t# VELOCITY TO BE GAINED AT +7\n\t\tPDDL\tDMP\t\t# 00D = MAG OF VGTIG AT +7\n\t\t\t4SEC(17)\t# CORRECT VG FOR 4 SECS OF 2 JET ULLAGE\n\t\t\tFRCS2\n\t\tDDV\tSL1\t\t# SCALE\n\t\t\tWEIGHT/G\n\t\tBDSU\tPUSH\n\t\tBOFF\tSET\n\t\t\tAPSFLAG\n\t\t\tS40.13D\t\t# FOR DPS ENGINE\n\t\t\tNOTHROTL\n\t\tDLOAD\tDDV\t\t# 00D = MAG OF VGTIG CORRECTED\n\t\t\tK1VAL\t\t# M.NEWTONS-CS AT +24\n\t\t\tWEIGHT/G\n\t\tBDSU\tBMN\n# Page 774\n\t\t\t00D\n\t\t\tS40.131\t\t# TGO LESS THAN 100 CS\n\t\tPDDL\tDMP\t\t# 02D = TEMP1 AT +7\n\t\t\tMDOT\n\n# MDOT REPRESENTS THE RATE OF DECREASE OF VEHICLE MASS DURING ENGINE\n# BURN IN KILOGRAMS/CS.  WHEN SATURN IS USED, THE SCALING MAY\n# REQUIRE ADJUSTMENT.\n\n\t\t\t3.5SEC\t\t# 350 CS AT +14\n\t\tBDSU\tPDDL\n\t\t\tWEIGHT/G\n\t\t\tF\n\t\tDMP\tSR2\t\t# SCALE\n\t\t\t5SECS\n\t\tDDV\tPUSH\t\t# 04D = TEMP2\n\t\tBDSU\tBPL\n\t\t\t02D\n\t\t\tS40.13D\n\t\tDLOAD\tBDDV\n\t\tDMP\tDAD\n\t\t\t5SECS\n\t\t\t1SEC2D\t\t# 100 CS AT +14\n\t\tGOTO\n\t\t\tS40.132\nS40.131\t\tDLOAD\tDMP\n\t\t\tWEIGHT/G\n\t\tSR1\tPUSH\n\t\tDAD\tDDV\n\t\t\tK2VAL\t\t# M.NEWTON CS AT +24\n\t\t\tK3VAL\t\t# M.NEWTON CS AT +10\nS40.132\t\tSET\tEXIT\n\t\t\tIMPULSW\nS40.132*\tTC\tTPAGREE\n\t\tCA\tMPAC\n\t\tXCH\tL\n\t\tCA\tZERO\n\t\tDXCH\tTGO\n\t\tTCF\tS40.134\n\nS40.13D\t\tDLOAD\tDMP\t\t# FOR DPS ENGINE\n\t\t\t00D\n\t\t\tWEIGHT/G\n\t\tPUSH\tBON\n\t\t\tAPSFLAG\n\t\t\tAPSTGO\n\t\tDDV\tCLEAR\n\t\t\tS40.136\n\t\t\tNOTHROTL\n\t\tBOV\tPUSH\n# Page 775\n\t\t\tS40.130V\nS40.127\t\tDSU\tBPL\n\t\t\t6SEC\t\t# 600.0 CS AT +14\n\t\t\tS40.138\n\t\tDAD\tGOTO\n\t\t\t6SEC\n\t\t\tS40.132\nS40.133\t\tEXIT\nS40.134\t\tTC\tPHASCHNG\n\t\tOCT\t00003\n\t\tTC\tENDOFJOB\nS40.130V\tDLOAD\tSR4\t\t# RECOMPUTED TGO IN TIMER UNITS\n\t\tDDV\n\t\t\tS40.136_\t# S40.136 SHIFTED LEFT 10\n\t\tSTORE\tTGO\n\t\tEXIT\n\t\tTCF\tS40.134\t\t# REJOIN COMMON CODING FOR RESTART PROTECT\n\nS40.138\t\tDSU\tBPL\n\t\t\t89SECS\n\t\t\tSTORETGO\n\t\tSET\n\t\t\tNOTHROTL\nSTORETGO\tDLOAD\t\t\t# LOAD TGO AT 2(14)\n\t\tEXIT\n\t\tTCF\tS40.132*\n\nAPSTGO\t\tDDV\tSL2\n\t\t\tFAPS\n\t\tGOTO\n\t\t\tSTORETGO +1\n1SEC2D\t\t2DEC\t100.0 B-14\t# 100.0 CS AT +14\n\n3.5SEC\t\t2DEC\t350.0 B-13\t# 350 CS AT +13\n\n5SECS\t\t2DEC\t500.0 B-14\t# 500.0 CS AT +14\n\n6SEC\t\t2DEC\t600.0 B-14\t# 600.0 CS AT +14\n\n89SECS\t\t2DEC\t8900.0 B-14\n\n# FUNCTION\t\t(1) GENERATES REQUIRED VELOCITY AND VELOCITY-TO-BE-GAINED\n#\t\t\tVECTORS FOR USE DURING AIMPOINT MANEUVERS EVERY TWO\n#\t\t\tCOMPUTATION CYCLES (4 SECONDS).\n#\t\t\t(2) UPDATES THE B VECTOR WHICH IS USED IN THE FINAL\n#\t\t\tCALCULATION OF EXTRAPOLATING THE VELOCITY-TO-BE-GAINED\n#\t\t\tTHROUGH ONE 2-SECOND INTERVAL INTO THE FUTURE.\n#\n# CALLING SEQUENCE\tVIA FINDVAC AS NEW JOB.\n#\n# INPUT\t\t\tRN\tACTIVE VEHICLE RADIUS VECTOR IN METERS AT +29\n#\t\t\tVN\tACTIVE VEHICLE VELOCITY VECTOR IN METERS/CS AT +7\n# Page 776\n#\t\t\tVPREV\tLAST COMPUTED VELOCITY REQUIRED VECTOR IN\n#\t\t\t\tMETERS/CS AT +7.\n#\t\t\tTIG\tTIME OF IGNITION IN CS AT +28.\n#\t\t\tDLTARG\tCOMPUTATION CYCLE INTERVAL = 200 CS AT +28.\n#\t\t\tPIPTIME\tTIME OF RN AND VN IN CS AT +28.\n#\t\t\tGDT/2\tHALF OF VELOCITY GAINED IN DELTA T TIME DUE TO\n#\t\t\t\tACCELERATION OF GRAVITY IN METERS/CS AT +7.\n#\t\t\tDELVREF\tCHANGE IN VELOCITY DURING LAST 2 SEC IN\n#\t\t\t\tMETERS/CS AT +7.\n#\n# OUTPUT\t\tVGPREV\tVELOCITY TO BE GAINED VECTOR IN METERS/CS AT +7.\n#\t\t\tVGDISP\tMAG OF VGPREV FOR DISPLAY PURPOSES.\n#\t\t\tVRPREV\tVELOCTY REQUIRED VECTOR IN METERS/CS AT +7.\n#\t\t\tBDT\tB VECTOR IN METERS/CS AT +7.\n#\n# SUBROUTINES USED\tINITVEL\n\n\t\tEBANK=\tVGPREV\n\t\tCOUNT*\t$$/S40.9\nS40.9\t\tTC\tINTPRET\n\t\tSETPD\n\t\t\t00D\n\t\tSET\tDLOAD\n\t\t\tAVFLAG\t\t# SET AVFLAG FOR LEM ACTIVE\n\t\t\tHI6ZEROS\n\t\tPDDL\n\t\t\tEPS1\n\t\tBOFF\tDAD\t\t# EPSILON4 = 10 OR 45 DEGREES.\n\t\t\tNORMSW\n\t\t\tEPSSMALL\n\t\t\tEPS2\nEPSSMALL\tPUSH\tCALL\n\t\t\tHAVEGUES\nENDS40.9\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t2\n\t\tTCF\tENDOFJOB\n\nRASTEER1\tVLOAD\tABVAL\n\t\t\tRN\n\t\tLXC,2\tSL*\n\t\t\tRTX2\n\t\t\t0,2\n\t\tSTOVL\tRMAG\n\t\t\tRTARG\n\t\tVSU\tRTB\n\t\t\tRN\n\t\t\tNORMUNX1\n\t\tSTODL\tIC\n\t\t\t36D\t\t# C(36D) = ABVAL(C)\n\t\tXAD,2\tSL*\n\t\t\tX1\n# Page 777\n\t\t\t0,2\n\t\tSTORE\t30D\n\t\tNORM\tDMP\n\t\t\tX2\n\t\t\tRMAG\n\t\tNORM\tXAD,2\n\t\t\tX1\n\t\t\tX1\n\t\tSXA,2\n\t\t\tMUSCALE\n\t\tSTODL\tR1C\t\t#\t\t\t2(+56 -X)\n\t\t\t30D\n\t\tSR1\tPDDL\n\t\t\tRMAG\n\t\tSR1\tPDDL\n\t\t\tRTMAG\n\t\tSR1\tDAD\n\t\tDAD\tSTADR\n\t\tSTORE\tSS\t\t# SS = (R1 + R2 + C)/2\n\t\tDSU\tDMP\n\t\t\t30D\n\t\t\tMU/A\n\t\tBDSU\n\t\t\tMUASTEER\n\t\tPDDL\tDSU\n\t\t\tSS\n\t\t\tRMAG\n\t\tNORM\tSR1\n\t\t\tX1\n\t\tDDV\tDMP\n\t\t\tR1C\n\t\tXSU,2\tSL*\n\t\t\tX1\n\t\t\t1,2\n\t\tLXA,2\n\t\t\tMUSCALE\n\t\tSQRT\tSIGN\n\t\t\tGEOMSGN\n\t\tSTORE\t32D\t\t# + OR - A\n\t\tDLOAD\tDMP\n\t\t\tSS\n\t\t\tMU/A\n\t\tBDSU\n\t\t\tMUASTEER\n\t\tPDDL\tDSU\n\t\t\tSS\n\t\t\tRTMAG\n\t\tNORM\tSR1\n\t\t\tX1\n\t\tDDV\tDMP\n\n# Page 778\n\t\t\tR1C\n\t\tXSU,2\tSL*\n\t\t\tX1\n\t\t\t1,2\n\t\tSQRT\tPDDL\t\t# -B (NO SIGN)\n\t\t\tSS\n\t\tDSU\tDDV\n\t\t\t30D\n\t\t\tSS\n\t\tSQRT\tPUSH\n\t\tSR1\tASIN\n\t\tDMP\tPDDL\n\t\t\t2PI+3\n\t\tPDDL\tDDV\n\t\t\t30D\n\t\t\tSS\n\t\tBOV\n\t\t\t+1\n\t\tSQRT\tDMP\n\t\tSR3\tBDSU\n\t\tSIGN\tPDDL\n\t\t\tGEOMSGN\n\t\t\t2PI+3\n\t\tSR2\tDSU\n\t\tDMP\tPDDL\n\t\t\tSS\n\t\t\tSS\n\t\tSR3\tSQRT\n\t\tDMP\n\t\tPDDL\tSL3\n\t\t\tMUASTEER\n\t\tSQRT\tBDDV\n\t\tDSU\tDAD\n\t\t\tTPASS4\n\t\t\tPIPTIME\n\t\tSTODL\t30D\n\t\tSIGN\n\t\t\t30D\t\t# B WITH SIGN\n\t\tSTORE\t30D\n\t\tBON\tVLOAD\n\t\t\tNORMSW\n\t\t\t180MESS\n\t\t\tIC\n\t\tVSU\tUNIT\n\t\t\tUNIT/R/\n\t\tVXSC\tPDVL\n\t\t\t30D\n\t\t\tIC\n\t\tVAD\tUNIT\n\t\t\tUNIT/R/\n# Page 779\nGETVRVG1\tVXSC\tVAD\n\t\t\t32D\nGETVRVG2\tLXC,2\tVSR*\n\t\t\tRTX2\n\t\t\t0 \t-1,2\n\t\tSTORE\tVIPRIME\n\t\tGOTO\n\t\t\tASTREND -2\n180MESS\t\tVLOAD\tDOT\n\t\t\tIC\n\t\t\tUNIT/R/\n\t\tBMN\tVLOAD\n\t\t\tNEGPROD\n\t\t\tIC\n\t\tVSR1\tPDVL\n\t\t\tUNIT/R/\n\t\tVSR1\tVAD\n\t\tUNIT\n\t\tPUSH\tVCOMP\t\t# FOR A\n\t\tVXV\tSIGN\n\t\t\tUN\n\t\t\tGEOMSGN\n\t\tUNIT\tVXSC\n\t\t\t30D\n\t\tPDVL\t\t\t# UNIT(IC-IR)\t+-B\n\t\tGOTO\n\t\t\tGETVRVG1\nNEGPROD\t\tVLOAD\tVSR1\n\t\t\tUNIT/R/\n\t\tPDVL\tVSR1\n\t\t\tIC\n\t\tVSU\tUNIT\n\t\tPUSH\n\t\tVXV\tSIGN\n\t\t\tUN\t\t# FOR B\n\t\t\tGEOMSGN\n\t\tUNIT\tVXSC\n\t\t\t32D\n\t\tPDVL\n\t\tVXSC\tVAD\n\t\t\t30D\n\t\tGOTO\n\t\t\tGETVRVG2\n\t\tVSU\n\t\t\tVN1\nASTREND\t\tSTORE\tDELVEET3\nFIRSTTME\tSLOAD\tBZE\n\t\t\tRTX2\n\t\t\tGETGOBL\n\t\tVLOAD\tGOTO\t\t# NO OBLATENESS COMP IF IN MOON SPHERE\n# Page 780\n\t\t\tDELVEET3\n\t\t\tNOGOBL\nGETGOBL\t\tVLOAD\tUNIT\t\t# CALCULATE OBLATENESS TERM.\n\t\t\tRN\n\t\tDLOAD\tDSU\n\t\t\tPIPTIME\t\t#              2\n\t\t\tGOBLTIME\t# G    = -(MU/R )(UNITGOBL)(T-TIG)\n\t\tDMP\tDDV\t\t#  OBL\n\t\t\tEARTHMU\n\t\t\t34D\t\t# 34D = /RN/ (2) FROM UNIT OPERATION.\n\t\tVXSC\tVAD\n\t\t\tUNITGOBL\n\t\t\tDELVEET3\t# OUTPUT FROM INITVEL VG = VR - VN\nNOGOBL\t\tSTORE\tDELVEET3\t# VG = VR + GOBL - VN\n\t\tGOTO\n\t\t\tVGAIN*\n\n2PI+3\t\t2DEC\t3.141592653 B-2\n\n# Page 781\n# TRIMGIMB\t(FORMERLY S40.6)\n# MOD 0\t\t24 FEB 67\tPETER ADLER\n#\n# FUNCTION:\n#\tTRIMS DPS ENGINE TO MINIMIZE THRUST/CG OFFSET.  ENGINE IS GIMBALLED TO FULL + PITCH AND + ROLL (TO LOCK)\n#\tFOR REFERENCE AND IS THEN BROUGHT BACK TO TRIM POSITION BY RUNNING FOR THE PROPER TIMES (TO BE\n#\tSPECIFIED BY GAEC) IN - PITCH AND - ROLL.\n#\n# CALLING SEQUENCE:\n#\tVIA WAITLIST FROM R03\n#\n# INPUT:\n#\tPITTIME\t\tTIME TO RUN FROM FULL + PITCH TO TRIM (CS)\n#\tROLLTIME\tTIME TO RUN FROM FULL + ROLL TO TRIM (CS)\n#\n# SUBROUTINES USED:\n#\tWAITLIST, FIXDELAY, VARDELAY, FLAGUP, FLAGDOWN, NOVAC\n\n\t\tCOUNT*\t$$/S40.6\n\t\tEBANK=\tROLLTIME\t# OCTAL MASKS: PRIO5=05000 EBANK5=02400\n\nTRIMGIMB\tTC\tDOWNFLAG\t# GMBDRVSW FLAG IS SET WHEN EITHER ROLL OR\n\t\tADRES\tGMBDRVSW\t# PITCH IS COMPLETED, WHICHEVER IS FIRST.\n\n\t\tCS\tPRIO5\t\t# TURN OFF - PITCH, - ROLL, IF ON.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tCAF\tEBANK5\t\t# TURN ON + PITCH, + ROLL.\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\t\tTC\tFIXDELAY\t# WAIT ONE MINUTE TO MAKE SURE ENGINE IS\n\t\tDEC\t6000\t\t# AT FULL + PITCH AND FULL + ROLL\n\t\tCS\tEBANK5\t\t# TURN OFF + PITCH, + ROLL.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\t\tCAF\tPRIO5\t\t# TURN ON - PITCH, - ROLL.\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\t\tCAE\tPITTIME\t\t# GET TIME TO SHUT OFF - PITCH AND SET UP\n\t\tTC\tTWIDDLE\t\t# TWIDDLE-TASK TO TURN IT OFF THEN\n\t\tADRES\tPITCHOFF\n\n\t\tCAE\tROLLTIME\t# GET TIME TO SHUT OFF - ROLL AND GO AWAY\n\t\tTC\tVARDELAY\t# UNTIL THEN\n\t\tCS\tBIT12\n\t\tEXTEND\n\t\tWAND\tCHAN12\t\t# SHUT OFF ROLL\nROLLOVER\tCA\tFLAGWRD6\t# IF HERE INLINE (ROLL DONE) IS PITCH DONE\n\t\tMASK\tGMBDRBIT\t# IF HERE FROM PITCHOFF, IS ROLL DONE?\n\t\tEXTEND\n\t\tBZF\tPITCHOFF +4\t# NO.  SET FLAG, ROLL OR PITCH DONE.\n\t\tCAF\tPRIO10\t\t# RETURN TO R03.\n\t\tTC\tNOVAC\n\t\tEBANK=\tWHOCARES\n# Page 782\n\t\t2CADR\tTRIMDONE\n\n\t\tTC\tTASKOVER\nPITCHOFF\tCS\tBIT10\n\t\tEXTEND\n\t\tWAND\tCHAN12\t\t# SHUT OFF PITCH\n\t\tTCF\tROLLOVER\t# SEE IF ROLL HAS FINISHED ALSO.\n\t\tTC\tUPFLAG\t\t# ROLL DONE; OR PITCH DONE; BUT NOT BOTH.\n\t\tADRES\tGMBDRVSW\n\t\tTC\tTASKOVER\n\n# Page 783\n# SUBROUTINE NAME:  S41.1\tMOD. NO. 0\tDATE: FEBRUARY 28, 1967\n# MOD. NO. 1\tDATE: JANUARY 23, 1968, BY PETER ADLER (MIT/IL)\n#\n# AUTHOR: JONATHON D. ADDLESTON (ADAMS ASSOCIATES)\n#\n# S41.1 PERFORMS THE COORDINATE SYSTEM TRANSFORMATION FROM THE REFERENCE FRAME TO THE BODY OF THE LM.\n# SPECIFICALLY, IT IS USED TO TRANSFORM A VELOCITY (SCALED AT 2(+7) METERS/CENTISECOND) FROM REFERENCE TO LM AXIS\n# COORDINATES.  FIRST THE VECTOR IS TRANSFORMED TO THE STABLE MEMBER COORDINATES BY THE MATRIX REFSMMAT.  THIS\n# LEAVES THE VECTOR IN MPAC, SCALED AT 2(+8) METERS/CENTISECOND.  THEN\n# THE SUBROUTINE CDUTRIG IS CALLED TO SET UP THE DOUBLE-PRECISION CDU VECTOR ALONG WITH ITS SINES AND COSINES.\n# THE VECTOR IS THEN TRANSFORMED FROM STABLE MEMBER COORDINATES TO SPACECRAFT (OR LM) COORDINATES BY THE\n# SUBROUTINE *SMNB*.  FINALLY, THE VECTOR IS RESCALED TO 2(+7) METERS/CENTISECOND, AND CONTROL IS RETURNED BO THE\n# CALLER WITH C(MPAC) = VELOCITY(LM).\n#\n# CALLING SEQUENCE:\n#\tL\tVLOAD\tCALL\n#\tL +1\t\tVELOCITY(REF)\t\t# SCALED AT 2(+7) M/CS IN REFERENCE COORDS.\n#\tL +2\t\tS41.1\n#\tL +3\tSTORE\tVELOCITY(LM)\t\t# SCALED AT 2(+7) M/CS IN LM BODY AXIS SYS.\n#\n# SUBROUTINES CALLED:\n#\t1.\tCDUTRIG,\n#\t\t\tWHICH CALLS CDULOGIC.\n#\t2.\t*SMNB*\n#\n# NORMAL RETURN:  L +3 (SEE CALLING SEQUENCE, ABOVE.)\n#\n# ALARM/ABORT MODES:  NONE.\n#\n# RESTART PROTECTION:  NONE.\n#\n# Page 784\n# INPUT:\n#\t1.\tREFSMMAT.\n#\t2.\tCDUX, CDUY, CDUZ.\n#\t3.\tVELOCITY (REF) IN MPAC.\n#\n# OUTPUT:\n#\t1.\tCSUSPOT:\tDOUBLE PRECISION CDU VECTOR, ORDERED Y,Z,X.\n#\t2.\tSINCDU:\t\tHALF SINES OF CDUSPOT COMPONENTS\n#\t3.\tCOSCDU:\t\tHALF COSINES OF CDUSPOT COMPONENTS.\n#\t4.\tMPAC:\t\tVELOCITY(LM) (SCALED AT 2(+7) METERS/CENTISECOND)\n#\n# DEBRIS:  NONE.\n#\n# CHECKOUT STATUS:  CODED\n\n\t\tCOUNT*\t$$/S41.1\nS41.1\t\tMXV\tVSL1\t\t# CONVERT VECTOR IN MPAC FROM REF AT 2(+7)\n\t\t\tREFSMMAT\t# TO SM AND RESCALE DUE TO HALF-UNIT MATRIX\n\t\tGOTO\t\t\t# CONVERT TO BODY AT 2(+7) USING PRESENT\n\t\t\tCDU*SMNB\t# CDU ANGLES.  CDU*SMNB WILL RETURN\n\t\t\t\t\t# VIA RVQ TO THE CALLER OF S41.1.\n"
  },
  {
    "path": "Luminary099/P51-P53.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP51-P53.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t926-983\n# Mod history:\t2009-05-31 HG\tTranscribed from page images.\n#\t\t2009-06-07 RSB\tCorrected a typo.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 926\n# PROGRAM NAME -- PROG52\t\t\tDATE -- JAN 9, 1967\n# MOD NO -- 0\t\t\t\t\tLOG SECTION -- P51-P53\n# MODIFICATION BY -- LONSKE\t\t\tASSEMBLY -- SUNDANCE REV 46\n#\n# FUNCTIONAL DESCRIPTION --\n#\n#\tALIGNS THE IMU TO ONE OF THREE ORIENTATIONS SELECTED BY THE ASTRONAUT.  THE PRESENT IMU ORIENTATION IS KNOWN\n#\tAND IS STORED IN REFSMMAT.  THE THREE POSSIBLE ORIENTATIONS MAY BE:\n#\n#\t(A)\tPREFERRED ORIENTATION\n#\n#\t\tAN OPTIMUM ORIENTATION FOR A PREVIOUSLY CALCULATED MANEUVER.  THIS ORIENTATION MUST BE CALCULATED AND\n#\t\tSTORED BY A PREVIOUSLY SELECTED PROGRAM.\n#\n#\t(B)\tNOMINAL ORIENTATION\n#\n#\t\tX   = UNIT ( R )\n#\t\t-SM\n#\n#\t\tY   = UNIT (V X R)\n#\t\t SM\n#\n#\t\tZ   = UNIT (X   X Y  )\n#\t\t SM          SM    SM\n#\n#\t\tWHERE:\n#\n#\t\tR = THE GEOCENTRIC RADIUS VECTOR AT TIME T(ALIGN) SELECTED BY THE ASTRONAUT\n#\t\t-\n#\n#\t\tV = THE INERTIAL VELOCITY VECTOR AT TIME T(ALIGN) SELECTED BY THE ASTRONAUT\n#\t\t-\n#\n#\t(C)\tRERSMMAT ORIENTATION\n#\n#\t(D)\tLANDING SITE -- THIS IS NOT AVAILABLE IN SUNDANCE\n#\n#\tTHIS SELECTION CORRECTS THE PRESENT IMU ORIENTATION.  THE PRESENT ORIENTATION DIFFERS FROM THAT TO WHICH IT\n#\tWAS LAST ALIGNED ONLY DUE TO GYRO DRIFT (I.E., NEITHER GIMBAL LOCK NOR IMU POWER INTERRUPTION HAS OCCURRED\n#\tSINCE THE LAST ALIGNMENT).\n#\n#\tAFTER A IMU ORIENTATION HAS BEEN SELECTED ROUTINE S52.2 IS OPERATED TO COMPUTE THE GIMBAL ANGLES USING THE\n#\tNEW ORIENTATION AND THE PRESENT VEHICLE ATTITUDE.  CAL52A THEN USES THESE ANGLES, STORED IN THETAD,+1,+2, TO\n#\tCOARSE ALIGN THE IMU.  THE STARS SELECTION ROUTINE, R56, IS THEN OPERATED.  IF 2 STARS ARE NOT AVAILABLE AN ALARM\n#\tIS FLASHED TO NOTIFY THE ASTRONAUT.  AT THIS POINT THE ASTRONAUT WILL MANEUVER THE VEHICLE AND SELECT 2 STARS\n# \tEITHER MANUALLY OR AUTOMATICALLY.  AFTER 2 STARS HAVE BEEN SELECTED THE IMU IS FINE ALIGNED USING ROUTINE R51.  IF\n# \tTHE RENDEZVOUS NAVIGATION PROCESS IS OPERATING (INDICATED BY RNDVZFLG) P20 IS DISPLAYED.  OTHERWISE P00 IS\n#\tREQUESTED.\n#\n# CALLING SEQUENCE --\n#\n# Page 927\n#\tTHE PROGRAM IS CALLED BY THE ASTRONAUT BY DSKY ENTRY.\n#\n# SUBROUTINES CALLED --\n#\n#\t1. FLAGDOWN\t\t 7. S52.2\t\t13. NEWMODEX\n#\t2. R02BOTH\t\t 8. CAL53A\t\t14. PRIOLARM\n#\t3. GOPERF4\t\t 9. FLAGUP\n#\t4. MATMOVE\t\t10. R56\n#\t5. GOFLASH\t\t11. R51\n#\t6. S52.3\t\t12. GOPERF3\n#\n# NORMAL EXIT MODES --\n#\n#\tEXITS TO ENDOFJOB\n#\n# ALARM OR ABORT EXIT MODES --\n#\n#\tNONE\n#\n# OUTPUT --\n#\n#\tTHE FOLLOWING MAY BE FLASHED ON THE DSKY\n#\t\t1. IMU ORIENTATION CODE\n#\t\t2. ALARM CODE 215 -- PREFERRED IMU ORIENTATION NOT SPECIFIED\n#\t\t3. TIME OF NEXT IGNITION\n#\t\t4. GIMBAL ANGLES\n#\t\t5. ALARM CODE 405 -- TWO STARS NOT AVAILABLE\n#\t\t6. PLEASE PERFORM P00\n#\tTHE MODE DISPLAY MAY BE CHANGED TO 20\n#\n# ERASABLE INITIALIZATION REQUIRED --\n#\n#\tPFRATFLG SHOULD BE SET IF A PREFERRED ORIENTATION HAS BEEN COMPUTED.  IF IT HAS BEEN COMPUTED IT IS STORED IN\n#\tXSMD, YSMD, ZSMD.\n#\n#\tRNDVZFLG INDICATES WHETHER THE RENDEZVOUS NAVIGATION PROCESS IS OPERATING.\n#\n# DEBRIS --\n#\n#\tWORK AREA\n\n\t\tBANK\t33\n\t\tSETLOC\tP50S\n\t\tBANK\n\n\t\tEBANK=\tBESTI\n\t\tCOUNT*\t$$/P52\nPROG52\t\tTC\tBANKCALL\n\t\tCADR\tR02BOTH\t\t# IMU STATUS CHECK\n\t\tCAF\tPFRATBIT\n\t\tMASK\tFLAGWRD2\t# IS PFRATFLG SET?\n\t\tCCS\tA\n# Page 928\n\t\tTC\tP52A\t\t# YES\n\t\tCAF\tBIT2\t\t# NO\n\t\tTC\tP52A +1\nP52A\t\tCAF\tBIT1\n\t\tTS\tOPTION2\nP52B\t\tCAF\tBIT1\n\t\tTC\tBANKCALL\t# FLASH OPTION CODE AND ORIENTATION CODE\n\t\tCADR\tGOPERF4R\t# FLASH V04N06\n\t\tTC\tGOTOPOOH\n\t\tTCF\t+5\t\t# V33 -- PROCEED\n\t\tTC\tP52B\t\t# NEW CODE -- NEW ORIENTATION CODE INPUT\n\t\tTC\tPHASCHNG\t# DISPLAY RETURN\n\t\tOCT\t00014\n\t\tTC\tENDOFJOB\n\n\t\tCA\tOPTION2\n\t\tMASK\tTHREE\n\t\tINDEX\tA\n\t\tTC\t+1\n\t\tTCF\tOPT4\t\t# OPTION 4 LANDING SITE\n\t\tTCF\tP52H\t\t# OPTION 1 PREFERRED\n\t\tTCF\tP52T\t\t# OPTION 2 NOMINAL\nP52E\t\tTC\tINTPRET\t\t# OPTION 3 REFSMMAT\n\t\tGOTO\n\t\t\tP52F\t\t# GO DO R51\n\nOPT4\t\tEXTEND\n\t\tDCA\tTLAND\t\t# IF OPTION 4 DISPLAY TLAND\n\t\tTCF\tP52T +2\n\nP52T\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\tDSPTEM1\n\t\tCAF\tV06N34*\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tDXCH\tDSPTEM1\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# IF TIME ZERO OR NEG USE TIME2\n\t\tTCF\t+3\n\t\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tTALIGN\nP52V\t\tCA\tOPTION2\n\t\tMASK\tBIT2\n\t\tCCS\tA\n\t\tTC\tP52W\n# Page 929\n\t\tTC\tINTPRET\t\t# OPTION 4 -- GET LS ORIENTATION\n\t\tGOTO\n\t\t\tP52LS\n\n# Page 930\nP52W\t\tTC\tINTPRET\n\t\tDLOAD\tCALL\t\t# PICK UP ALIGN TIME\n\t\t\tTALIGN\t\t# COMPUTED NOMINAL IMU\n\t\t\tS52.3\t\t#\tORIENTATION\nP52D\t\tCALL\t\t\t# READ VEHICLE ATTITUDE AND\n\t\t\tS52.2\t\t#\tCOMPUTE GIMBAL ANGLES\n\t\tEXIT\n\t\tCAF\tV06N22\n\t\tTC\tBANKCALL\t# DISPLAY GIMBAL ANGLES\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTCF\tCOARSTYP\t# V33 -- PROCEED, SEE IF GYRO TORQUE COARSE\nP52H\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tP52D\nREGCOARS\tTC\tINTPRET\n\t\tCALL\t\t\t# DO COARSE ALIGN\n\t\t\tCAL53A\t\t#\tROUTINE\nCOARSRET\tSET\tCLEAR\n\t\t\tREFSMFLG\n\t\t\tPFRATFLG\nP52F\t\tCALL\n\t\t\tR51\nP52OUT\t\tEXIT\n\t\tTC\tGOTOPOOH\nVB05N09\t\t=\tV05N09\nV06N34*\t\tVN\t634\n\n# Page 931\n# CHECK FOR GYRO TORQUE COARSE ALIGNMENT\n\nCOARSTYP\tCAF\tOCT13\n\t\tTC\tBANKCALL\t# DISPLAY V 50N25 WITH COARSE ALIGN OPTION\n\t\tCADR\tGOPERF1\n\t\tTCF\tGOTOPOOH\t# V34 -- TERMIN&OE\n\t\tTCF\tREGCOARS\t# V33 -- NORMAL COARSE\n\t\tTC\tINTPRET\t\t# V32 -- GYRO TORQUE COARSE\n\t\tVLOAD\tMXV\n\t\t\tXSMD\t\t# GET SM(DESIRED) WRT SM(PRESENT)\n\t\t\tREFSMMAT\n\t\tUNIT\n\t\tSTOVL\tXDC\n\t\t\tYSMD\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTOVL\tYDC\n\t\t\tZSMD\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTCALL\tZDC\n\t\t\tGYCOARS\n\t\tGOTO\n\t\t\tP52OUT\nOCT13\t\tOCT\t13\n\n# Page 932\n# COMPUTE LANDING ORIENTATION FOR OPTION 4\n\nP52LS\t\tSET\tCLEAR\t\t# GET LANDING SITE ORIENTATION\n\t\t\tLUNAFLAG\n\t\t\tERADFLAG\t# TO PICK UP RLS\n\t\tSETPD\tVLOAD\n\t\t\t0\n\t\t\tRLS\t\t# PICK UP LANDING SITE VEC IN MF\n\t\tPDDL\tPUSH\t\t# RLS PD 0-5\n\t\t\tTALIGN\n\t\tSTCALL\tTLAND\t\t# JAM ALIGN TIME IN TLAND FOR OPTION 4\n\t\t\tRP-TO-R\t\t# TRANS RLS TO REF\n\t\tVSR2\n\t\tSTODL\tALPHAV\t\t# INPUT TO LAT-LONG\n\t\t\tTALIGN\n\t\tCALL\n\t\t\tN89DISP\n\t\tVLOAD\tUNIT\t\t# COMPUTE LANDING SITE ORIENT (XSMD)\n\t\t\tALPHAV\n\t\tSTCALL\tXSMD\n\t\t\tLSORIENT\n\t\tGOTO\n\t\t\tP52D\t\t# NOW GO COMPUTE GIMBAL ANGLES.\n\n# Page 933\n# SUBROUTINE TO CALCULATE AND DISPLAY THE LUNAR LANDING SITE\n\n\t\tSETLOC\tP50S1\n\t\tBANK\n\t\tEBANK=\tXSM\n\nN89DISP\t\tSTQ\n\t\t\tQMAJ\n\t\tSTCALL\tGDT/2 +4\t# TEMP STORE TIME\n\t\t\tLAT-LONG\n\t\tDLOAD\tSR1\n\t\t\tLONG\n\t\tSTODL\tLANDLONG\n\t\t\tALT\n\t\tSTODL\tLANDALT\n\t\t\tLAT\n\t\tSTODL\tLANDLAT\n\t\tEXIT\n\nLSDISP\t\tCAF\tV06N89*\t\t# DISPLAY LAT,LONG/2,ALT\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\t# V34 -- TERMINATE -- EXIT P57\n\t\tTCF\t+2\t\t# V33 -- PROCEED -- ACCEPT LS DATA\n\t\tTCF\tLSDISP\t\t# V32 OR E -- LOOK AGAIN AND/OR LOAD NEW LS\n\n\t\tTC\tINTPRET\n\t\tDLOAD\tSL1\n\t\t\tLANDLONG\n\t\tSTODL\tLONG\n\t\t\tLANDALT\n\t\tSTODL\tALT\n\t\t\tLANDLAT\n\t\tSTODL\tLAT\n\t\t\tGDT/2 +4\t# PICK UP TIME\n\t\tCALL\t\t\t# GET RLS BACK FROM LAT,LONG,ALT\n\t\t\tLALOTORV\t# RLS B-29 IN MPAC AND ALPHAV\n\t\tGOTO\n\t\t\tQMAJ\nV06N89*\t\tVN\t689\n\n# Page 934\n# NAME -- S50 ALIAS LOCSAM\n# BY\n# VINCENT\n#\n# FUNCTION -- COMPUTE INPUTS FOR PICAPAR AND PLANET\n#\n#\tDEFINE\n#\n#\tU   = UNIT( SUN WRT EARTH )\n#\t ES\n#\n#\tU   = UNIT( MOON WRT EARTH )\n#\t EM\n#\n#\tR   = POSITION VECTOR OF LEM\n#\t L\n#\n#\tR   = MEAN DISTANCE (384402KM) BETWEEN EARTH AND MOON\n#\t EM\n#\n#\tP   = RATIO R  /(DISTANCE SUN TO EARTH) > .00257125\n#\t             EM\n#\n#\tR   = EQUATORIAL RADIUS (6378.166KM) OF EARTH\n#\t E\n#\n#\tLOCSAM COMPUTES IN EARTH INFLUENCE\n#\n#\tVSUN = U\n#\t        ES\n#\n#\tVEARTH = -UNIT( R  )\n#\t                 L\n#\n#\tVMOON = UNIT(R  .U   - R  )\n#\t              EM  EM    L\n#\n#\tCSUN = COS 90\n#\n#\tCEARTH = COS(5 + ARCSIN(R /MAG(R )))\n#\t                         E      L\n#\n#\tCMOON\t= COS 5\n#\n# INPUT -- TIME IN MPAC\n#\n# OUTPUT -- LISTED ABOVE\n#\n# SUBROUTINES -- LSPOS, LEMPREC\n#\n# DEBRIS -- VAC AREA, TSIGHT\n\n# Page 935\n\t\tCOUNT*\t$$/LOSAM\n\nS50\t\t= \tLOCSAM\nLOCSAM\t\tSTQ\n\t\t\tQMIN\n\t\tSTCALL\tTSIGHT\n\t\t\tLSPOS\n\t\tDLOAD\n\t\t\tTSIGHT\n\t\tSTCALL\tTDEC1\n\t\t\tLEMPREC\n\t\tSSP\tTIX,2\n\t\t\tS2\n\t\t\t0\n\t\t\tMOONCNTR\nEARTCNTR\tVLOAD\tVXSC\n\t\t\tVMOON\n\t\t\tRSUBEM\n\t\tVSL1\tVSU\n\t\t\tRATT\n\t\tUNIT\n\t\tSTOVL\tVMOON\n\t\t\tRATT\n\t\tUNIT\tVCOMP\n\t\tSTODL\tVEARTH\n\t\t\tRSUBE\n\t\tCALL\n\t\t\tOCCOS\n\t\tSTODL\tCEARTH\n\t\t\tCSS5\n\t\tSTCALL\tCMOON\n\t\t\tENDSAM\nMOONCNTR\tVLOAD\tVXSC\n\t\t\tVMOON\n\t\t\tROE\n\t\tBVSU\tUNIT\n\t\t\tVSUN\n\t\tSTOVL\tVSUN\n\t\t\tVMOON\n\t\tVXSC\tVAD\n\t\t\tRSUBEM\n\t\t\tRATT\n\t\tUNIT\tVCOMP\n\t\tSTOVL\tVEARTH\n\t\t\tRATT\n\t\tUNIT\tVCOMP\n\t\tSTODL\tVMOON\n\t\t\tRSUBM\n\t\tCALL\n\t\t\tOCCOS\n# Page 936\n\t\tSTODL\tCMOON\n\t\t\tCSS5\n\t\tSTORE\tCEARTH\nENDSAM\t\tDLOAD\n\t\t\tCSSUN\n\t\tSTORE\tCSUN\n\t\tGOTO\n\t\t\tQMIN\nOCCOS\t\tDDV\tSR1\n\t\t\t36D\n\t\tASIN\tDAD\n\t\t\t5DEGREES\n\t\tCOS\tSR1\n\t\tRVQ\nCEARTH\t\t=\t14D\nCSUN\t\t=\t16D\nCMOON\t\t=\t18D\nCSS5\t\t2DEC\t.2490475\t# (COS 5)/4\nCSSUN\t\t2DEC\t.125\t\t# (COS 60)/4\n5DEGREES\t2DEC\t.013888889\t# SCALED IN REVS\n\n# Page 937\n# PROGRAM NAME -- R56\t\tDATE: DEC 20 66\n# MOD 1\t\t\t\tLOG SECTION: P51-P53\n#\t\t\t\tASSEMBLY:  SUNDISK REV4D\n# BY KEN VINCENT\n#\n# FUNCTION\n#\tTHIS PROGRAM READS THE IMU-CDUS AND COMPUTES THE VEHICLE ORIENTATION\n#\tWITH RESPECT TO INERTIAL SPACE.  IT THEN COMPUTES THE SHAFT AXIS (SAX)\n#\tWITH RESPECT TO REFERENCE INTERTIAL.  EACH STAR IN THE CATALOG IS TESTED\n# \tTO DETERMIN IF IT IS OCCULTED BY EITHER EARTH, SUN OR MOON.  IF A\n# \tSTAR IS NOT OCCULTED THEN IT IS PAIRED WITH ALL STARS OF LOWER INDEX.\n# \tTHE PAIRED STAR IS TESTED FOR OCCULTATION.  PAIRS OF STARS THAT PASS\n#\tTHE OCCULTATION TESTS ARE TESTED FOR GOOD SEPARATION.  A PAIR OF STARS\n#\tHAVE GOOD SEPARATION IF THE ANGLE BETWEEN THEM IS LESS THAN 100 DEGREES\n#\tAND MORE THAN 50 DEGREES.  THOSE PAIRS WITH GOOD SEPARATION\n#\tARE THEN TESTED TO SEE IF THEY LIE IN CURRENT FIELD OF VIEW.  (WITHIN\n#\t50 DEGREES OF SAX).  THE PAIR WITH MAX SEPARATION IS CHOSEN FROM\n#\tTHOSE WITH GOOD SEPARATION, AND IN FIELD OF VIEW.\n#\n# CALLING SEQUENCE\n#\tL\tTC\tBANKCALL\n#\tL+1\tCADR\tR56\n#\tL+2\tERROR RETURN -- NO STARS IN FIELD OF VIEW\n#\tL+3\tNORMAL RETURN\n#\n# OUTPUT\n#\tBESTI, BESTJ -- SINGLE PREC, INTEGERS, STAR NUMBERS TIMES 6\n#\tVFLAG -- FLAG BIT SET IMPLIES NO STARS IN FIELD OF VIEW\n#\n# INITIALIZATION\n#\t1)\tA CALL TO LOCSAM MUST BE MADE\n#\n# DEBRIS\n#\tWORKAREA\n#\tX,Y,ZNB\n#\tSINCDU, COSCDU\n#\tSTARAD -- STAR +5\n\nR56\t\t=\tPICAPAR\n\t\tCOUNT*\t$$/R56\nPICAPAR\t\tTC\tMAKECADR\n\t\tTS\tQMIN\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tCDUTRIG\n\t\tCALL\n\t\t\tCALCSMSC\n\t\tSETPD\n\t\t\t0\n\t\tSET\tDLOAD\t\t# VFLAG = 1\n\t\t\tVFLAG\n# Page 938\n\t\t\tDPZERO\n\t\tSTOVL\tBESTI\n\t\t\tXNB\n\t\tVXSC\tPDVL\n\t\t\tHALFDP\n\t\t\tZNB\n\t\tAXT,1\tVXSC\n\t\t\t228D\t\t# X1 = 37 X 6 + 6\n\t\t\tHALFDP\n\t\tVAD\n\t\tVXM\tUNIT\n\t\t\tREFSMMAT\n\t\tSTORE\tSAX\t\t# SAX = SHAFT AXIS\n\t\tSSP\tSSP\t\t# S1 = S2 = 6\n\t\t\tS1\n\t\t\t6\n\t\t\tS2\n\t\t\t6\nPIC1\t\tTIX,1\tGOTO\t\t# MAJOR STAR\n\t\t\tPIC2\n\t\t\tPICEND\nPIC2\t\tVLOAD*\tDOT\n\t\t\tCATLOG,1\n\t\t\tSAX\n\t\tDSU\tBMN\n\t\t\tCSS33\n\t\t\tPIC1\n\t\tLXA,2\n\t\t\tX1\nPIC3\t\tTIX,2\tGOTO\n\t\t\tPIC4\n\t\t\tPIC1\nPIC4\t\tVLOAD*\tDOT\n\t\t\tCATLOG,2\n\t\t\tSAX\n\t\tDSU\tBMN\n\t\t\tCSS33\n\t\t\tPIC3\n\t\tVLOAD*\tDOT*\n\t\t\tCATLOG,1\n\t\t\tCATLOG,2\n\t\tDSU\tBPL\n\t\t\tCSS40\n\t\t\tPIC3\n\t\tVLOAD*\tCALL\n\t\t\tCATLOG,1\n\t\t\tOCCULT\n\t\tBON\n\t\t\tCULTFLAG\n\t\t\tPIC1\n# Page 939\n\t\tVLOAD*\tCALL\n\t\t\tCATLOG,2\n\t\t\tOCCULT\n\t\tBON\n\t\t\tCULTFLAG\n\t\t\tPIC3\nSTRATGY\t\tBONCLR\n\t\t\tVFLAG\n\t\t\tNEWPAR\n\t\tXCHX,1\tXCHX,2\n\t\t\tBESTI\n\t\t\tBESTJ\nSTRAT\t\tVLOAD*\tDOT*\n\t\t\tCATLOG,1\n\t\t\tCATLOG,2\n\t\tPUSH\tBOFINV\n\t\t\tVFLAG\n\t\t\tSTRAT -3\n\t\tDLOAD\tDSU\n\t\tBPL\n\t\t\tPIC3\nNEWPAR\t\tSXA,1\tSXA,2\n\t\t\tBESTI\n\t\t\tBESTJ\n\t\tGOTO\n\t\t\tPIC3\nOCCULT\t\tMXV\tBVSU\n\t\t\tCULTRIX\n\t\t\tCSS\n\t\tBZE\n\t\t\tCULTED\n\t\tBMN\tSIGN\n\t\t\tCULTED\n\t\t\tMPAC +3\n\t\tBMN\tSIGN\n\t\t\tCULTED\n\t\t\tMPAC +5\n\t\tBMN\tCLRGO\n\t\t\tCULTED\n\t\t\tCULTFLAG\n\t\t\tQPRET\nCULTED\t\tSETGO\n\t\t\tCULTFLAG\n\t\t\tQPRET\nCSS\t\t= \tCEARTH\nCSS40\t\t2DEC\t.16070\t\t# COS 50 / 4\nCSS33\t\t2DEC\t.16070\t\t# COS 50 / 4\nPICEND\t\tBOFF\tEXIT\n\n# Page 940\n\t\t\tVFLAG\n\t\t\tPICGXT\n\t\tTC\tPICBXT\nPICGXT\t\tLXA,1\tLXA,2\n\t\t\tBESTI\n\t\t\tBESTJ\n\t\tVLOAD\tDOT*\n\t\t\tSAX\n\t\t\tCATLOG,1\n\t\tPDVL\tDOT*\n\t\t\tSAX\n\t\t\tCATLOG,2\n\t\tDSU\n\t\tBPL\tSXA,1\n\t\t\tPICNSWP\n\t\t\tBESTJ\n\t\tSXA,2\n\t\t\tBESTI\nPICNSWP\t\tEXIT\n\t\tINCR\tQMIN\nPICBXT\t\tCA\tQMIN\n\t\tTC\tSWCALL\nVPD\t\t= \t0D\nV0\t\t=\t6D\nV1\t\t= \t12D\nV2\t\t=\t18D\nV3\t\t=\t24D\nDP0\t\t=\t30D\nDP1\t\t=\t32D\n\n# Page 941\n# NAME -- R51\tFINE ALIGN\n# FUNCTION -- TO ALIGN THE STABLE MEMBER TO REFSSMAT\n# CALLING SEQ -- CALL R51\n# INPUT -- REFSMMAT\n# OUTPUT -- GYRO TORQUE PULSES\n# SUBROUTINES -- LOCSAM, PICAPAR, R52, R53, R54, R55\n\n\t\tCOUNT*\t$$/R51\nR51\t\tSTQ\n\t\t\tQMAJ\nR51.1\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\nR51C\t\tCAF\tOCT15\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTC\tGOTOPOOH\n\t\tTC\t+2\t\t# V33E\n\t\tTC\tR51E\t\t# ENTER\n\t\tTC\tINTPRET\n\t\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\tTSIGHT1\n\t\tCALL\n\t\t\tLOCSAM\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tR56\n\t\tTC\tR51I\nR51F\t\tTC\tR51E\nR51I\t\tTC\tALARM\n\t\tOCT\t405\n\t\tCAF\tVB05N09\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\tR51E\n\t\tTC\tR51C\nR51E\t\tCAF\tZERO\n\t\tTS\tSTARIND\nR51.2\t\tTC\tINTPRET\nR51.3\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tR52\t\t# AOP WILL MAKE CALLS TO SIGHTING\n\t\tEXIT\n\t\tTC\tBANKCALL\n# Page 942\n\t\tCADR\tAOTMARK\n\t\tTC\tBANKCALL\n\t\tCADR\tOPTSTALL\n\t\tTC\tCURTAINS\n\t\tCCS\tSTARIND\n\t\tTCF\t+2\n\t\tTC\tR51.4\n\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tSTARAD +6\n\t\tSTORE\tSTARSAV2\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\n\t\tDLOAD\tCALL\n\t\t\tTSIGHT\n\t\t\tPLANET\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTOVL\tSTARAD +6\n\t\t\tPLANVEC\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTOVL\tSTARAD\n\t\t\tSTARSAV1\n\t\tSTOVL\t6D\n\t\t\tSTARSAV2\n\t\tSTCALL\t12D\n\t\t\tR54\t\t# STAR DATA TEST\n\t\tBOFF\tCALL\n\t\t\tFREEFLAG\n\t\t\tR51K\n\t\t\tAXISGEN\n\t\tCALL\n\t\t\tR55\t\t# GYRO TORQUE\n\t\tCLEAR\n\t\t\tPFRATFLG\nR51K\t\tEXIT\nR51P63\t\tCAF\tOCT14\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTC\tGOTOPOOH\n\t\tTC\tR51C\n\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tQMAJ\nR51.4\t\tTC\tINTPRET\n\t\tVLOAD\n# Page 943\n\t\t\tSTARAD +6\n\t\tSTORE\tSTARSAV1\n\t\tDLOAD\tCALL\n\t\t\tTSIGHT\n\t\t\tPLANET\n\t\tSTORE\tPLANVEC\n\t\tSSP\n\t\t\tSTARIND\n\t\t\t1\n\t\tGOTO\n\t\t\tR51.3\nTSIGHT1\t\t2DEC\t36000\t\t# 6 MIN TO MARKING\n\n# Page 944\n# GYRO TORQUE COARSE ALGNMENT\n\nGYCOARS\t\tSTQ\tCALL\n\t\t\tQMAJ\n\t\t\tCALCGTA\n\t\tCLEAR\tCLEAR\n\t\t\tDRIFTFLG\n\t\t\tREFSMFLG\n\t\tEXIT\n\t\tCAF\tV16N20\t\t# MONITOR GIMBALS\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPR\n\t\tCA\tR55CDR\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\n\t\tAXC,1\tAXC,2\n\t\t\tXSMD\n\t\t\tREFSMMAT\n\t\tCALL\t\t\t# STORE DESIRED REFSMMAT\n\t\t\tMATMOVE\n\t\tCLEAR\tSET\n\t\t\tPFRATFLG\n\t\t\tREFSMFLG\n\t\tCALL\n\t\t\tNCOARSE\t\t# SET DRIFT AND INITIALIZE 1/PIPADT\n\t\tGOTO\n\t\t\tR51K\nV16N20\t\tVN\t1620\n\n# Page 945\n# R55\tGYRO TORQUE\n# FUNCTION -- COMPUTE AND SEND GYRO PULSES\n# CALLING SEQ -- CALL R55\n# INPUT -- X,Y,ZDC -- REFSMMAT WRT PRESENT STABLE MEMBER\n# OUTPUT -- GYRO PULSES\n# SUBROUTINES -- CALCGTA, GOFLASH, GODSPR, IMUFINE, IMUPULSE, GOPERF1\n\n\t\tCOUNT*\t$$/R55\nR55\t\tSTQ\n\t\t\tQMIN\n\t\tCALL\n\t\t\tCALCGTA\nPULSEM\t\tEXIT\nR55.1\t\tCAF\tV06N93\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTC\tR55.2\n\t\tTC\tR55RET\nR55.2\t\tTC\tPHASCHNG\n\t\tOCT\t00214\n\t\tCA\tR55CDR\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\nR55RET\t\tTC\tINTPRET\n\t\tGOTO\n\t\t\tQMIN\nV06N93\t\tVN\t0693\nR55CDR\t\tECADR\tOGC\nR54\t\t=\tCHKSDATA\n\n# ROUTINE NAME -- CHKSDATA\t\tDATE -- JAN 9, 1967\n# MOD NO -- 0\t\t\t\tLOG SECTION -- P51-P53\n# MODIFICATION BY -- LONSKE\t\tASSEMBLY --\n#\n# FUNCTIONAL DESCRIPTION -- CHECKS THE VALIDITY OF A PAIR OF STAR SIGHTINGS.  WHEN A PAIR OF STAR SIGHTINGS ARE MADE\n# BY THE ASTRONAUT THIS ROUTINE OPERATES AND CHECKS THE OBSERVED SIGHTINGS AGAINST STORED STAR VECTORS IN THE\n# COMPUTER TO INSURE A PROPER SIGHTING WAS MADE.  THE FOLLOWING COMPUTATIONS ARE PERFORMED --\n#\tOS1\t=\tOBSERVED STAR 1 VECTOR\n#\tOS2\t=\tOBSERVED STAR 2 VECTOR\n#\tSS1\t=\tSTORED STAR 1 VECTOR\n#\tSS2 \t=\tSTORED STAR 2 VECTOR\n#\t A1\t= \tARCCOS(OS1 - OS2)\n#\t A2\t=\tARCCOS(SS1 - SS2)\n#\t  A \t=\tABS(2(A1 - A2))\n# Page 946\n# THE ANGULAR DIFFERENCE IS DISPLAYED FOR ASTRONAUT ACCEPTANCE.\n#\n# EXIT MODE --\t1. FREEFLAG SET IMPLIES ASTRONAUT WANTS TO PROCEED\n#\t\t2. FREEFLAG RESET IMPLIES ASTRONAUT WANTS TO RECYCLE\n#\n# OUTPUT --\t1. VERB 6,NOUN 3 -- DISPLAYS ANGULAR DIFFERENCE BETWEEN 2 SETS OF STARS.\n#\t\t2. STAR VECTORS FROM STAR CATALOG ARE LEFT IN 6D AND 12D.\n#\n# ERASABLE INITIALIZATION REQUIRED --\n#\t\t1. MARK VECTORS ARE STORED IN STARAD AND STARAD +6.\n#\t\t2. CATALOG VECTORS ARE STORED IN 6D AND 12D.\n#\n# DEBRIS --\n\n\t\tCOUNT*\t$$/R54\nCHKSDATA\tSTQ\tSET\n\t\t\tQMIN\n\t\t\tFREEFLAG\nCHKSAB\t\tAXC,1\t\t\t# SET X1 TO STORE EPHEMERIS DATA\n\t\t\tSTARAD\n\nCHKSB\t\tVLOAD*\tDOT*\t\t# CAL. ANGLE THETA\n\t\t\t0,1\n\t\t\t6,1\n\t\tSL1\tACOS\n\t\tSTORE\tTHETA\n\t\tBOFF\tINVERT\t\t# BRANCH TO CHKSD IF THIS IS 2ND PASS\n\t\t\tFREEFLAG\n\t\t\tCHKSD\n\t\t\tFREEFLAG\t# CLEAR FREEFLAG\n\t\tAXC,1\tDLOAD\t\t# SET X1 TO MARK ANGLES\n\t\t\t6D\n\t\t\tTHETA\n\t\tSTORE\t18D\n\t\tGOTO\n\t\t\tCHKSB\t\t# RETURN TO CAL. 2ND ANGLE\nCHKSD\t\tDLOAD\tDSU\n\t\t\tTHETA\n\t\t\t18D\n\t\tABS\tRTB\t\t# COMPUTE POS DIFF\n\t\t\tSGNAGREE\n\t\tSTORE\tNORMTEM1\n\t\tSET\tEXIT\n\t\t\tFREEFLAG\n\t\tCAF\tVB6N5\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\n\t\tTC\tCHKSDA\t\t# PROCEED\n\t\tTC\tINTPRET\n\t\tCLEAR\tGOTO\n\t\t\tFREEFLAG\n\t\t\tQMIN\nCHKSDA\t\tTC\tINTPRET\n# Page 947\n\t\tGOTO\n\t\t\tQMIN\nVB6N5\t\tVN\t605\n\n# NAME -- CAL53A\n# FUNCTION -- COMPUTE DESIRED GIMBAL ANGLES AND COARSE ALIGN IF NECESSARY\n# CALLING SEQUENCE -- CALL CAL53A\n# INPUT -- X,Y,ZSMD, CDUX,Y,Z\n#\t   DESIRED GIMBAL ANGLES -- THETAD,+1,+2\n# OUTPUT -- THE IMU COORDINATES AT STORED IN REFSMMAT\n# SUBROUTINES -- S52.2, IMUCOARSE, IMUFINE\n\n\t\tCOUNT*\t$$/R50\nCAL53A\t\tCALL\n\t\t\tS52.2\t\t# MAKE ONE FINAL COMP OF GIMBAL ANGLES\n\t\tRTB\tSSP\n\t\t\tRDCDUS\t\t# READ CDUS\n\t\t\tS1\n\t\t\t1\n\t\tAXT,1\tSETPD\n\t\t\t3\n\t\t\t4\nCALOOP\t\tDLOAD*\tSR1\n\t\t\tTHETAD +3D,1\n\t\tPDDL*\tSR1\n\t\t\t4,1\n\t\tDSU\tABS\n\t\tPUSH\tDSU\n\t\t\tDEGREE1\n\t\tBMN\tDLOAD\n\t\t\tCALOOP1\n\t\tDSU\tBPL\n\t\t\tDEG359\n\t\t\tCALOOP1\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\nCOARFINE\tCALL\n\t\t\tCOARSE\n\t\tCALL\n\t\t\tNCOARSE\n\t\tGOTO\n\t\t\tFINEONLY\nCALOOP1\t\tTIX,1\n\t\t\tCALOOP\nFINEONLY\tAXC,1\tAXC,2\n\t\t\tXSM\n\t\t\tREFSMMAT\n\t\tCALL\n\t\t\tMATMOVE\n# Page 948\n\t\tGOTO\n\t\t\tCOARSRET\nMATMOVE\t\tVLOAD*\t\t\t# TRANSFER MATRIX\n\t\t\t0,1\n\t\tSTORE\t0,2\n\t\tVLOAD*\n\t\t\t6D,1\n\t\tSTORE\t6D,2\n\t\tVLOAD*\n\t\t\t12D,1\n\t\tSTORE\t12D,2\n\t\tRVQ\nDEGREE1\t\tDEC\t46\t\t# 1 DEG SCALED CDU/2\nDEG359\t\tDEC\t16338\t\t# 359 DEG SCALED CDU/2\nRDCDUS\t\tINHINT\t\t\t# READ CDUS\n\t\tCA\tCDUX\n\t\tINDEX\tFIXLOC\n\t\tTS\t1\n\t\tCA\tCDUY\n\t\tINDEX\tFIXLOC\n\t\tTS\t2\n\t\tCA\tCDUZ\n\t\tINDEX\tFIXLOC\n\t\tTS\t3\n\t\tRELINT\n\t\tTC\tDANZIG\n\t\tCOUNT*\t$$/INFLT\n\n# Page 949\n# NAME -- P51 -- IMU ORIENTATION DETERMINATION\n# MOD. NO. 1\t23 JAN 67\t\t\t\tLOG SECTION -- P51-P53\n# MOD BY STURLAUGSON\t\t\t\t\tASSEMBLY SUNDANCE REV56\n#\n# FUNCTIONAL DESCRIPTION\n#\tDETERMINES THE INERTIAL ORIENTATION OF THE IMU.  THE PROGRAM IS SELECTED BY DSKY ENTRY.  THE SIGHTING\n#\t(AOTMARK) ROUTINE IS CALLED TO COLLECT AND PROCESS MARKED-STAR DATA.  AOTMARK (R53) RETURNS THE STAR NUMBER AND THE\n# \tSTAR LOS VECTOR IN STARAD +6.  TWO STARS ARE THUS SIGHTED.  THE ANGLE BETWEEN THE TWO STARS IS THEN CHECKED AT\n#\tCHKSDATA (R54).  REFSMMAT IS THEN COMPUTED AT AXISGEN.\n#\n# CALLING SEQUENCE\n#\tTHE PROGRAM IS CALLED BY THE ASTRONAUT BY DSKY ENTRY.\n#\n# SUBROUTINES CALLED\n#\tGOPERF3\n#\tGOPERF1\n#\tGODSPR\n#\tIMUCOARS\n#\tIMUFIN20\n#\tAOTMARK (R53)\n#\tCHKSDATA (R54)\n#\tMKRELEAS\n#\tAXISGEN\n#\tMATMOVE\n#\n# ALARMS\n#\tNONE.\n#\n# ERASABLE INITIALIZATION\n#\tIMU ZERO FLAG SHOULD BE SET.\n#\n# OUTPUT\n#\tREFSMMAT\n#\tREFSMFLG\n#\n# DEBRIS\n#\tWORK AREA\n#\tSTARAD\n#\tSTARIND\n#\tBESTI\n#\tBESTJ\n\n\t\tCOUNT*\t$$/P51\n# Page 950\nP51\t\tTC\tBANKCALL\t# IS ISS ON - IF NOT, IMUCHK WILL SEND\n\t\tCADR\tIMUCHK\t\t# ALARM CODE 210 AND EXIT VIA GOTOPOOH.\n\n\t\tCAF\tOCT15\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTC\tGOTOPOOH\t# TERM.\n\t\tTCF\tP51B\t\t# V33\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tCAF\tZERO\n\t\tTS\tTHETAD\t\t# ZERO THE GIMBALS\n\t\tTS\tTHETAD +1\n\t\tTS\tTHETAD +2\n\t\tCAF\tV06N22\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPRET\n\t\tCAF\tV41K\t\t# NOW DISPLAY COARSE ALIGN VERB 41\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPRET\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tCOARSE\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\t\tTCF\tP51 +2\n\nP51B\t\tTC\tPHASCHNG\n\t\tOCT\t00014\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tNCOARSE\n\t\tSSP\tSETPD\n\t\t\tSTARIND\t\t# INDEX -- STAR 1 OR 2\n\t\t\t0\n\t\t\t0\nP51C\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tBANKCALL\n\t\tCADR\tAOTMARK\t\t# R53\n\t\tTC\tBANKCALL\n\t\tCADR\tAOTSTALL\n\t\tTC\tCURTAINS\n\t\tCCS\tSTARIND\n\t\tTCF\tP51D +1\n\t\tTC\tINTPRET\n# Page 951\n\t\tVLOAD\n\t\t\tSTARAD +6\n\t\tSTORE\tSTARSAV1\nP51D\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tCCS\tSTARIND\n\t\tTCF\tP51E\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\n\t\tDLOAD\tCALL\n\t\t\tTSIGHT\n\t\t\tPLANET\n\t\tSTORE\tPLANVEC\n\t\tEXIT\n\t\tCAF\tBIT1\n\t\tTS\tSTARIND\n\t\tTCF\tP51C +1\t\t# DO SECOND STAR\nP51E\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\n\t\tDLOAD\tCALL\n\t\t\tTSIGHT\n\t\t\tPLANET\n\t\tSTOVL\t12D\n\t\t\tPLANVEC\n\t\tSTOVL\t6D\n\t\t\tSTARSAV1\n\t\tSTOVL\tSTARAD\n\t\t\tSTARSAV2\n\t\tSTCALL\tSTARAD +6\n\t\t\tCHKSDATA\t# CHECK STAR ANGLES IN STARAD AND\n\t\tBON\tEXIT\n\t\t\tFREEFLAG\n\t\t\tP51G\n\t\tTC\tP51 +2\nP51G\t\tCALL\n\t\t\tAXISGEN\t\t# COME BACK WITH REFSMMAT IN XDC\n\t\tAXC,1\tAXC,2\n\t\t\tXDC\n\t\t\tREFSMMAT\n\t\tCALL\n\t\t\tMATMOVE\n\t\tSET\tEXIT\n\t\t\tREFSMFLG\n\t\tTC\tGOTOPOOH\t# FINIS\n# Page 952\nV41K\t\tVN\t4100\nCOARSE\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUCOARS\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUFINE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tTC\tINTPRET\n\t\tRVQ\nNCOARSE\t\tEXIT\n\t\tCA\tTIME1\n\t\tTS\t1/PIPADT\n\t\tCS\tZERO\n\t\tTS\tPIPAX\n\t\tTS\tPIPAY\n\t\tTS\tPIPAZ\n\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tZEROVEC\n\t\tSTORE\tGCOMP\n\t\tSET\tRVQ\n\t\t\tDRIFTFLG\n\n# Page 953\n# NAME -- S52.2\n# FUNCTION -- COMPUTE GIMBAL ANGLES FOR DESIRED SM AND PRESENT VEHICLE\n# CALL -- CALL S52.2\n# INPUT -- X,Y,ZSMD\n# OUTPUT -- OGC,IGC,MGC,THETAD,+1,+2\n# SUBROUTINES -- CDUTRIG, CALCSMSC, MATMOVE, CALCGA\n\n\t\tCOUNT*\t$$/S52.1\nS52.2\t\tSTQ\tCALL\n\t\t\tQMAJ\n\t\t\tCDUTRIG\n\t\tCALL\n\t\t\tCALCSMSC\n\t\tAXT,1\tSSP\n\t\t\t18D\n\t\t\tS1\n\t\t\t6D\nS52.2A\t\tVLOAD*\tVXM\n\t\t\tXNB +18D,1\n\t\t\tREFSMMAT\n\t\tUNIT\n\t\tSTORE\tXNB +18D,1\n\t\tTIX,1\n\t\t\tS52.2A\nS52.2.1\t\tAXC,1\tAXC,2\n\t\t\tXSMD\n\t\t\tXSM\n\t\tCALL\n\t\t\tMATMOVE\n\t\tCALL\n\t\t\tCALCGA\n\t\tGOTO\n\t\t\tQMAJ\n\n# Page 954\n# NAME -- S52.3\n# FUNCTION --\tXSMD= UNIT R\n#\t\tYSMD= UNIT(V X R)\n#\t\tZSMD= UNIT(XSMD X YSMD)\n# CALL --\tDLOAD\tCALL\n#\t\t\tTALIGN\n#\t\t\tS52.3\n# INPUT --\tTIME OF ALIGNMENT IN MPAC\n# OUTPUT --\tX,Y,ZSMD\n# SUBROUTINES -- CSMCONIC\n\n\t\tCOUNT*\t$$/S52.3\nS52.3\t\tSTQ\n\t\t\tQMAJ\n\t\tSTCALL\tTDEC1\n\t\t\tLEMCONIC\n\t\tVLOAD\tUNIT\n\t\t\tRATT\n\t\tSTOVL\tXSMD\n\t\t\tVATT\n\t\tVXV\tUNIT\n\t\t\tRATT\n\t\tSTOVL\tYSMD\n\t\t\tXSMD\n\t\tVXV\tUNIT\n\t\t\tYSMD\n\t\tSTCALL\tZSMD\n\t\t\tQMAJ\n\n# Page 955\n# NAME -- R52 (AUTOMATIC OPTICS POSITIONING ROUTINE)\n#\n# FUNCTION -- POINT THE AOT APTICS AXIS BY MANEUVERING THE LEM TO A NAVIGATION\n# STAR SELECTED BY ALIGNMENT PROGRAMS OR DSKY INPUT\n#\n# CALLING -- CALL R52\n#\n# INPUT -- BESTI AND BESTJ (STAR CODES TIMES 6)\n#\n# OUTPUT -- STAR CODE IN BITS 1-6, DETENT CODE IN BITS 7-9\n# (NO CHECK IS MADE TO INSURE THE DETENT CODE TO BE VALID)\n# POINTVSM-1/2 UNIT NAV STAR VEC IN SM\n# SCAXIS-AOT OPTIC AXIS VEC IN NB X-Z PLANE\n#\n# SUBROUT -- R60LEM\n\n\t\tCOUNT*\t$$/R52\nR52\t\tSTQ\tEXIT\n\t\t\tSAVQR52\n\t\tINDEX\tSTARIND\n\t\tCA\tBESTI\t\t# PICK UP STARCODE DETERMINED BY R56\n\t\tEXTEND\n\t\tMP\t1/6TH\n\t\tAD\tBIT8\t\t# SET DETENT POSITION 2\n\t\tTS\tSTARCODE\t# SCALE AND STORE IN STARCODE\n\nR52A\t\tCAF\tV01N70\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\t\t# DISPLAY STARCODE AND WAIT FOR RESPONSE\n\t\tTC\tGOTOPOOH\t# V34 -- TERMINATE\n\t\tTCF\tR52B\t\t# V33 -- PROCEED TO ORIENT LEM\n\t\tTCF\tR52A\t\t# ENTER -- SELECT NEW STARCODE -- RECYCLE\n\nR52B\t\tTC\tDOWNFLAG\n\t\tADRES\t3AXISFLG\t# BIT6 OF FLAGWRD5 ZERO TO ALLOW VECPOINT\n\t\tCA\tSTARCODE\t# GRAB DETENT CODE\n\t\tMASK\tHIGH9\n\t\tEXTEND\n\t\tMP\tBIT9\n\t\tTS\tL\t\t# TEMP STORE DETENT\n\n\t\tEXTEND\n\t\tBZMF\tGETAZEL\t\t# CODE 0, COAS CALIBRATION\n\n\t\tAD\tNEG7\n\t\tEXTEND\n\t\tBZF\tGETAZEL\t\t# CODE 7, COAS SIGHTING\n\n\t\tEBANK=\tXYMARK\n\t\tCA\tEBANK7\n\t\tTS\tEBANK\n# Page 956\n\t\tINDEX\tL\n\t\tCA\tAOTAZ -1\t# PICK UP AZ CORRESPONDING TO DETENT\n\t\tTS\tL\n\t\tEBANK=\tXSM\n\t\tCA\tEBANK5\t\t# CHANGE TO EBANK5 BUT DON'T DISTURB L\n\t\tTS\tEBANK\n\t\tCA\tBIT13\t\t# SET ELV TO 45 DEG\n\t\tXCH\tL\t\t# SET C(A)=AZ, C(L)=45 DEG\n\t\tTCF\tAZEL\t\t# GO COMP OPTIC AXIS\n\nGETAZEL\t\tCAF\tV06N87\t\t# CODE 0 OR 7, GET AZ AND EL KEY IN\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# V34 -- TERMINATE\n\t\tTCF\t+2\t\t# PROCEED -- CALC OPTIC AXIS\n\t\tTCF\tGETAZEL\t\t# ENTER -- RECYCLE\n\n\t\tEXTEND\n\t\tDCA\tAZ\t\t# PICK UP AZ AND EL IN SP 2'S COMP\nAZEL\t\tINDEX\tFIXLOC\t\t# JAM AZ AND EL IN 8 AND 9 OF VAC\n\t\tDXCH\t8D\n\t\tTC\tINTPRET\n\t\tCALL\t\t\t# GO COMPUTE OPTIC AXIS AND STORE IN\n\t\t\tOANB\t\t# SCAXIS IN NB COORDS\n\t\tRTB\tCALL\n\t\t\tLOADTIME\n\t\t\tPLANET\n\t\tMXV\tUNIT\n\t\t\tREFSMMAT\n\t\tSTORE\tPOINTVSM\t# STORE FOR VECPOINT\n\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tR60LEM\t\t# GO TORQUE LEM OPTIC AXIS TO STAR LOS\n\n\t\tCAF\tHIGH9\t\t# IF COAS CALIBRATION CODE 0.  RECYCLE\n\t\tMASK\tSTARCODE\n\t\tEXTEND\n\t\tBZF\tR52A\n\n\t\tTC\tINTPRET\t\t# RETURN FROM KALCMANU\n\t\tGOTO\n\t\t\tSAVQR52\t\t# RETURN TO CALLER\n\n1/6TH\t\tDEC\t.1666667\nV01N70\t\tVN\t0170\nV06N87\t\tVN\t687\n\n# Page 957\n# LUNAR SURFACE STAR ACQUISITION\n\n\t\tBANK\t15\n\t\tSETLOC\tP50S\n\t\tBANK\n\t\tCOUNT*\t$$/R59\n\nR59 \t\tCS\tFLAGWRD3\n\t\tMASK\tREFSMBIT\t# IF REFSMMAT FLAG CLEAR BYPASS STAR ACQUIRE\n\t\tCCS\tA\n\t\tTCF\tR59OUT\t\t# NO REFSMMAT GO TO AOTMARK\n\n\t\tCAF\tV01N70*\t\t# SELECT STAR CODE FOR ACQUISITION\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# V34 -- TERMINATE\n\t\tTCF\tR59A\t\t# V33 -- PROCEED\n\t\tTCF\tR59\t\t# V32 -- RECYCLE\n\nR59A\t\tCS\tHIGH9\t\t# GRAB STARCODE FOR INDEX\n\t\tMASK\tAOTCODE\n\t\tEXTEND\n\t\tMP\tREVCNT\t\t# JUST 6\n\t\tXCH\tL\n\t\tINDEX\tSTARIND\n\t\tTS\tBESTI\n\t\tINDEX\tFIXLOC\n\t\tTS\tX1\t\t# CODE X 6 FOR CATLOG STAR INDEX\n\t\tEXTEND\n\t\tBZF\tR59OUT\t\t# BYPASS ACQUISITION IF NOT CATLOG STAR\n\t\tCOM\n\t\tAD\tDEC227\n\t\tEXTEND\n\t\tBZMF\tR59OUT\n\n\t\tTC\tINTPRET\n\t\tVLOAD*\tMXV\n\t\t\tCATLOG,1\t# GRAB STAR VECTOR\n\t\t\tREFSMMAT\t# TRANSFORM TO SM\n\t\tUNIT\tCALL\n\t\t\tCDU*SMNB\n\t\tSTORE\tSTAR\t\t# TEMP STORE STAR VEC(NB)\n\t\tEXIT\n\n\t\tCAF\tBIT1\t\t# INITIALIZE AZ POSITION COD TO 1 (-60)\n\t\tTS\tPOSCODE\n\n\t\tEBANK=\tXYMARK\nINCAZ\t\tCA\tEBANK7\n\t\tTS\tEBANK\n\n# Page 958\n\t\tINDEX\tPOSCODE\n\t\tCA\tAOTAZ -1\t# PICK UP AZ CORRESPONDING TO POSCODE\n\t\tTS\tL\n\n\t\tEBANK=\tXSM\n\t\tCA\tEBANK5\n\t\tTS\tEBANK\n\n\t\tCA\tBIT13\t\t# SET ELV TO 45 DEG\n\t\tXCH\tL\t\t# SET C(A)=AZ, C(L)=45 DEG\n\t\tTS\tQMIN\t\t# STORE QMIN=AZ FOR LATER\n\t\tINDEX\tFIXLOC\n\t\tDXCH\t8D\t\t# JAM AZ IN 8D, 45 DEG IN 9D FOR OANB\n\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tOANB\t\t# GO CALC OPTIC AXIS WRT NB\n\t\tVLOAD\tDOT\n\t\t\tSTAR\t\t# DOT STAR WITH OA\n\t\t\tSCAXIS\n\t\tSL1\tARCCOS\n\t\tSTORE\t24D\t\t# TEMP STORE ARCCOS(STAR.OPTAXIS)\n\n\t\tDSU\tBPL\n\t\t\tDEG30\t\t# SEE IF STAR IN AOT FIELD-OF-VIEW\n\t\t\tNXAX\t\t# NOT IN FIELD -- TRY NEXT POSITION\n\t\tDLOAD\tDSU\t\t# SEE IF STAR AT FIELD CENTER\n\t\t\t24D\n\t\t\tDEG.5\n\t\tBMN\tDLOAD\t\t# CALC SPIRAL AND CURSOR\n\t\t\tZSPCR\t\t# GO ZERO CURSOR AND SPIRAL\n\t\t\t24D\t\t# GET SPIRAL\n\t\tDMP\tSL4\n\t\t\t3/4\t\t# 12 SCALED AT 16\n\t\tSTOVL\t24D\t\t# 12(ARCCOS(AO.STAR)) SCALED IN REVS\n\n\t\t\tSCAXIS\t\t# OA\n\t\tVXV\tUNIT\n\t\t\tXUNIT\n\t\tPUSH\tVXV\t\t# OA X UNITX \tPD 0-5\n\t\t\tSCAXIS\n\t\tVCOMP\n\t\tUNIT\tPDVL\t\t# UNIT(OA X (OA X UNITX))\tPD 6-11\n\t\t\tSCAXIS\n\t\tVXV\tUNIT\n\t\t\tSTAR\n\t\tPUSH\tDOT\t\t# 1/2(OA X STAR)\tPD 12-17\n\t\t\t0\t\t# DOT WITH 1/2(OA X UNITX) FOR YROT\n\t\tSL1\tARCCOS\n\t\tSTOVL\t26D\t\t# STORE THET SCALED IN REVS\n# Page 959\n\t\tDOT\t\t\t# UP 12-17, UP 6-11 FOR C2\n\t\tBPL\tDLOAD\t\t# IF THET NEG -- GET 360-THET\n\t\t\tR59D\n\t\t\tABOUTONE\n\t\tDSU\n\t\t\t26D\n\t\tSTORE\t26D\t\t# 360-THET SCALED IN REVS\n\nR59D\t\tSLOAD\tSR1\n\t\t\tQMIN\t\t# RESCALE AZ(N) TO REVS\n\t\tDAD\tPUSH\t\t# PUSH YROT + AZ(N) REVS\n\t\t\t26D\n\t\tRTB\n\t\t\t1STO2S\n\t\tSTODL\tCURSOR\t\t# YROT IN 1/2 REVS\n\t\t\t24D\t\t# LOAD SROT IN REVS\n\t\tDAD\t\t\t# 12(SEP) + YROT\n\t\tRTB\n\t\t\t1STO2S\n\t\tSTORE\tSPIRAL\t\t# SROT IN 1/2 REVS\n\t\tEXIT\n\t\tTCF\t79DISP\t\t# GO DISPLAY CURSOR-SPIRAL-POS CODE\n\nZSPCR\t\tEXIT\n\t\tCAF\tZERO\t\t# STAR ALMOST OPTIC AXIS, ZERO CURSOR\n\t\tTS\tCURSOR\t\t# AND SPIRAL ANGLES\n\t\tTS\tSPIRAL\n\t\tTCF\t79DISP\n\nNXAX\t\tEXIT\n\t\tINCR\tPOSCODE\n\t\tCS\tPOSCODE\n\t\tAD\tSEVEN\n\t\tEXTEND\n\t\tBZMF\tR59ALM\t\t# THIS STAR NOT AT ANY POSITION\n\t\tTCF\tINCAZ\n\nR59ALM\t\tTC\tALARM\t\t# THIS STAR CAN'T BE LOCATED IN AOT FIELD\n\t\tOCT\t404\n\t\tCAF\tVB05N09\t\t# DISPLAY ALARM\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\t# VB34 -- TERMINATE\n\t\tTCF\tR59OUT\t\t# VB33 -- PROCEED, GO WITHOUT ACQUIRE\n\t\tTCF\tR59\t\t# VB32 -- RECYCLE AND TRY ANOTHER STAR\n\n79DISP\t\tCAF\tV06N79\t\t# DISPLAY CURSOR, SPIRAL AND POS CODE\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\t# V34 -- TERMINATE\n# Page 960\n\t\tTCF\tR59E\t\t# V33 -- PROCEED TO MARK ROUTINE\n\t\tTCF\tR59\t\t# V32 -- RECYCLE TO TOP OF R59 AGAIN\n\nR59E\t\tCAF\tSEVEN\t\t# GET DETENT CODE CORRESPONDING TO POSCODE\n\t\tMASK\tPOSCODE\n\t\tEXTEND\n\t\tMP\tBIT7\t\t# DETEND CODE NOW IN L\n\t\tCS\tHIGH9\n\t\tMASK\tAOTCODE\t\t# ISOLATE STAR NO BIT 1-6\n\t\tAD\tL\n\t\tTS\tAOTCODE\t\t# STORE DETENT 7-9\n\nR59OUT\t\tTC\tBANKCALL\t# GO TO AOTMARK FOR SIGHTING\n\t\tCADR\tAOTMARK\n\t\tTC\tBANKCALL\n\t\tCADR\tAOTSTALL\t# SLEEP TILL SIGHTING DONE\n\t\tTC\tCURTAINS\t# BADEND RETURN FROM AOTMARK\n\t\tTCF\tR59RET\t\t# RETURN TO 1 STAR OR 2STAR\n\nV01N70*\t\tVN \t170\nV06N79\t\tVN\t679\nDEG30\t\t2DEC\t.083333333\t# 30 DEGREES\nDEG.5\t\t2DEC\t.00138888\t# .5 DEGREES SCALED IN REVS.\nDEG60\t\tOCT\t12525\t\t# 60 DEG CDU SCALING\nCURSOR\t\tEQUALS\tGDT/2\nSPIRAL\t\tEQUALS\tGDT/2 +2\nPOSCODE\t\tEQUALS\tGDT/2 +4\n\n# Page 961\n# NAME -- \tPLANET\n# FUNCTION --\tTO PROVIDE THE REFERENCE VECTOR FOR THE SIGHTED CELESTIAL\n#\t\tBODY.  STARS ARE FETCHED FROM THE CATALOG, SUN, EARTH AND\n#\t\tMOON ARE COMPUTED BY LOCSAM, PLANET VECTORS ARE ENTERED\n#\t\tBY DSKY INPUT.\n# CALL --\tCALL\n#\t\t\tPLANET\n# INPUT --\tTIME IN MPAC\n# OUTPUT --\tVECTOR IN MPAC\n# SUBROUTINES -- LOCSAM\n# DEBRIS --\tVAC, STARAD - STARAD +17\n\n\t\tSETLOC\tP50S\n\t\tBANK\n\t\tCOUNT*\t$$/P51\n\nPLANET\t\tSTOVL\tTSIGHT\n\t\t\tZEROVEC\n\t\tSTORE\tSTARAD\n\t\tSTQ\tEXIT\n\t\t\tGCTR\n\t\tCS\tHIGH9\n\t\tMASK\tAOTCODE\n\t\tEXTEND\n\t\tMP\tREVCNT\n\t\tXCH\tL\n\t\tINDEX\tSTARIND\n\t\tTS\tBESTI\n\t\tCCS\tA\n\t\tTCF\tNOTPLAN\n\t\tCAF\tVNPLANV\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\t-3\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tTC\tINTPRET\n\t\tVLOAD\tUNIT\n\t\t\tSTARAD\n\t\tGOTO\n\t\t\tGCTR\nNOTPLAN\t\tCS\tA\n\t\tAD\tDEC227\n\t\tEXTEND\n\t\tBZMF\tCALSAM1\n\t\tINDEX\tSTARIND\n\t\tCA\tBESTI\n\t\tINDEX\tFIXLOC\n\t\tTS\tX1\n\t\tTC\tINTPRET\n# Page 962\n\t\tVLOAD*\tGOTO\n\t\t\tCATLOG,1\n\t\t\tGCTR\nCALSAM1\t\tTC\tINTPRET\nCALSAM\t\tDLOAD\tCALL\n\t\t\tTSIGHT\n\t\t\tLOCSAM\n\t\tLXC,1\tVLOAD\n\t\t\tSTARIND\n\t\t\tVEARTH\n\t\tSTOVL\t0D\n\t\t\tVSUN\n\t\tSTOVL\tVEARTH\n\t\t\t0D\n\t\tSTORE\tVSUN\n\t\tDLOAD*\tLXC,1\n\t\t\tBESTI,1\n\t\t\tMPAC\n\t\tVLOAD*\tGOTO\n\t\t\tSTARAD -228D,1\n\t\t\tGCTR\nDEC227\t\tDEC\t227\nVNPLANV\t\tVN\t0688\nPIPSRINE\t=\tPIPASR +3\t# EBANK NOT 4 SO DON'T LOAD PIPTIME1\n\n# Page 963\n# GRAVITY VECTOR DETERMINATION ROUTINE\n# BY KEN VINCENT\n#\n# FOR DETAILED DESCRIPTION SEE 504GSOP 5.6.3.2.5.\n#\n# THIS PROGRAM FINDS THE DIRECTION OF THE MOON'S GRAVITY\n# WHILE THE LM IS IN THE MOON'S SURFACE.  IT WILL BE USED\n# FOR LUNAR SURFACE ALIGNMENT.  THE GRAVITY VECTOR IS\n# DETERMINED BY READING THE PIPAS WITH THE IMU AT TWO\n# PARTICULAR ORIENTATIONS.  THE TWO READINGS ARE AVERAGED\n# AND UNITIZED AND TRANSFORMED TO NB COORDINATES.  THE TWO\n# ORIENTATIONS WERE CHOSEN TO REDUCE BIAS ERRORS IN THE\n# READINGS.\n#\n# CALL --\n#\tTC\tBANKCALL\n#\tCADR\tGVDETER\n#\n# INPUTS --\n#\tPIPAS, CDUS\n#\n# OUTPUTS --\n#\tSTARSAV1 = UNIT GRAVITY\n#\tGSAV     = DITTO\n#\tGRAVBIT  = 1\n#\n# SUBROUTINES --\n#\tPIPASR, IMUCOARS, IMUFINE, IMUSTALL, 1/PIPA, DELAYJOB, CDUTRIG,\n#\t*NBSM*, *SNMB*, CALCGA, GOFLASH\n#\n# DEBRIS --\n#\tVAC, SAC, STARAD, XSM, XNB, THETAD, DELV, COSCDU, SINCDU\n\nGVDETER\t\tCAF\t42DEG\n\t\tTS\tTHETAD\n\t\tCOM\n\t\tTS\tTHETAD \t+1\n\t\tCAF\t35DEG\n\t\tTS\tTHETAD\t+2\n\t\tTC\tINTPRET\n\t\tCLEAR\tCALL\n\t\t\tREFSMFLG\n\t\t\tLUNG\n\n# FIND GIMBAL ANGLES WHICH ROTATE SM 180 DEG ABOUT G VEC\n#\n# \tDEFINE G COOR SYS\n#\t\t      _\n#\t\t    [ X ]   [    UNIT G    ]\n#\t\t*   [ _ ]   [            _ ]\n#\t\tM = [ Y ] = [ UNITEZSM * X ]\n#\t\t    [ _ ]   [       _   _  ]\n#\t\t    [ Z ]   [ UNIT( X * Y )]\n#\n#\tTHEN ROTATED SM WRT PRESENT IS\n#\n# Page 964\n#\t\t           [ 1   0   0 ]\n#\t\t *      *T [           ] *             *      *\n#\t\tXSM =   M  [ 0  -1   0 ] M  =  2 (X X ) - 1/2 I\n#     \t\t           [           ]           I J\n#\t\t\t   [ 0   0  -1 ]\n#\n# \tALSO NB WRT PRES SM IS\n#\n#\t\t *      *  *\n#\t\tXNB = NBSM I\n#\n#\t                         *    *\n#\tGIMBAL ANGLES = CALCGA( XSM, XNB )\n\n\t\tSETLOC\tP50S\n\t\tBANK\n\t\tCOUNT*\t$$/P57\n\t\tAXT,1\tSSP\t\t# X1=18\n\t\t\t18D\t\t# S1=6\n\t\t\tS1\t\t# X2, -2\n\t\t\t6D\n\t\tLXC,2\n\t\t\tS1\nGRAVEL\t\tVLOAD*\tCALL\n\t\t\tXUNIT -6,2\n\t\t\t*NBSM*\t\t# SIN AND COS COMPUTED IN LUNG\n\t\tSTORE\tXNB +18D,1\n\t\tVLOAD\n\t\t\tSTAR\n\t\tLXC,2\tVXSC*\t\t# COMPLEMENT -- UNITX ARE BACKWARD --\n\t\t\tX2\n\t\t\tSTAR +6,2\t# OUTER PRODUCT\n\t\tVSL2\tLXC,2\n\t\t\tX2\n\t\tVSU*\tINCR,2\n\t\t\tXUNIT -6,2\n\t\t\t2D\n\t\tSTORE\tXSM +18D,1\n\t\tTIX,1\tCALL\n\t\t\tGRAVEL\n\t\t\tCALCGA\n\t\tVLOAD\tVSR1\n\t\t\tGOUT\n\t\tSTCALL\tSTARAD +12D\n\t\t\tLUNG\n\t\tVLOAD\tVSR1\n\t\t\tGOUT\n\t\tVAD\tUNIT\n\t\t\tSTARAD +12D\n\t\tSTORE\tSTARSAV1\n\t\tDOT\n\t\t\tGSAV\n\t\tSL1\tACOS\n# Page 965\n\t\tSTORE\tDSPTEM1\n\t\tEXIT\n\t\tTC\tDOWNFLAG\t# CLAR FREEFLAG IN CASE OF RECYCLE\n\t\tADRES\tFREEFLAG\n\n\t\tCA\tDISGRVER\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTCF\tPROGRAV\t\t# VB33 -- PROCEED\n\t\tTC\tUPFLAG\t\t# VB32 -- RECYCLE -- STORE GRAV AND DO IT AGAIN\n\t\tADRES\tFREEFLAG\t# AND SET FREEFLAG TO SHOW RECYCLE\n\nPROGRAV\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tSTARSAV1\n\t\tSTORE\tGSAV\n\t\tEXIT\n\t\tCAF\tFREEFBIT\t# IF FREEFLAG SET, RE-COMPUTE GRAVITY\n\t\tMASK\tFLAGWRD0\n\t\tCCS\tA\n\t\tTCF\tGVDETER\t\t# SET\n\t\tTCF\tATTCHK\t\t# EXIT FROM GVDETER\n\nLUNG\t\tSTQ\tVLOAD\n\t\t\tQMIN\n\t\t\tZEROVEC\n\t\tSTORE\tGACC\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUCOARS\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUFINE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tCA\tT/2SEC\n\t\tTS\tGCTR\n\t\tCA\tPRIO31\n\t\tTS\t1/PIPADT\n\t\tTC\tBANKCALL\n# Page 966\n\t\tCADR\tGCOMPZER\t# INITIALIZE COMPENSATION\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tBANKCALL\t# DON'T NEED TO INHINT.  THIS USED TO\n\t\tCADR\tPIPSRINE\t# INITIALIZE PIPAS.  DON'T USE DATA\n\t\tTC\tINTPRET\nGREED\t\tEXIT\t\t\t# = MASK 7776 IN BASIC SO DON'T CARE\n\t\tCAF\t2SECS\n\t\tTC\tTWIDDLE\t\t# SET UP 2 SEC TASK TO READ PIPAS\n\t\tADRES\tGRABGRAV\n\n\t\tTC\tENDOFJOB\n\nGRABGRAV\tTC\tIBNKCALL\n\t\tCADR\tPIPSRINE\n\t\tCAF\tPRIO13\t\t# RE-ESTABLISH MAINLINE JOB\n\t\tTC\tFINDVAC\n\t\tEBANK=\tSTARAD\n\t\t2CADR\tADDGRAV\n\n\t\tTC\tTASKOVER\n\nADDGRAV\t\tTC\tBANKCALL\n\t\tCADR\t1/PIPA\n\t\tINCR\tGCTR\n\t\tTC\tINTPRET\n\t\tVLOAD\tVAD\n\t\t\tDELV\n\t\t\tGACC\n\t\tSTORE\tGACC\t\t# ACCUMULATE G VECTOR\n\t\tSLOAD\tBMN\n\t\t\tGCTR\n\t\t\tGREED\n\t\tVLOAD\tUNIT\n\t\t\tGACC\n\t\tSTCALL\tSTAR\n\t\t\tCDUTRIG\t\t# TRANSFORM IN NB COOR AND STORE\n\t\tCALL\t\t\t# \tIN OUTPUT\n\t\t\t*SMNB*\n\t\tSTORE\tGOUT\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\nQMINEXIT\tTC\tINTPRET\n\t\tGOTO\n\t\t\tQMIN\nT/2SEC\t\tDEC\t-20\n# Page 967\nDISGRVER\tVN\t0604\n42DEG\t\tOCT\t07357\n35DEG\t\tOCT\t06211\n\n# Page 968\n# NAME -- GYROTRIM\n#\n# THIS PROGRAM COMPUTES AND SENDS GYRO COMMANDS WHICH CAUSE THE CDUS\n# TO ATTAIN A PRESCRIBED SET OF ANGLES.  THIS ROUTINE ASSUMES THE\n# VEHICLES ATTITUDE REMAINS STATIONARY DURING ITS OPERATION.\n#\n# CALL\t\tCALL\n#\t\t\tGYROTRIM\n#\n# INPUT\t\tTHETAD,+1,+2 = DESIRED CDU ANGLES\n#\t\tCDUX,CDUY,CDUZ\n#\n# OUTPUT\tGYRO TORQUE PULSES\n#\n# SUBROUTINES\tTRG*NBSM, *NBSM*, CDUTRIG, AXISGEN, CALCGTA, IMUFINE\n#\t\tIMPULSE, IMUSTALL\n#\t\t_______  ______  ______     *          *   ___\n# DEBRIS \tCDUSPOT, SINCDU, COSCDU, STARAD, VAC, XDC, OGC\n\n\t\tCOUNT*\t$$/P57\nGYROTRIM\tSTQ\tDLOAD\n\t\t\tQMIN\n\t\t\tTHETAD\n\t\tPDDL\tPDDL\n\t\t\tTHETAD +2\n\t\t\tTHETAD +1\n\t\tVDEF\n\t\tSTOVL\tCDUSPOT\n\t\t\tXUNIT\n\t\tCALL\n\t\t\tTRG*NBSM\n\t\tSTOVL\tSTARAD\n\t\t\tYUNIT\n\t\tCALL\n\t\t\t*NBSM*\n\t\tSTCALL\tSTARAD +6\n\t\t\tCDUTRIG\n\t\tCALL\n\t\t\tCALCSMSC\n\t\tVLOAD\n\t\t\tXNB\n\t\tSTOVL\t6D\n\t\t\tYNB\n\t\tSTCALL\t12D\n\t\t\tAXISGEN\n\t\tCALL\n\t\t\tCALCGTA\nJUSTTRIM\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUFINE\n\t\tTC\tBANKCALL\n# Page 969\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tCA\tGYRCDR\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUSTALL\n\t\tTC\tCURTAINS\n\t\tTCF\tQMINEXIT\n\nGYRCDR\t\tECADR\tOGC\n\n# Page 970\n# PERFORM STAR ACQUISITION AND STAR SIGHTINGS\n\n2STARS\t\tCAF\tZERO\t\t# INITIALIZE STARIND\n\t\tTCF\t+2\t\t# ZERO FOR 1ST STAR, ONE FOR 2ND STAR\n1STAR\t\tCAF\tBIT1\n\t\tTS\tSTARIND\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTCF\tR59\t\t# GO DO STAR ACQUIRE AND AOTMARK\n\nR59RET\t\tCA\tSTARIND\t\t# BACK FROM SURFACE MARKING\n\t\tEXTEND\n\t\tBZF\tASTAR\t\t# 1ST STAR MARKED\n\n\t\tTC\tPHASCHNG\n\t\tOCT \t04024\n\n\t\tTC\tINTPRET\n\t\tDLOAD\tCALL\n\t\t\tTSIGHT\t\t# TIME OF 2ND MARK\n\t\t\tPLANET\n\t\tSTCALL\tVEC2\t\t# STORE 2ND CATALOG VEC (REF)\n\t\t\tSURFLINE\n\nASTAR\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tSTARAD +6\n\t\tSTORE\tSTARSAV1\t# 1ST OBSERVED STAR (SM)\n\t\tDLOAD\tCALL\n\t\t\tTSIGHT\t\t# TIME OF 1ST MARK\n\t\t\tPLANET\n\t\tSTORE\tVEC1\t\t# STORE 1ST CATALOG VEC (REF)\n\t\tEXIT\n\t\tTCF\t1STAR\t\t# GO GET 2ND STAR SIGHTING\n\n# Page 971\n# DO FINE OR COARSE ALIGNMENT OF IMU\n\nSURFLINE\tSSP\tAXT,2\n\t\t\tS2\n\t\t\t6\n\t\t\t12D\nWRTDESIR\tVLOAD*\tMXV\n\t\t\tVEC1 +12D,2\t# PICK UP VEC IN REF, TRANS TO DESIRED SH\n\t\t\tXSMD\n\t\tUNIT\n\t\tSTORE\tSTARAD +12D,2\t# VEC IN SM\n\t\tVLOAD*\n\t\t\tSTARSAV1 +12D,2\t# PICK UP VEC IN PRESENT SM\n\t\tSTORE\t18D,2\n\t\tTIX,2\tBON\n\t\t\tWRTDESIR\n\t\t\tINITALGN\t# IF INITIAL PASS (OPTION 0) BYPASS R54\n\t\t\tINITBY\nDOALIGN\t\tCALL\n\t\t\tR54\t\t# DO CHKSDATA\n\t\tBOFF\n\t\t\tFREEFLAG\n\t\t\tP57POST\t\t# ASTRO DOES NOT LIKE DATA TEST RESULTS\nINITBY\t\tCALL\n\t\t\tAXISGEN\t\t# GET DESIRED ORIENT WRT PRES. XDC,YDC,ZDC\n\t\tCALL\n\t\t\tCALCGTA\t\t# GET GYRO TORQ ANGLES, OGC,IGC,MGC\n\t\tEXIT\n\t\tCAF\tINITABIT\t# IF INITIAL PASS BYPASS NOUN 93 DISPLAY\n\t\tMASK\tFLAGWRD8\n\t\tCCS\tA\n\t\tTCF\t5DEGTEST\n\t\tCAF\tDISPGYRO\t# DISPLAY GYRO TORQ ANGLES V 06N93\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\t# V34 -- TERMINATE\n\t\tTCF\t5DEGTEST\t# VB33 -- PROCEED TO COARSE OR FINE\n\t\tTCF\tP57POST +1\t# VB32 -- RECYCLE, MAYBE RE-ALIGN\n\n5DEGTEST\tTC\tINTPRET\t\t# IF ANGLES GREATER THAN 5 DEGS, DO COARSE\n\t\tVLOAD\tBOV\n\t\t\tOGC\n\t\t\tSURFSUP\nSURFSUP\t\tSTORE\tOGCT\n\t\tV/SC\tBOV\n\t\t\t5DEGREES\n\t\t\tCOATRIM\n\t\tSSP\tGOTO\n\t\t\tQMIN\n\t\t\tSURFDISP\n# Page 972\n\t\t\tJUSTTRIM\t# ANGLES LESS THAN 5 DEG, DO GYRO TORQ\n\nSURFDISP\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\n\t\tAXC,1\tAXC,2\n\t\t\tXSMD\n\t\t\tREFSMMAT\n\t\tSET\tCALL\n\t\t\tREFSMFLG\n\t\t\tMATMOVE\n\t\tEXIT\n\t\tCCS\tOPTION2\t\t# IF OPTION ZERO DO FINISH\n\t\tTCF\tB2F8\n\t\tTCF\tP57POST +1\n\nB2F8\t\tCAF\tINITABIT\t# IF INITIAL FLAG SET, RE-CYCLE.\n\t\tMASK\tFLAGWRD8\n\t\tCCS\tA\n\t\tTCF\tP57JUMP\t\t# IT'S SET\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tREFMF\t\t# GO GET ATTITUDE VEC IN MF(YNBSAV,XNBSAV)\nP57POST\t\tEXIT\n\t\tCAF\tOCT14\t\t# DISPLAY V50N25 CHK CODE 14\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF1\n\t\tTCF\tGOTOPOOH\t# VB34 -- TERMINATE\n\t\tTCF\tP57JUMP\t\t# VB33 -- PROCEED TO RE-ALIGN\n\t\tCS\tBIT2\t\t# TEST TO SEE IF ALIGNED BY OPTION 2\n\t\tAD \tOPTION2\n\t\tEXTEND\n\t\tBZF\t+2\t\t# YES -- GO CALCULATE LANDING SITE\n\t\tTCF\tGOTOPOOH\t# NO -- EXIT P57\n\t\tTC\tPHASCHNG\t# RESTART PLACE\n\t\tOCT\t04024\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\t\t# USE GNB\n\t\t\tGSAV\n\t\t\tCDU*NBSM\t# GO TO SM COORDS\n\t\tVXM\tSET\t\t#\tON MOON SO SET LUNAFLAG\n\t\t\tREFSMMAT\t#\tG(REF) = (REFSMMAT)T (NBSM)GNB\n\t\t\tLUNAFLAG\n\t\tPDVL\tABVAL\n\t\t\tRLS\n\t\tVXSC\tSTADR\n\t\tSTORE\tALPHAV\t\t# ALPHAV = RLSMAG * G(REF)\n\t\tCLEAR\tRTB\n# Page 973\n\t\t\tERADFLAG\n\t\t\tLOADTIME\n\t\tCALL\n\t\t\tN89DISP\t\t# SUBROUTINE TO CALC LS AND GIVE RLS BACK\n\t\tSTORE\tRN\t\t# RN=RLS B-29 = LM POSITION\n\t\tVSL2\tPDDL\t\t# R-TO-RP GETS RLS B-27 AT 0-50 IN PDLIST\n\t\t\tGDT/2 +4\t# TIME TEMP STORED IN N89DISP\n\t\tPUSH\t\t\t# TIME AT 6-7 IN PDLIST\n\t\tSTCALL\tPIPTIME\t\t# PIPTIME = LM STATE TIME\n\t\t\tR-TO-RP\n\t\tSTORE\tRLS\t\t# RLS IN MOON-FIXED COORDS\n\t\tEXIT\n\t\tTCF\tGOTOPOOH\t# EXIT P57\n\n# Page 974\n# COARSE AND FINE ALIGN IMU\n\nCOATRIM\t\tAXC,1\tAXC,2\n\t\t\tXDC\n\t\t\tXSM\n\t\tCALL\n\t\t\tMATMOVE\n\t\tCALL\n\t\t\tCDUTRIG\n\t\tCALL\n\t\t\tCALCSMSC\n\t\tCALL\n\t\t\tCALCGA\n\t\tBOFF\tEXIT\n\t\t\tINITALGN\t# IF INITIAL ALIGNMENT DISPLAY FINAL\n\t\t\tCORSIT\t\t# GIMBAL ANGLES IF COARSE ANGLES GREATER\n\t\tCAF\tV06N22\t\t# THAN 5 DEGREES\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tGOTOPOOH\n\t\tTCF\t+2\n\t\tTCF\t-5\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tINTPRET\nCORSIT\t\tCALL\n\t\t\tCOARSE\n\t\tCALL\n\t\t\tNCOARSE\n\t\tCALL\n\t\t\tGYROTRIM\n\t\tGOTO\n\t\t\tSURFDISP\nDISPGYRO\tVN\t0693\n\n# Page 975\n# LUNAR SURFACE IMU ALIGNMENT PROGRAM\n\nP57\t\tTC\tBANKCALL\t# IS ISS ON -- IF NOT, IMUCHK WILL SEND\n\t\tCADR\tIMUCHK\t\t# ALARM CODE 210 AND EXIT VIA GOTOPOOH\n\n\t\tCAF\tTHREE\t\t# JAM REFSMMAT OPTION 3 FOR INITIAL DISP.\n\t\tTS\tOPTION2\nP57OPT\t\tCAF\tBIT1\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF4R\t# FLASH V04N06 FOR ALIGNMENT CODE\n\t\tTC\tGOTOPOOH\t# V34 TERMINATE\n\t\tTCF\tALIGNOPT\t# V33 PROCEED\n\t\tTCF\tP57OPT\t\t# V32 RECYCLE\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t00014\n\t\tTC\tENDOFJOB\n\nALIGNOPT\tCA\tOPTION2\n\t\tMASK\tTHREE\n\t\tINDEX\tA\n\t\tTCF\t+1\n\t\tTCF\tTDISP\t\t# OPTION 4 LS ORIENTATION\n\t\tTCF\tPACKOPTN\t# OPTION 1 PREFERRED\n\t\tTCF\tP57OPT\t\t# OPTION 2 INVALID IN P57, RECYCLE\n\t\tTC\tINTPRET\t\t# OPTION 3 REFSMMAT\n\t\tAXC,1\tAXC,2\t\t# JAM REFSMMAT IN XSMD LOC\n\t\t\tREFSMMAT\n\t\t\tXSMD\n\t\tCALL\n\t\t\tMATMOVE\n\t\tGOTO\n\t\t\tPACKOPTN -1\n\nTDISP\t\tTC\tINTPRET\n\t\tDLOAD\n\t\t\tTIG\t\t# LOAD ASCENT TIME FOR DISPLAY\nP57A\t\tSTORE\tDSPTEM1\n\t\tEXIT\nP57AA\t\tCAF\tV06N34*\t\t# DISPLAY TALIGN, TALIGN : DSPTEM1\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\t# V34 -- TERMINATE\n\t\tTCF \t+2\n\t\tTCF\tP57AA\t\t# VB32 -- RECYCLE\n\n\t\tTC\tINTPRET\n\t\tRTB\tPDDL\n\t\t\tLOADTIME\t# PUSH CURRENT TIME AND PICK UP KEY IN\n\t\t\tDSPTEM1\n# Page 976\n\t\tBZE\tPDDL\n\t\t\tP57C\t\t# IF KEY IN TIME ZERO - TALIGN=CURRENT TIME\n\t\tDSU\tBPL\t\t# NOT ZERO SO EXCHANGE PD WITH DSPTEM1\n\t\t\tDSPTEM1\n\t\t\tP57C\n\t\tDLOAD\tSTADR\t\t# IF KEYIN TIME GREATER THAN CURRENT TIME\n\t\tSTORE\tTIG\t\t# STORE IT IN TIG\n\t\tSTCALL\tTALIGN\n\t\t\tP57D\nP57C\t\tDLOAD\tSTADR\n\t\tSTORE\tTALIGN\nP57D\t\tSTCALL\tTDEC1\n\t\t\tLEMPREC\t\t# COMPUTE DESIRED IMU ORIENTATION STORE\n\t\tVLOAD\tUNIT\t\t# IN X,Y,ZSMD\n\t\t\tRATT\n\t\tSTCALL\tXSMD\n\t\t\tLSORIENT\n\t\tEXIT\nPACKOPTN\tCAF\tZERO\t\t# PACK FLAG BITS FOR OPTION DISPLAY\n\t\tTS\tOPTION1 +1\t# JAM ZERO IN ALIGNMENT OPTION\n\t\tTS\tOPTION1 +2\t# INITIALIZE FLAG BIT CONFIGURATION\n\t\tCAF\tREFSMBIT\n\t\tMASK\tFLAGWRD3\t# REFSMFLG\n\t\tCCS\tA\n\t\tCAF\tBIT7\t\t# SET\n\t\tADS\tOPTION1 +2\t# CLEAR -- JUST ZERO\n\t\tCAF\tATTFLBIT\n\t\tMASK\tFLAGWRD6\t# ATTFLG\n\t\tCCS\tA\n\t\tCAF\tBIT4\t\t# SET\n\t\tADS\tOPTION1 +2\t# CLEAR -- ZERO IN A\n\t\tCAF\tBIT4\n\t\tTS\tOPTION1\t\t# JAM 00010 IN OPTION1 FOR CHECK LIST\n\nDSPOPTN\t\tCAF\tVB05N06\t\t# DISPLAY OPTION CODE AND FLAG BITS\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\t# VB34 -- TERMINATE\n\t\tTCF\t+2\t\t# V33 -- PROCEED\n\t\tTCF\tDSPOPTN\t\t# V32 -- RECYCLE\n\n\t\tCAF\tREFSMBIT\n\t\tMASK\tFLAGWRD3\n\t\tCCS\tA\n\t\tTCF\tGETLMATT\t# SET, GO COMPUTE LM ATTITUDE\n\t\tCAF\tATTFLBIT\t# CLEAR -- CHECK ATTFLAG FOR STORED ATTITUDE.\n\t\tMASK\tFLAGWRD6\n\t\tCCS\tA\n\t\tTCF\tBYLMATT\t\t# ALLFLG SET, CHK OPTION FOR GRAVITY COMP\n\t\tCAF\tBIT2\t\t# SEE IF OPTION 2 OR 3\n# Page 977\n\t\tMASK\tOPTION2\n\t\tCCS\tA\n\t\tTCF\tBYLMATT\t\t# OPTION 2 OR 3 BUT DON'T HAVE ATTITUDE\n\t\tTC\tALARM\t\t# OPTION INCONSISTENT WITH FLAGS -- ALARM 701\n\t\tOCT\t701\n\t\tCAF\tVB05N09\t\t# DISPLAY ALARM FOR ACTION\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\t# VB34 -- TERMINATE\n\t\tTCF\tDSPOPTN\t\t# V33 -- PROCEED *********TEMPORARY\n\t\tTCF\tDSPOPTN\t\t# VB32 -- RECYCLE TO OPTION DISPLAY V 05N06\n\n# Page 978\n# TRANSFORM VEC1,2 FROM MOON FIXED TO REF AND JAM BACK IN VEC1,2\n\nMFREF\t\tSTQ\tSETPD\n\t\t\tQMAJ\n\t\t\t0\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTOVL\tTSIGHT\n\t\t\tVEC1\n\t\tPDDL\tPUSH\n\t\t\tTSIGHT\n\t\tCALL\n\t\t\tRP-TO-R\n\t\tSTOVL\tVEC1\n\t\t\tVEC2\n\t\tSETPD\tPDDL\n\t\t\t0\n\t\t\tTSIGHT\n\t\tPUSH\tCALL\n\t\t\tRP-TO-R\n\t\tSTCALL\tVEC2\n\t\t\tQMAJ\n\n# Page 979\n# COMPUTE LM ATTITUDE IN MOON FIXED COORDINATES USING REFSMMAT AND\n# STORE IN YNBSAV AND ZNBSAV.\n\nREFMF\t\tSTQ\tCALL\n\t\t\tQMAJ\n\t\t\tCDUTRIG\t\t# GET SIN AND COS OF CDUS\n\t\tRTB\tSETPD\n\t\t\tLOADTIME\n\t\t\t0\n\t\tSTCALL\tTSIGHT\n\t\t\tCALCSMSC\t# GET YNB IN SM\n\t\tVLOAD\tVXM\n\t\t\tYNB\n\t\t\tREFSMMAT\t# YNB TO REF\n\t\tUNIT\tPDDL\n\t\t\tTSIGHT\n\t\tPUSH\tCALL\n\t\t\tR-TO-RP\n\t\tSTOVL\tYNBSAV\t\t# YNB TO MF\n\t\t\tZNB\n\t\tVXM\tUNIT\n\t\t\tREFSMMAT\t# ZNB TO REF\n\t\tPDDL\tPUSH\n\t\t\tTSIGHT\n\t\tCALL\n\t\t\tR-TO-RP\t\t# ZNB TO MF\n\t\tSTORE\tZNBSAV\n\t\tSETGO\n\t\t\tATTFLAG\n\t\t\tQMAJ\n\n# Page 980\n# BRANCH TO ALIGNMENT OPTION\n\nGETLMATT\tTC\tINTPRET\n\t\tCALL\n\t\t\tREFMF\t\t# GO TRANSFORM TO MF IN YNBSAV, ZNBSAV\n\t\tEXIT\n\nBYLMATT\t\tTC\tUPFLAG\t\t# SET INITIAL ALIGN FLAG\n\t\tADRES\tINITALGN\n\t\tCAF\tBIT1\n\t\tMASK\tOPTION2\t\t# SEE IF OPTION 1 OR 3\n\t\tCCS\tA\n\t\tTCF\tGVDETER\t\t# OPTION 1 OR 2, GET GRAVITY\n\nATTCHK\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tCAF\tATTFLBIT\t# NOT 1 OR 3, CHECK ATTFLAG\n\t\tMASK\tFLAGWRD6\n\t\tCCS\tA\n\t\tTCF\tP57OPT0\t\t# GET ALIGNMENT VECS FOR OPTION 0\nP57JUMP\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tDOWNFLAG\t# ATTFLG CLEAR -- RESET INTALIGN FLAG\n\t\tADRES\tINITALGN\n\t\tCAF\tTHREE\n\t\tMASK\tOPTION2\t\t# BRANCH ON OPTION CODE\n\t\tINDEX\tA\n\t\tTCF\t+1\n\t\tTCF\tP57OPT0\t\t# OPTION IS 0\n\t\tTCF\tP57OPT1\t\t# OPTION IS 1\n\t\tTCF\tP57OPT2\t\t# OPTION IS 2\n\t\tTCF\tP57OPT3\t\t# OPTION IS 3\n\n# Page 981\n# OPTION 0, GET TWO ATTITUDE VECS\n\nP57OPT0\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tYNBSAV\t\t# Y AND Z ATTITUDE WILL BE PUT IN REF\n\t\tSTOVL\tVEC1\n\t\t\tZNBSAV\n\t\tSTCALL\tVEC2\n\t\t\tCDUTRIG\n\t\tCALL\n\t\t\tCALCSMSC\t# COMPUTE SC AXIS WRT PRESENT SM\n\t\tVLOAD\n\t\t\tYNB\nSAMETYP\t\tSTOVL\tSTARSAV1\t# Y SC AXIS WRT PRESENT SM\n\t\t\tZNB\n\t\tSTCALL\tSTARSAV2\t# Z SC AXIS WRT PRESENT SM\n\t\t\tMFREF\t\t# TRANSFORM VEC1,2 FROM MF TO REF\n\t\tGOTO\n\t\t\tSURFLINE\n\n# OPTION 1, GET LANDING SITE AND Z-ATTITUDE VEC\n\nP57OPT1\t\tTC\tINTPRET\n\t\tVLOAD\tUNIT\n\t\t\tRLS\t\t# LANDING SITE VEC\n\t\tSTOVL\tVEC1\n\t\t\tZNBSAV\t\t# Z ATTITUDE VEC\n\t\tSTCALL\tVEC2\n\t\t\tCDUTRIG\n\t\tCALL\n\t\t\tCALCSMSC\t# GET ZNB AXIS WRT PRES SM FOR STARSAV2\n\t\tVLOAD\tCALL\n\t\t\tGSAV\t\t# TRANS GSAV FROM NB TO SM FOR STARSAV1\n\t\t\tCDU*NBSM\n\t\tGOTO\n\t\t\tSAMETYP\t\t# NOW DO SAME AS OPTION 0\n\n# Page 982\n# OPTION 2, GET TWO STAR SIGHTINGS\n\nP57OPT2\t\tTCF\t2STARS\t\t# DO SIGHTING ON 2 STARS\n\n# OPTION 3, GET LANDING SITE VEC AND ONE STAR SIGHTING\n\nP57OPT3\t\tTC\tINTPRET\n\t\tVLOAD\tUNIT\n\t\t\tRLS\t\t# LANDING SITE VEC\n\t\tSTORE\tVEC1\n\t\tSTOVL\tVEC2\t\t# DUMMY VEC2 FOR 2ND CATALOG STAR\n\t\t\tGSAV\t\t# GRAVITY VEC NB\n\t\tCALL\n\t\t\tCDU*NBSM\t# TRANS GSAV FROM NB TO SM FOR STARSAV1\n\t\tSTCALL\tSTARSAV1\n\t\t\tMFREF\t\t# STARSAV2 IS STORED AS 2ND OBSERVED STAR\n\t\tEXIT\n\t\tTCF\t1STAR\t\t# 1STAR GET VEC2, STARSAV2 GOES TO SURFLINE.\n\nVB05N06\t\tVN\t506\n\n# Page 983\n# CHECK IMODES30 TO VERIFY IMU IS ON\n\nIMUCHK\t\tCS\tIMODES30\n\t\tMASK\tBIT9\n\t\tCCS\tA\t\t# IS IMU ON\n\t\tTCF\t+4\t\t# YES\n\n\t\tTC\tALARM\t\t# NO, SEND ALARM AND EXIT\n\t\tOCT\t210\n\t\tTC\tGOTOPOOH\n\n\t\tTC\tUPFLAG\n\t\tADRES\tIMUSE\t\t# SET IMUSE FLAG\n\n\t\tTC\tSWRETURN\n\n\t\tBANK\t04\n\t\tSETLOC\tAOTMARK2\n\t\tBANK\n\t\tCOUNT*\t$$/P57\n\nLSORIENT\tSTQ\tVLOAD\n\t\t\tQMAJ\n\t\t\tRRECTCSM\n\t\tVXV\tVXV\n\t\t\tVRECTCSM\n\t\t\tXSMD\n\t\tUNIT\n\t\tSTORE\tZSMD\n\t\tVXV\tUNIT\n\t\t\tXSMD\n\t\tSTCALL\tYSMD\n\t\t\tQMAJ\n\n"
  },
  {
    "path": "Luminary099/P70-P71.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP70-P71.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t829-837\n# Mod history:\t2009-05-23 HG\tTranscribed from page images.\n#\t\t2009-06-05 RSB\tFixed a typo.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 829\n\t\tBANK\t21\n\t\tSETLOC\tR11\n\t\tBANK\n\n\t\tEBANK=\tDVCNTR\n\t\tCOUNT*\t$$/R11\n\nR10,R11\t\tCS\tFLAGWRD7\t# IS SERVICER STILL RUNNING?\n\t\tMASK\tAVEGFBIT\n\t\tCCS\tA\n\t\tTCF\tTASKOVER\t# LET AVGEND TAKE CARE OF GROUP 2.\n\t\tCCS\tPIPCTR\n\t\tTCF\t+2\n\t\tTCF\tLRHTASK\t\t# LAST PASS. CALL LRHTASK.\n +2\t\tTS\tPIPCTR1\n\nPIPCTR1\t\t=\tLADQSAVE\nPIPCTR\t\t=\tPHSPRDT2\n\t\tCAF\tOCT31\n\t\tTC\tTWIDDLE\n\t\tADRES\tR10,R11\nR10,R11A\tCS\tIMODES33\t# IF LAMP TEST, DO NOT CHANGE LR LITES.\n\t\tMASK\tBIT1\n\t\tEXTEND\n\t\tBZF\t10,11\n\nFLASHH?\t\tMASK\tFLGWRD11\t# C(A) = 1 = HFLASH BIT\n\t\tEXTEND\n\t\tBZF\tFLASHV?\t\t# H FLASH OFF, SO LEAVE ALONE\n\n\t\tCA\tHLITE\n\t\tTS\tL\n\t\tTC\tFLIP\t\t# FLIP H LITE\n\nFLASHV?\t\tCA\tVFLSHBIT\t# VLASHBIT MUST BE BIT 2.\n\t\tMASK\tFLGWRD11\n\t\tEXTEND\n\t\tBZF\t10,11\t\t# V FLASH OFF\n\n\t\tCA\tVLITE\n\t\tTS\tL\n\t\tTC\tFLIP\t\t# FLIP V LITE\n\n10,11\t\tCA\tFLAGWRD9\t# IS THE LETABORT FLAG SET ?\n\t\tMASK\tLETABBIT\n\t\tEXTEND\n\t\tBZF\tLANDISP\t\t# NO.  PROCEED TO R10.\n\nP71NOW?\t\tCS\tMODREG\t\t# YES.  ARE WE IN P71 NOW?\n# Page 830\n\t\tAD\t1DEC71\n\t\tEXTEND\n\t\tBZF\tLANDISP\t\t# YES.  PROCEED TO R10.\n\n\t\tEXTEND\t\t\t# NO.  IS AN ABORT STAGE COMMANDED?\n\t\tREAD\tCHAN30\n\t\tCOM\n\t\tTS\tL\n\t\tMASK\tBIT4\n\t\tCCS\tA\n\t\tTCF\tP71A\t\t# YES.\n\nP70NOW?\t\tCS\tMODREG\t\t# NO.  ARE WE IN P70 NOW?\n\t\tAD\t1DEC70\n\t\tEXTEND\n\t\tBZF\tLANDISP\t\t# YES.  PROCEED TO R10.\n\n\t\tCA\tL\t\t# NO.  IS AN ABORT COMMANDED?\n\t\tMASK\tBIT1\n\t\tCCS\tA\n\t\tTCF\tP70A\t\t# YES.\n\t\tTCF\tLANDISP\t\t# NO.  PROCEED TO R10.\n\n\t\tCOUNT*\t$$/P70\n\nP70\t\tTC\tLEGAL?\nP70A\t\tCS\tZERO\n\t\tTCF\t+3\nP71\t\tTC\tLEGAL?\nP71A\t\tCAF\tTWO\n +3\t\tTS\tQ\n \t\tINHINT\n\t\tEXTEND\n\t\tDCA\tCNTABTAD\n\t\tDTCB\n\n\t\tEBANK=\tDVCNTR\nCNTABTAD\t2CADR\tCONTABRT\n\n1DEC70\t\tDEC\t70\n1DEC71\t\tDEC\t71\n\n\t\tBANK\t05\n\t\tSETLOC\tABORTS1\n\t\tBANK\n\t\tCOUNT*\t$$/P70\n\nCONTABRT\tCAF\tABRTJADR\n\t\tTS\tBRUPT\n\t\tRESUME\n# Page 831\n\nABRTJADR\tTCF\tABRTJASK\n\nABRTJASK\tCAF\tOCTAL27\n\t\tAD\tQ\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE4\n\t\tINDEX\tQ\n\t\tCAF\tMODE70\n\t\tTS\tMODREG\n\n\t\tTS\tDISPDEX\t\t# INSURE DISPDEX IS POSITIVE.\n\n\t\tCCS\tQ\t\t# SET APSFLAG IF P71.\n\t\tCS\tFLGWRD10\t# SET APSFLAG PRIOR TO THE ENEMA.\n\t\tMASK\tAPSFLBIT\n\t\tADS\tFLGWRD10\n\t\tCS\tDAPBITS\t\t# DAPBITS = OCT 640 = BITS 6, 8, 9\n\t\tMASK\tDAPBOOLS\t# (TURN OFF: ULLAGE, DRIFT, AND XOVINHIB )\n\t\tTS\tDAPBOOLS\n\n\t\tCS\tFLAGWRD5\t# SET ENGONFLG.\n\t\tMASK\tENGONBIT\n\t\tADS\tFLAGWRD5\n\n\t\tCS\tPRIO30\t\t# INSURE THAT THE ENGINE IS ON, IF ARMED.\n\t\tEXTEND\n\t\tRAND\tDSALMOUT\n\t\tAD\tBIT13\n\t\tEXTEND\n\t\tWRITE\tDSALMOUT\n\n\t\tCAF\tLRBYBIT\t\t# TERMINATE R12.\n\t\tTS\tFLGWRD11\n\n\t\tCS\tFLAGWRD0\t# SET R10FLAG TO SUPPRESS OUTPUTS TO THE\n\t\tMASK\tR10FLBIT\t# CROSS-POINTER DISPLAY.\n\t\tADS\tFLAGWRD0\t# THE FOLLOWING ENEMA WILL REMOVE THE\n\t\t\t\t\t# DISPLAY INERTIAL DATA OUTBIT.\n\n\t\tTC\tCLRADMOD\t# INSURE RADMODES PROPERLY SET FOR R29.\n\n\t\tEXTEND\t\t\t# LOAD TEVENT FOR THE DOWNLINK.\n\t\tDCA\tTIME2\n\t\tDXCH\tTEVENT\n\n\t\tEXTEND\n\t\tDCA\tSVEXITAD\n\t\tDXCH\tAVGEXIT\n\n# Page 832\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE1\n\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE3\n\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE6\n\n\t\tCAF\tTHREE\t\t# SET UP 4.3SPOT FOR GOABORT\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE4\n\n\t\tCAF\tOCT37774\t# SET T5RUPT TO CALL DAPIDLER IN\n\t\tTS\tTIME5\t\t# 40 MILLISECONDS.\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tENEMA\n\n\t\tEBANK=\tDVCNTR\nSVEXITAD\t2CADR\tSERVEXIT\n\nMODE70\t\tDEC\t70\nOCTAL27\t\tOCT\t27\nMODE71\t\tDEC\t71\n\nDAPBITS\t\tOCT\t00640\n\n\t\tBANK\t32\n\t\tSETLOC\tABORTS\n\t\tBANK\n\n\t\tCOUNT*\t$$/P70\n\nGOABORT\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tINITCDUW\n\t\tEXIT\n\t\tCAF\tFOUR\n\t\tTS\tDVCNTR\n\n\t\tCAF\tWHICHADR\n\t\tTS\tWHICH\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tFLRCS\n# Page 833\n\t\tTC\tDOWNFLAG\n\t\tADRES\tFLUNDISP\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tIDLEFLAG\n\n\t\tTC\tUPFLAG\t\t# INSURE 4-JET TRANSLATION CAPABILITY.\n\t\tADRES\tACC4-2FL\n\n\t\tTC\tCHECKMM\n70DEC\t\tDEC\t70\n\t\tTCF\tP71RET\n\nP70INIT\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tTGOCOMP\n\t\tDLOAD\tSL\n\t\t\tMDOTDPS\n\t\t\t4D\n\t\tBDDV\n\t\t\tMASS\n\t\tSTODL\tTBUP\n\t\t\tMASS\n\t\tDDV\tSR1\n\t\t\tK(1/DV)\n\t\tSTORE\t1/DV1\n\t\tSTORE\t1/DV2\n\t\tSTORE\t1/DV3\n\t\tBDDV\n\t\t\tK(AT)\n\t\tSTODL\tAT\n\t\t\tDTDECAY\n\t\tDCOMP\tSL\n\t\t\t11D\n\t\tSTORE\tTTO\n\t\tSLOAD\tDCOMP\n\t\t\tDPSVEX\n\t\tSR2\n\t\tSTORE\tVE\t\t# INITIALIZE DPS EXHAUST VELOCITY\n\t\tSET\tCALL\n\t\t\tFLAP\n\t\t\tCOMMINIT\n\t\tAXC,1\tGOTO\t\t# RETURN HERE IN P70, SE X1 FOR DPS COEFF.\n\t\t\t0D\n\t\t\tBOTHPOLY\nINJTARG\t\tAXC,1\t\t\t# RETURN HERE IN P71, SET X1 FOR APS COEFF\n\t\t\t8D\nBOTHPOLY\tDLOAD*\tDMP\t\t# TGO D\n\t\t\tABTCOF,1\n\t\t\tTGO\n# Page 834\n\t\tDAD*\tDMP\n\t\t\tABTCOF +2,1\t# TGO(C+TGO D)\n\t\t\tTGO\n\t\tDAD*\tDMP\n\t\t\tABTCOF +4,1\t# TGO(B+TGO(C+TGO D))\n\t\t\tTGO\n\t\tDAD*\n\t\t\tABTCOF +6,1\t# A+TGO(B+TGO(C+TGO D))\n\t\tSTORE\tZDOTD\t\t# STORE TENTATIVELY IN ZDOTD\n\t\tDSU\tBPL\t\t# CHECK AGAINST MINIMUM\n\t\t\tVMIN\n\t\t\tUPRATE\t\t# IF BIG ENOUGH, LEAVE ZDOTD AS IS .\n\t\tDLOAD\n\t\t\tVMIN\n\t\tSTORE\tZDOTD\t\t# IF TOO SMALL, REPLACE WITH MINIMUM.\nUPRATE\t\tDLOAD\n\t\t\tABTRDOT\n\t\tSTCALL\tRDOTD\t\t# INITIALZE RDOTD.\n\t\t\tYCOMP\t\t# COMPUTE Y\n\t\tABS\tDSU\n\t\t\tYLIM\t\t# /Y/-DYMAX\n\t\tBMN\tSIGN\t\t# IF <0, XR<.5DEG, LEAVE YCO AT 0\n\t\t\tYOK\t\t# IF >0, FIX SIGN OF DEFICIT, THIS IS YCO.\n\t\t\tY\n\t\tSTORE\tYCO\nYOK\t\tDLOAD\tDSU\n\t\t\tYCO\n\t\t\tY\t\t# COMPUTE XRANGE IN CASE ASTRONAUT WANTS\n\t\tSR\n\t\t\t5D\n\t\tSTORE\tXRANGE\t\t# TO LOOK.\nUPTHROT\t\tSET\tEXIT\n\t\t\tFLVR\n\n\t\tTC\tUPFLAG\t\t# SET ROTFLAG\n\t\tADRES\tROTFLAG\n\n\t\tTC\tTHROTUP\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n -3\t\tTC\tBANKCALL\t# VERIFY THAT THE PANEL SWITCHES\n\t\tCADR\tP40AUTO\t\t# ARE PROPERLY SET.\n\n\t\tTC\tTHROTUP\n\nUPTHROT1\tEXTEND\t\t\t# SET SERVICER TO CALL ASCENT GUIDANCE.\n\t\tDCA\tATMAGAD\n\t\tDXCH\tAVGEXIT\n# Page 835\nGRP4OFF\t\tTC\tPHASCHNG\t# TERMINATE USE OF GROUP 4.\n\t\tOCT\t00004\n\n\t\tTCF\tENDOFJOB\n\nP71RET\t\tTC\tDOWNFLAG\n\t\tADRES\tLETABORT\n\n\t\tCAF\tTHRESH2\t\t# SET DVMON THRESHOLD TO THE ASCENT VALUE.\n\t\tTS\tDVTHRUSH\n\n\t\tTC\tINTPRET\n\t\tBON\tCALL\n\t\t\tFLAP\n\t\t\tOLDTIME\n\t\t\tTGOCOMP\t\t# IF FLAP=0, TGO=T-TIG\n\t\tSSP\tGOTO\n\t\t\tQPRET\n\t\tCADR\tINJTARG\n\t\t\tP12INIT\t\t# WILL EXIT P12INIT TO INJTARG\nOLDTIME\t\tDLOAD\tSL1\t\t# IF FLAP=1,GTO=2 TGO\n\t\t\tTGO\n\t\tSTCALL\tTGO1\n\t\t\tP12INIT\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tEXTEND\n\t\tDCA\tTGO1\n\t\tDXCH\tTGO\n\t\tTCF\tUPTHROT1 -3\n\nTGO1\t\t=\tVGBODY\n# *************************************************************************\n\n\t\tBANK\t21\n\t\tSETLOC\tR11\n\t\tBANK\n\n\t\tCOUNT*\t$$/P70\n\nLEGAL?\t\tCS\tMMNUMBER\t# IS THE DESIRED PGM ALREADY IN PROGRESS?\n\t\tAD\tMODREG\n\t\tEXTEND\n\t\tBZF\tABORTALM\n\n\t\tCS\tFLAGWRD9\t# ARE THE ABORTS ENABLED?\n\t\tMASK\tLETABBIT\n\t\tCCS\tA\n# Page 836\n\t\tTCF\tABORTALM\n\n\t\tCA\tFLAGWRD7\t# IS SERVICER ON THE AIR?\n\t\tMASK\tAVEGFBIT\n\t\tCCS\tA\n\t\tTC\tQ\t\t# YES.  ALL IS WELL.\nABORTALM\tTC\tFALTON\n\t\tTC\tRELDSP\n\t\tTC\tPOSTJUMP\n\t\tCADR\tPINBRNCH\n\n\t\tBANK\t32\n\t\tSETLOC\tABORTS\n\t\tBANK\n\n\t\tCOUNT*\t$$/P70\n\n# ************************************************************************\n\nTGOCOMP\t\tRTB\tDSU\n\t\t\tLOADTIME\n\t\t\tTIG\n\t\tSL\n\t\t\t11D\n\t\tSTORE\tTGO\n\t\tRVQ\n\n# ************************************************************************\n\nTHROTUP\t\tCAF\tBIT13\n\t\tTS\tTHRUST\n\t\tCAF\tBIT4\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tTC\tQ\n\n# ************************************************************************\n\n10SECS\t\t2DEC\t1000\n\nHINJECT\t\t2DEC\t18288 B-24\t# 60,000 FEET EXPRESSED IN METERS.\n\n(TGO)A\t\t2DEC\t37000 B-17\n\nK(AT)\t\t2DEC\t.02\t\t# SCALING CONSTANT\n\nWHICHADR\tREMADR\tABRTABLE\n\n# ************************************************************************\n# Page 837\n\t\tEBANK=\tDVCNTR\nATMAGAD\t\t2CADR\tATMAG\n\nORBMANAD\tADRES\tORBMANUV\n"
  },
  {
    "path": "Luminary099/P76.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tP76.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t709-711\n# Mod history:\t2009-05-19 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 709\n# 1) PROGRAM NAME - TARGET DELTA V PROGRAM (P76).\n# 2) FUNCTIONAL DESCRIPTION - UPON ENTRY BY ASTRONAUT ACTION, P76 FLASHES DSKY REQUESTS TO THE ASTRONAUT\n#    TO PROVIDE VIA DSKY (1) THE DELTA V TO BE APPLIED TO THE OTHER VEHICLE STATE VECTOR AND (2) THE\n#    TIME (TIG) AT WHICH THE OTHER VEHICLE VELOCITY WAS CHANGED BY EXECUTION OF A THRUSTING MANEUVER. THE\n#    OTHER VEHICLE STATE VECTOR IS INTEGRATED TO TIG AND UPDATED BY THE ADDITION OF DELTA V (DELTA V HAVING\n#    BEEN TRANSFORMED FROM LV TO REF COSYS).  USING INTEGRVS, THE PROGRAM THEN INTEGRATES THE OTHER\n#    VEHICLE STATE VECTOR TO THE STATE VECTOR OF THIS VEHICLE, THUS INSURING THAT THE W-MATRIX AND BOTH VEHICLE\n#    STATES CORRESPOND TO THE SAME TIME.\n# 3) ERASABLE INIITIALIZATION REQUIRED - NONE.\n# 4) CALLING SEQUENCES AND EXIT MODES - CALLED BY ASTRONAUT REQUEST THRU DSKY V 37 E 76 E.\n#    EXITS BY TCF ENDOFJOB.\n# 5) OUTPUT -- OTHER VEHICLE STATE VECTOR INTEGRATED TO TIG AND INCREMENTED BY DELTA V IN REF COSYS.\n#    THE PUSHLIST CONTAINS THE MATRIX BY WHICH THE INPUT DELTA V MUST BE POST-MULTIPLIED TO CONVERT FROM LV\n#    TO REF COSYS.\n# 6) DEBRIS - OTHER VEHICLE STATE VECTOR.\n# 7) SUBROUTINES CALLED - BANKCALL, GOXDSPF, CSMPREC (OR LEMPREC), ATOPCSM (OR ATOPLEM), INTSTALL, INTWAKE, PHASCHNG\n#    INTPRET, INTEGRVS, AND MINIRECT.\n# 8) FLAG USE - MOONFLAG, CMOONFLG, INTYPFLG, RASFLAG, AND MARKCTR.\n\n\t\tBANK\t30\n\t\tSETLOC\tP76LOC\n\t\tBANK\n\n\t\tCOUNT*\t$$/P76\n\n\t\tEBANK=\tTIG\n\nP76\t\tTC\tUPFLAG\n\t\tADRES\tTRACKFLG\n\n\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tDELVLVC\n\t\tSTORE\tDELVOV\n\t\tEXIT\n\n\t\tCAF\tV06N84\t\t# FLASH LAST DELTA V,\n\t\tTC\tBANKCALL\t# AND WAIT FOR KEYBOARD ACTION.\n\t\tCADR\tGOFLASH\n\t\tTCF\tENDP76\n\t\tTC\t+2\t\t# PROCEED\n\t\tTC\t-5\t\t# STORE DATA AND REPEAT FLASHING\n\t\tCAF\tV06N84 +1\t# FLASH VERB 06 NOUN 33, DISPLAY LAST TIG,\n\t\tTC\tBANKCALL\t# AND WAIT FOR KEYBOARD ACTION.\n\t\tCADR\tGOFLASH\n\t\tTCF\tENDP76\n\t\tTC\t+2\n\t\tTC\t-5\n\t\tTC\tINTPRET\t\t# RETURN TO INTERPRETIVE CODE\n# Page 710\n\t\tDLOAD\t\t\t# SET D(MPAC)=TIG IN CSEC B28\n\t\t\tTIG\n\t\tSTCALL\tTDEC1\t\t# SET TDEC1=TIG FOR ORBITAL INTEGRATION\n\t\t\tOTHPREC\nCOMPMAT\t\tVLOAD\tUNIT\n\t\t\tRATT\n\t\tVCOMP\t\t\t# U(-R)\n\t\tSTORE\t24D\t\t# U(-R) TO 24D\n\t\tVXV\tUNIT\t\t# U(-R) XV = U(VXR)\n\t\t\tVATT\n\t\tSTORE\t18D\n\t\tVXV\tUNIT\t\t# U(VXR)XU(-R) = U((RXV)XR)\n\t\t\t24D\n\t\tSTOVL\t12D\n\t\t\tDELVOV\n\t\tVXM\tVSL1\t\t# V(MPAC)=DELTA V IN REFCOSYS\n\t\t\t12D\n\t\tVAD\n\t\t\tVATT\n\t\tSTORE\t6\t\t# V(PD6)=VATT + DELTA V\n\t\tCALL\t\t\t# PRESENT WOULD-BE USER OF ORBITAL\n\t\t\tINTSTALL\t# INTEG FROM INTERFERING WITH UPDATING\n\t\tCALL\n\t\t\tP76SUB1\n\t\tVLOAD\tVSR*\n\t\t\t6\n\t\t\t0,2\n\t\tSTOVL\tVCV\n\t\t\tRATT\n\t\tVSR*\n\t\t\t0,2\n\t\tSTODL\tRCV\n\t\t\tTIG\n\t\tSTORE\tTET\n\t\tCLEAR\tDLOAD\n\t\t\tINTYPFLG\n\t\t\tTETTHIS\nINTOTHIS\tSTCALL\tTDEC1\n\t\t\tINTEGRVS\n\t\tCALL\n\t\t\tINTSTALL\n\t\tVLOAD\n\t\t\tRATT1\n\t\tSTORE\tRRECT\n\t\tSTODL\tRCV\n\t\t\tTAT\n\t\tSTOVL\tTET\n\t\t\tVATT1\n\t\tCALL\n\t\t\tMINIRECT\n# Page 711\n\t\tEXIT\n\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tUPFLAG\n\t\tADRES\tREINTFLG\n\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tATOPOTH\n\t\tSSP\tEXIT\n\t\t\tQPRET\n\t\t\tOUT\n\t\tTC\tBANKCALL\t# PERMIT USE OF ORBITAL INTEGRATION\n\t\tCADR\tINTWAKE1\nOUT\t\tEXIT\nENDP76\t\tCAF\tZERO\n\t\tTS\tMARKCTR\t\t# CLEAR RR TRACKING MARK COUNTER\n\t\tTCF\tGOTOPOOH\n\nV06N84\t\tNV\t0684\n\t\tNV\t0633\nP76SUB1\t\tAXT,2\tSET\n\t\t\t2\n\t\t\tMOONFLAG\t# SET MEANS MOON IS SPHERE OF INFLUENCE.\n\t\tBON\tAXT,2\n\t\t\tCMOONFLG\t# SET MEANS PERM CM STATE IN LUNAR SPHERE.\n\t\t\tQPRET\n\t\t\t0\n\t\tCLEAR\tRVQ\n\t\t\tMOONFLAG\n"
  },
  {
    "path": "Luminary099/PHASE_TABLE_MAINTENANCE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPHASE_TABLE_MAINTENANCE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1294-1302\n# Mod history:\t2009-05-26 OH\tTranscribed from page images.\n#\t\t2009-06-05 RSB\tA few lines at the bottom of page image\n#\t\t\t\t1294 were truncated.  I've fixed the page\n#\t\t\t\timage and added those missing lines here.\n#\t\t2011-05-07 JL\tFlagged SBANK= workaround for future\n#\t\t\t\tremoval.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1294\n# SUBROUTINE TO UPDATE THE PROGRAM NUMBER DISPLAY ON THE DSKY.\n\n\t\tCOUNT*\t$$/PHASE\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG1\n\t\tBANK\n\nNEWMODEX\tINDEX\tQ\t\t# UPDATE MODREG.  ENTRY FOR MODE IN FIXED.\n\t\tCAF\t0\n\t\tINCR\tQ\n\nNEWMODEA\tTS\tMODREG\t\t# ENTRY FOR MODE IN A.\nMMDSPLAY\tCAF\t+3\t\t# DISPLAY MAJOR MODE.\nPREBJUMP\tLXCH\tBBANK\t\t# PUTS BBANK IN L\n\t\tTCF\tBANKJUMP\t# PUTS Q INTO A\n\t\tCADR\tSETUPDSP\n\n# RETURN TO CALLER +3 IF MODE = THAT AT CALLER +1.  OTHERWISE RETURN TO CALLER +2.\n\nCHECKMM\t\tINDEX\tQ\n\t\tCS\t0\n\t\tAD\tMODREG\n\t\tEXTEND\n\t\tBZF\tQ+2\n\t\tTCF\tQ+1\t\t# NO MATCH\n\nTCQ\t\t=\tQ+2 +1\n\n\t\tBANK\t14\n\t\tSETLOC\tPHASETAB\n\t\tBANK\n\n\t\tCOUNT*\t$$/PHASE\nSETUPDSP\tINHINT\n\t\tDXCH\tRUPTREG1\t# SAVE CALLER'S RETURN 2CADR\n\t\tCAF\tPRIO30\t\t# \tEITHER A TASK OR JOB CAN COME TO\n\t\tTC\tNOVAC\t\t#\tNEWMODE X\n\t\tEBANK=\tMODREG\n\t\t2CADR\tDSPMMJOB\n\n\t\tDXCH\tRUPTREG1\n\t\tRELINT\n\t\tDXCH\tZ\t\t# RETURN\n\nDSPMMJOB\tEQUALS\tDSPMMJB\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG1\n\t\tBANK\n\n# Page 1295\n# PHASCHNG IS THE MAIN WAY OF MAKING PHASE CHANGES FOR RESTARTS.  THERE ARE THREE FORMS OF PHASCHNG, KNOWN AS TYPE\n# A, TYPE B, AND TYPE C.  THEY ARE ALL CALLED AS FOLLOWS, WHERE OCT XXXXX CONTAINS THE PHASE INFORMATION,\n#\t\tTC\tPHASCHNG\n#\t\tOCT\tXXXXX\n# TYPE A IS CONCERNED WITH FIXED PHASE CHANGES, THAT IS, PHASE INFORMATION THAT IS STORED PERMANENTLY.  THESE\n# OPTIONS ARE, WHERE G STANDS FOR A GROUP AND .X FOR THE PHASE,\n#\tG.0\t\tINACTIVE, WILL NOT PERMIT A GROUP G RESTART\n#\tG.1\t\tWILL CAUSE THE LAST DISPLAY TO BE REACTIVATED, USED MAINLY IN MANNED FLIGHTS\n#\tG.EVEN\t\tA DOUBLE TABLE RESTART, CAN CAUSE ANY COMBINATION OF TWO JOBS, TASKS, AND/OR\n#\t\t\tLONGCALL TO BE RESTARTED.\n#\tG.ODD NOT .1\tA SINGLE TABLE RESTART, CAN CAUSE EITHER A JOB, TASK, OR LONGCALL RESTART.\n#\n# THIS INFORMATION IS PUT INTO THE OCTAL WORD AFTER TC PHASCHNG AS FOLLOWS\n#\tTL0 00P PPP PPP GGG\n# WHERE EACH LETTER OR NUMBER STANTS FOR A BIT.  THE G'S STAND FOR THE GROUP, OCTAL 1-7, THE P'S FOR THE PHASE,\n# OCTAL 0 - 127.  0'S MUST BE 0.  IF ONE WISHES TO HAVE THE TBASE OF GROUP G TO BE SET AT THIS TIME,\n# T IS SET TO 1, OTHERWISE IT IS SET TO 0.  SIMILARLY IF ONE WISHES TO SET LONGBASE, THEN L IS SET TO 1, OTHERWISE\n# IT IS SET TO 0.  SOME EXAMPLES,\n#\t\tTC\tPHASCHNG\t# THIS WILL CAUSE GROUP 3 TO BE SET TO 0,\n#\t\tOCT\t00003\t\t# MAKING GROUP 3 INACTIVE\n#\n#\t\tTC\tPHASCHNG\t# IF A RESTART OCCURS THIS WOULD CAUSE\n#\t\tOCT\t00012\t\t# GROUP 2 TO RESTART THE LAST DISPLAY\n#\n#\t\tTC\tPHASCHNG\t# THIS SETS THE TBASE OF GROUP 4 AND IN\n#\t\tOCT\t40064\t\t# CASE OF A RESTART WOULD START UP THE TWO\n#\t\t\t\t\t# THINGS LOCATED IN THE DOUBLE 4.6 RESTART\n#\t\t\t\t\t# LOCATION.\n#\n#\t\tTC\tPHASCHNG\t# THIS SETS LONGBASE AND UPON A RESTART\n#\t\tOCT\t20135\t\t# CAUSES 5.13 TO BE RESTARTED (SINCE\n#\t\t\t\t\t# LONGBASE WAS SET THIS SINGLE ENTRY\n#\t\t\t\t\t# SHOULD BE A LONGCALL)\n#\n#\t\tTC\tPHASCHNG\t# SINCE BOTH TBASE4 AND LONGBASE ARE SET,\n#\t\tOCT\t60124\t\t# 4.12 SHOULD CONTAIN BOTH A TASK AND A\n#\t\t\t\t\t# LONGCALL TO BE RESTARTED\n#\n# TYPE C PHASCHNG CONTAINS THE VARIABLE TYPE OF PHASCHNG INFORMATION.  INSTEAD OF THE INFORMATION BEING IN A\n# PERMANENT FORM, ONE STORES THE DESIRED RESTART INFORMATION IN A VARIABLE LOCATION.  THE BITS ARE AS FOLLOWS,\n#\tTL0 1AD XXX CJW GGG\n# WHERE EACH LETTER OR NUMBER STANDS FOR A BIT.  THE G'S STAND FOR THE GROUP, OCTAL 1 - 7.  IF THE RESTART IS TO\n# BE BY WAITLIST, W IS SET TO 1, IF IT IS A JOB, J IS SET TO 1, IF IT IS A LONGCALL, C IS SET TO 1.  ONLY ONE OF\n# THESE THREE BITS MAY BE SET.  X'S ARE IGNORED, 1 MUST BE 1, AND 0 MUST BE 0.  AGAIN T STANDS FOR THE TBASE,\n# Page 1296\n# AND L FOR LONGBASE.  THE BITS A AND D ARE CONCERNED WITH THE VARIABLE INFORMATION.  IF D IS SET TO 1, A PRIORITY\n# OR DELTA TIME WILL BE READ FROM THE NEXT LOCATION AFTER THE OCTAL INFORMATION., IF THIS IS TO BE INDIRECT, THAT\n# IS, THE NAME OF A LOCATION CONTAINING THE INFORMATION (DELTA TIME ONLY), THEN THIS IS GIVEN AS THE -GENADR OF\n# THAT LOCATION WHICH CONTAINS THE DELTA TIME.  IF THE OLD PRIORITY OR DELTA TIME IS TO BE USED, THAT WHICH IS\n# ALREADY IN THE VARIABLE STORAGE, THEN D IS SET TO 0.  NEXT THE A BIT IS USED.  IF IT IS SET TO 0, THE ADDRESS\n# THAT WOULD BE RESTARTED DURING A RESTART IS THE NEXT LOCATION AFTER THE PHASE INFORMATION, THAT IS, EITHER\n# (TC PHASCHNG) +2 OR +3, DEPENDING ON WHETHER D HAD BEEN SET OR NOT.  IF A IS SET TO 1, THEN THE ADDRESS THAT\n# WOULD BE RESTARTED IS THE 2CADR THAT IS READ FROM THE NEXT TWO LOCATION.  EXAMPLES,\n#\tAD\tTC\tPHASCHNG\t# THIS WOULD CAUSE LOCATION AD +3 TO BE\n#\tAD+1\tOCT\t05023\t\t# RESTARTED BY GROUP THREE WITH A PRIORITY\n#\tAD+2\tOCT\t23000\t\t# OF 23.  NOTE UPON RETURNING IT WOULD\n#\tAD+3\t\t\t\t# ALSO GO TO AD+3\n#\n#\tAD\tTC\tPHASCHNG\t# GROUP 1 WOULD CAUSE CALLCALL TO BE\n#\tAD+1\tOCT\t27441\t\t# BE STARTED AS A LONGCALL FROM THE TIME\n#\tAD+2\t-GENADR\tDELTIME\t\t# STORED IN LONGBASE (LONGBASE WAS SET) BY\n#\tAD+3\t2CADR\tCALLCALL\t# A DELTA TIME STORED IN DELTIME.  THE\n#\tAD+4\t\t\t\t# BBCON OF THE 2CADR SHOULD CONTAIN THE E\n#\tAD+5\t\t\t\t# BANK OF DELTIME.  PHASCHNG RETURNS TO\n#\t\t\t\t\t# LOCATION AD+5\n#\n# NOTE THAT IF A VARIABLE PRIORITY IS GIVEN FOR A JOB, THE JOB WILL BE RESTARTED AS A NOVAC IF THE PRIORITY IS\n# NEGATIVE, AS A FINDVAC IF THE PRIORITY IS POSITIVE.\n#\n# TYPE B PHASCHNG IS A COMBINATION OF VARIABLE AND FIXED PHASE CHANGES.  IT WILL START UP A JOB AS INDICATED\n# BELOW AND ALSO START UP ONE FIXED RESTART, THAT IS EITHER AN G.1 OR A G.ODD OR THE FIRST ENTRY OF G.EVEN\n# DOUBLE ENTRY.  THE BIT INFORMATION IS AS FOLLOW,\n#\tTL1 DAP PPP PPP GGG\n# WHERE EACH LETTER OR NUMBER STANDS FOR A BIT.  THE G'S STAND FOR THE GROUP, OCTAL 1 - 7, THE P'S FOR THE FIXED\n# PHASE INFORMATION, OCTAL 0 - 127.  1 MUST BE 1.  AND AGAIN T STANDS FOR THE TBASE AND L FOR LONGBASE.  D THIS\n# TIME STANDS ONLY FOR PRIORITY SINCE THIS WILL BE CONSIDERED A JOB, AND IT MUST BE GIVEN DIRECTLY IF GIVEN.\n# AGAIN A STANDS FOR THE ADDRESS OF THE LOCATION TO BE RESTARTED, 1 IF THE 2CADR IS GIVEN, OR 0 IF IT IS TO BE\n# THE NEXT LOCATION.  (THE RETURN LOCATION OF PHASCHNG) EXAMPLES,\n#\tAD\tTC\tPHASCHNG\t# TBASE IS SET AND A RESTART CAUSE GROUP 3\n#\tAD+1\tOCT\t56043\t\t# TO START THE JOB AJOBAJOB WITH PRIORITY\n#\tAD+2\tOCT\t31000\t\t# 31 AND THE FIRST ENTRY OF 3.4SPOT (WE CAN\n#\tAD+3\t2CADR\tAJOBAJOB\t# ASSUME IT IS A TASK SINCE WE SET TBASE3)\n#\tAD+4\t\t\t\t# UPON RETURN FROM PHASCHNG CONTROL WOULD\n#\tAD+5\t\t\t\t# GO TO AD+5\n#\n#\tAD\tTC\tPHASCHNG\t# UPON A RESTART THE LAST DISPLAY WOULD BE\n#\tAD+1\tOCT\t10015\t\t# RESTARTED AND A JOB WITH THE PREVIOUSLY\n#\tAD+2\t\t\t\t# STORED PRIORITY WOULD BE BEGUN AT AD+2\n#\t\t\t\t\t# BY MEANS OF GROUP 5\n# Page 1297\n# THE NOVAC-FINDVAC CHOICE FOR JOBS HOLDS HERE ALSO -- NEGATIVE PRIORITY CAUSES A NOVAC CALL, POSITIVE A FINDVAC.\n\n# SUMMARY OF BITS:\n#\tTYPE A\t\tTL0 00P PPP PPP GGG\n#\tTYPE B\t\tTL1 DAP PPP PPP GGG\n#\tTYPE C\t\tTL0 1AD XXX CJW GGG\n\n# Page 1298\n# 2PHSCHNG IS USED WHEN ONE WISHES TO START UP A GROUP OR CHANGE A GROUP WHILE UNDER THE CONTROL OF A DIFFERENT\n# GROUP.  FOR EXAMPLE, CHANGE THE PHASE OF GROUP 3 WHILE THE PORTION OF THE PROGRAM IS UNDER GROUP 5.  ALL 2PHSCHNG\n# CALLS ARE MADE IN THE FOLLOWING MANNER,\n#\t\tTC\t2PHSCHNG\n#\t\tOCT\tXXXXX\n#\t\tOCT\tYYYYY\n# WHERE OCT XXXXX MUST BE OF TYPE A AND OCT YYYYY MAY BE OF EITHER TYPE A OR TYPE B OR TYPE C.  THERE IS ONE\n# DIFFERENCE --- NOTE: IF LONGBASE IS TO BE SET THIS INFORMATION IS GIVEN IN THE OCT YYYYY INFORMATION, IT WILL\n# BE DISREGARDED IF GIVEN WITH THE OCT XXXXX INFORMATION.  A COUPLE OF EXAMPLES MAY HELP,\n#\tAD\tTC\t2PHACHNG\t# SET TBASE3 AND IF A RESTART OCCURS START\n#\tAD+1\tOCT\t40083\t\t# THE TWO ENTRIES IN 3.8 TABLE LOCATION\n#\tAD+2\tOCT\t05025\t\t# THIS IS OF TYPE C, SET THE JOB TO BE\n#\tAD+3\tOCT\t18000\t\t# TO BE LOCATION AD+4, WITH A PRIORITY 18,\n#\tAD+4\t\t\t\t# FOR GROUP 5 PHASE INFORMATION.\n\n## [WORKAROUND] RSB 2004\n\t\tSBANK=\tPINSUPER\n## [WORKAROUND]\n\n\t\tCOUNT*\t$$/PHASE\n2PHSCHNG\tINHINT\t\t\t# THE ENTRY FOR A DOUBLE PHASE CHANGE\n\t\tNDX\tQ\n\t\tCA\t0\n\t\tINCR\tQ\n\t\tTS\tTEMPP2\n\n\t\tMASK\tOCT7\n\t\tDOUBLE\n\t\tTS\tTEMPG2\n\n\t\tCA\tTEMPP2\n\t\tMASK\tOCT17770\t# NEED ONLY 1770, BUT WHY GET A NEW CONST.\n\t\tEXTEND\n\t\tMP\tBIT12\n\t\tXCH\tTEMPP2\n\n\t\tMASK\tBIT15\n\t\tTS\tTEMPSW2\t\t# INDICATES WHETHER TO SET TBASE OR NOT\n\n\t\tINDEX\tQ\n\t\tCA\t0\n\t\tINCR\tQ\n\t\tTS\tTEMPSW\n\n\t\tTCF\tPHASJUMP\n\nPHASCHNG\tINHINT\t\t\t# NORMAL PHASCHNG ENTRY POINT.\n\t\tINDEX\tQ\n\t\tCA\t0\n\t\tINCR\tQ\nPHSCHNGA\tINHINT\t\t\t# FIRST OCTAL PARAMETER IN A.\n# Page 1299\n\t\tTS\tTEMPSW\n\t\tCA\tONE\n\t\tTS\tTEMPSW2\nPHASJUMP\tEXTEND\n\t\tDCA\tADRPCHN2\t# OFF TO SWITCHED BANK\n\t\tDTCB\n\n\t\tEBANK=\tLST1\nADRPCHN2\t2CADR\tPHSCHNG2\n\nONEORTWO\tLXCH\tTEMPBBCN\n\t\tLXCH\tBBANK\n\t\tLXCH\tTEMPBBCN\n\n\t\tMASK\tOCT14000\t# SEE WHAT KIND OF PHASE CHANGE IT IS\n\t\tCCS\tA\n\t\tTCF\tCHECKB\t\t# IT IS OF TYPE `B'.\n\n\t\tCA\tTEMPP\n\t\tMASK\tBIT7\n\t\tCCS\tA\t\t# SHALL WE USE THE OLD PRIORITY\n\t\tTCF\tGETPRIO\t\t# NO GET A NEW PRIORITY (OR DELTA T)\n\nOLDPRIO\t\tNDX\tTEMPG\t\t# USE THE OLD PRIORITY (OR DELTA T)\n\t\tCA\tPHSPRDT1 -2\n\t\tTS\tTEMPPR\n\nCON1\t\tCA\tTEMPP\t\t# SEE IF A 2CADR IS GIVEN\n\t\tMASK \tBIT8\n\t\tCCS\tA\n\t\tTCF\tGETNEWNM\n\n\t\tCA\tQ\n\t\tTS\tTEMPNM\n\t\tCA\tBB\n\t\tEXTEND\t\t\t# PICK UP USER'S SUPERBANK\n\t\tROR\tSUPERBNK\n\t\tTS\tTEMPBB\n\nTOCON2\t\tCA\tCON2ADR\t\t# BACK TO SWITCHED BANK\n\t\tLXCH\tTEMPBBCN\n\t\tDTCB\n\nCON2ADR\t\tGENADR\tCON2\n\nGETPRIO\t\tNDX\tQ\t\t# DON'T CARE IF DIRECT OR INDIRECT\n\t\tCA\t0\t\t# LEAVE THAT DECISION TO RESTARTS\n\t\tINCR\tQ\t\t# OBTAIN RETURN ADDRESS\n# Page 1300\n\t\tTCF\tCON1 -1\n\nGETNEWNM\tEXTEND\n\t\tINDEX\tQ\n\t\tDCA\t0\n\t\tDXCH\tTEMPNM\n\t\tCA\tTWO\n\t\tADS\tQ\t\t# OBTAIN RETURN ADDRESS\n\n\t\tTCF\tTOCON2\n\nOCT14000\tEQUALS\tPRIO14\nTEMPG\t\tEQUALS\tITEMP1\nTEMPP\t\tEQUALS\tITEMP2\nTEMPNM\t\tEQUALS\tITEMP3\nTEMPBB\t\tEQUALS\tITEMP4\nTEMPSW\t\tEQUALS\tITEMP5\nTEMPSW2\t\tEQUALS\tITEMP6\nTEMPPR\t\tEQUALS\tRUPTREG1\nTEMPG2\t\tEQUALS\tRUPTREG2\nTEMPP2\t\tEQUALS\tRUPTREG3\n\nTEMPBBCN\tEQUALS\tRUPTREG4\nBB\t\tEQUALS\tBBANK\n\n\t\tBANK\t14\n\t\tSETLOC\tPHASETAB\n\t\tBANK\n\n\t\tEBANK=\tPHSNAME1\n\t\tCOUNT*\t$$/PHASE\nPHSCHNG2\tLXCH\tTEMPBBCN\n\t\tCA\tTEMPSW\n\t\tMASK\tOCT7\n\t\tDOUBLE\n\t\tTS\tTEMPG\n\n\t\tCA\tTEMPSW\n\t\tMASK\tOCT17770\n\t\tEXTEND\n\t\tMP\tBIT12\n\t\tTS\tTEMPP\n\n\t\tCA\tTEMPSW\n\t\tMASK\tOCT60000\n\t\tXCH\tTEMPSW\n\t\tMASK\tOCT14000\n\t\tCCS\tA\n# Page 1301\n\t\tTCF\tONEORTWO\n\n\t\tCA\tTEMPP\t\t# START STORING THE PHASE INFORMATION\n\t\tNDX\tTEMPG\n\t\tTS\tPHASE1 -2\n\nBELOW1\t\tCCS\tTEMPSW2\t\t# IS IT A PHASCHNG OR A 2PHSCHNG\n\t\tTCF\tBELOW2\t\t# IT'S A PHASCHNG\n\n\t\tTCF\t+1\t\t# IT'S A 2PHSCHNG\n\t\tCS\tTEMPP2\n\t\tLXCH\tTEMPP2\n\t\tNDX\tTEMPG2\n\t\tDXCH\t-PHASE1 -2\n\n\t\tCCS\tTEMPSW2\n\t\tNOOP\t\t\t# CAN'T GET HERE\n\t\tTCF\tBELOW2\n\n\t\tCS\tTIME1\n\t\tNDX\tTEMPG2\n\t\tTS\tTBASE1 -2\n\nBELOW2\t\tCCS\tTEMPSW\t\t# SEE IF WE SHOULD SET TBASE OR LONGBASE\n\t\tTCF\tBELOW3\t\t# SET LONGBASE ONLY\n\t\tTCF\tBELOW4\t\t# SET NEITHER\n\n\t\tCS\tTIME1\t\t# SET TBASE TO BEGIN WITH\n\t\tNDX\tTEMPG\n\t\tTS\tTBASE1 -2\n\n\t\tCA\tTEMPSW\t\t# SHALL WE NOW SET LONGBASE\n\t\tAD\tBIT14COM\n\t\tCCS\tA\n\t\tNOOP\t\t\t# ***** CAN'T GET HERE *****\nBIT14COM\tOCT\t17777\t\t# ***** CAN'T GET HERE *****\n\t\tTCF\tBELOW4\t\t# NO WE NEED ONLY SET TBASE\n\nBELOW3\t\tEXTEND\t\t\t# SET LONGBASE\n\t\tDCA\tTIME2\n\t\tDXCH\tLONGBASE\n\nBELOW4\t\tCS\tTEMPP\t\t# AND STORE THE FINAL PART OF THE PHASE\n\t\tNDX\tTEMPG\n\t\tTS\t-PHASE1 -2\n\n\t\tCA\tQ\n\t\tLXCH\tTEMPBBCN\n\t\tRELINT\n\t\tDTCB\n# Page 1302\nCON2\t\tLXCH\tTEMPBBCN\n\n\t\tCA\tTEMPP\n\t\tNDX\tTEMPG\n\t\tTS\tPHASE1 -2\n\n\t\tCA\tTEMPPR\n\t\tNDX\tTEMPG\n\t\tTS\tPHSPRDT1 -2\n\n\t\tEXTEND\n\t\tDCA\tTEMPNM\n\t\tNDX\tTEMPG\n\t\tDXCH\tPHSNAME1 -2\n\n\t\tTCF\tBELOW1\n\n\t\tBLOCK\t03\n\t\tSETLOC\tFFTAG6\n\t\tBANK\n\n\t\tCOUNT*\t$$/PHASE\nCHECKB\t\tMASK\tBIT12\t\t# SINCE THIS IS OF TYPE B, THIS BIT WOULD\n\t\tCCS\tA\t\t# BE HERE IF WE ARE TO GET A NEW PRIORITY\n\t\tTCF\tGETPRIO\t\t# IT IS, SO GET NEW PRIORITY\n\n\t\tTCF\tOLDPRIO\t\t# IT ISN'T, USE THE OLD PRIORITY.\n\n\n"
  },
  {
    "path": "Luminary099/PINBALL_GAME_BUTTONS_AND_LIGHTS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPINBALL_GAME_BUTTONS_AND_LIGHTS.agc\n# Purpose:\tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim.lawton@gmail.com>\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t390-471\n# Mod history:\t2009-05-16 JVL\tStarted updating from page images.\n# \t\t2009-05-25 JVL\tFinished updating from page images.\n#\t\t2009-07-01 RSB\tBegan annotating.\n#\t\t2010-12-31 JL\tFixed page number comment.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#    16:27 JULY 14, 1969\n\n## <b>Note:</b> Notations below resembling this note are 21st-century\n## annotations added by the <a href=\"http://www.ibiblio.org/apollo\">\n## Virtual AGC project</a>, and are not original AGC source code.\n# Page 390\n# PROGRAM NAME -- KEYBOARD AND DISPLAY PROGRAM\n# MOD NO -- 4\t\tDATE -- 27 APRIL 1967\t\tASSEMBLY -- PINDANCE REV 18\n# MOD BY -- FILENE\n# LOG SECTION -- PINBALL GAME BUTTONS AND LIGHTS\n#\n# FUNCTIONAL DESCRIPTION\n#\n# THE KEYBOARD AND DISPLAY SYSTEM PROGRAM OPERATES UNDER EXECUTIVE\n# CONTROL AND PROCESSES INFORMATION EXCHANGED BETWEEN THE AGC AND THE\n# COMPUTER OPERATOR.  THE INPUTS TO THE PROGRAM ARE FROM THE KEYBOARD,\n# FROM INTERNAL PROGRAM, AND FROM THE UPLINK.\n#\n# THE LANGUAGE OF COMMUNICATION WITH THE PROGRAM IS A PAIR OF WORDS\n# KNOWN AS VERB AND NOUN.  EACH OF THESE IS REPRESENTED BY A 2 CHARACTER\n# DECIMAL NUMBER.  THE VERB CODE INDICATES WHAT ACTION IS TO BE TAKEN, THE\n# NOUN CODE INDICATES TO WHAT THIS ACTION IS APPLIED.  NOUNS USUALLY\n# REFER TO A GROUP OF ERASABLE REGISTERS.\n#\n# VERBS ARE GROUPED INTO DISPLAYS, LOADS, MONITORS (DISPLAYS THAT ARE\n# UPDATED ONCE PER SECOND), SPECIAL FUNCTIONS, AND EXTENDED VERBS (THESE\n# ARE OUTSIDE OF THE DOMAIN OF PINBALL AND CAN BE FOUND UNDER LOG SECTION\n# 'EXTENDED VERBS').\n#\n# A LIST OF VERBS AND NOUNS IS GIVEN IN LOG SECTION 'ASSEMBLY AND\n# OPERATION INFORMATION'.\n#\n## Ram&oacute;n Alonso, one of the original AGC developers, provides a\n## little more insight:  Apparently, nobody had yet arrived at any kind\n## of software requirements for the AGC's user interface when the desire\n## arose within the Instrumentation Laboratory to set up a demo\n## guidance-computer unit with which to impress visitors to the lab.\n## Of course, this demo would have to <i>do</i> something, if it was going to be\n## at all impressive, and to do something it would need some software. In\n## short order, some of the coders threw together a demo program,\n## inventing and using the verb/noun user-interface concept (in the\n## whimsical fashion seen in much of this code), but without any idea\n## that the verb/noun concept would somehow survive into the flight\n## software.  As time passed, and more and more people became familiar\n## with the demo, nobody got around to inventing an improvement for the\n## user interface, so the coders simply built it into the flight software\n## without any specific requirements to do so.<br>\n## <br>\n## However, that does not mean that the verb/noun interface was universally\n## beloved.  Ram&oacute;n says that <i>many</i> objections were received from\n## naysayers, such as \"it's not scientific\", \"it's not dignified\", or\n## even \"astronauts won't understand it\".  Even though the coders of\n## the demo hadn't seriously intended the verb/noun interface to be used\n## in any permanent way, it became a kind of devilish game to counter\n## these objections with (perhaps) sophistic arguments as to why the\n## interface was really a good one.  In the end, the coders won.  I don't\n## know whether they were elated or dismayed by this victory.<br>\n## <br>\n## The astronauts, of course, <i>could</i> understand the interface,\n## but they did not like it.  Most of them really wanted an interface much\n## more like that they had used in aircraft:  i.e., lots of dials and\n## switches.  Dave Scott is the the only astronaut I'm aware of who had\n## kind words for it (or for the AGC in general), though we are told that\n## Jim McDivitt wasn't necessary completely hostile to it.<br>\n## <br>\n## <div style=\"text-align: right;\"><small>&mdash;Ron Burkey, 07/2009</small></div>\n#\n# CALLING SEQUENCES --\n#\n# KEYBOARD:\n# EACH DEPRESSION OF A KEYBOARD BUTTON ACTIVATES AN INTERRUPT KEYRUPT1\n# AND PLACES THE 5 BIT KEY CODE INTO CHANNEL 15.  KEYRUPT1 PLACES THE KEY\n# CODE INTO MPAC, ENTERS AN EXECUTIVE REQUEST FOR THE KEYBOARD AND DISPLAY\n# PROGRAM (AT 'CHARIN'), AND EXECUTES A RESUME.\n#\n# UPLINK:\n# EACH WORD RECEIVED BY THE UPLINK ACTIVATES INTERRUPT UPRUPT, WHICH\n# PLACES THE 5 BIT KEY CODE INTO MPAC, ENTERS AN EXECUTIVE REQUEST FOR THE\n# KEYBOARD AND DISPLAY PROGRAM (AT 'CHARIN') AND EXECUTES A RESUME.\n#\n# INTERNAL PROGRAMS:\n# INTERNAL PROGRAMS CALL PINBALL AT `NVSUB' WITH THE DESIRED VERB/NOUN\n# CODE IN A (LOW 7 BITS FOR NOUN, NEXT 7 BITS FOR VERB).  DETAILS\n# DESCRIBED ON REMARKS CARDS JUST BEFORE 'NVSUB' AND 'NVSBWAIT' (SEE\n# SYMBOL TABLE FOR PAGE NUMBERS).\n#\n# NORMAL EXIT MODES --\n#\n#\tIF PINBALL WAS CALLED BY EXTERNAL ACTION, THERE ARE FOUR EXITS:\n#\t\t1)\tALL BUT (2), (3), AND (4) EXIT DIRECTLY TO ENDOFJOB.\n#\t\t2)\tEXTENDED VERBS GO TO THE EXTENDED VERB FAN AS PART OF THE\n# Page 391\n#\t\t\tPINBALL EXECUTIVE JOB WITH PRIORITY 30000.  IT IS THE\n#\t\t\tRESPONSIBILITY OF THE EXTEDED VERB CALLED TO EVENTUALLY\n#\t\t\tCHANGE PRIORITY (IF NECESSARY) AND DO AN ENDOFJOB.\n#\t\t\tALSO PINBALL IS A NOVAC JOB.  EBANK SET FOR COMMON.\n#\t\t3)\tVERB 37.  CHANGE OF PROGRAM (MAJOR MODE) CALLS 'V37' IN THE\n#\t\t\tSERVICE ROUTINES AS PART OF THE PINBALL EXEC JOB WITH PRIO\n#\t\t\t30000.  THE NEW PROGRAM CODE (MAJOR MODE) IS LEFT IN A.\n#\t\t4)\tKEY RELEASE BUTTON CALLS 'PINBRNCH' IN THE DISPLAY INTERFACE\n#\t\t\tROUTINES AS PART OF THE PINBALL EXEC JOB WITH PRIO 30000 IF\n#\t\t\tTHE KEY RELEASE LIGHT IS OFF AND 'CADRSTOR' IS NOT +0.\n#\n# IF PINBALL WAS CALLED BY INTERNAL PROGRAMS, EXIT FROM PINBALL IS BACK\n# TO CALLING ROUTINE.  DETAILS DESCRIBED IN REMARKS CARDS JUST BEFORE\n# 'NVSUB' AND 'NVSBWAIT' (SEE SYMBOL TABLE FOR PAGE NUMBERS).\n#\n# ALARM OR ABORT EXIT MODES --\n#\n# \tEXTERNAL INITIATION:\n#\tIF SOME IMPROPER SEQUENCE OF KEY CODES IS DETECTED, THE OPERATOR\n#\tERROR LIGHT IS TURNED ON AND EXIT IS TO 'ENDOFJOB'.\n#\n#\tINTERNAL PROGRAM INITIATION:\n#\tIF AN ILLEGAL V/N COMBINATION IS ATTEMPTED, AN ABORT IS CAUSED\n#\t(WITH OCTAL 01501).\n#\tIF A SECOND ATTEMPT IS MADE TO GO TO SLEEP IN PINBALL, AN ABORT IS\n#\tCAUSED (WITH OCTAL 01206). THERE ARE TWO WAYS TO GO TO SLEEP IN PINBALL:\n#\t\t1) ENDIDLE OR DATAWAIT.\n#\t\t2) NVSBWAIT, PRENVBSY, OR NVSUBUSY.\n#\n# CONDITIONS LEADING TO THE ABOVE ARE DESCRIBED IN FORTHCOMING MIT/IL\n# E-REPORT DESCRIBING KEYBOARD AND DISPLAY OPERATION FOR 278.\n#\n# OUTPUT --\n#\n# INFORMATION TO BE SENT TO THE DISPLAY PANEL IS LEFT IN THE 'DSPTAB'\n# BUFFERS REGISTERS (UNDER EXEC CONTROL). 'DSPOUT' (A PART OF T4RUPT)\n# HANDLES THE PLACING OF THE 'DSPTAB' INFORMATION INTO OUTPUT CHANNEL 10\n# IN INTERRUPT.\n#\n# ERASABLE INITIALIZATION --\n#\n# FRESH START AND RESTART INITIALIZE THE NECESSARY E REGISTERS FOR\n# PINBALL IN 'STARTSUB'.  REGISTERS ARE:  DSPTAB BUFFER, CADRSTOR,\n# REQRET, CLPASS, DSPLOCK, MONSAVE, MONSAVE1, VERBREG, NOUNREG, DSPLIST,\n# DSPCOUNT, NOUT.\n#\n# A COMPLETE LIST OF ALL THE ERASABLES (BOTH RESERVED AND TEMPORARIES) FOR\n# Page 392\n# PINBALL IS GIVEN BELOW.\n#\n# THE FOLLOWING ARE OF GENERAL INTEREST --\n#\n#\tREMARKS CARDS PRECEDE THE REFERENCED SYMBOL DEFINITION.  SEE SYMBOL\n# TABLE TO FIND APPROPRIATE PAGE NUMBERS.\n#\n#\tNVSUB\t\tCALLING POINT FOR INTERNAL USE OF PINBALL.\n#\t\t\tOF RELATED INTEREST\tNVSBWAIT\n#\t\t\t\t\t\tNVSUBUSY\n#\t\t\t\t\t\tPRENVBSY\n#\n#\tENDIDLE\t\tROUTINE FOR INTERNAL PROGRAMS WISHING TO GO TO SLEEP WHILE\n#\t\t\tAWAITING OPERATORS RESPONSE.\n#\n#\tDSPMM\t\tROUTINE BY WHICH AN INTERNAL PROGRAM MAY DISPLAY A DECIMAL\n#\t\t\tPROGRAM CODE (MAJOR MODE) IN THE PROGRAM (MAJOR MODE) LIGHTS.\n#\t\t\t(DSPMM DOES NOT DISPLAY DIRECTLY BUT ENTERS EXEC REQUEST\n#\t\t\tFOR DSPMMJB WITH PRIO 30000 AND RETURNS TO CALLER.)\n#\n#\tBLANKSUB\tROUTINE BY WHICH AN INTERNAL PROGRAM MAY BLANK ANY\n#\t\t\tCOMBINATION OF THE DISPLAY REGISTERS R1, R2, R3.\n#\n#\tJAMTERM\t\tROUTINE BY WHICH AN INTERNAL PROGRAM MAY PERFORM THE\n#\tJAMPROC\t\tTERMINATE (V 34) OR PROCEED (V 33) FUNCTION.\n#\n#\tMONITOR\t\tVERBS FOR PERIODIC ( 1 PER SEC) DISPLAY.\n#\n#\tPLEASE PERFORM, PLEASE MARK SITUATIONS\n#\t\tREMARKS DESCRIBING HOW AN INTERNAL ROUTINE SHOULD HANDLE\n#\t\tTHESE SITUATIONS CAN BE FOUND JUST BEFORE :NVSUB: (SEE\n#\t\tSYMBOL TABLE FOR PAGE NUMBER).\n#\n#\tTHE NOUN TABLE FORMAT IS DESCRIBED ON A PAGE OF REMARKS CARDS JUST\n#\tBEFORE :DSPABC: (SEE SYMBOL TABLE FOR PAGE NUMBER).\n#\n#\tTHE NOUN TABLES THEMSELVES ARE FOUND IN LOG SECTION :PINBALL NOUN\n#\tTABLES:.\n#\n# FOR FURTHER DETAILS ABOUT OPERATION OF THE KEYBOARD AND DISPLAY SYSTEM\n# PROGRAM, SEE THE MISSION PLAN AND/OR MIT/IL E-2129\n# DESCRIBING KEYBOARD AND DISPLAY OPERATION FOR 278.\n\n## The document described above, \"Keyboard and Display Program Operation\"\n## by Alan I. Green and Robert J. Filene is\n## <a href=\"http://www.ibiblio.org/apollo/hrst/archive/1706.pdf\">\n## available online at the Virtual AGC website</a>.\n## <small>&mdash;Ron Burkey, 07/2009</small>\n\n# THE FOLLOWING QUOTATION IS PROVIDED THROUGH THE COURTESY OF THE AUTHORS.\n#\n#\t::IT WILL BE PROVED TO THY FACE THAT THOU HAST MEN ABOUT THEE THAT\n# USUALLY TALK OF A NOUN AND A VERB, AND SUCH ABOMINABLE WORDS AS NO\n# Page 393\n# CHRISTIAN EAR CAN ENDURE TO HEAR.::\n#\t\t\t\t\tHENRY 6, ACT 2, SCENE 4\n\n## Actually, this quotation is from <i>Henry VI</i>, Part 2, Act IV, Scene VII.\n## <small>&mdash;Ron Burkey, 07/2009</small>\n\n# THE FOLLOWING ASSIGNMENTS FOR PINBALL ARE MADE ELSEWHERE\n#\n# DSPCOUNT\tERASE\t\t\t# DISPLAY POSITION INDICATOR\n# DECBRNCH\tERASE\t\t\t# +DEC, -DEC, OCT INDICATOR\n# VERBREG\tERASE\t\t\t# VERB CODE\n# NOUNREG\tERASE\t\t\t# NOUN CODE\n# XREG\t\tERASE\t\t\t# R1 INPUT BUFFER\n# YREG\t\tERASE\t\t\t# R2 INPUT BUFFER\n# ZREG\t\tERASE\t\t\t# R3 INPUT BUFFER\n# XREGLP\tERASE\t\t\t# LO PART OF XREG (FOR DEC CONV ONLY)\n# YREGLP\tERASE\t\t\t# LO PART OF YREG (FOR DEC CONV ONLY)\n# HITEMOUT\t=\tYREGLP\t\t# TEMP FOR DISPLAY OF HRS, MIN, SEC\n#\t\t\t\t\t# \tMUST = LOTEMOUT-1.\n# ZREGLP\tERASE\t\t\t# LO PART OF ZREG (FOR DEC CONV ONLY)\n# LOTEMOUT\t=\tZREGLP\t\t# TEMP FOR DISPLAY OF HRS, MIN, SEC\n#\t\t\t\t\t# \tMUST = HITEMOUT+1.\n# MODREG\tERASE\t\t\t# MODE CODE\n# DSPLOCK\tERASE\t\t\t# KEYBOARD/SUBROUTINE CALL INTERLOCK\n# REQRET\tERASE\t\t\t# RETURN REGISTER FOR LOAD\n# LOADSTAT\tERASE\t\t\t# STATUS INDICATOR FOR LOADTST\n# CLPASS\tERASE\t\t\t# PASS INDICATOR FOR CLEAR\n# NOUT\t\tERASE\t\t\t# ACTIVITY COUNTER FOR DSPTAB\n# NOUNCADR\tERASE\t\t\t# MACHINE CADR FOR NOUN\n# MONSAVE\tERASE\t\t\t# N/V CODE FOR MONITOR. (= MONSAVE1-1)\n# MONSAVE1\tERASE\t\t\t# NOUNCADR FOR MONITOR (MATBS) = MONSAVE+1\n# MONSAVE2\tERASE\t\t\t# NVMONOPT OPTIONS\n# DSPTAB\tERASE\t\t+13D\t# 0-10, DISPLAY PANEL BUFFER, 11-13, C RELAYS\n# CADRSTOR\tERASE\t\t\t# ENDIDLE STORAGE\n# NVQTEM\tERASE\t\t\t# NVSUB STORAGE FOR CALLING ADDRESS\n#\t\t\t\t\t# MUST = NVBNKTEM-1.\n# NVBNKTEM\tERASE\t\t\t# NVSUB STORAGE FOR CALLING BANK\n#\t\t\t\t\t# MUST = NVQTEM+1\n# VERBSAVE\tERASE\t\t\t# NEEDED FOR RECYCLE\n# DSPLIST\tERASE\t\t\t# WAITING REG FOR DSP SYST INTERNAL USE\n# EXTVBACT\tERASE\t\t\t# EXTENDED VERB ACTIVITY INTERLOCK\n# DSPTEM1\tERASE\t\t\t# BUFFER STORAGE AREA 1 (MOSTLY FOR TIME)\n# DSPTEM2\tERASE\t\t\t# BUFFER STORAGE AREA 2 (MOSTLY FOR DEG)\n#\n# END OF ERASABLES RESERVED FOR PINBALL EXECUTIVE ACTION\n#\n# TEMPORARIES FOR PINBALL EXECUTIVE ACTION\n\n# Page 394\n\n# DSEXIT\t=\tINTB15+\t\t# RETURN FOR DSPIN\n# EXITEM\t=\tINTB15+\t\t# RETURN FOR SCALE FACTOR ROUTINE SELECT\n# BLANKRET\t=\tINTB15+\t\t# RETURN FOR 2BLANK\n\n# WRDRET\t=\tINTBIT15\t# RETURN FOR 5BLANK.\n# WDRET\t\t=\tINTBIT15\t# RETURN FOR DSPWD\n# DECRET\t=\tINTBIT15\t# RETURN FOR PUTCOM(DEC LOAD)\n# 21/22REG\t=\tINTBIT15\t# TEMP FOR CHARIN\n\n# UPDATRET\t=\tPOLISH\t\t# RETURN FOR UPDATNN, UPDATVB\n# CHAR\t\t=\tPOLISH\t\t# TEMP FOR CHARIN\n# ERCNT\t\t=\tPOLISH\t\t# COUNTER FOR ERROR LIGHT RESET\n# DECOUNT\t=\tPOLISH\t\t# COUNTER FOR SCALING AND DISPLAY (DEC)\n\n# SGNON\t\t=\tVBUF\t\t# TEMP FOR +,- ON\n# NOUNTEM\t=\tVBUF\t\t# COUNTER FOR MIXNOUN FETCH\n# DISTEM\t= \tVBUF\t\t# COUNTER FOR OCTAL DISPLAY VERB\n# DECTEM\t=\tVBUF\t\t# COUNTER FOR FETCH (DEC DISPLAY VERBS)\n\n# SGNOFF\t=\tVBUF \t+1\t# TEMP FOR +,- ON\n# NVTEMP\t=\tVBUF \t+1\t# TEMP FOR NVSUB\n# SFTEMP1\t=\tVBUF \t+1\t# STORAGE FOR SF CONST HI PART (=SFTEMP2-1)\n# HITEMIN\t=\tVBUF \t+1\t# TEMP FOR LOAD OF HRS, MIN, SEC\n#\t\t\t\t\t# \tMUST = LOTEMIN-1.\n# CODE\t\t=\tVBUF \t+2\t# FOR DSPIN\n# SFTEMP2\t=\tVBUF \t+2\t# STORAGE FOR SF CONST LO PART (=SFTEMP1+1)\n# LOTEMIN\t=\tVBUF \t+2\t# TEMP FOR LOAD OF HRS, MIN, SEC\n#\t\t\t\t\t# \tMUST = HITEMIN+1\n# MIXTEMP\t=\tVBUF \t+3\t# FOR MIXNOUN DATA\n# SIGNRET\t=\tVBUF \t+3\t# RETURN FOR +,- ON\n# ALSO MIXTEMP+1 = VBUF+4, MIXTEMP+2 = VBUF+5.\n\n# ENTRET\t=\tDOTINC\t\t# EXIT FROM ENTER\n\n# WDCNT\t\t=\tDOTRET\t\t# CHAR COUNTER FOR DSPWD\n# INREL\t\t=\tDOTRET\t\t# INPUT BUFFER SELECTOR (X, Y, Z, REG)\n\n# DSPMMTEM\t=\tMATINC\t\t# DSPCOUNT SAVE FOR DSPMM\n# MIXBR\t\t=\tMATINC\t\t# INDICATOR FOR MIXED OR NORMAL NOUN\n\n# TEM1\t\tERASE\t\t\t# EXEC TEMP\n# DSREL\t\t=\tTEM1\t\t# REL ADDRESS FOR DSPIN\n\n# TEM2\t\tERASE\t\t\t# EXEC TEMP\n# DSMAG\t\t=\tTEM2\t\t# MAGNITUDE STORE FOR DSPIN\n# IDADDTEM\t=\tTEM2\t\t# MIXNOUN INDIRECT ADDRESS STORAGE\n# TEM3\t\tERASE\t\t\t# EXEC TEMP\n# COUNT\t\t=\tTEM3\t\t# FOR DSPIN\n\n# Page 395\n# TEM4\t\tERASE\t\t\t# EXEC TEMP\n# LSTPTR\t=\tTEM4\t\t# LIST POINTER FOR GRABUSY\n# RELRET\t=\tTEM4\t\t# RETURN FOR RELDSP\n# FREERET\t=\tTEM4\t\t# RETURN FOR FREEDSP\n# DSPWDRET\t=\tTEM4\t\t# RETURN FOR DSPSIGN\n# SEPSCRET\t=\tTEM4\t\t# RETURN FOR SEPSEC\n# SEPMNRET\t=\tTEM4\t\t# RETURN FOR SEPMIN\n\n# TEM5\t\tERASE\t\t\t# EXEC TEMP\n# NOUNADD\t=\tTEM5\t\t# TEMP STORAGE FOR NOUN ADDRESS\n\n# NNADTEM\tERASE\t\t\t# TEMP FOR NOUN ADDRESS TABLE ENTRY\n# NNTYPTEM\tERASE\t\t\t# TEMP FOR NOUN TYPE TABLE ENTRY\n# IDAD1TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n#\t\t\t\t\t# MUST = IDAD2TEM-1, = IDAD3TEM-2.\n# IDAD2TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n#\t\t\t\t\t# MUST = IDAD1TEM+1, IDAD3TEM-1.\n# IDAD3TEM\tERASE\t\t\t# TEMP FOR INDIR ADDRESS TABLE ENTRY (MIXNN)\n#\t\t\t\t\t# MUST = IDAD1TEM+2, IDAD2TEM+1.\n# RUTMXTEM\tERASE\t\t\t# TEMP FOR SF ROUT TABLE ENTRY (MIXNN ONLY)\n#\n# END OF TEMPORARIES FOR PINBALL EXECUTIVE ACTION.\n#\n# ADDITIONAL TEMPORARIES FOR PINBALL EXECUTIVE ACTION\n#\n#\tMPAC, THRU MPAC +6\n#\tBUF, +1, +2\n#\tBUF2, +1, +2\n#\tMPTEMP\n#\tADDRWD\n#\n# END OF ADDITIONAL TEMPS FOR PINBALL EXEC ACTION\n#\n# RESERVED FOR PINBALL INTERRUPT ACTION\n#\n# DSPCNT\tERASE\t\t\t# COUNTER FOR DSPOUT\n# UPLOCK\tERASE\t\t\t# BIT1 = UPLINK INTERLOCK (ACTIVATED BY\n#\t\t\t\t\t# RECEPTION OF A BAD MESSAGE IN UPLINK)\n#\n# END OF ERASABLES RESERVED FOR PINBALL INTERRUPT ACTION\n#\n# TEMPORARIES FOR PINBALL INTERRUPT ACTION\n#\n# KEYTEMP1\t=\tWAITEXIT\t# TEMP FOR KEYRUPT, UPRUPT\n# DSRUPTEM\t=\tWAITEXIT\t# TEMP FOR DSPOUT\n# KEYTEMP2\t=\tRUPTAGN\t\t# TEMP FOR KEYRUPT, UPRUPT\n#\n# END OF TEMPORARIES FOR PINBALL INTERRUPT ACTION\n\n# Page 396\n# THE INPUT CODES ASSUMED FOR THE KEYBOARD ARE,\n# 0\t\t10000\n# 1\t\t00001\n# 9\t\t01001\n# VERB\t\t10001\n# ERROR RES\t10010\n# KEY RLSE\t11001\n# +\t\t11010\n# -\t\t11011\n# ENTER\t\t11100\n# CLEAR\t\t11110\n# NOUN\t\t11111\n#\n# (2003 RSB -- The PROCEED key has no keycode; it is read by an alternate mechanism.)\n#\n# OUTPUT FORMAT FOR DISPLAY PANEL.  SET OUT0 TO AAAABCCCCCDDDDD.\n# A'S \tSELECTS A RELAYWORD. THIS DETERMINES WHICH PAIR OF CHARACTERS ARE\n#     \tENERGIZED.\n# B\tFOR SPECIAL RELAYS SUCH AS SIGNS ETC.\n# C'S\t5 BIT RELAY CODE FOR LEFT CHAR OF PAIR SELECTED BY RELAYWORD.\n# D'S\t5 BIT RELAY CODE FOR RIGHT CHAR OF PAIR SELECTED BY RELAYWORD.\n#\n# THE PANEL APPEARS AS FOLLOWS,\n# MD1\tMD2 \t\t\t\t(MAJOR MODE)\n# VD1\tVD2 (VERB)\tND1\tND2 \t(NOUN)\n# R1D1\tR1D2\tR1D3\tR1D4\tR1D5 \t(R1)\n# R2D1\tR2D2\tR2D3\tR2D4\tR2D5 \t(R2)\n# R3D1\tR3D2\tR3D3\tR3D4\tR3D5 \t(R3)\n#\n# EACH OF THESE IS GIVEN A DSPCOUNT NUMBER FOR USE WITHIN COMPUTATION ONLY\n#\n# MD1\t25\t\tR2D1\t11\t\tALL ARE OCTAL\n# MD2\t24\t\tR2D2\t10\n# VD1\t23\t\tR2D3\t 7\n# VD2\t22\t\tR2D4\t 6\n# ND1\t21\t\tR2D5\t 5\n# ND2\t20\t\tR3D1\t 4\n# R1D1\t16\t\tR3D2\t 3\n# R1D2\t15\t\tR3D3\t 2\n# R1D3\t14\t\tR3D4\t 1\n# R1D4\t13\t\tR3D5\t 0\n# R1D5\t12\n#\n# THERE IS AN 11-REGISTER TABLE (DSPTAB) FOR THE DISPLAY PANEL.\n#\n# DSPTAB\t\tRELAYWD\t\tBIT11\t\tBITS 10-6\tBITS 5-1\n# RELADD\n# 10\t\t1011\t\t\t\tMD1 (25)\tMD2 (24)\n# 9\t\t1010\t\t\t\tVD1 (23)\tVD2 (22)\n# 8\t\t1001\t\t\t\tND1 (21)\tND2 (20)\n# 7\t\t1000\t\t\t\t\t\tR1D1 (16)\n# Page 397\n# 6\t\t0111\t\t+R1\t\tR1D2 (15)\tR1D3 (14)\n# 5\t\t0110\t\t-R1\t\tR1D4 (13)\tR1D5 (12)\n# 4\t\t0101\t\t+R2\t\tR2D1 (11)\tR2D2 (10)\n# 3\t\t0100\t\t-R2\t\tR2D3 (7)\tR2D4 (6)\n# 2\t\t0011\t\t\t\tR2D5 (5)\tR3D1 (4)\n# 1\t\t0010\t\t+R3\t\tR3D2 (3)\tR3D3 (2)\n# 0\t\t0001\t\t-R3\t\tR3D4 (1)\tR3D5 (0)\n# \t\t0000\t    NO RELAYWORD\n#\n# THE 5-BIT OUTPUT RELAY CODES ARE:\n#\n# BLANK\t00000\n# 0\t10101\n# 1\t00011\n# 2\t11001\n# 3\t11011\n# 4\t01111\n# 5\t11110\n# 6\t11100\n# 7\t10011\n# 8\t11101\n# 9\t11111\n#\n# OUTPUT BITS USED BY PINBALL:\n#\n#\tKEY RELEASE LIGHT\t-\tBIT 5 OF CHANNEL 11\n#\tVERB/NOUN FLASH\t\t-\tBIT 6 OF CHANNEL 11\n#\tOPERATOR ERROR LIGHT\t-\tBIT 7 OF CHANNEL 11\n\n## <b>Hint:</b> In the source code below, each of the blue operands to the\n## right of the instruction opcodes is a hyperlink back to the definition\n## of the symbol.  This is particularly useful for tracing program flow.\n# Page 398\n# START OF EXECUTIVE SECTION OF PINBALL\n\n\t\tBANK\t40\n\t\tSETLOC\tPINBALL1\n\t\tBANK\n\n\t\tCOUNT*\t$$/PIN\nCHARIN\t\tCAF\tONE\t\t# BLOCK DISPLAY SYST\n\t\tXCH\tDSPLOCK\t\t# MAKE DSP SYST BUSY, BUT SAVE OLD\n\t\tTS\t21/22REG\t# C(DSPLOCK) FOR ERROR LIGHT RESET.\n\t\tCCS\tCADRSTOR\t# ALL KEYS EXCEPT ER TURN ON KR LITE IF\n\t\tTC\t+2\t\t# CADRSTOR IS FULL.  THIS REMINDS OPERATOR\n\t\tTC\tCHARIN2\t\t# TO RE-ESTABLISH A FLASHING DISPLAY\n\t\tCS\tELRCODE1\t# WHICH HE HAS OBSCURED WITH DISPLAYS OF\n\t\tAD\tMPAC\t\t# HIS OWN (SEE REMARKS PRECEDING ROUTINE\n\t\tEXTEND\t\t\t# VBRELDSP).\n\t\tBZF\tCHARIN2\n\t\tTC\tRELDSPON\nCHARIN2\t\tXCH\tMPAC\n\t\tTS\tCHAR\n\t\tINDEX\tA\n\t\tTC\t+1\t\t# INPUT CODE\tFUNCTION\n\t\tTC\tCHARALRM\t# 0\n\t\tTC\tNUM\t\t# 1\n\t\tTC\tNUM\t\t# 2\n\t\tTC\tNUM\t\t# 3\n\t\tTC\tNUM\t\t# 4\n\t\tTC\tNUM\t\t# 5\n\t\tTC\tNUM\t\t# 6\n\t\tTC\tNUM\t\t# 7\n\t\tTC\t89TEST\t\t# 10\t\t8\n\t\tTC\t89TEST\t\t# 11\t\t9\n\t\tTC\tCHARALRM\t# 12\n\t\tTC\tCHARALRM\t# 13\n\t\tTC\tCHARALRM\t# 14\n\t\tTC\tCHARALRM\t# 15\n\t\tTC\tCHARALRM\t# 16\n\t\tTC\tCHARALRM\t# 17\n\t\tTC\tNUM\t-2\t# 20\t\t0\n\t\tTC\tVERB\t\t# 21\t\tVERB\n\t\tTC\tERROR\t\t# 22\t\tERROR LIGHT RESET\n\t\tTC\tCHARALRM\t# 23\n\t\tTC\tCHARALRM\t# 24\n\t\tTC\tCHARALRM\t# 25\n\t\tTC\tCHARALRM\t# 26\n\t\tTC\tCHARALRM\t# 27\n\t\tTC\tCHARALRM\t# 30\n\t\tTC\tVBRELDSP\t# 31\t\tKEY RELEASE\n\t\tTC\tPOSGN\t\t# 32\t\t+\n# Page 399\n\t\tTC\tNEGSGN\t\t# 33\t\t-\n\t\tTC\tENTERJMP\t# 34\t\tENTER\n\t\tTC\tCHARALRM\t# 35\n\t\tTC\tCLEAR\t\t# 36\t\tCLEAR\n\t\tTC\tNOUN\t\t# 37\t\tNOUN\n\nELRCODE1\tOCT\t22\nENTERJMP\tTC\tPOSTJUMP\n\t\tCADR\tENTER\n\n89TEST\t\tCCS\tDSPCOUNT\n\t\tTC\t+4\t\t# +\n\t\tTC\t+3\t\t# +0\n\t\tTC\tENDOFJOB\t# - BLOCK DATA IN IF DSPCOUNT IS - OR -0\n\t\tTC\tENDOFJOB\t# -0\n\t\tCAF\tTHREE\n\t\tMASK\tDECBRNCH\n\t\tCCS\tA\n\t\tTC\tNUM\t\t# IF DECBRNCH IS +, 8 OR 9 OK\n\t\tTC\tCHARALRM\t# IF DECBRNCH IS +0, REJECT 8 OR 9\n\n# NUM ASSEMBLES OCTAL 3 BITS AT A TIME.  FOR DECIMAL IT CONVERTS INCOMING\n# WORD AS A FRACTION, KEEPING RESULTS TO DP.\n# OCTAL RESULTS ARE LEFT IN XREG, YREG, OR ZREG.  HI PART OF DEC IN XREG,\n# YREG, ZREG.  THE LOW PARTS IN XREGLP, YREGLP, OR ZREGLP.\n# DECBRNCH IS LEFT AT +0 FOR OCT, +1 FOR + DEC, +2 FOR - DEC.\n# IF DSPCOUNT WAS LEFT -, NO MORE DATA IS ACCEPTED.\n\n\t\tCAF\tZERO\n\t\tTS\tCHAR\nNUM\t\tCCS\tDSPCOUNT\n\t\tTC\t+4\t\t# +\n\t\tTC\t+3\t\t# +0\n\t\tTC\t+1\t\t# -BLOCK DATA IN IF DSPCOUNT IS -\n\t\tTC\tENDOFJOB\t# -0\n\t\tTC\tGETINREL\n\t\tCCS\tCLPASS\t\t# IF CLPASS IS + OR +0, MAKE IT +0.\n\t\tCAF\tZERO\n\t\tTS\tCLPASS\n\t\tTC\t+1\n\t\tINDEX\tCHAR\n\t\tCAF\tRELTAB\n\t\tMASK\tLOW5\n\t\tTS\tCODE\n\t\tCA\tDSPCOUNT\n\t\tTS\tCOUNT\n\t\tTC\tDSPIN\n\t\tCAF\tTHREE\n# Page 400\n\t\tMASK\tDECBRNCH\n\t\tCCS\tA\t\t# +0, OCTAL.  +1, + DEC.  +2, - DEC.\n\t\tTC\tDECTOBIN\t# +\n\t\tINDEX\tINREL\t\t# +0 OCTAL\n\t\tXCH\tVERBREG\n\t\tTS\tCYL\n\t\tCS\tCYL\n\t\tCS\tCYL\n\t\tXCH\tCYL\n\t\tAD\tCHAR\n\t\tTC\tENDNMTST\nDECTOBIN\tINDEX\tINREL\n\t\tXCH\tVERBREG\n\t\tTS\tMPAC\t\t# SUM X 2EXP-14 IN MPAC\n\t\tCAF\tZERO\n\t\tTS\tMPAC +1\n\t\tCAF\tTEN\t\t# 10 X 2EXP-14\n\t\tTC\tSHORTMP\t\t# 10SUM X 2EXP-28 IN MPAC, MPAC+1\n\t\tXCH\tMPAC +1\n\t\tAD\tCHAR\n\t\tTS\tMPAC +1\n\t\tTC\tENDNMTST\t# NO OF\n\t\tADS\tMPAC\t\t# OF MUST BE 5TH CHAR\n\t\tTC\tDECEND\nENDNMTST\tINDEX\tINREL\n\t\tTS\tVERBREG\n\t\tCS\tDSPCOUNT\n\t\tINDEX\tINREL\n\t\tAD\tCRITCON\n\t\tEXTEND\n\t\tBZF\tENDNUM\t\t# -0, DSPCOUNT = CRITCON\n\t\tTC\tMORNUM\t\t# - , DSPCOUNT G/ CRITCON\nENDNUM\t\tCAF\tTHREE\n\t\tMASK\tDECBRNCH\n\t\tCCS\tA\n\t\tTC\tDECEND\nENDALL\t\tCS\tDSPCOUNT\t# BLOCK NUMIN BY PLACING DSPCOUNT\n\t\tTC\tMORNUM +1\t# NEGATIVELY\nDECEND\t\tCS\tONE\n\t\tAD\tINREL\n\t\tEXTEND\n\t\tBZMF\tENDALL\t\t# IF INREL=0,1 (VBREG,NNREG) LEAVE WHOLE\n\t\tTC\tDMP\t\t# IF INREL=2,3,4 (R1,R2,R3), CONVERT TO FRAC\n\t\t\t\t\t# MULT SUM X 2EXP-28 IN MPAC, MPAC+1 BY\n\t\tADRES\tDECON\t\t# 2EXP14/10EXP5, GIVES (SUM/10EXP5)X2EXP-14\n\t\tCAF\tTHREE\t\t# IN MPAC, +1, +2.\n\t\tMASK\tDECBRNCH\n\t\tINDEX\tA\n\t\tTC\t+0\n\t\tTC\t+DECSGN\n# Page 401\n\t\tEXTEND\t\t\t# - CASE\n\t\tDCS\tMPAC +1\n\t\tDXCH\tMPAC +1\n+DECSGN\t\tXCH\tMPAC +2\n\t\tINDEX\tINREL\n\t\tTS\tXREGLP -2\n\t\tXCH\tMPAC +1\n\t\tINDEX\tINREL\n\t\tTS\tVERBREG\n\t\tTC\tENDALL\nMORNUM\t\tCCS\tDSPCOUNT\t# DECREMENT DSPCOUNT\n\t\tTS\tDSPCOUNT\n\t\tTC\tENDOFJOB\n\nCRITCON\t\tOCT\t22\t\t# (DEC 18)\n\t\tOCT\t20\t\t# (DEC 16)\n\t\tOCT\t12\t\t# (DEC 10)\n\t\tOCT\t5\n\t\tOCT\t0\n\nDECON\t\t2DEC\t1 E-5 B14\t# 2EXP14/10EXP5 = .16384 DEC\n\n# GETINREL GETS PROPER DATA REG REL ADDRESS FOR CURRENT C(DSPCOUNT) AND\n# PUTS IN INTO INREL. +0 VERBREG, 1 NOUNREG, 2 XREG, 3 YREG, 4 ZREG.\n\nGETINREL\tINDEX\tDSPCOUNT\n\t\tCAF\tINRELTAB\n\t\tTS\tINREL\t\t# (A TEMP. REG)\n\t\tTC\tQ\n\nINRELTAB\tOCT\t4\t\t# R3D5 (DSPCOUNT = 0)\n\t\tOCT\t4\t\t# R3D4\t\t =(1)\n\t\tOCT\t4\t\t# R3D3\t\t =(2)\n\t\tOCT\t4\t\t# R3D2\t\t =(3)\n\t\tOCT\t4\t \t# R3D1\t\t =(4)\n\t\tOCT\t3\t\t# R2D5\t\t =(5)\n\t\tOCT\t3\t\t# R2D4\t\t =(6)\n\t\tOCT\t3\t\t# R2D3\t\t =(7)\n\t\tOCT\t3\t\t# R2D2\t\t =(8D)\n\t\tOCT\t3\t\t# R2D1\t\t =(9D)\n\t\tOCT\t2\t\t# R1D5\t\t =(10D)\n\t\tOCT\t2\t\t# R1D4\t\t =(11D)\n\t\tOCT\t2\t\t# R1D3\t\t =(12D)\n\t\tOCT\t2\t\t# R1D2\t\t =(13D)\n\t\tOCT\t2\t\t# R1D1\t\t =(14D)\n\t\tTC\tCCSHOLE\t\t# NO DSPCOUNT NUMBER = 15D\n\t\tOCT\t1\t\t# ND2\t\t =(16D)\n\t\tOCT\t1\t\t# ND1\t\t =(17D)\n# Page 402\n\t\tOCT\t0\t\t# VD2\t\t =(18D)\n\t\tOCT\t0\t\t# VD1\t\t =(19D)\n\nVERB\t\tCAF\tZERO\n\t\tTS\tVERBREG\n\t\tCAF\tVD1\nNVCOM\t\tTS\tDSPCOUNT\n\t\tTC\t2BLANK\n\t\tCAF\tONE\n\t\tTS\tDECBRNCH\t# SET FOR DEC V/N CODE\n\t\tCAF\tZERO\n\t\tTS\tREQRET\t\t# SET FOR ENTPAS0\n\t\tCAF\tENDINST\t\t# IF DSPALARM OCCURS BEFORE FIRST ENTPAS0\n\t\tTS\tENTRET\t\t# OR NVSUB, ENTRET MUST ALREADY BE SET\n\t\t\t\t\t# TO TC ENDOFJOB\n\t\tTC\tENDOFJOB\nNOUN\t\tCAF\tZERO\n\t\tTS\tNOUNREG\n\t\tCAF\tND1\t\t# ND1, OCT 21 (DEC 17)\n\t\tTC\tNVCOM\n\nNEGSGN\t\tTC\tSIGNTEST\n\t\tTC \t-ON\n\t\tCAF\tTWO\nBOTHSGN\t\tINDEX\tINREL\t\t# SET DEC COMP BIT TO 1 (IN DECBRNCH)\n\t\tAD\tBIT7\t\t# BIT 5 FOR R1.  BIT 4 FOR R2.\n\t\tADS\tDECBRNCH\t# BIT 3 FOR R3.\nFIXCLPAS\tCCS\tCLPASS\t\t# IF CLPASS IS + OR +0. MAKE IT +0.\n\t\tCAF\tZERO\n\t\tTS\tCLPASS\n\t\tTC\t+1\n\t\tTC\tENDOFJOB\n\nPOSGN\t\tTC\tSIGNTEST\n\t\tTC\t+ON\n\t\tCAF\tONE\n\t\tTC\tBOTHSGN\n\n+ON\t\tLXCH\tQ\n\t\tTC\tGETINREL\n\t\tINDEX\tINREL\n\t\tCAF\tSGNTAB -2\n\t\tTS\tSGNOFF\n\t\tAD \tONE\n\t\tTS\tSGNON\nSGNCOM\t\tCAF\tZERO\n\t\tTS\tCODE\n\t\tXCH\tSGNOFF\n# Page 403\n\t\tTC\t11DSPIN\n\t\tCAF\tBIT11\n\t\tTS\tCODE\n\t\tXCH\tSGNON\n\t\tTC\t11DSPIN\n\t\tTC\tL\n-ON\t\tLXCH\tQ\n\t\tTC\tGETINREL\n\t\tINDEX\tINREL\n\t\tCAF\tSGNTAB -2\n\t\tTS\tSGNON\n\t\tAD\tONE\n\t\tTS\tSGNOFF\n\t\tTC\tSGNCOM\n\nSGNTAB\t\tOCT\t5\t\t# -R1\n\t\tOCT\t3\t\t# -R2\n\t\tOCT\t0\t\t# -R3\n\nSIGNTEST\tLXCH\tQ\t\t# ALLOWS +,- ONLY WHEN DSPCOUNT=R1D1,\n\t\tCAF\tTHREE\t\t# R2D1, OR R3D1.  ALLOWS ONLY FIRST OF\n\t\tMASK\tDECBRNCH\t# CONSECUTIVE +/- CHARACTERS.\n\t\tCCS\tA\t\t# IF LOW2 BITS OF DECBRNCH NOT= 0,  SIGN\n\t\tTC\tENDOFJOB\t# FOR THIS WORD ALREADY IN. REJECT.\n\t\tCS\tR1D1\n\t\tTC\tSGNTST1\n\t\tCS\tR2D1\n\t\tTC\tSGNTST1\n\t\tCS\tR3D1\n\t\tTC\tSGNTST1\n\t\tTC\tENDOFJOB\t# NO MATCH FOUND. SIGN ILLEGAL\nSGNTST1\t\tAD\tDSPCOUNT\n\t\tEXTEND\n\t\tBZF\t+2\t\t# MATCH FOUND\n\t\tTC\tQ\n\t\tTC\tL\t\t# SIGN LEGAL\n\n# CLEAR BLANKS WHICH R1, R2, R3 IS CURRENT OR LAST TO BE DISPLAYED (PERTINENT\n# XREG, YREG, ZREG IS CLEARED).  SUCCESSIVE CLEARS TAKE CARE OF EACH RX\n# L/ RC UNTIL R1 IS DONE. THEN NO FURTHER ACTION.\n#\n# THE SINGLE COMPONENT LOAD VERBS ALLOW ONLY THE SINGLE RC THAT IS\n# APPROPRIATE TO BE CLEARED.\n#\n# CLPASS\t+0 PASS0, CAN BE BACKED UP\n#\t\t+NZ HIPASS, CAN BE BACKED UP\n#\t\t-NZ PASS0, CANNOT BE BACKED UP\n# Page 404\nCLEAR\t\tCCS\tDSPCOUNT\n\t\tAD\tONE\n\t\tTC\t+2\n\t\tAD\tONE\n\t\tINDEX\tA\t\t# DO NOT CHANGE DSPCOUNT BECAUSE MAY LATER\n\t\tCAF\tINRELTAB\t# FAIL LEGALTST.\n\t\tTS\tINREL\t\t# MUST SET INREL, EVEN FOR HIPASS.\n\t\tCCS\tCLPASS\n\t\tTC\tCLPASHI\t\t# +\n\t\tTC\t+2\t\t# +0\tIF CLPASS IS +0 OR -, IT IS PASS0\n\t\tTC\t+1\t\t# -\n\t\tCA\tINREL\n\t\tTC\tLEGALTST\n\t\tTC\tCLEAR1\nCLPASHI\t\tCCS\tINREL\n\t\tTS\tINREL\n\t\tTC\tLEGALTST\n\t\tCAF\tDOUBLK +2\t# +3 TO - NUMBER, BACKS DATA REQUESTS.\n\t\tADS\tREQRET\n\t\tCA\tINREL\n\t\tTS\tMIXTEMP\t\t# TEMP STORAGE FOR INREL\n\t\tEXTEND\n\t\tDIM\tVERBREG\t\t# DECREMENT VERB AND RE-DISPLAY\n\t\tTC\tBANKCALL\n\t\tCADR\tUPDATVB\n\t\tCA\tMIXTEMP\n\t\tTS\tINREL\t\t# RESTORE INREL\nCLEAR1\t\tTC\tCLR5\n\t\tINCR\tCLPASS\t\t# ONLY IF CLPASS IS + OR +0.\n\t\tTC\tENDOFJOB\t# SET FOR HIGHER PASS.\nCLR5\t\tLXCH\tQ\t\t# USES 5BLANK BUT AVOIDS ITS TC GETINREL\n\t\tTC\t5BLANK +2\nLEGALTST\tAD\tNEG2\n\t\tCCS\tA\n\t\tTC\tQ\t\t# LEGAL \tINREL G/ 2\n\t\tTC\tCCSHOLE\n\t\tTC\tENDOFJOB\t# ILLEGAL \tINREL=0,1\n\t\tTC\tQ\t\t# LEGAL\t\tINREL=2\n\n# 5BLANK BLANKS 5 CHAR DISPLAY WORD IN R1, R2, OR R3. IT ALSO ZEROES XREG,\n# YREG, OR ZREG. PLACE ANY + DSPCOUNT NUMBER FOR PERTINENT RC INTO DSPCOUNT.\n# DSPCOUNT IS LEFT SET TO LEFT MOST DSP NUMB FOR RC JUST BLANKED.\n\n\t\tTS\tDSPCOUNT\t# NEEDED FOR BLANKSUB\n5BLANK\t\tLXCH\tQ\n\t\tTC\tGETINREL\n\t\tCAF\tZERO\n\t\tINDEX\tINREL\n\t\tTS\tVERBREG\t\t# ZERO X, Y, Z, REG.\n# Page 405\n\t\tINDEX\tINREL\n\t\tTS\tXREGLP\t-2\n\t\tTS\tCODE\n\t\tINDEX\tINREL\t\t# ZERO PERTINENT DEC COMP BIT.\n\t\tCS\tBIT7\t\t# PROTECT OTHERS\n\t\tMASK\tDECBRNCH\n\t\tMASK\tBRNCHCON\t# ZERO LOW 2 BITS.\n\t\tTS\tDECBRNCH\n\t\tINDEX\tINREL\n\t\tCAF\tSINBLANK -2\t# BLANK ISOLATED CHAR SEPARATELY\n\t\tTS\tCOUNT\n\t\tTC\tDSPIN\n5BLANK1\t\tINDEX\tINREL\n\t\tCAF\tDOUBLK -2\n\t\tTS\tDSPCOUNT\n\t\tTC\t2BLANK\n\t\tCS\tTWO\n\t\tADS\tDSPCOUNT\n\t\tTC\t2BLANK\n\t\tINDEX\tINREL\n\t\tCAF\tR1D1 -2\n\t\tTS\tDSPCOUNT\t# SET DSPCOUNT TO LEFT MOST DSP NUMBER\n\t\tTC\tL\t\t# OF REG. JUST BLANKED\n\nSINBLANK\tOCT\t16\t\t# DEC 14\n\t\tOCT\t5\n\t\tOCT\t4\nDOUBLK\t\tOCT\t15\t\t# DEC 13\n\t\tOCT\t11\t\t# DEC 9\n\t\tOCT\t3\n\nBRNCHCON\tOCT\t77774\n\n# 2BLANK BLANKS TWO CHAR. PLACE DSP NUMBER OF LEFT CHAR OF THE PAIR INTO\n# DSPCOUNT. THIS NUMBER IS LEFT IN DSPCOUNT\n\n2BLANK\t\tCA\tDSPCOUNT\n\t\tTS\tSR\n\t\tCS\tBLANKCON\n\t\tINHINT\n\t\tINDEX\tSR\n\t\tXCH\tDSPTAB\n\t\tEXTEND\n\t\tBZMF \t+2\t\t# IF OLD CONTENTS -, NOUT OK\n\t\tINCR\tNOUT\t\t# IF OLD CONTENTS +, +1 TO NOUT\n\t\tRELINT\t\t\t# IF -, NOUT OK\n\t\tTC\tQ\nBLANKCON\tOCT\t4000\n\n# Page 406\n# ENTER PASS 0 IS THE EXECUTE FUNCTION. HIGHER ORDER ENTERS ARE TO LOAD\n# DATA. THE SIGN OF REQRET DETERMINES THE PASS, + FOR PASS 0, - FOR HIGHER\n# PASSES.\n#\n# MACHINE CADR TO BE SPECIFIED (MCTBS) NOUNS DESIRE AN ECADR TO BE LOADED\n# WHEN USED WITH LOAD VERBS, MONITOR VERBS, OR DISPLAY VERBS (EXCEPT\n# VERB = FIXED MEMORY DISPLAY, WHICH REQUIRES AN FCADR).\n\n\t\tBANK\t41\n\t\tSETLOC\tPINBALL2\n\t\tBANK\n\n\t\tCOUNT*\t$$/PIN\nNVSUBB\t\tTC\tNVSUB1\t\t# STANDARD LEAD INS. DONT MOVE.\nLOADLV1\t\tTC\tLOADLV\n\n\t\t\t\t\t# END OF STANDARD LEAD INS.\n\nENTER\t\tCAF\tZERO\n\t\tTS\tCLPASS\n\t\tCAF\tENDINST\n\t\tTS\tENTRET\n\t\tCCS\tREQRET\n\t\tTC\tENTPAS0\t\t# IF +, PASS 0\n\t\tTC\tENTPAS0\t\t# IF +, PASS 0\n\t\tTC\t+1\t\t# IF -, NOT PASS 0\nENTPASHI\tCAF\tMMADREF\n\t\tAD\tREQRET\t\t# IF L/ 2 CHAR IN FOR MM CODE, ALARM\n\t\tEXTEND\t\t\t# AND RECYCLE (DECIDE AT MMCHANG+1).\n\t\tBZF\tACCEPTWD\n\t\tCAF\tTHREE\t\t# IF DEC, ALARM IF L/ 5 CHAR IN FOR DATA,\n\t\tMASK\tDECBRNCH\t# BUT LEAVE REQRET - AND FLASH ON, SO\n\t\tCCS\tA\t\t# OPERATOR CAN SUPPLY MISSING NUMERICAL\n\t\tTC\t+2\t\t# CHARACTERS AND CONTINUE.\n\t\tTC\tACCEPTWD\t# OCTAL. ANY NUMBER OF CHAR OK.\n\t\tCCS\tDSPCOUNT\n\t\tTC\tGODSPALM\t# LESS THAN 5 CHAR DEC(DSPCOUNT IS +)\n\t\tTC\tGODSPALM\t# LESS THAN 5 CHAR DEC(DSPCOUNT IS +)\n\t\tTC\t+1\t\t# 5 CHAR IN (DSPCOUNT IS -)\nACCEPTWD\tCS\tREQRET\t\t# 5 CHAR IN (DSPCOUNT IS -)\n\t\tTS\tREQRET\t\t# SET REQRET +.\n\t\tTC\tFLASHOFF\n\t\tTC\tREQRET\n\nENTEXIT\t\t=\tENTRET\n\nMMADREF\t\tADRES\tMMCHANG +1\t# ASSUMES TC REQMM AT MMCHANG.\n\n# Page 407\nLOWVERB\t\tDEC\t28\t\t# LOWER VERB THAT AVOIDS NOUN TEST.\n\nENTPAS0\t\tCAF\tZERO\t\t# NOUN VERB SUB ENTERS HERE\n\t\tTS\tDECBRNCH\n\t\tCS\tVD1\t\t# BLOCK FURTHER NUM CHAR, SO THAT STRAY\n\t\tTS\tDSPCOUNT\t# CHAR DO NOT GET INTO VERB OR NOUN LTS.\nTESTVB\t\tCS\tVERBREG\t\t# IF VERB IS G/E LOWVB, SKIP NOUN TEST.\n\t\tTS\tVERBSAVE\t# SAVE VERB FOR POSSIBLE RECYCLE.\n\t\tAD\tLOWVERB\t\t# LOWVERB - VB\n\t\tEXTEND\n\t\tBZMF\tVERBFAN\t\t# VERB G/ E LOWVERB\nTESTNN\t\tEXTEND\t\t\t# VERB L/ LOWVERB\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\t+2\t\t# NORMAL\n\t\tTC\tMIXNOUN\t\t# MIXED\n\t\tCCS\tNNADTEM\t\t# NORMAL\n\t\tTC\tVERBFAN -2\t#\tNORMAL \tIF +\n\t\tTC\tGODSPALM\t# NOT IN USE\tIF +0\n\t\tTC\tREQADD\t\t# SPECIFY MACHINE CADR IF -\n\t\tINCR\tNOUNCADR\t# AUGMENT MACHINE CADR IF -0\n\t\tTC\tSETNADD\t\t# ECADR FROM NOUNCADR, SETS EB, NOUNADD.\n\t\tTC\tINTMCTBS +2\nREQADD\t\tCAF\tBIT15\t\t# SET CLPASS FOR PASS 0 ONLY\n\t\tTS\tCLPASS\n\t\tCS\tENDINST\t\t# TEST IF REACHED HERE FROM INTERNAL OR\n\t\tAD\tENTEXIT\t\t#\tFROM EXTERNAL\n\t\tEXTEND\n\t\tBZF\t+2\t\t# EXTERNAL MACH CADR TO BE SPECIFIED\n\t\tTC\tINTMCTBS\n\t\tTC\tREQDATZ\t\t# EXTERNAL MACH CADR TO BE SPECIFIED\n\t\tCCS\tDECBRNCH\t# ALARM AND RECYCLE IF DECIMAL USED\n\t\tTC\tALMCYCLE\t# FOR MCTBS.\n\t\tCS\tVD1\t\t# OCTAL USED OK\n\t\tTS\tDSPCOUNT\t# BLOCK NUM CHAR IN\n\t\tCCS\tCADRSTOR\n\t\tTC\t+3\t\t# EXTERNAL MCTBS DISPLAY WILL LEAVE FLASH\n\t\tTC\tUSEADD\t\t# ON IF ENDIDLE NOT = +0.\n\t\tTC\t+1\n\t\tTC\tFLASHON\nUSEADD\t\tXCH\tZREG\n\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SET EB, NOUNADD.\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tTC\tVERBFAN\n\n\t\tEBANK=\tDSPCOUNT\n# Page 408\nLODNNLOC\t2CADR\tLODNNTAB\n\nNEG5\t\tOCT\t77772\n\nINTMCTBS\tCA\tMPAC\t+2\t# INTERNAL MACH CADR TO BE SPECIFIED.\n\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SET EB. NOUNADD.\n\t\tCS\tFIVE\t\t# NVSUB CALL LEFT CADR IN MPAC+2 FOR MACH\n\t\tAD\tVERBREG\t\t# CADR TO BE SPECIFIED.\n\t\tEXTEND\n\t\tBZF\tVERBFAN\t\t# DONT DISPLAY CADR IF VB = 05.\n\t\tCAF\tR3D1\t\t# VB NOT = 05. DISPLAY CADR.\n\t\tTS\tDSPCOUNT\n\t\tCA\tNOUNCADR\n\t\tTC\tDSPOCTWO\n\t\tTC\tVERBFAN\n\n\t\tAD\tONE\n\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SETS EB, NOUNADD.\nVERBFAN\t\tCS\tLST2CON\n\t\tAD\tVERBREG\t\t# VERB = LST2CON\n\t\tCCS\tA\n\t\tAD\tONE\t\t# VERB G/ LST2CON\n\t\tTC\t+2\n\t\tTC\tVBFANDIR\t# VERB L/ LST2CON\n\t\tTS\tMPAC\n\t\tTC\tRELDSP\t\t# RELEASE DISPLAY SYST\n\t\tTC\tPOSTJUMP\t# GO TO GOEXTVB WITH VB=40 IN MPAC.\n\t\tCADR\tGOEXTVB\nLST2CON\t\tDEC\t40\t\t# FIRST LIST2 VERB (EXTENDED VERB)\n\nVBFANDIR\tINDEX\tVERBREG\n\t\tCAF\tVERBTAB\n\t\tTC\tBANKJUMP\n\nVERBTAB\t\tCADR\tGODSPALM\t# VB00 ILLEGAL\n\t\tCADR\tDSPA\t\t# VB01 DISPLAY OCT COMP 1 (R1)\n\t\tCADR\tDSPB\t\t# VB02 DISPLAY OCT COMP 2 (R1)\n\t\tCADR\tDSPC\t\t# VB03 DISPLAY OCT COMP 3 (R1)\n\t\tCADR\tDSPAB\t\t# VB04 DISPLAY OCT COMP 1,2 (R1,R2)\n\t\tCADR\tDSPABC\t\t# VB05 DISPLAY OCT COMP 1,2,3 (R1,R2,R3)\n\t\tCADR\tDECDSP\t\t# VB06 DECIMAL DISPLAY\n\t\tCADR\tDSPDPDEC\t# VB07 DP DECIMAL DISPLAY (R1,R2)\n\t\tCADR\tGODSPALM\t# VB08 SPARE\n\t\tCADR\tGODSPALM\t# VB09 SPARE\n\t\tCADR\tDSPALARM\t# VB10 SPARE\n\t\tCADR\tMONITOR\t\t# VB11 MONITOR OCT COMP 1 (R1)\n\t\tCADR\tMONITOR\t\t# VB12 MONITOR OCT COMP 2 (R1)\n\t\tCADR\tMONITOR\t\t# VB13 MONITOR OCT COMP 3 (R1)\n\t\tCADR\tMONITOR\t\t# VB14 MONITOR OCT COMP 1,2 (R1,R2)\n# Page 409\n\t\tCADR\tMONITOR\t\t# VB15 MONITOR OCT COMP 1,2,3 (R1,R2,R3)\n\t\tCADR\tMONITOR\t\t# VB16 MONITOR DECIMAL\n\t\tCADR\tMONITOR\t\t# VB17 MONITOR DP DEC (R1,R2)\n\t\tCADR\tGODSPALM\t# VB18 SPARE\n\t\tCADR\tGODSPALM\t# VB19 SPARE\n\t\tCADR\tGODSPALM\t# VB20 SPARE\n\t\tCADR\tALOAD\t\t# VB21 LOAD COMP 1 (R1)\n\t\tCADR\tBLOAD\t\t# VB22 LOAD COMP 2 (R2)\n\t\tCADR\tCLOAD\t\t# VB23 LOAD COMP 3 (R3)\n\t\tCADR\tABLOAD\t\t# VB24 LOAD COMP 1,2 (R1,R2)\n\t\tCADR\tABCLOAD\t\t# VB25 LOAD COMP 1,2,3 (R1,R2,R3)\n\t\tCADR\tGODSPALM\t# VB26 SPARE\n\t\tCADR\tDSPFMEM\t\t# VB27 FIXED MEMORY DISPLAY\n\t\t\t\t\t# THE FOLLOWING VERBS MAKE NO NOUN TEST\n\t\tCADR\tGODSPALM\t# VB28 SPARE\n\t\tCADR\tGODSPALM\t# VB29 SPARE\nREQEXLOC\tCADR\tVBRQEXEC\t# VB30 REQUEST EXECUTIVE\n\t\tCADR\tVBRQWAIT\t# VB31 REQUEST WAITLIST\n\t\tCADR\tVBRESEQ\t\t# VB32 RESEQUENCE\n\t\tCADR\tVBPROC\t\t# VB33 PROCEED WITHOUT DATA\n\t\tCADR\tVBTERM\t\t# VB34 TERMINATE CURRENT TEST OR LOAD REQ\n\t\tCADR\tVBTSTLTS\t# VB35 TEST LIGHTS\n\t\tCADR\tSLAP1\t\t# VB36 FRESH START\n\t\tCADR\tMMCHANG\t\t# VB37 CHANGE MAJOR MODE\n\t\tCADR\tGODSPALM\t# VB38 SPARE\n\t\tCADR\tGODSPALM\t# VB39 SPARE\n\n# THE LIST2 VERBFAN IS LOCATED IN THE EXTENDED VERB BANK.\n# Page 410\n# NNADTAB CONTAINS A RELATIVE ADDRESS, IDADDREL (IN LOW 10 BITS), REFERRING\n# TO WHERE 3 CONSECUTIVE ADDRESSES ARE STORED (IN IDADDTAB).\n# MIXNOUN GETS DATA AND STORES IN MIXTEMP,+1,+2.  IT SETS NOUNADD FOR\n# MIXTEMP.\n\nMIXNOUN\t\tCCS\tNNADTEM\n\t\tTC\t+4\t\t# + IN USE\n\t\tTC\tGODSPALM\t# +0 NOT IN USE\n\t\tTC\t+2\t\t# - IN USE\n\t\tTC\t+1\t\t# -0 IN USE\n\t\tCS\tSIX\n\t\tAD\tVERBREG\n\t\tEXTEND\n\t\tBZMF\t+2\t\t# VERB L/E 6\n\t\tTC\tVERBFAN\t\t# AVOID MIXNOUN SWAP IF VB NOT = DISPLAY\n\t\tCAF\tTWO\nMIXNN1\t\tTS\tDECOUNT\n\t\tAD\tMIXAD\n\t\tTS\tNOUNADD\t\t# SET NOUNADD TO MIXTEMP + K\n\t\tINDEX\tDECOUNT\t\t# GET IDADDTAB ENTRY FOR COMPONENT K\n\t\tCA\tIDAD1TEM\t# OF NOUN.\n\t\tTS\tNOUNTEM\n\t\t\t\t\t# TEST FOR DP (FOR OCT DISPLAY).  IF SO, GET\n\t\t\t\t\t#\tMINOR PART ONLY.\n\t\tTC\tSFRUTMIX\t# GET SF ROUT NUMBER IN A\n\t\tTC\tDPTEST\n\t\tTC\tMIXNN2\t\t# NO DP\n\t\tINCR\tNOUNTEM\t\t# DP GET MINOR PART\nMIXNN2\t\tCA\tNOUNTEM\n\t\tMASK\tLOW11\t\t# ESUBK (NO DP) OR (ESUBK)+1 (garbled) FOR DP\n\t\tTC\tSETEBANK\t# SET EBANK, LEAVE EADRES IN A.\n\t\tINDEX\tA\t\t# PICK UP C(ESUBK) NOT DP\n\t\tCA\t0\t\t# OR C((ESUBK)+1) FOR DP MINOR PART\n\t\tINDEX\tNOUNADD\n\t\tXCH\t0\t\t# STORE IN MIXTEM + K\n\t\tCCS\tDECOUNT\n\t\tTC\tMIXNN1\n\t\tTC\tVERBFAN\n\nMIXAD\t\tTC\tMIXTEMP\n\n# DPTEST\tENTER WITH SF ROUT NUMBER IN A.\n#\t\tRETURNS TO L+1 IF NO DP.\n#\t\tRETURNS TO L+2 IF DP.\n\nDPTEST\t\tINDEX\tA\n\t\tTCF\t+1\n\t\tTC\tQ\t\t# OCTAL ONLY NO DP\n\t\tTC\tQ\t\t# FRACT NO DP\n# Page 411\n\t\tTC\tQ\t\t# DEG  NO DP\n\t\tTC\tQ\t\t# ARITH  NO DP\n\t\tTCF\tDPTEST1\t\t# DP1OUT\n\t\tTCF\tDPTEST1\t\t# DP2OUT\n\t\tTC\tQ\t\t# LRPOSOUT NO DP (DATA IN CHANNEL 33)\n\t\tTCF\tDPTEST1\t\t# DP3OUT\n\t\tTC\tQ\t\t# HMS   NO DP\n\t\tTC\tQ\t\t# M/S   NO DP\n\t\tTCF\tDPTEST1\t\t# DP4OUT\n\t\tTC\tQ\t\t# ARITH1   NO DP\n\t\tTC\tQ\t\t# 2INTOUT  NO DP TO GET HI PART IN MPAC\n\t\tTC\tQ\t\t# 360-CDU   NO DP\nDPTEST1\t\tINDEX\tQ\n\t\tTC\t1\t\t# RETURN TO L+2\n\nREQDATX\t\tCAF\tR1D1\n\t\tTCF\tREQCOM\nREQDATY\t\tCAF\tR2D1\n\t\tTCF\tREQCOM\nREQDATZ\t\tCAF\tR3D1\nREQCOM\t\tTS\tDSPCOUNT\n\t\tCS\tQ\n\t\tTS\tREQRET\n\t\tTC\tBANKCALL\n\t\tCADR\t5BLANK\n\t\tTC\tFLASHON\nENDRQDAT\tTC\tENTEXIT\n\n\t\tTS\tNOUNREG\nUPDATNN\t\tXCH\tQ\n\t\tTS\tUPDATRET\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCCS\tNNADTEM\n\t\tAD\tONE\t\t# NORMAL\n\t\tTCF\tPUTADD\n\t\tTCF\tPUTADD +1\t# MCTBS\t DONT CHANGE NOUNADD\n\t\tTCF\tPUTADD +1\t# MCTBI\t DONT CHANGE NOUNADD\nPUTADD\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SETS EB. NOUNADD.\n\t\tCAF\tND1\n\t\tTS\tDSPCOUNT\n\t\tCA\tNOUNREG\n\t\tTCF\tUPDAT1\n\n\t\tTS\tVERBREG\nUPDATVB\t\tXCH\tQ\n\t\tTS\tUPDATRET\n\t\tCAF\tVD1\n# Page 412\n\t\tTS\tDSPCOUNT\n\t\tCA\tVERBREG\nUPDAT1\t\tTC\tPOSTJUMP\t# CANT USE SWCALL TO GO TO DSPDECVN, SINCE\n\t\tCADR\tGOVNUPDT\t# UPDATVB CAN ITSELF BE CALLED BY SWCALL.\n\t\tTC\tUPDATRET\n\nGOALMCYC\tTC\tALMCYCLE\t# NEEDED BECAUSE BANKJUMP CANT HANDLE F/F.\n\nGODSPALM\tTC\tPOSTJUMP\n\t\tCADR\tDSPALARM\n\n# Page 413\n# NOUN TABLES\n#\n# NOUN CODE L/40, NORMAL NOUN CASE.  NOUN CODE G/E 40, MIXED NOUN CASE.\n# FOR NORMAL CASE, NNADTAB CONTAINS ONE       ECADR     FOR EACH NOUN.\n# +0 INDICATES NOUN NOT USED.   - ENTRY INDICATES MACHINE CADR (E OR F) TO\n# BE SPECIFIED. -1 INDICATES CHANNEL TO BE SPECIFIED.  -0 INDICATES AUGMENT\n# OF LAST MACHINE CADR SUPPLIED.\n#\n# FOR MIXED CASE, NNADTAB CONTAINS ONE INDIRECT ADDRESS (IDADDREL) IN LOW\n# 10 BITS, AND THE COMPONENT CODE NUMBER IN THE HIGH 5 BITS.\n#\n# NNTYPTAB IS A PACKED TABLE OF THE FORM MMMMMNNNNNPPPPP.\n#\n# FOR THE NORMAL CASE,\tM'S ARE THE COMPONENT CODE NUMBER.\n#\t\t\tN'S ARE THE SF ROUTINE CODE NUMBER.\n#\t\t\tP'S ARE THE SF CONSTANT CODE NUMBER.\n#\n# MIXED-CASE,\t\tM'S ARE THE SF CONSTANT3 CODE NUMBER\t3 COMPONENT CASE\n#\t\t\tN'S ARE THE SF CONSTANT2 CODE NUMBER\n#\t\t\tP'S ARE THE SF CONSTANT1 CODE NUMBER\n#\t\t\tN'S ARE THE SF CONSTANT2 CODE NUMBER\t2 COMPONENT CASE\n#\t\t\tP'S ARE THE SF CONSTANT1 CODE NUMBER\n#\t\t\tP'S ARE THE SF CONSTANT1 CODE NUMBER\t1 COMPONENT CASE\n#\n# THERE IS ALSO AN INDIRECT ADDRESS TABLE (IDADDTAB) FOR MIXED CASE ONLY.\n# EACH ENTRY CONTAINS ONE ECADR.    IDADDREL IS THE RELATIVE ADDRESS OF\n# THE FIRST OF THESE ENTRIES.\n#\n# THERE IS ALSO A SCALE FACTOR ROUTINE NUMBER TABLE (RUTMXTAB) FOR MIXED\n# CASE ONLY.  THERE IS ONE ENTRY PER MIXED NOUN.  THE FORM IS,\n#\n#\tQQQQQRRRRRSSSSS\n#\n# Q'S ARE THE SF ROUTINE 3 CODE NUMBER\t\t3 COMPONENT CASE\n# R'S ARE THE SF ROUTINE 2 CODE NUMBER\n# S'S ARE THE SF ROUTINE 1 CODE NUMBER\n# R'S ARE THE SF ROUTINE 2 CODE NUMBER\t\t2 COMPONENT CASE\n# S'S ARE THE SF ROUTINE 1 CODE NUMBER\n#\n# IN OCTAL DISPLAY AND LOAD (OCT OR DEC) VERBS, EXCLUDE USE OF VERBS WHOSE\n# COMPONENT NUMBER IS GREATER THAN THE NUMBER OF COMPONENTS IN NOUN.\n# (ALL MACHINE ADDRESS TO BE SPECIFIED NOUNS ARE 3 COMPONENT.)\n#\n# IN MULTI-COMPONENT LOAD VERBS, NO MIXING OF OCTAL AND DECIMAL DATA\n# COMPONENT WORDS IS ALLOWED. ALARM IF VIOLATION.\n#\n# IN DECIMAL LOADS OF DATA, 5 NUMERICAL CHARACTERS MUST BE KEYED IN\n# BEFORE EACH ENTER. IF NOT, ALARM.\n\n# Page 414\n# DISPLAY VERBS\n\nDSPABC\t\tCS\tTWO\n\t\tTC\tCOMPTEST\n\t\tINDEX\tNOUNADD\n\t\tCS\t2\n\t\tXCH\tBUF\t+2\nDSPAB\t\tCS\tONE\n\t\tTC\tCOMPTEST\n\t\tINDEX\tNOUNADD\n\t\tCS\t1\n\t\tXCH\tBUF\t+1\nDSPA\t\tTC\tDECTEST\n\t\tTC\tTSTFORDP\n\t\tINDEX\tNOUNADD\n\t\tCS\t0\nDSPCOM1\t\tXCH\tBUF\n\t\tTC\tDSPCOM2\nDSPB\t\tCS\tONE\n\t\tTC\tDCOMPTST\n\t\tINDEX\tNOUNADD\n\t\tCS\t1\n\t\tTC\tDSPCOM1\nDSPC\t\tCS\tTWO\n\t\tTC\tDCOMPTST\n\t\tINDEX\tNOUNADD\n\t\tCS\t2\n\t\tTC\tDSPCOM1\nDSPCOM2\t\tCS\tTWO\t\t# A  B  C  AB ABC\n\t\tAD\tVERBREG\t\t# -1 -0 +1 +2 +3   IN A\n\t\tCCS\tA\t\t# +0 +0 +0 +1 +2   IN A AFTER CCS\n\t\tTC\tDSPCOM3\n\t\tTC\tENTEXIT\n\t\tTC\t+1\nDSPCOM3\t\tTS\tDISTEM\t\t# +0 +1 +2 INTO DISTEM\n\t\tINDEX\tA\n\t\tCAF\tR1D1\n\t\tTS\tDSPCOUNT\n\t\tINDEX\tDISTEM\n\t\tCS\tBUF\n\t\tTC\tDSPOCTWO\n\t\tXCH\tDISTEM\n\t\tTC\tDSPCOM2 +2\n\n# COMPTEST ALARMS IF COMPONENT NUMBER OF VERB (LOAD OR OCT DISPLAY) IS\n# GREATER THAN THE HIGHEST COMPONENT NUMBER OF NOUN.\n\nCOMPTEST\tTS\tSFTEMP1\t\t# VERB COMP\n\t\tLXCH\tQ\nCOMPTST1\tTC\tGETCOMP\n\t\tTC\tLEFT5\n\t\tMASK\tTHREE\t\t# NOUN COMP\n# Page 415\n\t\tAD\tSFTEMP1\t\t# NOUN COMP = VERB COMP\n\t\tCCS\tA\n\t\tTC\tL\t\t# NOUN COMP G/ VERB COMP\n\t\tTC\tCCSHOLE\n\t\tTC\tGODSPALM\t# NOUN COMP L/ VERB COMP\nNDCMPTST\tTC\tL\t\t# NOUN COMP = VERB COMP\n\n# DCOMPTST ALARMS IF DECIMAL ONLY BIT (BIT4 OF COMP CODE NUMBER) = 1.\n# IF NOT, IT PERFORMS REGULAR COMPTEST.\n\nDCOMPTST\tTS\tSFTEMP1\t\t# - VERB COMP\n\t\tLXCH\tQ\n\t\tTC\tDECTEST\n\t\tTC\tCOMPTST1\n\nDECTEST\t\tEXTEND\t\t\t# ALARMS IF DEC ONLY BIT = 1 (BIT4 OF COMP\n\t\tQXCH\tMPAC +2\t\t# CODE NUMBER).  RETURNS IF NOT.\n\t\tTC\tGETCOMP\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tTC\tGODSPALM\n\t\tTC\tMPAC +2\n\nDCTSTCYC\tLXCH\tQ\t\t# ALARMS AND RECYCLES IF DEC ONLY BIT = 1\n\t\tTC\tGETCOMP\t\t# (BIT4 OF COMP CODE NUMBER). RETURNS\n\t\tMASK\tBIT14\t\t# IF NOT.  USED BY LOAD VERBS.\n\t\tCCS\tA\n\t\tTC\tALMCYCLE\n\t\tTC\tL\n\n# NOUNTEST ALARMS IF NO-LOAD BIT (BIT5 OF COMP CODE NUMBER) = 1.\n# IF NOT, IT RETURNS.\n\nNOUNTEST\tLXCH\tQ\n\t\tTC\tGETCOMP\n\t\tCCS\tA\n\t\tTC\tL\n\t\tTC\tL\n\t\tTC\tGODSPALM\n\nTSTFORDP\tLXCH\tQ\t\t# TEST FOR DP. IF SO, GET MINOR PART ONLY.\n\t\tCA\tNNADTEM\n\t\tAD\tONE\t\t# IF NNADTEM = -1, CHANNEL TO BE SPECIFIED\n\t\tEXTEND\n\t\tBZF\tCHANDSP\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\t+2\t\t# NORMAL\n# Page 416\n\t\tTC\tL\t\t# MIXED CASE ALREADY HANDLED IN MIXNOUN\n\t\tTC\tSFRUTNOR\n\t\tTC\tDPTEST\n\t\tTC\tL\t\t# NO DP\n\t\tINCR\tNOUNADD\t\t# DP\tE+1 INTO NOUNADD FOR MINOR PART.\n\t\tTC\tL\n\nCHANDSP\t\tCA\tNOUNCADR\n\t\tMASK\tLOW9\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tREAD\t0\n\t\tCS\tA\n\t\tTCF\tDSPCOM1\n\nCOMPICK\t\tADRES\tNNTYPTEM\n\t\tADRES\tNNADTEM\n\nGETCOMP\t\tINDEX\tMIXBR\t\t# NORMAL\t\t\tMIXED\n\t\tCAF\tCOMPICK -1\t# ADRES NNTYPTEM\t\tADRES NNADTEM\n\t\tINDEX\tA\n\t\tCA\t0\t\t# C(NNTYPTEM)\t\t\tC(NNADTEM)\n\t\tMASK\tHI5\t\t# GET HI5 OF NNTYPTAB (NORM) \tOF NNADTAB (MIX)\n\t\tTC\tQ\n\nDECDSP\t\tTC\tGETCOMP\n\t\tTC\tLEFT5\n\t\tMASK\tTHREE\n\t\tTS\tDECOUNT\t\t# COMP NUMBER INTO DECOUNT\nDSPDCGET\tTS\tDECTEM\t\t# PICKS UP DATA\n\t\tAD\tNOUNADD\t\t# DECTEM 1COMP +0, 2COMP +1, 3COMP +2\n\t\tINDEX\tA\n\t\tCS\t0\n\t\tINDEX\tDECTEM\n\t\tXCH\tXREG\t\t# CANT USE BUF SINCE DMP USES IT.\n\t\tCCS\tDECTEM\n\t\tTC\tDSPDCGET\t# MORE TO GET\nDSPDCPUT\tCAF\tZERO\t\t# DISPLAYS DATA\n\t\tTS\tMPAC +1\t\t# DECOUNT 1COMP +0, 2COMP +1, 3COMP +2\n\t\tTS\tMPAC +2\n\t\tINDEX\tDECOUNT\n\t\tCAF\tR1D1\n\t\tTS\tDSPCOUNT\n\t\tINDEX\tDECOUNT\n\t\tCS\tXREG\n\t\tTS\tMPAC\n\t\tTC\tSFCONUM\t\t# 2X (SF CON NUMB) IN A\n# Page 417\n\t\tTS\tSFTEMP1\n\t\tEXTEND\t\t\t# SWITCH BANKS TO SF CONSTANT TABLE\n\t\tDCA\tGTSFOUTL\t#\tREADING ROUTINE.\n\t\tDXCH\tZ\t\t# LOADS SFTEMP1, SFTEMP2\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tDSPSFNOR\n\t\tTC\tSFRUTMIX\n\t\tTC\tDECDSP3\n\nDSPSFNOR\tTC\tSFRUTNOR\n\t\tTC\tDECDSP3\n\n\t\tEBANK=\tDSPCOUNT\nGTSFOUTL\t2CADR\tGTSFOUT\n\nDSPDCEND\tTC\tBANKCALL\t# ALL SFOUT ROUTINES END HERE\n\t\tCADR\tDSPDECWD\n\t\tCCS\tDECOUNT\n\t\tTC\t+2\n\t\tTC\tENTEXIT\n\t\tTS\tDECOUNT\n\t\tTC\tDSPDCPUT\t# MORE TO DISPLAY\n\nDECDSP3\t\tINDEX\tA\n\t\tCAF\tSFOUTABR\n\t\tTC\tBANKJUMP\n\nSFOUTABR\tCADR\tPREDSPAL\t# ALARM IF DEC DISP WITH OCTAL ONLY NOUN\n\t\tCADR\tDSPDCEND\n\t\tCADR\tDEGOUTSF\n\t\tCADR\tARTOUTSF\n\t\tCADR\tDP1OUTSF\n\t\tCADR\tDP2OUTSF\n\t\tCADR\tLRPOSOUT\n\t\tCADR\tDP3OUTSF\n\t\tCADR\tHMSOUT\n\t\tCADR\tM/SOUT\n\t\tCADR\tDP2OUTSF\n\t\tCADR\tAROUT1SF\n\t\tCADR\t2INTOUT\n\t\tCADR\t360-CDUO\nENDRTOUT\tEQUALS\n\n# THE FOLLOWING IS A TYPICAL SF ROUTINE. IT USES MPAC. LEAVES RESULTS\n# IN MPAC, MPAC+1.  ENDS WITH TC DSPDCEND\n\n# Page 418\n\t\tSETLOC\tBLANKCON +1\n\n\t\tCOUNT*\t$$/PIN\n# DEGOUTSF SCALES BY .18 THE LOW 14 BITS OF ANGLE, ADDING .18 FOR\n# NUMBERS IN THE NEGATIVE (AGC) RANGE.\n\nDEGOUTSF\tCAF\tZERO\n\t\tTS\tMPAC +2\t\t# SET INDEX FOR FULL SCALE.\n\t\tTC\tFIXRANGE\n\t\tTC\t+2\t\t# NO AUGMENT NEEDED (SFTEMP1 AND 2 ARE 0)\n\t\tTC\tSETAUG\t\t# SET AUGMENTER ACCORDING TO C(MPAC +2)\n\t\tTC\tDEGCOM\n\n# 360-CDUD COMPUTES 360 - CDU ANGLE IN MPAC, STORES RESULT IN MPAC AND\n# GOES TO DEGOUTSF.\n\n360-CDUO\tTC\t360-CDU\n\t\tTC\tDEGOUTSF\n\n360-CDU\t\tCA\tMPAC\n\t\tMASK\tPOSMAX\t\t# IF ANGLE IS 0 OR 180 DEGREES, DO NOTHING\n\t\tEXTEND\n\t\tBZF\t360-CDUE\n\t\tCS\tMPAC\t\t# COMPUTE 360 DEGREES MINUS ANGLE\n\t\tAD\tONE\n\t\tTS\tMPAC\n360-CDUE\tTC\tQ\n\n# LRPOSOUT DISPLAYS +0,1,2, OR 3 (WHOLE) FOR CHANNEL 33, BITS 7-6 = 11,10,\n# 01,00 RESPECTIVELY\n\nLRPOSOUT\tEXTEND\n\t\tREAD\tCHAN33\n\t\tEXTEND\n\t\tMP\tBIT10\t\t# BITS 7-6 TO BITS 2-1\n\t\tCOM\n\t\tMASK\tTHREE\n\t\tTS\tMPAC\n\t\tTC\tARTOUTSF\t# DISPLAY AS WHOLE\n\nSETAUG\t\tEXTEND\t\t\t# LOADS SFTEMP1 AND SFTEMP2 WITH THE\n\t\tINDEX\tMPAC +2\t\t# DP AUGMENTER CONSTANT\n\t\tDCA\tDEGTAB\n\t\tDXCH\tSFTEMP1\n\t\tTC\tQ\n\nFIXRANGE \tCCS\tMPAC\t\t# IF MPAC IS + RETURN TO L+1\n\t\tTC\tQ\t\t# IF MPAC IS - RETURN TO L+2 AFTER\n\t\tTC\tQ\t\t# MASKING OUT THE SIGN BIT\n\t\tTCF\t+1\n\n# Page 419\n\t\tCS\tBIT15\n\t\tMASK\tMPAC\n\t\tTS\tMPAC\n\t\tINDEX\tQ\n\t\tTC\t1\n\nDEGCOM\t\tEXTEND\t\t\t# LOADS MULTIPLIER, DOES SHORTMP, AND\n\t\tINDEX\tMPAC +2\t\t# ADDS AUGMENTER.\n\t\tDCA\tDEGTAB\n\t\tDXCH\tMPAC\t\t# ADJUSTED ANGLE IN A\n\t\tTC\tSHORTMP\n\t\tDXCH\tSFTEMP1\n\t\tDAS\tMPAC\n\t\tTC\tSCOUTEND\n\nDEGTAB\t\tOCT\t05605\t\t# HI PART OF \t.18\n\t\tOCT\t03656\t\t# LOW PART OF\t.18\n\t\tOCT\t16314\t\t# HI PART OF \t.45\n\t\tOCT\t31463\t\t# LO PART OF\t.45\n\nARTOUTSF\tDXCH\tSFTEMP1\t\t# ASSUMES POINT AT LEFT OF DP SFCON\n\t\tDXCH\tMPAC\n\t\tTC\tPRSHRTMP\t# IF C(A) = -0, SHORTMP FAILS TO GIVE -0.\nSCOUTEND\tTC\tPOSTJUMP\n\t\tCADR\tDSPDCEND\n\nAROUT1SF\tDXCH\tSFTEMP1\t\t# ASSUMES POINT BETWEEN HI AND LO PARTS OF\n\t\tDXCH\tMPAC\t\t# DP SFCON. SHIFTS RESULTS LEFT 14, BY\n\t\tTC\tPRSHRTMP\t# TAKING RESULTS FROM MPAC+1, MPAC+2.\n\t\tTC\tL14/OUT\n\nDP1OUTSF\tTC\tDPOUT\t\t# SCALES MPAC, MPAC +1 BY DP SCALE FACTOR\nL14/OUT\t\tXCH\tMPAC +2\t\t# IN SFTEMP1, SFTEMP2.  THEN SCALE RESULT\n\t\tXCH\tMPAC +1\t\t# BY B14\n\t\tTS\tMPAC\n\t\tTC\tSCOUTEND\n\nDP2OUTSF\tTC\tDPOUT\t\t# SCALES MPAC, MPAC +1 BY DP SCALE FACTOR\n\t\tTC\tSCOUTEND\n\nDP3OUTSF\tTC\tDPOUT\t\t# ASSUMES POINT BETWEEN BITS 7-8 OF HIGH\n\t\tCAF\tSIX\t\t# LEFT BY 7, ROUNDS MPAC+2 INTO MPAC+1.\n\t\tTC\tTPLEFTN\t\t# SHIFT LEFT 7.\n\t\tTC\tSCOUTEND\n# Page 420\nMPAC+6\t\t= \tMPAC +6\t\t# USE MPAC +6 INSTEAD OF OVFIND\n\nDPOUT\t\tXCH\tQ\n\t\tTS\tMPAC+6\n\t\tTC\tREADLO\t\t# GET FRESH DATA FOR BOTH HI AND LO.\n\t\tTC\tTPAGREE\t\t# MAKE DP DATA AGREE\n\t\tTC\tDMP\n\t\tADRES\tSFTEMP1\n\t\tTC\tMPAC+6\n\n# THE FOLLOWING ROUTINE DISPLAYS TWO CONTIGUOUS SP POSITIVE INTEGERS\n# AS TWO POSITIVE DECIMAL INTEGERS IN RXD1-RXD2 AND RXD4-RXD5 (RXD3 IS\n# BLANKED).  THE INTEGER IN THE LOWER NUMBERED ADDRESS IS DISPLAYED IN\n# RXD1-RXD2.\n\n2INTOUT\t\tTC\t5BLANK\t\t# TO BLANK RXD3\n\t\tTC\t+ON\t\t# TURN ON + SIGN\n\t\tCA\tMPAC\n\t\tTC\tDSPDECVN\t# DISPLAY 1ST INTEGER (LIKE VERB AND NOUN)\n\t\tCS\tTHREE\n\t\tINDEX\tDECOUNT\n\t\tAD\tR1D1\t\t# RXD4\n\t\tTS\tDSPCOUNT\n\t\tTC\tREADLO\t\t# GET 2ND INTEGER\n\t\tCA\tMPAC +1\n\t\tTC\tDSPDECVN\t# DISPLAY 2ND INTEGER (LIKE VERB AND NOUN)\n\t\tTC\tPOSTJUMP\n\t\tCADR\tDSPDCEND +2\n\n# READLO PICKS UP FRESHDATA FOR BOTH HI AND LO AND LEAVES IT IN\n# MPAC, MPAC+1.  THIS IS NEEDED FOR TIME DISPLAY.  IT ZEROES MPAC+2, BUT\n# DOES NOT FORCE TPAGREE.\n\nREADLO\t\tXCH\tQ\n\t\tTS\tTEM4\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tRDLONOR\n\t\tINDEX\tDECOUNT\n\t\tCA\tIDAD1TEM\t# GET IDADDTAB ENTRY FOR COMP K OF NOUN.\n\t\tMASK\tLOW11\t\t# E SUBK\n\t\tTC\tSETEBANK\t# SET EB, LEAVE EADRES IN A.\nREADLO1\t\tEXTEND\t\t\t# MIXED\t\t\tNORMAL\n\t\tINDEX\tA\t\t# C(ESUBK)\t\tC(E)\n\t\tDCA\t0\t\t# C(E SUBK)+1)\t\tC(E+1)\n\t\tDXCH\tMPAC\n\t\tCAF\tZERO\n\t\tTS\tMPAC\t+2\n\t\tTC\tTEM4\n# Page 421\nRDLONOR\t\tCA\tNOUNADD\t\t# E\nENDRDLO\t\tTC\tREADLO1\n\n\t\tBANK\t42\n\t\tSETLOC\tPINBALL3\n\t\tBANK\n\n\t\tCOUNT*\t$$/PIN\nHMSOUT\t\tTC\tBANKCALL\t# READ FRESH DATA FOR HI AND LO INTO MPAC,\n\t\tCADR\tREADLO\t\t# MPAC+1.\n\t\tTC\tTPAGREE\t\t# MAKE DP DATA AGREE.\n\t\tTC\tSEPSECNR\t# LEAVE FRACT SEC/60 IN MPAC, MPAC+1. LEAVE\n\t\t\t\t\t# WHOLE MIN IN BIT13 OF LOTEMOUT AND ABOVE\n\t\tTC\tDMP\t\t# USE ONLY FRACT SEC/60 MOD 60\n\t\tADRES\tSECON2\t\t# MULT BY .06\n\t\tCAF\tR3D1\t\t# GIVES CENTI-SEC/10EXP5 MOD 60\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\t# DISPLAY SEC MOD 60\n\t\tCADR\tDSPDECWD\n\t\tTC\tSEPMIN\t\t# REMOVE REST OF SECONDS\n\t\tCAF\tMINCON2\t\t# LEAVE FRACT MIN/60 IN MPAC+1.  LEAVE\n\t\tXCH\tMPAC\t\t# WHOLE HOURS IN MPAC.\n\t\tTS\tHITEMOUT\t# SAVE WHOLE HOURS.\n\t\tCAF\tMINCON2 +1\n\t\tXCH\tMPAC \t+1\t# USE ONLY FRACT MIN/60 MOD 60\n\t\tTC\tPRSHRTMP\t# IF C(A) = -0, SHORTMP FAILS TO GIVE -0.\n\t\t\t\t\t# MULT BY .0006\n\t\tCAF\tR2D1\t\t# GIVE MIN/10EXP5 MOD 60\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\t# DISPLAY MIN MOD 60\n\t\tCADR\tDSPDECWD\n\t\tEXTEND\t\t\t# MINUTES, SECONDS HAVE BEEN REMOVED\n\t\tDCA\tHRCON1\n\t\tDXCH\tMPAC\n\t\tCA\tHITEMOUT \t# USE WHOLE HOURS\n\t\tTC\tPRSHRTMP\t# IF C(A) = -0, SHORTMP FAILS TO GIVE -0.\n\t\t\t\t\t# MULT BY .16384\n\t\tCAF\tR1D1\t\t# GIVES HOURS/10EXP5\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\t# USE REGULAR DSPDECWD, WITH ROUND OFF.\n\t\tCADR\tDSPDECWD\n\t\tTC\tENTEXIT\n\nSECON1\t\t2DEC*\t1.666666666 E-4 B12*\t# 2EXP12/6000\nSECON2\t\tOCT\t01727\t\t# .06 FOR SECONDS DISPLAY\n\t\tOCT\t01217\nMINCON2\t\tOCT\t00011\t\t# .0006 FOR MINUTES DISPLAY\n\t\tOCT\t32445\n# Page 422\nMINCON1\t\tOCT\t02104\t\t# .066..66 UPPED BY 2EXP-28\n\t\tOCT\t10422\nHRCON1\t\t2DEC\t.16384\n\n\t\tOCT\t00000\nRNDCON\t\tOCT\t00062\t\t# .5 SEC\n\nM/SOUT\t\tTC\tBANKCALL\t# READ FRESH DATA FOR HI AND LO INTO MPAC.\n\t\tCADR\tREADLO\t\t# MPAC+1.\n\t\tTC\tTPAGREE\t\t# MAKE DP DATA AGREE\n\t\tCCS\tMPAC\t\t# IF MAG OF (MPAC, MPAC+1) G/ 59 M 59 S.\n\t\tTC\t+2\t\t# DISPLAY 59B59, WITH PROPER SIGN.\n\t\tTC\tM/SNORM\t\t# MPAC = +0. L/ 59M58.5S\n\t\tAD\tM/SCON1\t\t# - HI PART OF (59M58.5S) +1 FOR CCS\n\t\tCCS\tA\t\t# MAG OF MPAC - HI PART OF (59M58.5S)\n\t\tTC\tM/SLIMIT\t# G/ 59M58.5S\n\t\tTC\tM/SNORM\t\t# ORIGINAL MPAC = -0. L/ 59M58.5S\n\t\tTC\tM/SNORM\t\t# L/ 59M58.5S\n\t\tCCS\tMPAC +1\t\t# MAG OF MPAC = HI PART OF 59M58.5S\n\t\tTC\t+2\n\t\tTC\tM/SNORM\t\t# MPAC+1 = +0. L/ 59M58.5S\n\t\tAD\tM/SCON2\t\t# - LO PART OF (59M58.5S) +1 FOR CCS\n\t\tCCS\tA\t\t# MAG OF MPAC+1 - LO PART OF (59M58.5S)\n\t\tTC\tM/SLIMIT\t# G/ 59M58.5S\n\t\tTC\tM/SNORM\t\t# ORIGINAL MPAC+1 = -0. L/ 59M58.5S\n\t\tTC\tM/SNORM\t\t# L/ 59M58.5S\nM/SLIMIT\tCCS\tMPAC\t\t# = 59M58.5S\tLIMIT\n\t\tCAF\tM/SCON3\t\t# MPAC CANNOT BE +/- 0 AT THIS POINT.\n\t\tTC\t+LIMIT\t\t# FORCE MPAC, MPAC+1 TO +/- 59M59.5S\n\t\tCS\tM/SCON3\n\t\tTS\tMPAC\t\t# WILL DISPLAY 59M59S IN DSPDECNR\n\t\tCS\tM/SCON3 +1\nLIMITCOM\tTS\tMPAC +1\n\t\tCAF\tNORMADR\t\t# SET RETURN TO M/SNORM+1.\n\t\tTC\tSEPSECNR +1\n+LIMIT\t\tTS\tMPAC\n\t\tCAF\tM/SCON3 +1\n\t\tTC\tLIMITCOM\nM/SNORM\t\tTC\tSEPSEC\t\t# LEAVE FRACT SEC/60 IN MPAC,MPAC+1. LEAVE\n\t\t\t\t\t# WHOLE MIN IN BIT13 OF LOTEMOUT AND ABOVE\n\t\tCAF\tHISECON\t\t# USE ONLY FRACT SEC/60 MOD 60\n\t\tTC\tSHORTMP\t\t# MULT BY .6 + 2EXP-14\n\t\tCS\tTHREE\t\t# GIVES SEC/100 MOD 60\n\t\tADS\tDSPCOUNT\t# DSPCOUNT ALREADY SET TO RXD1\n\t\tTC\tBANKCALL\t# DISPLAY SEC MOD 60 IN D4D5.\n\t\tCADR\tDSPDC2NR\n\t\tCAF\tZERO\n\t\tTS\tCODE\n\t\tCS\tTWO\n# Page 423\n\t\tINDEX\tDECOUNT\n\t\tAD\tR1D1\t\t# RXD3\n\t\tTS\tCOUNT\n\t\tTC\tBANKCALL\t# BLANK MIDDLE CHAR\n\t\tCADR\tDSPIN\n\t\tTC\tSEPMIN\t\t# REMOVE REST OF SECONDS\n\t\tXCH\tMPAC +1\t\t# LEAVE FRACT MIN/60 IN MPAC+1\n\t\tEXTEND\t\t\t# USE ONLY FRACT MIN/60 MOD 60\n\t\tMP\tHIMINCON\t# MULT BY .6 + 2EXP-7\n\t\tDXCH\tMPAC\t\t# GIVES MIN/100 MOD 60\n\t\tINDEX\tDECOUNT\n\t\tCAF\tR1D1\t\t# RXD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\t# DISPLAY MIN MOD 60 IN D1D2.\n\t\tCADR\tDSPDC2NR\n\t\tTC\tPOSTJUMP\n\t\tCADR\tDSPDCEND +2\n\nHISECON\t\tOCT\t23147\t\t# .6 + 2EXP-14\nHIMINCON\tOCT\t23346\t\t# .6 + 2EXP-7\n\nM/SCON1\t\tOCT\t77753\t\t# - HI PART OF (59M58.5S) +1\nM/SCON2\t\tOCT\t41126\t\t# - LO PART OF (59M58.5S) +1\nNORMADR\t\tADRES\tM/SNORM +1\nM/SCON3\t\tOCT\t00025\t\t# 59M 59.5S\n\t\tOCT\t37016\n\nSEPSEC\t\tCCS\tMPAC\t+1\t# IF +, ROUND BY ADDING .5 SEC\n\t\tTCF\tPOSEC\t\t# IF -, ROUND BY SUBTRACING .5 SEC\n\t\tTCF\tPOSEC\t\t# FINDS TIME IN MPAC, MPAC+1\n\t\tTCF\t+1\t\t# ROUNDS OFF BY +/- .5 SEC\n\t\tEXTEND\t\t\t# LEAVES WHOLE MIN IN BIT13 OF\n\t\tDCS\tRNDCON\t-1\t# LOTEMOUT AND ABOVE.\nSEPSEC1\t\tDAS\tMPAC\t\t# LEAVES FRACT SEC/60 IN MPAC, MPAC+1.\n\t\tTCF\tSEPSECNR\nPOSEC\t\tEXTEND\n\t\tDCA\tRNDCON -1\n\t\tTCF\tSEPSEC1\nSEPSECNR\tXCH\tQ\t\t# THIS ENTRY AVOIDS ROUNDING BY .5 SEC\n\t\tTS\tSEPSCRET\n\t\tTC\tDMP\t\t# MULT BY 2EXP12/6000\n\t\tADRES\tSECON1\t\t# GIVES FRACT SEC/60 IN BIT12 OF MPAC+1\n\t\tEXTEND\t\t\t# AND BELOW.\n\t\tDCA\tMPAC\t\t# SAVE MINUTES AND HOURS\n\t\tDXCH\tHITEMOUT\n\t\tTC\tTPSL1\n\t\tTC\tTPSL1\t\t# GIVES FRACT SEC/60 IN MPAC+1, MPAC+2.\n\t\tCAF\tZERO\n\t\tXCH\tMPAC +2\t\t# LEAVE FRACT SEC/60 IN MPAC, MPAC+1.\n# Page 424\n\t\tXCH\tMPAC +1\n\t\tXCH\tMPAC\n\t\tTC\tSEPSCRET\n\nSEPMIN\t\tXCH\tQ\t\t# FIND WHOLE MINUTES IN BIT13\n\t\tTS\tSEPMNRET\t# OF LOTEMOUT AND ABOVE.\n\t\tCA\tLOTEMOUT\t# REMOVES REST OF SECONDS.\n\t\tEXTEND\t\t\t# LEAVES FRACT MIN/60 IN MPAC+1.\n\t\tMP\tBIT3\t\t# LEAVES WHOLE HOURS IN MPAC.\n\t\tEXTEND\t\t\t# SR 12, THROW AWAY LP.\n\t\tMP\tBIT13\t\t# SR 2, TAKE FROM LP. = SL 12.\n\t\tLXCH\tMPAC +1\t\t# THIS FORCES BITS 12-1 TO 0 IF +.\n\t\t\t\t\t# FORCES BITS 12-1 TO 1 IF -.\n\t\tCA\tHITEMOUT\n\t\tTS\tMPAC\n\t\tTC\tDMP\t\t# MULT BY 1/15\n\t\tADRES\tMINCON1\t\t# GIVES FRACT MIN/60 IN MPAC+1.\nENDSPMIN\tTC\tSEPMNRET\t# GIVES WHOLE HOURS IN MPAC.\n\n# THIS IS A SPECIAL PURPOS VERB FOR DISPLAYING A DOUBLE PRECISION AGC\n# WORD AS 10 DECIMAL DIGITS ON THE AGC DISPLAY PANEL.  IT CAN BE USED WITH\n# ANY NOUN, EXCEPT MIXED NOUNS. IT DISPLAYS THE CONTENTS\n# OF THE REGISTER NOUNADD IS POINTING TO.  IF USED WITH NOUNS WHICH ARE\n# INHERENTLY NOT DP SUCH AS THE CDU COUNTERS THE DISPLAY WILL BE GARBAGE.\n# DISPLAY IS IN R1 AND R2 ONLY WITH THE SIGN IN R1.\n\n\t\tSETLOC\tENDRDLO +1\n\n\t\tCOUNT*\t$$/PIN\nDSPDPDEC\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\t+2\t\t# NORMAL NOUN\n\t\tTC\tDSPALARM\n\t\tEXTEND\n\t\tINDEX\tNOUNADD\n\t\tDCA\t0\n\t\tDXCH\tMPAC\n\t\tCAF\tR1D1\n\t\tTS\tDSPCOUNT\n\t\tCAF\tZERO\n\t\tTS\tMPAC +2\n\t\tTC\tTPAGREE\n\t\tTC\tDSP2DEC\nENDDPDEC\tTC\tENTEXIT\n\n# Page 425\n# LOAD VERBS\t\tIF ALARM CONDITION IS DETECTED DURING EXECUTE,\n# CHECK FAIL LIGHT IS TURNED ON AND ENDOFJOB.  IF ALARM CONDITION IS\n# DETECTED DURING ENTER OF DATA, CHECK FAIL IS TURNED ON AND IT RECYCLES\n# TO EXECUTE OF ORIGINAL LOAD VERB.  RECYCLE CAUSED BY  1) DECIMAL MACHINE\n# CADR  2) MIXTURE OF OCTAL/DECIMAL DATA  3) OCTAL DATA INTO DECIMAL\n# ONLY NOUN  4) DEC DATA INTO OCT ONLY NOUN  5) DATA TOO LARGE FOR SCALE\n# 6) FEWER THAN 3 DATA WORDS LOADED FOR HRS, MIN, SEC NOUN.  (2)-(6) ALARM\n# AND RECYCLE OCCUR AT FINAL ENTER OF SET. (1) ALARM AND RECYCLE OCCUR AT\n# ENTER OF CADR.\n\n\t\tSETLOC\tENDRTOUT\n\n\t\tCOUNT*\t$$/PIN\nABCLOAD\t\tCS\tTWO\n\t\tTC\tCOMPTEST\n\t\tTC\tNOUNTEST\t# TEST IF NOUN CAN BE LOADED.\n\t\tCAF\tVBSP1LD\n\t\tTC\tUPDATVB -1\n\t\tTC\tREQDATX\n\t\tCAF\tVBSP2LD\n\t\tTC\tUPDATVB -1\n\t\tTC\tREQDATY\n\t\tCAF\tVBSP3LD\n\t\tTC\tUPDATVB -1\n\t\tTC\tREQDATZ\n\nPUTXYZ\t\tCS\tSIX\t\t# TEST THAT THE 3 DATA WORDS LOADED ARE\n\t\tTC\tALLDC/OC\t# ALL DEC OR ALL OCT.\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tZERO\t\t# X COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t0\n\t\tCAF\tONE\t\t# Y COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t1\n\t\tCAF\tTWO\t\t# Z COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t2\n\t\tCS\tSEVEN\t\t# IF NOUN 7 HAS JUST BEEN LOADED, SET\n\t\tAD\tNOUNREG\t\t# FLAG BITS AS SPECIFIED.\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tLOADLV\n# Page 426\n\t\tCA\tXREG\t\t# ECADR OF FLAG WORD.\n\t\tTC\tSETNCADR +1\t# SET EBANK, NOUNADD.\n\t\tCA\tZREG\t\t# ZERO TO RESET BITS, NON-ZERO TO SET BITS.\n\t\tINHINT\n\t\tEXTEND\n\t\tBZF\tBITSOFF\n\t\tINDEX\tNOUNADD\n\t\tCS\t0\n\t\tMASK\tYREG\t\t# BITS TO BE PROCESSED.\n\t\tINDEX\tNOUNADD\n\t\tADS\t0\t\t# SET BITS.\n\t\tTC\tBITSOFF1\nBITSOFF\t\tCS\tYREG\t\t# BITS TO BE PROCESSED.\n\t\tINDEX\tNOUNADD\n\t\tMASK\t0\n\t\tINDEX\tNOUNADD\n\t\tTS\t0\t\t# RESET BITS.\nBITSOFF1\tRELINT\n\t\tTC\tLOADLV\n\nABLOAD\t\tCS\tONE\n\t\tTC\tCOMPTEST\n\t\tTC\tNOUNTEST\t# TEST IF NOUN CAN BE LOADED.\n\t\tCAF\tVBSP1LD\n\t\tTC\tUPDATVB -1\n\t\tTC\tREQDATX\n\t\tCAF\tVBSP2LD\n\t\tTC\tUPDATVB -1\n\t\tTC\tREQDATY\nPUTXY\t\tCS\tFIVE\t\t# TEST THAT THE 2 DATA WORDS LOADED ARE\n\t\tTC\tALLDC/OC\t# ALL DEC OR ALL OCT.\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tZERO\t\t# X COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t0\n\t\tCAF\tONE\t\t# Y COMP\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t1\n\t\tTC\tLOADLV\n\nALOAD\t\tTC\tREQDATX\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tZERO\t\t# X COMP\n\t\tTC\tPUTCOM\n# Page 427\n\t\tINDEX\tNOUNADD\n\t\tTS\t0\n\t\tTC\tLOADLV\n\nBLOAD\t\tCS\tONE\n\t\tTC\tCOMPTEST\n\t\tCAF\tBIT15\t\t# SET CLPASS FOR PASS0 ONLY\n\t\tTS\tCLPASS\n\t\tTC\tREQDATY\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tONE\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t1\n\t\tTC\tLOADLV\n\nCLOAD\t\tCS\tTWO\n\t\tTC\tCOMPTEST\n\t\tCAF\tBIT15\t\t# SET CLPASS FOR PASS0 ONLY\n\t\tTS\tCLPASS\n\t\tTC\tREQDATZ\n\t\tEXTEND\n\t\tDCA\tLODNNLOC\t# SWITCH BANKS TO NOUN TABLE READING\n\t\tDXCH\tZ\t\t# ROUTINE.\n\t\tCAF\tTWO\n\t\tTC\tPUTCOM\n\t\tINDEX\tNOUNADD\n\t\tTS\t2\n\t\tTC\tLOADLV\n\nLOADLV\t\tCAF\tZERO\n\t\tTS\tDECBRNCH\n\t\tCS\tZERO\n\t\tTS\tLOADSTAT\n\t\tTC\tRELDSP\t\t# RELEASE FOR PRIORITY DISPLAY PROBLEM.\n\t\tCS\tVD1\t\t# TO BLOCK NUMERICAL CHARACTERS AND\n\t\tTS\tDSPCOUNT\t# CLEARS AFTER A COMPLETED LOAD\n\t\tTC\tPOSTJUMP\t# AFTER COMPLETED LOAD, GO TO RECALTST\n\t\tCADR\tRECALTST\t# TO SEE IF THERE IS RECALL FROM ENDIDLE.\n\nVBSP1LD\t\tDEC\t21\t\t# VB21 = ALOAD\nVBSP2LD\t\tDEC\t22\t\t# VB22 = BLOAD\nVBSP3LD\t\tDEC\t23\t\t# VB23 = CLOAD\n\nALLDC/OC\tTS\tDECOUNT\t\t# TESTS THAT DATA WORDS LOADED ARE EITHER\n\t\tCS\tDECBRNCH\t# ALL DEC OR ALL OCT. ALARMS IF NOT.\n\t\tTS\tSR\n# Page 428\n\t\tCS\tSR\n\t\tCS\tSR\t\t# SHIFTED RIGHT 2\n\t\tCCS\tA\t\t# DEC COMP BITS IN LOW 3\n\t\tTCF\t+2\t\t# SOME ONES IN LOW 3\n\t\tTC\tQ\t\t# ALL ZEROS. ALL OCTAL.  OK\n\t\tAD\tDECOUNT\t\t# DEC COMP = 7 FOR 3COMP, =6 FOR 2COMP\n\t\tEXTEND\t\t\t# (BUT IT HAS BEEN DECREMENTED BY CCS)\n\t\tBZF\t+2\t\t# MUST MATCH 6 FOR 3COMP, 5 FOR 2COMP.\n\t\tTC\tALMCYCLE\t# ALARM AND RECYCLE.\nGOQ\t\tTC\tQ\t\t# ALL REQUIRED ARE DEC.  OK\n\nSFRUTNOR\tXCH\tQ\t\t# GETS SF ROUTINE NUMBER FOR NORMAL CASE\n\t\tTS\tEXITEM\t\t# CAN'T USE L FOR RETURN. TSTFORDP USES L.\n\t\tCAF\tMID5\n\t\tMASK \tNNTYPTEM\n\t\tTC\tRIGHT5\n\t\tTC\tEXITEM\t\t# SF ROUTINE NUMBER IN A\n\nSFRUTMIX\tXCH\tQ\t\t# GETS SF ROUTINE NUMBER FOR MIXED CASE\n\t\tTS\tEXITEM\n\t\tINDEX\tDECOUNT\n\t\tCAF\tDISPLACE\t# PUT TC GOQ, TC RIGHT5, OR TC LEFT5 IN L\n\t\tTS\tL\n\t\tINDEX\tDECOUNT\n\t\tCAF\tLOW5\t\t# LOW5, MID5, OR HI5 IN A\n\t\tMASK\tRUTMXTEM\t# GET HI5, MID5, OR LOW5 OF RUTMXTAB ENTRY\n\t\tINDEX\tL\n\t\tTC\t0\n\n# DO TC GOQ(DECOUNT=0), DO TC RIGHT5(DECOUNT=1), DO TC LEFT5(DECOUNT=2).\nSFRET1\t\tTC\tEXITEM\t\t# SF ROUTINE NUMBER IN A\n\nSFCONUM\t\tXCH\tQ\t\t# GETS 2X(SF CONSTANT NUMBER)\n\t\tTS\tEXITEM\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tCONUMNOR\t# NORMAL NOUN\n\t\tINDEX\tDECOUNT\t\t# MIXED NOUN\n\t\tCAF\tDISPLACE\n\t\tTS\tL\t\t# PUT TC GOQ, TC RIGHT5, OR TC LEFT5 IN L\n\t\tINDEX\tDECOUNT\n\t\tCAF\tLOW5\n\t\tMASK\tNNTYPTEM\n\t\tINDEX\tL\n\t\tTC\t0\n\n# DO TC GOQ(DECOUNT=0), DO TC RIGHT5(DECOUNT=1), DO TC LEFT5(DECOUNT=2).\nSFRET\t\tDOUBLE\t\t\t# 2X(SF CONSTANT NUMBER) IN A\n\t\tTC\tEXITEM\n\nDISPLACE\tTC\tGOQ\n# Page 429\n\t\tTC\tRIGHT5\n\t\tTC\tLEFT5\n\nCONUMNOR\tCAF\tLOW5\t\t# NORMAL NOUN ALWAYS GETS LOW5 OF\n\t\tMASK\tNNTYPTEM\t# NNTYPTAB FOR SF CONUM.\n\t\tDOUBLE\n\t\tTC\tEXITEM\t\t# 2X(SF CONSTANT NUMBER) IN A\n\nPUTCOM\t\tTS\tDECOUNT\n\t\tXCH\tQ\n\t\tTS\tDECRET\n\t\tCAF\tZERO\n\t\tTS\tMPAC+6\n\t\tINDEX\tDECOUNT\n\t\tXCH\tXREGLP\n\t\tTS\tMPAC +1\n\t\tINDEX\tDECOUNT\n\t\tXCH\tXREG\n\t\tTS\tMPAC\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tPUTNORM\t\t# NORMAL NOUN\n# IF MIXNOUN, PLACE ADDRESS FOR COMPONENT K INTO NOUNADD, SET EBANK BITS.\n\t\tINDEX\tDECOUNT\t\t# GET IDADDTAB ENTRY FOR COMPONENT K\n\t\tCA\tIDAD1TEM\t#\tOF NOUN.\n\t\tMASK\tLOW11\t\t# (ECADR)SUBK FOR CURRENT COMP OF NOUN\n\t\tTC\tSETNCADR\t# ECADR INTO NOUNCADR. SETS EB, NOUNADD.\n\t\tEXTEND\t\t\t# C(NOUNADD) IN A UPON RETURN\n\t\tSU\tDECOUNT\t\t# PLACE (ESUBK)-K INTO NOUNADD\n\t\tTS\tNOUNADD\n\t\tCCS\tDECBRNCH\n\t\tTC\tPUTDECSF\t# + DEC\n\t\tTC\tDCTSTCYC\t# +0 OCTAL\n\t\tTC\tSFRUTMIX\t# TEST IF DEC ONLY BIT = 1. IF SO,\n\t\tTC\tDPTEST\t\t# ALARM AND RECYCLE. IF NOT, CONTINUE.\n\t\tTC\tPUTCOM2\t\t# NO DP\n\t\t\t\t\t# TEST FOR DP SCALE FOR OCT LOAD. IF SO,\n\t\t\t\t\t# +0 INTO MAJOR PART. SET NOUNADD FOR\n\t\t\t\t\t# LOADING OCTAL WORD INTO MINOR PART.\nPUTDPCOM\tINCR\tNOUNADD\t\t# DP (ESUBK)-K+1  OR  E+1\n\t\tCA\tNOUNADD\t\t# NOUNADD NOW SET FOR MINOR PART\n\t\tADS\tDECOUNT\t\t# (ESUBK)+1  OR  E+1  INTO DECOUNT\n\t\tCAF\tZERO\t\t# NOUNADD SET FOR MINOR PART\n\t\tINDEX\tDECOUNT\n\t\tTS\t0 -1\t\t# ZERO MAJOR PART(ESUBK OR E)\n\t\tTC\tPUTCOM2\n\nPUTNORM\t\tTC\tSETNADD\t\t# ECADR FROM NOUNCADR. SETS EB, NOUNADD.\n\t\tCCS\tDECBRNCH\n# Page 430\n\t\tTC\tPUTDECSF\t# + DEC\n\t\tTC\tDCTSTCYC\t# +0 OCTAL\n\t\tTC\tSFRUTNOR\t# TEST IF DEC ONLY BIT =1. IF SO,\n\t\tTC\tDPTEST\t\t# ALARM AND RECYCLE. IF NOT, CONTINUE.\n\t\tTC\tPUTCOM2 -4\t# NO DP\n\t\tCAF\tZERO\t\t# DP\n\t\tTS\tDECOUNT\n\t\tTC\tPUTDPCOM\n\n\t\tCA\tNNADTEM\n\t\tAD\tONE\t\t# IF NNADTEM = -1, CHANNEL TO BE SPECIFIED\n\t\tEXTEND\n\t\tBZF\tCHANLOAD\nPUTCOM2\t\tXCH\tMPAC\n\t\tTC\tDECRET\n\n\t\tEBANK=\tDSPCOUNT\nGTSFINLC\t2CADR\tGTSFIN\n\nCHANLOAD\tCS\tSEVEN\t\t# DONT LOAD CHAN 7. (IT = SUPERBANK).\n\t\tAD\tNOUNCADR\n\t\tEXTEND\n\t\tBZF\tLOADLV\n\t\tCA\tNOUNCADR\n\t\tMASK\tLOW9\n\t\tXCH\tMPAC\n\t\tEXTEND\n\t\tINDEX\tMPAC\n\t\tWRITE\t0\n\t\tTC\tLOADLV\n\n# PUTDECSF FINDS MIXBR AND DECOUNT STILL SET FROM PUTCOM\n\nPUTDECSF\tTC\tSFCONUM\t\t# 2X(SF CON NUMB) IN A\n\t\tTS\tSFTEMP1\n\t\tEXTEND\t\t\t# SWITCH BANKS TO SF CONSTANT TABLE\n\t\tDCA\tGTSFINLC\t# READING ROUTINE.\n\t\tDXCH\tZ\t\t# LOADS SFTEMP1, SFTEMP2.\n\t\tINDEX\tMIXBR\n\t\tTC\t+0\n\t\tTC\tPUTSFNOR\n\t\tTC\tSFRUTMIX\n\t\tTC\tPUTDCSF2\nPUTSFNOR\tTC\tSFRUTNOR\n\nPUTDCSF2\tINDEX\tA\n\t\tCAF\tSFINTABR\n# Page 431\n\t\tTC\tBANKJUMP\t# SWITCH BANKS FOR EXPANSION ROOM\nSFINTABR\tCADR\tGOALMCYC\t# ALARM AND RECYCLE IF DEC LOAD\n\t\t\t\t\t# WITH OCTAL ONLY NOUN.\n\t\tCADR\tBINROUND\n\t\tCADR\tDEGINSF\n\t\tCADR\tARTHINSF\n\t\tCADR\tDPINSF\n\t\tCADR\tDPINSF2\n\t\tCADR\tDSPALARM\t# LRPOSOUT CANT BE LOADED.\n\t\tCADR\tDPINSF\t\t# SAME AS ARITHDP1\n\t\tCADR\tHMSIN\n\t\tCADR\tDSPALARM\t# MIN/SEC CANT BE LOADED.\n\t\tCADR\tDPINSF4\n\t\tCADR\tARTIN1SF\n\t\tCADR\tDSPALARM\t# 2INTOUT CANT BE LOADED.\n\t\tCADR\tDEGINSF\t\t# TESTS AT END FOR 360-CDU\nENDRUTIN\tEQUALS\n\n# SCALE FACTORS FOR THOSE ROUTINES NEEDING THEM ARE AVAILABLE IN SFTEMP1.\n# ALL SFIN ROUTINES USE MPAC MPAC+1. LEAVE RESULT IN A. END WITH TC DECRET.\n\n\t\tSETLOC\tENDDPDEC +1\n\n\t\tCOUNT*\t$$/PIN\n# DEGINSF APPLIES 1000/180 = 5.55555(10) = 5.43434(8)\n\nDEGINSF\t\tTC\tDMP\t\t# SF ROUTINE FOR DEC DEGREES\n\t\tADRES\tDEGCON1\t\t# MULT BY 5.5 5(10)X2EXP-3\n\t\tCCS\tMPAC +1\t\t# THIS ROUNDS OFF MPAC+1 BEFORE SHIFT\n\t\tCAF\tBIT11\t\t# LEFT 3, AND CAUSES 360.00 TO OF/UF\n\t\tTC\t+2\t\t# WHEN SHIFTED LEFT AND ALARM.\n\t\tCS\tBIT11\n\t\tAD\tMPAC +1\n\t\tTC\t2ROUND +2\n\t\tTC\tTPSL1\t\t# LEFT 1\nDEGINSF2\tTC\tTPSL1\t\t# LEFT 2\n\t\tTC\tTESTOFUF\n\t\tTC\tTPSL1\t\t# RETURNS IF NO OF/UF (LEFT3)\n\t\tCCS\tMPAC\n\t\tTC\tSIGNFIX\t\t# IF +, GO TO SIGNFIX\n\t\tTC\tSIGNFIX\t\t# IF +0, GO TO SIGNFIX\n\t\tCOM\t\t\t# IF -, USE -MAGNITUDE +1\n\t\tTS\tMPAC\t\t# IF -0, USE +0\nSIGNFIX\t\tCCS\tMPAC+6\n\t\tTC\tSGNTO1\t\t# IF OVERFLOW\n\t\tTC\tENDSCALE\t# NO OVERFLOW/UNDERFLOW\n\t\tCCS\tMPAC\t\t# IF UF FORCE SIGN TO 0 EXCEPT -180\n\t\tTC\tCCSHOLE\n# Page 432\n\t\tTC\tNEG180\n\t\tTC\t+1\n\t\tXCH\tMPAC\n\t\tMASK\tPOSMAX\n\t\tTS\tMPAC\nENDSCALE\tINDEX\tMIXBR\t\t# IF ROUTINE NO. IS NOT CDU DEGREES,\n\t\tTC\t+0\t\t# THEN THIS IS 360 - CDU DEGREES\n\t\tTC\t+3\t\t# AND ANGLE IN MPAC MUST BE REPLACED\n\t\tTC\tSFMIXCAL\t# BY 360 DEGREES MINUS ITSELF.\nMIXBACK\t\tTC\t+2\n\t\tTC\tSFNORCAL\nNORBACK\t\tCS\tA\n\t\tAD\tBIT2\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\t360-CDU\nENDSCAL1\tTC\tPOSTJUMP\n\t\tCADR\tPUTCOM2\n\nSFMIXCAL\tTC\tBANKCALL\n\t\tCADR\tSFRUTMIX\n\t\tTC\tMIXBACK\n\nSFNORCAL\tTC\tBANKCALL\n\t\tCADR\tSFRUTNOR\n\t\tTC\tNORBACK\n\nNEG180\t\tCS\tPOSMAX\n\t\tTC\tENDSCALE -1\n\nSGNTO1\t\tCS\tMPAC\t\t# IF OF FORCE SIGN TO 1\n\t\tMASK\tPOSMAX\n\t\tCS\tA\n\t\tTC\tENDSCALE -1\n\nDEGCON1\t\t2DEC\t5.555555555 B-3\n\nARTHINSF\tTC\tDMP\t\t# SCALES MPAC, +1 BY SFTEMP1, SFTEMP2.\n\t\tADRES\tSFTEMP1\t\t# ASSUMES POINT BETWEEN HI AND LO PARTS\n\t\tXCH\tMPAC +2\t\t# OF SFCON. SHIFTS RESULTS LEFT BY 14.\n\t\tXCH\tMPAC +1\t\t# (BY TAKING RESULTS FROM MPAC+1, MPAC+2)\n\t\tXCH\tMPAC\n\t\tEXTEND\n\t\tBZF\tBINROUND\n\t\tTC\tALMCYCLE\t# TOO LARGE A LOAD. ALARM AND RECYCLE.\nBINROUND\tTC\t2ROUND\n\t\tTC\tTESTOFUF\n\t\tTC\tENDSCAL1\t# RETURNS IF NO OF/UF\n\n# Page 433\nARTIN1SF\tTC\tDMP\t\t# SCALES MPAC, +1 BY SFTEMP1, SFTEMP2.\n\t\tADRES\tSFTEMP1\t\t# ROUNDS MPAC+1 INTO MPAC.\n\t\tTC\tBINROUND\n\nDPINSF\t\tTC\tDMP\t\t# SCALES MPAC, MPAC +1 BY SFTEMP1,\n\t\tADRES\tSFTEMP1\t\t# SFTEMP.  STORES LOW PART OF RESULT\n\t\tXCH\tMPAC +2\t\t# IN (E SUBK) +1 OR E+1\n\t\tDOUBLE\n\t\tTS\tMPAC +2\n\t\tCAF\tZERO\n\t\tAD\tMPAC +1\n\t\tTC\t2ROUND +2\n\t\tTC\tTESTOFUF\n\t\tINDEX\tMIXBR\t\t# RETURNS IF NO OF/UF\n\t\tTC\t+0\n\t\tTC\tDPINORM\n\t\tCA\tDECOUNT\t\t# MIXED NOUN\nDPINCOM\t\tAD\tNOUNADD\t\t#\tMIXED\t\tNORMAL\n\t\tTS\tQ\t\t#\tE SUBK\t\tE\n\t\tXCH\tMPAC +1\n\t\tINDEX\tQ\n\t\tTS\t1\t\t# PLACE LOW PART IN\n\t\tTC\tENDSCAL1\t# (E SUBK) +1\tMIXED\n\nDPINORM\t\tCAF\tZERO\t\t# E +1\t\tNORMAL\n\t\tTC\tDPINCOM\n\nDPINSF2\t\tTC\tDMP\t\t# ASSUMES POINT BETWEEN BITS 7-8 OF HIGH\n\t\tADRES\tSFTEMP1\t\t# PART OF SF CONST. DPINSF2 SHIFTS RESULTS\n\t\tCAF\tSIX\t\t# LEFT BY 7, ROUNDS MPAC+2 INTO MPAC+1\n\t\tTC\tTPLEFTN\t\t# SHIFT LEFT 7.\n\t\tTC\tDPINSF +2\n\nDPINSF4\t\tTC\tDMP\t\t# ASSUMES POINT BETWEEN BITS 11-12 OF HIGH\n\t\tADRES\tSFTEMP1\t\t# PART OF SF CONST. DPINSF2 SHIFTS RESULTS\n\t\tCAF\tTWO\t\t# LEFT BY 3, ROUNDS MPAC+2 INTO MPAC+1.\n\t\tTC\tTPLEFTN\t\t# SHIFT LEFT 3.\n\t\tTC\tDPINSF +2\n\nTPLEFTN\t\tXCH\tQ\t\t# SHIFTS MPAC, +1, +2 LEFT N. SETS OVFIND\n\t\tTS\tSFTEMP2\t\t# TO +1 FOR OF, -1 FOR UF.\n\t\tXCH\tQ\t\t# CALL WITH N-1 IN A.\nLEFTNCOM\tTS\tSFTEMP1\t\t#\tLOOP TIME .37 MSEC.\n\t\tTC\tTPSL1\n\t\tCCS\tSFTEMP1\n\t\tTC\tLEFTNCOM\n# Page 434\n\t\tTC\tSFTEMP2\n\n2ROUND\t\tXCH\tMPAC\t +1\n\t\tDOUBLE\n\t\tTS\tMPAC \t+1\n\t\tTC\tQ\t\t# IF MPAC+1 DOES NOT OF/UF\n\t\tAD\tMPAC\n\t\tTS\tMPAC\n\t\tTC\tQ\t\t# IF MPAC DOES NOT OF/UF\n\t\tTS\tMPAC+6\n2RNDEND\t\tTC\tQ\n\nTESTOFUF\tCCS\tMPAC+6\t\t# RETURNS IF NO OF/UF\n\t\tTC\tALMCYCLE\t# OF\tALARM AND RECYCLE.\n\t\tTC\tQ\n\t\tTC\tALMCYCLE\t# UF\tALARM AND RECYCLE.\n\n\t\tSETLOC\tENDSPMIN +1\n\n\t\tCOUNT*\t$$/PIN\nHMSIN\t\tTC\tALL3DEC\t\t# IF ALL 3 WORDS WERE NOT LOADED, ALARM.\n\t\tTC\tDMP\t\t# XREG, XREGLP (=HOURS) WERE ALREADY PUT\n\t\tADRES\tWHOLECON\t# INTO MPAC, MPAC+1.\n\t\tTC\tRND/TST\t\t# ROUND OFF TO WHOLE HRS IN MPAC+1.\n\t\tCAF\tZERO\t\t# ALARM IF MPAC NON ZERO (G/ 16383).\n\t\tTS\tMPAC\t+2\n\t\tCAF\tHRCON\n\t\tTS\tMPAC\n\t\tCAF\tHRCON\t+1\n\t\tXCH\tMPAC\t+1\n\t\tTC\tSHORTMP\n\t\tTC\tMPACTST\t\t# ALARM IF MPAC NON ZERO (G/ 745)\n\t\tDXCH\tMPAC\t+1\t# STORE HOURS CONTRIBUTION\n\t\tDXCH\tHITEMIN\n\t\tCA\tYREG\t\t# PUT YREG, YREGLP INTO MPAC, +1.\n\t\tLXCH\tYREGLP\n\t\tDXCH\tMPAC\n\t\tTC\tDMP\n\t\tADRES\tWHOLECON\n\t\tTC\tRND/TST\t\t# ROUND OFF TO WHOLE MIN IN MPAC+1\n\t\tCS\t59MIN\t\t# ALARM IF MPAC NON ZERO (G/16383)\n\t\tTC\tSIZETST\t\t# ALARM IF MPAC+1 G/ 59MIN\n\t\tXCH\tMPAC \t+1\n\t\tEXTEND\n\t\tMP\tMINCON\t\t# LEAVES MINUTES CONTRIBUTION IN A,L\n\t\tDAS\tHITEMIN\t\t# ADD IN MINUTES CONTRIBUTION\n\t\tEXTEND\t\t\t# IF THIS DAS OVEFLOWS, G/ 745 HR, 39MIN\n# Page 435\n\t\tBZF\t+2\n\t\tTC\tALMCYCLE\n\t\tCA\tZREG\t\t# PUT ZREG, ZREGLP INTO MPAC, +1.\n\t\tLXCH\tZREGLP\n\t\tDXCH\tMPAC\n\t\tTC\tDMP\n\t\tADRES\tWHOLECON\n\t\tTC\tRND/TST\t\t# ROUND OFF TO WHOLE CENTI-SEC IN MPAC+1\n\t\tCS\t59.99SEC\t# ALARM IF MPAC NON ZERO (G/163.83 SEC)\n\t\tTC\tSIZETST\t\t# ALARM IF MPAC+1 G/59.99 SEC\n\t\tDXCH\tHITEMIN\t\t# ADD IN SECONDS CONTRIBUTION\n\t\tDAS\tMPAC\t\t# IF THIS DAS OVERFLOWS,\n\t\tEXTEND\t\t\t# G/ 745 HR, 39 MIN, 14.59 SEC.\n\t\tBZF\t+2\n\t\tTC\tALMCYCLE\t# ALARM AND RECYCLE\n\t\tCAF\tZERO\n\t\tTS\tMPAC +2\n\t\tTC\tTPAGREE\n\t\tDXCH\tMPAC\n\t\tINDEX\tNOUNADD\n\t\tDXCH\t0\n\t\tTC\tPOSTJUMP\n\t\tCADR\tLOADLV\n\nWHOLECON\tOCT\t00006\t\t# (10EXP5/2EXP14)2EXP14\n\t\tOCT\t03240\nHRCON\t\tOCT\t00025\t\t# 1 HOUR IN CENTI-SEC\n\t\tOCT\t37100\nMINCON\t\tOCT\t13560\t\t# 1 MINUTE IN CENTI-SEC\n59MIN\t\tOCT\t00073\t\t# 59 AS WHOLE\n59.99SEC\tOCT\t13557\t\t# 5999 CENTI-SEC\n\nRND/TST\t\tXCH\tMPAC +2\t\t# ROUNDS MPAC+2 INTO MPAC+1.\n\t\tDOUBLE\t\t\t# ALARMS IF MPAC NOT 0\n\t\tTS\tMPAC +2\n\t\tCAF\tZERO\n\t\tAD\tMPAC +1\n\t\tTS\tMPAC +1\n\t\tCAF\tZERO\n\t\tAD\tMPAC\t\t# CANT OVFLOW\n\t\tXCH\tMPAC\nMPACTST\t\tCCS\tMPAC\t\t# ALARM IF MPAC NON ZERO\n\t\tTC\tALMCYCLE\t# ALARM AND RECYCLE.\n\t\tTC\tQ\n\t\tTC\tALMCYCLE\t# ALARM AND RECYCLE.\n\t\tTC\tQ\n\nSIZETST\t\tTS\tMPAC +2\t\t# CALLED WITH - CON IN A\n\t\tCCS\tMPAC +1\t\t# GET MAG OF MPAC+1\n# Page 436\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tAD\tONE\n\t\tAD\tMPAC +2\n\t\tEXTEND\t\t\t# MAG OF MPAC+1 - CON\n\t\tBZMF\t+2\n\t\tTC\tALMCYCLE\t# MAG OF MPAC+1 G/ CON. ALARM AND RECYCLE.\n\t\tTC\tQ\t\t# MAG OF MPAC+1 L/= CON\n\n# ALL3DEC TESTS THAT ALL 3 WORDS ARE LOADED IN DEC (FOR HMSIN).\n# ALARM IF NOT. (TEST THAT BITS 3,4,5 OF DECBRNCH ARE ALL = 1).\n\nALL3DEC\t\tCS\tOCT34BAR\t# GET BITS 3,4,5 IN A\n\t\tMASK\tDECBRNCH\t# GET BITS 3,4,5 OF DECBRNCH IN A\n\t\tAD\tOCT34BAR\t# BITS 3,4,5 OF DECBRNCH MUST ALL = 1\n\t\tCCS\tA\n\t\tTC\tFORCEV25\nOCT34BAR\tOCT\t77743\n\t\tTC\tFORCEV25\n\t\tTC\tQ\n\nFORCEV25\tCS\tOCT31\t\t# FORCE VERB 25 TO BE EXECUTED BY RECYCLE\n\t\tTS\tVERBSAVE\t# IN CASE OPERATOR EXECUTED A LOWER LOAD\n\t\tTC\tALMCYCLE\t# VERB.  ALARM AND RECYCLE.\nENDHMSS\t\tEQUALS\n\n# Page 437\n# MONITOR ALLOWS OTHER KEYBOARD ACTIVITY. IT IS ENDED BY VERB TERMINATE,\n# VERB PROCEED WITHOUT DATA, VERB RESEQUENCE,\n# ANOTHER MONITOR, OR ANY NVSUB CALL THAT PASSES THE DSPLOCK (PROVIDED\n# THAT THE OPERATOR HAS SOMEHOW ALLOWED THE ENDING OF A MONITOR WHICH\n# HE HAS INITIATED THROUGH THE KEYBOARD).\n#\n# MONITOR ACTION IS SUSPENDED, BUT NOT ENDED, BY ANY KEYBOARD ACTION,\n# EXCEPT ERROR LIGHT RESET. IT BEGINS AGAIN WHEN KEY RELEASE IS PERFORMED.\n# MONITOR SAVES THE NOUN AND APPROPRIATE DISPLAY VERB IN MONSAVE. IT SAVES\n# NOUNCADR IN MONSAVE1, IF NOUN = MACHINE CADR TO BE SPECIFIED. BIT 15 OF\n# MONSAVE1 IS THE KILL MONITOR SIGNAL (KILLER BIT). BIT 14 OF MONSAVE1\n# INDICATES THE CURRENT MONITOR WAS EXTERNALLY INITIATED (EXTERNAL\n# MONITOR BIT). IT IS TURNED OFF BY RELDSP AND KILMONON.\n#\n# MONSAVE INDICATES IF MONITOR IS ON (+=ON, +0=OFF)\n# IF MONSAVE IS +, MONITOR ENTERS NO REQUEST, BUT TURNS KILLER BIT OFF.\n# IF MONSAVE IS +0, MONITOR ENTERS REQUEST AND TURNS KILLER BIT OFF.\n#\n# NVSUB (IF EXTERNAL MONITOR BIT IS OFF), VB=PROCEED WITHOUT DATA,\n# VB=RESEQUENCE, AND VB=TERMINATE TURN KILL MONITOR BIT ON.\n#\n# IF KILLER BIT IS ON, MONREQ ENTERS NO FURTHER REQUESTS, ZEROS MONSAVE\n# AND MONSAVE1 (TURNING OFF KILLER BIT AND EXTERNAL MONITOR BIT).\n#\n# MONITOR DOESNT TEST FOR MATBS SINCE NVSUB CAN HANDLE INTERNAL MATBS NOW.\n\n\t\tSETLOC\tENDRUTIN\n\n\t\tCOUNT*\t$$/PIN\nMONITOR\t\tCS\tBIT15/14\n\t\tMASK\tNOUNCADR\nMONIT1\t\tTS\tMPAC +1\t\t# TEMP STORAGE\n\t\tCS\tENTEXIT\n\t\tAD\tENDINST\n\t\tCCS\tA\n\t\tTC\tMONIT2\nBIT15/14\tOCT\t60000\n\t\tTC\tMONIT2\n\t\tCAF\tBIT14\t\t# EXTERNALLY INITIATED MONITOR.\n\t\tADS\tMPAC +1\t\t# SET BIT 14 FOR MONSAVE1.\n\t\tCAF\tZERO\n\t\tTS\tMONSAVE2\t# ZERO NVMONOPT OPTIONS\nMONIT2\t\tCAF\tLOW7\n\t\tMASK\tVERBREG\n\t\tTC\tLEFT5\n\t\tTS\tCYL\n\t\tCS\tCYL\n\t\tXCH\tCYL\n\t\tAD\tNOUNREG\n\t\tTS\tMPAC\t\t# TEMP STORAGE\n\t\tCAF\tZERO\n# Page 438\n\t\tTS\tDSPLOCK\t\t# +0 INTO DSPLOCK SO MONITOR CAN RUN.\n\t\tCCS\tCADRSTOR\t# TURN OFF KR LITE IF CADRSTOR AND DSPLIST\n\t\tTC\t+2\t\t# ARE BOTH EMPTY. (LITE COMES ON IF NEW\n\t\tTC\tRELDSP1\t\t# MONITOR IS KEYED IN OVER OLD MONITOR.)\n\t\tINHINT\n\t\tCCS\tMONSAVE\n\t\tTC\t+5\t\t# IF MONSAVE WAS +, NO REQUEST\n\t\tCAF\tONE\t\t# IF MONSAVE WAS 0, REQUEST MONREQ\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tMONREQ\n\n\t\tDXCH\tMPAC\t\t# PLACE MONITOR VERB AND NOUN INTO MONSAVE\n\t\tDXCH\tMONSAVE\t\t# ZERO THE KILL MONITOR BIT\n\t\tRELINT\t\t\t# SET UP EXTERNAL MONITOR BIT\n\t\tTC\tENTRET\n\nMONREQ\t\tTC\tLODSAMPT\t# CALLED BY WAITLIST\n\t\tCCS\tMONSAVE1\t# TIME IS SNATCHED N RUPT FOR NOUN 65\n\t\tTC\t+4\t\t# IF KILLER BIT = 0, ENTER REQUESTS\n\t\tTC\t+3\t\t# IF KILLER BIT = 0, ENTER REQUESTS\n\t\tTC\tKILLMON\t\t# IF KILLER BIT = 1, NO REQUESTS.\n\t\tTC\tKILLMON\t\t# IF KILLER BIT = 1, NO REQUESTS.\n\t\tCAF\tMONDEL\n\t\tTC\tWAITLIST\t# ENTER WAITLIST REQUEST FOR MONREQ\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tMONREQ\n\n\t\tCAF\tCHRPRIO\n\t\tTC\tNOVAC\t\t# ENTER EXEC REQUEST FOR MONDO\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tMONDO\n\n\t\tTC\tTASKOVER\n\nKILLMON\t\tCAF\tZERO\t\t# ZERO MONSAVE AND TURN KILLER BIT OFF\n\t\tTS\tMONSAVE\n\t\tTS\tMONSAVE1\t# TURN OFF KILL MONITOR BIT.\n\t\tTC\tTASKOVER\t# TURN OFF EXTERNAL MONITOR BIT.\nMONDEL\t\tOCT\t144\t\t# FOR 1 SEC MONITOR INTERVALS\n\nMONDO\t\tCCS\tMONSAVE1\t# CALLED BY EXEC\n\t\tTC\t+4\t\t# IF KILLER BIT = 0, CONTINUE\n\t\tTC\t+3\t\t# IF KILLER BIT = 0, CONTINUE\n\t\tTC\tENDOFJOB\t# IN CASE TERMINATE CAME SINCE LAST MONREQ\n\t\tTC\tENDOFJOB\t# IN CASE TERMINATE CAME SINCE LAST MONREQ\n\t\tCCS\tDSPLOCK\n\t\tTC\tMONBUSY\t\t# NVSUB IS BUSY\n# Page 439\n\t\tCAF\tLOW7\n\t\tMASK\tMONSAVE\n\t\tTC\tUPDATNN -1\t# PLACE NOUN INTO NOUNREG AND DISPLAY IT\n\t\tCAF\tMID7\n\t\tMASK\tMONSAVE\t\t# CHANGE MONITOR VERB TO DISPLAY VERB\n\t\tAD\tMONREF\t\t# -DEC10, STARTING IN BIT8\n\t\tTS\tEDOP\t\t# RIGHT 7\n\t\tCA\tEDOP\n\t\tTS\tVERBREG\n\t\tCAF\tMONBACK\t\t# SET RETURN TO PASTEVB AFTER DATA DISPLAY\n\t\tTS\tENTRET\n\t\tCS\tBIT15/14\n\t\tMASK\tMONSAVE1\t# PUT ECADR INTO MPAC +2.  INTMCTBS WILL\n\t\tTS\tMPAC +2\t\t# DISPLAY IT AND SET NOUNCADR, NOUNADD,\nENDMONDO\tTC\tTESTNN\t\t# EBANK.\n\n\t\tBLOCK\t2\n\n\t\tSETLOC\tFFTAG8\n\t\tBANK\n\n\t\tCOUNT*\t$$/PIN\nPASTEVB\t\tCAF\tMID7\n\t\tMASK\tMONSAVE2\t# NVMONOPT PASTE OPTION\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tPASTEOPT\t# PASTE PLEASE VERB FOR NVMONOPT\n\t\tCA\tMONSAVE\t\t# PASTE MONITOR VERB - PASTE OPTION IS 0\nPASTEOPT\tTS\tEDOP\t\t# RIGHT 7\n\t\tCA\tEDOP\t\t# PLACE MONITOR VERB OR PLEASE VERB INTO\n\t\tTC\tBANKCALL\t#  VERBREG AND DISPLAY IT.\n\t\tCADR\tUPDATVB -1\n\t\tCAF\tZERO\t\t# ZERO REQRET SO THAT PASTED VERBS CAN\n\t\tTS\tREQRET\t\t#  BE EXECUTED BY OPERATOR.\n\t\tCA\tMONSAVE2\n\t\tTC\tBLANKSUB\t# PROCESS NVMONOPT BLANK OPTION IF ANY\n\t\tTC\t+1\nENDPASTE\tTC\tENDOFJOB\n\nMID7\t\tOCT\t37600\n\n\t\tSETLOC\tENDMONDO +1\n\t\tCOUNT*\t$$/PIN\nMONREF\t\tOCT\t75377\t\t# -DEC10, STARTING IN BIT8\nMONBACK\t\tADRES\tPASTEVB\n\nMONBUSY\t\tTC\tRELDSPON\t# TURN KEY RELEASE LIGHT\n\t\tTC\tENDOFJOB\n# Page 440\n# DSPFMEM IS USED TO DISPLAY (IN OCTAL) ANY FIXED REGISTER.\n# IT IS USED WITH NOUN = MACHINE CADR TO BE SPECIFIED. THE FCADR OF THE\n# DESIRED LOCATION IS THEN PUNCHED IN. IT HANDLES F/F (FCADR 4000-7777)\n#\n# FOR BANKS L/E 27, THIS IS ENOUGH.\n#\n# FOR BANKS G/E 30, THE THIRD COMPONENT OF NOUN 26 (PRIO, ADRES, BBCON)\n# MUST BE PRELOADED WITH THE DESIRED SUPERBANK BITS (BITS 5,6,7).\n#\tV23N26 SHOULD BE USED.\n#\n# SUMMARY\n# FOR BANKS L/E 27,\t\t\t\tV27N01E(FCADR)E\n# FOR BANKS G/E 30, \tV23N26E(SUPERBITS)E\tV27N01E(FCADR)E\n\nDSPFMEM\t\tCAF\tR1D1\t\t# IF F/F, DATACALL USES BANK 02 OR 03.\n\t\tTS\tDSPCOUNT\n\t\tCA\tDSPTEM1 +2\t# SUPERBANK BITS WERE PRELOADED INTO\n\t\tTS\tL\t\t# 3RD COMPONENT OF NOUN 26.\n\t\tCA\tNOUNCADR\t# ORIGINAL FCADR LOADED STILL IN NOUNCADR.\n\t\tTC\tSUPDACAL\t# CALL WITH FCADR IN A, SUPERBITS IN L.\n\t\tTC\tDSPOCTWO\nENDSPF\t\tTC\tENDOFJOB\n\n# Page 441\n# WORD DISPLAY ROUTINES\n\t\tSETLOC\tTESTOFUF +4\n\t\tCOUNT*\t$$/PIN\nDSPSIGN\t\tXCH\tQ\n\t\tTS\tDSPWDRET\n\t\tCCS\tMPAC\n\t\tTC\t+8D\n\t\tTC\t+7\n\t\tAD\tONE\n\t\tTS\tMPAC\n\t\tTC\t-ON\n\t\tCS\tMPAC +1\n\t\tTS\tMPAC +1\n\t\tTC\tDSPWDRET\n\t\tTC\t+ON\n\t\tTC\tDSPWDRET\n\nDSPRND\t\tEXTEND\t\t\t# ROUND BY 5 EXP-6\n\t\tDCA\tDECROUND -1\n\t\tDAS\tMPAC\n\t\tEXTEND\n\t\tBZF\t+4\n\t\tEXTEND\n\t\tDCA\tDPOSMAX\n\t\tDXCH\tMPAC\n\t\tTC\tQ\n\n# DSPDECWD CONVERTS C(MPAC, MPAC+1) INTO A SIGN AND 5 CHAR DECIMAL\n# STARTING IN LOC SPECIFIED IN DSPCOUNT. IT ROUNDS BY 5 EXP-6.\n\nDSPDECWD\tXCH\tQ\n\t\tTS\tWDRET\n\t\tTC\tDSPSIGN\n\t\tTC\tDSPRND\n\t\tCAF\tFOUR\nDSPDCWD1\tTS\tWDCNT\n\t\tCAF\tBINCON\n\t\tTC\tSHORTMP\nTRACE1\t\tINDEX\tMPAC\n\t\tCAF\tRELTAB\n\t\tMASK\tLOW5\n\t\tTS\tCODE\n\t\tCAF\tZERO\n\t\tXCH\tMPAC +2\n\t\tXCH\tMPAC +1\n\t\tTS\tMPAC\n\t\tXCH\tDSPCOUNT\nTRACE1S\t\tTS\tCOUNT\n\t\tCCS\tA\t\t# DECREMENT DSPCOUNT EXCEPT AT +0\n# Page 442\n\t\tTS\tDSPCOUNT\n\t\tTC\tDSPIN\n\t\tCCS\tWDCNT\n\t\tTC\tDSPDCWD1\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tWDRET\n\n\t\tOCT\t00000\nDECROUND\tOCT\t02476\n\n# DSPDECNR CONVERTS C(MPAC,MPAC+1) INTO A SIGN AND 5 CHAR DECIMAL\n# STARTING IN LOC SPECIFIED IN DSPCOUNT. IT DOES NOT ROUND\n\nDSPDECNR\tXCH\tQ\n\t\tTS\tWDRET\n\t\tTC\tDSPSIGN\n\t\tTC\tDSPDCWD1 -1\n\n# DSPDC2NR CONVERTS C(MPAC,MPAC+1) INTO A SIGN AND 2 CHAR DECIMAL\n# STARTING IN LOC SPECIFIED IN DSPCOUNT. IT DOES NOT ROUND\n\nDSPDC2NR\tXCH\tQ\n\t\tTS\tWDRET\n\t\tTC\tDSPSIGN\n\t\tCAF\tONE\n\t\tTC\tDSPDCWD1\n\n# DSP2DEC CONVERTS C(MPAC) AND C(MPAC+1) INTO A SIGN AND 10 CHAR DECIMAL\n# STARTING IN THE LOC SPECIFIED IN DSPCOUNT.\n\nDSP2DEC\t\tXCH\tQ\n\t\tTS\tWDRET\n\t\tCAF\tZERO\n\t\tTS\tCODE\n\t\tCAF\tTHREE\n\t\tTC\t11DSPIN\t\t# -R2 OFF\n\t\tCAF\tFOUR\n\t\tTC\t11DSPIN\t\t# +R2 OFF\n\t\tTC\tDSPSIGN\n\t\tCAF\tR2D1\nEND2DEC\t\tTC\tDSPDCWD1\n\n# DSPDECVN DISPLAYS C(A) UPON ENTRY AS A 2 CHAR DECIMAL BEGINNING IN THE\n# DSP LOC SPECIFIED IN DSPCOUNT.\n# C(A) SHOULD BE IN FORM N X 2EXP-14.  THIS IS SCALED TO FORM N/100 BEFORE\n# DISPLAY CONVERSION.\n\n# Page 443\nDSPDECVN\tEXTEND\n\t\tMP\tVNDSPCON\t# MULT BY .01\n\t\tLXCH\tMPAC\t\t# TAKE RESULTS FROM L. (MULT BY 2EXP14).\n\t\tCAF\tZERO\n\t\tTS\tMPAC +1\n\t\tXCH\tQ\n\t\tTS\tWDRET\n\t\tTC\tDSPDC2NR +3\t# NO SIGN, NO ROUND, 2 CHAR\n\nVNDSPCON\tOCT\t00244\t\t# .01 ROUNDED UP\n\nGOVNUPDT\tTC\tDSPDECVN\t# THIS IS NOT FOR GENERAL USE. REALLY PART\n\t\tTC\tPOSTJUMP\t# OF UPDATVB.\n\t\tCADR\tUPDAT1 +2\n\nENDECVN\t\tEQUALS\n\n\t\tSETLOC\tENDSPF +1\n\t\tCOUNT*\t$$/PIN\n# DSPOCTWD DISPLAYS C(A) UPON ENTRY AS A 5 CHAR OCT STARTING IN THE DSP\n# CHAR SPECIFIED IN DSPCOUNT. IT STOPS AFTER 5 CHAR HAVE BEEN DISPLAYED.\n\nDSPOCTWO\tTS\tCYL\n\t\tXCH\tQ\n\t\tTS\tWDRET\t\t# MUST USE SAME RETURN AS DSP2BIT.\n\t\tCAF\tBIT14\t\t# TO BLANK SIGNS\n\t\tADS\tDSPCOUNT\n\t\tCAF\tFOUR\nWDAGAIN\t\tTS\tWDCNT\n\t\tCS\tCYL\n\t\tCS\tCYL\n\t\tCS\tCYL\n\t\tCS\tA\n\t\tMASK\tDSPMSK\n\t\tINDEX\tA\n\t\tCAF\tRELTAB\n\t\tMASK\tLOW5\n\t\tTS\tCODE\n\t\tXCH\tDSPCOUNT\n\t\tTS\tCOUNT\n\t\tCCS\tA\t\t# DECREMENT DSPCOUNT EXCEPT AT +0\n\t\tTS\tDSPCOUNT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tDSPOCTIN\nOCTBACK\t\tCCS\tWDCNT\n\t\tTC\tWDAGAIN\t\t# +\nDSPLV\t\tCS\tVD1\t\t# TO BLOCK NUMERICAL CHARACTERS, CLEARS,\n\t\tTS\tDSPCOUNT\t# AND SIGNS AFTER A COMPLETED DISPLAY.\n# Page 444\n\t\tTC\tWDRET\n\nDSPMSK\t\t=\tSEVEN\n\n# DSP2BIT DISPLAYS C(A) UPON ENTRY AS A 2 CHAR OCT BEGINNING IN THE DSP\n# LOC SPECIFIED IN DSPCOUNT BY PRE CYCLING RIGHT C(A) AND USING THE LOGIC\n# OF THE 5 CHAR OCTAL DISPLAY\n\nDSP2BIT\t\tTS\tCYR\n\t\tXCH\tQ\n\t\tTS\tWDRET\n\t\tCAF\tONE\n\t\tTS\tWDCNT\n\t\tCS\tCYR\n\t\tCS\tCYR\n\t\tXCH\tCYR\n\t\tTS\tCYL\n\t\tTC\tWDAGAIN +5\n\n# FOR DSPIN PLACE 0/25 OCT INTO COUNT, 5 BIT RELAY CODE INTO CODE.  BOTH\n# ARE DESTROYED. IF BIT14 OF COUNT IS 1, SIGN IS BLANKED WITH LEFT CHAR.\n# FOR DSPIN1 PLACE 0,1 INTO BIT11 OF CODE, 2 INTO COUNT, REL ADDRESS OF\n# DSPTAB ENTRY INTO DSREL.\n\n\t\tSETLOC\tENDECVN\n\n\t\tCOUNT*\t$$/PIN\nDSPIN\t\tXCH\tQ\t\t# CANT USE L FOR RETURN, SINCE MANYOF THE\n\t\tTS\tDSEXIT\t\t# ROTINE CALLING DSPIN USE L AS RETURN.\n\t\tCAF\tLOW5\n\t\tMASK\tCOUNT\n\t\tTS\tSR\n\t\tXCH\tSR\n\t\tTS\tDSREL\n\t\tCAF\tBIT1\n\t\tMASK\tCOUNT\n\t\tCCS\tA\n\t\tTC\t+2\t\t# LEFT IF COUNT IS ODD\n\t\tTC\tDSPIN1 -1\t# RIGHT IF COUNT IS EVEN\n\t\tXCH\tCODE\n\t\tTC\tSLEFT5\t\t# DOES NOT USE CYL\n\t\tTS\tCODE\n\t\tCAF\tBIT14\n\t\tMASK\tCOUNT\n\t\tCCS\tA\n\t\tCAF\tTWO\t\t# BIT14 = 1, BLANK SIGN\n\t\tAD\tONE\t\t# BIT14 = 0, LEAVE SIGN ALONE\n\t\tTS\tCOUNT\t\t# +0 INTO COUNT FOR RIGHT\n# Page 445\n\t\t\t\t\t# +1 INTO COUNT FOR LEFT (SIGN LEFT ALONE)\n\t\t\t\t\t# +3 INTO COUNT FOR LEFT (TO BLANK SIGN)\nDSPIN1\t\tINHINT\n\t\tINDEX\tDSREL\n\t\tCCS\tDSPTAB\n\t\tTC\t+2\t\t# IF +\n\t\tTC\tCCSHOLE\n\t\tAD\tONE\t\t# IF -\n\t\tTS\tDSMAG\n\t\tINDEX\tCOUNT\n\t\tMASK\tDSMSK\n\t\tEXTEND\n\t\tSU\tCODE\n\t\tEXTEND\n\t\tBZF\tDSLV\t\t# SAME\nDFRNT\t\tINDEX\tCOUNT\n\t\tCS\tDSMSK\t\t# MASK WITH 77740, 76037, 76777, OR 74037\n\t\tMASK\tDSMAG\n\t\tAD\tCODE\n\t\tCS\tA\n\t\tINDEX\tDSREL\n\t\tXCH\tDSPTAB\n\t\tEXTEND\n\t\tBZMF\tDSLV\t\t# DSPTAB ENTRY WAS -\n\t\tINCR\tNOUT\t\t# DSPTAB ENTRY WAS +\nDSLV\t\tRELINT\n\t\tTC\tDSEXIT\n\nDSMSK\t\tOCT\t37\n\t\tOCT\t1740\n\t\tOCT\t2000\n\t\tOCT\t3740\n\n# FOR 11DSPIN, PUT REL ADDRESS OF DSPTAB ENTRY INTO A, 1 IN BIT11 OR 0 IN\n# BIT11 OF CODE.\n\n11DSPIN\t\tTS\tDSREL\n\t\tCAF\tTWO\n\t\tTS\tCOUNT\n\t\tXCH\tQ\t\t# MUST USE SAME RETURN AS DSPIN\n\t\tTS\tDSEXIT\n\t\tTC\tDSPIN1\n\nDSPOCTIN\tTC\tDSPIN\t\t# SO DSPOCTWO DOESNT USE SWCALL\n\t\tCAF\t+2\n\t\tTC\tBANKJUMP\nENDSPOCT\tCADR\tOCTBACK\n\n# Page 446\n# DSPALARM FINDS TC NVSUBEND IN ENTRET FOR NVSUB INITIATED ROUTINES\n# ABORT WITH 01501.\n#\n# DSPALARM FINDS TC ENDOFJOB IN ENTRET FOR KEYBOARD INITIATED ROUTINES.\n# DC TC ENTRET.\n\nPREDSPAL\tCS\tVD1\n\t\tTS\tDSPCOUNT\nDSPALARM\tCS\tNVSBENDL\n\t\tAD\tENTEXIT\n\t\tEXTEND\n\t\tBZF\tCHARALRM +2\n\t\tCS\tMONADR\t\t# IF THIS IS A MONITOR, KILL IT\n\t\tAD\tENTEXIT\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tCHARALRM\n\t\tTC\tKILMONON\n\t\tTC\tFALTON\n\t\tTC\tPASTEVB\t\t# PUT MONITOR VERB BACK IN VERBREG\nCHARALRM\tTC\tFALTON\t\t# NO NVSUB INITATED. TURN ON OPR ERROR\n\t\tTC\tENDOFJOB\n\t\tTC\tPOODOO\n\t\tOCT\t01501\nMONADR\t\tGENADR\tPASTEVB\nNVSBENDL\tTC\tNVSUBEND\n\n# ALMCYCLE TURNS ON CHECK FAIL LIGHT, REDISPLAYS THE ORIGINAL VERB THAT\n# WAS EXECUTED, AND RECYCLES TO EXECUTE THE ORIGINAL VERB/NOUN COMBINATION\n# THAT WAS LAST EXECUTED. USED FOR BAD DATA DURING LOAD VERBS AND BY\n# MCTBS.  ALSO BY MMCHANG IF 2 NUMERICAL CHARACTERS WERE NOT PUNCHED IN\n# FOR MM CODE.\n\n\t\tSETLOC\tMID7 +1\n\t\tCOUNT*\t$$/PIN\nALMCYCLE\tTC\tFALTON\t\t# TURN ON CHECK FAIL LIGHT.\n\t\tCS\tVERBSAVE\t# GET ORIGINAL VERB THAT WAS EXECUTED\n\t\tTS\tREQRET\t\t# SET FOR ENTPAS0\n\t\tTC\tBANKCALL\t# PUTS ORIGINAL VERB INTO VERBREG AND\n\t\tCADR\tUPDATVB -1\t# DISPLAYS IT IN VERB LIGHTS.\n\t\tTC\tPOSTJUMP\nENDALM\t\tCADR\tENTER\n\n# MMCHANG USES NOUN DISPLAY UNTIL ENTER.  THEN IT USES MODE DISP.\n# IT GOES TO MODROUT WITH THE NEW M M CODE IN A, BUT NOT DISPLAYED IN\n# MM LIGHTS.\n# IT DEMANDS 2 NUMERICAL CHARACTERS BE PUNCHED IN FOR NEW MM CODE.\n# IF NOT, IT RECYCLES.\n\n# Page 447\n\t\tSETLOC\tDSP2BIT +10D\n\n\t\tCOUNT*\t$$/PIN\nMMCHANG\t\tTC\tREQMM\t\t# ENTPASHI ASSUMES THE TC REQMM AT MMCHANG\n\t\t\t\t\t# IF THIS MOVES AT ALL, MUST CHANGE\n\t\t\t\t\t# MMADREF AT ENTPASHI.\n\t\tCAF\tBIT5\t\t# OCT20 = ND2.\n\t\tAD\tDSPCOUNT\t# DSPCOUNT MUST = -ND2.\n\t\tEXTEND\t\t\t# DEMAND THAT 2 NUM CHAR WERE PUNCHED IN.\n\t\tBZF\t+2\n\t\tTC\tALMCYCLE\t# DSPCOUNT NOT= -ND2. ALARM AND RECYCLE.\n\t\tCAF\tZERO\t\t# DSPCOUNT = -ND2.\n\t\tXCH\tNOUNREG\n\t\tTS\tMPAC\n\t\tCAF\tND1\n\t\tTS\tDSPCOUNT\n\t\tTC\tBANKCALL\n\t\tCADR\t2BLANK\n\t\tCS\tVD1\t\t# BLOCK NUM CHAR IN\n\t\tTS\tDSPCOUNT\n\t\tCA\tMPAC\n\t\tTC\tPOSTJUMP\n\t\tCADR\tMODROUTB\t# GO THRU STANDARD LOC.\n\nMODROUTB\t=\tV37\nREQMM\t\tCS\tQ\n\t\tTS\tREQRET\n\t\tCAF\tND1\n\t\tTS\tDSPCOUNT\n\t\tCAF\tZERO\n\t\tTS\tNOUNREG\n\t\tTC\tBANKCALL\n\t\tCADR\t2BLANK\n\t\tTC\tFLASHON\n\t\tCAF\tONE\n\t\tTS\tDECBRNCH\t# SET FOR DEC\n\t\tTC\tENTEXIT\n\n# VBRQEXEC ENTERS REQUEST TO EXEC FOR ANY ADDRESS WITH ANY PRIORITY.\n# IT DOES ENDOFJOB AFTER ENTERING REQUEST.  DISPLAY SYST IS RELEASED.\n# IT ASSUMES NOUN 26 HAS BEEN PRELOADED WITH\n# COMPONENT 1  PRIORITY (BITS 10-14) BIT1=0 FOR NOVAC, BIT1=1 FOR FINDVAC.\n# COMPONENT 2  JOB ADRES (12 BIT)\n# COMPONENT 3  BBCON\n\nVBRQEXEC\tCAF\tBIT1\n\t\tMASK\tDSPTEM1\n\t\tCCS\tA\n# Page 448\n\t\tTC\tSETVAC\t\t# IF BIT1 = 1, FINDVAC\n\t\tCAF\tTCNOVAC\t\t# IF BIT1 = 0, NOVAC\nREQEX1\t\tTS\tMPAC\t\t# TC NOVAC OR TC FINDVAC INTO MPAC\n\t\tCS\tBIT1\n\t\tMASK\tDSPTEM1\n\t\tTS\tMPAC +4\t\t# PRIO INTO MPAC+4 AS A TEMP\nREQUESTC\tTC\tRELDSP\n\t\tCA\tENDINST\n\t\tTS\tMPAC +3\t\t# TC ENDOFJOB INTO MPAC+3\n\t\tEXTEND\n\t\tDCA\tDSPTEM1 +1\t# JOB ADRES INTO MPAC+1\n\t\tDXCH\tMPAC +1\t\t# BBCON INTO MPAC+2\n\t\tCA\tMPAC +4\t\t# PRIO IN A\n\t\tINHINT\n\t\tTC\tMPAC\n\nSETVAC\t\tCAF\tTCFINDVC\n\t\tTC\tREQEX1\n\n# VBRQWAIT ENTERS REQUEST TO WAITLIST FOR ANY ADDRESS WITH ANY DELAY.\n# IT DOES ENDOFJOB AFTER ENTERING REQUEST. DISPLAY SYST IS RELEASED.\n# IT ASSUMES NOUN 26 HAS BEEN PRELOADED WTIH\n# COMPONENT 1  DELAY (LOW BITS)\n# COMPONENT 2  TASK ADRES (12 BIT)\n# COMPONENT 3  BBCON\n\nVBRQWAIT\tCAF\tTCWAIT\n\t\tTS\tMPAC\t\t# TC WAITLIST INTO MPAC\n\t\tCA\tDSPTEM1\t\t# TIME DELAY\nENDRQWT\t\tTC\tREQUESTC -1\n\n# REQUESTC WILL PUT TASK ADRES INTO MPAC+1, BBCON INTO MPAC+2,\n# TC ENDOFJOB INTO MPAC+3.  IT WILL TAKE TIME DELAY OUT OF MPAC+4 AND\n# LEAVE IT IN A, INHINT AND TC MPAC.\n\n\t\tSETLOC\tNVSBENDL +1\n\t\tCOUNT*\t$$/PIN\nVBPROC\t\tCAF\tONE\t\t# PROCEED WITHOUT DATA\n\t\tTS\tLOADSTAT\n\t\tTC\tKILMONON\t# TURN ON KILL MONITOR BIT\n\t\tTC\tRELDSP\n\t\tTC\tFLASHOFF\n\t\tTC\tRECALTST\t# SEE IF THERE IS ANY RECALL FROM ENDIDLE\n\nVBTERM\t\tCS\tONE\n\t\tTC\tVBPROC +1\t# TERM VERB SETS LOADSTAT NEG\n\n# Page 449\n# PROCKEY PERFORMS THE SAME FUNCTION AS VBPROC. IT MUST BE CALLED UNDER\n# EXECUTIVE CONTROL, WITH CHRPRIO.\n\nPROCKEY\t\tCAF\tZERO\t\t# SET REQRET FOR ENTER PASS 0.\n\t\tTS\tREQRET\n\t\tCS\tVD1\t\t# BLOCK NUMERICAL CHARACTERS, SIGNS, CLEAR\n\t\tTS\tDSPCOUNT\n\t\tTC\tVBPROC\n\n# VBRESEQ WAKES ENDIDLE AT SAME LINE AS FINAL ENTER OF LOAD (L+3).\n# (MAIN USE IS INTENDED AS RESPONSE TO INTERNALLY INITIATED FLASHING\n#  DISPLAYS IN ENDIDLE. SHOULD NOT BE USED WITH LOAD VERBS, PLEASE PERFORM,\n#  OR PLEASE MARK VERBS BECAUSE THEY ALREADY USE L+3 IN ANOTHER CONTEXT.)\n\nVBRESEQ\t\tCS\tZERO\t\t# MAKE IT LOOK LIKE DATA IN.\n\t\tTC\tVBPROC +1\n\n# FLASH IS TURNED OFF BY PROCEED WITHOUT DATA, TERMINATE, REQUEQUENCE,\n# END OF LOAD.\n\n# Page 450\n\n# KEY RELEASE ROUTINE\n#\n# THIS ROUTINE ALWAYS TURNS OFF THE UPACT LIGHT AND ALWAYS CLEARS DSPLOCK.\n#\n# THE HIGHEST PRIORITY FUNCTION OF THE KEY RELEASE BUTTON IS THE\n# UNSUSPENDING OF A SUSPENDED MONITOR WHICH WAS EXTERNALLY INITIATED.\n# THIS FUNCTION IS ACCOMPLISHED BY CLEARING DSPLOCK AND TURNING OFF\n# THE KEY RELEASE LIGHT IF BOTH DSPLIST AND CADRSTOR ARE EMPTY.\n#\n# IF NO SUCH MONITOR EXISTS, THEN RELDSP IS EXECUTED TO CLEAR DSPLOCK\n# AND THE EXTERNAL MONITOR BIT (FREEING THE DISPLAY SYSTEM FOR INTERNAL\n# USE), TURN OFF THE KEY RELEASE LIGHT, AND WAKE UP ANY JOB IN DSPLIST.\n#\n# IN ADDITION IF THERE IS A JOB IN ENDIDLE, THEN CONTROL IS TRANSFERRED\n# TO PINBRNCH (IN DISPLAY INTERFACE ROUTINE) TO RE-EXECUTE THE SERIES OF\n# NVSUB CALLS ETC. THAT PRECEDED THE ENDIDLE CALL STILL AWAITING RESPONSE.\n# THIS FEATURE IS INTENDED FOR USE WHEN THE OPERATOR HAS BEEN REQUESTED TO\n# RESPOND TO SOME INTERNAL ACTION THAT USED ENDIDLE, BUT HE HAS WRITTEN\n# OVER THE INFORMATION ON THE DISPLAY PANEL BY SOME DISPLAYS OF HIS OWN\n# INITIATION WHICH DO NOT SERVE AS RESPONSES. HITTING KEYRLSE WILL\n# RE-ESTABLISH THE DISPLAYS TO THE STATE THEY WERE IN BEOFRE HE OBSCURED\n# THEM, SO THAT HE CAN SEE THE WAITING REQUEST. THIS WORKS ONLY FOR\n# INTERNAL PROGRAMS THAT USED ENDIDLE THROUGH MARGARETS DISPLAY\n# SUBROUTINES.\n\nVBRELDSP\tCS\tBIT3\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\t# TURN OFF UPACT LITE\n\t\tCCS\t21/22REG\t# OLD DSPLOCK\n\t\tCAF\tBIT14\n\t\tMASK\tMONSAVE1\t# EXTERNAL MONITOR BIT (EMB)\n\t\tCCS\tA\n\t\tTC\tUNSUSPEN\t# OLD DSPLOCK AND EMB BOTH 1, UNSUSPEND.\nTSTLTS4\t\tTC\tRELDSP\t\t# NOT UNSUSPENDING EXTERNAL MONITOR,\n\t\tCCS\tCADRSTOR\t#\tRELEASE DISPLAY SYSTEM AND\n\t\tTC\t+2\t\t#\tDO RE-ESTABLISH IF CADRSTOR IS FULL.\n\t\tTC\tENDOFJOB\n\t\tTC\tPOSTJUMP\n\t\tCADR\tPINBRNCH\nUNSUSPEN\tCAF\tZERO\t\t# EXTERNAL MONITOR IS SUSPENDED,\n\t\tTS\tDSPLOCK\t\t#\tJUST UNSUSPEND IT BY CLEARING DSPLOCK.\n\t\tCCS\tCADRSTOR\t#\tTURN KEY RELEASE LIGHT OFF IF BOTH\n\t\tTC\tENDOFJOB\t#\tCADRSTOR AND DSPLIST ARE EMPTY.\n\t\tTC\tRELDSP1\n\t\tTC\tENDOFJOB\n\nENDRELDS\tEQUALS\n\n# Page 451\n# NVSUB IS USED FOR SUBROUTINE CALLS FROM WITHIN COMPUTER. IT CAN BE\n# USED TO CALL THE COMBINATION OF ANY DISPLAY, LOAD, OR MONITOR VERB\n# TOGETHER WITH ANY NOUN AVAILABLE TO THE KEYBOARD.\n# PLACE 0VVVVVVVNNNNNNN INTO A.\n# V'S ARE THE 7-BIT VERB CODE.  N'S ARE THE 7-BIT NOUN CODE.\n#\n# IF NVSUB IS CALLED WTIH THE FOLLOWING NEGATIVE NUMBERS (RATHER THAN THE\n# VERB-NOUN CODE) IN A, THEN THE DISPLAY IS BLANKED AS FOLLOWS -\n#  -4 FULL BLANK, -3 LEAVE MODE, -2 LEAVE MODE AND VERB, -1 BLANK R'S ONLY.\n#\n# NVSUB CAN BE USED WTIH MACH CADR TO BE SPEC BY PLACING THE CADR INTO\n# MPAC+2 BEFORE THE STANDARD NVSUB CALL.\n#\n# NVSUB RETURNS TO 2+ CALLING LOC AFTER PERFORMING TASK, IF DISPLAY\n# SYSTEM IS AVAIALBLE. THE NEW NOUN AND VERB CODES ARE DISPLAYED.\n# IF V'S =0, THE NEW NOUN CODE IS DISPLAYED ONLY (RETURN WITH NO FURTHER\n# ACTION). IF N'S =0, THE NEW VERB CODE IS DISPLAYED ONLY (RETURN WITH NO\n# FURTHER ACTION).\n#\n# IT RETURNS TO 1+ CALLING LOC WITHOUT PERFORMING TASK, IF DISPLAY\n# SYSTEM IS BLOCKED (NOTHING IS DISPLAYED IN THIS CASE).\n# IT DOES TC ABORT (WITH OCT 01501) IF IT ENCOUNTERS A DISPLAY PROGRAM\n# ALARM CONDITION BEFORE RETURN TO CALLER.\n#\n# THE DISPLAY SYSTEM IS BLOCKED BY THE DEPRESSION OF ANY\n# KEY, EXCEPT ERROR LIGHT RESET.\n# IT IS RELEASED BY THE KEY RELEASE BUTTON, ALL EXTENDED VERBS,\n# PROCED WITHOUT DATA, TERMINATE, RESEQUENCE, INITIALIZE EXECUTIVE,\n# RECALL PART OF RECALTST IF ENDIDLE WAS USED,\n# VB = REQUEST EXECUTIVE, VB = REQUEST WAITLIST,\n# MONITOR SET UP.\n#\n# THE DISPLAY SYSTEM IS ALSO BLOCKED BY THE EXTERNAL MONITOR BIT, WHICH\n# INDICATES AND EXTERNALLY INITIATED MONITOR IS RUNNING (SEE MONITOR).\n#\n# A NVSUB CALL THAT PASSES DSPLOCK AND THE EXTERNAL MONITOR BIT ENDS OLD\n# MONITOR.\n#\n# DSPLOCK IS THE INTERLOCK FOR USE OF KEYBOARD AND DISPLAY SYSTEM WHICH\n# LOCKS OUT INTERNAL USE WHENEVER THERE IS EXTERNAL KEYBOARD ACTION.\n#\n# NVSUB SHOULD BE USED TWICE IN SUCCESSION FOR 'PLEASE PERFORM' SITUATIONS\n# (SIMILARLY FOR PLEASE MARK).  FIRST PLACE THE CODED NUMBER FOR WHAT\n# ACTION IS DESIRED OF OPERATOR INTO THE REGISTERS REFERRED TO BY THE\n# 'CHECKLIST' NOUN. GO TO NVSUB WITH A DISPLAY VERB AND THE 'CHECKLIST'\n# NOUN.  GO TO NVSUB AGAIN WTIH THE 'PLEASE PERFORM' VERB AND ZEROS IN THE\n# LOW 7 BITS. THIS 'PASTES UP' THE 'PLEASE PERFORM' VERB INTO THE VERB\n# LIGHTS.\n#\n# NVMONOPT IS AN ENTRY SIMILAR TO NVSUB, BUT REQUIRING AN ADDITIONAL\n# Page 452\n# PARAMETER IN L. IT SHOULD BE USED ONLY WITH A MONITOR VERB-NOUN CODE IN\n# A. AFTER EACH MONITOR DISPLAY A *PLEASE* VERB WILL BE PASED INT THE VERB\n# LIGHTS OR DATA WILL BE BLANKED (OR BOTH) ACCORDING TO THE OPTIONS\n# SPECIFIED IN L. IF BITS 8-14 OF L ARE OTHER THAN ZERO, THEN THEY WILL\n# BE INTERPRETED AS A VERB CODE AND PASTED IN THE VERB LIGHTS. (THIS VERB\n# CODE SHOULD DESIGNATE ONE OF THE *PLEASE* VERBS.)  IF BITS 1-3 OF L ARE\n# OTHER THAN ZERO, THEN THEY WILL BE USED TO BLANK DATA BY BEING FED TO\n# BLANKSUB.  IF NVMONOPT IS USED WITH A VERB OTHER THAN A MONITOR VERB,\n# THE PARAMETER IN L HAS NO EFFECT.\n#\n# NVSUB IN FIXED-FIXED PLACES 2+CALLING LOC INTO NVQTEM, TC NVSUBEND INTO\n# ENTRET. (THIS WILL RESTORE OLD CALLING BANK BITS)\n\n\t\tSETLOC\tENDALM +1\n\n\t\tCOUNT*\t$$/PIN\nNVSUB\t\tLXCH\t7\t\t# ZERO NVMONOPT OPTIONS\nNVMONOPT\tTS\tNVTEMP\n\t\tCAF\tBIT14\n\t\tMASK \tMONSAVE1\t# EXTERNAL MONITOR BIT\n\t\tAD\tDSPLOCK\n\t\tCCS\tA\n\t\tTC\tQ\t\t# DSP SYST BLOCKED, RET TO 1+ CALLING LOC\n\t\tCAF\tONE\t\t# DSP SYST AVAILABLE.\nNVSBCOM\t\tAD\tQ\n\t\tTS\tNVQTEM\t\t# 2+ CALLING LOC INTO NVQTEM\n\t\tLXCH\tMONSAVE2\t# STORE NVMONOPT OPTIONS\n\t\tTC\tKILMONON\t# TURN ON KILL MONITOR BIT\nNVSUBCOM\tCAF\tNVSBBBNK\n\n\t\tXCH\tBBANK\n\t\tEXTEND\t\t\t# SAVE OLD SUPERBITS\n\t\tROR\tSUPERBNK\n\t\tTS\tNVBNKTEM\n\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE \tSUPERBNK\n\t\tTC\tNVSUBB\t\t# GO TO NVSUB1 THRU STANDARD LOC\n\t\tEBANK=\tDSPCOUNT\nNVSBBBNK\tBBCON\tNVSUB1\n\nPINSUPBT\t=\tNVSBBBNK\t# CONTAINS THE PINBALL SUPERBITS.\n\nNVSUBEND\tDXCH\tNVQTEM\t\t# NVBNKTEM MUST = NVQTEM+1\n\t\tTC\tSUPDXCHZ\t# DTCB WITH SUPERBIT SWITCHING\n\n\t\tSETLOC\tENDRQWT +1\n\n\t\tCOUNT*\t$$/PIN\n\n# BLANKDSP BLANKS DISPLAY ACCORDING TO OPTION NUMBER IN NVTEMP AS FOLLOWS\n# Page 453\n#  -4 FULL BLANK, -3 LEAVE MODE, -2 LEAVE MODE AND VERB, -1 BLANK R'S ONLY.\n\nBLANKDSP\tAD\tSEVEN\t\t# 7,8,9, OR 10 (A HAD 0,1,2,OR 3)\n\t\tINHINT\n\t\tTS\tCODE\t\t# BLANK SPECIFIED DSPTABS\n\t\tCS\tBIT12\n\t\tINDEX\tCODE\n\t\tXCH\tDSPTAB\n\t\tCCS\tA\n\t\tINCR\tNOUT\n\t\tTC\t+1\n\t\tCCS\tCODE\n\t\tTC\tBLANKDSP +2\n\t\tRELINT\n\t\tINDEX\tNVTEMP\n\t\tTC\t+5\n\t\tTC\t+1\t\t# NVTEMP HAS\t-4 (NEVER TOUCH MODREG)\n\t\tTS\tVERBREG\t\t#\t\t-3\n\t\tTS\tNOUNREG\t\t#\t\t-2\n\t\tTS\tCLPASS\t\t#\t\t-1\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tFLASHOFF\t# PROTECT AGAINS INVISIBLE FLASH\n\t\tTC\tENTSET -2\t# ZEROS REQRET\n\nNVSUB1\t\tCAF\tENTSET\t\t# IN BANK\n\t\tTS\tENTRET\t\t# SET RETURN TO NVSUBEND\n\t\tCCS\tNVTEMP\t\t# WHAT NOW\n\t\tTC\t+4\t\t# NORMAL NVSUB CALL (EXECUTE VN OR PASTE)\n\t\tTC\tGODSPALM\n\t\tTC\tBLANKDSP\t# BLANK DISPLAY AS SPECIFIED\n\t\tTC\tGODSPALM\n\t\tCAF\tLOW7\n\t\tMASK\tNVTEMP\n\t\tTS\tMPAC +3\t\t# TEMP FOR NOUN (CANT USE MPAC. DSPDECVN\n\t\tCA\tNVTEMP\t\t#\t\tUSES MPAC, +1, +2).\n\t\tTS\tEDOP\t\t# RIGHT 7\n\t\tCA\tEDOP\n\t\tTS\tMPAC +4\t\t# TEMP FOR VERB (CANT USE MPAC+1. DSPDECVN\n\t\t\t\t\t# \t\tUSES MPAC, +1, +2).\n\t\tCCS\tMPAC +3\t\t# TEST NOUN\n\t\tTC\tNVSUB2\t\t# IF NOUN NOT +0, GO ON\n\t\tCA\tMPAC +4\n\t\tTC\tUPDATVB -1\t# IF NOUN = +0, DISPLAY VERB, THEN RETURN\n\t\tCAF\tZERO\t\t# XERO REQRET SO THAT PASTED VERBS CAN\n\t\tTS\tREQRET\t\t# BE EXECUTED BY OPERATOR.\nENTSET\t\tTC\tNVSUBEND\nNVSUB2\t\tCCS\tMPAC +4\t\t# TEST VERB\n\t\tTC\t+4\t\t# IF VERB NOT +0, GO ON\n\t\tCA\tMPAC +3\n# Page 454\n\t\tTC\tUPDATNN -1\t# IF VERB = +0, DISPLAY NOUN, THEN RETURN\n\t\tTC\tNVSUBEND\n\t\tCA\tMPAC +2\t\t# TEMP FOR MACH CADR TO BE SPEC. (DSPDECVN\n\t\tTS\tMPAC +5\t\t# \tUSES MPAC, +1, +2)\n\t\tCA\tMPAC +4\n\t\tTC\tUPDATVB -1\t# IF BOTH NOUN AND VERB NOT +0, DISPLAY\n\t\tCA\tMPAC +3\t\t# BOTH AND GO TO ENTPAS0.\n\t\tTC\tUPDATNN -1\n\t\tCAF\tZERO\n\t\tTS\tLOADSTAT\t# SET FOR WAITING FOR DATA CONDITION\n\t\tTS\tCLPASS\n\t\tTS\tREQRET\t\t# SET REQRET FOR PASS 0.\n\t\tCA\tMPAC +5\t\t# RESTORES MACH CADR TO BE SPEC TO MPAC+2\n\t\tTS\tMPAC +2\t\t# FOR USE IN INTMCTBS (IN ENTPAS0).\nENDNVSB1\tTC\tENTPAS0\n\n# IF INTERNAL MACH CADR TO BE SPECIFIED, MPAC+2 WILL BE PLACED INTO\n# NOUNCADR IN ENTPAS0 (INTMCTBS).\n\n\t\tSETLOC\tNVSUBEND +2\n\t\tCOUNT*\t$$/PIN\n\t\t\t\t\t# FORCE BIT 15 OF MONSAVE1 TO 1.\nKILMONON\tCAF\tBIT15\t\t# \tTHIS IS THE KILL MONITOR BIT.\n\t\tTS\tMONSAVE1\t# TURN OFF BIT 14, THE EXTERNAL\n\t\t\t\t\t# \tMONITOR BIT.\n\t\tTC\tQ\n\n# LOADSTAT\t+0\tINACTIVE (WAITING FOR DATA). SET BY NVSUB\n#\t\t+1\tPROCEED NO DATA. SET BY SPECIAL VERB\n#\t\t-1\tTERMINATE. SET BY SPECIAL VERB.\n#\t\t-0\t\tDATA IN\t\tSET BY END OF LOAD ROUTINE\n#\t\t\tOR \tRESEQUENCE\tSET BY VERB 32\n#\n# L TO ENDIDLE (FIXED FIXED)\n# ROUTINES THAT REQUEST LOADS THROUGH NVSUB SHOULD USE ENDIDLE WHILE\n# WAITING FOR THE DATA TO BE LOADED. ENDIDLE PUTS CURRENT JOB TO SLEEP.\n# ENDIDLE CANNOT BE CALLED FROM ERASABLE OR F/F MEMORY,\n# SINCE JOB SLEEP AND JOBWAKE CAN HANDLE ONLY FIXED BANKS.\n# RECALTST TESTS LOADSTAT AND WAKES JOB UP TO,\n#\tL+1\tFOR TERMINATE\n#\tL+2\tFOR PROCEED WITHOUT DATA\n#\tL+3\tFOR DATA IN, OR RESEQUENCE\n# IT DOES NOTHING IF LOADSTAT INDICATES WAITING FOR DTA.\n#\n# ENDIDLE ABORTS (WITH CODE 1206) IF A SECOND JOB ATTEMPTS TO GO TO SLEEP\n# Page 455\n# IN PINBALL. IN PARTICULAR, IF AN ATTEMPT IS MADE TO GO TO ENDIDLE WHEN\n# 1)\tCADRSTOR NOT= +0. THIS IS THE CASE WHERE THE CAPACITY OF ENDIDLE IS\n#\tEXCEEDED. (+-NZ INDICATES A JOB IS ALREADY ASLEEP DUE TO ENDIDDLE.)\n# 2)\tDSPLIST NOT= +0. THIS INDICATES A JOB IS ALREADY ASLEEP DUE TO\n#\tNVSUBUSY.\n\nENDIDLE\t\tLXCH\tQ\t\t# RETURN ADDRESS INTO L.\n\t\tTC\tISCADR+0\t# ABORT IF CADRSTOR NOT= +0\n\t\tTC\tISLIST+0\t# ABORT IF DSPLIST NOT= +0\n\t\tCA\tL\t\t# DONT SET DSPLOC TO 1 SO CAN USE\n\t\tMASK\tLOW10\t\t# ENDIDLE WITH NVSUB INITIATED MONITOR.\n\t\tAD\tFBANK\t\t# SAME STRATEGY FOR CADR AS MAKECADR.\n\t\tTS\tCADRSTOR\n\t\tTC\tJOBSLEEP\n\nENDINST\t\tTC\tENDOFJOB\n\nISCADR+0\tCCS\tCADRSTOR\t# ABORTS (CODE 01206) IF CADRSTOR NOT= +0.\n\t\tTC\tDSPABORT\t# RETURNS IF CADRSTOR = +0.\n\t\tTC\tQ\n\t\tTC\tDSPABORT\n\nISLIST+0\tCCS\tDSPLIST\t\t# ABORTS (CODE 01206) IF DSPLIST NOT= +0.\n\t\tTC\tDSPABORT\t# RETURNS IF DSPLIST = +0.\n\t\tTC\tQ\nDSPABORT\tTC\tPOODOO\n\t\tOCT\t01206\n\n# JAMTERM ALLOWS PROGRAMS TO PERFORM THE TERMINATE FUNCTION.\n# IT DOES ENDOFJOB.\n\nJAMTERM\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\t\tCAF\t34DEC\n\t\tTS\tREQRET\t\t# LEAVE ENTER SET FOR ENTPASS0.\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tVBTERM\n\n34DEC\t\tDEC\t34\n\n# JAMPROC ALLOWS PROGRAMS TO PERFORM THE PROCEED/PROCEED WITHOUT DATA\n# FUNCTION. IT DOES ENDOFJOB.\n\n# Page 456\nJAMPROC\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\t\tCAF\t33DEC\n\t\tTS\tREQRET\t\t# LEAVE ENTER SET FOR ENTPASS0.\n\t\tCS\tVD1\n\t\tTS\tDSPCOUNT\n\t\tTC\tPOSTJUMP\n\t\tCADR\tVBPROC\n\n33DEC\t\tDEC\t33\n\n# BLANKSUB BLANKS ANY COMBINATION OF R1, R2, R3.\n# CALL WITH BLANKING CODE IN A.\n# BIT1=1 BLANKS R1, BIT2=1 BLANKS R2, BIT3=1 BLANKS R3.\n# ANY COMBINATION OF THESE BITS IS ACCEPTED.\n#\n# DSPCOUNT IS RESTORED TO STATE IT WAS IN BEFORE BLANKSUB WAS EXECUTED.\n\nBLANKSUB\tMASK \tSEVEN\n\t\tTS\tNVTEMP\t\t# STORE BLANKING CODE IN NVTEMP.\n\t\tCAF\tBIT14\n\t\tMASK\tMONSAVE1\t# EXTERNAL MONITOR BIT\n\t\tAD\tDSPLOCK\n\t\tCCS\tA\n\t\tTC\tQ\t\t# DSP SYST BLOCKED. RET TO 1+ CALLING LOC\n\t\tINCR\tQ\t\t# DSP SYST AVAILABLE\n\t\t\t\t\t# SET RETURN FOR 2+ CALLING LOC\n\t\tCCS\tNVTEMP\n\t\tTCF\t+2\n\t\tTC\tQ\t\t# NOTHING TO BLANK. RET TO 2+ CALLING LOC\n\t\tLXCH\tQ\t\t# SET RETURN FOR 2 + CALLING LOC\n\t\tCAF\tBLNKBBNK\n\t\tXCH\tBBANK\n\t\tEXTEND\n\t\tROR\tSUPERBNK\t# SAVE OLD SUPERBITS.\n\t\tDXCH\tBUF\n\t\tCAF\tPINSUPBT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\n\t\tTC\tBLNKSUB1\n\n\t\tEBANK=\tDSPCOUNT\nBLNKBBNK\tBBCON\tBLNKSUB1\nENDBLFF\t\tEQUALS\n\n\t\tSETLOC\tENDRELDS\n\t\tCOUNT*\t$$/PIN\nBLNKSUB1\tCA\tDSPCOUNT\t# SAVE OLD DSPCOUNT FOR LATER RESTORATION\n# Page 457\n\t\tTS\tBUF +2\n\t\tCAF\tBIT1\t\t# TEST BIT1. SEE IF R1 TO BE BLANKED.\n\t\tTC\tTESTBIT\n\t\tCAF\tR1D1\n\t\tTC\t5BLANK -1\n\t\tCAF\tBIT2\t\t# TEST BIT2. SEE IF R2 TO BE BLANKED.\n\t\tTC\tTESTBIT\n\t\tCAF\tR2D1\n\t\tTC\t5BLANK -1\n\t\tCAF\tBIT3\t\t# TEST BIT3. SEE IF R3 TO BE BLANKED.\n\t\tTC\tTESTBIT\n\t\tCAF\tR3D1\n\t\tTC\t5BLANK -1\n\t\tCA\tBUF +2\t\t# RESTORE DSPCOUNT TO STATE IT HAD\n\t\tTS\tDSPCOUNT\t# \tBEFORE BLANKSUB.\n\t\tDXCH\tBUF\t\t# CALL L+2 DIRECTLY.\n\t\tTC\tSUPDXCHZ +1\t# DTCB WITH SUPERBIT SWITCHING\n\nTESTBIT\t\tMASK\tNVTEMP\t\t# NVTEMP CONTAINS BLANKING CODE.\n\t\tCCS\tA\n\t\tTC\tQ\t\t# IF CURRENT BIT = 1, RETURN TO L+1.\n\t\tINDEX\tQ\t\t# IF CURRENT BIT = 0, RETURN TO L+3.\n\t\tTC\t2\n\nENDBSUB1\tEQUALS\n\n# DSPMM DOES NOT DISPLAY MODREG DIRECTLY. IT PUTS IN EXEC REQUEST WITH\n# PRIO 30000 FOR DSPMMJB AND RETURNS TO CALLER.\n#\n# IF MODREG CONTAINS -0, DSPMMJB BLANKS THE MODE LIGHTS.\n#\n# DSPMM MUST BE IN BANK 27 OR LOWER, SO IT CAN BE CALLED VIA BANKCALL.\n\n\t\tBANK\t7\n\t\tSETLOC\tPINBALL4\n\t\tBANK\n\n\t\tCOUNT*\t$$/PIN\nDSPMM\t\tXCH\tQ\n\t\tTS\tMPAC\n\t\tINHINT\n\t\tCAF\tCHRPRIO\n\t\tTC\tNOVAC\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tDSPMMJB\n\n\t\tRELINT\nENDSPMM\t\tTC\tMPAC\n\n# Page 458\n# DSPMM  PLACE MAJOR MODE CODE INTO MODREG\n\n\t\tSETLOC\tENDBSUB1\n\n\t\tCOUNT*\t$$/PIN\nDSPMMJB\t\tCAF\tMD1\t\t# GETS HERE THRU DSPMM\n\t\tXCH\tDSPCOUNT\n\t\tTS\tDSPMMTEM\t# SAVE DSPCOUNT\n\t\tCCS\tMODREG\n\t\tAD\tONE\n\t\tTC\tDSPDECVN\t# IF MODREG IS + OR +0, DISPLAY MODREG\n\t\tTC\t+2\t\t# IF MODREG IS -NZ, DO NOTHING\n\t\tTC\t2BLANK\t\t# IF MODREG IS -0, BLANK MM\n\t\tXCH\tDSPMMTEM\t# RESTORE DSPCOUNT\n\t\tTS\tDSPCOUNT\n\t\tTC\tENDOFJOB\n\n# RECALTST IS ENTERED DIRECTLY AFTER DATA IS LOADED (OR RESEQUENCE VERB IS\n# EXECUTED), TERMINATE VERB IS EXECUTED, OR PROCEED WITHOUT DATA VERB IS\n# EXECUTED. IT WAKES UP JOB THAT DID TC ENDIDLE.\n#\n# IF CADRSTOR NOT= +0, IT PUTS +0 INTO DSPLOCK, AND TURNS OFF KEY RLSE\n# LIGHT IF DSPLIST IS EMPTY (LEAVES KEY RLSE LIGHT ALONE IF NOT EMPTY).\n\nRECALTST \tCCS\tCADRSTOR\n\t\tTC\tRECAL1\n\t\tTC\tENDOFJOB\t# NORMAL EXIT IF KEYBOARD INITIATED\nRECAL1\t\tCAF\tZERO\n\t\tXCH\tCADRSTOR\n\t\tINHINT\n\t\tTC\tJOBWAKE\n\t\tCCS\tLOADSTAT\n\t\tTC\tDOPROC\t\t# + PROCEED WITHOUT DATA\n\t\tTC\tENDOFJOB\t# PATHALOGICAL CASE EXIT\n\t\tTC\tDOTERM\t\t# - TERMINATE\n\t\tCAF\tTWO\t\t# -0 DATA IN OR RESEQUENCE\nRECAL2\t\tINDEX\tLOCCTR\n\t\tAD\tLOC\t\t# LOC IS + FOR BASIC JOBS\n\t\tINDEX\tLOCCTR\n\t\tTS\tLOC\n\t\tCA\tNOUNREG\t\t# SAVE VERB IN MPAC, NOUN IN MPAC+1 AT\n\t\tTS\tL\t\t# TIME OF RESPONSE TO ENDIDLE FOR\n\t\tCA\tVERBREG\t\t# POSSIBLE LATER TESTING BY JOB THAT HAS\n\t\tINDEX\tLOCCTR\t\t# BEEN WAKED UP.\n\t\tDXCH\tMPAC\n\t\tRELINT\nRECAL3\t\tTC\tRELDSP\n\t\tTC\tENDOFJOB\n\n# Page 459\nDOTERM\t\tCAF\tZERO\n\t\tTC\tRECAL2\n\nDOPROC\t\tCAF\tONE\n\t\tTC\tRECAL2\n\n# Page 460\n\n# MISCELLANEOUS SERVICE ROUTINES IN FIXED/FIXED\n\n\t\tSETLOC\tENDBLFF\n\n\t\tCOUNT*\t$$/PIN\n\n# SETNCADR\tE CADR ARRIVES IN A. IT IS STORED IN NOUNCADR. EBANK BITS\n#\t\tARE SET.  E ADRES IS DERIVED AND PUT INTO NOUNADD.\n\nSETNCADR\tTS\tNOUNCADR\t# STORE ECADR\n\t\tTS\tEBANK\t\t# SET EBANK BITS\n\t\tMASK\tLOW8\n\t\tAD\tOCT1400\n\t\tTS\tNOUNADD\t\t# PUT E ADRES INTO NOUNADD\n\t\tTC\tQ\n\n# SETNADD\tGETS E CADR FROM NOUNCADR, SETS EBANK BITS, DERIVES\n#\t\tE ADRES AND PUTS IT INTO NOUNADD.\n\nSETNADD\t\tCA\tNOUNCADR\n\t\tTCF\tSETNCADR +1\n\n# SETEBANK\tE CADR ARRIVES IN A. EBANK BITS ARE SET. E ADRES IS\n#\t\tDERIVED AND LEFT IN A.\n\nSETEBANK\tTS\tEBANK\t\t# SET EBANK BITS\n\t\tMASK\tLOW8\n\t\tAD\tOCT1400\t\t# E ADRES LEFT IN A\n\t\tTC\tQ\n\nR1D1\t\tOCT\t16\t\t# THESE 3 CONSTANTS FORM A PACKED TABLE.\nR2D1\t\tOCT\t11\t\t# DONT SEPARATE.\nR3D1\t\tOCT\t4\n\nRIGHT5\t\tTS\tCYR\n\t\tCS\tCYR\n\t\tCS\tCYR\n\t\tCS\tCYR\n\t\tCS\tCYR\n\t\tXCH\tCYR\n\t\tTC\tQ\n\nLEFT5\t\tTS\tCYL\n\t\tCS\tCYL\n\t\tCS\tCYL\n\t\tCS\tCYL\n\t\tCS\tCYL\n# Page 461\n\t\tXCH\tCYL\n\t\tTC\tQ\n\nSLEFT5\t\tDOUBLE\n\t\tDOUBLE\n\t\tDOUBLE\n\t\tDOUBLE\n\t\tDOUBLE\n\t\tTC\tQ\n\nLOW5\t\tOCT\t37\t\t# THESE 3 CONSTANTS FORM A PACKED TABLE.\nMID5\t\tOCT\t1740\t\t# DONT SEPARATE.\nHI5\t\tOCT\t76000\t\t# MUST STAY HERE\n\nTCNOVAC\t\tTC\tNOVAC\nTCWAIT\t\tTC\tWAITLIST\nTCTSKOVR\tTC\tTASKOVER\nTCFINDVC\tTC\tFINDVAC\n\nCHRPRIO\t\tOCT\t30000\t\t# EXEC PRIORITY OF CHARIN\n\nLOW11\t\tOCT\t3777\nB12-1\t\tEQUALS\tLOW11\nLOW8\t\tOCT\t377\n\nVD1\t\tOCT\t23\t\t# THESE 3 CONSTANTS FORM A PACKED TABLE.\nND1\t\tOCT\t21\t\t# DONT SEPARATE.\nMD1\t\tOCT\t25\n\nBINCON\t\tDEC\t10\n\nFALTON\t\tCA\tBIT7\t\t# TURN ON OPERATOR ERROR LIGHT.\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# BIT 7 OF CHANNEL 11\n\t\tTC\tQ\n\nFALTOF\t\tCS\tBIT7\t\t# TURN OFF OPERATOR ERROR LIGHT\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\t# BIT 7 OF CHANNEL 11\n\t\tTC\tQ\n\nRELDSPON\tCAF\tBIT5\t\t# TURN ON KEY RELEASE LIGHT\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# BIT 5 OF CHANNEL 11\n\t\tTC\tQ\n\n# Page 462\nLODSAMPT\tEXTEND\n\t\tDCA\tTIME2\n\t\tDXCH\tSAMPTIME\n\t\tTC\tQ\n\nTPSL1\t\tEXTEND\t\t\t# SHIFTS MPAC, +1, +2 LEFT 1\n\t\tDCA\tMPAC +1\t\t# LEAVES OVFIND SET TO +/- 1 FOR OF/UF\n\t\tDAS\tMPAC +1\n\t\tAD\tMPAC\n\t\tADS\tMPAC\n\t\tTS\t7\t\t# TS A DOES NOT CHANGE A ON OF/UF.\n\t\tTC\tQ\t\t# NO NET OF/UF\n\t\tTS\tMPAC+6\t\t# MPAC +6 SET TO +/- 1 FOR OF/UF\n\t\tTC\tQ\n\n# IF MPAC, +1 ARE EACH +NZ OR +0 AND C(A)=-0, SHORTMP WRONGLY GIVES +0.\n# IF MPAC, +1 ARE EACH -NZ OR -0 AND C(A)=+0, SHORTMP WRONGLY GIVES +0.\n# PRSHRTMP FIXES FORST CASE ONLY, BY MERELY TESTING C(A) AND IF IT = -0,\n# SETTING RESULT TO -0.\n#  (DO NOT USE PRSHRTMP UNLESS MPAC, +1 ARE EACH +NZ OR +0, AS THEY ARE\n#  WHEN THEY CONTAIN THE SF CONSTANTS.)\n\nPRSHRTMP\tTS\tMPTEMP\n\t\tCCS\tA\n\t\tCA\tMPTEMP\t\t# C(A) +, DO REGULAR SHORTMP\n\t\tTCF\tSHORTMP +1\t# C(A) +0, DO REGULAR SHORTMP\n\t\tTCF\t-2\t\t# C(A) -, DO REGULAR SHORTMP\n\t\tCS\tZERO\t\t# C(A) -0, FORCE RESULT TO -0 AND RETURN.\n\t\tTS\tMPAC\n\t\tTS\tMPAC +1\n\t\tTS\tMPAC +2\n\t\tTC\tQ\n\nFLASHON\t\tCAF\tBIT6\t\t# TURN ON V/N FLASH\n\t\tEXTEND\t\t\t# BIT 6 OF CHANNEL 11\n\t\tWOR\tDSALMOUT\n\t\tTC\tQ\n\nFLASHOFF\tCS\tBIT6\t\t# TURN OFF V/N FLASH\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\n\t\tTC\tQ\n\n# Page 463\n# INTERNAL USE OF KEYBOARD AND DISPLAY PROGRAM.\n#\n# USER MUST SCHEDULE CALLS TO NVSUB SO THAT THERE IS NO CONFLICT OF USE OR\n# CONFUSION TO OPERATOR. THE OLD GRABLOCK (INTERNAL/INTERNAL INTERLOCK)\n# HAS BEEN REMOVED AND THE INTERNAL USER NO LONGER HAS THE PROTECTION THIS\n# OFFERED.\n#\n# THERE ARE TWO WAYS A JOB CAN BE PUT TO SLEEP BY THE KEYBOARD + DISPLAY\n# PROGRAM.\t1) BY ENDIDLE\n#\t\t2) BY NVSUBUSY\n# THE BASIC CONVENTION IS THAT ONLY ONE JOB WILL BE PERMITTED ASLEEP VIA\n# THE KEYBOARD + DISPLAY PROGRAM AT A TIME. IF A JOB ATTEMPTS TO GO TO\n# SLEEP BY MEANS OF (1) OR (2) AND THERE IS ALREADY A JOB ASLEEP THAT WAS\n# PUT TO SLEEP BY (1) OR (2), THEN AN ABORT IS CAUSED.\n#\n# THE CALLING SEQUENCE FOR NVSUB IS\n#\t\t\tCAF\t\tV/N\n#\tL\t\tTC\t\tNVSUB\n#\tL+1\t\tRETURN HERE IF OPERATOR HAS INTERVENED\n#\tL+2\t\tRETURN HERE AFTER EXECUTION\n#\n# A ROUTINE CALLED NVSUBUSY IS PROVIDED (USE IS OPTIONAL) TO PUT\n# YOUR JOB TO SLEEP UNTIL THE OPERATOR RELEASES THE KEYBOARD + DISPLAY\n# SYSTEM. NVSUBUSY ALSO TURNS ON THE KEY RELEASE LIGHT.\n# NVSUBUSY CANNOT BE CALLED FROM ERASABLE OR F/F MEMORY,\n# SINCE JOBSLEEP AND JOBWAKE CAN HANDLE ONLY FIXED BANKS.\n#\n# THE CALLING SEQUENCE IS\n#\tCAF\tWAKEFCADR\n#\tTC\tNVSUBUSY\n#\n#\n# .\n#\n# NVSUBUSY IS INTENDED FOR USE WHEN AN INTERNAL PROGRAM FINDS THE OPERATOR\n# IS NOT USING THE KEYBOARD + DISPLAY PROGRAM (BY HIS OWN INITIATION). IT IS\n# NOT INTENDED FOR USE WHEN ONE INTERNAL PROGRAM FINDS ANOTHER INTERNAL\n# PROGRAM USING THE KEYBOARD + DISPLAY PROGRAM.\n#\n# NVSUBUSY ABORTS (WITH CODE 01206) IF A SECOND JOB ATTEMPTS TO GO TO\n# SLEEP IN PINBALL. IN PARTICULAR, IF AN ATTEMPT IS MADE TO GO TO NVSUBUSY\n# WHEN\n# 1)\tDSPLIST NOT= +0.  THIS IS THE CASE WHERE THE CAPACITY OF THE DSPLIST\n#\tIS EXCEEDED.\n# 2) \tCADRSTOR NOT= +0.  THIS INDICATES THAT A JOB IS ALREADY USING\n# Page 464\n# ENDIDLE.  (+-NZ INDICATE A JOB IS ALREADY ASLEEP DUE TO ENDIDLE.)\n\nPRENVBSY\tCS\t2K+3\t\t# SPECIAL ENTRANCE FOR ROUTINES IN FIXED\n\t\tAD\tQ\t\t# BANKS ONLY DESIRING THE FCADR OF (LOC\n\t\tAD\tFBANK\t\t# FROM WHICH THE TC PRENVBSY WAS DONE) -2\nNVSUBUSY\tTC\tPOSTJUMP\t# TO BE ENTERED.\n\t\tCADR\tNVSUBSY1\n2K+3\t\tOCT\t2003\n\n# NVSUBSY1 MUST BE IN BANK 27 OR LOWER, SO IT WILL PUT CALLER TO SLEEP\n# WITH HIS PROPER SUPERBITS.\n\n\t\tSETLOC\tENDSPMM +1\n\t\tCOUNT*\t$$/PIN\nNVSUBSY1\tTS\tL\n\t\tTC\tISCADR+0\t# ABORT IF CADRSTOR NOT= +0.\n\t\tTC\tISLIST+0\t# ABORT IF DSPLIST NOT= +0.\n\t\tTC\tRELDSPON\n\t\tCA\tL\n\t\tTS\tDSPLIST\nENDNVBSY\tTC\tJOBSLEEP\n\n# NVSBWAIT IS A SPECIAL ENTRANCE FOR ROUTINES IN FIXED BANKS ONLY. IF\n# SYSTEM IS NOT BUSY, IT EXECUTES V/N AND RETURNS TO L+1 (L= LOC FROM\n# WHICH THE TC NVSBWAIT WAS DONE). IF SYSTEM IS BUSY, IT PUTS CALLING JOB\n# TO SLEEP WITH L-1 GOING INTO LIST FOR EVENTUAL WAKING UP WHEN SYSTEM\n# IS NOT BUSY.\n\n\t\tSETLOC\tNVSUBUSY +3\n\t\tCOUNT*\t$$/PIN\nNVSBWAIT\tLXCH\t7\t\t# ZERO NVMONOPT OPTIONS\n\t\tTS\tNVTEMP\n\t\tCAF\tBIT14\n\t\tMASK\tMONSAVE1\t# EXTERNAL MONITOR BIT\n\t\tAD\tDSPLOCK\n\t\tCCS\tA\n\t\tTCF\tNVSBWT1\t\t# BUSY\n\t\tTCF\tNVSBCOM\t\t# FREE. NVSUB WILL SAVE L+1 FOR RETURN\n\t\t\t\t\t# AFTER EXECUTION.\nNVSBWT1\t\tINCR\tQ\t\t# L+2. PRENVBSY WILL PUT L-1 INTO LIST AND\n\t\tTCF\tPRENVBSY\t# GO TO SLEEP.\n\n# RELDSP IS USED BY VBPROC, VBTERM, VBRQEXEC, VBRQWAIT, VBRELDSP, EXTENDED\n# VERB DISPATCHER, VBRESEQ, RECALTST.\n# RELDSP1 IS USED BY MONITOR SET UP, VBRELDSP.\n\nRELDSP\t\tXCH\tQ\t\t# SET DSPLOCK TO +0, TURN RELDSP LIGHT\n\t\tTS\tRELRET\t\t# OFF, SEARCH DSPLIST\n\t\tCS\tBIT14\n# Page 465\n\t\tINHINT\n\t\tMASK\tMONSAVE1\n\t\tTS\tMONSAVE1\t# TURN OFF EXTERNAL MONITOR BIT\n\t\tCCS\tDSPLIST\n\t\tTC\t+2\n\t\tTC\tRELDSP2\t\t# LIST EMPTY\n\t\tCAF\tZERO\n\t\tXCH\tDSPLIST\n\t\tTC\tJOBWAKE\nRELDSP2\t\tRELINT\n\t\tCS\tBIT5\t\t# TURN OFF KEY RELEASE LIGHT\n\t\tEXTEND\t\t\t# (BIT 5 OF CHANNEL 11)\n\t\tWAND\tDSALMOUT\n\t\tCAF\tZERO\n\t\tTS\tDSPLOCK\n\t\tTC\tRELRET\nRELDSP1\t\tXCH\tQ\t\t# SET DSPLOCK TO +0. NO DSPLIST SEARCH.\n\t\tTS\tRELRET\t\t# TURN KEY RLSE LIGHT OFF IF DSPLIST IS\n\t\t\t\t\t# EMPTY. LEAVE KEY RLSE LIGHT ALONE IF\n\t\t\t\t\t# DSPLIST IS NOT EMPTY.\n\t\tCCS\tDSPLIST\n\t\tTC\t+2\t\t# +  NOT EMPTY. LEAVE KEY RLSE LIGHT ALONE.\n\t\tTC\tRELDSP2\t\t# +0 EMPTY. TURN OFF KEY RLSE LIGHT\n\t\tCAF\tZERO\t\t# -  NOT EMPTY. LEAVE KEY RLSE LIGHT ALONE\n\t\tTS\tDSPLOCK\n\t\tTC\tRELRET\n\nENDPINBF\tEQUALS\n\n# Page 466\n# PINTEST IS NEEDED FOR AUTO CHECK OF PINBALL.\n\nPINTEST\t\tEQUALS\tLST2FAN\n\n# Page 467\n# VBTSTLTS TURNS ON ALL DISPLAY PANEL LIGHTS. AFTER 5 SEC, IT TURNS\n# OFF THE CAUTION AND STATUS LIGHTS.\n\n\t\tSETLOC\tENDNVSB1 +1\n\n\t\tCOUNT*\t$$/PIN\nVBTSTLTS\tINHINT\n\t\tCS\tBIT1\t\t# SET BIT 1 OF IMODES33 SO IMUMON WONT\n\t\tMASK\tIMODES33\t# TURN OUT ANY LAMPS.\n\t\tAD\tBIT1\n\t\tTS\tIMODES33\n\n\t\tCAF\tTSTCON1\t\t# TURN ON UPLINK ACTIVITY, TEMP, KEY RLSE,\n\t\tEXTEND\t\t\t# V/N FLASH, OPERATOR ERROR.\n\t\tWOR\tDSALMOUT\n\t\tCAF\tTSTCON2\t\t# TURN ON NO ATT, GIMBAL LOCK, TRACKER,\n\t\tTS\tDSPTAB +11D\t# PROG ALM.\n\t\tCAF\tBIT10\t\t# TURN ON TEST ALARM OUTBIT\n\t\tEXTEND\n\t\tWOR\tCHAN13\n\t\tCAF\tTEN\nTSTLTS1\t\tTS\tERCNT\n\t\tCS\tFULLDSP\n\t\tINDEX\tERCNT\n\t\tTS\tDSPTAB\n\t\tCCS\tERCNT\n\t\tTC\tTSTLTS1\n\t\tCS\tFULLDSP1\n\t\tTS\tDSPTAB +1\t# TURN ON 3 PLUS SIGNS\n\t\tTS\tDSPTAB +4\n\t\tTS\tDSPTAB +6\n\t\tCAF\tELEVEN\n\t\tTS\tNOUT\n\t\tRELINT\n\t\tCAF\tSHOLTS\n\t\tINHINT\n\t\tTC\tWAITLIST\n\t\tEBANK=\tDSPTAB\n\t\t2CADR\tTSTLTS2\n\n\t\tTC\tENDOFJOB\t# DSPLOCK IS LEFT BUSY (FROM KEYBOARD\n\t\t\t\t\t# ACTION) UNTIL TSTLTS3 TO INSURE THAT\n\t\t\t\t\t# LIGHTS TEST WILL BE SEEN.\n\nFULLDSP\t\tOCT\t05675\t\t# DISPLAY ALL 8'S\nFULLDSP1\tOCT\t07675\t\t# DISPLAY ALL 8'S AND +\nTSTCON1\t\tOCT\t00175\n\t\t\t\t\t# UPLINK ACTIVITY, TEMP. KEY RLSE,\n\t\t\t\t\t# V/N FLASH, OPERATOR ERROR.\n# Page 468\nTSTCON2\t\tOCT\t40674\t\t# DSPTAB+11D BITS 3,4,5,6,8,9 LR LITES,\n\t\t\t\t\t# NO ATT, GIMBAL LOCK, TRACKER, PROG ALM.\nTSTCON3\t\tOCT\t00115\t\t# CHAN 11 BITS 1, 3, 4, 7.\n\t\t\t\t\t# UPLINK ACITIVY, TEMP, OPERATOR ERROR.\nSHOLTS\t\tOCT\t764\t\t# 5 SEC\n\nTSTLTS2\t\tCAF\tCHRPRIO\t\t# CALLED BY WAITLIST\n\t\tTC\tNOVAC\n\t\tEBANK=\tDSPTAB\n\t\t2CADR\tTSTLTS3\n\n\t\tTC\tTASKOVER\n\nTSTLTS3\t\tCS\tTSTCON3\t\t# CALLED BY EXECUTIVE\n\t\tINHINT\n\t\tEXTEND\t\t\t# TURN OFF  UPLINK ACTIVITY, TEMP,\n\t\tWAND\tDSALMOUT\t# OPERATOR ERROR.\n\t\tCS\tBIT10\t\t# TURN OFF  TEST ALARM OUTBIT\n\t\tEXTEND\n\t\tWAND\tCHAN13\n\t\tCAF\tBIT4\t\t# MAKE NO ATT FOLLOW BIT 4 OF CHANNEL 12\n\t\tEXTEND\t\t\t#   (NO ATT LIGHT ON IF IN COARSE ALIGN)\n\t\tRAND\tCHAN12\n\t\tAD\tBIT15\t\t# TURN OFF AUTO, HOLD, FREE, SPARE,\n\t\tTS\tDSPTAB +11D\t# GIMBAL LOCK, SPARE, TRACKER, PROG ALM\n\t\tCS\t13-11,1\t\t# SET BITS TO INDICATE ALL LAMPS OUT. TEST\n\t\tMASK\tIMODES33\t# LIGHTS COMPLETE.\n\t\tAD\tPRIO16\n\t\tTS\tIMODES33\n\n\t\tCS\tOCT55000\n\t\tMASK\tIMODES30\n\t\tAD\tPRIO15\t\t# 15000.\n\t\tTS\tIMODES30\n\n\t\tCS\tRFAILS2\n\t\tMASK\tRADMODES\n\t\tAD\tRCDUFBIT\n\t\tTS\tRADMODES\n\n\t\tRELINT\n\n\t\tTC\tBANKCALL\t# REDISPLAY C(MODREG)\n\t\tCADR\tDSPMM\n\t\tTC\tKILMONON\t# TURN ON KILL MONITOR BIT.\n\t\tTC\tFLASHOFF\t# TURN OFF V/N FLASH.\n\t\tTC\tPOSTJUMP\t# DOES RELDSP AND GOES TO PINBRNCH IF\n\t\tCADR\tTSTLTS4\t\t#  ENDIDLE IS AWAITING OPERATOR RESPONSE.\n# Page 469\n13-11,1\t\tOCT\t16001\nRFAILS2\t\tOCT\t330\t\t# RADAR CDU AND DATA FAIL FLAGS.\nOCT55000\tOCT\t55000\nENDPINS2\tEQUALS\n\n# Page 470\n# ERROR LIGHT RESET (RSET) TURNS OFF:\n# UPLINK ACTIVITY, AUTO, HOLD, FREE, OPERATOR ERROR,\n# PROG ALM, TRACKER FAIL.\n# LEAVES GIMBAL LOCK AND NO ATT ALONE.\n# IT ALSO ZEROS THE 'TEST ALARM' OUT BIT, WHICH TURNS OFF STBY, RESTART.\n# IT ALSO SETS 'CAUTION RESET' TO 1.\n# IT ALSO FORCES BIT 12 OF ALL DSPTAB ENTRIES TO 1.\n\n\t\tSETLOC\tDOPROC +2\n\t\tCOUNT*\t$$/PIN\nERROR\t\tXCH\t21/22REG\t# RESTORE ORIGINAL C(DSPLOCK). THUS ERROR\n\t\tTS\tDSPLOCK\t\t# LIGHT RESET LEAVES DSPLOCK UNCHANGED.\n\t\tINHINT\n\t\tCAF\tBIT10\t\t# TURN ON 'CAUTION RESET' OUTBIT\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# BIT10 CHAN 11\n\t\tCAF\tGL+NOATT\t# LEAVE GIMBAL LOCK AND NO ATT INTACT,\n\t\tMASK\tDSPTAB +11D\t# TURNING OFF AUTO, HOLD, FREE,\n\t\tAD\tBIT15\t\t# PROG ALARM, AND TRACKER.\n\t\tTS\tDSPTAB +11D\n\t\tCS\tPRIO16\t\t# RESET FAIL BITS WHICH GENERATE PROG\n\t\tMASK\tIMODES33\t# ALARM SO THAT IF THE FAILURE STILL\n\t\tAD\tPRIO16\t\t# EXISTS, THE ALARM WILL COME BACK.\n\t\tTS\tIMODES33\n\t\tCS\tBIT10\n\t\tMASK\tIMODES30\n\t\tAD\tBIT10\n\t\tTS\tIMODES30\n\n\t\tCS\tRFAILS\n\t\tMASK\tRADMODES\n\t\tAD\tRCDUFBIT\n\t\tTS\tRADMODES\n\n\t\tCS\tBIT10\t\t# TURN OFF 'TEST ALARM' OUTBIT.\n\t\tEXTEND\n\t\tWAND\tCHAN13\n\t\tCS\tERCON\t\t# TURN OFF UPLINK ACTIVITY,\n\t\tEXTEND\t\t\t# OPERATOR ERROR.\n\t\tWAND\tDSALMOUT\nTSTAB\t\tCAF\tBINCON\t\t# (DEC 10)\n\t\tTS\tERCNT\t\t# ERCNT = COUNT\n\t\tINHINT\n\t\tINDEX\tERCNT\n\t\tCCS\tDSPTAB\n\t\tAD\tONE\n\t\tTC\tERPLUS\n\t\tAD\tONE\nERMINUS\t\tCS\tA\n\t\tMASK\tNOTBIT12\n# Page 471\n\t\tTC\tERCOM\nERPLUS\t\tCS\tA\n\t\tMASK\tNOTBIT12\n\t\tCS\tA\t\t# MIGHT WANT TO RESET CLPASS, DECBRNCH,\nERCOM\t\tINDEX\tERCNT\t\t# ETC.\n\t\tTS\tDSPTAB\n\t\tRELINT\n\t\tCCS\tERCNT\n\t\tTC\tTSTAB\t+1\n\t\tCAF\tZERO\n\t\tTS\tFAILREG\n\t\tTS\tFAILREG +1\n\t\tTS\tFAILREG +2\n\t\tTS\tSFAIL\n\t\tTC\tENDOFJOB\n\nERCON\t\tOCT\t104\t\t# CHAN 11 BITS 3,7.\n\t\t\t\t\t# UPLINK ACTIVITY, AND OPERATOR ERROR.\nRFAILS\t\tOCT\t330\t\t# RADAR CDU AND DATA FAIL FLAGS.\nGL+NOATT\tOCT\t00050\t\t# NO ATT AND GIMBAL LOCK LAMPS\nNOTBIT12\tOCT\t73777\n\nENDPINS1\tEQUALS\n\n\t\tSBANK=\tLOWSUPER\n\n"
  },
  {
    "path": "Luminary099/PINBALL_NOUN_TABLES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPINBALL_NOUN_TABLES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t301-319\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\t\t2009-06-07 RSB\tCorrected two typos.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 301\n# THE FOLLOWING REFERS TO THE NOUN TABLES\n#\n# COMPONENT CODE NUMBER\t\tINTERPRETATION\n#\n#\t00000\t\t\t1 COMPONENT\n#\t00001\t\t\t2 COMPONENT\n#\t00010\t\t\t3 COMPONENT\n#\tX1XXX\t\t\tBIT 4 = 1.  DECIMAL ONLY\n#\t1XXXX\t\t\tBIT 5 = 1.  NO LOAD\n# END OF COMPONENT CODE NUMBER\n#\n# SF ROUTINE CODE NUMBER\tINTERPRETATION\n#\n# \t00000\t\t\tOCTAL ONLY\n#\t00001\t\t\tSTRAIGHT FRACTIONAL\n#\t00010\t\t\tCDU DEGREES (XXX.XX)\n#\t00011\t\t\tARITHMETIC SF\n#\t00100\t\t\tARITH DP1\tOUT (MULT BY 2EXP14 AT END)\tIN (STRAIGHT)\n#\t00101\t\t\tARITH DP2\tOUT (STRAIGHT)\t\t\tIN (SL 7 AT END)\n#\t00110\t\t\tLANDING RADAR POSITION (+0000X)\n#\t00111\t\t\tARITH DP3\tOUT (SL 7 AT END)\t\tIN (STRAIGHT)\n#\t01000\t\t\tWHOLE HOURS IN R1, WHOLE MINUES (MOD 60) IN R2,\n#\t\t\t\t\tSECONDS (MOD 60) 0XX.XX IN R3.  *** ALARMS IF USED WITH OCTAL\n#\t01001\t\t\tMINUTES (MOD 60) IN D1D2, D3 BLANK, SECONDS (MOD 60) IN D4D5\n#\t\t\t\t\tLIMITS TO 59B59 IF MAG EXCEEDS THIS VALUE.\n#\t\t\t\t\tALARMS IF USED WITH OCTAL ******** IN (ALARM)\n#\t01010\t\t\tARITH DP4\tOUT (STRAIGHT)\t\t\tIN (SL 3 AT END)\n#\t01011\t\t\tARITH1 SF\tOUT (MULT BY 2EXP14 AT END)\tIN (STRAIGHT)\n#\t01100\t\t\t2 INTEGERS IN D1D2, D4D5, D3 BLANK.\n#\t\t\t\t\tALARMS IF USED WITH OCTAL ******** IN (ALARM)\n#\t01101\t\t\t360-CDU DEGREES (XXX.XX)\n#\n# END OF SF ROUTINE CODE NUMBERS\n\n# SF CONSTANT CODE NUMBER\tINTERPRETATION\n#\n#\t00000\t\t\tWHOLE\t\t\t\tUSE ARITH\n#\t00000\t\t\tDP TIME SEC (XXX.XX SEC)\tUSE ARITHDP1\n#\t00000\t\t\tLR POSITION (+0000X)\t\tUSE LR POSITION\n#\t00001\t\t\tSPARE\n#\t00010\t\t\tCDU DEGREES\t\t\tUSE CDU DEGREES\n#\t00010\t\t\t360-CDU DEGREES\t\t\tUSE 360-CDU DEGREES\n#\t00011\t\t\tDP DEGREES (90 XX.XXX DEG\tUSE ARITHDP3\n#\t00100\t\t\tDP DEGREES (360) XXX.XX DEG\tUSE ARITHDP4\n#\t00101\t\t\tDEGREES (180) XXX.XX DEG\tUSE ARITH\n#\t00101\t\t\tOPTICAL TRACKER AZIMUTH ANGLE (XXX.XXDEG)\n#\t\t\t\t\t\t\t\tUSE ARITHDP1\n#\t00110\t\t\tWEIGHT2 (XXXXX. LBS)\t\tUSE ARITH1\n# Page 302\n#\t00111\t\t\tPOSITION5 (XXX.XX NAUTICAL MILES)\n#\t\t\t\t\t\t\t\tUSE ARITHDP3\n#\t01000\t\t\tPOSITION4 (XXXX.X NAUTICAL MILES)\n#\t\t\t\t\t\t\t\tUSE ARITHDP3\n#\t01001\t\t\tVELOCITY2 (XXXXX. FT/SEC)\tUSE ARITHDP4\n#\t01010\t\t\tVELOCITY3 (XXXX.X FT/SEC)\tUSE ARITHDP3\n#\t01011\t\t\tELEVATION DEGREES (89.999 MAX)\tUSE ARITH\n#\t01100\t\t\tRENDEZVOUS RADAR RANGE (XXX.XX NAUT MI)\n#\t\t\t\t\t\t\t\tUSE ARITHDP1\n#\t01101\t\t\tRENDEZVOUS RADAR RANGE RATE (XXXXX.FT/SEC)\n#\t\t\t\t\t\t\t\tUSE ARITHDP1\n#\t01110\t\t\tLANDING RADAR ALTITUDE (XXXXX.FEET)\n#\t\t\t\t\t\t\t\tUSE ARITHDP1\n#\t01111\t\t\tINITIAL/FINAL ALTITUDE (XXXXX. FEET)\n#\t\t\t\t\t\t\t\tUSE ARITHDP1\n#\t10000\t\t\tALTITUDE RATE (XXXXX.FT/SEC)\tUSE ARITH\n#\t10001\t\t\tFORWARD/LATERAL VELOCITY (XXXXX.FEET/SEC)\n#\t\t\t\t\t\t\t\tUSE ARITH\n#\t10010\t\t\tROTATIONAL HAND CONTROLLER ANGLE RATES\n#\t\t\t\t\tXXXXX.DEG/SEC\t\tUSE ARITH\n#\t10011\t\t\tLANDING RADAR VELX (XXXXX.FEET/SEC)\n#\t\t\t\t\t\t\t\tUSE ARITHDP1\n#\t10100\t\t\tLANDING RADAR VELY (XXXXX.FEET/SEC)\n#\t\t\t\t\t\t\t\tUSE ARITHDP1\n#\t10101\t\t\tLANDING RADAR VELZ (XXXXX.FEET/SEC)\n#\t\t\t\t\t\t\t\tUSE ARITHDP1\n#\t10110\t\t\tPOSITION7 (XXXX.X NAUT MI)\tUSE ARITHDP4\n#\t10111\t\t\tTRIM DEGREES2 (XXX.XX DEG)\tUSE ARITH\n#\t11000\t\t\tCOMPUTED ALTITUDE (XXXXX. FEET)\n#\t\t\t\t\t\t\t\tUSE ARITHDP1\n#\t11001\t\t\tDP DEGREES (XXXX.X DEG)\t\tUSE ARITHDP3\n#\t11010\t\t\tPOSITION9 (XXXX.X FT)\t\tUSE ARITHDP3\n#\t11011\t\t\tVELOCITY4 (XXXX.X FT/SEC)\tUSE ARITHDP2\n#\t11100\t\t\tRADIANS (XXX.XXX RADIANS)\tUSE ARITHDP4\n#\n# END OF SF CONSTANT CODE NUMBERS\n\n# FOR GREATER THAN SINGLE PRECISION SCALES, PUT ADDRESS OF MAJOR PART INTO\n# NOUN TABLES.\n\n# OCTAL LOADS PLACE +0 INTO MAJOR PART, DATA INTO MINOR PART.\n\n# OCTAL DISPLAYS SHOW MINOR PART ONLY.\n\n# TO GET AT BOTH MAJOR AND MINOR PARTS (IN OCTAL), USE NOUN 01.\n\n# A NOUN MAY BE DECLARED :DECIMAL ONLY: BY MAKING BIT4=1 OF ITS COMPONENT\n# CODE NUMBER.  IF THIS NOUN IS USED WITH ANY OCTAL DISPLAY VERB, OR IF\n# DATA IS LOADED IN OCTAL, IT ALARMS.\n\n\n# IN LOADING AN :HOURS, MINUTES, SECONDS: NOUN, ALL 3 WORDS MUST BE\n# LOADED, OR ALARM.\n\n# Page 303\n\n# ALARM IF AN ATTEMPT IS MADE TO LOAD :SPLIT MINUTES/SECONDS: (MMBSS).\n# THIS IS USED FOR DISPLAY ONLY.\n\n# Page 304\n# THE FOLLOWING ROUTINES ARE FOR READING THE NOUN TABLES AND THE SF TABLES\n# (WHICH ARE IN A SEPARATE BANK FROM THE REST OF PINBALL).  THESE READING\n# ROUTINES ARE IN THE SAME BANK AS THE TABLES.  THEY ARE CALLED BY DXCH Z.\n\n# LODNNTAB LOADS NNADTEM WITH THE NNADTAB ENTRY, NNTYPTEM WITH THE\n# NNTYPTAB ENTRY.  IF THE NOUN IS MIXED, IDADITEM IS LOADED WITH THE FIRST\n# IDADDTAB ENTRY, IDAD2TEM THE SECOND IDADDTAB ENTRY, IDAD3TEM THE THIRD\n# IDADDTAB ENTRY, RUTMXTEM WITH THE RUTMXTAB ENTRY.  MIXBR IS SET FOR\n# MIXED OR NORMAL NOUN.\n\n\t\tBANK\t6\n\t\tSETLOC\tPINBALL3\n\t\tBANK\n\t\tCOUNT*\t$$/NOUNS\nLODNNTAB\tDXCH\tIDAD2TEM\t\t# SAVE RETURN INFO IN IDAD2TEM, IDAD3TEM.\n\t\tINDEX\tNOUNREG\n\t\tCAF\tNNADTAB\n\t\tTS\tNNADTEM\n\t\tINDEX\tNOUNREG\n\t\tCAF\tNNTYPTAB\n\t\tTS\tNNTYPTEM\n\t\tCS\tNOUNREG\n\t\tAD\tMIXCON\n\t\tEXTEND\n\t\tBZMF\tLODMIXNN\t\t# NOUN NUMBER G/E FIRST MIXED NOUN\n\t\tCAF\tONE\t\t\t# NOUN NUMBER L/ FIRST MIXED NOUN\n\t\tTS\tMIXBR\t\t\t# NORMAL.  +1 INTO MIXBR\n\t\tTC\tLODNLV\nLODMIXNN\tCAF\tTWO\t\t\t# MIXED.  +2 INTO MIXBR.\n\t\tTS\tMIXBR\n\t\tINDEX\tNOUNREG\n\t\tCAF\tRUTMXTAB -40D\t\t# FIRST MIXED NOUN = 40.\n\t\tTS\tRUTMXTEM\n\t\tCAF\tLOW10\n\t\tMASK\tNNADTEM\n\t\tTS\tQ\t\t\t# TEMP\n\t\tINDEX\tA\n\t\tCAF\tIDADDTAB\n\t\tTS\tIDAD1TEM\t\t# LOAD IDAD1TEM\tWITH FIRST IDADDTAB ENTRY\n\t\tEXTEND\n\t\tINDEX\tQ\t\t\t# LOAD IDAD2TEM WITH 2ND IDADDTAB ENTRY\n\t\tDCA\tIDADDTAB +1\t\t# LOAD IDAD3TEM WITH 3RD IDADDTAB ENTRY.\nLODNLV\t\tDXCH\tIDAD2TEM\t\t# PUT RETURN INFO INTO A, L.\n\t\tDXCH\tZ\n\nMIXCON\t\t=\tOCT50\t\t\t# (DEC 40)\n\n# GTSFOUT LOADS SFTEMP1, SFTEMP2 WTIH THE DP SFOUTAB ENTRIES.\n\nGTSFOUT\t\tDXCH\tSFTEMP1\t\t\t# 2X(SFCONUM) ARRIVES IN SFTEMP1.\n# Page 305\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\tSFOUTAB\nSFCOM\t\tDXCH\tSFTEMP1\n\t\tDXCH\tZ\n\n# GTSFIN LOADS SFTEMP1, SFTEMP2 WITH THE DP SFINTAB INTRIES.\n\nGTSFIN\t\tDXCH\tSFTEMP1\t\t\t# 2X(SFCONUM) ARIVES IN SFTEMP1.\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\tSFINTAB\n\t\tTCF\tSFCOM\n\n\t\t\t\t\t\t# NN \tNORMAL NOUNS\nNNADTAB\t\tOCT\t00000\t\t\t# 00 \tNOT IN USE\n\t\tOCT\t40000\t\t\t# 01 \tSPECIFY MACHINE ADDRESS (FRACTIONAL)\n\t\tOCT\t40000\t\t\t# 02 \tSPECIFY MACHINE ADDRESS (WHOLE)\n\t\tOCT\t40000\t\t\t# 03\tSPECIFY MACHINE ADDRESS (DEGREES)\n\t\tECADR\tDSPTEM1\t\t\t# 04\tANGULAR ERROR/DIFFERENCE\n\t\tECADR\tDSPTEM1\t\t\t# 05 \tANGULAR ERROR/DIFFERENCE\n\t\tECADR\tOPTION1\t\t\t# 06\tOPTION CODE\n\t\tECADR\tXREG\t\t\t# 07\tECADR OF WORD TO BE MODIFIED\n\t\t\t\t\t\t#\tONES FOR BITS TO BE MODIFIED\n\t\t\t\t\t\t#\t1 TO SET OR 0 TO RESET SELECTED BITS\n\t\tECADR\tALMCADR\t\t\t# 08 \tALARM DATA\n\t\tECADR\tFAILREG\t\t\t# 09\tALARM CODES\n\t\tOCT\t77776\t\t\t# 10\tCHANNEL TO BE SPECIFIED\n\t\tECADR\tTCSI\t\t\t# 11\tTIG OF CSI (HRS,MIN,SEC)\n\t\tECADR\tOPTIONX\t\t\t# 12\tOPTION CODE\n\t\t\t\t\t\t#\t(USED BY EXTENDED VERBS ONLY)\n\t\tECADR\tTCDH\t\t\t# 13\tTIG OF CDH (HRS,MIN,SEC)\n\t\tECADR\tDSPTEMX\t\t\t# 14\tCHECKLIST\n\t\t\t\t\t\t#\t(USED BY EXTENDED VERBS ONLY)\n\t\tOCT\t77777\t\t\t# 15\tINCREMENT MACHINE ADDRESS\n\t\tECADR\tDSPTEMX\t\t\t# 16\tTIME OF EVENT (HRS,MIN,SEC)\n\t\tOCT\t00000\t\t\t# 17\tSPARE\n\t\tECADR\tFDAIX\t\t\t# 18\tAUTO MANEUVER BALL ANGLES\n\t\tOCT\t00000\t\t\t# 19\tSPARE\n\t\tECADR\tCDUX\t\t\t# 20\tICDU ANGLES\n\t\tECADR\tPIPAX\t\t\t# 21\tPIPAS\n\t\tECADR\tTHETAD\t\t\t# 22\tNEW ICDU ANGLES\n\t\tOCT\t00000\t\t\t# 23\tSPARE\n\t\tECADR\tDSPTEM2 +1\t\t# 24\tDELTA TIME FOR AGC CLOCK (HRS,MIN,SEC)\n\t\tECADR\tDSPTEM1\t\t\t# 25\tCHECKLIST\n\t\t\t\t\t\t#\t(USED WTIH PLEASE PERFORM ONLY)\n\t\tECADR\tDSPTEM1\t\t\t# 26\tPRIO/DELAY, ADRES, BBCON\n\t\tECADR\tSMODE\t\t\t# 27\tSELF TEST ON/OFF SWITCH\n# Page 306\n\t\tOCT\t00000\t\t\t# 28\tSPARE\n\t\tOCT\t00000\t\t\t# 29\tSPARE\n\t\tOCT\t0\t\t\t# 30\tSPARE\n\t\tOCT\t0\t\t\t# 31\tSPARE\n\t\tECADR\t-TPER\t\t\t# 32\tTIME TO PERIGEE (HRS,MIN,SEC)\n\t\tECADR\tTIG\t\t\t# 33\tTIME OF IGNITION (HRS,MIN,SEC)\n\t\tECADR\tDSPTEM1\t\t\t# 34\tTIME OF EVENT (HRS,MIN,SEC)\n\t\tECADR\tTTOGO\t\t\t# 35\tTIME TO GO TO EVENT (HRS,MIN,SEC)\n\t\tECADR\tTIME2\t\t\t# 36\tTIME OF AGC CLOCK (HRS,MIN,SEC)\n\t\tECADR\tTTPI\t\t\t# 37\tTIG OF TPI (HRS,MIN,SEC)\n\t\tECADR\tTET\t\t\t# 38\tTIME OF STATE BEING INTEGRATED\n\t\tOCT\t00000\t\t\t# 39\tSPARE\n\n# END OF NNADTAB FOR NORMAL NOUNS\n\n\t\t\t\t\t\t# NN\tMIXED NOUNS\n\t\tOCT\t64000\t\t\t# 40\tTIME TO IGNITION/CUTOFF\n\t\t\t\t\t\t#\tVG\n\t\t\t\t\t\t#\tDELTA V (ACCUMULATED)\n\t\tOCT\t02003\t\t\t# 41\tTARGET\tAZIMUTH\n\t\t\t\t\t\t#\t\tELEVATION\n\t\tOCT\t24006\t\t\t# 42\tAPOGEE\n\t\t\t\t\t\t#\tPERIGEE\n\t\t\t\t\t\t#\tDELTA V (REQUIRED)\n\t\tOCT\t24011\t\t\t# 43\tLATITUDE\n\t\t\t\t\t\t#\tLONGITUDE\n\t\t\t\t\t\t#\tALTITUDE\n\t\tOCT\t64014\t\t\t# 44\tAPOGEE\n\t\t\t\t\t\t#\tPERIGEE\n\t\t\t\t\t\t#\tTFF\n\t\tOCT\t64017\t\t\t# 45\tMARKS\n\t\t\t\t\t\t#\tTTI OF NEXT BURN\n\t\t\t\t\t\t#\tMGA\n\t\tOCT\t00022\t\t\t# 46\tAUTOPILOT CONFIGURATION\n\t\tOCT\t22025\t\t\t# 47\tLEM WEIGHT\n\t\t\t\t\t\t#\tCSM WEIGHT\n\t\tOCT\t22030\t\t\t# 48\tGIMBAL PITCH TRIM\n\t\t\t\t\t\t#\tGIMBAL ROLL TRIM\n\t\tOCT\t24033\t\t\t# 49\tDELTA R\n\t\t\t\t\t\t#\tDELTA V\n\t\t\t\t\t\t#\tRADAR DATA SOURCE CODE\n\t\tOCT\t0\t\t\t# 50\tSPARE\n\t\tOCT\t22041\t\t\t# 51\tS-BAND ANTENNA\tPITCH\n\t\t\t\t\t\t#\t\t\tYAW\n\t\tOCT\t00044\t\t\t# 52\tCENTRAL ANGLE OF ACTIVE VEHICLE\n\t\tOCT\t00000\t\t\t# 53\tSPARE\n\t\tOCT\t24052\t\t\t# 54\tRANGE\n\t\t\t\t\t\t#\tRANGE RATE\n\t\t\t\t\t\t#\tTHETA\n\t\tOCT\t24055\t\t\t# 55\tNO. OF APSIDAL CROSSINGS\n# Page 307\n\t\t\t\t\t\t#\tELEVATION ANGLE\n\t\t\t\t\t\t#\tCENTRAL ANGLE\n\t\tOCT\t02060\t\t\t# 56\tRR LOS\tAZIMUTH\n\t\t\t\t\t\t#\t\tELEVATION\n\t\tOCT\t20063\t\t\t# 57\tDELTA R\n\t\tOCT\t24066\t\t\t# 58\tPERIGEE ALT\n\t\t\t\t\t\t#\tDELTA V TPI\n\t\t\t\t\t\t#\tDELTA V TPF\n\t\tOCT\t24071\t\t\t# 59\tDELTA VELOCITY LOS\n\t\tOCT\t24074\t\t\t# 60\tHORIZONTAL VELOCITY\n\t\t\t\t\t\t#\tALTITUDE RATE\n\t\t\t\t\t\t#\tCOMPUTED ALTITUDE\n\t\tOCT\t64077\t\t\t# 61\tTIME TO GO IN BRAKING PHASE\n\t\t\t\t\t\t#\tTIME TO IGNITION\n\t\t\t\t\t\t#\tCROSS RANGE DISTANCE\n\t\tOCT\t64102\t\t\t# 62\tABSOLUTE VALUE OF VELOCITY\n\t\t\t\t\t\t#\tTIME TO IGNITION\n\t\t\t\t\t\t#\tDELTA V (ACCUMULATED)\n\t\tOCT\t24105\t\t\t# 63\tABSOLUTE VALUE OF VELOCITY\n\t\t\t\t\t\t#\tALTITUDE RATE\n\t\t\t\t\t\t#\tCOMPUTED ALTITUDE\n\t\tOCT\t64110\t\t\t# 64\tTIME LEFT FOR REDESIGNATION -- LPD ANGLE\n\t\t\t\t\t\t#\tALTITUDE RATE\n\t\t\t\t\t\t#\tCOMPUTED ALTITUDE\n\t\tOCT\t24113\t\t\t# 65\tSAMPLED AGC TIME (HRS,MIN,SEC)\n\t\t\t\t\t\t#\t(FETCHED IN INTERRUPT)\n\t\tOCT\t62116\t\t\t# 66\tLR\tRANGE\n\t\t\t\t\t\t#\t\tPOSITION\n\t\tOCT\t04121\t\t\t# 67\tLRVX\n\t\t\t\t\t\t#\tLRVY\n\t\t\t\t\t\t#\tLRVZ\n\t\tOCT\t64124\t\t\t# 68\tSLANT RANGE TO LANDING SIGHT\n\t\t\t\t\t\t#\tTIME TO GO IN BRAKING PHASE\n\t\t\t\t\t\t#\tLR ALTITUDE -- COMPUTED ALTITUDE\n\t\tOCT\t00000\t\t\t# 69\tSPARE\n\t\tOCT\t04132\t\t\t# 70\tAOT DETENT CODE/STAR CODE\n\t\tOCT\t04135\t\t\t# 71\tAOT DETENT CODE/STAR CODE\n\t\tOCT\t02140\t\t\t# 72\tRR\t360 -- TRUNNION ANGLE\n\t\t\t\t\t\t#\t\tSHAFT ANGLE\n\t\tOCT\t02143\t\t\t# 73\tNEW RR\t360 -- TRUNNION ANGLE\n\t\t\t\t\t\t#\t\tSHAFT ANGLE\n\t\tOCT\t64146\t\t\t# 74\tTIME TO IGNITION\n\t\t\t\t\t\t#\tYAWAFTER VEHICLE RISE\n\t\t\t\t\t\t#\tPITCH AFTER VEHICLE RISE\n\t\tOCT\t64151\t\t\t# 75\tDELTA ALTITUDE CDH\n\t\t\t\t\t\t#\tDELTA TIME (CDH-CSI OR TPI-CDH)\n\t\t\t\t\t\t#\tDELTA TIME (TPI-CDH OR TPI-NOMTPI)\n\t\tOCT\t24154\t\t\t# 76\tDESIRED HORIZONTAL VELOCITY\n\t\t\t\t\t\t#\tDESIRED RADIAL VELOCITY\n\t\t\t\t\t\t#\tCROSS-RANGE DISTANCE\n# Page 308\n\t\tOCT\t62157\t\t\t# 77\tTIME TO ENGINE CUTOFF\n\t\t\t\t\t\t#\tVELOCITY NORMAL TO CSM PLANE\n\t\tOCT\t02162\t\t\t# 78\tRR\tRANGE\n\t\t\t\t\t\t#\t\tRANGE RATE\n\t\tOCT\t24165\t\t\t# 79\tCURSOR ANGLE\n\t\t\t\t\t\t#\tSPIRAL ANGLE\n\t\t\t\t\t\t#\tPOSITION CODE\n\t\tOCT\t02170\t\t\t# 80\tDATA INDICATOR\n\t\t\t\t\t\t#\tOMEGA\n\t\tOCT\t24173\t\t\t# 81\tDELTA V (LV)\n\t\tOCT\t24176\t\t\t# 82\tDELTA V (LV)\n\t\tOCT\t24201\t\t\t# 83\tDELTA V (BODY)\n\t\tOCT\t24204\t\t\t# 84\tDELTA V (OTHER VEHICLE)\n\t\tOCT\t24207\t\t\t# 85\tVG (BODY)\n\t\tOCT\t24212\t\t\t# 86\tVG (LV)\n\t\tOCT\t02215\t\t\t# 87\tBACKUP OPTICS LOS\tAZIMUTH\n\t\t\t\t\t\t#\t\t\t\tELEVATION\n\t\tOCT\t24220\t\t\t# 88\tHALF UNIT SUN OR PLANET VECTOR\n\t\tOCT\t24223\t\t\t# 89\tLANDMARK\tLATITUDE\n\t\t\t\t\t\t#\t\t\tLONGITUDE/2\n\t\t\t\t\t\t#\t\t\tALTITUDE\n\t\tOCT\t24226\t\t\t# 90\tY\n\t\t\t\t\t\t#\tY DOT\n\t\t\t\t\t\t#\tPSI\n\t\tOCT\t04231\t\t\t# 91\tALTITUDE\n\t\t\t\t\t\t#\tVELOCITY\n\t\t\t\t\t\t#\tFLIGHT PATH ANGLE\n\t\tOCT\t00000\t\t\t# 92\tSPARE\n\t\tOCT\t04237\t\t\t# 93\tDELTA GYRO ANGLES\n\t\tOCT\t00000\t\t\t# 94\tSPARE\n\t\tOCT\t0\t\t\t# 95\tSPARE\n\t\tOCT\t0\t\t\t# 96\tSPARE\n\t\tOCT\t04253\t\t\t# 97\tSYSTEM TEST INPUTS\n\t\tOCT\t04256\t\t\t# 98\tSYSTEM TEST RESULTS\n\t\tOCT\t24261\t\t\t# 99\tRMS IN POSITION\n\t\t\t\t\t\t#\tRMS IN VELOCITY\n\t\t\t\t\t\t#\tRMS IN BIAS\n\n# END OF NNADTAB FOR MIXED NOUNS\n\n\t\t\t\t\t\t# NN\tNORMAL NOUNS\nNNTYPTAB\tOCT\t00000\t\t\t# 00\tNOT IN USE\n\t\tOCT\t04040\t\t\t# 01\t3COMP FRACTIONAL\n\t\tOCT\t04140\t\t\t# 02\t3COMP WHOLE\n\t\tOCT\t04102\t\t\t# 03\t3COMP CDU DEGREES\n\t\tOCT\t00504\t\t\t# 04\t1COMP DPDEG(360)\n\t\tOCT\t00504\t\t\t# 05\t1COMP DPDEG(360)\n\t\tOCT\t04000\t\t\t# 06\t3COMP OCTAL ONLY\n\t\tOCT\t04000\t\t\t# 07 \t3COMP OCTAL ONLY\n\t\tOCT\t04000\t\t\t# 08\t3COMP OCTAL ONLY\n# Page 309\n\t\tOCT\t04000\t\t\t# 09\t3COMP OCTAL ONLY\n\t\tOCT\t00000\t\t\t# 10\t1COMP OCTAL ONLY\n\t\tOCT\t24400\t\t\t# 11\t3COMP HMS (DEC ONLY)\n\t\tOCT\t02000\t\t\t# 12\t2COMP OCTAL ONLY\n\t\tOCT\t24400\t\t\t# 13\t3COMP HMS (DEC ONLY)\n\t\tOCT\t04140\t\t\t# 14\t3COMP WHOLE\n\t\tOCT\t00000\t\t\t# 15\t1COMP OCTAL ONLY\n\t\tOCT\t24400\t\t\t# 16\t3COMP HMS (DEC ONLY)\n\t\tOCT\t0\t\t\t# 17 \tSPARE\n\t\tOCT\t04102\t\t\t# 18\t3COMP CDU DEG\n\t\tOCT\t00000\t\t\t# 19\tSPARE\n\t\tOCT\t04102\t\t\t# 20\t3COMP CDU DEGREES\n\t\tOCT\t04140\t\t\t# 21\t3COMP WHOLE\n\t\tOCT\t04102\t\t\t# 22\t3COMP CDU DEGREES\n\t\tOCT\t00000\t\t\t# 23 \tSPARE\n\t\tOCT\t24400\t\t\t# 24\t3COMP HMS (DEC ONLY)\n\t\tOCT\t04140\t\t\t# 25\t3COMP WHOLE\n\t\tOCT\t04000\t\t\t# 26\t3COMP OCTAL ONLY\n\t\tOCT\t00140\t\t\t# 27\t1COMP WHILE\n\t\tOCT\t00000\t\t\t# 28\tSPARE\n\t\tOCT\t00000\t\t\t# 29\tSPARE\n\t\tOCT\t0\t\t\t# 30\tSPARE\n\t\tOCT\t0\t\t\t# 31\tSPARE\n\t\tOCT\t24400\t\t\t# 32 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 33 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 34\t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 35 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 36 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 37 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t24400\t\t\t# 38 \t3COMP HMS (DEC ONLY)\n\t\tOCT\t00000\t\t\t# 39\tSPARE\n\n# END OF NNTYPTAB FOR NORMAL NOUNS\n\n\t\t\t\t\t\t# NN\tMIXED NOUNS\n\t\tOCT\t24500\t\t\t# 40\t3COMP\tMIN/SEC, VEL3, VEL3\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t00542\t\t\t# 41\t2COMP\tCDU DEG, ELEV DEG\n\t\tOCT\t24410\t\t\t# 42\t3COMP\tPOS4, POS4, VEL3\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t20204\t\t\t# 43\t3COMP\tDPDEG(360), DPDEG(360) POS4\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00410\t\t\t# 44\t3COMP\tPOS4, POS4, MIN/SEC\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t10000\t\t\t# 45\t3COMP\tWHOLE, MIN/SEC, DPDEG(360)\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t00000\t\t\t# 46\t1COMP \tOCTAL ONLY\n\t\tOCT\t00306\t\t\t# 47\t2COMP\tWEIGHT2 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t01367\t\t\t# 48\t2COMP\tTRIM DEG2 FOR EACH\n# Page 310\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00510\t\t\t# 49\t3COMP\tPOS4, VEL3, WHOLE\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t0\t\t\t# 50\tSPARE\n\t\tOCT\t00204\t\t\t# 51\t2COMP\tDPDEG(360), DPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00004\t\t\t# 52\t1COMP\tDPDEG(360)\n\t\tOCT\t00000\t\t\t# 53\tSPARE\n\t\tOCT\t10507\t\t\t# 54\t3COMP\tPOS5, VEL3, DPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t10200\t\t\t# 55\t3COMP\tWHOLE, DPDEG(360), DPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00204\t\t\t# 56\t2COMP\tDPDEG(360), DPDEG(360)\n\t\tOCT\t00010\t\t\t# 57\t1COMP\tPOS4\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24510\t\t\t# 58\t3COMP\tPOS4, VEL3, VEL3\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 59\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t60512\t\t\t# 60\t3COMP\tVEL3, VEL3, COMP ALT\n\t\t\t\t\t\t# \t\t(DEC ONLY)\n\t\tOCT\t54000\t\t\t# 61\t3COMP \tMIN/SEC, MIN/SEC, POS7\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t24012\t\t\t# 62\t3COMP\tVEL3, MIN/SEC, VEL3\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t60512\t\t\t# 63\t3COMP\tVEL3, VEL3, COMP ALT\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t60500\t\t\t# 64\t3COMP\t2INT, VEL3, COMP ALT\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t00000\t\t\t# 65\t3COMP\tHMS (DEC ONLY)\n\t\tOCT\t00016\t\t\t# 66\t2COMP \tLANDING RADAR ALT, POSITION\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t53223\t\t\t# 67\t3COMP\tLANDING RADAR VELX, Y, Z\n\t\tOCT\t60026\t\t\t# 68\t3COMP\tPOS7, MIN/SEC, COMP ALT\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t00000\t\t\t# 69\tSPARE\n\t\tOCT\t0\t\t\t# 70\t3COMP\tOCTAL ONLY FOR EACH\n\t\tOCT\t0\t\t\t# 71\t3COMP\tOCTAL ONLY FOR EACH\n\t\tOCT\t00102\t\t\t# 72\t2COMP\t360-CDU DEG, CDU DEG\n\t\tOCT\t00102\t\t\t# 73\t2COMP\t360-CDU DEG, CDU DEG\n\t\tOCT\t10200\t\t\t# 74\t3COMP\tMIN/SEC, DPDEG(360), DPDEG(360)\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t00010\t\t\t# 75\t3COMP\tPOS4, MIN/SEC, MIN/SEC\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\n\t\tOCT\t20512\t\t\t# 76\t3COMP\tVEL3, VEL3, POS4\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00500\t\t\t# 77\t2COMP\tMIN/SEC, VEL3\n\t\t\t\t\t\t#\t\t(NO LOAD, DEC ONLY)\n\t\tOCT\t00654\t\t\t# 78\t2 COMP\tRR RANGE, RR RANGE RATE\n\t\tOCT\t00102\t\t\t# 79\t3COMP\tCDU DEG, CDU DEG, WHOLE\n# Page 311\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00200\t\t\t# 80\t2COMP\tWHOLE, DPDEG(360)\n\t\tOCT\t24512\t\t\t# 81\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 82\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 83\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 84\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 85\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t24512\t\t\t# 86\t3COMP\tVEL3 FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t00102\t\t\t# 87\t2COMP\tCDU DEG FOR EACH\n\t\tOCT\t0\t\t\t# 88\t3COMP\tFRAC FOR EACH\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t16143\t\t\t# 89\t3COMP \tDPDEG(90), DPDEG(90), POS5\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t10507\t\t\t# 90\t3COMP\tPOS5, VEL3, DEPDEG(360)\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\t\tOCT\t10450\t\t\t# 91\t3COMP\tPOS4, VEL2, DPDEG(360)\n\t\tOCT\t00000\t\t\t# 92\tSPARE\n\t\tOCT\t06143\t\t\t# 93\t3COMP\tDPDEG(90) FOR EACH\n\t\tOCT\t00000\t\t\t# 94\tSPARE\n\t\tOCT\t0\t\t\t# 95\tSPARE\n\t\tOCT\t0\t\t\t# 96\tSPARE\n\t\tOCT\t00000\t\t\t# 97\t3COMP\tWHOLE FOR EACH\n\t\tOCT \t00000\t\t\t# 98\t3COMP\tWHOLE, FRAC, WHOLE\n\t\tOCT\t71572\t\t\t# 99\t3COMP\tPOS9, VEL4, RADIANS\n\t\t\t\t\t\t#\t\t(DEC ONLY)\n\n# END OF NNTYPTAB FOR MIXED NOUNS\n\nSFINTAB\t\tOCT\t00006\t\t\t# WHOLE, DP TIME (SEC)\n\t\tOCT\t03240\n\t\tOCT\t00000\t\t\t# SPARE\n\t\tOCT\t00000\n\t\tOCT\t00000\t\t\t# CDU DEGREES, 360-CDU DEGREES\n\t\tOCT\t00000\t\t\t#\t(SFCONS IN DEGINSF)\n\t\tOCT\t10707\t\t\t# DP DEGREES (90)\n\t\tOCT\t03435\t\t\t#\tUPPED BY 1\n\t\tOCT\t13070\t\t\t# DP DEGREES (360) (POINT BETWN BITS 11-12)\n\t\tOCT\t34345\t\t\t#\tUPPED BY 1\n\t\tOCT\t00005\t\t\t# DEGREES (180)\n\t\tOCT\t21616\n\t\tOCT\t26113\t\t\t# WEIGHT2\n\t\tOCT\t31713\n\t\tOCT\t00070\t\t\t# POSITION5\n\t\tOCT\t20460\n# Page 312\n\t\tOCT\t01065\t\t\t# POSITION4\n\t\tOCT\t05740\n\t\tOCT\t11414\t\t\t# VELOCITY2 \t(POINT BETWN BITS 11-12)\n\t\tOCT\t31463\n\t\tOCT\t07475\t\t\t# VELOCITY3\n\t\tOCT\t16051\n\t\tOCT\t00001\t\t\t# ELEVATION DEGREES\n\t\tOCT\t03434\n\t\tOCT\t00047\t\t\t# RENDEZVOUS RADAR RANGE\n\t\tOCT\t21135\n\t\tOCT\t77766\t\t\t# RENDESVOUS RADAR RANGE RATE\n\t\tOCT\t50711\n\t\t2DEC*\t.9267840599 E5 B-28*\t# LANDING RADAR ALTITUDE\n\n\t\tOCT\t00002\t\t\t# INITIAL/FINAL ALTITUDE\n\t\tOCT\t23224\n\t\tOCT\t00014\t\t\t# ALTITUDE RATE\n\t\tOCT\t06500\n\t\tOCT\t00012\t\t\t# FORWARD/LATERAL VELOCITY\n\t\tOCT\t36455\n\t\tOCT\t04256\t\t\t# ROT HAND CONT ANGLE RATE\n\t\tOCT\t07071\n\t\t2DEC*\t-1.552795030 E5 B-28*\t# LANDING RADAR VELX\n\n\t\t2DEC*\t.8250825087 E5 B-28*\t# LANDING RADAR VELY\n\n\t\t2DEC*\t1.153668673 E5 B-28*\t# LANDING RADAR VELZ\n\n\t\tOCT\t04324\t\t\t# POSITION7\n\t\tOCT\t27600\n\t\tOCT\t00036\t\t\t# TRIM DEGREES2\n\t\tOCT\t20440\n\t\tOCT\t00035\t\t\t# COMPUTED ALTITUDE\n\t\tOCT\t30400\n\t\tOCT\t23420\t\t\t# DP DEGREES\n\t\tOCT\t00000\n\t\t2DEC\t30480 B-19\t\t# POSITION 9\n\n\t\t2DEC\t30.48 B-7\t\t# VELOCITY4\n\n\t\t2DEC\t100 B-8\t\t\t# RADIANS\n\n\t\t\t\t\t\t# END OF SFINTAB\n\nSFOUTAB\t\tOCT\t05174\t\t\t# WHOLE, DP TIME (SEC)\n\t\tOCT\t13261\n\t\tOCT\t00000\t\t\t# SPARE\n\t\tOCT\t00000\n\t\tOCT\t00000\t\t\t# CDU DEGREES, 360-CDU DEGREES\n# Page 313\n\t\tOCT\t00000\t\t\t#\t(SFCONS IN DEGOUTSF, 360 CDUO)\n\t\tOCT\t00714\t\t\t# DP DEGREES (90) (POINT BETWN BITS 7-8)\n\t\tOCT\t31463\n\t\tOCT\t13412\t\t\t# DP DEGREES (360)\n\t\tOCT\t07534\n\t\tOCT\t05605\t\t\t# DEGREES (180)\n\t\tOCT\t03656\n\t\tOCT\t00001\t\t\t# WEIGHT2\n\t\tOCT\t16170\n\t\tOCT\t00441\t\t\t# POSITION5\n\t\tOCT\t34306\n\t\tOCT\t07176\t\t\t# POSITION4\t(POINT BETWN BITS 7-8)\n\t\tOCT\t21603\n\t\tOCT\t15340\t\t\t# VELOCITY2\n\t\tOCT\t15340\n\t\tOCT\t01031\t\t\t# VELOCITY3\t(POINT BETWN BITS 7-8)\n\t\tOCT\t21032\n\t\tOCT\t34631\t\t\t# ELEVATION DETREES\n\t\tOCT\t23146\n\t\tOCT\t00636\t\t\t# RENDEZVOUS RADAR RANGE\n\t\tOCT\t14552\n\t\tOCT\t74552\t\t\t# RENDEZVOUS RADAR RANGE RATE\n\t\tOCT\t70307\n\t\t2DEC\t1.079 E-5 B14\t\t# LANDING RADAR ALTITUDE\n\n\t\tOCT\t14226\t\t\t# INITIAL/FINAL ALTITUDE\n\t\tOCT\t31757\n\t\tOCT\t02476\t\t\t# ALTITUDE RATE\n\t\tOCT\t05531\n\t\tOCT\t02727\t\t\t# FORWARD/LATERAL VELOCTY\n\t\tOCT\t16415\n\t\tOCT\t00007\t\t\t# ROT HAND CONT ANGLE RATE\n\t\tOCT\t13734\n\t\t2DEC\t-.6440 E-5 B14\t\t# LANDING RADAR VELX\n\n\t\t2DEC\t1.212 E-5 B14\t\t# LANDING RADAR VELY\n\n\t\t2DEC\t.8668 E-5 B14\t\t# LANDING RADAR VELZ\n\n\t\tOCT\t34772\t\t\t# POSITION7\n\t\tOCT\t07016\n\t\tOCT\t01030\t\t\t# TRIM DEGREES2\n\t\tOCT\t33675\n\t\tOCT\t01046\t\t\t# COMPUTED ALTITUDE\n\t\tOCT\t15700\n\t\tOCT\t00321\t\t\t# DP DEGREES\n\t\tOCT\t26706\n\t\t2DEC\t17.2010499 B-7\t\t# POSITION 9\n\n\t\t2DEC\t.032808399\t\t# VELOCITY4\n# Page 314\n\t\t2DEC\t.32\t\t\t# RADIANS\n\n\t\t\t\t\t\t# END OF SFOUTAB\n\n\t\t\t\t\t\t# NN \tSF CONSTANT\t\tSF ROUTINE\nIDADDTAB\tECADR\tTTOGO\t\t\t# 40\tMIN/SEC\t\t\tM/S\n\t\tECADR\tVGDISP\t\t\t# 40\tVEL3\t\t\tDP3\n\t\tECADR\tDVTOTAL\t\t\t# 40\tVEL3\t\t\tDP3\n\t\tECADR\tDSPTEM1\t\t\t# 41\tCDU DEG\t\t\tCDU\n\t\tECADR\tDSPTEM1 +1\t\t# 41\tELEV DEG\t\tARTH\n\t\tOCT\t0\t\t\t# 41\tSPARE COMPONENT\n\t\tECADR\tHAPO\t\t\t# 42\tPOS4\t\t\tDP3\n\t\tECADR\tHPER\t\t\t# 42\tPOS4\t\t\tDP3\n\t\tECADR\tVGDISP\t\t\t# 42 \tVEL3\t\t\tDP3\n\t\tECADR\tLAT\t\t\t# 43\tDPDEG(360)\t\tDP4\n\t\tECADR\tLONG\t\t\t# 43\tDPDEG(360\t\tDP4\n\t\tECADR\tALT\t\t\t# 43\tPOS4\t\t\tDP3\n\t\tECADR\tHAPOX\t\t\t# 44\tPOS4\t\t\tDP3\n\t\tECADR\tHPERX\t\t\t# 44\tPOS4\t\t\tDP3\n\t\tECADR\tTFF\t\t\t# 44\tMIN/SEC\t\t\tM/S\n\t\tECADR\tTRKMKCNT\t\t# 45\tWHOLE\t\t\tARTH\n\t\tECADR\tTTOGO\t\t\t# 45\tMIN/SEC\t\t\tM/S\n\t\tECADR\t+MGA\t\t\t# 45\tDPDEG(360)\t\tDP4\n\t\tECADR\tDAPDATR1\t\t# 46\tOCTAL ONLY\t\tOCT\n\t\tOCT\t0\t\t\t# 46\tSPARE COMPONENT\n\t\tOCT\t0\t\t\t# 46\tSPARE COMPONENT\n\t\tECADR\tLEMMASS\t\t\t# 47\tWEIGHT2\t\t\tARTH1\n\t\tECADR\tCSMMASS\t\t\t# 47\tWEIGHT2\t\t\tARTH1\n\t\tOCT\t0\t\t\t# 47\tSPARE COMPONENT\n\t\tECADR\tPITTIME\t\t\t# 48\tTRIM DEG2\t\tARTH\n\t\tECADR\tROLLTIME\t\t# 48\tTRIM DEG2\t\tARTH\n\t\tOCT\t0\t\t\t# 48\tSPARE COMPONENT\n\t\tECADR\tR22DISP\t\t\t# 49\tPOS4\t\t\tDP3\n\t\tECADR\tR22DISP +2\t\t# 49\tVEL3\t\t\tDP3\n\t\tECADR\tWHCHREAD\t\t# 49\tWHOLE\t\t\tARTH\n\t\tOCT\t0\t\t\t# 50\tSPARE\n\t\tOCT\t0\t\t\t# 50 \tSPARE\n\t\tOCT\t0\t\t\t# 50\tSPARE\n\t\tECADR\tALPHASB\t\t\t# 51\tDPDEG(360)\t\tDP4\n\t\tECADR\tBETASB\t\t\t# 51\tDPDEG(360)\t\tDP4\n\t\tOCT\t0\t\t\t# 51\tSPARE COMPONENT\n\t\tECADR\tACTCENT\t\t\t# 52\tDPDEG(360)\t\tDP4\n\t\tOCT\t00000\t\t\t# 52\tSPARE COMPONENT\n\t\tOCT\t00000\t\t\t# 52 \tSPARE COMPONENT\n\t\tOCT\t00000\t\t\t# 53\tSPARE\n\t\tOCT\t00000\t\t\t# 53\n\t\tOCT\t00000\t\t\t# 53\n\t\tECADR\tRANGE\t\t\t# 54\tPOS5\t\t\tDP1\n# Page 315\n\t\tECADR\tRRATE\t\t\t# 54\tVEL3\t\t\tDP3\n\t\tECADR\tRTHETA\t\t\t# 54\tDPDEG(360)\t\tDP4\n\t\tECADR\tNN\t\t\t# 55\tWHOLE\t\t\tARTH\n\t\tECADR\tELEV\t\t\t# 55\tDPDEG(360)\t\tDP4\n\t\tECADR\tCENTANG\t\t\t# 55\tDPDEG(360)\t\tDP4\n\t\tECADR\tRR-AZ\t\t\t# 56\tDPDEG(360)\t\tDP4\n\t\tECADR\tRR-ELEV\t\t\t# 56\tDPDEG(360)\t\tDP4\n\t\tOCT\t0\t\t\t# 56\tSPARE COMPONENT\n\t\tECADR\tDELTAR\t\t\t# 57\tPOS4\t\t\tDP3\n\t\tOCT\t0\t\t\t# 57\tSPARE COMPONENT\n\t\tOCT\t0\t\t\t# 57\tSPARE COMPONENT\n\t\tECADR\tPOSTTPI\t\t\t# 58\tPOS4\t\t\tDP3\n\t\tECADR\tDELVTPI\t\t\t# 58\tVEL3\t\t\tDP3\n\t\tECADR\tDELVTPF\t\t\t# 58\tVEL3\t\t\tDP3\n\t\tECADR\tDVLOS\t\t\t# 59\tVEL3\t\t\tDP3\n\t\tECADR\tDVLOS +2\t\t# 59\tVEL3\t\t\tDP3\n\t\tECADR\tDVLOS +4\t\t# 59\tVEL3\t\t\tDP3\n\t\tECADR\tVHORIZ\t\t\t# 60\tVEL3\t\t\tDP3\n\t\tECADR\tHDOTDISP\t\t# 60\tVEL3\t\t\tDP3\n\t\tECADR\tHCALC\t\t\t# 60\tCOMP ALT\t\tDP1\n\t\tECADR\tTTFDISP\t\t\t# 61\tMIN/SEC\t\t\tM/S\n\t\tECADR\tTTOGO\t\t\t# 61\tMIN/SEC\t\t\tM/S\n\t\tECADR\tOUTOFPLN\t\t# 61\tPOS7\t\t\tDP4\n\t\tECADR\tABVEL\t\t\t# 62\tVEL3\t\t\tDP3\n\t\tECADR\tTTOGO\t\t\t# 62\tMIN/SEC\t\t\tM/S\n\t\tECADR\tDVTOTAL\t\t\t# 62\tVEL3\t\t\tDP3\n\t\tECADR\tABVEL\t\t\t# 63\tVEL3\t\t\tDP3\n\t\tECADR\tHDOTDISP\t\t# 63\tVEL3\t\t\tDP3\n\t\tECADR\tHCALC1\t\t\t# 63\tCOMP ALT\t\tDP1\n\t\tECADR\tFUNNYDSP\t\t# 64 \t2INT\t\t\t2INT\n\t\tECADR\tHDOTDISP\t\t# 64\tVEL3\t\t\tDP3\n\t\tECADR\tHCALC\t\t\t# 64\tCOMP ALT\t\tDP1\n\t\tECADR\tSAMPTIME\t\t# 65\tHMS (MIXED ONLY TO KEEP CODE 65) HMS\n\t\tECADR\tSAMPTIME\t\t# 65\tHMS\t\t\tHMS\n\t\tECADR\tSAMPTIME\t\t# 65\tHMS\t\t\tHMS\n\t\tECADR\tRSTACK +6\t\t# 66\tLANDING RADAR ALT\tDP1\n\t\tOCT\t0\t\t\t# 66\tLR POSITION\t\tLRPOS\n\t\tOCT\t0\t\t\t# 66\tSPARE COMPONENT\n\t\tECADR\tRSTACK\t\t\t# 67\tLANDING RADAR VELX\tDP1\n\t\tECADR\tRSTACK +2\t\t# 67\tLANDING RADAR VELY\tDP1\n\t\tECADR\tRSTACK +4\t\t# 67\tLANDING RADAR VELZ\tDP1\n\t\tECADR\tRANGEDSP\t\t# 68\tPOS7\t\t\tDP4\n\t\tECADR\tTTFDISP\t\t\t# 68\tMIN/SEC\t\t\tM/S\n\t\tECADR\tDELTAH\t\t\t# 68\tCOMP ALT\t\tDP1\n\t\tOCT\t00000\t\t\t# 69\tSPARE\n\t\tOCT\t00000\t\t\t# 69\n\t\tOCT\t00000\t\t\t# 69\n\t\tECADR\tAOTCODE\t\t\t# 70\tOCTAL ONLY\t\tOCT\n\t\tECADR\tAOTCODE +1\t\t# 70 \tOCTAL ONLY\t\tOCT\n\t\tECADR\tAOTCODE +2\t\t# 70\tOCTAL ONLY\t\tOCT\n# Page 316\n\t\tECADR\tAOTCODE\t\t\t# 71\tOCTAL ONLY\t\tOCT\n\t\tECADR\tAOTCODE +1\t\t# 71\tOCTAL ONLY\t\tOCT\n\t\tECADR\tAOTCODE +2\t\t# 71 \tOCTAL ONLY\t\tOCT\n\t\tECADR\tCDUT\t\t\t# 72\t360-CDU DEG\t\t360-CDU\n\t\tECADR\tCDUS\t\t\t# 72\tCDU DEG\t\t\tCDU\n\t\tOCT\t0\t\t\t# 72\tSPARE COMPONENT\n\t\tECADR\tTANG\t\t\t# 73\t360-CDU DEG\t\t360-CDU\n\t\tECADR\tTANG +1\t\t\t# 73\tCDU DEG\t\t\tCDU\n\t\tOCT\t0\t\t\t# 73\tSPARE COMPONENT\n\t\tECADR\tTTOGO\t\t\t# 74\tMIN/SEC\t\t\tM/S\n\t\tECADR\tYAW\t\t\t# 74\tDPDEG(360)\t\tDP4\n\t\tECADR\tPITCH\t\t\t# 74\tDPDEG(360)\t\tDP4\n\t\tECADR\tDIFFALT\t\t\t# 75\tPOS4\t\t\tDP3\n\t\tECADR\tT1TOT2\t\t\t# 75\tMIN/SEC\n\t\tECADR\tT2TOT3\t\t\t# 75\tMIN/SEC\t\t\tM/S\n\t\tECADR\tZDOTD\t\t\t# 76\tVEL3\t\t\tDP3\n\t\tECADR\tRDOTD\t\t\t# 76\tVEL3\t\t\tDP3\n\t\tECADR\tXRANGE\t\t\t# 76\tPOS4\t\t\tDP3\n\t\tECADR\tTTOGO\t\t\t# 77\tMIN/SEC\t\t\tM/S\n\t\tECADR\tYDOT\t\t\t# 77 \tVEL3\t\t\tDP3\n\t\tOCT\t0\t\t\t# 77\tSPARE COMPONENT\n\t\tECADR\tRSTACK\t\t\t# 78 \tRR RANGE\t\tDP1\n\t\tECADR\tRSTACK +2\t\t# 78\tRR RANGE RATE\t\tDP1\n\t\tOCT\t00000\t\t\t# 78\tSPARE COMPONENT\n\t\tECADR\tCURSOR\t\t\t# 79\tCDU DEG\t\t\tCDU\n\t\tECADR\tSPIRAL\t\t\t# 79\tCDU DEG\t\t\tCDU\n\t\tECADR\tPOSCODE\t\t\t# 79\tWHOLE\t\t\tARTH\n\t\tECADR\tDATAGOOD\t\t# 80\tWHOLE\t\t\tARTH\n\t\tECADR\tOMEGAD\t\t\t# 80\tDPDEG(360)\t\tDP4\n\t\tOCT\t0\t\t\t# 80\tSPARE COMPONENT\n\t\tECADR\tDELVLVC\t\t\t# 81\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +2\t\t# 81\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +4\t\t# 81\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC\t\t\t# 82\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +2\t\t# 82\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +4\t\t# 82\tVEL3\t\t\tDP3\n\t\tECADR\tDELVIMU\t\t\t# 83\tVEL3\t\t\tDP3\n\t\tECADR\tDELVIMU +2\t\t# 83\tVEL3\t\t\tDP3\n\t\tECADR\tDELVIMU +4\t\t# 83\tVEL3\t\t\tDP3\n\t\tECADR\tDELVOV\t\t\t# 84\tVEL3\t\t\tDP3\n\t\tECADR\tDELVOV +2\t\t# 84\tVEL3\t\t\tDP3\n\t\tECADR\tDELVOV +4\t\t# 84\tVEL3\t\t\tDP3\n\t\tECADR\tVGBODY\t\t\t# 85\tVEL3\t\t\tDP3\n\t\tECADR\tVGBODY +2\t\t# 85\tVEL3\t\t\tDP3\n\t\tECADR\tVGBODY +4\t\t# 85\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC\t\t\t# 86\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +2\t\t# 86\tVEL3\t\t\tDP3\n\t\tECADR\tDELVLVC +4\t\t# 86\tVEL3\t\t\tDP3\n\t\tECADR\tAZ\t\t\t# 87\tCDU DEG\t\t\tCDU\n\t\tECADR\tEL\t\t\t# 87\tCDU DEG\t\t\tCDU\n# Page 317\n\t\tOCT\t0\t\t\t# 87\tSPARE COMPONENT\n\t\tECADR\tSTARAD\t\t\t# 88\tFRAC\t\t\tFRAC\n\t\tECADR\tSTARAD +2\t\t# 88\tFRAC\t\t\tFRAC\n\t\tECADR\tSTARAD +4\t\t# 88\tFRAC\t\t\tFRAC\n\t\tECADR\tLANDLAT\t\t\t# 89\tDPDEG(90)\t\tDP3\n\t\tECADR\tLANDLONG\t\t# 89\tDPDEG(90)\t\tDP3\n\t\tECADR\tLANDALT\t\t\t# 89\tPOS5\t\t\tDP1\n\t\tECADR\tRANGE\t\t\t# 90\tPOS5\t\t\tDP1\n\t\tECADR\tRRATE\t\t\t# 90\tVEL3\t\t\tDP3\n\t\tECADR\tRTHETA\t\t\t# 90\tDPDEG(360)\t\tDP4\n\t\tECADR\tP21ALT\t\t\t# 91\tPOS4\t\t\tDP3\n\t\tECADR\tP21VEL\t\t\t# 91 \tVEL2\t\t\tDP4\n\t\tECADR\tP21GAM\t\t\t# 91\tDPDEG(360)\t\tDP4\n\t\tOCT\t00000\t\t\t# 92\tSPARE\n\t\tOCT\t00000\t\t\t# 92\n\t\tOCT\t00000\t\t\t# 92\n\t\tECADR\tOGC\t\t\t# 93\tDPDEG(90)\t\tDP3\n\t\tECADR\tOGC +2\t\t\t# 93\tDPDEG(90)\t\tDP3\n\t\tECADR\tOGC +4\t\t\t# 93\tDPDEG(90)\t\tDP3\n\t\tOCT\t00000\t\t\t# 94\tSPARE\n\t\tOCT\t00000\t\t\t# 94\n\t\tOCT\t00000\t\t\t# 94\n\t\tOCT\t0\t\t\t# 95\tSPARE\n\t\tOCT\t0\t\t\t# 95\tSPARE\n\t\tOCT\t0\t\t\t# 95\tSPARE\n\t\tOCT\t0\t\t\t# 96\tSPARE\n\t\tOCT\t0\t\t\t# 96\tSPARE\n\t\tOCT\t0\t\t\t# 96\tSPARE\n\t\tECADR\tDSPTEM1\t\t\t# 97\tWHOLE\t\t\tARTH\n\t\tECADR\tDSPTEM1 +1\t\t# 97\tWHOLE\t\t\tARTH\n\t\tECADR\tDSPTEM1 +2\t\t# 97\tWHOLE\t\t\tARTH\n\t\tECADR\tDSPTEM2\t\t\t# 98\tWHOLE\t\t\tARTH\n\t\tECADR\tDSPTEM2 +1\t\t# 98\tFRAC\t\t\tFRAC\n\t\tECADR\tDSPTEM2 +2\t\t# 98\tWHOLE\t\t\tARTH\n\t\tECADR\tWWPOS\t\t\t# 99 \tPOS9\t\t\tDP3\n\t\tECADR\tWWVEL\t\t\t# 99\tVEL4\t\t\tDP2\n\t\tECADR\tWWBIAS\t\t\t# 99 \tRADIANS\t\t\tDP4\n\n# END OF IDADDTAB\n\n\t\t\t\t\t\t# NN\tSF ROUTINES\nRUTMXTAB\tOCT\t16351\t\t\t# 40\tM/S, DP3, DP3\n\t\tOCT\t00142\t\t\t# 41\tCDU, ARTH\n\t\tOCT\t16347\t\t\t# 42\tDP3, DP3, DP3\n\t\tOCT\t16512\t\t\t# 43\tDP4, DP4, DP3\n\t\tOCT\t22347\t\t\t# 44\tDP3, DP3, M/S\n\t\tOCT\t24443\t\t\t# 45\tARTH, M/S, DP4\n\t\tOCT\t00000\t\t\t# 46\tOCT\n\t\tOCT\t00553\t\t\t# 47\tARITH1, ARITH1\n# Page 318\n\t\tOCT\t00143\t\t\t# 48\tARTH, ARTH\n\t\tOCT\t06347\t\t\t# 49\tDP3, DP3, ARTH\n\t\tOCT\t0\t\t\t# 50\tSPARE\n\t\tOCT\t00512\t\t\t# 51\tDP4, DP4\n\t\tOCT\t00012\t\t\t# 52\tDP4\n\t\tOCT\t00000\t\t\t# 53 \tSPARE\n\t\tOCT\t24344\t\t\t# 54\tDP1, DP3, DP4\n\t\tOCT\t24503\t\t\t# 55\tARTH, DP4, DP4\n\t\tOCT\t00512\t\t\t# 56\tDP4, DP4\n\t\tOCT\t00007\t\t\t# 57\tDP3\n\t\tOCT\t16347\t\t\t# 58\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 59\tDP3, DP3, DP3\n\t\tOCT\t10347\t\t\t# 60\tDP3, DP3, DP1\n\t\tOCT\t24451\t\t\t# 61\tM/S, M/S, DP4\n\t\tOCT\t16447\t\t\t# 62\tDP3, M/S, DP3\n\t\tOCT\t10347\t\t\t# 63\tDP3, DP3, DP1\n\t\tOCT\t10354\t\t\t# 64\t2INT, DP3, DP1\n\t\tOCT\t20410\t\t\t# 65\tHMS, HMS, HMS\n\t\tOCT\t00304\t\t\t# 66\tDP1, LRPOS\n\t\tOCT\t10204\t\t\t# 67\tDP1, DP1, DP1\n\t\tOCT\t10452\t\t\t# 68\tDP4, M/S, DP1\n\t\tOCT\t00000\t\t\t# 69\tSPARE\n\t\tOCT\t0\t\t\t# 70\tOCT, OCT, OCT\n\t\tOCT\t0\t\t\t# 71\tOCT, OCT, OCT\n\t\tOCT\t00115\t\t\t# 72\t360-CDU, CDU\n\t\tOCT\t00115\t\t\t# 73\t360-CDU, CDU\n\t\tOCT\t24511\t\t\t# 74\tM/S, DP4, DP4\n\t\tOCT\t22447\t\t\t# 75\tDP3, M/S, M/S\n\t\tOCT\t16347\t\t\t# 76\tDP3, DP3, DP3\n\t\tOCT\t00351\t\t\t# 77\tM/S, DP3\n\t\tOCT\t00204\t\t\t# 78\tDP1, DP1\n\t\tOCT\t06102\t\t\t# 79\tCDU, CDU, ARTH\n\t\tOCT\t00503\t\t\t# 80\tARTH, DP4\n\t\tOCT\t16347\t\t\t# 81\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 82\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 83\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 84\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 85\tDP3, DP3, DP3\n\t\tOCT\t16347\t\t\t# 86\tDP3, DP3, DP3\n\t\tOCT\t00102\t\t\t# 87\tCDU, CDU\n\t\tOCT\t02041\t\t\t# 88\tFRAC FOR EACH\n\t\tOCT\t10347\t\t\t# 89\tDP3, DP3, DP1\n\t\tOCT\t24344\t\t\t# 90\tDP1, DP3, DP4\n\t\tOCT\t24507\t\t\t# 91\tDP3, DP4, DP4\n\t\tOCT\t00000\t\t\t# 92\tSPARE\n\t\tOCT\t16347\t\t\t# 93\tDP3, DP3, DP3\n\t\tOCT\t00000\t\t\t# 94\tSPARE\n\t\tOCT\t0\t\t\t# 95\tSPARE\n\t\tOCT\t0\t\t\t# 96\tSPARE\n\t\tOCT\t06143\t\t\t# 97\tARTH, ARTH, ARTH\n# Page 319\n\t\tOCT\t06043\t\t\t# 98\tARTH, FRAC, ARTH\n\t\tOCT\t24247\t\t\t# 99\tDP3, DP2, DP4\n\n# END OF RUTMXTAB\n\n\t\tSBANK=\tLOWSUPER\n\n"
  },
  {
    "path": "Luminary099/PLANETARY_INERTIAL_ORIENTATION.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPLANETARY_INERTIAL_ORIENTATION.agc\n# Purpose:\tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n#\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim.lawton@gmail.com>\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1140-1148\n# Mod history:\t2009-05-28\tJVL\tUpdated from page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#    16:27 JULY 14, 1969\n\n# Page 1140\n# ..... RP-TO-R SUBROUTINE .....\n# SUBROUTINE TO CONVERT RP (VECTOR IN PLANETARY COORDINATE SYSTEM,EITHER\n#  EARTH-FIXED OR MOON-FIXED) TO R (SAME VECTOR IN THE BASIC REF. SYSTEM)\n#\n#  R=MT(T)*(RP+LPXRP)\t MT= M MATRIX TRANSPOSE\n#\n# CALLING SEQUENCE\n#  L\t   CALL\n#  L+1\t\t  RP-TO-R\n#\n# SUBROUTINES USED\n#  EARTHMX,MOONMX,EARTHL\n#\n#    ITEMS AVAILABLE FROM LAUNCH DATA\n#     504LM= THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL,EXPRESSED\n#     IN THE MOON-FIXED COORD. SYSTEM\tRADIANS\t B0\n#\tITEMS NECESSARY FOR SUBR. USED (SEE DESCRIPTION OF SUBR.)\n#\n# INPUT\n#  MPAC= 0 FOR EARTH,NON-ZERO FOR MOON\n#  0-5D= RP VECTOR\n#  6-7D= TIME\n#\n# OUTPUT\n#  MPAC= R VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON\n\n\t\tSETLOC\tPLANTIN1\n\t\tBANK\n\n\t\tCOUNT*\t$$/LUROT\n\nRP-TO-R\t\tSTQ\tBHIZ\n\t\t\tRPREXIT\n\t\t\tRPTORA\n\t\tCALL\t\t\t# COMPUTE M MATRIX FOR MOON\n\t\t\tMOONMX\t\t# LP=LM FOR MOON  RADIANS B0\n\t\tVLOAD\n\t\t\t504LM\nRPTORB\t\tVXV\tVAD\n\t\t\t504RPR\n\t\t\t504RPR\n\t\tVXM\tGOTO\n\t\t\tMMATRIX\t\t# MPAC=R=MT(T)*(RP+LPXRP)\n\t\t\tRPRPXXXX\t# RESET PUSHLOC TO 0 BEFORE EXITING\nRPTORA\t\tCALL\t\t\t# EARTH COMPUTATIONS\n\t\t\tEARTHMX\t\t# M MATRIX B-1\n\t\tCALL\n\t\t\tEARTHL\t\t# L VECTOR RADIANS B0\n\t\tMXV\tVSL1\t\t# LP=M(T)*L  RAD B-0\n\t\t\tMMATRIX\n# Page 1141\n\t\tGOTO\n\t\t\tRPTORB\n\t\tSETLOC\tPLANTIN\n\t\tBANK\n\t\tCOUNT*\t$$/LUROT\n\n# Page 1142\n# ..... R-TO-RP SUBROUTINE .....\n# SUBROUTINE TO CONVERT R (VECTOR IN REFERENCE COORD. SYSTEM) TO RP\n#  (VECTOR IN PLANETARY COORD SYSTEM) EITHER EARTH-FIXED OR MOON-FIXED\n#\n#  RP=M(T)*(R-LXR)\n#\n# CALLING SEQUENCE\n#  L\t   CALL\n#  L+1\t\t  R-TO-RP\n#\n# SUBROUTINES USED\n#  EARTHMX,MOONMX,EARTHL\n#\n# INPUT\n#  MPAC= 0 FOR EARTH, NON-ZERO FOR MOON\n#  0-5D= R VECTOR\n#  6-7D= TIME\n#\n#    ITEMS AVAILABLE FROM LAUNCH DATA\n#     504LM= THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL,EXPRESSED\n#     IN THE MOON-FIXED COORD. SYSTEM\tRADIANS B0\n#\tITEMS NECESSARY FOR SUBROUTINES USED (SEE DESCRIPTION OF SUBR.)\n#\n# OUTPUT\n#  MPAC=RP VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON\n\nR-TO-RP\t\tSTQ\tBHIZ\n\t\t\tRPREXIT\n\t\t\tRTORPA\n\t\tCALL\n\t\t\tMOONMX\n\t\tVLOAD\tVXM\n\t\t\t504LM\t\t# LP=LM\n\t\t\tMMATRIX\n\t\tVSL1\t\t\t#  L=MT(T)*LP  RADIANS B0\nRTORPB\t\tVXV\tBVSU\n\t\t\t504RPR\n\t\t\t504RPR\n\t\tMXV\t\t\t# M(T)*(R-LXR) B-2\n\t\t\tMMATRIX\nRPRPXXXX\tVSL1\tSETPD\n\t\t\t0D\n\t\tGOTO\n\t\t\tRPREXIT\nRTORPA\t\tCALL\t\t\t# EARTH COMPUTATIONS\n\t\t\tEARTHMX\n\t\tCALL\n\t\t\tEARTHL\n\t\tGOTO\t\t\t# MPAC=L=(-AX,-AY,0) RAD B-0\n\t\t\tRTORPB\n\n# Page 1143\n# ..... MOONMX SUBROUTINE .....\n# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE MOON\n#\n# CALLING SEQUENCE\n#  L\t   CALL\n#  L+1\t\t  MOONMX\n#\n# SUBROUTINES USED\n#  NEWANGLE\n#\n# INPUT\n#  6-7D= TIME\n#    ITEMS AVAILABLE FROM LAUNCH DATA\n#     BSUBO,BDOT\n#     TIMSUBO,NODIO,NODDOT,FSUBO,FDOT\n#     COSI= COS(I) B-1\n#     SINI= SIN(I) B-1\n#\tI  IS THE ANGLE BETWEEN THE MEAN LUNAR EQUATORIAL PLANE AND THE\n#\tPLANE OF THE ECLIPTIC  (1 DEGREE  32.1 MINUTES)\n#\n# OUTPUT\n#  MMATRIX= 3X3 M MATRIX B-1   (STORED IN VAC AREA)\n\nMOONMX\t\tSTQ\tSETPD\n\t\t\tEARTHMXX\n\t\t\t8D\n\t\tAXT,1\t\t\t# B REQUIRES SL 0, SL 5 IN NEWANGLE\n\t\t\t5\n\t\tDLOAD\tPDDL\t\t# PD 10D\t    8-9D=BSUBO\n\t\t\tBSUBO\t\t#\t\t    10-11D= BDOT\n\t\t\tBDOT\n\t\tPUSH\tCALL\t\t# PD 12D\n\t\t\tNEWANGLE\t# EXIT WITH PD 8D AND MPAC= B  REVS B0\n\t\tPUSH\tCOS\t\t# PD 10D\n\t\tSTODL\tCOB\t\t# PD 8D\t   COS(B) B-1\n\t\tSIN\t\t\t#\t   SIN(B) B-1\n\t\tSTODL\tSOB\t\t#           SETUP INPUT FOR NEWANGLE\n\t\t\tFSUBO\t\t# \t\t      8-9D=FSUBO\n\t\tPDDL\tPUSH\t\t# PD 10D THEN 12D   10-11D=FDOT\n\t\t\tFDOT\n\t\tAXT,1\tCALL\t\t# F REQUIRES SL 1, SL 6 IN NEWANGLE\n\t\t\t4\n\t\t\tNEWANGLE\t# EXIT WITH PD 8D AND MPAC= F REVS B0\n\t\tSTODL\tAVECTR +2\t# SAVE F TEMP\n\t\t\tNODIO\t\t#\t\t\t8-9D=NODIO\n\t\tPDDL\tPUSH\t\t# PD 10D THEN 12D     10-11D=NODDOT\n\t\t\tNODDOT\t\t#\t\t\tMPAC=T\n\t\tAXT,1\tCALL\t\t# NODE REQUIRES SL 0, SL 5 IN NEWANGLE\n\t\t\t5\n\t\t\tNEWANGLE\t# EXIT WITH PD 8D AND MPAC= NODI REVS B0\n# Page 1144\n\t\tPUSH\tCOS\t\t# PD 10D   8-9D= NODI  REVS  B0\n\t\tPUSH\t\t\t# PD 12D 10-11D= COS(NODI)  B-1\n\t\tSTORE\tAVECTR\n\t\tDMP\tSL1R\n\t\t\tCOB\t\t#\t\t\t  COS(NODI)    B-1\n\t\tSTODL\tBVECTR +2\t# PD 10D   20-25D=AVECTR= COB*SIN(NODI)\n\t\tDMP\tSL1R\t\t#\t\t\t  SOB*SIN(NODI)\n\t\t\tSOB\n\t\tSTODL\tBVECTR +4\t# PD 8D\n\t\tSIN\tPUSH\t\t# PD 10D\t\t -SIN(NODI)   B-1\n\t\tDCOMP\t\t\t#          26-31D=BVECTR= COB*COS(NODI)\n\t\tSTODL\tBVECTR\t\t# PD 8D\t\t\t  SOB*COS(NODI)\n\t\t\tAVECTR +2\t# MOVE F FROM TEMP LOC. TO 504F\n\t\tSTODL\t504F\n\t\tDMP\tSL1R\n\t\t\tCOB\n\t\tGOTO\n\t\t\tMOONMXA\n\n\t\tBANK\t25\n\t\tSETLOC\tPLANTIN3\n\t\tBANK\n\t\tCOUNT*\t$$/LUROT\n\nMOONMXA\t\tSTODL\tAVECTR +2\n\t\t\tSINNODI\t\t# 8-9D=SIN(NODI)  B-1\n\t\tDMP\tSL1R\n\t\t\tSOB\n\t\tSTODL\tAVECTR +4\t#\t\t\t   0\n\t\t\tHI6ZEROS\t#\t  8-13D= CVECTR= -SOB  B-1\n\t\tPDDL\tDCOMP\t\t# PD 10D\t\t  COB\n\t\t\tSOB\n\t\tPDDL\tPDVL\t\t# PD 12D THEN PD 14D\n\t\t\tCOB\n\t\t\tBVECTR\n\t\tVXSC\tPDVL\t\t# PD 20D\t BVECTR*SINI  B-2\n\t\t\tSINI\n\t\t\tCVECTR\n\t\tVXSC\tVAD\t\t# PD 14D\t CVECTR*COSI  B-2\n\t\t\tCOSI\n\t\tVSL1\n\t\tSTOVL\tMMATRIX +12D\t# PD 8D  M2=BVECTR*SINI+CVECTR*COSI  B-1\n\t\tVXSC\tPDVL\t\t# PD 14D\n\t\t\tSINI\t\t#\t\t CVECTR*SINI  B-2\n\t\t\tBVECTR\n\t\tVXSC\tVSU\t\t# PD 8D\t\t BVECTR*COSI  B-2\n\t\t\tCOSI\n\t\tVSL1\tPDDL\t\t# PD 14D\n\t\t\t504F\t\t# 8-13D=DVECTR=BVECTR*COSI-CVECTR*SINI B-1\n\t\tCOS\tVXSC\n# Page 1145\n\t\t\tDVECTR\n\t\tPDDL\tSIN\t\t# PD 20D  14-19D= DVECTR*COSF  B-2\n\t\t\t504F\n\t\tVXSC\tVSU\t\t# PD 14D\t  AVECTR*SINF  B-2\n\t\t\tAVECTR\n\t\tVSL1\n\t\tSTODL\tMMATRIX +6\t# M1= AVECTR*SINF-DVECTR*COSF  B-1\n\t\t\t504F\n\t\tSIN\tVXSC\t\t# PD 8D\n\t\tPDDL\tCOS\t\t# PD 14D  8-13D=DVECTR*SINF B-2\n\t\t\t504F\n\t\tVXSC\tVAD\t\t# PD 8D\t\tAVECTR*COSF B-2\n\t\t\tAVECTR\n\t\tVSL1\tVCOMP\n\t\tSTCALL\tMMATRIX\t\t# M0= -(AVECTR*COSF+DVECTR*SINF)  B-1\n\t\t\tEARTHMXX\n# COMPUTE X=X0+(XDOT)(T+T0)\n# 8-9D= X0 (REVS B-0),PUSHLOC SET AT 12D\n# 10-11D=XDOT (REVS/CSEC) SCALED B+23 FOR WEARTH,B+28 FOR NODDOT AND BDOT\n#\t\t\t  AND B+27 FOR FDOT\n#  X1=DIFFERENCE IN 23 AND SCALING OF XDOT,=0 FOR WEARTH,5 FOR NODDOT AND\n#\t\t\t\t\t   BDOT AND 4 FOR FDOT\n# 6-7D=T (CSEC B-28), TIMSUBO= (CSEC B-42 TRIPLE PREC.)\n\nNEWANGLE\tDLOAD\tSR\t\t# ENTER PD 12D\n\t\t\t6D\n\t\t\t14D\n\t\tTAD\tTLOAD\t\t# CHANGE MODE TO TP\n\t\t\tTIMSUBO\n\t\t\tMPAC\n\t\tSTODL\tTIMSUBM\t\t# T+T0 CSEC B-42\n\t\t\tTIMSUBM +1\n\t\tDMP\t\t\t# PD 10D  MULT BY XDOT IN 10-11D\n\t\tSL*\tDAD\t\t# PD 8D\t  ADD X0 IN 8-9D AFTER SHIFTING\n\t\t\t5,1\t\t#\t  SUCH THAT SCALING IS B-0\n\t\tPUSH\tSLOAD\t\t# PD 10D SAVE PARTIAL (X0+XDOT*T) IN 8-9D\n\t\t\tTIMSUBM\n\t\tSL\tDMP\n\t\t\t9D\n\t\t\t10D\t\t# XDOT\n\t\tSL*\tDAD\t\t# PD 8D\t  SHIFT SUCH THAT THIS PART OF X\n\t\t\t10D,1\t\t#\t  IS SCALED REVS/CSEC B-0\n\t\tBOV\t\t\t# TURN OFF OVERFLOW IF SET BY SHIFT\n\t\t\t+1\t\t# INSTRUCTION BEFORE EXITING\n\t\tRVQ\t\t\t# MPAC=X= X0+(XDOT)(T+T0)  REVS B0\n\n# Page 1146\n# ..... EARTHMX SUBROUTINE .....\n# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE EARTH\n#\n# CALLING SEQUENCE\n#  L\t   CALL\n#  L+1\t\t  EARTHMX\n#\n# SUBROUTINE USED\n#  NEWANGLE\n#\n# INPUT\n#    INPUT AVAILABLE FROM LAUNCH DATA\t  AZO  REVS B-0\n#\t\t\t\t\t  TEPHEM  CSEC B-42\n#  6-7D= TIME CSEC B-28\n#\n# OUTPUT\n#  MMATRIX= 3X3 M MATRIX B-1   (STORED IN VAC AREA)\n\n\t\tBANK\t26\n\t\tSETLOC\tPLANTIN1\n\t\tBANK\n\t\tCOUNT*\t$$/LUROT\n\nEARTHMX\t\tSTQ\tSETPD\t\t# SET\t8-9D=AZO\n\t\t\tEARTHMXX\n\t\t\t8D\t\t# 10-11D=WEARTH\n\t\tAXT,1\t\t\t# FOR SL 5, AND SL 10  IN NEWANGLE\n\t\t\t0\n\t\tDLOAD\tPDDL\t\t#   LEAVING PD SET AT 12D FOR NEWANGLE\n\t\t\tAZO\n\t\t\tWEARTH\n\t\tPUSH\tCALL\n\t\t\tNEWANGLE\n\t\tSETPD\tPUSH\t\t# 18-19D=504AZ\n\t\t\t18D\t\t#\t\t     COS(AZ) SIN(AZ) 0\n\t\tCOS\tPDDL\t\t# 20-37D=  MMATRIX= -SIN(AZ) COS(AZ) 0 B-1\n\t\t\t504AZ\t\t#\t\t      0       0      1\n\t\tSIN\tPDDL\n\t\t\tHI6ZEROS\n\t\tPDDL\tSIN\n\t\t\t504AZ\n\t\tDCOMP\tPDDL\n\t\t\t504AZ\n\t\tCOS\tPDVL\n\t\t\tHI6ZEROS\n\t\tPDDL\tPUSH\n\t\t\tHIDPHALF\n\t\tGOTO\n\t\t\tEARTHMXX\n\n# Page 1147\n# ..... EARTHL SUBROUTINE .....\n# SUBROUTINE TO COMPUTE L VECTOR FOR EARTH\n#\n# CALLING SEQUENCE\n#  L\t   CALL\n#  L+1\t\t  EARTHL\n#\n# INPUT\n#  AXO,AYO SET AT LAUNCH TIME WITH AYO IMMEDIATELY FOLLOWING AXO IN CORE\n#\n# OUTPUT\n#\t    -AX\n#   MPAC=   -AY    RADIANS B-0\n#\t      0\n\n\t\tBANK\t06\n\t\tSETLOC\tEARTHLOC\n\t\tBANK\n\t\tCOUNT*\t$$/LUROT\n\nEARTHL\t\tDLOAD\tDCOMP\n\t\t\tAXO\n\t\tSTODL\t504LPL\n\t\t\t-AYO\n\t\tSTODL\t504LPL +2\n\t\t\tLO6ZEROS\n\t\tSTOVL\t504LPL +4\n\t\t\t504LPL\n\t\tRVQ\n\n# Page 1148\n# CONSTANTS AND ERASABLE ASSIGNMENTS\n1B1\t\t=\tDP1/2\t\t# 1  SCALED B-1\nRPREXIT\t\t=\tS1\t\t# R-TO-RP AND RP-TO-R SUBR EXIT\nEARTHMXX\t=\tS2\t\t# EARTHMX,MOONMX SUBR. EXITS\n504RPR\t\t=\t0D\t\t# 6 REGS  R OR RP VECTOR\nSINNODI\t\t=\t8D\t\t# 2\t  SIN(NODI)\nDVECTR\t\t=\t8D\t\t# 6\t  D VECTOR MOON\nCVECTR\t\t=\t8D\t\t# 6\t  C VECTR MOON\n504AZ\t\t=\t18D\t\t# 2\t AZ\nTIMSUBM\t\t=\t14D\t\t# 3\t  TIME SUB M (MOON) T+T0 IN GETAZ\n504LPL\t\t=\t14D\t\t# 6\t  L OR LP VECTOR\nAVECTR\t\t=\t20D\t\t# 6\t  A VECTOR (MOON)\nBVECTR\t\t=\t26D\t\t# 6\t  B VECTOR (MOON)\nMMATRIX\t\t=\t20D\t\t# 18\t  M MATRIX\nCOB\t\t=\t32D\t\t# 2\t  COS(B) B-1\nSOB\t\t=\t34D\t\t# 2\t  SIN(B) B-1\n504F\t\t=\t6D\t\t# 2\t  F (MOON)\n"
  },
  {
    "path": "Luminary099/POWERED_FLIGHT_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tPOWERED_FLIGHT_SUBROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1259-1267\n# Mod history:\t2009-05-26 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1259\n\t\tBANK\t14\t\t# SAME FBANK AS THE FINDCDUD SUB-PROGRAM\n\t\tSETLOC\tPOWFLITE\n\t\tBANK\n\n\t\tEBANK=\tDEXDEX\n\t\tCOUNT*\t$$/POWFL\n\n# CDUTRIG, CDUTRIG1, CDUTRIG2, AND CD*TR*GS ALL COMPUTE THE SINES AND\n# COSINES OF THREE 2'S COMPLEMENT ANGLES AND PLACE THE RESULT, DOUBLE\n# PRECISION, IN THE SAME ORDER AS THE INPUTS, AT SINCDU AND COSCDU.  AN\n# ADDITIONAL OUTPUT IS THE 1'S COMPLEMENT ANGLES AT CDUSPOT.  THESE\n# ROUTINES GO OUT OF THEIR WAY TO LEAVE THE MPAC AREA AS THEY FIND IT.\n# EXCEPT FOR THE GENERALLY UNIMPORTANT MPAC +2.  THEY DIFFER ONLY IN\n# WHERE THEY GET THE ANGLES, AND IN METHOD OF CALLING.\n#\n# CDUTRIG (AND CDUTRIG1, WHICH CAN BE CALLED IN BASIC) COMPUTE THE\n# SINES AND COSINES FROM THE CURRENT CONTENTS OF THE CDU REGISTERS.\n# THE CONTENTS OF CDUTEMP, ETC., ARE NOT TOUCHED SO THAT THEY MAY\n# CONTINUE TO FORM A CONSISTENT SET WITH THE LATEST PIPA READINGS.\n#\n# CDUTRIG1 IS LIKE CDUTRIG EXCEPT THAT IT CAN BE CALLED IN BASIC.\n#\n# CD*TR*GS FINDS CDU VALUES IN CDUSPOT RATHER THAN IN CDUTEMP.  THIS\n# ALLOWS USERS TO MAKE TRANSFORMATIONS USING ARBITRARY ANGLES, OR REAL\n# ANGLES IN AN ORDER OTHER THAN X Y Z.  A CALL TO THIS ROUTINE IS\n# NECESSARY IN PREPARATION FOR A CALL TO AX*SR*T IN EITHER OF ITS TWO\n# MODES (SMNB OR NBSM).  SINCE AX*SR*T EXPECTS TO FIND THE SINES AND\n# COSINES IN THE ORDER Y Z X THE ANGLES MUST HAVE BEEN PLACED IN CDUSPOT\n# IN THIS ORDER.  CD*TR*GS NEED NOT BE REPEATED WHEN AX*SR*T IS CALLED\n# MORE THAN ONCE, PROVIDED THE ANGLES HAVE NOT CHANGED.  NOTE THAT SINCE\n# IT CLOBBERS BUF2 (IN THE SINE AND COSINE ROUTINES) CD*TR*GS CANNOT BE\n# CALLED USING BANKCALL.  SORRY.\n#\n# CD*TR*G IS LIKE CD*TR*GS EXCEPT THAT IT CAN BE CALLED IN\n# INTERPRETIVE.\n\nCDUTRIG\t\tEXIT\n\t\tTC\tCDUTRIGS\n\t\tTC\tINTPRET\n\t\tRVQ\n\nCD*TR*G\t\tEXIT\n\t\tTC\tCD*TR*GS\n\t\tTC\tINTPRET\n\t\tRVQ\n\nCDUTRIGS\tCA\tCDUX\n\t\tTS\tCDUSPOT +4\n\t\tCA\tCDUY\n\t\tTS\tCDUSPOT\n# Page 1260\n\t\tCA\tCDUZ\n\t\tTS\tCDUSPOT +2\n\nCD*TR*GS\tEXTEND\n\t\tQXCH\tTEM2\n\t\tCAF\tFOUR\nTR*GL**P\tMASK\tSIX\t\t# MAKE IT EVEN AND SMALLER\n\t\tTS\tTEM3\n\t\tINDEX\tTEM3\n\t\tCA\tCDUSPOT\n\t\tDXCH\tMPAC\t\t# STORING 2'S COMP ANGLE, LOADING MPAC\n\t\tDXCH\tVBUF \t+4\t# STORING MPAC FOR LATER RESTORATION\n\t\tTC\tUSPRCADR\n\t\tCADR\tCDULOGIC\n\t\tEXTEND\n\t\tDCA\tMPAC\n\t\tINDEX\tTEM3\n\t\tDXCH\tCDUSPOT\t\t# STORING 1'S COMPLEMENT ANGLE\n\t\tTC\tUSPRCADR\n\t\tCADR\tCOSINE\n\t\tDXCH\tMPAC\n\t\tINDEX\tTEM3\n\t\tDXCH\tCOSCDU\t\t# STORING COSINE\n\t\tEXTEND\n\t\tINDEX\tTEM3\n\t\tDCA\tCDUSPOT\t\t# LOADING 1'S COMPLEMENT ANGLE\n\t\tTC\tUSPRCADR\n\t\tCADR\tSINE \t+1\t# SINE +1 EXPECTS ARGUMENT IN A AND L\n\t\tDXCH\tVBUF \t+4\t# BRINGING UP PRIOR MPAC TO BE RESTORED\n\t\tDXCH\tMPAC\n\t\tINDEX\tTEM3\n\t\tDXCH\tSINCDU\n\t\tCCS\tTEM3\n\t\tTCF\tTR*GL**P\n\t\tTC\tTEM2\n# Page 1261\n# *******************************************************************************************************\n# QUICTRIG, INTENDED FOR QUIDANCE CYCLE USE WHERE TIME IS CRITICAL, IS A MUCH FASTER VERSION OF CD*TR*GS.\n# QUICTRIG COMPUTES AND STORES THE SINES AND COSINES OF THE 2'S COMPLEMENT ANGLES AT CDUSPOT, CDUSPOT +2,\n# AND CDUSPOT +4.  UNLIKE CD*TR*GS, QUICTRIG DOES NOT LEAVE THE 1'S COMPLEMENT VERSIONS OF THE ANGLES IN\n# CDUSPOT.  QUICTRIG'S EXECUTION TIME IS 4.1 MS;  THIS IS 10 TIMES AS FAST AS CD*TR*GS.  QUICTRIG MAY BE\n# CALLED FROM INTERPRETIVE AS AN RTB OP-CODE, OR FROM BASIC VIA BANKCALL OR IBNKCALL.\n\nQUICTRIG\tINHINT\t\t\t# INHINT SINCE DAP USES THE SAME TEMPS\n\t\tEXTEND\n\t\tQXCH\tITEMP1\n\t\tCAF\tFOUR\n +4\t\tMASK\tSIX\n\t\tTS\tITEMP2\n\t\tINDEX\tITEMP2\n\t\tCA\tCDUSPOT\n\t\tTC\tSPSIN\n\t\tEXTEND\n\t\tMP\tBIT14\t\t# SCALE DOWN TO MATCH INTERPRETER OUTPUTS\n\t\tINDEX\tITEMP2\n\t\tDXCH\tSINCDU\n\t\tINDEX\tITEMP2\n\t\tCA\tCDUSPOT\n\t\tTC\tSPCOS\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tINDEX\tITEMP2\n\t\tDXCH\tCOSCDU\n\t\tCCS\tITEMP2\n\t\tTCF\tQUICTRIG +4\n\t\tCA\tITEMP1\n\t\tRELINT\n\t\tTC\tA\n\n# Page 1262\n#****************************************************************************\n# THESE INTERFACE ROUTINES MAKE IT POSSIBLE TO CALL AX*SR*T, ETC., IN\n# INTERPRETIVE.  LATER, WHERE POSSIBLE, THEY WILL BE ELIMINATED.\n#\n# THESE INTERFACE ROUTINES ARE PERMANENT.  ALL RESTORE USER'S EBANK\n# SETTING. ALL ARE STRICT INTERPRETIVE SUBROUTINES, CALLED USING \"CALL\",\n# RETURNING VIA QPRET.  ALL EXPECT AND RETURN THE VECTOR TO BE TRANSFORMED\n# INTERPRETER-STYLE IN MPAC; COMPONENTS AT MPAC, MPAC +3, AND MPAC +5.\n#\n# TRG*SMNB AND TRG*NBSM BOTH EXPECT TO SEE THE 2'S COMPLEMENT ANGLES\n# AT CDUSPOT (ORDER Y Z X, AT CDUSPOT, CDUSPOT +2, AND CDUSPOT +4; ODD\n# LOCATIONS NEED NOT BE ZEROED).  TRG*NBSM DOES THE NB TO SM TRANSFORMATION;\n# TRG*SMNB, VICE VERSA.\n#\n# CDU*NBSM DOES ITS TRANSFORMATION USING THE PRESENT CONTENTS OF\n# THE CDL COUNTERS.  OTHERWISE IT IS LIKE TRG*NBSM.\n#\n# CDU*SMNB IS THE COMPLEMENT OF CDU*NBSM.\n\nCDU*SMNB\tEXIT\n\t\tTC\tCDUTRIGS\n\t\tTCF\tC*MM*N1\n\nTRG*SMNB\tEXIT\n\t\tTC\tCD*TR*GS\nC*MM*N1\t\tTC\tMPACVBUF\t# AX*SR*T EXPECTS VECTOR IN VBUF\n\t\tCS\tTHREE\t\t# SIGNAL FOR SM TO NB TRANSFORMATION.\nC*MM*N2\t\tTC\tAX*SR*T\n\t\tTC\tINTPRET\n\t\tVLOAD\tRVQ\n\t\t\tVBUF\n\nCDU*NBSM\tEXIT\n\t\tTC\tCDUTRIGS\n\t\tTCF\tC*MM*N3\n\nTRG*NBSM\tEXIT\n\t\tTC\tCD*TR*GS\nC*MM*N3\t\tTC\tMPACVBUF\t# FOR AX*SR*T\n\t\tCA\tTHREE\t\t# SIGNAL FOR NB TO SM TRANSFORMATION\n\t\tTCF\tC*MM*N2\n\n# *NBSM* AND *SMNB* EXPECT TO SEE THE SINES AND COSINES (AT SINCDU\n# AND COSCDU) RATHER THAN THE ANGLES THEMSELVES.  OTHERWISE THEY ARE\n# LIKE TRG*NBSM AND TRG*SMNB.\n#\n# NOTE THAT JUST AS CD*TR*GS NEED BE CALLED ONLY ONCE FOR EACH SERIES\n# OF TRANSFORMATIONS USING THE SAME ANGLES, SO TOO ONLY ONE OF TRG*NBSM\n# Page 1263\n# AND TRG*SMNB NEED BE CALLED FOR EACH SERIES.  FOR SUBSEQUENT TRANFOR-\n# MATIONS USE *NBSM* AND *SMNB*.\n\n*SMNB*\t\tEXIT\n\t\tTCF\tC*MM*N1\n\n*NBSM*\t\tEXIT\n\t\tTCF\tC*MM*N3\n\n# AX*SR*T COMBINES THE OLD SMNB AND NBSM.  FOR THE NB TO SM\n# TRANSFORMATION, ENTER WITH +3 IN A.  FOR SM TO NB, ENTER WITH -3.\n# THE VECTOR TO BE TRANSFORMED ARRIVES, AND IS RETURNED, IN VBUF.\n# AX*SR*T EXPECTS TO FIND THE SINES AND COSINES OF THE ANGLES OF ROTATION\n# AT SINCDU AND COSCDU, IN THE ORDER Y Z X.  A CALL TO CD*TR*GS, WITH\n# THE 2'S COMPLEMENT ANGLES (ORDER Y Z X) AT CDUSPOT, WILL TAKE CARE OF\n# THIS.  HERE IS A SAMPLE CALLING SEQUENCE:--\n#\t\tTC\tCDUTRIGS\n#\t\tCS\tTHREE\t\t# (\"CA THREE\" FOR NBSM)\n#\t\tTC\tAX*SR*T\n# THE CALL TO CD*TR*GS NEED NOT BE REPEATED, WHEN AX*SR*T IS CALLED MORE\n# THAN ONCE, UNLESS THE ANGLES HAVE CHANGED.\n#\n# AX*SR*T IS GUARANTEED SAFE ONLY FOR VECTORS OF MAGNITUDE LESS THAN\n# UNITY.  A LOOK AT THE CASE IN WHICH A VECTOR OF GREATER MAGNITUDE\n# HAPPENS TO LIE ALONG AN AXIS OF THE SYSTEM TO WHICH IT IS TO BE TRANS-\n# FORMED CONVINCES ONE THAT THIS IS A RESTRICTION WHICH MUST BE ACCEPTED.\n\nAX*SR*T\t\tTS\tDEXDEX\t\t# WHERE IT BECOMES THE INDEX OF INDEXES.\n\t\tEXTEND\n\t\tQXCH\tRTNSAVER\n\nR*TL**P\t\tCCS\tDEXDEX\t\t#       \t+3 --> 0\t-3 --> 2\n\t\tCS\tDEXDEX\t\t# THUS:\t\t+2 --> 1\t-2 --> 1\n\t\tAD\tTHREE\t\t#\t\t+1 --> 2\t-1 --> 0\n\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\tINDEXI\n\t\tDXCH\tDEXI\n\n\t\tCA\tONE\n\t\tTS\tBUF\n\t\tEXTEND\n\t\tINDEX\tDEX1\n\t\tDCS\tVBUF\n\t\tTCF\tLOOP1\t\t# REALLY BE A SUBTRACT, AND VICE VERSA\n\nLOOP2\t\tDXCH\tBUF\t\t# LOADING VECTOR COMPONENT, STORING INDEX\n# Page 1264\nLOOP1\t\tDXCH\tMPAC\n\t\tCA\tSINSLOC\n\t\tAD\tDEX1\n\t\tTS\tADDRWD\n\n\t\tTC\tDMPSUB\t\t# MULTIPLY AT SIN(CDUANGLE)\n\t\tCCS\tDEXDEX\n\t\tDXCH\tMPAC\t\t# NBSM CASE\n\t\tTCF\t+3\n\t\tEXTEND\t\t\t# SMNB CASE\n\t\tDCS\tMPAC\n\t\tDXCH\tTERM1TMP\n\n\t\tCA\tSIX\t\t# SINCDU AND COSCDU (EACH 6 WORDS) MUST\n\t\tADS\tADDRWD\t\t#\tBE CONSECUTIVE AND IN THAT ORDER\n\n\t\tEXTEND\n\t\tINDEX\tBUF\n\t\tINDEX\tDEX1\n\t\tDCA\tVBUF\n\t\tDXCH\tMPAC\n\t\tTC\tDMPSUB\t\t# MULTIPLY BY COS(CDUANGLE)\n\t\tDXCH\tMPAC\n\t\tDAS\tTERM1TMP\n\t\tDXCH\tTERM1TMP\n\t\tDDOUBL\n\t\tINDEX\tBUF\n\t\tINDEX\tDEX1\n\t\tDXCH\tVBUF\n\t\tDXCH\tBUF\t\t# LOADING INDEX, STORING VECTOR COMPONENT\n\n\t\tCCS\tA\t\t# 'CAUSE THAT'S WHERE THE INDEX NOW IS\n\t\tTCF\tLOOP2\n\n\t\tEXTEND\n\t\tDIM\tDEXDEX\t\t# DECREMENT MAGNITUDE PRESERVING SIGN\n\nTSTPOINT\tCCS\tDEXDEX\t\t# ONLY THE BRANCHING FUNCTION IS USED\n\t\tTCF\tR*TL**P\n\t\tTC\tRTNSAVER\n\t\tTCF\tR*TL**P\n\t\tTC\tRTNSAVER\n\nSINSLOC\t\tADRES\tSINCDU\t\t# FOR USE IN SETTING ADDRWD\n\nINDEXI\t\tDEC\t4\t\t# **********   DON'T   ***********\n\t\tDEC\t2\t\t# **********   TOUCH   ***********\n\t\tDEC\t0\t\t# **********   THESE   ***********\n# Page 1265\n\t\tDEC\t4\t\t# ********** CONSTANTS ***********\n\n# ******************************************************************************\n\n\t\tBANK\t10\n\t\tSETLOC\tFLESHLOC\n\t\tBANK\n\t\tCOUNT*\t$$/POWFL\n\n# ROUTINE FLESHPOT COMPUTES THE BODY-STABLE MEMBER TRANSFORMATION MATRIX (COMMONLY CALLED XNB) AND STORES\n# IT IN THE LOCATIONS SPECIFIED BY THE ECADR ENTERING IN A.\n\nCALCSMSC\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tFLESHPOT -1\n\t\tTC\tINTPRET\n\t\tRVQ\n\nXNBECADR\tECADR\tXNB\n\n -1\t\tCAF\tXNBECADR\n\nFLESHPOT\tTS\tTEM2\n\t\tXCH\tEBANK\n\t\tXCH\tTEM2\n\t\tMASK\tLOW8\n\t\tAD\tOCT1400\n\t\tTS\tTEM1\n\n\t\tEXTEND\n\t\tDCA\tCOSCDUY\n\t\tDXCH\tMPAC\n\t\tTC\tDMP\n\t\tADRES\tCOSCDUZ\n\t\tDXCH\tMPAC\n\t\tDDOUBL\n\t\tINDEX\tTEM1\n\t\tDXCH\t0\t\t# = COSY COSZ\n\n\t\tEXTEND\n\t\tDCA\tSINCDUZ\n\t\tINDEX\tTEM1\n\t\tDXCH\t2\t\t# = SINZ\n\n\t\tEXTEND\n\t\tDCS\tSINCDUY\n\t\tDXCH\tMPAC\n\t\tTC\tDMPSUB\t\t# ADDRWD SET TO COSCDUZ\n# Page 1266\n\t\tDXCH\tMPAC\n\t\tDDOUBL\n\t\tINDEX\tTEM1\n\t\tDXCH\t4\t\t# = - SINY COSZ\n\n\t\tEXTEND\n\t\tDCS\tSINCDUX\n\t\tDXCH\tMPAC\n\t\tTC\tDMPSUB\t\t# ADDRWD SET TO COSCDUZ STILL\n\t\tDXCH\tMPAC\n\t\tDDOUBL\n\t\tDXCH\tMPAC\t+3\n\n\t\tEXTEND\n\t\tDCS\tSINCDUX\n\t\tDXCH\tMPAC\n\t\tTC\tDMP\n\t\tADRES\tSINCDUZ\n\t\tEXTEND\n\t\tDCS\tMPAC\n\t\tDXCH\tMPAC \t+5\n\t\tTC\tDMP\n\t\tADRES\tSINCDUY\n\t\tDXCH\tMPAC\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDXCH\tMPAC \t+5\n\n\t\tDXCH\tMPAC\n\t\tTC\tDMP\n\t\tADRES\tCOSCDUY\n\t\tDXCH\tMPAC\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDXCH\tBUF\n\n\t\tEXTEND\n\t\tDCA\tCOSCDUY\n\t\tDXCH\tMPAC\n\t\tTC\tDMP\n\t\tADRES\tCOSCDUX\n\t\tDXCH\tMPAC\n\t\tDDOUBL\n\t\tDAS\tMPAC \t+5\n\n\t\tEXTEND\n\t\tDCA\tSINCDUY\n\t\tDXCH\tMPAC\n\t\tTC\tDMPSUB\t\t# ADDRWD SET TO COSCDUX\n\t\tDXCH\tMPAC\n\n# Page 1267\n\t\tDDOUBL\n\t\tDAS \tBUF\n\n\t\tDXCH\tBUF\n\t\tDXCH\tMPAC\n\n\t\tEXTEND\n\t\tDCA\tMPAC\n\t\tINDEX\tTEM1\n\t\tDXCH\t14\t\t# = - SINY COSX + SINX SINZ COSY\n\n\t\tEXTEND\n\t\tDCA\tMPAC \t+3\n\t\tINDEX\tTEM1\n\t\tDXCH\t16\t\t# = - SINX COSZ\n\n\t\tEXTEND\n\t\tDCA\tMPAC \t+5\n\t\tINDEX\tTEM1\n\t\tDXCH\t20\t\t# = COSX COSY - SINX SINY SINZ\n\n\t\tCA\tTEM1\n\t\tTS\tADDRWD\n\t\tEXTEND\n\t\tDCA\tZ\n\t\tAD\tFOUR\n\t\tDXCH\tLOC\n\t\tCAF\tBIT8\n\t\tTS\tEDOP\n\t\tTCF\tVXV\n\t\tDXCH\tMPAC\n\t\tDDOUBL\n\t\tINDEX\tTEM1\n\t\tDXCH\t6\n\n\t\tDXCH\tMPAC \t+3\n\t\tDDOUBL\n\t\tINDEX \tTEM1\n\t\tDXCH\t10\n\n\t\tDXCH\tMPAC \t+5\n\t\tDDOUBL\n\t\tINDEX \tTEM1\n\t\tDXCH\t12\n\n\t\tCA\tTEM2\n\t\tTS\tEBANK\n\t\tTCF\tSWRETURN\n\n"
  },
  {
    "path": "Luminary099/Q_R-AXIS_RCS_AUTOPILOT.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tQ_R-AXIS_RCS_AUTOPILOT.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1442-1459\n# Mod history:\t2009-05-27 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-07 RSB\tCorrected \"DEC 96.0\" to \"DEC 96\", since\n#\t\t\t\tthe former is not compatible with yaYUL.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1442\n\t\tBANK\t17\n\t\tSETLOC\tDAPS2\n\t\tBANK\n\n\t\tEBANK=\tCDUXD\n\n\t\tCOUNT*\t$$/DAPQR\n\nCALLQERR\tCA\tBIT13\t\t# CALCULATE Q,R ERRORS UNLESS THESE AXES\n\t\tEXTEND\t\t\t# ARE IN MANUAL RATE COMMAND.\n\t\tRAND\tCHAN31\n\t\tCCS\tA\n\t\tTCF\t+5\t\t# IN AUTO COMPUTE Q,R ERRORS\n\t\tCS\tDAPBOOLS\t# IN MANUAL RATE COMMAND?\n\t\tMASK\tOURRCBIT\n\t\tEXTEND\n\t\tBZF\tQ,RORGTS\t# IF SO BYPASS CALCULATION OF ERRORS.\n\t\tTC\tQERRCALC\n\nQ,RORGTS\tCCS\tCOTROLER\t# CHOOSE CONTROL SYSTEM FOR THIS DAP PASS:\n\t\tTCF\tGOTOGTS\t\t#\tGTS (ALTERNATES WITH RCS WHEN DOCKED)\n\t\tTCF\tTRYGTS\t\t#\tGTS IF ALLOWED, OTHERWISE RCS\nRCS\t\tCAF\tZERO\t\t#\tRCS (TRYGTS MAY BRANCH TO HERE)\n\t\tTS\tCOTROLER\n\n\t\tDXCH\tEDOTQ\n\t\tTC\tROT-TOUV\n\t\tDXCH\tOMEGAU\n\n# X - TRANSLATION\n#\n# INPUT:\tBITS 7,8 OF CH31 (TRANSLATION CONTROLLER)\n#\t\tULLAGER\n#\t\tAPSFLAG, DRIFTBIT\n#\t\tACC40R2X, ACRBTRAN\n#\n# OUTPUT:\tNEXTU, NEXTV\tCODES OF TRANSLATION FOR AFTER ROTATION\n#\t\tSENSETYP\tTELL ROTATION DIRECTION AND DESIRE\n#\n# X-TRANS POLICIES ARE EITHER 4 JETS OR A DIAGONAL PAIR.  IN 2-JET TRANSLATION THE SYSTEM IS SPECIFIED.  A FAILURE\n# WILL OVERRIDE THIS SPECIFICATION.  AN ALARM RESULTS WHEN NO POLICY IS AVAILABLE BECAUSE OF FAILURES.\n\nSENSEGET\tCA\tBIT7\t\t# INPUT BITS OVERRIDE THE INTERNAL BITS\n\t\tEXTEND\t\t\t# SENSETYP WILL NOT OPPOSE ANYTRANS\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZF\t+X0RULGE\n# Page 1443\n\t\tCA\tBIT8\n\t\tEXTEND\n\t\tRAND\tCHAN31\n\t\tEXTEND\n\t\tBZF\t-XTRANS\n\n\t\tCA\tULLAGER\n\t\tMASK\tDAPBOOLS\n\t\tCCS\tA\n\t\tTCF\t+X0RULGE\n\n\t\tTS\tNEXTU\t\t# STORE NULL TRANSLATION POLICIES\n\t\tTS\tNEXTV\n\t\tCS\tDAPBOOLS\t# BURNING OR DRIFTING?\n\t\tMASK\tDRIFTBIT\n\t\tEXTEND\n\t\tBZF\tTSENSE\n\t\tCA\tFLGWRD10\t# DPS (INCLUDING DOCKED) OR APS?\n\t\tMASK\tAPSFLBIT\n\t\tCCS\tA\n\t\tCAF\tTWO\t\t# FAVOR +X JETS DURING AN APS BURN.\nTSENSE\t\tTS\tSENSETYP\n\t\tTCF\tQRCONTRL\n\n+X0RULGE\tCAF\tONE\n-XTRANS\t\tAD\tFOUR\n\t\tTS\tROTINDEX\n\t\tAD\tNEG3\n\t\tTS\tSENSETYP\t# FAVOR APPROPRIATE JETS DURING TRANS.\n\t\tCA\tDAPBOOLS\n\t\tMASK\tACC4OR2X\n\t\tCCS\tA\n\t\tTCF\tTRANS4\n\n\t\tCA\tDAPBOOLS\n\t\tMASK\tAORBTRAN\n\t\tCCS\tA\n\t\tCA\tONE\t\t# THREE FOR B\n\t\tAD\tTWO\t\t# TWO FOR A SYSTEM 2 JET X TRANS\nTSNUMBRT\tTS\tNUMBERT\n\n\t\tTC\tSELCTSUB\n\n\t\tCCS\tPOLYTEMP\n\t\tTCF\t+3\n\t\tTC\tALARM\n\t\tOCT\t02002\n\t\tCA\t00314OCT\n\t\tMASK\tPOLYTEMP\nTSNEXTS\t\tTS\tNEXTU\n# Page 1444\n\t\tCS\t00314OCT\n\t\tMASK\tPOLYTEMP\n\t\tTS\tNEXTV\n\n# Q,R-AXES RCS CONTROL MODE SELECTION\n#\tSWITCHES\tINDICATION WHEN SET\n#\tBIT13/CHAN31\tAUTO, GO TO ATTSTEER\n#\tPULSES\t\tMINIMUM IMPULSE MODE\n#\t(OTHERWISE)\tRATE COMMAND/ATTITUDE HOLD MODE\n\nQRCONTRL\tCA\tBIT13\t\t# CHECK MODE SELECT SWITCH.\n\t\tEXTEND\n\t\tRAND\tCHAN31\t\t# BITS INVERTED\n\t\tCCS\tA\n\t\tTCF\tATTSTEER\nCHKBIT10\tCAF\tPULSES\t\t# PULSES = 1 FOR MIN IMP USE OF RHC\n\t\tMASK\tDAPBOOLS\n\t\tEXTEND\n\t\tBZF\tCHEKSTIK\t# IN ATT-HOLD/RATE-COMMAND IF BIT10=0\n\n# MINIMUM IMPULSE MODE\n\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tZATTEROR\n\t\tCA\tZERO\n\t\tTS\tQERROR\n\t\tTS\tRERROR\t\t# FOR DISPLAYS\n\t\tRELINT\n\n\t\tEXTEND\n\t\tREAD\tCHAN31\n\t\tTS\tTEMP31\t\t# IS EQUAL TO DAPTEMP1\n\t\tCCS\tOLDQRMIN\n\t\tTCF\tCHECKIN\n\nFIREQR\t\tCA\tTEMP31\n\t\tMASK\tBIT1\n\t\tEXTEND\n\t\tBZF\t+QMIN\n\n\t\tCA\tTEMP31\n\t\tMASK\tBIT2\n\t\tEXTEND\n\t\tBZF\t-QMIN\n\n\t\tCA\tTEMP31\n\t\tMASK\tBIT5\n# Page 1445\n\t\tEXTEND\n\t\tBZF\t+RMIN\n\n\t\tCA\tTEMP31\n\t\tMASK\tBIT6\n\t\tEXTEND\n\t\tBZF\t-RMIN\n\n\t\tTCF\tXTRANS\n\nCHECKIN\t\tCS\tTEMP31\n\t\tMASK\tOCT63\n\t\tTS\tOLDQRMIN\n\t\tTCF\tXTRANS\n\n+QMIN\t\tCA\t14MS\n\t\tTS\tTJU\n\t\tCS\t14MS\n\t\tTCF\tMINQR\n-QMIN\t\tCS\t14MS\n\t\tTS\tTJU\n\t\tCA\t14MS\n\t\tTCF\tMINQR\n+RMIN\t\tCA\t14MS\n\t\tTCF\t+2\n-RMIN\t\tCS\t14MS\n\t\tTS\tTJU\nMINQR\t\tTS\tTJV\n\t\tCA\tMINADR\n\t\tTS\tRETJADR\n\t\tCA\tONE\n\t\tTS\tOLDQRMIN\nMINRTN\t\tTS\tAXISCTR\n\t\tCA\tDAPBOOLS\n\t\tMASK\tCSMDOCKD\n\t\tEXTEND\n\t\tBZF\tMIMRET\n\t\tINDEX\tAXISCTR\t\t# IF DOCKED, USE 60MS MINIMUM IMPULSE\n\t\tCCS\tTJU\n\t\tCA\t60MS\n\t\tTCF\t+2\n\t\tCS\t60MS\n\t\tINDEX\tAXISCTR\n\t\tTS\tTJU\nMIMRET\t\tCA\tDAPBOOLS\n\t\tMASK\tAORBTRAN\n\t\tCCS\tA\n\t\tCA\tONE\n\t\tAD\tTWO\n\t\tTS\tNUMBERT\n# Page 1446\n\t\tTCF\tAFTERTJ\n\n60MS\t\tDEC\t96\t\t# RSB 2009 -- was 96.0.\nMINADR\t\tGENADR\tMINRTN\nOCT63\t\tOCT\t63\n14MS\t\t=\t+TJMINT6\n\nTRANS4\t\tCA\tFOUR\n\t\tTCF\tTSNUMBRT\n\n# RATE COMMAND MODE:\n#\n# DESCRIPTION (SAME AS P-AXIS)\n\nCHEKSTIK\tTS\tINGTS\t\t# NOT IN GTS WHEN IN ATT HOLD\n\t\tCS\tONE\t\t# 1/ACCS WILL DO THE NULLING DRIVES\n\t\tTS\tCOTROLER\t# COME BACK TO RCS NEXT TIME\n\t\tCA\tBIT15\n\t\tMASK\tCH31TEMP\n\t\tEXTEND\n\t\tBZF\tRHCACTIV\t# BRANCH IF OUT OF DETENT.\n\t\tCA\tOURRCBIT\t# ***********\n\t\tMASK\tDAPBOOLS\t# *IN DETENT*\tCHECK FOR MANUAL CONTROL\n\t\tEXTEND\t\t\t# ***********\tLAST TIME.\n\t\tBZF\tSTILLRCS\n\t\tCS\tBIT9\n\t\tMASK\tRCSFLAGS\n\t\tTS\tRCSFLAGS\t# BIT 9 IS 0.\n\t\tTCF\tDAMPING\n40CYCL\t\tOCT\t50\n1/10S\t\tOCT\t1\nLINRAT\t\tDEC\t46\n\n# ===========================================================\n\nDAMPING\t\tCA\tZERO\n\t\tTS\tSAVEHAND\n\t\tTS\tSAVEHAND +1\nRHCACTIV\tCCS\tSAVEHAND\t# ******************\n\t\tTCF\t+3\t\t# Q,R MANUAL CONTROL\tWC = A*(B+|D|)*D\n\t\tTCF\t+2\t\t# ******************\n\t\tTCF\t+1\n\t\tDOUBLE\t\t\t# WHERE\n\t\tDOUBLE\t\t\t#\n\t\tAD\tLINRAT\t\t# \tWC  = COMMANDED ROTATIONAL RATE\n\t\tEXTEND\t\t\t#\tA   = QUADRATIC SENSITIVITY FACTOR\n\t\tMP\tSAVEHAND\t#\tB   = LINEAR/QUADRATIC SENSITIVITY\n\t\tCA\tL\t\t#\t|D| = ABS. VALUE OF DEFLECTION\n\t\tEXTEND\t\t\t#\tD   = HAND CONTROLLER DEFLECTION\n\t\tMP\tSTIKSENS\n\t\tXCH\tQLAST\t\t# COMMAND Q RATE, SCALED 45 DEG/SEC\n\t\tCOM\n# Page 1447\n\t\tAD\tQLAST\n\t\tTS\tDAPTEMP3\n\t\tCCS\tSAVEHAND +1\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\t+1\n\t\tDOUBLE\n\t\tDOUBLE\n\t\tAD\tLINRAT\n\t\tEXTEND\n\t\tMP\tSAVEHAND +1\n\t\tCA\tL\n\t\tEXTEND\n\t\tMP\tSTIKSENS\n\t\tXCH\tRLAST\n\t\tCOM\n\t\tAD\tRLAST\n\t\tTS\tDAPTEMP4\n\t\tCS\tQLAST\t\t# INTERVAL.\n\t\tAD\tOMEGAQ\n\t\tTS\tQRATEDIF\n\t\tCS\tRLAST\n\t\tAD\tOMEGAR\n\t\tTS\tRRATEDIF\nENTERQR\t\tDXCH\tQRATEDIF\t# TRANSFORM RATES FROM Q,R TO U,V AXES\n\t\tTC\tROT-TOUV\n\t\tDXCH\tURATEDIF\n\t\tCCS\tDAPTEMP3\t# CHECK IF Q COMMAND CHANGE EXCEEDS\n\t\tTC\t+3\t\t# BREAKOUT LEVEL.  IF NOT, CHECK R.\n\t\tTC\t+2\n\t\tTC\t+1\n\t\tAD\t-RATEDB\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\tENTERUV -2\t# BREAKOUT LEVEL EXCEEDED.  DIRECT RATE.\n\t\tCCS\tDAPTEMP4\t# R COMMAND BREAKOUT CHECK.\n\t\tTC\t+3\n\t\tTC\t+2\n\t\tTC\t+1\n\t\tAD\t-RATEDB\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\tENTERUV -2\t# BREAKOUT LEVEL EXCEEDED.  DIRECT RATE.\n\t\tCA\tRCSFLAGS\t# BREAKOUT LEVEL NOT EXCEEDED.  CHECK FOR\n\t\tMASK\tQRBIT\t\t# DIRECT RATE CONTROL LAST TIME.\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tENTERUV\t\t# CONTINUE DIRECT RATE CONTROL.\n\t\tTCF\tSTILLRCS\t# PSEUDO-AUTO CONTROL.\n\t\tCA\t40CYCL\n# Page 1448\n\t\tTS\tTCQR\nENTERUV\t\tINHINT\t\t\t# DIRECT RATE CONTROL\n\t\tTC\tIBNKCALL\n\t\tFCADR\tZATTEROR\n\t\tRELINT\n\t\tCA\tZERO\n\t\tTS\tDYERROR\n\t\tTS\tDYERROR +1\n\t\tTS\tDZERROR\n\t\tTS\tDZERROR +1\n\t\tCCS\tURATEDIF\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\t+1\n\t\tAD\tTARGETDB\t# IF TARGET DB IS EXCEEDED, CONTINUE\n\t\tEXTEND\t\t\t# DIRECT RATE CONTROL.\n\t\tBZMF\tVDB\n\t\tCCS\tVRATEDIF\n\t\tTCF\t+3\n\t\tTCF\t+2\n\t\tTCF\t+1\n\t\tAD\tTARGETDB\n\t\tEXTEND\n\t\tBZMF\t+2\n\t\tTCF\tQRTIME\n\t\tCA\tZERO\n\t\tTS\tVRATEDIF\n\t\tTCF\tQRTIME\nVDB\t\tCCS\tVRATEDIF\n\t\tTC\t+3\n\t\tTC\t+2\n\t\tTC\t+1\n\t\tAD\tTARGETDB\t# IF TARGET DB IS EXCEEDED, CONTINUE\n\t\tEXTEND\t\t\t# DIRECT RATE CONTROL.  IF NOT, FIRE AND\n\t\tBZMF\tTOPSEUDO\t# SWITCH TO PSEUDO-AUTO CONTROL ON NEXT\n\t\tCA\tZERO\t\t# PASS.\n\t\tTS\tURATEDIF\nQRTIME\t\tCA\tTCQR\t\t# DIRECT RATE TIME CHECK.\n\t\tEXTEND\n\t\tBZMF\t+5\t\t# BRANCH IF TIME EXCEEDS 4 SEC.\n\t\tCS\tRCSFLAGS\n\t\tMASK\tQRBIT\n\t\tADS\tRCSFLAGS\t# BIT 11 IS 1.\n\t\tTC\t+4\nTOPSEUDO\tCS\tQRBIT\n\t\tMASK\tRCSFLAGS\n\t\tTS\tRCSFLAGS\t# BIT 11 IS 0.\n\t\tCA\tHANDADR\n\t\tTS\tRETJADR\n\t\tCA\tONE\n\n# Page 1449\nBACKHAND\tTS\tAXISCTR\n\n\t\tCA\tFOUR\n\t\tTS\tNUMBERT\n\n\t\tINDEX\tAXISCTR\n\t\tINDEX\tSKIPU\n\t\tTCF\t+1\n\t\tCA\tFOUR\n\t\tINDEX\tAXISCTR\n\t\tTS\tSKIPU\n\t\tTCF\tLOOPER\n\n\t\tINDEX\tAXISCTR\n\t\tCCS\tURATEDIF\t#\tINDEX\tAXIS\tQUANTITY\n\t\tCA\tZERO\t\t#\t0\t-U\t1/JETACC-AOSU\n\t\tTCF\t+2\t\t#\t1\t+U\t1/JETACC+AOSU\n\t\tCA\tONE\t\t#\t16\t-V\t1/JETACC-AOSV\n\t\tINDEX\tAXISCTR\t\t#\t17\t+V\t1/JETACC+AOSV\n\t\tAD\tAXISDIFF\t# JETACC = 2 JET ACCELERATION (1 FOR FAIL)\n\n\t\tINDEX\tA\n\t\tCS\t1/ANET2 +1\n\t\tEXTEND\n\t\tINDEX\tAXISCTR\t\t# UPRATEDIF IS SCALED AT PI/4 RAD/SEC\n\t\tMP\tURATEDIF\t# JET TIME IN A, SCALED 32 SEC\n\t\tTS\tQ\n\t\tDAS\tA\n\t\tAD\tQ\n\t\tTS\tA\t\t# OVERFLOW SKIP\n\t\tTCF\t+2\n\t\tCA\tQ\t\t# RIGHT SIGN AND BIGGER THAN 150MS\nSETTIME\t\tINDEX\tAXISCTR\n\t\tTS\tTJU\t\t# SCALED AT 10.67 WHICH IS CLOSE TO 10.24\n\t\tTCF\tAFTERTJ\n\nZEROTJ\t\tCA\tZERO\n\t\tTCF\tSETTIME\n\nHANDADR\t\tGENADR\tBACKHAND\n\n# GTS WILL BE TRIED IF\n#\t1. USEQRJTS = 0,\n#\t2. ALLOWGTS POS,\n#\t3. JETS ARE OFF (Q,R-AXES)\n\nTRYGTS\t\tCAF\tUSEQRJTS\t# IS JET USE MANDATORY.\t\t(AS LONG AS\n\t\tMASK\tDAPBOOLS\t# USEQRJTS BIT IS NOT BIT 15, CCS IS SAFE.)\n\t\tCCS\tA\n\t\tTCF\tRCS\n\t\tCCS\tALLOWGTS\t# NO.  DOES AOSTASK OK CONTROL FOR GTS?\n# Page 1450\n\t\tTCF\t+2\n\t\tTCF\tRCS\n\t\tEXTEND\n\t\tREAD\tCHAN5\n\t\tCCS\tA\n\t\tTCF\tCHKINGTS\nGOTOGTS\t\tEXTEND\n\t\tDCA\tGTSCADR\n\t\tDTCB\n\nCHKINGTS\tCCS\tINGTS\t\t# WAS THE TRIM GIMBAL CONTROLLING\n\t\tTCF\t+2\t\t#\tYES.  SET UP A DAMPED NULLING DRIVE.\n\t\tTCF\tRCS\t\t#\tNO.  NULLING WAS SET UP BEFORE.  DO RCS.\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tTIMEGMBL\n\t\tRELINT\n\t\tCAF\tZERO\n\t\tTS\tINGTS\n\t\tTCF\tRCS\n\n\t\tEBANK=\tCDUXD\nGTSCADR\t\t2CADR\tGTS\n\n# Page 1451\n# SUBROUTINE TO COMPUTE Q,R-AXES ATTITUDE ERRORS FOR USE IN THE RCS AND GTS CONTROL LAWS AND THE DISPLAYS.\n\nQERRCALC\tCAE\tCDUY\t\t# Q-ERROR CALCULATION\n\t\tEXTEND\n\t\tMSU\tCDUYD\t\t# CDU ANGLE -- ANGLE DESIRED (Y-AXIS)\n\t\tTS\tDAPTEMP1\t# SAVE FOR RERRCALC\n\t\tEXTEND\n\t\tMP\tM21\t\t# (CDUY-CDUYD)*M21 SCALED AT PI RADIANS\n\t\tTS\tE\n\t\tCAE\tCDUZ\t\t# SECOND TERM CALCULATION:\n\t\tEXTEND\n\t\tMSU\tCDUZD\t\t# CDU ANGLE -ANGLE DESIRED (Z-AXIS)\n\t\tTS\tDAPTEMP2\t# SAVE FOR RERRCALC\n\t\tEXTEND\n\t\tMP\tM22\t\t# (CDUZ-CDUZD)*M22 SCALED AT PI RADIANS\n\t\tAD\tDELQEROR\t# KALCMANU INERFACE ERROR\n\t\tAD\tE\n\t\tXCH\tQERROR\t\t# SAVE Q-ERROR FOR EIGHT-BALL DISPLAY.\n\nRERRCALC\tCAE\tDAPTEMP1\t# R-ERROR CALCULATION:\n\t\tEXTEND\t\t\t# CDU ANGLE -ANGLE DESIRED (Y-AXIS)\n\t\tMP\tM31\t\t# (CDUY-CDUYD)*M31 SCALED AT PI RADIANS\n\t\tTS\tE\n\t\tCAE\tDAPTEMP2\t# SECOND TERM CALCULATION:\n\t\tEXTEND\t\t\t# CDU ANGLE -ANGLE DESIRED (Z-AXIS)\n\t\tMP\tM32\t\t# (CDUZ-CDUZD)*M32 SCALED AT PI RADIANS\n\t\tAD\tDELREROR\t# KALCMANU INERFACE ERROR\n\t\tAD\tE\n\t\tXCH\tRERROR\t\t# SAVE R-ERROR FOR EIGHT-BALL DISPLAY.\n\t\tTC\tQ\n\n# Page 1452\n# \"ATTSTEER\" IS THE ENTRY POINT FOR Q,R-AXES (U,V-AXES) ATTITUDE CONTROL USING THE REACTION CONTROL SYSTEM\n\nATTSTEER\tEQUALS\tSTILLRCS\t# \"STILLRCS\" IS THE RCS EXIT FROM TRYGTS.\n\nSTILLRCS\tCA\tRERROR\n\t\tLXCH\tA\n\t\tCA\tQERROR\n\t\tTC\tROT-TOUV\n\t\tDXCH\tUERROR\n\n# PREPARES CALL TO TJETLAW (OR SPSRCS(DOCKED))\n# PREFORMS SKIP LOGIC ON U OR Y AXIS IF NEEDED.\n\nTJLAW\t\tCA\tTJLAWADR\n\t\tTS\tRETJADR\n\t\tCA\tONE\n\t\tTS\tAXISCTR\n\t\tINDEX\tAXISCTR\n\t\tINDEX\tSKIPU\n\t\tTCF\t+1\n\t\tCA\tFOUR\n\t\tINDEX\tAXISCTR\n\t\tTS\tSKIPU\n\t\tTCF\tLOOPER\n\t\tINDEX\tAXISCTR\n\t\tCA\tUERROR\n\t\tTS\tE\n\t\tINDEX\tAXISCTR\n\t\tCA\tOMEGAU\n\t\tTS\tEDOT\n\t\tCA\tDAPBOOLS\n\t\tMASK\tCSMDOCKD\n\t\tCCS\tA\n\t\tTCF\t+3\n\t\tTC\tTJETLAW\n\t\tTCF\tAFTERTJ\n +3\t\tCS\tDAPBOOLS\t# DOCKED.  IF GIMBAL USABLE DO GTS CONTROL\n\t\tMASK\tUSEQRJTS\t#\tON THE NEXT PASS.\n\t\tCCS\tA\t\t# USEQRJTS BIT MUST NOT BE BIT 15.\n\t\tTS\tCOTROLER\t# GIMBAL USABLE.  STORE POSITIVE VALUE.\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tSPSRCS\t\t# DETERMINE RCS CONTROL\n\t\tRELINT\n\t\tCAF\tFOUR\t\t# ALWAYS CALL FOR 2-JET CONTROL ABOUT U,V.\n\t\tTS\tNUMBERT\t\t# FALL THROUGH TO JET SELECTION, ETC.\n\n# Q,R-JET-SELECTION-LOGIC\n#\n# INPUT:\tAXISCTR\t\t0,1 FOR U,V\n#\t\tSNUFFBIT\tZERO TJETU,V AND TRANS. ONLY IF SET IN A DPS BURN\n# Page 1453\n#\t\tTJU,TJV\t\tJET TIME SCALED 10.24 SEC.\n#\t\tNUMBERT\t\tINDICATES NUMBER OF JETS AND TYPE OF POLICY\n#\t\tRETJADR\t\tWHERE TO RETURN TO\n#\n# OUTPUT:\tNO.U(V)JETS\tRATE DERIVATION FEEDBACK\n#\t\tCHANNEL 5\n#\t\tSKIPU,SKIPV\tFOR LESS THAN 150MS FIRING\n#\n# NOTES:\tIN CASE OF FAILURE IN DESIRED ROTATION POLICY, \"ALL\" UNFAILED\n#\t\tJETS OF THE DESIRED POLICY ARE SELECTED.  SINCE THERE ARE ONLY\n#\t\tTWO JETS, THIS MEANS THE OTHER ONE OR NONE.  THE ALARM IS SENT\n#\t\tIF NONE CAN BE FOUND.\n#\n#\t\tTIMES LESS THAN 14 MSEC ARE TAKEN TO CALL FOR A SINGLE-JET\n#\t\tMINIMUM IMPULSE, WITH THE JET CHOSEN SEMI-RANDOMLY.\n\nAFTERTJ\t\tCA\tFLAGWRD5\t# IF SNUFFBIT SET DURING A DPS BURN GO TO\n\t\tMASK\tSNUFFBIT\t# XTRANS; THAT IS, INHIBIT CONTROL.\n\t\tEXTEND\n\t\tBZF\tDOROTAT\n\t\tCS\tFLGWRD10\n\t\tMASK\tAPSFLBIT\n\t\tEXTEND\n\t\tBZF\tDOROTAT\n\t\tCA\tDAPBOOLS\n\t\tMASK\tDRIFTBIT\n\t\tEXTEND\n\t\tBZF\tXTRANS\n\nDOROTAT\t\tCAF\tTWO\n\t\tTS\tL\n\t\tINDEX\tAXISCTR\n\t\tCCS\tTJU\n\t\tTCF\t+5\n\t\tTCF\tNOROTAT\n\t\tTCF\t+2\n\t\tTCF\tNOROTAT\n\t\tZL\n\t\tAD\tONE\n\t\tTS\tABSTJ\n\n\t\tCA\tAXISCTR\n\t\tAD\tL\n\t\tTS\tROTINDEX\t# 0 1 2 3 = -U -V +U +V\n\n\t\tCA\tABSTJ\n\t\tAD\t-150MS\n\t\tEXTEND\n\t\tBZMF\tDOSKIP\n# Page 1454\n\t\tTC\tSELCTSUB\n\n\t\tINDEX\tAXISCTR\n\t\tCA\tINDEXES\n\t\tTS\tL\n\n\t\tCA\tPOLYTEMP\n\t\tINHINT\n\t\tINDEX\tL\n\t\tTC\tWRITEP\n\n\t\tRELINT\n\t\tTCF\tFEEDBACK\n\nNOROTAT\t\tINDEX\tAXISCTR\n\t\tCA\tINDEXES\n\t\tINHINT\n\t\tINDEX\tA\n\t\tTC\tWRITEP \t-1\n\n\t\tRELINT\nLOOPER\t\tCCS\tAXISCTR\n\t\tTC\tRETJADR\n\t\tTCF\tCLOSEOUT\nDOSKIP\t\tCS\tABSTJ\n\t\tAD\t+TJMINT6\t# 14MS\n\t\tEXTEND\n\t\tBZMF\tNOTMIN\n\n\t\tADS\tABSTJ\n\t\tINDEX\tAXISCTR\n\t\tCCS\tTJU\n\t\tCA\t+TJMINT6\n\t\tTCF\t+2\n\t\tCS\t+TJMINT6\n\t\tINDEX\tAXISCTR\n\t\tTS\tTJU\n\n\t\tCCS\tSENSETYP\t# ENSURE MIN-IMPULSE NOT AGAINST TRANS\n\t\tTCF\tNOTMIN \t-1\n\t\tEXTEND\n\t\tREAD\tLOSCALAR\n\t\tMASK\tONE\n\t\tTS\tNUMBERT\n\nNOTMIN\t\tTC\tSELCTSUB\n\n\t\tINDEX\tAXISCTR\n\t\tCA\tINDEXES\n\t\tINHINT\n# Page 1455\n\t\tTS\tT6FURTHA +1\n\t\tCA\tPOLYTEMP\n\t\tINDEX\tT6FURTHA +1\n\t\tTC\tWRITEP\n\n\t\tCA\tABSTJ\n\t\tTS\tT6FURTHA\n\t\tTC\tJTLST\t\t# IN QR BANK BY NOW\n\n\t\tRELINT\n\n\t\tCA\tZERO\n\t\tINDEX\tAXISCTR\n\t\tTS\tSKIPU\n\nFEEDBACK\tCS\tTHREE\n\t\tAD\tNUMBERT\n\t\tEXTEND\n\t\tBZMF\t+3\n\n\t\tCA\tTWO\n\t\tTCF\t+2\n\t\tCA\tONE\n\t\tINDEX\tAXISCTR\n\t\tTS\tNO.UJETS\n\t\tTCF\tLOOPER\n\nXTRANS\t\tCA\tZERO\n\t\tTS\tTJU\n\t\tTS\tTJV\n\t\tCA\tFOUR\n\t\tINHINT\n\t\tXCH\tSKIPU\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTC\tWRITEU \t-1\n\t\tCA\tFOUR\n\t\tXCH\tSKIPV\n\t\tRELINT\n\n\t\tEXTEND\n\t\tBZF\tCLOSEOUT\n\t\tINHINT\n\t\tTC\tWRITEV \t-1\n\t\tRELINT\n\n\t\tTCF\tCLOSEOUT\nINDEXES\t\tDEC\t4\n\t\tDEC\t13\n+TJMINT6\tDEC\t22\n# Page 1456\n-150MS\t\tDEC\t-240\nBIT8,9\t\tOCT\t00600\nSCLNORM\t\tOCT\t266\nTJLAWADR\tGENADR\tTJLAW \t+3\t# RETURN ADDRESS FOR RCS ATTITUDE CONTROL\n\n# THE JET LIST:\n# THIS IS A WAITLIST FOR T6RUPTS.\n#\n# CALLED BY:\n#\t\tCA\tTJ\t\t# TIME WHEN NEXT JETS WILL BE WRITTEN\n#\t\tTS\tT6FURTHA\n#\t\tCA\tINDEX\t\t# AXIS TO BE WRITTEN AT TJ (FROM NOW)\n#\t\tTS\tT6FURTHA +1\n#\t\tTC\tJTLST\n#\n# EXAMPLE -- U-AXIS AUTOPILOT WILL WRITE ITS ROTATION CODE OF\n# JETS INTO CHANNEL 5.  IF IT DESIRES TO TURN OFF THIS POLICY WITHIN\n# 150MS AND THEN FIRE NEXTU, A CALL TO JTLST IS MADE WITH T6FURTHA\n# CONTAINING THE TIME TO TURN OFF THE POLICY, T6FURTHA +1 THE INDEX\n# OF THE U-AXIS(4), AND NEXTU WILL CONTAIN THE \"U-TRANS\" POLICY OR ZERO.\n#\n# THE LIST IS EXACTLY 3 LONG.  (THIS LEADS UP TO SKIP LOGIC AND 150MS LIMIT)\n# THE INPUT IS THE LAST MEMBER OF THE LIST.\n#\n# RETURNS BY:\n#\t+\tTC\tQ\n#\n# DEFINITIONS:  (OUTPUT)\n#\tTIME6\t\tTIME OF NEXT RUPT\n#\tT6NEXT\t\tDELTA TIME TO NEXT RUPT\n#\tT6FURTHA\tDELTA TIME FROM 2ND TO LAST RUPT\n#\tNXT6ADR\t\tAXIS INDEX\t0 -- P-AXIS\n#\tT6NEXT +1\tAXIS INDEX\t4 -- U-AXIS\n#\tT6FURTHA +1\tAXIS INDEX\t13 -- V-AXIS\n\nJTLST\t\tCS\tT6FURTHA\n\t\tAD\tTIME6\n\t\tEXTEND\n\t\tBZMF\tMIDORLST\t# TIME6 -- TI IS IN A\n\n\t\tLXCH\tNXT6ADR\n\t\tDXCH\tT6NEXT\n\t\tDXCH\tT6FURTHA\n\t\tTS\tTIME6\n\t\tLXCH\tNXT6ADR\n\nTURNON\t\tCA\tBIT15\n\t\tEXTEND\n\t\tWOR\tCHAN13\n\t\tTC\tQ\n\n# Page 1457\nMIDORLST\tAD\tT6NEXT\n\t\tEXTEND\n\t\tBZMF\tLASTCHG\t\t# TIME6 + T6NEXT - T IS IN A\n\n\t\tLXCH\tT6NEXT \t+1\n\t\tDXCH\tT6FURTHA\n\t\tEXTEND\n\t\tSU\tTIME6\n\t\tDXCH\tT6NEXT\n\n\t\tTC\tQ\n\nLASTCHG\t\tCS\tA\n\t\tAD\tNEG0\n\t\tTS\tT6FURTHA\n\n\t\tTC\tQ\n\n# ROT-TOUV IS ENTERED WITH THE Q-COMPONENT OF THE QUANTITY TO BE TRANSFORMED IN A AND THE R-COMPONENT IN L.\n# ROT-TOUV TRANSFORMS THE QUANTITY INTO THE NON-ORTHOGONAL U-V AXIS SYSTEM.  IN THE U-V SYSTEM NO CROSS-COUPLING IS\n# PRODUCED FROM RCS JET FIRINGS.  AT THE COMPLETION OF ROT-TOUV, THE U-COMPONENT OF THE TRANSFORMED QUANTITY IS IN\n# A AND THE V-COMPONENT IS IN L.\n\nROT-TOUV\tLXCH\tROTEMP2\t\t# (R) IS PUT INTO ROTEMP2\n\t\tEXTEND\n\t\tMP\tCOEFFQ\n\t\tXCH\tROTEMP2\t\t# (R) GOES TO A AND COEFFQ.(Q) TO ROTEMP2\n\t\tEXTEND\n\t\tMP\tCOEFFR\n\t\tTS\tL\t\t# COEFFR.(R) IS PUT INTO L\n\t\tAD\tROTEMP2\n\t\tTS\tROTEMP1\t\t# COEFFQ.(Q)+COEFFR.(R) IS PUT IN ROTEMP1\n\t\tTCF\t+4\n\t\tINDEX\tA\t\t# COEFFQ.(Q) + COEFFR.(R) HAS OVERFLOWED\n\t\tCS\tLIMITS\t\t# AND IS LIMITED TO POSMAX OR NEGMAX\n\t\tTS\tROTEMP1\n\t\tCS\tROTEMP2\n\t\tAD\tL\t\t# -COEFFQ.(Q) + COEFFR.(R) IS NOW IN A\n\t\tTS\t7\n\t\tTCF\t+3\n\t\tINDEX\tA\t\t# -COEFFQ.(Q) + COEFFR.(R) HAS OVERFLOWED\n\t\tCS\tLIMITS\t\t# AND IS LIMITED TO POSMAX OR NEGMAX\n\t\tLXCH\tROTEMP1\t\t# COEFFQ.(Q) + COEFFR.(R) IS PUT INTO L\n\t\tTC\tQ\nSELCTSUB\tINDEX\tROTINDEX\n\t\tCA\tALLJETS\n\t\tINDEX\tNUMBERT\n\t\tMASK\tTYPEPOLY\n\t\tTS\tPOLYTEMP\n# Page 1458\n\t\tMASK\tCH5MASK\n\t\tCCS\tA\n\t\tTCF\t+2\n\n\t\tTC\tQ\n\n\t\tCA\tTHREE\nFAILOOP\t\tTS\tNUMBERT\n\t\tINDEX\tROTINDEX\n\t\tCA\tALLJETS\n\t\tINDEX\tNUMBERT\n\t\tMASK\tTYPEPOLY\n\t\tTS\tPOLYTEMP\n\t\tMASK\tCH5MASK\n\t\tEXTEND\n\t\tBZF\tFAILOOP -2\n\t\tCCS\tNUMBERT\n\t\tTCF\tFAILOOP\n\t\tINDEX\tAXISCTR\n\t\tTS\tTJU\n\t\tTC\tALARM\n\t\tOCT\t02004\n\t\tTCF\tNOROTAT\nALLJETS\t\tOCT\t00110\t\t#\t-U\t6 13\n\t\tOCT\t00022\t\t#\t-V\t2 9\n\t\tOCT\t00204\t\t#\t+U\t5 14\n\t\tOCT\t00041\t\t# \t+V\t1 10\nTYPEPOLY\tOCT\t00125\t\t#\t-X\t1 5 9 13\n\t\tOCT\t00252\t\t#\t+X\t2 6 10 14\n\t\tOCT\t00146\t\t#\tA\t2 5 10 13\n\t\tOCT\t00231\t\t#\tB\t1 6 9 14\n\t\tOCT\t00377\t\t#\tALL\t1 2 5 6 9 10 13 14\n\n# THE FOLLOWING SETS THE INTERRUPT FLIP-FLOP AS SOON AS POSSIBLE, WHICH PERMITS A RETURN TO THE INTERRUPTED JOB.\n\nCLOSEOUT\tCA\tADRRUPT\n\t\tTC\tMAKERUPT\n\nADRRUPT\t\tADRES\tENDJASK\n\nENDJASK\t\tDXCH\tDAPARUPT\n\t\tDXCH\tARUPT\n\t\tDXCH\tDAPBQRPT\n\t\tXCH\tBRUPT\n\t\tLXCH\tQ\n\t\tCAF\tNEGMAX\t\t# NEGATIVE DAPZRUPT SIGNALS JASK IS OVER.\n\t\tDXCH\tDAPZRUPT\n\t\tDXCH\tZRUPT\n\t\tTCF\tNOQRSM\n# Page 1459\n\t\tBLOCK\t3\n\t\tSETLOC\tFFTAG6\n\t\tBANK\n\n\t\tCOUNT*\t$$/DAP\n\nMAKERUPT\tEXTEND\n\t\tEDRUPT\tMAKERUPT\n\n"
  },
  {
    "path": "Luminary099/R30.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tR30.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t712-722\n# Mod history:\t2009-05-19 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-07 RSB\tRemoved a space between two components of\n#\t\t\t\ta 2OCT that isn't legal in yaYUL.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 712\n# SUBROUTINE NAME:  V82CALL\n# MOD NO: 0\t\t\t\t\t\t\t\tDATE: 16 FEB 67\n# MOD BY: R. R. BAIRNSFATHER\t\t\t\t\t\tLOG SECTION:  R30\n# MOD NO: 1\tMOD BY:  R. R. BAIRNSFATHER\tDATE: 11 APR 67\t\tSR30.1 CHANGED TO ALLOW MONITOR OPERN\n# MOD NO: 2\tMOD BY:  ALONSO\t\t\tDATE: 11 DEC 67\t\tVB82 PROGRAM REWRITTEN\n# MOD NO: 3\tMOD BY:  ALONSO\t\t\tDATE: 26 MAR 68\t\tPROG MOD TO HANDLE DIF EARTH/MOON SCALE\n#\n# NEW FUNCTIONAL DESCRIPTION:\tCALLED BY VERB 82 ENTER.  PRIORITY 10.\n# USED THROUGHOUT.\t\tCALCULATE AND DISPLAY ORBITAL PARAMETERS\n#\n# 1.\tIF AVERAGE G IS OFF:\n#\t\tFLASH DISPLAY V04N06. R2 INDICATES WHICH SHIP'S STATE VECTOR IS\n#\t\t TO BE UPDATED. INITIAL CHOICE IS THIS SHIP (R2=1). ASTRONAUT\n#\t\t CAN CHANGE TO OTHER SHIP BY V22EXE, WHERE X NOT EQ 1.\n#\t\tSELECTED STATE VECTOR UPDATED BY THISPREC (OTHPREC).\n#\t\tCALLS SR30.1 (WHICH CALLS TFFCONMU + TFFRP/RA) TO CALCULATE\n#\t\t RPER (PERIGEE RADIUS), RAPO (APOGEE RADIUS), HPER (PERIGEE\n#\t\t HEIGHT ABOVE LAUNCH PAD OR LUNAR LANDING SITE), HARD (APOGEE\n#\t\t HEIGHT AS ABOVE), TPER (TIME TO PERIGEE), TFF (TIME TO\n#\t\t INTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE).\n#\t\tFLASH MONITOR V16N44 (HAPO, HPER, TFF).TFF IS -59M59S IF IT WAS\n#\t\t NOT COMPUTABLE, OTHERWISE IT INCREMENTS ONCE PER SECOND.\n#\t\t ASTRONAUT HAS OPTION TO MONITOR TPER BY KEYING IN N 32 E.\n#\t\t DISPLAY IS IN HMS, IS NEGATIVE (AS WAS TFF), AND INCREMENTS\n#\t\t ONCE PER SECOND ONLY IF TFF DISPLAY WAS -59M59S.\n#\n# 2.\tIF AVERAGE G IS ON:\n#\t\tCALLS SR30.1 APPROX EVERY TWO SECS.  STATE VECTOR IS ALWAYS\n#\t\t FOR THIS VEHICLE. V82 DOES NOT DISTURB STATE VECTOR.  RESULTS\n#\t\t OF SR30.1 ARE RAPO, RPER, HAPO, HPER, TPER, TFF.\n#\t\tFLASH MONITOR V16N44 (HAPO, HPER, TFF).\n# ADDENDUM: HAPO AND HPER SHOULD BE CHANGED TO READ HAPOX AND HPERX IN THE\n#\t\t ABOVE REMARKS.\n#\n# CALLING SEQUENCE:  VERB 82 ENTER.\n#\n# SUBROUTINES CALLED:  SR30.1, GOXDSPF\n#\t\t\tMAYBE - THISPREC , OTHPREC, LOADTIME, DELRSPL\n# NORMAL EXIT MODES:  TC ENDEXT\n#\n# ALARMS:  NONE\n#\n# OUTPUT:  HAPOX\t(-29) M\n#\t   HPERX\t(-29) M\n#\t   RAPO\t\t(-29) M EARTH\n#\t\t\t(-27) M MOON\n#\t   RPER\t\t(-29) M EARTH\n#\t\t\t(-27) M MOON\n#\t   TFF\t\t(-28) CS\tCONTAINS NEGATIVE QUANTITY\n#\t   -TPER\t(-28) CS\tCONTAINS NEGATIVE QUANTITY\n# Page 713\n#\n# ERASABLE INITIALIZATION REQUIRED: STATE VECTOR.\n#\n# DEBRIS:\tQPRET, RONE, VONE,TFF/RTMU, HPERMIN, RPADTEM, V82EMFLG.\n#\t\tMAYBE: TSTART82, V82FLAGS, TDEC1.\n\n\t\tEBANK=\tHAPOX\n\t\tBANK\t31\n\t\tSETLOC\tR30LOC\n\t\tBANK\n\t\tCOUNT*\t$$/R30\n\nV82CALL\t\tTC\tINTPRET\n\t\tBON\tGOTO\n\t\t\tAVEGFLAG\n\t\t\tV82GON\t\t# IF AVERAGE G ON\n\t\t\tV82GOFF\t\t# IF AVERAGE G OFF\n\nV82GOFF\t\tEXIT\t\t\t# ALLOW ASTRONAUT TO SELECT VEHICLE\n\t\tCAF\tTWO\t\t# DESIRED FOR ORBITAL PARAMETERS\n\t\tTS\tOPTIONX\t\t# CALCULATION AND DISPLAY.\n\t\tCAF\tONE\n\t\tTS\tOPTIONX +1\n\t\tCAF\tOPTIONVN\t# V 04 N 06\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tENDEXT\t\t# TERMINATE\n\t\tTC\t+2\t\t# PROCEED\n\t\tTC\t-5\t\t# DATA IN. OPTION1+1 = 1 FOR THIS VEHICLE.\n\t\t\t\t\t#\t\tUNEQ 1 FOR OTHER VEHICLE.\n\t\tCAF\tBIT4\t\t# 80 MS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTFF\n\t\t2CADR\tTICKTEST\n\n\t\tRELINT\nV82GOFLP\tCAF\tTFFBANK\t\t# MAJOR RECYCLE LOOP ENTRY\n\t\tTS\tEBANK\n\t\tCAF\tZERO\n\t\tTS\tV82FLAGS\t# ZERO FLAGS FOR TICKTEST, INHIBITS\n\t\t\t\t\t# DECREMENTING OF TFF AND -TPER.\n\t\tCAF\tPRIO7\n\t\tTC\tFINDVAC\t\t# V82GOFF1 WILL EXECUTE STATE VECTOR\n\t\tEBANK=\tTFF\t\t# UPDATE AND ORBIT CALCULATIONS FOR\n\t\t2CADR\tV82GOFF1\t# SELECTED VEHICLE ABOUT PROPER BODY.\n\n\t\tRELINT\nV82STALL\tCAF\tTHREE\t\t# STALL IN THIS LOOP AND WITHOLD V 16 N 44\n# Page 714\n\t\tMASK\tV82FLAGS\t# UNTIL STATE VECTOR UPDATE SETS ONE OF\n\t\tCCS\tA\t\t# OUR FLAG BITS.\n\t\tTC\tFLAGGON\t\t# EXIT FROM STALL LOOP.\n\t\tCAF\t1SEC\n\t\tTC\tBANKCALL\n\t\tCADR\tDELAYJOB\n\t\tTC\tV82STALL\n\nFLAGGON\t\tCAF\tV16N44\t\t# MONITOR HAPO,HPER,TFF.\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tB5OFF\t\t# TERM  THIS TELLS TICKTEST TO KILL ITSELF\n\t\tTC\tB5OFF\t\t# PROCEED  DITTO\n\t\tTC\tV82GOFLP\t# RECYCLE  RECOMPUTE STATE VECT + DISPLAY\n\nOPTIONVN\tVN\t412\nV16N44\t\tVN\t1644\nTFFBANK\t\tECADR\tTFF\n\nV82GOFF1\tTC\tINTPRET\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTORE\tTDEC1\t\t# TIME FOR STATE VECTOR UPDATE.\n\t\tSTORE\tTSTART82\t# TIME FOR INTERNAL USE.\n\t\tEXIT\n\t\tCS\tOPTIONX +1\t# 1 FOR THIS VEHICLE, NOT 1 FOR OTHER.\n\t\tAD\tONE\n\t\tEXTEND\n\t\tBZF\tTHISSHIP\nOTHSHIP\t\tTC\tINTPRET\n\t\tCALL\t\t\t# CALL STATE VECTOR UPDATE FOR OTHER SHIP.\n\t\t\tOTHPREC\nBOTHSHIP\tVLOAD\t\t\t# MOVE RESULTS INTO TFFCONIC STORAGE AREAS\n\t\t\tRATT\t\t#  TO BE CALLED BY SR30.1.\n\t\tSTOVL\tRONE\t\t# RATT AT (-29)M FOR EARTH OR MOON\n\t\t\tVATT\n\t\tSTORE\tVONE\t\t#  VATT AT (-7)M/CS FOR EARTH OR MOON\n\t\tDLOAD*\n\t\t\t1/RTMUE,2\t#  X2 IS 0 FOR EARTH CENTERED STATE VEC\n\t\tSTORE\tTFF/RTMU\t#  X2 IS 2 FOR MOON\n\t\tDLOAD*\t\t\t# AS LEFT BY THISPREC OR OTHPREC.\n\t\t\tMINPERE,2\n\t\tSTORE\tHPERMIN\t\t#   TFFRTMU, HPERMIN AND RPADTEM ARE ALL\n\t\tSLOAD\tBHIZ\t\t# EARTH/MOON PARAMETERS AS SET HERE.\n\t\t\tX2\n\t\t\tEARTHPAD\n\t\tGOTO\n\t\t\tMOONPAD\n# Page 715\nTHISSHIP\tTC\tINTPRET\n\t\tCALL\t\t\t# CALL STATE VECTOR UPDATE FOR THIS SHIP.\n\t\t\tTHISPREC\n\t\tGOTO\n\t\t\tBOTHSHIP\n\n# THE FOLLOWING CONSTANTS ARE PAIRWISE INDEXED. DO NOT SEPARATE PAIRS.\n\nMINPERM\t\t2DEC\t10668 B-27\t# 35 KFT MIN PERIGEE HEIGHT FOR MOON(-27)M\n\nMINPERE\t\t2DEC\t91440 B-29\t# 300 KFT (-29)M FOR EARTH\n\nEARTHPAD\tDLOAD\tCLRGO\t\t#  PAD 37-B RADIUS.  SCALED AT (-29)M.\n\t\t\tRPAD\n\t\t\tV82EMFLG\t#  INDICATE EARTH SCALING FOR SR30.1\n\t\t\tBOTHPAD\n\nMOONPAD\t\tVLOAD\tABVAL\t\t# COMPUTE MOON PAD RADIUS FROM RLS VECTOR.\n\t\t\tRLS\t\t#  SCALED AT (-27)M.\n\t\tSET\n\t\t\tV82EMFLG\t#  INDICATE MOON SCALING FOR SR30.1\nBOTHPAD\t\tSTCALL\tRPADTEM\n\t\t\tSR30.1\t\t# CALCULATE ORBITAL PARAMETERS\n\t\tRTB\tDSU\n\t\t\tLOADTIME\n\t\t\tTSTART82\t# PRESENT TIME - TIME V82GOFF1 BEGAN\n\t\tSTORE\tTSTART82\t#                SAVE IT\n\t\tDLOAD\tBZE\t\t# SR30.1 SETS -TPER=0 IF HPER L/\n\t\t\t-TPER\t\t#  HPERMIN (300 OR 35) KFT.\n\t\t\tTICKTIFF\t# (-TPER = 0)\nTICKTPER\tDLOAD\tDAD\t\t# (-TPER NON ZERO)  TFF WAS NOT COMPUTED.\n\t\t\t-TPER\t\t# BUT WAS SET TO 59M59S.DONT TICK TFF, DO\n\t\t\tTSTART82\t# TICK -TPER. DISPLAY BOTH.\n\t\tSTORE\t-TPER\t\t# -TPER CORRECTED FOR TIME SINCE V82GOFF1\n\t\tEXIT\t\t\t# BEGAN.\n\t\tCAF\tBIT1\n\t\tTS\tV82FLAGS\t# INFORMS TICKTEST TO INCREMENT ONLY -TPER\n\t\tTC\tENDOFJOB\n\nTICKTIFF\tDLOAD\tDAD\t\t# (-TPER=0)  TFF WAS COMPUTED.TICK TFF.\n\t\t\tTFF\t\t# DO NOT TICK -TPER.DISPLAY TFF, BUT NOT\n\t\t\tTSTART82\t# -TPER.\n\t\tSTORE\tTFF\t\t# TFF CORRECTED FOR TIME SINCE V82GOFF1\n\t\tEXIT\t\t\t# BEGAN.\n\t\tCAF\tBIT2\n\t\tTS\tV82FLAGS\t# INFORMS TICKTEST TO INCREMENT ONLY TFF.\n\t\tTC\tENDOFJOB\n\n# Page 716\nTICKTEST\tCAF\tBIT5\t\t# THIS WAITLIST PROGRAM PERPETUATES ITSELF\n\t\tMASK\tEXTVBACT\t# ONCE A SEC UNTIL BIT 5 OF EXTVBACT =0.\n\t\tCCS\tA\n\t\tTC\tDOTICK\n\t\tCAF\tPRIO25\n\t\tTC\tNOVAC\t\t# TERMINATE V 82.CANT CALL ENDEXT IN RUPT.\n\t\tEBANK=\tEXTVBACT\n\t\t2CADR\tENDEXT\n\n\t\tTC\tTASKOVER\nDOTICK\t\tCAF\t1SEC\t\t# RE-REQUEST TICKTEST.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tTFF\n\t\t2CADR\tTICKTEST\n\n\t\tCAF\tTHREE\n\t\tMASK\tV82FLAGS\n\t\tINDEX\tA\n\t\tTC\t+1\n\t\tTC\tTASKOVER\t# IF NO FLAGBITS SET DONT CHANGE TFF OR\n\t\t\t\t\t# -TPER, BUT CONTINUE LOOP.\n\t\tTC\tTPERTICK\t# ONLY BIT 1 SET. INCR -TPER BY 1 SEC.\nTFFTICK\t\tCAF\t1SEC\t\t# ONLY BIT 2 SET. INCR TFF BY 1 SEC.\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tDAS\tTFF\n\t\tTC\tTASKOVER\nTPERTICK\tCAF\t1SEC\n\t\tTS\tL\n\t\tCAF\tZERO\n\t\tDAS\t-TPER\n\t\tTC\tTASKOVER\n\n# Page 717\nV82GON\t\tEXIT\t\t\t#  AVERAGE G ON. USE CURRENT STATE VECTOR\n\t\t\t\t\t# FOR ORBITAL PARAMETER CALCULATIONS.\n\t\tCAF\tPRIO7\t\t# LESS THAN LAMBERT\n\t\tTC\tFINDVAC\t\t# V82GON1 WILL PERFORM ORBIT CALCULATIONS\n\t\tEBANK=\tTFF\t\t# ABOUT PROPER BODY APPROX ONCE PER SEC.\n\t\t2CADR\tV82GON1\n\n\t\tRELINT\n\t\tCCS\tNEWJOB\t\t# WITHOLD V16 N44 UNTIL FIRST ORBIT CALC\n\t\tTC\tCHANG1\t\t# IS DONE. NOTE: V82GON1 (PRIO7, FINDVAC\n\t\t\t\t\t# JOB) IS COMPLETED BEFORE V82GON (PRIO7,\n\t\t\t\t\t# NOVAC JOB).\nV82REDSP\tCAF\tV16N44\t\t# MONITOR HAPO, HPER, TFF\n\t\tTC\tBANKCALL\n\t\tCADR\tGOXDSPF\n\t\tTC\tB5OFF\t\t# TERM THIS TELLS V82GON1 TO KILL ITSELF.\n\t\tTC\tB5OFF\t\t# PROC DITTO.\n\t\tTC\tV82REDSP\t# RECYCLE\n\nV82GON1\t\tTC\tINTPRET\t\t# THIS EXEC PROGRAM PERPETUATES ITSELF\n\t\t\t\t\t# ONCE A SEC UNTIL BIT 5 OF EXTVBACT =0.\n\t\tVLOAD\tGOTO\t\t# HOLDS OFF CCS NEWJOB BETWEEN RN AND\n\t\t\tRN\t\t#   VN FETCH SO RN , VN ARE FROM SAME\n\t\t\tNEXTLINE\t#   STATE VECTOR UPDATE.\nNEXTLINE\tSTOVL\tRONE\t\t#  RN AT (-29)M FOR EARTH OR MOON\n\t\t\tVN\n\t\tSTORE\tVONE\t\t# VN AT (-7)M/CS FOR EARTH OR MOON\n\t\tBON\tGOTO\n\t\t\tMOONTHIS\t# FLAG INDICATES BODY ABOUT WHICH ORBITAL\n\t\t\tMOONGON\t\t#    CALCULATIONS ARE TO BE PERFORMED.\n\t\t\tEARTHGON\t#   IF SET - MOON , IF RESET - EARTH.\n\nMOONGON\t\tSET\tDLOAD\n\t\t\tV82EMFLG\t# INDICATE MOON SCALING FOR SR30.1\n\t\t\t1/RTMUM\t\t# LUNAR PARAMETERS LOADED HERE FOR SR30.1\n\t\tSTODL\tTFF/RTMU\n\t\t\tMINPERM\n\t\tSTOVL\tHPERMIN\n\t\t\tRLS\t\t#  SCALED AT (-27)M.\n\t\tABVAL\tGOTO\n\t\t\tV82GON2\nEARTHGON\tCLEAR\tDLOAD\n\t\t\tV82EMFLG\t# INDICATE EARTH SCALING FOR SR30.1\n\t\t\t1/RTMUE\t\t# EARTH PARAMETERS LOADED HERE FOR SR30.1\n\t\tSTODL\tTFF/RTMU\n\t\t\tMINPERE\n\t\tSTODL\tHPERMIN\n\t\t\tRPAD\nV82GON2\t\tSTCALL\tRPADTEM\t\t# COMMON CODE FOR EARTH & MOON.\n\t\t\tSR30.1\n# Page 718\n\t\tEXIT\nV82GON3\t\tCAF\tBIT5\n\t\tMASK\tEXTVBACT\t# SEE IF ASTRONAUT HAS SIGNALLED TERMINATE\n\t\tEXTEND\n\t\tBZF\tENDEXT\t\t# YES, TERMINATE VB 82 LOOP\n\t\tCAF\t1SEC\n\t\tTC\tBANKCALL\t# WAIT ONE SECOND BEFORE REPEATING\n\t\tCADR\tDELAYJOB\t#   ORBITAL PARAMETER COMPUTATION.\n\t\tTC\tV82GON1\n\nSPLRET\t\t=\tV82GON3\n\n# Page 719\n# SUBROUTINE NAME: SR30.1\n# MOD NO: 0\t\t\t\t\t\t\t\tDATE: 16 FEB 67\n# MOD BY: R. R. BAIRNSFATHER\t\t\t\t\t\tLOG SECTION: R32\n# MOD NO: 1\tMOD BY: R. R. BAIRNSFATHER\tDATE: 11 APR 67\t\tSR30.1 CHANGED TO ALLOW MONITOR OPERN\n# MOD NO: 2\tMOD BY: R. R. BAIRNSFATHER\tDATE: 14 APR 67\t\tADD OVFL CK FOR RAPO\n# MOD NO: 3\tMOD BY ALONSO\t\t\tDATE: 11 DEC 67\t\tSUBROUTINE REWRITTEN\n# MOD NO: 4\tMOD BY ALONSO\t\t\tDATE: 26 MAR 68\t\tPROG MOD TO HANDLE DIF EARTH/MOON SCALE\n# MOD NO: 5\tMOD BY: R. R. BAIRNSFATHER\tDATE: 6 AUG 68\t\tOVFL CK FOR HAPO & HPER. VOIDS MOD #2.\n#\n# NEW FUNCTIONAL DESCRIPTION:  ORBITAL PARAMETERS DISPLAY FOR NOUNS 32 AND 44.\n# SR30.1 CALLS TFFCONMU AND TFFRP/RA TO CALCULATE RPER (PERIGEE RADIUS),\n# RAPO (APOGEE RADIUS), HPER (PERIGEE HEIGHT ABOVE LAUNCH PAD OR LUNAR\n# LANDING SITE), HAPO (APOGEE HEIGHT AS ABOVE), TPER (TIME TO PERIGEE),\n# TFF (TIME TO INTERSECT 300 KFT ABOVE PAD OR 35KFT ABOVE LANDING SITE).\n# IF HPER IS GREATER THAN OR EQUAL TO HPERMIN, CALCULATES TPER AND STORES\n# NEGATIVE IN -TPER.  OTHERWISE STORES +0 IN -TPER.  WHENEVER TPER IS\n# CALCULATED, TFF IS NOT COMPUTABLE AND DEFAULTS TO -59MIN 59SEC.  IF HAPO\n# WOULD EXCEED 9999.9 NM, IT IS LIMITED TO THAT VALUE FOR DISPLAY.\n#\n# ADDENDUM:\tHAPO AND HPER SHOULD BE CHANGED TO READ HAPOX AND HPERX IN THE\n#\t\tABOVE REMARKS.\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tSR30.1\n#\n# SUBROUTINES CALLED:\tTFFCONMU, TFFRP/RA, CALCTPER, CALCTFF\n#\n# NORMAL EXIT MODE:\tCALLING LINE +1 (STILL IN INTERPRETIVE MODE)\n#\n# ALARMS:\tNONE\n#\n# OUTPUT:\tRAPO\t(-29) M EARTH\tAPOGEE RADIUS\tEARTH CENTERED COORD.\n#\t\t\t(-27) M MOON\t\t\tMOON CENTERED COORD.\n#\t\tRPER\t(-29) M EARTH\tPERIGEE RADIUS\tEARTH CENTERED COORD.\n#\t\t\t(-27) M MOON\t\t\tMOON CENTERED COORD.\n#\t\tHAPOX\t(-29) M\t\tAPOGEE ALTITUDE ABOVE PAD OR LAND. SITE MAX VALUE LIMITED TO 9999.9 NM.\n#\t\tHPERX\t(-29) M\t\tPERIGEE ALT. ABOVE PAD OR LAND. SITE    MAX VALUE LIMITED TO 9999.9 NM.\n#\t\tTFF\t(-28) CS\tTIME TO 300KFT OR 35KFT ALTITUDE\n#\t\t-TPER\t(-28) CS\tTIME TO PERIGEE\n#\n# ERASABLE INITIALIZATION REQUIRED --\n#\tTFF/RTMU\t(+17) EARTH\tRECIPROCAL OF PROPER GRAV CONSTANT FOR\n#\t\t\t(+14) MOON\tEARTH OR MOON = 1/SQRT(MU).\n#\tRONE\t\t(-29) M\t\tSTATE VECTOR\n#\tVONE\t\t(-7)  M/CS\tSTATE VECTOR\n#\tRPADTEM\t\t(-29) M EARTH\tRADIUS OF LAUNCH PAD OR LUNAR LANDING\n#\t\t\t(-27) M MOON\tSITE.\n#\tHPERMIN\t\t(-29) M EARTH\t(300 OR 35) KFT MINIMUM PERIGEE ALTITUDE\n#\t\t\t(-27) M MOON\tABOVE LAUNCH PAD OR LUNAR LANDING SITE.\n#\tV82EMFLG\t(INT SW BIT)\tRESET FOR EARTH, SET FOR MOON.\n#\n# DEBRIS:\tQPREG, PDL, S2\n\n# Page 720\n\t\tCOUNT*\t$$/SR30S\n\nSR30.1\t\tSETPD\tSTQ\t\t# INITIALIZE PUSHDOWN LIST.\n\t\t\t0\n\t\t\tS2\n\t\t\t\t\t# SR30.1 INPUT:\tRONE AT (-29)M EARTH/MOON\n\t\t\t\t\t#\t\tVONE AT (-7)M/CS\n\t\t\t\t\t# TFFCONMU, TFFRP/RA, CALCTPER, AND CALCTFF\n\t\t\t\t\t# CALLS REQUIRE:\n\t\t\t\t\t# EARTH CENTERED (NO RESCALING REQUIRED)\n\t\t\t\t\t#\tRONE SCALED TO B-29 M\n\t\t\t\t\t#\tVONE SCALED TO B-7  M/CS\n\t\t\t\t\t# MOON CENTERED (RESCALING REQUIRED)\n\t\t\t\t\t#\tRONE SCALED TO B-27 M\n\t\t\t\t\t#\tVONE SCALED TO B-5  M/CS\n\t\tBOFF\tVLOAD\n\t\t\tV82EMFLG\t# OFF FOR EARTH, ON FOR MOON.\n\t\t\tTFFCALLS\n\t\t\tRONE\n\t\tVSL2\n\t\tSTOVL\tRONE\n\t\t\tVONE\n\t\tVSL2\n\t\tSTORE\tVONE\nTFFCALLS\tCALL\n\t\t\tTFFCONMU\n\t\tCALL\t\t\t# TFFRP/RA COMPUTES RAPO,RPER.\n\t\t\tTFFRP/RA\n\t\t\t\t\t# RETURNS WITH RAPO IN D(MPAC).\n\t\tDSU\n\t\t\tRPADTEM\n\t\tBOFF\tSR2R\t\t# NEED HAPO AT (-29)M FOR DISPLAY.\n\t\t\t\t\t# IF MOON CENTERED, RESCALE FROM (-27)M.\n\t\t\t\t\t# IF EARTH CENTERED ALREADY AT (-29)M.\n\t\t\tV82EMFLG\t# OFF FOR EARTH, ON FOR MOON.\n\t\t\t+1\n\t\tCALL\t\t\t# IF RAPO > MAXNM, SET RAPO =9999.9 NM.\n\t\t\tMAXCHK\t\t# OTHERWISE STORE (RAPO-RPADTEM) IN HAPO.\nSTORHAPO\tSTODL\tHAPOX\n\t\t\tRPER\n\t\tDSU\n\t\t\tRPADTEM\t\t# GIVES HPER AT (-29)M EARTH, (-27)M MOON.\n\t\tSTORE\tMPAC +4\t\t# SAVE THIS FOR COMPARISON TO HPERMIN.\n\t\tBOFF\tSR2R\t\t# NEED HPER AT (-29)M FOR DISPLAY.\n\t\t\t\t\t# IF MOON CENTERED, RESCALE FROM (-27)M.\n\t\t\t\t\t# IF EARTH CENTERED ALREADY AT (-29)M.\n\t\t\tV82EMFLG\t# OFF FOR EARTH, ON FOR MOON.\n\t\t\t+1\n\t\tCALL\t\t\t# IF HPER > MAXNM, SET HPER = 9999.9 NM.\n\t\t\tMAXCHK\n# Page 721\nSTORHPER\tSTODL\tHPERX\t\t# STORE (RPER - RPADTEM) INTO HPERX.\n\t\t\tMPAC \t+4\n\t\tDSU\tBPL\t\t# HPERMIN AT (-29)M FOR EARTH, (-27)M MOON\n\t\t\tHPERMIN\t\t# IF HPER L/   HPERMIN (300 OR 35)KFT,\n\t\t\tDOTPER\t\t#  THEN ZERO INTO -TPER.\n\t\tDLOAD\tGOTO\t\t#   OTHERWISE CALCULATE TPER.\n\t\t\tHI6ZEROS\n\t\t\tSKIPTPER\nDOTPER\t\tDLOAD\tCALL\n\t\t\tRPER\n\t\t\tCALCTPER\n\t\tDCOMP\t\t\t# TPER IS PUT NEG INTO -TPER.\nSKIPTPER\tSTODL\t-TPER\n\t\t\tHPERMIN\t\t# HPERMIN AT (-29)M FOR EARTH, (-27)M MOON\n\t\tDAD\tCALL\n\t\t\tRPADTEM\t\t# RPADTEM AT (-29)M FOR EARTH, (-27)M MOON\n\t\t\tCALCTFF\t\t# GIVES 59M59S FOR TFF IF HPER G/\n\t\tDCOMP\t\t\t#   HPERMIN + RPADTEM. (TPER WAS NON ZERO)\n\t\tSTCALL\tTFF\t\t# OTHERWISE COMPUTES TFF.\t(GOTO)\n\t\t\tS2\n\nMAXCHK\t\tDSU\tBPL\t\t# IF C(MPAC) > 9999.9 NM. MPAC = 9999.9 NM.\n\t\t\tMAXNM\n\t\t\t+3\t\t# OTHERWISE C(MPAC) = B(MPAC).\n\t\tDAD\tRVQ\n\t\t\tMAXNM\n +3\t\tDLOAD\tRVQ\t\t# (USED BY P30 - P37 ALSO)\n\t\t\tMAXNM\n\nMAXNM\t\t2OCT\t0106505603\n\n# Page 722 (empty page)\n"
  },
  {
    "path": "Luminary099/R31.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tR31.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t703-708\n# Mod history:\t2009-05-19 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 703\n\t\tBANK\t40\n\t\tSETLOC\tR31LOC\n\t\tBANK\n\n\t\tCOUNT*\t$$/R31\n\nR31CALL\t\tCAF\tPRIO3\n\t\tTC\tFINDVAC\n\t\tEBANK=\tSUBEXIT\n\t\t2CADR\tV83CALL\n\nDSPDELAY\tTC\tFIXDELAY\n\t\tDEC\t100\n\t\tCA\tEXTVBACT\n\t\tMASK\tBIT12\n\t\tEXTEND\n\t\tBZF\tDSPDELAY\n\n\t\tCAF\tPRIO5\n\t\tTC\tNOVAC\n\t\tEBANK=\tTSTRT\n\t\t2CADR\tDISPN5X\n\n\t\tTCF\tTASKOVER\n\n\t\tBANK\t37\n\t\tSETLOC\tR31\n\t\tBANK\n\t\tCOUNT*\t$$/R31\n\nDISPN5X\t\tCAF\tV16N54\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKF\n\t\tTC\tB5OFF\n\t\tTC\tB5OFF\n\t\tTCF\tDISPN5X\n\nV83CALL\t\tCS\tFLAGWRD7\t# TEST AVERAGE G FLAG\n\t\tMASK\tAVEGFBIT\n\t\tEXTEND\n\t\tBZF\tMUNG?\t\t# ON - TEST MUNFLAG\n\n\t\tCS\tFLAGWRD8\n\t\tMASK\tSURFFBIT\n\t\tEXTEND\n\t\tBZF\tONEBASE\t\t# ON SURFACE - BYPASS LEMPREC\n\n\t\tTC\tINTPRET\t\t# EXTRAPOLATE BOTH STATE VECTORS\n\t\tRTB\n# Page 704\n\t\t\tLOADTIME\n\t\tSTCALL\tTDEC1\n\t\t\tLEMPREC\t\t# PRECISION BASE VECTOR FOR LM\n\t\tVLOAD\n\t\t\tRATT1\n\t\tSTOVL\tBASETHP\n\t\t\tVATT1\n\t\tSTODL\tBASETHV\n\t\t\tTAT\nDOCMBASE\tSTORE\tBASETIME\t# PRECISION BASE VECTOR FOR CM\n\t\tSTCALL\tTDEC1\n\t\t\tCSMPREC\n\t\tVLOAD\n\t\t\tRATT1\n\t\tSTOVL\tBASEOTP\n\t\t\tVATT1\n\t\tSTORE\tBASEOTV\n\t\tEXIT\n\nREV83\t\tCS\tFLAGWRD7\n\t\tMASK\tAVEGFBIT\n\t\tEXTEND\n\t\tBZF\tGETRVN\t\t# IF AVEGFLAG SET, USE RN,VN\n\n\t\tCS\tFLAGWRD8\n\t\tMASK\tSURFFBIT\n\t\tEXTEND\n\t\tBZF\tR31SURF\t\t# IF ON SURFACE,USE LEMAREC\n\n\t\tTC\tINTPRET\t\t# DO CONIC EXTRAPOLATION FOR BOTH VEHICLES\n\t\tRTB\n\t\t\tLOADTIME\n\t\tSTCALL\tTDEC1\n\t\t\tINTSTALL\n\t\tVLOAD\tCLEAR\n\t\t\tBASETHP\n\t\t\tMOONFLAG\n\t\tSTOVL\tRCV\n\t\t\tBASETHV\n\t\tSTODL\tVCV\n\t\t\tBASETIME\n\t\tBOF\tSET\t\t# GET APPROPRIATE MOONFLAG SETTING\n\t\t\tMOONTHIS\n\t\t\t+2\n\t\t\tMOONFLAG\n\t\tSET\n\t\t\tINTYPFLG\t# CONIC EXTRAP.\n\t\tSTCALL\tTET\n\t\t\tINTEGRVS\t# INTEGRATION --- AT LAST---\nOTHCONIC\tVLOAD\n# Page 705\n\t\t\tRATT\n\t\tSTOVL\tRONE\n\t\t\tVATT\n\t\tSTCALL\tVONE\t\t# GET SET FOR CONIC EXTRAP.,OTHER.\n\t\t\tINTSTALL\n\t\tSET\tDLOAD\n\t\t\tINTYPFLG\n\t\t\tTAT\nOTHINT\t\tSTORE\tTDEC1\n\t\tVLOAD\tCLEAR\n\t\t\tBASEOTP\n\t\t\tMOONFLAG\n\t\tSTOVL\tRCV\n\t\t\tBASEOTV\n\t\tSTODL\tVCV\n\t\t\tBASETIME\n\t\tBOF\tSET\n\t\t\tMOONTHIS\n\t\t\t+2\n\t\t\tMOONFLAG\n\t\tSTCALL\tTET\n\t\t\tINTEGRVS\nCOMPDISP\tVLOAD\tVSU\n\t\t\tRATT\n\t\t\tRONE\n\t\tRTB\tPDDL\n\t\t\tNORMUNX1\t# UNIT(RANGE) TO PD 0-5\n\t\t\t36D\n\t\tSL*\t\t\t# RESCALE AFTER NORMUNIT\n\t\t\t0,1\n\t\tSTOVL\tRANGE\t\t# SCALED 2(29)M\n\t\t\tVATT\n\t\tVSU\tDOT\t\t# (VCM- VLM).UNIT(LOS). PD=0\n\t\t\tVONE\n\t\tSL1\t\t\t# SCALED 2(7)M/CS\n\t\tSTOVL\tRRATE\n\t\t\tRONE\n\t\tUNIT\tPDVL\t\t# UNIT(R) TO PD 0-5\n\t\t\tUNITZ\n\t\tCALL\n\t\t\tCDU*NBSM\n\t\tVXM\tPUSH\t\t# UNIT (Z)/4 TO PD 6-11\n\t\t\tREFSMMAT\n\t\tVPROJ\tVSL2\t\t# UNIT(P)=UNIT(UZ -(UZ)PROJ(UR))\n\t\t\t0D\n\t\tBVSU\tUNIT\n\t\t\t6D\n\t\tPDVL\tVXV\t\t# UNIT(P) TO PD 12-17\n\t\t\t0D\t\t# UNIT(RL)\n\t\t\tVONE\n# Page 706\n\t\tVXV\tDOT\t\t# (UR * VL)*UR . U(P)\n\t\t\t0D\n\t\t\t12D\n\t\tPDVL\t\t\t# SIGN TO 12-13 , LOAD U(P)\n\t\tDOT\tSIGN\n\t\t\t6D\n\t\t\t12D\n\t\tSL2\tACOS\t\t# ARCCOS(UP.UZ(SIGN))\n\t\tSTOVL\tRTHETA\n\t\t\t0D\n\t\tDOT\tBPL\t\t# IF UR.UZ NEG,\n\t\t\t6D\t\t#   RTHETA = 1 - RTHETA\n\t\t\t+5\n\t\tDLOAD\tDSU\n\t\t\tDPPOSMAX\n\t\t\tRTHETA\n\t\tSTORE\tRTHETA\n\t\tEXIT\n\n\t\tCA\tBIT5\n\t\tMASK\tEXTVBACT\n\t\tEXTEND\t\t\t# IF ANSWERED,\n\t\tBZF\tENDEXT\t\t#\t TERMINATE\n\n\t\tCS\tEXTVBACT\n\t\tMASK\tBIT12\n\t\tADS\tEXTVBACT\t# SET BIT 12\n\t\tTCF\tREV83\t\t# AND START AGAIN.\n\nGETRVN\t\tCA\tPRIO22\t\t# INHIBIT SERVICER\n\t\tTC\tPRIOCHNG\n\t\tTC\tINTPRET\n\t\tVLOAD\tSETPD\n\t\t\tRN\t\t# LM STATE VECTOR IN RN,VN\n\t\t\t0\n\t\tSTOVL\tRONE\n\t\t\tVN\n\t\tSTOVL\tVONE\t\t# LOAD R(CSM),V(CSM) IN CASE MUNFLAG SET\n\t\t\tV(CSM)\t\t# (TO INSURE TIME COMPATABILITY)\n\t\tPDVL\tPDDL\n\t\t\tR(CSM)\n\t\t\tPIPTIME\n\t\tEXIT\n\t\tCA\tPRIO3\n\t\tTC\tPRIOCHNG\n\t\tTC\tINTPRET\n\t\tBOFF\tVLOAD\n\t\t\tMUNFLAG\n\t\t\tGETRVN2\t\t# IF MUNFLAG RESET, DO CM DELTA PRECISION\n# Page 707\n\t\tVXM\tVSR4\t\t# CHANGE TO REFERENCE SYSTEM AND RESCALE\n\t\t\tREFSMMAT\n\t\tPDVL\t\t\t# R TO PD 0-5\n\t\tVXM\tVSL1\n\t\t\tREFSMMAT\n\t\tPUSH\tSETPD\t\t# V TO PD 5-11\n\t\t\t0\n\t\tGOTO\n\t\t\tCOMPDISP\n\nGETRVN2\t\tCALL\n\t\t\tINTSTALL\n\t\tCLEAR\tGOTO\n\t\t\tINTYPFLG\t# PREC EXTRAP FOR OTHER\n\t\t\tOTHINT\nR31SURF\t\tTC\tINTPRET\n\t\tRTB\t\t\t# LM IS ON SURFACE, SO PRECISION\n\t\t\tLOADTIME\t# INTEGRATION USES PLANETARY INERTIAL\n\t\tSTCALL\tTDEC1\t\t# ORIENTATION SUBROUTINE\n\t\t\tLEMPREC\n\t\tGOTO\t\t\t# DO CSM CONIC\n\t\t\tOTHCONIC\nMUNG?\t\tCS\tFLAGWRD6\n\t\tMASK\tMUNFLBIT\n\t\tEXTEND\n\t\tBZF\tGETRVN\t\t# IF MUNFLAG SET, CSM BASE NOT NEEDED\n\nONEBASE\t\tTC\tINTPRET\t\t# GET CSM BASE VECTOR\n\t\tRTB\tGOTO\n\t\t\tLOADTIME\n\t\t\tDOCMBASE\n\nV16N54\t\tVN\t1654\n\n# Page 708 (empty page)\n"
  },
  {
    "path": "Luminary099/R60_62.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tR60_R62.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t472-485\n# Mod history:\t2009-05-17 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 472\n# MOD NO: 0\t\t\tDATE: 1 MAY 1968\n# MOD BY: DIGITAL DEVEL GROUP\tLOG SECTION R60,R62\n#\n# FUNCTIONAL DESCRIPTION:\n#\n# CALLED AS A GENERAL SUBROUTINE TO MANEUVER THE LM TO A SPECIFIED\n# ATTITUDE.\n#\n# 1. IF THE 3-AXIS FLAG IS NOT SET THE FINAL CDU ANGLES ARE\n# CALCULATED (VECPOINT).\n#\n# 2. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS).\n#\n# 3. REQUEST FLASHING DISPLAY V50 N18 PLEASE PERFORM AUTO MANEUVER.\n#\n# 4. IF PRIORITY DISPLAY FLAG IS SET DO A PHASECHANGE. THEN AWAIT\n# ASTRONAUT RESPONSE.\n#\n# 5. DISPLAY RESPONSE RETURNS:\n#\n#     A. ENTER - RESET 3-AXIS FLAG AND RETURN TO CLIENT.\n#\n#     B. TERMINATE - IF IN P00 GO TO STEP 5A. OTHERWISE CHECK IF R61 IS\n#\t THE CALLING PROGRAM. IF IN R61 AN EXIT IS MADE TO GOTOV56. IF\n#\t NOT IN R61 AN EXIT IS DONE VIA GOTOPOOH.\n#\n#     C. PROCEED - CONTINUE WITH PROGRAM AT STEP 6.\n#\n# 6. IF THE 3-AXISFLAG IS NOT SET, THE FINAL CDU ANGLES ARE CALCULATED\n#    (VECPOINT).\n#\n# 7. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS).\n#\n# 8. IF THE G+N SWITCH IS NOT SET GO BACK TO STEP 3.\n#\n# 9. IF THE AUTO SWITCH IS NOT SET GO BACK TO STEP 3.\n#\n# 10. NONFLASHING DISPLAY V06N18 (FDAI ANGLES).\n#\n# 11. DO A PHASECHANGE.\n#\n# 12. DO A MANEUVER CALCULATION AND ICDU DRIVE ROUTINE TO ACHIEVE FINAL\n#\n#     GIMBAL ANGLES (GOMANUR).\n# 13. AT END OF MANEUVER GO TO STEP 3.\n#\n#\t   IF SATISFACTORY MANEUVER STEP 5A EXITS R60.\n#\t   FOR FURTHER ADJUSTMENT OF THE VEHICLE ATTITUDE ABOUT THE\n#\t   DESIRED VECTOR, THE ROUTINE MAY BE PERFORMED AGAIN STARTING AT\n# Page 473\n#\t   STEP 5C.\n#\n# CALLING SEQUENCE:  TC BANKCALL\n#\t\t     CADR R60LEM\n#\n# ERASABLE INITIALIZATION REQUIRED : SCAXIS, POINTVSM (FOR VECPOINT)\n#\t\t\t\t     3AXISFLG.\n#\n# SUBROUTINES CALLED: VECPOINT, BALLANGS, GOPERF2R, LINUS, GODSPER,\n#\t\t     GOMANUR, DOWNFLAG, PHASCHNG, UPFLAG\n#\n# NORMAL EXIT MODES: CAE TEMPR60   (CALLERS RETURN ADDRESS)\n#\t\t     TC  BANKJUMP\n#\n# ALARMS: NONE\n#\n# OUTPUT: NONE\n#\n# DEBRIS: CPHI, CTHETA, CPSI, 3AXISFLG, TBASE2\n\n\t\tBANK\t34\n\t\tSETLOC\tMANUVER\n\t\tBANK\n\n\t\tEBANK=\tTEMPR60\n\n\t\tCOUNT*\t$$/R06\nR60LEM\t\tTC\tMAKECADR\n\t\tTS\tTEMPR60\n\nREDOMANN\tCAF\t3AXISBIT\n\t\tMASK\tFLAGWRD5\t# IS 3-AXIS FLAG SET\n\t\tCCS\tA\n\t\tTCF\tTOBALL\t\t# YES\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tVECPOINT\t# TO COMPUTE FINAL ANGLES\n\t\tSTORE\tCPHI\t\t# STORE FINAL ANGLES - CPHI,CTHETA,CPSI\n\t\tEXIT\n\nTOBALL\t\tTC\tBANKCALL\n\t\tCADR\tBALLANGS\t# TO CONVERT ANGLES TO FDAI\nTOBALLA\t\tCAF\tV06N18\n\t\tTC\tBANKCALL\n\t\tCADR\tGOPERF2R\t# DISPLAY PLEASE PERFORM AUTO MANEUVER\n\t\tTC\tR61TEST\n\t\tTC\tREDOMANC\t# PROCEED\n\t\tTC\tENDMANU1\t# ENTER I.E. FINISHED WITH R60\n# Page 474\n\t\tTC\tCHKLINUS\t# TO CHECK FOR PRIORITY DISPLAYS\n\t\tTC\tENDOFJOB\n\nREDOMANC\tCAF\t3AXISBIT\n\t\tMASK\tFLAGWRD5\t# IS 3-AXIS FLAG SET\n\t\tCCS\tA\n\t\tTCF\tTOBALLC\t\t# YES\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tVECPOINT\t# TO COMPUTE FINAL ANGLES\n\t\tSTORE\tCPHI\t\t# STORE ANGLES\n\t\tEXIT\n\nTOBALLC\t\tTC\tBANKCALL\n\t\tCADR\tBALLANGS\t# TO CONVERT ANGLES TO FDAI\n\t\tTC\tG+N,AUTO\t# CHECK AUTO MODE\n\t\tCCS\tA\n\t\tTCF\tTOBALLA\t\t# NOT AUTO, GO REREQUEST AUTO MANEUVER.\n\nAUTOMANV\tCAF\tV06N18\t\t# STATIC DISPLAY DURING AUTO MANEUVER\n\t\tTC\tBANKCALL\n\t\tCADR\tGODSPR\n\t\tTC\tCHKLINUS\t# TO CHECK FOR PRIORITY DISPLAYS\n\nSTARTMNV\tTC\tBANKCALL\t# PERFORM MANEUVER VIA KALCMANU\n\t\tCADR\tGOMANUR\n\nENDMANUV\tTCF\tTOBALLA\t\t# FINISHED MANEUVER.\nENDMANU1\tTC\tDOWNFLAG\t# RESET 3-AXIS FLAG\n\t\tADRES\t3AXISFLG\n\t\tCAE\tTEMPR60\n\t\tTC\tBANKJUMP\n\nCHKLINUS\tCS\tFLAGWRD4\n\t\tMASK\tPDSPFBIT\t# IS PRIORITY DISPLAY FLAG SET?\n\t\tCCS\tA\n\t\tTC\tQ\t\t# NO - EXIT\n\t\tCA\tQ\n\t\tTS\tMPAC +2\t\t# SAVE RETURN\n\t\tCS\tTHREE\t\t# OBTAIN LOCATION FOR RESTART\n\t\tAD\tBUF2\t\t# HOLDS Q OF LAST DISPLAY\n\t\tTS\tTBASE2\n\n\t\tTC\tPHASCHNG\n\t\tOCT\t00132\n\n\t\tCAF\tBIT7\n\t\tTC\tLINUS\t\t# GO SET BITS FOR PRIORITY DISPLAY\n\t\tTC\tMPAC +2\n\n# Page 475\nRELINUS\t\tCAF\tPRIO26\t\t# RESTORE ORIGINAL PRIORITY\n\t\tTC\tPRIOCHNG\n\n\t\tCAF\tTRACKBIT\t# DON'T CONTINUE R60 UNLESS TRACKFLAG ON.\n\t\tMASK\tFLAGWRD1\n\t\tCCS\tA\n\t\tTCF\tRER60\n\n\t\tCAF\tRNDVZBIT\t# IS IT P20?\n\t\tMASK\tFLAGWRD0\n\t\tCCS\tA\n\t\tTC\t+4\t\t# YES\n\t\tTC\tPHASCHNG\t# NO, MUST BE P25, SET 2.11 SPOT\n\t\tOCT\t40112\n\n\t\tTC\tENDOFJOB\n\n\t\tTC\tPHASCHNG\t# SET 2.7 SPOT FOR P20\n\t\tOCT\t40072\n\n\t\tTC \tENDOFJOB\n\nRER60\t\tTC\tUPFLAG\t\t# SET PRIO DISPLAY FLAG AFTER RESTART\n\t\tADRES\tPDSPFLAG\n\n\t\tTC\tTBASE2\n\nR61TEST\t\tCA\tMODREG\t\t# IF WE ARE IN P00 IT MUST BE V49 OR V89\n\t\tEXTEND\n\t\tBZF\tENDMANU1\t# THUS WE GO TO ENDEXT VIA USER\n\n\t\tCA\tFLAGWRD4\t# ARE WE IN R61  (P20 OR P25)\n\t\tMASK\tPDSPFBIT\n\t\tEXTEND\n\t\tBZF\tGOTOPOOH\t# NO\n\t\tTC\tGOTOV56\t\t# YES\n\nBIT14+7\t\tOCT\t20100\nOCT203\t\tOCT\t203\nV06N18\t\tVN\t0618\n\n# SUBROUTINE TO CHECK FOR G+N CONTROL. AUTO STABILIZATION\n#\n# RETURNS WITH C(A) = +  IF NOT SET FOR G+N, AUTO\n# RETURNS WITH C(A) = +0 IF SWITCHES ARE SET\n\nG+N,AUTO\tEXTEND\n\t\tREAD\tCHAN30\n\t\tMASK\tBIT10\n\t\tCCS\tA\n\t\tTC\tQ\t\t# NOT IN G+N  C(A) = +\n# Page 476\nISITAUTO\tEXTEND\t\t\t# CHECK FOR AUTO MODE\n\t\tREAD\tCHAN31\n\t\tMASK\tBIT14\n\t\tTC\tQ\t\t# (+) = NOT IN AUTO,  (+0) = AOK\n\n# Page 477\n# PROGRAM DESCRIPTION BALLANGS\n# MOD NO.\t  LOG SECTION  R60,R62\n#\n# WRITTEN BY RAMA M.AIYAWAR\n# FUNCTIONAL DESCRIPTION\n#\n# COMPUTES LM FDAI BALL DISPLAY ANGLES\n# CALLING SEQUENCE\n#\n#\t\tTC\tBALLANGS\n# NORMAL EXIT MODE\n#\n#\t\tTC\tBALLEXIT\t# (SAVED Q)\n#\n# ALARM OR EXIT MODE  NIL\n# SUBROUTINES CALLED\n#\t\tCD*TR*G\n#\t\tARCTAN\n#\n# INPUT\n#\n# CPHI,CTHETA,CPSI  ARE  THE ANGLES CORRESPONDING TO AOG,AIG,AMG. THEY ARE\n# SP,2S COMPLIMENT SCALED TO HALF REVOLUTION.\n# OUTPUT\n#\n# FDAIX,FDAIY,FDAIZ ARE THE REQUIRED BALL ANGLES SCALED TO HALF REVOLUTION\n# SP,2S COMPLIMENT.\n# THESE ANGLES WILL BE DISPLAYED AS DEGREES AND HUNDREDTHS. IN THE ORDER  ROLL, PITCH, YAW, USING NOUNS 18 & 19.\n#\n# ERASABLE INITIALIZATION REQUIRED\n#\n# CPHI,CTHETA,CPSI EACH A SP REGISTER\n# DEBRIS\n#\n# A,L,Q,MPAC,SINCDU,COSCDU,PUSHLIS,BALLEXIT\n#\n#\n# NOMENCLATURE:\t CPHI, CTHETA, & CPSI REPRESENT THE OUTER, INNER, & MIDDLE GIMBAL ANGLES, RESPECTIVELY; OR\n# EQUIVALENTLY, CDUX, CDUY, & CDUZ.\n#\n# NOTE:  ARCTAN CHECKS FOR OVERFLOW AND SHOULD BE ABLE TO HANDLE ANY SINGULARITIES.\n\n\t\tSETLOC\tBAWLANGS\n\t\tBANK\n\n\t\tCOUNT*\t$$/BALL\nBALLANGS\tTC\tMAKECADR\n\t\tTS\tBALLEXIT\n\t\tCA\tCPHI\n# Page 478\n\t\tTS\tCDUSPOT +4\n\t\tCA\tCTHETA\n\t\tTS\tCDUSPOT\n\t\tCA\tCPSI\n\t\tTS\tCDUSPOT +2\n\n\t\tTC\tINTPRET\n\t\tSETPD\tCALL\n\t\t\t0D\n\t\t\tCD*TR*G\n\n\t\tDLOAD\tDMP\n\t\t\tSINCDUX\t\t# SIN (OGA)\n\t\t\tCOSCDUZ\t\t# COS (MGA)\n\n\t\tSL1\tDCOMP\t\t# SCALE\n\t\tARCSIN\tPDDL\t\t# YAW = ARCSIN(-SXCZ) INTO 0 PD\n\t\t\tSINCDUZ\n\t\tSTODL\tSINTH\t\t# (SINTH = 18D IN PD)\n\t\t\tCOSCDUZ\n\t\tDMP\tSL1\t\t# RESCALE\n\t\t\tCOSCDUX\n\t\tSTCALL\tCOSTH\t\t# (COSTH= 16D IN PD)\n\t\t\tARCTAN\n\t\tPDDL\tDMP\t\t# ROLL = ARCTAN(SZ/CZCX) INTO 2 PD\n\t\t\tSINCDUZ\n\t\t\tSINCDUX\n\t\tSL2\tPUSH\t\t# SXSZ INTO 4 PD\n\t\tDMP\tPDDL\t\t# SXSZCY INTO 4 PD\n\t\t\tCOSCDUY\n\t\tDMP\tPDDL\t\t# SXSZSY INTO 6 PD\n\t\t\tSINCDUY\n\t\t\tCOSCDUX\n\t\tDMP\tSL1\t\t# CXCY\n\t\t\tCOSCDUY\n\t\tDSU\tSTADR\t\t# PULL UP FROM 6 PD\n\t\tSTODL\tCOSTH\t\t# COSTH = CXCY - SXSZSY\n\t\t\tSINCDUY\n\t\tDMP\tSL1\n\t\t\tCOSCDUX\t\t# CXSY\n\t\tDAD\tSTADR\t\t# PULL UP FROM 4 PD\n\t\tSTCALL\tSINTH\t\t# SINTH = CXSY + SXSZCY\n\t\t\tARCTAN\t\t# RETURNS WITH D(MPAC) = PITCH\n\t\tPDDL\tVDEF\t\t# PITCH INTO 2 PD, ROLL INTO MPAC FROM 2PD\n\t\tRTB\t\t\t# VDEF MAKES V(MPAC) = ROLL, PITCH, YAW\n\t\t\tV1STO2S\n\t\tSTORE\tFDAIX\t\t# MODE IS TP\n\t\tEXIT\n\nENDBALL\t\tCA\tBALLEXIT\n\n# Page 479\n\t\tTC\tBANKJUMP\n\n# Page 480\n# PROGRAM DESCRIPTION - VECPOINT\n#\n#\n#\t   THIS INTERPRETIVE SUBROUTINE MAY BE USED TO POINT A SPACECRAFT AXIS IN A DESIRED DIRECTION.  THE AXIS\n# TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN SUCCESSIVE LOCATIONS OF ERASABLE MEMORY\n# BEGINNING WITH THE LOCATION CALLED SCAXIS.  THE COMPONENTS OF THIS VECTOR ARE GIVEN IN SPACECRAFT COORDINATES.\n# THE DIRECTION IN WHICH THIS AXIS IS TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN\n# SUCCESSIVE LOCATIONS OF ERASABLE MEMORY BEGINNING WITH THE ADDRESS CALLED POINTVSM.  THE COMPONENTS OF THIS\n# VECTOR ARE GIVEN IN STABLE MEMBER COORDINATES.  WITH THIS INFORMATION VECPOINT COMPUTES A SET OF THREE GIMBAL\n# ANGLES (2S COMPLEMENT) CORESPONDING TO THE CROSS-PRODUCT ROTATION BETWE EN SCAXIS AND POINTVSM AND STORES THEM\n# IN T(MPAC) BEFORE RETURNING TO THE CALLER.\n#\t   THIS ROTATION, HOWEVER, MAY BRING THE S/C INTO GIMBAL LOCK.  WHEN POINTING A VECTOR IN THE Y-Z PLANE,\n# THE TRANSPONDER AXIS, OR THE AOT FOR THE LEM, THE PROGRAM WILL CORRECT THIS PROBLEM BY ROTATING THE CROSS-\n# PRODUCT ATTITUDE ABOUT POINTVSM BY A FIXED AMOUNT SUFFICIENT TO ROTATE THE DESIRED S/C ATTITUDE OUT OF GIMBAL\n# LOCK.  IF THE AXIS TO BE POINTED IS MORE THAN 40.6 DEGREES BUT LESS THAN 60.5 DEG FROM THE +X (OR-X) AXIS,\n# THE ADDITIONAL ROTATION TO AVOID GIMAL LOCK IS 35 DEGREES.  IF THE AXIS IS MORE THAN 60.5 DEGEES FROM +X (OR -X)\n# THE ADDITIONAL ROTATION IS 35 DEGREES.  THE GIMBAL ANGLES CORRESPONDING TO THIS ATTITUDE ARE THEN COMPUTED AND\n# STORED AS 2S COMPLIMENT ANGLES IN T(MPAC) BEFORE RETURNING TO THE CALLER.\n#\t   WHEN POINTING THE X-AXIS, OR THE THRUST VECTOR, OR ANY VECTOR WITHIN 40.6 DEG OF THE X-AXIS, VECPOINT\n# CANNOT CORRECT FOR A CROSS-PRODUCT ROTATION INTO GIMBAL LOCK.  IN THIS CASE A PLATFORM REALIGNMENT WOULD BE\n# REQUIRED TO POINT THE VECTOR IN THE DESIRED DIRECTION.  AT PRESENT NO INDICATION IS GIVEN FOR THIS SITUATION\n# EXCEPT THAT THE FINAL MIDDLE GIMBAL ANGLE IN MPAC +2 IS GREATER THAN 59 DEGREES.\n#\n#\t   CALLING SEQUENCE -\n#\t       1) LOAD SCAXIS, POINTVSM\n#\t       2) CALL\n#\t\t       VECPOINT\n#\n#\t   RETURNS WITH\n#\n#\t       1) DESIRED OUTER  GIMBAL ANGLE IN MPAC\n#\t       2) DESIRED INNER  GIMBAL ANGLE IN MPAC +1\n#\t       3) DESIRED MIDDLE GIMBAL ANGLE IN MPAC +2\n#\n#\t   ERASABLES USED -\n#\n#\t       1) SCAXIS\t   6\n#\t       2) POINTVSM\t   6\n#\t       3) MIS\t\t  18\n#\t       4) DEL\t\t  18\n#\t       5) COF\t\t   6\n#\t       6) VECQTEMP\t   1\n#\t       7) ALL OF VAC AREA 43\n#\n#\t\t\tTOTAL\t  99\n\n\t\tSETLOC\tVECPT\n\t\tBANK\n# Page 481\n\t\tCOUNT*\t$$/VECPT\n\n\t\tEBANK=\tBCDU\n\nVECPNT1\t\tSTQ\tBOV\t\t# THIS ENTRY USES DESIRED CDUS\n\t\t\tVECQTEMP\t# NOT PRESENT-ENTER WITH CDUD'S IN MPAC\n\t\t\tVECPNT2\nVECPNT2\t\tAXC,2\tGOTO\n\t\t\tMIS\n\t\t\tSTORANG\nVECPOINT\tSTQ\tBOV\t\t# SAVE RETURN ADDRESS\n\t\t\tVECQTEMP\n\t\t\tVECLEAR\t\t# AND CLEAR OVFIND\nVECLEAR\t\tAXC,2\tRTB\n\t\t\tMIS\t\t# READ THE PRESENT CDU ANGLES AND\n\t\t\tREADCDUK\t# STORE THEM IN PD25, 26, 27\nSTORANG\t\tSTCALL\t25D\n\t\t\tCDUTODCM\t# S/C AXES TO STABLE MEMBER AXES (MIS)\n\t\tVLOAD\tVXM\n\t\t\tPOINTVSM\t# RESOLVE THE POINTING DIRECTION VF INTO\n\t\t\tMIS\t\t# INITIAL S/C AXES ( VF = POINTVSM)\n\t\tUNIT\n\t\tSTORE\t28D\n\t\t\t\t\t# PD 28 29 30 31 32 33\n\t\tVXV\tUNIT\t\t# TAKE THE CROSS PRODUCT VF X VI\n\t\t\tSCAXIS\t\t# WHERE VI = SCAXIS\n\t\tBOV\tVCOMP\n\t\t\tPICKAXIS\n\t\tSTODL\tCOF\t\t# CHECK MAGNITUDE\n\t\t\t36D\t\t# OF CROSS PRODUCT\n\t\tDSU\tBMN\t\t# VECTOR, IF LESS\n\t\t\tDPB-14\t\t# THAN B-14 ASSUME\n\t\t\tPICKAXIS\t# UNIT OPERATION\n\t\tVLOAD\tDOT\t\t#\t   INVALID.\n\t\t\tSCAXIS\n\t\t\t28D\n\t\tSL1\tARCCOS\nCOMPMATX\tCALL\t\t\t# NOW COMPUTE THE TRANSFORMATION FROM\n\t\t\tDELCOMP\t\t# FINAL S/C AXES TO INITIAL S/C AXES  MFI\n\t\tAXC,1\tAXC,2\n\t\t\tMIS\t\t# COMPUTE THE TRANSFORMATION FROM FINAL\n\t\t\tKEL\t\t# S/C AXES TO STABLE MEMBER AXES\n\t\tCALL\t\t\t# MFS = MIS MFI\n\t\t\tMXM3\t\t# (IN PD LIST)\n\n\t\tDLOAD\tABS\n\t\t\t6\t\t# MFS6 = SIN(CPSI)\t\t       $2\n\t\tDSU\tBMN\n\t\t\tSINGIMLC\t# = SIN(59 DEGS)\t\t       $2\n\t\t\tFINDGIMB\t# /CPSI/ LESS THAN 59 DEGS\n# Page 482\n\t\t\t\t\t# I.E. DESIRED ATTITUDE NOT IN GIMBAL LOCK\n\n\t\tDLOAD\tABS\t\t# CHECK TO SEE IF WE ARE POINTING\n\t\t\tSCAXIS\t\t# THE THRUST AXIS\n\t\tDSU\tBPL\n\t\t\tSINVEC1\t\t# SIN 49.4 DEGS\t\t\t       $2\n\t\t\tFINDGIMB\t# IF SO, WE ARE TRYING TO POINT IT INTO\n\t\tVLOAD\t\t\t# GIMBAL LOCK, ABORT COULD GO HERE\n\t\tSTADR\n\t\tSTOVL\tMIS +12D\n\t\tSTADR\t\t\t# STORE MFS (IN PD LIST) IN MIS\n\t\tSTOVL\tMIS +6\n\t\tSTADR\n\t\tSTOVL\tMIS\n\t\t\tMIS +6\t\t# INNER GIMBAL AXIS IN FINAL S/C AXES\n\t\tBPL\tVCOMP\t\t# LOCATE THE IG AXIS DIRECTION CLOSEST TO\n\t\t\tIGSAMEX\t\t# FINAL X S/C AXIS\n\nIGSAMEX\t\tVXV\tBMN\t\t# FIND THE SHORTEST WAY OF ROTATING THE\n\t\t\tSCAXIS\t\t# S/C OUT OF GIMBAL LOCK BY A ROTATION\n\t\t\tU=SCAXIS\t# ABOUT +- SCAXIS, I.E. IF (IG (SGN MFS3)\n\t\t\t\t\t# X SCAXIS . XF) LESS THAN 0, U = SCAXIS\n\t\t\t\t\t# OTHERWISE U = -SCAXIS\n\n\t\tVLOAD\tVCOMP\n\t\t\tSCAXIS\n\t\tSTCALL\tCOF\t\t# ROTATE ABOUT -SCAXIS\n\t\t\tCHEKAXIS\nU=SCAXIS\tVLOAD\n\t\t\tSCAXIS\n\t\tSTORE\tCOF\t\t# ROTATE ABOUT + SCAXIS\nCHEKAXIS\tDLOAD\tABS\n\t\t\tSCAXIS\t\t# SEE IF WE ARE POINTING THE AOT\n\t\tDSU\tBPL\n\t\t\tSINVEC2\t\t# SIN 29.5 DEGS\t\t\t       $2\n\t\t\tPICKANG1\t# IF SO, ROTATE 50 DEGS ABOUT +- SCAXIS\n\t\tDLOAD\tGOTO\t\t# IF NOT, MUST BE POINTING THE TRANSPONDER\n\t\t\tVECANG2\t\t# OR SOME VECTOR IN THE Y, OR Z PLANE\n\t\t\tCOMPMFSN\t# IN THIS CASE ROTATE 35 DEGS TO GET OUT\n\t\t\t\t\t# OF GIMBAL LOCK (VECANG2  $360)\nPICKANG1\tDLOAD\n\t\t\tVECANG1\t\t# = 50 DEGS\t\t\t     $ 360\nCOMPMFSN\tCALL\n\t\t\tDELCOMP\t\t# COMPUTE THE ROTATION ABOUT SCAXIS TO\n\t\tAXC,1\tAXC,2\t\t# BRING MFS OUT OF GIMBAL LOCK\n\t\t\tMIS\n\t\t\tKEL\n\t\tCALL\t\t\t# COMPUTE THE NEW TRANSFORMATION FROM\n\t\t\tMXM3\t\t# DESIRED S/C AXES TO STABLE MEMBER AXES\n\t\t\t\t\t# WHICH WILL ALIGN VI WITH VF AND AVOID\n# Page 483\n\t\t\t\t\t# GIMBAL LOCK\nFINDGIMB\tAXC,1\tCALL\n\t\t\t0\t\t# EXTRACT THE COMMANDED CDU ANGLES FROM\n\t\t\tDCMTOCDU\t# THIS MATRIX\n\t\tRTB\tSETPD\n\t\t\tV1STO2S\t\t# CONVERT TO 2:S COMPLEMENT\n\t\t\t0\n\t\tGOTO\n\t\t\tVECQTEMP\t# RETURN TO CALLER\n\nPICKAXIS\tVLOAD\tDOT\t\t# IF VF X VI = 0,  FIND VF . VI\n\t\t\t28D\n\t\t\tSCAXIS\n\t\tBMN\tTLOAD\n\t\t\tROT180\n\t\t\t25D\n\t\tGOTO\t\t\t# IF VF = VI, CDU DESIRED = PRESENT CDU\n\t\t\tVECQTEMP\t# PRESENT CDU ANGLES\n\n\t\tBANK\t35\n\t\tSETLOC\tMANUVER1\n\t\tBANK\nROT180\t\tVLOAD\tVXV\t\t# IF VF, VI ANTIPARALLEL, 180 DEG ROTATION\n\t\t\tMIS \t+6\t# IS REQUIRED. Y STABLE MEMBER AXIS IN\n\t\t\tHIDPHALF\t# INITIAL S/C AXES.\n\t\tUNIT\tVXV\t\t# FIND Y(SM) X X(I)\n\t\t\tSCAXIS\t\t# FIND UNIT(VI X UNIT(Y(SM) X X(I)))\n\t\tUNIT\tBOV\t\t# I.E. PICK A VECTOR IN THE PLANE OF X(I),\n\t\t\tPICKX\t\t# Y(SM) PERPENDICULAR TO VI\n\t\tSTODL\tCOF\n\t\t\t36D\t\t# CHECK MAGNITUDE\n\t\tDSU\tBMN\t\t# OF THIS VECTOR.\n\t\t\tDPB-14\t\t# IF LESS THAN B-14,\n\t\t\tPICKX\t\t# PICK X-AXIS.\n\t\tVLOAD\n\t\t\tCOF\nXROT\t\tSTODL\tCOF\n\t\t\tHIDPHALF\n\t\tGOTO\n\t\t\tCOMPMATX\nPICKX\t\tVLOAD\tGOTO\t\t# PICK THE XAXIS IN THIS CASE\n\t\t\tHIDPHALF\n\t\t\tXROT\nSINGIMLC\t2DEC\t.4285836003\t# =SIN(59)\t\t  $2\n\nSINVEC1\t\t2DEC\t.3796356537\t# =SIN(49.4)\t\t  $2\n\nSINVEC2\t\t2DEC\t.2462117800\t# =SIN(29.5)\t\t  $2\n\nVECANG1\t\t2DEC\t.1388888889\t# = 50 DEGREES\t\t\t      $360\n# Page 484\nVECANG2\t\t2DEC\t.09722222222\t# = 35 DEGREES\t\t\t      $360\n\n1BITDP\t\tOCT\t0\t\t# KEEP THIS BEFORE DPB(-14)\t *********\nDPB-14\t\tOCT\t00001\n\t\tOCT\t00000\n\n# Page 485\n# ROUTINE FOR INITIATING AUTOMATIC MANEUVER VIA KEYBOARD (V49)\n\n\t\tBANK\t34\n\t\tSETLOC\tR62\n\t\tBANK\n\t\tEBANK=\tBCDU\n\n\t\tCOUNT*\t$$/R62\n\nR62DISP\t\tEQUALS\tR62FLASH\n\nR62FLASH\tCAF\tV06N22\t\t# FLASH V06N22 AND\n\t\tTC\tBANKCALL\t# ICDU ANGLES\n\t\tCADR\tGOFLASH\n\t\tTCF\tENDEXT\t\t# TERMINATE\n\t\tTCF\tGOMOVE\t\t# PROCEED\n\t\tTCF\tR62FLASH\t# ENTER\n\n\t\t\t\t\t# ASTRONAUT MAY LOAD NEW ICDUS AT THIS\n\t\t\t\t\t# POINT\nGOMOVE\t\tTC\tUPFLAG\t\t# SET FOR 3-AXIS MANEUVER\n\t\tADRES\t3AXISFLG\n\n\t\tTC\tBANKCALL\n\t\tCADR\tR60LEM\n\t\tTCF\tENDEXT\t\t# END R62\n"
  },
  {
    "path": "Luminary099/R63.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tR63.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t338-341\n# Mod history:\t2009-05-16 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 338\n# SUBROUTINE NAME:\tV89CALL\n# MOD NO:\t0\t\t\tDATE:\t\t9 JAN 1968\n# MOD BY:\tDIGITAL DEVEL GROUP\tLOG SECTION:\tR63\n#\n# FUNCTIONAL DESCRIPTION:\n#\n# CALLED BY VERB 89 ENTER DURING P00.  PRIO 10 USED.  CALCULATES AND\n# DISPLAYS FINAL FDAI BALL ANGLES TO POINT LM +X OR +Z AXIS AT CSM.\n#\n# 1. KEY IN V 89 E ONLY IF IN PROG 00.  IF NOT IN P00, OPERATOR ERROR AND\n# EXIT R63, OTHERWISE CONTINUE.\n#\n# 2. IF IN P00, DO IMU STATUS CHECK ROUTINE (R02BOTH).  IF IMU ON AND ITS\n# ORIENTATION KNOWN TO LGC, CONTINUE.\n#\n# 3. FLASH DISPLAY V 04 N 06.  R2 INDICATES WHICH SPACECRAFT AXIS IS TO\n# BE POINTED AT CSM.  INITIAL CHOICE IS PREFERRED (+Z) AXIS (R2=1).\n# ASTRONAUT CAN CHANGE TO (+X) AXIS (R2 NOT = 1) BY V 22 E 2 E.  CONTINUE\n# AFTER KEYING IN PROCEED.\n#\n# 4. BOTH VEHICLE STATE VECTORS UPDATED BY CONIC EQS.\n#\n# 5. HALF MAGNITUDE UNIT LOS VECTOR (IN STABLE MEMBER COORDINATES) AND\n# HALF MAGNITUDE UNIT SPACECRAFT AXIS VECTOR (IN BODY COORDINATES)\n# PREPARED FOR VECPOINT.\n#\n# 6. GIMBAL ANGLES FROM VECPOINT TRANSFORMED INTO FDAI BALL ANGLES BY\n# BALLANGS.  FLASH DISPLAY V 06 N 18 AND AWAIT RESPONSE.\n#\n# 7. RECYCLE - RETURN TO STEP 4.\n#    TERMINATE - EXIT R63.\n#    PROCEED - RESET 3AXISFLG AND CALL R60LEM FOR ATTITUDE MANEUVER.\n#\n# CALLING SEQUENCE:\tV 89 E.\n#\n# SUBROUTINES CALLED:\tCHKPOOH, R02BOTH, GOXDSPF, CSMCONIC, LEMCONIC,\n#\t\t\tVECPOINT, BALLANGS, R60LEM.\n#\n# NORMAL EXIT MODES: \tTC ENDEXT\n#\n# ALARMS:\t1. OPERATOR ERROR IF NOT IN P00.\n#\t\t2. PROGRAM ALARM IF IMU IS OFF.\n#\t\t3. PROGRAM ALARM IF IMU ORIENTATION IS UNKNOWN.\n#\n# OUTPUT:\tNONE\n#\n# ERASABLE INITIALIZATION REQUIRED:  NONE\n#\n# DEBRIS:\tOPTION1, +1, TDEC1, PDINTVSM, SCAXIS, CPHI, CTHETA, CPSI,\n# Page 339\n#\t\t3AXISFLG.\n\n\t\tEBANK=\tRONE\n\t\tBANK\t32\n\t\tSETLOC\tBAWLANGS\n\t\tBANK\n\n\t\tCOUNT*\t$$/R63\nV89CALL\t\tTC\tBANKCALL\t# IMU STATUS CHECK.  RETURNS IF ORIENTATION\n\t\tCADR\tR02BOTH\t\t# KNOWN.  ALARMS IF NOT.\n\t\tCAF\tTHREE\t\t# ALLOW ASTRONAUT TO SELECT DESIRED\n\t\tTS\tOPTIONX\t\t# TRACKING ATTITUDE AXIS.\n\t\tCAF\tONE\n\t\tTS\tOPTIONX  +1\n\t\tCAF\tVB04N12\t\t# V 04 N 12\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTC\tENDEXT\t\t# TERMINATE\n\t\tTC \t+2\t\t# PROCEED\n\t\tTC\t-5\t\t# DATA IN.  OPTION1+1 = 1 FOR Z AXIS\nV89RECL\t\tTC\tINTPRET\t\t#\t\t\t= 2 FOR X AXIS\n\t\tRTB\tDAD\n\t\t\tLOADTIME\t# READ PRESENT TIME\n\t\t\tDP1MIN\n\t\tSTORE\tTSTART82\t# SAVE TIME FOR LEMCONIC CALL\n\t\tSTCALL\tTDEC1\t\t# STORE TIME FOR CSMCONIC CALL\n\t\t\tCSMCONIC\t# CSM STATE VECTOR UPDATE\n\t\tVLOAD\t\t\t# CSMCONIC LEFT R VECTOR IN RATT\n\t\t\tRATT\n\t\tSTODL\tRONE\t\t# SAVE FOR LINE OF SIGHT (LOS) COMPUTATION\n\t\t\tTSTART82\n\t\tSTCALL\tTDEC1\t\t# STORE TIME FOR LEMCONIC CALL\n\t\t\tLEMCONIC\t# LEM STATE VECTOR UPDATE\n\t\tVLOAD\tVSU\t\t# CSM POSITION - LEM POSITION = LOS\n\t\t\tRONE\t\t# LOS VECTOR LEFT IN MPAC\n\t\t\tRATT\n\t\tMXV\tRTB\t\t# (REFSMAT X LOS).  TRANSFORMS LOS FROM\n\t\t\tREFSMMAT\t# REFERENCE COORD TO STAB MEMB COORD.\n\t\t\tNORMUNIT\n\t\tSTORE\tPOINTVSM\t# STORE LOS FOR VECPOINT CALCULATION\n\t\tEXIT\n\t\tCS\tOPTIONX +1\t# 1 FOR Z AXIS.  2 FOR X AXIS.\n\t\tAD\tONE\n\t\tEXTEND\n\t\tBZF\tALINEZ\nALINEX\t\tTC\tINTPRET\t\t# X AXIS ALIGNMENT\n\t\tVLOAD\n\t\t\tUNITX\t\t# READ (.5, 0, 0)\n# Page 340\nV89CALL1\tSTCALL\tSCAXIS\t\t# STORE SELECTED ALIGNMENT AXIS\n\t\t\tVECPOINT\t# PUTS DESIRED GIM ANG (OG,IG,MG) IN TMPAC\n\t\tSTORE\tCPHI\t\t# STORE GIMBAL ANGLES FOR BALLANGS CALL.\n\t\tEXIT\n\t\tTC\tBANKCALL\n\t\tCADR\tBALLANGS\t# PUTS DESIRED BALL ANGLE IN FDAIX,Y,Z\n\t\tCAF\tVB06N18\t\t# V 06 N 18\n\t\tTC\tBANKCALL\t# NOUN 18 REFERS TO FDAIX,Y,Z\n\t\tCADR\tGOFLASH\n\t\tTC\tENDEXT\t\t# TERMINATE\n\t\tTC\t+2\t\t# PROCEED\n\t\tTC\tV89RECL\t\t# RECYCLE\n\t\tTC\tDOWNFLAG\t# RESET 3 AXIS FLAG\n\t\tADRES\t3AXISFLG\t# RESET BIT6 FLAG WORD 5\n\t\tTC\tBANKCALL\t# PERFORMS LEM MANEUVER TO ALIGN SELECTED\n\t\tCADR\tR60LEM\t\t# SPACECRAFT AXIS TO CSM.\n\t\tTCF\tENDEXT\t\t# TERMINATE R63\n\nALINEZ\t\tTC\tINTPRET\t\t# Z AXIS ALIGNMENT\n\t\tVLOAD\tGOTO\n\t\t\tUNITZ\t\t# READ (0, 0, .5)\n\t\t\tV89CALL1\n\nVB04N12\t\tVN\t412\nVB06N18\t\tVN\t0618\n# Page 341\nDP1MIN\t\t2DEC\t6000\n\n"
  },
  {
    "path": "Luminary099/RADAR_LEADIN_ROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tRADAR_LEADIN_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t490-491\n# Mod history:\t2009-05-17 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 490\n\t\tBANK\t25\n\t\tSETLOC\tRRLEADIN\n\t\tBANK\n\n\t\tEBANK=\tRSTACK\n\n# RADAR SAMPLING LOOP.\n\n\t\tCOUNT*\t$$/RLEAD\nRADSAMP\t\tCCS\tRSAMPDT\t\t# TIMES NORMAL ONCE-PER-SECOND SAMPLING.\n\t\tTCF\t+2\n\t\tTCF\tTASKOVER\t# +0 INSERTED MANUALLY TERMINATES TEST.\n\n\t\tTC\tWAITLIST\n\t\tEBANK=\tRSTACK\n\t\t2CADR\tRADSAMP\n\n\t\tCAF\tPRIO25\n\t\tTC\tNOVAC\n\t\tEBANK=\tRSTACK\n\t\t2CADR\tDORSAMP\n\n\t\tCAF\tBIT14\t\t# FOR CYCLIC SAMPLING, RTSTDEX =\n\t\tEXTEND\t\t\t# RTSTLOC/2 + RTSTBASE\n\t\tMP\tRTSTLOC\n\t\tAD\tRTSTBASE\t# 0 FOR RR, 2 FOR LR.\n\t\tTS\tRTSTDEX\n\t\tTCF\tTASKOVER\n\n# DO THE ACTUAL RADAR SAMPLE.\n\nDORSAMP\t\tTC\tVARADAR\t\t# SELECTS VARIABLE RADAR CHANNEL.\n\t\tTC\tBANKCALL\n\t\tCADR\tRADSTALL\n\n\t\tINCR\tRFAILCNT\t# ADVANCE FAIL COUNTER BUT ACCEPT BAD DATA\n\nDORSAMP2\tINHINT\n\t\tCA\tFLAGWRD5\t# DON'T UPDATE RSTACK IF IN R77.\n\t\tMASK\tR77FLBIT\n\t\tCCS\tA\n\t\tTCF\t+4\n\n\t\tDXCH\tSAMPLSUM\n\t\tINDEX\tRTSTLOC\n\t\tDXCH\tRSTACK\n\n\t\tCS\tRTSTLOC\t\t# CYCLE RTSTLOC.\n\t\tAD\tRTSTMAX\n\t\tEXTEND\n\n# Page 491\n\t\tBZF\t+3\n\t\tCA\tRTSTLOC\n\t\tAD\tTWO\t\t# STORAGE IS DP\n\t\tTS\tRTSTLOC\n\t\tTCF\tENDOFJOB\t# CONTINUOUS SAMPLING AND 2N TRIES - GONE.\n\n# VARIABLE RADAR DATA CALLER FOR ONE MEASUREMENT ONLY.\n\nVARADAR\t\tCAF\tONE\t\t# WILL BE SENT TO RADAR ROUTINE IN A BY\n\t\tTS\tBUF2\t\t# SWCALL.\n\t\tINDEX\tRTSTDEX\n\t\tCAF\tRDRLOCS\n\t\tTCF\tSWCALL\t\t# NOT TOUCHING Q.\n\nRDRLOCS\t\tCADR\tRRRANGE\t\t# =0\n\t\tCADR\tRRRDOT\t\t# =1\n\t\tCADR\tLRVELX\t\t# =2\n\t\tCADR\tLRVELY\t\t# =3\n\t\tCADR\tLRVELZ\t\t# =4\n\t\tCADR\tLRALT\t\t# =5\n\n\n"
  },
  {
    "path": "Luminary099/RCS_FAILURE_MONITOR.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tRCS_FAILURE_MONITOR.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t190-192\n# Mod history:\t2009-05-19 HG\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 190\n# PROGRAM DESCRIPTION\n#\n# AUTHOR:  J S MILLER\n#\n# MODIFIED 6 MARCH 1968 BY P S WEISSMAN TO SET UP JOB FOR 1/ACCS WHEN THE MASKS ARE CHANGED.\n#\n#      THIS ROUTINE IS ATTACHED TO T4RUPT, AND IS ENTERED EVERY 480 MS.  ITS FUNCTION IS TO EXAMINE THE LOW 8 BITS\n# OF CHANNEL 32 TO SEE IF ANY ISOLATION-VALVE CLOSURE BITS HAVE APPEARED OR DISAPPEARED (THE CREW IS WARNED OF JET\n# FAILURES BY LAMPS LIT BY THE GRUMMAN FAILURE-DETECTION CIRCUITRY; THEY MAY RESPOND BY OPERATING SWITCHES WHICH\n# ISOLATE PAIRS OF JETS FROM THE PROPELLANT TANKS AND SET BITS IN CHANNEL 32).  IN THE EVENT THAT CHANNEL 32 BITS\n# DIFFER FROM 'PVALVEST', THE RECORD OF ACTIONS TAKEN BY THIS ROUTINE, THE APPROPRIATE BITS IN 'CH5MASK' &\n# 'CH6MASK', USED BY THE DAP JET-SELECTION LOGIC, ARE UPDATED, AS IS 'PVALVEST'.  TO SPEED UP & SHORTEN THE\n# ROUTINE, NO MORE THAN ONE CHANGE IS ACCEPTED PER ENTRY.  THE HIGHEST-NUMBERED BIT IN CHANNEL 32 WHICH REQUIRES\n# ACTION IS THE ONE PROCESSED.\n#\n#      THE CODING IN THE FAILURE MONITOR HAS BEEN WRITTEN SO AS TO HAVE ALMOST COMPLETE RESTART PROTECTION.  FOR\n# EXAMPLE, NO ASSUMPTION IS MADE WHEN SETTING A 'CH5MASK' BIT TO 1 THAT THE PREVIOUS STATE IS 0, ALTHOUGH IT OF\n# COURSE SHOULD BE.  ONE CASE WHICH MAY BE SEEN TO EVADE PROTECTION IS THE OCCURRENCE OF A RESTART AFTER UPDATING\n# ONE OR BOTH DAP MASK-WORDS BUT BEFORE UPDATING 'PVALVEST', COUPLED WITH A CHANGE IN THE VALVE-BIT BACK TO ITS\n# FORMER STATE.  THE CONSEQUENCE OF THIS IS THAT THE NEXT ENTRY WOULD NOT SEE THE CHANGE INCOMPLETELY INCORP-\n# ORATED BY THE LAST PASS (BECAUSE IT WENT AWAY AT JUST THE RIGHT TIME), BUT THE DAP MASK-WORDS WILL BE INCORRECT.\n# THIS COMBINATION OF EVENTS SEEMS QUITE REMOTE, BUT NOT IMPOSSIBLE UNLESS THE CREW OPERATES THE SWITCHES AT HALF-\n# SECOND INTERVALS OR LONGER.  IN ANY EVENT, A DISAGREEMENT BETWEEN REALITY AND THE DAP MASKS WILL BE CURED IF\n# THE MISINTERPRETED SWITCH IS REVERSED AND THEN RESTORED TO ITS CORRECT POSITION (SLOWLY).\n#\n# CALLING SEQUENCE:\n#\n#\t\tTCF\tRCSMONIT\t(IN INTERRUPT MODE, EVERY 480 MS.)\n#\n# EXIT:  TCF  RCSMONEX  (ALL PATHS EXIT VIA SUCH AN INSTRUCTION)\nRCSMONEX\tEQUALS\tRESUME\n\n# ERASABLE INITIALIZATION REQUIRED:\n#\n#\t   VIA FRESH START:  PVALVEST\t       = +0  (ALL JETS ENABLED)\n#\t\t\t     CH5MASK, CH6MASK  = +0  (ALL JETS OK)\n#\n# OUTPUT:  CH5MASK & CH6MASK UPDATED  (1'S WHERE JETS NOT TO BE USED, IN CHANNEL 5 & 6 FORMAT)\n#\t   PVALTEST UPDATED  (1.5 WHEN VALVE CLOSURES HAVE BEEN TRANSLATED INTO CH5MASK & CH6MASK; CHAN 32 FORMAT)\n#\t   JOB TO DO 1/ACCS.\n#\n# DEBRIS:  A, L, Q AND DEBRIS OF NOVAC.\n#\n# SUBROUTINE CALLED:  NOVAC.\n\n\t\tEBANK=\tCH5MASK\n\n\t\tBANK\t23\n\t\tSETLOC\tRCSMONT\n\t\tBANK\n# Page 191\n\t\tCOUNT*\t$$/T4RCS\n\nRCSMONIT\tEQUALS\tRCSMON\n\nRCSMON\t\tCS\tZERO\n\t\tEXTEND\n\t\tRXOR\tCHAN32\t\t# PICK UP + INVERT INVERTED CHANNEL 32.\n\t\tMASK\tLOW8\t\t# KEEP JET-FAIL BITS ONLY.\n\t\tTS\tQ\n\n\t\tCS\tPVALVEST\t#       -   -\n\t\tMASK\tQ\t\t# FORM PC + PC.\n\t\tTS\tL\t\t#   (P = PREVIOUS ISOLATION VALVE STATE,\n\t\tCS\tQ\t\t#    C = CURRENT VALVE STATE (CH 32)).\n\t\tMASK\tPVALVEST\n\t\tADS\tL\t\t# RESULT NZ INDICATES ACTION REQUIRED.\n\n\t\tEXTEND\n\t\tBZF\tRCSMONEX\t# QUIT IF NO ACTION REQUIRED.\n\n\t\tEXTEND\n\t\tMP\tBIT7\t\t# MOVE BITS 8 - 1 OF A TO 14 - 7 OF L.\n\t\tXCH\tL\t\t# ZERO TO L IN THE PROCESS.\n\n -3\t\tINCR\tL\n\t\tDOUBLE\t\t\t# BOUND TO GET OVERFLOW IN THIS LOOP.\n\t\tOVSK\t\t\t# SINCE WE ASSURED INITIAL NZ IN A.\n\t\tTCF\t-3\n\n\t\tINDEX\tL\n\t\tCA\tBIT8 -1\t\t# SAVE THE RELEVANT BIT (8 - 1).\n\t\tTS\tQ\n\t\tMASK\tPVALVEST\t# LOOK AT PREVIOUS VALVE STATE BIT.\n\t\tCCS\tA\n\t\tTCF\tVOPENED\t\t# THE VALVE HAS JUST BEEN OPENED.\n\n\t\tCS\tCH5MASK\t\t# THE VALVE HAS JUST BEEN CLOSED.\n\t\tINDEX\tL\n\t\tMASK\t5FAILTAB\n\t\tADS\tCH5MASK\t\t# SET INHIBIT BIT FOR CHANNEL 5 JET.\n\n\t\tCS\tCH6MASK\n\t\tINDEX\tL\n\t\tMASK\t6FAILTAB\n\t\tADS\tCH6MASK\t\t# SET INGIBIT BIT FOR CHANNEL 6 JET.\n\n\t\tCA\tQ\n\t\tADS\tPVALVEST\t# RECORD ACTION TAKEN.\n\n\t\tTCF\t1/ACCFIX\t# SET UP 1/ACCJOB AND EXIT.\n\n# Page 192\nVOPENED\t\tINDEX\tL\t\t# A VALVE HAS JUST BEEN OPENED.\n\t\tCS\t5FAILTAB\n\t\tMASK\tCH5MASK\n\t\tTS\tCH5MASK\t\t# REMOVE INHIBIT BIT FOR CHANNEL 5 JET.\n\n\t\tINDEX\tL\n\t\tCS\t6FAILTAB\n\t\tMASK\tCH6MASK\n\t\tTS\tCH6MASK\t\t# REMOVE INHIBIT BIT FOR CHANNEL 6 JET.\n\n\t\tCS\tQ\n\t\tMASK\tPVALVEST\n\t\tTS\tPVALVEST\t# RECORD ACTION TAKEN.\n\n1/ACCFIX\tCAF\tPRIO27\t\t# SET UP 1/ACCS SO THAT THE SWITCH CURVES\n\t\tTC\tNOVAC\t\t#   FOR TJETLAW CAN BE MODIFIED IF CH5MASK\n\t\tEBANK=\tAOSQ\t\t#   HAS BEEN ALTERED.\n\t\t2CADR\t1/ACCJOB\n\n\t\tTCF\tRCSMONEX\t# EXIT.\n\n\n5FAILTAB\tEQUALS\t-1\t\t# CH 5 JET BIT CORRESPONDING TO CH 32 BIT:\n\t\tOCT\t00040\t\t# 8\n\t\tOCT\t00020\t\t# 7\n\t\tOCT\t00100\t\t# 6\n\t\tOCT\t00200\t\t# 5\n\t\tOCT\t00010\t\t# 4\n\t\tOCT\t00001\t\t# 3\n\t\tOCT\t00004\t\t# 2\n\t\tOCT\t00002\t\t# 1\n\n6FAILTAB\tEQUALS\t-1\t\t# CH 6 JET BIT CORRESPONDING TO CH 32 BIT:\n\t\tOCT\t00010\t\t# 8\n\t\tOCT\t00020\t\t# 7\n\t\tOCT\t00004\t\t# 6\n\t\tOCT\t00200\t\t# 5\n\t\tOCT\t00001\t\t# 4\n\t\tOCT\t00002\t\t# 3\n\t\tOCT\t00040\t\t# 2\n\t\tOCT\t00100\t\t# 1\n\n\n"
  },
  {
    "path": "Luminary099/README.md",
    "content": "# Luminary099\n\nThe 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.\n\n## Background\n\nThe contents of the \"Luminary099\" files, in general, are transcribed from a digital images created from a hardcopy of the program residing at the MIT Museum.  Many thanks to Debbie Douglas of the Museum, and to Paul Fjeld (who made the images).\n\nNotations on this document read, in part:\n\n```text\nASSEMBLE REVISION 001 OF AGC PROGRAM LMY99 BY NASA 2021112-061\n16:27 JULY 14,1969\n[Note that this is the date the hardcopy was made,\nnot the date of the program revision or the assembly.]\n...\nTHIS LGC PROGRAM IS INTENDED FOR USE IN THE LM DURING THE MANNED\nLUNAR LANDING MISSION OR ANY SUBSET THEREOF.\n...\n```\n\nFor organizational purposes RSB split the huge monolithic source code into smaller, more manageable chunks--i.e., into individual source files.  Those files are rejoined within `MAIN.agc` file as \"includes\".  It just makes it a little easier to work with.  The code chunks correspond to natural divisions into sub-programs.  In fact, these divisions are more-or-less specified by the source code itself.  Refer to the \"TABLE OF SUBROUTINE LOG SECTIONS\" at the very beginning of the file `ASSEMBLY_AND_OPERATION_INFORMATION.agc`.\n\nIt may be reasonably asked why tens of thousands of lines of source are joined by means of inclusion, rather than simply assembling the source files individually and then linking them to form the executable. The answer is that the original development team had no linker.  The builds were monolithic just like this.\n\nThere was a big emphasis on reusability of the code in the original project, apparently, but this reusability took the form of inserting your deck of punch-cards at the appropriate position in somebody else's deck of punch-cards. (Actually, I believe a tape-library method was used to avoid having to continually reload the card decks, but that doesn't change the basic principle.) So, indeed, the method of file-inclusion is a very fair representation of the methods used in the original development ... with the improvement, of course, that you no longer have to worry about dropping the card deck.  On the other hand, I wasn't there at the time, so I may have no idea what I'm talking about.\n\nFinally, note that the original Apollo AGC assembler (called \"YUL\") is no longer available (as far as I can tell).  In fact, it was replaced by another assembler (\"GAP\") even before Apollo 11, but GAP is no more available than is YUL.  The replacement assembler yaYUL accepts a slightly different format for the source code from what YUL or GAP accepted, so the source code has been targeted for assembly with yaYUL.\n\nWhat follows is simply a bunch of file-includes for the individual code chunks. I've marked the page numbers to make proof-reading easier.  Besides, the digital images of the assembly listing contains a lot of interesting tables (cross-referenced to page numbers) created by GAP, but not duplicated by yaYUL, so it's still valuable even if the source-files listed below are at hand.\n\n## Source Code Index\n\n*Derived from [MAIN.agc]*\n\n| Source File                                   | Page Number |\n| :-------------------------------------------- | :---------- |\n| [ASSEMBLY_AND_OPERATION_INFORMATION.agc]      | 1-27        |\n| [TAGS_FOR_RELATIVE_SETLOC.agc]                | 28-37       |\n| [CONTROLLED_CONSTANTS.agc]                    | 38-53       |\n| [INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc]   | 54-60       |\n| [FLAGWORD_ASSIGNMENTS.agc]                    | 61-88       |\n| [ERASABLE_ASSIGNMENTS.agc]                    | 90-152      |\n| [INTERRUPT_LEAD_INS.agc]                      | 153-154     |\n| [T4RUPT_PROGRAM.agc]                          | 155-189     |\n| [RCS_FAILURE_MONITOR.agc]                     | 190-192     |\n| [DOWNLINK_LISTS.agc]                          | 193-205     |\n| [AGS_INITIALIZATION.agc]                      | 206-210     |\n| [FRESH_START_AND_RESTART.agc]                 | 211-237     |\n| [RESTART_TABLES.agc]                          | 238-243     |\n| [AOTMARK.agc]                                 | 244-261     |\n| [EXTENDED_VERBS.agc]                          | 262-300     |\n| [PINBALL_NOUN_TABLES.agc]                     | 301-319     |\n| [LEM_GEOMETRY.agc]                            | 320-325     |\n| [IMU_COMPENSATION_PACKAGE.agc]                | 326-337     |\n| [R63.agc]                                     | 338-341     |\n| [ATTITUDE_MANEUVER_ROUTINE.agc]               | 342-363     |\n| [GIMBAL_LOCK_AVOIDANCE.agc]                   | 364         |\n| [KALCMANU_STEERING.agc]                       | 365-369     |\n| [SYSTEM_TEST_STANDARD_LEAD_INS.agc]           | 370-372     |\n| [IMU_PERFORMANCE_TEST_2.agc]                  | 373-381     |\n| [IMU_PERFORMANCE_TESTS_4.agc]                 | 382-389     |\n| [PINBALL_GAME_BUTTONS_AND_LIGHTS.agc]         | 390-471     |\n| [R60_62.agc]                                  | 472-485     |\n| [S-BAND_ANTENNA_FOR_LM.agc]                   | 486-489     |\n| [RADAR_LEADIN_ROUTINES.agc]                   | 490-491     |\n| [P20-P25.agc]                                 | 492-614     |\n| [P30_P37.agc]                                 | 615-617     |\n| [P32-P35_P72-P75.agc]                         | 618-650     |\n| [GENERAL_LAMBERT_AIMPOINT_GUIDANCE.agc]       | 651-653     |\n| [GROUND_TRACKING_DETERMINATION_PROGRAM.agc]   | 654-657     |\n| [P34-35_P74-75.agc]                           | 658-702     |\n| [R31.agc]                                     | 703-708     |\n| [P76.agc]                                     | 709-711     |\n| [R30.agc]                                     | 712-722     |\n| [STABLE_ORBIT.agc]                            | 723-730     |\n| [BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc] | 731-751     |\n| [P40-P47.agc]                                 | 752-784     |\n| [THE_LUNAR_LANDING.agc]                       | 785-792     |\n| [THROTTLE_CONTROL_ROUTINES.agc]               | 793-797     |\n| [LUNAR_LANDING_GUIDANCE_EQUATIONS.agc]        | 798-828     |\n| [P70-P71.agc]                                 | 829-837     |\n| [P12.agc]                                     | 838-842     |\n| [ASCENT_GUIDANCE.agc]                         | 843-856     |\n| [SERVICER.agc]                                | 857-897     |\n| [LANDING_ANALOG_DISPLAYS.agc]                 | 898-907     |\n| [FINDCDUW--GUIDAP_INTERFACE.agc]              | 908-925     |\n| [P51-P53.agc]                                 | 926-983     |\n| [LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc] | 984-987     |\n| [DOWN_TELEMETRY_PROGRAM.agc]                  | 988-997     |\n| [INTER-BANK_COMMUNICATION.agc]                | 998-1001    |\n| [INTERPRETER.agc]                             | 1002-1094   |\n| [FIXED_FIXED_CONSTANT_POOL.agc]               | 1095-1099   |\n| [INTERPRETIVE_CONSTANT.agc]                   | 1100-1101   |\n| [SINGLE_PRECISION_SUBROUTINES.agc]            | 1102        |\n| [EXECUTIVE.agc]                               | 1103-1116   |\n| [WAITLIST.agc]                                | 1117-1132   |\n| [LATITUDE_LONGITUDE_SUBROUTINES.agc]          | 1133-1139   |\n| [PLANETARY_INERTIAL_ORIENTATION.agc]          | 1140-1148   |\n| [MEASUREMENT_INCORPORATION.agc]               | 1149-1158   |\n| [CONIC_SUBROUTINES.agc]                       | 1159-1204   |\n| [INTEGRATION_INITIALIZATION.agc]              | 1205-1226   |\n| [ORBITAL_INTEGRATION.agc]                     | 1227-1248   |\n| [INFLIGHT_ALIGNMENT_ROUTINES.agc]             | 1249-1258   |\n| [POWERED_FLIGHT_SUBROUTINES.agc]              | 1259-1267   |\n| [TIME_OF_FREE_FALL.agc]                       | 1268-1283   |\n| [AGC_BLOCK_TWO_SELF_CHECK.agc]                | 1284-1293   |\n| [PHASE_TABLE_MAINTENANCE.agc]                 | 1294-1302   |\n| [RESTARTS_ROUTINE.agc]                        | 1303-1308   |\n| [IMU_MODE_SWITCHING_ROUTINES.agc]             | 1309-1337   |\n| [KEYRUPT_UPRUPT.agc]                          | 1338-1340   |\n| [DISPLAY_INTERFACE_ROUTINES.agc]              | 1341-1373   |\n| [SERVICE_ROUTINES.agc]                        | 1374-1380   |\n| [ALARM_AND_ABORT.agc]                         | 1381-1385   |\n| [UPDATE_PROGRAM.agc]                          | 1386-1396   |\n| [RTB_OP_CODES.agc]                            | 1397-1402   |\n| [T6-RUPT_PROGRAMS.agc]                        | 1403-1405   |\n| [DAP_INTERFACE_SUBROUTINES.agc]               | 1406-1409   |\n| [DAPIDLER_PROGRAM.agc]                        | 1410-1420   |\n| [P-AXIS_RCS_AUTOPILOT.agc]                    | 1421-1441   |\n| [Q_R-AXIS_RCS_AUTOPILOT.agc]                  | 1442-1459   |\n| [TJET_LAW.agc]                                | 1460-1469   |\n| [KALMAN_FILTER.agc]                           | 1470-1471   |\n| [TRIM_GIMBAL_CONTROL_SYSTEM.agc]               | 1472-1484   |\n| [AOSTASK_AND_AOSJOB.agc]                      | 1485-1506   |\n| [SPS_BACK-UP_RCS_CONTROL.agc]                 | 1507-1510   |\n\n### MISCELLANEOUS\n\n| Source File          | Page Number   |\n| :------------------- | :------------ |\n| GAP-generated tables | 89, 1511-1743 |\n\n[MAIN.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/MAIN.agc\n[ASSEMBLY_AND_OPERATION_INFORMATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/ASSEMBLY_AND_OPERATION_INFORMATION.agc\n[TAGS_FOR_RELATIVE_SETLOC.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/TAGS_FOR_RELATIVE_SETLOC.agc\n[CONTROLLED_CONSTANTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/CONTROLLED_CONSTANTS.agc\n[INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc\n[FLAGWORD_ASSIGNMENTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/FLAGWORD_ASSIGNMENTS.agc\n[ERASABLE_ASSIGNMENTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/ERASABLE_ASSIGNMENTS.agc\n[INTERRUPT_LEAD_INS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/INTERRUPT_LEAD_INS.agc\n[T4RUPT_PROGRAM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/T4RUPT_PROGRAM.agc\n[RCS_FAILURE_MONITOR.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/RCS_FAILURE_MONITOR.agc\n[DOWNLINK_LISTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/DOWNLINK_LISTS.agc\n[AGS_INITIALIZATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/AGS_INITIALIZATION.agc\n[FRESH_START_AND_RESTART.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/FRESH_START_AND_RESTART.agc\n[RESTART_TABLES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/RESTART_TABLES.agc\n[AOTMARK.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/AOTMARK.agc\n[EXTENDED_VERBS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/EXTENDED_VERBS.agc\n[PINBALL_NOUN_TABLES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/PINBALL_NOUN_TABLES.agc\n[LEM_GEOMETRY.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/LEM_GEOMETRY.agc\n[IMU_COMPENSATION_PACKAGE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/IMU_COMPENSATION_PACKAGE.agc\n[R63.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/R63.agc\n[ATTITUDE_MANEUVER_ROUTINE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/ATTITUDE_MANEUVER_ROUTINE.agc\n[GIMBAL_LOCK_AVOIDANCE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/GIMBAL_LOCK_AVOIDANCE.agc\n[KALCMANU_STEERING.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/KALCMANU_STEERING.agc\n[SYSTEM_TEST_STANDARD_LEAD_INS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/SYSTEM_TEST_STANDARD_LEAD_INS.agc\n[IMU_PERFORMANCE_TEST_2.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/IMU_PERFORMANCE_TEST_2.agc\n[IMU_PERFORMANCE_TESTS_4.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/IMU_PERFORMANCE_TESTS_4.agc\n[PINBALL_GAME_BUTTONS_AND_LIGHTS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/PINBALL_GAME_BUTTONS_AND_LIGHTS.agc\n[R60_62.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/R60_62.agc\n[S-BAND_ANTENNA_FOR_LM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/S-BAND_ANTENNA_FOR_LM.agc\n[RADAR_LEADIN_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/RADAR_LEADIN_ROUTINES.agc\n[P20-P25.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P20-P25.agc\n[P30_P37.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P30_P37.agc\n[P32-P35_P72-P75.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P32-P35_P72-P75.agc\n[GENERAL_LAMBERT_AIMPOINT_GUIDANCE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/GENERAL_LAMBERT_AIMPOINT_GUIDANCE.agc\n[GROUND_TRACKING_DETERMINATION_PROGRAM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/GROUND_TRACKING_DETERMINATION_PROGRAM.agc\n[P34-35_P74-75.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P34-35_P74-75.agc\n[R31.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/R31.agc\n[P76.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P76.agc\n[R30.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/R30.agc\n[STABLE_ORBIT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/STABLE_ORBIT.agc\n[BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc\n[P40-P47.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P40-P47.agc\n[THE_LUNAR_LANDING.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/THE_LUNAR_LANDING.agc\n[THROTTLE_CONTROL_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/THROTTLE_CONTROL_ROUTINES.agc\n[LUNAR_LANDING_GUIDANCE_EQUATIONS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/LUNAR_LANDING_GUIDANCE_EQUATIONS.agc\n[P70-P71.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P70-P71.agc\n[P12.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P12.agc\n[ASCENT_GUIDANCE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/ASCENT_GUIDANCE.agc\n[SERVICER.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/SERVICER.agc\n[LANDING_ANALOG_DISPLAYS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/LANDING_ANALOG_DISPLAYS.agc\n[FINDCDUW--GUIDAP_INTERFACE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/FINDCDUW--GUIDAP_INTERFACE.agc\n[P51-P53.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P51-P53.agc\n[LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc\n[DOWN_TELEMETRY_PROGRAM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/DOWN_TELEMETRY_PROGRAM.agc\n[INTER-BANK_COMMUNICATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/INTER-BANK_COMMUNICATION.agc\n[INTERPRETER.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/INTERPRETER.agc\n[FIXED_FIXED_CONSTANT_POOL.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/FIXED_FIXED_CONSTANT_POOL.agc\n[INTERPRETIVE_CONSTANT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/INTERPRETIVE_CONSTANT.agc\n[SINGLE_PRECISION_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/SINGLE_PRECISION_SUBROUTINES.agc\n[EXECUTIVE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/EXECUTIVE.agc\n[WAITLIST.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/WAITLIST.agc\n[LATITUDE_LONGITUDE_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/LATITUDE_LONGITUDE_SUBROUTINES.agc\n[PLANETARY_INERTIAL_ORIENTATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/PLANETARY_INERTIAL_ORIENTATION.agc\n[MEASUREMENT_INCORPORATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/MEASUREMENT_INCORPORATION.agc\n[CONIC_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/CONIC_SUBROUTINES.agc\n[INTEGRATION_INITIALIZATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/INTEGRATION_INITIALIZATION.agc\n[ORBITAL_INTEGRATION.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/ORBITAL_INTEGRATION.agc\n[INFLIGHT_ALIGNMENT_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/INFLIGHT_ALIGNMENT_ROUTINES.agc\n[POWERED_FLIGHT_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/POWERED_FLIGHT_SUBROUTINES.agc\n[TIME_OF_FREE_FALL.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/TIME_OF_FREE_FALL.agc\n[AGC_BLOCK_TWO_SELF_CHECK.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/AGC_BLOCK_TWO_SELF_CHECK.agc\n[PHASE_TABLE_MAINTENANCE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/PHASE_TABLE_MAINTENANCE.agc\n[RESTARTS_ROUTINE.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/RESTARTS_ROUTINE.agc\n[IMU_MODE_SWITCHING_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/IMU_MODE_SWITCHING_ROUTINES.agc\n[KEYRUPT_UPRUPT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/KEYRUPT_UPRUPT.agc\n[DISPLAY_INTERFACE_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/DISPLAY_INTERFACE_ROUTINES.agc\n[SERVICE_ROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/SERVICE_ROUTINES.agc\n[ALARM_AND_ABORT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/ALARM_AND_ABORT.agc\n[UPDATE_PROGRAM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/UPDATE_PROGRAM.agc\n[RTB_OP_CODES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/RTB_OP_CODES.agc\n[T6-RUPT_PROGRAMS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/T6-RUPT_PROGRAMS.agc\n[DAP_INTERFACE_SUBROUTINES.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/DAP_INTERFACE_SUBROUTINES.agc\n[DAPIDLER_PROGRAM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/DAPIDLER_PROGRAM.agc\n[P-AXIS_RCS_AUTOPILOT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/P-AXIS_RCS_AUTOPILOT.agc\n[Q_R-AXIS_RCS_AUTOPILOT.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/Q_R-AXIS_RCS_AUTOPILOT.agc\n[TJET_LAW.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/TJET_LAW.agc\n[KALMAN_FILTER.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/KALMAN_FILTER.agc\n[TRIM_GIMBAL_CONTROL_SYSTEM.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/TRIM_GIMBAL_CONTROL_SYSTEM.agc\n[AOSTASK_AND_AOSJOB.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/AOSTASK_AND_AOSJOB.agc\n[SPS_BACK-UP_RCS_CONTROL.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/SPS_BACK-UP_RCS_CONTROL.agc\n"
  },
  {
    "path": "Luminary099/RESTARTS_ROUTINE.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tRESTARTS_ROUTINE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tOnno Hommes <ohommes@cmu.edu>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1303-1309\n# Mod history:\t2009-05-27 OH\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1303\n\t\tBANK\t01\n\t\tSETLOC\tRESTART\n\t\tBANK\n\n\t\tEBANK=\tPHSNAME1\t# GOPROG MUST SWITCH TO THIS EBANK\n\n\t\tCOUNT*\t$$/RSROU\nRESTARTS\tCA\tMPAC +5\t\t# GET GROUP NUMBER -1\n\t\tDOUBLE\t\t\t# SAVE FOR INDEXING\n\t\tTS\tTEMP2G\n\n\t\tCA\tPHS2CADR\t# SET UP EXIT IN CASE IT IS AN EVEN\n\t\tTS\tTEMPSWCH\t# TABLE PHASE\n\n\t\tCA\tRTRNCADR\t# TO SAVE TIME ASSUME IT WILL GET NEXT\n\t\tTS\tGOLOC +2\t# GROUP AFTER THIS\n\n\t\tCA\tTEMPPHS\n\t\tMASK\tOCT1400\n\t\tCCS\tA\t\t# IS IT A VARIABLE OR TABLE RESTART\n\t\tTCF\tITSAVAR\t\t# IT:S A VARIABLE RESTART\n\nGETPART2\tCCS\tTEMPPHS\t\t# IS IT AN X.1 RESTART\n\t\tCCS\tA\n\t\tTCF\tITSATBL\t\t# NO, ITS A TABLE RESTART\n\n\t\tCA\tPRIO14\t\t# IT IS AN X.1 RESTART, THEREFORE START\n\t\tTC\tFINDVAC\t\t# THE DISPLAY RESTART JOB\n\t\tEBANK=\tLST1\n\t\t2CADR\tINITDSP\n\n\t\tTC\tRTRNCADR\t# FINISHED WITH THIS GROUP, GET NEXT ONE\n\nITSAVAR\t\tMASK\tOCT1400\t\t# IS IT TYPE B ?\n\t\tCCS\tA\n\t\tTCF\tITSLIKEB\t# YES,IT IS TYPE B\n\n\t\tEXTEND\t\t\t# STORE THE JOB (OR TASK) 2CADR FOR EXIT\n\t\tNDX\tTEMP2G\n\t\tDCA\tPHSNAME1\n\t\tDXCH\tGOLOC\n\n\t\tCA\tTEMPPHS\t\t# SEE IF THIS IS A JOB, TASK, OR A LONGCAL\n\t\tMASK\tOCT7\n\t\tAD\tMINUS2\n\t\tCCS\tA\n\t\tTCF\tITSLNGCL\t# ITS A LONGCALL\n\nRTRNCADR\tTC\tSWRETURN\t# CANT GET HERE\n# Page 1304\n\t\tTCF\tITSAWAIT\n\n\t\tTCF\tITSAJOB\t\t# ITS A JOB\n\nITSAWAIT\tCA\tWTLTCADR\t# SET UP WAITLIST CALL\n\t\tTS\tGOLOC -1\n\n\t\tNDX\tTEMP2G\t\t# DIRECTLY STORED\n\t\tCA\tPHSPRDT1\nTIMETEST\tCCS\tA\t\t# IS IT AN IMMEDIATE RESTART\n\t\tINCR\tA\t\t# NO.\n\t\tTCF\tFINDTIME\t# FIND OUT WHEN IT SHOULD BEGIN\n\n\t\tTCF\tITSINDIR\t# STORED INDIRECTLY\n\n\t\tTCF\tIMEDIATE\t# IT WANTS AN IMMEDIATE RESTART\n\n# ***** THIS MUST BE IN FIXED FIXED *****\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG2\n\t\tBANK\n\n\t\tCOUNT*\t$$/RSROU\nITSINDIR\tLXCH\tGOLOC +1\t# GET THE CORRECT E BANK IN CASE THIS IS\n\t\tLXCH\tBB\t\t# SWITCHED ERRASIBLE\n\n\t\tNDX\tA\t\t# GET THE TIME INDIRECTLY\n\t\tCA\t1\n\n\t\tLXCH\tBB\t\t# RESTORE THE BB AND GOLOC\n\t\tLXCH\tGOLOC +1\n\n\t\tTCF\tFINDTIME\t# FIND OUT WHEN IT SHOULD BEGIN\n\n# ***** YOU MAY RETURN TO SWITCHED FIXED *****\n\n\t\tBANK \t01\n\t\tSETLOC\tRESTART\n\t\tBANK\n\n\t\tCOUNT*\t$$/RSROU\nFINDTIME\tCOM\t\t\t# MAKE NEGITIVE SINCE IT WILL BE SUBTRACTD\n\t\tTS\tL\t\t# AND SAVE\n\t\tNDX\tTEMP2G\n\t\tCS\tTBASE1\n\t\tEXTEND\n\t\tSU\tTIME1\n\t\tCCS\tA\n\t\tCOM\n# Page 1305\n\t\tAD\tOCT37776\n\t\tAD\tONE\n\t\tAD\tL\n\t\tCCS\tA\n\t\tCA\tZERO\n\t\tTCF\t+2\n\t\tTCF\t+1\nIMEDIATE\tAD\tONE\n\t\tTC\tGOLOC -1\nITSLIKEB\tCA\tRTRNCADR\t# TYPE B,\t      SO STORE RETURN IN\n\t\tTS\tTEMPSWCH\t# TEMPSWCH IN CASE OF AN EVEN PHASE\n\n\t\tCA\tPRT2CADR\t# SET UP EXIT TO GET TABLE PART OF THIS\n\t\tTS\tGOLOC +2\t# VARIABLE TYPE OF PHASE\n\n\t\tCA\tTEMPPHS\t\t# MAKE THE PHASE LOOK RIGHT FOR THE TABLE\n\t\tMASK\tOCT177\t\t# PART OF THIS VARIABLE PHASE\n\t\tTS\tTEMPPHS\n\n\t\tEXTEND\n\t\tNDX\tTEMP2G\t\t# OBTAIN THE JOB:S 2CADR\n\t\tDCA\tPHSNAME1\n\t\tDXCH\tGOLOC\n\nITSAJOB\t\tNDX\tTEMP2G\t\t# NOW ADD THE PRIORITY AND LET:S GO\n\t\tCA\tPHSPRDT1\nCHKNOVAC\tTS\tGOLOC -1\t# SAVE PRIO UNTIL WE SEE IF ITS\n\t\tEXTEND\t\t\t# A FINDVAC OR A NOVAC\n\t\tBZMF\tITSNOVAC\n\n\t\tCAF\tFVACCADR\t# POSITIVE, SET UP FINDVAC CALL.\n\t\tXCH\tGOLOC -1\t# PICK UP PRIO,\n\t\tTC\tGOLOC -1\t# AND GO\n\nITSNOVAC\tCAF\tNOVACADR\t# NEGATIVE,\n\t\tXCH\tGOLOC -1\t# SET UP NOVAC CALL,\n\t\tCOM\t\t\t# CORRECT PRIO,\n\t\tTC\tGOLOC -1\t# AND GO\n\nITSATBL\t\tTS\tCYR\t\t# FIND OUT IF THE PHASE IS ODD OR EVEN\n\t\tCCS\tCYR\n\t\tTCF\t+1\t\t# IT:S EVEN\n\t\tTCF\tITSEVEN\n\n\t\tCA\tRTRNCADR\t# IN CASE THIS IS THE SECOND PART OF A\n\t\tTS\tGOLOC +2\t# TYPE B RESTART, WE NEED PROPER EXIT\n\n\t\tCA\tTEMPPHS\t\t# SET UP POINTER FOR FINDING OUR PLACE IN\n\t\tTS\tSR\t\t# THE RESTART TABLES\n\t\tAD\tSR\n# Page 1306\n\t\tNDX\tTEMP2G\n\t\tAD\tSIZETAB +1\n\t\tTS\tPOINTER\n\nCONTBL2\t\tEXTEND\t\t\t# FIND OUT WHAT:S IN THE TABLE\n\t\tNDX\tPOINTER\n\t\tDCA\tCADRTAB\t\t# GET THE 2CADR\n\n\t\tLXCH\tGOLOC +1\t# STORE THE BB INFORMATION\n\n\t\tCCS\tA\t\t# IS IT A JOB OR IS IT  TIMED\n\t\tINCR\tA\t\t# POSITIVE. MUST BE A JOB\n\t\tTCF\tITSAJOB2\n\n\t\tINCR\tA\t\t# MUST BE EITHER A WAITLIST OR LONGCALL\n\t\tTS\tGOLOC\t\t# LET-S STORE THE CORRECT CADR\n\n\t\tCA\tWTLTCADR\t# SET UP OUR EXIT TO WAITLIST\n\t\tTS\tGOLOC -1\n\n\t\tCA\tGOLOC +1\t# NOW FIND OUT IF IT IS A WAITLIST CALL\n\t\tMASK\tBIT10\t\t# THIS SHOULD BE ONE IF WE HAVE -BB\n\t\tCCS\tA\t\t# FOR THAT MATTER SO SHOULD BE BITS 9,8,7,\n\t\t\t\t\t# 6,5, AND LAST BUT NOT LEAST (PERHAPS NOT\n\t\t\t\t\t# IN IMPORTANCE ANYWAY. BIT 4\n\t\tTCF\tITSWTLST\t# IT IS A WAITLIST CALL\n\n\t\tNDX\tPOINTER\t\t# OBTAIN THE ORIGINAL DELTA T\n\t\tCA\tPRDTTAB\t\t# ADDRESS FOR THIS LONGCALL\n\n\t\tTCF\tITSLGCL1\t# NOW GO GET THE DELTA TIME\n\n# ***** THIS MUST BE IN FIXED FIXED *****\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG2\n\t\tBANK\n\n\t\tCOUNT*\t$$/RSROU\nITSLGCL1\tLXCH\tGOLOC +1\t# OBTAIN THE CORRECT E BANK\n\t\tLXCH\tBB\n\t\tLXCH\tGOLOC +1\t# AND PRESERVE OUR E AND F BANKS\n\n\t\tEXTEND\t\t\t# GET THE DELTA TIME\n\t\tNDX\tA\n\t\tDCA\t0\n\n\t\tLXCH\tGOLOC +1\t# RESTORE OUR E AND F BANK\n\t\tLXCH\tBB\t\t# RESTORE THE TASKS E AND F BANKS\n\t\tLXCH\tGOLOC +1\t# AND PRESERVE OUR L\n# Page 1307\n\t\tTCF\tITSLGCL2\t# NOT LET:S PROCESS THIS LONGCALL\n\n# ***** YOU MAY RETURN TO  SWITCHED FIXED *****\n\n\t\tBANK\t01\n\t\tSETLOC\tRESTART\n\t\tBANK\n\n\t\tCOUNT*\t$$/RSROU\nITSLGCL2\tDXCH\tLONGTIME\n\n\t\tEXTEND\t\t\t# CALCULATE TIME LEFT\n\t\tDCS\tTIME2\n\t\tDAS\tLONGTIME\n\t\tEXTEND\n\t\tDCA\tLONGBASE\n\t\tDAS\tLONGTIME\n\n\t\tCCS\tLONGTIME\t# FIND OUT HOW THIS SHOULD BE RESTARTED\n\t\tTCF\tLONGCLCL\n\t\tTCF\t+2\n\t\tTCF\tIMEDIATE -3\n\t\tCCS\tLONGTIME +1\n\t\tTCF\tLONGCLCL\n\t\tNOOP\t\t\t# CAN:T GET HERE    *********\n\t\tTCF\tIMEDIATE -3\n\t\tTCF\tIMEDIATE\n\nLONGCLCL\tCA\tLGCLCADR\t# WE WILL GO TO LONGCALL\n\t\tTS\tGOLOC -1\n\n\t\tEXTEND\t\t\t# PREPARE OUR ENTRY TO LONGCALL\n\t\tDCA\tLONGTIME\n\t\tTC\tGOLOC -1\n\nITSLNGCL\tCA\tWTLTCADR\t# ASSUME IT WILL GO TO WAITLIST\n\t\tTS\tGOLOC -1\n\n\t\tNDX\tTEMP2G\n\t\tCS\tPHSPRDT1\t# GET THE DELTA T ADDRESS\n\n\t\tTCF\tITSLGCL1\t# NOW GET THE DELTA TIME\n\nITSWTLST\tCS\tGOLOC +1\t# CORRECT THE BBCON INFORMATION\n\t\tTS\tGOLOC +1\n\n\t\tNDX\tPOINTER\t\t# GET THE DT AND FIND OUT IF IT WAS STORED\n\t\tCA\tPRDTTAB\t\t# DIRECTLY OR INDIRECTLY\n\n\t\tTCF\tTIMETEST\t# FIND OUT HOW THE TIME IS STORED\n\n# Page 1308\nITSAJOB2\tXCH\tGOLOC\t\t# STORE THE CADR\n\n\t\tNDX\tPOINTER\t\t# ADD THE PRIORITY AND LET:S GO\n\t\tCA\tPRDTTAB\n\n\t\tTCF\tCHKNOVAC\n\nITSEVEN\t\tCA\tTEMPSWCH\t# SET UP FOR EITHER THE SECOND PART OF THE\n\t\tTS\tGOLOC +2\t# TABLE, OR A RETURN FOR THE NEXT GROUP\n\n\t\tNDX\tTEMP2G\t\t# SET UP POINTER FOR OUR LOCATION WITHIN\n\t\tCA\tSIZETAB\t\t# THE TABLE\n\t\tAD\tTEMPPHS\t\t# THIS MAY LOOK BAD BUT LET:S SEE YOU DO\n\t\tAD\tTEMPPHS\t\t# BETTER IN TIME OR NUMBERR OF LOCATIONS\n\t\tAD\tTEMPPHS\n\t\tTS\tPOINTER\n\n\t\tTCF\tCONTBL2\t\t# NOW PROCESS WHAT IS IN THE TABLE\n\nPHSPART2\tCA\tTHREE\t\t# SET THE POINTER FOR THE SECOND HALF OF\n\t\tADS\tPOINTER\t\t# THE TABLE\n\n\t\tCA\tRTRNCADR\t# THIS WILL BE OUR LAST TIME THROUGH THE\n\t\tTS\tGOLOC +2\t# EVEN TABLE , SO AFTER IT GET THE NEXT\n\t\t\t\t\t# GROUP\n\t\tTCF\tCONTBL2\t\t# SO LET:S GET THE SECOND ENTRY IN THE TBL\n\nTEMPPHS\t\tEQUALS\tMPAC\nTEMP2G\t\tEQUALS\tMPAC +1\nPOINTER\t\tEQUALS\tMPAC +2\nTEMPSWCH\tEQUALS\tMPAC +3\nGOLOC\t\tEQUALS\tVAC5 +20D\nMINUS2\t\tEQUALS\tNEG2\nOCT177\t\tEQUALS\tLOW7\n\nPHS2CADR\tGENADR\tPHSPART2\nPRT2CADR\tGENADR\tGETPART2\nLGCLCADR\tGENADR\tLONGCALL\nFVACCADR\tGENADR\tFINDVAC\nWTLTCADR\tGENADR\tWAITLIST\nNOVACADR\tGENADR\tNOVAC\n"
  },
  {
    "path": "Luminary099/RESTART_TABLES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tRESTART_TABLES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t238-243\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 238\n# RESTART TABLES\n# ------------------\n#\n# THERE ARE TWO FORMS OF RESTART TABLES FOR EACH GROUP.  THEY ARE KNOWN AS THE EVEN RESTART TABLES AND THE ODD\n# RESTART TABLES.  THE ODD TABLES HAVE ONLY ONE ENTRY OF THREE LOCATIONS WHILE THE EVEN TABLES HAVE TWO ENTRIES\n# EACH USING THREE LOCATIONS. THE INFORMATION AS TO WHETHER IT IS A JOB, WAITLIST, OR A LONGCALL IS GIVEN BY THE\n# WAY THINGS ARE PUT INTO THE TABLES.\n#      A JOB HAS ITS PRIORITY STORED IN PRDTTAB OF THE CORRECT PHASE SPOT - A POSITIVE PRIORITY INDICATES A\n# FINDVAC JOB, A NEGATIVE PRIORITY A NOVAC.  THE 2CADR OF THE JOB IS STORED IN THE CADRTAB.\n# FOR EXAMPLE,\n#\n# 5.7SPOT\tOCT\t23000\n#\t\t2CADR\tSOMEJOB\n#\n# A RESTART OF GROUP 5 WITH PHASE SEVEN WOULD THEN CAUSE SOMEJOB TO BE RESTARTED AS A FINDVAC WITH PRIORITY 23.\n#\n# 5.5SPOT\tOCT\t-23000\n#\t\t2CADR\tANYJOB\n#\n# HERE A RESTART OF GROUP 5 WITH PHASE 7 WOULD CAUSE ANYJOB TO BE RESTARTED AS A NOVAC WITH PRIORITY 23.\n# A LONGCALL HAS ITS GENADR OF ITS 2CADR STORED NEGATIVELY AND ITS BBCON STORED POSITIVELY.  IN ITS PRDTTAB IS\n# PLACED THE LOCATION OF A DP REGISTER THAT CONTAINS THE DELTA TIME THAT LONGCALL HAD BEEN ORIGINALLY STARTED\n# WITH.  EXAMPLE,\n#\n# 3.6SPOT\tGENADR\tDELTAT\n#\t       -GENADR\tLONGTASK\n#\t\tBBCON\tLONGTASK\n#\n#\t\tOCT\t31000\n#\t\t2CADR\tJOBAGAIN\n#\n# THIS WOULD START UP LONGTASK AT THE APPROPRIATE TIME, OR IMMEDIATELY IF THE TIME HAD ALREADY PASSED. IT SHOULD\n# BE NOTED THAT IF DELTAT IS IN A SWITCHED E BANK, THIS INFORMATOIN SHOULD BE IN THE BBCON OFTHE 2CADR OF THE\n# TASK.  FROM ABOVE, WE SEE THAT THE SECOND PART OF THIS PHASE WOULD BE STARTED AS A JOB WITH A PRIORITY OF 31.\n#\n# WAITLIST CALLS ARE IDENTIFIED BY THE FACT THAT THEIR 2CADR IS STORED NEGATIVELY. IF PRDTTAB OF THE PHASE SPOT\n# IS POSITIVE, THEN IT CONTAINS THE DELTA TIME, IF PRDTTAB IS NEGATIVE THEN IT IS THE -GENADR OF AN ERASABLE\n# LOCATION CONTAINING THE DELTA TIME, THAT IS, THE TIME IS STORED INDIRECTLY.  IT SHOULD BE NOTED AS ABOVE, THAT\n# IF THE TIME IS STORED INDIRECTLY, THE BBCON MUST CONTAIN THE NECESSARY E BANK INFORMATION IF APPLICABLE.  WITH\n# WAITLIST WE HAVE ONE FURTHER OPTION, IF -0 IS STORED IN PRDTTAB, IT WILL CAUSE AN IMMEDIATE RESTART OF THE\n# TASK.  EXAMPLES,\n#\n#\t\tOCT\t77777\t\t# THIS WILL CAUSE AN IMMEDIATE RESTART\n#\t       -2CADR\tATASK\t\t# OF THE TASK :ATASK:\n#\n#\t\tDEC\t200\t\t# IF THE TIME OF THE 2 SECONDS SINCE DUMMY\n#\t       -2CADR\tDUMMY\t\t# WAS PUT ON THE WAITLIST IS UP, IT WILL BEGIN\n#\t\t\t\t\t# IN 10 MS, OTHERWISE IT WILL BEGIN WHEN\n#\t\t\t\t\t# IT NORMALLY WOULD HAVE BEGUN.\n# Page 239\n#\t       -GENADR\tDTIME\t\t# WHERE DTIME CONTAINS THE DELTA TIME\n#\t       -2CADR\tTASKTASK\t# OTHERWISE THIS IS AS ABOVE\n#\n# ***** NOW THE TABLES THEMSELVES *****\n\n\t\tBANK\t01\n\t\tSETLOC\tRESTART\n\t\tBANK\n\nPRDTTAB\t\tEQUALS\t12000\t\t# USED TO FIND THE PRIORITY OR DELTATIME\nCADRTAB\t\tEQUALS\t12001\t\t# THIS AND THE NEXT RELATIVE LOC CONTAIN\n\t\t\t\t\t# RESTART 2CADR\n\n\t\tCOUNT*\t$$/RSTAB\t# TABLES IN BANK 1.\nSIZETAB\t\tTC\t1.2SPOT -12006\n\t\tTC\t1.3SPOT -12004\n\t\tTC\t2.2SPOT -12006\n\t\tTC\t2.3SPOT\t-12004\n\t\tTC\t3.2SPOT -12006\n\t\tTC\t3.3SPOT -12004\n\t\tTC\t4.2SPOT -12006\n\t\tTC\t4.3SPOT -12004\n\t\tTC\t5.2SPOT -12006\n\t\tTC\t5.3SPOT -12004\n\t\tTC\t6.2SPOT -12006\n\t\tTC\t6.3SPOT -12004\n1.2SPOT\t\tOCT\t21000\t\t# A DUMMY EXAMPLE TO BE REPLACED AS SOON\n\t\tEBANK=\tSTATE\n\t\t2CADR\tENDOFJOB\t# AS THERE IS A LEGITIMATE 1.2SPOT\n\n\t\tDEC\t100\n\t\tEBANK=\tSTATE\n\t\t2CADR\tTASKOVER\n\n# ANY MORE GROUP 1.EVEN RESTART VALUES SHOULD GO HERE\n\n1.3SPOT\t       -GENADR\tSAVET-30\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tULLGTASK\n\n# ANY MORE GROUP 1.ODD RESTART VALUES SHOULD GO HERE\n\n2.2SPOT\t\tEQUALS\t1.2SPOT\n# ANY MORE GROUP 2.EVEN RESTART VALUES SHOULD GO HERE\n\n2.3SPOT\t\tGENADR\t600SECS\n\t       -GENADR\tSTATEINT\n\t\tEBANK=\tRRECTCSM\n\t\tBBCON\tSTATEINT\n\n# Page 240\n2.5SPOT\t\tOCT\t05000\n\t\tEBANK=\tRRECTCSM\n\t\t2CADR\tSTATINT1\n\n2.7SPOT\t\tDEC\t1500\n\t\tEBANK=\tLOSCOUNT\n\t       -2CADR\tP20LEMC1\n\n2.11SPOT\tOCT\t14000\n\t\tEBANK=\tP21TIME\n\t\t2CADR\tP25LEM1\n\n2.13SPOT\tOCT\t10000\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tRELINUS\n\n2.15SPOT\tOCT\t26000\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tR22RSTRT\n\n2.17SPOT\tOCT\t77777\n\t\tEBANK=\tVGPREV\n\t       -2CADR\tREDO2.17\n\n2.21SPOT\tDEC\t25\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tR10,R11\n\n# ANY MORE GROUP 2.ODD RESTART VALUES SHOULD GO HERE.\n\n3.2SPOT\t\tEQUALS\t1.2SPOT\n# ANY MORE GROUP 3.EVEN RESTART VALUES SHOULD GO HERE\n\n3.3SPOT\t       -GENADR\tZOOMTIME\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tZOOM\n\n3.5SPOT\t\tOCT\t20000\n\t\tEBANK=\tTTOGO\n\t\t2CADR\tS40.13\n\n# ANY MORE GROUP 3.ODD RESTART VALUES SHOULD GO HERE\n\n4.2SPOT\t\tDEC\t2500\n\t\tEBANK=\tTTOGO\n\t       -2CADR\tTIG-5\n\n\t\tOCT\t77777\n\t\tEBANK=\tTTOGO\n# Page 241\n\t       -2CADR\tREDO4.2\n\n# ANY MORE GROUP 4.EVEN RESTART VALUES SHOULD GO HERE\n\n4.3SPOT\t\tOCT\t25000\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tGOABORT\n\n4.5SPOT\t\tDEC\t50\n\t\tEBANK=\tTTOGO\n\t       -2CADR\tULLAGOFF\n\n4.7SPOT\t\tDEC\t500\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tTIG-0\n\n4.11SPOT       -GENADR\tTGO +1\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tENGOFTSK\n\n4.13SPOT\tOCT\t12000\n\t\tEBANK=\tTRKMKCNT\n\t\t2CADR\tPOSTBURN\n\n4.15SPOT\tDEC\t500\n\t\tEBANK=\tTTOGO\n\t       -2CADR\tTIG-30\n\n4.17SPOT\tOCT\t77777\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tTIG-5\n\n4.21SPOT\tOCT\t13000\n\t\tEBANK=\tSTAR\n\t\t2CADR\tR51.1 +1\n\n4.23SPOT\tOCT\t77777\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tIGNITION\n\n4.25SPOT\tGENADR\tSAVET-30\n\t       -GENADR\tTIG-35\n\t\tEBANK=\tSAVET-30\n\t\tBBCON\tTIG-35\n\n4.27SPOT\tOCT\t52777\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tP70A\n\n# Page 242\n4.31SPOT\tOCT\t52777\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tP71A\n\n4.33SPOT\tOCT\t46777\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tGOP00FIX\n\n4.35SPOT\tOCT\t46777\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tGOPOODOO\n\n4.37SPOT\tOCT\t52777\n\t\tEBANK=\tWHICH\n\t\t2CADR\tCOMFAIL\n\n# ANY MORE 4.ODD RESTART VALUES SHOULD GO HERE.\n\n5.2SPOT\t\tOCT\t22000\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tNORMLIZE\n\n\t\tDEC\t200\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tREREADAC\n\n5.4SPOT\t\tDEC\t200\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tREREADAC\n\n\t\tOCT\t20000\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tSERVICER\n\n# ANY MORE GROUP 5.EVEN RESTART VALUES SHOULD GO HERE\n\n5.3SPOT\t\tDEC\t200\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tREREADAC\n\n5.5SPOT\t\tOCT\t77777\n\t\tEBANK=\tDVCNTR\n\t       -2CADR\tREDO5.5\n\n5.7SPOT\t\tOCT\t77777\n\t\tEBANK=\tDVCNTR\n# Page 243\n\t       -2CADR\tBIBIBIAS\n\n# ANY MORE GROUP 5.ODD RESTART VALUES SHOULD GO HERE\n\n6.2SPOT\t\tEQUALS\t1.2SPOT\n6.3SPOT\t\tDEC\t100\n\t\tEBANK=\tTIG\n\t       -2CADR\tCLOKTASK\n\n6.5SPOT\t\tOCT\t30000\t\t# PROTECT INCREMENTING OF TIME2,TIME1 BY\n\t\tEBANK=\tTEPHEM\t\t# P27(UPDATE PROGRAM) VIA V70 OR V73.\n\t\t2CADR\tTIMEDIDR\n\n6.7SPOT\t\tOCT\t17000\n\t\tEBANK=\tVGPREV\n\t\t2CADR\tREDO6.7\n"
  },
  {
    "path": "Luminary099/RTB_OP_CODES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tRTB_OP_CODES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1397-1401\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1397\n\t\tBANK\t22\n\t\tSETLOC\tRTBCODES\n\t\tBANK\n\n\t\tEBANK=\tXNB\n\t\tCOUNT*\t$$/RTB\n\n# LOAD TIME2, TIME1 INTO MPAC:\n\nLOADTIME\tEXTEND\n\t\tDCA\tTIME2\n\t\tTCF\tSLOAD2\n\n# \t   CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A\n# DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS.\n\nCDULOGIC\tCCS\tMPAC\n\t\tCAF\tZERO\n\t\tTCF\t+3\n\t\tNOOP\n\t\tCS\tHALF\n\n\t\tTS\tMPAC +1\n\t\tCAF\tZERO\n\t\tXCH\tMPAC\n\t\tEXTEND\n\t\tMP\tHALF\n\t\tDAS\tMPAC\n\t\tTCF\tDANZIG\t\t# MODE IS ALREADY AT DOUBLE-PRECISION\n\n# \t   FORCE TP SIGN AGREEMENT IN MPAC:\n\nSGNAGREE\tTC\tTPAGREE\n\t\tTCF\tDANZIG\n\n# \t   CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE\n# SCALED IN HALF-REVOLUTIONS.\n\n1STO2S\t\tTC\t1TO2SUB\n\t\tCAF\tZERO\n\t\tTS\tMPAC +1\n\t\tTCF\tNEWMODE\n\n# \t   DO 1STO2S ON A VECTOR OF ANGLES:\n\nV1STO2S\t\tTC\t1TO2SUB\t\t# ANSWER ARRIVES IN A AND MPAC.\n\n\t\tDXCH\tMPAC +5\n\t\tDXCH\tMPAC\n\t\tTC\t1TO2SUB\n# Page 1398\n\t\tTS\tMPAC +2\n\n\t\tDXCH\tMPAC +3\n\t\tDXCH\tMPAC\n\t\tTC\t1TO2SUB\n\t\tTS\tMPAC +1\n\n\t\tCA\tMPAC +5\n\t\tTS\tMPAC\n\nTPMODE\t\tCAF\tONE\t\t# MODE IS TP.\n\t\tTCF\tNEWMODE\n\n# \t   V1STO2S FOR 2 COMPONENT VECTOR. USED BY RR.\n\n2V1STO2S\tTC\t1TO2SUB\n\t\tDXCH\tMPAC +3\n\t\tDXCH\tMPAC\n\t\tTC\t1TO2SUB\n\t\tTS\tL\n\t\tCA\tMPAC +3\n\t\tTCF\tSLOAD2\n\n# \t   SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S CONVERSION:\n\n1TO2SUB\t\tDXCH\tMPAC\t\t# FINAL MPAC +1 UNSPECIFIED.\n\t\tDDOUBL\n\t\tCCS\tA\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tCOM\t\t\t# THIS WAS REVERSE OF MSU.\n\n\t\tTS\tMPAC\t\t# AND SKIP ON OVERFLOW.\n\t\tTC\tQ\n\n\t\tINDEX\tA\t\t# OVERFLOW UNCORRECT AND IN MSU.\n\t\tCAF\tLIMITS\n\t\tADS\tMPAC\n\t\tTC\tQ\n\n# \t   THE FOLLOWING ROUTINE INCREMENTS IN 2S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1S COMPL.\n# QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCREMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2S COMPL.\n# (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL.\n\nCDUINC\t\tTS\tTEM2\t\t# 1S COMPL.QUANT. ARRIVES IN ACC. STORE IT\n\t\tINDEX\tBUF\n\t\tCCS\t0\t\t# CHANGE 2S COMPL. ANGLE(IN BUF)INTO 1S\n\t\tAD\tONE\n\t\tTCF\t+4\n\t\tAD\tONE\n# Page 1399\n\t\tAD\tONE\t\t# OVERFLOW HERE IF 2S COMPL. IS 180 DEG.\n\t\tCOM\n\n\t\tAD\tTEM2\t\t# SULT MOVES FROM 2ND TO 3D QUAD.(OR BACK)\n\t\tCCS\tA\t\t# BACK TO 2S COMPL.\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tCOM\n\t\tTS\tTEM2\t\t# STORE 14BIT QUANTITY WITH PRESENT SIGN\n\t\tTCF\t+4\n\t\tINDEX\tA\t\t#  SIGN.\n\t\tCAF\tLIMITS\t\t# FIX IT,BY ADDING IN 37777 OR 40000\n\t\tAD\tTEM2\n\n\t\tINDEX\tBUF\n\t\tTS\t0\t\t# STORE NEW ANGLE IN 2S COMPLEMENT.\n\t\tTC\tQ\n\n# Page 1400\n# \t   RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL. ECADR OF COMMANDS ARRIVES IN X1.\n\nPULSEIMU\tINDEX\tFIXLOC\t\t# ADDRESS OF GYRO COMMANDS SHOULD BE IN X1\n\t\tCA\tX1\n\t\tTC\tBANKCALL\n\t\tCADR\tIMUPULSE\n\t\tTCF\tDANZIG\n\n# Page 1401\n# \t   THE SUBROUTINE SIGNMPAC  SETS C(MPAC, MPAC +1) TO SIGN(MPAC).\n# FOR THIS, ONLY THE CONTENTS OF MPAC ARE EXAMINED.   ALSO +0 YIELDS POSMAX AND -0 YIELDS NEGMAX.\n#\n# ENTRY MAY BE BY EITHER OF THE FOLLOWING:\n# 1.\t   LIMIT THE SIZE OF MPAC ON INTERPRETIVE OVERFLOW:\n# ENTRY:\t  BOVB\n#\t\t\t SIGNMPAC\n# 2.\t   GENERATE IN MPAC THE SIGNUM FUNCTION OF MPAC:\n# ENTRY:\t  RTB\n#\t\t\t SIGNMPAC\n# IN EITHER CASE, RETURN IS TO  THE NEXT INTERPRETIVE INSTRUCTION IN THE CALLING SEQUENCE.\n\nSIGNMPAC\tEXTEND\n\t\tDCA\tDPOSMAX\n\t\tDXCH\tMPAC\n\t\tCCS\tA\nDPMODE\t\tCAF\tZERO\t\t# SETS MPAC +2 TO ZERO IN THE PROCESS\n\t\tTCF\tSLOAD2 +2\n\t\tTCF\t+1\n\t\tEXTEND\n\t\tDCS\tDPOSMAX\n\t\tTCF\tSLOAD2\n\n#     RTB OP CODE NORMUNIT IS LIKE INTERPRETIVE INSTRUCTION UNIT, EXCEPT THAT IT CAN BE DEPENDED ON NOT TO BLOW\n# UP WHEN THE VECTOR BEING UNITIZED IS VERY SMALL -- IT WILL BLOW UP WHEN ALL COMPONENTS ARE ZERO.   IF NORMUNIT\n# IS USED AND THE UPPER ORDER HALVES OF ALL COMPONENTS ARE ZERO, THE MAGNITUDE RETURNED IN 36D WILL BE TOO LARGE\n# BY A FACTOR OF 2(13) AND THE SQUARED MAGNITUDE RETURNED AT 34D WILL BE TOO BIG BY A FACTOR OF 2(26).\n\nNORMUNX1\tCAF\tONE\n\t\tTCF\tNORMUNIT +1\nNORMUNIT\tCAF\tZERO\n\t\tAD\tFIXLOC\n\t\tTS\tMPAC +2\n\t\tTC\tBANKCALL\t# GET SIGN AGREEMENT IN ALL COMPONENTS\n\t\tCADR\tVECAGREE\n\t\tCCS\tMPAC\n\t\tTCF\tNOSHIFT\n\t\tTCF\t+2\n\t\tTCF\tNOSHIFT\n\t\tCCS\tMPAC +3\n\t\tTCF\tNOSHIFT\n\t\tTCF\t+2\n\t\tTCF\tNOSHIFT\n\t\tCCS\tMPAC +5\n\t\tTCF\tNOSHIFT\n\t\tTCF\t+2\n\t\tTCF\tNOSHIFT\n# Page 1402\n\t\tCA\tMPAC +1\t\t# SHIFT ALL COMPONENTS LEFT 13\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tDAS\tMPAC\t\t# DAS GAINS A LITTLE ACCURACY\n\t\tCA\tMPAC +4\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tDAS\tMPAC +3\n\t\tCA\tMPAC +6\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tDAS\tMPAC +5\n\t\tCAF\tTHIRTEEN\n\t\tINDEX\tMPAC +2\n\t\tTS\t37D\nOFFTUNIT\tTC\tPOSTJUMP\n\t\tCADR\tUNIT +1\t\t# SKIP THE \"TC VECAGREE\" DONE AT UNIT\n\nNOSHIFT\t\tCAF\tZERO\n\t\tTCF\tOFFTUNIT -2\n\n# RTB VECSGNAG   ...FORCES SIGN AGREEMENT OF VECTOR IN MPAC.\n\nVECSGNAG\tTC\tBANKCALL\n\t\tCADR\tVECAGREE\n\t\tTC\tDANZIG\n\n# *** END OF SKIPPER .087 ***\n\n"
  },
  {
    "path": "Luminary099/S-BAND_ANTENNA_FOR_LM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tS-BAND_ANTENNA_FOR_LM.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t486-489\n# Mod history:\t2009-05-17 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-07 RSB\tCorrected a misprint.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 486\n# SUBROUTINE NAME: R05 - S-BAND ANTENNA FOR LM\n#\n# MOD0 BY T. JAMES\n# MOD1 BY P. SHAKIR\n#\n# FUNCTIONAL DESCRIPTION\n#\n#     THE S-BAND ANTENNA ROUTINE, R05, COMPUTES AND DISPLAYS THE PITCH AND\n# YAW ANTENNA GIMBAL ANGLES REQUIRED TO POINT THE LM STEERABLE ANTENNA\n# TOWARD THE CENTER OF THE EARTH. THIS ROUTINE IS SELECTED BY THE ASTRO-\n# NAUT VIA DSKY ENTRY DURING COASTING FLIGHT OR WHEN THE LM IS ON THE MOON\n# SURFACE. THE EARTH OR MOON REFERENCE COORDINATE SYSTEM IS USED DEPENDING\n# ON WHETHER THE LM IS ABOUT TO ENTER OR HAS ALREADY ENTERED THE MOON\n# SPHERE OF INFLUENCE, RESPECTIVELY\n#\n# TO CALL SUBROUTINE, ASTRONAUT KEYS IN V 64 E\n#\n# SUBROUTINES CALLED-\n#\tR02BOTH\n#\tINTPRET\n#\tLOADTIME\n#\tLEMCONIC\n#\tLUNPOS\n#\tCDUTRIG\n#\t*SMNB*\n#\tBANKCALL\n#\tB50OFF\n#\tENDOFJOB\n#\tBLANKET\n#\n# RETURNS WITH\n#\tPITCH ANGLE IN PITCHANG \tREV. B0\n#\tYAW ANGLE IN YAWANG\t\tREV. B0\n#\n# ERASABLES USED\n#\tPITCHANG\n#\tYAWANG\n#\tRLM\n#\tVAC AREA\n\n\t\tBANK\t41\n\t\tSETLOC\tSBAND\n\t\tBANK\n\n\t\tEBANK=\tWHOCARES\n\t\tCOUNT*\t$$/R05\nSBANDANT\tTC\tBANKCALL\n# Page 487\n\t\tCADR\tR02BOTH\t\t# CHECK IF IMU IS ON AND ALIGNED\n\t\tTC\tINTPRET\n\t\tSETPD\tRTB\n\t\t\t0D\n\t\t\tLOADTIME\t# PICK UP CURRENT TIME\n\t\tSTCALL\tTDEC1\t\t# ADVANCE INTEGRATION TO TIME IN TDEC1\n\t\t\tLEMCONIC\t# USING CONIC INTEGRATION\n\t\tSLOAD\tBHIZ\n\t\t\tX2\t\t# X2 =0 EARTH SPHERE, X2 =2 MOON SPHERE\n\t\t\tCONV4\n\t\tVLOAD\n\t\t\tRATT\n\t\tSTODL\tRLM\n\t\t\tTAT\nCONV3\t\tCALL\n\t\t\tLUNPOS\t\t# UNIT POSITION VECTOR FROM EARTH TO MOON\n\t\tVLOAD\tVXSC\n\t\t\tVMOON\n\t\t\tREMDIST\t\t# MEAN DISTANCE FROM EARTH TO MOON\n\t\tVSL1\tVAD\n\t\t\tRLM\n\t\tGOTO\n\t\t\tCONV5\nCONV4\t\tVLOAD\n\t\t\tRATT\t\t# UE = -UNIT(RATT)  EARTH SPHERE\nCONV5\t\tSETPD\tUNIT\t\t# UE = -UNIT((REM)(UEM) + RL)  MOON SPHERE\n\t\t\t0D\t\t# SET PL POINTER TO 0\n\t\tVCOMP\tCALL\n\t\t\tCDUTRIG\t\t# COMPUTE SINES AND COSINES OF CDU ANGLES\n\t\tMXV\tVSL1\t\t# TRANSFORM REF. COORDINATE SYSTEM TO\n\t\t\tREFSMMAT\t# STABLE MEMBER  B-1 X B-1 X B+1 = B-1\n\t\tPUSH\tDLOAD\t\t# 8D\n\t\t\tHI6ZEROS\n\t\tSTORE\tPITCHANG\n\t\tSTOVL\tYAWANG\t\t# ZERO OUT ANGLES\n\t\tCALL\n\t\t\t*SMNB*\n\t\tSTODL\tRLM\t\t# PRE-MULTIPLY RLM BY (NBSA) MATRIX(B0)\n\t\t\tRLM \t+2\n\t\tPUSH\tDSU\n\t\t\tRLM\n\t\tDMP\n\t\t\t1OVSQRT2\n\t\tSTODL\tRLM \t+2\n\t\tDAD\tDMP\n\t\t\tRLM\n\t\t\t1OVSQRT2\n\t\tSTOVL\tRLM\t\t# R  B-1\n\t\t\tRLM\n\t\tUNIT\tPDVL\n# Page 488\n\t\t\tRLM\n\t\tVPROJ\tVSL2\t\t# PROJECTION OF R ONTO LM XZ PLANE\n\t\t\tHIUNITY\n\t\tBVSU\tBOV\t\t# CLEAR OVERFLOW INDICATOR IF ON\n\t\t\tRLM\n\t\t\tCOVCNV\nCOVCNV\t\tUNIT\tBOV\t\t# EXIT ON OVERFLOW\n\t\t\tSBANDEX\n\t\tPUSH\tVXV\t\t# URP VECTOR  B-1\n\t\t\tHIUNITZ\n\t\tVSL1\tVCOMP\t\t# UZ X URP = -(URP X UZ)\n\t\tSTORE\tRLM\t\t# X VEC  B-1\n\t\tDOT\tPDVL\t\t# SGN(X.UY) UNSCALED\n\t\t\tHIUNITY\n\t\t\tRLM\n\t\tABVAL\tSIGN\n\t\tASIN\t\t\t# ASIN((SGN(X.UY))ABV(X)) REV B0\n\t\tSTOVL\tPITCHANG\n\t\t\tURP\n\t\tDOT\tBPL\n\t\t\tHIUNITZ\n\t\t\tNOADJUST\t# YES, -90 TO +90\n\t\tDLOAD\tDSU\n\t\t\tHIDPHALF\n\t\t\tPITCHANG\n\t\tSTORE\tPITCHANG\nNOADJUST\tVLOAD\tVXV\n\t\t\tUR\t\t# Z = (UR X URP)\n\t\t\tURP\n\t\tVSL1\n\t\tSTODL\tRLM\t\t# Z VEC  B-1\n\t\t\tPITCHANG\n\t\tSIN\tVXSC\n\t\t\tHIUNITZ\n\t\tPDDL\tCOS\n\t\t\tPITCHANG\n\t\tVXSC\tVSU\n\t\t\tHIUNITX\t\t# (UX COS ALPHA) - (UZ SIN ALPHA)\n\t\tDOT\tPDVL\t\t# YAW.Z\n\t\t\tRLM\n\t\t\tRLM\n\t\tABVAL\tSIGN\n\t\tASIN\n\t\tSTORE\tYAWANG\nSBANDEX\t\tEXIT\n\t\tCA\tEXTVBACT\n\t\tMASK\tBIT5\t\t# IS BIT5 STILL ON\n\t\tEXTEND\n\t\tBZF\tENDEXT\t\t# NO\n\t\tCAF\tPRIO5\n# Page 489\n\t\tTC\tPRIOCHNG\n\t\tCAF\tV06N51\t\t# DISPLAY ANGLES\n\t\tTC\tBANKCALL\n\t\tCADR\tGOMARKFR\n\t\tTC\tB5OFF\t\t# TERMINATE\n\t\tTC\tB5OFF\t\t# PROCEED\n\t\tTC\tENDOFJOB\t# RECYCLE\n\t\tCAF\tBIT3\t\t# IMMEDIATE RETURN\n\t\tTC\tBLANKET\t\t# BLANK R3\n\t\tCAF\tPRIO4\n\t\tTC\tPRIOCHNG\n\t\tTC\tSBANDANT +2\t# YES, CONTINUE DISPLAYING ANGLES\nV06N51\t\tVN\t0651\n1OVSQRT2\t2DEC\t.7071067815\t# 1/SQRT(2)\n\nUR\t\tEQUALS\t0D\nURP\t\tEQUALS\t6D\n\t\tSBANK=\tLOWSUPER\n\n# *** END OF LNYAIDE .001 ***\n"
  },
  {
    "path": "Luminary099/SERVICER.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSERVICER.agc\n# Purpose:\tPart of the source code for Luminary, build 099. It\n#\t\tis part of the source code for the Lunar Module's\n#\t\t(LM) Apollo Guidance Computer (AGC), Apollo 11.\n# Assembler:\tyaYUL\n# Reference:\tpp. 857-897\n# Contact:\tRon Burkey <info@sandroid.org>,\n#  \t\tFabrizio Bernardini <fabrizio@spacecraft.it>\n# Website:\thttp://www.ibiblio.org/apollo.\n# Mod history:\t2009-06-01 FB\tTranscription Batch 4 Assignment.\n#\t\t2009-06-05 RSB\tFixed a couple of typos, plus a goofy relative\n#\t\t\t\tlabel reference from the original source.\n#\n# The contents of the \"Luminary099\" files, in general, are transcribed\n# from scanned documents.\n#\n#\tAssemble revision 001 of AGC program Luminary099 by NASA\n#\t2021112-061.  July 14, 1969.\n#\n#\tPrepared by\n#\t\t\tMassachusetts Institute of Technology\n#\t\t\t75 Cambridge Parkway\n#\t\t\tCambridge, Massachusetts\n#\n#\tunder NASA contract NAS 9-4065.\n#\n# Refer directly to the online document mentioned above for further\n# information.  Please report any errors to info@sandroid.org.\n\n# Page 857\n\t\tBANK\t37\n\t\tSETLOC\tSERV1\n\t\tBANK\n\n\t\tEBANK=\tDVCNTR\n\n# ************* PREREAD *******************\n\n\t\tCOUNT*\t$$/SERV\n\nPREREAD\t\tCAF\tSEVEN\t\t# 5.7 SPOT TO SKIP LASTBIAS AFTER\n\t\tTC\tGNUFAZE5\t# RESTART.\n\t\tCAF\tPRIO21\n\t\tTC\tNOVAC\n\t\tEBANK=\tNBDX\n\t\t2CADR\tLASTBIAS\t# DO LAST GYRO COMPENSATION IN FREE FALL\n\nBIBIBIAS\tTC\tPIPASR +3\t# CLEAR + READ PIPS LAST TIME IN FRE5+F133\n\t\t\t\t\t# DO NOT DESTROY VALUE OF PIPTIME1\n\n\t\tCS\tFLAGWRD7\n\t\tMASK\tSUPER011\t# SET V37FLAG AND AVEGFLAG (BITS 5 AND 6\n\t\tADS\tFLAGWRD7\t# \tOF FLAGWRD7)\n\n\t\tCS\tDRFTBIT\n\t\tMASK\tFLAGWRD2\t# RESET DRIFTFLAG\n\t\tTS\tFLAGWRD2\n\n\t\tCAF\tFOUR\t\t# INITIALIZE DV MONITOR\n\t\tTS\tPIPAGE\n\n\t\tCAF\tENDJBCAD\t# POINT OUTROUTE TO END-OF-JOB.\n\t\tTS\tOUTROUTE\n\n\t\tCAF\tPRIO22\n\t\tTC\tFINDVAC\t\t# TO FIRST ENTRY TO AVERAGE G\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tNORMLIZE\n\n\t\tCA\tTWO\t\t# 5.2SPOT FOR REREADAC AND NORMLIZE\nGOREADAX\tTC\tGNUTFAZ5\n\t\tCA\t2SECS\t\t# WAIT TWO SECONDS FOR READACCS\n\t\tTC\tVARDELAY\n\n# Page 858\n# ************* READACCS ****************\n\nREADACCS\tCS\tOCT37771\t# THIS PIECE OF CODING ATTEMPTS TO\n\t\tAD\tTIME5\t\t# SYNCHRONIZE READACCS WITH THE DIGITAL\n\t\tCCS\tA\t\t# AUTOPILOT SO THAT A PAXIS RUPT WILL\n\t\tCS\tONE\t\t# OCCUR APPROXIMATELY 70 MILLISECONDS\n\t\tTCF\t+2\t\t# FOLLOWING THE READACCS RUPT.  THE 70 MS\n\t\tCA\tONE\t\t# OFFSET WAS CHOSEN SO THAT THE PAXIS\n +2\t\tADS\tTIME5\t\t# RUPT WOULD NOT OCCUR SIMULTANEOUSLY\n \t\t\t\t\t# WITH ANY OF THE 8 SUBSEQUENT R10,R11\n\t\t\t\t\t# INTERRUPTS -- THUS MINIMIZING THE POSS-\n\t\t\t\t\t# IBILITY OF LOSING DOWNRUPTS.\n\n\t\tTC\tPIPASR\t\t# READ THE PIPAS.\n\nPIPSDONE\tCA\tFIVE\n\t\tTC\tGNUFAZE5\nREDO5.5\t\tCAF\tONE\n\t\tTS\tPIPAGE\n\n\t\tCA\tPRIO20\n\t\tTC\tFINDVAC\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tSERVICER\t# SET UP SERVICER JOB\n\n\t\tCA\tBIT9\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\t# TURN ON TEST CONNECTOR OUTBIT\n\n\t\tCA\tFLAGWRD7\n\t\tMASK\tAVEGFBIT\n\t\tEXTEND\n\t\tBZF\tAVEGOUT\t\t# AVEGFLAG DOWN -- SET UP FINAL EXIT\n\n\t\tCA\tFLAGWRD6\n\t\tMASK\tMUNFLBIT\n\t\tEXTEND\n\t\tBZF\tMAKEACCS\t# MUNFLAG CLEAR -- BYPASS LR AND DISP.\n\n\t\tCCS\tPHASE2\n\t\tTCF\tMAKEACCS\t# PHASE 2 ACTIVATED -- AVOID MULTIPLE R10.\n\n\t\tCAF\tSEVEN\t\t# SET PIPCTR FOR 4X/SEC RATE.\n\t\tTS\tPIPCTR\n\n\t\tCS\tTIME1\t\t# SET TBASE2 .05 SECONDS IN THE PAST.\n\t\tAD\tFIVE\n\t\tAD\tNEG1/2\n\t\tAD\tNEG1/2\n\t\tXCH\tTBASE2\n# Page 859\n\t\tCAF\tDEC17\t\t# 2.21SPOT FOR R10,R11\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE2\n\n\t\tCAF\tOCT24\t\t# FIRST R10,R11 IN .200 SECONDS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tUNIT/R/\n\t\t2CADR\tR10,R11\n\nMAKEACCS\tCA\tFOUR\n\t\tTCF\tGOREADAX\t# DO PHASE CHANGE AND RECALL READACCS\n\nAVEGOUT\t\tEXTEND\n\t\tDCA\tAVOUTCAD\t# SET UP FINAL SERVICER EXIT\n\t\tDXCH\tAVGEXIT\n\n\t\tCA\tFOUR\t\t# SET 5.4 SPOT FOR REREADAC AND SERVICER\n\t\tTC\tGNUTFAZ5\t# IF REREADAC IS CALLED, IT WILL EXIT\n\t\tTC\tTASKOVER\t# END TASK WITHOUT CALLING READACCS\n\nGNUTFAZ5\tTS\tL\t\t# SAVE INPUT IN L\n\t\tCS\tTIME1\n\t\tTS\tTBASE5\t\t# SET TBASE5\n\t\tTCF\t+2\n\nGNUFAZE5\tTS\tL\t\t# SAVE INPUT IN L\n\t\tCS\tL\t\t# -PHASE IN A, PHASE IN L.\n\t\tDXCH\t-PHASE5\t\t# SET -PHASE5,PHASE5\n\t\tTC\tQ\n\n\t\tEBANK=\tDVCNTR\nAVOUTCAD\t2CADR\tAVGEND\n\nENDJBCAD\tCADR\tSERVEXIT +2\n\nOCT37771\tOCT\t37771\n\n\t\tBANK\t33\n\t\tSETLOC\tSERVICES\n\t\tBANK\n\n\t\tCOUNT*\t$$/SERV\n\n# Page 860\n# ************* SERVICER ****************\n\nSERVICER\tTC\tPHASCHNG\t# RESTART REREADAC + SERVICER\n\t\tOCT\t16035\n\t\tOCT\t20000\n\t\tEBANK=\tDVCNTR\n\t\t2CADR\tGETABVAL\n\n\t\tCAF\tPRIO31\t\t# INITIALIZE 1/PIPADT IN CASE RESTART HAS\n\t\tTS\t1/PIPADT\t# CAUSED LASTBIAS TO BE SKIPPED.\n\n\t\tTC\tBANKCALL\t# PIPA COMPENSATION CALL\n\t\tCADR\t1/PIPA\n\nGETABVAL\tTC\tINTPRET\n\t\tVLOAD\tABVAL\n\t\t\tDELV\n\t\tEXIT\n\t\tCA\tMPAC\n\t\tTS\tABDELV\t\t# ABDELV = CM/SEC*2(-14).\n\t\tEXTEND\n\t\tMP\tKPIP\n\t\tDXCH\tABDVCONV\t# ABDVCONV = M/CS * 2(-5).\n\t\tEXTEND\n\t\tDCA\tMASS\n\t\tDXCH\tMASS1\t\t# INITIALIZE MASS1 IN CASE WE SKIP MASSMON\nMASSMON\t\tCS\tFLAGWRD8\t# ARE WE ON THE SURFACE?\n\t\tMASK\tSURFFBIT\n\t\tEXTEND\n\t\tBZF\tMOONSPOT\t# YES:  BYPASS MASS MESS\n\n\t\tCA\tFLGWRD10\t# NO:  WHICH VEX SHOULD BE USED?\n\t\tMASK\tAPSFLBIT\n\t\tCCS\tA\n\t\tEXTEND\t\t\t# IF EXTEND IS EXECUTED, APSVEX --> A,\n\t\tDCA\tAPSVEX\t\t# \tOTHERWISE DPSVEX --> A\n\t\tTS\tQ\n\n\t\tEXTEND\n\t\tDCA\tABDVCONV\n\t\tEXTEND\nOCT10002\tDV\tQ\t\t# WHERE APPROPRIATE VEX RESIDES\n\t\tEXTEND\n\t\tMP\tMASS\n\t\tDAS\tMASS1\n\nMOONSPOT\tCA\tKPIP1\t\t# TP MPAC = ABDELV AT 2(14) CM/SEC\n\t\tTC\tSHORTMP\t\t# MULTIPLY BY KPIP1 TO GET\n# Page 861\n\t\tDXCH\tMPAC\t\t# ABDELV AT 2(7) M/CS\n\t\tDAS\tDVTOTAL\t\t# UPDATE DVTOTAL FOR DISPLAY\n\n\t\tTC\tTMPTOSPT\n\n\t\tTC\tBANKCALL\n\t\tCADR\tQUICTRIG\n\n\t\tCAF\tXNBPIPAD\n\t\tTC\tBANKCALL\n\t\tCADR\tFLESHPOT\n\t\tTC\tINTPRET\nAVERAGEG\tBON\tCALL\n\t\t\tMUNFLAG\n\t\t\tRVBOTH\n\t\t\tCALCRVG\n\t\tEXIT\nGOSERV\t\tTC\tQUIKFAZ5\n\nCOPYCYCL\tTC\tCOPYCYC\n\n#\t\tCA\tZERO\t\t# A IS ZERO ON RETURN FROM COPYCYC\n\t\tTS\tPIPATMPX\n\t\tTS\tPIPATMPY\n\t\tTS\tPIPATMPZ\n\n\t\tCS\tSTEERBIT\t# CLEAR STEERSW PRIOR TO DVMON.\n\t\tMASK\tFLAGWRD2\n\t\tTS\tFLAGWRD2\n\n\t\tCAF\tIDLEFBIT\t# IS THE IDLE FLAG SET?\n\t\tMASK\tFLAGWRD7\n\t\tCCS\tA\n\t\tTCF\tNODVMON1\t# IDLEFLAG = 1, HENCE SET AUXFLAG TO 0.\n\n\t\tCS\tFLAGWRD6\n\t\tMASK\tAUXFLBIT\n\t\tCCS\tA\n\t\tTCF\tNODVMON2\t# AUXFLAG = 0, HENCE SET AUXFLAG TO 1.\n\nDVMON\t\tCS\tDVTHRUSH\n\t\tAD\tABDELV\n\t\tEXTEND\n\t\tBZMF\tLOTHRUST\n\n\t\tCS\tFLAGWRD2\t# SET STEERSW.\n\t\tMASK\tSTEERBIT\n\t\tADS\tFLAGWRD2\n\nDVCNTSET\tCAF\tONE\t\t# ALLOW TWO PASSES MAXIMUM NOW THAT\n# Page 862\n\t\tTS\tDVCNTR\t\t# THRUST HAS BEEN DETECTED.\n\n\t\tCA\tFLGWRD10\t# BRANCH IF APSFLAG IS SET.\n\t\tMASK\tAPSFLBIT\n\t\tCCS\tA\n\t\tTCF\tUSEJETS\n\n\t\tCA\tBIT9\t\t# CHECK GIMBAL FAIL BIT\n\t\tEXTEND\n\t\tRAND\tCHAN32\n\t\tEXTEND\n\t\tBZF\tUSEJETS\n\nUSEGTS\t\tCS\tUSEQRJTS\n\t\tMASK\tDAPBOOLS\n\t\tTS\tDAPBOOLS\n\t\tTCF\tSERVOUT\n\nNODVMON1\tCS\tAUXFLBIT\t# SET AUXFLAG TO 0.\n\t\tMASK\tFLAGWRD6\n\t\tTS\tFLAGWRD6\n\t\tTCF\tUSEJETS\nNODVMON2\tCS\tFLAGWRD6\t# SET AUXFLAG TO 1.\n\t\tMASK\tAUXFLBIT\n\t\tADS\tFLAGWRD6\n\t\tTCF\tUSEJETS\n\nLOTHRUST\tTC\tQUIKFAZ5\n\t\tCCS\tDVCNTR\n\t\tTCF\tDECCNTR\n\n\t\tCCS\tPHASE4\t\t# COMFAIL JOB ACTIVE?\n\t\tTCF\tSERVOUT\t\t# YES:  WON'T NEED ANOTHER.\n\n\t\tTC\tPHASCHNG\t# 4.37SPOT FOR COMFAIL.\n\t\tOCT\t00374\n\n\t\tCAF\tPRIO25\n\t\tTC\tNOVAC\n\t\tEBANK=\tWHICH\n\t\t2CADR\tCOMFAIL\n\n\t\tTCF\tSERVOUT\n\nDECCNTR\t\tTS\tDVCNTR1\n\t\tTC\tQUIKFAZ5\n\t\tCA\tDVCNTR1\n\t\tTS\tDVCNTR\n\t\tINHINT\n\t\tTC\tIBNKCALL\t# IF THRUST IS LOW, NO STEERING IS DONE\n# Page 863\n\t\tCADR\tSTOPRATE\t# AND THE DESIRED RATES ARE SET TO ZERO.\nUSEJETS\t\tCS\tDAPBOOLS\n\t\tMASK\tUSEQRJTS\n\t\tADS\tDAPBOOLS\nSERVOUT\t\tRELINT\n\t\tTC\tBANKCALL\n\t\tCADR\t1/ACCS\n\n\t\tCA\tPRIORITY\n\t\tMASK\tLOW9\n\t\tTS\tPUSHLOC\n\t\tZL\n\t\tDXCH\tFIXLOC\t\t# FIXLOC AND DVFIND\n\n\t\tTC\tQUIKFAZ5\n\t\tEXTEND\t\t\t# EXIT TO SELECTED ROUTINE WHETHER THERE\n\t\tDCA\tAVGEXIT\t\t# IS THRUST OR NOT.  THE STATE OF STEERSW\n\t\tDXCH\tZ\t\t# WILL CONVEY THIS INFORMATION.\n\nXNBPIPAD\tECADR\tXNBPIP\n\n\t\tBANK\t32\n\t\tSETLOC\tSERV2\n\t\tBANK\n\t\tCOUNT*\t$$/SERV\n\nAVGEND\t\tCA\tPIPTIME +1\t# FINAL AVERAGE G EXIT\n\t\tTS\t1/PIPADT\t# SET UP FREE FALL GYRO COMPENSATION.\n\n\t\tTC\tUPFLAG\t\t# SET DRIFT FLAG.\n\t\tADRES\tDRIFTFLG\n\n\t\tTC\tBANKCALL\n\t\tCADR\tPIPFREE\n\n\t\tCS\tBIT9\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\n\n\t\tTC\t2PHSCHNG\n\t\tOCT\t5\t\t# GROUP 5 OFF\n\t\tOCT\t05022\t\t# GROUP 2 ON\n\t\tOCT\t20000\n\n\t\tTC\tINTPRET\n\t\tSET\tCLEAR\n\t\t\tNOR29FLG\t# SHUT OFF R29 WHEN SERVICER ENDS.\n\t\t\tSWANDISP\t# SHUT OFF R10 WHEN SERVICER ENDS.\n\t\tCLEAR\tCALL\t\t# RESET MUNFLAG.\n\t\t\tMUNFLAG\n# Page 864\n\t\t\tAVETOMID\n\t\tCLEAR\tEXIT\n\t\t\tV37FLAG\nAVERTRN\t\tCA\tOUTROUTE\t# RETURN TO DESIRED POINT.\n\t\tTC\tBANKJUMP\n\nOUTGOAVE\t=\tAVERTRN\nDVCNTR1\t\t=\tMASS1\n\n# Page 865\n\t\tSETLOC\tSERV3\n\t\tBANK\n\t\tCOUNT*\t$$/SERV\n\nSERVIDLE\tEXTEND\t\t\t# DISCONNECT SERVICER FROM ALL GUIDANCE\n\t\tDCA\tSVEXTADR\n\t\tDXCH\tAVGEXIT\n\n\t\tCS\tFLAGWRD7\t# DISCONNECT THE DELTA-V MONITOR\n\t\tMASK\tIDLEFBIT\n\t\tADS\tFLAGWRD7\n\n\t\tCAF\tLRBYBIT\t\t# TERMINATE R12 IS RUNNING.\n\t\tTS\tFLGWRD11\n\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE1\n\n\t\tCA\tFLAGWRD6\t# DO NOT TURN OFF PHASE 2 IF MUNFLAG SET.\n\t\tMASK\tMUNFLBIT\n\t\tCCS\tA\n\t\tTCF\t+4\n\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE2\n\n +4\t\tEXTEND\n \t\tDCA\tNEG0\n\t\tDXCH\t-PHASE3\n\n\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE6\n\n\t\tCAF\tOCT33\t\t# 4.33SPOT FOR GOP00FIX\n\t\tTS\tL\n\t\tCOM\n\t\tDXCH\t-PHASE4\n\n\t\tTCF\tWHIMPER\t\t# PERFORM A SOFTWARE RESTART AND PROCEED\n\t\t\t\t\t# TO GOTOPOOH WHILE SERVICER CONTINUES TO\n\t\t\t\t\t# RUN, ALBEIT IN A GROUND STATE WHERE\n\t\t\t\t\t# ONLY STATE-VECTOR DEPENDENT FUNCTIONS\n\t\t\t\t\t# ARE MAINTAINED.\n\n\t\tEBANK=\tDVCNTR\n# Page 866\nSVEXTADR\t2CADR\tSERVEXIT\n\n\t\tBANK\t32\n\t\tSETLOC\tSERV\n\t\tBANK\n\t\tCOUNT*\t$$/SERV\n\nSERVEXIT\tTC\tPHASCHNG\n\t\tOCT\t00035\n\n+2\t\tTCF\tENDOFJOB\n\n\t\tBANK\t23\n\t\tSETLOC\tNORMLIZ\n\t\tBANK\n\n\t\tCOUNT*\t$$/SERV\n\n# Page 867\nNORMLIZE\tTC\tINTPRET\n\t\tVLOAD\tBOFF\n\t\t\tRN1\n\t\t\tMUNFLAG\n\t\t\tNORMLIZ1\n\t\tVSL6\tMXV\n\t\t\tREFSMMAT\n\t\tSTCALL\tR\n\t\t\tMUNGRAV\n\t\tVLOAD\tVSL1\n\t\t\tVN1\n\t\tMXV\n\t\t\tREFSMMAT\n\t\tSTOVL\tV\n\t\t\tV(CSM)\n\t\tVXV\tUNIT\n\t\t\tR(CSM)\n\t\tSTORE\tUHYP\nASCSPOT\t\tEXIT\n\t\tEXTEND\t\t\t# MAKE SURE GROUP 2 IS OFF\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE2\n\n\t\tTC\tPOSTJUMP\n\t\tCADR\tNORMLIZ2\n\n\t\tBANK\t33\n\t\tSETLOC\tSERVICES\n\t\tBANK\n\t\tCOUNT*\t$$/SERV\n\nNORMLIZ1\tCALL\n\t\t\tCALCGRAV\n\t\tEXIT\n\nNORMLIZ2\tCA\tEIGHTEEN\n\t\tTC\tCOPYCYC +1\t# DO NOT COPY MASS IN NORMLIZE\n\t\tTC\tENDOFJOB\n\nCOPYCYC\t\tCA\tOCT24\t\t# DEC 20\n +1\t\tINHINT\n +2\t\tMASK\tNEG1\t\t# REDUCE BY 1 IF ODD\n \t\tTS\tITEMP1\n\t\tEXTEND\n\t\tINDEX\tITEMP1\n\t\tDCA\tRN1\n\t\tINDEX\tITEMP1\n# Page 868\n\t\tDXCH\tRN\n\t\tCCS\tITEMP1\n\t\tTCF\tCOPYCYC +2\n\t\tTC\tQ\t\t# RETURN UNDER INHINT\n\nEIGHTEEN\tDEC\t18\n\n# Page 869\n# ************* PIPA READER *****************\n# MOD NO. 00 BY D. LICKLY, DEC. 9 1966\n#\n# FUNCTIONAL DESCRIPTION\n#\tSUBROUTINE TO READ PIPA COUNTERS, TRYING TO BE VERY CAREFUL SO THAT WILL BE RESTARTABLE.\n#\tPIPA READINGS ARE STORED IN THE VECTOR DELV.  THE HIGH ORDER PART OF EACH COMPONENT CONTAINS THE PIPA READING,\n# \tRESTARTS BEGIN AT REREADAC.\n#\n#\tAT THE END OF THE PIPA READER THE CDUS ARE READ AND STORED AS A\n#\tVECTOR IN CDUTEMP.  THE HIGH ORDER PART OF EACH COMPONENT CONTAINS\n# \tTHE CDU READING IN 25 COMP IN THE ORDER CDUX,Y,Z.  THE THRUST\n#\tVECTOR ESTIMATOR IN FINDCDUD REQUIRES THE CDUS BE READ AT PIPTIME.\n#\n# CALLING SEQUENCE AND EXIT\n#\tCALL VIA TC, ISWCALL, ETC.\n#\tEXIT IS VIA Q.\n#\n# INPUT\n#\tINPUT IS THROUGH THE COUNTERS PIPAX, PIPAY, PIPAZ, AND TIME2.\n#\n# OUTPUT\n#\tHIGH ORDER COMPONENTS OF THE VECTOR DELV CONTAIN THE PIPA READINGS.\n#\tPIPTIME CONTAINS TIME OF PIPA READING.\n#\n# DEBRIS (ERASABLE LOCATIONS DESTROYED BY PROGRAM)\n#\tTEMX, TEMY, TEMZ, PIPAGE\n\n\t\tBANK\t37\n\t\tSETLOC\tSERV1\n\t\tBANK\n\n\t\tCOUNT*\t$$/SERV\n\nPIPASR\t\tEXTEND\n# Page 870\n\t\tDCA\tTIME2\n\t\tDXCH\tPIPTIME1\t# CURRENT TIME POSITIVE VALUE\n +3\t\tCS\tZERO\t\t# INITIALIZE THESE AT NEG. ZERO.\n \t\tTS\tTEMX\n\t\tTS\tTEMY\n\t\tTS\tTEMZ\n\n\t\tCA\tZERO\n\t\tTS\tDELVZ\n\t\tTS\tDELVZ +1\n\t\tTS\tDELVY\n\t\tTS\tDELVY +1\n\t\tTS\tDELVX +1\n\t\tTS\tPIPAGE\t\t# SHOW PIPA READING IN PROGRESS\n\nREPIP1\t\tEXTEND\n\t\tDCS\tPIPAX\t\t# X AND Y PIPS READ\n\t\tDXCH\tTEMX\n\t\tDXCH\tPIPAX\t\t# PIPAS SET TO NEG ZERO AS READ.\n\t\tTS\tDELVX\n\t\tLXCH\tDELVY\n\nREPIP3\t\tCS\tPIPAZ\t\t# REPEAT PROCESS FOR Z PIP\n\t\tXCH\tTEMZ\n\t\tXCH\tPIPAZ\nDODELVZ\t\tTS\tDELVZ\n\nREPIP4\t\tEXTEND\t\t\t# COMPUTE GUIDANCE PERIOD\n\t\tDCA\tPIPTIME1\n\t\tDXCH\tPGUIDE\n\t\tEXTEND\n\t\tDCS\tPIPTIME\n\t\tDAS\tPGUIDE\n\n\t\tCA\tCDUX\t\t# READ CDUS INTO HIGH ORDER CDUTEMPS\n\t\tTS\tCDUTEMPX\n\t\tCA\tCDUY\n\t\tTS\tCDUTEMPY\n\t\tCA\tCDUZ\n\t\tTS\tCDUTEMPZ\n\t\tCA\tDELVX\n\t\tTS\tPIPATMPX\n\t\tCA\tDELVY\n\t\tTS\tPIPATMPY\n\t\tCA\tDELVZ\n\t\tTS\tPIPATMPZ\n\n\t\tTC\tQ\n\n# Page 871\nREREADAC\tCCS\tPIPAGE\n\t\tTCF\tREADACCS\t# PIP READING NOT STARTED.  GO TO BEGINNING\n\n\t\tCAF\tDONEADR\t\t# SET UP RETURN FROM PIPASR\n\t\tTS\tQ\n\n\t\tCCS\tDELVZ\n\t\tTCF\tREPIP4\t\t# Z DONE, GO DO CDUS\n\t\tTCF\t+3\t\t# Z NOT DONE, CHECK Y.\n\t\tTCF\tREPIP4\n\t\tTCF\tREPIP4\n\n\t\tZL\n\t\tCCS\tDELVY\n\t\tTCF\t+3\n\t\tTCF\tCHKTEMX\t\t# Y NOT DONE, CHECK X.\n\t\tTCF\t+1\n\t\tLXCH\tPIPAZ\t\t# Y DONE, ZERO Z PIP.\n\n\t\tCCS\tTEMZ\n\t\tCS\tTEMZ\t\t# TEMZ NOT = -0, CONTAINS -PIPAZ VALUE.\n\t\tTCF\tDODELVZ\n\t\tTCF\t-2\n\t\tLXCH\tDELVZ\t\t# TEMZ = -0, L HAS ZPIP VALUE.\n\t\tTCF\tREPIP4\n\nCHKTEMX\t\tCCS\tTEMX\t\t# HAS THIS CHANGED\n\t\tCS\tTEMX\t\t# YES\n\t\tTCF\t+3\t\t# YES\n\t\tTCF\t-2\t\t# YES\n\t\tTCF\tREPIP1\t\t# NO\n\t\tTS\tDELVX\n\n\t\tCS\tTEMY\n\t\tTS\tDELVY\n\n\t\tCS\tZERO\t\t# ZERO X AND Y PIPS\n\t\tDXCH\tPIPAX\t\t# L STILL ZERO FROM ABOVE\n\n\t\tTCF\tREPIP3\n\nDONEADR\t\tGENADR\tPIPSDONE\n\n# Page 872\n\t\tBANK\t33\n\t\tSETLOC\tSERVICES\n\t\tBANK\n\n\t\tCOUNT*\t$$/SERV\n\nTMPTOSPT\tCA\tCDUTEMPY\t# THIS SUBROUTINE, CALLED BY AN RTB FROM\n\t\tTS\tCDUSPOTY\t# INTERPRETIVE, LOADS THE CDUS CORRESPON-\n\t\tCA\tCDUTEMPZ\t# DING TO PIPTIME INTO THE CDUSPOT VECTOR.\n\t\tTS\tCDUSPOTZ\n\t\tCA\tCDUTEMPX\n\t\tTS\tCDUSPOTX\n\t\tTC \tQ\n\n# LRHTASK IS A WAITLIST TASK SET BY READACCS DURING THE DESCENT BRAKING\n# PHASE WHEN THE ALT TO THE LUNAR SURFACE IS LESS THAN 25,000 FT.  THIS\n# TASK CLEARS THE ALTITUDE MEASUREMENT MADE DISCRETE AND INITIATES THE\n# LANDING RADAR MEASUREMENT JOB (LRHJOB) TO TAKE A ALTITUDE MEASUREMENT\n# 50 MS PRIOR TO THE NEXT READACCS TASK.\n\n\t\tBANK\t21\n\t\tSETLOC\tR10\n\t\tBANK\n\n\t\tCOUNT*\t$$/SERV\n\nLRHTASK\t\tCS\tFLGWRD11\n\t\tMASK\tLRBYBIT\n\t\tEXTEND\n\t\tBZF\tGRP2OFF\t\t# LR BYPASS SET -- BYPASS ALL LR READING.\n\n\t\tCA\tREADLBIT\n\t\tMASK\tFLGWRD11\t# IS READLR FLAG SET?\n\t\tEXTEND\n\t\tBZF\tGRP2OFF\t\t# NO.  BYPASS LR READ.\n\n\t\tCS\tFLGWRD11\n\t\tMASK\tNOLRRBIT\t# IS LR READ INHIBITED?\n\t\tEXTEND\n\t\tBZF\tGRP2OFF\t\t# YES.  BYPASS LR READ.\n\n\t\tCA\tPRIO32\t\t# LR READ OK.  SET JOB TO DO IT\n\t\tTC\tNOVAC\t\t# ABOUT 50 MS. PRIOR TO PIPA READ.\n\t\tEBANK=\tHMEAS\n\t\t2CADR\tLRHJOB\n\nGRP2OFF\t\tEXTEND\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE2\n\t\tTCF\tR10,R11A\n\n\t\tBANK\t33\n\t\tSETLOC\tSERVICES\n\t\tBANK\n# Page 873\n\t\tCOUNT*\t$$/SERV\n\n# HIGATASK IS ENTERED APPROXIMATELY 6 SECS PRIOR TO HIGATE DURING THE\n# DESCENT PHASE.  HIGATASK SETS THE HIGATE FLAG (BIT11) AND THE LR INHIBIT\n# FLAG (BIT10) IN LRSTAT.  THE HIGATJOB IS SET UP TO REPOSITION THE LR\n# ANTENNA FROM POSITION 1 TO POSITION 2.  IF THE REPOSITIONING IS\n# SUCCESSFUL THE ALT BEAM AND VELOCITY BEAMS ARE TRANSFORMED TO THE NEW\n# ORIENTATION IN NB COORDINATES AND STORED IN ERASABLE.\n\nHIGATASK\tINHINT\n\t\tCS\tPRIO3\t\t# SET HIGATE AND LR INHIBIT FLAGS\n\t\tMASK\tFLGWRD11\n\t\tAD\tPRIO3\n\t\tTS\tFLGWRD11\n\t\tCAF\tPRIO32\n\t\tTC\tFINDVAC\t\t# SET LR POSITIONING JOB (POS2)\n\t\tEBANK=\tHMEAS\n\t\t2CADR\tHIGATJOB\n\n\t\tTCF\tCONTSERV\t# CONTINUE SERVICER\n\n# Page 874\n# MUNRETRN IS THE RETURN LOC FROM SPECIAL AVE G ROUTINE (MUNRVG)\n\nMUNRETRN\tEXIT\n\n\t\tCS\tFLGWRD11\n\t\tMASK\tLRBYBIT\n\t\tEXTEND\n\t\tBZF\tCOPYCYC1\t# BYPASS LR LOGIC IF BIT15 IS SET.\n\n\t\tCA\tREADLBIT\t# SEE IF ALT < 35000 FT LAST CYCLE\n\t\tMASK\tFLGWRD11\n\t\tEXTEND\n\t\tBZF\t35KCHK\t\t# ALT WAS > 35000 FT LAST CYCLE   CHK NOW\n\n\t\tCAF\tXORFLBIT\t# WERE WE BELOW 30000 FT LAST PASS?\n\t\tMASK\tFLGWRD11\n\t\tEXTEND\n\t\tBZF\tXORCHK\t\t# NO -- TEST THIS PASS\nHITEST\t\tCAF\tPSTHIBIT\t# CHECK FOR HIGATE\n\t\tMASK\tFLGWRD11\n\t\tEXTEND\n\t\tBZF\tHIGATCHK\t# NOT AT HIGATE LAST CYCLE -- CHK THIS CYCLE\n\nPOS2CHK\t\tCAF\tBIT7\t\t# VERIFY LR IN POS2\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tEXTEND\n\t\tBZF\tUPDATCHK\t# IT IS -- CHECK FOR LR UPDATE\n\t\tCAF\tBIT13\n\t\tEXTEND\n\t\tRAND\tCHAN12\n\t\tEXTEND\n\t\tBZF\tLRPOSALM\t# LR NOT IN POS2 OR REPOSITIONING -- BAD\n\t\tTCF\tCONTSERV\t# LR BEING REPOSITIONED -- CONTINUE SERV\n\nHIGATCHK\tCA\tTTF/8\t\t# IS TTF > CRITERION?  (TTF IS NEGATIVE)\n\t\tAD\tRPCRTIME\n\t\tEXTEND\n\t\tBZMF\tPOS1CHK\t\t# NO\n\n\t\tCA\tEBANK4\t\t# MUST SWITCH EBANKS\n\t\tXCH\tEBANK\n\t\tTS\tL\t\t# SAVE IN L\n\n\t\tEBANK=\tXNBPIP\n\t\tCS\tXNBPIP\t\t# UXBXP IN GSOP CH5\n\t\tEBANK=\tDVCNTR\n\t\tLXCH\tEBANK\t\t# RESTORE EBANK\n\t\tAD\tRPCRTQSW\t# QSW - UXBXP\n# Page 875\n\n\t\tEXTEND\n\t\tBZMF\tHIGATASK\t# IF UXBXP > QSW, THEN REPOSITION\n\nPOS1CHK\t\tCAF\tBIT6\t\t# HIGATE NOT IN SIGHT -- DO POS1 CHK\n\t\tEXTEND\n\t\tRAND\t33\n\t\tEXTEND\n\t\tBZF\tUPDATCHK\t# LR IN POS1 -- CHECK FOR LR UPDATE\n\nLRPOSALM\tTC\tALARM\t\t# LR NOT IN PROPER POS-ALARM-BYPASS UPDATE\n\t\tOCT\t511\t\t# AND CONTINUE SERVICER\nCONTSERV\tINHINT\n\t\tCS\tBITS4-7\n\t\tMASK\tFLGWRD11\t# CLEAR LR MEASUREMENT MADE DISCRETES.\n\t\tTS\tFLGWRD11\n\n\t\tTC\tIBNKCALL\t# SET LR LITES PROPERLY\n\t\tCADR\tR12LITES\n\n# Page 876\nCOPYCYC1\tTC\tQUIKFAZ5\n\nR29?\t\tCA\tFLAGWRD3\n\t\tMASK\tNR29&RDR\n\t\tCCS\tA\t\t# IS NOR29FLG OR READRFLG SET?\n\t\tTCF\tR29NODES\t# YES, SO DON'T DESIGNATE.\n\n\t\tCA\tRADMODES\t# NO, SO R29 IS CALLED FOR.\n\t\tMASK\tOCT10002\t# IS THE RR NOT ZEROING ITS CDUS, AND\n\t\tCCS\tA\t\t# IS THE RENDEZVOUS RADAR IN AUTO MODE?\n\t\tTCF\tR29NODES\t# NO, SO DON'T DESIGNATE.\n\n\t\tCA\tRADMODES\n\t\tMASK\tPRIO22\n\t\tCCS\tA\t\t# IS RR REPOSITIONING OR REMODING?\n\t\tTCF\tNOR29NOW\t# YES:  COME BACK IN 2 SECONDS & TRY AGAIN.\n\n\t\tTCF\tR29\n\nR29NODES\tINHINT\t\t\t# R29 NOT ALLOWED THIS CYCLE.\n\t\tCS\tDESIGBIT\t# SHOW THAT DESIGNATION IS OFF.\n\t\tMASK\tRADMODES\n\t\tTS\tRADMODES\n\nNOR29NOW \tTC\tINTPRET\t\t# INTPRET DOES A RELINT.\n\t\tVLOAD\tABVAL\t\t# MPAC = ABVAL( NEW SM. POSITION VECTOR )\n\t\t\tR1S\n\t\tPUSH\tDSU\t\t# \t\t\t\t(2)\n\t\t\t/LAND/\n\t\tSTORE\tHCALC\t\t# NEW HCALC*2(24)M.\n\t\tSTORE\tHCALC1\n\t\tDMPR\tRTB\n\t\t\tALTCONV\n\t\t\tSGNAGREE\n\t\tSTOVL\tALTBITS\t\t# ALTITUDE FOR R10 IN BIT UNITS.\n\t\t\tUNIT/R/\n\t\tVXV\tUNIT\n\t\t\tUHYP\n\t\tSTOVL\tUHZP\t\t# DOWNRANGE HALF-UNIT VECTOR FOR R10.\n\t\t\tR1S\n\t\tVXM\tVSR4\n\t\t\tREFSMMAT\n\t\tSTOVL\tRN1\t\t# TEMP. REF. POSITION VECTOR*2(29)M.\n\t\t\tV1S\n\t\tVXM\tVSL1\n\t\t\tREFSMMAT\n\t\tSTOVL\tVN1\t\t# TEMP. REF. VELOCITY VECTOR 2(7) M/CS.\n\t\t\tUNIT/R/\n\t\tVXV\tABVAL\n# Page 877\n\t\t\tV1S\n\t\tSL1\tDSQ\n\t\tDDV\n\t\tDMPR\tRTB\n\t\t\tARCONV1\n\t\t\tSGNAGREE\nCOPYCYC2\tEXIT\t\t\t# LEAVE ALTITUDE RATE COMPENSATION IN MPAC\n\t\tINHINT\n\t\tCA\tUNIT/R/\t\t# UPDATE RUNIT FOR R10.\n\t\tTS\tRUNIT\n\t\tCA\tUNIT/R/ +2\n\t\tTS\tRUNIT +1\n\t\tCA\tUNIT/R/ +4\n\t\tTS\tRUNIT +2\n\t\tCA\tMPAC\t\t# LOAD NEW DALTRATE FOR R10.\n\t\tTS\tDALTRATE\n\n\t\tEXTEND\n\t\tDCA\tR1S\n\t\tDXCH\tR\n\t\tEXTEND\n\t\tDCA\tR1S +2\n\t\tDXCH\tR +2\n\t\tEXTEND\n\t\tDCA\tR1S +4\n\t\tDXCH\tR +4\n\t\tEXTEND\n\t\tDCA\tV1S\n\t\tDXCH\tV\n\t\tEXTEND\n\t\tDCA\tV1S +2\n\t\tDXCH\tV +2\n\t\tEXTEND\n\t\tDCA\tV1S +4\n\t\tDXCH\tV +4\n\n\t\tTCF\tCOPYCYCL\t# COMPLETE THE COPYCYCL.\n\n# Page 878\n# ALTCHK COMPARES CURRENT ALTITUDE (IN HCALC) WITH A SPECIFIED ALTITUDE FROM A TABLE BEGINNING AT ALTCRIT.\n# ITS CALLING SEQUENCE IS AS FOLLOWS:-\n#\n#\tL\tCAF\tN\n#\tL+1\tTC\tBANKCALL\n#\tL+2\tCADR\tALTCHK\n#\tL+3\tRETURN HERE IF HCALC STILL > SPECIFIED CRITERION.   C(L) = +0.\n#\tL+4\tRETURN HERE IF HCALC < OR = SPECIFIED CRITERION.   C(A) = C(L) = +0\n#\n# ALTCHK MUST BE BANKCALLED EVEN FROM ITS OWN BANK.   N IS THE LOCATION, RELATIVE TO THE TAG ALTCRIT,\n# OF THE BEGINNING OF THE DP CONSTANT TO BE USED AS A CRITERION.\n\nALTCHK\t\tEXTEND\n\t\tINDEX\tA\n\t\tDCA\tALTCRIT\n\t\tDXCH\tMPAC +1\n\t\tEXTEND\n\t\tDCS\tHCALC\n\t\tDAS\tMPAC +1\n\t\tTC\tBRANCH +4\n\t\tCAF\tZERO\t\t# BETTER THAN A NOOP, PERHAPS\n\t\tINCR\tBUF2\n\t\tTCF\tSWRETURN\n\nALTCRIT\t\t=\t25KFT\n\n25KFT\t\t2DEC\t7620 B-24  \t\t# (0)\n\n50KFT\t\t2DEC\t15240 B-24\t\t# (2)\n\n50FT\t\t2DEC\t15.24 B-24\t\t# (4)\n\n30KFT\t\t2DEC\t9144 B-24\t\t# (6)\n\n2KFT/SEC\tDEC\t6.096 B-7\t\t# 2000 FT/SEC AT 2(7) M/CS\n\n\n# (A remark was likely to be needed here to explain XORCHK) 4/Jun/09,FB\n\nXORCHK\t\tCAF\tSIX\t\t# ARE WE BELOW 30000 FT?\n\t\tTC\tBANKCALL\n\t\tCADR\tALTCHK\n\t\tTCF\tHITEST\t\t# CONTINUE LR UPDATE\n\t\tTC\tUPFLAG\t\t# YES: INHIBIT X-AXIS OVERRIDE\n\t\tADRES\tXOVINFLG\n\t\tTC\tUPFLAG\n\t\tADRES\tXORFLG\n\t\tTCF\tHITEST\t\t# CONTINUE LR UPDATE\n\n35KCHK\t\tCAF\tTWO\t\t# ARE WE BELOW 35000 FT?\n\n# Page 879\n\t\tTC\tBANKCALL\n\t\tCADR\tALTCHK\n\t\tTCF\tCONTSERV\n\t\tTC\tUPFLAG\n\t\tADRES\tREADLR\t\t# SET READLR FLAG TO ENABLE LR READING.\n\t\tTCF\tCONTSERV\n\n# Page 880\n# ***************************************************************\n\nCALCGRAV\tUNIT\tPUSH\t\t# SAVE UNIT/R/ IN PUSHLIST\t(18)\n\t\tSTORE \tUNIT/R/\n\t\tLXC,1\tSLOAD\t\t# RTX2 = 0 IF EARTH ORBIT, =2 IF LUNAR.\n\t\t\tRTX2\n\t\t\tRTX2\n\t\tDCOMP\tBMN\n\t\t\tCALCGRV1\n\t\tVLOAD\tDOT\t\t#\t\t\t\t(12)\n\t\t\tUNITZ\n\t\t\tUNIT/R/\n\t\tSL1\tPUSH\t\t#\t\t\t\t(14)\n\t\tDSQ\tBDSU\n\t\t\tDP1/20\n\t\tPDDL\tDDV\n\t\t\tRESQ\n\t\t\t34D\t\t# (RN)SQ\n\t\tSTORE\t32D\t\t# TEMP FOR (RE/RN)SQ\n\t\tDMP\tDMP\n\t\t\t20J\n\t\tVXSC\tPDDL\n\t\t\tUNIT/R/\n\t\tDMP\tDMP\n\t\t\t2J\n\t\t\t32D\n\t\tVXSC\tVSL1\n\t\t\tUNITZ\n\t\tVAD\tSTADR\n\t\tSTORE\tUNITGOBL\n\t\tVAD\tPUSH\t\t# MPAC = UNIT GRAVITY VECTOR.\t(18)\nCALCGRV1\tDLOAD\tNORM\t\t# PERFORM A NORMALIZATION ON RMAGSQ IN\n\t\t\t34D\t\t# ORDER TO BE ABLE TO SCALE THE MU FOR\n\t\t\tX2\t\t# MAXIMUM PRECISION.\n\t\tBDDV*\tSLR*\n\t\t\t-MUDT,1\n\t\t\t0 -21D,2\n\t\tVXSC\tSTADR\n\t\tSTORE\tGDT1/2\t\t# SCALED AT 2(+7) M/CS\n\t\tRVQ\n\nCALCRVG\t\tVLOAD\tVXM\n\t\t\tDELV\n\t\t\tREFSMMAT\n\t\tVXSC\tVSL1\n\t\t\tKPIP1\n\t\tSTORE\tDELVREF\n\t\tVSR1\tPUSH\n\t\tVAD\tPUSH\t\t# (DV-OLDGDT)/2 TO PD SCALED AT 2(+7) M/CS.\n# Page 881\n\t\t\tGDT/2\n\t\tVAD\tPDDL\n\t\t\tVN\n\t\t\tPGUIDE\n\t\tSL\tVXSC\n\t\t\t6D\n\t\tVAD\tSTQ\n\t\t\tRN\n\t\t\t31D\n\t\tSTCALL\tRN1\t\t# TEMP STORAGE OF RN SCALED 2(+29) M\n\t\t\tCALCGRAV\n\n\t\tVAD\tVAD\n\t\tVAD\n\t\t\tVN\n\t\tSTCALL\tVN1\t\t# TEMP STORAGE OF VN SCALED 2(+7) M/CS\n\t\t\t31D\n\nDP1/20\t\t2DEC\t0.05\nSHIFT11\t\t2DEC\t1 B-11\n\n# Page 882\n#*****************************************************************************\n# MUNRVG IS A SPECIAL AVERAGE G INTEGRATION ROUTINE USED BY THRUSTING\n# PROGRAMS WHICH FUNCTION IN THE VICINITY OF AN ASSUMED SPHERICAL MOON.\n# THE INPUT AND OUTPUT QUANTITIES ARE REFERENCED TO THE STABLE MEMBER\n# COORDINATE SYSTEM.\n\nRVBOTH\t\tVLOAD\tPUSH\n\t\t\tG(CSM)\n\t\tVAD\tPDDL\n\t\t\tV(CSM)\n\t\t\tPGUIDE\n\t\tDDV\tVXSC\n\t\t\tSHIFT11\n\t\tVAD\n\t\t\tR(CSM)\n\t\tSTCALL\tR1S\n\t\t\tMUNGRAV\n\t\tVAD\tVAD\n\t\t\tV(CSM)\n\t\tSTADR\n\t\tSTORE\tV1S\n\t\tEXIT\n\t\tTC\tQUIKFAZ5\n\t\tTC\tINTPRET\n\t\tVLOAD\n\t\t\tGDT1/2\n\t\tSTOVL\tG(CSM)\n\t\t\tR1S\n\t\tSTOVL\tR(CSM)\n\t\t\tV1S\n\t\tSTORE\tV(CSM)\n\t\tEXIT\n\t\tTC\tQUIKFAZ5\n\t\tTC\tINTPRET\nMUNRVG\t\tVLOAD\tVXSC\n\t\t\tDELV\n\t\t\tKPIP2\n\t\tPUSH\tVAD\t\t# 1ST PUSH:  DELV IN UNITS OF 2(8) M/CS\n\t\t\tGDT/2\n\t\tPUSH\tVAD\t\t# 2ND PUSH:  (DELV + GDT)/2, UNITS OF 2(7)\n\t\t\tV\t\t#\t\t\t\t(12)\n\t\tPDDL\tDDV\n\t\t\tPGUIDE\n\t\t\tSHIFT11\n\t\tVXSC\n\t\tVAD\n\t\t\tR\n\t\tSTCALL\tR1S\t\t# STORE R SCALED AT 2(+24) M\n\t\t\tMUNGRAV\n# Page 883\n\t\tVAD\tVAD\n\t\tVAD\n\t\t\tV\n\t\tSTORE\tV1S\t\t# STORE V SCALED AT 2(+7) M/CS.\n\t\tABVAL\n\t\tSTOVL\tABVEL\t\t# STORE SPEED FOR LR AND DISPLAYS.\n\t\t\tUNIT/R/\n\t\tDOT\tSL1\n\t\t\tV1S\n\t\tSTOVL\tHDOTDISP\t# HDOT = V. UNIT(R)*2(7) M/CS.\n\t\t\tR1S\n\t\tVXV\tVSL2\n\t\t\tWM\n\t\tSTODL\tDELVS\t\t# LUNAR ROTATION CORRECTION TERM*2(5) M/CS.\n\t\t\t36D\n\t\tDSU\n\t\t\t/LAND/\n\t\tSTCALL\tHCALC\t\t# FOR NOW, DISPLAY WHETHER POS OR NEG\n\t\t\tMUNRETRN\nMUNGRAV\t\tUNIT\t\t\t# AT 36D HAVE ABVAL(R), AT 34D R.R\n\t\tSTODL\tUNIT/R/\n\t\t\t34D\n\t\tSL\tBDDV\n\t\t\t6D\n\t\t\t-MUDTMUN\n\t\tDMP\tVXSC\n\t\t\tSHIFT11\n\t\t\tUNIT/R/\n\t\tSTORE\tGDT1/2\t\t# 1/2GDT SCALED AT 2(7) M/CS.\n\t\tRVQ\n\n1.95SECS\tDEC\t195\n7.5\t\t2DEC\t.02286 B-6\t# 7.5 FT/SEC AT 2(6) M/CS\n\n2SEC(18)\t2DEC\t200 B-18\n\n2SEC(28)\t2OCT\t0000000310\t# 2SEC AT 2(28)\n\n4SEC(28)\t2DEC\t400 B-28\n\nBITS4-7\t\tOCT\t110\n\n\n# Page 884\nUPDATCHK\tCAF\tNOLRRBIT\t# SEE IF LR UPDATE INHIBITED.\n\t\tMASK\tFLGWRD11\n\t\tCCS\tA\n\t\tTCF\tCONTSERV\t# IT IS -- NO LR UPDATE\n\t\tCAF\tRNGEDBIT\t# NO INHIBIT -- SEE ALT MEAS. THIS CYCLE.\n\t\tMASK\tFLGWRD11\n\t\tEXTEND\n\t\tBZF\tVMEASCHK\t# NO ALT MEAS THIS CYCLE -- CHECK FOR VEL\n\nPOSUPDAT\tCA\tFIXLOC\t\t# SET PUSHLIST TO ZERO\n\t\tTS\tPUSHLOC\n\n\t\tTC\tINTPRET\n\t\tVLOAD\tVXM\n\t\t\tHBEAMNB\n\t\t\tXNBPIP\t\t# HBEAM SM AT 2(2)\n\t\tPDVL\tVSL2\t\t# STORE HBEAM IN PD 0-5\n\t\t\tV1S\t\t# SCALE V AT 2(5) M/CS\n\t\tVAD\tDOT\n\t\t\tDELVS\t\t# V RELATIVE TO SURFACE AT 2(5) M/CS\n\t\t\t0D\t\t# V ALONG HBEAM AT 2(7) M/CS.\n\t\tDMP\tEXIT\n\t\t\tRADSKAL\t\t# SCALE TO RADAR COUNTS X 5\n\n\t\tCS\tFLGWRD12\t# TEST LR ALTITUDE SCALE FACTOR\n\t\tMASK\tALTSCBIT\n\t\tEXTEND\n\t\tBZF\t+3\t\t# BRANCH IF HIGH SCALE\n\n\t\tCA\tSKALSKAL\t# RESCALE IF LOW SCALE\n\t\tTC\tSHORTMP\n\n \t+3\tTC\tINTPRET\n \t\tDAD\tSL\t\t# CORRECT HMEAS FOR DOPPLER EFFECT\n\t\t\tHMEAS\n\t\t\t7D\n\t\tDMP\tVXSC\t\t# SLANT RANGE AT 2(21), PUSH UP FOR HBEAM\n\t\t\tHSCAL\t\t# SLANT RANGE VECTOR AT 2(23) M\n\t\tDOT\tDSU\n\t\t\tUNIT/R/\t\t# ALTITUDE AT 2(24) M\n\t\t\tHCALC\t\t# DELTA H AT 2(24) M\n\t\tSTORE\tDELTAH\n\t\tEXIT\n\n\t\tCA\tFLGWRD11\n\t\tMASK\tPSTHIBIT\n\t\tEXTEND\t\t\t# DO NOT PERFORM DATA REASONABLENESS TEST\n\t\tBZF\tNOREASON\t# UNTIL AFTER HIGATE\n# Page 885\n\t\tTC\tINTPRET\n\t\tABS\tDSU\n\t\t\tDELQFIX\t\t# ABS(DELTAH) - DQFIX\t50 FT NOM\n\t\tSL3\tDSU\t\t# SCALE TO 2(21)\n\t\t\tHCALC\t\t# ABS(DELTAH) - (50 + HCALC/8) AT 2(21)\n\t\tEXIT\n\n\t\tINCR\tLRLCTR\n\t\tTC\tBRANCH\n\t\tTCF\tHFAIL\t\t# DELTA H TOO LARGE\n\t\tTCF\tHFAIL\t\t# DELTA H TOO LARGE\n\t\tTC\tDOWNFLAG\t# TURN OFF ALT FAIL LAMP\n\t\tADRES\tHFLSHFLG\n\nNOREASON\tCS\tFLGWRD11\n\t\tMASK\tLRINHBIT\n\t\tCCS\tA\n\t\tTCF\tVMEASCHK\t# UPDATE INHIBITED -- TEST VELOCITY ANYWAY\n\n\t\tTC\tINTPRET\t\t# DO POSITION UPDATE\n\t\tDLOAD\tSR4\n\t\t\tHCALC\t\t# RESCALE H TO 2(28)M\n\t\tEXIT\n\t\tEXTEND\n\t\tDCA\tDELTAH\t\t# STORE DELTAH IN MPAC AND\n\t\tDXCH\tMPAC\t\t# BRING HCALC INTO A,L\n\t\tTC\tALSIGNAG\n\t\tEXTEND\t\t\t# IF HIGH PART OF HCALC IS NON-ZERO, THEN\n\t\tBZF\t+2\t\t# HCALC > HMAX,\n\t\tTCF\tVMEASCHK\t# SO UPDATE IS BYPASSED\n\t\tTS\tMPAC +2\t\t#\tFOR LATER SHORTMP\n\n\t\tCS\tL\t\t# -H AT 2(14) M\n\t\tAD\tLRHMAX\t\t# HMAX - H\n\t\tEXTEND\n\t\tBZMF\tVMEASCHK\t# IF H >HMAX, BYPASS UPDATE\n\t\tEXTEND\n\t\tMP\tLRWH\t\t# WH(HMAX - H)\n\t\tEXTEND\n\t\tDV\tLRHMAX\t\t# WH(1 - H/HMAX)\n\t\tTS\tMPTEMP\n\t\tTC\tSHORTMP2\t# DELTAH (WH)(1 - H/HMAX) IN MPAC\n\t\tTC\tINTPRET\t\t# MODE IS DP FROM ABOVE\n\t\tSL1\n\t\tVXSC\tVAD\n\t\t\tUNIT/R/\t\t# DELTAR = DH(WH)(1 - H/HMAX) UNIT/R/\n\t\t\tR1S\n\t\tSTCALL\tGNUR\n\t\t\tMUNGRAV\n\t\tEXIT\n# Page 886\n\t\tTC\tQUIKFAZ5\n\n\t\tCA\tZERO\nRUPDATED\tTC\tGNURVST\n\nVMEASCHK\tTC\tQUIKFAZ5\t# RESTART AT NEXT LOCATION\n\t\tCS\tFLGWRD11\n\t\tMASK\tVELDABIT\t# IS V READING AVAILABLE?\n\t\tCCS\tA\n\t\tTCF\tVALTCHK\t\t# NO:  SEE IF V READING TO BE TAKEN\n\nVELUPDAT\tCS\tVSELECT\t\t# PROCESS VELOCITY DATA\n\t\tTS\tL\n\t\tADS\tL\t\t# -2 VSELECT IN L\n\t\tAD\tL\n\t\tAD\tL\t\t# -6 VSELECT IN A\n\t\tINDEX\tFIXLOC\n\t\tDXCH\tX1\t\t# X1 = -6 VSELECT, X2 = -2 VSELECT\n\n\t\tCA\tEBANK4\n\t\tTS\tEBANK\n\t\tEBANK=\tLRXCDU\n\n\t\tCA\tLRYCDU\t\t# STORE LRCDUS IN CDUSPOTS\n\t\tTS\tCDUSPOT\n\t\tCA\tLRZCDU\n\t\tTS\tCDUSPOT +2\n\t\tCA\tLRXCDU\n\t\tTS\tCDUSPOT +4\n\n\t\tTC\tBANKCALL\n\t\tCADR\tQUICTRIG\t# GET SINES AND COSINES FOR NBSM\n\n\t\tCA\tFIXLOC\n\t\tTS\tPUSHLOC\t\t# SET PD TO ZERO\n\n\t\tTC\tINTPRET\n\t\tVLOAD*\tCALL\n\t\t\tVZBEAMNB,1\t# CONVERT VBEAM FROM NB TO SM\n\t\t\t*NBSM*\n\t\tPDDL\tSL\t\t# STORE IN PD 0-5\n\t\t\tVMEAS\t\t# LOAD VELOCITY MEASUREMENT\n\t\t\t12D\n\t\tDMP*\tPUSH\t\t# SCALE TO M/CS AT 2(6)\n\t\t\tVZSCAL,2\t# AND STORE IN PD 6-7\n\t\tEXIT\n\t\tCS\tONE\n\t\tTS\tMODE\t\t# CHANGE STORE MODE TO VECTOR\n\n\t\tCA\tPIPTEM\t\t# STORE DELV IN MPAC\n# Page 887\n\t\tZL\n\t\tDXCH\tMPAC\n\n\t\tCA\tPIPTEM +1\n\t\tZL\n\t\tDXCH\tMPAC +3\n\n\t\tCA\tPIPTEM +2\n\t\tZL\n\t\tDXCH\tMPAC +5\n\n\t\tCA\tEBANK7\n\t\tTS\tEBANK\t\t# RESTORE EBANK 7\n\t\tEBANK=\tDVCNTR\n\t\tTC\tINTPRET\n\t\tVXSC\tPDDL\n\t\t\tKPIP1\t\t# SCALE DELV TO 2(7) M/CS AND PUSH\n\t\t\tLRVTIME\t\t# TIME OF DELV AT 2(28) CS\n\t\tDSU\tDDV\n\t\t\tPIPTIME\t\t# TU - T(N-1)\n\t\t\t2SEC(28)\n\t\tVXSC\tVSL1\t\t# G(N-1)(TU - T(N-1))\n\t\t\tGDT/2\t\t# SCALED AT 2(7) M/CS\n\t\tVAD\tVAD\t\t# PUSH UP FOR DELV\n\t\t\tV\t\t# VU = V(N-1) + DELVU + G(N-1) DTU\n\t\tVSL2\tVAD\t\t# SCALE TO 2(5) M/CS AND SUBTRACT\n\t\t\tDELVS\t\t#\tMOON ROTATION.\n\t\tPUSH\tABVAL\t\t# STORE IN PD\n\t\tSR4\tDAD\t\t# ABS(VM)/8 + 7.5 AT 2(6)\n\t\t\t7.5\n\t\tSTOVL\t20D\t\t# STORE IN 20D AND PICK UP VM\n\t\tDOT\tBDSU\t\t# V(EST) AT 2(6)\n\t\t\t0\t\t# DELTAV = VMEAS - V(EST)\n\t\tPUSH\tABS\n\t\tDSU\tEXIT\t\t# ABS(DV) - (7.5 + ABS(VM)/8))\n\t\t\t20D\n\n\t\tINCR\tLRMCTR\n\t\tTC\tBRANCH\n\t\tTCF\tVFAIL\t\t# DELTA V TOO LARGE.\tALARM\n\t\tTCF\tVFAIL\t\t# DELTA V TOO LARGE.\tALARM\n\n\t\tTC\tDOWNFLAG\t# TURN OFF VEL FAIL LAMP\n\t\tADRES\tVFLSHFLG\n\n\t\tCA\tFLGWRD11\n\t\tMASK\tVXINHBIT\n\t\tEXTEND\n\t\tBZF\tVUPDAT\t\t# IF VX INHIBIT RESET, INCORPORATE DATA.\n# Page 888\n\t\tTC\tDOWNFLAG\n\t\tADRES\tVXINH\t\t# RESET VX INHIBIT\n\n\t\tCA\tVSELECT\n\t\tAD\tNEG2\t\t# IF VSELECT = 2 (X AXIS).\n\t\tEXTEND\t\t\t# BYPASS UPDATE\n\t\tBZF\tENDVDAT\n\nVUPDAT\t\tCS\tFLGWRD11\n\t\tMASK\tLRINHBIT\n\t\tCCS\tA\n\t\tTCF\tVALTCHK\t\t# UPDATE INHIBITED\n\n\t\tTS\tMPAC +1\n\n\t\tCA\tABVEL\t\t# STORE E7 ERASABLES NEEDED IN TEMPS\n\t\tTS\tABVEL*\n\t\tCA\tVSELECT\n\t\tTS\tVSELECT*\n\t\tCA\tEBANK5\n\t\tTS\tEBANK\t\t# CHANGE EBANKS\n\n\t\tEBANK=\tLRVF\n\t\tCS\tLRVF\n\t\tAD\tABVEL*\t\t# IF V < VF, USE WVF\n\t\tEXTEND\n\t\tBZMF\tUSEVF\n\n\t\tCS\tABVEL*\n\t\tAD\tLRVMAX\t\t# VMAX - V\n\t\tEXTEND\n\t\tBZMF\tWSTOR -1\t# IF V > VMAX, W = 0\n\n\t\tEXTEND\n\t\tINDEX\tVSELECT*\n\t\tMP\tLRWVZ\t\t# WV(VMAX - V)\n\n\t\tEXTEND\n\t\tDV\tLRVMAX\t\t# WV( 1 - V/VMAX )\n\t\tTCF\tWSTOR\n\nUSEVF\t\tINDEX\tVSELECT*\n\t\tCA\tLRWVFZ\t\t# USE APPROPRIATE CONSTANT WEIGHT\n\t\tTCF\tWSTOR\n\n -1\t\tCA\tZERO\nWSTOR\t\tTS\tMPAC\n\t\tCS\tBIT7\t\t# (=64D)\n\t\tAD\tMODREG\n\t\tEXTEND\n# Page 889\n\t\tBZMF\t+3\t\t# IF IN P65,P66,P67, USE ANOTHER CONSTANT\n\n\t\tCA\tLRWVFF\n\t\tTS\tMPAC\n\n +3\t\tCA\tEBANK7\n \t\tTS\tEBANK\t\t# CHANGE EBANKS\n\n\t\tEBANK=\tABVEL\n\t\tTC\tINTPRET\n\t\tDMP\tVXSC\t\t# W(DELTA V)(VBEAMSM) UP 6-7, 0-5\n\t\tVAD\n\t\t\tV1S\t\t# ADD WEIGHTED DELTA V TO VELOCITY\n\t\tSTORE\tGNUV\n\t\tEXIT\n\n\t\tTC\tQUIKFAZ5\t# DO NOT RE-UPDATE\n\n\t\tCA\tSIX\nVUPDATED\tTC\tGNURVST\t\t# STORE NEW VELOCITY VECTOR\nENDVDAT\t\t=\tVALTCHK\n\nVALTCHK\t\tTC\tQUIKFAZ5\t# DO NOT REPEAT ABOVE\n\n\t\tCAF\tREADVBIT\t# TEST READVEL TO SEE IF VELOCITY READING\n\t\tMASK\tFLGWRD11\t# IS DESIRED.\n\t\tCCS\tA\n\t\tTCF\tREADV\t\t# YES -- READ VELOCITY\n\t\tCS\tABVEL\t\t# NO -- SEE IF VELOCITY < 2000 FT/SEC\n\t\tAD\t2KFT/SEC\n\t\tEXTEND\n\t\tBZMF\tCONTSERV\t# V > 2000 FT/SEC  DO NOT READ VEL\n\n\t\tTC\tUPFLAG\t\t# V < 2000 FT/SEC  SET READVEL AND READ.\n\t\tADRES\tREADVEL\n\nREADV\t\tCAF\tPRIO32\t\t# SET UP JOB TO READ VELOCITY BEAMS.\n\t\tTC\tNOVAC\n\t\tEBANK=\tHMEAS\n\t\t2CADR\tLRVJOB\n\n\t\tTCF\tCONTSERV\t# CONTINUE WITH SERVICER\n\nGNURVST\t\tTS\tBUF\t\t# STORE GNUR (=GNUV) IN R1S OR V1S\n\t\tEXTEND\t\t\t# A = 0 FOR R, A = 6 FOR V\n\t\tDCA\tGNUR\n\t\tINDEX\tBUF\n\t\tDXCH\tR1S\n\t\tEXTEND\n# Page 890\n\t\tDCA\tGNUR +2\n\t\tINDEX\tBUF\n\t\tDXCH\tR1S +2\n\t\tEXTEND\n\t\tDCA\tGNUR +4\n\t\tINDEX\tBUF\n\t\tDXCH\tR1S +4\n\t\tTC\tQ\n\nQUIKFAZ5\tCA\tEBANK3\n\t\tXCH\tEBANK\t\t# SET EBANK 3\n\t\tDXCH\tL\t\t# Q TO A, A TO L\n\t\tEBANK=\tPHSNAME5\n\t\tTS\tPHSNAME5\n\t\tLXCH\tEBANK\n\t\tEBANK=\tDVCNTR\n\t\tTC\tA\n\nHFAIL\t\tCS\tLRRCTR\n\t\tEXTEND\n\t\tBZF\tNORLITE\t\t# IF R = 0, DO NOT TURN ON TRK FAIL\n\t\tAD\tLRLCTR\n\t\tMASK\tNEG3\n\t\tEXTEND\t\t\t# IF L-R LT 4, DO NOT TURN ON TRK FAIL\n\t\tBZF\t+2\n\t\tTCF\tNORLITE\n\n\t\tTC\tUPFLAG\t\t# AND SET BIT TO TURN ON TRACKER FAIL LITE\n\t\tADRES\tHFLSHFLG\n\nNORLITE\t\tCA\tLRLCTR\n\t\tTS\tLRRCTR\t\t# SET R = L\n\n\t\tTCF\tVMEASCHK\n\nVFAIL\t\tCS\tLRSCTR\t\t# DELTA Q LARGE\n\t\tEXTEND\t\t\t# IF S = 0, DO NOT TURN ON TRACKER FAIL\n\t\tBZF\tNOLITE\n\t\tAD\tLRMCTR\t\t# M-S\n\t\tMASK\tNEG3\t\t# TEST FOR M-S > 3\n\t\tEXTEND\t\t\t# IF M-S > 3, THEN TWO OR MORE OF THE\n\t\tBZF\t+2\t\t# \tLAST FOUR V READINGS WERE BAD,\n\t\tTCF\tNOLITE\t\t#\tSO TURN ON VELOCITY FAIL LIGHT\n\n\t\tTC\tUPFLAG\t\t# AND SET BIT TO TURN ON TRACKER FAIL LITE\n\t\tADRES\tVFLSHFLG\n\n# Page 891\nNOLITE\t\tCA\tLRMCTR\t\t# SET S = M\n\t\tTS\tLRSCTR\n\n\t\tCCS\tVSELECT\t\t# TEST FOR Z COMPONENT\n\t\tTCF\tENDVDAT\t\t# NOT Z, DO NOT SET VX INHIBIT\n\n\t\tTC\tUPFLAG\t\t# Z COMPONENT - SET FLAG TO SKIP X\n\t\tADRES\tVXINH\t\t# COMPONENT, AS ERROR MAY BE DUE TO CROSS\n\t\tTCF\tENDVDAT\t\t# LOBE LOCK UP NOT DETECTED ON X AXIS.\n\n# Page 892\n# ********************************************************************************\n# LRVJOB IS SET WHEN THE LEM IS BELOW 15000 FT DURING THE LANDING PHASE\n# THIS JOB INITIALIZES THE LANDING RADAR READ ROUTINE FOR 5 VELOCITY\n# SAMPLES AND GOES TO SLEEP WHILE THE SAMPLING IS DONE -- ABOUT 500 MS.\n# WITH A GOODEND RETURN THE DATA IS STORED IN VMEAS AND BIT7 OF LRSTAT\n# IS SET.  THE GIMBAL ANGLES ARE READ ABOUT MIDWAY IN THE SAMPLINGS.\n\n170MS\t\tEQUALS\tND1\n\nLRVJOB\t\tCA\t170MS\t\t# SET TASK TO READ CDUS + PIPAS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLRVTIME\n\t\t2CADR\tRDGIMS\n\n\t\tCCS\tVSELECT\t\t# SEQUENCE LR VEL BEAM SELECTOR\n\t\tTCF\t+2\n\t\tCAF\tTWO\t\t# IF ZERO, RESET TO TWO\n\t\tDOUBLE\t\t\t# 2XVSELECT USED FOR VBEAM INDEX IN LRVEL\n\t\tTC\tBANKCALL\t# GO INITIALIZE LR VEL READ ROUTINE\n\t\tCADR\tLRVEL\n\t\tTC\tBANKCALL\t# PUT LRVJOB TO SLEEP ABOUT 500 MS\n\t\tCADR\tRADSTALL\n\t\tTCF\tVBAD\n\t\tCCS\tSTILBADV\t# IS DATA GOOD JUST PRESENT?\n\t\tTCF\tVSTILBAD\t# JUST GOOD -- MUST WAIT 4 SECONDS.\n\n\t\tINHINT\n\t\tEXTEND\t\t\t# GOOD RETURN -- STOW AWAY VMEAS\n\t\tDCA\tSAMPLSUM\n\t\tDXCH\tVMEAS\n\t\tCA\tEBANK4\t\t# FOR DOWNLINK\n\t\tTS\tEBANK\n\t\tEBANK=\tLRVTIME\n\n\t\tEXTEND\n\t\tDCA\tLRVTIME\n\t\tDXCH\tLRVTIMDL\n\t\tEXTEND\n\t\tDCA\tLRXCDU\n\t\tDXCH\tLRXCDUDL\n\t\tCA\tLRZCDU\n\t\tTS\tLRZCDUDL\n\t\tCA\tEBANK7\n\t\tTS\tEBANK\n\t\tEBANK=\tVSELECT\n\n\t\tCS\tFLGWRD11\t# SET BIT TO INDICATE VELOCITY\n\t\tMASK\tVELDABIT\t# MEASUREMENT MADE\n# Page 893\n\t\tADS\tFLGWRD11\nENDLRV\t\tCCS\tVSELECT\t\t# UPDATE VSELECT\n\t\tTCF\t+2\n\t\tCA\tTWO\n\t\tTS\tVSELECT\n\t\tTCF\tENDOFJOB\n\nVBAD\t\tCAF\tTWO\t\t# SET STILBAD TO WAIT 4 SECONDS\nVSTILBAD\tTS\tSTILBADV\n\t\tTCF\tENDLRV\n\n# LRHJOB IS SET BY LRHTASK WHEN LEM IS BELOW 25000 FT.  THIS JOB\n# INITIALIZES THE LR READ ROUTINE FOR AN ALT MEASUREMENT AND GOES TO\n# SLEEP WHILE THE SAMPLING IS DONE -- ABOUT 95 MS.  WITH A GOODEND RETURN\n# THE ALT DATA IS STORED IN HMEAS AND BIT7 OF LRSTAT IS SET.\n\n\t\tBANK\t34\n\t\tSETLOC\tR12STUFF\n\t\tBANK\n\n\t\tCOUNT*\t$$/SERV\n\nLRHJOB\t\tTC\tBANKCALL\t# INITIATE LR ALT MEASUREMENT\n\t\tCADR\tLRALT\n\t\tTC\tBANKCALL\t# LRHJOB TO SLEEP ABOUT 95MS\n\t\tCADR\tRADSTALL\n\t\tTCF\tHBAD\n\t\tCCS\tSTILBADH\t# IS DATA GOOD JUST PRESENT?\n\t\tTCF\tHSTILBAD\t# JUST GOOD -- MUST WAIT 4 SECONDS.\n\n\t\tINHINT\n\t\tEXTEND\n\t\tDCA\tSAMPLSUM\t# GOOD RETURN -- STORE AWAY LRH DATA\n\t\tDXCH\tHMEAS\t\t# LRH DATA 1.079 FT/BIT\n\t\tEXTEND\t\t\t# FOR DOWNLINK\n\t\tDCA\tPIPTIME1\n\t\tDXCH\tMKTIME\n\n\t\tEXTEND\n\t\tDCA\tCDUTEMPY\t# CDUY,Z = AIG,AMG\n\t\tDXCH\tAIG\n\n\t\tCA\tCDUTEMPX\t# CDUX = AOG\n\t\tTS\tAOG\n\n\t\tCS\tFLGWRD11\t# SET BIT TO INDICATE RANGE\n\t\tMASK\tRNGEDBIT\t# MEASUREMENT MADE.\n\t\tADS\tFLGWRD11\nENDLRH\t\tTC\tENDOFJOB\t# TERMATE LRHJOB\n\n# Page 894\nHBAD\t\tCA\tFLAGWRD5\n\t\tMASK\tRNGSCBIT\t# IS BAD RETURN DUE TO SCALE CHANGE?\n\t\tEXTEND\n\t\tBZF\tHSTILBAD -1\t# NO  RESET HSTILBAD\n\t\tTC\tDOWNFLAG\t# YES  RESET SCALE CHANGE BIT AND IGNORE\n\t\tADRES\tRNGSCFLG\n\t\tTC\tENDOFJOB\n\n\t\tCAF\tTWO\t\t# SET STILBAD TO WAIT 4 SECONDS\nHSTILBAD\tTS\tSTILBADH\n\t\tTC\tENDOFJOB\n\n\t\tBANK\t34\n\t\tSETLOC\tSERV4\n\t\tBANK\n\n\t\tCOUNT*\t$$/SERV\n\n# RDGIMS IS A TASK SET UP BY LRVJOB TO PICK UP THE IMU CDUS AND TIME\n# AT ABOUT THE MIDPOINT OF THE LR VEL READ ROUTINE WHEN 5 VEL SAMPLES\n# ARE SPECIFIED.\n\n\t\tEBANK=\tLRVTIME\nRDGIMS\t\tEXTEND\n\t\tDCA\tTIME2\t\t# PICK UP TIME2, TIME1\n\t\tDXCH\tLRVTIME\t\t#\tAND SAVE IN LRVTIME\n\n\t\tEXTEND\n\t\tDCA\tCDUX\t\t# PICK UP CDUX AND CDUY\n\t\tDXCH\tLRXCDU\t\t#\tAND SAVE IN LRXCDU AND LRYCDU\n\n\t\tCA\tCDUZ\n\t\tTS\tLRZCDU\t\t# SAVE CDUZ IN LRZCDU\n\n\t\tCA\tPIPAX\n\t\tTS\tPIPTEM\t\t# SAVE PIPAX IN PIPTEM\n\n\t\tEXTEND\n\t\tDCA\tPIPAY\t\t# PICK UP PIPAY AND PIPAZ\n\t\tDXCH\tPIPTEM +1\t#\tAND SAVE IN PIPTEM +1 AND PIPTEM +2\n\t\tTC\tTASKOVER\n\n\t\tBANK\t33\n\t\tSETLOC\tSERVICES\n\t\tBANK\n\n\t\tCOUNT*\t$$/SERV\n\n\t\tEBANK=\tDVCNTR\n# Page 895\n# HIGATJOB IS SET APPROXIMATELY 6 SECONDS PRIOR TO HIGH GATE DURING\n# THE DESCENT BURN PHASE OF LUNAR LANDING.  THIS JOB INITIATES THE\n# LANDING RADAR REPOSITIONING ROUTINE AND GOES TO SLEEP UNTIL THE\n# LR ANTENNA MOVES FROM POSITION 1 TO POSITION 2.  IF THE LR ANTENNA\n# ACHIEVES POSITION 2 WITHIN 22 SECONDS THE ALTITUDE AND VELOCITY\n# BEAM VECTORS ARE RECOMPUTED TO REFLECT THE NEW ORIENTATION WITH\n# RESPECT TO THE NB.  BIT10 OF LRSTAT IS CLEARED TO ALLOW LR\n# MEASUREMENTS AND THE JOB TERMINATES.\n\nHIGATJOB\tTC\tBANKCALL\t# START LRPOS2 JOB\n\t\tCADR\tLRPOS2\n\t\tTC\tBANKCALL\t# PUT HIGATJOB TO SLEEP UNTIL JOB IS DONE\n\t\tCADR\tRADSTALL\n\t\tTCF\tPOSALARM\t# BAD END    ALARM\n\nPOSGOOD\t\tCA\tPRIO23\t\t# REDUCE PRIORITY FOR INTERPRETIVE COMPS.\n\t\tTC\tPRIOCHNG\n\n\t\tTC\tSETPOS2\t\t# LR IN POS2 -- SET UP TRANSFORMATIONS\n\n\t\tTC\tDOWNFLAG\n\t\tADRES\tNOLRREAD\t# RESET NOLRREAD FLAG TO ENABLE LR READING\n\t\tTC\tENDOFJOB\n\nPOSALARM\tCA\tOCT523\n\t\tTC\tBANKCALL\n\t\tCADR\tPRIOLARM\t# FLASH ALARM CODE\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\t+3\t\t# PROCEED -- TRY AGAIN\n\t\tTCF\tENDOFJOB\t# V 32 E    TERMINATE R12\n\t\tTC\tENDOFJOB\n\n +3\t\tCA\tBIT7\t\t# SEE IF IN POS2 YET\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tEXTEND\n\t\tBZF\tPOSGOOD\t\t# POS2 ACHIEVED   SET UP ANTENNA BEAMS\n\t\tTCF\tPOSALARM\t# STILL DIDN'T MAKE IT   REALARM\n\nOCT523\t\tOCT\t00523\n\n\n\nSETPOS1\t\tTC\tMAKECADR\t# MUST BE CALLED BY BANKCALL\n\t\tTS\tLRADRET1\t# SAVE RETURN CADR.  SINCE BUP2 CLOBBERED\n\n\t\tCAF\tTWO\n\t\tTS\tSTILBADH\t# INITIALIZE STILBAD\n\t\tTS\tSTILBADV\t# INITIALIZE STILBAD\n\n\t\tCA\tZERO\t\t# INDEX FOR LRALPHA, LRBETA IN POS 1.\n# Page 896\n\t\tTS\tLRLCTR\t\t# SET L,M,R, ANS S TO ZERO\n\t\tTS\tLRMCTR\n\t\tTS\tLRRCTR\n\t\tTS\tLRSCTR\n\t\tTS\tVSELECT\t\t# INITIALIZE VSELECT\n\n\t\tTC\tSETPOS\t\t# CONTINUE WITH COMPUTATIONS.\n\n\t\tCA\tLRADRET1\n\t\tTC\tBANKJUMP\t# RETURN TO CALLER\n\nSETPOS2\t\tCA\tTWO\t\t# INDEX FOR POS2\nSETPOS\t\tXCH\tQ\t\t# SAVE INDEX IN Q\n\t\tTS\tLRADRET\t\t# SAVE RETURN\n\n\t\tCA\tEBANK5\n\t\tTS\tEBANK\n\t\tEBANK=\tLRALPHA\n\n\t\tEXTEND\n\t\tINDEX\tQ\n\t\tDCA\tLRALPHA\t\t# LRALPHA IN A, LRBETA IN L\n\t\tTS\tCDUSPOT +4\t# ROTATION ABOUT X\n\t\tLXCH\tCDUSPOT\t\t# ROTATION ABOUT Y\n\t\tCA\tZERO\n\t\tTS\tCDUSPOT +2\t# ZERO ROTATION ABOUT Z.\n\n\t\tCA\tEBANK7\n\t\tTS\tEBANK\n\t\tEBANK=\tLRADRET\n\n\t\tTC\tINTPRET\n\t\tVLOAD\tCALL\n\t\t\tUNITY\t\t# CONVERT UNITY(ANTENNA) TO NB\n\t\t\tTRG*SMNB\n\t\tSTOVL\tVYBEAMNB\n\t\t\tUNITX\t\t# CONVERT UNITX(ANTENNA) TO NB\n\t\tCALL\n\t\t\t*SMNB*\n\t\tSTORE\tVXBEAMNB\n\t\tVXV\tVSL1\n\t\t\tVYBEAMNB\n\t\tSTOVL\tVZBEAMNB\t# Z = X * Y\n\t\t\tHBEAMANT\n\t\tCALL\n\t\t\t*SMNB*\t\t# CONVERT TO NB\n\t\tSTORE\tHBEAMNB\n\t\tEXIT\n\n# Page 897\n\t\tTC\tLRADRET\n\n"
  },
  {
    "path": "Luminary099/SERVICE_ROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSERVICE_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1374-1380\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1374\n\t\tBANK\t10\n\t\tSETLOC\tDISPLAYS\n\t\tBANK\n\t\tCOUNT*\t$$/DSPLA\n\nUPENT2\t\tINHINT\n\t\tMASK\tOCT77770\n\t\tTS\tL\n\t\tCS\tFLAGWRD4\n\t\tMASK\tL\n\t\tADS\tFLAGWRD4\nJOIN\t\tRELINT\n\t\tTCF\tQ+1\n\nDOWNENT2\tINHINT\n\t\tMASK\tOCT77770\n\t\tCOM\n\t\tMASK\tFLAGWRD4\n\t\tTS\tFLAGWRD4\n\t\tTCF\tJOIN\n\nOCT7\t\tEQUALS\tSEVEN\n\n# Page 1375\n#     UPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES.   USING THEM, WHETHER OR\n# NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO\n# EBANK SETTING.   A \"NAMED\" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL\n# ASSEMBLER.\n#\n#     AT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS.   ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO\n# NAME ANY BIT IN ERASABLE MEMORY.\n#\n#     CALLING SEQUENCES ARE AS FOLLOWS :-\n#\t\tTC\tUPFLAG\t\t\tTC\tDOWNFLAG\n#\t\tADRES\tNAME OF FLAG\t\tADRES\tNAME OF FLAG\n#\n#     RETURN IS TO THE LOCATION FOLLOWING THE \"ADRES\" ABOUT .58 MS AFTER THE \"TC\".\n#     UPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG1\n\t\tBANK\n\t\tCOUNT*\t$$/FLAG\n\nUPFLAG\t\tCA\tQ\n\t\tTC\tDEBIT\n\t\tCOM\t\t\t# +(15 - BIT)\n\t\tEXTEND\n\t\tROR\tLCHAN\t\t# SET BIT\nCOMFLAG\t\tINDEX\tITEMP1\n\t\tTS\tFLAGWRD0\n\t\tLXCH\tITEMP3\n\t\tRELINT\n\t\tTC\tL\n\nDOWNFLAG\tCA\tQ\n\t\tTC\tDEBIT\n\t\tMASK\tL\t\t# RESET BIT\n\t\tTCF\tCOMFLAG\n\nDEBIT\t\tAD\tONE\t\t# CET DE BITS\n\t\tINHINT\n\t\tTS\tITEMP3\n\t\tCA\tLOW4\t\t# DEC15\n\t\tTS\tITEMP1\n\t\tINDEX\tITEMP3\n\t\tCA\t0 -1\t\t# ADRES\n\t\tTS\tL\n\t\tCA\tZERO\n# Page 1376\n\t\tEXTEND\n\t\tDV\tITEMP1\t\t# A = FLAGWRD, L = (15 - BIT)\n\t\tDXCH\tITEMP1\n\t\tINDEX\tITEMP1\n\t\tCA\tFLAGWRD0\n\t\tTS\tL\t\t# CURRENT STATE\n\t\tINDEX\tITEMP2\n\t\tCS\tBIT15\t\t# -(15 - BIT)\n\t\tTC\tQ\n\n# Page 1377\n# DELAYJOB- A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.\n#\n# ENTRANCE REQUIREMENTS...\n#\t\tCAF\tDT\t\t# DELAY JOB FOR DT CENTISECS\n#\t\tTC\tBANKCALL\n#\t\tCADR\tDELAYJOB\n\n\t\tBANK\t06\n\t\tSETLOC\tDLAYJOB\n\t\tBANK\n\n# THIS MUST REMAIN IN BANK 0 *****************************************\n\n\t\tCOUNT*\t$$/DELAY\nDELAYJOB\tINHINT\n\t\tTS\tQ\t\t# STORE DELAY DT IN Q FOR DLY -1 IN\n\t\tCAF\tDELAYNUM\t# WAITLIST\nDELLOOP\t\tTS\tRUPTREG1\n\t\tINDEX\tA\n\t\tCA\tDELAYLOC\t# IS THIS DELAYLOC AVAILABLE\n\t\tEXTEND\n\t\tBZF\tOK2DELAY\t# YES\n\n\t\tCCS\tRUPTREG1\t# NO, TRY NEXT DELAYLOC\n\t\tTCF\tDELLOOP\n\n\t\tDXCH\tBUF2\n\t\tTC\tBAILOUT1\t# NO AVAILABLE LOCS.\n\t\tOCT\t1104\n\nOK2DELAY\tCA\tTCSLEEP\t\t# SET WAITLIST IMMEDIATE RETURN\n\t\tTS\tWAITEXIT\n\n\t\tCA\tFBANK\n\t\tAD\tRUPTREG1\t# STORE BBANK FOR TASK CALL\n\t\tTS\tL\n\n\t\tCAF\tWAKECAD\t\t# STORE CADR FOR TASK CALL\n\t\tTCF\tDLY2 -1\t\t# DLY IS IN WAITLIST ROUTINE\n\nTCGETCAD\tTC\tMAKECADR\t# GET CALLERS FCADR\n\n\t\tINDEX\tRUPTREG1\n\t\tTS\tDELAYLOC\t# SAVE DELAY CADRS\n\n\t\tTC\tJOBSLEEP\n\nWAKER\t\tCAF\tZERO\n\t\tINDEX\tBBANK\n\t\tXCH\tDELAYLOC\t# MAKE DELAYLOC AVAILABLE\n# Page 1378\n\t\tTC\tJOBWAKE\n\n\t\tTC\tTASKOVER\n\nTCSLEEP\t\tGENADR\tTCGETCAD -2\nWAKECAD\t\tGENADR\tWAKER\n\n# Page 1379\n# GENTRAN, A BLOCK TRANSFER ROUTINE.\n# WRITTEN BY D. EYLES\n# MOD 1 BY KERNAN\t\t\t\t\t\tUTILITYM REV 17 11/18/67\n# MOD 2 BY SCHULENBERG (REMOVE RELINT)   SKIPPER REV 4 2/28/68\n#\n# \t   THIS ROUTINE IS USEFULL FOR TRANSFERING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N\n# CONSECUTIVE ERASABLE LOCATIONS.  IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.\n#\n# \t   GENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT.  THE CALLING SEQUENCE IS:\n#\tI\tCA\tN-1\t\t# # OF QUANTITIES MINUS ONE.\n#\tI +1\tTC\tGENTRAN\t\t# IN FIXED-FIXED.\n#\tI +2\tADRES\tL\t\t# STARTING ADRES OF DATA TO BE MOVED.\n#\tI +3\tADRES\tM\t\t# STARTING ADRES OF DUPLICATION BLOCK.\n#\tI +4\t\t\t\t# RETURNS HERE.\n#\n# \t   GENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.\n# \t   A, L, AND ITEMP1 ARE NOT PRESERVED.\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG4\n\t\tBANK\n\n\t\tEBANK=\tITEMP1\n\n\t\tCOUNT*\t$$/TRAN\n\nGENTRAN\t\tINHINT\n\t\tTS\tITEMP1\t\t# SAVE N-1.\n\t\tINDEX\tQ\t\t# C(Q) = ADRES L.\n\t\tAD\t0\t\t# ADRES (L + N - 1).\n\t\tINDEX\tA\n\t\tCA\t0\t\t# C(ABOVE).\n\t\tTS\tL\t\t# SAVE DATA.\n\t\tCA\tITEMP1\n\t\tINDEX\tQ\n\t\tAD\t1\t\t# ADRES (M + N - 1).\n\t\tINDEX\tA\n\t\tLXCH\t0\t\t# STUFF IT.\n\t\tCCS\tITEMP1\t\t# LOOP UNTIL N-1 = 0.\n\t\tTCF\tGENTRAN +1\n\t\tTCF\tQ+2\t\t# RETURN TO CALLER.\n\n# Page 1380\n# B5OFF   ZERO BIT 5 OF EXTVBACT, WHICH IS SET BY TESTXACT.\n# \t   MAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT\n\n\t\tCOUNT*\t$$/EXTVB\n\nB5OFF\t\tCS\tBIT5\n\t\tMASK\tEXTVBACT\n\t\tTS\tEXTVBACT\n\t\tTC\tENDOFJOB\n"
  },
  {
    "path": "Luminary099/SINGLE_PRECISION_SUBROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSINGLE_PRECISION_SUBROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1102\n# Mod history:\t2009-05-25 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2010-12-31 JL\tFixed page number comment.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1102\n\t\tBLOCK\t02\n\n# SINGLE PRECISION SINE AND COSINE\n\n\t\tCOUNT*\t$$/INTER\nSPCOS\t\tAD\tHALF\t\t# ARGUMENTS SCALED AT PI\nSPSIN\t\tTS\tTEMK\n\t\tTCF\tSPT\n\t\tCS\tTEMK\nSPT\t\tDOUBLE\n\t\tTS\tTEMK\n\t\tTCF\tPOLLEY\n\t\tXCH\tTEMK\n\t\tINDEX\tTEMK\n\t\tAD \tLIMITS\n\t\tCOM\n\t\tAD\tTEMK\n\t\tTS\tTEMK\n\t\tTCF\tPOLLEY\n\t\tTCF\tARG90\nPOLLEY\t\tEXTEND\n\t\tMP\tTEMK\n\t\tTS\tSQ\n\t\tEXTEND\n\t\tMP\tC5/2\n\t\tAD\tC3/2\n\t\tEXTEND\n\t\tMP\tSQ\n\t\tAD\tC1/2\n\t\tEXTEND\n\t\tMP\tTEMK\n\t\tDDOUBL\n\t\tTS\tTEMK\n\t\tTC\tQ\nARG90\t\tINDEX\tA\n\t\tCS\tLIMITS\n\t\tTC\tQ\t\t# RESULT SCALED AT 1\n\n\n"
  },
  {
    "path": "Luminary099/SPS_BACK-UP_RCS_CONTROL.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSPS_BACK-UP_RCS_CONTROL.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1507-1510\n# Mod history:\t2009-05-27 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1507\n# PROGRAM NAME:\t\tSPSRCS\n# AUTHOR:\t\tEDGAR M. OSHIKA (AC ELECTRONICS)\n# MODIFIED:\t\tTO RETURN TO ALL AXES VIA Q BY P. S. WEISSMAN, OCT 7, 1968\n# MODIFIED TO IMPROVE BENDING STABILITY BY G. KALAN, FEB. 14, 1969\n#\n# FUNCTIONAL DESCRIPTION:\n#\tTHE PROGRAM CONTROLS THE FIRING OF ALL RCS JETS IN THE DOCKED CONFIGURATION ACCORDING TO THE FOLLOWING PHASE\n#\tPLANE LOGIC.\n#\n#\t1. JET SENSE TEST (SPSRCS)\n#\t\tIF JETS ARE FIRING NEGATIVELY, SET OLDSENSE NEGATIVE AND CONTINUE\n#\t\tIF JETS ARE FIRING POSITIVELY, SET OLDSENSE POSITIVE AND CONTINUE\n#\t\tIF JETS ARE NOT FIRING, SET OLDSENSE TO ZERO AND GO TO OUTER RATE LIMIT TEST\n#\n# \t2. RATE DEAD BAND TEST\n#\t\tIF JETS ARE FIRING NEGATIVELY AND RATE IS GREATER THAN TARGET RATE, LEAVE\n#\t\t\tJETS ON AND GO TO INHIBITION LOGIC.  OTHERWISE, CONTINUE.\n#\t\tIF JETS ARE FIRING POSITIVELY AND RATE IS   LESS  THAN TARGET RATE, LEAVE\n#\t\t\tJETS ON AND GO TO INHIBITION LOGIC.  OTHERWISE, CONTINUE.\n#\n#\t3. OUTER RATE LIMIT TEST (SPSSTART)\n#\t\tIF MAGNITUDE OF EDOT IS GREATER THAN 1.73 DEG/SEC SET JET FIRING TIME\n#\t\t\tTO REDUCE RATE AND GO TO INHIBITION LOGIC.  OTHERWISE, CONTINUE.\n#\n#\t4. COAST ZONE TEST\n#\t\tIF STATE (E,EDOT) IS BELOW LINE E + 4 X EDOT > -1.4 DEG AND EDOT IS LESS THAN 1.30 DEG/SEC SET JET TIME\n#\t\t \tPOSITIVE AND CONTINUE.  OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.\n#\t\tIF STATE IS ABOVE LINE E + 4 X EDOT > +1.4 DEG AND EDOT IS GREATER THAN -1.30 DEG/SEC, SET JET TIME NEGATIVE\n#\t\t \tAND CONTINUE.  OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.\n#\n#\t5. INHIBITION LOGIC\n#\t\tIF OLDSENSE IS NON-ZERO:\n#\t\t\tA) RETURN IF JET TIME AS THE SAME SIGN AS OLDSENSE\n#\t\t\tB) SET INHIBITION COUNTER* AND RETURN IF JET TIME IS ZERO\n#\t\t\tC) SET INHIBITION COUNTER,* SET JET TIME TO ZERO AND RETURN IF SIGN\n#\t\t\t   OF JET TIME IS OPPOSITE TO THAT OF OLDSENSE\n#\t\tIF OLDSENSE IS ZERO:\n#\t\t\tA) RETURN IF INHIBITION COUNTER IS NOT POSITIVE\n#\t\t\tB) SET JET TIME TO ZERO AND RETURN IF INHIBITION COUNTER IS POSITIVE\n#\t\t*NOTE: INHIBITION COUNTERS CAN BE SET TO 4 OR 10 FOR THE P AND UV AXES,\n#\t\tRESPECTIVELY, IN SPSRCS.  THEY ARE DECREMENTED BY ONE AT THE BEGINNING OF\n# Page 1508\n#\t\tEACH DAP PASS.\n#\n#\tTHE MINIMUM PULSE WIDTH OF THIS CONTROLLER IS DETERMINED BY THE REPETITION RATE AT WHICH THIS ROUTINE IS CALLED\n#\tAND IS NOMINALLY 100 MS FOR ALL AXES IN DRIFTING FLIGHT.  DURING POWERED FLIGHT THE MINIMUM IS 100 MS FOR THE\n#\tP AXIS AND 200 MS FOR THE CONTROL OF THE U AND V AXES.\n#\n# CALLING SEQUENCE:\n#\t\tINHINT\n#\t\tTC\tIBNKCALL\n#\t\tCADR\tSPSRCE\n#\n# EXIT:\n#\t\tTC\tQ\n#\n# ALARM/ABORT MODE:\tNONE\n#\n# SUBROUTINES CALLED:\tNONE\n#\n# INPUT:\t\tE, EDOT\n#\t\t\tTJP, TJV, TJU\t\tTJ MUST NOT BE NEGATIVE ZERO\n#\n# OUTPUT:\t\tTJP, TJV, TJU\n\n\t\tBANK\t21\n\t\tSETLOC\tDAPS4\n\t\tBANK\n\n\t\tCOUNT*\t$$/DAPBU\n\n\t\tEBANK=\tTJU\nRATELIM2\tOCT\t00632\t\t# 1.125 DEG/SEC\nPOSTHRST\tCA\tHALF\n\n\t\tNDX\tAXISCTR\n\t\tTS\tTJU\n\t\tCCS\tOLDSENSE\n\t\tTCF\tPOSCHECK\t# JETS FIRING POSITIVELY\n\t\tTCF\tCTRCHECK\t# JETS OFF.  CHECK INHIBITION CTR\nNEGCHECK\tINDEX\tAXISCTR\t\t# JETS FIRING NEGATIVELY\n\t\tCS\tTJU\n\t\tCCS\tA\n\t\tTC\tQ\t\t# RETURN\n\t\tTCF\t+2\n\t\tTCF\t+1\t\t# JETS COMMANDED OFF.  SET CTR AND RETURN\nSETCTR\t\tINDEX\tAXISCTR\t\t# JET FIRING REVERSAL COMMANDED.  SET CTR,\n\t\tCA\tUTIME\t\t# SET JET TIME TO ZERO, AND RETURN\n# Page 1509\n\t\tINDEX\tAXISCTR\n\t\tTS\tUJETCTR\nZAPTJ\t\tCA\tZERO\n\t\tINDEX\tAXISCTR\n\t\tTS\tTJU\n\t\tTC\tQ\nPOSCHECK\tINDEX\tAXISCTR\n\t\tCA\tTJU\n\t\tTCF\tNEGCHECK +2\nCTRCHECK\tINDEX\tAXISCTR\t\t# CHECK JET INHIBITION COUNTER\n\t\tCCS\tUJETCTR\n\t\tTCF\t+2\n\t\tTC\tQ\t\t# CTR IS NOT POSITIVE.  RETURN\n\t\tTCF\tZAPTJ\t\t# CTR IS POSITIVE.  INHIBIT FIRINGS\n\t\tTC\tQ\t\t# CTR IS NOT POSITIVE.  RETURN\n\t\tOCT\t00004\nUTIME\t\tOCT\t00012\n\t\tOCT\t00012\nOLDSENSE\tEQUALS\tDAPTREG1\nNEGFIRE\t\tCS\tONE\t\t# JETS FIRING NEGATIVELY\n\t\tTS\tOLDSENSE\n\t\tCA\tEDOT\n\t\tTCF\t+4\nPLUSFIRE\tCA\tONE\n\t\tTS\tOLDSENSE\n\t\tCS\tEDOT\t\t# RATE DEAD BAND TEST\n\t\tLXCH\tA\n\t\tCS\tDAPBOOLS\t# IF DRIFTBIT = 1, USE ZERO TARGET RATE\n\t\tMASK\tDRIFTBIT\t# IF DRIFTBIT = 0, USE 0.10 RATE TARGET\n\t\tCCS\tA\n\t\tCA\tRATEDB1\n\t\tAD\tL\n\t\tEXTEND\n\t\tBZMF\tSPSSTART\n\t\tTCF\tPOSTHRST +3\n\nSPSRCS\t\tINDEX\tAXISCTR\t\t# JET SENSE TEST\n\t\tCCS\tTJU\n\t\tTCF\tPLUSFIRE\t# JETS FIRING POSITIVELY\n\t\tTCF\t+2\n\t\tTCF\tNEGFIRE\t\t# JETS FIRING NEGATIVELY\n\t\tTS\tOLDSENSE\t# JETS OFF\nSPSSTART\tCA\tEDOT\t\t# OUTER RATE LIMIT TEST\n\t\tEXTEND\n\t\tMP\tRATELIM1\n\t\tCCS\tA\n\t\tTCF\tNEGTHRST\t# OUTER RATE LIMIT EXCEEDED\n\t\tTCF\t+2\n\t\tTCF\tPOSTHRST\t# OUTER RATE LIMIT EXCEEDED\n\t\tCA\tEDOT\t\t# COAST ZONE TEST\n# Page 1510\n\t\tAD\tE\n\t\tEXTEND\n\t\tMP\tDKDB\t\t# PAD LOADED DEADBAND.  FRESHSTART: 1.4 DEG\n\t\tEXTEND\n\t\tBZF\tTJZERO\n\n\t\tEXTEND\n\t\tBZMF\t+7\n\t\tCA\tEDOT\n\t\tAD\tRATELIM2\n\t\tEXTEND\n\t\tBZMF\tTJZERO\nNEGTHRST\tCS\tHALF\n\t\tTCF\tPOSTHRST +1\n +7\t\tCS\tRATELIM2\n\t\tAD\tEDOT\n\t\tEXTEND\n\t\tBZMF\tPOSTHRST\nTJZERO\t\tCA\tZERO\n\t\tTCF\tPOSTHRST +1\n\nRATELIM1\t=\tCALLCODE\t# = 00032, CORRESPONDING TO 1.73 DEG/SEC\nRATEDB1\t\t=\tTBUILDFX\t# = 00045, CORRESPONDS TO 0.101 DEG/SEC\n\n# *** END OF LMDAP  .015 ***\n\n\n"
  },
  {
    "path": "Luminary099/STABLE_ORBIT.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSTABLE_ORBIT.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t723-730\n# Mod history:\t2009-05-19 RSB\tAdapted from the corresponding\n#\t\t\t\tColossus249 file (there being no corresponding\n#\t\t\t\tLuminary131 source-code file), using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-07 RSB\tEliminated an extraneous instruction.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 723\n# STABLE ORBIT RENDEZVOUS PROGRAMS (P38 AND P78)\n#\n# MOD NO -1\t\tLOG SECTION - STABLE ORBIT - P38-P39\n# MOD BY RUDNICKI.S\tDATE 25JAN68\n#\n# FUNCTIONAL DESCRIPTION\n#\n#\tP38 AND P78 CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL\n#\tCONDITIONS REQUIRED BY THE AGC TO (1) PUT THE ACTIVE VEHICLE\n#\tON A TRANSFER TRAJECTORY THAT INTERCEPTS THE PASSIVE VEHICLE\n#\tORBIT A GIVEN DISTANCE, DELTA R, EITHER AHEAD OF OR BEHIND THE\n#\tPASSIVE VEHICLE AND (2) ACTUALLY PLACE THE ACTIVE VEHICLE IN THE\n#\tPASSIVE VEHICLE ORBIT WITH A DELTA R SEPARATION BETWEEN THE TWO\n#\tVEHICLES\n#\n# CALLING SEQUENCE\n#\n#\tASTRONAUT REQUEST THRU DSKY\n#\n#\tV37E38E\t\tIF THIS VEHICLE IS ACTIVE VEHICLE\n#\tV37E78E\t\tIF OTHER VEHICLE IS ACTIVE VEHICLE\n#\n# INPUT\n#\n#\t(1)\tSOI MANEUVER\n#\n#\t\t(A)  TIG\tTIME OF SOI MANEUVER\n#\t\t(B)  CENTANG\tORBITAL CENTRAL ANGLE OF THE PASSIVE VEHICLE\n#\t\t\t\tDURING THE TRANSFER FROM TIG TO TIME OF INTERCEPT\n#\t\t(C)  DELTAR\tTHE DESIRED SEPARATION OF THE TWO VEHICLES\n#\t\t\t\tSPECIFIED AS A DISTANCE ALONG THE PASSIVE VEHICLE\n#\t\t\t\tORBIT\n#\t\t(D)  OPTION\tEQUALS 1 FOR SOI\n#\n#\t(2)\tSOR MANEUVER\n#\n#\t\t(A)  TIG\tTIME OF SOR MANEUVER\n#\t\t(B)  CENTANG\tAN OPTIONAL RESPECIFICATION OF 1 (B) ABOVE\n#\t\t(C)  OPTION\tEQUALS 2 FOR SOR\n#\t\t(D)  DELTTIME\tTHE TIME REQUIRED TO TRAVERSE DELTA R WHEN\n#\t\t\t\tTRAVELING AT A VELOCITY EQUAL TO THE HORIZONTAL\n#\t\t\t\tVELOCITY OF THE PASSIVE VEHICLE - SAVED FROM\n#\t\t\t\tSOI PHASE\n#\t\t(E)  TINT\tTIME OF INTERCEPT (SOI) - SAVED FROM SOI PHASE\n#\n# OUTPUT\n#\n#\t(1)  TRKMKCNT\tNUMBER OF MARKS\n#\t(2)  TTOGO\tTIME TO GO\n#\t(3)  +MGA\tMIDDLE GIMBAL ANGLE\n# Page 724\n#\t(4)  DSPTEM1\tTIME OF INTERCEPT OF PASSIVE VEHICLE ORBIT\n#\t\t\t(FOR SOI ONLY)\n#\t(5)  POSTTPI\tPERIGEE ALTITUDE OF ACTIVE VEHICLE ORBIT AFTER\n#\t\t\tTHE SOI (SOR) MANEUVER\n#\t(6)  DELVTPI\tMAGNITUDE OF DELTA V AT SOI (SOR) TIME\n#\t(7)  DELVTPF\tMAGNITUDE OF DELTA V AT INTERCEPT TIME\n#\t(8)  DELVLVC\tDELTA VELOCITY AT SOI (AND SOR) - LOCAL VERTICAL\n#\t\t\tCOORDINATES\n#\n# SUBROUTINE USED\n#\n#\tAVFLAGA\n#\tAVFLAGP\n#\tVNDSPLY\n#\tBANKCALL\n#\tGOFLASHR\n#\tGOTOPOOH\n#\tBLANKET\n#\tENDOFJOB\n#\tPREC/TT\n#\tSELECTMU\n#\tINTRPVP\n#\tMAINRTNE\n\n\t\tBANK\t04\n\t\tSETLOC\tSTBLEORB\n\t\tBANK\n\n\t\tEBANK=\tSUBEXIT\n\t\tCOUNT*\t$$/P3879\n\nP38\t\tTC\tBANKCALL\n\t\tCADR\tAVFLAGA\t\t# THIS VEHICLE ACTIVE\n\t\tTC\t+3\nP78\t\tTC\tBANKCALL\n\t\tCADR\tAVFLAGP\t\t# OTHER VEHICLE ACTIVE\n\t\tTC\tBANKCALL\n\t\tCADR\tP20FLGON\t# SET UPDATFLG, TRACKFLG\n\t\tCAF\tDECTWO\n\t\tTS\tNN\n\t\tCAF\tV06N33SR\t# DISPLAY TIG\n\t\tTC\tVNDSPLY\n\t\tCAF\tV06N55SR\t# DISPLAY CENTANG\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\t+5\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE\n\t\tCAF\tTHREE\t\t# IMMEDIATE RETURN - BLANK R1, R2\n\t\tTCR\tBLANKET\n# Page 725\n\t\tTCF\tENDOFJOB\n\t\tCAF\tFIVE\n\t\tTS\tOPTION1\n\t\tCAF\tONE\n\t\tTS\tOPTION2\t\t# OPTION CODE IS SET TO 1\n\t\tCAF\tV04N06SR\t# DISPLAY OPTION CODE - 1 = SOI, 2 = SOR\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\t+5\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE\n\t\tCAF\tBIT3\t\t# IMMEDIATE RETURN - BLANK R3\n\t\tTCR\tBLANKET\n\t\tTCF\tENDOFJOB\n\t\tTC\tINTPRET\n\t\tSLOAD\tSR1\n\t\t\tOPTION2\n\t\tBHIZ\tDLOAD\n\t\t\tOPTN1\n\t\t\tTINT\n\t\tSTORE\tTINTSOI\t\t# STORE FOR SOR PHASE\n\t\tCLRGO\n\t\t\tOPTNSW\t\t# OPTNSW: ON = SOI, OFF = SOR\n\t\t\tJUNCTN1\nOPTN1\t\tSET\tCLEAR\t\t# SOI\n\t\t\tOPTNSW\n\t\t\tUPDATFLG\n\t\tCALL\n\t\t\tPREC/TT\n\t\tDAD\tSET\n\t\t\tTIG\n\t\t\tUPDATFLG\n\t\tSTORE\tTINT\t\t# TI = TIG + TF\n\t\tEXIT\n\t\tCAF\tV06N57SR\t# DISPLAY DELTA R\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASHR\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\t+5\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE\n\t\tCAF\tSIX\t\t# IMMEDIATE RETURN - BLANK R2, R3\n\t\tTCR\tBLANKET\n\t\tTCF\tENDOFJOB\n +5\t\tEXTEND\n\t\tDCA\tTINT\n\t\tDXCH\tDSPTEM1\t\t# FOR DISPLAY\n\t\tCAF\tV06N34SR\t# DISPLAY TIME OF INTERCEPT\n\t\tTC\tVNDSPLY\n\t\tTC\tINTPRET\nJUNCTN1\t\tCLEAR\tCALL\n# Page 726\n\t\t\tP39/79SW\n\t\t\tSELECTMU\t# SELECT MU, CLEAR FINALFLG, GO TO VN1645\nRECYCLE\t\tCALL\n\t\t\tPREC/TT\n\t\tBOFF\tDLOAD\n\t\t\tOPTNSW\n\t\t\tOPTN2\n\t\t\tTINT\n\t\tSTCALL\tTDEC1\t\t# PRECISION UPDATE PASSIVE VEHICLE TO\n\t\t\tINTRPVP\t\t# \tINTERCEPT TIME\n\t\tVLOAD\tUNIT\n\t\t\tRATT\t\t# RP/(RP)\n\t\tPDVL\tVXV\n\t\t\tVATT\n\t\tABVAL\tNORM\t\t# (VP X RP/(RP))\n\t\t\tX1\n\t\tPDDL\tDDV\n\t\t\tDELTAR\n\t\tSL*\t\t\t# DELTA R / (VP X RP/RP)\n\t\t\t0 \t-7,1\n\t\tSTCALL\tDELTTIME\t# DELTA T = (RP) DELTA R / (VP X RP)\n\t\t\tJUNCTN2\nOPTN2\t\tDLOAD\tDAD\n\t\t\tTINTSOI\n\t\t\tT\n\t\tSTORE\tTINT\t\t# TI = TI + TF\nJUNCTN2\t\tDLOAD\tDSU\n\t\t\tTINT\n\t\t\tDELTTIME\n\t\tSTORE\tTARGTIME\t# TT = TI - DELTA T\n\n# .... MAINRTNE ....\n# SUBROUTINES USED:\n#\n#\tS3435.25\n#\tPERIAPO1\n#\tSHIFTR1\n#\tVNDSPLY\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n#\tVN1645\n\nMAINRTNE\tSTCALL\tTDEC1\t\t# PRECISION UPDATE PASSIVE VEHICLE TO\n\t\t\tINTRPVP\t\t#\tTARGET TIME\n\t\tDLOAD\n\t\t\tTIG\n\t\tSTORE\tINTIME\n\t\tSSP\tVLOAD\n\t\t\tSUBEXIT\n\t\t\tTEST3979\n# Page 727\n\t\t\tRATT\n\t\tCALL\n\t\t\tS3435.25\nTEST3979\tBOFF\tBON\n\t\t\tP39/79SW\n\t\t\tMAINRTN1\n\t\t\tFINALFLG\n\t\t\tP39P79\n\t\tSET\n\t\t\tUPDATFLG\nP39P79\t\tEXIT\n\t\tTC\tDSPLY81\t\t# FOR P39 AND P79\nMAINRTN1\tVLOAD\tABVAL\n\t\t\tDELVEET3\n\t\tSTOVL\tDELVTPI\t\t# DELTA V\n\t\t\tVPASS4\n\t\tVSU\tABVAL\n\t\t\tVTPRIME\n\t\tSTOVL\tDELVTPF\t\t# DELTA V (FINAL) = V'T - VT\n\t\t\tRACT3\n\t\tPDVL\tCALL\n\t\t\tVIPRIME\n\t\t\tPERIAPO1\t# GET PERIGEE ALTITUDE\n\t\tCALL\n\t\t\tSHIFTR1\n\t\tSTORE\tPOSTTPI\n\t\tBON\tSET\n\t\t\tFINALFLG\n\t\t\tDSPLY58\n\t\t\tUPDATFLG\nDSPLY58\t\tEXIT\n\t\tCAF\tV06N58SR\t# DISPLAY HP, DELTA V, DELTA V (FINAL)\n\t\tTC\tVNDSPLY\nDSPLY81\t\tCAF\tV06N81SR\t# DISPLAY DELTA V (LV)\n\t\tTC\tVNDSPLY\n\t\tTC\tINTPRET\n\t\tCLEAR\tVLOAD\n\t\t\tXDELVFLG\n\t\t\tDELVEET3\n\t\tSTCALL\tDELVSIN\n\t\t\tVN1645\t\t# DISPLAY TRKMKCNT, TTOGO, +MGA\n\t\tBON\tGOTO\n\t\t\tP39/79SW\n\t\t\tP39/P79B\n\t\t\tRECYCLE\n\n# STABLE ORBIT MIDCOURSE PROGRAM (P39 AND P79)\n#\n# MOD NO -1\t\tLOG SECTION - STABLE ORBIT - P38-P39\n# MOD BY RUDNICKI.S\tDATE 25JAN68\n#\n# Page 728\n# FUNCTIONAL DESCRIPTION\n#\n#\tP39 AND P79 CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL\n#\tCONDITIONS REQUIRED BY THE AGC TO MAKE A MIDCOURSE CORRECTION\n#\tMANEUVER AFTER COMPLETING THE SOI MANEUVER BUT BEFORE MAKING\n#\tTHE SOR MANEUVER.\n#\n# CALLING SEQUENCE\n#\n#\tASTRONAUT REQUEST THRU DSKY\n#\n#\tV37E39E\t\tIF THIS VEHICLE IS ACTIVE VEHICLE\n#\tV37E79E\t\tIF OTHER VEHICLE IS ACTIVE VEHICLE\n#\n# INPUT\n#\n#\t(1)  TPASS4\tTIME OF INTERCEPT - SAVED FROM P38/P78\n#\t(2)  TARGTIME\tTIME THAT PASSIVE VEHICLE IS AT INTERCEPT POINT -\n#\t\t\tSAVED FROM P38/P78\n#\n# OUTPUT\n#\n#\t(1)  TRKMKCNT\tNUMBER OF MARKS.\n#\t(2)  TTOGO\tTIME TO GO\n#\t(3)  +MGA\tMIDDLE GIMBAL ANGLE\n#\t(4)  DELVLVC\tDELTA VELOCITY AT MID - LOCAL VERTICAL COORDINATES\n#\n# SUBROUTINES USED\n#\n#\tAVFLAGA\n#\tAVFLAGP\n#\tLOADTIME\n#\tSELECTMU\n#\tPRECSET\n#\tS34/35.1\n#\tMAINRTNE\n\nP39\t\tTC\tBANKCALL\n\t\tCADR\tAVFLAGA\t\t# THIS VEHICLE ACTIVE\n\t\tEXTEND\n\t\tDCA\tATIGINC\n\t\tTC\tP39/P79A\nP79\t\tTC\tBANKCALL\n\t\tCADR\tAVFLAGP\t\t# OTHER VEHICLE ACTIVE\n\t\tEXTEND\n\t\tDCA\tPTIGINC\nP39/P79A\tDXCH\tKT\t\t# TIME TO PREPARE FOR BURN\n\t\tTC\tBANKCALL\n\t\tCADR\tP20FLGON\t# SET UPDATFLG, TRACKFLG\n\t\tTC\tINTPRET\n# Page 729\n\t\tSET\tCALL\n\t\t\tP39/79SW\n\t\t\tSELECTMU\t# SELECT MU, CLEAR FINALFLG, GO TO VN1645\nP39/P79B\tRTB\tDAD\n\t\t\tLOADTIME\n\t\t\tKT\n\t\tSTORE\tTIG\t\t# TIG = T (PRESENT) + PREPARATION TIME\n\t\tSTCALL\tTDEC1\t\t# PRECISION UPDATE ACTIVE AND PASSIVE\n\t\t\tPRECSET\t\t# \tVEHICLES TO TIG\n\t\tCALL\n\t\t\tS34/35.1\t# GET UNIT NORMAL\n\t\tDLOAD\tGOTO\n\t\t\tTARGTIME\n\t\t\tMAINRTNE\t# CALCULATE DELTA V AND DELTA V (LV)\n\n# .... PREC/TT ....\n# SUBROUTINES USED\n#\n#\tPRECSET\n#\tTIMETHET\n#\tS34/35.1\n\nPREC/TT\t\tSTQ\tDLOAD\n\t\t\tRTRN\n\t\t\tTIG\n\t\tSTCALL\tTDEC1\t\t# PRECISION UPDATE ACTIVE AND PASSIVE\n\t\t\tPRECSET\t\t#\tVEHICLES TO TIG\n\t\tVLOAD\tVSR*\n\t\t\tRPASS3\n\t\t\t0,2\n\t\tSTODL\tRVEC\n\t\t\tCENTANG\n\t\tPUSH\tCOS\n\t\tSTODL\tCSTH\n\t\tSIN\tSET\n\t\t\tRVSW\n\t\tSTOVL\tSNTH\n\t\t\tVPASS3\n\t\tVSR*\n\t\t\t0,2\n\t\tSTCALL\tVVEC\t\t# GET TRANSFER TIME BASED ON CENTANG OF\n\t\t\tTIMETHET\t#\tPASSIVE VEHICLE\n\t\tCALL\n\t\t\tS34/35.1\t# GET UNIT NORMAL\n\t\tDLOAD\tGOTO\n\t\t\tT\n\t\t\tRTRN\n\n# .... INTRPVP ....\n# SUBROUTINES USED\n#\n#\tCSMPREC\n# Page 730\n#\tLEMPREC\n\nINTRPVP\t\tSTQ\tBOFF\t\t# PRECISION UPDATE PASSIVE VEHICLE TO\n\t\t\tRTRN\t\t#\tTDEC1\n\t\t\tAVFLAG\n\t\t\tOTHERV\n\t\tCALL\n\t\t\tCSMPREC\n\t\tGOTO\n\t\t\tRTRN\nOTHERV\t\tCALL\n\t\t\tLEMPREC\n\t\tGOTO\n\t\t\tRTRN\n\n# .... VNDSPLY ....\n# SUBROUTINES USED\n#\n#\tBANKCALL\n#\tGOFLASH\n#\tGOTOPOOH\n\nVNDSPLY\t\tEXTEND\t\t\t# FLASH DISPLAY\n\t\tQXCH\tRTRN\n\t\tTS\tVERBNOUN\n\t\tCA\tVERBNOUN\n\t\tTCR\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTC\tRTRN\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE\nV06N33SR\tVN\t0633\nV06N55SR\tVN\t0655\nV04N06SR\tVN\t0406\nV06N57SR\tVN\t0657\nV06N34SR\tVN\t0634\nV06N58SR\tVN\t0658\nV06N81SR\tVN\t0681\nDECTWO\t\tOCT\t2\n\n# *** END OF KISSING  .050 ***\n\n\n"
  },
  {
    "path": "Luminary099/SYSTEM_TEST_STANDARD_LEAD_INS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tSYSTEM_TEST_STANDARD_LEAD_INS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t370-372\n# Mod history:\t2009-05-17 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 370\n\t\tEBANK=\tXSM\n\n\t\tBANK\t33\n\t\tSETLOC\tE/PROG\n\t\tBANK\n\n\t\tCOUNT*\t$$/P07\n\n# SPECIAL PROGRAMS TO EASE THE PANGS OF ERASABLE MEMORY PROGRAMS.\n#\n# E/BKCALL\tFOR DOING BANKCALLS FROM AND RETURNING TO ERASABLE.\n#\n# THIS ROUTINE IS CALLABLE FROM ERASABLE OR FIXED.  LIKE BANKCALL, HOWEVER, SWITCHING BETWEEN S3 AND S4\n# IS NOT POSSIBLE.\n#\n# THE CALLING SEQUENCE IS:\n#\n#\tTC\tBANKCALL\n#\tCADR\tE/BKCALL\n#\tCADR\tROUTINE\t\t# WHERE TO WANT TO GO IN FIXED.\n#\tRETURN HERE FROM DISPLAY TERMINATE, BAD STALL OR TC Q.\n#\tRETURN HERE FROM DISPLAY PROCEED OR GOOD RETURN FROM STALL.\n#\tRETURN HERE FROM DISPLAY ENTER OR RECYCLE.\n#\n# THIS ROUTINE REQUIRES TWO ERASABLES (EBUF2, +1) IN UNSWITCHED WHICH ARE UNSHARED BY INTERRUPTS AND\n# OTHER EMEMORY PROGRAMS.\n#\n# A + L ARE PRESERVED THROUGH BANKCALL AND E/BKCALL.\n\nE/BKCALL\tDXCH\tBUF2\t\t# SAVE A,L AND GET DP RETURN.\n\t\tDXCH\tEBUF2\t\t# SAVE DP RETURN.\n\t\tINCR\tEBUF2\t\t# RETURN +1 BECAUSE DOUBLE CADR.\n\t\tCA\tBBANK\n\t\tMASK\tLOW10\t\t# GET CURRENT EBANK.  (SBANK SOMEDAY)\n\t\tADS\tEBUF2\t+1\t# FORM BBCON.  (WAS FBANK)\n\t\tNDX\tEBUF2\n\t\tCA\t0 \t-1\t# GET CADR OF ROUTINE.\n\t\tTC\tSWCALL\t\t# GO TO ROUTINE, SETTING Q TO SWRETURN\n\t\t\t\t\t# AND RESTORING A + L.\n\t\tTC\t+4\t\t# TX Q, V34, OR BAD STALL RETURN.\n\t\tTC\t+2\t\t# PROCEED OR GOOD STALL RETURN.\n\t\tINCR\tEBUF2\t\t# ENTER OR RECYCLE RETURN.\n\t\tINCR\tEBUF2\nE/SWITCH\tDXCH\tEBUF2\n\t\tDTCB\n\n# Page 371\n# E/CALL\tFOR CALLING A FIXED MEMORY INTERPRETIVE SUBROUTINE FROM ERASABLE AND RETURNING TO ERASABLE.\n#\n# THE CALLING SEQUENCE IS...\n#\n#\tRTB\n#\t\tE/CALL\n#\tCADR\tROUTINE\t\t\t# THE INTERPRETIVE SUBROUTINE YOU WANT.\n#\t\t\t\t\t# RETURNS HERE IN INTERPRETIVE.\n\nE/CALL\t\tLXCH\tLOC\t\t# ADRES -1 OF CADR.\n\t\tINDEX\tL\n\t\tCA\tL\t\t# CADR IN A.\n\t\tINCR\tL\n\t\tINCR\tL\t\t# RETURN ADRES IN L.\n\t\tDXCH\tEBUF2\t\t# STORE CADR AND RETURN\n\t\tTC\tINTPRET\n\t\tCALL\n\t\t\tEBUF2\t\t# INDIRECTLY EXECUTE ROUTINE.  IT MUST\n\t\tEXIT\t\t\t# LEAVE VIA RVQ OR EQUIVALENT.\n\t\tLXCH\tEBUF2\t+1\t# PICK UP RETURN.\n\t\tTCF\tINTPRET\t+2\t# SET LOC AND RETURN TO CALLER.\n\n# Page 372\n# E/JOBWAK\tFOR WAKING UP ERASABLE MEMORY JOBS.\n#\n# THIS ROUTINE MUST BE CALLED IN INTERRUPT OR WITH INTERRUPTS INHIBITED.\n#\n# THE CALLING SEQUENCE IS:\n#\n#\tINHINT\n#\t...\n#\tCA\tWAKEADR\t\t# ADDRESS OF SLEEPING JOB\n#\tTC\tIBNKCALL\n#\tCADR\tE/JOBWAK\n#\t...\t\t\t# RETURNS HERE\n#\tRELINT\t\t\t# IF YOU DID AND INHINT.\n\n\t\tBANK\t33\n\t\tSETLOC\tE/PROG\n\t\tBANK\n\n\t\tCOUNT*\t $$/P07\n\nE/JOBWAK\tTC\tJOBWAKE\t\t# ARRIVE IWTH ADRES IN A.\n\t\tCS\tBIT11\n\t\tNDX\tLOCCTR\n\t\tADS\tLOC\t\t# KNOCK FIXED MEMORY BIT OUT OF ADRES.\n\t\tTC\tRUPTREG3\t# RETURN\n\n"
  },
  {
    "path": "Luminary099/T4RUPT_PROGRAM.agc",
    "content": "# Copyright:    Public domain.\n# Filename:     T4RUPT_PROGRAM.agc\n# Purpose:      Part of the source code for Luminary 1A build 099.\n#               It is part of the source code for the Lunar Module's (LM)\n#               Apollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:    yaYUL\n# Contact:      Hartmuth Gutsche <hgutsche@xplornet.com>.\n# Website:      www.ibiblio.org/apollo.\n# Pages:        155-189\n# Mod history:  2009-05-19 HG   Transcribed from page images.\n#\t\t2010-12-31 JL\tFixed page number comment.\n#\t\t2011-01-06 JL\tFixed indentation of TNONTEST. Fixed pseudo-label indentation.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#       Assemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#       16:27 JULY 14, 1969\n# Page 155\n\t\tBANK\t12\n\t\tSETLOC\tT4RUP\n\t\tBANK\n\n\t\tEBANK=\tM11\n\t\tCOUNT*\t$$/T4RPT\nT4RUPT\t\tTS\tBANKRUPT\n\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tCCS\tDSRUPTSW\t# GOES 7(-1)0 AROUND AND AROUND\n\t\tTCF\tNORMT4 +1\n\t\tTCF\tNORMT4\n\n\t\tTCF\tQUIKDSP\n\nNORMT4\t\tCAF\tSEVEN\n\t\tTS\tRUPTREG1\n\t\tTS\tDSRUPTSW\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG10\n\t\tBANK\n\n\t\tCOUNT*\t$$/T4RPT\n100MRUPT\t=\tOCT37766\t# (DEC 16374)\n\t\t# RELTAB IS A PACKED TABLE. RELAYWORD CODE IN UPPER 4 BITS, RELAY CODE\n\t\t# IN LOWER 5 BITS.\n\nRELTAB\t\tOCT\t04025\n\t\tOCT\t10003\n\t\tOCT\t14031\n\t\tOCT\t20033\n\t\tOCT\t24017\n\t\tOCT\t30036\n\t\tOCT\t34034\n\t\tOCT\t40023\n\t\tOCT\t44035\n\t\tOCT\t50037\n\t\tOCT\t54000\nRELTAB11\tOCT\t60000\n\n# Page 156\n\t\t# SWITCHED-BANK PORTION\n\n\t\tBANK\t12\n\t\tSETLOC\tT4RUP\n\t\tBANK\n\n\t\tCOUNT*\t$$/T4RPT\nCDRVE\t\tCCS\tDSPTAB +11D\n\t\tTC\tDSPOUT\n\t\tTC\tDSPOUT\n\n\t\tXCH\tDSPTAB +11D\n\t\tMASK\tLOW11\n\t\tTS\tDSPTAB +11D\n\t\tAD\tRELTAB11\n\t\tEXTEND\n\t\tWRITE\tOUT0\n\t\tTC\tHANG20\n\n# Page 157\n\t\t# DSPOUT PROGRAM, PUTS OUT DISPLAYS\n\nDSPOUTSB\tTS\tNOUT\n\t\tCS\tZERO\n\t\tTS\tDSRUPTEM\t# SET TO -0 FOR 1ST PASS THRU DSPTAB\n\t\tXCH\tDSPCNT\n\t\tAD\tNEG0\t\t# TO PREVENT +0\n\t\tTS\tDSPCNT\nDSPSCAN\t\tINDEX\tDSPCNT\n\t\tCCS\tDSPTAB\n\t\tCCS\tDSPCNT\t\t# IF DSPTAB ENTRY +, SKIP\n\t\tTCF\tDSPSCAN\t-2\t# IF DSPCNT +, TRY AGAIN\n\t\tTCF\tDSPLAY\t\t# IF DSPTAB ENTRY -, DISPLAY\nTABLNTH\t\tOCT\t12\t\t# DEC 10, LENGTH OF DSPTAB\n\t\tCCS\tDSRUPTEM\t# IF DSRUPTEM=+0, 2ND PASS THRU DSPTAB\n120MRUPT\tDEC\t16372\t\t# (DSPCNT = 0).  +0 INTO NOUT.\n\t\tTS\tNOUT\n\t\tTC\tQ\n\t\tTS\tDSRUPTEM\t# IF DSRUPTEM=-0, 1ST PASS THRU DSPTAB\n\t\tCAF\tTABLNTH\t\t# (DSPCNT=0).+0 INTO DSRUPTEM. PASS AGAIN\n\t\tTCF\tDSPSCAN -1\n\nDSPLAY\t\tAD\tONE\n\t\tINDEX\tDSPCNT\n\t\tTS\tDSPTAB\t\t# REPLACE POSITIVELY\n\t\tMASK\tLOW11\t\t# REMOVE BITS 12 TO 15\n\t\tTS\tDSRUPTEM\n\t\tCAF\tHI5\n\t\tINDEX\tDSPCNT\n\t\tMASK\tRELTAB\t\t# PICK UP BITS 12 TO 15 OF RELTAB ENTRY\n\t\tAD\tDSRUPTEM\n\t\tEXTEND\n\t\tWRITE\tOUT0\n\n\t\tTCF\tQ+1\n\nDSPOUT\t\tCCS\tFLAGWRD5\t# IS DSKY FLAG ON\n\t\tCAF\tZERO\t\t# NO\n\t\tTCF\tNODSPOUT\t# NO\n\t\tCCS\tNOUT\t\t# YES\n\t\tTC\tDSPOUTSB\n\t\tTCF\tNODSPOUT\t# NO DISPLAY REQUESTS\n\nHANG20\t\tCS\t14,11,9\n\t\tADS\tDSRUPTSW\n\n\t\tCAF\t20MRUPT\n\nSETTIME4\tTS\tTIME4\n\n# Page 158\n\t\t# THE STATUS OF THE PROCEED PUSHBUTTON IS MONITORED EVERY 120 MILLISECONDS VIA THE CHANNEL 32 BIT 14 INBIT.\n\t\t#  THE STATE OF THIS INBIT IS COMPARED WITH ITS STATE DURING THE PREVIOUS T4RUPT AND IS PROCESSED AS FOLLOWS.\n\t\t#\tIF PREV ON AND NOW ON\t-- BYPASS.\n\t\t#\tIF PREV ON AND NOW OFF\t-- UPDATE IMODES33.\n\t\t#\tIF PREV OFF AND NOW ON\t-- UPDATE IMODES33 AND PROCESS VIA PINBALL.\n\t\t#\tIF PREV OFF AND NOW OFF\t-- BYPASS.\n\t\t# THE LOGIC EMPLOYED REQUIRES ONLY 9 MCT (APPROX. 108 MICROSECONDS) OF COMPUTER TIME WHEN NO CHANGES OCCUR.\n\nPROCEEDE\tCA\tIMODES33\t# MONITOR FOR PROCEED BUTTON\n\t\tEXTEND\n\t\tRXOR\tCHAN32\n\t\tMASK\tBIT14\n\t\tEXTEND\n\t\tBZF\tT4JUMP\t\t# NO CHANGE\n\n\t\tLXCH\tIMODES33\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tIMODES33\t# UPDATE IMODES33\n\t\tMASK\tBIT14\n\t\tCCS\tA\n\t\tTCF\tT4JUMP\t\t# WAS ON -- NOW OFF\n\n\t\tCAF\tCHRPRIO\t\t# WAS OFF -- NOW ON\n\t\tTC\tNOVAC\n\t\tEBANK=\tDSPCOUNT\n\t\t2CADR\tPROCKEY\n\n# Page 159\n\t\t# JUMP TO APPROPRIATE ONCE-PER SECOND (0.96 SEC ACTUALLY) ACTIVITY\n\nT4JUMP\t\tINDEX\tRUPTREG1\n\t\tTCF\t+1\n\n\t\tTC\tRCSMONIT\n\t\tTCF\tRRAUTCHK\n\t\tTCF\tIMUMON\n\t\tTCF\tDAPT4S\n\t\tTC\tRCSMONIT\n\t\tTCF\tRRAUTCHK\n\t\tTCF\tIMUMON\n\t\tTCF\tDAPT4S\n\n20MRUPT\t\t=\tOCT37776\t# (DEC 16382)\n\n# Page 160\n\t\t# ADDITIONAL ROUTINES FOR 20MS. KEYBOARD ACTIVITY\n\nNODSPOUT\tEXTEND\n\t\tWRITE\tOUT0\n\n\t\tCAF\t120MRUPT\t#SET FOR NEXT CCRIVE\n\t\tTCF\tSETTIME4\n\nQUIKDSP\t\tCAF\tBIT14\n\t\tMASK\tDSRUPTSW\n\t\tEXTEND\n\t\tBZF\tQUIKOFF\t\t# WROTE LAST TIME, NOW TURN OFF RELAYS.\n\n\t\tCCS\tNOUT\n\t\tTC\tDSPOUTSB\n\t\tTCF\tNODSPY\t\t# NOUT=0 OR BAD RETURN FROM DSPOUTSB\n\t\tCS\tBIT14\t\t# GOOD RETURN (WE DISPLAYED SOMETHING)\nQUIKRUPT\tADS\tDSRUPTSW\n\n\t\tCAF\t20MRUPT\n\t\tTS\tTIME4\n\n\t\tCAF\tBIT9\n\t\tADS\tDSRUPTSW\n\n\t\tTC\tRESUME\n\nNODSPY\t\tEXTEND\n\t\tWRITE\tOUT0\n\nSYNCT4\t\tCAF\t20MRUPT\n\t\tADS\tTIME4\n\n\t\tCAF\tBIT9\n\t\tADS\tDSRUPTSW\n\n\t\tCCS\tDSRUPTSW\n\t\tTC\tRESUME\nOCT37737\tOCT\t37737\n\t\tTC\tSYNCT4\n\t\tTC\tRESUME\n\nQUIKOFF\t\tEXTEND\n\t\tWRITE\tOUT0\n\t\tCAF\tBIT14\t\t# RESET DSRUPTSW TO SEND DISPLAY NEXT PASS\n\t\tTCF\tQUIKRUPT\n\n14,11,9\t\tOCT\t22400\n\n# Page 161\n# PROGRAM NAME:  IMUMON\n\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM IS ENTERED EVERY 480 MS.  IT DETECTS CHANGES OF THE IMU STATUS BITS IN\n# CHANNEL 30 AND CALLS THE APPROPRIATE SUBROUTINES.  THE BITS PROCESSED AND THEIR RELEVANT SUROUTINES ARE:\n\n#\tFUNCTION\t\tBIT\tSUBROUTINE CALLED\n#\t--------\t\t---\t-----------------\n#\tTEMP IN LIMITS\t\t 15\tTLIM\n#\tISS TURN-ON REQUEST\t 14\tITURNON\n#\tIMU FAIL\t\t 13\tIMUFAIL (SETISSW)\n#\tIMU CDU FAIL\t\t 12\tICDUFAIL (SETISSW)\n#\tIMU CAGE\t\t 11\tIMUCAGE\n#\tIMU OPERATE\t\t  9\tIMUOP\n\n# THE LAST SAMPLED STATE OF THESE BITS IS LEFT IN IMODES30.  ALSO, EACH SUBROUTINE CALLED FINDS THE NEW\n# VALUE OF THE BIT IN A, WITH Q SET TO THE PROPER RETURN LOCATION NXTIFAIL.\n\n# CALLING SEQUENCE:  T4RUPT EVERY 480 MILLISECONDS.\n\n# JOBS OR TASKS INITIATED:  NONE.\n\n# SUBROUTINES CALLED:  TLIM, TURNON, SETISSW, IMUCAGE, IMUOP.\n\n# ERASABELE INITIALIZATION:\n#\tFRESH START OR RESTART WITH NO GROUPS ACTIVE:  C((MODES30) = OCT 37411).\n#\tRESTART WITH ACTIVE GROUPS:\tC(IMODES30) = (B(IMODES30)AND(OCT 00035)) PLUS OCT 37400.\n#\t\t\t\t\tTHIS LEAVES IMU FAIL BITS INTACT.\n\n# ALARMS:  NONE.\n\n# EXIT:  TNONTEST.\n\n# OUTPUT:  UPDATED IMODES30 WITH CHANGES PROCESSED BY APPROPRIATE SUBROUTINE.\n\nIMUMON\t\tCA\tIMODES30\t# SEE IF THERE HAS BEEN A CHANGE IN THE\n\t\tEXTEND\t\t\t# RELEVANT BITS OF CHAN 30.\n\t\tRXOR\tCHAN30\n\t\tMASK\t30RDMSK\n\t\tEXTEND\n\t\tBZF\tTNONTEST\t# NO CHANGE IN STATUS\n\n\t\tTS\tRUPTREG1\t# SAVE BITS WHICH HAVE CHANGED.\n\t\tLXCH\tIMODES30\t# UPDATE IMODES30.\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tIMODES30\n\n\t\tCS\tONE\n\t\tXCH\tRUPTREG1\n\t\tEXTEND\n# Page 162\n\t\tBZMF\tTLIM\t\t# CHANGE IN IMU TEMP.\n\t\tTCF\tNXTIFBIT\t# BEGIN BIT SCAN.\n\n -1\t\tAD\tONE\t\t# (RE-ENTERS HERE FROM NXTIFAIL.)\nNXTIFBIT\tINCR\tRUPTREG1\t# ADVANCE BIT POSITION NUMBER.\n +1\t\tDOUBLE\n\t\tTS\tA\t\t# SKIP IF OVERFLOW.\n\t\tTCF\tNXTIFBIT\t# LOOK FOR BIT.\n\n\t\tXCH\tRUPTREG2\t# SAVE OVERFLOW-CORRECTED DATA.\n\t\tINDEX\tRUPTREG1\t# SELECT NEW VALUE OF THIS BIT.\n\t\tCAF\tBIT14\n\t\tMASK\tIMODES30\n\t\tINDEX\tRUPTREG1\n\t\tTC\tIFAILJMP\n\nNXTIFAIL\tCCS\tRUPTREG2\t# PROCESS ANY ADDITIONAL CHANGES.\n\t\tTCF\tNXTIFBIT -1\n\n# Page 163\n# PROGRAM NAME:  TNONTEST.\n\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM HONORS REQUESTS FOR ISS INITIALIZATION.  ISS TURN-ON (CHANNEL 30 BIT 14)\n# AND ISS OPERATE (CHANNEL 30 BIT 9) REQUESTS ARE TREATED AS A PAIR AND PROCESSING TAKES PLACE .480 SECONDS\n# AFTER EITHER ONE APPEARS.  THIS INITIALIZATION TAKES ON ONE OF THE FOLLOWING THREE FORMS:\n\n#\t1) ISS TURN-ON:  IN THIS SITUATION THE COMPUTER IS OPERATING WHEN THE ISS IS TURNED ON.  NOMINALLY,\n#\tBOTH ISS TURN-ON AND ISS OPERATE APPEAR.  THE PLATFORM IS CAGED FOR 90 SECONDS AND THE ICDU'S ZEROED\n#\tSO THAT AT THE END OF THE PROCESS THE GIMBAL LOCK MONITOR WILL FUNCTION PROPERLY.\n\n#\t2) ICDU INITIALIZATION:  IN THIS CASE THE COMPUTER WAS PROBABLY TURNED ON WITH THE ISS IN OPERATE OR\n#\tA FRESH START WAS DONE WIT THE ISS IN OPERATE.  IN THIS CASE ONLY ISS OPERATE IS ON.  THE ICDU'S ARE\n#\tZEROED SO THE GIMBAL LOCK MONITOR WILL FUNCTION.  AN EXCEPTION IS IF THE ISS IS IN GIMBAL LOCK AFTER\n#\tA RESTART, THE ICDU'S WILL NOT BE ZEROED.\n\n#\t3) RESTART WITH RESTARTABLE PROGRAM USING THE IMU:  IN THIS CASE, NO INITIALIZATION TAKES PLACE SINCE\n#\tIT IS ASSUMED THT THE USING PROGRAM DID THE INITIALIZATION AND THEREFORE T4RUPT SHOULD NOT INTERFERE.\n\n# IMODES30 BIT 7 IS SET = 1 BY THE FIRST BIT (CHANNEL 30 BIT 14 OR 9) WHICH ARRIVES.  FOLLOWING THIS, TNONTEST IS\n# ENTERED, FINDS BIT 7 = 1 BUT BIT 8 = 0, SO IT SETS BIT 8 = 1 AND EXITS.  THE NEXT TIME IT FINDS BIT 8 = 1 AND\n# PROCEEDS, SETTING BITS 8 AND 7 = 0.  AT PROCTNON, IF ISS TURN-ON REQUEST IS PRESENT, THE ISS IS CAGED (ZERO +\n# COARSE).  IF ISS OPERATE IS NOT PRESENT PROGRAM ALARM 00213 IS ISSUED.  AT THE END OF A 90 SECOND CAGE, BIT 2\n# OF IMODES30 IS TESTED.  IF IT IS = 1, ISS TURN-ON WAS NOT PRESENT FOR THE ENTIRE 90 SECONDS.  IN THAT CASE, IF\n# THE ISS TURN-ON REQUEST IS PRESENT TEH 90 SECOD WAIT IS REPEATED.  OTHERWISE NO ACTION OCURS UNLESS A PROGRAM\n# WAS WAITING FOR THE INITIALIZATION IN WHIC CASE TH PROGRAM IS GIVEN AN IMUSTALL ERROR RETURN.  IF THE DELAY\n# WENT PROPERLY, THE ISS DELAY OUTBIT IS SENT AND THE ICDU'S ZEROED.  A TASK IS INITIATED TO REMOVE THE PIPA FAIL\n# INHIBIT BIT IN 10.24 SECONDS.  IF A MISSION PROGRAM WAS WAITING IT IS INFORMED VIA ENDIMU.\n\n# AT PROCTNON, IF ONLY ISS OPERATE IS PRESENT (OPONLY), THE CDU'S ARE ZEROED UNLESS THE PLATFORM IS IN COARSE\n# ALIGN (= GIMBAL LOCK HERE) OR A MISSIN PROGRAM IS USING THE IMU (INUSEFLG = 1).\n\n# CALLING SEQUENCE:  T4RUPT EVERY 480 MILLISECONDS AFTER IMUMON.\n\n# JOBS OR TASKS INITIATED:  1) ENDTNON, 90 SECONDS AFER CAGING STARTED.  2) ISSUP, 4 SECONDS AFTER CAGING DONE.\n#\t3) PFAILOK, 10.24 SECONDS AFTER INITIALIZATION COMPLETED.  4) UNZ2, 320 MILLISECONDS AFTER ZEROING\n#\tSTARTED.\n\n# SUBROUTINES CALLED: CAGESUB, CAGESUB2, ZEROICDU, ENDIMU, IMUBAD, NOATTOFF, SETISSW, VARDELAY.\n\n# ERASABLE INITIALIZATION:  SEE IMUMON.\n\n# ALARMS:  PROGRAM ALARM 00213 IF ISS TURN-ON REQUESTED WITHOUT ISS OPERATE.\n\n# EXIT:  ENDTNON EXITS TO C33TEST.  TASKS HAVING TO DO WITH INITIALIZATION EXIT AS FOLLOWS:  MISSION PROGRAM\n# WAITING AND INITIALIZATION COMPLETE, EXIT TO ENDIMU, MISSION PROGRAM WAITING AND INITIALIZATION FAILED, EXIT TO\n# IMUBAD, IMU NOT IN USE, EXIT TO TASKOVER.\n\n# OUTPUT:  ISS INITIALIZED.\n\nTNONTEST\tCS\tIMODES30\t# AFTER PROCESSING ALL CHANGES, SEE IF IT\n# Page 164\n\t\tMASK\tBIT7\t\t# IS TIME TO ACT ON A TURN-ON SEQUENCE.\n\t\tCCS\tA\n\t\tTCF\tC33TEST\t\t# NO -- EXAMINE CHANNEL 33.\n\n\t\tCAF\tBIT8\t\t# SEE IF FIRST SAMPLE OR SECOND.\n\t\tMASK\tIMODES30\n\t\tCCS\tA\n\t\tTCF\tPROCTNON\t# REACT AFTER A SECOND SAMPLE.\n\n\t\tCAF\tBIT8\t\t# IF FIRST SAMPLE, SET BIT TO REACT NEXT\n\t\tADS\tIMODES30\t# TIME.\n\t\tTCF\tC33TEST\n\n\t\t# PROCESS IMU TURN-ON REQUESTS AFTER WAITING 1 SAMPLE FOR ALL SIGNALS TO ARRIVE.\n\nPROCTNON\tCS\tBITS7&8\n\t\tMASK\tIMODES30\n\t\tTS\tIMODES30\n\t\tMASK\tBIT14\t\t# SEE IF TURN-ON REQUEST.\n\t\tCCS\tA\n\t\tTCF\tOPONLY\t\t# OPERATE ON ONLY.\n\n\t\tCS\tIMODES30\t# IF TURN-ON REQUEST, WE SHOUD HAVE IMU\n\t\tMASK\tBIT9\t\t# OPERATE.\n\t\tCCS\tA\n\t\tTCF\t+3\n\n\t\tTC\tALARM\t\t# ALARM IF NOT\n\t\tOCT\t213\n\n +3\t\tTC\tCAGESUB\n\t\tCAF\t90SECS\n\t\tTC\tWAITLIST\n\t\tEBANK=\tM11\n\t\t2CADR\tENDTNON\n\n\t\tTCF\tC33TEST\n\nRETNON\t\tCAF\t90SECS\n\t\tTC\tVARDELAY\n\nENDTNON\t\tCS\tBIT2\t\t# RESET TURN-ON REQUEST FAIL BIT.\n\t\tMASK\tIMODES30\n\t\tXCH\tIMODES30\n\t\tMASK\tBIT2\t\t# IF IT WAS OFF, SEND ISS DELAY COMPLETE.\n\t\tEXTEND\n\t\tBZF\tENDTNON2\n\n\t\tCAF\tBIT14\t\t# IF IT WAS ON AND TURN-ON REQUEST NOW.\n# Page 165\n\t\tMASK\tIMODES30\t# PRESENT, RE-ENTER 90 SEC DELAY IN WL.\n\t\tEXTEND\n\t\tBZF\tRETNON\n\n\t\tCS\tFLAGWRD0\t# IF IT IS NOT ON NOW, SEE IF A PROG WAS\n\t\tMASK\tIMUSEBIT\t# WAITING.\n\t\tCCS\tA\n\t\tTCF\tTASKOVER\n\t\tTC\tPOSTJUMP\n\t\tCADR\tIMUBAD\t\t# UNSUCCESSFUL TURN-ON.\n\nENDTNON2\tCAF\tBIT15\t\t# SEND ISS DELAY COMPLETE.\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tTC \tIBNKCALL\t# TURN OFF NO ATT LAMP.\n\t\tCADR\tNOATTOFF\n\nUNZ2\t\tTC\tZEROICDU\n\n\t\tCS\tBITS4&5\t\t# REMOVE ZERO AND COARSE.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCAF\tBIT11\t\t# WAIT 10 SECS FOR CTRS TO FIND GIMBALS\n\t\tTC\tVARDELAY\n\nISSUP\t\tCS\tOCT54\t\t# REMOVE CAGING, IMU FAIL INHIBIT BIT, AND\n\t\tMASK\tIMODES30\t# ICDUFAIL INHIBIT FLAGS.\n\t\tTS\tIMODES30\n\n\t\tCS\tBIT6\t\t# ENABLE DAP\n\t\tMASK\tIMODES33\n\t\tTS\tIMODES33\n\n\t\tCS\tFLAGWRD2\t# TEST DRIFTFLG: IF ON DO NOTHING BECAUSE\n\t\tMASK\tDRFTBIT\t\t# IMUCOMP SHOUD BE ALL SET UP (RESTART\n\t\tEXTEND\t\t\t# WITH IMUSE DOWN).  IF OFF, SET DRIFTFLG\n\t\tBZF\t+4\t\t# AND 1/PIPADT TO GET FREEFALL IMUCOMP\n\t\tADS\tFLAGWRD2\t# GOING (FRESH START OR ISS TURN-ON).\n\t\tCA\tTIME1\n\t\tXCH\t1/PIPADT\t# CANNOT GET HERE IF RESTART WITH IMUSE UP\n\n\t\tTC\tSETISSW\t\t# ISS WARNING MIGHT HAVE BEEN INHIBITED.\n\n\t\tCS\tBIT15\t\t# REMOVE IMU DELAY COMPLETE DISCRETE.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCAF\t4SECS\t\t# DON'T ENABLE PROG ALARM ON PIP FAIL FOR\n# Page 166\n\t\tTC\tWAITLIST\t# ANOTHER 4 SECS.\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tPFAILOK\n\n\t\tTCF\tTASKOVER\n\nOPONLY\t\tCAF\tBIT4\t\t# IF OPERATE ON ONLY, AND WE ARE IN COARSE\n\t\tEXTEND\t\t\t# ALIGN, DON'T ZERO THE CDUS BECAUSE WE\n\t\tRAND\tCHAN12\t\t# MIGHT BE IN GIMBAL LOCK.\n\t\tCCS\tA\n\t\tTCF\tC33TEST\n\n\t\tCAF\tIMUSEBIT\t# OTHERWISE, ZERO THE COUNTERS.\n\t\tMASK\tFLAGWRD0\t# UNLESS SOMEONE IS USING TH IMU.\n\t\tCCS\tA\n\t\tTCF\tC33TEST\n\n\t\tTC\tCAGESUB2\t# SET TURNON FLAGS.\n\nISSZERO\t\tTC\tIBNKCALL\t# TURN OFF NO ATT LAMP.\n\t\tCADR\tNOATTOFF\t# IMU CAGE OFF ENTRY.\n\n\t\tCAF\tBIT5\t\t# ISS CDU ZERO\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\n\t\tTC\tZEROICDU\n\t\tCAF\tBIT6\t\t# WAIT 300 MS. FOR AGS TO RECEIVE SIGNAL.\n\t\tTC\tWAITLIST\n\t\tEBANK=\tM11\n\t\t2CADR\tUNZ2\n\n\t\tTCF\tC33TEST\n\n# Page 167\n# PROGRAM NAME:  C33TEST\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM MONITORS THREE FLIP-FLOP INBITS OF CHANNEL 33 AND CALLS THE APPROPRIATE\n# SUBROUTINE TO PROCESS A CHANGE.  IT IS ANALOGOUS TO IMUMON, WHICH MONITORS CHANNEL 30, EXCEPT THAT IT READS\n# CHANNEL 33 WITH A WAND INSTRUCTION BECAUSE A `WRITE' PULSE IS REQUIRED TO RESET THE FLIP-FLOPS.  THE BITS\n# PROCESSED AND THE SUBROUTINES CALLED ARE:\n#\tBIT\tFUNCTION\t\tSUBROUTINE\n#\t---\t--------\t\t----------\n#\t 13\tPIPA FAIL\t\tPIPFAIL\n#\t 12\tDOWNLINK TOO FAST\tDNTMFAST\n#\t 11\tUPLINK TOO FAST\t\tUPTMFAST\n#\n# UPON ENTRY TO THE SUBROUTINE, THE NEW BIT STATE IS IN A.\n#\n# CALLING SEQUENCE:  EVERY 480 MILLISECONDS AFTER TNONTEST.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  PIPFAIL, DNTMFAST AND UPTMFAST ON BIT CHANGES.\n#\n# ERASABLE INITIALIZATION:  C(IMODES33) = OCT 16000 ON A FRESH START OR RESTART, THEREFORE, THESE ALARMS WILL\n# REAPPEAR IF THE CONDITIONS PERSIST.\n#\n# ALARMS:  NONE.\n#\n# EXIT:  GLOCKMON.\n#\n# OUTPUT:  UPDATED BITS 13, 12, AND 11 OF IMODES33 WITH CHANGES PROCESSED.\n\nC33TEST\t\tCA\tIMODES33\t\t# SEE IF RELEVANT CHAN33 BITS HAVE\n\t\tMASK\t33RDMSK\n\t\tTS\tL\t\t\t# CHANGED.\n\t\tCAF\t33RDMSK\n\t\tEXTEND\n\t\tWAND\tCHAN33\t\t\t# RESETS FLIP-FLOP INPUTS\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tEXTEND\n\t\tBZF\tGLOCKMON\t\t# ON NO CHANGE.\n\n\t\tTS\tRUPTREG1\t\t# SAVE BITS WHICH HAVE CHANGED.\n\t\tLXCH\tIMODES33\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tTS\tIMODES33\t\t# UPDATED IMODES33.\n\n\t\tCAF\tZERO\n\t\tXCH\tRUPTREG1\n\t\tDOUBLE\n# Page 168\n\t\tTCF\tNXTIBT +1\t\t# SCAN FOR BIT CHANGES.\n\n -1\t\tAD\tONE\nNXTIBT\t\tINCR\tRUPTREG1\n +1\t\tDOUBLE\n\t\tTS\tA\t\t\t# (CODING IDENTICAL TO CHAN 30).\n\t\tTCF\tNXTIBT\n\n\t\tXCH\tRUPTREG2\n\t\tINDEX\tRUPTREG1\t\t# GET NEW VALUE OF BIT WHICH CHANGED.\n\t\tCAF\tBIT13\n\t\tMASK\tIMODES33\n\t\tINDEX\tRUPTREG1\n\t\tTC\tC33JMP\nNXTFL33\t\tCCS\tRUPTREG2\t\t# PROCESS POSSIBLE ADDITIONAL CHANGES.\n\t\tTCF\tNXTIBT -1\n\n# Page 169\n# PROGRAM NAME:  GLOCKMON\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM MONITORS THE CDUZ COUNTER TO DETERMINE WHETHER THE ISS IS IN GIMBAL LOCK\n# AND TAKES ACTION IF IT IS.  THREE REGIONS OF MIDDLE GIMBAL ANGLE (MGA) ARE USED:\n#\n#\t1) ABS(MGA) LESS THAN OR EQUAL TO 70 DEGREES -- NORMAL MODE.\n#\t2) ABS(MGA) GREATER THAN 70 DEGREES AND LESS THAN OR EQUAL TO 85 DEGREES -- GIMBAL LOCK LAMP TURNED ON.\n#\t3) ABS(MGA) GREATER THAN 85 DEGREES -- ISS PUT IN COARSE ALIGN AND NO ATT LAMP TURNED ON.\n#\n# CALLING SEQUENCE:  EVERY 480 MILLISECONDS AFTER C33TEST.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:\t1) SETCOARS WHEN ABS(MGA) GREATER THEN 85 DEGREES AND ISS NOT IN COARSE ALIGN.\n#\t\t\t2) LAMPTEST BEFORE TURNING OFF GIMBAL LOCK LAMP.\n#\n# ERASABLE INITIALIZATION:\n#\t\t1) FRESH START OR RESTART WITH NO GROUPS ACTIVE:  C(CDUZ) = 0, IMODES30 BIT 6 = 0, IMODES33 BIT 1 =  0.\n#\t\t2) RESTART WTIH GROUPS ACTIVE:\tSAME AS FRESH START EXCEPT C(CDUZ) NOT CHANGED SO GIMBAL MONITOR\n#\t\t\t\t\t\tPROCEEDS AS BEFORE.\n#\n# ALARMS:\t1) MGA REGION (2) CAUSES GIMBAL LOCK LAMP TO BE LIT.\n#\t\t2) MGA REGION (3) CAUSES THE ISS TO BE PUT IN COARSE ALIGN AND THE NO ATT LAMP TO BE LIT IF EITHER NOT\n#\t\t   SO ALREADY.\n\nGLOCKMON\tCCS\tCDUZ\n\t\tTCF\tGLOCKCHK\t\t# SEE IF MAGNITUDE OF MGA IS GREATER THAN\n\t\tTCF\tSETGLOCK\t\t# 70 DEGREES.\n\t\tTCF\tGLOCKCHK\n\t\tTCF\tSETGLOCK\n\nGLOCKCHK\tAD\t-70DEGS\n\t\tEXTEND\n\t\tBZMF\tSETGLOCK -1\t\t# NO LOCK.\n\n\t\tAD\t-15DEGS\t\t\t# SEE IF ABS(MGA) GREATER THAN 85 DEGREES\n\t\tEXTEND\n\t\tBZMF\tNOGIMRUN\n\n\t\tCAF\tBIT4\t\t\t# IF SO, SYSTEM SHOULD BE IN COARSE ALIGN\n\t\tEXTEND\t\t\t\t# TO PREVENT GIMBAL RUNAWAY.\n\t\tRAND\tCHAN12\n\t\tCCS\tA\n\t\tTCF\tNOGIMRUN\n\n\t\tTC\tIBNKCALL\n\t\tCADR\tSETCOARS\n\n\t\tCAF\tSIX\t\t\t# ENABLE ISS ERROR COUNTERS IN 60 MS.\n\t\tTC\tWAITLIST\n# Page 170\n\t\tEBANK=\tCDUIND\n\t\t2CADR\tCA+ECE\n\nNOGIMRUN\tCAF\tBIT6\t\t\t# TURN ON GIMBAL LOCK LAMP.\n\t\tTCF\tSETGLOCK\n\n -1\t\tCAF\tZERO\nSETGLOCK\tAD\tDSPTAB +11D\t\t# SEE IF PRESENT STATE OF GIMBAL LOCK LAMP\n\t\tMASK\tBIT6\t\t\t# AGREES WITH DESIRED STATE BY HALF ADDING\n\t\tEXTEND\t\t\t\t# THE TWO.\n\t\tBZF\tGLOCKOK\t\t\t# OK AS IS.\n\n\t\tMASK\tDSPTAB +11D\t\t# IF OFF, DON'T TURN ON IF IMU BEING CAGED.\n\t\tCCS\tA\n\t\tTCF\tGLAMPTST\t\t# TURN OFF UNLESS LAMP TEST IN PROGRESS.\n\n\t\tCAF\tBIT6\n\t\tMASK\tIMODES30\n\t\tCCS\tA\n\t\tTCF\tGLOCKOK\n\nGLINVERT\tCS\tDSPTAB +11D\t\t# INVERT GIMBAL LOCK LAMP.\n\t\tMASK\tBIT6\n\t\tAD\tBIT15\t\t\t# TO INDICATE CHANGE IN DSPTAB +11D.\n\t\tXCH\tDSPTAB +11D\n\t\tMASK\tOCT37737\n\t\tADS\tDSPTAB +11D\n\t\tTCF\tGLOCKOK\n\nGLAMPTST\tTC\tLAMPTEST\t\t# TURN OFF UNLESS LAMP TEST IN PROGRESS.\n\t\tTCF\tGLOCKOK\n\t\tTCF\tGLINVERT\n\n-70DEGS\t\tDEC\t-.38888\t\t\t# -70 DEGREES SCALED IN HALF-REVOLUTIONS.\n-15DEGS\t\tDEC\t-.08333\n\n# Page 171\n# PROGRAM NAME:  TLIM.\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM MAINTAINS THE TEMP LAMP (BIT 4 OF CHANNEL 11) ON THE DSKY TO AGREE WITH\n# THE TEMP SIGNAL FROM THE ISS (BIT 15 OF CHANNEL 30).  HOWEVER, THE LIGHT WILL NOT BE TURNED OFF IF A LAMP TEST\n# IS IN PROGRESS.\n#\n# CALLING SEQUENCE:  CALLED BY IMUMON ON A CHANGE OF BIT 15 OF CHANNEL 30.\n#\n# JOBS OR TASKS INITIATED:  NON.\n#\n# SUBROUTINES CALLED:  LAMPTEST.\n#\n# ERASABLE INITIALIZATION:  FRESH START AND RESTART TURN THE TEMP LAMP OFF.\n#\n# ALARMS:  TEMP LAMP TURNED ON WHEN THE IMU TEMP GOES OUT OF LIMITS.\n#\n# EXIT:  NXTIFAIL.\n#\n# OUTPUT:  SERVICE OF TEMP LAMP.\t\t  IN A, EXCEPT FOR TLIM.\n\nTLIM\t\tMASK\tPOSMAX\t\t\t# REMOVE BIT FROM WORD OF CHANGES AND SET\n\t\tTS\tRUPTREG2\t\t# DSKY TEMP LAMP ACCORDINGLY.\n\n\t\tCCS\tIMODES30\n\t\tTCF\tTEMPOK\n\t\tTCF\tTEMPOK\n\n\t\tCAF\tBIT4\t\t\t# TURN ON LAMP.\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\n\t\tTCF\tNXTIFAIL\n\nTEMPOK\t\tTC\tLAMPTEST\t\t# IF TEMP NOW OK, DON'T TURN OFF LAMP IF\n\t\tTCF\tNXTIFAIL\t\t# LAMP TEST IN PROGRESS.\n\n\t\tCS\tBIT4\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\t\t# TURN OFF LAMP\n\t\tTCF\tNXTIFAIL\n\n# Page 172\n# PROGRAM NAME:  ITURNON.\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM IS CALLED BY IMUMON WHEN A CHANGE OF BIT 14 OF CHANNEL 30 (ISS TURN-ON\n# REQUEST) IS DETECTED.  UPON ENTRY, ITURNON CHECKS IF A TURN-ON DELAY SEQUENCE HAS FAILED, AND IF SO, IT EXITS.\n# IF NOT, IT CHECKS WHETHER THE TURN-ON REQUEST CHANGE IS TO ON OR OFF.  IF ON, IT SETS BIT7 OF IMODES30 TO 1 SO\n# THAT TNONTEST WILL INITIATE THE ISS INITIALIZATION SEQUENCE.  IF OFF, THE TURN-ON DELAY SIGNAL, CHANNEL 12 BIT\n# 15, IS CHECKED AND IF IT IS ON, ITURNON EXITS.  IF THE DEALY SIGNAL IS OFF, PROGRAM ALARM 00207 IS ISSUED, BIT 2\n# OF IMODES30 IS SET TO 1 AND THE PROGRAM EXITS.\n#\n# THE SETTING OF BIT 2 OF IMODES30 (ISS DELAY SEQUENCE FAIL) INHIBITS THIS ROUTINE AND IMUOP FROM\n# PROCESSING ANY CHANGES.  THIS BIT WILL BE RESET BY THE ENDTNON ROUTINE WHEN THE CURRENT 90 SECOND DELAY PERIOD\n# ENDS.\n#\n# CALLING SEQUENCE:  FROM IMUMON WHEN ISS TURN-ON REQUEST CHANGES STATE.\n#\n# JOBS OR TASKS INITITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  ALARM, IF THE ISS TURN-ON REQUEST IS NOT PRESENT FOR 90 SECONDS.\n#\n# ERASABLE INITIALIZATION:  FRESH START AND RESTART SET BIT 15 OF CHANNEL 12 AND BITS 2 AND 7 OF IMODES30 TO 0,\n# AND BIT 14 OF IMODES30 TO 1.\n#\n# ALARMS: PROGRAM ALARM 00207 IS ISSUED IF THE ISS TURN-ON REQUEST SIGNAL IS NOT PRESENT FOR 90 SECONDS.\n#\n# EXIT:  NXTIFAIL.\n#\n# OUTPUT:  BIT 7 OF IMODES30 TO START ISS INITIALIZATION, OR BIT 2 OF IMODES30 AND PROGRAM ALARM 00207 TO INDICATE\n# A FAILED TURN-ON SEQUENCE.\n\nITURNON\t\tCAF\tBIT2\t\t# IF DELAY REQUEST HAS GONE OFF\n\t\tMASK\tIMODES30\t# PREMATURELY, DO NOT PROCESS ANY CHANGES\n\t\tCCS\tA\t\t# UNTIL THE CURRENT 90 SEC WAIT EXPIRES.\n\t\tTCF\tNXTIFAIL\n\n\t\tCAF\tBIT14\t\t# SEE IF JUST ON OR OFF.\n\t\tMASK \tIMODES30\n\t\tEXTEND\n\t\tBZF\tITURNON2\t# IF JUST ON.\n\n\t\tCAF\tBIT15\n\t\tEXTEND\t\t\t# SEE IF DELAY PRESENT DISCRETE HAS BEEN\n\t\tRAND\tCHAN12\t\t# SENT.  IF SO, ACTION COMPLETE\n\t\tEXTEND\n\t\tBZF\t+2\n\t\tTCF\tNXTIFAIL\n\n\t\tCAF\tBIT2\t\t# IF NOT, SET BIT TO INDICATE REQUEST NOT\n\t\tADS\tIMODES30\t# PRESENT FOR FULL DURATION.\n\t\tTC\tALARM\n\t\tOCT\t207\n\t\tTCF\tNXTIFAIL\n\n# Page 173\nITURNON2\tCS\tIMODES30\t# SET BIT7 TO INDICATE WAIT OF 1 SAMPLE\n\t\tMASK\tBIT7\n\t\tADS\tIMODES30\n\t\tCAF\tRRINIT\n\t\tTS\tRADMODES\n\t\tTCF\tNXTIFAIL\n\nRRINIT\t\tOCT\t00102\n\n# Page 174\n# PROGRAM NAME:  IMUCAGE.\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM PROCESSES CHANGES OF THE IMUCAGE INBIT, CHANNEL 30 BITS 11.  IF THE BIT\n# CHANGES TO 0 (CAGE BUTTON PRESSED), THE ISS IS CAGED (ICDU ZERO + COARSE ALIGN + NO ATT LAMP) UNTIL THE\n# ASTRONAUT SELECTS ANOTHER PROGRAM TO ALIGN THE ISS.  ANY PULSE TRAINS TO THE ICDU'S AND GYRO'S ARE TERMINATED,\n# THE ASSOCIATE OUTCOUNTERS ARE ZEROED AND THE GYRO'S ARE DE-SELECTED.  NO ACTION OCCURS WHEN THE BUTTON IS\n# RELEASED (INBIT CHANGES TO 1).\n#\n# CALLING SEQUENCE:  BY IMUMON WHEN IMU CAGE BIT CHANGES.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  CAGESUB.\n#\n# ERASABLE INITIALZATION:  FRESH START AND RESTART SET BIT 11 OF IMODES30 TO 1.\n#\n# ALARMS: NONE.\n#\n# EXIT:  NXTIFAIL.\n#\n# OUTPUT:  ISS CAGED, COUNTERS ZEROED, PULSE TRAINS TERMINATED AND NO ATT LAMP LIT.\n\nIMUCAGE\t\tCCS\tA\t\t# NO ACTION OF GOING OFF.\n\t\tTCF\tISSZERO\n\t\tCS\tOCT77000\t# TERMINATE ICDU, RCDU, GYRO PULSE TRAINS\n\t\tEXTEND\n\t\tWAND\tCHAN14\n\n\t\tCS\tOCT272\t\t# KNOCK DOWN DISPLAY INERTIAL DATA, IMU\n\t\tEXTEND\t\t\t# ERROR COUNTER ENABLE, ZERO ICDU, COARSE\n\t\tWAND\tCHAN12\t\t# ALIGN ENABLE, RR ERROR COUNTER ENABLE.\n\n\t\tCS \tENGONBIT\t# INSURE ENGONFLG IS CLEAR.\n\t\tMASK\tFLAGWRD5\n\t\tTS\tFLAGWRD5\n\t\tCS\tPRIO30\t\t# TURN ENGINE OFF.\n\t\tEXTEND\n\t\tRAND\tDSALMOUT\n\t\tAD\tBIT14\n\t\tEXTEND\n\t\tWRITE\tDSALMOUT\t# FORCE BIT14=1, BIT13=0.\n\n\t\tTC\tCAGESUB1\n\n\t\tTC\tIBNKCALL\t# KNOCK DOWN TRACK, REFSMMAT, DRIFT FLAGS\n\t\tCADR\tRNDREFDR\n\n\t\tCS\tZERO\n\t\tTS\tCDUXCMD\n\t\tTS\tCDUYCMD\n# Page 175\n\t\tTS\tCDUZCMD\n\t\tTS\tGYROCMD\n\n\t\tCS\tOCT740\t\t# HAVING WAITED AT LEAST 27 MCT FROM\n\t\tEXTEND\t\t\t# GYRO PULSE TRAIN TERMINATION, WE CAN\n\t\tWAND\tCHAN14\t\t# DE-SELECT THE GYROS.\n\t\tTCF\tNXTIFAIL\n\n# Page 176\n# PROGRAM NAME:  IMUOP.\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM PROCESSES CHANGES IN THE ISS OPERATE DISCRETE, BIT 9 OF CHANNEL 30.\n# IF THE INBIT CHANGES TO 0, INDICATING ISS ON, IMUOP GENERALLY SETS BIT 7 OF IMODES30 TO 1 TO REQUEST ISS\n# INITIALIZATION VIA TNONTEST.  AN EXCEPTION IS DURING A FAILED ISS DELAY DURING WHICH BIT 2 OF IMODES30 IS SET\n# TO 1 AND NO FURTHER INITIALIZATION IS REQUIRED.  WHEN THE INBIT CHANGES TO 1, INDICATING ISS OFF, IMUSEFLG IS\n# TESTED TO SEE IF ANY PROGRAM WAS USING THE ISS.  IF SO, PROGRAM ALARM 00214 IS ISSUED.\n#\n# CALLING SEQUENCE:  BY IMUMON WHEN BIT 9 OF CHANNEL 30 CHANGES.\n#\n# JOBS OR TAKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  ALARM, IF ISS IS TURNED OFF WHILE IN USE.\n#\n# ERASABLE INITIALIZATION:  ON FRESH START AND RESTART, BIT 9 OF IMODES30 IS SET TO 1 EXCEPT WHEN THE GIMBAL LOCK\n# LAMP IS ON, IN WHICH CASE IT IS SET TO 0.  THIS PREVENTS ICDU ZERO BY TNONTEST WITH THE ISS IN GIMBAL LOCK.\n#\n# ALARMS:  PROGRAM ALARM 00214 IF THE ISS IS TURNED OFF WHILE IN USE.\n#\n# EXIT:  NXTIFAIL.\n#\n# OUTPUT:  ISS INITIALIZATION REQUEST (IMODES30 BIT 7) OR PROGRAM ALARM 00214.\n\nIMUOP\t\tEXTEND\n\t\tBZF\tIMUOP2\n\n\t\tCS\tIMODES33\t\t# DISABLE DAP\n\t\tMASK\tBIT6\n\t\tADS\tIMODES33\n\n\t\tTC\tIBNKCALL\t\t# KNOCK DOWN TRACK, REFSMMAT, DRIFT FLAGS\n\t\tCADR\tRNDREFDR\n\n\t\tCS\tBITS7&8\t\t\t# KNOCK DOWN RENDEZVOUS, IMUUSE FLAGS\n\t\tMASK\tFLAGWRD0\n\t\tXCH\tFLAGWRD0\t\t# IF GOING OFF, ALARM IF PROG USING IMU.\n\t\tCOM\n\t\tMASK\tIMUSEFLG\n\t\tCCS\tA\n\t\tTCF\tNXTIFAIL\n\n\t\tTC\tALARM\n\t\tOCT\t214\n\t\tTCF\tNXTIFAIL\n\nIMUOP2\t\tCAF\tBIT2\t\t\t# SEE IF FAILED ISS TURN-ON SEQ IN PROG.\n\t\tMASK\tIMODES30\n\t\tCCS\tA\n\t\tTCF\tNXTIFAIL\t\t# IF SO, DON'T PROCESS UNTIL PRESENT 90\n\t\tTCF\tITURNON2\t\t# SECONDS EXPIRES.\n\n# Page 177\n# PROGRAM NAME:  PIPFAIL\n#\n# FUNCITONAL DESCRIPTION:  THIS PROGRAM PROCESSES CHANGES OF BIT 13 OF CHANNEL 33, PIPA FAIL.  IT SETS BIT 10 OF\n# IMODES30 TO AGREE.  IT CALLS SETISSW IN CASE A PIPA FAIL NECESSITATES AN ISS WARNING.  IF NOT, I.E., IMODES30\n# BIT 1 = 1, AND A PIPA FAIL IS PRESENT AND THE ISS NOT BEING INITIALIZED, PROGRAM ALARM 0212 IS ISSUED.\n#\n# CALLING SEQUENCE:  BY C33TEST ON CHANGES OF CHANNEL 33 BIT 13.\n#\n# JOBS OR TASKS INITIATED:  NONE.\n#\n# SUBROUTINES CALLED:  1) SETISSW, AND 2) ALARM (SEE FUNCITONAL DESCRIPTION).\n#\n# ERASABLE INITIALZIZATION:  SEE IMUMON FOR INITIALIZATION OF IMODES30.  THE RELEVANT BITS ARE 5, 7, 8, 9, AND 10.\n#\n# ALARMS:  PROGRAM ALARM 00212 IF PIPA FAIL IS PRESENT BUT NEITHER ISS WARNING IS TO BE ISSUED NOR THE ISS IS\n# BEING INITIALIZED.\n#\n# EXIT:  NXTFL33.\n#\n# OUTPUT:  PROGRAM ALARM 00212 AND ISS WARNING MAINTENANCE.\n\nPIPFAIL\t\tCCS\tA\t\t\t# SET BIT10 IN IMODES30 SO ALL ISS WARNING\n\t\tCAF\tBIT10\t\t\t# INFO IS IN ONE REGISTER.\n\t\tXCH\tIMODES30\n\t\tMASK\t-BIT10\n\t\tADS\tIMODES30\n\n\t\tTC\tSETISSW\n\n\t\tCS\tIMODES30\t\t# IF PIP FAIL DOESN'T LIGHT ISS WARNING, DO\n\t\tMASK\tBIT1\t\t\t# A PROGRAM ALARM IF IMU OPERATING BUT NOT\n\t\tCCS\tA\t\t\t# CAGED OR BEING TURNED ON.\n\t\tTCF\tNXTFL33\n\n\t\tCA\tIMODES30\n\t\tMASK\tOCT1720\n\t\tCCS\tA\n\t\tTCF\tNXTFL33\t\t\t# ABOVE CONDITION NOT MET.\n\n\t\tTC\tALARM\n\t\tOCT\t212\n\t\tTCF\tNXTFL33\n\n# Page 178\n# PROGRAM NAMES:  DNTMFAST, UPTMFAST\n#\n# FUNCTIONAL DESCRIPTION:  THESE PROGRAMS PROCESS CHANGES OF BITS 12 AND 11 OF CHANNEL 33.  IF A BIT CHANGES TO A\n# 0, A PROGRAM ALARM IS ISSUED.  THE LAARMS ARE:\n#\n#\tBIT\tALARM\tCAUSE\n#\t---\t-----\t-----\n#\t 12\t01105\tDOWNLINK TOO FAST\n#\t 11\t01106\tUPLINK TOO FAST\n#\n# CALLING SEQUENCE:  BY C33TEST ON A BIT CHANGE.\n#\n# SUBROUTINES CALLED:  ALARM, IF A BIT CHANGES TO A 0.\n#\n# ERASABLE INITIALIZATION:  FRESH START OR RESTART, BITS 12 AND 11 OF IMODES33 ARE SET TO 1.\n#\n# ALARMS:  SET FUNCTGIONAL DESCRIPTION.\n#\n# EXIT:  NXTFL33.\n#\n# OUTPUT:  PROGRAM ALARM ON A BIT CHANGE TO 0.\n\nDNTMFAST\tCCS\tA\t\t\t# DO PROG ALARM IF TM TOO FAST.\n\t\tTCF\tNXTFL33\n\n\t\tTC\tALARM\n\t\tOCT\t1105\n\t\tTCF\tNXTFL33\n\nUPTMFAST\tCCS\tA\t\t\t# SAME AS DNLINK TOO FAST WITH DIFFERENT\n\t\tTCF\tNXTFL33\t\t\t# ALARM CODE.\n\n\t\tTC\tALARM\n\t\tOCT\t1106\n\t\tTCF\tNXTFL33\n# Page 179\n# PROGRAM NAME:  SETISSW\n#\n# FUNCTIONAL DESCRIPTION:  THIS PROGRAM TURNS THE ISS WARNING LAMP ON AND OFF (CHANNEL 11 BIT 1 = 1 FOR ON,\n# 0 FOR OFF) DEPENDING ON THE STATUS OF IMODES30 BITS 13 (IMU FAIL) AND 4 (INHIBIT IMU FAIL), 12 (ICDU FAIL) AND\n# 3 (INHIBIT ICDU FAIL), AND 10 (PIPA FAIL) AND 1 (INHIBIT PIPA FAIL).  THE LAMP IS LEFT ON IF A LAMP TEST IS IN\n# PROGRESS.\n#\n# CALLING SEQUENCE:  CALLED BY IMUMON ON CHANGES TO IMU FAIL AND ICDU FAIL.  CALLED BY IFAILOK AND PFAILOK UPON\n# REMOVAL OF THE FAIL INHIBITS.  CALLED BY PIPFAIL WHEN THE PIPA FAIL DISCRETE CHANGES.  IT IS CALLED BY PIPUSE\n# SINCE THE PIPA FAIL PROGRAM ALARM MAY NECESSITATE AN ISS WARNING, AND LIKEWISE BY PIPFREE WHEN THE ALARM DEPARTS\n# AND IT IS CALLED BY IMUZERO3 AND ISSUP AFTER THE FAIL INHIBITS HAVE BEEN REMOVED.\n#\n# JOBS OR TASKS INITIAZTED:  NONE.\n#\n# SUBROUTINES CALLED:  NONE.\n#\n# ERASABLE INITIALIZATION:\n#\n#\t1) IMODES30 -- SEE IMUMON.\n#\t2) IMODES33 BIT 1 = 0 (LAMP TEST NOT IN PROGRESS).\n#\n# ALARMS:  ISS WARNING.\n#\n# THE FOLLOWING PROGRAM ALARMS WILL SHOW WHICH FAILURE CAUSED THE ISS WARN\n#\tPROGRAM ALARM 00777\tPIPA FAIL\n#\tPROGRAM ALARM 03777\tICDU FAIL\n#\tPROGRAM\tALARM 04777\tICDU, PIPA FAILS\n#\tPROGRAM ALARM 07777\tIMU FAIL\n#\tPROGRAM ALARM 10777\tIMU, PIPA FAILS\n#\tPROGRAM ALARM 13777\tIMU, ICDU FAILS\n#\tPROGRAM ALARM 14777\tIMU, ICDU, PIPA FAILS\n#\n# EXIT: VIA Q.\n#\n# OUTPUT: ISS WARNING LAMP SET PROPERLY.\n\nSETISSW\t\tCAF\tOCT15\t\t\t# SET ISS WARNING USING THE FAIL BITS IN\n\t\tMASK\tIMODES30\t\t# BITS 13, 12, AND 10 OF IMODES30 AND THE\n\t\tEXTEND\t\t\t\t# FAILURE INHIBIT BITS IN POSITIONS\n\t\tMP\tBIT10\t\t\t# 4, 3, AND 1.\n\t\tCA\tIMODES30\n\t\tEXTEND\n\t\tROR\tLCHAN\t\t\t# 0 INDICATES FAILURE\n\t\tCOM\n\t\tMASK\tOCT15000\n\t\tCCS\tA\n\t\tTCF\tISSWON\t\t\t# FAILURE.\n\nISSWOFF\t\tCAF\tBIT1\t\t\t# DON'T TURN OFF ISS WARNING IF LAMP TEST\n\t\tMASK\tIMODES33\t\t# IN PROGRESS.\n# Page 180\n\t\tCCS\tA\n\t\tTC\tQ\n\n\t\tCS\tBIT1\n\t\tEXTEND\n\t\tWAND\tDSALMOUT\n\t\tTC\tQ\n\nISSWON\t\tEXTEND\n\t\tQXCH\tITEMP6\n\t\tTC\tVARALARM\t\t# TELL EVERYONE WHAT CAUSED THE ISS WARNING\n\t\tCAF\tBIT1\n\t\tEXTEND\n\t\tWOR\tDSALMOUT\n\t\tTC\tITEMP6\n\nCAGESUB\t\tCS\tBITS6&15\t\t# SET OUTBITS AND INTERNAL FLAGS FOR\n\t\tEXTEND\t\t\t\t# SYSTEM TURN-ON OR CAGE.  DISABLE THE\n\t\tWAND\tCHAN12\t\t\t# ERROR COUNTER AND REMOVE THE IMU DELAY COMP.\n\t\tCAF\tBITS4&5\t\t\t# SEND ZERO AND COARSE.\n\t\tEXTEND\n\t\tWOR\tCHAN12\n\nCAGESUB1\tCS\tDSPTAB +11D\t\t# TURN ON NO ATT LAMP\n\t\tMASK\tOC40010\n\t\tADS\tDSPTAB +11D\n\nCAGESUB2\tCS\tIMODES30\t\t# SET FLAGS TO INDICATE CAGING OR TURN-ON\n\t\tMASK\tOCT75\t\t\t# AND INHIBIT ALL ISS WARNING INFO\n\t\tADS\tIMODES30\n\n\t\tCS\tIMODES33\t\t# DISABLE DAP AUTO AND HOLD MODES\n\t\tMASK\tBIT6\n\t\tADS\tIMODES33\n\n\t\tTC\tQ\n\nIMUFAIL\t\tEQUALS\tSETISSW\nICDUFAIL\tEQUALS\tSETISSW\n\n# Page 181\n# JUMP TABLES AND CONSTANTS.\n\nIFAILJMP\tTCF\tITURNON\t\t\t# CHANNEL 30 DISPATCH.\n\t\tTCF\tIMUFAIL\n\t\tTCF\tICDUFAIL\n\t\tTCF\tIMUCAGE\n30RDMSK\t\tOCT\t76400\t\t\t# (BIT 10 NOT SAMPLED HERE).\n\t\tTCF\tIMUOP\n\nC33JMP\t\tTCF\tPIPFAIL\t\t\t# CHANNEL 33 DISPATCH.\n\t\tTCF\tDNTMFAST\n\t\tTCF\tUPTMFAST\n\n# SUBROUTINE TO SKIP IF LAMP TEST NOT IN PROGRESS.\nLAMPTEST\tCS\tIMODES33\t\t# BIT 1 OF IMODES33 = 1 IF LAMP TEST IN\n\t\tMASK\tBIT1\t\t\t# PROGRESS.\n\t\tCCS\tA\n\t\tINCR\tQ\n\t\tTC\tQ\n\n33RDMSK\t\tEQUALS\tPRIO16\nOC40010\t\tOCT\t40010\nOCT54\t\tOCT\t54\nOCT75\t\tOCT\t75\nOCT272\t\tOCT\t00272\nBITS7&8\t\tOCT\t300\nOCT1720\t\tOCT\t1720\nOCT740\t\tOCT\t00740\nOCT15000\tEQUALS\tPRIO15\nOCT77000\tOCT\t77000\nBITS6&15\tOCT\t40040\n-BIT10\t\tOCT\t-1000\n\n90SECS\t\tDEC\t9000\n120MS\t\t=\tOCT14\t\t\t# (DEC12)\nGLOCKOK\t\tEQUALS\tRESUME\n\n# Page 182\n# PROGRAM NAME:  RRAUTCHK\n#\n# FUNCITONAL DESCRIPTION:\n# RRAUTCHK IS THE RENDEZFOUS RADAR INBIT MONITOR.  INITIALLY THE RR\n# POWER ON AUTO (CHAN 33 BIT 2) INBIT IS CHECKED.  IF NO CHANGE, THE\n# PROGRAM EXITS TO RRCDUCHK.  IF A CHANGE, RADMOES IS UPDATED\n# AND A CHECK MADE IF RR POWER HAS JUST COME ON.  IF JUST OFF, A CHECK\n# IS MADE TO SEE IF A PROGRAM WAS USING THE RR (STATE BIT 7).  IF NO,\n# THE PROGRAM EXITS TO RRCDUCHK.  IF YES, PROGRAM ALARM 00514\n# IS REQUESTED BEFORE EXITING TO RRCDUCHK.  IF RR POWER HAS JUST COME\n# ON, A CHECK IS MADE TO SEE IF A PROGRAM WAS USING THE RR (STATE BIT 7)\n# SEQUENCE.  IF NO, RADMODES IS UPDATED TO INDICATE RR CDU ZERO AND\n# RR TURN-ON SEQUENCE (BITS 13, 1).  A 10 MILLISECOND WAITLIST CALL\n# IS THEN SET FOR RRTURNON BEFORE THE PROGRAM EXITS TO NORRGMON.\n#\n# CALLING SEQUENCE:\n# T4RUPT EVERY 480 MILLISECONDS\n#\n# ERASABLE INITIALIZATION REQUIRED:\n# RADMODES, STATE.\n#\n# SUBROUTINES CALLED:\n# WAITLIST.\n#\n# JOBS OR TASKS INITIATED:\n# RRTURNON\n#\n# ALARMS:  PROGRAM ALARM 00514 -- RADAR GOES OUT OF AUTO MODE WHILE BEING\n# USED\n#\n# EXIT:  RRCDUCHK, NORRGMON\n\nRRAUTCHK\tCA\tRADMODES\t\t\t# SEE IF CHANGE IN RR AUTO MODE BIT.\n\t\tEXTEND\n\t\tRXOR\tCHAN33\n\t\tMASK\tAUTOMBIT\n\t\tEXTEND\n\t\tBZF\tRRCDUCHK\n\n\t\tLXCH\tRADMODES\t\t\t# UPDATE RADMODES.\n\t\tEXTEND\n\t\tRXOR\tLCHAN\n\t\tMASK\tOCT05776\t\t\t# CLR CONT. DES., REMODE, REPOS, CDUZERO,\n\t\tTS\tRADMODES\t\t\t# AND TURNON BITS.\n\t\tMASK\tBIT2\t\t\t\t# SEE IF JUST ON.\n\t\tCCS\tA\n\t\tTCF\tRRCDUCHK -3\t\t\t# OFF.  GO DISABLE RR CDU ERROR COUNTERS.\n\t\tCA\tOCT10001\t\t\t# SET RRCDUZRO AND TURNON BITS.\n\t\tADS\tRADMODES\n\n# Page 183\n\t\tCAF\tONE\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tRRTURNON\n\n\t\tTCF\tNORRGMON\n\nOCT05776\tOCT\t5776\n\n# Page 184\n# PROGRAM NAME:\tRRCDUCHK\n#\n# FUNCTIONAL DESCRIPTION:\n# RRCDUCHK CHECKS FOR RR CDU FAIL (CHAN 30 BIT 7).  INITIALLY THE\n# RR CDU FAIL BIT IS SAMPLED (CHAN 30 BIT 7).  IF NO CHANGE, THE\n# PROGRAM EXITS TO RRGIMON.  IF A CHANGE, THE RR AUTO MODE\n# (RADMODES BIT 2) BIT IS CHECKED.  IF NOT IN RR AUTO MODE, THE\n# PROGRAM EXITS TO NORRGMO0N.  IF IN AUTO MODE, RADMODES BIT 7\n# (RR CDU OK) IS UPDATED AND IF P-20 IS OPERATING PROGRAM ALARM 00515 IS\n# REQUESTED.  CONTROL IS TRANSFERRED TO SETTRKF TO UPDATE\n# THE TRACKER FAIL LAMP (DSPTAB+11D BIT 8).  CONTROL RETURNS TO\n# RRGIMON.\n#\n# CALLING SEQUENCE:\n# EVERY 480 MILLISECONDS FROM RRAUTCHK (VIA T4RUPT) UNLESS A\n# TURN-ON SEQUENCE HAS JUST BE INITIATED.\n#\n# ERASABLE INITIALIZATION REQUIRED:\n# RADMODES\n#\n# SUBROUTINES CALLED:\n# SETTRKF\n#\n# JOBS OR TASKS INITIATED:\n# NONE\n#\n# ALARMS:\n# TRACKER FAIL\n# PROGRAM ALARM 00515 -- RRCDU FAIL DURING P-20\n#\n# EXIT:\n# RRGIMON, NORRGMON\n\n -3\t\tCS\tBIT2\n\t\tEXTEND\n\t\tWAND\tCHAN12\t\t\t# AT TURNON, DISABLE CDU ERROR COUNTERS.\n\nRRCDUCHK\tCA\tRADMODES\t\t# LAST SAMPLED BIT IN RADMODES.\n\t\tEXTEND\n\t\tRXOR\tCHAN30\n\t\tMASK\tRCDUFBIT\n\t\tEXTEND\n\t\tBZF\tRRGIMON\n\n\t\tCAF\tAUTOMBIT\t\t# IF RR NOT IN AUTO MODE, DON'T CHANGE BIT\n\t\tMASK\tRADMODES\t\t# 7 OF RADMODES.  IF THIS WERE NOT DONE,\n\t\tCCS\tA\t\t\t# THE TRACKER FAIL MIGHT COME ON WHEN\n\t\tTCF\tNORRGMON\t\t# JUST READING LR DATA.\n\n\t\tCAF\tRCDUFBIT\t\t# SET BIT 7 OF RADMODES FOR SETTRKF.\n# Page 185\n\t\tLXCH\tRADMODES\t\t# UPDATE RADMODES.\n\t\tEXTEND\n\t\tRXOR\tL\n\t\tTS\tRADMODES\n\n\t\tCA\tRADMODES\t\t# DID RR CDU FAIL\n\t\tMASK\tRCDUFBIT\n\t\tCCS\tA\n\t\tTCF\tTRKFLCDU\t\t# NO\n\t\tCS\tFLAGWRD0\t\t# RNDVFLG P20 OR P22 OPERATING\n\t\tMASK\tRNDVZBIT\n\t\tCCS\tA\n\t\tTCF\tTRKFLCDU\t\t# NO\n\t\tTC\tALARM\t\t\t# YES\n\t\tOCT\t00515\nTRKFLCDU\tTC\tSETTRKF\t\t\t# UPDATE TRAKER FAIL LAMP ON DSKY.\n\n# Page 186\n# PROGRAM NAME:  RRGIMON\n#\n# FUNCTIONAL DESCRIPTION:\n# RRGIMON IS THE RR GIMBAL LIMIT MONITOR.  INITIALLY THE FOLLOWING IS\n# CHECKED:  REMOD, RR CDU'S BEING ZEROED, REPOSITION, AND RR\n# NOT IN AUTO MODE (RADMODES BITS 14, 13, 11, 2).  IF ANY OF THESE\n# EXIST THE PROGRAM EXITS TO GPMATRIX.  IF NONE ARE PRESENT RRLIMCHK\n# IS CALLED TO SEE IF THE PRESENT RR CDU ANGLES (OPTY, OPTX) ARE WITHIN\n# THE LIMITS OF THE CURRENT MODE.  IF WITHIN LIMITS, THE PROGRAM EXITS\n# TO NORRGMON.  IF NOT WITHIN LIMITS, THE REPOSITION FLAG (RADMODES\n# BIT 11) IS SET, THE RR AUTO TRACKER AND RR ERROR COUNTER\n# (CHAN 12 BITS 14, 2) ARE DISABLED, AND A 20 MILLISECOND WAITLIST\n# CALL IS SET FOR DORREPOS AFTER WHICH THE PROGRAM EXITS TO NORRGMON.\n#\n# CALLING SEQUENCE:\n# EVERY 480 MILLISECONDS FROM RRCDUCHK (VIA T4RUPT) UNLESS TURN-ON\n# HAS JUST BEEN INITIATED VIA RRAUTCHK OR IF THERE HAS BEEN A CHANGE IN\n# THE RR CDU FAIL BIT (CHAN 30 BIT 7) AND THE RR IS NOT IN THE AUTO MODE\n# (RADMODES BIT 2).\n#\n# ERASABLE INITIALZATION:  RADMODES\n#\n# SUBROUTINES CALLED:\n# RRLIMCHK, WAITLIST\n#\n# JOBS OR TASKS INITIATED:\n# DORREPOS\n#\n# ALARMS:\n# NONE\n#\n# EXIT:\n# NORRGMON\n\nRRGIMON\t\tCAE\tFLAGWRD5\t\t\t# IS NO ANGLE MONITOR FLAG SET\n\t\tMASK\tNORRMBIT\n\t\tCCS\tA\n\t\tTCF\tNORRGMON\t\t\t# YES -- SKIP LIMIT CHECK\n\t\tCS\tFLAGWRD7\t\t\t# IS SERVICER RUNNING?\n\t\tMASK\tAVEGFBIT\n\t\tCCS\tA\n\t\tTCF\t+5\t\t\t\t# NO. DO R25\n\t\tCA\tFLAGWRD6\t\t\t# YES. IS MUNFLAG SET?\n\t\tMASK\tMUNFLBIT\n\t\tCCS\tA\n\t\tTCF\tNORRGMON\t\t\t# YES. DON'T DO R25\n +5\t\tCAF\tOCT32002\t\t\t# INHIBIT BY REMODE, ZEROING, MONITOR.\n\t\tMASK\tRADMODES\t\t\t# OR RR NOT IN AUTO.\n\t\tCCS\tA\n\t\tTCF\tNORRGMON\n# Page 187\n\t\tTC\tRRLIMCHK\t\t\t# SET IF ANGLES IN LIMITS.\n\t\tADRES\tCDUT\n\n\t\tTCF\tMONREPOS\n\n\t\tTCF\tNORRGMON\t\t\t# (ADDITIONAL CODING MAY GO HERE).\n\nMONREPOS\tCAF\tREPOSBIT\t\t\t# SET FLAG TO SHOW REPOSITION IN PROGRESS.\n\t\tADS\tRADMODES\n\n\t\tCS\tOCT20002\t\t\t# DISABLE TRACKER AND ERROR COUNTER.\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\n\t\tCAF\tTWO\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLOSCOUNT\n\t\t2CADR\tDORREPOS\n\n\t\tTCF\tNORRGMON\n\nOCT32002\tOCT\t32002\nOCT20002\tOCT\t20002\nOCT02100\tOCT\t02100\t\t\t\t# P20, P22 MASK BITS.\n\n# Page 188\n# PROGRAM NAME:  GPMATRIX (DAPT4S) MCD. NO. 2 DATE: OCTOBER 27, 1966\n#\n# AUTHOR:  JOHNATHAN D. ADDLELSTON (ADAMS ASSOCIATES)\n#\n# MODIFIED:  7FEB. 1968 BY P. S. WEISSMAN TO DELETE COMPUTATION OF MR12 AND MR13, WHICH ARE NO LONGER REQUIRED.\n#\n# THIS PROGRAM CALCULATES ALL THE SINGLE-PRECISION MATRIX ELEMENTS WHICH ARE USED BY LEM DAP TO TRANSFORM VECTORS\n# FROM GIMBAL TO PILOT (BODY) AXES AND BACK AGAIN.  THESE ELEMENTS ARE USED EXCLUSIVELY BY BASIC LANGUAGE ROUTINES\n# AND THEREFORE ARE NOT ARRAYED FOR USE BY INTERPRETIVE PROGRAMS.\n#\n# CALLING SEQUENCE:  GPMATRIX IS TRANSFERRED TO FROM DAPT4S AND IS THUS EXECUTED 4 TIMES A SECOND BY T4RUPT.\n# DAPT4S IS LISTED IN T4JUMP TABLE TWICE EXPLICITLY AND ALSO OCCURS AFTER RRAUTCHK (WHICH IS ALSO LISTED TWICE).\n#\n# SUBROUTINES CALLED: SPSIN, SPCOS.\n#\n# NORMAL EXIT MODE:  TCF RESUME\n#\n# ALARM AND ABORT MODES:  NONE.\n#\n# INPUT: CDUX, CDUY, CDUZ.\n#\n# OUTPUT:  M11, M21, M32, M22, M32.\n#\n# AOG = CDUX, AIG = CDUY, AMG = CDUZ: MNEMONIC IS : OIM = XYZ\n#\n#\t\t*\t*\tSING(MG)\t\t0\t\t\t1\t*\n#\t\tM   =\t*\tCOS(MG)COS(OG)\t\tSIN(OG)\t\t\t0\t*\n#\t\t GP\t*\t-COS(MG)SIN(OG)\t\tCOS(OG)\t\t\t0\t*\n#\n#\t\t*\t*\t0\t\t\tCOS(OG)/COS(MG)\t\t-SIN(OG)/COS(MG)\t*\n#\t\tM   =\t*\t0\t\t\tSIN(OG)\t\t\tCOS(OG)\t\t\t*\n#\t\t PG\t*\t1\t\t\t-SIN(MG)COS(OG)/COS(MG)\tSIN(MG)SIN(OG)/COS(MG)\t*\n\n\t\tEBANK=\tM11\nDAPT4S\t\tEQUALS\tGPMATRIX\n\n# T4RUPT DAP LOGIC:\n\nGPMATRIX\tCAE\tCDUZ\t\t\t# SINGLE ENTRY POINT\n\t\tTC\tSPSIN\t\t\t# SIN(CDUZ) = SIN(MG)\n\t\tTS\tM11\t\t\t# SCALED AT 1\n\n\t\tCAE\tCDUZ\n\t\tTC\tSPCOS\t\t\t# COS(CDUZ) = COS(MG)\n\t\tTS\tCOSMG\t\t\t# SCALED AT 1 (ONLY A FACTOR)\n\n\t\tCAE\tCDUX\n\t\tTC\tSPSIN\t\t\t# SIN(CDUX) = SIN(OG)\n\t\tTS\tM22\t\t\t# SCALED AT 1 (ALSO IS MR22)\n\n\t\tCS\tM22\n# Page 189\n\t\tEXTEND\n\t\tMP\tCOSMG\t\t\t# -SIN(OG)COS(MG)\n\t\tTS\tM31\t\t\t# SCALED AT 1\n\n\t\tCAE\tCDUX\n\t\tTC\tSPCOS\t\t\t# COS(CDUX) = COS(OG)\n\t\tTS\tM32\t\t\t# SCALED AT 1 (ALSO IS MR23)\n\n\t\tEXTEND\n\t\tMP\tCOSMG\t\t\t# COS(OG)COS(MG)\n\t\tTS\tM21\t\t\t# SCALED AT 1\n\n\t\tTC\tRESUME\n\nNORRGMON\tEQUALS\tDAPT4S\nENDDAPT4\tEQUALS\tRESUME\n"
  },
  {
    "path": "Luminary099/T6-RUPT_PROGRAMS.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tT6-RUPT_PROGRAMS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1403-1405\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1403\n# PROGRAM NAMES:\t(1) T6JOBCHK\tMOD. NO. 5\tOCTOBER 2, 1967\n#\t\t\t(2) DOT6RUPT\n# MODIFICATION BY:\tLOWELL G. HULL (A.C.ELECTRONICS)\n#\n# THESE PROGRAMS ENABLE THE LM DAP TO CONTROL THE THRUST TIMES OF THE REACTION CONTROL SYSTEM JETS BY USING TIME6.\n# SINCE THE LM DAP MAINTAINS EXCLUSIVE CONTROL OVER TIME6 AND ITS INTERRUPTS, THE FOLLOWING CONVENTIONS HAVE BEEN\n# ESTABLISHED AND MUST NOT BE TAMPERED WITH:\n#\t1.\tNO NUMBER IS EVER PLACED INTO TIME6 EXCEPT BY LM DAP.\n#\t2.\tNO PROGRAM OTHER THAN LM DAP ENABLES THE TIME6 COUNTER.\n#\t3.\tTO USE TIME6, THE FOLLOWING SEQUENCE IS ALWAYS EMPLOYED:\n#\t\tA.\tA POSITIVE (NON-ZERO) NUMBER IS STORED IN TIME6.\n#\t\tB.\tTHE TIME6 CLOCK IS ENABLED.\n#\t\tC.\tTIME6 IS INTERROGATED AND IS:\n#\t\t\tI.\tNEVER FOUND NEGATIVE (NON-ZERO) OR +0.\n#\t\t\tII.\tSOMETIMES FOUND POSITIVE (BETWEEN 1 AND 240D) INDICATING THAT IT IS ACTIVE.\n#\t\t\tIII.\tSOMETIMES FOUND POSMAX INDICATING THAT IT IS INACTIVE AND NOT ENABLED.\n#\t\t\tIV.\tSOMETIMES FOUND NEGATIVE ZERO INDICATING THAT:\n#\t\t\t\tA.\tA T6RUPT IS ABOUT TO OCCUR AT THE NEXT DINC, OR\n#\t\t\t\tB.\tA T6RUPT IS WAITING IN THE PRIORITY CHAIN, OR\n#\t\t\t\tC.\tA T6RUPT IS IN PROCESS NOW.\n#\t4.\tALL PROGRAMS WHICH OPERATE IN EITHER INTERRUPT MODE OR WITH INTERRUPT INHIBITED MUST CALL T6JOBCHK\n#\t\tEVERY 5 MILLISECONDS TO PROCESS A POSSIBLE WAITING T6RUPT BEFORE IT CAN BE HONORED BY THE HARDWARE.\n#      (5.\tPROGRAM JTLST, IN Q,R-AXES, HANDLES THE INPUT LIST.)\n#\n# T6JOBCHK CALLING SEQUENCE:\n#\t\tL\tTC\tT6JOBCHK\n#\t\tL+1\t(RETURN)\n#\n# DOT6RUPT CALLING SEQUENCE:\n#\t\t\tDXCH\tARUPT\t\t# T6RUPT LEAD IN AT LOCATION 4004.\n#\t\t\tEXTEND\n#\t\t\tDCA\tT6ADR\n#\t\t\tDTCB\n#\n# SUBROUTINES CALLED:\tDOT6RUPT CALLS T6JOBCHK.\n#\n# NORMAL EXIT MODES:\tT6JOBCHK RETURNS TO L +1.\n#\t\t\tDOT6RUPT TRANSFERS CONTROL TO RESUME.\n#\n# ALARM/ABORT MODES:\tNONE.\n#\n# INPUT:\tTIME6\t\tNXT6ADR\t\tOUTPUT:\t\tTIME6\t\tNXT6ADR\t\tCHANNEL 5\n#\t\tT6NEXT\t\tT6NEXT +1\t\t\tT6NEXT\t\tT6NEXT +1\tCHANNEL 6\n#\t\tT6FURTHA\tT6FURTHA +1\t\t\tT6FURTHA\tT6FURTHA +1\tBIT15/CH13\n#\n# DEBRIS:\tT6JOBCHK CLOBBERS A.  DOT6RUPT CLOBBERS NOTHING.\n\n\t\tBLOCK\t02\n# Page 1404\n\t\tBANK\t17\n\t\tSETLOC\tDAPS2\n\t\tBANK\n\t\tEBANK=\tT6NEXT\n\t\tCOUNT*\t$$/DAPT6\n\nT6JOBCHK\tCCS\tTIME6\t\t# CHECK TIME6 FOR WAITING T6RUPT:\n\t\tTC\tQ\t\t# NONE: CLOCK COUNTING DOWN.\n\t\tTC\tCCSHOLE\n\t\tTC\tT6JOBCHK +3\n\n# CONTROL PASSES TO T6JOB ONLY WHEN C(TIME6) = -0 (I.E., WHEN A T6RUPT MUST BE PROCESSED).\n\nT6JOB\t\tCAF\tPOSMAX\t\t# DISABLE CLOCK: NEEDED SINCE RUPT OCCURS\n\t\tEXTEND\t\t\t# 1 DINC AFTER T6 = 77777. FOR 625 MUSECS\n\t\tWAND\tCHAN13\t\t# MUST NOT HAVE T6 = +0 WITH ENABLE SET\n\n\t\tCA\tPOSMAX\n\t\tZL\n\t\tDXCH\tT6FURTHA\n\t\tDXCH\tT6NEXT\n\t\tLXCH\tNXT6ADR\n\t\tTS\tTIME6\n\n\t\tAD\tPRIO37\n\t\tTS\tA\n\t\tTCF\tENABLET6\n\t\tCA\tPOSMAX\n\t\tTS\tTIME6\n\t\tTCF\tGOCH56\nENABLET6\tCA\tBIT15\n\t\tEXTEND\n\t\tWOR\tCHAN13\n\t\tCA\tT6NEXT\n\t\tAD\tPRIO37\n\t\tTS\tA\n\t\tTCF\tGOCH56\n\t\tCA\tPOSMAX\n\t\tTS\tT6NEXT\nGOCH56\t\tINDEX\tL\n\t\tTCF\tWRITEP -1\n\n\t\tBLOCK\t02\n\t\tSETLOC\tFFTAG9\n\t\tBANK\n\t\tEBANK=\tCDUXD\n\t\tCOUNT*\t$$/DAPT6\n\n\t\tCA\tNEXTP\nWRITEP\t\tEXTEND\n\t\tWRITE\tCHAN6\n# Page 1405\n\t\tTC\tQ\n\n\t\tCA\tNEXTU\nWRITEU\t\tTS\tL\n\t\tCS\t00314OCT\n\t\tEXTEND\n\t\tRAND\tCHAN5\n\t\tAD\tL\n\t\tEXTEND\n\t\tWRITE\tCHAN5\n\t\tTC\tQ\n\n\t\tCA\tNEXTV\nWRITEV\t\tTS\tL\n\t\tCA\t00314OCT\n\t\tTCF\t-9D\n00314OCT\tOCT\t00314\n\n\t\tBANK\t17\n\t\tSETLOC\tDAPS2\n\t\tBANK\n\n\t\tEBANK=\tT6NEXT\n\t\tCOUNT*\t$$/DAPT6\n\nDOT6RUPT\tLXCH\tBANKRUPT\t# (INTERRUPT LEAD INS CONTINUED)\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\n\t\tTC\tT6JOBCHK\t# CALL T6JOBCHK.\n\n\t\tTCF\tRESUME\t\t# END TIME6 INTERRUPT PROCESSOR.\n\n"
  },
  {
    "path": "Luminary099/TAGS_FOR_RELATIVE_SETLOC.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTAGS_FOR_RELATIVE_SETLOC.agc\n# Purpose:\tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n#\n# Assembler:\tyaYUL\n# Contact:\tJim Lawton <jim.lawton@gmail.com>\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t028-037\n# Mod history:\t2009-05-16\tJVL\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from digitized\n# images of a hardcopy from the MIT Museum.  The digitization was performed\n# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many\n# thanks to both.  The images (with suitable reduction in storage size and\n# consequent reduction in image quality as well) are available online at\n# www.ibiblio.org/apollo.  If for some reason you find that the images are\n# illegible, contact me at info@sandroid.org about getting access to the\n# (much) higher-quality images which Paul actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#    Assemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#    16:27 JULY 14, 1969\n\n# Page 28\n# TAGS FOR RELATIVE SETLOC AND BLANK BANK CARDS\n\n# \t\tCOUNT\tBANKSUM\n\n# MODULE 1 CONTAINS BANKS 0 THROUGH 5\n\n\t\tBLOCK\t02\nRADARFF\t\tEQUALS\nFFTAG1\t\tEQUALS\nFFTAG2\t\tEQUALS\nFFTAG3\t\tEQUALS\nFFTAG4\t\tEQUALS\nFFTAG7\t\tEQUALS\nFFTAG8\t\tEQUALS\nFFTAG9\t\tEQUALS\nFFTAG10\t\tEQUALS\nFFTAG11\t\tEQUALS\nFFTAG12\t\tEQUALS\nFFTAG13\t\tEQUALS\n\t\tBNKSUM\t02\n\n\t\tBLOCK\t03\nFFTAG5\t\tEQUALS\nFFTAG6\t\tEQUALS\n\t\tBNKSUM\t03\n\n\t\tBANK\t00\nDLAYJOB\t\tEQUALS\n\t\tBNKSUM\t00\n\n\t\tBANK\t01\nRESTART\t\tEQUALS\nLOADDAP1\tEQUALS\n\t\tBNKSUM\t01\n\n\t\tBANK\t04\nR02\t\tEQUALS\nVERB37\t\tEQUALS\nPINBALL4\tEQUALS\nCONICS1\t\tEQUALS\nKEYRUPT\t\tEQUALS\nR36LM\t\tEQUALS\nUPDATE2\t\tEQUALS\nE/PROG\t\tEQUALS\nAOTMARK2\tEQUALS\n\t\tBNKSUM\t04\n\n# Page 29\n\t\tBANK\t05\nFRANDRES\tEQUALS\nDOWNTELM\tEQUALS\nABORTS1\t\tEQUALS\nEPHEM1\t\tEQUALS\nASENT3\t\tEQUALS\n\t\tBNKSUM\t05\n\n# MODULE 2 CONTAINS BANKS 6 THROUGH 13\n\n\t\tBANK\t06\nIMUCOMP\t\tEQUALS\nT4RUP\t\tEQUALS\nRCSMONT\t\tEQUALS\nMIDDGIM\t\tEQUALS\nEARTHLOC\tEQUALS\n\t\tBNKSUM\t06\n\n\t\tBANK\t07\nAOTMARK1\tEQUALS\nMODESW\t\tEQUALS\nASENT2\t\tEQUALS\n\t\tBNKSUM\t07\n\n\t\tBANK\t10\nRTBCODES\tEQUALS\nDISPLAYS\tEQUALS\nPHASETAB\tEQUALS\nFLESHLOC\tEQUALS\nSLCTMU\t\tEQUALS\n\t\tBNKSUM\t10\n\n\t\tBANK\t11\nORBITAL\t\tEQUALS\nF2DPS*11\tEQUALS\nINTVEL\t\tEQUALS\n\t\tBNKSUM\t11\n\n\t\tBANK\t12\nCONICS\t\tEQUALS\nORBITAL1\tEQUALS\n# Page 30\nINTPRET2\tEQUALS\n\t\tBNKSUM\t12\n\n\t\tBANK\t13\nLATLONG\t\tEQUALS\nINTINIT\t\tEQUALS\nLEMGEOM\t\tEQUALS\nP76LOC\t\tEQUALS\nORBITAL2\tEQUALS\nABTFLGS\t\tEQUALS\n\t\tBNKSUM\t13\n\n# Page 31\n# MODULE 3 CONTAINS BANKS 14 THROUGH 21\n\n\t\tBANK \t14\nP50S1\t\tEQUALS\nSTARTAB\t\tEQUALS\nASENT4\t\tEQUALS\n\t\tBNKSUM\t14\n\n\t\tBANK\t15\nP50S\t\tEQUALS\nEPHEM\t\tEQUALS\n\t\tBNKSUM\t15\n\n\t\tBANK\t16\nDAPS1\t\tEQUALS\n\t\tBNKSUM\t16\n\n\t\tBANK\t17\nDAPS2\t\tEQUALS\nP40S3\t\tEQUALS\n\t\tBNKSUM\t17\n\n\t\tBANK\t20\nDAPS3\t\tEQUALS\nLOADDAP\t\tEQUALS\nRODTRAP\t\tEQUALS\n\t\tBNKSUM\t20\n\n\t\tBANK\t21\nDAPS4\t\tEQUALS\nR10\t\tEQUALS\nR11\t\tEQUALS\n\t\tBNKSUM\t21\n# Page 32\n\n# MODULE 4 CONTAINS BANKS 22 THROUGH 27\n\n\t\tBANK\t22\nKALCMON1\tEQUALS\nKALCMON2\tEQUALS\nR30LOC\t\tEQUALS\nRENDEZ\t\tEQUALS\nSERV2\t\tEQUALS\nLANDCNST\tEQUALS\n\t\tBNKSUM\t22\n\n\t\tBANK\t23\nPOWFLITE\tEQUALS\nPOWFLIT1\tEQUALS\nINFLIGHT\tEQUALS\nAPOPERI\t\tEQUALS\nR61\t\tEQUALS\nR62\t\tEQUALS\nINTPRET1\tEQUALS\nMEASINC\t\tEQUALS\nMEASINC1\tEQUALS\nEXTVB1\t\tEQUALS\nP12A\t\tEQUALS\nNORMLIZ\t\tEQUALS\nASENT7\t\tEQUALS\n\t\tBNKSUM\t23\n\n\t\tBANK\t24\nPLANTIN\t\tEQUALS\nP20S\t\tEQUALS\n\t\tBNKSUM\t24\n\n\t\tBANK\t25\nP20S1\t\tEQUALS\nP20S2\t\tEQUALS\nRADARUPT\tEQUALS\nRRLEADIN\tEQUALS\nR29S1\t\tEQUALS\nPLANTIN3\tEQUALS\n\t\tBNKSUM\t25\n\n\t\tBANK\t26\n# Page 33\nP20S3\t\tEQUALS\nBAWLANGS\tEQUALS\nMANUVER\t\tEQUALS\nMANUVER1\tEQUALS\nPLANTIN1\tEQUALS\nPLANTIN2\tEQUALS\n\t\tBNKSUM\t26\n\n\t\tBANK\t27\nTOF-FF\t\tEQUALS\nTOF-FF1\t\tEQUALS\nP40S1\t\tEQUALS\nVECPT\t\tEQUALS\nASENT1\t\tEQUALS\nSERV3\t\tEQUALS\n\t\tBNKSUM\t27\n\n# Page 34\n# MODULE 5 CONTAINS BANKS 30 THROUGH 35\n\n\t\tBANK\t30\nLOWSUPER\tEQUALS\nP12\t\tEQUALS\nASENT\t\tEQUALS\nFCDUW\t\tEQUALS\nFLOGSUB\t\tEQUALS\nVB67A\t\tEQUALS\nASENT5\t\tEQUALS\n\t\tBNKSUM\t30\n\n\t\tBANK\t31\nFTHROT\t\tEQUALS\nF2DPS*31\tEQUALS\nVB67\t\tEQUALS\n\t\tBNKSUM\t31\n\n\t\tBANK\t32\nP20S4\t\tEQUALS\nF2DPS*32\tEQUALS\nABORTS\t\tEQUALS\nLRS22\t\tEQUALS\nP66LOC\t\tEQUALS\nR47\t\tEQUALS\nSERV\t\tEQUALS\n\t\tBNKSUM\t32\n\n\t\tBANK\t33\nSERVICES\tEQUALS\nR29/SERV\tEQUALS\nASENT6\t\tEQUALS\n\t\tBNKSUM\t33\n\n\t\tBANK\t34\nSTBLEORB\tEQUALS\nP30S1\t\tEQUALS\nCSI/CDH1\tEQUALS\nASCFILT\t\tEQUALS\nR12STUFF\tEQUALS\nSERV4\t\tEQUALS\n\t\tBNKSUM\t34\n\n# Page 35\n\t\tBANK\t35\nCSI/CDH\t\tEQUALS\nP30S\t\tEQUALS\nGLM\t\tEQUALS\nP40S2\t\tEQUALS\n\t\tBNKSUM\t35\n\n# Page 36\n# MODULE 6 CONTAINS BANKS 36 THROUGH 43\n\n\t\tBANK\t36\nP40S\t\tEQUALS\n\t\tBNKSUM\t36\n\n\t\tBANK\t37\nP05P06\t\tEQUALS\nIMU2\t\tEQUALS\nIMU4\t\tEQUALS\nR31\t\tEQUALS\nIMUSUPER\tEQUALS\nSERV1\t\tEQUALS\n\t\tBNKSUM\t37\n\n\t\tBANK\t40\nPINBALL1\tEQUALS\nSELFSUPR\tEQUALS\nPINSUPER\tEQUALS\nR31LOC\t\tEQUALS\n\t\tBNKSUM\t40\n\n\t\tBANK\t41\nPINBALL2\tEQUALS\n\t\tBNKSUM\t41\n\n\t\tBANK\t42\nSBAND\t\tEQUALS\nPINBALL3\tEQUALS\n\t\tBNKSUM\t42\n\n\t\tBANK\t43\nEXTVERBS\tEQUALS\nSELFCHEC\tEQUALS\n\t\tBNKSUM\t43\n\n# Page 37\n\nHI6ZEROS\tEQUALS\tZEROVECS\t\t# ZERO VECTOR ALWAYS IN HIGH MEMORY\nLO6ZEROS\tEQUALS\tZEROVEC\t\t\t# ZERO VECTOR ALWAYS IN LOW MEMORY\nHIDPHALF\tEQUALS\tUNITX\nLODPHALF\tEQUALS\tXUNIT\nHIDP1/4\t\tEQUALS\tDP1/4TH\nLODP1/4\t\tEQUALS\tD1/4\t\t\t# 2DEC .25\nHIUNITX\t\tEQUALS\tUNITX\nHIUNITY\t\tEQUALS\tUNITY\nHIUNITZ\t\tEQUALS\tUNITZ\nLOUNITX\t\tEQUALS\tXUNIT\t\t\t# 2DEC .5\nLOUNITY\t\tEQUALS\tYUNIT\t\t\t# 2DEC 0\nLOUNITZ\t\tEQUALS\tZUNIT\t\t\t# 2DEC 0\n\nDELRSPL\t\tEQUALS\tSPLRET\t\t\t# COL PGM, ALSO CALLED BY R30 IN LUMINARY.\n\n# ROPE-SPECIFIC ASSIGNS OBVIATING NEED TO CHECK COMPUTER FLAG IN DETERMINING INTEGRATION AREA ENTRIES.\n\nATOPTHIS\tEQUALS\tATOPLEM\nATOPOTH\t\tEQUALS\tATOPCSM\nOTHPREC\t\tEQUALS\tCSMPREC\nMOONTHIS\tEQUALS\tLMOONFLG\nMOONOTH\t\tEQUALS\tCMOONFLG\nMOVATHIS\tEQUALS\tMOVEALEM\nRMM\t\t=\tLODPMAX\nRME\t\t=\tLODPMAX1\nTHISPREC\tEQUALS\tLEMPREC\nTHISAXIS\t=\tUNITZ\nNB1NB2\t\tEQUALS\tTHISAXIS\t\t# FOR R31\nERASID\t\tEQUALS\tBITS2-10\t\t# DOWNLINK ERASABLE DUMP ID\nDELAYNUM\tEQUALS\tTWO\n\n"
  },
  {
    "path": "Luminary099/THE_LUNAR_LANDING.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTHE_LUNAR_LANDING.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHartmuth Gutsche<hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t785-792\n# Mod history:\t2009-05-20 HG\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 785\n\t\tBANK\t32\n\t\tSETLOC\tF2DPS*32\n\t\tBANK\n\n\t\tEBANK=\tE2DPS\n\n#\t*************************************\n#\tP63: THE LUNAR LANDING, BRAKING PHASE\n#\t*************************************\n\n\t\tCOUNT*\t$$/P63\n\nP63LM\t\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tTC\tBANKCALL\t# DO IMU STATUS CHECK ROUTINE R02\n\t\tCADR\tR02BOTH\n\n\t\tCAF\tP63ADRES\t# INITIALIZE WHICH FOR BURNBABY\n\t\tTS\tWHICH\n\n\t\tCAF\tDPSTHRSH\t# INITIALIZE DVMON\n\t\tTS\tDVTHRUSH\n\t\tCAF\tFOUR\n\t\tTS\tDVCNTR\n\n\t\tCS\tONE\t\t# INITIALIZE WCHPHASE AND FLPASS0\n\t\tTS\tWCHPHASE\n\n\t\tCA\tZERO\n\t\tTS\tFLPASS0\n\n\t\tCS\tBIT14\n\t\tEXTEND\n\t\tWAND\tCHAN12\t\t# REMOVE TRACK-ENABLE DISCRETE.\n\nFLAGORGY\tTC\tINTPRET\t\t# DIONYSIAN FLAG WAVING\n\t\tCLEAR\tCLEAR\n\t\t\tNOTHROTL\n\t\t\tREDFLAG\n\t\tCLEAR\tSET\n\t\t\tLRBYPASS\n\t\t\tMUNFLAG\n\t\tCLEAR\tCLEAR\n\t\t\tP25FLAG\t\t# TERMINATE P25 IF IT IS RUNNING.\n\t\t\tRNDVZFLG\t# TERMINATE P20 IF IT IS RUNNING\n\n\t\t\t\t\t# ********************************\n\nIGNALG\t\tSETPD\tVLOAD\t\t# FIRST SET UP INPUTS FOR RP-TO-R:-\n# Page 786\n\t\t\t0\t\t#   AT 0D LANDING SITE IN MOON FIXED FRAME\n\t\t\tRLS\t\t#   AT 6D ESTIMATED TIME OF LANDING\n\t\tPDDL\tPUSH\t\t#   MPAC NON-ZERO TO INDICATE LUNAR CASE\n\t\t\tTLAND\n\t\tSTCALL\tTPIP\t\t# ALSO SET TPIP FOR FIRST GUIDANCE PASS\n\t\t\tRP-TO-R\n\t\tVSL4\tMXV\n\t\t\tREFSMMAT\n\t\tSTCALL\tLAND\n\t\t\tGUIDINIT\t# GUIDINIT INITIALIZES WM AND /LAND/\n\t\tDLOAD\tDSU\n\t\t\tTLAND\n\t\t\tGUIDDURN\n\t\tSTCALL\tTDEC1\t\t# INTEGRATE STATE FORWARD TO THAT TIME\n\t\t\tLEMPREC\n\t\tSSP\tVLOAD\n\t\t\tNIGNLOOP\n\t\t\t40D\n\t\t\tUNITX\n\t\tSTOVL\tCG\n\t\t\tUNITY\n\t\tSTOVL\tCG +6\n\t\t\tUNITZ\n\t\tSTODL\tCG +14\n\t\t\t99999CON\n\t\tSTOVL\tDELTAH\t\t# INITIALIZE DELTAH FOR V16N68 DISPLAY\n\t\t\tZEROVECS\n\t\tSTODL\tUNFC/2\t\t# INITIALIZE TRIM VELOCITY CORRECTION TERM\n\t\t\tHI6ZEROS\n\t\tSTORE\tTTF/8\n\nIGNALOOP\tDLOAD\n\t\t\tTAT\n\t\tSTOVL\tPIPTIME1\n\t\t\tRATT1\n\t\tVSL4\tMXV\n\t\t\tREFSMMAT\n\t\tSTCALL\tR\n\t\t\tMUNGRAV\n\t\tSTCALL\tGDT/2\n\t\t\t?GUIDSUB\t# WHICH DELIVERS N PASSES OF GUIDANCE\n\n# DDUMCALC IS PROGRAMMED AS FOLLOWS:-\n#                                         2                                           ___\n#              (RIGNZ - RGU )/16 + 16(RGU  )KIGNY/B8 + (RGU - RIGNX)KIGNX/B4 + (ABVAL(VGU) - VIGN)KIGNV/B4\n#                          2             1                 0\n#\tDDUM = -------------------------------------------------------------------------------------------\n#                                                10\n#                                               2   (VGU - 16 VGU KIGNX/B4)\n#                                                       2        0\n# Page 787 new page is actually one line earlier but this would put the indices on a separate line\n# disconnected from their respective variables\n# THE NUMERATOR IS SCALED IN METERS AT 2(28).  THE DENOMINATOR IS A VELOCITY IN UNITS OF 2(10) M/CS.\n# THE QUOTIENT IS THUS A TIME IN UNITS OF 2(18) CENTISECONDS.  THE FINAL SHIFT RESCALES TO UNITS OF 2(28) CS.\n# THERE IS NO DAMPING FACTOR.  THE CONSTANTS KIGNX/B4, KIGNY/B8 AND KIGNV/B4 ARE ALL NEGATIVE IN SIGN.\n\nDDUMCALC\tTS\tNIGNLOOP\n\t\tTC\tINTPRET\n\t\tDLOAD\tDMPR\t\t# FORM DENOMINATOR FIRST\n\t\t\tVGU\n\t\t\tKIGNX/B4\n\t\tSL4R\tBDSU\n\t\t\tVGU +4\n\t\tPDDL\tDSU\n\t\t\tRIGNZ\n\t\t\tRGU +4\n\t\tSR4R\tPDDL\n\t\t\tRGU +2\n\t\tDSQ\tDMPR\n\t\t\tKIGNY/B8\n\t\tSL4R\tPDDL\n\t\t\tRGU\n\t\tDSU\tDMPR\n\t\t\tRIGNX\n\t\t\tKIGNX/B4\n\t\tPDVL\tABVAL\n\t\t\tVGU\n\t\tDSU\tDMPR\n\t\t\tVIGN\n\t\t\tKIGNV/B4\n\t\tDAD\tDAD\n\t\tDAD\tDDV\n\t\tSRR\n\t\t\t10D\n\n\t\tPUSH\tDAD\n\t\t\tPIPTIME1\n\t\tSTODL\tTDEC1\t\t# STORE NEW GUESS FOR NEXT INTEGRATION\n\t\tABS\tDSU\n\t\t\tDDUMCRIT\n\t\tBMN\tCALL\n\t\t\tDDUMGOOD\n\t\t\tINTSTALL\n\t\tSET\tSET\n\t\t\tINTYPFLG\n\t\t\tMOONFLAG\n\t\tDLOAD\n\t\t\tPIPTIME1\n\t\tSTOVL\tTET\t\t# HOPEFULLY ?GUIDSUB DID NOT\n\t\t\tRATT1\t\t#   CLOBBER RATT1 AND VATT1\n# Page 788\n\t\tSTOVL\tRCV\n\t\t\tVATT1\n\t\tSTCALL\tVCV\n\t\t\tINTEGRVS\n\t\tGOTO\n\t\t\tIGNALOOP\n\nDDUMGOOD\tSLOAD\tSR\n\t\t\tZOOMTIME\n\t\t\t14D\n\t\tBDSU\n\t\t\tTDEC1\n\t\tSTOVL\tTIG\t\t# COMPUTE DISTANCE LANDING SITE WILL BE\n\t\t\tV\t\t#   OUT OF LM'S ORBITAL PLANE AT IGNITION:\n\t\tVXV\tUNIT\t\t#   SIGN IS + IF LANDING SITE IS TO THE\n\t\t\tR\t\t#   RIGHT, NORTH; - IF TO THE LEFT, SOUTH.\n\t\tDOT\tSL1\n\t\t\tLAND\nR60INIT\t\tSTOVL\tOUTOFPLN\t# INITIALIZATION FOR CALCMANU\n\t\t\tUNFC/2\n\t\tSTORE\tR60VSAVE\t# STORE UNFC/2 TEMPORARILY IN R60SAVE\n\t\tEXIT\n\t\t\t\t\t# *******************************************\n\nIGNALGRT\tTC\tPHASCHNG\t# PREVENT REPEATING IGNALG\n\t\tOCT\t04024\n\nASTNCLOK\tCS\tASTNDEX\n\t\tTC\tBANKCALL\n\t\tCADR\tSTCLOK2\n\t\tTCF\tENDOFJOB\t# RETURN IN NEW JOB AND IN EBANK FIVE\n\nASTNRET\t\tTC\tINTPRET\n\t\tSSP\tRTB\t\t# GO PICK UP DISPLAY AT END OF R51:\n\t\t\tQMAJ\t\t#   \"PROCEED\" WILL DO A FINE ALIGNMENT\n\t\tFCADR\tP63SPOT2\t#   \" ENTER \" WILL RETURN TO P63SPOT2\n\t\t\tR51P63\nP63SPOT2\tVLOAD\tUNIT\t\t# INITIALIZE KALCMANU FOR BURN ATTITUDE\n\t\t\tR60VSAVE\n\t\tSTOVL\tPOINTVSM\n\t\t\tUNITX\n\t\tSTORE\tSCAXIS\n\t\tEXIT\n\n\t\tCAF\tEBANK7\n\t\tTS\tEBANK\n\n\t\tINHINT\n\t\tTC\tIBNKCALL\n\t\tCADR\tPFLITEDB\n# Page 789\n\t\tRELINT\n\n\t\tTC\tBANKCALL\n\t\tCADR\tR60LEM\n\n\t\tTC\tPHASCHNG\t# PREVENT RECALLING R60\n\t\tOCT\t04024\n\nP63SPOT3\tCA\tBIT6\t\t# IS THE LR ANTENNA IN POSITION 1 YET\n\t\tEXTEND\n\t\tRAND\tCHAN33\n\t\tEXTEND\n\t\tBZF\tP63SPOT4\t# BRANCH IF ANTENNA ALREADY IN POSITION 1\n\n\t\tCAF\tCODE500\t\t# ASTRONAUT:\tPLEASE CRANK THE\n\t\tTC\tBANKCALL\t#\t\tSILLY THING AROUND\n\t\tCADR\tGOPERF1\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\tP63SPOT3\t# PROCEED\tSEE IF HE'S LYING\n\nP63SPOT4\tTC\tBANKCALL\t# ENTER\t\tINITIALIZE LANDING RADAR\n\t\tCADR\tSETPOS1\n\n\t\tTC\tPOSTJUMP\t# OFF TO SEE THE WIZARD...\n\t\tCADR\tBURNBABY\n\n#\t---------------------------------\n\n#\tCONSTANTS FOR P63LM AND IGNALG\n\nP63ADRES\tGENADR\tP63TABLE\n\nASTNDEX\t\t=\tMD1\t\t# OCT 25:  INDEX FOR CLOKTASK\n\nCODE500\t\tOCT\t00500\n\n99999CON\t2DEC\t30479.7 B-24\n\nGUIDDURN\t2DEC\t+66440\t\t# GUIDDURN\t+6.64400314 E+2\nDDUMCRIT\t2DEC\t+8 B-28\t\t# CRITERION FOR IGNALG CONVERGENCE\n\n# Page 790\n#\t--------------------------------\n\n# Page 791\n#\t*************************\n#\tP68: LANDING CONFIRMATION\n#\t*************************\n\n\t\tBANK\t31\n\t\tSETLOC\tF2DPS*31\n\t\tBANK\n\n\t\tCOUNT*\t$$/P6567\n\nLANDJUNK\tTC\tPHASCHNG\n\t\tOCT\t04024\n\n\t\tINHINT\n\t\tTC\tBANKCALL\t# ZERO ATTITUDE ERROR\n\t\tCADR\tZATTEROR\n\n\t\tTC\tBANKCALL\t# SET 5 DEGREE DEADBAND\n\t\tCADR\tSETMAXDB\n\n\t\tTC\tINTPRET\t\t# TO INTERPRETIVE AS TIME IS NOT CRITICAL\n\t\tSET\tCLEAR\n\t\t\tSURFFLAG\n\t\t\tLETABORT\n\t\tSET\tVLOAD\n\t\t\tAPSFLAG\n\t\t\tRN\n\t\tSTODL\tALPHAV\n\t\t\tPIPTIME\n\t\tSET\tCALL\n\t\t\tLUNAFLAG\n\t\t\tLAT-LONG\n\t\tSETPD\tVLOAD\t\t# COMPUTE RLS AND STORE IT AWAY\n\t\t\t0\n\t\t\tRN\n\t\tVSL2\tPDDL\n\t\t\tPIPTIME\n\t\tPUSH\tCALL\n\t\t\tR-TO-RP\n\t\tSTORE\tRLS\n\t\tEXIT\n\t\tCAF\tV06N43*\t\t# ASTRONAUT:  NOW LOOK WHERE YOU ENDED UP\n\t\tTC\tBANKCALL\n\t\tCADR\tGOFLASH\n\t\tTCF\tGOTOPOOH\t# TERMINATE\n\t\tTCF\t+2\t\t# PROCEED\n\t\tTCF\t-5\t\t# RECYCLE\n\n\t\tTC\tINTPRET\n# Page 792\n\t\tVLOAD\t\t\t# INITIALIZE GSAV AND (USING REFMF)\n\t\t\tUNITX\t\t#   YNBSAV, ZNBSAV AND ATTFLAG FOR P57\n\t\tSTCALL\tGSAV\n\t\t\tREFMF\n\t\tEXIT\n\n\t\tTCF\tGOTOPOOH\t# ASTRONAUT:  PLEASE SELECT P57\n\nV06N43*\t\tVN\t0643\n\n"
  },
  {
    "path": "Luminary099/THROTTLE_CONTROL_ROUTINES.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTHROTTLE_CONTROL_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tHARTMUTH GUTSCHE <hgutsche@xplornet.com>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t793-797\n# Mod history:\t2009-05-20 HG\tTranscribed from page images.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 793\n\t\tBANK\t31\n\t\tSETLOC\tFTHROT\n\t\tBANK\n\t\tEBANK=\tPIF\n\t\tCOUNT*\t$$/THROT\n\n# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n# HERE FC, DESIRED THRUST, AND FP, PRESENT THRUST, UNWEIGHTED, ARE COMPUTED.\n\nTHROTTLE\tCA\tABDELV\t\t# COMPUTE PRESENT ACCELERATION IN UNITS OF\n\t\tEXTEND\t\t\t# 2(-4) M/CS/CS, SAVING SERVICER TROUBLE\n\t\tMP\t/AF/CNST\n +3\t\tEXTEND\n \t\tQXCH\tRTNHOLD\nAFDUMP\t\tTC\tMASSMULT\n\t\tDXCH\tFP\t\t# FP = PRESENT THRUST\n\t\tEXTEND\n\t\tDCA\t/AFC/\n\t\tTC\tMASSMULT\n\t\tTS\tFC\t\t# FC = THRUST DESIRED BY GUIDANCE\n\t\tDXCH\tFCODD\t\t# FCODD = WHAT IT IS GOING TO GET\n\n# IF IT HAS BEEN LESS THAN 3 SECONDS SINCE THE LAST THROTTLING, AUGMENT FP USING THE FWEIGHT CALCULATED THEN.\n\n\t\tCS\tTTHROT\t\t# THIS CODING ASSUMES A FLATOUT WITHIN\n\t\tAD\tTIME1\t\t#   80 SECONDS BEFORE FIRST THROTTLE CALL\n\t\tMASK\tPOSMAX\n\t\tCOM\n\t\tAD\t3SECS\n\t\tEXTEND\n\t\tBZMF\tWHERETO\t\t# BRANCH IF (TIME1-TTHROT +1) > 3 SECONDS\n\t\tEXTEND\n\t\tDCA\tFWEIGHT\n\t\tDAS\tFP\n\n# THIS LOGIC DETERMINES THE THROTTLING IN THE REGION 10% - 94%.  THE MANUAL THROTTLE, NOMINALLY SET AT\n# MINIMUM BY ASTRONAUT OR MISSION CONTROL PROGRAMS, PROVIDES THE LOWER BOUND.  A STOP IN THE THROTTLE HARDWARE\n# PROVIDES THE UPPER.\n\nWHERETO\t\tCA\tEBANK5\t\t# INITIALIZE L*WCR*T AND H*GHCR*T FROM\n\t\tTS\tEBANK\t\t#   PAD LOADED ERASABLES IN W-MATRIX\n# Page 794\n\t\tEBANK=\tLOWCRIT\n\t\tEXTEND\n\t\tDCA\tLOWCRIT\n\t\tDXCH\tL*WCR*T\n\t\tCA\tEBANK7\n\t\tTS\tEBANK\n\t\tEBANK=\tPIF\n\t\tCS\tZERO\t\t# INITIALIZE PIFPSET\n\t\tTS\tPIFPSET\n\t\tCS\tH*GHCR*T\n\t\tAD\tFCOLD\n\t\tEXTEND\n\t\tBZMF\tLOWFCOLD\t# BRANCH IF FCOLD < OR = HIGHCRIT\n\t\tCS\tL*WCR*T\n\t\tAD\tFCODD\n\t\tEXTEND\n\t\tBZMF\tFCOMPSET\t# BRANCH IF FC < OR = LOWCRIT\n\t\tCA\tFP\t\t# SEE NOTE 1\n\t\tTCF\tFLATOUT1\n\nFCOMPSET\tCS\tFMAXODD\t\t# SEE NOTE 2\n\t\tAD\tFP\n\t\tTCF\tFLATOUT2\n\nLOWFCOLD\tCS\tH*GHCR*T\n\t\tAD\tFCODD\n\t\tEXTEND\n\t\tBZMF\tDOPIF\t\t# BRANCH IF FC < OR = HIGHCRIT\n\n\t\tCA\tFMAXPOS\t\t# NO:  THROTTLE-UP\nFLATOUT1\tDXCH\tFCODD\n\t\tCA\tFEXTRA\nFLATOUT2\tTS\tPIFPSET\n\n# NOTE 1\tFC IS SET EQUAL TO FP SO PIF WILL BE ZERO.  THIS IS DESIRABLE\n#\t\tAS THERE IS ACTUALLY NO THROTTLE CHANGE.\n#\n# NOTE 2\tHERE, SINCE WE ARE ABOUT TO RETURN TO THE THROTTLEABLE REGION\n#\t\t(BELOW 55%) THE QUANTITY -(FMAXODD - FP) IS COMPUTED AND PUT\n#\t\tINTO PIFPSET TO COMPENSATE FOR THE DIFFERENCE BETWEEN THE\n#\t\tNUMBER OF BITS CORRESPONDING TO FULL THROTTLE (FMAXODD) AND THE\n#\t\tNUMBER CORRESPONDING TO ACTUAL THRUST (FP).  THUS THE TOTAL\n#\t\tTHROTTLE COMMAND PIF = FC - FP - (FMAXODD - FP) = FC - FMAXODD.\n\nDOPIF\t\tTC\tFASTCHNG\n\t\tEXTEND\n\t\tDCA\tFCODD\n\t\tTS\tFCOLD\n\t\tDXCH\tPIF\n\t\tEXTEND\n# Page 795\n\t\tDCS\tFP\n\t\tDAS\tPIF\t\t# PIF = FC - FP, NEVER EQUALS +0\n\nDOIT\t\tCA\tPIF\n\t\tAD\tPIFPSET\t\t# ADD IN PIFPSET, WITHOUT CHANGING PIF\n\t\tTS\tPSEUDO55\n\t\tTS\tTHRUST\n\t\tCAF\tBIT4\n\t\tEXTEND\n\t\tWOR\tCHAN14\n\t\tCA\tTIME1\n\t\tTS\tTTHROT\n\n# SINCE /AF/ IS NOT AN INSTANTANEOUS ACCELERATION, BUT RATHER AN \"AVERAGE\" OF THE ACCELERATION LEVELS DURING\n# THE PRECEEDING PIPA INTERVAL, AND SINCE FP IS COMPUTED DIRECTLY FROM /AF/, FP IN ORDER TO CORRESPOND TO THE\n# ACTUAL THRUST LEVEL AT THE END OF THE INTERVAL MUST BE WEIGHTED BY\n#\n# \t          PIF(PPROCESS + TL)     PIF /PIF/\n#\tFWEIGHT = ------------------ + -------------\n#\t\t       PGUID           2 PGUID FRATE\n#\n# WHERE PPROCESS IS THE TIME BETWEEN PIPA READING AND THE START OF THROTTLING, PGUID IS THE GUIDANCE PERIOD, AND\n# FRATE IS THE THROTTLING RATE (32 UNITS PER CENTISECOND).  PGUID IS EITHER 1 OR 2 SECONDS.  THE \"TL\" IN THE\n# FIRST TERM REPRESENTS THE ENGINE'S RESPONSE LAG.  HERE FWEIGHT IS COMPUTED FOR USE NEXT PASS.\n\n\t\tCA\tTHISTPIP +1\t\t# INITIALIZE FWEIGHT COMP AS IF FOR P66\n\t\tTS\tBUF\n\n\t\tCS\tMODREG\t\t\t# ARE WE IN FACT IN P66?\n\t\tAD\tDEC66\n\t\tEXTEND\n\t\tBZF\tFWCOMP\t\t\t# YES\n\n\t\tCA\tPIPTIME +1\t\t# NO:  INITIALIZE FOR TWO SECOND PERIOD\n\t\tTS\tBUF\n\t\tCAF\t4SECS\n\t\tTCF\tFWCOMP +1\n\nFWCOMP\t\tCAF\t2SECS\n +1\t\tTS\tQ\n \t\tEXTEND\n\t\tMP\tBIT6\n\t\tLXCH\tBUF +1\n\t\tCS\tBUF\t\t# TIME OF LAST PIPA READING.\n\t\tAD\tTIME1\n\t\tAD\tTHROTLAG\t# COMPENSATE FOR ENGINE RESPONSE LAG\n\t\tMASK\tLOW8\t\t# MAKE SURE SMALL AND POSITIVE\n\t\tZL\n\t\tEXTEND\n# Page 796\n\t\tDV\tQ\n\t\tEXTEND\n\t\tMP\tPIF\n\t\tDOUBLE\n\t\tDXCH\tFWEIGHT\n\t\tCCS\tPIF\n\t\tAD\tONE\n\t\tTCF\t+2\n\t\tAD\tONE\n\t\tEXTEND\n\t\tMP\tPIF\n\t\tEXTEND\n\t\tDV\tBUF +1\n\t\tZL\n\t\tDAS\tFWEIGHT\n\nTHDUMP\t\tTC\tRTNHOLD\n\n# FLATOUT THROTTLES UP THE DESCENT ENGINE, AND IS CALLED AS A BASIC SUBROUTINE.\n\nFLATOUT\t\tCAF\tBIT13\t\t# 4096 PULSES\nWHATOUT\t\tTS\tPIFPSET\t\t# USE PIFPSET SO FWEIGHT WILL BE ZERO\n\t\tCS\tZERO\n\t\tTS\tFCOLD\n\t\tTS\tPIF\n\t\tEXTEND\n\t\tQXCH\tRTNHOLD\n\t\tTCF\tDOIT\n\n# MASSMULT SCALES ACCELERATION, ARRIVING IN A AND L IN UNITS OF 2(-4) M/CS/CS, TO FORCE IN PULSE UNITS.\n\nMASSMULT\tEXTEND\n\t\tQXCH\tBUF\n\t\tDXCH\tMPAC\n\t\tTC\tDMP\n\t\tADRES\tMASS\n\t\tTC\tDMP\t\t# LEAVES PROPERLY SCALED FORCE IN MPAC\n\t\tADRES\tSCALEFAC\n\t\tTC\tTPAGREE\n\t\tCA\tMPAC\n\t\tEXTEND\n\t\tBZF\t+3\n\t\tCAF\tPOSMAX\n\t\tTC\tBUF\n\t\tDXCH\tMPAC +1\n\t\tTC\tBUF\n# Page 797\n# CONSTANTS:-\n\nFEXTRA\t\t=\tBIT13\t\t# FEXT +5.13309020E+ 4\n\n/AF/CNST\tDEC\t.13107\n\n# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"
  },
  {
    "path": "Luminary099/TIME_OF_FREE_FALL.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTIME_OF_FREE_FALL.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1268-1283\n# Mod history:\t2009-05-26 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1268\n# THE TFF SUBROUTINES MAY BE USED IN EITHER EARTH OR MOON CENTERED COORDINATES.  THE TFF ROUTINES NEVER\n# KNOW WHICH ORIGIN APPLIES.  IT IS THE USER WHO KNOWS, AND WHO SUPPLIES RONE, VONE, AND 1/SQRT(MU) AT THE\n# APPROPRIATE SCALE LEVEL FOR THE PROPER PRIMARY BODY.\n#\n#\tEARTH ORIGIN\tPOSITION\t-29\tMETERS\n#\t\t\tVELOCITY\t-7\tMETERS/CENTISECOND\n#\t\t\t1/SQRT(MU)\t+17\tSQRT(CS SQ/METERS CUBED)\n#\n#\tMOON ORIGIN\tPOSITION\t-27\tMETERS\n#\t\t\tVELOCITY\t-5\tMETERS/CENTISECONDS\n#\t\t\t1/SQRT(MU)\t+14\tSQRT(CS SQ/METERS CUBED)\n#\n# ALL DATA PROVIDED TO AND RECEIVED FROM ANY TFF SUBROUTINE WILL BE AT ONE OF THE LEVELS ABOVE.  IN ALL CASES,\n# THE FREE FALL TIME IS RETURNED IN CENTISECONDS AT (-28).  PROGRAM TFF/CONIC WILL GENERATE VONE/RTMU AND\n# LEAVE IT IN VONE' AT (+10) IF EARTH ORIGIN AND (+9) IF MOON ORIGIN.\n#\n# THE USER MUST STORE THE STATE VECTOR IN RONE, VONE, AND MU IN THE FORM 1/SQRT(MU) IN TFF/RTMU\n# AT THE PROPER SCALE BEFORE CALLING TFF/CONIC.  SINCE RONE, VONE ARE IN THE EXTENDED VERB STORAGE AREA,\n# THE USER MUST ALSO LOCK OUT THE EXTENDED VERBS, AND RELEASE THEM WHEN FINISHED.\n#\n# PROGRAMS CALC/TFF AND CALC/TPER ASSUME THAT THE TERMINAL RADIUS IS LESS THAN THE PRESENT\n# RADIUS.  THIS RESTRICTION CAN BE REMOVED BY A 15 W CODING CHANGE, BUT AT PRESENT IT IS NOT DEEMED NECESSARY.\n#\n# THE FOLLOWING ERASABLE QUANTITIES ARE USED BY THE TFF ROUTINES, AND ARE LOCATED IN THE PUSH LIST.\n#\n#\t\t\t\t\tBELOW\tE:  IS USED FOR EARTH ORIGIN SCALE\n#\t\t\t\t\t\tM:  IS USED FOR MOON  ORIGIN SCALE\n#\n#TFFSW\t\t=\t119D\t# BIT1\t0 = CALCTFF\t\t1 = CALCTPER\nTFFDELQ\t\t=\t10D\t#\tQ2-Q1\t\t\tE: (-16)  M: (-15)\nRMAG1\t\t=\t12D\t#\tABVAL(RN)  M\t\tE: (-29)  M: (-27)\n#RPER\t\t=\t14D\t#\tPERIGEE RADIUS  M\tE: (-29)  M: (-27)\nTFFQ1\t\t=\t14D\t#\tR.V / SQRT(MUE)\t\tE: (-16)  M: (-15)\n#SDELF/2\t\t\t#\tSIN(THETA) /2\nCDELF/2\t\t=\t14D\t#\tCOS(THETA) /2\n#RAPO\t\t=\t16D\t#\tAPOGEE RADIUS  M\tE: (-29)  M: (-27)\nNRTERM\t\t=\t16D\t#\tTERMINAL RADIUS  M\tE: (-29+NR)\n\t\t\t\t#\t\t\t\t\t  M: (-27+NR)\nRTERM\t\t=\t18D\t#\tTERMINAL RADIUS  M\tE: (-29)  M: (-27)\nTFFVSQ\t\t=\t20D\t#\t-(V SQUARED/MU)  1/M\tE: (20)   M: (18)\nTFF1/ALF\t=\t22D\t#\tSEMI MAJ AXIS  M\tE: (-22-2 NA)\n\t\t\t\t#\t\t\t\t\t  M: (-20-2 NA)\nTFFRTALF\t=\t24D\t#\tSQRT(ALFA)\t\tE:(10+NA) M: (9+NA)\nTFFALFA\t\t=\t26D\t#\tALFA  1/M\t\tE:(26-NR) M: (24-NR)\nTFFNP\t\t=\t28D\t#\tSEMI LATUS RECTUM  M\tE: (-38+2 NR)\n\t\t\t\t#\t\t\t\t\t  M: (-36+2 NR)\nTFF/RTMU\t=\t30D\t#\t1/SQRT(MU)\t\tE: (17)   M: (14)\nNRMAG\t\t=\t32D\t#\tPRESENT RADIUS  M\tE: (-29+NR)\n\t\t\t\t#\t\t\t\t\t  M: (-27+NR)\nTFFX\t\t=\t34D     #\nTFFTEM\t\t=\t36D\t#\tTEMPORARY\n# Page 1269\n#\t\tREGISTERS S1, S2 ARE UNTOUCED BY ANY TFF SUBROUTINE\n#\t\tINDEX REGISTERS X1, X2 ARE USED BY ALL TFF SUBROUTINES.  THEY ARE ESTAB-\n#\t\tLISHED IN TFF/CONIC AND MUST BE PRESERVED BETWEEN CALLS TO SUBSEQUENT\n#\t\tSUBROUTINES.\n#\t\t-NR\t\t\t\tC(X1) = NORM COUNT OF RMAG\n#\t\t-NA\t\t\t\tC(X2) = NORM COUNT OF SQRT(ABS(ALFA))\n\n# Page 1270\n# SUBROUTINE NAME:  TFFCONIC\t\t\t\t\t\tDATE:  01.29.67\n# MOD NO:  0\t\t\t\t\t\t\t\tLOG SECTION:  TIME OF FREE FALL\n# MOD BY:  RR BAIRNSFATHER\n# MOD NO:  1\tMOD BY:  RR BAIRNSFATHER\tDATE: 11 APR 67\n# MOD NO:  2\tMOD BY:  RR BAIRNSFATHER\tDATE: 21 NOV 67\t\tADD MOON MU.\n# MOD NO:  3\tMOD BY:  RR BAIRNSFATHER\tDATE: 21 MAR 68\t\tACCEPT DIFFERENT EARTH/MOON SCALES\n#\n# FUNCTIONAL DESCRIPTION:  THIS SUBROUTINE IS CALLED TO COMPUTE THOSE CONIC PARAMETERS REQUIRED BY THE TFF\n#\tSUBROUTINES AND TO ESTABLISH THEM IN THE PUSH LIST AREA.  THE PARAMETERS ARE LISTED UNDER OUTPUT.\n#\tTHE EQUATIONS ARE:\n#\t\t_   __ __\n#\t\tH = RN*VN\t\t\tANGULAR MOMENTUM\n#\t\t      _ _\n#\t\tLCP = H.H / MU\t\t\tSEMI LATUS RECTUM\n#\t\t              __ __\n#\t\tALFA = 2/RN - VN.VN / MU\tRECIPROCAL SEMI-MAJOR AXIS, SIGNED\n#\n# \tAND ALFA IS POS FOR ELLIPTIC ORBITS\n#\t              0 FOR PARABOLIC ORBITS\n#\t            NEG FOR HYPERBOLIC ORBITS\n#\tSUBROUTINE ALSO COMPUTES AND SAVES RMAG.\n#\n# CALLING SEQUENCE:\n#\tTFFCONIC EXPECTS CALLER TO ENTER WITH CORRECT GRAVITATIONAL CONSTANT IN MPAC, IN THE FORM\n#\t1/SQRT(MU).  THE PROGRAM WILL SAVE IN TFF/RTMU.  THE SCALE IS DETERMINED BY WHETHER EARTH OR MOON\n#\tORIGIN IS USED.  THE CALLER MUST LOCK OUT THE EXTENDED VERBS BEFORE PROVIDING STATE VECTOR IN RONE,\n#\tVONE AT PROPER SCALE.  THE EXTENDED VERBS MUST BE RESTORED WHEN THE CALLER IS FINISHED USING THE\n#\tTFF ROUTINES.\n#\n#\tENTRY POINT TFFCONMU EXPECTS THAT TFF/RTMU IS ALREADY LOADED.\n#\n#\tTO SPECIFY MU:\tDLOAD\tCALL\t\t\t \tIF MU ALREADY STORED:\tCALL\n#\t\t\t\tYOURMU\t1/RTMU E:(17) M:(14)\t\t\t\t\tTFFCONMU\n#\t\t\t\tTFFCONIC\n#\tPUSHLOC = PDL+0, ARBITRARY IF LEQ 18D\n#\n# SUBROUTINES CALLED:  NONE\n#\n# NORMAL EXIT MODES:  RVQ\n#\n# ALARMS:  NONE\n#\n# OUTPUT:\tTHE FOLLOWING ARE STORED IN THE PUSH LIST AREA.\n#\t\tRMAG1\t\tE:(-29) M:(-27)\tM  RN, PRESENT RADIUS LENGTH.\n#\t\tNRMAG\t\tE:(-29+NR)\tM  RMAG, NORMALIZED\n#\t\t\t\tM:(-27+NR)\n#\t\tX1\t\t\t\t-NR, NORM COUNT\n#\t\tTFFNP\t\tE:(-38+2NR)\tM  LCP, SEMI LATUS RECTUM, WEIGHTED BY NR.  \tFOR VGAMCALC.\n#\t\t\t\tM:(-36+2NR)\n#\t\tTFF/RTMU\tE:(17) M:(14)\t1/SQRT(MU)\n#\t\tTFFVSQ\t\tE:(20) M:(18)\t1/M  -(V SQ/MU):  PRESENT VELOCITY, NORMALIZED. FOR VGAMCALC\n#\t\tTFFALFA\t\tE:(26-NR)\t1/M  ALFA, WEIGHTED BY NR\n#\t\t\t\tM:(24-NR)\n#\t\tTFFRTALF\tE:(10+NA)\tSQRT(ALFA), NORMALIZED\n#\t\t\t\tM:(9+NA)\n# Page 1271\n#\t\tX2\t\t\t\t-NA, NORMCOUNT\n#\t\tTFF1/ALF\tE:(-22-2NA)\tSIGNED SEMI MAJ AXIS, WEIGHTED BY NA\n#\t\t\t\tM:(-20-2NA)\n#\t\tPUSHLOC AT PDL+0\n#\n#\tTHE FOLLOWING IS STORED IN GENERAL ERASABLE\n#\t\tVONE'\t\tE:(10) M:(9)\tV/RT(MU), NORMALIZED VELOCITY\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\t\tRONE\t\tE:(-29) M:(-27)\tM  STATE VECTOR\t\tLEFT BY CALLER\n#\t\tVONE\t\tE:(-7) M:(-5)\tM/CS  STATE VECTOR\tLEFT BY CALLER\n#\t\tTFF/RTMU\tE:(17) M:(14)\t1/RT(CS SQ/M CUBE)\tIF ENTER VIA TFFCONMU.\n#\n# DEBRIS:\tQPRET\t\tPDL+0 ... PDL+3\n\n\t\tBANK\t33\n\t\tSETLOC\tTOF-FF\n\t\tBANK\n\n\t\tCOUNT*\t$$/TFF\n\nTFFCONIC\tSTORE\tTFF/RTMU\t# 1/SQRT(MU)\tE:(17) M:(14)\n\nTFFCONMU\tVLOAD\tUNIT\t\t# COME HERE WITH TFFRTMU LOADED.\n\t\t\tRONE\t\t# SAVED RN.  M  E:(-29) M:(-27)\n\t\tPDDL\t\t\t# UR/2 TO PDL+0, +5\n\t\t\t36D\t\t# MAGNITUDE\n\t\tSTORE\tRMAG1\t\t# M  E:(-29) M:(-27)\n\n\t\tNORM\n\t\t\tX1\t\t# -NR\n\t\tSTOVL\tNRMAG\t\t# RMAG  M  E:(-29+NR) M:(-27+NR)\n\t\t\tVONE\t\t# SAVED VN.  M/CS  E:(-7) M:(-5)\n\t\tVXSC\n\t\t\tTFF/RTMU\t# E:(17) M:(14)\n\t\tSTORE\tVONE'\t\t# VN/SQRT(MU)  E:(10) M:(9)\n\n\t\tVXSC\tVXV\n\t\t\tNRMAG\t\t# E:(-29+NR) M:(-27+NR)\n\t\t\t\t\t# UR/2 FROM PDL\n\t\tVSL1\tVSQ\t\t# BEFORE:  E:(-19+NR) M:(-18+NR)\n\t\tSTODL\tTFFNP\t\t# LC P  M  E:(-38+2NR) M:(-36+2NR)\n\t\t\t\t\t# SAVE ALSO FOR VGAMCALC\n\t\t\tTFF1/4\n\t\tDDV\tPDVL\t\t# (2/RMAG)  1/M  E:(26-NR) M:(24-NR)\n\t\t\tNRMAG\t\t# RMAG  M  E:(-29+NR) M:(-27+NR)\n\t\t\tVONE'\t\t# SAVED VN.  E:(10) M:(9)\n\t\tVSQ\tDCOMP\t\t# KEEP MPAC+2 HONEST FOR SQRT.\n\t\tSTORE\tTFFVSQ\t\t# -(V SQ/MU)  E:(20) M:(18)\n\t\t\t\t\t# SAVE FOR VGAMCALC\n\t\tSR*\tDAD\n# Page 1272\n\t\t\t0 \t-6,1\t# GET -VSQ/MU  E:(26-NR) M:(24-NR)\n\t\tSTADR\n\t\t\t\t\t# 2/RMAG  FROM PDL+2\n\t\tSTORE\tTFFALFA\t\t# ALFA  1/M  E:(26-NR) M:(24-NR)\n\t\tSL*\tPUSH\t\t# TEMP SAVE ALFA  E:(20) M:(18)\n\t\t\t0 \t-6,1\n\t\tABS\tSQRT\t\t# E:(10) M:(9)\n\t\tNORM\n\t\t\tX2\t\t# X2 = -NA\n\t\tSTORE\tTFFRTALF\t# SQRT( ABS(ALFA) )  E:(10+NA) M:(9+NA)\n\t\tDSQ\tSIGN\t\t# NOT SO ACCURATE, BUT OK\n\t\t\t\t\t# ALFA FROM PDL+2  E:(20) M:(18)\n\t\tBZE\tBDDV\t\t# SET 1/ALFA =0, TO SHOW SMALL ALFA\n\t\t\t+2\n\t\t\tTFF1/4\n +2\t\tSTORE\tTFF1/ALF\t# 1/ALFA  E:(-22-2NA) M:(-20-2NA)\nDUMPCNIC\tRVQ\n\n#\t\t\t\t\t\t\t      39 W\n# Page 1273\n# SUBROUTINE NAME:  TFFRP/RA\t\t\t\t\t\tDATE: 01.17.67\n# MOD NO:  0\t\t\t\t\t\t\t\tLOG SECTION:  TIME OF FREE FALL\n# MOD NO:  1\tMOD BY:  RR BAIRNSFATHER\tDATE: 11 APR 67\n# MOD NO:  2\tMOD BY:  RR BAIRNSFATHER\tDATE: 21 MAR 68\t\tACCEPT DIFFERENT EARTH/MOON SCALES\n#\t\t\t\t\t\t\t\t\tALSO IMPROVE ACCURACY OF RAPO.\n#\n# FUNCTIONAL DESCRIPTION:  USED BY CALCTPER AND TFF DISPLAYS TO CALCULATE PERIGEE RADIUS AND ALSO\n#\tAPOGEE RADIUS FOR A GENERAL CONIC.\n#\tPROGRAM GIVES PERIGEE RADIUS AS\t\tAPOGEE RADIUS IS GIVEN BY\n#\t\tRP = P/(1+E)\t\t\t\tRA = (1+E) / ALFA\n#\tWHERE    2\n#\t\tE  = 1 - P ALFA\n#\tIF RA IS NEGATIVE OR SHOWS DIVIDE OVERFLOW, THEN RA = POSMAX BECAUSE\n#\t\t1. APOGEE RADIUS IS NOT MEANINGFUL FOR HYPERBOLA\n#\t\t2. APOGEE RADIUS IS NOT DEFINED FOR PARABOLA\n#\t\t3. APOGEE RADIUS EXCEEDS THE SCALING FOR ELLIPSE.\n#\n#\tTHIS SUBROUTINE REQUIRED THE SIGNED RECIPROCAL SEMI MAJ AXIS, ALFA, AND SEMI-LATUS RECTUM AS DATA.\n#\n# CALLING SEQUENCE:\tCALL\n#\t\t\t\tTFFRP/RA\n#\tPUSHLOC = PDL+0, ARBITRARY IF LEQ 10D\n#\tC(MPAC) UNSPECIFIED\n#\n# SUBROUTINES CALLED:\tNONE\n#\n# NORMAL EXIT MODE:\tRVQ\n#\tIF ELLIPSE, WITHIN NORMAL SCALING, RAPO IS CORRECT.\n#\tOTHERWISE, RAPO = POSMAX.\n#\n# ALARMS:\tNONE\n#\n# OUTPUT:\tSTORED IN PUSH LIST AREA.  SCALE OF OUTPUT AGREES WITH DATA SUPPLIED TO TFF/CONIC.\n#\tRPER\tE:(-29) M:(-27)\t\tM\tPERIGEE RADIUS\t\tDESTROYED BY CALCTFF/CALCTPER, TFFTRIG.\n#\tRAPO\tE:(-29) M:(-27)\t\tM\tAPOGEE RADIUS\t\tWILL BE DESTROYED BY CALCTFF/CALCTPER\n#\tPUSHLOC AT PDL+0\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\tTFFALFA\tE:(26-NR)\t\tM\t1/SEMI MAJ AXIS\t\tLEFT BY TFFCONIC\n#\t\tM:(24-NR)\n#\tTFFNP\tE:(-38+2NR)\t\tM\tLC P, SEMI LATUS RECTUM\tLEFT BY TFFCONIC\n#\t\tM:(-36+2NR)\n#\tX1\t\t\t\t-NR, NORM COUNT OF RMAG\t\tLEFT BY TFFCONIC\n#\tX2\t\t\t\t-NA, NORM COUNT OF ALFA\t\tLEFT BY TFFCONIC\n#\n# DEBRIS:\tQPRET, PDL+0 ... PDL+1\n\n# Page 1274\nRAPO\t\t=\t16D\t\t# APOGEE RADIUS  M  E:(-29) M:(-27)\nRPER\t\t=\t14D\t\t# PERIGEE RADIUS  M  E:(-29) M:(-27)\n\nTFFRP/RA\tDLOAD\tDMP\n\t\t\tTFFALFA\t\t# ALFA  1/M  E:(26-NR) M:(24-NR)\n\t\t\tTFFNP\t\t# LC P  M E:(-38+2NR) M:(-36+2NR)\n\t\tSR*\tDCOMP\t\t# ALFA P (-12+NR)\n\t\t\t0\t -8D,1\t# ALFA P (-4)\n\t\tDAD\tABS\t\t# (DCOMP GIVES VALID TP RESULT FOR SQRT)\n\t\t\t\t\t# (ABS PROTECTS SQRT IF E IS VERY NEAR 0)\n\t\t\tDP2(-4)\n\t\tSQRT\tDAD\t\t# E SQ = (1- P ALFA) (-4)\n\t\t\tTFF1/4\n\t\tPUSH\tBDDV\t\t# (1+E)  (-2)  TO PDL+0\n\t\t\tTFFNP\t\t# LCP  M  E:(-38+2NR) M:(-36+2NR)\n\t\tSR*\tSR*\t\t# (DOES SR THEN SL TO AVOID OVFL)\n\t\t\t0,1\t\t# X1=-NR\n\t\t\t0 \t-7,1\t# (EFFECTIVE SL)\n\t\tSTODL\tRPER\t\t# PERIGEE RADIUS  M  E:(-29) M:(-27)\n\t\t\t\t\t# (1+E)  (-2)  FROM PDL+0\n\t\tDMP\tBOVB\n\t\t\tTFF1/ALF\t# E:(-22-2NA) M:(-20-2NA)\n\t\t\tTCDANZIG\t# CLEAR OVFIND, IF ON.\n\t\tBZE\tSL*\n\t\t\tMAXRA\t\t# SET POSMAX IF ALFA=0\n\t\t\t0 \t-5,2\t# -5+NA\n\t\tSL*\tBOV\n\t\t\t0,2\n\t\t\tMAXRA\t\t# SET POSMAX IF OVFL.\n\t\tBPL\t\t\t# CONTINUE WITH VALID RAPO.\n\t\t\t+3\nMAXRA\t\tDLOAD\t\t\t# RAPO CALC IS NOT VALID.  SET RAPO =\n\t\t\tNEARONE\t\t# POSMAX AS A TAG.\n +3\t\tSTORE\tRAPO\t\t# APOGEE RADIUS  M  E:(-29) M:(-27)\nDUMPRPRA\tRVQ\n\n#\t\t\t\t\t\t\t\t30 W\n# Page 1275\n# SUBROUTINE NAME:  CALCTPER / CALCTFF\t\t\t\t\tDATE:  01.29.67\n# MOD NO:  0\t\t\t\t\t\t\t\tLOG SECTION:  TIME OF FREE FALL\n# MOD BY:  RR BAIRNSFATHER\n# MOD NO:  1\tMOD BY:  RR BAIRNSFATHER\tDATE: 21 MAR 67\n# MOD NO:  2\tMOD BY:  RR BAIRNSFATHER\tDATE: 14 APR 67\n# MOD BY:  3\tMOD BY:  RR BAIRNSFATHER\tDATE: 8 JUL 67\t\tNEAR EARTH MUE AND NEG TFF (GONEPAST)\n# MOD BY:  4\tMOD BY:  RR BAIRNSFATHER\tDATE: 21 NOV 67\t\tADD VARIABLE MU.\n# MOD BY:  5\tMOD BY:  RR BAIRNSFATHER\tDATE: 21 MAR 68\t\tACCEPT DIFFERENT EARTH/MOON SCALES\n#\n# FUNCTIONAL DESCRIPTION:  PROGRAM CALCULATES THE FREE-FALL TIME OF FLIGHT FROM PRESENT POSITION RN AND\n#\tVELOCITY VN TO A RADIUS LENGTH SPECIFIED BY RTERM, SUPPLIED BY THE USER.  THE POSITION VECTOR\n#\tRN MAY BE ON EITHER SIDE OF THE CONIC, BUT RTERM IS CONSIDERED ON THE INBOUND SIDE.\n#\tTHE EQUATIONS ARE:\n#\n#\t\tQ2 = -SQRT(RTERM (2-RTERM ALFA) - LCP)\t(INBOUND SIDE)\tLEQ +- LCE/SQRT(ALFA)\n#\t\t     __ __\n#\t\tQ1 = RN.VN / SQRT(MU)\t\t\t\t\tLEQ +- LCE/SQRT(ALFA)\n#\n# \t\tZ = NUM / DEN\t\t\t\t\t\tLEQ +- 1/SQRT(ALFA)\n#\n#\tWHERE, IF INBOUND\n#\t\tNUM = RTERM -RN\t\t\t\t\t\tLEQ +- 2 LCE/ALFA\n#\t\tDEN = Q2+Q1\t\t\t\t\t\tLEQ +- 2 LCE/SQRT(ALFA)\n#\n# \tAND, IF OUTBOUND\n#\t\tNUM = Q2-Q1\t\t\t\t\t\tLEQ +- 2 LCE/SQRT(ALFA)\n#\t\tDEN = 2 - ALFA (RTERM + RN).\t\t\t\tLEQ +- 2 LCE\n#\n#\tIF \tALFA ZZ < 1.0\t\t(FOR ALL CONICS EXCEPT ELLIPSES HAVING ABS(DEL ECC ANOM) G 90 DEG)\n#\tTHEN\tX = ALFA Z Z\n#\tAND\tTFF = (RTERM +RN -2 ZZ T(X) ) Z/SQRT(MU)\n#\t\tEXCEPT \tIF ALFA PNZ, AND IF TFF NEG,\n#\t\tTHEN\tTFF = 2 PI /(ALFA SQRT(ALFA)) + TFF\n#\tOR\tIF ALFA ZZ GEQ 1.0\t(FOR ELLIPSES HAVING ABS(DEL ECC ANOM) GEQ 90 DEG)\n#\tTHEN\tX = 1/ALFA Z Z\n#\tAND\tTFF = (PI/SQRT(ALFA) -Q2 +Q1 +2(X T(X) -1) /ALFA Z) /ALFA SQRT(MU)\n#\tWHERE\tT(X) IS A POLYNOMIAL APPROXIMATION TO THE SERIES\n#\t\t             2      3             2\n#\t\t1/3 - X/5 + X /7 - X /8 ...\t(X  < 1.0)\n#\n# CALLING SEQUENC:\tTIME TO RTERM\t\t\tTIME TO PERIGEE\n#\t\t\tCALL\t\t\t\tCALL\n#\t\t\t\tCALCTFF\t\t\t\tCALCTPER\n#\t\t\tC(MPAC) = TERMNL RAD M\t\tC(MPAC) = PERIGEE RAD M\n#\tFOR EITHER, E:(-29) M:(-27)\n#\tFOR EITHER, PUSHLOC = PDL+0, ARBITRARY IF LEQ 8D.\n# Page 1276\n#\n# SUBROUTINES CALLED:\tT(X), VIA RTB\n#\n# NORMAL EXIT MODE:\tRVQ\n#\tHOWEVER, PROGRAM EXITS WITH ONE OF THE FOLLOWING VALUES FOR TFF (-28) CS IN MPAC.  USER MUST STORE.\n#\t\tA. TFF = FLIGHT TIME.  NORMAL CASE FOR POSITIVE FLIGHT TIME LESS THAN ONE ORBITAL PERIOD.\n#\t\tB. (THIS OPTION IS NO LONGER USED.)\n#\t\tC. TFF = POSMAX.  THIS INDICATES THAT THE CONIC FROM THE PRESENT POSITION WILL NOT RETURN TO\n#\t\t   THE SPECIFIED ALTITUDE.  ALSO INDICATES OUTBOUND PARABOLA OR HYPERBOLA.\n#\n# OUTPUT:\tC(MPAC)\t\t(-28) CS\tTIME OF FLIGHT, OR TIME TO PERIGEE\n#\t\tTFFX\t\t(0)\t\tX\t\t\t\t\tLEFT FOR ENTRY DISPLAY TFF ROUTINES\n#\t\tNRTERM\t\tE:(-29+NR) M\tRTERM, WEIGHTED BY NR\t\t\tLEFT FOR ENTRY DISPLAY TFF ROUTINES\n#\t\t\t\tM:(-27+NR)\n#\t\tTFFTEM\t\tE:(-59+2NR)\tLCP Z Z SGN(SDELF)\t\t\tLEFT FOR ENTRY DISPLAY TFF ROUTINES\n#\t\t\t\tM:(-55+2NR)\tLCP /ALFA SGN(SDELF)\t\t\tLEFT FOR ENTRY DISPLAY TFF ROUTINES\n#\t\tNOTE:\tTFFTEM = PDL 36D AND WILL BE DESTROYED BY .:UNIT:.\n#\t\tRMAG1\t\tE:(-29) M:(-27)\tPDL 12 NOT TOUCHED.\n#\t\tTFFQ1\t\tE:(-16) M:(-15)\tPDL 14D\n#\t\tTFFDELQ\t\tE:(-16) M:(-15)\tPDL 10D\n#\t\tPUSHLOC AT PDL+0\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\t\tRONE\t\tE:(-29) M:(-27)\tM  STATE VECTOR\t\t\t\tLEFT BY USER\n#\t\tVONE'\t\tE:(+10) M:(+9)\tVN/SQRT(NU)\t\t\t\tLEFT BY TFF/CONIC\n#\t\tRMAG1\t\tE:(-29) M:(-27)\tPRESENT RADIUS, M\t\t\tLEFT BY TFFCONIC\n#\t\tC(MPAC)\t\tE:(-29) M:(-27)\tRTERM, TERMINAL RADIUS LENGTH, M\tLEFT BY USER\n#\n#\t\tTHE FOLLOWING ARE STORED IN THE PUSH LIST AREA.\n#\t\tTFF/RTMU\tE:(17) M:(14)\t1/SQRT(MU)\t\t\t\tLEFT BY TFFCONIC.\n#\t\tNRMAG\t\tE:(-29+NR)\tM  RMAG, NORMALIZED\t\t\tLEFT BY TFFCONIC\n#\t\t\t\tM:(-27+NR)\n#\t\tX1\t\t\t\t-NR, NORM COUNT\t\t\t\tLEFT BY TFFCONIC\n#\t\tTFFNP\t\tE:(-38+2NR)\tM  LCP, SEMI LATUS RECTUM, WEIGHT NR\tLEFT BY TFFCONIC\n#\t\t\t\tM:(-36+2N4)\n#\t\tTFFALFA\t\tE:(26-NR)\t1/M  ALFA, WEIGHT NR\t\t\tLEFT BY TFFCONIC\n#\t\t\t\tM:(24-NR)\n#\t\tTFFRTALF\tE:(10+NA)\tSQRT(ALFA), NORMALIZED\t\t\tLEFT BY TFFCONIC\n#\t\t\t\tM:(9+NA)\n#\t\tX2\t\t\t\t-NA, NORMCOUNT\t\t\t\tLEFT BY TFFCONIC\n#\t\tTFF1/ALF\tE:(-22-2NA)\tSIGNED SEMI-MAJOR AXIS, WEIGHTED BY NA\tLEFT BY TFFCONIC\n#\t\t\t\tM:(-20-2NA)\n#\n# DEBRIS:\tQPRET, PDL+0 ... PDL+3\n#\t\tRTERM\t\tE:(-29) M(-27)\tRTERM, TERMINAL RADIUS LENGTH\n#\t\tRAPO\t\tE:(-29) M(-27)\tPDL 16D (=NRTERM)\n#\t\tRPER\t\tE:(-29) M(-27)\tPDL 14D (=TFFQ1)\n\n# Page 1277\nCALCTPER\tSETGO\t\t\t# ENTER WITH RPER IN MPAC\n\t\t\tTFFSW\n\t\t\t+3\nCALCTFF\t\tCLEAR\t\t\t# ENTER WITH RTERM IN MPAC\n\t\t\tTFFSW\n +3\t\tSTORE\tRTERM\t\t# E:(-29) M:(-27)\n\t\tSL*\n\t\t\t0,1\t\t# X1=-NR\n\t\tSTORE\tNRTERM\t\t# RTERM  E:(-29+NR) M:(-27+NR)\n\t\tDMP\tBDSU\n\t\t\tTFFALFA\t\t# ALFA  E:(26-NR) M:(24-NR)\n\t\t\tTFF1/4\n\t\tPUSH\tDMP\t\t# (2-ALFA RTERM)  (-3)  TO PDL+0\n\t\t\tNRTERM\t\t# E:(-29+NR) M:(-27+NR)\n\t\tPDDL\tSR*\t\t# RTERM(2-ALFA RTERM) TO PDL+2\n\t\t\t\t\t# E:(-32+NR) M:(-30+NR)\n\t\t\tTFFNP\t\t# LC P  E:(-38+2NR) M:(-36+2NR)\n\t\t\t0 \t-6,1\t# X1 = -NR\n\t\tDCOMP\tDAD\t\t# DUE TO SHIFTS, KEEP PRECISION FOR SQRT\n\t\t\t\t\t# RTERM(2-ALFA RTERM) FROM PDL +2\n\t\t\t\t\t# E:(-32+NR) M:(-30+NR)\n\t\tSR*\t\t\t# LEAVE  E:(-32) M:(-30)\n\t\t\t0,1\t\t# X1 = -NR\n\t\tBOFF\tDLOAD\t\t# CHECK TFF /TPER SWITCH\n\t\t\tTFFSW\n\t\t\t+2\t\t# IF TFF, CONTINUE\n\t\t\tTFFZEROS\t# IF TPER, SET Q2 = 0\n +2\t\tBMN\tSQRT\t\t# E:(-16) M:(-15)\n\n\t\t\tMAXTFF1\t\t# NO FREE FALL CONIC TO RTERM FROM HERE\n\t\t\t\t\t# RESET PDL, SET TFF=POSMAX, AND EXIT.\n\n\t\tDCOMP\tBOVB\t\t# RT IS ON INBOUND SIDE.  ASSURE OVFIND=0\n\t\t\tTCDANZIG\t# ANY PORT IN A STORM.\n\t\tSTOVL\tTFFTEM\t\t# Q2  E:(-16) M:(-15)\n\t\t\tVONE'\t\t# VN/SQRT(MU)  E:(10) M:(9)\n\t\tDOT\tSL3\n\t\t\tRONE\t\t# SAVED RN.  E:(-29) M:(-27)\n\t\tSTORE\tTFFQ1\t\t# Q1, SAVE FOR GONEPAST TEST.\n\t\t\t\t\t# E:(-16) M:(-15)\n\t\tBMN\tBDSU\n\t\t\tINBOUND\t\t# USE ALTERNATE Z\n\t\t\tTFFTEM\t\t# Q2  E:(-16) M:(-15)\n\n# OUTBOUND Z CALC CONTINUES HERE\n\n\t\tSTODL\tTFFX\t\t# NUM=Q2-Q1  E:(-16) M:(-15)\n\t\t\tTFFALFA\t\t# ALFA  E:(26-NR) M:(24-NR)\n\t\tDMP\tBDSU\n# Page 1278\n\t\t\tNRMAG\t\t# RMAG  E:(-29+NR) M:(-27+NR)\n\t\t\t\t\t# (2-RTERM ALFA)  (-3) FROM PDL+0\nSAVEDEN\t\tPUSH\tABS\t\t# DEN TO PDL+0\tE:(-3) OR (-16)\n\t\t\t\t\t#               M:(-3) OR (-15)\n\t\tDAD\tBOV\t\t# INDETERMINANCY TEST\n\t\t\tLIM(-22)\t# =1.0-B(-22)\n\t\t\tTFFXTEST\t# GO IF DEN >/= B(-22)\n\t\tDLOAD\tPDDL\t\t# SET DEN=0 OTHERWISE\n\t\t\tTFFZEROS\n\t\t\t\t\t# XCH ZERO WITH PDL+0\n\t\tDLOAD\tDCOMP\n\t\t\tTFFALFA\t\t# ALFA  E:(26-NR) M:(24-NR)\n\t\tBMN\tDLOAD\t\t# FOR TPER:  Z INDET AT DELE/2=0 AND 90.\n\t\t\tTFFEL1\t\t# ASSUME 90, AND LEAVE 0 IN PDL: 1/Z=D/N\n\n\t\t\t\t\t# Z INDET. AT PERIGEE FOR PARAB OR HYPERB.\nDUMPTFF1\tRVQ\t\t\t# RETURN TFF =0\n\n# INBOUND Z CALC CONTINUES HERE\n\nINBOUND\t\tDLOAD\t\t\t# RESET PDL+0\n\t\tDLOAD\tDSU\t\t# ALTERNATE Z CALC\n\t\t\tRTERM\t\t# E:(-29) M:(-27)\n\t\t\tRMAG1\t\t# E:(-29) M:(-27)\n\t\tSTODL\tTFFX\t\t# NUM=RTERM-RN  E:(-29) M:(-27)\n\t\t\tTFFTEM\t\t# Q2  E:(-16) M:(-15)\n\t\tDAD\tGOTO\n\t\t\tTFFQ1\t\t# Q1  E:(-16) M:(-15)\n\t\t\tSAVEDEN\t\t# DEN = Q2+Q1  E:(-16) M:(-15)\n\nTFFXTEST\tDAD\tPDDL\t\t# (ABS(DEN) TO PDL+2)\tE:(-3) OR (-16)\n\t\t\t\t\t#\t\t\tM:(-3) OR (-15)\n\t\t\tDP(-22)\t\t# RESTORE ABS(DEN) TO MPAC\n\t\t\tTFFX\t\t# NUM  E:(-16) OR (-29)  M:(-15) OR (-27)\n\t\tDMP\tSR*\n\t\t\tTFFRTALF\t# SQRT(ALFA)  E:(10+NA) M:(9+NA)\n\t\t\t0 \t-3,2\t# X2=-NA\n\t\tDDV\t\t\t# C(MPAC) =NUM SQRT(ALFA)\tE:(-3) OR (-16)\n\t\t\t\t\t#\t\t\t\tM:(-3) OR (-15)\n\t\t\t\t\t# ABS(DEN) FROM PDL+2\tE:(-3) OR (-16)\n\t\t\t\t\t#\t\t\tM:(-3) OR (-15)\n\t\tDLOAD\tBOV\t\t# (THE DLOAD IS SHARED WITH TFFELL)\n\t\t\tTFFX\t\t# NUM  E:(-16) OR (-29)  M:(-15) OR (-27)\n\t\t\tTFFELL\t\t# USE EQN FOR DELE GEQ 90, LEQ -90\n\n# OTHERWISE, CONTINUE FOR GENERAL CONIC FOR TFF EQN\n\n\t\tDDV\tSTADR\n\t\t\t\t\t# DEN FROM PDL+0\tE:(-3) OR (-16)\n\t\t\t\t\t#\t\t\tM:(-3) OR (-15)\n\t\tSTORE\tTFFTEM\t\t# Z SAVE FOR SIGN OF SDELF.\n# Page 1279\n\t\t\t\t\t# E:(-13) M:(-12)\n\t\tPUSH\tDSQ\t\t# Z TO PDL+0\n\t\tPUSH\tDMP\t\t# Z SQ TO PDL+2  E:(-26) M:(-24)\n\t\t\tTFFNP\t\t# LC P  E:(-38+2NR) M:(-36+NR)\n\t\tSL\tSIGN\n\t\t\t5\n\t\t\tTFFTEM\t\t# AFFIX SIGN FOR SDELF (ENTRY DISPLAY)\n\t\tSTODL\tTFFTEM\t\t# P ZSQ  E:(-59+2NR) M:(-55+2NR)\n\t\t\t\t\t# (ARG IS USED IN TFF/TRIG)\n\t\t\t\t\t# ZSQ FROM PDL+2  E:(-26) M:(-24)\n\t\tPUSH\tDMP\t\t# RESTORE PUSH LOC\n\t\t\tTFFALFA\t\t# ALFA  E:(26-NR) M:(24-NR)\n\t\tSL*\n\t\t\t0,1\t\t# X1=-NR\n\t\tSTORE\tTFFX\t\t# X\n\t\tRTB\tDMP\n\t\t\tT(X)\t\t# POLY\n\t\t\t\t\t# ZSQ FROM PDL+2  E:(-26) M:(-24)\n\t\tSR2\tBDSU\t\t# 2 ZSQ T(X)  E:(-29) M:(-27)\n\t\t\tRTERM\t\t# RTERM  E:(-29) M:(-27)\n\t\tDAD\tDMP\n\t\t\tRMAG1\t\t# E:(-29) M:(-27)\n\t\t\t\t\t# Z FROM PDL+0  E:(-13) M:(-12)\n\t\tSR3\tBPL\t\t# TFF SQRT(MU)  E:(-45) M:(-42)\n\t\t\tENDTFF\t\t# (NO PUSH UP)\n\t\tPUSH\tSIGN\t\t# TFF SQRT(MU) TO PDL+0\n\t\t\tTFFQ1\t\t# Q1 FOR GONEPAST TEST\n\t\tBPL\tDLOAD\t\t# GONE PAST ?\n\t\t\tNEGTFF\t\t# YES. TFF < 0.\n\t\t\tTFF1/ALF\t# 1/ALFA  E:(-22-2NA) M:(-20-2NA)\n\t\tDCOMP\tBPL\t\t# ALFA > 0 ?\n\t\t\tNEGTFF\t\t# NO. TFF IS NEGATIVE.\n\n# CORRECT FOR ORBITAL PERIOD.\n\n\t\tDCOMP\t\t\t# YES.  CORRECT FOR ORB PERIOD.\n\t\tDMP\tDDV\n\t\t\tPI/16\t\t# 2 PI (-5)\n\t\t\tTFFRTALF\t# SQRT(ALFA)  E:(10+NA) M:(9+NA)\n\t\tSL*\tSL*\n\t\t\t0 \t-4,2\t# X2=-NA\n\t\t\t0 \t-4,2\n\t\tSL*\tDAD\n\t\t\t0,2\n\t\t\t\t\t# TFF SQRT(MU) FROM PDL+0\tE:(-45) M:(-42)\nENDTFF\t\tDMP\tBOV\t\t# TFF SQRT(MU) IN MPAC\t\tE:(-45) M:(-42)\n\t\t\tTFF/RTMU\t# E:(17) M:(14)\n\t\t\tMAXTFF\t\t# SET POSMAX IN OVFL.\n\nDUMPTFF2\tRVQ\t\t\t# RETURN TFF (-28) CS IN MPAC.\n\n# Page 1280\nNEGTFF\t\tDLOAD\n\t\t\t\t\t# TFF SQRT(MU) FROM PDL+0, NEGATIVE.\n\t\tGOTO\n\t\t\tENDTFF\n\nMAXTFF1\t\tDLOAD\t\t\t# RESET PDL\nMAXTFF\t\tDLOAD\tRVQ\n\t\t\tNEARONE\n\n# TIME OF FLIGHT ELLIPSE WHEN DEL (ECCENTRIC ANOM) GEQ 90 AND LEQ -90.\n\n\t\t\t\t\t# NUM FROM TFFX.\tE:(-16) OR (-29)\n\t\t\t\t\t#\t\t\tM:(-15) OR (-27)\nTFFELL\t\tSL2\t\t\t# NUM  E:(-14) OR (-27)  M:(-13) OR (-25)\n\t\tBDDV\tPUSH\t\t# TEMP SAVE D/N IN PDL+0\n\t\t\t\t\t# DEN FROM PDL+0  E:(-3)/(-16)  M:(-3)/(-15)\n\t\t\t\t\t# N/D TO PDL+0  E:(11) M:(10)\nTFFEL1\t\tDLOAD\tDSU\t\t# (ENTER WITH D/N=0 IN PDL+0)\n\t\t\tTFFTEM\t\t# Q2  E:(-16) M:(-15)\n\t\t\tTFFQ1\t\t# Q1  E:(-16) M:(-15)\n\t\tSTODL\tTFFDELQ\t\t# Q2-Q1  E:(-16) M:(-15)\n\t\t\t\t\t# D/N FROM PDL+0\n\t\tSTADR\n\t\tSTORE\tTFFTEM\t\t# D/N  E:(11) M:(10)\n\t\tDMP\tSL*\n\t\t\tTFF1/ALF\t# 1/ALFA  E:(-22-2NA) M:(-20-2NA)\n\t\t\t0,2\t\t# 1/ALFA Z  E:(-11-NA) M:(-10-NA)\n\t\tPUSH\tDMP\t\t# TO PDL+0\n\t\t\tTFFTEM\t\t# 1/Z  E:(11) M:(10\n\t\tSL*\tBOVB\n\t\t\t0,2\t\t# X2= -NA\n\t\t\tSIGNMPAC\t# IN CASE X= 1.0, CONTINUE\n\t\tSTORE\tTFFX\t\t# X=1/ALFA ZSQ\n\t\tRTB\tDMP\n\t\t\tT(X)\t\t# POLY\n\t\t\tTFFX\n\t\tSR3\tDSU\n\t\t\tDP2(-3)\n\t\tDMP\tPUSH\t\t# 2(X T(X)-1) /Z ALFA\tE:(-15-NA)\n\t\t\t\t\t#\t\t\tM:(-14-NA)\n\t\t\t\t\t# 1/ALFA Z FROM PDL+0\tE:(-11-NA)\n\t\t\t\t\t#\t\t\tM:(-10-NA)\n\t\tDLOAD\tDMP\t\t# GET SIGN FOR SDELF\n\t\t\tTFFTEM\t\t# 1/Z  E:(11) M:(10)\n\t\t\tRMAG1\t\t# E:(-29) M:(-27)\n\t\tSL2\tDAD\n\t\t\tTFFQ1\t\t# Q1  E:(-16) M:(-15)\n\t\tSTODL\tTFFTEM\t\t# (Q1+R 1/Z) =SGN OF SDELF  E:(-16) M:(-15)\n\t\t\tTFFNP\t\t# LC P  E:(-38+2NR) M:(-36+2NR)\n\t\tDMP\tSL*\t\t# CALC FOR ARG FOR TFF/TRIG.\n# Page 1281\n\t\t\tTFF1/ALF\t# 1/ALFA  E:(-22-2NA) M:(-20-2NA)\n\t\t\t1,2\t\t# X2=-NA\n\t\tSIGN\tSL*\n\t\t\tTFFTEM\t\t# AFFIX SIGN FOR SDELF\n\t\t\t0,2\n\t\tSTODL\tTFFTEM\t\t# P/ALFA  E:(-59+2NR) M:(-55+2NR)\n\t\t\t\t\t# (ARG FOR USE IN TFF/TRIG)\n\t\t\tTFF1/ALF\t# 1/ALFA  E:(-22-2NA) M:(-20-2NA)\n\t\tSQRT\tDMP\n\t\t\tPI/16\t\t# PI (-4)\n\t\tDAD\n\t\t\t\t\t# 2(XT(X)-1)/Z ALFA FROM PDL\tE:(-15-NA)\n\t\t\t\t\t#\t\t\t\tM:(-14-NA)\n\t\tSL*\tDSU\n\t\t\t0 \t-1,2\n\t\t\tTFFDELQ\t\t# Q2-Q1  E:(-16) M:(-15)\n\t\tDMP\tSL*\n\t\t\tTFF1/ALF\t# 1/ALFA  E:(-22-2NA) M:(-20-2NA)\n\t\t\t0 \t-3,2\n\t\tSL*\tGOTO\n\t\t\t0 \t-4,2\n\t\t\tENDTFF\t\t# TFF SQRT(MU) IN MPAC E:(-45) M:(-42)\n\n# Page 1282\n# PROGRAM NAME:  T(X)\t\t\t\tDATE:  01.17.67\n# MOD NO:  0\t\t\t\t\tLOG SECTION:  TIME OF FREE FALL\n# MOD BY:  RR BAIRNSFATHER\n#\n# FUNCTIONAL DESCRIPTION:  THE POLYNOMIAL T(X) IS USED BY TIME OF FLIGHT SUBROUTINES CALCTFF AND\n#\tCALCTPER TO APPROXIMATE THE SERIES\n#\t\t           2     3\n#\t\t1/3 -X/5 +X /7 -X /9 ...\n#\n#\tWHERE\tX = ALFA Z Z\t\tIF ALFA Z Z LEQ 1\n#\t\tX = 1/(ALFA Z Z)\tIF ALFA Z Z G 1\n#\n#\tALSO\tX IS NEG FOR HYPERBOLIC ORBITS\n#\t\tX = 0 FOR PARABOLIC ORBITS\n#\t\tX IS POSITIVE FOR ELLIPTIC ORBITS\n#\n#\tFOR FLIGHT 278, THE POLYNOMIAL T(X) IS FITTED OVER THE RANGE (0,+1) AND HAS A MAXIMUM\n#\tDEVIATION FROM THE SERIES OF 2 E-5.  (T(X) IS A CHEBYCHEV TYPE FIT AND WAS OBTAINED USING\n#\tMAX PROGRAM AUTOCURFIT294RRB AND IS VALID TO THE SAME TOLERANCE OVER THE RANGE (-.08,+1).)\n#\n# CALLING SEQUENCE:\tRTB\n#\t\t\t\tT(X)\n#\tC(MPAC) = X\n#\n# SUBROUTINE CALLED:  NONE\n#\n# NORMAL EXIT MODE:  TC TANZIG\n#\n# ALARMS:  NONE\n#\n# OUTPUT:  C(MPAC) = T(X)\n#\n# ERASABLE INITIALIZATION REQUIRED:\n#\tC(MPAC) = X\n#\n# DEBRIS:  NONE\n\nT(X)\t\tTC\tPOLY\n\t\tDEC\t4\t\t# N-1\n\t\t2DEC\t3.333333333 E-1\n\n\t\t2DEC*\t-1.999819135 E-1*\n\n\t\t2DEC*\t1.418148467 E-1*\n\n\t\t2DEC* \t-1.01310997 E-1*\n\n\t\t2DEC*\t5.609004986 E-2*\n\n\t\t2DEC*\t-1.536156925 E-2*\n\nENDT(X)\t\tTC\tDANZIG\n\nTCDANZIG\t=\tENDT(X)\n\n# Page 1283\n# TFF CONSTANTS\n\n\t\tBANK\t32\n\n\t\tSETLOC\tTOF-FF1\n\t\tBANK\n\n#\t\t\t\t\t\t# NOTE:  ADJUSTED MUE FOR NEAR EARTH TRAJ.\n#MUE\t\t=\t3.990815471 E10\t\t# M CUBE/CS SQ\n#RTMUE\t\t=\t1.997702549 E5 B-18*\t# MODIFIED EARTH MU\n#\n#\t\t\t\t\t\t# NOTE:  ADJUSTED MUE FOR NEAR EARTH TRAJ.\n#MUM\t\t=\t4.902778 E8\t\t# M CUBE/CS SQ\n#RTMUM\t\t2DEC*\t2.21422176 E4 B-18*\n\nPI/16\t\t2DEC\t3.141592653 B-4\n\nLIM(-22)\t2OCT\t3777737700\t\t# 1.0 -B(-22)\n\nDP(-22)\t\t2OCT\t0000000100\t\t# B(-22)\n\nDP2(-3)\t\t2DEC\t1 B-3\n\nDP2(-4)\t\t2DEC\t1 B-4\t\t\t# 1/16\n\n# RPAD1\t\t2DEC\t6373338 B-29\t\t# M (-29) = 20909901.57 FT\n\nRPAD1\t\t=\tRPAD\n\nR300K\t\t2DEC\t6464778 B-29\t\t# (-29) M\n\nNEARONE\t\t2DEC\t.999999999\n\nTFFZEROS\tEQUALS\tHI6ZEROS\nTFF1/4\t\tEQUALS\tHIDP1/4\n\n"
  },
  {
    "path": "Luminary099/TJET_LAW.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTJET_LAW.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1460-1469\n# Mod history:\t2009-05-27 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2009-06-06 RSB\tEliminated a stray instruction that had crept\n#\t\t\t\tin somehow.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1460\n# PROGRAM DESCRIPTION\n# DESIGNED BY:\tR. D. GOSS AND P. S. WEISSMAN\n# CODED BY:  P. S. WEISSMAN, 28 FEBRUARY 1968\n#\n# TJETLAW IS CALLED AS A SUBROUTINE WHEN THE LEM IS NOT DOCKED AND THE AUTOPILOT IS IN THE AUTOMATIC OR\n# ATTITUDE-HOLD MODE TO CALCULATE THE JET-FIRING-TIME (TJET) REQUIRED FOR THE AXIS INDICATED BY AXISCTR:\n#\t-1\tINDICATES THE P-AXIS\n#\t+0\tINDICATES THE U-AXIS\n#\t+1\tINDICATES THE V-AXIS\n# THE REGISTERS E AND EDOT CONTAIN THE APPROPRIATE ATTITUDE ERROR AND ERROR RATE AND SENSETYP SHOWS WHETHER\n# UNBALANCED COUPLES ARE PREFERRED.  TJETLAW ALSO USES VARIOUS FUNCTIONS OF ACCELERATION AND DEADBAND WHICH ARE\n# COMPUTED IN THE 1/ACCONT SECTION OF 1/ACCS AND ARE STORED IN SUCH AN ORDER THAT THEY CAN BE CONVENIENTLY\n# ACCESSED BY INDEXING.\n#\n# THE SIGN OF THE REQUIRED ROTATION IS CARRIED THROUGH TJETLAW AS ROTSENSE AND IS FINALLY APPLIED TO TJET JUST\n# PREVIOUS TO ITS STORAGE IN THE LOCATION CORRESPONDING TO THE AXIS (TJP, TJU, OR TJV).  THE NUMBER OF JETS THAT\n# TJETLAW ASSUMES WILL BE USED AS INDICATED BY THE SETTING OF NUMBERT FOR THE U- OR V-AXIS.  TWO JETS ARE ALWAYS\n# ASSUMED FOR THE P-AXIS ALTHOUGH FOUR JETS WILL BE FIRED WHEN FIREFCT IS MORE NEGATIVE THAN -4.0 DEGREES\n# (FIREFCT IS THE DISTANCE TO A SWITCH CURVE IN THE PHASE PLANE) AND A LONG FIRING IS CALLED FOR.\n#\n# IN ORDER TO AVOID SCALING DIFFICULTIES, SIMPLE ALGORITHMS TAGGED RUFLAW1, -2 AND -3 ARE RESORTED TO WHEN THE\n# ERROR AND/OR ERROR RATE ARE LARGE.\n#\n# CALLING SEQUENCE:\n#\t\tTC\tTJETLAW\t\t# (MUST BE IN JASK)\n#\tOR\n#\t\tINHINT\t\t\t# (MUST BE IN JASK)\n#\t\tTC\tIBNKCALL\n#\t\tCADR\tTJETLAW\n#\t\tRELINT\n#\n# EXIT:\t\tRETURN TO Q.\n#\n# INPUT:\n#\tFROM THE CALLER:  E, EDOT, AXISCTR, SENSETYP, TJP, -U, -V.\n#\tFROM 1/ACCONT:  48 ERASABLES BEGINNING AT BLOCKTOP (INCLUDING FLAT, ZONE3LIM AND ACCSWU, -V).\n#\n# OUTPUT:\n#\tTJP, -U OR -V, NUMBERT (DAPTEMP5), FIREFCT (DAPTEMP3).\n#\n# DEBRIS:\n#\tA, L, Q, E, EDOT, DAPTEMP1-6, DAPTEMP1-4.\n#\n# ALARM:  NONE\n\n\t\tBANK\t17\n\t\tSETLOC\tDAPS2\n\t\tBANK\n\t\tEBANK=\tTJP\n# Page 1461\n\t\tCOUNT*\t$$/DAPTJ\n\nTJETLAW\t\tEXTEND\t\t\t# SAVE Q FOR RETURN.\n\t\tQXCH\tHOLDQ\n\n# SET INDEXERS TO CORRESPOND TO THE AXIS AND TO THE SIGN OF EDOT\n\n\t\tINDEX\tAXISCTR\t\t# AXISDIFF(-1)=NO OF LOCATIONS BET P AND U\n\t\tCAF\tAXISDIFF\t# AXISDIFF(0)=0\n\t\tTS\tADRSDIF1\t# AXISDIFF(+1)=NO OF LOCATIONS BET V AND U\n\n\t\tCAE\tEDOT\t\t# IF EDOT NEGATIVE, PICK UP SET OF VALUES\n\t\tEXTEND\t\t\t#\tTHAT ALLOW USE OF SAME CODING AS FOR\n\t\tBZMF\tNEGEDOT\t\t#\tPOSITIVE EDOT.\n\t\tCAE\tADRSDIF1\t# SET A SECOND INDEXER WHICH MAY BE\n\t\tTS\tADRSDIF2\t# \tMODIFIED BY A DECISION FOR MAX JETS.\n\t\tCAF\tSENSOR\t\t# FOR POSITIVE EDOT, ROTSENSE IS\n\t\tTCF\tSETSENSE\t# \tINITIALIZED POSITIVE.\n\nNEGEDOT\t\tCS\tE\t\t# IN ORDER FOR NEG EDOT CASE TO USE CODING\n\t\tTS\tE\t\t#\tOF POS EDOT, MUST MODIFY AS FOLLOWS:\n\t\tCS\tEDOT\t\t#\t1. COMPLEMENT E AND EDOT.\n\t\tTS\tEDOT\t\t#\t2. SET SENSE OF ROTATION TO NEGATIVE\n\t\tCAF\tBIT1\t\t#\t   (REVERSED LATER IF NECESSARY).\n\t\tADS\tADRSDIF1\t#\t3. INCREMENT INDEXERS BY ONE SO THAT\n\t\tTS\tADRSDIF2\t#\t   THE PROPER PARAMETERS ARE ACCESSED.\n\t\tCS\tSENSOR\nSETSENSE\tTS\tROTSENSE\n\n# TEST MAGNITUDE OF E (ATTITUDE ERROR, SINGLE-PRECISION, SCALED AT PI RADIANS):\n#\tIF GREATER THAN (OR EQUAL TO) PI/16 RADIANS, GO TO THE SIMPLIFIED TJET ROUTINE.\n#\tIF LESS THAN PI/16 RADIANS, RESCALE TO PI/4\n\n\t\tCAE\tE\t\t# PICK UP ATTITUDE ERROR FOR THIS AXIS\n\t\tEXTEND\n\t\tMP\tBIT5\t\t# SHIFT RIGHT TEN BITS:  IF A-REGISTER IS\n\t\tCCS\tA\t\t#\tZERO, RESCALE AND TEST EDOT.\n\t\tTCF\tRUFLAW2\n\t\tTCF\tSCALEE\n\t\tTCF\tRUFLAW1\nSCALEE\t\tCAF\tBIT13\t\t# ERROR IS IN L SCALED AT PI/16.  RESCALE\n\t\tEXTEND\t\t\t#\tIT TO PI/4 AND SAVE IT.\n\t\tMP\tL\n\t\tTS\tE\n\n# TEST MAGNITUDE OF EDOT (ERROR RATE SCALED AT PI/4 RADIANS/SECOND)\n#\tIF GREATER THAN (OR EQUAL TO) PI/32 RADIANS/SECOND, GO TO THE SIMPLIFIED TJET ROUTINE.\n#\tIF LESS THAN PI/32 RADIANS/SECOND, THEN RESCALE TO PI/32 RADIANS/SECOND.\n\n\t\tCAE\tEDOT\t\t# PICK UP SINGLE-PRECISION ERROR-RATE\n# Page 1462\n\t\tEXTEND\t\t\t# FOR THIS AXIS=\n\t\tMP\tBIT4\t\t# SHIFT RIGHT ELEVEN BITS, IF THE A-REG IS\n\t\tEXTEND\t\t\t# ZERO, THEN RESCALE AND USE FINELAW.\n\t\tBZF\tSCALEDOT\n\t\tTCF\tRUFLAW3\n\n# *** FINELAW STARTS HERE ***\n\nSCALEDOT\tLXCH\tEDOT\t\t# EDOT IS SCALED AT PI/32 RADIANS/SECOND.\n\n\t\tCAE\tEDOT\t\t# COMPUTE (EDOT)(EDOT)\n\t\tEXTEND\n\t\tSQUARE\t\t\t# PRODUCT SCALED AT PI(2)/2(10) RAD/SEC.\n\t\tEXTEND\n\t\tMP\tBIT13\t\t# SHIFT RIGHT TWO BITS TO RESCALE TO EDOTSQ\n\t\tTS\tEDOTSQ\t\t#\tTO PI(2)/2(8) RAD(2)/SEC(2).\n\nERRTEST\t\tCCS\tE\t\t# DOES BIG ERROR (THREE DEG BEYOND THE\n\t\tAD\t-3DEG\t\t# DEADBAND) REQUIRE MAXIMUM JETS?\n\t\tTCF\t+2\n\t\tAD\t-3DEG\n\t\tEXTEND\n\t\tINDEX\tADRSDIF1\n\t\tSU\tFIREDB\n\t\tEXTEND\n\t\tBZMF\tSENSTEST\t# IF NOT:  ARE UNBALANCED JETS PREFERRED?\nMAXJETS\t\tCAF\tTWO\t\t# IF YES:  INCREMENT ADDRESS LOCATOR AND\n\t\tADS\tADRSDIF2\t#\t   SET SWITCH FOR JET SELECT LOGIC TO 4.\n\t\tCAF\tFOUR\t\t#\t   (ALWAYS DO THIS FOR P-AXIS)\n\t\tTCF\tTJCALC\nSENSTEST\tCCS\tSENSETYP\t# DOES TRANSLATION PREFER MIN JETS.\n\t\tTCF\tTJCALC\t\t# YES.  USE MIN-JET PARAMETERS\n\t\tTCF\tMAXJETS\t\t# NO.  GET THE MAX-JET PARAMETERS.\nTJCALC\t\tTS\tNUMBERT\t\t# SET TO +0,1,4 FOR (U,V-AXES) JET SELECT.\n\n# BEGINNING OF TJET CALCULATIONS:\n\n\t\tCS\tEDOTSQ\t\t# SCALED AT PI(2)/2(8).\n\t\tEXTEND\n\t\tINDEX\tADRSDIF2\n\t\tMP\t1/ANET1\t\t# .5/ACC SCALED AT 2(6)/PI SEC(2)/RADIAN.\n\t\tINDEX\tADRSDIF1\n\t\tAD\tFIREDB\t\t# DEADBAND SCALED AT PI/4 RADIAN.\n\t\tEXTEND\n\t\tSU\tE\t\t# ATTITUDE ERROR SCALED AT PI/4 RADIAN.\n\t\tTS\tFIREFCT\t\t# -E-.5(EDOTSQ)/ACC-DB AT PI/4 RADIAN.\n\t\tEXTEND\n\t\tBZMF\tZON1,2,3\n\nZONE4,5\t\tINDEX\tADRSDIF1\n\t\tCAE\t1/ACOAST\t# .5/ACC SCALED AT 2(6)/PI WHERE\n# Page 1463\n\t\tEXTEND\t\t\t# ACC = MAX(AMIN, AOS-).\n\t\tMP\tEDOTSQ\t\t# SCALED AT PI/2(8).\n\t\tAD\tE\t\t# SCALED AT PI/4\n\t\tINDEX\tADRSDIF1\n\t\tAD\tCOASTDB\t\t# SCALED AT PI/4 POS. FOR NEG. INTERCEPT.\n\t\tEXTEND\t\t\t# TEST E+.5(EDOTSQ)/ACC+DB AT PI/4 RADIAN.\n\t\tBZMF\tZONE5\t\t# IF FUNCTION NEGATIVE, FIND TJET.\n\t\t\t\t\t# IF FUNCTION POSITIVE, IN ZONE 4.\n\n# ZONE 4 IS THE COAST REGION.  HOWEVER, IF THE JETS ARE ON AND DRIVING TOWARD\n#\tA. THE AXIS WITHIN + OR - (DB + FLAT) FOR DRIFTING FLIGHT, OR\n#\tB. THE USUAL TARGET PARABOLA FOR POWERED FLIGHT\n# THEN THE THRUSTERS ARE KEPT ON.\n\nZONE4\t\tINDEX\tAXISCTR\t\t# IS THE CURRENT VALUE IN TJET NON-ZERO\n\t\tCS\tTJETU\t\t# \tWITH SENSE OPPOSITE TO EDOT,\n\t\tEXTEND\t\t\t#\t(I.E., ARE JETS ON AND FIRING TOWARD\n\t\tMP\tROTSENSE\t#\tTHE DESIRABLE STATE).\n\t\tEXTEND\n\t\tBZMF\tCOASTTJ\t\t# NO.  COAST.\n\nJETSON\t\tCCS\tFLAT\t\t# YES.  IS THIS DRIFTING OR POWERED FLIGHT?\n\t\tTCF\tDRIFT/ON\t# DRIFTING.  GO MAKE FURTHER TEST.\n\n\t\tCS\tFIREFCT\t\t# POWERED (OR ULLAGE).  CAN TARGET PARABOLA\n\t\tINDEX\tADRSDIF1\t#\tBE REACHED FROM THIS POINT IN THE\n\t\tAD\tAXISDIST\t#\tPHASE PLANE?\n\t\tEXTEND\n\t\tBZMF\tCOASTTJ\t\t# NO. SET TJET = 0.\n\t\tTC\tZ123COMP\t# YES.  CALCULATE TJET AS THOUGH IN ZONE 1\n\t\tCAE\tFIREFCT\t\t#\tAFTER COMPUTING THE REQUIRED\n\t\tTCF\tZONE1\t\t#\tPARAMETERS.\n\nDRIFT/ON\tINDEX\tADRSDIF1\t# CAN TARGET STRIP OF AXIS BE REACHED FROM\n\t\tCS\tFIREDB\t\t#\tTHIS POINT IN THE PHASE PLANE?\n\t\tDOUBLE\n\t\tAD\tFIREFCT\n\t\tEXTEND\n\t\tBZMF\t+3\nCOASTTJ\t\tCAF\tZERO\t\t# NO.  SET TJET = 0.\n\t\tTCF\tRETURNTJ\n\n\t\tTC\tZ123COMP\t# YES. CALCULATE TJET AS THOUGH IN ZONE 2\n\t\tTCF\tZONE2,3\t\t#\tOR 3 AFTER COMPUTING REQUIRED VALUES.\n\nZONE5\t\tTS\tL\t\t# TEMPORARILY STORE FUNCTION IN L.\n\t\tCCS\tROTSENSE\t# MODIFY ADRSDIF2 FOR ACCESSING 1/ANET2\n\t\tTCF\t+4\t\t# AND ACCFCTZ5, WHICH MUST BE PICKED UP\n\t\tTC\tCCSHOLE\t\t# FROM THE NEXT LOWER REGISTER IF THE\n\t\tCS\tTWO\t\t# (ACTUAL) ERROR RATE IS NEGATIVE.\n# Page 1464\n\t\tADS\tADRSDIF2\n\n +4\t\tCAE\tL\n\t\tEXTEND\n\t\tINDEX\tADRSDIF2\t# TTOAXIS AND HH ARE THE PARAMETERS UPON\n\t\tMP\tACCFCTZ5\t#\tWHICH THE APPROXIMATIONS TO TJET ARE\n\t\tDDOUBL\t\t\t#\tABASED.\n\t\tDDOUBL\n\t\tDXCH\tHH\t\t# DOUBLE PRECISION H SCALED AT 8 SEC(2).\n\t\tINDEX\tADRSDIF2\n\t\tCAE\t1/ANET2\t\t# SCALED AT 2(7)/PI SEC(2)/RAD.\n\t\tEXTEND\n\t\tMP\tEDOT\t\t# SCALED AT PI/2(5)\n\t\tTS\tTTOAXIS\t\t# SCALED AT 4 SEC.\n\n# TEST WHETHER TJET GREATER THAN 50 MSEC.\n\n\t\tEXTEND\n\t\tMP\t-.05AT2\t\t# H - .05 TTOAXIS - .00125 G.T. ZERO\n\t\tAD\tHH\t\t# \t(SCALED AT 8 SEC(2) ).\n\t\tAD\tNEG2\n\t\tEXTEND\n\t\tBZMF\tFORMULA1\n\n# TEST WHETHER TJET GREATER THAN 150 MSEC.\n\n\t\tCAE\tTTOAXIS\n\t\tEXTEND\n\t\tMP\t-.15AT2\t\t# H - .15 TTOAXIS - .01125 G.T. ZERO\n\t\tAD\tHH\t\t#\t(SCALED AT 8 SEC(2) )\n\t\tAD\t-.0112A8\n\t\tEXTEND\n\t\tBZMF\tFORMULA2\n\n# IF TJET GREATER THAN 150 MSEC, ASSIGN IT VALUE OF 250 MSEC, SINCE THIS\n# IS ENOUGH TO ASSURE NO SKIP NEXT CSP (100 MSEC).\n\nFULLTIME\tCAF\tBIT11\t\t# 250 MSEC SCALED AT 4 SEC.\n\n# RETURN TO CALLING PROGRAM WITH JET TIME SCALED AS TIME6 AND SIGNED.\n\nRETURNTJ\tEXTEND\t\t\t# ALL BRANCHES TERMINATE HERE WITH TJET\n\t\tMP\tROTSENSE\t#\t(SCALED AT 4 SEC) IN THE ACCUMULATOR.\n\t\tINDEX\tAXISCTR\t\t# ROTSENSE APPLIES SIGN AND CHANGES SCALE.\n\t\tTS\tTJETU\n\t\tEXTEND\n\t\tINDEX\tAXISCTR\n\t\tMP\tACCSWU\t\t# SET SWITCH FOR JET SELECT IF ROTATION IS\n\t\tCAE\tL\n\t\tEXTEND\t\t\t#\tIN A SENSE FOR WHICH 1/ACCS HAS FORCED\n\t\tBZMF\t+3\t\t#\tA MAX-JET CALCULATION.\n\t\tCAF\tFOUR\n# Page 1465\n\t\tTS\tNUMBERT\n\t\tTC\tHOLDQ\t\t# RETURN VIA SAVED Q.\n\n# TJET = H/(.025 + TTOAXIS) \tFOR TJET LESS THAN 50 MSEC.\n\nFORMULA1\tCS\t-.025AT4\t# .025 SEC SCALED AT 4.\n\t\tAD\tTTOAXIS\t\t# SCALED AT 4 SECONDS.\n\t\tDXCH\tHH\t\t# STORE DENOMINATOR IN FIRST WORD OF H,\n\t\tEXTEND\t\t\t#\tWHICH NEED NOT BE PRESERVED.  PICK UP\n\t\tDV\tHH\t\t#\tDP H AND DIVIDE BY DENOMINATOR.\n\t\tEXTEND\n\t\tMP\tBIT14\t\t# RESCALE TJET FROM 2 TO USUAL 4 SEC.\n\t\tTCF\tCHKMINTJ\t# CHECK THAT TJET IS NOT LESS THAN MINIMUM\n\n# TJET = (H + .00375)/(0.1 + TTOAXIS)\tFOR TJET GREATER THAN 50 MSEC.\n\nFORMULA2\tEXTEND\n\t\tDCA\t.00375A8\t# .00375 SEC(2) SCALED AT 8.\n\t\tDAS\tHH\t\t# STORE NUMERATOR IN DP H, WHICH NEED NOT\n\t\t\t\t\t#\tBE PRESERVED.\n\t\tCAE\tTTOAXIS\t\t# SCALED AT 4 SEC.\n\t\tAD\t.1AT4\t\t# 0.1 SEC SCALED AT 4.\n\t\tDXCH\tHH\t\t# STORE DENOMINATOR IN FIRST WORD OF H,\n\t\tEXTEND\t\t\t#\tWHICH NEED NOT BE PRESERVED.  PICK UP\n\t\tDV\tHH\t\t#\tDP NUMERATOR AND DIVIDE BY DENOMINATOR\n\t\tEXTEND\n\t\tMP\tBIT14\t\t# RESCALE TJET FROM 2 TO USUAL 4 SEC.\n\t\tTCF\tRETURNTJ\t# END SUBROUTINE.\n\n# SUBROUTINIZED COMPUTATIONS REQUIRED FOR ALL ENTRIES INTO CODING FOR ZONES 1, 2, AND 3.\n# REACHED BY TC FROM 3 POINTS IN TJETLAW.\n\nZ123COMP\tCS\tROTSENSE\t# USED IN RETURNTJ SECTION TO RESCALE TJET\n\t\tTS\tROTSENSE\t# \tAS TIME6 AND GIVE IT PROPER SIGN.\n\t\tCAE\tEDOT\t\t# SCALED AT PI/2(5) RAD/SEC.\n\t\tEXTEND\n\t\tINDEX\tADRSDIF2\n\t\tMP\t1/ANET1\t\t# SCALED AT 2(7)/PI SEC(2)/RAD.\n\t\tTS\tTTOAXIS\t\t# STORE TIME-TO-AXIS SCALED AT 4 SECONDS.\n\t\tAD\t-TJMAX\n\t\tEXTEND\t\t\t# IS TIME TO AXIS LESS THAN 150 MSEC.\n\t\tBZMF\t+2\n\t\tTCF\tFULLTIME\t# NO. FIRE JETS, DO NOT CALCULATE TJET.\n\t\tRETURN\t\t\t# YES.  GO ON TO FIND TJET\n\nZON1,2,3\tTC\tZ123COMP\t# SUBROUTINIZED PREPARATION FOR ZONE1,2,3.\n\n# IF THE (NEG) DISTANCE BEYOND PARABOLA IS LESS THAN FLAT, USE SPECIAL\n# LOGIC TO ACQUIRE MINIMUM IMPULSE LIMIT CYCLE.  DURING POWERED FLIGHT\n# Page 1466\n# OR ULLAGE, FLAT = 0\n\n\t\tCAE\tFIREFCT\t\t# SCALED AT PI/4 RAD.\n\t\tAD\tFLAT\n\t\tEXTEND\n\t\tBZMF\tZONE1\t\t# NOT IN SPECIAL ZONES.\n\n# FIRE FOR AXIS OR, IF CLOSE, FIRE MINIMUM IMPULSE.  IF ON AXIS, COAST.\n\nZONE2,3\t\tCS\tZONE3LIM\t# HEIGHT OF MIN-IMPULSE ZONE SET BY 1/ACCS\n\t\tAD\tTTOAXIS\t\t#\t35 MSEC IN DRIFTING FLIGHT\n\t\tEXTEND\t\t\t#\tZERO WHEN TRYING TO ENTER GTS CONTROL.\n\t\tBZMF\tZONE3\nZONE2\t\tCAE\tTTOAXIS\t\t# FIRE TO AXIS.\n\t\tTCF\tRETURNTJ\nZONE3\t\tCCS\tEDOT\t\t# CHECK IF EDOT IS ZERO.\n\t\tCAF\tBIT6\t\t# FIRE A ONE-JET MINIMUM IMPULSE.\n\t\tTCF\tRETURNTJ\t# TJET = +0.\n\t\tTC\tCCSHOLE\t\t# CANNOT BE BECAUSE NEG EDOT COMPLEMENTED.\n\t\tTCF\tRETURNTJ\t# TJET = +0.\n\nZONE1\t\tEXTEND\n\t\tINDEX\tADRSDIF1\n\t\tSU\tAXISDIST\t# SCALED AT PI/4 RAD.\n\t\tEXTEND\n\t\tINDEX\tADRSDIF2\n\t\tMP\tACCFCTZ1\t# SCALED AT 2(7)/PI SEC(2)/RAD.\n\t\tDDOUBL\n\t\tDDOUBL\n\t\tDXCH\tHH\t\t# DOUBLE PRECISION H SCALED AT 8 SEC(2).\n\n# TEST WHETHER TOTAL TIME REQUIRED GREATER THAN 150 MSEC:\n#\t                     2                                   2\n# \tIS .5(.150 - TTOAXIS)  - H  NEGATIVE (SCALED AT 8 SECONDS )\n\n\t\tCAE\tTTOAXIS\t\t# TTOAXIS SCALED AT 4 SECONDS.\n\t\tAD\t-TJMAX\t\t# -.150 SECOND SCALED AT 4.\n\t\tEXTEND\n\t\tSQUARE\n\t\tEXTEND\n\t\tSU\tHH\t\t# HIGH WORD OF H SCALED AT 8 SEC(2).\n\t\tEXTEND\n\t\tBZMF\tFULLTIME\t# YES.  NEED NOT CALCULATE TJET.\n\n# TEST WHETHER TIME BEYOND AXIS GREATER THAN 50 MSEC TO DETERMINE WHICH APPROXIMATION TO USE.\n\n\t\tCAE\tHH\n\t\tAD\tNEG2\n\t\tEXTEND\n\t\tBZMF\tFORMULA3\n\n# Page 1467\n# TJET = H/0.1 + TTOAXIS + .0375\tFOR APPROXIMATION OVER MORE THAN 50 MSEC.\n\n\t\tCAF\t.1AT2\t\t# STORE .1 SEC SCALED AT 2 FOR DIVISION.\n\t\tDXCH\tHH\t\t# DP H SCALED AT 8 SEC(2) NEED NOT BE\n\t\tEXTEND\t\t\t#\tPRESERVED.\n\t\tDV\tHH\t\t# QUOTIENT SCALED AT 4 SECONDS.\n\t\tAD\tTTOAXIS\t\t# SCALED AT 4 SEC.\n\t\tAD\t.0375AT4\t# .0375 SEC SCALED AT 4.\n\t\tTCF\tRETURNTJ\t# END COMPUTATION.\n\n# TJET - H/.O25 + TTOAXIS \tFOR APPROXIMATION OVER LESS THAN 50 MSEC.\n\nFORMULA3\tCS\t-.025AT2\t# STORE +.25 SEC SCALED AT 2 FOR DIVISION\n\t\tDXCH\tHH\t\t# PICK UP DP H AT 8, WHICH NEED NOT BE\n\t\tEXTEND\t\t\t# \tPRESERVED.\n\t\tDV\tHH\t\t# QUOTIENT SCALED AT 4 SECONDS.\n\t\tAD\tTTOAXIS\t\t# SCALED AT 4 SEC.\n\n# IF COMPUTED JET TIME IS LESS THAN TJMIN, TJET IS SET TO ZERO.\n# MINIMUM IMPULSES REQUIRED IN ZONE 3 ARE NOT SUBJECT TO THIS CONSTRAINT, NATURALLY.\n\nCHKMINTJ\tAD\t-TJMIN\t\t# IS COMPUTED TIME LESS THAN THE MINIMUM.\n\t\tEXTEND\n\t\tBZMF\tCOASTTJ\t\t# YES, SET TIME TO ZERO.\n\t\tAD\tTJMIN\t\t# NO, RESTORE COMPUTED TIME.\n\t\tTCF\tRETURNTJ\t# END COMPUTATION.\n\n# Page 1468\n# *** ROUGHLAW ***\n#\n# BEFORE ENTRY TO RUFLAW:\n#\t1. INDEXERS ADRSDIF1 AND ADRSDIF2 ARE SET ON BASIS OF AXIS, AND SIGN OF EDOT.\n#\t2. IF EDOT WAS NEGATIVE, E AND EDOT ARE ROTATED INTO UPPER HALF-PLANE AND ROTSENSE IS MADE NEGATIVE.\n#\t3. E IS SCALED AT PI RADIANS AND EDOT AT PI/4 RAD/SEC.\n#\t   (EXCEPT THE RUFLAW3 ENTRY WHEN E IS AT PI/4)\n#\n# RUFLAW1:\tERROR MORE NEGATIVE THAN PI/16 RAD.  FIRE TO A RATE OF 6.5 DEG/SEC (IF JET TIME EXCEEDS 20 MSEC.).\n# RUFLAW2:\tERROR MORE POSITIVE THAN PI/16 RAD.  FIRE TO AN OPPOSING RATE OF 6.5 DEG/SEC.\n# RUFLAW3:\tERROR RATE GREATER THAN PI/32 RAD/SEC AND ERROR WITHIN BOUNDS.  COAST IF BELOW FIREFCT, FIRE IF ABOVE\n\nRUFLAW1\t\tCS\tRUFRATE\t\t# DECREMENT EDOT BY .1444 RAD/SEC AT PI/4\n\t\tADS\tEDOT\t\t#\tWHICH IS THE TARGET RATE\n\t\tEXTEND\n\t\tBZMF\tSMALRATE\t# BRANCH IF RATE LESS THAN TARGET.\n\t\tTC\tRUFSETUP\t# REVERSE ROTSENSE AND INDICATE MAX JETS.\n\t\tCAE\tEDOT\t\t# PICK UP DESIRED RATE CHANGE.\n\nRUFLAW12\tEXTEND\t\t\t# COMPUTE TJET\n\t\tINDEX\tADRSDIF2\t#\t= (DESIRED RATE CHANGE)/(2-JET ACCEL.)\n\t\tMP\t1/ANET1 +2\n\t\tAD\t-1/8\t\t# IF TJET, SCALED AT 32 SEC, EXCEEDS\n\t\tEXTEND\t\t\t# \t4 SECONDS, SET TJET TO TJMAX.\n\t\tBZMF\t+2\n\t\tTCF\tFULLTIME\n\t\tEXTEND\n\t\tBZF\tFULLTIME\n\t\tAD\tBIT12\t\t# RESTORE COMPUTED TJET TO ACCUMULATOR\n\t\tDAS\tA\n\t\tDAS\tA\n\t\tDAS\tA\t\t# RESCALED TJET AT 4 SECONDS.\n\t\tTCF\tCHKMINTJ\t# RETURN AS FROM FINELAW.\n\nSMALRATE\tTC\tRUFSETUP +2\t# SET NUMBERT AND FIREFCT FOR MAXIMUM JETS\n\t\tCCS\tROTSENSE\n\t\tCAF\tONE\t\t# MODIFY INDEXER TO POINT TO 1/ANET\n\t\tTCF\t+2\t\t#\tCORRESPONDING TO THE PROPER SENSE.\n\t\tCAF\tNEGONE\n\t\tADS\tADRSDIF2\n\n\t\tCS\tEDOT\t\t# (.144 AT PI/4 - EDOT) = DESIRED RATE CHNG.\n\t\tTCF\tRUFLAW12\n\nRUFLAW2\t\tTC\tRUFSETUP\t# REVERSE ROTSENSE AND INDICATE MAX JETS.\n\t\tCAF\tRUFRATE\n\t\tAD\tEDOT\t\t# (.144 AT PI/4 + EDOT) = DESIRED RATE CHNG.\n\t\tTS\tA\t\t# IF OVERFLOW SKIP, FIRE FOR FULL TIME.\n\t\tTCF\tRUFLAW12\t# OTHERWISE, COMPUTE JET TIME.\n\t\tTCF\tFULLTIME\n\n# Page 1469\nRUFLAW3\t\tTC\tRUFSETUP\t# EXECUTE COMMON RUFLAW SUBROUTINE.\n\t\tINDEX\tADRSDIF1\n\t\tCS\tFIREDB\t\t# CALCULATE DISTANCE FROM SWITCH CURVE\n\t\tAD\tE\t\t#\t1/ANET1*EDOT*EDOT +E - FIREDB = 0\n\t\tEXTEND\t\t\t#\t\tSCALED AT 4 PI RADIANS\n\t\tMP\tBIT11\n\t\tXCH\tEDOT\n\t\tEXTEND\n\t\tSQUARE\n\t\tEXTEND\n\t\tINDEX\tADRSDIF1\n\t\tMP\t1/ANET1 +2\n\t\tAD\tEDOT\n\t\tEXTEND\n\t\tBZMF\tCOASTTJ\t\t# COAST IF BELOW IT.\n\t\tTCF\tFULLTIME\t# FIRE FOR FULL PERIOD IF ABOVE IT.\n\n# SUBROUTINE USED IN ALL ENTRIES TO ROUGHLAW.\n\nRUFSETUP\tCS\tROTSENSE\t# REVERSE ROTSENSE WHEN ENTER HERE.\n\t\tTS\tROTSENSE\n +2\t\tCAF\tFOUR\t\t# REQUIRE MAXIMUM (2) JETS IN U,V-AXES.\n\t\tTS\tNUMBERT\n\t\tCAF\tNEGMAX\t\t# SUGGEST MAXIMUM (4) JETS IN P-AXIS.\n\t\tTS\tFIREFCT\n\t\tTC\tQ\n\n# CONSTANTS FOR TJETLAW\n\n\t\tDEC\t-16\t\t# AXISDIFF(INDEX) = NUMBER OF REGISTERS\nAXISDIFF\tDEC\t+0\t\t#\tBETWEEN STORED 1/ACCS PARAMETERS FOR\n\t\tDEC\t16\t\t#\tTHE INDEXED AXIS AND THE U-AXIS.\nSENSOR\t\tOCT\t14400\t\t# RATIO OF TJET SCALING WITHIN TJETLAW\n\t\t\t\t\t#\t(4 SEC) TO SCALING FOR T6 (10.24 SEC).\n-3DEG\t\tDEC\t-.06667\t\t# -3.0 DEGREES SCALED AT 45.\n-.0112A8\tDEC\t-.00141\t\t# -.01125 SEC(2) SCALED AT 8.\n.1AT4\t\tDEC\t.025\t\t# 0.1 SECOND SCALED AT 4.\n.1AT2\t\tDEC\t.05\t\t# .1 SEC SCALED AT 2.\n.0375AT4\tDEC\t.00938\t\t# .0375 SEC SCALED AT 4.\n-.025AT2\tDEC\t-.0125\t\t# -.025 SEC SCALED AT 2.\n-.025AT4\tDEC\t-.00625\n-.05AT2\t\tDEC\t-.025\n-.15AT2\t\tDEC\t-.075\n.00375A8\t2DEC\t.00375 B-3\n\n-TJMAX\t\tDEC\t-.0375\t\t# LARGEST CALCULATED TIME.  .150 SEC AT 4.\nTJMIN\t\tDEC\t.005\t\t# SMALLEST ALLOWABLE TIME.  .020 SEC AT 4.\n-TJMIN\t\tDEC\t-.005\nRUFRATE\t\tDEC\t.1444\t\t# CORRESPONDS TO TARGET RATE OF 6.5 DEG/S.\n"
  },
  {
    "path": "Luminary099/TRIM_GIMBAL_CONTROL_SYSTEM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tTRIM_GIMBAL_CNTROL_SYSTEM.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1472-1485\n# Mod history:\t2009-05-27 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1472\n\t\tBANK\t21\n\t\tEBANK=\tQDIFF\n\t\tSETLOC\tDAPS4\n\t\tBANK\n\n\t\tCOUNT*\t$$/DAPGT\n\n# CONTROL REACHES THIS POINT UNDER EITHER OF THE FOLLOWING TWO CONDITIONS ONCE THE DESCENT ENGINE AND THE DIGITAL\n# AUTOPILOT ARE BOTH ON:\n#\tA) THE TRIM GIMBAL CONTROL LAW WAS ON DURING THE PREVIOUS Q,R-AXIS TIME5 INTERRUPT (OR THE DAPIDLER\n#\t   INITIALIZATION WAS SET FOR TRIM GIMBAL CONTROL AND THIS IS THE FIRST PASS), OR\n#\tB) THE Q,R-AXES RCS AUTOPILOT DETERMINED THAT THE VEHICLE WAS ENTERING (OR HAD JUST ENTERED) A COAST\n#\t   ZONE WITH A SMALL OFFSET ANGULAR ACCELERATION.\n# GTS IS THE ENTRY TO THE GIMBAL TRIM SYSTEM FOR CONTROLLING ATTITUDE ERRORS AND RATES AS WELL AS ACCELERATIONS.\n\nGTS\t\tCAF\tNEGONE\t\t# MAKE THE NEXT PASS THROUGH THE DAP BE\n\t\tTS\tCOTROLER\t#   THROUGH RCS CONTROL,\n\t\tCAF\tFOUR\t\t#   AND ENSURE THAT IT IS NOT A SKIP.\n\t\tTS\tSKIPU\n\t\tTS\tSKIPV\n\n\t\tCAF\tTWO\n\t\tTS\tINGTS\t\t# SET INDICATOR OF GTS CONTROL POSITIVE.\n\t\tTS\tQGIMTIMR\t# SET TIMERS TO 200 MSEC TO AVOID BOTH\n\t\tTS\tRGIMTIMR\t# RUNAWAY AND INTERFERENCE BY NULLING.\n\n# THE DRIVE SETTING ALGORITHM\n#\n# DEL = SGN(OMEGA + ALPHA*ABS(ALPHA)/(2*K))\n#\t\t\t\t\t      2               1/2                  2       3/2\n# NEGUSUM = ERROR*K + ALPHA*(DEL*OMEGA + ALPHA /(3*K)) + DEL*K   (DEL*OMEGA + ALPHA /(2*K))\n#\n# DRIVE = -SGN(NEGUSUM)\n\n\t\tCA\tSR\t\t# SAVE THE SR.  SHIFT IT LEFT TO CORRECT\n\t\tAD\tA\t\t# FOR THE RIGHT SHIFT DUE TO EDITING.\n\t\tTS\tSAVESR\n\nGTSGO+ON\tCAF\tTWO\t\t# SET INDEXER FOR R-AXIS CALCULATIONS.\n\t\tTCF\tGOQTRIMG +1\n\nGOQTRIMG\tCAF\tZERO\t\t# SET INDEXER FOR Q-AXIS CALCULATIONS\n\t\tTS\tQRCNTR\n# Page 1473\n# RSB 2009 -----------------------------------------------------------------------\n# Everything between this line and the similar line below was simply filled-in\n# as-is from Luminary 131, and then verified to assemble to the proper binary\n# values.  This area is blank on the Luminary 099 print-out, as if the printer\n# ribbon had run out.\n\t\tINDEX\tQRCNTR\t\t# AOS SCALED AT PI/2\n\t\tCA\tAOSQ\n\t\tEXTEND\n\t\tMP\tBIT2\t\t# RESCALE AOS TO PI/4\n\t\tEXTEND\n\t\tBZF\tGTSQAXIS -3\t# USE FULL SCALE FOR LARGER AOS ESTIMATES.\n\n\t\tINDEX\tA\n\t\tCS\tLIMITS\t\t# LIMITS +1 CONTAINS NEGMAX.\n\t\tXCH\tL\t\t# LIMITS -1 CONTAINS POSMAX.\n\n\t\tCCS\tQRCNTR\t\t# PICK UP RATE FOR THIS AXIS.  RATE CELLS\n\t\tINDEX\tA\t\t# USE ADJACENT, NOT SEPARATED.  AT PI/4\n\t\tCA\tEDOTQ\nGTSQAXIS\tDXCH\tWCENTRAL\n\n\t\tINDEX\tQRCNTR\t\t# COLLECT K FOR THIS AXIS\n\t\tCA\tKQ\n\t\tTS\tKCENTRAL\n\n\t\tEXTEND\t\t\t# CONTROL AUTHORITY ZERO.  AVOID DRIVING\n\t\tBZF\tPOSDRIVE +1\t# ENGINE BELL TO THE STOPS.\n\n\t\tINDEX\tQRCNTR\t\t# QDIFF, RDIFF ARE STORED IN D.P.\n\t\tCAE\tQDIFF\n\nALGORTHM\tEXTEND\t\t\t# Q(R)DIFF IS THETA (ERROR) SCALED AT PI.\n\t\tMP\tKCENTRAL\t# FORM K*ERROR AT PI(2)/2(8), IN D.P.\n\t\tLXCH\tK2THETA\n\t\tEXTEND\n\t\tMP\tBIT5\t\t# RESCALE TO 4*PI(2)\n\t\tDXCH\tK2THETA\n\t\tEXTEND\n\t\tMP\tBIT5\t\t# FIRST TERM OF NEGUSUM IN K2THETA.\n\t\tADS\tK2THETA +1\t# NO CARRY NEEDED\tD.P. AT 4*PI(2)\n\n\t\tCS\tACENTRAL\t# FORM ALPHA(2)/(2*K) AT 16*PI, IN D.P.,\n\t\tEXTEND\t\t\t# LIMITING QUOTIENT TO AVOID OVERFLOW.\n\t\tMP\tBIT14\t\t# -ALPHA/2 IN A, SCALED AT PI/4\n\t\tEXTEND\n\t\tMP\tACENTRAL\t# -ALPHA(2)/2 IN A,L, SCALED AT PI(2)/16)\n\t\tAD\tKCENTRAL\n\t\tEXTEND\n\t\tBZMF\tHUGEQUOT\t# K-ALPHA(2)/2 SHOULD BE PNZ FO DIVISION\n\n\t\tEXTEND\n\t\tDCS\tA\t\t# ALPHA(2)/2 - K\n\t\tAD\tKCENTRAL\n# RSB 2009 -----------------------------------------------------------------------\n\t\tEXTEND\n\t\tDV\tKCENTRAL\t# HIGH ORDER OF QUOTIENT.\n\t\tXCH\tA2CNTRAL\n\t\tCA\tL\t\t# SHIFT UP THE REMAINDER.\n\t\tLXCH\t7\t\t# ZERO LOW-ORDER DIVIDEND.\n\t\tEXTEND\n# Page 1474\n\t\tDV\tKCENTRAL\n\t\tXCH\tA2CNTRAL +1\t# QUOTIENT STORED AT 16*PI , D.P.\n\t\tTCF\tHAVEQUOT\n\nHUGEQUOT\tCA\tPOSMAX\n\t\tTS\tL\n\t\tDXCH\tA2CNTRAL\t# LIMITED QUOTIENT STORED AT 16*PI, D.P.\n\nHAVEQUOT\tCA\tWCENTRAL\n\t\tEXTEND\n\t\tMP\tBIT9\t\t# RESCALE OMEGA AT 16*PI IN D.P.\n\t\tDXCH\tK2CNTRAL\t# LOWER WORD OVERLAYS OMEGA IN WCENTRAL\n\n\t\tEXTEND\n\t\tDCA\tK2CNTRAL\n\t\tDXCH\tFUNCTION\n\n\t\tCA\tACENTRAL\t# GET ALPHA*ABS(ALPHA)/(2*K)\n\t\tEXTEND\n\t\tBZMF\t+4\n\n\t\tEXTEND\n\t\tDCA\tA2CNTRAL\n\t\tTCF\t+3\n\n\t\tEXTEND\n\t\tDCS\tA2CNTRAL\n\n\t\tDAS\tFUNCTION\t# OMEGA + ALPHA*ABS(ALPHA)/(2*K) AT 16*PI\n\n\t\tCCS\tFUNCTION\t# DEL = +1 FOR FUNCT1 GREATER THAN ZERO.\n\t\tTCF\tPOSFNCT1\t# OTHERWISE DEL = -1\n\t\tTCF\t+2\n\t\tTCF\tNEGFNCT1\n\n\t\tCCS\tFUNCTION +1\t# USE LOW ORDER WORD SINCE HIGH IS ZERO\nPOSFNCT1\tCAF\tBIT1\n\t\tTCF\t+2\nNEGFNCT1\tCS\tBIT1\n\t\tTS\tDEL\n\n\t\tCCS\tDEL\t\t# REPLACE OMEGA BY DEL*OMEGA\n\t\tTCF\tFUNCT2\t\t# POSITIVE DEL VALUE.  PROCEED.\n\t\tTCF\tDEFUNCT\n\t\tTCF\tNEGFNCT2\n\nDEFUNCT\t\tTS\tK2CNTRAL\n\t\tTS\tK2CNTRAL +1\n\t\tTCF\tFUNCT2\n\n# Page 1475\nNEG1/3\t\tDEC\t-.33333\n\nNEGFNCT2\tEXTEND\n\t\tDCS\tK2CNTRAL\n\t\tDXCH\tK2CNTRAL\n\nFUNCT2\t\tEXTEND\n\t\tDCA\tA2CNTRAL\n\t\tDAS\tK2CNTRAL\t# DEL*OMEGA + ALPHA(2)/(2*K) AT 16*PI,D.P.\n\nFUNCT3\t\tCA\tA2CNTRAL\n\t\tEXTEND\n\t\tMP\tNEG1/3\n\t\tDXCH\tA2CNTRAL\n\t\tCA\tL\n\t\tEXTEND\n\t\tMP\tNEG1/3\n\t\tADS\tA2CNTRAL +1\n\t\tTS\tL\n\t\tTCF\t+2\t\t# A2CNTRAL NOW CONTAINS  -ALPHA(2)/(6*K),\n\t\tADS\tA2CNTRAL\t# SCALED AT 16*PI, IN D.P.\n\n\t\tEXTEND\n\t\tDCA\tK2CNTRAL\t# DEL*OMEGA + ALPHA(2)/(3*K) IN A2CNTRAL,\n\t\tDAS\tA2CNTRAL\t# SCALED AT 16*PI, D.P.\n\n\t\tCA\tA2CNTRAL\n\t\tEXTEND\n\t\tMP\tACENTRAL\n\t\tDAS\tK2THETA\n\t\tCA\tA2CNTRAL +1\n\t\tEXTEND\n\t\tMP\tACENTRAL\t# ACENTRAL MAY NOW BE OVERLAID.\n\t\tADS\tK2THETA +1\n\t\tTS\tL\n\t\tTCF\t+2\t\t# TWO TERMS OF NEGUSUM ACCUMULATED, SO FAR\n\t\tADS\tK2THETA\t\t# SCALED AT 4*PI(2), IN D.P.\n\nGETROOT\t\tCA\tK2CNTRAL\t# K*(DEL*OMEGA + ALPHA(2)/(2*K)) IS THE\n\t\tEXTEND\t\t\t# TERM FOR WHICH A SQUARE ROOT IS NEEDED.\n\t\tMP\tKCENTRAL\t# K AT PI/2(8)\n\t\tDXCH\tFUNCTION\n\t\tCA\tK2CNTRAL +1\n\t\tEXTEND\n\t\tMP\tKCENTRAL\n\t\tADS\tFUNCTION +1\n\t\tTS\tL\n\t\tTCF\t+2\n\t\tADS\tFUNCTION\t# DESIRED TERM IN FUNCTION, AT PI(2)/16\n# Page 1476\n\t\tCCS\tDEL\n\t\tTCF\tRSTOFGTS\n\t\tTCF\tNEGUSUM\n\t\tTCF\tNEGATE\n\t\tTCF\tNEGUSUM\n\nNEGATE\t\tEXTEND\n\t\tDCS\tK2CNTRAL\n\t\tDXCH\tK2CNTRAL\n\t\tTCF\tRSTOFGTS\n\n\t\tBANK\t16\n\t\tEBANK=\tNEGUQ\n\t\tSETLOC\tDAPS1\n\t\tBANK\n\n# THE WRCHN12 SUBROUTINE SETS BITS 9,10,11,12 OF CHANNEL 12 ON THE BASIS OF THE CONTENTS OF NEGUQ,NEGUR WHICH ARE\n# THE NEGATIVES OF THE DESIRED ACCELERATION CHANGES.  ACDT+C12 SETS Q(R)ACCDOT TO REFLECT THE NEW DRIVES.\n#\n# WARNING:  ACDT+C12 AND WRCHN12 MUST BE CALLED WITH INTERRUPT INHIBITED.\n\nBGIM\t\tOCTAL\t07400\nCHNL12\t\tEQUALS\tITEMP6\nACDT+C12\tCS\tNEGUQ\n\t\tEXTEND\t\t\t# GIMBAL DRIVE REQUESTS.\n\t\tMP\tACCDOTQ\n\t\tLXCH\tQACCDOT\n\t\tCS\tNEGUR\n\t\tEXTEND\n\t\tMP\tACCDOTR\n\t\tLXCH\tRACCDOT\n\n\t\tCCS\tNEGUQ\n\t\tCAF\tBIT10\n\t\tTCF\t+2\n\t\tCAF\tBIT9\n\t\tTS\tCHNL12\n\n\t\tCCS\tNEGUR\n\t\tCAF\tBIT12\n\t\tTCF\t+2\n\t\tCAF\tBIT11\n\t\tADS\tCHNL12\t\t# (STORED RESULT NOT USED AT PRESENT)\n\n\t\tCS\tBGIM\n\t\tEXTEND\n\t\tRAND\tCHAN12\n\t\tAD\tCHNL12\n\t\tEXTEND\n\t\tWRITE\tCHAN12\n# Page 1477\n\t\tCS\tCALLGMBL\t# TURN OFF REQUEST FOR ACDT+C12 EXECUTION.\n\t\tMASK\tRCSFLAGS\n\t\tTS\tRCSFLAGS\n\n\t\tTC\tQ\t\t# RETURN TO CALLER.\n\n\t\tBANK\t21\n\t\tEBANK=\tQDIFF\n\t\tSETLOC\tDAPS4\n\t\tBANK\n\n# Page 1478\n# SUBROUTINE TIMEGMBL:\tMOD 0, OCTOBER 1967, CRAIG WORK\n#\n# TIMEGMBL COMPUTES THE DRIVE TIME NEEDED FOR THE TRIM GIMBAL TO POSITION THE DESCENT ENGINE NOZZLE SO AS TO NULL\n# THE OFFSET ANGULAR ACCELERATION ABOUT THE Q (OR R) AXIS.  INSTEAD OF USING AOSQ(R), TIMEGMBL USES .4*AOSQ(R),\n# SCALED AT PI/8.                         FOR EACH AXIS, THE DRIVE TIME IS COMPUTED AS ABS(ALPHA/ACCDOT).  A ZERO\n# ALPHA OR ACCDOT OR A ZERO QUOTIENT TURNS OFF THE GIMBAL DRIVE IMMEDIATELY.  OTHERWISE, THE GIMBAL IS TURNED ON\n# DRIVING IN THE CORRECT DIRECTION. THE Q(R)GIMTIMR IS SET TO TERMINATE THE DRIVE AND Q(R)ACCDOT\n# IS STORED TO REFLECT THE NEW ACCELERATION DERIVATIVE.  NEGUQ(R) WILL CONTAIN +1,+0,-1 FOR A Q(R)ACCDOT VALUE\n# WHICH IS NEGATIVE, ZERO, OR POSITIVE.\n#\n# INPUTS:  AOSQ,AOSR, SCALED AT P1/2, AND ACCDOTQ, ACCDOTR AT PI/2(7).    PI/2(7).\n#\n# OUTPUTS:   NEW GIMBAL DRIVE BITS IN CHANNEL 12,NEGUQ,NEGUR,QACCDOT AND RACCDOT, THE LAST SCALED AT PI/2(7).\n#\t     Q(R)GIMTIMR WILL BE SET TO TIME AND TERMINATE GIMBAL DRIVE(S)\n#\n# DEBRIS:  A,L,Q, ITEMPS 2,3,6, RUPTREG2 AND ACDT+C12 DEBRIS.\n#\n# EXITS:  VIA TC Q.\n#\n# ALARMS, ABORTS, :  NONE\n#\n# SUBROUTINES:  ACDT+C12, IBNKCALL\n#\n# WARNING:  THIS SUBROUTINE WRITES INTO CHANNEL 12 AND USES THE ITEMPS.  THEREFORE IT MAY ONLY BE CALLED WITH\n# INTERRUPT INHIBITED.\n#\n# ERASABLE STORAGE CONFIGURATION (NEEDED BY THE INDEXING METHODS):\n# NEGUQ\t\tERASE\t+2\t\t\t# NEGATIVE OF Q-AXIS GIMBAL DRIVE\n# (SPWORD)\tEQUALS\tNEGUQ +1\t\t# ANY S.P. ERASABLE NUMBER, NOW THRSTCMD\n# NEGUR\t\tEQUALS\tNEGUQ +2\t\t# NEGATIVE OF R-AXIS GIMBAL DRIVE\n# ACCDOTQ\tERASE\t+2\t\t\t# Q-JERK TERM SCALED AT PI/2(7) RAD/SEC(3)\n# (SPWORD)\tEQUALS\tACCDOTQ +1\t\t# ANY S.P. ERASABLE NUMBER NOW QACCDOT\n# ACCDOTR\tEQUALS\tACCDOTQ +2\t\t# R-JERK TERM SCALED AT PI/2(7) RAD/SEC(3)\n#\t\t\t\t\t\t# ACCDOTQ,ACCDOTR ARE MAGNITUDES.\n# AOSQ\t\tERASE   +4\t\t\t# Q-AXIS ACC., D.P. AT PI/2 R/SEC(2)\n# AOSR\t\tEQUALS  AOSQ +2\t\t\t# R-AXIS ACCELERATION SCALED AT PI/2 R/S2\n\nQRNDXER\t\tEQUALS\tITEMP6\nOCT23146\tOCTAL\t23146\t\t\t# DECIMAL .6\nNZACCDOT\tEQUALS\tITEMP3\n\nTIMEGMBL\tCAF\tONE\t\t\t# INITIALZE ALLOWGTS.\n\t\tTS\tALLOWGTS\n\n\t\tCAF\tTWO\t\t\t# SET UP LOOP FOR R AXIS.\n\t\tLXCH\tQ\t\t\t# SAVE RETURN ADDRESS.\n\t\tLXCH\tRUPTREG2\n# Page 1479\n\t\tTCF\t+2\nTIMQGMBL\tCAF\tZERO\t\t\t# NOW DO THE Q-AXIS\n\t\tTS\tQRNDXER\n\t\tINDEX\tQRNDXER\n\t\tCA\tACCDOTQ\t\t\t# ACCDOT IS PRESUMED TO BE AT PI/2(7).\n\t\tEXTEND\n\t\tBZMF\tTGOFFNOW\t\t# IS ACCDOT LESS THAN OR EQUAL TO 0?\n\t\tTS\tNZACCDOT\t\t# NO.  STORE NON-ZERO, POSITIVE ACCDOT.\n\nALPHATRY\tINDEX\tQRNDXER\n\t\tCS\tAOSQ\n\t\tEXTEND\n\t\tBZF\tTGOFFNOW\t\t# IS ALPHA ZERO?\n\n\t\tTS\tQ\t\t\t# SAVE A COPY OF  -AOS.\n\t\tEXTEND\t\t\t\t# NO.  RESCALE FOR TIMEGMBL USE.\n\t\tMP\tOCT23146\t\t# OCTAL 23146 IS DECIMAL .6\n\t\tAD\tQ\t\t\t# -1.6*AOS AT PI/2 = -.4*AOS AT PI/8.\n\t\tTS\tL\t\t\t# WAS THERE OVERFLOW?\n\t\tTCF\tSETNEGU\t\t\t# NO.  COMPUTE DRIVE TIME.\n\n\t\tCS\tA\t\t\t# RECOVER  -SGN(AOS) IN THE A REGISTER.\n\t\tINDEX\tQRNDXER\t\t\t# YES.  START DRIVE WITHOUT WAITLIST.\n\t\tXCH\tNEGUQ\n\t\tTCF\tNOTALLOW\t\t# KNOCK DOWN THE ALLOWGTS FLAG.\n\nSETNEGU\t\tEXTEND\n\t\tBZMF\tPOSALPH\n\n\t\tCOM\n\t\tTS\tITEMP2\t\t\t# STORE  -ABS(.4*AOS) SCALED AT PI/8.\n\t\tCS\tBIT1\n\t\tTCF\tPOSALPH +2\nPOSALPH\t\tTS\tITEMP2\t\t\t# STORE  -ABS(.4*AOS) SCALED AT PI/8.\n\t\tCA\tBIT1\n\t+2\tINDEX\tQRNDXER\t\t\t# SGN(AOS) INTO NEGU\n\t\tTS\tNEGUQ\t\t\t# STORE SGN(ALPHA) AS NEGU\n\n\t\tCA\tNZACCDOT\n\t\tEXTEND\n\t\tMP\tBIT12\t\t\t# 2*ACCDOT, SCALED AT PI/8.\n\t\tAD\tITEMP2\t\t\t# -ABS(ALPHS) + 2*ACCDOT, AT PI/8.\n\t\tEXTEND\n\t\tBZMF\tNOTALLOW\t\t# IS DRIVE TIME MORE THAN TWO SECONDS?\n\t\tCS\tITEMP2\t\t\t# NO.  COMPUTE DRIVE TIME.\n\t\tEXTEND\t\t\t\t# ABS(ALPHA) AT PI/8.\n\t\tMP\tOCT00240\t\t# DECIMAL 10/1024\n\t\tEXTEND\t\t\t\t# QUOTIENT IS DRIVE TIME AT WAITLIST.\n\t\tDV\tNZACCDOT\t\t# ABS(ALPHA)/ACCDOT AT 2(14)/100\n# Page 1480\n\t\tEXTEND\n\t\tBZF\tTGOFFNOW\t\t# DRIVE TIME MUST BE GREATER THAN ZERO.\n\n\t\tTCF\tDRIVEON\n\nTGOFFNOW\tCAF\tZERO\t\t\t# TURN OFF GIMBAL NOW.\n\t\tINDEX\tQRNDXER\n\t\tTS\tNEGUQ\n\n\t\tTCF\tDONEYET\n\nNOTALLOW\tCAF\tOCT31\n\t\tINDEX\tQRNDXER\n\t\tTS\tQGIMTIMR\n\t\tCAF\tZERO\t\t\t# DRIVE TIME IS MORE THAN 2 SECONDS, SO\n\t\tTS\tALLOWGTS\t\t# DO NOT PERMIT FURTHER GTS ATTITUDE-RATE\n\t\t\t\t\t\t# CONTROL UNTIL AOSTASK APPROVES.\n\t\tTCF\tDONEYET\t\t\t# NO WAITLIST CALL IS MADE.\n\nDRIVEON\t\tINDEX\tQRNDXER\n\t\tTS\tQGIMTIMR\t\t# CHOOSE Q OR R AXIS.\n\nDONEYET\t\tCCS\tQRNDXER\n\t\tTCF\tTIMQGMBL\n\n\t\tDXCH\tRUPTREG3\t\t# PROTECT IBNKCALL ERASABLES.  ACDT+C12\n\t\tDXCH\tITEMP2\t\t\t# LEAVES ITEMPS2,3 ALONE.\n\n\t\tTC\tIBNKCALL\t\t# TURN OFF CHANNEL BITS, SET Q(R)ACCDOTS.\n\t\tCADR\tACDT+C12\n\n\t\tDXCH\tITEMP2\t\t\t# RESTORE ERASABLES FOR IBNKCALL.\n\t\tDXCH\tRUPTREG3\n\n\t\tTC\tRUPTREG2\t\t# RETURN TO CALLER.\n\nOCT00240\tOCTAL\t00240\t\t\t# DECIMAL 10/1024\n\n# Page 1481\n# THE FOLLOWING SECTION IS A CONTINUATION OF THE TRIM GIMBAL CONTROL FROM THE LAST GTS ENTRY. THE QUANTITY NEGUSUM\n# IS COMPUTED FOR EACH AXIS (Q,R), .707*DEL*FUNCTION(3/2) + K2THETA = NEGUSUM.  NEW DRIVES ARE ENTERED TO CH 12.\n#\n# THE SUBROUTINE GTSQRT ACCEPTS A DOUBLE PRECISION VALUE IN FUNCTION, FUNCTION +1 AND RETURNS A SINGLE-PRECISION\n# SQUARE ROOT OF THE FOURTEEN MOST SIGNIFICANT BITS OF THE ARGUMENT.  ALSO, THE CELL SHFTFLAG CONTAINS A BINARY\n# EXPONENT S, SUCH THAT THE SQUARE ROOT (RETURNED IN THE A REGISTER) MUST BE SHIFTED RIGHT (MULTIPLIED BY 2 TO THE\n# POWER (-S)) IN ORDER TO BE THE TRUE SQUARE ROOT OF THE FOURTEEN MOST SIGNIFICANT BITS OF FUNCTION, FUNCTION +1.\n# SQUARE ROOT ERROR IS NOT MORE THAN 2 IN THE 14TH SIGNIFICANT BIT.  CELLS CLOBBERED ARE A,L,SHFTFLAG,ININDEX,\n# HALFARG,SCRATCH,SR,FUNCTION, FUNCTION +1.  GTSQRT IS CALLED BY TC GTSQRT AND RETURNS VIA TC Q OR TC FUNCTION +1.\n# ZERO OR NEGATIVE ARGUMENTS YIELD ZERO FOR SQUARE ROOTS.\n\nGTSQRT\t\tCCS\tFUNCTION\n\t\tTCF\tGOODARG\t\t# FUNCTION IS POSITIVE.  TAKE SQUARE ROOT.\n\t\tTCF\t+2\t\t# HIGH ORDER WORD IS ZERO.  TRY THE LOWER.\n\t\tTCF\tZEROOT\t\t# NEGATIVE.  USE ZERO FOR 1/2 POWER.\n\n\t\tCA\tFUNCTION +1\n\t\tEXTEND\n\t\tBZMF\tZEROOT\n\n\t\tTCF\tZEROHIGH\t# PROCEED.\nZEROOT\t\tCA\tZERO\n\t\tTS\tSHFTFLAG\n\t\tTC\tQ\n\nZEROHIGH\tXCH\tFUNCTION\t# 14 MOST SIGNIFICANT BITS ARE IN THE\n\t\tXCH\tFUNCTION +1\t# LOWER WORD.  EXCHANGE THEM.\n\t\tCA\tSEVEN\n\t\tTCF\tGOODARG +1\n\nGOODARG\t\tCA\tZERO\n\t\tTS\tSHFTFLAG\n\t\tCA\tTWELVE\t\t# INITIALIZE THE SCALING LOOP.\n\t\tTS\tININDEX\n\t\tTCF\tSCALLOOP\n\nSCALSTRT\tCA\tFUNCTION\n\t\tTCF\tSCALDONE\n\nMULBUSH\t\tCA\tNEG2\t\t# IF ARG IS NOT LESS THAN 1/4, INDEX IS\n\t\tADS\tININDEX\t\t# ZERO, INDICATING NO SHIFT NEEDED.\n\t\tEXTEND\t\t\t# BRANCH IF ARG IS NOT LESS THAN 1/4.\n\t\tBZMF\tSCALSTRT\t# OTHERWISE COMPARE ARG WITH A REFERENCE\n\t\t\t\t\t# WHICH IS 4 TIMES LARGER THAN THE LAST.\nSCALLOOP\tCS\tFUNCTION\n\t\tINDEX\tININDEX\n\t\tAD\tBIT15\t\t# REFERENCE MAGNITUDE LESS OR EQUAL TO 1/4\n\t\tEXTEND\n\t\tBZMF\tMULBUSH\t\t# IF ARG IS NOT LESS THAN REFERENCE, GO\n\t\t\t\t\t# AROUND THE MULBERRY BUSH ONCE MORE.\n# Page 1482\n\t\tINDEX\tININDEX\n\t\tCA\tBIT15\t\t# THIS IS THE SCALE MAGNITUDE\n\t\tXCH\tHALFARG\t\t# 2**(-ININDEX) IS THE SHIFT DIVISOR.\n\t\tEXTEND\t\t\t# RESCALE ARGUMENT.\n\t\tDCA\tFUNCTION\n\t\tEXTEND\n\t\tDV\tHALFARG\n\t\t\t\t\t# ININDEX AND SHFTFLAG PRESERVE INFO FOR\n\t\t\t\t\t# RESCALING AFTER ROOT PROCESS.\nSCALDONE\tEXTEND\n\t\tQXCH\tFUNCTION +1\t# SAVE Q FOR RETURN\n\t\tEXTEND\n\t\tMP\tBIT14\n\t\tTS\tHALFARG\n\t\tMASK\tBIT13\n\t\tCCS\tA\n\t\tCA\tOCT11276\n\t\tAD\tROOTHALF\t# INITIAL GUESS IS ROOT 1/2 OR POSMAX\n\t\tTC\tROOTCYCL\n\t\tTC\tROOTCYCL\n\t\tTC\tROOTCYCL\n\t\tTC\tFUNCTION +1\n# ****************************************************************************************************************\n\nRSTOFGTS\tTC\tGTSQRT\nPRODUCT\t\tXCH\tK2CNTRAL\n\t\tEXTEND\n\t\tMP\tK2CNTRAL\n\t\tDXCH\tK2CNTRAL\n\t\tEXTEND\t\t\t#\t      THE PRODUCT OF\n\t\tMP\tL\t\t#  1/2                   2       1/2\n\t\tADS\tK2CNTRAL +1\t# K   *(DEL*OMEGA + ALPHA /(2*K))\n\t\tTS\tL\t\t#\t\t  AND\n\t\tTCF\t+2\t\t#                        2\n\t\tADS\tK2CNTRAL\t#  DEL*(DEL*OMEGA + ALPHA /(2*K)) NOW IN\n\t\t\t\t\t# K2CNTRAL\n\nDOSHIFT\t\tCA\tININDEX\n\t\tEXTEND\t\t\t# MULTIPLY IN THE FACTOR 2(-S), RETURNED\n\t\tMP\tBIT14\t\t# BY THE GTSQRT SUBROUTINE\n\t\tADS\tSHFTFLAG\n\t\tEXTEND\n\t\tBZF\tADDITIN\n\t\tINDEX\tSHFTFLAG\n\t\tCA\tBIT15\n# Page 1483\n\t\tXCH\tK2CNTRAL\n\t\tEXTEND\n\t\tMP\tK2CNTRAL\n\t\tDAS\tK2THETA\n\t\tXCH\tK2CNTRAL\n\t\tEXTEND\n\t\tMP\tK2CNTRAL +1\n\t\tADS\tK2THETA  +1\n\t\tTS\tL\n\t\tTCF\t +2\n\t\tADS\tK2THETA\n\n\t\tTCF\tNEGUSUM\n\nADDITIN\t\tEXTEND\n\t\tDCA\tK2CNTRAL\n\t\tDAS\tK2THETA\t\t# NOW ADD IN THE K2THETA TERM.\nNEGUSUM\t\tCCS\tK2THETA\t\t# TEST SIGN OF HIGH ORDER PART.\n\t\tTCF\tNEGDRIVE\n\t\tTCF\t +2\n\t\tTCF\tPOSDRIVE\n\n\t\tCCS\tK2THETA  +1\t# SIGN TEST FOR LOW ORDER PART.\nNEGDRIVE\tCA\tBIT1\n\t\tTCF\t+2\t\t# STOP GIMBAL DRIVE FOR A ZERO NEGUSUM.\nPOSDRIVE\tCS\tBIT1\n\t\tTS\tL\t\t# SAVE FOR DRIVE REVERSAL TEST.\n\t\tINDEX\tQRCNTR\n\t\tXCH\tNEGUQ\n\n\t\tEXTEND\n\t\tMP\tL\t\t# MULTIPLY OLD NEGU AND NEW NEGU.\n\t\tCCS\tL\n\t\tTCF\tLOUPE\t\t# NON-ZERO GIMBAL DRIVE BEING CONTINUED.\n\n\t\tTCF\tZEROLOUP\t# NO REVERSAL PROBLEM HERE.\n\n\t\tTCF\tREVERSAL\t# NON-ZERO GIMBAL DRIVE BEING REVERSED.\n\t\tTCF\tZEROLOUP\t# NO REVERSAL PROBLEM HERE.\n\nREVERSAL\tINDEX\tQRCNTR\t\t# A ZERO-DRIVE PAUSE IS NEEDED HERE.  ZERO\n\t\tTS\tQACCDOT\t\t# IS IN A REGISTER FROM CCS ON (-1).\n\t\tINDEX\tQRCNTR\n\t\tCS\tGMBLBITA\n\t\tEXTEND\n\t\tWAND\tCHAN12\n\nZEROLOUP\tCS\tRCSFLAGS\t# SET UP REQUEST FOR ACDT+C12 CALL.\n\t\tMASK\tCALLGMBL\n\t\tADS\tRCSFLAGS\n# Page 1484\nLOUPE\t\tCCS\tQRCNTR\t\t# HAVE BOTH AXES BEEN PROCESSED?\n\t\tTCF\tGOQTRIMG\t# NO.  DO Q AXIS NEXT.\n\n\t\tCA\tSAVESR\t\t# RESTORE THE SR\n\t\tTS\tSR\n\nGOCLOSE\t\tEXTEND\t\t\t# TERMINATE THE JASK.\n\t\tDCA\tCLOSEADR\n\t\tDTCB\n\n\t\tEBANK=\tAOSQ\nCLOSEADR\t2CADR\tCLOSEOUT\t# TERMINATE THE JASK.\n\nTWELVE\t\tEQUALS\tOCT14\nROOTHALF\tOCTAL\t26501\t\t# SQUARE ROOT OF 1/2\nGMBLBITA\tOCTAL\t01400\t\t# INDEXED WRT GMBLBITB   DO NOT MOVE******\nOCT11276\tOCTAL\t11276\t\t# POSMAX - ROOTHALF\nGMBLBITB\tOCTAL\t06000\t\t# INDEXED WRT GMBLBITA   DO NOT MOVE******\n\n# SUBROUTINE ROOTCYCL:\tBY CRAIG WORK,3 APRIL 68\n# ROOTCYCL IS A SUBROUTINE WHICH EXECUTES ONE NEWTON SQUARE ROOT ALGORITHM ITERATION.  THE INITIAL GUESS AT THE\n# SQUARE ROOT IS PRESUMED TO BE IN THE A REGISTER AND ONE-HALF THE SQUARE IS TAKEN FROM HALFARG.  THE NEW APPROXI-\n# MATION TO THE SQUARE ROOT IS RETURNED IN THE A REGISTER.  DEBRIS:   A,L,SR,SCRATCH.  ROOTCYCL IS CALLED FROM\n# LOCATION (LOC) BY A TC ROOTCYCL, AND RETURNS (TC Q) TO LOC +1.\n# WARNING:  IF THE INITIAL GUESS IS NOT GREATER THAN THE SQUARE, DIVIDE OR ADD OVERFLOW IS A REAL POSSIBILITY.\n\nROOTCYCL\tTS\tSCRATCH\t\t# STORE X\n\t\tTS\tSR\t\t# X/2 NOW IN SR\n\t\tCA\tHALFARG\t\t# ARG/2 IN THE A REG\n\t\tZL\t\t\t# PREPARE FOR DIVISION\n\t\tEXTEND\n\t\tDV\tSCRATCH\t\t# (ARG/X)/2\n\t\tAD\tSR\t\t# (X + ARG/X)/2 IN THE A REG\n\t\tTC\tQ\n"
  },
  {
    "path": "Luminary099/UPDATE_PROGRAM.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tUPDATE_PROGRAM.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1386-1396\n# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting\n#\t\t\t\tfrom the Luminary131/ file of the same\n#\t\t\t\tname, using Luminary099 page images.\n#\t\t2009-06-07 RSB\tAdded an SBANK= to account for incompatibilities\n#\t\t\t\tbetween YUL and yaYUL.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\t\t2011-05-07 JL\tFlag SBANK= workaround.\n\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1386\n# PROGRAM NAME:     P27\n# WRITTEN BY:       KILROY/ DE WOLF\n#\n# MOD NO:           6\n# MOD BY:           KILROY\n# DATE:             01DEC67\n#\n# LOG SECTION:      UPDATE PROGRAM.\n#\n# FUNCT. DESCR:     P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA\n#                       INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.\n#                       THE P27 PROGRAM WILL ACCEPT UPDATES\n#                       ONLY DURING P00 FOR THE LM, AND ONLY DURING P00,\n#                   P02, AND FRESH START FOR THE CSM\n#\n# CALLING SEQ:      PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72 AND 73.\n#\n# SUBROUTINES:      TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,\n#                   INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG\n#\n# NORMAL EXIT:      TC ENDEXT\n#\n# ALARM/ABORT:      TC FALTON FOLLOWED BY TC ENDEXT\n#\n# RESTARTS:         P27 IS RESTART PROTECTED IN TWO WAYS...\n#                   1. PRIOR TO VERIFLAG INVERSION(WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE\n#                      DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---\n#                      NO PROTECTION EXCEPT PRE-P27 MODE IS RESTORED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK\n#                      ACTIVITY LIGHT IS TURNED OFF.(JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).\n#                      V70,V71,V72 OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.\n#                   2. AFTER VERIFLAG INVERSION(WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---\n#                      PROTECTED AGAINST RESTARTS.\n#\n# DEBRIS:           UPBUFF   (20D)  TEMP STORAGE FOR ADDRESSES AND CONTENTS.\n#                   UPVERB   (1)    VERB NUMBER MINUS 70D (E.G., FOR V72, UPVERB = 72D - 70D = 2)\n#                   UPOLDMOD (1)    FOR MAJOR MODE INTERRUPTED BY P27.\n#                   COMPNUMB (1)    TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.\n#                   UPCOUNT  (1)    ACTUAL NUMBER OF COMPONENTS RECEIVED.\n#                   UPTEMP   (1)    SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE\n#\n# INPUT:\n#\n#  ENTRY:             DESCRIPTION\n#\n#  V70EXXXXXEXXXXXE   (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,\n#                     IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE\n#                     VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).\n#                     THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).\n# Page 1387\n#  V71EIIEAAAAE     (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS,XXXXX,\n#  XXXXXE           ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.\n# XXXXXE            IT IS .GE. 3 .AND. .LE. 200.,\n#                   AND (AAAA + II - 3) DOES NOT PRODUCE AN ADDRESS IN THE\n# 9 NEXT BANK.\n#   .               SCALING IS SAME AS INTERNAL REGISTERS.\n#\n#  V72EIIE          (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS,XXXXX, ARE\n#  AAAAEXXXXXE      LOADED INTO ERASABLE LOCATIONS, AAAA.\n#  AAAAEXXXXXE      II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.\n#   .               SCALING IS SAME AS INTERNAL REGISTERS.\n#\n#  V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME\n#                   INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN\n#                   CENTISECONDS SCALED AT (2)28.\n#                   THIS LOAD IS THE OCTAL EQUIVALENT OF V55.\n#\n# OUTPUT:         IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES\n#                 COMPLEMENT BIT3 OF FLAGWORD7.\n#\n# ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES--\n#\n#                 1. CSM/LM STATE VECTOR UPDATE\n#                 2. REFSMMAT UPDATE\n#\n#\n#          THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE----\n#\n# 1. CSM/LM STATE VECTOR UPDATE(ALL DATA ENTRIES IN OCTAL)\n#\n# ENTRIES:        DATA DEFINITION:                                        SCALE FACTORS:\n# V71E            CONTIGUOUS BLOCK UPDATE VERB\n#    21E          NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE\n#  AAAAE          ECADR OF 'UPSVFLAG'\n# XXXXXE          STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM - EARTH SPHERE OF INFLUENCE SCALING\n#                                          00002 FOR CSM, 77775 FOR LEM - LUNAR SPHERE OF INFLUENCE SCALING\n#\n# XXXXXEXXXXXE    X POSITION\n# XXXXXEXXXXXE    Y POSITION\n# XXXXXEXXXXXE    Z POSITION\n# XXXXXEXXXXXE    X VELOCITY\n# XXXXXEXXXXXE    Y VELOCITY\n# XXXXXEXXXXXE    Z VELOCITY\n# XXXXXEXXXXXE    TIME FROM AGC CLOCK ZERO\n# V33E            VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.\n#\n#\n# 2. REFSMMAT(ALL DATA ENTRIES IN OCTAL)\n# ENTRIES:        DATA DEFINITITIONS:                                     SCALE FACTORS:\n# Page 1388\n# V71E            CONTIGUOUS BLOCK UPDATE VERB\n#    24E          NUMBER OF COMPONENTS FOR REFSMMAT UPDATE\n#  AAAAE          ECADR OF 'REFSMMAT'\n# XXXXXEXXXXXE    ROW 1 COLUMN 1                                          2(-1)\n# XXXXXEXXXXXE    ROW 1 COLUMN 2                                          2(-1)\n# XXXXXEXXXXXE    ROW 1 COLUMN 3                                          2(-1)\n# XXXXXEXXXXXE    ROW 2 COLUMN 1                                          2(-1)\n# XXXXXEXXXXXE    ROW 2 COLUMN 2                                          2(-1)\n# XXXXXEXXXXXE    ROW 2 COLUMN 3                                          2(-1)\n# XXXXXEXXXXXE    ROW 3 COLUMN 1                                          2(-1)\n# XXXXXEXXXXXE    ROW 3 COLUMN 2                                          2(-1)\n# XXXXXEXXXXXE    ROW 3 COLUMN 3                                          2(-1)\n# V33E            VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED.\n\n\n\t\tBANK\t07\n\t\tSETLOC\tEXTVERBS\n\t\tBANK\n\n\t\tEBANK=\tTEPHEM\n\n\t\tCOUNT*\t$$/P27\nV70UPDAT\tCAF\tUP70\t\t# COMES HERE ON V70E\n\t\tTCF\tV73UPDAT +1\n\n\nV71UPDAT\tCAF\tUP71\t\t# COMES HERE ON V71E\n\t\tTCF\tV73UPDAT +1\n\n\nV72UPDAT\tCAF\tUP72\t\t# COMES HERE ON V72E\n\t\tTCF\tV73UPDAT +1\n\n\nV73UPDAT\tCAF\tUP73\t\t# COMES HERE ON V73E\n\n +1\t\tTS\tUPVERBSV\t# SAVE UPVERB UNTIL IT'S OK TO ENTER P27\n\n\t\tTC\tTESTXACT\t# GRAB DISPLAY IF AVAILABLE, OTHERWISE\n\t\t\t\t\t# TURN*OPERATOR ERROR* ON AND TERMINATEJOB\n\n\t\tCA\tMODREG\t\t# CHECK IF UPDATE ALLOWED\n\t\tEXTEND\t\t\t# FIRST CHECK FOR MODREG = +0, -0\n\t\tBZF\t+3\t\t# (+0 = P00, -0 = FRESHSTART)\nUPERROR\t\tTC\tPOSTJUMP\t# TURN ON 'OPERATOR ERROR' LIGHT\n\t\tCADR\tUPERROUT +2\t# GO TO COMMON UPDATE PROGRAM EXIT\n\n\t\tCAE\tMODREG\t\t# UPDATE ALLOWED.\nCKMDMORE\t=\tUPERROR\n\t\tTS\tUPOLDMOD\t# SAVE CURRENT MAJOR MODE\n# Page 1389\n\t\tCAE\tUPVERBSV\t# SET UPVERB TO INDICDATE TO P27\n\t\tTS\tUPVERB\t\t# WHICH EXTENDED VERB CALLED IT.\n\n\t\tCAF\tONE\n\t\tTS\tUPCOUNT\t\t# INITIALIZE UPCOUNT TO 1\n\n\t\tTC\tPOSTJUMP\t# LEAVE EXTENDED VERB BANK AND\n\t\tCADR\tUPPART2\t\t# GO TO UPDATE PROGRAM(P27) BANK.\n\n\nUP70\t\tEQUALS\tZERO\nUP71\t\tEQUALS\tONE\nUP72\t\tEQUALS\tTWO\nUP73\t\tEQUALS\tTHREE\n\n\n\t\tBANK\t04\n\t\tSETLOC\tUPDATE2\n\t\tBANK\n\n\t\tCOUNT*\t$$/P27\n\nUPPART2\t\tEQUALS\t\t\t# UPDATE PROGRAM - PART 2\n\n\t\tTC\tPHASCHNG\t# SET RESTART GROUP 6 TO RESTORE OLD MODE\n\t\tOCT\t07026\t\t# AND DOWNLIST AND EXIT IF RESTART OCCURS.\n\t\tOCT\t30000\t\t# PRIORITY SAME AS CHRPRIO\n\t\tEBANK=\tUPBUFF\n\t\t2CADR\tUPOUT +1\n\n\n\t\tCAF\tONE\n\t\tTS\tDNLSTCOD\t# DOWNLIST\n\n\t\tTC\tNEWMODEX\t# SET MAJOR MODE = 27\n\t\tDEC\t27\n\n\t\tINDEX\tUPVERB\t\t# BRANCH DEPENDING ON WHETHER THE UPDATE\n\t\tTCF\t+1\t\t# VERB REQUIRES A FIXED OR VARIABLE NUMBER\n\t\tTCF\t+3\t\t# V70 FIXED.               (OF COMPONENTS.\n\t\tTCF\tOHWELL1\t\t# V71 VARIABLE - GO GET NO. OF COMPONENTS\n\t\tTCF\tOHWELL1\t\t# V72 VARIABLE - GO GET NO. OF COMPONENTS\n\t\tCA\tTWO\t\t# V73 (AND V70) FIXED\n\t\tTS\tCOMPNUMB\t# SET NUMBER OF COMPONENTS TO 2.\n\t\tTCF\tOHWELL2\t\t# GO GET THE TWO UPDATE COMPONENTS\n\nOHWELL1\t\tCAF\tADUPBUFF\t# * REQUEST USER TO SEND NUMBER *\n\t\tTS\tMPAC +2\t\t# * OF COMPONENTS PARAMETER(II).*\n +2\t\tCAF\tUPLOADNV\t# (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)\n\t\tTC\tBANKCALL\t# DISPLAY A FLASHING V21N01\n# Page 1390\n\t\tCADR\tGOXDSPF\t\t# TO REQUEST II.\n\t\tTCF\tUPOUT4\t\t# V34 TERMINATE UPDATE(P27) RETURN\n\t\tTCF\tOHWELL1 +2\n\t\tTC\tCK4V32\t\t# DATA OR V32 RETURN\n\t\tCS\tBIT2\n\t\tAD\tUPBUFF\t\t# IS II(NUMBER OF COMPONENTS PARAMETER)\n\t\tEXTEND\t\t\t# .GE. 3 AND .LE. 20D.\n\t\tBZMF\tOHWELL1 +2\n\t\tCS\tUPBUFF\n\t\tAD\tUP21\n\t\tEXTEND\n\t\tBZMF\tOHWELL1 +2\n\t\tCAE\tUPBUFF\n\t\tTS\tCOMPNUMB\t# SAVE II IN COMPNUMB\n\n# UPBUFF LOADING SEQUENCE\n\n\t\tINCR\tUPCOUNT\t\t# INCREMENT COUNT OF COMPONENTS RECEIVED.\nOHWELL2\t\tCAF\tADUPBFM1\t# CALCULATE LOCATION(ECADR) IN UPBUFF\n\t\tAD\tUPCOUNT\t\t# WHERE NEXT COMPONENT SHOULD BE STORED.\n +2\t\tTS\tMPAC +2\t\t# PLACE ECADR INTO R3.\n +3\t\tCAF\tUPLOADNV\t# (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)\n\t\tTC\tBANKCALL\t# DISPLAY A FLASHING V21N01\n\t\tCADR\tGOXDSPF\t\t# TO REQUEST DATA.\n\t\tTCF\tUPOUT4\t\t# V34 TERMINATE UPDATE(P27) RETURN.\n\t\tTCF\tOHWELL2 +3\t# V33 PROCEED RETURN\n\t\tTC\tCK4V32\t\t# DATA OR V32 RETURN\n\t\tCS\tUPCOUNT\t\t# HAVE WE FINISHED RECEIVING ALL\n\t\tAD\tCOMPNUMB\t# THE DATA WE EXPECTED.\n\t\tEXTEND\n\t\tBZMF\tUPVERIFY\t# YES- GO TO VERIFICATION SEQUENCE\n\t\tTCF\tOHWELL2 -1\t# NO- REQUEST ADDITIONAL DATA.\n\n# VERIFY SEQUENCE\n\nUPVERIFY\tCAF\tADUPTEMP\t# PLACE ECADR WHERE COMPONENT NO. INDEX\n\t\tTS\tMPAC +2\t\t# IS TO BE STORED INTO R3.\n\t\tCAF\tUPVRFYNV\t# (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)\n\t\tTC\tBANKCALL\t# DISPLAY A FLASHING V21N02 TO REQUEST\n\t\tCADR\tGOXDSPF\t\t# DATA CORRECTION OR VERIFICATION.\n\t\tTCF\tUPOUT4\t\t# V34 TERMINATE UPDATE(P27) RETURN\n\t\tTCF\tUPSTORE\t\t# V33 DATA SENT IS GOOD. GO STORE IT.\n\t\tTC\tCK4V32\t\t# COMPONENT NO. INDEX OR V32 RETURN\n\t\tCA\tUPTEMP\t\t# DOES THE COMPONENT NO. INDEX JUST SENT\n\t\tEXTEND\t\t\t# SPECIFY A LEGAL COMPONENT NUMBER?\n\t\tBZMF\tUPVERIFY\t# NO, IT IS NOT POSITIVE NONZERO\n\t\tCS\tUPTEMP\n\t\tAD\tCOMPNUMB\n# Page 1391\n\t\tAD\tBIT1\n\t\tEXTEND\n\t\tBZMF\tUPVERIFY\t# NO\n\t\tCAF\tADUPBFM1\t# YES- BASED ON THE COMPONENT NO. INDEX\n\t\tAD\tUPTEMP\t\t# CALCULATE THE ECADR OF LOCATION IN\n\t\tTCF\tOHWELL2 +2\t# UPBUFF WHICH USER WANTS TO CHANGE.\n\nUPOUT4\t\tEQUALS\tUPOUT +1\t# COMES HERE ON V34 TO TERMINATE UPDATE\n\n# CHECK FOR VERB 32 SEQUENCE\n\nCK4V32\t\tCS\tMPAC\t\t# ON DATA RETURN FROM 'GOXDSPF'\n\t\tMASK\tBIT6\t\t# ON DATA RETURN FROM \"GOXDSP\"& THE CON-\n\t\tCCS\tA\t\t# TENTS OF MPAC = VERB.  SO TEST FOR V32.\n\t\tTC\tQ\t\t# IT'S NOT A V32, IT'S DATA.  PROCEED.\n\t\tINDEX\tQ\n\t\tTC\t0 -6\t\t# V32 ENCOUNTERED - GO BACK AND GET DATA\n\nADUPTEMP\tADRES\tUPTEMP\t\t# ADDRESS OF TEMP STORAGE FOR CORRECTIONS\nADUPBUFF\tADRES\tUPBUFF\t\t# ADDRESS OF UPDATE DATA STORAGE BUFFER\nUPLOADNV\tVN\t2101\t\t# VERB 21 NOUN 01\nUPVRFYNV\tVN\t2102\t\t# VERB 21 NOUN 02\nUP21\t\t=\tMD1\t\t# DEC 21 = MAX NO OF COMPONENTS +1\nUPDTPHAS\tEQUALS\tFIVE\n\n# PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE\n\nUPSTORE\t\tEQUALS\t\t\t# GROUND HAS VERIFIED UPDATE.  STORE DATA.\n\n\t\tINHINT\n\n\t\tCAE\tFLAGWRD7\t# INVERT VERIFLAG(BIT3 OF FLAGWRD7) TO\n\t\tXCH\tL\t\t# INDICATE TO THE GROUND(VIA DOWNLINK)\n\t\tCAF\tVERIFBIT\t# THAT THE V33 (WHICH THE GROUND SENT TO\n\t\tEXTEND\t\t\t# VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY\n\t\tRXOR\tLCHAN\t\t# RECEIVED BY THE UPDATE PROGRAM\n\t\tTS\tFLAGWRD7\n\n\t\tTC\tPHASCHNG\t# SET RESTART GROUP 6 TO REDO THE UPDATE\n\t\tOCT\t04026\t\t# DATA STORE IF A RESTART OCCURS.\n\t\tINHINT\t\t\t# (BECAUSE PHASCHNG DID A RELINT)\n\n\t\tCS\tTWO\t\t# GO TO UPFNDVAC IF INSTALL IS REQUIRED.\n\t\tAD\tUPVERB\t\t# THAT IS, IF IT'S A V70 - V72.\n\t\tEXTEND\t\t\t# GO TO UPEND73 IF IT'S A V73.\n\t\tBZMF\tUPFNDVAC\n\n# VERB 73 BRANCH\n# Page 1392\nUPEND73\t\tEXTEND\t\t\t# V73-PERFORM DP OCTAL AGC CLOCK INCREMENT\n\n\t\tDCA\tUPBUFF\n\t\tDXCH\tUPBUFF +8D\n\t\tTC\tTIMEDIDL\n\t\tTC\tFALTON\t\t# ERROR- TURN ON *OPERATOR ERROR* LIGHT\n\t\tTC\tUPOUT +1\t# GO TO COMMON UPDATE PROGRAM EXIT\n\nUPFNDVAC\tCAF\tCHRPRIO\t\t# (USE EXTENDED VERB PRIORITY)\n\t\tTC\tFINDVAC\t\t# GET VAC AREA FOR 'CALL INTSTALL'\n\t\tEBANK=\tTEPHEM\n\t\t2CADR\tUPJOB\t\t# (NOTE: THIS WILL ALSO SET EBANK FOR\n\n\t\tTC\tENDOFJOB\t# 'TEPHEM' UPDATE BY V70)\n\nUPJOB\t\tTC\tINTPRET\t\t# THIS COULD BE A STATE VECTOR UPDATE--SO\n\t\tCALL\t\t\t# WAIT(PUT JOB TO SLEEP) IF ORBIT INT(OI)\n\t\t\tINTSTALL\t# IS IN PROGRESS--OR--GRAB OI AND RETURN\n\t\t\t\t\t# TO UPWAKE IF OI IS NOT IN PROGRESS.\n\nUPWAKE\t\tEXIT\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT\t04026\n\n\t\tTC\tUPFLAG\t\t# SET INTEGRATION RESTART BIT\n\t\tADRES\tREINTFLG\n\t\tINHINT\nUPPART3\t\tEQUALS\n\n\t\tINDEX\tUPVERB\t\t# BRANCH TO THE APPROPRIATE UPDATE VERB\n\t\tTCF\t+1\t\t# ROUTINE TO ACTUALLY PERFORM THE UPDATE\n\t\tTCF\tUPEND70\t\t# V70\n\t\tTCF\tUPEND71\t\t# V71\n\t\tTCF\tUPEND72\t\t# V72\n\n# ROUTINE TO INCREMENT CLOCK(TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.\n\nTIMEDIDL\tEXTEND\n\t\tQXCH\tUPTEMP\t\t# SAVE Q FOR RETURN\n\t\tCAF\tZERO\t\t# ZERO AND SAVE TIME2,TIME1\n\t\tZL\n\t\tDXCH\tTIME2\n\t\tDXCH\tUPBUFF +18D\t# STORE IN CASE OF OVERFLOW\n\n\t\tCAF\tUPDTPHAS\t# DO\n\t\tTS\tL\t\t# A\n\t\tCOM\t\t\t# QUICK\n\t\tDXCH\t-PHASE6\t\t# PHASCHNG\n# Page 1393\nTIMEDIDR\tINHINT\n\n\t\tCAF\tZERO\n\t\tZL\t\t\t# PICK UP INCREMENTER(AND ZERO\n\t\tTS\tMPAC +2\t\t# IT IN CASE OF RESTARTS) AND\n\t\tDXCH\tUPBUFF +8D\t# STORE IT\n\t\tDXCH\tMPAC\t\t# INTO MPAC FOR TPAGREE.\n\n\t\tEXTEND\n\t\tDCA\tUPBUFF +18D\n\t\tDAS\tMPAC\t\t# FORM SUM IN MPAC\n\t\tEXTEND\n\t\tBZF\tDELTATOK\t# TEST FOR OVERFLOW\n\t\tCAF\tZERO\n\t\tDXCH\tUPBUFF +18D\t# OVERFLOW, RESTORE OLD VALUE OF CLOCK\n\t\tDAS\tTIME2\t\t# AND TURN ON OPERATOR ERROR\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT\t04026\n\n\t\tTC\tUPTEMP\t\t# GO TO ERROR EXIT\n\nDELTATOK\tTC\tTPAGREE\t\t# FORCE SIGN AGREEMENT\n\t\tDXCH\tMPAC\n\t\tDAS\tTIME2\t\t# INCREMENT TIME2,TIME1\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT\t04026\n\n\t\tINHINT\n\t\tINDEX\tUPTEMP\t\t# (CODED THIS WAY FOR RESTART PROTECTION)\n\t\tTC\t1\t\t# NORMAL RETURN\n\n# VERB 71 BRANCH\n\nUPEND71\t\tCAE\tUPBUFF +1\t# SET EBANK\n\t\tTS\tEBANK\t\t#    AND\n\t\tMASK\tLOW8\t\t# CALCULATE\n\t\tTS\tUPTEMP\t\t# S-REG VALUE OF RECEIVING AREA\n\n\t\tAD\tNEG3\t\t# IN THE PROCESS OF\n\t\tAD\tCOMPNUMB\t# PERFORMING\n\t\tEXTEND\t\t\t# THIS UPDATE\n\t\tBZF\tSTORLP71\t# WILL WE\n\t\tMASK\tBIT9\t\t# OVERFLOW\n\t\tCCS\tA\t\t# INTO THE NEXT EBANK....\n\t\tTCF\tUPERROUT\t# YES\n\n\t\tCA\tNEG3\t\t# NO- CALCULATE NUMBER OF\n\t\tAD\tCOMPNUMB\t# WORDS TO BE STORED MINUS ONE\nSTORLP71\tTS\tMPAC\t\t# SAVE NO. OF WORDS REMAINING MINUS ONE\n# Page 1394\n\t\tINDEX\tA\t\t# TAKE NEXT UPDATE WORD FROM\n\t\tCA\tUPBUFF +2\t# UPBUFF AND\n\t\tTS\tL\t\t# SAVE IT IN L\n\t\tCA\tMPAC\t\t# CALCULATE NEXT\n\t\tAD\tUPTEMP\t\t# RECEIVING ADDRESS\n\t\tINDEX\tA\n\t\tEBANK=\t1400\n\t\tLXCH\t1400\t\t# UPDATE THE REGISTER  BY CONTENTS OF L\n\t\tEBANK=\tTEPHEM\n\t\tCCS\tMPAC\t\t# ARE THERE ANY WORDS LEFT TO BE STORED\n\t\tTCF\tSTORLP71\t# YES\n\t\tTCF\tUPOUT\t\t# NO- THEN EXIT UPDATE PROGRAM\nADUPBFM1\tADRES\tUPBUFF -1\t# SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)\n\t\tTCF\tUPOUT\t\t# NO- EXIT UPDATE(HERE WHEN COMPNUMB = 3)\n\n# VERB 72 BRANCH\n\nUPEND72\t\tCAF\tBIT1\t\t# HAVE AN ODD NO. OF COMPONENTS\n\t\tMASK\tCOMPNUMB\t# BEEN SENT FOR A V72 UPDATE...\n\t\tCCS\tA\n\t\tTCF\t+2\t\t# YES\n\t\tTCF\tUPERROUT\t# ERROR- SHOULD BE ODD NO. OF COMPONENTS\n\t\tCS\tBIT2\n\t\tAD\tCOMPNUMB\nLDLOOP72\tTS\tMPAC\t\t# NOW PERFORM THE UPDATE\n\t\tINDEX\tA\n\t\tCAE\tUPBUFF +1\t# PICK UP NEXT UPDATE WORD\n\t\tLXCH\tA\n\t\tCCS\tMPAC\t\t# SET POINTER TO ECADR(MUST BE CCS)\n\t\tTS\tMPAC\n\t\tINDEX\tA\n\t\tCAE\tUPBUFF +1\t# PICK UP NEXT ECADR OF REG TO BE UPDATED\n\t\tTS\tEBANK\t\t# SET EBANK\n\t\tMASK\tLOW8\t\t# ISOLATE RELATIVE ADDRESS\n\t\tINDEX\tA\n\t\tEBANK=\t1400\n\t\tLXCH\t1400\t\t# UPDATE THE REGISTER BY CONTENTS OF L\n\t\tEBANK=\tTEPHEM\n\t\tCCS\tMPAC\t\t# ARE WE THORUGH THE V72 UPDATE...\n\t\tTCF\tLDLOOP72\t# NO\n\n# NORMAL FINISH OF P27\n\nUPOUT\t\tEQUALS\n\t\tTC\tINTWAKEU\t# RELEASE  GRAB  OF ORBITAL INTEGRATION\n +1\t\tCAE\tUPOLDMOD\t# RESTORE PRIOR P27 MODE\n\t\tTC\tNEWMODEX +3\n\t\tCAF\tZERO\n# Page 1395\n\t\tTS\tDNLSTCOD\n\t\tTC\tUPACTOFF\t# TURN OFF 'UPLINK ACTIVITY' LIGHT\n\n\t\tEXTEND\t\t\t# KILL GROUP 6.\n\t\tDCA\tNEG0\n\t\tDXCH\t-PHASE6\n\n\t\tTC\tENDEXT\t\t# EXTENDED VERB EXIT\n\n# VERB 7O BRANCH\n\nUPEND70\t\tEXTEND\t\t\t# V70 DOES THE FOLLOWING WITH DP DELTA\n\t\tDCS\tUPBUFF\t\t# TIME IN UPBUFF\n\t\tDXCH\tUPBUFF +8D\n\t\tTC\tTIMEDIDL\t# DECREMENT AGC CLOCK\n\n\t\tTC\tUPERROUT\t# ERROR WHILE DECREMENTING CLOCK -- EXIT\n\n\t\tEBANK=\tTEPHEM\n\t\tEXTEND\n\t\tDCS\tUPBUFF\t\t# COPY DECREMENTERS FOR\n\t\tDXCH\tUPBUFF +10D\t# RESTART PROTECTION\n\t\tEXTEND\n\t\tDCS\tUPBUFF\n\t\tDXCH\tUPBUFF +12D\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT\t04026\n\n\t\tCAF\tZERO\n\t\tZL\n\t\tDXCH\tUPBUFF +10D\t# DECREMENT CSM STATE VECTOR TIME\n\t\tDAS\tTETCSM\n\n\t\tCAF\tZERO\n\t\tZL\n\t\tDXCH\tUPBUFF +12D\t# DECREMENT LEM STATE VECTOR TIME\n\t\tDAS\tTETLEM\n\n\t\tCAF\tZERO\n\t\tZL\n\t\tDXCH\tUPBUFF\n\t\tDAS\tTEPHEM +1\t# INCREMENT TP TEPHEM\n\t\tADS\tTEPHEM\n\n\t\tTC\tPHASCHNG\t# RESTART PROTECT(GROUP 6)\n\t\tOCT \t04026\n\n\t\tEBANK=\tUPBUFF\n# Page 1396\n\t\tTC\tUPOUT\t\t# GO TO STANDARD UPDATE PROGRAM EXIT\n\n\n# ERROR SEQUENCE\n\nUPERROUT\tTC\tFALTON\t\t# TURN ON *OPERATOR ERROR* LIGHT\n\t\tTCF\tUPOUT\t\t# GO TO COMMON UPDATE PROGRAM EXIT\n\n +2\t\tTC\tFALTON\t\t# TURN ON 'OPERATOR ERROR' LIGHT\n\t\tTC\tUPACTOFF\t# TURN OFF'UPLINK ACTIVITY'LIGHT\n\t\tTC\tENDEXT\t\t# EXTENDED VERB EXIT\n\t\t\t\t\t# (THE PURPOSE OF UPERROUT +2 EXIT IS\n\t\t\t\t\t# TO PROVIDE AN ERROR EXIT WHICH DOES NOT\n\t\t\t\t\t# RESET ANY RESTART GROUPS)\n\n\n# :UPACTOFF: IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM(P27).\n\nUPACTOFF\tCS\tBIT3\n\t\tEXTEND\t\t\t# TURN OFF UPLINK ACTIVITY LIGHT\n\t\tWAND\tDSALMOUT\t# (BIT 3 OF CHANNEL 11)\n\t\tTC\tQ\n\n"
  },
  {
    "path": "Luminary099/WAITLIST.agc",
    "content": "# Copyright:\tPublic domain.\n# Filename:\tWAITLIST.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is part of the source code for the Lunar Module's (LM)\n#\t\tApollo Guidance Computer (AGC), for Apollo 11.\n# Assembler:\tyaYUL\n# Contact:\tRon Burkey <info@sandroid.org>.\n# Website:\twww.ibiblio.org/apollo.\n# Pages:\t1117-1132\n# Mod history:\t2009-05-25 RSB\tAdapted from the corresponding\n#\t\t\t\tLuminary131 file, using page\n#\t\t\t\timages from Luminary 1A.\n#\t\t2011-01-06 JL\tFixed pseudo-label indentation.\n#\t\t2011-05-07 JL\tRemoved workarounds.\n#\n# This source code has been transcribed or otherwise adapted from\n# digitized images of a hardcopy from the MIT Museum.  The digitization\n# was performed by Paul Fjeld, and arranged for by Deborah Douglas of\n# the Museum.  Many thanks to both.  The images (with suitable reduction\n# in storage size and consequent reduction in image quality as well) are\n# available online at www.ibiblio.org/apollo.  If for some reason you\n# find that the images are illegible, contact me at info@sandroid.org\n# about getting access to the (much) higher-quality images which Paul\n# actually created.\n#\n# Notations on the hardcopy document read, in part:\n#\n#\tAssemble revision 001 of AGC program LMY99 by NASA 2021112-061\n#\t16:27 JULY 14, 1969\n\n# Page 1117\n# PROGRAM DESCRIPTION\t\t\t\t\t\t\t\tDATE -- 10 OCTOBER 1966\n# MOD NO -- 2\t\t\t\t\t\t\t\t\tLOG SECTION -- WAITLIST\n# MOD BY -- MILLER\t(DTMAX INCREASED TO 162.5 SEC)\t\t\t\tASSEMBLY -- SUNBURST REV 5\n# MOD 3 BY KERNAN\t(INHINT INSERTED AT WAITLIST) 2/28/68 SKIPPER REV 4\n# MOD 4 BY KERNAN\t(TWIDDLE IN 54) 3/28/68 SKIPPER REV 13.\n#\n# FUNCTIONAL DESCRIPTION --\n#\tPART OF A SECTION OF PROGRAMS -- WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM (CALLED A TASK),\n#\tWHICH IS TO BEGIN IN C(A) CENTISECONDS.  WAITLIST UPDATES TIME3, LST1, AND LST2.  THE MEANING OF THESE LISTS\n#\tFOLLOW.\n#\n#\t\tC(TIME3) = 16384 -(T1-T) CENTISECONDS, (T=PRESENT TIME, T1-TIME FOR TASK1)\n#\n#\t\t\tC(LST1)\t\t=\t-(T2-T1)+1\n#\t\t\tC(LST1 +1)\t=\t-(T3-T2)+1\n#\t\t\tC(LST1 +2)\t=\t-(T4-T3)+1\n#\t\t\t\t       ...\n#\t\t\tC(LST1 +6)\t=\t-(T8-T7)+1\n#\t\t\tC(LST1 +7)\t=\t-(T9-T8)+1\n#\n#\t\t\tC(LST2)\t\t=\t2CADR OF TASK1\n#\t\t\tC(LST2 +2)\t=\t2CADR OF TASK2\n#\t\t\t\t       ...\n#\t\t\tC(LST2 +14)\t=\t2CADR OF TASK8\n#\t\t\tC(LST2 +16)\t=\t2CADR OF TASK9\n#\n# WARNINGS --\n#\t1)\t1 <= C(A) <= 16250D (1 CENTISECOND TO 162.5 SEC)\n#\t2)\t9 TASKS MAXIMUM\n#\t3)\tTASKS CALLED UNDER INTERRUPT INHIBITED\n#\t4)\tTASKS END BY TC TASKOVER\n#\n# CALLING SEQUENCE --\n#\tL-1\tCA\tDELTAT \t(TIME IN CENTISECONDS TO TASK START)\n#\tL\tTC\tWAITLIST\n#\tL+1\t2CADR\tDESIRED TASK.\n#\tL+2\t(MINOR OF 2CADR)\n#\tL+3\tRELINT\t\t(RETURNS HERE)\n#\n# TWIDDLE --\n#\tTWIDDLE IS FOR USE WHEN THE TASK BEING SET UP IS IN THE SAME EBANK AND FBANK AS THE USER.  IN\n#\tSUCH CASES, IT IMPROVES UPON WAITLIST BY ELIMINATING THE NEED FOR THE BBCON HALF OF THE 2CADR,\n# Page 1118\n#\tSAVING A WORD.  TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT,\n#\t\tL-1\tCA\tDELTAT\n#\t\tL\tTC\tTWIDDLE\n#\t\tL+1\tADRES\tDESIRED TASK\n#\t\tL+2\tRELINT\t\t(RETURNS HERE)\n#\n# NORMAL EXIT MODES --\n#\tAT L+3 OF CALLING SEQUENCE.\n#\n# ALARM OR ABORT EXIT MODES --\n#\tTC\tABORT\n#\tOCT\t1203\t(WAITLIST OVERFLOW -- TOO MANY TASKS)\n#\n# ERASABLE INITIALIZATION REQUIRED --\n#\tACCOMPLISHED BY FRESH START --\tLST2, ..., LST2 +16 = ENDTASK\n#\t\t\t\t\tLST1, ..., LST1 +7  = NEG1/2\n#\n# OUTPUT --\n#\tLST1 AND LST2 UPDATED WTIH NEW TASK AND ASSOCIATED TIME.\n#\n# DEBRIS --\n#\tCENTRALS -- A,Q,L\n#\tOTHER    -- WAITEXIT, WAITADR, WAITTEMP, WAITBANK\n#\n# DETAILED ANALYSIS OF TIMING --\n#\tCONTROL WILL NOT BE RETURNED TO THE SPECIFIED ADDRESS (2CADR) IN EXACTLY DELTA T CENTISECONDS.\n#\tTHE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS:\n#\t\tLET T0 = THE TIME OF THE TC WAITLIST\n#\t\tLET TS = T0 +147U + COUNTER INCREMENTS (SET UP TIME)\n#\t\tLET X  = TS -(100TS)/100  (VARIANCE FROM COUNTERS)\n#\t\tLET Y  = LENGTH OF TIME OF INHIBIT INTERRUPT AFTER T3RUPT\n#\t\tLET Z  = LENGTH OF TIME TO PROCESS TASKS WHICH ARE DUE THIS T3RUPT BUT DISPATCHED EARLIER.\n#\t\t\t (Z=0, USUALLY).\n#\t\tLET DELTD  = THE ACTUAL TIME TAKEN TO GIVE CONTROL TO 2CADR\n#\t\tTHEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS*\n#\t\t*THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME.\n#\tIN SHORT, THE ACTUAL TIME TO RETURN CONTROL TO A 2CADR IS AUGMENTED BY THE TIME TO SET UP THE TASK'S\n# \tINTERRUPT, ALL COUNTERS TICKING, THE T3RUPT PROCESSING TIME, THE WAITLIST PROCESSING TIME AND THE POSSIBILITY\n#\tOF OTHER TASKS INHIBITING THE INTERRUPT.\n\n\t\tBLOCK\t02\n# Page 1119\n\t\tEBANK=\tLST1\t\t# TASK LISTS IN SWITCHED E BANK.\n\n\t\tCOUNT*\t$$/WAIT\nTWIDDLE\t\tINHINT\n\t\tTS\tL\t\t# SAVE DELAY TIME IN L\n\t\tCA\tPOSMAX\n\t\tADS\tQ\t\t# CREATING OVERFLOW AND Q-1 IN Q\n\t\tCA\tBBANK\n\t\tEXTEND\n\t\tROR\tSUPERBNK\n\t\tXCH\tL\n\nWAITLIST\tINHINT\n\t\tXCH\tQ\t\t# SAVE DELTA T IN Q AND RETURN IN\n\t\tTS\tWAITEXIT\t# WAITEXIT.\n\t\tEXTEND\n\t\tINDEX\tWAITEXIT\t# IF TWIDDLING, THE TS SKIPS TO HERE\n\t\tDCA\t0\t\t# PICK UP 2CADR OF TASK.\n -1\t\tTS\tWAITADR\t\t# BBCON WILL REMAIN IN L\nDLY2\t\tCAF\tWAITBB\t\t# ENTRY FROM FIXDELAY AND VARDELAY.\n\t\tXCH\tBBANK\n\t\tTCF\tWAIT2\n\n# RETURN TO CALLER AFTER TASK INSERTION:\n\nLVWTLIST\tDXCH\tWAITEXIT\n\t\tAD\tTWO\n\t\tDTCB\n\n\t\tEBANK=\tLST1\nWAITBB\t\tBBCON\tWAIT2\n\n# RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1.\n\nFIXDELAY\tINDEX\tQ\t\t# BOTH ROUTINES MUST BE CALLED UNDER\n\t\tCAF\t0\t\t# WAITLIST CONTROL AND TERMINATE THE TASK\n\t\tINCR\tQ\t\t# IN WHICH THEY WERE CALLED.\n\n# RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A.\n\nVARDELAY\tXCH\tQ\t\t# DT TO Q.  TASK ADRES TO WAITADR.\n\t\tTS\tWAITADR\n\t\tCA\tBBANK\t\t# BBANK IS SAVED DURING DELAY.\n\t\tEXTEND\n\t\tROR\tSUPERBNK\t# ADD SBANK TO BBCON.\n\t\tTS\tL\n\t\tCAF\tDELAYEX\n\t\tTS\tWAITEXIT\t# GO TO TASKOVER AFTER TASK ENTRY.\n\t\tTCF\tDLY2\n\n# Page 1120\nDELAYEX\t\tTCF\tTASKOVER -2\t# RETURNS TO TASKOVER.\n\n# Page 1121\n# ENDTASK MUST ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE.\n\n\t\tEBANK=\tLST1\nENDTASK\t\t-2CADR\tSVCT3\n\nSVCT3\t\tCCS\tFLAGWRD2\t# DRIFT FLAG\n\t\tTCF\tTASKOVER\n\t\tTCF\tTASKOVER\n\t\tTCF\t+1\n\nCKIMUSE\t\tCCS\tIMUCADR\t\t# DON'T DO NBDONLY IF SOMEONE ELSE IS IN\n\t\tTCF\tSVCT3X\t\t# IMUSTALL.\n\t\tTCF\t+3\n\t\tTCF\tSVCT3X\n\t\tTCF\tSVCT3X\n\n +3\t\tCAF\tPRIO35\t\t# COMPENSATE FOR NBD COEFFICIENTS ONLY.\n\t\tTC\tNOVAC\t\t#\tENABLE EVERY 81.93 SECONDS\n\t\tEBANK=\tNBDX\n\t\t2CADR\tNBDONLY\n\n\t\tTCF\tTASKOVER\n\nSVCT3X\t\tTC\tFIXDELAY\t# DELAY MAX OF 2 TIMES FOR IMUZERO.\n\t\tDEC\t500\n\t\tTC\tSVCT3\t\t# CHECK DRIFT FLAG AGAIN.\n\n# Page 1122\n# BEGIN TASK INSERTION.\n\n\t\tBANK\t01\n\t\tCOUNT*\t$$/WAIT\nWAIT2\t\tTS\tWAITBANK\t# BBANK OF CALLING PROGRAM.\n\t\tCA\tQ\n\t\tEXTEND\n\t\tBZMF\tWAITPOOH\n\n\t\tCS\tTIME3\n\t\tAD\tBIT8\t\t# BIT 8 = OCT 200\n\t\tCCS\tA\t\t# TEST 200 - C(TIME3).  IF POSITIVE,\n\t\t\t\t\t# IT MEANS THAT TIME3 OVERFLOW HAS OCCURRED PRIOR TO CS TIME3 AND THAT\n\t\t\t\t\t# C(TIME3) = T - T1, INSTEAD OF 1.0 - (T1 - T).  THE FOLLOWING FOUR\n\t\t\t\t\t# ORDERS SET C(A) = TD - T1 + 1 IN EITHER CASE.\n\n\t\tAD\tOCT40001\t# OVERFLOW HAS OCCURRED.  SET C(A) =\n\t\tCS\tA\t\t# T - T1 + 1.0 - 201\n\n# NORMAL CASE (C(A) NNZ) YIELDS SAME C(A):  -( -(1.0-(T1-T)) + 200) - 1\n\n\t\tAD\tOCT40201\n\t\tAD\tQ\t\t# RESULT = TD - T1 + 1.\n\n\t\tCCS\tA\t\t# TEST TD - T1 + 1.\n\n\t\tAD\tLST1\t\t# IF TD - T1 POS, GO TO WTLST5 WITH\n\t\tTCF\tWTLST5\t\t# C(A) = (TD - T1) + C(LST1) = TD-T2+1\n\n\t\tNOOP\n\t\tCS\tQ\n\n# NOTE THAT THIS PROGRAM SECTION IS NEVER ENTERED WHEN T-T1 G/E -1,\n# SINCE TD-T1+1 = (TD-T) + (T-T1+1), AND DELTA T = TD-T G/E +1.  (G/E\n# SYMBOL MEANS GREATER THAN OR EQUAL TO).  THUS THERE NEED BE NO CON-\n# CERN OVER A PREVIOUS OR IMMINENT OVEFLOW OF TIME3 HERE.\n\n\t\tAD\tPOS1/2\t\t# WHEN TD IS NEXT, FORM QUANTITY\n\t\tAD\tPOS1/2\t\t#\t1.0 - DELTA T = 1.0 - (TD - T)\n\t\tXCH\tTIME3\n\t\tAD\tNEGMAX\n\t\tAD\tQ\t\t# 1.0 - DELTAT T NOW COMPLETE.\n\t\tEXTEND\t\t\t# ZERO INDEX Q.\n\t\tQXCH\t7\t\t# (ZQ)\n\n# Page 1123\nWTLST4\t\tXCH\tLST1\n\t\tXCH\tLST1 \t+1\n\t\tXCH\tLST1 \t+2\n\t\tXCH\tLST1 \t+3\n\t\tXCH\tLST1 \t+4\n\t\tXCH\tLST1 \t+5\n\t\tXCH\tLST1 \t+6\n\t\tXCH\tLST1 \t+7\n\n\t\tCA\tWAITADR\t\t# (MINOR PART OF TASK CADR HAS BEEN IN L.)\n\t\tINDEX\tQ\n\t\tTCF\t+1\n\n\t\tDXCH\tLST2\n\t\tDXCH\tLST2 \t+2\n\t\tDXCH\tLST2 \t+4\n\t\tDXCH\tLST2 \t+6\n\t\tDXCH\tLST2 \t+8D\n\t\tDXCH\tLST2 \t+10D\t# AT END, CHECK THAT C(LST2 +10) IS STD\n\t\tDXCH\tLST2 \t+12D\n\t\tDXCH\tLST2 \t+14D\n\t\tDXCH\tLST2 \t+16D\n\t\tAD\tENDTASK\t\t# END ITEM, AS CHECK FOR EXCEEDING\n\t\t\t\t\t# THE LENGTH OF THE LIST.\n\t\tEXTEND\t\t\t# DUMMY TASK ADRES SHOULD BE IN FIXED-\n\t\tBZF\tLVWTLIST\t# FIXED SO ITS ADRES ALONE DISTINGUISHES\n\t\tTCF\tWTABORT\t\t# IT.\n\n# Page 1124\nWTLST5\t\tCCS\tA\t\t# TEST TD - T2 + 1\n\t\tAD\tLST1 \t+1\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t1\n\n +4\t\tCCS\tA\t\t# TEST TD - T3 + 1\n\t\tAD\tLST1 \t+2\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t2\n\n +4\t\tCCS\tA\t\t# TEST TD - T4 + 1\n\t\tAD\tLST1 \t+3\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t3\n\n +4\t\tCCS\tA\t\t# TEST TD - T5 + 1\n\t\tAD\tLST1 \t+4\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t4\n\n +4\t\tCCS\tA\t\t# TEST TD - T6 + 1\n\t\tAD\tLST1 \t+5\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t5\n\n +4\t\tCCS\tA\t\t# TEST TD - T7 + 1\n\t\tAD\tLST1 \t+6\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t6\n\n# Page 1125\n +4\t\tCCS\tA\t\t# TEST TD - T2 + 1\n\t\tAD\tLST1 \t+7\n\t\tTCF\t+4\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t7\n\n +4\t\tCCS\tA\nWTABORT\t\tTC\tFILLED\n\t\tNOOP\t\t\t# CAN'T GET HERE\n\t\tAD\tONE\n\t\tTC\tWTLST2\n\t\tOCT\t10\n\nOCT40201\tOCT\t40201\n\n# Page 1126\nFILLED\t\tDXCH\tWAITEXIT\n\t\tTC\tBAILOUT1\t# NO ROOM IN THE INN\n\t\tOCT\t01203\n\n# Page 1127\n# THE ENTRY TC WTLST2 JUST PRECEDING OCT N IS FOR T  LE TD LE T   -1.\n#                                                  N           N+1\n# (LE MEANS LESS THAN OR EQUAL TO).  AT ENTRY, C(A) = -(TD - T   + 1)\n#                                                             N+1\n# THE LST1 ENTRY -(T   -T +1) IS TO BE REPLACED BY -(TD - T  + 1), AND\n#                   N+1  N                                 N\n# THE ENTRY -(T   - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING.\n#              N+1\n\nWTLST2\t\tTS\tWAITTEMP\t# C(A) = -(TD - T + 1)\n\t\tINDEX\tQ\n\t\tCAF\t0\n\t\tTS\tQ\t\t# INDEX VALUE INTO Q.\n\n\t\tCAF\tONE\n\t\tAD\tWAITTEMP\n\t\tINDEX\tQ\t\t# C(A) = -(TD - T ) + 1.\n\t\tADS\tLST1 \t-1\t#                N\n\n\t\tCS\tWAITTEMP\n\t\tINDEX\tQ\n\t\tTCF\tWTLST4\n\n# \tC(TIME3) \t=\t1.0 - (T1 - T)\n#\n# \tC(LST1)\t\t=\t- (T2 - T1) + 1\n# \tC(LST1+1)\t=\t- (T3 - T2) + 1\n# \tC(LST1+2)\t=\t- (T4 - T3) + 1\n#\tC(LST1+3)\t=\t- (T5 - T4) + 1\n# \tC(LST1+4)\t=\t- (T6 - T5) + 1\n#\n#\tC(LST2)\t\t=\t2CADR TASK1\n#\tC(LST2+2)\t=\t2CADR TASK2\n#\tC(LST2+4)\t=\t2CADR TASK3\n#\tC(LST2+6)\t=\t2CADR TASK4\n#\tC(LST2+8)\t=\t2CADR TASK5\n#\tC(LST2+10)\t=\t2CADR TASK6\n\n# Page 1128\n# ENTERS HERE ON T3 RUPT TO DISPATCH WAITLISTED TASK.\n\nT3RUPT\t\tEXTEND\n\t\tROR\tSUPERBNK\t# READ CURRENT SUPERBANK VALUE AND\n\t\tTS\tBANKRUPT\t# SAVE WITH E AND F BANK VALUES.\n\t\tEXTEND\n\t\tQXCH\tQRUPT\n\nT3RUPT2\t\tCAF\tNEG1/2\t\t# DISPATCH WAITLIST TASK.\n\t\tXCH\tLST1 \t+7\n\t\tXCH\tLST1 \t+6\n\t\tXCH\tLST1 \t+5\n\t\tXCH\tLST1 \t+4\t# 1. MOVE UP LST1 CONTENTS, ENTERING\n\t\tXCH\tLST1 \t+3\t#    A VALUE OF 1/2 +1 AT THE BOTTOM\n\t\tXCH\tLST1 \t+2\t#    FOR T6-T5, CORRESPONDING TO THE\n\t\tXCH\tLST1 \t+1\t#    INTERVAL 81.91 SEC FOR ENDTASK.\n\t\tXCH\tLST1\n\t\tAD\tPOSMAX\t\t# 2. SET T3 = 1.0 - T2 - T USING LIST 1.\n\t\tADS\tTIME3\t\t#    SO T3 WON'T TICK DURING UPDATE.\n\t\tTS\tRUPTAGN\n\t\tCS\tZERO\n\t\tTS\tRUPTAGN\t\t# SETS RUPTAGN TO +1 ON OVERFLOW.\n\n\t\tEXTEND\t\t\t# DISPATCH TASK.\n\t\tDCS\tENDTASK\n\t\tDXCH\tLST2 \t+16D\n\t\tDXCH\tLST2 \t+14D\n\t\tDXCH\tLST2 \t+12D\n\t\tDXCH\tLST2 \t+10D\n\t\tDXCH\tLST2 \t+8D\n\t\tDXCH\tLST2 \t+6\n\t\tDXCH\tLST2 \t+4\n\t\tDXCH\tLST2 \t+2\n\t\tDXCH\tLST2\n\n\t\tXCH\tL\n\t\tEXTEND\n\t\tWRITE \tSUPERBNK\t# SET SUPERBANK FROM BBCON OF 2CADR\n\t\tXCH\tL\t\t# RESTORE TO L FOR DXCH Z.\n\t\tDTCB\n\n# Page 1129\n# RETURN, AFTER EXECUTION OF T3 OVERFLOW TASK:\n\n\t\tBLOCK\t02\n\t\tCOUNT*\t$$/WAIT\nTASKOVER\tCCS\tRUPTAGN\t\t# IF +1 RETURN TO T3RUPT, IF -0 RESUME.\n\t\tCAF\tWAITBB\n\t\tTS\tBBANK\n\t\tTCF\tT3RUPT2\t\t# DISPATCH NEXT TASK IF IT WAS DUE.\n\n\t\tCA\tBANKRUPT\n\t\tEXTEND\n\t\tWRITE\tSUPERBNK\t# RESTORE SUPERBANK BEFORE RESUME IS DONE\n\nRESUME\t\tEXTEND\n\t\tQXCH\tQRUPT\nNOQRSM\t\tCA\tBANKRUPT\n\t\tXCH\tBBANK\nNOQBRSM\t\tDXCH\tARUPT\n\t\tRELINT\n\t\tRESUME\n\n# Page 1130\n# LONGCALL\n# PROGRAM DESCRIPTION\t\t\t\tDATE -- 17 MARCH 1967\n# PROGRAM WRITTEN BY W.H.VANDEVER\t\tLOG SECTION WAITLIST\n# MOD BY -- R. MELANSON TO ADD DOCUMENTATION\tASSEMBLY SUNDISK REV. 100\n#\n# FUNCTIONAL DESCRIPTION --\n#\tLONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK\n#\tIMMEDIATELY FOLLOWING THE TC LONGCALL.  FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF\n# \tA DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO\n# \tSTART.\n# CALLING SEQUENCE --\n#\t\tEXTEND\n#\t\tDCA\tTIMELOC\n#\t\tTC\tLONGCALL\n#\t\t2CADR\tTASKTODO\n# NORMAL EXIT MODE --\n#\t1)\tTC\tWAITLIST\n#\t2)\tDTCB\t(TC L+3 OF CALLING ROUTINE 1ST PASS THRU LONGCYCL)\n#\t3)\tDTCB\t(TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL)\n# ALARM OR ABORT EXIT MODE --\n#\tNONE\n# OUTPUT --\n#\tLONGTIME AND LONGTIME+1 = DELTA TIME\n#\tLONGEXIT AND LONGEXIT+1 = RETURN 2CADR\n#\tLONGCADR AND LONGCADR+1 = TASK 2CADR\n#\tA = SINGLE PRECISION TIME FOR WAITLIST\n# ERASABLE INITIALIZATION --\n#\tA = MOST SIGNIFICANT PART OF DELTA TIME\n#\tL = LEAST SIGNIFICANT PART OF DELTA TIME\n#\tQ = ADDRESS OF 2CADR TASK VALUE\n# DEBRIS --\n#\tA,Q,L\n#\tLONGCADR AND LONGCADR+1\n#\tLONGEXIT AND LONGEXIT+1\n#\tLONGTIME AND LONGTIME+1\n# *** THE FOLLOWING IS TO BE IN FIXED-FIXED AND UNSWITCHED ERRASIBLE **\n\n\t\tBLOCK\t02\n\t\tEBANK=\tLST1\nLONGCALL\tDXCH\tLONGTIME\t# OBTAIN THE DELTA TIME\n\n\t\tEXTEND\t\t\t# OBTAIN THE 2CADR\n# Page 1131\n\t\tNDX\tQ\n\t\tDCA\t0\n\t\tDXCH\tLONGCADR\n\n\t\tEXTEND\t\t\t# NOW GO TO THE APPROPRIATE SWITCHED BANK\n\t\tDCA\tLGCL2CDR\t# FOR THE REST OF LONGCALL\n\t\tDTCB\n\n\t\tEBANK=\tLST1\nLGCL2CDR\t2CADR\tLNGCALL2\n\n# *** THE FOLLOWING MAY BE IN A SWITCHED BANK, INCLUDING ITS ERASABLE ***\n\n\t\tBANK\t01\n\t\tCOUNT*\t$$/WAIT\nLNGCALL2\tLXCH\tLONGEXIT +1\t# SAVE THE CORRECT BB FOR RETURN\n\t\tCA\tTWO\t\t# OBTAIN THE RETURN ADDRESS\n\t\tADS\tQ\n\t\tTS\tLONGEXIT\n\n\t\tCA\tLONGTIME\t# CHECK FOR LEGITIMATE DELTA-TIME\n\t\tCCS\tA\n\t\tTCF\tLONGCYCL\t# HI-ORDER OK --> ALL IS OK.\n\t\tTCF\t+2\t\t# HI-ORDER ZERO --> CHECK LO-ORDER.\n\t\tTCF\tLONGPOOH\t# HI-ORDER NEG. --> NEG. DT\n +2\t\tCA\tLONGTIME +1\t# CHECK LO-ORDER FOR ZERO OR NEGATIVE.\n\t\tEXTEND\n\t\tBZMF\tLONGPOOH\t# BAD DELTA-TIME.  ABORT\n\n# *** WAITLIST TASK LONGCYCL ***\n\nLONGCYCL\tEXTEND\t\t\t# CAN WE SUCCESFULLY TAKE ABOUT 1.25\n\t\tDCS\tDPBIT14\t\t# MINUTES OFF OF LONGTIME\n\t\tDAS\tLONGTIME\n\n\t\tCCS\tLONGTIME +1\t# THE REASONING BEHIND THIS PART IS\n\t\tTCF\tMUCHTIME\t# INVOLVED, TAKING INTO ACCOUNT THAT THE\n\t\t\t\t\t# WORDS MAY NOT BE SIGNED CORRECTED (DP\n\t\t\t\t\t# BASIC INSTRUCTIONS\n\t\t\t\t\t# DO NOT SIGN CORRECT) AND THAT WE SUBTRAC-\n\t\t\t\t\t# TED BIT14 (1 OVER HALF THE POS. VALUE\n\t\t\t\t\t# REPRESENTABLE IN SINGLE WORD)\n\t\tNOOP\t\t\t# CAN'T GET HERE *************\n\t\tTCF\t+1\n\t\tCCS\tLONGTIME\n\t\tTCF\tMUCHTIME\nDPBIT14\t\tOCT\t00000\n\t\tOCT\t20000\n\n\t\t\t\t\t# LONGCALL\n# Page 1132\nLASTTIME\tCA\tBIT14\t\t# GET BACK THE CORRECT DELTA T FOR WAITLIST\n\t\tADS\tLONGTIME +1\n\t\tTC\tWAITLIST\n\t\tEBANK=\tLST1\n\t\t2CADR\tGETCADR\t\t# THE ENTRY TO OUR LONGCADR\n\nLONGRTRN\tCA\tTSKOVCDR\t# SET IT UP SO THAT ONLY THE FIRST EXIT IS\n\t\tDXCH\tLONGEXIT\t# TO THE CALLER OF LONGCALL\n\t\tDTCB\t\t\t# THE REST ARE TO TASKOVER\n\nMUCHTIME\tCA\tBIT14\t\t# WE HAVE OVER OUR ABOUT 1.25 MINUTES\n\t\tTC\tWAITLIST\t# SO SET UP FOR ANOTHER CYCLE THROUGH HERE\n\t\tEBANK=\tLST1\n\t\t2CADR\tLONGCYCL\n\n\t\tTCF\tLONGRTRN\t# NOW EXIT PROPERLY\n\n# *** WAITLIST TASK GETCADR ***\n\nGETCADR\t\tDXCH\tLONGCADR\t# GET THE LONGCALL THAT WE WISHED TO START\n\t\tDTCB\t\t\t# AND TRANSFER CONTROL TO IT\n\nTSKOVCDR\tGENADR\tTASKOVER\nLONGPOOH\tDXCH\tLONGEXIT\n\t\tTCF\t+2\nWAITPOOH\tDXCH\tWAITEXIT\n +2\t\tTC\tPOODOO1\n\t\tOCT\t01204\n\n"
  },
  {
    "path": "README.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Basa Jawa][JV],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN],\n[മലയാളം][ML]\n\n[AR]:Translations/README.ar.md\n[AS_IN]:Translations/README.as_in.md\n[AZ]:Translations/README.az.md\n[BD_BN]:Translations/README.bd_bn.md\n[BE]:Translations/README.be.md\n[CA]:Translations/README.ca.md\n[CZ]:Translations/README.cz.md\n[DA]:Translations/README.da.md\n[DE]:Translations/README.de.md\n[EN]:README.md\n[ES]:Translations/README.es.md\n[FA]:Translations/README.fa.md\n[FI]:Translations/README.fi.md\n[FR]:Translations/README.fr.md\n[GL]:Translations/README.gl.md\n[GR]:Translations/README.gr.md\n[HI_IN]:Translations/README.hi_in.md\n[ID]:Translations/README.id.md\n[IT]:Translations/README.it.md\n[JA]:Translations/README.ja.md\n[JV]:Translations/README.jv.md\n[KO_KR]:Translations/README.ko_kr.md\n[KU]:Translations/README.ku.md\n[LT]:Translations/README.lt.md\n[MM]:Translations/README.mm.md\n[MN]:Translations/README.mn.md\n[NE]:Translations/README.ne.md\n[NL]:Translations/README.nl.md\n[NO]:Translations/README.no.md\n[PL]:Translations/README.pl.md\n[PT_BR]:Translations/README.pt_br.md\n[RO]:Translations/README.ro.md\n[RU]:Translations/README.ru.md\n[SV]:Translations/README.sv.md\n[TR]:Translations/README.tr.md\n[UK]:Translations/README.uk.md\n[VI]:Translations/README.vi.md\n[ZH_CN]:Translations/README.zh_cn.md\n[ZH_TW]:Translations/README.zh_tw.md\n[ML]:Translations/README.ml.md\nOriginal Apollo 11 guidance computer (AGC) source code for Command Module (Comanche055) and Lunar Module (Luminary099). Digitized by the folks at [Virtual AGC][3] and [MIT Museum][4]. The goal is to be a repo for the original Apollo 11 source code. As such, PRs are welcome for any issues identified between the transcriptions in this repository and the original source scans for [Luminary 099][5] and [Comanche 055][6], as well as any files I may have missed.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md][7] before opening a pull request.\n\n## Compiling\n\nIf you are interested in compiling the original source code, check\nout [Virtual AGC][8].\n\n## Attribution\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nCopyright      | Public domain\nComanche055    | Part of the source code for Colossus 2A, the Command Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | Part of the source code for Luminary 1A, the Lunar Module's (LM) Apollo Guidance Computer (AGC) for Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler      | yaYUL\nContact        | Ron Burkey <info@sandroid.org>\nWebsite        | www.ibiblio.org/apollo\nDigitalisation | 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.\n\n### Contract and Approvals\n\n*Derived from [CONTRACT_AND_APPROVALS.agc]*\n\nThis AGC program shall also be referred to as Colossus 2A.\n\nThis program is intended for use in the Command Module 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.\n\nSubmitted by         | Role | Date\n:------------------- | :--- | :---\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 Mar 69\n\nApproved by       | Role | Date\n:---------------- | :--- | :---\nDaniel J. Lickly  | Director, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nFred H. Martin    | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28 Mar 69\nNorman E. Sears   | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRichard H. Battin | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nDavid G. Hoag     | Director<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRalph R. Ragan    | Deputy Director<br>Instrumentation Laboratory | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/CONTRIBUTING.ar.md",
    "content": "<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[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nتمّت رقمنة الكود المصدر في هذا المستودع يدويًا من مطبوعات ورقية، لذلك طرأت أخطاء طباعية و&nbsp;تباينات أخرى سهوًا. يجب تعديل الكود ليتّفق مع المسوحات الضوئية للطبعات التالية:\n\n- [طبعات AGC لكود Comanche][8]\n- [طبعات AGC لكود Luminary][9]\n\nThe following website can be used to easily navigate around the scanned printouts for both Comanche and Luminary: https://28gpc.csb.app/\n\n## ملحقات مفيدة\n\nيحوي GitHub دعمًا للتلوين النحويِّ للغة التجميع AGC، و&nbsp;مع أنّ محررات الكود الشائعة لا تدعم ذلك، إلا أنه ثمّة ملحقات توفر الدعم للغة AGC لكلٍ مِنْ المحررات التالية:\n\n- [Atom][Atom]۞\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n۞ يدعم التنسيق الآلي\n\n## التنسيق\n\n**ملاحظة:** GitHub و&nbsp;الملحقات المذكورة أعلاه تضمن تلقائيًّا استخدام التنسيق الصحيح.\n\n- استخدام علامة الجدولة للإزاحة أوّل السطر.\n- تعيين طول علامة الجدولة بثمان مسافات.\n- حذف المسافات اللاحقة للنصوص في السطر\n\n## المطلوب التحقّق منه\n\nالتباينات بين المسوحات الضوئية و&nbsp;الكود المصدر في هذا المستودع، بما في ذلك:\n\n### التعليقات\n\nيجب أن تتطابق التعليقات في الكود المنسوخ مع ما في المسوحات حرفيًّا\n\nمن الجوانب التي ينبغي تحرّيها عند المراجعة:\n\n#### الأخطاء الطباعية\n\nفي بعض المواضع وقع مطوّرو البرمجية في أخطاء طباعية أثناء إدخال نصوص التعليقات، و&nbsp;قد تم تصويب بعض تلك الأخطاء من باب الخطأ في أثناء إنجاز الرقمنة ابتداءً، كما طرأت أخطاء أثناء الرقمنة لم توجد في الأصل.\n\nعلى سبيل المثال، إذا تضمّنت التعليقات في الكود في المستودع كلمة `SPACECRAFT` بينما وجدت في الموضع المقابل في المسوحات الضوئية `SPAECRAFT` فيجب تصويب النص إلى `SPAECRAFT` بإغفال حرف `C`\n\nكذلك إذا وُجد في كلمة في الكود المٌرقمَن خطأ طباعي غير موجود في المسوحات الضوئية فيجب تصويبه.\n\n#### المسافات\n\nيجب أن تُطابِق المسافات بين الأحرف في الكود المُرقمَن نظيراتها في المسوحات الضوئية، و&nbsp;ذلك يكون على النحو التالي في أغلب الحالات (طالعوا النقاش في [#316][10]):\n\n- مسافة واحدة بين الكلمات\n- مسافتين بين العبارات\n- ثلاث مسافات لإزاحة أوّل السطر\n\n- لكن الصفحات في المسوحات الضوئية لا تتبع كلّها تلك القواعد، و&nbsp;عند التباين يجب اتّباع ما في المسوحات الضوئية.\n\n### السطور\n\n- السطور التي *تحوي* `R0000` في العمود 1 يجب أن تطابق الممسوحات حرفيًّا.\n- السطور التي __لا__ *تحوي* `R0000` في العمود 1 يجب أن يسبقها سطر فارغ واحد أو اثنين متتاليين.\n  - إذا وُجد أكثر من سطرين فارغين متتاليين يجب حذف الزائد منها.\n    - لا تؤخذ الأسطر التي تحوي `R0000` في العمود 1 في الحسبان.\n  - في المصدر، أنشئت تلك الفواصل بوضع رقم غير مطبوع في العمود 8. فوجود الرقم 2 في ذلك الموضع أوجد فراغًا مزدوجًا (سطر فارغ واحد) و&nbsp;وجود الرقم 3 أوجد فراغًا ثلاثيًّا (سطرين فارغين). القيم 4-8 كانت مُعرَّفة لكنها لم تستخدم قط. المزيد عن هذا في [#159][7]\n\nعلى سبيل المثال:\n\n<div dir=\"ltr\">\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\n</div>\n\nيُصوّب إلى:\n<div dir=\"ltr\">\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n</div>\n\n## ملاحظة\n\nقبل وضع طلب الدمج، يُرجى التأكد من اتفاق تحريراتكم مع المسوحات!\n\n</div>\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n"
  },
  {
    "path": "Translations/CONTRIBUTING.az.md",
    "content": "# 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][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nBu repodakı mənbə kodu kağız çıxışlarından əl ilə rəqəmsallaşdırılıb. Belə ki, yanlışlıqla hərf səhvləri və digər uyğunsuzluqlar edilib. Kod aşağıdakı skan edilmiş çıxışa uyğun olmaq üçün redaktə edilməlidir:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nThe following website can be used to easily navigate around the scanned printouts for both Comanche and Luminary: https://28gpc.csb.app/\n\n## Faydalı Pluginlər\n\nGitHub, AGC assembly dili için sentaks desteği sağlıyor ama sizin kodu düzenlemek için kullandığınız editör sağlamayacaktır. Aşağıdaki editörler AGC dili sentaks vurgulaması için eklentiler sunmaktadır:\n\nGitHub, AGC assembly dilinin sintaksını dəstəkləyir amma sizin kodu redaktə etmək üçün istifadə edəcəyiniz IDE dəstəkləməyəcək. Aşağıdakı IDE-lər AGC dili üçün sintaks dəstəyi təqdim etməkdədir.\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Avtomatik formatlaşdırmanı dəstəkləyirlər\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formatlaşdırma\n\n**Not:** GitHub və yuxarıdakı 3 plagin avtomatik olaraq düzgün formatlaşdırmadan istifadə etməyə imkan verəcək.\n\n- Girintiləməni TAB ilə buraxın.\n- 8 TAB genişliyi istifadə edin.\n- Davamındakı boşluqları silin.\n\n## Nəyi kontrol edim?\n\nSkan edilmiş çıxışlar və bu repodakı mənbə kodu arasında hər hansı uyğunsuzluq.\n\n### Şərhlər\n\nUyğunlaşdırılmış koddakı şərh sətirləri çıxışlarla **dəqiq** **uyğunlaşmalıdır**.\n\nDüzəltmək üçün axtarmaq lazım olan bəzi əsas problemlər bunlardır:\n\n#### Yazım Xətaları\n\nBəzi yerlərdə orijinal tərtibatçılar şərhləri yazarkən hərf səhvlərinə yol verdiblər. Bunlardan bəziləri rəqəmsallaşdırma prosesinin əvvəlində səhvən düzəldildi, lakin rəqəmsallaşdırma prosesi skan edilmiş çıxışda olmayan yeni yazı xətaları da yol açdı.\n\nMəsələn, rəqəmsal şərhlərdə `SPACECRAFT` sözü varsa, lakin skan edilmiş çaplarda `SPAECRAFT` oxunursa, rəqəmsal şərh `SPAECRAFT` olaraq **düzəldilməlidir** (`C` yoxdur).\n\nEyni şəkildə, rəqəmsal şərhlərdə yazı xətası varsa, lakin skan edilmiş çaplar düzgün yazılıbsa, yazı xətası **düzəldilməlidir**.\n\n### Boşluqlar\n\nŞərhlər arasındakı iki simvol arasındakı boşluqlar skan edilmiş çıxışa **uyğun** olmalıdır. Əksər hallarda ([#316][10]-da müzakirəyə baxın) boşluqlar aşağıdakılardır:\n\n- Yeni sözlər arasında tək boşluq.\n- Yeni cümlələr arasında iki boşluq.\n- Yeni girintilər üçün üç boşluq.\n\nSkan edilmiş çaplardakı bütün səhifələr bu ümumiləşdirmələrə uyğun gəlmir. Çıxışda iki boşluq əvəzinə boşluq varsa, bir boşluqdan istifadə edin.\n\n### Sətir sonları\n\n- İlk sütunu \"R0000\"  *ilə* bitən sətir sonları çıxışa tam uyğun gəlməlidir.\n- Birinci sütunda `R0000` *__olmadan__* ilə bitən sətir sonunda yalnız 1 və ya 2 boş sətir olmalıdır.\n  - Əgər 2-dən çox sətir sonu varsa artıq olanları silin.\n    - Birinci sütunu `R0000` *ilə* bitən sətirlər bu qanun daxilində deyillər.\n  - Mənbə şəkillərində onlar 8-ci sətirdə basdırılmamış rəqəmlə yaradılmışdır. 2 iki boşluğu (bir boş sətir), 3 isə üç boşluğu (iki boş sətir) təmsil edir. 4 və 8 müəyyən edilmişdir, lakin heç vaxt istifadə edilməmişdir. Bu barədə daha çox oxumaq üçün: [#159][7]\n\nMəsələn bu:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nBuna çevrilməlidir:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Not\n\nPR-dən əvvəl, zəhmət olmasa, dəyişikliklərinizin nəticələrə uyğun olduğundan əmin olun!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.ca.md",
    "content": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nEl codi font en aquest repositori es va digitalitzar manualment a partir d'impressions en paper, d'aquesta manera els errors tipogràfics i altres discrepàncies s'han introduït accidentalment. El codi es modificarà perquè sigui coherent amb les impressions escanejades:\n\n- [AGC impressions per a Comanche][8]\n- [AGC impressions per a Luminary][9]\n\nEl següent lloc web es pot utilitzar per navegar fàcilment per les impressions escanejades tant per a Comanche com per a Luminary: https://28gpc.csb.app/\n\n## Extensions Útils\n\nGitHub té suport de sintaxi pel llenguatge assemblador AGC incorporat. Malauradament, el seu editor de codi no ho farà, no obstant això, hi ha extensions de llenguatge AGC que proporcionen ressaltat de sintaxi pels següents editors:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Admet formateig automàtic\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formateig\n\n**Nota:** GitHub i les extensions marcades anteriorment asseguren que s'està utilitzant el format correcte automàticament.\n\n- Utilitzar la tabulació per la indentació\n- Utilitza una tabulació de 8\n- Retalla espais en blanc al final\n\n## ¿Que verifico?\n\nQualsevol discrepància entre els escanejos i el codi font d'aquest repositori, incloent-hi:\n\n### Comentaris\n\nEls comentaris en el codi transcrit **han de coincidir exactament** amb els escanejos\n\nAixò podria implicar crear un error tipogràfic deliberat o eliminat/ agregar un comentari complet.\n\nEls problemes més habituals que heu de tindre en compte durant la prova inclouen, entre d'altres:\n\n### Salts de línia\n\n- Salt de línia *with* `R0000` en la columna 1 ha de coincidir exactament amb els escanejos.\n- Salt de línia *with**__out__* `R0000` en la columna 1 hauria de contenir sols 1 o 2 línies en blanc en una fila.\n  - Si hi ha més de 2 salts de línia en blanc, elimina els salts de línia addicionals.\n    - Línies amb `R0000` en la columna 1 no conten per això.\n  - En les imatges d'origen, aquestes van ser creades per un dígit sense imprimir en la columna 8. A 2 va forçar un doble espai (línia amb blanc simple) i un 3 va forçar un espai triple (línia en blanc doble). Els valors 4-8 es van diferenciar però mai es van utilitzar. Llegeix més sobre  això a [#159][7]\n\nPer exemple el següent:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nS'ha de convertir en:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n### Espais\n\n- Els espais entre dos caràcters en la cadena han de respectar la següent convenció (observa la discussió a [#316][10]):\n  - Espai únic per noves paraules.\n  - Doble espai per noves oracions.\n  - Triple espai per esquerdes.\n\nPer exemple el següent:\n\n```plain\n\t1)  FOO BAR BAZ QUX QUUX QUUZ. CORGE, GRAULT,\n\tGARPLY, WALDO.\n```\n\nS'ha de convertir en:\n\n```plain\n\t1) FOO BAR BAZ QUX QUUX QUUZ.  CORGE, GRAULT,\n\t   GARPLY, WALDO.\n```\n\n## Nota\n\nAbans de fer una RP, ¡assegurat que els seus canvis siguin consistents amb els escenaris!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.cz.md",
    "content": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nZdrojové kódy v tomto repozitáři byly manuálně digitalizovány z papírových zdrojových materiálů, mohou se v nich tedy vyskytovat chyby a překlepy. Kód by měl být modifikován tak, aby byl konzistentní se zdrojovým skenem:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nPro snadnou navigaci mezi naskenovanými výtisky pro Comanche i Luminary lze použít následující web: https://28gpc.csb.app/\n\n## Užitečná rozšíření\n\nGitHub podporuje syntaxi AGC assembly jazyka. Váš editor pravděpodobně podporu mít nebude, proto zde poskytujeme seznam rozšíření na zvýraznění syntaxe jazyka AGC pro následující editory:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Podporuje automatické formátování\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formátování\n\n**Poznámka:** GitHub a výše uvedená rozšíření zajistí automatické použití správného formátování.\n\n- Odsazení s použitím tabů\n- Šířka tabu je 8\n- Nezanechávat bílé znaky (whitespace) na konci řádků\n\n## Co mám kontrolovat?\n\nJakékoliv rozdíly mezi skeny a zdrojovým kódem v tomto repozitáři, včetně:\n\n### Komentářů\n\n- Komentáře v přepsaném kódu by měly přesně odpovídat skenům\n  - Toto může zahrnovat doslovné kopírování překlepů či přidávání/odebírání celých komentářů\n\n### Zalomení řádků\n\n- Zalomení řádků *obsahujících* `R0000` ve sloupci 1 by měly přesně odpovídat skenům.\n- Zalomení řádků *__bez__* `R0000` ve sloupci 1 by měly obsahovat jen 1 až 2 prázdné řádky v řadě\n  - Pokud obsahují více než dva prázdné řádky, přebytečné odstraňte.\n    - Řádky obsahující `R0000` v prvním sloupci se do tohoto nepočítají.\n  - Vznikly díky nevytištěnému číslu ve sloupci 8 zdrojových dokumentů. Číslo 2 způsobilo vypsání dvojité mezery (jeden prázdný řádek) a číslo 3 trojité mezery (dva prázdné řádky). Hodnoty 4-8 byly definovány, ale nebyly použity. Více v [#159][7]\n\nNapříkald následující kód:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nBy měl být změněn na:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n### Mezery\n\n- Mezery mezi dvěma znaky v řetězci by měly respektovat tyto konvence (viz diskuze v [#316][10]):\n  - Jedna mezera pro nová slova.\n  - Dvě mezery pro nové věty.\n  - Tři mezery pro odsazení.\n\nNapříklad následující kód:\n\n```plain\n\t1)  FOO BAR BAZ QUX QUUX QUUZ. CORGE, GRAULT,\n\tGARPLY, WALDO.\n```\n\nBy měl být změněn na:\n\n```plain\n\t1) FOO BAR BAZ QUX QUUX QUUZ.  CORGE, GRAULT,\n\t   GARPLY, WALDO.\n```\n\n## Poznámka\n\nNež otevřete PR, ujistěte se že vaše změny jsou konzistentní se skeny!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.da.md",
    "content": "# 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][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nKildekoden i dette «repository» er digitaliseret manuelt fra papirudskrifter, så skrivefejl og andre afvigelser kan være blevet introduceret. Koden skal modificeres så det er konsistent med følgende indskannede udskrifter:\n\n- [AGC udskrift for Comanche][8]\n- [AGC udskrift for Luminary][9]\n\nFølgende hjemmeside kan bruges til nemt at navigere rundt i de scannede udskrifter for både Comanche og Luminary: https://28gpc.csb.app/\n\n## Brugbare udvidelser\n\nGitHub har indbygget syntaks understøttelse for AGC assembler sprog. De fleste kodeeditorer har ikke, men der findes AGC sprog udvidelser som giver syntaks fremhævelse for følgende editorer:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Supportere automatisk formattering\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formattering\n\n**Note:** GitHub og udvidelser markeret ovenfor vil sikre at du bruger den rigtige formattering automatisk.\n\n- Brug tab indrykning\n- Brug tab bredde svarende til 8 mellemrum\n- Fjern mellemrum, tab og andre tegn der ikke er synlig fra slutningen af linien\n\n## Hvad skal jeg kontrollere?\n\nAlle forskelle mellem det indskannede og kildekoden i «repositoriet».\n\n### Kommentarer\n\nKommentarer i den transskiberede kildekode **skal** matche det indskannede **fuldstændigt**.\n\nOfte forekomne forskelle som du skal kigge efter indeholder, men er ikke begrænset til:\n\n#### Typografiske fejl\n\nNogle steder har de oprindelige udviklere lavet typegrafiske fejl da de skrev kommentarer. Nogle af disse blev fejlagtigt rettet under den oprindelige digitalisering, men selve digitaliseringen har også introduceret typografiske fejl, som ikke var til stede i indskanningerne.\n\nFor eksempel, hvis de digitaliserede kommentarer indeholdt `SPACECRAFT`, men der stod `SPAECRAFT` i det indskannede, så **SKAL** det rettes til `SPAECRAFT` (mangler `C`).\n\nPå samme måde, hvis et ord har en stavefejl i digitaliseringen, men er stavet korrekt i det indskannede, så **SKAL** stavefejlen rettes.\n\n#### Mellemrum\n\nMellemrum mellem to tegn i kommentarer **BØR** matche det indskannede. I de fleste tilfælde (se diskussionen i [#316][10]) gælder følgende:\n\n- Enkel mellemrum ved nyt ord.\n- Dobbel mellemrum for en ny sætning.\n- Trippel mellemrum for indrykning.\n\nIkke alle sider in det indskannede følger denne generalisering. Hvis det indskannede kun bruger et enkelt mellemrum i stedet for dobbel mellemrum, brug et enkelt mellemrum.\n\n### Linie skift\n\n- Linie skift *med* `R0000` i kolonne 1 bør matche det indskannede præcist.\n- Linie skift *uden* `R0000` i kolonne 1 bør kun indeholde 1 eller 2 blanke linier i træk.\n  - Hvis der er mere end 2 blank linie skift, fjern de ekstra linie skift.\n    - Linier med `R0000` i kolonne 1 skal ikke tælles med.\n  - I originalen, dette blev skabt af en tegn i kolonne 8, som ikke blev skrevet ud. Stod der et 2-tal blev det til et dobbel mellemrum (enkel blank linie) og et 3-tal blive til trippel mellemrum (dobbel blank linie). Værdierne 4-8 var defineret, men blev aldrig brugt. Læs mere om det i [#159][7]\n\nFor eksempel skal følgende koden:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nSe således ud:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Note\n\nFør du laver en PR, sørg venligst for at dine ændringer er konsistente med det indskannede!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.de.md",
    "content": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nDer Quellcode in diesem Repository wurde manuell digitalisiert, also sind jegliche Tippfehler und Diskrepanzen unabsichtlich eingeführt worden. Der Code soll so angepasst werden, dass er mit den folgenden eingescannten Ausdrucken übereinstimmt:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nAuf der folgenden Website können Sie problemlos in den gescannten Ausdrucken für Comanche und Luminary navigieren: https://28gpc.csb.app/\n\n## Nützliche Erweiterungen\n\nGitHub verfügt über eine integrierte Syntax-Unterstützung für die AGC Assembly Sprache. Das gilt leider nicht für deinen Code Editor. Für die folgenden Editoren gibt es aber AGC-Spracherweiterungen, die Syntaxhervorhebung hinzufügen:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Unterstützt automatische Formatierung\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formatierung\n\n**Anmerkung:** GitHub und die oben erwähnten Erweiterungen werden automatisch sicherstellen, dass du die korrekte Formatierung einhältst.\n\n- Verwende Tab-Einrückung\n- Verwende Tab-Breite von 8\n- Entferne Leerzeichen am Ende einer Zeile\n\n## Was soll ich überprüfen?\n\nAlle Diskrepanzen zwischen den Scans und dem Quelltext in diesem Repository.\n\n### Kommentare\n\nKommentare in dem transkribierten Quellcode **MÜSSEN** denen in den Scans **genau** entsprechen.\n\nHäufige Fehler, auf die du dich unter anderem beim Korrekturlesen achten solltest sind folgende (nicht abschließend):\n\n#### Typographische Fehler\n\nAn einigen Stellen haben die ursprünglichen Entwickler typographische Fehler beim Schreiben von Kommentaren gemacht. Manche von diesen wurden fälschlicherweise bei der ursprünglichen Digitalisierung korrigiert, die Digitalisierung hat jedoch auch typografische Fehler eingeführt die nicht in den Scans vorhanden sind.\n\nWenn die digitalisierten Kommentare zum Beispiel `SPACECRAFT` enthielten aber `SPAECRAFT` in den Scans stand, dann **MUSS** die Digitalisierung zu `SPAECRAFT` korrigiert werden (fehlendes `C`).\n\nGleichermaßen gilt, dass wenn ein Wort einen Tippfehler in der Digitalisierung aufweist aber in den Scans korrekt geschrieben wurde der Tippfehler korrigiert werden **MUSS**.\n\n#### Leerzeichen\n\nLeerzeichen zwischen zwei Zeichen in Kommentaren **SOLLTEN** den Scans angeglichen werden. In den meisten Fällen (siehe die Diskussion in [#316][10]) sind es:\n\n- Einzelne Leerzeichen für neue Wörter.\n- Doppelte Leerzeichen für neue Sätze.\n- Dreifache Leerzeichen für Einrückungen.\n\nNicht alle Seiten in den Scans befolgen diese Verallgemeinerung, wenn es in den Scans nur ein einzelnes Leerzeichen gibt statt einem doppelten Leerzeichen, verwende ein einzelnes Leerzeichen.\n\n### Zeilenumbrüche\n\n- Zeilenumbrüche *mit* `R0000` in Spalte 1 sollten genau mit den Scans übereinstimmen\n- Zeilenumbrüche *__ohne__* `R0000` in Spalte 1 sollten nur 1 bis 2 Leerzeilen hintereinander haben\n  - Wenn es mehr als 2 Leerzeilen gibt, entferne die zusätzlichen Zeilenumbrüche.\n    - Zeilen mit `R0000` in Spalte 1 werden dabei nicht dazugezählt.\n  - In den Originalbildern wurden diese durch eine nicht gedruckte Ziffer in Spalte 8 verursacht. Eine 2 an dieser Stelle erzwang ein doppeltes Leerzeichen (einzelne Leerzeile) und eine 3 erzwang ein dreifaches Leerzeichen (doppelte Leerzeile). Die Werte zwischen 4 und 8 waren definiert, wurden aber nie verwendet. Mehr dazu in [#159][7]\n\nZum Beispiel, das folgende:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nSollte werden zu:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Anmerkung\n\nBevor du einen PR erstellst, stelle bitte sicher, dass deine Änderungen mit den Scans übereinstimmen!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.es.md",
    "content": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nEl código fuente en este repositorio se digitalizó manualmente a partir de impresiones en papel, por lo que los errores tipográficos y otras discrepancias se han introducido accidentalmente. El código se modificará para que sea coherente con las impresiones escaneadas:\n\n- [AGC impresiones para Comanche][8]\n- [AGC impresiones para Luminary][9]\n\nSe puede utilizar el siguiente sitio web para navegar fácilmente por las impresiones escaneadas de Comanche y Luminary: https://28gpc.csb.app/\n\n## Extensiones Útiles\n\nGitHub tiene soporte de sintaxis para el lenguaje ensamblador AGC incorporado. Lamentablemente, su editor de código no lo hará, sin embargo, hay extensiones de lenguaje AGC que proporcionan resaltado de sintaxis para los siguientes editores:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Admite formateo automático\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formateo\n\n**Nota:** GitHub y las extensiones marcadas anteriormente asegurarán que esté utilizando el formato correcto automáticamente.\n\n- Use tabulación tipo sangría\n- Use un ancho de pestaña de 8\n- Recortar espacios en blanco al final\n\n## ¿Qué verifico?\n\nCualquier discrepancia entre los escaneos y el código fuente en este repositorio, incluyendo:\n\n### Comentarios\n\n- Los comentarios en el código transcrito deben coincidir exactamente con los escaneos\n  - Esto podría implicar crear un error tipográfico deliberado o eliminar / agregar un comentario completo.\n\n### Saltos de línea\n\n- Salto de línea *with* `R0000` en la columna 1 debe coincidir exactamente con los escaneos.\n- Salto de línea *with**__out__* `R0000` en la columna 1 debe contener solo 1 ó 2 líneas en blanco en una fila.\n  - Si hay más de 2 saltos de línea en blanco, elimine los saltos de línea adicionales.\n    - Líneas con `R0000` en la columna 1 no cuentan para esto.\n  - En las imágenes de origen, éstas fueron creadas por un dígito sin imprimir en la columna 8. A 2 forzó un doble espacio (línea en blanco simple) y un 3 forzó un espacio triple (línea en blanco doble). Los valores 4-8 se definieron pero nunca se usaron. Lea más sobre esto en [#159][7]\n\nPor ejemplo lo siguiente:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nDebe convertirse:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n### Espacios\n\n- Los espacios entre dos caracteres en la cadena deben respetar la siguiente convención (vea la discusión en [#316][10]):\n  - Espacio único para nuevas palabras.\n  - Doble espacio para nuevas oraciones.\n  - Triple espacio para hendiduras.\n\nPor ejemplo lo siguiente:\n\n```plain\n\t1)  FOO BAR BAZ QUX QUUX QUUZ. CORGE, GRAULT,\n\tGARPLY, WALDO.\n```\n\nDebe convertirse:\n\n```plain\n\t1) FOO BAR BAZ QUX QUUX QUUZ.  CORGE, GRAULT,\n\t   GARPLY, WALDO.\n```\n\n## Nota\n\nAntes de hacer un RP, ¡asegúrese de que sus cambios sean consistentes con los escaneos!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.fr.md",
    "content": "# Contribuer\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nLe code source de ce dépôt a été numérisé manuellement à partir de papiers imprimés, les fautes de frappe et autres anomalies ont donc été introduites accidentellement. Le code doit être modifié pour être cohérent avec les impressions numérisées suivantes :\n\n- [Impressions AGC pour Comanche][8]\n- [Impressions AGC pour Luminary][9]\n\nLe site Web suivant peut être utilisé pour naviguer facilement dans les impressions numérisées de Comanche et Luminary : https://28gpc.csb.app/\n\n## Extensions utiles\n\nGitHub prend en charge nativement la syntaxe pour le langage assembleur AGC. Malheureusement, votre éditeur de texte ne l’aura pas. Mais il y a des extensions pour le langage AGC pour les éditeurs suivants :\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Prend en charge le formatage automatique\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Mise en page\n\n**Note :** GitHub et les extensions marquées ci-dessus vous assureront d'utiliser automatiquement le bon formatage.\n\n- Utiliser une tabulation (tab) pour l'indentation\n- Utiliser une largeur de 8 caractères pour la tabulation\n- Pas d'espace à la fin des lignes\n\n## Comment vérifier ?\n\nTout écart entre les scans et le code source dans ce référentiel.\n\n### Commentaires\n\n- Les commentaires dans le code transcrit **doivent** correspondre **exactement** aux scans.\n  - Les problèmes courants que vous devez rechercher lors de la vérification sont les suivants. Attention, la liste n'est pas exhaustive !\n\n#### Erreurs typographiques\n\nÀ certains endroits, les développeurs originaux ont fait des erreurs typographiques en écrivant des commentaires. Certaines d’entre elles ont été corrigées par erreur lors de la numérisation initiale, mais la numérisation a également introduit des erreurs typographiques qui n’étaient pas présentes dans les scans.\n\nPar exemple, si les commentaires numérisés contiennent `SPACECRAFT`, mais que `SPAECRAFT` a été imprimé dans les scans, la numérisation DOIT être corrigée en `SPAECRAFT` (C manquant).\n\nDe même, si un mot a une faute de frappe dans la numérisation mais est correctement orthographié dans les scans, alors la faute de frappe DOIT être corrigée.\n\n#### Espaces\n\nLes espaces entre deux caractères dans les commentaires **DEVRAIENT** correspondre aux scans. Dans la plupart des cas (voir la discussion dans [#316][10]), c'est:\n\n- Espace unique pour les nouveaux mots\n- Double espace pour les nouvelles phrases\n- Triple espace pour les indentations\n\nToutes les pages des scans ne suivent pas cette généralisation, si les scans n'ont qu'un seul espace au lieu d'un double espace, utiliser un seul espace.\n\n### Sauts de ligne\n\n- Les lignes *avec* `R0000` dans la colonne 1 doivent correspondre exactement aux scans.\n- Les sauts de ligne *sans* `R0000` dans la colonne 1 ne doivent contenir que 1 ou 2 lignes vides d'affilée.\n  - Si il y a plus de 2 lignes vides, supprimer les sauts de ligne supplémentaires.\n    - Ne pas prendre en compte les lignes avec `R0000` dans la colonne 1.\n  - Dans les images sources, celles-ci ont été créées à cause d'un caractère non imprimé dans la colonne 8. Un 2 a forcé un double espace (une seule ligne vide) et un 3 a forcé un triple espace (double ligne vide). Les valeurs 4-8 ont été définies mais n’ont jamais été utilisées. Pour en savoir plus [#159][7]\n\nPar exemple, ce qui suit :\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nDoit devenir :\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Note\n\nAvant de faire une PR, assurez-vous que vos modifications soient cohérentes avec les scans !\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.gl.md",
    "content": "# 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[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nO código fonte neste repositorio dixitalizouse manualmente a partir de impresións en papel, polo que os erros tipográficos e outras discrepancias foron introducidas accidentalmente. O código modificarase para que sexa coherente coas impresións escaneadas:\n\n- [AGC impresións para Comanche][8]\n- [AGC impresións para Luminary][9]\n\nO seguinte sitio web pódese usar para navegar facilmente polas impresións escaneadas tanto para Comanche como para Luminary: https://28gpc.csb.app/\n\n## Extensións Útiles\n\nGitHub ten soporte de sintaxis para o lenguaxe ensamblador AGC incorporado. Lamentablemente, o seu editor de código non o fará, non obstante, hai extensións de linguaxe AGC que proporcionan resaltado de sintaxis para os seguintes editores:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Admite formatado automático\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formatado\n\n**Nota:** GitHub e as extensións marcadas anteriormente aseguraranse de que estés utilizando o formato correcto automaticamente.\n\n- Empregar sangría de separación\n- Empregar un ancho de pestana de 8\n- Recortar espazos en branco ao final\n\n## Que comprobar?\n\nCalqueira discrepancia entre os escaneos e o código fonte neste repositorio, incluíndo:\n\n### Comentarios\n\n- Os comentarios no código transcrito deben coincidir exactamente cos escaneos\n  - Isto podería implicar crear un erro tipográfico deliberado ou eliminar / agregar un comentario completo.\n\n### Saltos de liña\n\n- Salto de liña *with* `R0000` na columna 1 debe coincidir exactamente cos escaneos.\n- Salto de liña *with**__out__* `R0000` na columna 1 debe conter só 1 ou 2 liñas en branco nunha fila.\n  - Se hai máis de 2 saltos de líña en branco, elimine os saltos de líña adicionales.\n    - Liñas con `R0000` na columna 1 non contan para isto.\n  - Nas imaxes de orixen, estas foron creadas por un díxito sen imprimir na columna 8. A 2 forzou un dobre espazo (liña en branco sinxela) e un 3 forzou un espazo triple (liña en branco doble). Os valores 4-8 definíronse pero nunca se empregaron. Lea máis sobre isto en [#159][7]\n\nPor exemplo o siguiente:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nDebe convertirse:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n### Espazos\n\n- Os espazos entre dous caracteres na cadea deben respetar a seguinte convención (vexa a discusión en [#316][10]):\n  - Espazo único para novas palabras.\n  - Dobre espazo para novas oracións.\n  - Triple espazo para fendas.\n\nPor exemplo o seguiente:\n\n```plain\n\t1)  FOO BAR BAZ QUX QUUX QUUZ. CORGE, GRAULT,\n\tGARPLY, WALDO.\n```\n\nDebe convertirse:\n\n```plain\n\t1) FOO BAR BAZ QUX QUUX QUUZ.  CORGE, GRAULT,\n\t   GARPLY, WALDO.\n```\n\n## Nota\n\nAntes de facer un RP, asegúrese de que os seus cambios sexan consistentes cos escaneos!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.gr.md",
    "content": "# Συνεισφορά\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nΟ πηγαίος κώδικας σε αυτό το αποθετήριο ψηφιοποιήθηκε χειροκίνητα (με μη αυτόματο τρόπο) από εκτυπώσεις σε χαρτί, έτσι τυχαία λάθη και άλλες αποκλίσεις μπορεί να έχουν εισαχθεί κατά λάθος. Ο κώδικας πρέπει να τροποποιείται ώστε πάντα να είναι συνεπής με τις παρακάτω σαρωμένες εκτυπώσεις:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nΟ παρακάτω ιστότοπος μπορεί να χρησιμοποιηθεί για εύκολη πλοήγηση στις σαρωμένες εκτυπώσεις τόσο για το Comanche όσο και για το Luminary: https://28gpc.csb.app/\n\n## Χρήσιμες Επεκτάσεις\n\nΤο GitHub διαθέτει υποστήριξη συντακτικού για τη γλώσσα assembly του AGC. Δυστυχώς, ο επεξεργαστής κώδικά σας μπορεί να μην την υποστηρίζει, ωστόσο, υπάρχουν επεκτάσεις για τη γλώσσα assembly AGC που παρέχουν επισήμανση σύνταξης για τους ακόλουθους επεξεργαστές κώδικα:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Υποστηρίζει αυτόματη μορφοποίηση\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Mορφοποίηση\n\nΣημείωση: Το GitHub και οι επεκτάσεις που σημειώνονται παραπάνω θα διασφαλίσουν ότι χρησιμοποιείτε τη σωστή μορφοποίηση αυτόματα.\n\n- Χρήση εσοχής με tab\n- 8 χαρακτήες κενού για εσοχή tab\n- Περικοπή τελικών κενών χαρακτήρων γραμμής\n\n## Τι να ελέγξω;\n\nΤυχόν αποκλίσεις μεταξύ των σαρώσεων και του πηγαίου κώδικα σε αυτό το αποθετήριο.\n\n### Σχόλια\n\nΤα σχόλια στον μεταγραμμένο κώδικα **ΠΡΕΠΕΙ** να ταιριάζουν **ακριβώς** με τις σαρώσεις.\n\nΣυχνά προβλήματα που θα μπορούσατε να ψάξετε κατά τη διόρθωση περιλαμβάνουν αλλά δεν περιορίζονται σε:\n\n#### Τυπογραφικά λάθη\n\nΣε μερικά σημεία, οι αρχικοί προγραμματιστές έκαναν τυπογραφικά λάθη κατά τη σύνταξη σχολίων. Μερικά από αυτά διορθώθηκαν κατά λάθος κατά την αρχική ψηφιοποίηση, ωστόσο η ψηφιοποίηση έχει επίσης εισαγάγει τυπογραφικά λάθη που δεν υπήρχαν στις σαρώσεις.\n\nΓια παράδειγμα, εάν τα ψηφιοποιημένα σχόλια περιείχαν `SPACECRAFT`, αλλά `SPAECRAFT` ήταν γραμμένο στις σαρώσεις, τότε η ψηφιοποίηση **ΠΡΕΠΕΙ** να διορθωθεί σε `SPAECRAFT` (λείπει το `C`).\n\nΑντίστοιχα, αν μια λέξη έχει κάποιο τυπογραφικό λάθος στην ψηφιοποίηση αλλά είναι γραμμένη σωστά στις σαρώσεις τότε αυτό το τυπογραφικό λάθος **ΠΡΕΠΕΙ** να διορθωθεί.\n\n#### Κενά\n\nΤα κενά μεταξύ χαρακτήρων στα σχόλια **ΘΑ ΕΠΡΕΠΕ** να ταιριάζουν με τις σαρώσεις. Τις περισσότερες φορές (δείτε τη συζήτηση στο [#316[10], αυτό σημαίνει:\n\n- Ένα κενό για νέες λέξεις.\n- Δύο κενά για νέες προτάσεις.\n- Τρία κενά για εσοχές.\n\nΑυτή η γενίκευση δεν ακολουθείτε από όλες τις σαρωμένες σελίδες, αν μια σάρωση έχει ένα κενό αντί για δύο, χρησιμοποιήστε ένα.\n\n### Αλλαγές γραμμής\n\n- Οι αλλαγές γραμμής με `R0000` στη στήλη 1 πρέπει να ταιριάζουν ακριβώς με τις σαρώσεις.\n- Οι αλλαγές γραμμής *χωρίς* `R0000` στη στήλη 1 πρέπει να περιέχουν μόνο 1 ή 2 κενές γραμμές στη σειρά.\n  - Εάν υπάρχουν περισσότερες από 2 αλλαγές γραμμών, αφαιρέστε τις επιπλέον αλλαγές γραμμής.\n    - Οι γραμμές με `R0000` στη στήλη 1 δεν υπολογίζονται σε αυτό.\n  - Στις εικόνες προέλευσης, αυτές δημιουργήθηκαν από ένα μη τυπωμένο ψηφίο στη στήλη 8. Ένα 2 ανάγκαζε ένα διπλό διάστημα (μονή κενή γραμμή) και ένα 3 ανάγκαζε ένα τριπλό διάστημα (διπλή κενή γραμμή). Οι τιμές 4-8 ορίστηκαν αλλά δεν χρησιμοποιήθηκαν ποτέ. Διαβάστε περισσότερα σχετικά, στο [#159][7]\n\nΓια παράδειγμα το παρακάτω:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nΠρέπει να γίνει:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Σημείωση\n\nΠριν κάνετε ένα PR, παρακαλώ βεβαιωθείτε ότι οι αλλαγές σας είναι σύμφωνες με τις σαρώσεις!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.hi_in.md",
    "content": "# योगदान\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nइस रिपॉजिटरी में स्रोत कोड को पेपर प्रिंटआउट से मैन्युअल रूप से डिजिटाइज़ किया गया था, इसलिए गलती से टाइपो और अन्य विसंगतियों को पेश किया गया है। निम्नलिखित स्कैन किए गए प्रिंटआउट के अनुरूप बनाने के लिए कोड को संशोधित किया जाएगा:\n\n- [Comanche के लिए AGC प्रिंटआउट][8]\n- [Luminary के लिए AGC प्रिंटआउट][9]\n\nनिम्नलिखित वेबसाइट का उपयोग कॉमंच और ल्यूमिनरी दोनों के स्कैन किए गए प्रिंटआउट को आसानी से नेविगेट करने के लिए किया जा सकता है: https://28gpc.csb.app/\n\n## उपयोगी एक्सटेंशन\n\nGitHub में अंतर्निहित AGC असेंबली भाषा के लिए सिंटैक्स समर्थन है। दुर्भाग्य से आपका कोड संपादक नहीं होगा, हालांकि एजीसी भाषा एक्सटेंशन हैं जो निम्नलिखित संपादकों के लिए सिंटैक्स हाइलाइटिंग प्रदान करते हैं::\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† स्वचालित स्वरूपण का समर्थन करता है\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## का प्रारूपण\n\n**टिप्पणी:** GitHub और ऊपर चिह्नित एक्सटेंशन सुनिश्चित करेंगे कि आप स्वचालित रूप से सही स्वरूपण का उपयोग कर रहे हैं।\n\n- टैब इंडेंटेशन का प्रयोग करें\n- 8 की टैब चौड़ाई का प्रयोग करें\n- पिछली सफेद जगह ट्रिम करें\n\n## मैं क्या जाँच करूँ?\n\nइस भंडार में स्कैन और स्रोत कोड के बीच कोई भी विसंगतियां।\n\n### टिप्पणियाँ\n\nप्रूफ़िंग करते समय आपको जिन सामान्य मुद्दों पर ध्यान देना चाहिए उनमें शामिल हैं, लेकिन इन्हीं तक सीमित नहीं:\n\n### टंकण त्रुटियाँ\n\nकुछ जगहों पर, मूल डेवलपर्स ने टिप्पणी लिखते समय टाइपोग्राफिक त्रुटियां कीं। इनमें से कुछ को प्रारंभिक डिजिटलीकरण के दौरान गलती से ठीक कर दिया गया था, हालांकि डिजिटलीकरण ने टाइपोग्राफिक त्रुटियों को भी पेश किया है जो स्कैन में मौजूद नहीं थे।\n\nउदाहरण के लिए, यदि डिजीटल टिप्पणियों में `SPACECRAFT` शामिल है, लेकिन `SPAECRAFT` स्कैन में मुद्रित किया गया था, तो डिजिटलीकरण को `SPAECRAFT` (लापता `C`) में सही किया जाना चाहिए।\n\nइसी तरह, यदि किसी शब्द में डिजिटाइजेशन में टाइपो है लेकिन स्कैन में सही वर्तनी है तो टाइपो को सही किया जाना चाहिए।\n\n### खाली स्थान\n\nटिप्पणियों में दो वर्णों के बीच रिक्त स्थान स्कैन से मेल खाना चाहिए। ज्यादातर मामलों में (चर्चा देखें [#316][10]):\n\n- नए शब्दों के लिए सिंगल स्पेस।\n- नए वाक्यों के लिए डबल स्पेस।\n- इंडेंटेशन के लिए ट्रिपल स्पेस।\n\nस्कैन के सभी पृष्ठ इस सामान्यीकरण का पालन नहीं करते हैं, यदि स्कैन में दोहरे स्थान के बजाय केवल एक ही स्थान है, तो एकल स्थान का उपयोग करें।\n\n### कतार टूट जाती है\n\n- कॉलम 1 में `R0000` के *साथ* लाइन ब्रेक स्कैन से बिल्कुल मेल खाना चाहिए।\n- कॉलम 1 में `R0000` के *बिना* लाइन ब्रेक में एक पंक्ति में केवल 1 या 2 खाली लाइनें होनी चाहिए।\n  - यदि 2 से अधिक रिक्त रेखाएँ विराम हैं, तो अतिरिक्त रेखा विरामों को हटा दें।\n    - कॉलम 1 में `R0000` वाली पंक्तियों की गणना इसमें नहीं की जाती है।\n  - स्रोत छवियों में, ये कॉलम 8 में एक अमुद्रित अंक द्वारा बनाए गए थे। ए 2 ने एक डबल स्पेस (एकल रिक्त रेखा) को मजबूर किया और एक 3 ने ट्रिपल स्पेस (डबल रिक्त रेखा) को मजबूर कर दिया। मान 4-8 परिभाषित किए गए थे लेकिन कभी उपयोग नहीं किए गए। [#159][7] में इसके बारे में और पढ़ें।\n\nउदाहरण के लिए निम्नलिखित:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nबन जाना चाहिए:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## टिप्पणी\n\nपीआर करने से पहले, कृपया सुनिश्चित करें कि आपके परिवर्तन स्कैन के अनुरूप हैं!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.id.md",
    "content": "# Menyumbang\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nKode asli dalam repositori ini didigitalkan secara manual dari kertas cetak, sehingga inkonsistensi dan ketidaksesuaian lainnya mungkin terjadi karena kesalahan. Kode perlu diubah agar sesuai dengan edisi yang diterbitkan:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nSitus web berikut dapat digunakan untuk menavigasi dengan mudah hasil cetakan pindaian untuk Comanche dan Luminary: https://28gpc.csb.app/\n\n## Ekstensi yang berguna\n\nGitHub memiliki dukungan sintaks untuk pengaturan bahasa AGC. Sayangnya kode editor anda tidak dapat melakukannya, namun ada ekstensi bahasa AGC yang menyediakan penyorotan sintaks untuk kode editor berikut:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Mendukung pemformatan otomatis\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Pemformatan\n\n**Note:** GitHub dan plugin yang tercantum di atas akan secara otomatis mengonfirmasi bahwa Anda menggunakan plugin yang benar.\n\n- Gunakan panjang tab\n- Gunakan panjang tab 8\n- Hapus karakter spasi ataupun tab di awal atau di akhir string\n\n## Apa yang saya periksa?\n\nSetiap perbedaan antara pemindaian dan kode sumber dalam repositori ini.\n\n### Komentar\n\nKomentar dalam kode yang ditranskripsikan **HARUS** cocok dengan pindaian **persis**.\n\nMasalah umum yang harus Anda perhatikan saat pemeriksaan termasuk, tetapi tidak terbatas pada:\n\n#### Kesalahan Tipografi\n\nDi beberapa tempat, pengembang asli membuat kesalahan ketik saat menulis komentar. Beberapa di antaranya salah dikoreksi selama digitalisasi awal, namun digitalisasi juga menimbulkan kesalahan tipografi yang tidak ada dalam pemindaian.\n\nMisalnya, jika komentar digital berisi `SPACECRAFT`, tetapi `spaecraft` dicetak dalam pemindaian, maka digitalisasi **HARUS** dikoreksi ke `spaecraft` (hilang `C`).\n\nDemikian juga, jika sebuah kata memiliki kesalahan ketik dalam digitalisasi tetapi dieja dengan benar dalam pemindaian, maka kesalahan ketik **HARUS** diperbaiki.\n\n#### Spasi\n\nSpasi antara dua karakter dalam komentar **HARUS** cocok dengan pindaian. Dalam kebanyakan kasus (lihat diskusi di [#316][10]), ini adalah:\n\n- Satu spasi untuk kata-kata baru.\n- Spasi ganda untuk kalimat baru.\n- Tiga ruang untuk lekukan.\n\nTidak semua halaman dalam pemindaian mengikuti generalisasi ini, jika pemindaian hanya memiliki satu spasi, bukan spasi ganda, gunakan satu spasi.\n\n### Jeda baris\n\n- Pemisahan baris *dengan* `R0000` di kolom 1 harus sama persis dengan pemindaian.\n- Pemisahan baris *dengan**__out__* `R0000` di kolom 1 hanya boleh berisi 1 atau 2 baris kosong dalam satu baris.\n  - Jika ada lebih dari 2 jeda baris kosong, hapus jeda baris tambahan.\n    - Baris dengan `R0000` di kolom 1 tidak diperhitungkan dalam hal ini.\n  - Dalam gambar sumber, ini dibuat oleh digit yang belum dicetak di kolom 8. A 2 di sana memaksa spasi ganda (satu baris kosong dan 3 memaksa spasi tiga (garis kosong ganda). Nilai 4-8 didefinisikan tetapi tidak pernah digunakan. Baca selengkapnya di [#159][7]\n\nMisalnya berikut ini:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nHarus menjadi:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Catatan\n\nSebelum Anda membuat PR, pastikan perubahan Anda konsisten dengan pemindaian!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.it.md",
    "content": "# Contribuire\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nIl codice sorgente in questa repository è stato digitalizzato manualmente da stampe su carta, quindi errori di battitura e altre differenze sono state aggiunte accidentalmente. Il codice dovrebbe essere modificato per essere consistente con le seguenti scansioni:\n\n- [AGC stampa per Comanche][8]\n- [AGC stampa per Luminary][9]\n\nIl seguente sito web può essere utilizzato per navigare facilmente tra le stampe scansionate per Comanche e Luminary: https://28gpc.csb.app/\n\n## Estensioni utili\n\nGitHub supporta la sintassi assembly AGC nativamente. Se sfortunatamente il tuo editor di codice non dovesse farlo, sono presenti delle estensioni che aggiungono la sottolineatura della sintassi per i seguenti editor:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Supporta la formattazione automatica\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formattazione\n\n**Nota:** GitHub e le estensioni riportate di sopra assicureranno che tu stia usando automaticamente la formattazione corretta.\n\n- Indenta con le tabulazioni\n- Usa una tabulazione di larghezza 8\n- Elimina spazi a fine riga\n\n## Che cosa devo controllare?\n\nQualsiasi differenza tra le scannerizzazioni e il codice sorgente in questa repository.\n\n### Commenti\n\nCommenti nel codice trascritto **DEVONO** coincidere **ESATTAMENTE** con quelli delle scannerizzazioni.\n\nErrori comuni a cui dovresti stare attento mentre verifichi includono, ma non sono limitati a:\n\n#### Errori tipografici\n\nQualche volta, gli sviluppatori originali hanno fatto degli errori tipografici mentre scrivevano i commenti. Alcuni sono stati erroneamente corretti durante la digitalizzazione iniziale e anche la digitalizzazione stessa ha introdotto altri errori tipografici che non erano presenti nelle scannerizzazioni originali.\n\nPer esempio, se i commenti digitalizzati contengono `SPACEFRAFT`, ma `SPAECRAFT` è stato stampato sulle scannerizzazioni, allora le digitalizzaioni **DEVONO** essere corrette in `SPAECRAFT` (senza `C`).\n\nAnalogamente, se una parola ha un errore di battitura ma è scritta correttamente nelle scannerizzazioni allora l'errore **DEVE** essere corretto.\n\n#### Spazi\n\nSpazi tra due caratteri nei commenti **DOVREBBERO** corrispondere alle scannerizzazioni. Nella maggior parte dei casi (Si guardi la discussione in [#316][10]), questo comprende:\n\n- Spazio singolo tra parole.\n- Doppio spazio tra frasi.\n- Triplo spazio per l'indentazione.\n\nNon tutte le pagine nelle scannerizzazioni seguono queste linee guida, se le scannerizzazioni hanno un solo uno spazio, usane uno solo.\n\n### Ritorni a capo\n\n- I ritorni a capo *con* `R0000` nella colonna 1 dovrebbero corrispondere alle scannerizzaioni esattamente.\n- I ritorni a capo *senza* `R0000` nella colonna 1 dovrebbero contenere solo 1 o 2 linee vuote di seguito.\n  - Se ci sono più di 2 ritorni a capo, elimina quelli in eccesso.\n    - Righe con `R0000` nella colonna 1 non seguono questa regola.\n  - Nelle immagini originali, queste sono state create da un numero non stampato nella colonna 8. Un 2 ha forzato un doppio spazio (una singola riga vuota), invece un 3 ha forzato uno spazio triplo (due righe vuote). Valori da 4 a 8 sono\n  stati definiti ma non sono mai stati usati. Puoi leggere di più qui [#159][7]\n\nPer esempio, il seguente:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nDovrebbe diventare:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Note\n\nPrima di fare una PR(Pull Request), per piacere controlla che i tuoi cambiamenti siano consistenti con le scannerizzazioni!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.ja.md",
    "content": "# コントリビュート\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nこのリポジトリのソースコードは紙の印刷物から手動でデジタル化された為、いくつかのタイプミスやその他の不一致が誤って導入されています。以下のスキャンしたプリントアウトと一致する様にコードを変更する必要があります:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\n次の Web サイトを使用すると、Comanche と Luminary の両方のスキャンされたプリントアウトを簡単にナビゲートできます: https://28gpc.csb.app/\n\n## 便利な拡張機能\n\nGitHubには、組み込みのAGCアセンブリ言語の構文サポートがあります。残念ながらコードエディターにはありませんが、次のエディターにシンタックスハイライトをサポートするAGC言語拡張機能があります:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† オートフォーマットをサポート\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## フォーマット\n\n**注意:** GitHubと上記の拡張機能により、正しいフォーマットが自動的に使用されます。\n\n- タブでインデントする\n- タブ幅は8を使用する\n- 末尾の空白を削除する\n\n## 確認方法は?\n\nスキャンとこのリポジトリ内のソースコードとの間の不一致がある場合。\n\n### コメント\n\n文字起こしされたコードのコメントはスキャンと**正確**に一致**しなければなりません**。\n\n校正中に注意する必要がある一般的な問題には、次のものがありますが、これらに限定されません:\n\n#### 誤植\n\nいくつかの場所において、元の開発者がコメントを書いている中で誤植をしています。これらのいくつかは、最初のデジタル化の際に修正がされていますが、デジタル化によってスキャンに存在しなかった誤植も発生してしまいました。\n\n例えば、デジタル化されたコメントに `SPACECRAFT` が含まれているが、 `SPAECRAFT` が印刷されたスキャンの場合、デジタル化は `SPAECRAFT` に修正**しなければなりません**(`C` が抜けている)。\n\n同様に、単語のデジタル化にタイプミスがあるが、スキャンでスペルが正しい場合は、タイプミスを修正**しなければなりません**。\n\n### スペース\n\n- コメント内の2つの文字間のスペースは、スキャンと一致**すべきです**。多くの場合（[#316][10]のディスカッションを参照）、次の規則に従う必要があります:\n  - 新しい単語の為の単一のスペース。\n  - 新しい文章の為の2個のスペース。\n  - インデントの為の3個のスペース。\n\nスキャンのすべてのページがこの一般化に従っている訳ではありません。スキャンに2個のスペースではなく1個のスペースしかない場合、1個のスペースを使用して下さい。\n\n### 改行\n\n- 列1の `R0000` での改行は、スキャンと正確に一致する必要があります。\n- 列1の `R0000` で *ない* 改行は、1行または2行の空白行のみを含める必要があります。\n  - 空白の改行が2つ以上ある場合は、余分な改行を削除します。\n    - 列1に `R0000` が含まれる行は、これにカウントされません。\n  - ソース画像では、これらは列8の印刷されていない数字によって作成されました。2はダブルスペース（単一の空白行）を強制し、3はトリプルスペース（二重の空白行）を強制しました。値4-8は定義されていますが使用されていません。詳しくは[#159][7]をご覧ください。\n\n例えば、次の通りです:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nこれになるはずです:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## 注意\n\nPRを作成する前に、変更がスキャンと一致していることを確認して下さい！\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.jv.md",
    "content": "# Nyumbang\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Basa Jawa][JV],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN],\n\n[AR]:Translations/CONTRIBUTING.ar.md\n[AZ]:Translations/CONTRIBUTING.az.md\n[CA]:Translations/CONTRIBUTING.ca.md\n[CZ]:Translations/CONTRIBUTING.cz.md\n[DA]:Translations/CONTRIBUTING.da.md\n[DE]:Translations/CONTRIBUTING.de.md\n[EN]:CONTRIBUTING.md\n[ES]:Translations/CONTRIBUTING.es.md\n[FR]:Translations/CONTRIBUTING.fr.md\n[GL]:Translations/CONTRIBUTING.gl.md\n[GR]:Translations/CONTRIBUTING.gr.md\n[HI_IN]:Translations/CONTRIBUTING.hi_in.md\n[ID]:Translations/CONTRIBUTING.id.md\n[IT]:Translations/CONTRIBUTING.it.md\n[JA]:Translations/CONTRIBUTING.ja.md\n[JV]:Translations/CONTRIBUTING.jv.md\n[KO_KR]:Translations/CONTRIBUTING.ko_kr.md\n[KU]:Translations/CONTRIBUTING.ku.md\n[LT]:Translations/CONTRIBUTING.lt.md\n[MN]:Translations/CONTRIBUTING.mn.md\n[NL]:Translations/CONTRIBUTING.nl.md\n[NO]:Translations/CONTRIBUTING.no.md\n[PL]:Translations/CONTRIBUTING.pl.md\n[PT_BR]:Translations/CONTRIBUTING.pt_br.md\n[SV]:Translations/CONTRIBUTING.sv.md\n[TR]:Translations/CONTRIBUTING.tr.md\n[UK]:Translations/CONTRIBUTING.uk.md\n[VI]:Translations/CONTRIBUTING.vi.md\n[ZH_CN]:Translations/CONTRIBUTING.zh_cn.md\n[ZH_TW]:Translations/CONTRIBUTING.zh_tw.md\n\nKode sumber ing repositori iki wis didigitalisasi kanthi manual saka printout kertas, mula kadhang kala ana salah tulis utawa beda cilik sing ora disengaja. Kode kudu didandani supaya konsisten karo printout scan asli iki:\n\n- [AGC printouts kanggo Comanche][8]\n- [AGC printouts kanggo Luminary][9]\n\nSitus iki bisa digunakake kanggo nggampangaké navigasi ing antarane printout sing wis discan kanggo Comanche lan Luminary: https://28gpc.csb.app/\n\n## Ekstensi sing Migunani\n\nGitHub wis nduwé dhukungan sintaks kanggo basa assembly AGC bawaan. Nanging umume editor kode ora nduwé. Untungé, ana ekstensi AGC sing nyedhiyakake **syntax highlighting** kanggo sawetara editor, kayata:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Dhukungan format otomatis\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Format\n\n**Cathetan:** GitHub lan ekstensi sing wis ditandai † ing dhuwur bakal mesthekake formatmu wis bener.\n\n- Gunakake tab kanggo indentasi\n- Jembar tab = 8\n- Mbuwang spasi kosong ing mburi baris\n\n## Opo sing kudu dicek?\n\nKabeh bedane antarane scan lan kode sumber ing repositori iki.\n\n### Komentar\n\nKomentar ing kode sing wis didigitalisasi **KUDU** padha persis kaya ing scan.\n\nMasalah umum sing kudu diwaspadai nalika mriksa, kalebu nanging ora winates ing:\n\n#### Salah Tulis (Typo)\n\nKadhang kala para pangembang asli nggawe salah tulis ing komentar. Sawetara salah tulis iki salahé wis “dibeneraké” nalika digitalisasi awal, nanging proses digitalisasi uga ngenalaké salah tulis anyar sing ora ana ing scan.\n\nConto: yen komentar digitalisasi ana `SPACECRAFT`, nanging ing scan ditulis `SPAECRAFT`, mula kudu dibalekaké dadi `SPAECRAFT`.\n\n#### Spasi\n\nSpasi ing antarane karakter utawa tembung ing komentar **KUDU** padha karo scan. Ing umume kasus (ndeleng diskusi ing [#316][10]) aturané yaiku:\n\n- Siji spasi kanggo tembung anyar.\n- Loro spasi kanggo kalimat anyar.\n- Telu spasi kanggo indentasi.\n\nNanging ora kabeh kaca ing scan konsisten, yen mung ana siji spasi ing scan, ya kudu nganggo siji spasi.\n\n### Pamisah Baris\n\n- Pamisah baris **sing nganggo** `R0000` ing kolom 1 kudu padha karo scan.  \n- Pamisah baris **tanpa** `R0000` ing kolom 1 mung kena 1 utawa 2 baris kosong berturut-turut.  \n  - Yen luwih saka 2, kudu dibusak sing luwih.  \n  - Ing gambar sumber, iki asale saka digit sing ora dicithak ing kolom 8. Angka 2 nyebabake spasi ganda (1 baris kosong), angka 3 spasi telu (2 baris kosong). Angka 4-8 ana definisi nanging ora tau digunakake. Waca luwih lengkap ing [#159][7].\n\nConto:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nKudu dadi:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Cathetan\n\nSadurunge nggawe PR, priksa maneh supaya owahanmu konsisten karo hasil scan!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741"
  },
  {
    "path": "Translations/CONTRIBUTING.ko_kr.md",
    "content": "# 기여하기\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\n이 저장소의 소스 코드는 종이 인쇄물에서 수동으로 디지털화되었으므로 실수로 오타 및 기타 불일치가 발생했습니다. 코드는 다음 스캔된 인쇄물과 일관되도록 수정해야 합니다.\n\n- [Comanche용 AGC 인쇄물][8]\n- [Luminary용 AGC 인쇄물][9]\n\n다음 웹사이트를 사용하면 Comanche와 Luminary의 스캔된 인쇄물을 쉽게 탐색할 수 있습니다. https://28gpc.csb.app/\n\n## 유용한 확장기능들\n\nGitHub은 내장 에디터에서 AGC문법을 지원합니다. 그러나 불행하게도 대개 사용되는 에디터들은 그렇지 않습니다. 하지만 확장 기능이 지원되는 에디터들이 있습니다.\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† 자동 포매팅 지원\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## 포매팅\n\n**참고:** GitHub 내장 에디터와 위의 세 확장기능들은 이 문단에서 정의하는 포매팅을 자동으로 수행해 줍니다.\n\n- 탭 들여쓰기를 사용하십시오.\n- 들여쓰기 크기는 8입니다.\n- 뒤에 불필요하게 붙는 공백 문자는 제거하시기 바랍니다.\n\n## 확인해야 할 것들\n\n### 주석\n\n- 옮겨진 코드의 주석들은 스캔본과 일치해야 합니다.\n  - 의도적인 오타나 전체 주석을 삭제/추가하는 것과 관계가 있을 수 있습니다.\n\n### 개행\n\n- 1열에서 `R0000`로 개행되는 경우 스캔본과 일치해야 합니다.\n- 1열에서 `R0000`*__없이__*  개행되는 경우 1~2개의 빈 줄이 있어야 합니다.\n  - 만약 3개 이상의 개행이 있는 경우 초과분을 제거하십시오.\n    - 1열에 `R0000`를 포함하는 경우 빈 줄로 치지 않습니다.\n  - 소스 이미지는 8열의 인쇄되지 않은 숫자로 생성되었습니다.\n  두 부분에 두 개의 공백과(빈 줄 한 개), 세 부분에 3개의 공백이(빈 줄 두 개) 강제됩니다.\n  4-8의 값들은 정의되었지만 사용되지 않습니다. 자세한 내용은 [#159][7]를 참고하십시오.\n\n예를 들어 이 코드는:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\n이렇게 고쳐야 합니다:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n"
  },
  {
    "path": "Translations/CONTRIBUTING.ku.md",
    "content": "# Beşdarbûn\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nKoda xwerû di vê depoyê de ji kaxezek çapkirî bi awak destkî hat dîjîtîzkirin, ji ber vê yekê nakokî û cudahiyên din bi şaşî hatine danîn. Pêdivîye ku kod bêne guhertin da ku li gorî çapên şandî li hev bikin:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nMalpera jêrîn dikare were bikar anîn da ku meriv hem ji bo Comanche û hem jî ji bo Luminary li dora çapên şehkirî bi hêsanî rêve bibe: https://28gpc.csb.app/\n\n## Berfirehiyên bikêr\n\nGitHub ji bo sazkirina zimanê AGC-ê desteka syntax heye. Mixabin redaktorê kodê yê li gel wê bê ev destek be, lê di heman dem de berfirehiyên zimanê AGC yê ku ronahî li ser syntaxê dikin ji bo redaktorên jêrîn hene:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Piştgiriya formasyona otomatîk dikin\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formasyon\n\n**Nîşe:** GitHub û pêvekên ku li jor hatine nîşankirin wê tekez bikin ku hûn bi awak otomatîk pêvekirina rast bikar tînin.\n\n- Dirêjahiya tab bikar bînin\n- Dirêjahiya tab ya 8 bikar bînin\n- Zêdebûna spî jê bibe\n\n## Ez çi kontrol dikim?\n\nÇi ciyawaziya di navbera skana û koda xwerû di vê depoyê de, di nav de:\n\n### Şîrove\n\n- Şîrovên di koda ku hatî veguheztin divê tam weke skanan be.\n  - Ev dibe ku di nav de şaştiyek qesdî be yan jî jêbirin/zedekirina şîrovekî bi tevahî.\n\n### Şikandina xetê\n\n- Şikandinên xetan yê ku *li gel* `R0000` di lingê 1 de gereke bi tam weke skanan bin.\n- Şikandinên xetan yê ku *ne li get* `R0000` di lingê 1 gereke tenê 1 an 2 xetên vala li peyhev hebin.\n  - Eger zêdetir ji 2 şikandinê xetan hebin, şikandinê xetan yê zêde tecrîd bike.\n    - Xetên li gel `R0000` di lingê 1 de di nav van de nayê jimartin.\n  - Di wêneyên skanan de, ev şikandinên xetan hatine çêkirin di riya jimarek ne çapkirî di lingê 8an de. Jimara 2 li wer valahiyek dualî mecbûr kiriyê (yek xeta vala) û jimara 3 valahiyek sêalî mecbur kiriye (du xetên vala). Nirxên 4-8-ê hatin diyar kirin lê ti carî ne hatine bikaranîn. Zêdetir li ser wê bixwînin [#159][7]\n\nWek mînak jêrîn:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nGereke bibe:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n### Valahî\n\n- Valahiyên di navbera du tîpan de di rêzikê de divê peymana jêrîn rêz bikin (nîqaşê li [#316][10] binihêrin):\n  - Tenê valahiyek ji bo peyvên nû.\n  - Du valahî ji bo hevokên nû.\n  - Sê valahî ji bo çar-valahiyan.\n\nWek mînak jêrîn:\n\n```plain\n\t1)  FOO BAR BAZ QUX QUUX QUUZ. CORGE, GRAULT,\n\tGARPLY, WALDO.\n```\n\nGereke bibe:\n\n```plain\n\t1) FOO BAR BAZ QUX QUUX QUUZ.  CORGE, GRAULT,\n\t   GARPLY, WALDO.\n```\n\n## Nîşe\n\nBerî ku hûn PR-ê çêbikin, ji kerema xwe pê tekez bikin ku guhartinên we bi skanan re hevbeş in!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.lt.md",
    "content": "# Prisidėjimas\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nŠios saugyklos kodas buvo suskaitmenintas rankiniu būdu iš popierinių spausdinių, todėl galima tikėtis klaidų ir kiti neatitikimų. Kodas turi būti pakeistas taip, kad labiau atitiktų šiuos nuskaitytus spausdinius:\n\n- [AGC spausdiniai Comache][8]\n- [AGC spausdiniai Luminary][9]\n\nNorėdami lengvai naršyti po nuskaitytus Comanche ir Luminary spaudinius, galite naudoti šią svetainę: https://28gpc.csb.app/\n\n## Naudingi plėtiniai\n\nGitHub turi integruotą AGC assemblerio kalbos sintakės palaikymą. Dėja, jūsų kodo redaktorius šios assemblerio kalbos nepalaikys, tačiau yra AGC kalbos plėtinių, kurie suteikia sintakės paryškinimą šiems redaktoriams:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Palaiko automatinį formatavimą\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formatavimas\n\n**Pastaba:** GitHub ir plėtiniai nurodyti viršuje automatiškai užtikrins, kad naudotumėte teisingą formatavimą.\n\n- Naudokite skirtuko įtrauką\n- Naudokite skirtuko plotį 8\n- Ištrinkite galinius tarpus\n\n## Ką aš turiu patikrinti?\n\nBetkokius neatitikimus tarp skenuočių ir šaltinio kodo šioje saugykloje.\n\n### Komentarai\n\n- Komentarai perrašytame kode turi **tiksliai** atitikti skenuočių komentarus.\n\nDažnai pasikartojančios problemos, į kurias turėtumėte atkreipti dėmesį, jomis neapsiribojant:\n\n#### Tipografinės klaidos\n\nKai kuriose vietose, rašant komentarus, originalūs kūrėjai paliko tipografinių klaidų. Kai kurios iš jų buvo klaidingai ištaisytos per pradinį skaitmenizavimą, tačiau skaitmenizavimas taip pat pridėjo tipografinių klaidų, kurių nebuvo skenuotėse.\n\nPavyzdžiui, jeigu skaitmenizuotas komentaras turėjo žodį `SPACECRAFT`, bet `SPAECRAFT` buvo išspausdintas skenuotėse, tai ši skaitmenizacija **turi** būti pataisyta į `SPAECRAFT` (be `C`).\n\nTaip pat, jeigu žodis turi klaidą skaitmenizacijoje, bet yra parašytas teisingai skenuotėse, tai ta klaida **turi** būti pataisyta.\n\n### Tarpai\n\n- Tarpai tarp dviejų rašmenų komentaruose **turi** atitikti skenuotes. Dažnu atvėju (žiūrėti diskusiją [#316][10]), tai yra:\n  - Vienas tarpas naujiems žodžiams.\n  - Dvigubas tarpas naujiems sakiniams.\n  - Trigubas tarpas įtraukoms.\n\nNevisi puslapiai skenuotėse laikosi šių taisykių, jeigu skenuotės turi tik vieną tarpą vietoj dvigubo tarpo, reikia naudoti vieną tarpą.\n\n### Eilučių lūžiai\n\n- Linijų lūžiai su *pločiu* `R0000` pirmame stulpelyje turi tiksliai atitikti skenuotes.\n- Linijų lūžiai su *pločiu**__out__* `R0000` pirmame stulpelyje gali turėti tik vieną arba dvi tuščias eilutes iš eilės.\n  - Jeigu yra daugiau negu dvi tuščios linijos, reikia ištrinti papildomas eilutes.\n    - Linijos su `R0000` pirmame stulpelyje nesiskaičiuoja.\n  - Šaltinių nuotraukose, šios buvo sukurtos nespausdintu skaitmeniu aštuntame stulpelyje. A 2 - ten buvo dvigubas tarpas (viena tuščia eilutė) ir a 3 buvo trigubas tarpas (dviguba tuščia eilutė). Reikšmės nuo 4-8 buvo apibrėžtos, bet niekada nenaudotos. Daugiau apie tai [#159][7]\n\nPavyzdžiui, šis tekstas:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nTurėtų patapti:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Pastabos\n\nPrieš kuriant PR, prašome įsitikinti, kad jūsų pakeitimai atitinka skenuotes!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.mn.md",
    "content": "# Хувь нэмэр оруулж байна\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nЭнэ репозиторийн эх код нь цаасан хэвлэлээс гараар дижитал хэлбэрт шилжүүлсэн тул зарим нэг бичгийн алдаа болон бусад зөрчил санаандгүйгээр орсон байж магадгүй. Доорх сканнердсан хэвлэмэлтэй тааруулахын тулд кодыг өөрчлөх шаардлагатай:\n\n- [Comanche-ийн AGC хэвлэлүүд][8]\n- [Luminary-ийн AGC хэвлэлүүд][9]\n\nДараах вэбсайтыг Comanche болон Luminary-ийн аль алиных нь сканнердсан хэвлэмэл материалуудаар хялбархан гүйлгэх боломжтой: https://28gpc.csb.app/\n\n## Туслах өргөтгөлүүд\n\nGitHub-д AGC угсрах хэлний синтаксийн дэмжлэг байдаг. Харамсалтай нь код засварлагчид байхгүй боловч дараах засварлагчид AGC хэлний өргөтгөлийг синтаксийн тодруулгыг дэмждэг:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Автоформатлахыг дэмждэг\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Формат\n\n**Анхаар:** GitHub болон дээрх өргөтгөлүүдийн тусламжтайгаар зөв формат автоматаар ашиглагдана.\n\n- Таб ашиглан мөрийг хойшлуулна\n- Табын өргөн нь 8 байна\n- Мөрийн төгсгөлд байгаа хоосон зайг устгана\n\n## Хэрхэн шалгах вэ?\n\nСкан болон энэ репозиторид байгаа эх кодын хооронд зөрүү байгаа эсэхийг шалгана.\n\n### Тайлбар\n\nТекст болгон хувиргасан кодын тайлбарууд скантай **яг** таарч **байх ёстой**.\n\nХяналтын явцад анхаарах нийтлэг асуудлууд нь дараах байж болно, гэхдээ үүгээр хязгаарлагдахгүй:\n\n#### Алдаа\n\nЗарим газарт анхны хөгжүүлэгчид тайлбар бичихдээ алдаа гаргасан байдаг. Эдгээрийн зарим нь анхны дижиталчлалын үед засагдсан боловч дижиталчлалаас болж сканд байгаагүй алдаа гарсан тохиолдлууд ч бий.\n\nЖишээлбэл, дижиталчлагдсан тайлбарт `SPACECRAFT` гэсэн үг байгаа боловч сканд `SPAECRAFT` гэж хэвлэгдсэн бол дижиталчлал нь `SPAECRAFT` гэж засагдах **ёстой** (`C` үсэг дутуу байна).\n\nҮүнтэй адил, үгэнд дижиталчлалын алдаа байгаа боловч сканд зөв бичигдсэн бол алдааг засах **ёстой**.\n\n### Зай\n\n- Тайлбар доторх хоёр үсгийн хоорондох зай нь скантай **таарч байх ёстой**. Ихэнх тохиолдолд (дэлгэрэнгүйг [#316][10] хэлэлцүүлгээс үзнэ үү), дараах дүрмийг дагах хэрэгтэй:\n  - Шинэ үгэнд нэг зай.\n  - Шинэ өгүүлбэрт хоёр зай.\n  - Хойшлуулахад гурван зай.\n\nСканы бүх хуудсууд энэ ерөнхий дүрмийг дагадаггүй. Хэрэв сканд хоёр зай биш нэг зай байгаа бол нэг зайг ашиглана уу.\n\n### Мөр шилжүүлэлт\n\n- `R0000`-тэй мөр шилжүүлэлт нь скантай яг таарч байх ёстой.\n- `R0000`-тэй *биш* мөр шилжүүлэлт нь зөвхөн нэг эсвэл хоёр хоосон мөрийг агуулсан байх ёстой.\n  - Хоосон мөр хоёр буюу түүнээс олон байвал илүүдэл мөрийг устгана.\n    - `R0000`-тэй мөрүүд үүнд тооцогдохгүй.\n  - Эх зургуудад эдгээр нь 8-р баганад хэвлэгдээгүй тоогоор үүсгэгдсэн. 2 нь давхар зай (нэг хоосон мөр), 3 нь гурвалсан зай (хоёр хоосон мөр) үүсгэдэг. 4-8 утгууд тодорхойлогдсон боловч ашиглагдаагүй. Дэлгэрэнгүйг [#159][7] үзнэ үү.\n\nЖишээлбэл, дараах байдлаар:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nЭнэ болох ёстой:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Анхаар\n\nPR үүсгэхээс өмнө өөрчлөлтүүд скантай таарч байгаа эсэхийг шалгана уу!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.nl.md",
    "content": "# Bijdragen\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nDe broncode in deze repository is handmatig gedigitalizeerd van papieren stukken. Typfouten en andere discrepanties kunnen per ongeluk zijn toegevoegd. De code zal worden aangepast om gelijk te worden gemaakt aan de gescande papieren:\n\n- [AGC prints voor Comanche][8]\n- [AGC prints voor Luminary][9]\n\nDe volgende website is eenvoudig te doorzoeken met gescande afdrukken van zowel Comanche als Luminary: https://28gpc.csb.app/\n\n## Handige extensies\n\nGitHub heeft syntax ondersteuning voor de AGC assembly taal ingebouwd. Helaas heeft jouw editor dit niet, gelukkig zijn er AGC extensies die de volgende editors kunnen voorzien van syntax ondersteuning:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Ondersteunt automatische opmaak\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Opmaak\n\n**Let op:** GitHub en de extensies in de lijst hierboven zorgen ervoor dat je automatisch de correcte opmaak gebruikt.\n\n- Gebruik tab indentatie\n- Gebruik een tab width van 8\n- Haal trailing whitespace weg\n\n## Wat controleer ik?\n\nElk verschil tussen de scans en de broncode in deze repository inclusief:\n\n### Commentaren\n\n- Commentaren in de overgeschreven code moeten exact hetzelfde zijn als in de scans\n  - Soms betekent dit dat je expres een typfout moet overnemen of een commentaar volledig moet weghalen.\n\n### Regeleindes\n\n- Regeleinden *met* `R0000` in kolom 1 moeten exact overeen komen met de scans.\n- Regeleinden *zonder* `R0000` in kolom 1 moeten slechts 1 of 2 lege regels in een rij bevatten.\n  - Als er meer dan twee lege regels zijn, haal de extra witregels dan weg.\n    - Regels met `R0000` in kolom 1 tellen hierbij niet mee.\n  - In de bron scans zijn deze aangemaakt door een niet uitgeprint getal in kolom 8. Een 2 in deze kolom veroorzaakte een dubbele spatie (enkele witregel) en een 3 in deze kolom veroorzaakte een driedubbele spatie (dubbele witregel). De waarden 4-8 waren wel gedefinieerd maar nooit gebruikt. Lees hier meer over in [#159][7]\n\nBijvoorbeeld het volgende:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nZou dit moeten worden:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n### Spaties\n\n- Spaties tussen twee karakters in de string moeten de volgende conventie gebruiken (bekijk de discussie in [#316][10]):\n  - Enkele spatie voor een nieuw woord.\n  - Dubbele spatie voor een nieuwe zin.\n  - Driedubbele spatie voor inspringen.\n\nBijvoorbeeld het volgende:\n\n```plain\n\t1)  FOO BAR BAZ QUX QUUX QUUZ. CORGE, GRAULT,\n\tGARPLY, WALDO.\n```\n\nZou dit moeten worden:\n\n```plain\n\t1) FOO BAR BAZ QUX QUUX QUUZ.  CORGE, GRAULT,\n\t   GARPLY, WALDO.\n```\n\n## Let op\n\nVoordat je een PR maakt zorg er alsjeblieft voor dat je wijzigingen consistent zijn met de scans!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.no.md",
    "content": "# Bidra\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nKildekoden i dette depotet ble digitalisert manuelt fra papirutskrifter, skrivefeil og andre avvik kan ha blitt innført ved et uhell. Koden skal modifiseres til å være identisk med følgende digitaliserte papirutskrifter:\n\n- [AGC-utskrift for Comanche][8]\n- [AGC-utskrift for Luminary][9]\n\nFølgende nettside er lett tilgjengelig med skannede utskrifter av både Comanche og Luminary: https://28gpc.csb.app/\n\n## Nytteprogrammer\n\nGitHub har innebygd støtte for programmeringsspråket AGC \"assembly\", og følgene tekstredigeringsprogrammer har også utvidelser som gir støtte for syntaksutheving i AGC:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Støtter automatisk formatering\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formatering\n\n**Merk:** GitHub og de markerte redigeringsprogrammene vil sørge for at du bruker korrekt formatering av kildekoden automatisk.\n\n-\tBruk Tab for innrykk\n-\tBruk Tab med 8 mellomrom\n-\tTa bort mellomrom og annet som ikke er synlig på slutten av setninger\n\n## Hva må jeg sjekke?\n\nEventuelle avvik fra de innskannede bildene og kildekoden i dette depotet.\n\n### Kommentarer\n\nKommentarer i denne koden **SKAL** stemme **eksakt** med den digitaliserte originalen.\n\nVanlige feil man bør se etter er blant annet:\n\n#### Typografiske feil\n\nNoen steder skrev originalutviklerne feil i kodekommentarene. Noen av disse skrivefeilene ble feilaktig rettet under digitaliseringen, og digitaliseringen har også introdusert nye skrivefeil som ikke stammer fra papirutskriften.\n\nFor eksempel, hvis de originale dokumentene var feilstavet som ‘SPAECRAFT’ og de digitaliserte dokumentene ble endret til ‘SPACECRAFT’ så **SKAL** dette rettes for å reflektere de originale dokumentene, altså manglende ‘C’.\n\nPå samme måte, hvis digitaliseringen introduserte stavefeil som ikke var tilstede i de originale dokumentene **SKAL** dette rettes.\n\n#### Mellomrom\n\nMellomrom mellom to tegn i teksten **BØR** følge de digitaliserte dokumentene. I de fleste tilfeller (se diskusjon i [#316[10]) betyr dette:\n\n- Enkelt mellomrom for nye ord\n- Dobbelt mellomrom for nye linjer\n- Trippel mellomrom for innrykk\n\nIkke alle sider i de digitaliserte dokumentene følger denne generaliseringen, hvis de digitaliserte dokumentene bruker enkelt mellomrom i stedet for dobbelt mellomrom, skal enkelt mellomrom brukes.\n\n### Linjeskift\n\n- Linje skift *med* `R0000` i kolonne 1 skal stemme helt med originalen.\n- Linje skift *uten* `R0000` i kolonne 1 skal bare ha en eller to blanke linjer etter seg.\n  - Hvis det er flere enn to blanke linjer skal de fjernes\n    - Linjer med `R0000` i kolonne 1 regnes ikke med i slike tilfeller\n  - I originalen ble disse skapt av et siffer i kolonne 8 (som ikke ble skrevet ut). et 2-tall fremtvang dobbelt mellomrom (enkel blank linje) og et 3-tall så ble det et trippel mellomrom (to doble linjer). Verdiene fra 4 til 8 var definert, men ikke brukt. Les mer om dette i [#159][7]\n\nFor eksempel skal følgende kode:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nSe slik ut:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Noter\n\nFør man åpner en «Pull Request», bør man være helt sikker på at endringene er i samsvar med de digitaliserte bildene!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.pl.md",
    "content": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nKod źródłowy w tym repozytorium został zdigitalizowany ręcznie na podstawie wydruków papierowych, więc literówki i inne rozbieżności zostały wprowadzone przypadkowo. Kod należy zmodyfikować, aby był zgodny z zeskanowanymi wydrukami:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nPoniższą stronę internetową można łatwo przeglądać, korzystając ze zeskanowanych wydruków Comanche i Luminary: https://28gpc.csb.app/\n\n## Przydatne rozszerzenia\n\nGitHub obsługuje składnię wbudowanego języka asemblera AGC. Niestety twój edytor kodu prawdopodobnie nie będzie go obsługiwał, jednak istnieją rozszerzenia języka AGC, które zapewniają obsługę składni tego języka dla następujących edytorów:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Wspiera automatyczne formatowanie\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formatowanie\n\n**Uwaga:** GitHub wraz z powyższymi rozszerzeniami zapewniają automatyczne użycie prawidłowego formatowana\n\n- Tabulacja\n- Szerokość tabulacji wynosząca 8\n- Niepozostawianie spacji na końcu wierszy\n\n## Co mam sprawdzać?\n\nWszelkie rozbieżności między skanami a kodem źródłowym tego repozytorium.\n\n### Komentarze\n\nKomentarze w transkrybowanym kodzie **MUSZĄ DOKŁADNIE** odpowiadać skanom.\n\nTypowe problemy, na które należy zwrócić uwagę podczas sprawdzania, obejmują między innymi:\n\n#### Literówki\n\nW niektórych miejscach pierwotni programiści popełnili błędy typograficzne podczas pisania komentarzy. Niektóre z nich zostały błędnie poprawione podczas wstępnej digitalizacji, jednak digitalizacja wprowadziła również błędy typograficzne, których nie było w skanach.\n\nNa przykład, jeśli zdigitalizowane komentarze zawierały słowo „SPACECRAFT”, ale na skanach odczytano „SPAECRAFT”, wówczas digitalizacja **MUSI** zostać poprawiona na „SPAECRAFT” (brakujące „C”).\n\nPodobnie, jeśli słowo zawiera literówkę w digitalizacji, ale jest poprawnie napisane na skanach, wówczas literówka **MUSI** zostać poprawiona.\n\n#### Spacje\n\nSpacje pomiędzy dwoma znakami w danym ciągu powinny być zgodne z następującą konwencją (patrz na [#316][10]):\n\n- Pojedyncza spacja dla nowego słowa.\n- Podwójna spacja dla nowego zdania.\n- Potrójna spacja dla akapitu.\n\nNie wszystkie strony w skanach są zgodne z tym uogólnieniem, jeśli skany mają tylko jedną spację zamiast podwójnej, użyj jednej spacji.\n\n### Rozdzielanie wierszy\n\n- Wiersz *rozpoczynający się od* `R0000` w kolumnie 1 powinien dokładnie pasować do skanów.\n- Wiersz *nierozpoczynający się od* `R0000` w kolumnie 1 powinien zawierać tylko 1 lub 2 puste wiersze z rzędu.\n  - Jeżeli są więcej niż 2 puste wiersze - usuń ich nadmiar.\n    - Wiersze rozpoczynające się od `R0000` w kolumnie 1 nie są zaliczane jako pusty wiersz.\n  - W obrazach źródłowych puste linie zostały utworzone przez niezadrukowaną cyfrę w kolumnie 8. 2 wymusiło podwójną spację (pojedyncza pusta linia), a 3 wymusiło potrójną spację (podwójna pusta linia). Wartości 4-8 zostały zdefiniowane, ale nigdy nie były używane. Więcej na ten temat w [#159][7]\n\nNa przykład:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nZostaje zmienione na:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Uwaga\n\nZanim utworzysz PR, upewnij się, że zmiany są zgodne ze skanami!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.pt_br.md",
    "content": "# Contribuindo\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nO código-fonte neste repositório foi digitado manualmente a partir de impressões em papel, logo alguns erros de digitação e discrepâncias foram introduzidos acidentalmente. O código deve ser modificado para se tornar consistente com as seguintes digitalizações:\n\n- [Impressões em AGC para Comanche][8]\n- [Impressões em AGC para Luminary][9]\n\nO seguinte site é facilmente navegável com impressões digitalizadas de Comanche e Luminary: https://28gpc.csb.app/\n\n## Extensões úteis\n\nGitHub possui suporte de sintaxe nativo para a linguagem assembly AGC.\nInfelizmente, seu editor de texto não o terá. Portanto, existem extensões para a linguagem AGC que providenciam destaque de sintaxe para os seguintes editores:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Suporta formatação automática\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formatando\n\n**Nota:** GitHub e as três extensões listadas acima garantirão que você estará usando a formatação correta automaticamente.\n\n- Use indentação por tab\n- Use largura de tab em 8\n- Diminua o espaço em branco à direita\n\n## O que devo conferir?\n\nQuaisquer discrepâncias entre as digitalizações e o código-fonte neste repositório, incluindo:\n\n### Comentários\n\n- Comentários no código transcrito devem corresponder exatamente às digitalizações\n  - Isso pode envolver criar um erro de digitação deliberadamente ou remover/adicionar um comentário inteiro.\n\n### Quebra de linha\n\n- Quebras de linha *com* `R0000` na coluna 1 devem corresponder exatamente às digitalizações.\n- Quebras de linha *sem* `R0000` na coluna 1 devem conter apenas uma ou duas linhas em branco em sequência.\n  - Se existem mais de duas quebras de linha em branco, remova as quebras de linha extras.\n    - Linhas com `R0000` na coluna 1 não contam para este propósito.\n  - As imagens fonte foram criadas por meio de um dígito não-impresso na coluna 8. Um 2 forçava um espaço duplo (linha em branco única) e um 3 forçava um espaço triplo (linha em branco dupla). Os valores de 4 até 8 foram definidos porém nunca usados. Leia mais sobre em [#159][7]\n\nPor exemplo, o seguinte código:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nDeve tornar-se:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n### Espaços\n\n- Espaços entre dois caracteres na cadeia de caracteres devem respeitar a seguinte convenção (veja a discussão em [#316][10]):\n  - Espaço único para novas palavras.\n  - Espaço duplo para novas sentenças.\n  - Espaço triplo para indentações.\n\nPor exemplo, o seguinte código:\n\n```plain\n\t1)  FOO BAR BAZ QUX QUUX QUUZ. CORGE, GRAULT,\n\tGARPLY, WALDO.\n```\n\nDeve tornar-se:\n\n```plain\n\t1) FOO BAR BAZ QUX QUUX QUUZ.  CORGE, GRAULT,\n\t   GARPLY, WALDO.\n```\n\n## Notas\n\nAntes de realizar um PR, por favor, certifique-se que suas mudanças estejam consistentes com as digitalizações!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.sv.md",
    "content": "# Bidra\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nKällkoden i det här kodarkivet digitaliserades manuellt från pappersutskrifter, så stavfel och andra avvikelser har införts av misstag. Koden ska modifieras så att den överensstämmer med följande skannade utskrifter:\n\n- [AGC-utskrifter för Comanche][8]\n- [AGC-utskrifter för Luminary][9]\n\nFöljande webbplats kan användas för att enkelt navigera runt de skannade utskrifterna för både Comanche och Luminary: https://28gpc.csb.app/\n\n## Användbara tillägg\n\nGitHub har syntaxstöd för AGC-assemblerspråket inbyggt. Tyvärr har inte din kodredigerare det, men det finns AGC-språktillägg som ger syntaxmarkering för följande redigerare:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Stöder automatisk formatering\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Formatering\n\n**Notering:** GitHub och tillägg markerade ovan säkerställer att du använder rätt formatering automatiskt.\n\n- Använd flikindrag\n- Använd flikbredden 8\n- Trimma efterföljande blanksteg\n\n## Vad ska jag kolla?\n\nEventuella avvikelser mellan skanningarna och källkoden i det här kodarkivet.\n\n### Kommentarer\n\nKommentarer i den transkriberade koden **MÅSTE** matcha skanningarna **exakt**.\n\nVanliga problem som du bör hålla utkik efter vid korrekturbehandling inkluderar, men inte begränsat till:\n\n#### Typografiska fel\n\nPå vissa ställen gjorde de ursprungliga utvecklarna typografiska fel när de skrev kommentarer. En del av dessa korrigerades av misstag under den inledande digitaliseringen, men digitaliseringen har också infört typografiska fel som inte fanns i skanningarna.\n\nTill exempel, om de digitaliserade kommentarerna innehöll \"SPACECRAFT\", men \"SPAECRAFT\" skrevs ut i skanningarna, då **MÅSTE* korrigeras till \"SPAECRAFT\" (saknas \"C\").\n\nLikaså, om ett ord har ett stavfel i digitaliseringen men är rättstavat i skanningarna så **MÅSTE** stavfelet korrigeras.\n\n#### Mellanslag\n\nMellanslag mellan två tecken i kommentarerna **SKA** matcha skanningarna. I de flesta fall (se diskussionen i [#316][10]) är detta:\n\n- Ett mellanslag för nya ord.\n- Dubbelt mellanslag för nya meningar.\n- Trippelt mellanslag för fördjupningar.\n\nAlla sidor i skanningarna följer inte denna generalisering, om skanningarna bara har ett enda mellanslag istället för ett dubbelt mellanslag, använd ett enda mellanslag.\n\n### Radbrytningar\n\n- Radbrytningar *med* `R0000` i kolumn 1 bör matcha skanningarna exakt.\n- Radbrytningar *med**__out__* `R0000` i kolumn 1 bör endast innehålla 1 eller 2 tomma rader i rad.\n  - Om det finns fler än 2 tomma radbrytningar, ta bort de extra radbrytningarna.\n    - Rader med `R0000` i kolumn 1 räknas inte till detta.\n  - I källbilderna skapades dessa av en otryckt siffra i kolumn 8. En 2:a tvingade fram ett dubbelt mellanslag (enkel blank rad) och en 3:a tvingade fram ett trippelt mellanslag (dubbel blank linje). Värdena 4-8 definierades men användes aldrig. Läs mer om det i [#159][7]\n\nTill exempel följande:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nBör bli:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Notering\n\nInnan du gör en PR, se till att dina ändringar överensstämmer med skanningarna!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.tr.md",
    "content": "# Katkıda Bulunma\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nBu repodaki kaynak kodu kağıt çıktılarından elle dijitalleştirilmiştir. Yani yazım hataları ve diğer tutarsızlıklar yanlışlıkla yapılmıştır. Kod, aşağıdaki taratılmış çıktılar ile tutarlı olması için düzenlenmelidir:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nAşağıdaki web sitesi hem Comanche hem de Luminary'nin taranmış baskılarını kolayca görüntüleyebilir: https://28gpc.csb.app/\n\n## Yararlı Eklentiler\n\nGitHub, AGC assembly dili için sentaks desteği sağlıyor ama sizin kodu düzenlemek için kullandığınız editör sağlamayacaktır. Aşağıdaki editörler AGC dili sentaks vurgulaması için eklentiler sunmaktadır:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Otomatik biçimlendirmeyi destekler\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Biçimlendirme\n\n**Not:** GitHub ve yukarıdaki 3 eklenti otomatik olarak doğru biçimlendirmeyi kullanmanızı sağlayacaktır.\n\n- Girintilemeyi tab ile yapın\n- Tab genişliği olarak 8'i kullanın\n- Devamındaki boşlukları silin\n\n## Neyi kontrol edeyim?\n\nTaratılmış çıktılar ve bu repodaki kaynak kodu arasındaki herhangi bir tutarsızlığı.\n\n### Yorumlar\n\nUyarlanan koddaki yorum satırları, çıktılar ile **tamamen** **eşleşmelidir**.\n\nDüzeltmek için bakmanız gereken bazı temel sorunlar şunlardır:\n\n#### Yazım Hataları\n\nBazı yerlerde, orijinal geliştiriciler yorum yazarken yazım hataları yapmış. Bunların bazıları dijitalleştirme sürecinin başlarında yanlışlıkla düzeltildi fakat dijitalleştirme süreci taratılmış çıktılarda olmayan yeni yazım hatalarına da sebep oldu.\n\nÖrneğin, dijitalleştirilmiş yorumlar `SPACECRAFT` kelimesini içeriyorsa ama taratılmış çıktılarda `SPAECRAFT` yazıyorsa, dijitalleştirilmiş yorum `SPAECRAFT` (`C` eksik) olarak **düzeltilmelidir**.\n\nAynı şekilde, eğer dijitalleştirmiş yorumlarda bir yazım hatası varsa ama taratılmış çıktılarda doğru yazılmışsa, yazım hatası **düzeltilmelidir**.\n\n### Boşluklar\n\nYorumlar arasındaki iki karakterin arasındaki boşluklar taratılmış çıktılar ile **uyuşmalıdır**. Bir çok durumda ([#316][10]'daki tartışmayı inceleyin) boşluklar şu şekildedir:\n\n- Yeni kelimeler arası tek boşluk.\n- Yeni cümleler arası iki boşluk.\n- Yeni girintiler için üç boşluk.\n\nTaratılmış çıktılarda bütün sayfalar bu genellemelere uymaz. Eğer çıktılarda iki boşluk yerine bir boşluk varsa, bir boşluk kullanın.\n\n### Satır sonları\n\n- Birinci sütunu `R0000` *ile* biten satır sonları çıktılar ile tamamen eşleşmelidir.\n- Birinci sütunu `R0000` *__olmadan__* biten satır sonları arka arkaya sadece 1 ya da 2 boş satır içermelidir.\n  - Eğer 2'den fazla satır sonu varsa ekstra olan satır sonlarını kaldırın.\n    - Birinci sütunu `R0000` *ile* biten satırlar bu kural dahilinde değildir.\n  - Kaynak resimlerde bunlar 8. satırındaki basamak bastırılmamış halde oluşturulmuştur. Bir 2 kullanımı iki boşluğu (tek boş satırı) temsil ederken, bir 3 kullanımı üç boşluğu (iki boş satırı) ifade eder. 4 ve 8 tanımlanmıştır fakat hiç kullanılmamıştır. Bunun hakkında daha fazla okumak için: [#159][7]\n\nÖrneğin bu:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nBuna dönüşmeli:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Not\n\nPR yapmadan önce lütfen yaptığınız değişikliklerin çıktılar ile tutarlı olduğundan emin olun!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.uk.md",
    "content": "# Сприяння\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nВихідний код у цьому репозиторії було оцифровано вручну з паперових роздруківок, тому помилки та інші розбіжності були внесені випадково. Код необхідно змінити, щоб узгодити його з такими сканованими роздруківками:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nНа наступному веб-сайті можна легко переглянути відскановані роздруківки Comanche і Luminary: https://28gpc.csb.app/\n\n## Корисні розширення\n\nGitHub має вбудовану підтримку синтаксису для мови асемблера AGC. На жаль, ваш редактор коду цього не зробить, однак існують розширення мови AGC, які забезпечують підсвічування синтаксису для таких редакторів:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Підтримує автоматичне форматування\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Форматування\n\n**Примітка.** GitHub і розширення, позначені вище, забезпечать автоматичне використання правильного форматування.\n\n- Використовуйте відступ через TAB.\n- Використовуйте TAB шириною (width) у 8.\n- Видаляйте кінцеві пробіли.\n\n## Що мені перевірити?\n\nБудь-які розбіжності між сканами та вихідним кодом у цьому репозиторії.\n\n### Коментарі\n\nКоментарі в транскрибованому коді **МАЮТЬ** **точно** збігатися зі сканами.\n\nПоширені проблеми, на які слід звернути увагу під час перевірки, вміщують, але не обмежуються таким:\n\n#### Друкарські помилки\n\nУ деяких місцях оригінальні розробники допускали друкарські помилки під час написання коментарів. Деякі з них були помилково виправлені під час початкової оцифровки, однак оцифрування також допустило друкарські помилки, яких не було в сканованих документах.\n\nНаприклад, якщо оцифровані коментарі містили `SPAECRAFT`, але `SPAECRAFT` було надруковано в сканах, тоді оцифрування **ПОТРІБНО** виправити на `SPAECRAFT` (відсутнє `C`).\n\nАналогічно якщо слово має друкарську помилку під час оцифрування, але написано правильно в сканах, тоді друкарську помилку **ПОТРІБНО** виправити.\n\n#### Пробіли\n\nПробіли між двома символами в коментарях **ПОВИННІ** збігатися зі сканами. У більшості випадків (див. обговорення у [#316][10]), це:\n\n- Одиничний пробіл для нових слів.\n- Подвійний пробіл для нових речень.\n- Потрійний пробіл для відступів.\n\nНе всі скановані сторінки дотримуються цього узагальнення. Якщо скани мають лише один пробіл замість подвійного, використовуйте один пробіл.\n\n### Розриви рядків\n\n- Розриви рядків *з* `R0000` у стовпці 1 мають точно відповідати сканам.\n- Розриви рядків *з**__out__* `R0000` у стовпці 1 мають містити лише 1 або 2 порожні рядки поспіль.\n  - Якщо є більше 2 порожніх розривів рядків, видаліть додаткові розриви рядків.\n    - Рядки з `R0000` у стовпці 1 не враховуються.\n  - На вихідних зображеннях вони були створені недрукованою цифрою в стовпці 8. 2 примусово ставило подвійний пробіл (один порожній рядок), а 3 — потрійний пробіл (подвійний порожній рядок). Значення 4-8 були визначені, але ніколи не використовувалися. Докладніше про це в [#159][7].\n\nНаприклад, наступне:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nМає стати:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Примітка\n\nПерш ніж робити PR, будь ласка, переконайтеся, що ваші зміни узгоджуються зі сканами!\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.vi.md",
    "content": "# Hướng dẫn đóng góp\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\nMã nguồn trong repo này được số hóa một cách thủ công từ các bản in giấy, do đó lỗi đánh máy và các lỗi khác đã vô tình được đưa vào. Code sẽ được sửa để phù hợp với các bản in được quét sau:\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\nTrang web sau đây có thể dễ dàng duyệt qua với các bản in được quét của cả Comanche và Luminary: https://28gpc.csb.app/\n\n## Các tiện ích mở rộng\n\nGitHub tích hợp sẵn hỗ trợ cú pháp cho ngôn ngữ lắp assembly AGC. Thật không may, trình soạn thảo của bạn sẽ không hỗ trợ, tuy nhiên có các tiện ích mở rộng ngôn ngữ AGC cung cấp tính năng highlight cú pháp cho các trình soạn thảo sau:\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† Hỗ trợ tự động định dạng (Auto formatting)\n\n[Atom]: https://github.com/Alhadis/language-agc\n[CodeBlocks]: https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]: https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]: https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]: https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]: https://github.com/jimlawton/AGC-Assembly\n[TextPad]: https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]: https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]: https://github.com/wopian/agc-assembly\n[jEdit]: https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## Định dạng\n\n**Lưu ý:** GitHub và các tiện ích mở rộng được đánh dấu ở trên sẽ đảm bảo bạn đang sử dụng định dạng chính xác một cách tự động.\n\n- Sử dụng canh chĩnh tab\n- Sử dụng chiều rộng tab là 8\n- Xóa khoảng trắng cuối\n\n## Tôi cần kiểm tra cái gì?\n\nBất kỳ sự khác biệt nào giữa các bản quét và mã nguồn trong repo này.\n\n### Comments\n\nCác comment trong code **PHẢI** khớp **chính xác** với bản quét.\n\nCác vấn đề phổ biến mà bạn nên chú ý khi kiểm tra, nhưng không giới hạn, bao gồm:\n\n#### Lỗi đánh máy\n\nỞ một số nơi, các nhà phát triển ban đầu đã mắc lỗi đánh máy khi viết comment. Một số lỗi này đã được sửa nhầm trong quá trình số hóa ban đầu, tuy nhiên quá trình số hóa cũng đã đưa vào các lỗi đánh máy không có trong bản quét.\n\nVí dụ, nếu các bình luận được số hóa có chứa `SPACECRAFT`, nhưng `SPAECRAFT` được in trong bản quét, thì bản số hóa **PHẢI** được sửa thành `SPAECRAFT` (thiếu `C`).\n\nTương tự như vậy, nếu một từ có lỗi đánh máy trong bản số hóa nhưng được viết đúng chính tả trong bản quét thì **PHẢI** được sửa lỗi đánh máy đó.\n\n#### Khoảng trắng\n\nKhoảng trắng giữa hai ký tự trong comment **NÊN** khớp với bản quét. Trong hầu hết các trường hợp (xem phần thảo luận trong [#316][10]), như sau:\n\n- 1 khoảng trắng cho các từ mới.\n- 2 khoảng trắng cho các câu mới.\n- 3 khoảng trắng cho các thụt lề.\n\nKhông phải tất cả các trang trong bản quét đều tuân theo quy tắc trên, nếu bản quét chỉ có một khoảng trắng  thay vì hai khoảng trắng, hãy sử dụng một khoảng trắng.\n\n### Ngắt dòng\n\n- Ngắt dòng _có_ `R0000` trong cột 1 phải khớp chính xác với bản quét.\n- Ngắt dòng _\\*\\***không** có_ `R0000` trong cột 1 chỉ nên chứa 1 hoặc 2 dòng trống liên tiếp.\n  - Nếu có nhiều hơn 2 ngắt dòng trống, hãy xóa các ngắt dòng thừa.\n    - Các dòng có `R0000` ở cột 1 sẽ không được tính vào đây.\n  - Trong các hình ảnh nguồn, Những thứ trên được tạo ra bởi một chữ số không được in vào trong cột 8. Một số 2 ở đó buộc phải có hai khoảng trắng (một dòng trống) và một số 3 buộc phải có ba khoảng trắng (hai dòng trống). Các giá trị 4-8 được xác định nhưng không bao giờ được sử dụng. Đọc thêm tại [#159][7]\n\nHãy xem ví dụ dưới đây:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\nNên là:\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## Ghi chú\n\nTrước khi bạn tạo PR, hãy chắc chắn rằng những thay đổi của bạn phù hợp và ổn định với những scan sau:\n\n[0]: https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]: http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]: http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[6]: https://github.com/wopian/agc-assembly#user-settings\n[7]: https://github.com/chrislgarry/Apollo-11/issues/159\n[8]: http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]: http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]: https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.zh_cn.md",
    "content": "# 贡献\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\n本仓库中的源代码来自对纸质打印输出文件的手动数字化，所以会不小心引入一些拼写错误和其他差异。这些代码应该被修正以使其与原纸质打印输出文件内容保持一致：\n\n- [阿波罗 11 号制导计算机（AGC）中指令模块打印输出][8]\n- [阿波罗 11 号制导计算机（AGC）中登月模块打印输出][9]\n\n以下网站可以轻松浏览 Comanche 和 Luminary 的扫描件：https://28gpc.csb.app/\n\n## 有用的扩展\n\nGitHub 内建支持 AGC 汇编语言语法。不幸的是，你的代码编辑器并不支持，但有些\nAGC 语言的扩展插件可以为下列的编辑器提供语法高亮显示支持：\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† 符号表示支持自动格式化\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## 格式化\n\n**注意**：GitHub 和上面列出的3个扩展插件会确保您自动使用正确的格式。\n\n- 使用 TAB 进行缩进\n- TAB 宽度为 8 个字符\n- 去掉末尾的空格\n\n## 我该怎么检查？\n\n原始的扫描打印输出文件与此存储库中的源码之间存在的差异，包括：\n\n### 注释\n\n- 转录代码中的注释应与扫描件完全匹配\n  - 这可能涉及故意创建的拼写错误或删除/添加整个评论\n\n### 换行\n\n- 第 1 列 *带* `R0000` 的换行符应与扫描件完全匹配。\n- 第 1 列 *不**__带__* `R0000` 的换行符应该只包含 1 个或 2 个连续空行。\n  - 如果有超过 2 个空行换行，请删除额外的空白行换行。\n  - 第 1 列中带 `R0000` 的行不计入此。\n  - 在原始图片中，这些是由一个未打印的数字分 8 列创建。A 2 处强制两个空格（单个空白行），A 3 处强制三个空格（双空行）。值 4-8 被定义但从未使用过。可在 [#159][7] 查看细节\n\n例如以下内容：\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\n应该改为：\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n### 空格\n\n- 字符串中两个字符之间的空格应遵循以下约定 (可在 [#316][10] 查阅相关讨论)：\n  - 新单词另起一个空格.\n  - 新句另起两个空格.\n  - 缩进占三个空格.\n\n例如以下内容：\n\n```plain\n\t1)  FOO BAR BAZ QUX QUUX QUUZ. CORGE, GRAULT,\n\tGARPLY, WALDO.\n```\n\n应该改为：\n\n```plain\n\t1) FOO BAR BAZ QUX QUUX QUUZ.  CORGE, GRAULT,\n\t   GARPLY, WALDO.\n```\n\n## 谨记\n\n在提交 PR 之前，请确保您的更改与原始的扫描件打印输出一致！\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[3]:https://github.com/wopian/agc-assembly\n[4]:https://github.com/jimlawton/AGC-Assembly\n[5]:https://github.com/Alhadis/language-agc\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/CONTRIBUTING.zh_tw.md",
    "content": "# 貢獻\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdi][KU],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolia][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Українська][UK]،\n[العربية][AR],\n[हिन्दी][HI_IN],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:CONTRIBUTING.ar.md\n[AZ]:CONTRIBUTING.az.md\n[CA]:CONTRIBUTING.ca.md\n[CZ]:CONTRIBUTING.cz.md\n[DA]:CONTRIBUTING.da.md\n[DE]:CONTRIBUTING.de.md\n[EN]:../CONTRIBUTING.md\n[ES]:CONTRIBUTING.es.md\n[FR]:CONTRIBUTING.fr.md\n[GL]:CONTRIBUTING.gl.md\n[GR]:CONTRIBUTING.gr.md\n[HI_IN]:CONTRIBUTING.hi_in.md\n[ID]:CONTRIBUTING.id.md\n[IT]:CONTRIBUTING.it.md\n[JA]:CONTRIBUTING.ja.md\n[KO_KR]:CONTRIBUTING.ko_kr.md\n[KU]:CONTRIBUTING.ku.md\n[LT]:CONTRIBUTING.lt.md\n[MN]:CONTRIBUTING.mn.md\n[NL]:CONTRIBUTING.nl.md\n[NO]:CONTRIBUTING.no.md\n[PL]:CONTRIBUTING.pl.md\n[PT_BR]:CONTRIBUTING.pt_br.md\n[SV]:CONTRIBUTING.sv.md\n[TR]:CONTRIBUTING.tr.md\n[UK]:CONTRIBUTING.uk.md\n[VI]:CONTRIBUTING.vi.md\n[ZH_CN]:CONTRIBUTING.zh_cn.md\n[ZH_TW]:CONTRIBUTING.zh_tw.md\n\n這個倉庫的原始碼，是透過列印出的紙本輸出，予以手動數位化。所以可能會不小心出現錯字和其他出入。程式碼應當修正到與紙本掃描的輸出一致：\n\n- [AGC printouts for Comanche][8]\n- [AGC printouts for Luminary][9]\n\n以下網站可以輕鬆瀏覽 Comanche 和 Luminary 的掃描件：https://28gpc.csb.app/\n\n## 實用套件\n\nGitHub 內建 AGC 組語語法支援，但你的編輯器本身並沒有。不過，以下編輯器有提供 AGC 語法突顯的語言套件：\n\n- [Atom][Atom]†\n- [CodeBlocks][CodeBlocks]\n- [Eclipse][Eclipse]\n- [Kate][Kate]\n- [ProgrammersNotepad][ProgrammersNotepad]\n- [Sublime Text 3][Sublime Text]†\n- [TextPad][TextPad]\n- [Vim][Vim]\n- [Visual Studio Code][VisualStudioCode]†\n- [jEdit][jEdit]\n\n† 支援自動格式化\n\n[Atom]:https://github.com/Alhadis/language-agc\n[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks\n[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse\n[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate\n[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad\n[Sublime Text]:https://github.com/jimlawton/AGC-Assembly\n[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad\n[Vim]:https://github.com/wsdjeg/vim-assembly\n[VisualStudioCode]:https://github.com/wopian/agc-assembly\n[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit\n\n## 格式化\n\n**注意：** GitHub 與上面列出的套件，會自動確保您使用正確的格式。\n\n- 用 tab 縮排\n- tab 寬度為 8\n- 去除底部空白\n\n## 如何檢查？\n\n掃描與倉庫原始碼的差異會包括：\n\n### 註解\n\n抄寫的註解**必須**和掃描**一模一樣**。\n\n在檢查程式時需要留心，但不限於的問題有：\n\n#### 拼寫錯誤\n\n有時候，原始程式的開發者會撰寫時，出現若干拼寫錯誤。有時可能會在初次數位化時，被錯誤地更正；不過數位化本身，也可能產出在原始稿沒出現的拼寫錯誤。\n\n比方說，數位化的註解如果是 `SPACECRAFT`、但掃描原稿是 `SPAECRAFT` 的話，數位化就**必須**更正為沒有 C 的 `SPAECRAFT`。\n\n同樣地，如果是數位化的註解錯了、但掃描稿正確的話，就**必須**更正數位化的程式。\n\n#### 空格\n\n在字元內，兩個單字之間的空白**必須**與掃描相同。大多數時（請參閱 [#316][10] 的討論）慣例如下：\n\n- 單字間空一格。\n- 句子間空兩格。\n- 縮排間空三格。\n\n不是所有掃描都遵照這個慣例。如果不空兩格，而是空一格，那就空一格。\n\n### 換行\n\n- 在第一列（column 1）*有著* `R0000` 的換行，要和掃描一模一樣。\n- 在第一列*沒有* `R0000` 的換行，在一行（row）只能留有一到兩個空白行。\n  - 如果空白行超過兩個，請刪去額外的空白行。\n    - 如果在第一列有 `R0000` 的話，就不要這麼做。\n  - 在原始圖片中，這些都是由第八列（column 8）的未列印數字所產生。2 強制用兩個（也就是單一空白行）、3 強制用三個（也就是雙空行）、4-8 有定義，但從未使用過。請參閱 [#159][7] 的詳細訊息。\n\n例如以下程式：\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n\n 0821   LAMPTEST  CS  IMODES33\n```\n\n要改寫成：\n\n```plain\nR0819   SUBROUTINE TO SKIP...\nR0820\n\n\n 0820   LAMPTEST  CS  IMODES33\n```\n\n## 注意\n\n在發 PR 前，請確保您的修改與掃描輸出一模一樣！\n\n[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master\n[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[3]:https://github.com/wopian/agc-assembly\n[4]:https://github.com/jimlawton/AGC-Assembly\n[5]:https://github.com/Alhadis/language-agc\n[6]:https://github.com/wopian/agc-assembly#user-settings\n[7]:https://github.com/chrislgarry/Apollo-11/issues/159\n[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741\n"
  },
  {
    "path": "Translations/README.ar.md",
    "content": "<div dir=\"RTL\">\n\n# أبولو 11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nهذا هو الكود المصدر الأصلي لحاسوب الارشاد لمهمة أبولو 11 (AGC) المستخدم في مركبة القيادة (Comanche055) و&nbsp;المركبة القمرية (Luminary099) الذي أتمّ رقمنته القائمون على مشروع [AGC iالافتراضي][3] و [متحف MIT][4] بهدف إنشاء مستودع للكود المصدر الأصلي لمهمة أبولو 11. نرحب بطلبات دمج الكود التي تعالج أيّ تباين بين الكود المحفوظ في هذا المستودع و&nbsp;المسوحات الأصلية لكود (Luminary099) و&nbsp;(Comanche055)، أو أيّة ملفات أكون قد أغفلتها.\n\n## المساهمة\n\nطالعوا [CONTRIBUTING.ar.md][7] قبل إيداع طلب الدمج.\n\n## التجميع\n\nإذا أردتم تجميع الكود المصدر الأصلي فطالعوا مشروع [AGC الافتراضي][8].\n\n## النسبة\n\n&nbsp;         | &nbsp;\n-------------: | -----:\nحقوق النشر      | في الملك العام\nComanche055    | جزء من الكود المصدري للنظامColossus 2A، حاسوب ارشاد أبولو (AGC) للمركبة القيادية (CM) لأبولو 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | جزء من الكود المصدري للنظامLuminary 1A، حاسوب ارشاد أبولو (AGC) للمركبة القمرية (LM) لأبولو 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nالمُجمِّع      | yaYUL\nللتواصل        | رون بركي <info@sandroid.org>\nالموقع على الوِب        | www.ibiblio.org/apollo\nالرقمنة | تم استنساخ الكود المصدري و&nbsp;تحويله من صور رقمية صُنعت بالمسح الضوئي من نسخة مطبوعة موجودة في متحف MIT. قام بالرقمنة بول فيلد (Paul Fjeld)، بتنسيق من ديبورا دوغلاس (Deborah Douglas) من المتحف، فلهما جزيل الشكر.\n\n### العقد والموافقات\n\n*مستمدة من [CONTRACT_AND_APPROVALS.agc]*\n\nبرمجية AGC هذه سيُشار إليها هنا بالاسم Colossus 2A.\n\nهذا البرمجية مخصصة للاستخدام في مركبة القيادة كما هو موصوف في التقرير `R-577`. تم إعداد هذه البرمجية في إطار مشروع DSR `55-23870`، برعاية مركز المركبات الفضائية (Manned Spacecraft Center) التابع للإدارة الوطنية للملاحة الجوية و&nbsp;الفضاء (The National Aeronautics and Space Administration) بالعقد `NAS 9-4065` مع مختبر التجهيز (Instrumentation Laboratory) في معهد مستشوستس للتكنولوجيا (Massachusetts Institute of Technology) في كامبريدج بولاية مستشوستس من الولايات المتّحدة الأمريكية.\n\nقدمته          | الوظيفة | التاريخ\n--------------------: | ---: | ---:\nمارغريت ​ﮪ. هاملتون  | قائدة برمجة Colussus<br>برنامج أبولو للتوجيه و&nbsp;الملاحة | 28 آذار 1969\n\nأقرّه        | الوظيفة | التاريخ\n-----------------: | ---: | ---:\nدانيال ج. ليكلي   | مدير تطوير برامج المهمات<br>برنامج أبولو للتوجيه و&nbsp;الملاحة | 28 آذار 1969\nفريد ​ﮪ. مارتن    | مدير مشروع Colussus<br>برنامج أبولو للتوجيه و&nbsp;الملاحة | 28 آذار 1969\nنورمان إي. سيرز    | مدير تطوير المهمات<br>برنامج أبولو للتوجيه و&nbsp;الملاحة | 28 آذار 1969\nريتشارد ​ﮪ. باتن  | مدير تطوير المهمات<br>برنامج أبولو للتوجيه و&nbsp;الملاحة | 28 آذار 1969\nديفيد ج. هوج      | المدير<br>برنامج أبولو للتوجيه و&nbsp;الملاحة | 28 آذار 1969\nرالف ر. راجان    | نائب المدير<br>مختبر التجهيز | 28 آذار 1969\n\n</div>\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.ar.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.as_in.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nমূল অ্যাপোলো ১১ গাইডেন্স কম্পিউটার (AGC) এর কমান্ড মডিউল (Comanche055) এবং লুনার মডিউল (Luminary099) এর উৎস কোড। এটি [Virtual AGC][3] এবং [MIT Museum][4] এর সদস্যদের দ্বারা ডিজিটাইজ করা হয়েছে। মূল লক্ষ্য হলো অ্যাপোলো ১১ এর উৎস কোডের জন্য একটি রেপোজিটরি তৈরি করা। এই ভান্ডারে কপি এবং Luminary 099 এবং Comanche 055 এর মূল উৎসের মধ্যে সনাক্ত হওয়া যে কোনো সমস্যার জন্য PR (পুল রিকোয়েস্ট) স্বাগত জানানো হয় এবং সংশ্লিষ্ট যে কোনো ফাইল অন্তর্ভুক্ত করা যেতে পারে।\n\n## অবদান\n\nঅনুগ্রহ করে pull request জমা দেওয়ার আগে [CONTRIBUTING.md][7] পড়ুন।\n\n## কম্পাইল\n\nযদি আপনি মূল উৎস কোড কম্পাইল করতে আগ্রহী, তবে [Virtual AGC][8] দেখুন।\n\n## উৎস\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nকপিরাইট       | পাবলিক ডোমেইন\nComanche055    | Colossus 2A প্রোগ্রামের উৎস কোডের অংশ, অ্যাপোলো ১১ এর কমান্ড মডিউল (CM) এর জন্য অ্যাপোলো গাইডেন্স কম্পিউটার (AGC)<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | Luminary 1A প্রোগ্রামের উৎস কোডের অংশ, অ্যাপোলো ১১ এর লুনার মডিউল (LM) এর জন্য অ্যাপোলো গাইডেন্স কম্পিউটার (AGC)<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler      | yaYUL\nযোগাযোগ        | Ron Burkey <info@sandroid.org>\nওয়েবসাইট       | www.ibiblio.org/apollo\nডিজিটাইজেশন     | এই উৎস কোডটি হার্ডকপির ডিজিটাইজড ছবি থেকে অনুলিপি বা অভিযোজিত করা হয়েছে যা MIT মিউজিয়াম থেকে সংগ্রহ করা। এটি Paul Fjeld দ্বারা ডিজিটাইজ এবং Deborah Douglas দ্বারা আয়োজিত হয়েছে। দুজনের প্রতিই আন্তরিক ধন্যবাদ।\n\n## চুক্তি এবং অনুমোদন\n\n*এই বিভাগটি [CONTRACT_AND_APPROVALS.agc] থেকে নেওয়া হয়েছে*\n\nএই AGC প্রোগ্রামটিকে Colossus 2A নামেও ডাকা হয়।\n\n'R-577' রিপোর্ট অনুযায়ী, এই প্রোগ্রামটি CM-এ ব্যবহৃত হয়েছিল। এই প্রজেক্ট DSR প্রোজেক্ট '55-23870' এর অধীনে, National Aeronautics and Space Administration এর Manned Spacecraft Center দ্বারা পৃষ্ঠপোষিত, Instrumentation Laboratory, Massachusetts Institute of Technology এর সাথে চুক্তি 'NAS 9-4065' দ্বারা।\n\nদাখিলকারী             | ভূমিকা | তারিখ\n:------------------- | :--- | :---\nMargaret H. Hamilton | Colossus প্রোগ্রামিং লিডার<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন | ২৮ মার্চ '৬৯\n\nঅনুমোদনকারী          | ভূমিকা | তারিখ\n:---------------- | :--- | :---\nDaniel J. Lickly  | পরিচালক, মিশন প্রোগ্রাম ডেভেলপমেন্ট<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ '৬৯\nFred H. Martin    | Colossus প্রজেক্ট ম্যানেজার<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ '৬৯\nNorman E. Sears   | পরিচালক, মিশন ডেভেলপমেন্ট<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ '৬৯\nRichard H. Battin | পরিচালক, মিশন ডেভেলপমেন্ট<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ '৬৯\nDavid G. Hoag     | পরিচালক<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ '৬৯\nRalph R. Ragan    | সহকারী পরিচালক<br>ইন্সট্রুমেন্টেশন ল্যাবরেটরি | ২৮ মার্চ '৬৯\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.az.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nOriginal Apollo 11 Yönləndirmə Kompüterinin (AGC) Komanda Modulu (Comanche055) və Ay modulu (Luminary099) üçün mənbə kodu. [Virtual AGC][3] və [MIT Museum][4] əməkdaşları tərəfindən rəqəmsallaşdırılıb. Məqsəd, original Apollo 11 mənbə kodunu ehtiva edən bir repo yaratmaqdır. Buna görə də, bu repodakı transkriptlər ilə original [Luminary 099][5] və [Comanche 055][6] mənbə skanları arasında aşkarlanan xətalarla və ya mənim gözdən qaçırdığım bir fayl ilə əlaqəli pull request-ləri önəmsəyirik.\n\n## Töhfə\n\nZəhmət olmasa pull request etmədən öncə [CONTRIBUTING.az.md][7] faylını oxuyun.\n\n## Kompilyasiya\n\nƏgər original mənbə kodunu kompilyasiya etmək istəyirsinizsə, [Virtual AGC][8] proyektinə baxa bilərsiniz.\n\n## Atributlar\n\n&nbsp;               | &nbsp;\n:--------------      | :-----\nLisenziya            | İctimai mülkiyyət - ABŞ hökumətinin işi\nComanche055          | Apollo Yönləndirmə Kompüteri (AGC) Komanda Modulu (CM) olan Colossus 2A-nın mənbə kodunun bir hissəsi.<br>`AGC proqramı Comanche-in NASA tərəfindən yaradılan 055 sayılı birləşdirmə təftişi`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099          | Apollo Yönləndirmə Kompüteri (AGC) Ay Modulu (LM) olan Luminary 1A-in mənbə kodunun bir parçası.<br>`AGC Proqramı LMY99-un NASA tərəfindən yaradılan 001 sayılı birləşdirmə təftişi`<br>`2021112-061. 16:27 İYUL. 14, 1969`\nKompilyator          | yaYUL\nƏlaqə                | Ron Burkey <info@sandroid.org>\nSayt                 | www.ibiblio.org/apollo\nRəqəmsallaşdırma     | Bu mənbə kodu MIT muzeyindəki kağız nüsxələrin fotoşəkillərindən uyğunlaşdırılmış və ya köçürülmüşdür. Rəqəmsallaşdırma Muzeyin əməkdaşı Deborah Duqlas tərəfindən təşkil edilib, Paul Fjeld tərəfindən həyata keçirilmişdir. Hər ikisinə də təşəkkür edirəm.\n\n### Əlaqə və Təsdiqlər\n\n*[CONTRACT_AND_APPROVALS.agc]-dan alınmışdır.*\n\nBu AGC proqramı Colossus 2A kimi də tanınır.\n\n`R-577` hesabatında qeyd edildiyi kimi, bu proqram CM üçün istifadə məqsədli nəzərdə tutulub. Bu proqram DSR `55-23870` layihəsi, Milli Aeronavtika və Kosmos Administrasiyasının Kosmik Gəmilər Mərkəzinin sponsorluğu ilə, Cambridge Mass Massachusetts Texnologiya İnstitutunun Alətlər Laboratoriyası ilə `NAS 9-4065` müqaviləsi əsasında hazırlanmışdır.\n\nGöndərən             | Vəzifəsi | Tarix\n:------------------- | :------  | :----\nMargaret H. Hamilton | Colossus Proqramlama Lideri<br>Apollo Yönləndirmə və Naviqasiya                   | 28 Mart 1969\n\nTəsdiqləyən          | Vəzifəsi  | Tarix\n:----------------    | :------   | :----\nDaniel J. Lickly     | Direktor, Tapşırıq Proqramı İnkişafı<br>Apollo Yönləndirmə və Naviqasiya proqramı | 28 Mart 1969\nFred H. Martin       | Colossus Layihə rəhbəri<br>Apollo Yönləndirmə və Naviqasiya Proqramı              | 28 Mart 1969\nNorman E. Sears      | Direktor, Tapşırıq İnkişafı<br>Apollo Yönləndirmə və Naviqasiya Proqramı          | 28 Mart 1969\nRichard H. Battin    | Direktor, Tapşırıq İnkişafı<br>Apollo Yönləndirmə və Naviqasiya Proqramı          | 28 Mart 1969\nDavid G. Hoag        | Direktor<br>Apollo Yönləndirmə və Naviqasiya Proqramı                             | 28 Mart 1969\nRalph R. Ragan       | Direktor köməkçisi<br>Alətlər Laboratoriyası                                      | 28 Mart 1969\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.tr.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.bd_bn.md",
    "content": "# অ্যাপোলো ১১\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nঅ্যাপোলো ১১ গাইডেন্স কম্পিউটারের মূল ম্যানুয়াল (AGC), অ্যাপোলো ১১ কমান্ড মডিউল (Comanche055) এবং লুনার মডিউল (Luminary099)। এটি [Virtual AGC][3] এবং [MIT Museum][4] সদস্যদের দ্বারা সূচিত করা হয়েছে। আমাদের মূল লক্ষ্য অ্যাপোলো ১১ এর মূল কোডটি সংকলন করা। আপনি যদি এই বিরোধের প্রতিলিপি এবং [Luminary 099][5] এবং [Comanche 055][6] এর মধ্যে কোনও বৈষম্য উন্মোচন করেছেন, সেক্ষেত্রে আপনার সহযোগিতা PR হিসাবে প্রশংসিত হবে।\n\n## অবদান\n\nকোনো পুল রিকুয়েস্ট খোলার আগে দয়া করে [CONTRIBUTING.md][7] পড়ুন।\n\n## সংগ্রহ\n\nযদি আপনি এই নিয়মগুলি পরিচালনা করেন তবে [Virtual AGC][8] দেখুন।\n\n## আরোপণ\n\n&nbsp;       | &nbsp;\n:----------- | :-----\nকপিরাইট       | পাবলিক ডোমেইন\nComanche055  | Colossus 2A, কমান্ড মডিউলটির (CM) উৎস কোডের একটি অংশ, অ্যাপোলো ১১ গাইডেন্স কম্পিউটার (AGC)<br>`নাসা 055 দ্বারা AGC প্রোগ্রাম কোমঞ্চের একীভূত সংশোধনী`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099  | লুমিনারি ১ এ, অ্যাপোলো ১১-এর চন্দ্র অংশ (LM) জন্য ফ্লোটেশন ডিভাইস (AGC) কোডের অংশ `নাসার দ্বারা এজিসি (AGC)প্রোগ্রাম LMY99 এর একীভূত সংশোধনী ০০১`<br>`2021112-061. 16:27 JUL. 14, 1969`\nঅ্যাসেম্বলার     | yaYUL\nযোগাযোগ      | Ron Burkey <info@sandroid.org>\nওয়েবসাইট      | www.ibiblio.org/apollo\nডিজিটালাইজেশন | এই উৎস কোডটি এমআইটি জাদুঘরের একটি হার্ডকপির ডিজিটাইজড চিত্র থেকে অনুলিপি করা হয়েছে বা অন্যথায় রূপান্তরিত হয়েছে। ডিজিটালাইজেশনটি Paul Fjeld সঞ্চালনা করেছিলেন এবং জাদুঘরের Deborah Douglas দ্বারা ব্যবস্থা করেছিলেন। উভয়কে অনেক ধন্যবাদ।\n\n### চুক্তি এবং গ্রহণযোগ্যতা\n\n*[CONTRACT_AND_APPROVALS.agc] হতে প্রাপ্ত*\n\nএই AGC প্রোগ্রামটিকে Colossus 2A হিসাবেও উল্লেখ করা হবে।\n\nএই প্রোগ্রামটি CM প্রতিবেদনে নির্দিষ্ট হিসাবে ব্যবহারের জন্য উদ্দিষ্ট `R-577`. এই প্রোগ্রামটি DSR প্রকল্পের আওতায় প্রস্তুত করা হয়েছিল `55-23870`, এই চুক্তির মাধ্যমে দ্য ন্যাশনাল অ্যারোনটিকস অ্যান্ড স্পেস অ্যাডমিনিস্ট্রেশনের ম্যানড স্পেসক্র্যাফট সেন্টার স্পনসর করে `NAS 9-4065` যন্ত্রানুষঙ্গের ল্যাবরেটরি সহ, Massachusetts Institute of Technology, Cambridge, Mass.\n\nজমাদানকারী            | ভূমিকা | তারিখ\n:------------------- | :---- | :---\nMargaret H. Hamilton | কলসাস(Colossus) প্রোগ্রামিং লিডার<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন | ২৮ মার্চ ১৯৬৯\n\nযাদের দ্বারা অনুমোদিত      | ভূমিকা | তারিখ\n:---------------- | :--- | :---\nDaniel J. Lickly  | পরিচালক, মিশন প্রোগ্রাম উন্নয়ন<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ ১৯৬৯\nFred H. Martin    | কলসাস প্রজেক্ট ম্যানেজার<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ ১৯৬৯\nNorman E. Sears   | পরিচালক, মিশন উন্নয়ন<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ ১৯৬৯\nRichard H. Battin | পরিচালক, মিশন উন্নয়ন<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ ১৯৬৯\nDavid G. Hoag     | পরিচালক<br>অ্যাপোলো গাইডেন্স এবং নেভিগেশন প্রোগ্রাম | ২৮ মার্চ ১৯৬৯\nRalph R. Ragan    | সহকারী পরিচালক<br>ইনস্ট্রুমেন্টেশন ল্যাবরেটরি | ২৮ মার্চ ১৯৬৯\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.be.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nАрыгінальны код навігацыйнай камп'ютарнай сыстэмы Apollo 11 (AGC) для Каманднага Модуля (Comanche055) і Луннага Модуля (Luminary099). Цыфраваныя карыстальнікамі [Virtual AGC][3] і [MIT Museum][4]. Мэтай гэтага рэпазіторыя з'яўляецца захоўванне арыгінальнага коду Apollo 11. Таму ўсе PR (Pull Requests) запрашаюцца для выяўлення якіх-небудзь памылак паміж аглядамі гэтага рэпазіторыя і арыгінальнымі сканамі коду [Luminary 099][5] і [Comanche 055][6], а таксама для дадзеных файлаў, якія моглі мне не дасягнуць.\n\n## Внесак\n\nКалі ласка, прачытайце [CONTRIBUTING.md][7] перад тым, як стварыць запыт на ўключэнне.\n\n## Кампіляцыя\n\nКалі вас цікавіць кампіляцыя арыгінальнага коду, паглядзіце [Virtual AGC][8].\n\n## Прызнанне\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nАўтарскія правы | Грамадскае майна\nComanche055    | Частка када для Colossus 2A, навігацыйнага камп'ютара Каманднага Модуля (CM) Apollo 11<br>`Зборка рэвізіі 055 праграмы AGC Comanche ад NASA`<br>`2021113-051. 10:28 1 крас. 1969 года`\nLuminary099    | Частка када для Luminary 1A, навігацыйнага камп'ютара Луннага Модуля (LM) Apollo 11<br>`Зборка рэвізіі 001 праграмы AGC LMY99 ад NASA`<br>`2021112-061. 16:27 14 ліп. 1969 года`\nЗборшчык       | yaYUL\nКантакт        | Рон Буркі <info@sandroid.org>\nСайт           | www.ibiblio.org/apollo\nЦыфраванне     | Гэты код быў сканіраваны або інакш адаптаваны з цыфравых выяваў на хардкопы ад Музея MIT. Цыфраванне праводзіў Пол Фельд, і зараджана Дэбарой Дуглас з Музея. Вялікі дзякуй ім абодвум.\n\n### Кантракт і Згадкі\n\n*Узяты з [CONTRACT_AND_APPROVALS.agc]*\n\nГэтая праграма AGC таксама вядомая як Colossus 2A.\n\nГэтая праграма прызначаная для выкарыстання ў Камандным Модулі згодна з апісаннем у справаздачы `R-577`. Гэтая праграма была падрыхтаваная ў межах праекта DSR `55-23870`, які фінансуецца Цэнтрам палётных апаратаў Нацыянальнага адміністрацыі па аэранаўтыцы і касманавтыцы праз кантракт `NAS 9-4065` з Інстытутам інструментальнай лабараторыі Массачусетскага тэхналягічнага інстытуту, Кембрыдж, Массачусетс.\n\nПададзена          | Роля | Дата\n:------------------ | :--- | :---\nМаргарэт Г. Гамільтан | Кіраўнік Праграміровання \"Калосус\"<br>Навігацыя і навігацыя Apollo | 28 сак. 1969 года\n\nЗацверджаная       | Роля | Дата\n:------------------ | :--- | :---\nДаніэль Дж. Ліклі  | Дырэктар, Праграма Распрацоўкі Місій<br>Праграма Навігацыі і навігацыі Apollo | 28 сак. 1969 года\nФред Г. Мартын      | Кіраўнік Праграмы \"Калосус\"<br>Праграма Навігацыі і навігацыі Apollo | 28 сак. 1969 года\nНарман Э. Сірс      | Дырэктар Праграмы Распрацоўкі Місій<br>Праграма Навігацыі і навігацыі Apollo | 28 сак. 1969 года\nРычард Г. Баттін    | Дырэктар Праграмы Распрацоўкі Місій<br>Праграма Навігацыі і навігацыі Apollo | 28 сак. 1969 года\nДавід Дж. Хоаг      | Дырэктар<br>Праграма Навігацыі і навігацыі Apollo | 28 сак. 1969 года\nРальф Р. Рэган      | Заместнік Дырэктара<br>Інструментальная лабараторыя | 28 сак. 1969 года\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.ca.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nCodi font original del Mòdul de Comandament (Comanche055) i del Mòdul Lunar (Comanche055) de l'ordinador de navegació de l'Apollo 11 (AGC, per les seves sigles en anglès). Digitalitzat per la gent de [Virtual AGC][3] i [MIT Museum][4]. L'objectiu és esdevenir un repositori del codi font original de l'Apollo 11. Per això els *pull requests* són benvinguts davant de qualsevol problema que s'identifiqui entre les transcripcions d'aquests repositori i les còpies originals del codi font de [Luminary 099][5] i [Comanche 055][6], així com qualsevol fitxer que m'hagi pogut deixar.\n\n## Col·laboració\n\nSi us plau llegiu [CONTRIBUTING.md][7] abans d'obrir un *pull request*.\n\n## Compilació\n\nSi esteu interessat en compilar el codi font original, vegeu [Virtual AGC][8].\n\n## Autoria\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nCopyright      | Domini públic\nComanche055    | Part del codi font del Colossus 2A, l'Ordinador de Navegació Apollo (AGC, per les seves sigles en anglès) del Mòdul de Comandament (CM, per les seves sigles en anglès) de l'Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | Part of the source code for Luminary 1A, the Lunar Module's (LM) Apollo Guidance Computer (AGC) for Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nLuminary099    | Part del codi font del Luminary 1A, el Mòdul Lunar (LM, per les seves sigles en anlès) de l'Ordinador de Navegació Apollo (AGC, per les seves sigles en anglès) de l'Apollo 11.<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssemblador    | yaYUL\nContacte       | Ron Burkey <info@sandroid.org>\nWeb            | www.ibiblio.org/apollo\nDigitalització | Aquest codi font s'ha transcrit o adaptat d'alguna altra manera d'imatges digitalitzades d'una còpia física del MIT Museum. La digitalització la va fer Paul Fjeld, i la va revisar Deborah Douglas, de l'equip del museu. Moltes gràcies a tots dos.\n\n### Contracte i validacions\n\n*Copiat de [CONTRACT_AND_APPROVALS.agc]*\n\nAquest programa de l'AGC també es pot anomenar Colossus 2A.\n\nAquest programa està pensat per fer-se servir al CM tal com s'especifica a l'informe `R-577`. Aquest programa es va preparar en el marc del projecte `55-23870` de DSR, patrocinat per Manned Spacecraft Center of The National Aeronautics i l'Administració Aeroespacial a través del contracte `NAS 9-4065` del Laboratori d'Instrumentació del Massachusetts Institute of Technology, Cambridge, Massachusetts.\n\nEnviat per           | Posició | Data\n:------------------- | :------ | :---\nMargaret H. Hamilton | Cap de programació del Colossus<br>Teledirecció i navegació d'Apollo | 28 Mar 69\n\nAprovat per        | Posició | Data\n:----------------- | :------ | :---\nDaniel J. Lickly   | Director del desenvolupament programa de la missió<br>Programa de teledirecció i navegació d'Apollo | 28 Mar 69\nFred H. Martin     | Gestor del projecte Colossus <br>Programa de teledirecció i navegació d'Apollo | 28 Mar 69\nNorman E. Sears    | Director de desenvolupament de la missió<br>Programa de teledirecció i navegació d'Apollo | 28 Mar 69\nRichard H. Battin  | Director de desenvolupament de la missió<br>Programa de teledirecció i navegació d'Apollo | 28 Mar 69\nDavid G. Hoag      | Director<br>Programa de teledirecció i navegació d'Apollo | 28 Mar 69\nRalph R. Ragan     | Director adjunt<br>Laboratori d'Instrumentació | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.cz.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nOriginální zdrojové kódy navigačního počítače (AGC) Apolla 11 pro Velitelský Modul (Comanche055) a Lunární Modul (Luminary099). Digitalizováno s pomocí [Virtual AGC][3] a [MIT Museum][4]. Cílem repozitáře je udržovat původní zdrojové kódy Apolla 11. Vítáme všechny PR s úpravami problémů identifikovaných mezi přepisy v tomto repozitáři a originálními skeny pro [Luminary 099][5] a [Comanche 055][6], stejně jako soubory které mohly být přehlédnuty.\n\n## Přispívání\n\nPřed otevřením pull requestu si prosím přečtěte [CONTRIBUTING.cz.md][7]\n\n## Compiling\n\nZajímá-li vás kompilace původního zdrojového kódu, navštivte [Virtual AGC][8].\n\n## Attribution\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nCopyright      | Veřejná doména\nComanche055    | Součást zdrojového kódu pro Colossus 2A, Navigační Počítač (AGC) Velitelského Modulu (CM) pro Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | Součást zdrojového kódu pro Luminary 1A, Navigační Počítač (AGC) Lunárního Modulu (LM) pro Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler      | yaYUL\nContact        | Ron Burkey <info@sandroid.org>\nWebsite        | www.ibiblio.org/apollo\nDigitalisation | Tento zdrojový kód byl přepsán či jinak adaptován z digitalizované verze papírových materiálů z MIT Muzea. Digitalizaci provedl Paul Fjeld a zajistila Deborah Douglas z MIT Muzea. Oběma děkujeme.\n\n### Smlouva a schválení\n\n*Výňatek z [CONTRACT_AND_APPROVALS.agc]*\n\nTento AGC program bude nazýván také Colossus 2A.\n\nTento program je určen k použití v CM podle specifikací ve zprávě `R-577`. Tento program byl připraven v rámci DSR projektu `55-23870`, sponzorovaného Centrem kosmických lodí s posádkou Národního úřadu pro letectví a vesmír skrze smlouvu `NAS 9-4065` s Laboratoří instrumentace, Massachusetts Institute of Technology, Cambridge, Mass.\n\nPodal       | Role | Datum\n:------------------- | :--- | :---\nMargaret H. Hamilton | Vedoucí programátor projektu Colossus<br>Navádění a navigace Apollo | 28 Března 69\n\nSchválil       | Role | Datum\n:---------------- | :--- | :---\nDaniel J. Lickly  | Ředitel, Vývoj programů misí<br>Program navádění a navigace Apollo | 28. Března 1969\nFred H. Martin    | Manažer projektu Colossus<br>Program navádění a navigace Apollo | 28. Března 1969\nNorman E. Sears   | Ředitel, Vývoj misí<br>Program navádění a navigace Apollo | 28. Března 1969\nRichard H. Battin | Ředitel, Vývoj misí<br>Program navádění a navigace Apollo | 28. Března 1969\nDavid G. Hoag     | Ředitel<br>Program navádění a navigace Apollo | 28. Března 1969\nRalph R. Ragan    | Zástupce ředitele<br>Laboratoř instrumentace | 28. Března 1969\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.cz.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.da.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nOriginal Apollo 11 guidance computer (AGC) kildekode til Command Module (Comanche055) og Lunar Module (Luminary099). Digitaliseret af folkene på [Virtual AGC][3] og [MIT Museum][4]. Målet er at være en repo for den originale Apollo 11-kildekode. Som sådan er PR'er velkomne for ethvert problem, der er identificeret mellem transskriptionerne i dette repo og de originale kildescanninger for [Luminary 099][5] og [Comanche 055][6], såvel som alle filer, jeg kan have savnet.\n\n## Bidrag\n\nVenligst læs [CONTRIBUTING.md][7] før du åbner en pull-request.\n\n## Kompilering\n\nHvis du er interesseret i at kompilere den originale kildekode, så venligst\nse [Virtuel AGC][8].\n\n## Tilskrivning\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nOphavsret      | Offentligt domæne\nComanche055    | En del af kildekoden til Colossus 2A, Command Module's (CM) Apollo Guidance Computer (AGC) til Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | En del af kildekoden til Luminary 1A, Lunar Module's (LM) Apollo Guidance Computer (AGC) til Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nSamler      | yaYUL\nKontakt        | Ron Burkey <info@sandroid.org>\nHjemmeside        | www.ibiblio.org/apollo\nDigitalisering | Denne kildekode er blevet transskriberet eller på anden måde tilpasset fra digitaliserede billeder af en papirkopi fra MIT Museum. Digitaliseringen blev udført af Paul Fjeld, og arrangeret af Deborah Douglas fra Museet. Mange tak til begge.\n\n### Kontrakt og godkendelser\n\n*Nedarvet fra [CONTRACT_AND_APPROVALS.agc]*\n\nDette AGC-program vil også blive omtalt som Colossus 2A.\n\nDette program er beregnet til brug i CM som specificeret i rapporten \"R-577\". Dette program blev udarbejdet under DSR-projektet `55-23870`, sponsoreret af Manned Spacecraft Center fra The National Aeronautics and Space Administration gennem kontrakten `NAS 9-4065` med Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass.\n\nIndsendt af          | Rolle | Dato\n:------------------- | :--- | :---\nMargaret H. Hamilton | Colossus-programmeringsleder<br>Apollo-vejledning og -navigation | 28 Mar 69\n\nGodkendt af       | Role | Date\n:---------------- | :--- | :---\nDaniel J. Lickly  | Direktør, udvikling af missionsprogram<br>Apollo vejlednings- og navigationsprogram | 28 Mar 69\nFred H. Martin    | Colossus-projektleder<br>Apollo-vejlednings- og navigationsprogram | 28 Mar 69\nNorman E. Sears   | Direktør, Missionsudvikling<br>Apollo vejlednings- og navigationsprogram | 28 Mar 69\nRichard H. Battin | Direktør, Missionsudvikling<br>Apollo vejlednings- og navigationsprogram | 28 Mar 69\nDavid G. Hoag     | Direktør<br>Apollo vejlednings- og navigationsprogram | 28 Mar 69\nRalph R. Ragan    | Vicedirektør<br>Instrumentlaboratoriet | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.da.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.de.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nDieses Repository beinhaltet den originalen Quellcode des Apollo 11 Navigationscomputers (kurz AGC) für das Kommandomodul (Comanche055) und die Mondlandefähre (Luminary099). Digitalisiert wurde der Code durch das [Virtual AGC][3] Projekt und das [MIT Museum][4]. Ziel dieses Projektes ist es, den originalen Apollo 11 Source Code an einem zentralen Ort zu sammeln. Daher sind PRs, die Diskrepanzen zwischen den Transkripten in diesem Repository und den originalen Scans des Source Codes von [Luminary 099][5] und [Comanche 055][6] beheben, gern gesehen. Das Gleiche gilt für irgendwelche Dateien, die ich verpasst haben könnte.\n\n## Mitmachen\n\nBitte lies [CONTRIBUTING.de.md][7], bevor du einen Pull Request öffnest.\n\n## Kompilieren\n\nWenn du den originalen Quellcode gern selbst kompilieren möchtest, wirf am besten einen Blick auf das [Virtual AGC][8] Projekt.\n\n## Attribution\n\n&nbsp;          | &nbsp;\n:-------------- | :-----\nUrheberrecht    | Gemeingut\nComanche055     | Teil des Quellcodes für Colossus 2A, den Apollo Navigationscomputer (AGC) des Kommandomoduls (CM) für Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099     | Teil des Quellcodes für Luminary 1A, den Apollo Navigationscomputer (AGC) der Mondlandefähre (LM) für Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler       | yaYUL\nKontakt         | Ron Burkey <info@sandroid.org>\nWebseite        | www.ibiblio.org/apollo\nDigitalisierung | Der vorliegende Quellcode wurde von digitalisierten Bildern einer physischen Kopie des MIT Museums transkribiert oder anderweitig adaptiert. Die Digitalisierung wurde durchgeführt von Paul Fjeld nach Vorbereitung von Deborah Douglas vom MIT Museum. Vielen Dank an beide.\n\n### Vertrag und Genehmigungen\n\n*Abgeleitet aus [CONTRACT_AND_APPROVALS.agc]*\n\nDieses AGC Programm wird gleichfalls als Colossus 2A bezeichnet.\n\nDieses Programm ist für die Benutzung im CM vorgesehen, wie in Report `R577` spezifiziert. Das Programm wurde vorbereitet im Rahmen des DSR Projekts `55-23870`, gesponsert vom Zentrum für bemannte Raumfahrt der National Aeronautics and Space Administration durch Vertrag `NAS 9-4065`, geschlossen mit dem Instrumentation Laboratory des Massachusetts Institute of Technology, Cambridge, Mass.\n\nEingereicht von      | Position | Datum\n:------------------- | :------- | :----\nMargaret H. Hamilton | Leitende Colossus Programmiererin<br>Apollo Steuerung und Navigation | 28. März 1969\n\nGenehmigt von     | Position | Datum\n:---------------- | :------- | :----\nDaniel J. Lickly  | Direktor, Mission Program Development<br>Apollo Steuerungs- und Navigationsprogramm | 28. März 1969\nFred H. Martin    | Colossus Projektmanager<br>Apollo Steuerungs- und Navigationsprogramm | 28. März 1969\nNorman E. Sears   | Direktor, Mission Development<br>Apollo Steuerungs- und Navigationsprogramm | 28. März 1969\nRichard H. Battin | Direktor, Mission Development<br>Apollo Steuerungs- und Navigationsprogramm | 28. März 1969\nDavid G. Hoag     | Direktor<br>Apollo Steuerungs- und Navigationsprogramm | 28. März 1969\nRalph R. Ragan    | Stellvertretender Direktor<br>Instrumentation Laboratory | 28. März 1969\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.de.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.es.md",
    "content": "# Apolo 11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nCódigo fuente original del ordenador guía del Apolo 11 (AGC) para el módulo de comando (Comanche055) y del módulo lunar (Luminary099). Digitalizado por los chicos de [Virtual AGC][3] y [el museo del MIT][4]. El objetivo es ser un repositorio del código fuente original del Apolo 11. De este modo, serán bienvenidos los PRs relacionados con las transcripciones en este repositorio y los escaneos del código fuente original para el [Luminary 099][5] y el [Comanche 055][6], así como cualquier archivo que se me haya olvidado.\n\n## ¿Cómo contribuir?\n\nPor favor, lea [CONTRIBUTING.es.md][7] antes de abrir un pull request.\n\n## Compilar\n\nSi está interesado en compilar el código fuente original, eche un vistazo a [Virtual AGC][8].\n\n## Atribuciones\n\n&nbsp;            | &nbsp;\n:---------------- | :-----\nDerechos de autor | Dominio público\nComanche055       | Parte del código fuente del Colossus 2A, el ordenador guía Apolo (AGC) del Módulo de Comando (CM) para el Apolo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099       | Parte del código fuente del Luminary 1A, el ordenador guía Apolo (AGC) del Módulo Lunar (LM) para el Apolo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nEnsamblador       | yaYUL\nContacto          | Ron Burkey <info@sandroid.org>\nSitio Web         | www.ibiblio.org/apollo\nDigitalización    | Este código fuente ha sido transcrito o adaptado desde imágenes digitalizadas de una copia en papel presente en el museo del MIT. Los empleados del museo Paul Fjeld y Deborah Douglas realizaron la digitalización y la gestión de las imágenes, respectivamente. Muchas gracias a ambos.\n\n### Contratos y aprobaciones\n\n*Derivado de [CONTRACT_AND_APPROVALS.agc]*\n\nEste programa debe también llamarse Colossus 2A.\n\nEste programa fue creado para ser usado en el Modulo de Comando tal y como se especifica en el informe `R-577`. Este programa se preparó en el proyecto `55-23870`, patrocinado por el Centro de Naves Tripuladas del Centro Nacional de Aeronáutica y Administración Espacial a través del contrato `NAS 9-4065` del Laboratorio de Instrumentación del Instituto de Tecnología de Massachussets, Cambridge, Mass.\n\nEnviado por          | Rol | Fecha\n:------------------- | :-- | :----\nMargaret H. Hamilton | Líder de programación de Colossus <br> Apollo Guidance and Navigation | 28 mar 69\n\nAprobado por      | Rol | Fecha\n:---------------- | :-- | :----\nDaniel J. Lickly  | Director, Desarrollo del programa de misión <br> Programa de orientación y navegación Apollo | 28 mar 69\nFred H. Martin    | Colossus Project Manager <br> Programa de orientación y navegación Apollo | 28 mar 69\nNorman E. Sears   | Director de Desarrollo de Misión <br> Programa de Orientación y Navegación Apollo | 28 mar 69\nRichard H. Battin | Director de Desarrollo de Misión <br> Programa de Orientación y Navegación Apollo | 28 mar 69\nDavid G. Hoag     | Director del Programa de Orientación y Navegación Apollo | 28 mar 69\nRalph R. Ragan    | Subdirector del Laboratorio de Instrumentación | 28 mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.es.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.fa.md",
    "content": "<div dir=\"RTL\">\n\n# آپولو ۱۱\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nسورس کد اصلی سیستم هدایت آپولو ۱۱ (AGC) برای سفینه فرمان (Comanche055) و سفینه ماه‌نشین (Luminary099). دیجیتال شده توسط جمعی از افراد در [Virtual AGC][3] و [موزه‌ی MIT][4]. هدف این است که یک مخزن برای سورس کد اصلی آپولو ۱۱ باشد. همین‌طور، از پول‌ریکوئست‌ها برای هر تفاوتی بین نسخه‌ی موجود در این مخزن با اسکن‌ فایل‌های اصلی برای [Luminary 099][5] و [Comanche 055][6] و همچنین هر فایل دیگری که از دست من در رفته باشد،‌ استقبال می‌شود.\n\n## مشارکت\n\nلطفاً [CONTRIBUTING.md][7] را قبل از باز کردن پول‌ریکوئست بخوانید.\n\n## کامپایل کردن\n\nاگر علاقه‌مند به کامپایل کردن سورس کد هستید، به [AGC مجازی][8] مراجعه کنید.\n\n## مجوز\n\n&nbsp;       | &nbsp;\n-----------: | -----:\nحق نشر      | مالکیت عمومی\nComanche055  | بخشی از سورس کد Colossus 2A، سیستم هدایت (AGC) سفینه فرمان (CM) آپولو ۱۱<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099  | بخشی از سورس کد Luminary 1A، سیستم هدایت سفینه ماه‌نشین (LM) آپولو ۱۱<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nاسمبلر       | yaYUL\nتماس        |     رون برکی <info@sandroid.org>\nوبسایت       | www.ibiblio.org/apollo\nدیجیتال کردن | این سورس کد رونویسی شده یا از تصاویر دیجیتالی از یک مرجع کاغذی در موزه MIT به دست آمده است. دیجیتالی کردن توسط پول فیلد انجام شده و توسط دبرا داگلاس، از کارکنان موزه، مرتب شده است. با تشکر از هر دو آن‌ها.\n\n### تاییدیه\n\n*برگرفته از [CONTRACT_AND_APPROVALS.agc]*\n\nبرنامه AGC باید Colossus 2A خطاب شود.\n\nاین برنامه به منظور استفاده در CM است که در گزارش `R-577` مشخص شده است. این برنامه تحت پروژه DSR `55-23870`، با حمایت مرکز فضایی جانسون اداره کل ملی هوانوردی و فضا تحت قرارداد `NAS 9-4065` با آزمایشگاه ابزار موسسه فناوری ماساچوست آماده شده است.\n\nارائه شده توسط          | نقش | تاریخ\n--------------------: | ---: | ---:\nمارگارت ه. همیلتون  | برنامه‌نویس ارشد Colussus<br>مسیریابی و هدایت آپولو | ۲۸ مارس ۱۹۶۹\n\nتایید شده توسط          | نقش | تاریخ\n--------------------: | ---: | ---:\nدنیل ج. لیکی  | مدیر، توسعه برنامه عملیات، برنامه مسیریابی و هدایت آپولو | ۲۸ مارس ۱۹۶۹\nفرد ه. مارتین    | مدیر پروژه Colossus، برنامه مسیریابی و هدایت آپولو | ۲۸ مارس ۱۹۶۹\nنرمان ای. سیرز    | مدیر، توسعه برنامه عملیات، برنامه مسیریابی و هدایت آپولو | ۲۸ مارس ۱۹۶۹\nریچارد ه. باتین    | مدیر، توسعه برنامه عملیات، برنامه مسیریابی و هدایت آپولو | ۲۸ مارس ۱۹۶۹\nدیوید جی. هوگ    | مدیر، برنامه مسیریابی و هدایت آپولو | ۲۸ مارس ۱۹۶۹\nرالف ه. راگان    |قائم مقام ، برنامه مسیریابی و هدایت آپولو | ۲۸ مارس ۱۹۶۹\n\n</div>\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.fi.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN],\n[മലയാളം][ML]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nAlkuperäinen Apollo 11 guidance computer (AGC) lähdekoodi Command Module (Comanche055) ja Lunar Module (Luminary099) varten. Digitalisoitu [Virtual AGC][3] -proektin ja [MIT Museum][4] toimesta. Tavoitteena on toimia alkuperäisen Apollo 11 -lähdekoodin arkistona. Siksi pull requestit ovat tervetulleita, jos tässä repositoriossa olevien transkriptioiden ja alkuperäisten lähdekoodiskannausten ([Luminary 099][5] ja [Comanche 055][6]) välillä havaitaan eroavaisuuksia, tai jos jokin tiedosto on jäänyt puuttumaan.\n\n## Osallistuminen\n\nOle hyvä ja lue [CONTRIBUTING.md][7] ennen pull requestin avaamista.\n\n## Lähdekoodin kääntäminen\n\nJos olet kiinnostunut kääntämään alkuperäisen lähdekoodin, tutustu kohtaan [Virtual AGC][8].\n\n## Lähdeviitteet\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nTekijänoikeudet| Public domain\nComanche055    | Osa Colossus 2A -ohjelman lähdekoodista, joka toimi Apollo 11:n Command Modulen (CM) ohjaustietokoneessa Apollo Guidance Computer (AGC).<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | Osa Luminary 1A -ohjelman lähdekoodista, joka toimi Apollo 11:n kuumoduulin Lunar Module (LM) ohjaustietokoneessa Apollo Guidance Computer (AGC).<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembleri     | yaYUL\nYhteystiedot   | Ron Burkey <info@sandroid.org>\nSivusto        | www.ibiblio.org/apollo\nDigitalisointi | Tämä lähdekoodi on kirjoitettu uudelleen tai muuten mukautettu MIT-museon hallussa olleen paperiversion digitoiduista kuvista. Digitalisoinnin suoritti Paul Fjeld, ja sen järjesti Deborah Douglas museolta. Suuret kiitokset heille molemmille.\n\n### Sopimus ja Hyväksynnät\n\n*Peräisin tiedostosta [CONTRACT_AND_APPROVALS.agc]*\n\nTätä AGC-ohjelmaa kutsutaan myös nimellä Colossus 2A.\n\nOhjelma on tarkoitettu käytettäväksi komentomoduulissa Command Module, kuten raportissa `R-577` on määritelty. Ohjelma on valmistettu DSR-projektin `55-23870` puitteissa, jota sponsoroi Manned Spacecraft Center of The National Aeronautics and Space Administration sopimuksen `NAS 9-4065` kautta yhteistyössä Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass. kanssa.\n\nLähettäjä            | Rooli | Päivämäärä\n:------------------- | :--- | :---\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28. Maaliskuuta 69\n\nHyväksyjät        | Rooli | Päivämäärä\n:---------------- | :--- | :---\nDaniel J. Lickly  | Director, Mission Program Development<br>Apollo Guidance and Navigation Program | 28. Maaliskuuta 69\nFred H. Martin    | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28. Maaliskuuta 69\nNorman E. Sears   | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28. Maaliskuuta 69\nRichard H. Battin | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28. Maaliskuuta 69\nDavid G. Hoag     | Director<br>Apollo Guidance and Navigation Program | 28. Maaliskuuta 69\nRalph R. Ragan    | Deputy Director<br>Instrumentation Laboratory | 28. Maaliskuuta 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.fr.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nCode source original de l'ordinateur de guidage Apollo 11 (AGC) pour le module de commande (Comanche055) et le module lunaire (Luminary099). Numérisé par les gens du [Virtual AGC][3] et du [MIT Museum][4]. Le but est d'être un repo pour le code source original d'Apollo 11. En tant que tel, les PR sont les bienvenues pour tous les problèmes identifiés entre les transcriptions dans ce référentiel et les scans source originaux pour [Luminary 099][5] et [Comanche 055][6], ainsi que pour tous les fichiers que j'ai pu manquer.\n\n## Contribuer\n\nMerci de lire [CONTRIBUTING.fr.md][7] avant d'ouvrir une pull request.\n\n## Compilation\n\nSi vous êtes intéressé par la compilation du code source original, visitez [Virtual AGC][8].\n\n## Attribution\n\n&nbsp;        | &nbsp;\n:------------ | :-----\nCopyright     | Domaine public\nComanche055   | Partie du code source de Colossus 2A, le module de commande (CM) Ordinateur embarqué de navigation (AGC), pour Apollo 11.<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099   | Partie du code source de Luminary 1A, le module de lunaire (LM) Ordinateur embarqué de navigation (AGC), pour Apollo 11.<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembleur    | yaYUL\nContact       | Ron Burkey <info@sandroid.org>\nSite internet | www.ibiblio.org/apollo\nNumérisation  | Ce code source a été transcrit ou autrement adapté à partir de données numérisées des images d'une copie papier du Musée du MIT. La numérisation a été effectuée par Paul Fjeld, et organisé par Deborah Douglas du Musée. Un grand merci à eux deux.\n\n### Contrat et Approbations\n\n*Dérivé de [CONTRACT_AND_APPROVALS.agc]*\n\n```plain\nCE PROGRAMME DE L'AGC SERA ÉGALEMENT DÉSIGNÉ SOUS LE NOM DE :\n    COLOSSUS 2A\n\nCE PROGRAMME EST DESTINÉ À ÊTRE UTILISÉ EN CM COMME INDIQUÉ\nDANS LE RAPPORT R-577.  CE PROGRAMME A ÉTÉ PRÉPARÉ DANS LE CADRE\nDU DSR PROJET 55-23870, PARRAINÉ PAR L'ENGIN SPATIAL HABITÉ\nCENTRE NATIONAL DE L'AÉRONAUTIQUE ET DE L'ADMINISTRATION SPATIALE\nPAR LE BIAIS DU CONTRAT NAS 9-4065 AVEC LE LABORATOIRE\nD'INSTRUMENTATION, INSTITUT DE TECHNOLOGIE DU MASSACHUSETTS,\nCAMBRIDGE, MASS.\n```\n\nSoumis par           | Rôle | Date\n:------------------- | :--- | :---\nMargaret H. Hamilton | Chef de programmation Colossus<br>Programme de guidage et de navigation Apollo | 28 Mar 69\n\nApprouvé par      | Rôle | Date\n:---------------- | :--- | :---\nDaniel J. Lickly  | Directeur, Développement des programmes de mission<br>Programme de guidage et de navigation Apollo | 28 Mar 69\nFred H. Martin    | Chef de projet Colossus<br>Programme de guidage et de navigation Apollo | 28 Mar 69\nNorman E. Sears   | Directeur, Développement de la mission<br>Programme de guidage et de navigation Apollo | 28 Mar 69\nRichard H. Battin | Directeur, Développement de la mission<br>Programme de guidage et de navigation Apollo | 28 Mar 69\nDavid G. Hoag     | Directeur<br>Programme de guidage et de navigation Apollo | 28 Mar 69\nRalph R. Ragan    | Directeur adjoint<br>Laboratoire d'instrumentation | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.fr.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.gl.md",
    "content": "# Apollo 11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nCódigo fonte orixinal do ordenador guía do Apollo 11 (AGC) para o módulo de comando (Comanche055) e o módulo lunar (Luminary099). Dixitalizado polos rapaces de [Virtual AGC][3] y [o museo do MIT][4]. O obxetivo é ser un repositorio do código fonte orixinal do Apollo 11. Deste modo, serán benvidos os PRs relacionados coas transcricións neste repositorio e os escaneos do código fonte orixinal para o [Luminary 099][5] e o [Comanche 055][6], así como calquera ficheiro que esquecera.\n\n## Cómo contribuír\n\nPor favor, lea [CONTRIBUTING.gl.md][7] antes de abrir un pull request.\n\n## Compilar\n\nSe estás interesado en compilar o código fonte orixinal, bótalle un ollo a [Virtual AGC][8].\n\n## Atribucións\n\n&nbsp;            | &nbsp;\n:---------------- | :-----\nDereitos de autor | Dominio público\nComanche055       | Parte do código fonte do Colossus 2A, o ordenador guía Apollo (AGC) do Módulo de Comando (CM) para o Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099       | Parte do código fonte do Luminary 1A, o ordenador guía Apollo (AGC) do Módulo Lunar (LM) para o Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nEnsamblador       | yaYUL\nContacto          | Ron Burkey <info@sandroid.org>\nPáxina Web        | www.ibiblio.org/apollo\nDixitalización    | Este código fonte transcribiuse ou adaptouse dende imaxes dixitalizadas dunha copia en papel presente no museo do MIT. Os empregados do museo Paul Fjeld e Deborah Douglas realizaron a dixitalización e a xestión das imaxes, respectivamente. Moitas grazas a ambos os dous.\n\n### Contratos e aprobacións\n\n*Derivado de [CONTRACT_AND_APPROVALS.agc]*\n\nEste programa tamén debe chamarse Colossus 2A.\n\nEste programa foi creado para ser empregado no CM tal e como especifícase no informe `R-577`. Este programa preparouse no proxecto `55-23870`, patrocinado polo Centro de Naves Tripuladas do Centro Nacional de Aeronáutica e Administración Espacial a través do contrato `NAS 9-4065` do Laboratorio de Instrumentación do Instituto de Tecnoloxía de Massachussets, Cambridge, Mass.\n\nEnviado por          | Rol | Data\n:------------------- | :-- | :----\nMargaret H. Hamilton | Líder de programación de Colossus <br> Apollo Guidance and Navigation | 28 mar 69\n\nAprobado por      | Rol | Data\n:---------------- | :-- | :----\nDaniel J. Lickly  | Director, Desenvolvemento do programa de misión <br> Programa de orientación e navegación Apollo | 28 mar 69\nFred H. Martin    | Colossus Project Manager <br> Programa de orientación e navegación Apollo | 28 mar 69\nNorman E. Sears   | Director do Desenvolvemento de Misión <br> Programa de Orientación e Navegación Apollo | 28 mar 69\nRichard H. Battin | Director do Desenvolvemento de Misión <br> Programa de Orientación e Navegación Apollo | 28 mar 69\nDavid G. Hoag     | Director do Programa de Orientación e Navegación Apollo | 28 mar 69\nRalph R. Ragan    | Subdirector do Laboratorio de Instrumentación | 28 mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.gl.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.gr.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nΟ πρωτότυπος πηγαίος κώδικας του υπολογιστή πλοήγησης (guidance computer) του Apollo 11 (AGC) για το Command Module (Comanche055) και το Lunar Module (Luminary099). Ψηφιοποίηση από ανθρώπους στο [Virtual AGC][3] και το [MIT Museum][4]. Ο στόχος είναι αυτό το αποθετήριο να παρέχει όλο τον πηγαίο κώδικα του Apollo 11. Ως εκ τούτου, τα PRs είναι ευπρόσδεκτα για τυχόν ζητήματα που εντοπίζονται μεταξύ των μεταγραφών σε αυτό το αποθετήριο και των αρχικών σαρώσεων προέλευσης για το [Luminary 099][5] και το [Comanche 055][6], καθώς επίσης και για αρχεία που λείπουν.\n\n## Συνεισφορά\n\nΠαρακαλώ διαβάστε το [CONTRIBUTING.gr.md][7] πριν ανοίξετε ένα pull request.\n\n## Σύνταξη πηγαίου κώδικα (Compiling)\n\nΑν ενδιαφέρεστε να κάνετε compile τον πρωτότυπο πηγαίο κώδικα, δείτε το [Virtual AGC][8].\n\n## Απόδοση\n\n&nbsp;                | &nbsp;\n:-------------        | :-----\nΠνευματική ιδιοκτησία | Δημόσιος τομέας (Public domain)\nComanche055           | Μέρος του πηγαίου κώδικα για το Colossus 2A, το Command Module's (CM) Apollo Guidance Computer (AGC) για το Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099           | Μέρος του πηγαίου κώδικα για το Luminary 1A, το Lollar Module's (LM) Apollo Guidance Computer (AGC) για το Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nΣυμβολομεταφράστης    | yaYUL\nΕπικοινωνία           | Ron Burkey <info@sandroid.org>\nΙστοσελίδα            | www.ibiblio.org/apollo\nΨηφιοποίηση           | Αυτός ο πηγαίος κώδικας έχει μεταγραφεί ή αλλιώς προσαρμοστεί από ψηφιοποιημένες εικόνες έντυπου αντιγράφου από το Μουσείο MIT. Η ψηφιοποίηση πραγματοποιήθηκε από τον Paul Fjeld και διευθετήθηκε από την Deborah Douglas του Μουσείου. Ευχαριστώ πολύ και τους δύο.\n\n### Σύμβαση και εγκρίσεις\n\nΠροέρχεται από το [CONTRACT_AND_APPROVALS.agc]*\n\nΤο πρόγραμμα του AGC αναφέρεται επίσης και ως Colossus 2A.\n\nΑυτό το πρόγραμμα προορίζεται για χρήση στο CM, όπως ορίζεται στην αναφορά R-577. Αυτό το πρόγραμμα προετοιμάστηκε στο πλαίσιο του έργου DSR 55-23870, που χρηματοδοτήθηκε από το Manned Spacecraft Center of the National Aeronautics and Space Administration μέσω της σύμβασης NAS 9-4065 με το Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass.\n\nΥποβλήθηκε από       | Ρόλος | Ημερομηνία\n:------------------- | :--- | :---\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 Mar 69\n\nΕγκρίθηκε από     | Ρόλος | Ημερομηνία\n:---------------- | :--- | :---\nDaniel J. Lickly  | Διευθυντής, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nFred H. Martin    | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28 Mar 69\nNorman E. Sears   | Διευθυντής, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRichard H. Battin | Διευθυντής, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nDavid G. Hoag     | Διευθυντής<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRalph R. Ragan    | Αναπληρωτής Διευθυντής<br>Instrumentation Laboratory | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.gr.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.hi_in.md",
    "content": "# अपोलो -11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nअपोलो ११ मार्गदर्शन कम्प्यूटर (Apollo 11 Guidance computer, AGC) कमांड मॉड्यूल (Comanche055) तथा चंद्र मॉड्यूल (Luminary099) का मूल नियम संग्रह। इसे [Virtual AGC][3] एवं [MIT Museum][4] के सदस्यों द्वारा अंक्रिकित किया गया है। हमारा मुख्य उद्देश्य अपोलो ११ के मूल नियम संग्रह को संकलित करना है। यदि आपने इस संग्रह के प्रतिलेखन एवं [Luminary 099][5] और [Comanche 055][6] के बीच में किसी भी फर्क का अनावरण किया है, उस दशा में आपका सहयोग PR के रूप में बहुत ही अविवादित है।\n\n## योगदान\n\nपुल रिक्वेस्ट खोलने से पहले कृपया निर्देशों [CONTRIBUTING.md][7] को पढ़ें।\n\n## संचयन\n\nयदि आप इस नियम संग्रह को संचयित करना चाहते है तो [Virtual AGC][8] को देखें।\n\n## रोपण\n\n&nbsp;      | &nbsp;\n:---------- | :-----\nकॉपीराइट      | पब्लिक डोमेन\nComanche055 | कोलोसस २ए (Colossus 2), अपोलो ११ के नियंत्रण भाग (CM) के लिए निर्देशरण संगड़क यंत्र (AGC) के नियमसंग्रह का हिस्सा। <br>`नासा द्वारा एजीसी कार्यक्रम कॉमचेस के समेकित संशोधन 055`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099 |  ल्यूमिनरी १ए, अपोलो ११ के चंद्र भाग (LM) के लिए निर्देशरण संगड़क यंत्र (AGC) के नियमसंग्रह का हिस्सा। <br>`नासा द्वारा एजीसी(AGC) कार्यक्रम LMY99 के समेकित संशोधन 001`<br>`2021112-061. 16:27 JUL. 14, 1969`\nकोडांतरक     | yaYUL\nसंपर्क करें     | Ron Burkey <info@sandroid.org>\nवेबसाइट      | www.ibiblio.org/apollo\nडिजिटलीकरण   | यह नियम संग्रह एमआईटी संग्रहालय से हार्डकॉपी की डिजिटल छवियों से प्रतिलिपि या अन्यथा अनुकूलित किया गया है। डिजिटलीकरण Paul Fjeld द्वारा किया गया था, और संग्रहालय Deborah Douglas द्वारा इसकी व्यवस्था की गई थी। दोनों के लिए बहुत धन्यवाद।\n\n### अनुबंध और स्वीकृतियां\n\n*से व्युत्पन्न [CONTRACT_AND_APPROVALS.agc]*\n\nइस एजीसी कार्यक्रम को कोलोसस 2ए(Colossus 2A.) के रूप में भी जाना जाएगा।\n\nइस कार्यक्रम का उद्देश्य कमांड मॉड्यूल में उपयोग के लिए किया गया है जैसा रिपोर्ट `R-577` में निर्दिष्ट है यह कार्यक्रम डीएसआर परियोजना `55-23870` के तहत तैयार किया गया था, इंस्ट्रुमेंटेशन प्रयोगशाला, मैसाचुसेट्स इंस्टिट्यूट ऑफ टेक्नोलॉजी, कैम्ब्रिज, मास के साथ अनुबंध `NAS 9-4065` के माध्यम से राष्ट्रीय एयरोनॉटिक्स और अंतरिक्ष प्रशासन के मानव अंतरिक्षयान केंद्र द्वारा प्रायोजित।\n\nद्वारा प्रस्तुत              | भूमिका | तारीख\n:------------------- | :---- | :---\nMargaret H. Hamilton | कोलोसस(Colossus) प्रोग्रामिंग लीडर<br>अपोलो मार्गदर्शन और नेविगेशन | २८ मार्च ६९\n\nके द्वारा अनुमोदित      | भूमिका | तारीख\n:---------------- | :---- | :---\nDaniel J. Lickly  | निदेशक, मिशन कार्यक्रम विकास<br>अपोलो मार्गदर्शन और नेविगेशन कार्यक्रम | २८ मार्च ६९\nFred H. Martin    | बादशाह परियोजना प्रबंधक<br>अपोलो मार्गदर्शन और नेविगेशन कार्यक्रम | २८ मार्च ६९\nNorman E. Sears   | निदेशक, मिशन विकास<br>अपोलो मार्गदर्शन और नेविगेशन कार्यक्रम | २८ मार्च ६९\nRichard H. Battin | निदेशक, मिशन विकास<br>अपोलो मार्गदर्शन और नेविगेशन कार्यक्रम | २८ मार्च ६९\nDavid G. Hoag     | निदेशक<br>अपोलो मार्गदर्शन और नेविगेशन कार्यक्रम | २८ मार्च ६९\nRalph R. Ragan    | उप निदेशक<br>इंस्ट्रुमेंटेशन प्रयोगशाला | २८ मार्च ६९\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.id.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nKode sumber orisinil Komputer Pemandu Apollo 11 (AGC) untuk Modul Komando (Comanche055) dan Modul Bulan (Luminary099). Didigitalkan oleh [Virtual AGC][3] dan [MIT Museum][4]. Tujuan dari repo ini adalah untuk menjadi repo kode sumber Apollo 11 yang orisinil. Dengan demikian, siapapun dipersilakan untuk mengirimkan Pull Request untuk issue atau perbedaan apapun yang ditemukan antara transkripsi di repositori ini dengan kode sumber orisinil hasil scan untuk [Luminary 099][5] dan [Comanche 055][6], juga file apapun yang mungkin lupa saya masukkan.\n\n## Berkontribusi\n\nSilakan membaca [CONTRIBUTING.md][7] sebelum mengirimkan pull request.\n\n## Kompilasi\n\nJika anda tertarik untuk mengkompilasi kode sumber orisinil ini, silakan mengecek [Virtual AGC][8]\n\n## Atribusi\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nCopyright      | Domain Publik\nComanche055    | Bagian dari kode sumber untuk Colossus 2A, Modul Komando (CM) dari Komputer Pemandu Apollo (AGC) untuk Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | Bagian dari kode sumber untuk Luminary 1A, Modul Bulan (LM) dari Komputer Pemandu Apollo (AGC) untuk Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler      | yaYUL\nContact        | Ron Burkey <info@sandroid.org>\nWebsite        | www.ibiblio.org/apollo\nDigitalization | Kode sumber ini telah ditranskripsikan atau diadaptasi dari gambar digital sebuah hardcopy dari Museum MIT. Digitalisasi dilakukan oleh Paul Fjeld, dan diatur oleh Deborah Douglas dari Museum. Terima kasih banyak untuk keduanya.\n\n### Kontrak dan Persetujuan\n\n*Berasal dari [CONTRACT_AND_APPROVALS.agc]*\n\nProgram AGC ini juga harus disebut sebagai Colossus 2A.\n\nProgram ini dimaksudkan untuk digunakan di dalam Modul Komando (CM) sebagaimana ditentukan dalam laporan `R-577`. Program ini disiapkan dibawah proyek DSR `55-23870`, disponsori oleh Pusat Pesawat Ruang Angkasa Berawak Badan Penerbangan dan Antariksa (NASA) melalui kontrak `NAS 9-4065` dengan Laboratorium Instrumentasi, Institut Teknologi Massachusetts (MIT), Cambridge, Mass.\n\nDiajukan oleh        | Peran | Tanggal\n:------------------- | :---- | :------\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 Maret 1969\n\nDisetujui oleh    | Peran | Tanggal\n:---------------- | :---- | :------\nDaniel J. Lickly  | Director, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 Maret 1969\nFred H. Martin    | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28 Maret 1969\nNorman E. Sears   | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Maret 1969\nRichard H. Battin | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Maret 1969\nDavid G. Hoag     | Director<br>Apollo Guidance and Navigation Program | 28 Maret 1969\nRalph R. Ragan    | Deputy Director<br>Instrumentation Laboratory | 28 Maret 1969\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.it.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nCodice sorgente dell'\"Apollo 11 Guidance Computer (AGC)\" utilizzato dal Modulo di Comando (\"Comanche055\") e dal Modulo Lunare (Luminary099). Digitalizzato dagli autori del \"[Virtual AGC][3]\" e dal \"[MIT Museum][4]\". L'obbiettivo è quello di avere un repository contenente il codice usato dalla missione Apollo 11. Di conseguenza, i PR sono i benvenuti per qualsiasi problema identificato, confrontando le trascrizioni in questo repository e le scansioni originali del codice del [Luminary 099][5] e del [Comanche 055][6], sono benvenute.\n\n## Contribuire\n\nPer favore, leggere [CONTRIBUTING.it.md][7] prima di aprire una Pull Request (PR).\n\n## Compilare\n\nSe sei interessato a compilare il codice sorgente originale dai un'occhiata a [Virtual AGC][8].\n\n## Crediti\n\n&nbsp;           | &nbsp;\n:--------------- | :-----\nCopyright        | Dominio Pubblico\nComanche055      | Parte del codice sorgente del Colossus 2A, il modulo di comando (CM) dell'Apollo Guidance Computer (AGC) dell'Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099      | Parte del codice sorgente del Luminary 1A, il modulo lunare (LM) dell'Apollo Guidance Computer (AGC) dell'Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler        | yaYUL\nContatti         | Ron Burkey <info@sandroid.org>\nWebsite          | www.ibiblio.org/apollo\nDigitalizzazione | Questo codice sorgente è stato trascritto utilizzando le copie cartacee del codice sorgente presenti al MIT Museum. La digitalizzazione è stata svolta da Paul Fjeld ed organizzata da Deborah Douglas del MIT Museum. Grazie mille ad entrambi.\n\n### Contratto e Approvazioni\n\n*Derivato da [CONTRACT_AND_APPROVALS.agc]*\n\nQuesto AGC deve fare riferimento al Colossus 2A.\n\nQuesto programma è destinato all'uso nel CM (Modulo Di Comando) come specificato nel report `R-577`. Questo programma è stato sviluppato nell'ambito del progetto DSR `55-23870`, promosso dal \"Manned Spacecraft Center of The National Aeronautics and Space Administration\" attraverso il contratto `NAS 9-4065` siglato con \"l'Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass\".\n\nPresentato da        | Ruolo | Data\n:------------------- | :---- | :---\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 Mar 69\n\nApprovato da      | Ruolo | Data\n:---------------- | :---- | :---\nDaniel J. Lickly  | Direttore, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nFred H. Martin    | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28 Mar 69\nNorman E. Sears   | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRichard H. Battin | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nDavid G. Hoag     | Direttore<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRalph R. Ragan    | Vice direttore<br>Instrumentation Laboratory | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.it.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.ja.md",
    "content": "# アポロ11号\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\n司令船・機械船(Comanche055)および月着陸船(Luminary099)用のオリジナルのアポロ11号誘導コンピュータ(AGC)のソースコード。[Virtual AGC][3] と [MIT Museum][4] によってデジタル化された。このリポジトリは、オリジナルのアポロ11号のソースコードを完全に再現して保管することを目的としています。そのため、このリポジトリと [Luminary 099][5] および [Comanche 055][6] の間に発見された問題や見落としがある可能性のあるファイルに対してのPRは歓迎します。\n\n## 貢献\n\nプルリクエストを開く前に [CONTRIBUTING.ja.md][7] をお読みください。\n\n## コンパイル\n\nもしコンパイルをご希望の場合 [Virtual AGC][8] を確認してください。\n\n## 権限\n\n&nbsp;      | &nbsp;\n:---------- | :-----\n著作権       | パブリックドメイン\nComanche055 | アポロ11号用の司令船・機械船用のアポロ11号誘導コンピュータ、Colossus 2Aのソースコードの一部<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099 | アポロ11号用の月着陸船用のアポロ11号誘導コンピュータ、Luminary 1Aのソースコードの一部<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nアセンブラ    | yaYUL\nコンタクト    | Ron Burkey <info@sandroid.org>\nウェブサイト  | www.ibiblio.org/apollo\nデジタル化    | このソースコードは、MIT Museumからハードコピーをデジタル化、移したものです。 デジタル化は Paul Fjeld によって行われ、 Deborah Douglas がまとめました。\n\n### 契約と承認\n\n*[CONTRACT_AND_APPROVALS.agc] から派生*\n\n本アポロ誘導コンピュータプログラムは、コロッサス 2Aから参照されます。\n\nこのプログラムは、`R-577` に指定された司令船モジュールに使用されます。このプロジェクトは、DSR project `55-23870` の元で準備され、NASAの有人宇宙船センターがMIT機械研究所との `NAS 9-4065` 契約により始まりました。\n\nSubmitted by         | Role | Date\n:------------------- | :--- | :---\nMargaret H. Hamilton | コロッサス プログラミングリーダー<br>アポロ誘導と航海 | 1969年3月28日\n\nApproved by       | Role | Date\n:---------------- | :--- | :---\nDaniel J. Lickly  | ディレクター、ミッションプログラムの開発<br>アポロ誘導と航法プログラム | 1969年3月28日\nFred H. Martin    | コロッサス プロジェクトマネージャー<br>アポロ誘導と航法プログラム | 1969年3月28日\nNorman E. Sears   | ディレクター、ミッションプログラムの開発<br>アポロ誘導と航法プログラム | 1969年3月28日\nRichard H. Battin | ディレクター、ミッションプログラムの開発<br>アポロ誘導と航法プログラム | 1969年3月28日\nDavid G. Hoag     | ディレクター<br>アポロ誘導と航法プログラム | 1969年3月28日\nRalph R. Ragan    | 副ディレクター<br>機械研究所 | 1969年3月28日\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.ja.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.jv.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Basa Jawa][JV],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN],\n[മലയാളം][ML]\n\n[AR]:Translations/README.ar.md\n[AS_IN]:Translations/README.as_in.md\n[AZ]:Translations/README.az.md\n[BD_BN]:Translations/README.bd_bn.md\n[BE]:Translations/README.be.md\n[CA]:Translations/README.ca.md\n[CZ]:Translations/README.cz.md\n[DA]:Translations/README.da.md\n[DE]:Translations/README.de.md\n[EN]:README.md\n[ES]:Translations/README.es.md\n[FA]:Translations/README.fa.md\n[FI]:README.fi.md\n[FR]:Translations/README.fr.md\n[GL]:Translations/README.gl.md\n[GR]:Translations/README.gr.md\n[HI_IN]:Translations/README.hi_in.md\n[ID]:Translations/README.id.md\n[IT]:Translations/README.it.md\n[JA]:Translations/README.ja.md\n[JV]:Translations/README.jv.md\n[KO_KR]:Translations/README.ko_kr.md\n[KU]:Translations/README.ku.md\n[LT]:Translations/README.lt.md\n[MM]:Translations/README.mm.md\n[MN]:Translations/README.mn.md\n[NE]:Translations/README.ne.md\n[NL]:Translations/README.nl.md\n[NO]:Translations/README.no.md\n[PL]:Translations/README.pl.md\n[PT_BR]:Translations/README.pt_br.md\n[RO]:Translations/README.ro.md\n[RU]:Translations/README.ru.md\n[SV]:Translations/README.sv.md\n[TR]:Translations/README.tr.md\n[UK]:Translations/README.uk.md\n[VI]:Translations/README.vi.md\n[ZH_CN]:Translations/README.zh_cn.md\n[ZH_TW]:Translations/README.zh_tw.md\n[ML]:Translations/README.ml.md\nKode sumber asli Apollo 11 guidance computer (AGC) kanggo Command Module (Comanche055) lan Lunar Module (Luminary099). Digitisasi déning kanca-kanca saka [Virtual AGC][3] lan [MIT Museum][4]. Tujuané yaiku ngumpulake kode sumber asli Apollo 11 nang repo iki. Mulane, PR ditrima kanggo saben revisi kesalahan antarané transkripsi nang repo iki karo hasil pindai asli [Luminary 099][5] lan [Comanche 055][6], uga yen ana file sing kélangan.\n\n## Nyumbang\n\nMangga diwaca dhisik [CONTRIBUTING.md][7] sadurunge nggawe pull request.\n\n## Nglumpukake\n\nYen kowe kepengin nyoba ngompile kode sumber asli, bukak [Virtual AGC][8].\n\n## Atribusi\n\n&nbsp;         | &nbsp;  \n:------------- | :-----  \nHak cipta      | Domain publik  \nComanche055    | Bagéan saka kode sumber kanggo Colossus 2A, Guidance Computer (AGC) Modul Komando (CM) kanggo Apollo 11<br>`Assemble revisi 055 saka program AGC Comanche déning NASA`<br>`2021113-051. 10:28 APR. 1, 1969`  \nLuminary099    | Bagéan saka kode sumber kanggo Luminary 1A, Guidance Computer (AGC) Modul Bulan (LM) kanggo Apollo 11<br>`Assemble revisi 001 saka program AGC LMY99 déning NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`  \nAssembler      | yaYUL  \nKontak         | Ron Burkey <info@sandroid.org>  \nSitus web      | www.ibiblio.org/apollo  \nDigitalisasi   | Kode sumber iki wis ditranskripsi utawa diadaptasi saka gambar digital salinan kertas saka MIT Museum. Proses digitisasi ditindakake déning Paul Fjeld, lan diatur déning Deborah Douglas saka Museum. Matur nuwun sanget kanggo loro-loroné.  \n\n\n### Kontrak lan Persetujuan\n\n*Asal saka [CONTRACT_AND_APPROVALS.agc]*\n\nProgram AGC iki uga bakal disebut minangka Colossus 2A.\n\nProgram iki dimaksudaké kanggo digunakaké ing Modul Komando kaya sing ditemtokaké ing laporan `R-577`. Program iki disiapaké ing ngisor proyek DSR `55-23870`, disponsori déning Manned Spacecraft Center saka The National Aeronautics and Space Administration liwat kontrak `NAS 9-4065` karo Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass.\n\nDikirim déning        | Peran | Tanggal  \n:------------------- | :--- | :---  \nMargaret H. Hamilton | Pemimpin Program Colossus<br>Apollo Guidance lan Navigasi | 28 Mar 69  \n\nDisetujoni déning    | Peran | Tanggal  \n:------------------- | :--- | :---  \nDaniel J. Lickly     | Direktur, Pangembangan Program Misi<br>Apollo Guidance lan Navigasi | 28 Mar 69  \nFred H. Martin       | Manajer Proyek Colossus<br>Apollo Guidance lan Navigasi | 28 Mar 69  \nNorman E. Sears      | Direktur, Pangembangan Misi<br>Apollo Guidance lan Navigasi | 28 Mar 69  \nRichard H. Battin    | Direktur, Pangembangan Misi<br>Apollo Guidance lan Navigasi | 28 Mar 69  \nDavid G. Hoag        | Direktur<br>Apollo Guidance lan Navigasi | 28 Mar 69  \nRalph R. Ragan       | Wakil Direktur<br>Instrumentation Laboratory | 28 Mar 69  \n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.ko_kr.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\n사령선 모듈 (Comanche055) 및 달 착륙선 모듈 (Luminary099)을 위한 아폴로 11호 유도 컴퓨터(AGC)의 소스코드입니다. [Virtual AGC][3] 및 [MIT Museum][4]에 의해 디지털화되었습니다. 이 레포지토리는 아폴로 11호의 원본 소스코드를 완벽하게 재현하여 보관하는 것을 목표로 합니다. 따라서 원본과 본 디지털본 간에 발견된 모든 이슈, 또한 빠뜨렸을 듯한 파일들에 대해 PR을 환영합니다.\n\n## 기여하기\n\nPR을 열기 전에 [CONTRIBUTING.ko_kr.md][7] 을 읽어보시기 바랍니다.\n\n## 컴파일\n\n만약 컴파일을 원하신다면 [Virtual AGC][8] 을 확인하여 보십시오.\n\n## 권한\n\n&nbsp;      | &nbsp;\n:---------- | :-----\n저작권       | 퍼블릭 도메인\nComanche055 | Part of the source code for Colossus 2A, the Command Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099 | Part of the source code for Luminary 1A, the Lunar Module's (LM) Apollo Guidance Computer (AGC) for Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\n어셈블러     | yaYUL\n연락처       | Ron Burkey <info@sandroid.org>\n웹사이트     | www.ibiblio.org/apollo\n디지털화     | 이 소스코드는 MIT Museum에서 하드 카피본을 디지털화, 옮긴 것입니다. 디지털화는 Paul Fjeld에 의해 이루어졌으며, Deborah Douglas가 정리하였습니다. 두 분께 깊은 감사를 표합니다.\n\n### Contract and Approvals\n\n*[CONTRACT_AND_APPROVALS.agc] 에서 파생 됨*\n\n본 아폴로 유도 컴퓨터 프로그램은 다음에 의해 참조됩니다 : 콜로서스 2A\n\n이 프로그램은 R-577에 명세된 사령선 모듈에 사용됩니다. DSR 프로젝트 55-23870에 의해 준비되었으며, NASA 유인 우주선 센터가 MIT 기계 연구소와의 NAS 9-4065 계약에 의해 스폰싱 하였습니다.\n\n제출됨                | Role | 일시\n:------------------- | :--- | :--\nMargaret H. Hamilton | 콜로서스 프로그래밍 리더<br>아폴로 유도 및 항해 | 1969년 3월 28일\n\n승인됨             | Role | 일시\n:---------------- | :--- | :--\nDaniel J. Lickly  | 감독, 임무 프로그램 개발<br>아폴로 유도 및 항법 프로그램 | 1969년 3월 28일\nFred H. Martin    | 콜로서스 프로젝트 매니저<br>아폴로 유도 및 항법 프로그램 | 1969년 3월 28일\nNorman E. Sears   | 감독, 임무 개발<br>아폴로 유도 및 항법 프로그램 | 1969년 3월 28일\nRichard H. Battin | 감독, 임무 개발<br>아폴로 유도 및 항법 프로그램 | 1969년 3월 28일\nDavid G. Hoag     | 감독<br>아폴로 유도 및 항법 프로그램 | 1969년 3월 28일\nRalph R. Ragan    | 부감독<br>기계 연구소 | 1969년 3월 28일\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.ko_kr.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.ku.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nKoda xwerû ya kompûterê rêbernameya Apollo 11 (AGC) ya orîjînal ji bo Wesayîta Rêvebirinê (Comanche055) û Wesayîta Hêvê (Luminary099). Hat jimarekirin ji aliyê [Virtual AGC][3] û [MIT Museum][4] va. Armanc ew e ku bibe wek depoyekê ji bo koda xwerû ya orîjînal ya Apollo 11. Ji bo wê yekê, daxwazê kişandinê tên pêşwazîkirin ji bo her pirsgirêkekî ku tê nîşankirin di nava vê depoyê de û kopiyên orîjînal yê [Luminary 099][5] û [Comanche 055][6], herweha çi dosya ku min ji bîr kirî.\n\n## Beşdarbûn\n\nJi kerema xwe re [CONTRIBUTING.ku.md][7] bixîne berî ku tu daxwaza kişandinê veke.\n\n## Berhevkirin\n\nGer hûn eleqedarbin ji bo berhevkirina koda xwerû ya orîjînal, lêkolîn li ser [Virtual AGC][8] bikin.\n\n## Atribîbûn\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nMafê mafdariyê      | Qada giştî\nComanche055    | Beşek ji koda xwerû ji bo Colossus 2A, Kompûterê rêvebirinê (AGC) yê Wesaîta Rêvebirinê (CM) ya Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | Beşek ji koda xwerû ji bo Luminary 1A, Kompûterê rêvebirinê (AGC) yê Wesaîta Hêvê (LM) ya Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAsêmbler      | yaYUL\nTêkelî        | Ron Burkey <info@sandroid.org>\nMalper        | www.ibiblio.org/apollo\nDîjîtalîzekirin | Ev koda xwerû hat hatine veguhastin an jî bi rengek din adaptandkirin ji dîmenên dîjîtal ên kaxezek ji Muzexaneya MIT. Dîjîtalîzekirin ji aliyê Paul Fjeld hat pêkanîn, û ji aliyê Deborah Douglas ya Muzexanê ve hat arasteyî kirin. Gelek spas ji herduyan re.\n\n### Peyman û Erêkirin\n\n*Ji [CONTRACT_AND_APPROVALS.agc]*\n\nEv bernamê AGC wekî Colossus 2A jî tê navnîşankirin.\n\nEv bername ji bo karanîna di CM de ye, wekî ku di rapora `R-577` de tê diyar kirin. Ev bername di bin projeya DSR `55-23870` de hatiye amade kirin, hatiye sponsorkirin ji hêla Navenda Manned Spacecraft ya Aeronautics ya netewî Rêveberiya Cîhanê ve bi peymana `NAS 9-4065` bi Laboratoriya Instrumentation, Enstîtuya Teknîkî ya Massachusetts, Cambridge, Mass.\n\nPêşkêşkirin ji hêla         | Rol | Dîrok\n:------------------- | :--- | :---\nMargaret H. Hamilton | Rêberê Bernameya Colossus<br>Rêbernameya û Rêserbirina Apollo | 28 Adar 1969\n\nPejirandin ji hêla       | Rol | Dîrok\n:---------------- | :--- | :---\nDaniel J. Lickly  | Derhêner, Pêşveçûna Bernameya Mîsyonê<br>Bernameyê Apollo yê Rêbernamê û Rêserbirinê | 28 Adar 1969\nFred H. Martin    | Rêveberê Pirojeyê Colossus<br>Bernameyê Apollo yê Rêbernamê û Rêserbirinê | 28 Adar 1969\nNorman E. Sears   | Derhêner, Pêşveçûna Mîsyonê<br>Bernameyê Apollo yê Rêbernamê û Rêserbirinê | 28 Adar 1969\nRichard H. Battin | Derhêner, Pêşveçûna Mîsyonê<br>Bernameyê Apollo yê Rêbernamê û Rêserbirinê | 28 Adar 1969\nDavid G. Hoag     | Derhêner<br>Bernameyê Apollo yê Rêbernamê û Rêserbirinê | 28 Adar 1969\nRalph R. Ragan    | Cîgirê Rêvebir<br>Laboratoriya Instrumentation | 28 Adar 1969\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.ku.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.lt.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nOriginalus Apollo 11 Orientavimo Kompiuterio (AGC) Valdymo Modulio (Comanche055) ir Mėnulio Modulio (Luminary099) šaltinio kodas. Suskaitmenintas žmonių iš\n[Virtualaus AGC][3] ir [MIT Muziejaus][4]. Šios saugyklos tikslas yra būti originaliu Apollo 11 šaltinio kodu. Taigi, PRs yra laukiami bet kokiais klausimais tarp transkripcijų šioje saugykloje ir originalių skenuočių [Luminary 099][5] ir [Comanche 055][6], taip pat mano visiems praleistiems failams.\n\n## Prisidėjimas\n\nPrašome perskaityti [CONTRIBUTING.md][7] prieš sukuriant PR.\n\n## Kompiliavimas\n\nJeigu jūs norite sukompiliuoti originalų šaltinio kodą, patikrinkite [Virtualų AGC][8].\n\n## Atribucija\n\n&nbsp;             | &nbsp;\n:-------------     | :-----\nAutorių teisės     | Viešas naudojimas\nComanche055        | Dalis Colossus 2A, Valdymo Modulio (CM) Apollo Orientavimosi Kompiuterio (AGC) Apollo 11 šaltinio kodo. <br>`Surinkimo revizija 055 iš AGC programos Comanche pateikta NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099        | Dalis Luminary 1A, Mėnulio Modulio (LM), Apollo Orientavimosi Kompiuterio (AGC) Apollo 11 šaltinio kodo. <br>`Surinkimo revizija 001 iš AGC programos LMY99 pateikta NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nSurinkėjas         | yaYUL\nKontaktai          | Ron Burkey <info@sandroid.org>\nInterneto puslapis | www.ibiblio.org/apollo\nSkaitmenizacija    | Šis šaltinio kodas buvo transkribuotas ar kitaip pritaikytas iš suskaitmenintų MIT muziejaus popierinių nuotraukų. Skaitmeninimą atliko Paul Fjeld, o jį organizavo  Deborah Douglas iš muziejaus. Labai ačiū abiem.\n\n### Sutartis ir patvirtinimai\n\n*Kilo iš [CONTRACT_AND_APPROVALS.agc]*\n\nŠi AGC programa taip pat vadinama Colossus 2A.\n\nŠi programa yra skirta naudoti CM, kaip nurodyta ataskaitoje `R-577`. Ši programa buvo parengta pagal DSR projektą `55-23870`, remiamą Nacionalinės Aeronautikos ir Kosmoso Administracijos Pilotuojamų Erdvėlaivių Centro, sudarant sutartį `NAS 9-4065` su Masačusetso Technologijų Instituto Instrumentavimo Laboratorija, Kembridžas, Mišios.\n\nPateikė              | Funkcija | Data\n:------------------- | :---     | :---\nMargaret H. Hamilton | Colossus Programavimo Vadovė<br>Apollo Orientavimasis ir Navigacija | Kovo 28, 1969\n\nPatvirtino        | Funkcija | Data\n:---------------- | :--- | :---\nDaniel J. Lickly  | Misijos Programos Plėtros Direktorius<br>Apollo Orientavimo ir Navigacijos Programa | Kovo 28, 1969\nFred H. Martin    | Colossus Projektų Vadovas<br>Apollo Orientavimasi ir Navigacijos Programa | Kovo 28, 1969\nNorman E. Sears   | Misijos Vystymo Direktorius<br>Apollo Orientavimasi ir Navigacijos Programa | Kovo 28, 1969\nRichard H. Battin | isijos Vystymo Direktorius<br>Apollo Orientavimasi ir Navigacijos Programa | Kovo 28, 1969\nDavid G. Hoag     | Direktorius<br>Apollo Orientavimo ir Navigacijos Programa | Kovo 28, 1969\nRalph R. Ragan    | Direktoriaus Pavaduotojas<br>Instrumentavimo Laboratorija | Kovo 28, 1969\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.ml.md",
    "content": "# അപ്പോളോ-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN],\n[മലയാളം][ML]\n\n[AR]:Translations/README.ar.md\n[AS_IN]:Translations/README.as_in.md\n[AZ]:Translations/README.az.md\n[BD_BN]:Translations/README.bd_bn.md\n[BE]:Translations/README.be.md\n[CA]:Translations/README.ca.md\n[CZ]:Translations/README.cz.md\n[DA]:Translations/README.da.md\n[DE]:Translations/README.de.md\n[EN]:README.md\n[ES]:Translations/README.es.md\n[FA]:Translations/README.fa.md\n[FI]:README.fi.md\n[FR]:Translations/README.fr.md\n[GL]:Translations/README.gl.md\n[GR]:Translations/README.gr.md\n[HI_IN]:Translations/README.hi_in.md\n[ID]:Translations/README.id.md\n[IT]:Translations/README.it.md\n[JA]:Translations/README.ja.md\n[KO_KR]:Translations/README.ko_kr.md\n[KU]:Translations/README.ku.md\n[LT]:Translations/README.lt.md\n[MM]:Translations/README.mm.md\n[MN]:Translations/README.mn.md\n[NE]:Translations/README.ne.md\n[NL]:Translations/README.nl.md\n[NO]:Translations/README.no.md\n[PL]:Translations/README.pl.md\n[PT_BR]:Translations/README.pt_br.md\n[RO]:Translations/README.ro.md\n[RU]:Translations/README.ru.md\n[SV]:Translations/README.sv.md\n[TR]:Translations/README.tr.md\n[UK]:Translations/README.uk.md\n[VI]:Translations/README.vi.md\n[ZH_CN]:Translations/README.zh_cn.md\n[ZH_TW]:Translations/README.zh_tw.md\n[ML]:Translations/README.ml.md\n\nഅപ്പോളോ 11-ന്റെ കമാൻഡ് മൊഡ്യൂളിനായുള്ള (Comanche055) ലൂണാർ മൊഡ്യൂളിനായുള്ള (Luminary099) ഗൈഡൻസ് കമ്പ്യൂട്ടർ (AGC) സോഴ്സ് കോഡ്. ഇത് [Virtual AGC][3] -ലെയും [MIT Museum][4] -ലെയും ആളുകൾ ഡിജിറ്റൈസ് ചെയ്തതാണ്. അപ്പോളോ 11-ന്റെ ഒറിജിനൽ സോഴ്സ് കോഡിനായുള്ള ഒരു ശേഖരം (repo) ആവുക എന്നതാണ് ഇതിന്റെ ലക്ഷ്യം. അതിനാൽ, ഈ ശേഖരത്തിലെ ട്രാൻസ്ക്രിപ്ഷനുകളും [Luminary 099][5], [Comanche 055][6] എന്നിവയുടെ യഥാർത്ഥ സോഴ്സ് സ്കാനുകളും തമ്മിലുള്ള പൊരുത്തക്കേടുകൾ (issues), അതുപോലെ ഞാൻ വിട്ടുപോയേക്കാവുന്ന ഫയലുകൾ എന്നിവ കണ്ടെത്തിയാൽ PR-കൾ (പുൾ റിക്വസ്റ്റുകൾ) സ്വാഗതം ചെയ്യുന്നു.\n\n## സംഭാവന ചെയ്യുന്നതിന്\n\nഒരു പുൾ റിക്വസ്റ്റ് തുറക്കുന്നതിന് മുമ്പ് ദയവായി [CONTRIBUTING.md][7] വായിക്കുക.\n\n## കംപൈൽ ചെയ്യുന്നതിന്\n\nയഥാർത്ഥ സോഴ്സ് കോഡ് കംപൈൽ ചെയ്യാൻ നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടെങ്കിൽ, [Virtual AGC][8] പരിശോധിക്കുക.\n\n## കടപ്പാട്\n\n| &nbsp; | &nbsp; |\n| :------------- | :----- |\n| പകർപ്പവകാശം | പബ്ലിക് ഡൊമെയ്‌ൻ |\n| Comanche055 | Apollo 11-ന്റെ കമാൻഡ് മൊഡ്യൂളിന്റെ (CM) അപ്പോളോ ഗൈഡൻസ് കമ്പ്യൂട്ടറിനായുള്ള (AGC) Colossus 2A-യുടെ സോഴ്സ് കോഡിന്റെ ഭാഗം<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969` |\n| Luminary099 | Apollo 11-ന്റെ ലൂണാർ മൊഡ്യൂളിന്റെ (LM) അപ്പോളോ ഗൈഡൻസ് കമ്പ്യൂട്ടറിനായുള്ള (AGC) Luminary 1A-യുടെ സോഴ്സ് കോഡിന്റെ ഭാഗം<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969` |\n| അസംബ്ലർ | yaYUL |\n| ബന്ധപ്പെടാനുള്ളവർ | Ron Burkey <info@sandroid.org> |\n| വെബ്സൈറ്റ് | www.ibiblio.org/apollo |\n| ഡിജിറ്റലൈസേഷൻ  | MIT മ്യൂസിയത്തിൽ നിന്നുള്ള ഹാർഡ്‌കോപ്പിയുടെ ഡിജിറ്റൈസ് ചെയ്ത ചിത്രങ്ങളിൽ നിന്ന് ഈ സോഴ്സ് കോഡ് പകർത്തിയെഴുതിയതോ അല്ലെങ്കിൽ മറ്റേതെങ്കിലും രീതിയിൽ രൂപപ്പെടുത്തിയെടുത്തതോ ആണ്. ഈ ഡിജിറ്റൈസേഷൻ നടത്തിയത് Paul Fjeld ആണ്, മ്യൂസിയത്തിലെ Deborah Douglas ഇതിന് സൗകര്യമൊരുക്കി. ഇരുവർക്കും ഒരായിരം നന്ദി. |\n\n### കരാറും അംഗീകാരങ്ങളും\n*[CONTRACT_AND_APPROVALS.agc]-ൽ നിന്ന് എടുത്തത്*\n\nഈ AGC പ്രോഗ്രാം Colossus 2A എന്നും അറിയപ്പെടും.\n\nഈ പ്രോഗ്രാം `R-577` എന്ന റിപ്പോർട്ടിൽ പ്രതിപാദിച്ചിട്ടുള്ളതുപോലെ കമാൻഡ് മൊഡ്യൂളിൽ ഉപയോഗിക്കാൻ ഉദ്ദേശിച്ചുള്ളതാണ്. മസാച്യുസെറ്റ്സ് ഇൻസ്റ്റിറ്റ്യൂട്ട് ഓഫ് ടെക്നോളജി, കേംബ്രിഡ്ജ്, മാസ്. എന്നിവിടങ്ങളിലെ ഇൻസ്ട്രുമെന്റേഷൻ ലബോറട്ടറിയുമായി നാഷണൽ എയറോനോട്ടിക്സ് ആൻഡ് സ്പേസ് അഡ്മിനിസ്ട്രേഷന്റെ മാൻഡ് സ്പേസ്ക്രാഫ്റ്റ് സെന്റർ `NAS 9-4065` എന്ന കരാറിലൂടെ സ്പോൺസർ ചെയ്ത `55-23870` എന്ന DSR പ്രോജക്ടിന് കീഴിലാണ് ഈ പ്രോഗ്രാം തയ്യാറാക്കിയത്.\n\n| സമർപ്പിച്ചത് | പദവി | തീയതി |\n| :------------------- | :--- | :--- |\n| Margaret H. Hamilton | കൊളോസസ് പ്രോഗ്രാമിംഗ് ലീഡർ<br>അപ്പോളോ ഗൈഡൻസ് ആൻഡ് നാവിഗേഷൻ | 28 മാർച്ച് 69 |\n\n| അംഗീകരിച്ചത് | പദവി | തീയതി |\n| :---------------- | :--- | :--- |\n| Daniel J. Lickly | ഡയറക്ടർ, മിഷൻ പ്രോഗ്രാം ഡെവലപ്‌മെന്റ്<br>അപ്പോളോ ഗൈഡൻസ് ആൻഡ് നാവിഗേഷൻ പ്രോഗ്രാം | 28 മാർച്ച് 69 |\n| Fred H. Martin | കൊളോസസ് പ്രോജക്ട് മാനേജർ<br>അപ്പോളോ ഗൈഡൻസ് ആൻഡ് നാവിഗേഷൻ പ്രോഗ്രാം | 28 മാർച്ച് 69 |\n| Norman E. Sears | ഡയറക്ടർ, മിഷൻ ഡെവലപ്‌മെന്റ്<br>അപ്പോളോ ഗൈഡൻസ് ആൻഡ് നാവിഗേഷൻ പ്രോഗ്രാം | 28 മാർച്ച് 69 |\n| Richard H. Battin | ഡയറക്ടർ, മിഷൻ ഡെവലപ്‌മെന്റ്<br>അപ്പോളോ ഗൈഡൻസ് ആൻഡ് നാവിഗേഷൻ പ്രോഗ്രാം | 28 മാർച്ച് 69 |\n| David G. Hoag | ഡയറക്ടർ<br>അപ്പോളോ ഗൈഡൻസ് ആൻഡ് നാവിഗേഷൻ പ്രോഗ്രാം | 28 മാർച്ച് 69 |\n| Ralph R. Ragan | ഡെപ്യൂട്ടി ഡയറക്ടർ<br>ഇൻസ്ട്രുമെന്റേഷൻ ലബോറട്ടറി | 28 മാർച്ച് 69 |\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.mm.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nမူရင်း Apollo 11​​ ထိန်းချုပ်မှု ကွန်ပျူတာ (AGC) တွင်ပါဝင်သော ကွပ်ကဲမှုအစိတ်အပိုင်း (Comanche055) နဲ့ လပေါ်တွင်ဆင်းသက်သည့် အစိတ်အပိုင်း (Luminary099) တို့ရဲ့ ကုဒ်။ [Virtual AGC][3] နှင့် [MIT Museum][4] အကူအညီဖြင့် ဒီဂျစ်တယ်ပုံစံသို့ ပြောင်းထားခြင်းဖြစ်သည်။​ မူရင်း Apollo 11 ကုဒ်များ သိမ်းစည်းထားသော ရီပိုတစ်ခုဖြစ်လာစေရန်ရည်ရွယ်သည်။ ဒါကြောင့် [Luminary 099][5] နဲ့ [Comanche 055][6] တို့ရဲ့ အရင်းအမြစ်စာတမ်းများနဲ့ ဒီရီပိုကြား ကွဲလွဲချက်များတွေ့ရင် Pull Request (PR) တွေဖွင့်ပေးဖို့ ကြိုဆိုပါတယ်။ ကျွန်တော် ကျန်ခဲ့တဲ့ ဖိုင်လ်လေးတွေရှိရင်လည်း ပြောပေးကြပါဉီး။\n\n## ပါဝင်ကူညီပေးခြင်း\n\nPull Request မဖွင့်ခင် [CONTRIBUTING.md][7] ကိုတော့ဖတ်ပေးနော်။\n\n## Compiling\n\nမူလကုဒ်ကို ကွန်ပိုင်းချင်တယ်ဆိုရင်တော့ [Virtual AGC][8] မှာစမ်းကြည့်လို့ရတယ်နော်\n\n## မှီညှမ်းခြင်း\n\n&nbsp;              | &nbsp;\n:------------------ | :-----\nမူပိုင်ခွင့်               | မူပိုင်မဲ့ အများပိုင်\nComanche055         | Colossus 2A ၏ ကုဒ်အစိတ်အပိုင်း၊ Apollo 11 အတွက် ကွပ်ကဲမှုအစိတ်အပိုင်း (CM) ၏ Apollo ထိန်းချုပ်မှု ကွန်ပျူတာ (AGC)<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099         | Luminary 1A ၏ ကုဒ်အစိတ်အပိုင်း၊ Apollo 11 တွင် လပေါ်တွင်ဆင်းသက်သည့် အစိတ်အပိုင်း (LM) ၏ Apollo ထိန်းချုပ်မှု ကွန်ပျူတာ (AGC)<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler           | yaYUL\nဆက်သွယ်ရန်           | Ron Burkey <info@sandroid.org>\nဝဘ်ဆိုက်စာမျက်နှာ       | www.ibiblio.org/apollo\nဒစ်ဂျစ်တယ်ပုံစံပြောင်းလဲခြင်း | ဤကုဒ်ကို MIT ပြတိုက် (MIT Musem) မှ စာတမ်းများကို ဒီဂျစ်တယ်ပုံများဖမ်းပြီး၊ ထိုမှတစ်ဆင့် ကုဒ်အသွင်သို့ ပြောင်းလဲထားခြင်းဖြစ်သည်။ ဒီဂျစ်တယ်ပုံစံပြောင်းလဲခြင်း ကို Paul Fjeld မှပြုလုပ်ပေးခဲ့ပြီး၊ ပြတိုက်မှ Deborah Douglas ကစီစဉ်ပေးခဲ့သည်။ နှစ်ယောက်လုံးကို ကျေးဇူးအများကြီးတင်ပါတယ်။\n\n### စာချုပ်နှင့် ခွင့်ပြုချုက်များ\n\n*Derived from [CONTRACT_AND_APPROVALS.agc]*\n\nဤ AGC ပရိုဂရမ် ကို Colossus 2A ဟူ၍ ခေါ်ဝေါ်မည်။\n\nဤပရိုဂရမ် ကို CM တွင် `R-577` တင်ပြချက်အတိုင်း အသုံးပြုရန် ရည်ရွယ်ထားသည်။ Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass တို့နှင့်ချုပ်ခဲ့သော စာချုပ်  `NAS 9-4065` အရ Manned Spacecraft Center of The National Aeronautics and Space Administration ၏ ထောက်ပံ့မှုဖြင့် DSR ပရောဂျက် `55-23870` လက်အောက်တွင် ဤပရိုဂရမ်ကို  ပြင်ဆင်ခဲ့ခြင်းဖြစ်သည်။\n\nတင်ပြခဲ့သူ              | ရာထူး | ရက်စွဲ\n:------------------- | :--- | :---\nMargaret H. Hamilton | Colossus ပရိုဂရမ် ခေါင်းဆောင် <br>Apollo ထိန်းချုပ်မှုနဲ့ ရွေ့လျားခြင်း ပရိုဂရမ် | ၂၈ မတ်လ ၁၉၆၉\n\nထောက်ခံ ခွင့်ပြုခဲ့သူ     | ရာထူး | ရက်စွဲ\n:---------------- | :--- | :---\nDaniel J. Lickly  | ဒါရိုက်တာ, Mission ပရိုဂရမ် ဖော်ဆောင်မှု<br>Apollo ထိန်းချုပ်မှုနဲ့ ရွေ့လျားခြင်း ပရိုဂရမ် | ၂၈ မတ်လ ၁၉၆၉\nFred H. Martin    | Colossus ပရောဂျက် မန်နေဂျာ<br>Apollo ထိန်းချုပ်မှုနဲ့ ရွေ့လျားခြင်း ပရိုဂရမ် | ၂၈ မတ်လ ၁၉၆၉\nNorman E. Sears   | ညွှန်ကြားရေးမှူး, Mission ဖော်ဆောင်မှု<br>Apollo ထိန်းချုပ်မှုနဲ့ ရွေ့လျားခြင်း ပရိုဂရမ် | ၂၈ မတ်လ ၁၉၆၉\nRichard H. Battin | ညွှန်ကြားရေးမှူး, Mission ဖော်ဆောင်မှု<br>Apollo ထိန်းချုပ်မှုနဲ့ ရွေ့လျားခြင်း ပရိုဂရမ် | ၂၈ မတ်လ ၁၉၆၉\nDavid G. Hoag     | ညွှန်ကြားရေးမှူး<br>Apollo ထိန်းချုပ်မှုနဲ့ ရွေ့လျားခြင်း ပရိုဂရမ် | ၂၈ မတ်လ ၁၉၆၉\nRalph R. Ragan    | ဒုတိယညွှန်ကြားရေးမှူး<br>Instrumentation Laboratory | ၂၈ မတ်လ ၁၉၆၉\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.mn.md",
    "content": "# アポロ11号\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nКомманд болон Лунар модуль (Comanche055 болон Luminary099) -ийн анхны Apollo 11 удирдлагын компьютер (AGC) -ийн эх код. [Virtual AGC][3] болон [MIT Museum][4] -аар дижитал хэлбэрт оруулсан. Энэ репозитор нь анхны Apollo 11 эх кодыг бүрэн сэргээж хадгалах зорилготой. Тиймээс, энэ репозитор болон [Luminary 099][5] болон [Comanche 055][6] -ийн хооронд илэрсэн асуудал эсвэл алдаатай файлуудын талаар PR-ийг хүлээн авна.\n\n## Хувь нэмэр оруулах\n\nПулл реквест нээхээс өмнө [CONTRIBUTING.ja.md][7] -ийг уншина уу.\n\n## Компайл хийх\n\nХэрэв компайл хийхийг хүсвэл [Virtual AGC][8] -ийг шалгана уу.\n\n## Зөвшөөрөл\n\n&nbsp;      | &nbsp;\n:---------- | :-----\nЗохиогчийн эрх | Олон нийтийн өмч\nComanche055 | Apollo 11-ийн команд болон сервис модульд зориулсан Apollo 11 удирдлагын компьютер, Colossus 2A-ийн эх кодын хэсэг<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099 | Apollo 11-ийн лунар модульд зориулсан Apollo 11 удирдлагын компьютер, Luminary 1A-ийн эх кодын хэсэг<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nАссемблер    | yaYUL\nХолбоо барих | Ron Burkey <info@sandroid.org>\nВэбсайт      | www.ibiblio.org/apollo\nДижитал хэлбэрт оруулсан | Энэ эх кодыг MIT Museum-аас хатуу хуулбараас дижитал хэлбэрт оруулсан. Дижитал хэлбэрт оруулсан Paul Fjeld, эмхэтгэсэн Deborah Douglas.\n\n### Гэрээ болон батламж\n\n*[CONTRACT_AND_APPROVALS.agc] -аас үүссэн*\n\nЭнэ Apollo удирдлагын компьютерийн програм нь Colossus 2A-аас лавлагаа авсан.\n\nЭнэ програм нь `R-577`-д заасан команд модульд ашиглагдана. Энэ төсөл нь DSR төсөл `55-23870`-ийн хүрээнд бэлтгэгдсэн бөгөөд NASA-ийн Хүнтэй сансрын төв болон MIT-ийн Механик судалгааны лабораторийн хооронд `NAS 9-4065` гэрээгээр эхэлсэн.\n\nОруулсан хүн         | Үүрэг | Огноо\n:------------------- | :--- | :---\nMargaret H. Hamilton | Colossus програмчлалын удирдагч<br>Apollo удирдлага болон навигаци | 1969 оны 3-р сарын 28\n\nБаталсан хүн       | Үүрэг | Огноо\n:---------------- | :--- | :---\nDaniel J. Lickly  | Захирал, Миссионы програм хөгжүүлэлт<br>Apollo удирдлага болон навигаци | 1969 оны 3-р сарын 28\nFred H. Martin    | Colossus төслийн менежер<br>Apollo удирдлага болон навигаци | 1969 оны 3-р сарын 28\nNorman E. Sears   | Захирал, Миссионы програм хөгжүүлэлт<br>Apollo удирдлага болон навигаци | 1969 оны 3-р сарын 28\nRichard H. Battin | Захирал, Миссионы програм хөгжүүлэлт<br>Apollo удирдлага болон навигаци | 1969 оны 3-р сарын 28\nDavid G. Hoag     | Захирал<br>Apollo удирдлага болон навигаци | 1969 оны 3-р сарын 28\nRalph R. Ragan    | Дэд захирал<br>Механик судалгааны лаборатори | 1969 оны 3-р сарын 28\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.ja.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.ne.md",
    "content": "# अपोलो -11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nअपोलो ११ मार्गदर्शन कम्प्यूटर (Apollo 11 Guidance computer, AGC) कमाण्ड मोड्यूल   (Comanche055) र चंद्र मोड्युल (Luminary099)  को लागी स्रोत कोड। मान्छेहरू द्वारा अंकित [Virtual AGC][3] र [MIT Museum][4] लक्ष्य मूल अपोलो ११ स्रोत कोडका लागि रेपो हुनु हो। त्यस्तै, PR हरू यस भण्डारमा ट्रान्सक्रिप्शन र मूल स्रोत स्क्यानका बीच पहिचान गरिएको कुनै पनि मुद्दाहरूको लागि स्वागत छ [Luminary 099][5] र [Comanche 055][6] साथै कुनै पनि फाईलहरू मैले छुटेको हुन सक्छु।\n\n## योगदान\n\n कृपया[CONTRIBUTING.md][7] एक पुल अनुरोध खोल्न अघि पढ्नुहोस्।\n\n## कम्पाइल गर्दै\n\nयदि तपाईं मूल स्रोत कोड कम्पाइल गर्न रूचि राख्नुहुन्छ भने,[Virtual AGC][8] को जाँच गर्नुहोस्।\n\n## एट्रिब्युसन\n\n&nbsp;      | &nbsp;\n:---------- | :-----\nकॉपीराइट      | पब्लिक डोमेन\nComanche055 | कोलोसस २ ए को लागी स्रोत कोड को अंश, कमाण्ड मोड्युल (सीएम) अपोलो गाइडन्स कम्प्युटर (AGC) अपोलो ११ को लागी <br>`AGC प्रोग्राम Comanche को NASA द्वारा संशोधन ० 055 सम्मिलित`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099 |  ल्यूमिनरी १ए, अपोलो ११ के चंद्र भाग (LM) के लिए निर्देशरण संगड़क यंत्र (AGC) के नियमसंग्रह का हिस्सा। <br>`Luminary 1A को लागि स्रोत कोडको भाग, चंद्र मोड्युलको (LM) अपोलो गाइडन्स कम्प्युटर (AGC) अपोलो ११ को लागि`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler     | yaYUL\nसंपर्क     | रोन बुर्की (Ron Burkey) <info@sandroid.org>\nवेबसाइट      | www.ibiblio.org/apollo\nडिजिटलीकरण   | यो स्रोत कोड ट्रान्सक्रिप्ट गरिएको छ वा अन्यथा एमआईटी संग्रहालयबाट हार्डकपीको डिजिटलाइज्ड छविहरूबाट रूपान्तरण गरिएको छ। डिजिटलाइजेशन फिल फेजेल(Paul Fjeld)द्वारा गरिएको थियो, र संग्रहालयको डेबोरा डगलस (Deborah Douglas) द्वारा व्यवस्था गरिएको थियो। दुबैलाई धेरै धन्यवाद।\n\n### सम्झौता र अनुमोदन\n\n*[CONTRACT_AND_APPROVALS.agc] बाट व्युत्पन्न*\n\nयो एजीसी प्रोग्रामलाई कलसस २(Colossus 2A.) ए पनि मानिन्छ।\n\nयो कार्यक्रम सीएममा प्रयोगको लागि अभिप्राय आर-577 (`R-577`) report रिपोर्टमा निर्दिष्ट गरिएको छ। यो कार्यक्रम डीएसआर प्रोजेक्ट `55-23879` अन्तर्गत तयार गरिएको हो जुन राष्ट्रिय एयरोनटिक्स एण्ड स्पेस एडमिनिस्ट्रेशनको म्यानड स्पेसक्राफ्ट सेन्टर द्वारा अनुबन्धित एनएएस--65०।। मैसाचुसेट्स इन्स्टिच्युट अफ टेक्नोलोजी, क्याम्ब्रिज, माससँग अनुबन्धित एनएएस 9-4065 (`NAS 9-4065`) को माध्यमबाट प्रायोजित गरिएको थियो।\n\nबुझाउने              | भूमिका | मिति\n:------------------- | :---- | :---\nMargaret H. Hamilton | कोलोसस(Colossus) प्रोग्रामिंग लीडर<br>अपोलो गाइडेंस एंड नेविगेशन | २८ मार्च ६९\n\nद्वारा स्वीकृत      | भूमिका | मिति\n:---------------- | :---- | :---\nDaniel J. Lickly  | निदेशक, मिशन कार्यक्रम विकास<br>अपोलो गाइडेंस एंड नेविगेशन प्रोग्राम | २८ मार्च ६९\nFred H. Martin    | कोलोसस(Colossus) प्रोजेक्ट मैनेजर<br>अपोलो गाइडेंस एंड नेविगेशन प्रोग्राम | २८ मार्च ६९\nNorman E. Sears   | निदेशक, मिशन विकास<br>अपोलो गाइडेंस एंड नेविगेशन प्रोग्राम | २८ मार्च ६९\nRichard H. Battin | निदेशक, मिशन विकास<br>अपोलो गाइडेंस एंड नेविगेशन प्रोग्राम | २८ मार्च ६९\nDavid G. Hoag     | निदेशक<br>अपोलो गाइडेंस एंड नेविगेशन प्रोग्राम | २८ मार्च ६९\nRalph R. Ragan    | उप निदेशक<br>इंस्ट्रुमेंटेशन प्रयोगशाला | २८ मार्च ६९\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.nl.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nOriginele broncode voor de Apollo 11 besturingscomputer (AGC). Broncode voor de besturingsmodule (Comanche055) en maanmodule (Luminary099). Gedigitalizeerd door [Virtual GC][3] en het [MIT Museum][4]. Het doel is om een repository te zijn van de oorspronkelijke Apollo 11 broncode en dus zijn PRs welkom voor elk probleem in de overgenomen broncode van [Luminary 099][5] en [Comanche 055][6] en elk bestand dat ik vergeten ben.\n\n## Bijdragen\n\nLees alsjeblieft [CONTRIBUTING.nl.md][7] voordat je een pull request opent.\n\n## Compileren\n\nAls je geinteresseerd bent in het compileren van de originele broncode bekijk dan [Virtual AGC][8].\n\n## Toebedeling\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nCopyright      | Publiek domein\nComanche055    | Onderdeel van de broncode voor Colossus 2A, de Apollo besturingscomputer (AGC) van de besturingsmodule (CM) voor Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | Onderdeel van de broncode voor Luminary 1A, de Apollo besturingscomputer (AGC) van de maanmodule (LM) voor Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nSamensteller   | yaYUL\nContact        | Ron Burkey <info@sandroid.org>\nWebsite        | www.ibiblio.org/apollo\nDigitalizering | Deze broncode is overgeschreven of anderszins overgenomen van gedigitalizeerde afbeeldingen van een boek van het MIT Museum. Deze digitalizering is uitgevoerd door Paul Fjeld en geregeld door Deborah Douglas van het voorgenoemde museum. Hartelijk dank aan beiden.\n\n### Contract en Goedkeuring\n\n*Afgeleid van [CONTRACT_AND_APPROVALS.agc]*\n\nDit AGC programma zal worden benoemd als Colossus 2A.\n\nDit programma is bedoeld voor gebruik in de CM zoals vastgesteld in rapport `R-577`. Dit programma is voorbereid onder DSR project `55-23870`, gesponsord door het Manned Spacecraft Center van de National Aeronautics and Space Administration via contract `NAS 9-4065` met het Instrumentation Laboratory, Massachusetts Instute of Technology, Cambridge, Mass.\n\nIngediend door       | Rol | Datum\n:------------------- | :-- | :----\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 maart. 1969\n\nGoedgekeurd door  | Rol | Datum\n:---------------- | :-- | :----\nDaniel J. Lickly  | Directeur, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 maart. 1969\nFred H. Martin    | Colossus projectmanager<br>Apollo Guidance and Navigation Program | 28 maart. 1969\nNorman E. Sears   | Directeur, Mission Development<br>Apollo Guidance and Navigation Program | 28 maart. 1969\nRichard H. Battin | Directeur, Mission Development<br>Apollo Guidance and Navigation Program | 28 maart. 1969\nDavid G. Hoag     | Directeur<br>Apollo Guidance and Navigation Program | 28 maart. 1969\nRalph R. Ragan    | Adjunct-directeur<br>Instrumentation Laboratory | 28 maart. 1969\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.nl.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.no.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nOriginal kildekode til Apollo 11’s veiledningsdatamaskin for kommando ( Comanche055 ) og måne ( Luminary099 ) modulene. Digitalisert av folkene fra [Virtual AGC][3] og [MIT Museum][4]. Målet er å være et depot for den originale Apollo 11 kildekoden. «Pull Requests» er ønskelige for feil som måtte finnes i oversettelser i dette depotet og de originale bildene av kildekoden til Luminary 099 og Comanche 055, samt bortglemte filer.\n\n## Bidra\n\nVenligst les [CONTRIBUTING.no.md][7] før en \"pull request\" åpnes.\n\n## Kompilere\n\nHvis du er interessert i å kompilere den originale kildekoden, så sjekk [Virtual AGC][8].\n\n## Bidragsytere\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nOpphavsrett    | Public domain\nComanche055    | Deler av kildekoden til Colossus 2A, kommando modulen ( CM ) til Apollo Veiledningsdatamaskin ( AGC ) til Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | Deler av kilde koden til Luminary 1A, the Lunar Module's ( LM ) Apollo Veiledningsdatamaskin ( AGC ) til Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler      | yaYUL\nKontakt        | Ron Burkey <info@sandroid.org>\nWebside        | www.ibiblio.org/apollo\nDigitalisering | Denne kildekoden er avskrevet og tilpasset fra de digitaliserte bildene som finnes på MIT-Museet. Digitaliseringen er utført av Paul Fjeld, og sortert av Deborah Douglas som jobber på Museet. Takk til dere begge.\n\n### Kontrakt og godkjenninger\n\n*Fra [CONTRACT_AND_APPROVALS.agc]*\n\nDette AGC-programmet skal også refereres til som Colossus 2A.\n\nDette programmet er tiltenkt brukt i kommandomodulen, som spesifisert i rapporten `R-577`. Programmet ble laget under DSR-prosjekt `55-23870`, som var sponset av «Manned Spacecraft Center of The National Aeronautics and Space Administration» via kontrakt `NAS 9-4065` med instrumentasjonslaboratoriet ved «Massachusetts Institute of Technology, Cambridge, Mass»\n\nInnsendt av          | Rolle | Dato\n:------------------- | :---- | :---\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 Mar 69\n\nGodkjent av       | Rolle | Dato\n:---------------- | :---- | :---\nDaniel J. Lickly  | Director, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nFred H. Martin    | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28 Mar 69\nNorman E. Sears   | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRichard H. Battin | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nDavid G. Hoag     | Director<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRalph R. Ragan    | Deputy Director<br>Instrumentation Laboratory | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.no.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.pl.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nOryginalny kod źródłowy komputera pokładowego Apollo 11 (AGC) dla modułu dowodzenia (Comanche055) i modułu księżycowego (Luminary099). Zdigitalizowany przez ludzi z [Virtual AGC][3] i [MIT Museum][4]. Celem jest ukazanie repozytorium dla oryginalnego kodu źródłowego Apollo 11. Z tego powodu, PRy są mile widziane dla każdego przekłamania między transkrypcją w tym repozytorium a oryginalnymi skanami dla [Luminary 099][5] i [Comanche 055][6], jak również dla każdego pliku który mogłem przegapić.\n\n## Kontrybucje\n\nProszę przeczytaj [CONTRIBUTING.pl.md][7] zanim otworzysz nowy pull request.\n\n## Kompilowanie\n\nJeżeli jesteś zainteresowany skompilowaniem oryginalnego kodu źródłowego, odwiedź [Virtual AGC][8].\n\n## Przypisania\n\n&nbsp;             | &nbsp;\n:----------------- | :-----\nPrawa autorskiego  | Domena publiczna\nComanche055        | Część kodu źródłowego dla Colossus 2A, modułu dowodzenia (CM) komputera pokładowego (AGC) dla Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099        | Część kodu źródłowego dla Luminary 1A, modułu księżycowego (LM) komputera pokładowego (AGC) dla Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler          | yaYUL\nKontakt            | Ron Burkey <info@sandroid.org>\nStrona internetowa | www.ibiblio.org/apollo\nDigitalizacja      | Ten kod źródłowy został przepisany lub w inny sposób przystosowany ze zdigitalizowanych skanów wersji papierowej z MIT Museum. Digitalizacja została wykonana przez Paul Fjeld, i przygotowana przez Deborah Douglas z Museum. Dziękujemy im obojgu.\n\n### Umowy i zatwierdzenia\n\n*Pochodzące z [CONTRACT_AND_APPROVALS.agc]*\n\nTen program AGC będzie również określany jako Colossus 2A\n\nTen program jest przeznaczony do użycia w CM, jak zostało opisane w raporcie `R-577`. Ten program został przygotowany w projekcie DSR `55-23870` i zasponsorowany przez Manned Spacecraft Center of The National Aeronautics and Space Administration za pośrednictwem kontraktu `NAS 9-4065` z Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass.\n\nZłożone przez        | Rola | Data\n:------------------- | :--- | :---\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 Mar 69\n\nZatwierdzone przez | Rola | Data\n:----------------- | :--- | :---\nDaniel J. Lickly   | Director, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nFred H. Martin     | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28 Mar 69\nNorman E. Sears    | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRichard H. Battin  | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nDavid G. Hoag      | Director<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRalph R. Ragan     | Deputy Director<br>Instrumentation Laboratory | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.pl.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.pt_br.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nCódigo fonte do Computador de Orientação da Apollo 11 (AGC) para o Módulo de Comando (Comanche055) e Módulo Lunar (Luminary099). Digitalizado pelo pessoal da [Virtual AGC][3] e [Museu do MIT][4]. O objetivo é ser um repositório para o código fonte original da Apollo 11. Como tal, os PRs são bem-vindos para quaisquer problemas identificados entre as transcrições neste repositório e as verificações do código fonte original para [Luminary 099][5] e [Comanche 055][6], bem como quaisquer arquivos que eu possa ter perdido.\n\n## Contribuindo\n\nLeia [CONTRIBUTING.pt_br.md][7] antes de abrir um pull request.\n\n## Compilando\n\nSe você estiver interessado em compilar o código-fonte original, faça o check-out [Virtual AGC][8].\n\n## Atribuição\n\n&nbsp;            | &nbsp;\n:---------------- | :-----\nDireitos Autorais | Domínio público.\nComanche055       | Parte do código-fonte do Colossus 2A, o Módulo de Comando (CM) do Computador de Orientação Apollo (AGC) para a Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099       | Parte do código-fonte do Luminary 1A, Módulo Lunar (LM) do Computador de Orientação Apollo (AGC) para a Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler         | yaYUL\nContato           | Ron Burkey <info@sandroid.org>\nWebsite           | www.ibiblio.org/apollo\nDigitalização     | Este código fonte foi transcrito ou adaptado de outra forma a partir de imagens de uma cópia impressa do Museu do MIT. A digitalização foi realizada por Paul Fjeld, e organizado por Deborah Douglas do Museu. Muitos agradecimentos a ambos.\n\n### Contrato e Aprovação\n\n*Derivado de [CONTRACT_AND_APPROVALS.agc]*\n\nEste programa AGC também deve ser referido como Colossus 2A.\n\nEste programa é destinado ao uso no CM, conforme especificado no relatório `R-577`. Este programa foi preparado sob o projeto DSR `55-23870`, patrocinado pelo Centro de Naves Espaciais Tripuladas da Administração Nacional da Aeronáutica e do Espaço - NASA - através do contrato `NAS 9-4065` com o Laboratório de Instrumentação, Instituto de Tecnologia de Massachusetts - MIT, Cambridge, Mass.\n\nEnviado por          | Função | Data\n:------------------- | :----- | :---\nMargaret H. Hamilton | Líder de Programação Colossus<br>Orientação e Navegação da Apollo | 28 Mar 69\n\nAprovado por      | Função | Data\n:---------------- | :----- | :---\nDaniel J. Lickly  | Diretor, Programa Desenvolvimento da Missão<br>Programa de Orientação e Navegação da Apollo | 28 Mar 69\nFred H. Martin    | Gestor de Projeto Colossus<br>Programa de Orientação e Navegação da Apollo | 28 Mar 69\nNorman E. Sears   | Diretor, Desenvolvimento da Missão<br>Programa de Orientação e Navegação da Apollo | 28 Mar 69\nRichard H. Battin | Diretor, Desenvolvimento da Missão<br>Programa de Orientação e Navegação da Apollo | 28 Mar 69\nDavid G. Hoag     | Diretor<br>Programa de Orientação e Navegação da Apollo | 28 Mar 69\nRalph R. Ragan    | Vice Diretor<br>Laboratório de Instrumentação | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.pt_br.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.ro.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nCodul sursă original al computerului de orientare Apollo 11 (AGC) pentru modulul de comandă (Comanche055) și modulul lunar (Luminary099). Digitalizat de persoanele de la [Virtual AGC][3] și [MIT Museum][4]. Scopul este de a avea un repo pentru codul sursă original Apollo 11. Prin urmare, PR-urile sunt bine venite pentru orice problemă identificată între transcrierile din acest repository și scanările originale pentru [Luminary 099][5] și [Comanche 055][6], precum și pentru alte fișiere pe care aș fi putut să le uit.\n\n## Contribuire\n\nCitiți [CONTRIBUTING.md][7] înainte de a deschide un pull request.\n\n## Compilare\n\nDacă sunteți interesat de compilarea codului sursă original vizitați [Virtual AGC][8].\n\n## Credite\n\n&nbsp;       | &nbsp;\n:----------- | :-----\nCopyright    | Domeniu public\nComanche055  | Parte din codul sursă pentru Colossus 2A, modulul de comanda (CM) pentru computerul de orientare (AGC) pentru Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099  | Parte din codul sursă pentru Luminary 1A, modulul lunar (LM) pentru computerul de orientare (AGC) pentru Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler    | yaYUL\nContact      | Ron Burkey <info@sandroid.org>\nWebsite      | www.ibiblio.org/apollo\nDigitalizare | Acest cod sursă a fost transcris sau adaptat altfel din imagini digitalizate ale unei hârtii tipărite de la MIT Museum. Digitizarea a fost realizată de Paul Fjeld și a fost organizată de către Deborah Douglas de la MIT Museum. Multe mulțumiri amândurora.\n\n### Contract și Aprobări\n\n*Derivat din [CONTRACT_AND_APPROVALS.agc]*\n\nAcest program AGC va fi denumit, de asemenea, Colossus 2A.\n\nAcest program este destinat utilizării în CM (modulul de comandă) așa cum este specificat în raportul `R-577`. Acest program a fost dezvoltat ca parte a proiectului DSR `55-23870`, sponsorizat de Manned Spacecraft Center of The National Aeronautics and Space Administration prin contractul `NAS 9-4065` semnat de Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass.\n\nTrimis de            | Rol | Data\n:------------------- | :-- | :---\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 Mar 69\n\nAprobat de        | Rol | Data\n:---------------- | :-- | :---\nDaniel J. Lickly  | Director, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nFred H. Martin    | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28 Mar 69\nNorman E. Sears   | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRichard H. Battin | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nDavid G. Hoag     | Director<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRalph R. Ragan    | Deputy Director<br>Instrumentation Laboratory | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.ru.md",
    "content": "# Аполлон-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nОригинальный исходный код бортового управляющего компьютера Аполлон 11 (AGC) для командного модуля (Comanche055) и лунного модуля (Luminary099). Оцифровано людьми из [Virtual AGC][3] и [MIT Museum][4]. Цель - это создание репозитория с оригинальным исходным кодом миссии Аполлон 11. Таким образом приветствуются pull requests (PRs) с исправлениями для любых найденных ошибок в файлах этого репозитория и оригинальных сканах исходного кода для [Luminary 099][5] и [Comanche 055][6], так же как и для любых файлов, которые я мог пропустить.\n\n## Сотрудничество\n\nПожалуйста, прочитайте [CONTRIBUTING.md][7] перед тем как открывать pull request.\n\n## Компиляция\n\nЕсли вы заинтересованы в компилировании данного исходного кода, смотрите инструкции здесь [Virtual AGC][8].\n\n## Атрибуция\n\n&nbsp;          | &nbsp;\n:-------------- | :-----\nАвторское право | Общественное достояние\nComanche055     | Часть исходного кода для Colossus 2A, командного модуля (CM) бортового управляющего компьютера Аполлон (AGC) для миссии Аполлон 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 Апрель. 1, 1969`\nLuminary099     | Часть исходного кода для Luminary 1A, лунного модуля (LM) бортового управляющего компьютера Аполлон (AGC) для миссии Аполлон 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 Июль. 14, 1969`\nАссемблер       | yaYUL\nКонтакты        | Ron Burkey <info@sandroid.org>\nВебсайт         | www.ibiblio.org/apollo\nОцифровка       | Исходный код был расшифрован или иным способом адаптирован из оцифрованных изображений печатных копий из музея университета MIT. Оцифровку выполнил Paul Fjeld, упорядочила Deborah Douglas из музея. Огромная благодарность обоим.\n\n### Договор и разрешения\n\n*Получено из [CONTRACT_AND_APPROVALS.agc]*\n\nЭта AGC программа также должна быть упомянута как Colossus 2A.\n\nЭта программа предназначена для использования в командном модуле (CM) как указано в отчете `R-577`. Программа была подготовлена в рамках проекта DSR `55-23870`, при поддержке центра пилотируемых космических кораблей NASA по договору `NAS 9-4065` с участием лаборатории приборостроения, Массачусетского технологического университета (MIT), Кембридж, Массачусетс.\n\nПредставлено         | Роль | Дата\n:------------------- | :--- | :---\nMargaret H. Hamilton | Ведущий программист Colossus<br>Управление и навигация Аполлон | 28 Март 69\n\nПодтверждено      | Роль | Дата\n:---------------- | :--- | :---\nDaniel J. Lickly  | Директор, Разработка программы миссии<br>Программа управления и навигации Аполлона | 28 Март 69\nFred H. Martin    | Проектный менеджер Colossus<br>Программа управления и навигации Аполлона | 28 Март 69\nNorman E. Sears   | Директор, Разработка миссии<br>Программа управления и навигации Аполлона | 28 Март 69\nRichard H. Battin | Директор, Разработка миссии<br>Программа управления и навигации Аполлона | 28 Март 69\nDavid G. Hoag     | Директор<br>Программа управления и навигации Аполлона | 28 Март 69\nRalph R. Ragan    | Заместитель директора<br>Лаборатория приборостроения| 28 Март 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.si.md",
    "content": "# ඇපොලෝ-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN],\n[മലയാളം][ML],\n[සිංහල][SI]\n\n[AR]:Translations/README.ar.md\n[AS_IN]:Translations/README.as_in.md\n[AZ]:Translations/README.az.md\n[BD_BN]:Translations/README.bd_bn.md\n[BE]:Translations/README.be.md\n[CA]:Translations/README.ca.md\n[CZ]:Translations/README.cz.md\n[DA]:Translations/README.da.md\n[DE]:Translations/README.de.md\n[EN]:README.md\n[ES]:Translations/README.es.md\n[FA]:Translations/README.fa.md\n[FI]:Translations/README.fi.md\n[FR]:Translations/README.fr.md\n[GL]:Translations/README.gl.md\n[GR]:Translations/README.gr.md\n[HI_IN]:Translations/README.hi_in.md\n[ID]:Translations/README.id.md\n[IT]:Translations/README.it.md\n[JA]:Translations/README.ja.md\n[KO_KR]:Translations/README.ko_kr.md\n[KU]:Translations/README.ku.md\n[LT]:Translations/README.lt.md\n[MM]:Translations/README.mm.md\n[MN]:Translations/README.mn.md\n[NE]:Translations/README.ne.md\n[NL]:Translations/README.nl.md\n[NO]:Translations/README.no.md\n[PL]:Translations/README.pl.md\n[PT_BR]:Translations/README.pt_br.md\n[RO]:Translations/README.ro.md\n[RU]:Translations/README.ru.md\n[SV]:Translations/README.sv.md\n[TR]:Translations/README.tr.md\n[UK]:Translations/README.uk.md\n[VI]:Translations/README.vi.md\n[ZH_CN]:Translations/README.zh_cn.md\n[ZH_TW]:Translations/README.zh_tw.md\n[ML]:Translations/README.ml.md\n[SI]:Translations/README.si.md\n\nමුල් ඇපොලෝ 11 මගගැසීම් පරිගණකය (AGC) සඳහා වූ මූලාශ්‍ර කේතය — Command Module (Comanche055) සහ Lunar Module (Luminary099) සඳහා. මෙය [Virtual AGC][3] සහ [MIT Museum][4] හි කණ්ඩායම් විසින් ඩිජිටල් කර ඇත.  \nමෙම repository එකේ අරමුණ වන්නේ මුල් ඇපොලෝ 11 මූලාශ්‍ර කේතය එකතැන් කිරීමයි. එබැවින්, මෙම repository එකේ ලියවිලි සහ මුල් Luminary 099 සහ Comanche 055 ස්කෑන් අතර වෙනසක් හෝ දෝෂයක් ඔබ සොයා ගත්තේ නම්, හෝ මම අමතක කළ ගොනු ඇත්නම්, ඒ සඳහා Pull Request (PR) එකක් යැවීමට සාදරයෙන් පිළිගනිමු.\n\n## දායකත්වය (Contributing)\n\nPull Request එකක් යැවීමට පෙර කරුණාකර [CONTRIBUTING.md][7] කියවා බලන්න.\n\n## සංයුක්ත කිරීම (Compiling)\n\nඔබට මුල් මූලාශ්‍ර කේතය compile කිරීමට අවශ්‍ය නම්, [Virtual AGC][8] බලන්න.\n\n## ස්තුති හා ප්‍රශංසා (Attribution)\n\n| &nbsp; | &nbsp; |\n| :------------- | :----- |\n| පිටපත් හිමිකම (Copyright) | Public domain |\n| Comanche055 | Apollo 11 හි Command Module (CM) සඳහා වූ Colossus 2A මූලාශ්‍ර කේත කොටසක්<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969` |\n| Luminary099 | Apollo 11 හි Lunar Module (LM) සඳහා වූ Luminary 1A මූලාශ්‍ර කේත කොටසක්<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969` |\n| අසැම්බ්ලර් (Assembler) | yaYUL |\n| සම්බන්ධවිය හැකි පුද්ගලයා | Ron Burkey <info@sandroid.org> |\n| වෙබ් අඩවිය | www.ibiblio.org/apollo |\n| ඩිජිටල් කිරීම | මෙම මූලාශ්‍ර කේතය MIT Museum හි hardcopy පිටපත් වලින් ඩිජිටල් කර අලුත් විධියකට පරිවර්තනය කර ඇත. ඩිජිටල් කිරීම සිදුකළේ Paul Fjeld විසින්ය, සහ Deborah Douglas විසින් MIT Museum වෙනුවෙන් ඒ සඳහා සහය දැක්වීය. දෙදෙනාටම ස්තුතියි. |\n\n### ගිවිසුම් සහ අනුමත කිරීම් (Contract and Approvals)\n\n*[CONTRACT_AND_APPROVALS.agc] සිට ආදේශ කර ඇත*\n\nමෙම AGC වැඩසටහන **Colossus 2A** ලෙසද හැඳින්වේ.\n\nමෙය Command Module තුළ භාවිතය සඳහා අදහස් කර ඇති වැඩසටහනකි, එය `R-577` වාර්තාවේ විස්තර කර ඇත.  \nමෙම වැඩසටහන DSR project `55-23870` යටතේ, NASA විසින් MIT හි Instrumentation Laboratory වෙත ලබාදුන් `NAS 9-4065` ගිවිසුම යටතේ සකස් කරන ලදී.\n\n| ඉදිරිපත් කළේ | භූමිකාව | දිනය |\n| :------------------- | :--- | :--- |\n| Margaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 Mar 69 |\n\n| අනුමත කළේ | භූමිකාව | දිනය |\n| :---------------- | :--- | :--- |\n| Daniel J. Lickly | Director, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 Mar 69 |\n| Fred H. Martin | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28 Mar 69 |\n| Norman E. Sears | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69 |\n| Richard H. Battin | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69 |\n| David G. Hoag | Director<br>Apollo Guidance and Navigation Program | 28 Mar 69 |\n| Ralph R. Ragan | Deputy Director<br>Instrumentation Laboratory | 28 Mar 69 |\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.sv.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nOriginal Apollo 11 guidance computer (AGC) källkod för Command Module (Comanche055) och Lunar Module (Luminary099). Digitaliserad av folket på [Virtual AGC][3] och [MIT Museum][4]. Målet är att vara ett kodarkiv för den ursprungliga Apollo 11-källkoden. Som sådan är PR:er välkomna för alla problem som identifieras mellan transkriptionerna i detta arkiv och de ursprungliga källsökningarna för [Luminary 099][5] och [Comanche 055][6], såväl bortglömda filer.\n\n## Bidra\n\nLäs [CONTRIBUTING.sv.md][7] innan du öppnar en \"pull request\".\n\n## Kompilering\n\nOm du är intresserad av att kompilera den ursprungliga källkoden, kolla\nut [Virtuell AGC][8].\n\n## Tillskrivning\n\n&nbsp;         | &nbsp;\n:------------- | :-----\nUpphovsrätt      | Allmän egendom\nComanche055    | En del av källkoden för Colossus 2A, Command Modules (CM) Apollo Guidance Computer (AGC) för Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099    | En del av källkoden för Luminary 1A, Lunar Modules (LM) Apollo Guidance Computer (AGC) för Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssemblerare      | yaYUL\nKontakt        | Ron Burkey <info@sandroid.org>\nWebbplats        | www.ibiblio.org/apollo\nDigitalisering | Denna källkod har transkriberats eller på annat sätt anpassats från digitaliserade bilder av en papperskopia från MIT Museum. Digitaliseringen utfördes av Paul Fjeld och arrangerades av Deborah Douglas från museet. Stort tack till båda.\n\n### Kontrakt och godkännanden\n\n*Härrör från [CONTRACT_AND_APPROVALS.agc]*\n\nDetta AGC-program kommer också att kallas Colossus 2A.\n\nDet här programmet är avsett för användning i kommandomodulen som specificeras i rapporten `R-577`. Detta program förbereddes under DSR-projektet `55-23870`, sponsrat av Manned Spacecraft Center vid National Aeronautics and Space Administration genom kontraktet `NAS 9-4065` med Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass.\n\nInskickad av         | Roll | Datum\n:------------------- | :--- | :---\nMargaret H. Hamilton | Colossus Programming Leader<br>Apollo Guidance and Navigation | 28 Mar 69\n\nGodkänd av       | Roll | Datum\n:---------------- | :--- | :---\nDaniel J. Lickly  | Director, Mission Program Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nFred H. Martin    | Colossus Project Manager<br>Apollo Guidance and Navigation Program | 28 Mar 69\nNorman E. Sears   | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRichard H. Battin | Director, Mission Development<br>Apollo Guidance and Navigation Program | 28 Mar 69\nDavid G. Hoag     | Director<br>Apollo Guidance and Navigation Program | 28 Mar 69\nRalph R. Ragan    | Deputy Director<br>Instrumentation Laboratory | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.sv.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.tr.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nOrijinal Apollo 11 Yönlendirme Bilgisayarı'nın (AGC) Komuta Modülü (Comanche055) ve Ay Modülü (Luminary099)'nün kaynak kodu. [Virtual AGC][3] ve [MIT Museum][4] çalışanları tarafından sayısallaştırılmıştır. Amaç orijinal Apollo 11 kaynak kodunu içeren bir repo oluşturmak. Bu yüzden, bu repodaki transkriptler ile orijinal [Luminary 099][5] ve [Comanche 055][6] kaynak taramaları arasında tespit edilen hatalarla ilgili veya benim kaçırdığım herhangi bir dosya hakkında yollanacak pull request'lere açığız.\n\n## Katkıda Bulunma\n\nLütfen pull request açmadan [CONTRIBUTING.tr.md][7] dosyasını okuyun.\n\n## Derleme\n\nEğer orijinal kaynak kodu derlemek isterseniz, [Virtual AGC][8] projesine bakabilirsiniz.\n\n## Nitelikler\n\n&nbsp;          | &nbsp;\n:-------------- | :-----\nLisans          | Kamu malı - ABD hükümeti çalışması\nComanche055     | Apollo Yönlendirme Bilgisayarı (AGC)'nin Komuta Modülü (CM) olan Colossus 2A'nın kaynak kodunun bir parçası.<br>`AGC programı Comanche'nin NASA tarafından yapılan 055 sayılı birleştirme revizyonu`<br>`2021113-051. 10:28 NİS. 1, 1969`\nLuminary099     | Apollo Yönlendirme Bilgisayarı (AGC)'nin Ay Modülü (LM) olan Luminary 1A'in kaynak kodunun bir parçası.<br>`AGC Programı LMY99'un NASA tarafından yapılan 001 sayılı birleştirme revizyonu`<br>`2021112-061. 16:27 TEM. 14, 1969`\nDerleyici       | yaYUL\nİletişim        | Ron Burkey <info@sandroid.org>\nInternet Sitesi | www.ibiblio.org/apollo\nSayısallaştırma | Bu kaynak kodu MIT Müzesi'ndeki basılı kopyaların fotoğraflarından uyarlanmış veya aktarılmıştır. Sayısallaştırma Müze çalışanı Deborah Douglas tarafından ayarlanmış, Paul Fjeld tarafından yapılmıştır. İkisine de çok teşekkürler.\n\n### İletişim ve Onaylar\n\n*[CONTRACT_AND_APPROVALS.agc]'den alınmıştır.*\n\nBu AGC programı Colossus 2A olarak da bilinir.\n\nRapor `R-577`'de belirtildiği gibi, bu program CM için kullanım amacıyla hazırlanmıştır. Bu program DSR `55-23870` projesi altında, Ulusal Havacılık ve Uzay İdaresi Uzay Aracı Merkezi'nin sponsorluğunda, Cambridge Mass Massachusetts Teknoloji Enstitüsü Enstrümantasyon Laboratuvarı ile yapılan `NAS 9-4065` anlaşması ile hazırlanmıştır.\n\nGönderen             | Mevkisi | Tarih\n:------------------- | :------ | :----\nMargaret H. Hamilton | Colossus Programlama Lideri<br>Apollo Yönlendirme ve Navigasyon | 28 Mar 69\n\nOnaylayan         | Mevkisi | Tarih\n:---------------- | :------ | :----\nDaniel J. Lickly  | Direktör, Görev Programı Geliştirme<br>Apollo Yönlendirme ve Navigasyon Programı | 28 Mart 1969\nFred H. Martin    | Colossus Proje Yöneticisi<br>Apollo Yönlendirme ve Navigasyon Programı | 28 Mart 1969\nNorman E. Sears   | Direktör, Görev Geliştirme<br>Apollo Yönlendirme ve Navigasyon Programı | 28 Mart 1969\nRichard H. Battin | Direktör, Görev Geliştirme<br>Apollo Yönlendirme ve Navigasyon Programı | 28 Mart 1969\nDavid G. Hoag     | Direktör<br>Apollo Yönlendirme ve Navigasyon Programı | 28 Mart 1969\nRalph R. Ragan    | Direktör Yardımcısı<br>Enstrümantasyon Laboratuvarı | 28 Mart 1969\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.tr.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.uk.md",
    "content": "# Аполлон-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nОригінальний вихідний код бортового навігаційного комп’ютера Аполлон 11 (AGC) для командного модулю (Comanche055) і місячного модулю (Luminary099). Оцифровано співробітниками з [Virtual AGC][3] та [MIT Museum][4]. Мета полягає у створенні репозиторію для оригінального вихідного коду Аполлону 11. Таким чином, PR вітаються щодо будь-яких проблем, виявлених між розшифровками в цьому сховищі та сканованим оригінальними вихідним кодом для [Luminary 099][5] та [Comanche 055][6], а також будь-яких файлів, які я можу пропустити.\n\n## Внесок\n\nБудь ласка, прочитайте [CONTRIBUTING.md][7] перш ніж відкривати запит на pull request.\n\n## Компіляція\n\nЯкщо ви зацікавлені в компіляції оригінального вихідного коду, перевірте [Virtual AGC][8].\n\n## Атрибути\n\n&nbsp;          | &nbsp;\n:-------------- | :-----\nАвторське право | Суспільне надбання\nComanche055     | Частина вихідного коду для Colossus 2A, командного модулю (CM) комп’ютера керування Apollo Guidance Computer (AGC) для Аполлону 11<br>`Збірна версія 055 програми AGC Comanche від NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099     | Частина вихідного коду для 1A, місячного модулю (LM) комп’ютера керування Apollo Guidance Computer (AGC) для Аполлону 11<br>`Збірна версія 001 програми AGC LMY99 від NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nАссемблер       | yaYUL\nКонтакт         | Ron Burkey <info@sandroid.org>\nВебсайт         | www.ibiblio.org/apollo\nОцифрування     | Цей вихідний код було переписано або іншим чином адаптовано з оцифрованих зображень друкованої копії з Музею MIT. Оцифровку виконав Paul Fjeld, а організувала Deborah Douglas з Музею. Велика подяка обом.\n\n### Контракт і погодження\n\n*Отримано з [CONTRACT_AND_APPROVALS.agc]*\n\nЦя програма AGC також має назву Colossus 2A.\n\nЦя програма призначена для використання у командному модулі (CM), як зазначено у звіті `R-577`. Її було підготовано в рамках проекту DSR `55-23870`, який спонсорується Центром пілотованих космічних кораблів Національного управління з аеронавтики та дослідження космічного простору за контрактом `NAS 9-4065` спільно із Лабораторією приладобудування Массачусетського технологічного інституту, Кембридж, Массачусетс.\n\nНадано               | Роль | Дата\n:------------------- | :--- | :---\nMargaret H. Hamilton | Керівниця програмування Colossus <br>Навігація та орієнтування Аполлону | 28 Бер 69\n\nЗатверджено       | Роль | Дата\n:---------------- | :--- | :---\nDaniel J. Lickly  | Директор, Розробка програми місії<br>Програма навігації та орієнтування Аполлону | 28 Бер 69\nFred H. Martin    | Керівник проекту Colossus <br>Програма навігації та орієнтування Аполлону | 28 Бер 69\nNorman E. Sears   | Директор, розробка місії<br>Програма навігації та орієнтування Аполлону | 28 Бер 69\nRichard H. Battin | Директор, розробка місії<br>Програма навігації та орієнтування Аполлону | 28 Бер 69\nDavid G. Hoag     | Директор<br>Програма навігації та орієнтування Аполлону | 28 Бер 69\nRalph R. Ragan    | Заступник директора<br>Лабораторія приладобудування | 28 Бер 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.vi.md",
    "content": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\nMã nguồn của máy tính hướng dẫn Apollo 11 (AGC) thông qua Command Module (Comanche055) và Lunar Module (Luminary099). Được số hóa bởi những người ở [Virtual AGC][3] và [Bảo tàng MIT][4]. Mục tiêu là tạo ra một repo lưu trữ mã nguồn cho Apollo 11. Do vậy, yêu cầu đóng góp (pull request) là một điều bình thường cho bất kì một vấn đề được xác định giữa các bản dịch trong repo này và nguồn gốc quét mã cho [Luminary 099][5] và [Comanche 055][6], cũng như bất kì file nào mà chúng tôi có thể bỏ lỡ.\n\n## Đóng góp\n\nHãy đọc [CONTRIBUTING.md][7] trước khi bạn mở một pull request.\n\n## Biên dịch\n\nNếu bạn quan tâm đến việc biên dịch mã nguồn, hãy kiểm tra [Virtual AGC][8].\n\n## Ghi nhận công sức và đóng góp\n\n&nbsp;      | &nbsp;\n:---------- | :-----\nBản quyền   | Tài nguyên công cộng\nComanche055 | Một phần của mã nguồn cho Colossus 2A, Command Module's (CM) Apollo Guidance Computer (AGC) cho Apollo 11<br>`Tập hợp sửa đổi 055 của AGC chương trình Comanche bởi NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099 | Một phần của mã nguồn cho Luminary 1A, Lunar Module's (LM) Apollo Guidance Computer (AGC) cho Apollo 11<br>`Tập hợp sửa đổi 001 của AGC chương trình LMY99 bởi NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\nAssembler   | yaYUL\nLiên hệ     | Ron Burkey <info@sandroid.org>\nWebsite     | www.ibiblio.org/apollo\nSố hóa      | Mã nguồn này đã được sao chép hoặc chuyển thể từ các hình ảnh số hóa trong đĩa cứng từ Bảo tàng MIT. Việc số hóa được thực hiện bởi Paul Fjeld và được sắp xếp bởi Deborah Douglas của Bảo tàng. Rất cám ơn cả hai.\n\n### Hợp đồng và Phê duyệt\n\n*Có nguồn gốc từ [CONTRACT_AND_APPROVALS.agc]*\n\nChương trình AGC này cũng sẽ được gọi là Colossus 2A.\n\nChương trình này được thiết kế để sử dụng trong Mô-đun Chỉ huy (Command Module) như được chỉ định trong báo cáo `R-577`. Chương trình này được chuẩn bị theo dự án DSR `55-23870`, được tài trợ bởi Trung tâm tàu vũ trụ có người lái của Cơ quan hàng không vũ trụ quốc gia (Manned Spacecraft Center of The National Aeronautics and Space Administration) thông qua hợp đồng `NAS 9-4065` với Phòng thí nghiệm thiết bị (Instrumentation Laboratory), Viện công nghệ Massachusetts (Massachusetts Institute of Technology), Cambridge, Mass.\n\nGửi bởi              | Vai trò | Ngày\n:------------------- | :------ | :---\nMargaret H. Hamilton | Trưởng nhóm lập trình Colossus<br>Hướng dẫn và định hướng Apollo | 28 Mar 69\n\nĐược chấp nhận bởi | Vai trò | Ngày\n:----------------  | :------ | :---\nDaniel J. Lickly   | Giám đốc, Nhiệm vụ phát triên chương trình<br>Hướng dẫn và định hướng chương trình Apollo | 28 Mar 69\nFred H. Martin     | Quản lý dự án Colossus<br>Hướng dẫn và định hướng chương trình Apollo | 28 Mar 69\nNorman E. Sears    | Giám đốc, Nhiệm vụ phát triển<br>Hướng dẫn và định hướng chương trình Apollo | 28 Mar 69\nRichard H. Battin  | Giám đốc, Nhiệm vụ phát triển<br>Hướng dẫn và định hướng chương trình Apollo | 28 Mar 69\nDavid G. Hoag      | Giám đốc<br>Hướng dẫn và định hướng chương trình Apollo | 28 Mar 69\nRalph R. Ragan     | Phó Giám đốc<br>Phòng thí nghiệm thiết bị | 28 Mar 69\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.zh_cn.md",
    "content": "# 阿波罗 11 号\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\n阿波罗 11 号制导计算机（AGC）中指令模块（Comanche055）和登月模块（Luminary099）原始代码。由 [虚拟 AGC][3] 和 [MIT 科学博物馆][4] 的伙计们完成电子化。本仓库存在的目的是存储阿波罗 11 号原始代码。当然，倘若在本仓库或原始代码扫描件 [Luminary 099][5] 及 [Comanche 055][6] 发现问题，或者任何我可能漏掉的文件，欢迎提交 PR。\n\n## 贡献\n\n在提交 pull request 之前，请先阅读 [CONTRIBUTING.zh_cn.md][7]。\n\n## 编译\n\n如果您对编译原始代码有兴趣的话，请查阅 [虚拟 AGC][8] 的文档。\n\n## 归属\n\n&nbsp;      | &nbsp;\n:---------- | :-----\n版权         | 公共领域。\nComanche055 | 阿波罗 11 号制导计算机（AGC）中的指令模块（CM）, Colossus 2A 的部分源代码<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099 | 阿波罗 11 号制导计算机（AGC）中的登月模块（LM）, Luminary 1A 的部分源代码<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\n汇编程序     | yaYUL\n联系人       | Ron Burkey <info@sandroid.org>\n网站         | www.ibiblio.org/apollo\n数字化       | 该源代码从 MIT 科学博物馆的印刷本电子化图片抄录、改编而来。电子化工作由 Paul Fjeld 完成，并由该馆的 Deborah Douglas 进一步整理。由衷地感激两位。\n\n### 协议与许可\n\n*派生于 [CONTRACT_AND_APPROVALS.agc]*\n\n本 AGC 程序亦可称为：Colossus 2A\n\n根据第 R-577 报告，本程序被用于指令模块。本程序是在 DSR 项目 55-23870 下编写的。该项目由（美国）国家航空航天局载人航天中心与位于马萨诸塞州剑桥的麻省理工学院 The Instrumentation Laboratory 实验室签属的第 NAS 9-4065 号合同进行资助。\n\n提交者                | Role | 日期\n:------------------- | :--- | :--\nMargaret H. Hamilton | Colossus 程序设计负责人<br>阿波罗制导 |  1969 年 3 月 28 日\n\n核准人             | Role | 日期\n:---------------- | :--- | :--\nDaniel J. Lickly  | 负责人、任务程序开发<br>阿波罗制导程序 | 1969 年 3 月 28 日\nFred H. Martin    | Colossus 项目经理<br>阿波罗制导程序 |  1969 年 3 月 28 日\nNorman E. Sears   | 负责人、任务开发<br>阿波罗制导程序 | 1969 年 3 月 28 日\nRichard H. Battin | 负责人、任务开发<br>阿波罗制导程序 | 1969 年 3 月 28 日\nDavid G. Hoag     | 负责人<br>阿波罗制导程序 | 1969 年 3 月 28 日\nRalph R. Ragan    | 副负责人<br>Instrumentation Laboratory | 1969 年 3 月 28 日\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/Translations/CONTRIBUTING.zh_cn.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "Translations/README.zh_tw.md",
    "content": "# 阿波羅 11 號\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA],\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English][EN],\n[Español][ES],\n[Français][FR],\n[Galego][GL],\n[Italiano][IT],\n[Kurdî][KU],\n[Lietuvių][LT],\n[Mongolian][MN],\n[Nederlands][NL],\n[Norsk][NO],\n[Polski][PL],\n[Português][PT_BR],\n[Română][RO],\n[Suomi][FI],\n[Svenska][SV],\n[tiếng Việt][VI],\n[Türkçe][TR],\n[Ελληνικά][GR],\n[Беларуская мова][BE],\n[Русский][RU],\n[Українська][UK],\n[العربية][AR],\n[فارسی][FA],\n[नेपाली भाषा][NE]\n[हिंदी][HI_IN],\n[অসমীয়া][AS_IN],\n[বাংলা][BD_BN],\n[မြန်မာ][MM],\n[한국어][KO_KR],\n[日本語][JA],\n[正體中文][ZH_TW],\n[简体中文][ZH_CN]\n\n[AR]:README.ar.md\n[AS_IN]:README.as_in.md\n[AZ]:README.az.md\n[BD_BN]:README.bd_bn.md\n[BE]:README.be.md\n[CA]:README.ca.md\n[CZ]:README.cz.md\n[DA]:README.da.md\n[DE]:README.de.md\n[EN]:../README.md\n[ES]:README.es.md\n[FA]:README.fa.md\n[FI]:README.fi.md\n[FR]:README.fr.md\n[GL]:README.gl.md\n[GR]:README.gr.md\n[HI_IN]:README.hi_in.md\n[ID]:README.id.md\n[IT]:README.it.md\n[JA]:README.ja.md\n[KO_KR]:README.ko_kr.md\n[KU]:README.ku.md\n[LT]:README.lt.md\n[MM]:README.mm.md\n[MN]:README.mn.md\n[NE]:README.ne.md\n[NL]:README.nl.md\n[NO]:README.no.md\n[PL]:README.pl.md\n[PT_BR]:README.pt_br.md\n[RO]:README.ro.md\n[RU]:README.ru.md\n[SV]:README.sv.md\n[TR]:README.tr.md\n[UK]:README.uk.md\n[VI]:README.vi.md\n[ZH_CN]:README.zh_cn.md\n[ZH_TW]:README.zh_tw.md\n\n最初用於阿波羅 11 號的導航電腦 (Apollo 11 Guidance computer, AGC) 裡頭駕駛艙 (Comanche055) 和登月艙 (Luminary099) 的原始程式碼，由 [Virtual AGC](http://www.ibiblio.org/apollo/) 及 [MIT Museum](http://web.mit.edu/museum/) 的工作人員進行數位化，著眼於建立阿波羅 11 號原始程式碼的封存。正因如此，若您發現文件抄錄或於查看 [Luminary 099](http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/) 和 [Comanche 055](http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/) 這兩部分原始程式碼過程中遇到問題的話，歡迎提交 pull request。當然，也包括那些我可能遺忘的檔案。\n\n## 編譯\n\n若您對編譯原始程式碼有興趣，請見 [Virtual AGC](https://github.com/rburkey2005/virtualagc)。\n\n## 資訊和專案屬性\n\n&nbsp;      | &nbsp;\n:---------- | :-----\n授權聲明     | 公有領域 (Public domain)\nComanche055 | Part of the source code for Colossus 2A, the Command Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11<br>`Assemble revision 055 of AGC program Comanche by NASA`<br>`2021113-051. 10:28 APR. 1, 1969`\nLuminary099 | Part of the source code for Luminary 1A, the Lunar Module's (LM) Apollo Guidance Computer (AGC) for Apollo 11<br>`Assemble revision 001 of AGC program LMY99 by NASA`<br>`2021112-061. 16:27 JUL. 14, 1969`\n組譯器       | yaYUL\n連絡人       | Ron Burkey <info@sandroid.org>\n網站         | www.ibiblio.org/apollo\n數位化       | 這份原始程式碼整理自 MIT Museum 的數位化影像複印本。數位化由 Paul Fjeld 完成，並經過 MIT Museum 的 Deborah Douglas 整理，在此衷心感激兩位。\n\n### 合約和表揚（Contract and Approvals）\n\n*源自 [CONTRACT_AND_APPROVALS.agc]*\n\n該 AGC 程式也可被稱作: COLOSSUS 2A\n\n如同 R-577 報告指出，該程式主要用於阿波羅駕駛艙。此外，該程式是由 DSR 計劃 55-23870 籌劃，並由(美國)國家航空暨太空總署旗下的載人太空船中心經由合約 NAS 9-4065 資助。該合約是由(美國)實驗儀器公司、麻省理工學院、劍橋大學以及 MASS 共同簽定。\n\n提交者                | Role | 日期\n:------------------- | :--- | :--\nMargaret H. Hamilton | Colossus 程式設計負責人<br>阿波羅導引導航系統 | 1969 年 3 月 28 日\n\n核准人             | Role | 日期\n:---------------- | :--- | :--\nDaniel J. Lickly  | 負責人、任務程式開發<br>阿波羅導引導航程式 | 1969 年 3 月 28 日\nFred H. Martin    | Colossus 專案經理<br>阿波羅導引導航程式 | 1969 年 3 月 28 日\nNorman E. Sears   | 負責人、任務開發<br>阿波羅導引導航程式 | 1969 年 3 月 28 日\nRichard H. Battin | 負責人、任務開發<br>阿波羅導引導航程式 | 1969 年 3 月 28 日\nDavid G. Hoag     | 負責人<br>阿波羅導引導航程式 | 1969 年 3 月 28 日\nRalph R. Ragan    | 副負責人<br>(美國)實驗儀器公司 | 1969 年 3 月 28 日\n\n[CONTRACT_AND_APPROVALS.agc]:https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/CONTRACT_AND_APPROVALS.agc\n[1]:https://flat.badgen.net/badge/NASA/Mission%20Overview/0B3D91\n[2]:https://www.nasa.gov/mission_pages/apollo/missions/apollo11.html\n[3]:http://www.ibiblio.org/apollo/\n[4]:http://web.mit.edu/museum/\n[5]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/\n[6]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/\n[7]:https://github.com/chrislgarry/Apollo-11/blob/master/CONTRIBUTING.md\n[8]:https://github.com/rburkey2005/virtualagc\n[SWH]:https://flat.badgen.net/badge/Software%20Heritage/Archive/0B3D91\n[SWH_URL]:https://archive.softwareheritage.org/browse/origin/https://github.com/chrislgarry/Apollo-11/\n[Comanche]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/1\n[ComancheMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/1\n[Luminary]:https://flat.badgen.net/github/milestones/chrislgarry/Apollo-11/2\n[LuminaryMilestone]:https://github.com/chrislgarry/Apollo-11/milestone/2\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"scripts\": {\n    \"lint\": \"markdownlint-cli2 *.md translations/*.md Comanche055/*.md Luminary099/*.md --config .markdownlint.yml\",\n    \"lint:fix\": \"markdownlint-cli2 *.md translations/*.md Comanche055/*.md Luminary099/*.md --config .markdownlint.yml --fix\"\n  },\n  \"dependencies\": {},\n  \"devDependencies\": {\n    \"markdownlint-cli2\": \"^0.16.0\"\n  }\n}\n"
  }
]