Source Code

These source-code files are part of a reconstructed copy of Skylark 048, the Block II Command Module (CM) Apollo Guidance Computer (AGC) software for the Skylab-2, Skylab-3, Skylab-4, and Apollo-Soyuz Test Project missions.

They have been created via disassembly of binary dumps of the original core rope memory modules actually flown on Skylab-2, part numbers 2010802-541, 2010802-551, 2010802-561, 2010802-571, 2010802-581, and 2010802-591. Access to these modules was provided by the New Mexico Museum of Space History, who we are much indebted to.

The source code for the Apollo 15, 16, and 17 software, Artemis 072, was used as a starting point. Heavy use was made of TRW 4900.5-244, Programmed Guidance Equations for Skylark Command Module Earth Orbital Program, dated 14 February 1972. This document contains pseudocode of essentially all of Skylark, using original program labels which have been copied for this source reconstruction.

Since only binary dumps (rather than listings) of Skylark are available as source material, all comments and labels are approximate. They have been taken from the Programmed Guidance Equations or other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing.

005658,000002:                                                                                                  ## Copyright:   Public domain.
005659,000003:                                                                                                  ## Filename:    CHECK_EQUALS_LIST.agc
005660,000004:                                                                                                  ## Purpose:     A section of Skylark revision 048.
005661,000005:                                                                                                  ##              It is part of the source code for the Apollo Guidance Computer (AGC)
005662,000006:                                                                                                  ##              for Skylab-2, Skylab-3, Skylab-4, and ASTP. No original listings of
005663,000007:                                                                                                  ##              this software are available; instead, this file was created via
005664,000008:                                                                                                  ##              disassembly of dumps of the core rope modules actually flown on
005665,000009:                                                                                                  ##              Skylab-2. Access to these modules was provided by the New Mexico
005666,000010:                                                                                                  ##              Museum of Space History.
005667,000011:                                                                                                  ## Assembler:   yaYUL
005668,000012:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
005669,000013:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
005670,000014:                                                                                                  ## Mod history: 2023-09-04 MAS  Created from Artemis 072.
005671,000015:                                                                                                  ##              2024-03-04 MAS  Updated for Skylark 48.
005672,000016: 
005673,000017:                                                                                                  #  ********** CHECK EQUALS LIST **********
005674,000018: 
005675,000019:                                                                                                  #  THIS LIST IS MAINTAINED TO ENSURE THAT CERTAIN ERASABLE LOCATIONS
005676,000020:                                                                                                  #  ARE LOCATED AT A SPECIFIED DISTANCE FROM ANOTHER ERASABLE LOCATION
005677,000021:                                                                                                  #  AS REQUIRED BY THE STRUCTURE OF THE DOWNLINK LISTS:
005678,000022:                                                                                                  #        1. IF A LOCATION IS THE SECOND PART OF A DOWNLINK WORD, IT MUST
005679,000023:                                                                                                  #           BE CONTIGUOUS TO THE LOCATION THAT IS THE FIRST PART.
005680,000024:                                                                                                  #        2. IF A LOCATION IS NOT THE FIRST WORD OF AN NDNADR IT
005681,000025:                                                                                                  #           MUST BE AT A SPECIFIC NUMBER OF LOCATIONS FROM THE FIRST
005682,000026:                                                                                                  #           LOCATION IN THE INSTRUCTION.
005683,000027:                                                                                                  #        3. OTHER NAMES MAY BE GIVEN TO LOCATIONS IN THE DOWNLINK LISTS
005684,000028:                                                                                                  #           THAT ARE NOT REFERENCED IN THE LISTS.THESE MUST NOT BE MOVED.
005685,000029:                                                                                                  #  THIS IS ACCOMPLISHED USING THE INSTRUCTION    CHECK=  .
005686,000030:                                                                                                  #  THIS INSTRUCTION GIVES A CUSS IN THE ASSEMBLY IF THE LOCATION OF THE
005687,000031:                                                                                                  #  FIRST TAG FIELD IS NOT EQUAL TO THE LOCATION OF THE SECOND TAG FIELD.
005688,000032:                                                                                                  #  THE INSTRUCTION HAS NO OTHER EFFECT ON THE ASSEMBLY OR CODE.
005689,000033: 
005690,000034:                                                                                                  #  THIS LIST SHOULD BE UPDATED FOR ANY CHANGES TO THE DOWNLINK LISTS.
005691,000035: 
005692,000036:                                                                                                  #  THIS LIST IS MAINTAINED BY  SUMNER ROSENBERG
005693,000037: 
005694,000038: 
005695,000039: E7,1425                        TIME1              CHECK=   TIME2      +1                         
005696,000040: ???????                        CDUY               CHECK=   CDUX       +1                         
005697,000041: ???????                        CDUT               CHECK=   CDUZ       +1                         
005698,000042: ???????                        PIPAX              CHECK=   CDUS       +1                         
005699,000043: ???????                        PIPAY              CHECK=   PIPAX      +1                         
005700,000044: ???????                        PIPAZ              CHECK=   PIPAY      +1                         
005701,000045: ???????                        UPOLDMOD           CHECK=   COMPNUMB   +1                         
005702,000046: ???????                        UPVERB             CHECK=   UPOLDMOD   +1                         
005703,000047: ???????                        UPCOUNT            CHECK=   UPVERB     +1                         
005704,000048: ???????                        BESTJ              CHECK=   BESTI      +1                         
005705,000049: ???????                        FAILREG            CHECK=   C31FLWRD   +1                         
005706,000050: ???????                        TRKMKCNT           CHECK=   VHFCNT     +1                         
005707,000051: ???????                        OPTION2            CHECK=   OPTION1    +1                         
005708,000052: ???????                        THETAD             CHECK=   REDOCTR    +1                         
005709,000053: ???????                        IMODES33           CHECK=   IMODES30   +1                         
005710,000054: ???????                        HOLDFLAG           CHECK=   OPTMODES   +1                         
005711,000055: ???????                        RRATE              CHECK=   RANGE      +2                         
005712,000056: ???????                        HPERX              CHECK=   HAPOX      +2                         
005713,000057: ???????                        TCSI               CHECK=   TCDH       +2                         
005714,000058: ???????                        IGC                CHECK=   OGC        +2                         
005715,000059: ???????                        MGC                CHECK=   IGC        +2                         
005716,000060: ???????                        YACTOFF            CHECK=   PACTOFF    +1                         
005717,000061: ???????                        DAPDATR2           CHECK=   DAPDATR1   +1                         
005718,000062: ???????                        CSMMASS            CHECK=   LEMMASS    +1                         
005719,000063: ???????                        AK1                CHECK=   AK         +1                         
005720,000064: ???????                        AK2                CHECK=   AK1        +1                         
005721,000065: ???????                        RCSFLAGS           CHECK=   AK2        +1                         
005722,000066: 
005723,000067: ???????                        WBODY              CHECK=   OMEGAC                                
005724,000068: ???????                        ADOT               CHECK=   OGARATE                               
005725,000069: ???????                        ADOT1              CHECK=   ADOT       +2                         
005726,000070: ???????                        ADOT2              CHECK=   ADOT1      +2                         
005727,000071: ???????                        ERRORY             CHECK=   ERRORX     +1                         
005728,000072: ???????                        ERRORZ             CHECK=   ERRORY     +1                         
005729,000073: ???????                        THETADX            CHECK=   ERRORZ     +1                         
005730,000074: ???????                        THETADY            CHECK=   THETADX    +1                         
005731,000075: ???????                        THETADZ            CHECK=   THETADY    +1                         
005732,000076: ???????                        YCMD               CHECK=   PCMD       +1                         
005733,000077: ???????                        BETA/180           CHECK=   ALFA/180   +1                         
005734,000078: ???????                        PREL               CHECK=   CMDAPMOD   +1                         
005735,000079: ???????                        QREL               CHECK=   PREL       +1                         
005736,000080: ???????                        RREL               CHECK=   QREL       +1                         
005737,000081: ???????                        ROLLTM             CHECK=   PAXERR1    +1                         
005738,000082: ???????                        ROLLC              CHECK=   ROLLTM     +1                         
005739,000083: ???????                        LNG(SPL)           CHECK=   LAT(SPL)   +2                         
005740,000084: ???????                        RM                 CHECK=   MARKDOWN   +7                         
005741,000085: ???????                        RDOT               CHECK=   LATANG     +2                         
005742,000086: ???????                        THETAH             CHECK=   RDOT       +2                         
005743,000087: ???????                        GAMMAEI            CHECK=   VPRED      +2                         
005744,000088: ???????                        STATE              CHECK=   FLAGWRD0                              
005745,000089: ???????                        CMTMTIME           CHECK=   UPBUFF                                
005746,000090: ???????                        SW/NDX             CHECK=   UPBUFF     +1                         
005747,000091: ???????                        ENDBUF             CHECK=   UPBUFF     +16D                       
005748,000092: ???????                        V1                 CHECK=   UPBUFF     +17D                       
005749,000093: ???????                        A0                 CHECK=   UPBUFF     +19D                       
005750,000094: ???????                        DNLSTADR           CHECK=   DNLSTCOD                              
005751,000095: ???????                        CTLIST             CHECK=   DNLSTCOD   +1                         
005752,000096: ???????                        TEMPFLSH           CHECK=   CADRFLSH   +2                         
005753,000097: ???????                        LANDLAT            CHECK=   LAT                                   
005754,000098: ???????                        TLIFTOFF           CHECK=   TEVENT                                
005755,000099: ???????                        CPHI               CHECK=   THETAD                                
005756,000100: ???????                        RDOTREF            CHECK=   THETAD                                
005757,000101: ???????                        CTHETA             CHECK=   THETAD     +1                         
005758,000102: ???????                        CPSI               CHECK=   THETAD     +2                         
005759,000103: ???????                        VREF               CHECK=   THETAD     +2                         
005760,000104: ???????                        DELVX              CHECK=   DELV                                  
005761,000105: ???????                        DELVY              CHECK=   DELV       +2                         
005762,000106: ???????                        DELVZ              CHECK=   DELV       +4                         
005763,000107: ???????                        TETLEM             CHECK=   T-OTHER                               
005764,000108: ???????                        TETOTHER           CHECK=   T-OTHER                               
005765,000109: ???????                        RRATE2             CHECK=   RTHETA                                
005766,000110: ???????                        PAXERR             CHECK=   AK                                    
005767,000111: ???????                        OMEGAXC            CHECK=   OMEGAC                                
005768,000112: ???????                        TVCRCS             CHECK=   OMEGAC                                
005769,000113: ???????                        ASPS(TM)           CHECK=   WBODY                                 
005770,000114: ???????                        OMEGAYC            CHECK=   OMEGAC     +2                         
005771,000115: ???????                        WBODY1             CHECK=   WBODY      +2                         
005772,000116: ???????                        WBODY2             CHECK=   WBODY1     +2                         
005773,000117: 
005774,000118: ???????                        OMEGAZC            CHECK=   OMEGAC     +4                         
005775,000119: ???????                        OGARATE            CHECK=   OMEGAB                                
005776,000120: ???????                        OMEGAXB            CHECK=   OMEGAB                                
005777,000121: ???????                        XPIPBUF            CHECK=   ADOT                                  
005778,000122: ???????                        YPIPBUF            CHECK=   XPIPBUF    +1                         
005779,000123: ???????                        ZPIPBUF            CHECK=   YPIPBUF    +1                         
005780,000124: ???????                        XOLDBUF            CHECK=   ZPIPBUF    +1                         
005781,000125: ???????                        YOLDBUF            CHECK=   XOLDBUF    +1                         
005782,000126: ???????                        ZOLDBUF            CHECK=   YOLDBUF    +1                         
005783,000127: ???????                        OMEGAYB            CHECK=   OMEGAB     +2                         
005784,000128: ???????                        OMEGAZB            CHECK=   OMEGAB     +4                         
005785,000129: ???????                        VDT/180            CHECK=   ERRORX                                
005786,000130: ???????                        -VT/180E           CHECK=   ERRORY                                
005787,000131: ???????                        QAXERR             CHECK=   THETADX                               
005788,000132: ???????                        RAXERR             CHECK=   THETADY                               
005789,000133: ???????                        Q7                 CHECK=   THETADZ                               
005790,000134: ???????                        DELVLVC            CHECK=   DELVSLV                               
005791,000135: ???????                        DELVSIN            CHECK=   DELVEET3                              
005792,000136: ???????                        VGTEMP             CHECK=   DELVEET3                              
005793,000137: ???????                        VGPREV             CHECK=   VGTIG                                 
005794,000138: ???????                        LEWD               CHECK=   VIO                                   
005795,000139: ???????                        L/DCALC            CHECK=   TTE                                   
005796,000140: ???????                        VL                 CHECK=   VPRED                                 
005797,000141: ???????                        GAMMAL             CHECK=   GAMMAEI                               
005798,000142: ???????                        PREDANG            CHECK=   GAMMAEI                               
005799,000143: ???????                        JJ                 CHECK=   GAMMAEI    +1                         
005800,000144: ???????                        VTEMP              CHECK=   MARKTIME   +2                         
005801,000145: ???????                        VMAGI              CHECK=   VGTIG      +2                         
005802,000146: ???????                        TNSR               CHECK=   TCDH                                  
005803,000147: ???????                        TNCC               CHECK=   TCSI                                  
005804,000148: 
005805,000149: ???????                        ASKEP              CHECK=   ASPS                                  
005806,000150: ???????                        ASP1               CHECK=   ASPS       +1                         
005807,000151: ???????                        ASPUP              CHECK=   ASPS       +2                         
005808,000152: ???????                        ASPDWN             CHECK=   ASPS       +3                         
005809,000153: ???????                        ASP3               CHECK=   ASPS       +4                         
005810,000154: ???????                        DUMMYAD            CHECK=   ROO        +3                         

End of include-file CHECK_EQUALS_LIST.agc.  Parent file is MAIN.agc