Source Code

These source-code files are part of a reconstructed copy of Comanche 51, the initial release (though not the final mission release) of the Apollo 11 Command Module (CM) Apollo Guidance Computer (AGC) software. The flown, final release was Comanche 55. The reconstruction is believed to be exactly accurate, but in the absence of an actual Apollo-era listing of Comanche 51, some explanation of the reconstruction process is needed to insure confidence in that accuracy.

The starting point was the source code of Comanche 55, whose original source code is available. Comanche 55 source code was then modified by undoing changes known to have been made between revisions 51 and 55. The most-significant steps involved reverting changes related to the R-2 lunar potential model, the details of which were known from the previous, separate, independent reconstruction of the Apollo 10 Lunar Module software Luminary 69/2. The now-reconstructed Comanche 51 source code was verified by assembling it and checking that the assembled code had the expected known-correct memory-bank checksums. Note that page numbers in the reconstructed code match those on the Comanche 55 or Luminary 69 printouts, although the source code would likely have different page numbers in a contemporary Comanche 51 listing.

Annotations that were not present in the contemporary source code have been added to the reconstructed code to justify each change relative to Comanche 55. Here's a guide to some of the Apollo documentation relevant to those annotations:
Among documentation not actually referenced in the annotations, there is a short writeup about the reconstruction process in our software repository that may be helpful in understanding it from a different perspective. There's also a handy table that lists what the number of memory-words should be for each routine in Comanche 51, which could make a nice double-check; however, we've not performed that double-check ourselves.

Comments expected to have been present in the original source code are prefixed with a single '#' symbol, whereas comments added later are prefixed by "##" or "###". Report any errors noted by creating an issue report at the Virtual AGC Project's GitHub repository.

063603,000002:                                                                                                  ## Copyright:   Public domain.
063604,000003:                                                                                                  ## Filename:    UPDATE_PROGRAM.agc
063605,000004:                                                                                                  ## Purpose:     A section of Comanche revision 051.
063606,000005:                                                                                                  ##              It is part of the reconstructed source code for the
063607,000006:                                                                                                  ##              original release of the flight software for the Command
063608,000007:                                                                                                  ##              Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11.
063609,000008:                                                                                                  ##              The code has been recreated from a copy of Comanche 055. It
063610,000009:                                                                                                  ##              has been adapted such that the resulting bugger words
063611,000010:                                                                                                  ##              exactly match those specified for Comanche 51 in NASA drawing
063612,000011:                                                                                                  ##              2021153D, which gives relatively high confidence that the
063613,000012:                                                                                                  ##              reconstruction is correct.
063614,000013:                                                                                                  ## Reference:   pp. 1497-1507
063615,000014:                                                                                                  ## Assembler:   yaYUL
063616,000015:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
063617,000016:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
063618,000017:                                                                                                  ## Mod history: 2019-07-30 MAS  Created from Comanche 55.
063619,000018: 

Page 1497

063621,000020:                                                                                                  #  PROGRAM NAME:         P27
063622,000021:                                                                                                  #  WRITTEN BY:           KILROY/ DE WOLF
063623,000022: 
063624,000023:                                                                                                  #  MOD NO:               6
063625,000024:                                                                                                  #  MOD BY:               KILROY
063626,000025:                                                                                                  #  DATE:                 01DEC67
063627,000026: 
063628,000027:                                                                                                  #  LOG SECTION:          UPDATE PROGRAM.
063629,000028: 
063630,000029:                                                                                                  #  FUNCT. DESCR: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
063631,000030:                                                                                                  #                        INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
063632,000031:                                                                                                  #                        THE P27 PROGRAM WILL ACCEPT UPDATES
063633,000032:                                                                                                  #                        ONLY DURING P00 FOR THE LM, AND ONLY DURING P00,
063634,000033:                                                                                                  #                        P02, AND FRESH START FOR THE CSM
063635,000034: 
063636,000035:                                                                                                  #  CALLING SEQ:          PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72 AND 73.
063637,000036: 
063638,000037:                                                                                                  #  SUBROUTINES:          TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
063639,000038:                                                                                                  #                        INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
063640,000039: 
063641,000040:                                                                                                  #  NORMAL EXIT:          TC ENDEXT
063642,000041: 
063643,000042:                                                                                                  #  ALARM/ABORT:          TC FALTON FOLLOWED BY TC ENDEXT
063644,000043: 
063645,000044:                                                                                                  #  RESTARTS:             P27 IS RESTART PROTECTED IN TWO WAYS ...
063646,000045:                                                                                                  #                        1.      PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
063647,000046:                                                                                                  #                                DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
063648,000047:                                                                                                  #                                NO PROTECTION EXCEPT PRE-P27 MODE IS RESTORED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK
063649,000048:                                                                                                  #                                ACTIVITY LIGHT IS TURNED OFF.  (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
063650,000049:                                                                                                  #                                V70,V71,V72 OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
063651,000050:                                                                                                  #                        2.      AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
063652,000051:                                                                                                  #                                PROTECTED AGAINST RESTARTS.
063653,000052: 
063654,000053:                                                                                                  #  DEBRIS:               UPBUFF  (20D)   TEMP STORAGE FOR ADDRESSES AND CONTENTS.
063655,000054:                                                                                                  #                        UPVERB  (1)     VERB NUMBER MINUS 70D (E.G. FOR V72, UPVERB = 72D - 70D = 2)
063656,000055:                                                                                                  #                        UPOLDMOD(1)     FOR MAJOR MODE INTERRUPTED BY P27.
063657,000056:                                                                                                  #                        COMPNUMB(1)     TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
063658,000057:                                                                                                  #                        UPCOUNT (1)     ACTUAL NUMBER OF COMPONENTS RECEIVED.
063659,000058:                                                                                                  #                        UPTEMP  (1)     SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE
063660,000059: 
063661,000060:                                                                                                  #  INPUT:
063662,000061: 
063663,000062:                                                                                                  #        ENTRY:                  DESCRIPTION
063664,000063:                                                                                                  #        V70EXXXXXEXXXXXE        (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
063665,000064:                                                                                                  #                                IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
063666,000065:                                                                                                  #                                VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
063667,000066:                                                                                                  #                                THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).

Page 1498

063669,000068:                                                                                                  #        V71EIIEAAAAE            (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX,
063670,000069:                                                                                                  #        XXXXXE                  ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
063671,000070:                                                                                                  #        XXXXXE                  IT IS .GE. 3 .AND. .LE. 20D.,
063672,000071:                                                                                                  #                                AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
063673,000072:                                                                                                  #        9 NEXT BANK
063674,000073:                                                                                                  #          .                     SCALING IS SAME AS INTERNAL REGISTERS.
063675,000074:                                                                                                  #        V72EIIE                 (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE
063676,000075:                                                                                                  #        AAAAEXXXXXE             LOADED INTO ERASABLE LOCATIONS, AAAA.
063677,000076:                                                                                                  #        AAAAEXXXXXE             II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
063678,000077:                                                                                                  #          .                     SCALING IS SAME AS INTERNAL REGISTERS.
063679,000078: 
063680,000079:                                                                                                  #        V73EXXXXXEXXXXXE        (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
063681,000080:                                                                                                  #                                INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
063682,000081:                                                                                                  #                                CENTISECONDS SCALED AT (2)28.
063683,000082:                                                                                                  #                                THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
063684,000083: 
063685,000084:                                                                                                  #  OUTPUT:               IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
063686,000085:                                                                                                  #                        COMPLEMENT BIT3 OF FLAGWORD7.
063687,000086: 
063688,000087:                                                                                                  #  ADDITIONAL NOTES:     VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --
063689,000088:                                                                                                  #                        1.  CSM/LM STATE VECTOR UPDATE
063690,000089:                                                                                                  #                        2.  REFSMMAT UPDATE
063691,000090: 
063692,000091:                                                                                                  #        THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE ----
063693,000092: 
063694,000093:                                                                                                  #        1.  CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
063695,000094:                                                                                                  #                ENTRIES:        DATA DEFINITION:                                SCALE FACTORS:
063696,000095:                                                                                                  #                V71E            CONTIGUOUS BLOCK UPDATE VERB
063697,000096:                                                                                                  #                   21E          NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
063698,000097:                                                                                                  #                 AAAAE          ECADR OF 'UPSVFLAG'
063699,000098:                                                                                                  #                XXXXXE          STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM - EARTH SPHERE OF INFLUENCE SCALING
063700,000099:                                                                                                  #                                                         00002 FOR CSM, 77775 FOR LEM - LUNAR SPHERE OF INFLUENCE SCALING
063701,000100:                                                                                                  #                XXXXXEXXXXXE    X POSITION
063702,000101:                                                                                                  #                XXXXXEXXXXXE    Y POSITION
063703,000102:                                                                                                  #                XXXXXEXXXXXE    Z POSITION
063704,000103:                                                                                                  #                XXXXXEXXXXXE    X VELOCITY
063705,000104:                                                                                                  #                XXXXXEXXXXXE    Y VELOCITY
063706,000105:                                                                                                  #                XXXXXEXXXXXE    Z VELOCITY
063707,000106:                                                                                                  #                XXXXXEXXXXXE    TIME FROM AGC CLOCK ZERO
063708,000107:                                                                                                  #                V33E            VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
063709,000108: 
063710,000109:                                                                                                  #        2.  REFSMMAT (ALL DATA ENTRIES IN OCTAL)
063711,000110:                                                                                                  #                ENTRIES:                DATA DEFINITIONS:                               SCALE FACTORS:

Page 1499

063713,000112:                                                                                                  #                V71E            CONTIGUOUS BLOCK UPDATE VERB
063714,000113:                                                                                                  #                   24E          NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
063715,000114:                                                                                                  #                 AAAAE          ECADR OF 'REFSMMAT'
063716,000115:                                                                                                  #                XXXXXEXXXXXE    ROW 1 COLUMN 1                                  2(-1)
063717,000116:                                                                                                  #                XXXXXEXXXXXE    ROW 1 COLUMN 2                                  2(-1)
063718,000117:                                                                                                  #                XXXXXEXXXXXE    ROW 1 COLUMN 3                                  2(-1)
063719,000118:                                                                                                  #                XXXXXEXXXXXE    ROW 2 COLUMN 1                                  2(-1)
063720,000119:                                                                                                  #                XXXXXEXXXXXE    ROW 2 COLUMN 2                                  2(-1)
063721,000120:                                                                                                  #                XXXXXEXXXXXE    ROW 2 COLUMN 3                                  2(-1)
063722,000121:                                                                                                  #                XXXXXEXXXXXE    ROW 3 COLUMN 1                                  2(-1)
063723,000122:                                                                                                  #                XXXXXEXXXXXE    ROW 3 COLUMN 2                                  2(-1)
063724,000123:                                                                                                  #                XXXXXEXXXXXE    ROW 3 COLUMN 3                                  2(-1)
063725,000124:                                                                                                  #                V33E            VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED.
063726,000125: 
063727,000126: 07,3777                                           BANK     07                                    
063728,000127: 43,2000                                           SETLOC   EXTVERBS                              
063729,000128: 43,2000                                           BANK                                           
063730,000129: 
063731,000130: 43,3726  E3,1706                                  EBANK=   TEPHEM                                
063732,000131: 
063733,000132: 43,3726                                           COUNT*   $$/P27                                
063734,000133: 43,3726           35021        V70UPDAT           CAF      UP70                                  #  COMES HERE ON V70E
063735,000134: 43,3727           13735                           TCF      V73UPDAT   +1                         
063736,000135: 
063737,000136: 43,3730           35017        V71UPDAT           CAF      UP71                                  #  COMES HERE ON V71E
063738,000137: 43,3731           13735                           TCF      V73UPDAT   +1                         
063739,000138: 
063740,000139: 43,3732           35016        V72UPDAT           CAF      UP72                                  #  COMES HERE ON V72E
063741,000140: 43,3733           13735                           TCF      V73UPDAT   +1                         
063742,000141: 
063743,000142: 43,3734           36214        V73UPDAT           CAF      UP73                                  #  COMES HERE ON V73E
063744,000143: 
063745,000144: 43,3735           54331                 +1        TS       UPVERBSV                              #  SAVE UPVERB UNTIL IT'S OK TO ENTER P27
063746,000145: 
063747,000146: 43,3736           02076                           TC       TESTXACT                              #  GRAB DISPLAY IF AVAILABLE, OTHERWISE
063748,000147:                                                                                                  #  TURN *OPERATOR ERROR* ON AND TERMINATE JOB
063749,000148: 
063750,000149: 43,3737           31011                           CA       MODREG                                #  CHECK IF UPDATE ALLOWED
063751,000150: 43,3740           00006                           EXTEND                                         #  FIRST CHECK FOR MODREG = +0, -0
063752,000151: 43,3741           13743                           BZF      +2                                    #  (+0 = P00, -0 = FRESHSTART)
063753,000152: 43,3742           03753                           TC       CKMDMORE                              #  NOW CHECK FOR PROGRAM WHICH CAN BE
063754,000153:                                                                                                  #  INTERRUPTED BY P27.
063755,000154: 
063756,000155: 43,3743           31011                           CAE      MODREG                                #  UPDATE ALLOWED.
063757,000156: 43,3744           54301                           TS       UPOLDMOD                              #  SAVE CURRENT MAJOR MODE

Page 1500

063759,000158: 43,3745           30331                           CAE      UPVERBSV                              #  SET UPVERB TO INDICATE TO P27
063760,000159: 43,3746           54302                           TS       UPVERB                                #  WHICH EXTENDED VERB CALLED IT.
063761,000160: 
063762,000161: 43,3747           35017                           CAF      ONE                                   
063763,000162: 43,3750           54303                           TS       UPCOUNT                               #  INITIALIZE UPCOUNT TO 1
063764,000163: 
063765,000164: 43,3751           04701                           TC       POSTJUMP                              #  LEAVE EXTENDED VERB BANK AND
063766,000165: 43,3752           57373                           CADR     UPPART2                               #  GO TO UPDATE PROGRAM (P27) BANK.
063767,000166: 
063768,000167: 43,3753           40101        CKMDMORE           CS       FLAGWRD5                              
063769,000168: 43,3754           75010                           MASK     BIT8                                  #  CHECK IF COMPUTER IS LGC
063770,000169: 43,3755           10000                           CCS      A                                     #  IS COMPUTER LGC OR AGC
063771,000170: 43,3756           13764        UPERLEM            TCF      UPERROR                               #  ERROR- IT'S THE LEM + MODE IS NOT POO.
063772,000171: 43,3757           45016                           CS       TWO                                   
063773,000172: 43,3760           71011                           MASK     MODREG                                
063774,000173: 43,3761           10000                           CCS      A                                     
063775,000174: 43,3762           13764        UPERCMC            TCF      UPERROR                               #  ERROR- IT'S THE CMC AND MODE IS NOT
063776,000175:                                                                                                  #  P00 OR P02.
063777,000176: 43,3763           00002                           TC       Q                                     #  ALLOW UPDATE TO PROCEED
063778,000177: 
063779,000178: 43,3764           04701        UPERROR            TC       POSTJUMP                              #  TURN ON 'OPERATOR ERROR' LIGHT
063780,000179: 43,3765           57754                           CADR     UPERROUT   +2                         #  GO TO COMMON UPDATE PROGRAM EXIT
063781,000180: 
063782,000181: 43,3766  30,2000                                  SBANK=   LOWSUPER                              
063783,000182: 43,3766     5021               UP70               EQUALS   ZERO                                  
063784,000183: 43,3766     5017               UP71               EQUALS   ONE                                   
063785,000184: 43,3766     5016               UP72               EQUALS   TWO                                   
063786,000185: 43,3766     6214               UP73               EQUALS   THREE                                 
063787,000186: 
063788,000187: 04,3757                                           BANK     04                                    
063789,000188: 27,2000                                           SETLOC   UPDATE2                               
063790,000189: 27,2000                                           BANK                                           
063791,000190: 
063792,000191: 27,3373                                           COUNT*   $$/P27                                
063793,000192: 
063794,000193: 27,3373                        UPPART2            EQUALS                                         #  UPDATE PROGRAM - PART 2
063795,000194: 
063796,000195: 27,3373           05412                           TC       PHASCHNG                              #  SET RESTART GROUP 6 TO RESTORE OLD MODE
063797,000196: 27,3374           07026                           OCT      07026                                 #  AND DOWNLIST AND EXIT IF RESTART OCCURS.
063798,000197: 27,3375           30000                           OCT      30000                                 #  PRIORITY SAME AS CHRPRIO
063799,000198: 27,3376     0304                                  EBANK=   UPBUFF                                
063800,000199: 27,3376           03704 56060                     2CADR    UPOUT      +1                         
063801,000200: 
063802,000201: 27,3400           35017                           CAF      ONE                                   
063803,000202: 27,3401           54332                           TS       DNLSTCOD                              #  DOWNLIST
063804,000203: 
063805,000204: 27,3402           05354                           TC       NEWMODEX                              #  SET MAJOR MODE = 27

Page 1501

063807,000206: 27,3403           00033                           DEC      27         B-14                       
063808,000207: 
063809,000208: 27,3404           50302                           INDEX    UPVERB                                #  BRANCH DEPENDING ON WHETHER THE UPDATE
063810,000209: 27,3405           13406                           TCF      +1                                    #  VERB REQUIRES A FIXED OR VARIABLE NUMBER
063811,000210: 27,3406           13411                           TCF      +3                                    #  V70 FIXED.               (OF COMPONENTS.
063812,000211: 27,3407           13414                           TCF      OHWELL1                               #  V71 VARIABLE - GO GET NO. OF COMPONENTS
063813,000212: 27,3410           13414                           TCF      OHWELL1                               #  V72 VARIABLE - GO GET NO. OF COMPONENTS
063814,000213: 27,3411           35016                           CA       TWO                                   #  V73 (AND V70) FIXED
063815,000214: 27,3412           54300                           TS       COMPNUMB                              #  SET NUMBER OF COMPONENTS TO 2.
063816,000215: 27,3413           13437                           TCF      OHWELL2                               #  GO GET THE TWO UPDATE COMPONENTS
063817,000216: 
063818,000217: 27,3414           33507        OHWELL1            CAF      ADUPBUFF                              #  * REQUEST USER TO SEND NUMBER  *
063819,000218: 27,3415           54156                           TS       MPAC       +2                         #  * OF COMPONENTS PARAMETER(II). *
063820,000219: 27,3416           33510                 +2        CAF      UPLOADNV                              #  (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
063821,000220: 27,3417           04662                           TC       BANKCALL                              #  DISPLAY A FLASHING V21N01
063822,000221: 27,3420           20561                           CADR     GOXDSPF                               #  TO REQUEST II.
063823,000222: 27,3421           13704                           TCF      UPOUT4                                #  V34 TERMINATE UPDATE (P27) RETURN
063824,000223: 27,3422           13416                           TCF      OHWELL1    +2                         
063825,000224: 27,3423           03500                           TC       CK4V32                                #  DATA OR V32 RETURN
063826,000225: 27,3424           45016                           CS       BIT2                                  
063827,000226: 27,3425           60304                           AD       UPBUFF                                #  IS II (NUMBER OF COMPONENTS PARAMETER)
063828,000227: 27,3426           00006                           EXTEND                                         #  .GE. 3 AND .LE. 20D.
063829,000228: 27,3427           63416                           BZMF     OHWELL1    +2                         
063830,000229: 27,3430           40304                           CS       UPBUFF                                
063831,000230: 27,3431           64376                           AD       UP21                                  
063832,000231: 27,3432           00006                           EXTEND                                         
063833,000232: 27,3433           63416                           BZMF     OHWELL1    +2                         
063834,000233: 27,3434           30304                           CAE      UPBUFF                                
063835,000234: 27,3435           54300                           TS       COMPNUMB                              #  SAVE II IN COMPNUMB
063836,000235: 
063837,000236:                                                                                                  #  UPBUFF LOADING SEQUENCE
063838,000237: 
063839,000238: 27,3436           24303                           INCR     UPCOUNT                               #  INCREMENT COUNT OF COMPONENTS RECEIVED.
063840,000239: 27,3437           33654        OHWELL2            CAF      ADUPBFM1                              #  CALCULATE LOCATION (ECADR) IN UPBUFF
063841,000240: 27,3440           60303                           AD       UPCOUNT                               #  WHERE NEXT COMPONENT SHOULD BE STORED.
063842,000241: 27,3441           54156                 +2        TS       MPAC       +2                         #  PLACE ECADR INTO R3.
063843,000242: 27,3442           33510                 +3        CAF      UPLOADNV                              #  (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
063844,000243: 27,3443           04662                           TC       BANKCALL                              #  DISPLAY A FLASHING V21N01
063845,000244: 27,3444           20561                           CADR     GOXDSPF                               #  TO REQUEST DATA.
063846,000245: 27,3445           13704                           TCF      UPOUT4                                #  V34 TERMINATE UPDATE (P27) RETURN.
063847,000246: 27,3446           13442                           TCF      OHWELL2    +3                         #  V33 PROCEED RETURN
063848,000247: 27,3447           03500                           TC       CK4V32                                #  DATA OR V32 RETURN
063849,000248: 27,3450           40303                           CS       UPCOUNT                               #  HAVE WE FINISHED RECEIVING ALL
063850,000249: 27,3451           60300                           AD       COMPNUMB                              #  THE DATA WE EXPECTED.
063851,000250: 27,3452           00006                           EXTEND                                         
063852,000251: 27,3453           63455                           BZMF     UPVERIFY                              #  YES- GO TO VERIFICATION SEQUENCE
063853,000252: 27,3454           13436                           TCF      OHWELL2    -1                         #  NO- REQUEST ADDITIONAL DATA.
063854,000253: 

Page 1502

063856,000255:                                                                                                  #  VERIFY SEQUENCE
063857,000256: 27,3455           33506        UPVERIFY           CAF      ADUPTEMP                              #  PLACE ECADR WHERE COMPONENT NO. INDEX
063858,000257: 27,3456           54156                           TS       MPAC       +2                         #  IS TO BE STORED INTO R3.
063859,000258: 27,3457           33511                           CAF      UPVRFYNV                              #  (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
063860,000259: 27,3460           04662                           TC       BANKCALL                              #  DISPLAY A FLASHING V21N02 TO REQUEST
063861,000260: 27,3461           20561                           CADR     GOXDSPF                               #  DATA CORRECTION OR VERIFICATION.
063862,000261: 27,3462           13704                           TCF      UPOUT4                                #  V34 TERMINATE UPDATE (P27) RETURN
063863,000262: 27,3463           13512                           TCF      UPSTORE                               #  V33 DATA SENT IS GOOD.  GO STORE IT.
063864,000263: 27,3464           03500                           TC       CK4V32                                #  COMPONENT NO. INDEX OR V32 RETURN
063865,000264: 27,3465           30330                           CA       UPTEMP                                #  DOES THE COMPONENT NO. INDEX JUST SENT
063866,000265: 27,3466           00006                           EXTEND                                         #  SPECIFY A LEGAL COMPONENT NUMBER?
063867,000266: 27,3467           63455                           BZMF     UPVERIFY                              #  NO, IT IS NOT POSITIVE NONZERO
063868,000267: 27,3470           40330                           CS       UPTEMP                                
063869,000268: 27,3471           60300                           AD       COMPNUMB                              
063870,000269: 27,3472           65017                           AD       BIT1                                  
063871,000270: 27,3473           00006                           EXTEND                                         
063872,000271: 27,3474           63455                           BZMF     UPVERIFY                              #  NO
063873,000272: 27,3475           33654                           CAF      ADUPBFM1                              #  YES- BASED ON THE COMPONENT NO. INDEX
063874,000273: 27,3476           60330                           AD       UPTEMP                                #  CALCULATE THE ECADR OF LOCATION IN
063875,000274: 27,3477           13441                           TCF      OHWELL2    +2                         #  UPBUFF WHICH USER WANTS TO CHANGE.
063876,000275: 
063877,000276: 27,3500  27,3704               UPOUT4             EQUALS   UPOUT      +1                         #  COMES HERE ON V34 TO TERMINATE UPDATE
063878,000277: 
063879,000278:                                                                                                  #  CHECK FOR VERB 32 SEQUENCE
063880,000279: 
063881,000280: 27,3500           40154        CK4V32             CS       MPAC                                  #  ON DATA RETURN FROM 'GOXDSPF'
063882,000281: 27,3501           75012                           MASK     BIT6                                  #  ON DATA RETURN FROM "GOXDSP"& THE CON-
063883,000282: 27,3502           10000                           CCS      A                                     #  TENTS OF MPAC = VERB.  SO TEST FOR V32.
063884,000283: 27,3503           00002                           TC       Q                                     #  IT'S NOT A V32, IT'S DATA.  PROCEED.
063885,000284: 27,3504           50002                           INDEX    Q                                     
063886,000285: 27,3505           77771                           TC       0          -6                         #  V32 ENCOUNTERED - GO BACK AND GET DATA
063887,000286: 
063888,000287: 27,3506           00330        ADUPTEMP           ADRES    UPTEMP                                #  ADDRESS OF TEMP STORAGE FOR CORRECTIONS
063889,000288: 27,3507           00304        ADUPBUFF           ADRES    UPBUFF                                #  ADDRESS OF UPDATE DATA STORAGE BUFFER
063890,000289: 27,3510           05201        UPLOADNV           VN       2101                                  #  VERB 21 NOUN 01
063891,000290: 27,3511           05202        UPVRFYNV           VN       2102                                  #  VERB 21 NOUN 02
063892,000291: 27,3512     4376               UP21               =        MD1                                   #  DEC 21 = MAX NO OF COMPONENTS +1
063893,000292: 27,3512     5022               UPDTPHAS           EQUALS   FIVE                                  
063894,000293: 
063895,000294:                                                                                                  #  PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
063896,000295: 
063897,000296: 27,3512                        UPSTORE            EQUALS                                         #  GROUND HAS VERIFIED UPDATE.  STORE DATA.
063898,000297: 
063899,000298: 27,3512           00004                           INHINT                                         
063900,000299: 
063901,000300: 27,3513           30103                           CAE      FLAGWRD7                              #  INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO
063902,000301: 27,3514           56001                           XCH      L                                     #  INDICATE TO THE GROUND (VIA DOWNLINK)
063903,000302: 27,3515           35015                           CAF      BIT3                                  #  THAT THE V33 (WHICH THE GROUND SENT TO

Page 1503

063905,000304: 27,3516           00006                           EXTEND                                         #  VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
063906,000305: 27,3517           06001                           RXOR     LCHAN                                 #  RECEIVED BY THE UPDATE PROGRAM
063907,000306: 27,3520           54103                           TS       FLAGWRD7                              
063908,000307: 
063909,000308: 27,3521           05412                           TC       PHASCHNG                              #  SET RESTART GROUP 6 TO REDO THE UPDATE
063910,000309: 27,3522           04026                           OCT      04026                                 #  DATA STORE IF A RESTART OCCURS.
063911,000310: 27,3523           00004                           INHINT                                         #  (BECAUSE PHASCHNG DID A RELINT)
063912,000311: 
063913,000312: 27,3524           45016                           CS       TWO                                   #  GO TO UPFNDVAC IF INSTALL IS REQUIRED,
063914,000313: 27,3525           60302                           AD       UPVERB                                #  THAT IS, IF IT'S A V70 - V72.
063915,000314: 27,3526           00006                           EXTEND                                         #  GO TO UPEND73 IF IT'S A V73.
063916,000315: 27,3527           63536                           BZMF     UPFNDVAC                              
063917,000316: 
063918,000317:                                                                                                  #  VERB 73 BRANCH
063919,000318: 
063920,000319: 27,3530           00006        UPEND73            EXTEND                                         #  V73-PERFORM DP OCTAL AGC CLOCK INCREMENT
063921,000320: 27,3531           30305                           DCA      UPBUFF                                
063922,000321: 27,3532           52315                           DXCH     UPBUFF     +8D                        
063923,000322: 27,3533           03561                           TC       TIMEDIDL                              
063924,000323: 27,3534           04400                           TC       FALTON                                #  ERROR- TURN ON *OPERATOR ERROR* LIGHT
063925,000324: 27,3535           03704                           TC       UPOUT      +1                         #  GO TO COMMON UPDATE PROGRAM EXIT
063926,000325: 
063927,000326: 27,3536           34371        UPFNDVAC           CAF      CHRPRIO                               #  (USE EXTENDED VERB PRIORITY)
063928,000327: 27,3537           05147                           TC       FINDVAC                               #  GET VAC AREA FOR 'CALL INTSTALL'
063929,000328: 27,3540  E3,1706                                  EBANK=   TEPHEM                                
063930,000329: 27,3540           03543 56063                     2CADR    UPJOB                                 #  (NOTE:  THIS WILL ALSO SET EBANK FOR
063931,000330: 27,3542           05217                           TC       ENDOFJOB                              #  'TEPHEM' UPDATE BY V70)
063932,000331: 
063933,000332: 27,3543           06006        UPJOB              TC       INTPRET                               #  THIS COULD BE A STATE VECTOR UPDATE -- SO
063934,000333: 27,3544           77624                           CALL                                           #  WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI)
063935,000334: 27,3545           27442                                    INTSTALL                              #  IS IN PROGRESS -- OR -- GRAB OI AND RETURN
063936,000335:                                                                                                  #  TO UPWAKE IF OI IS NOT IN PROGRESS.
063937,000336: 
063938,000337: 27,3546           77776        UPWAKE             EXIT                                           
063939,000338: 
063940,000339: 27,3547           05412                           TC       PHASCHNG                              #  RESTART PROTECT (GROUP 6)
063941,000340: 27,3550           04026                           OCT      04026                                 
063942,000341: 
063943,000342: 27,3551           05546                           TC       UPFLAG                                #  SET INTEGRATION RESTART BIT
063944,000343: 27,3552           00236                           ADRES    REINTFLG                              
063945,000344: 27,3553           00004                           INHINT                                         
063946,000345: 27,3554                        UPPART3            EQUALS                                         
063947,000346: 
063948,000347: 27,3554           50302                           INDEX    UPVERB                                #  BRANCH TO THE APPROPRIATE UPDATE VERB
063949,000348: 27,3555           13556                           TCF      +1                                    #  ROUTINE TO ACTUALLY PERFORM THE UPDATE
063950,000349: 27,3556           13715                           TCF      UPEND70                               #  V70
063951,000350: 27,3557           13624                           TCF      UPEND71                               #  V71
063952,000351: 27,3560           13656                           TCF      UPEND72                               #  V72
063953,000352: 

Page 1504

063955,000354:                                                                                                  #  ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
063956,000355: 27,3561           00006        TIMEDIDL           EXTEND                                         
063957,000356: 27,3562           22330                           QXCH     UPTEMP                                #  SAVE Q FOR RETURN
063958,000357: 27,3563           35021                           CAF      ZERO                                  #  ZERO AND SAVE TIME2,TIME1
063959,000358: 27,3564           22007                           ZL                                             
063960,000359: 27,3565           52025                           DXCH     TIME2                                 
063961,000360: 27,3566           52327                           DXCH     UPBUFF     +18D                       #  STORE IN CASE OF OVERFLOW
063962,000361: 
063963,000362: 27,3567           35022                           CAF      UPDTPHAS                              #  DO
063964,000363: 27,3570           54001                           TS       L                                     #  A
063965,000364: 27,3571           40000                           COM                                            #  QUICK
063966,000365: 27,3572           52765                           DXCH     -PHASE6                               #  PHASCHNG
063967,000366: 
063968,000367: 27,3573           00004        TIMEDIDR           INHINT                                         
063969,000368: 27,3574           35021                           CAF      ZERO                                  
063970,000369: 27,3575           22007                           ZL                                             #  PICK UP INCREMENTER(AND ZERO
063971,000370: 27,3576           54156                           TS       MPAC       +2                         #  IT IN CASE OF RESTARTS) AND
063972,000371: 27,3577           52315                           DXCH     UPBUFF     +8D                        #  STORE IT
063973,000372: 27,3600           52155                           DXCH     MPAC                                  #  INTO MPAC FOR TPAGREE.
063974,000373: 
063975,000374: 27,3601           00006                           EXTEND                                         
063976,000375: 27,3602           30327                           DCA      UPBUFF     +18D                       
063977,000376: 27,3603           20155                           DAS      MPAC                                  #  FORM SUM IN MPAC
063978,000377: 27,3604           00006                           EXTEND                                         
063979,000378: 27,3605           13614                           BZF      DELTAOK                               #  TEST FOR OVERFLOW
063980,000379: 27,3606           35021                           CAF      ZERO                                  
063981,000380: 27,3607           52327                           DXCH     UPBUFF     +18D                       #  OVERFLOW, RESTORE OLD VALUE OF CLOCK
063982,000381: 27,3610           20025                           DAS      TIME2                                 #  AND TURN ON OPERATOR ERROR
063983,000382: 
063984,000383: 27,3611           05412                           TC       PHASCHNG                              #  RESTART PROTECT (GROUP 6)
063985,000384: 27,3612           04026                           OCT      04026                                 
063986,000385: 
063987,000386: 27,3613           00330                           TC       UPTEMP                                #  GO TO ERROR EXIT
063988,000387: 
063989,000388: 27,3614           07226        DELTAOK            TC       TPAGREE                               #  FORCE SIGN AGREEMENT
063990,000389: 27,3615           52155                           DXCH     MPAC                                  
063991,000390: 27,3616           20025                           DAS      TIME2                                 #  INCREMENT TIME2,TIME1
063992,000391: 
063993,000392: 27,3617           05412                           TC       PHASCHNG                              #  RESTART PROTECT (GROUP 6)
063994,000393: 27,3620           04026                           OCT      04026                                 
063995,000394: 
063996,000395: 27,3621           00004                           INHINT                                         
063997,000396: 27,3622           50330                           INDEX    UPTEMP                                #  (CODED THIS WAY FOR RESTART PROTECTION)
063998,000397: 27,3623           00001                           TC       1                                     #  NORMAL RETURN
063999,000398: 
064000,000399:                                                                                                  #  VERB 71 BRANCH
064001,000400: 
064002,000401: 27,3624           30305        UPEND71            CAE      UPBUFF     +1                         #  SET EBANK
064003,000402: 27,3625           54003                           TS       EBANK                                 #        AND

Page 1505

064005,000404: 27,3626           74373                           MASK     LOW8                                  #  CALCULATE
064006,000405: 27,3627           54330                           TS       UPTEMP                                #  S-REG VALUE OF RECEIVING AREA
064007,000406: 27,3630           67714                           AD       NEG3                                  #  IN THE PROCESS OF
064008,000407: 27,3631           60300                           AD       COMPNUMB                              #  PERFORMING
064009,000408: 27,3632           00006                           EXTEND                                         #  THIS UPDATE
064010,000409: 27,3633           13641                           BZF      STORLP71                              #  WILL WE
064011,000410: 27,3634           75007                           MASK     BIT9                                  #  OVERFLOW
064012,000411: 27,3635           10000                           CCS      A                                     #  INTO THE NEXT EBANK....
064013,000412: 27,3636           13752                           TCF      UPERROUT                              #  YES
064014,000413: 
064015,000414: 27,3637           37714                           CA       NEG3                                  #  NO- CALCULATE NUMBER OF
064016,000415: 27,3640           60300                           AD       COMPNUMB                              #  WORDS TO BE STORED MINUS ONE
064017,000416: 27,3641           54154        STORLP71           TS       MPAC                                  #  SAVE NO. OF WORDS REMAINING MINUS ONE
064018,000417: 27,3642           50000                           INDEX    A                                     #  TAKE NEXT UPDATE WORD FROM
064019,000418: 27,3643           30306                           CA       UPBUFF     +2                         #  UPBUFF AND
064020,000419: 27,3644           54001                           TS       L                                     #  SAVE IT IN L
064021,000420: 27,3645           30154                           CA       MPAC                                  #  CALCULATE NEXT
064022,000421: 27,3646           60330                           AD       UPTEMP                                #  RECEIVING ADDRESS
064023,000422: 27,3647           50000                           INDEX    A                                     
064024,000423: 27,3650  E3,1400                                  EBANK=   1400                                  
064025,000424: 27,3650           23400                           LXCH     1400                                  #  UPDATE THE REGISTER BY CONTENTS OF L
064026,000425: 27,3651  E3,1706                                  EBANK=   TEPHEM                                
064027,000426: 27,3651           10154                           CCS      MPAC                                  #  ARE THERE ANY WORDS LEFT TO BE STORED
064028,000427: 27,3652           13641                           TCF      STORLP71                              #  YES
064029,000428: 27,3653           13703                           TCF      UPOUT                                 #  NO- THEN EXIT UPDATE PROGRAM
064030,000429: 27,3654           00303        ADUPBFM1           ADRES    UPBUFF     -1                         #  SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
064031,000430: 27,3655           13703                           TCF      UPOUT                                 #  NO- EXIT UPDATE (HERE WHEN COMPNUMB = 3)
064032,000431: 
064033,000432:                                                                                                  #  VERB 72 BRANCH
064034,000433: 
064035,000434: 27,3656           35017        UPEND72            CAF      BIT1                                  #  HAVE AN ODD NO. OF COMPONENTS
064036,000435: 27,3657           70300                           MASK     COMPNUMB                              #  BEEN SENT FOR A V72 UPDATE ...
064037,000436: 27,3660           10000                           CCS      A                                     
064038,000437: 27,3661           13663                           TCF      +2                                    #  YES
064039,000438: 27,3662           13752                           TCF      UPERROUT                              #  ERROR- SHOULD BE ODD NO. OF COMPONENTS
064040,000439: 27,3663           45016                           CS       BIT2                                  
064041,000440: 27,3664           60300                           AD       COMPNUMB                              
064042,000441: 27,3665           54154        LDLOOP72           TS       MPAC                                  #  NOW PERFORM THE UPDATE
064043,000442: 27,3666           50000                           INDEX    A                                     
064044,000443: 27,3667           30305                           CAE      UPBUFF     +1                         #  PICK UP NEXT UPDATE WORD
064045,000444: 27,3670           22000                           LXCH     A                                     
064046,000445: 27,3671           10154                           CCS      MPAC                                  #  SET POINTER TO ECADR (MUST BE CCS)
064047,000446: 27,3672           54154                           TS       MPAC                                  
064048,000447: 27,3673           50000                           INDEX    A                                     
064049,000448: 27,3674           30305                           CAE      UPBUFF     +1                         #  PICK UP NEXT ECADR OF REG TO BE UPDATED
064050,000449: 27,3675           54003                           TS       EBANK                                 #  SET EBANK
064051,000450: 27,3676           74373                           MASK     LOW8                                  #  ISOLATE RELATIVE ADDRESS
064052,000451: 27,3677           50000                           INDEX    A                                     
064053,000452: 

Page 1506

064055,000454: 27,3700  E3,1400                                  EBANK=   1400                                  
064056,000455: 27,3700           23400                           LXCH     1400                                  #  UPDATE THE REGISTER BY CONTENTS OF L
064057,000456: 27,3701  E3,1706                                  EBANK=   TEPHEM                                
064058,000457: 27,3701           10154                           CCS      MPAC                                  #  ARE WE THROUGH THE V72 UPDATE...
064059,000458: 27,3702           13665                           TCF      LDLOOP72                              #  NO
064060,000459: 
064061,000460:                                                                                                  #  NORMAL FINISH OF P27
064062,000461: 
064063,000462: 27,3703                        UPOUT              EQUALS                                         
064064,000463: 27,3703           02671                           TC       INTWAKEU                              #  RELEASE GRAB OF ORBITAL INTEGRATION
064065,000464: 27,3704           30301                 +1        CAE      UPOLDMOD                              #  RESTORE PRIOR P27 MODE
064066,000465: 27,3705           05357                           TC       NEWMODEX   +3                         
064067,000466: 27,3706           35021                           CAF      ZERO                                  
064068,000467: 27,3707           54332                           TS       DNLSTCOD                              
064069,000468: 27,3710           03757                           TC       UPACTOFF                              #  TURN OFF 'UPLINK ACTIVITY' LIGHT
064070,000469: 27,3711           00006                           EXTEND                                         #  KILL GROUP 6.
064071,000470: 27,3712           35021                           DCA      NEG0                                  
064072,000471: 27,3713           52765                           DXCH     -PHASE6                               
064073,000472: 
064074,000473: 27,3714           05534                           TC       ENDEXT                                #  EXTENDED VERB EXIT
064075,000474: 
064076,000475:                                                                                                  #  VERB 70 BRANCH
064077,000476: 
064078,000477: 27,3715           00006        UPEND70            EXTEND                                         #  V70 DOES THE FOLLOWING WITH DP DELTA
064079,000478: 27,3716           40305                           DCS      UPBUFF                                #  TIME IN UPBUFF
064080,000479: 27,3717           52315                           DXCH     UPBUFF     +8D                        
064081,000480: 27,3720           03561                           TC       TIMEDIDL                              #  DECREMENT AGC CLOCK
064082,000481: 
064083,000482: 27,3721           03752                           TC       UPERROUT                              #  ERROR WHILE DECREMENTING CLOCK -- EXIT
064084,000483: 
064085,000484: 27,3722  E3,1706                                  EBANK=   TEPHEM                                
064086,000485: 27,3722           00006                           EXTEND                                         
064087,000486: 27,3723           40305                           DCS      UPBUFF                                #  COPY DECREMENTERS FOR
064088,000487: 27,3724           52317                           DXCH     UPBUFF     +10D                       #  RESTART PROTECTION
064089,000488: 27,3725           00006                           EXTEND                                         
064090,000489: 27,3726           40305                           DCS      UPBUFF                                
064091,000490: 27,3727           52321                           DXCH     UPBUFF     +12D                       
064092,000491: 
064093,000492: 27,3730           05412                           TC       PHASCHNG                              #  RESTART PROTECT (GROUP 6)
064094,000493: 27,3731           04026                           OCT      04026                                 
064095,000494: 
064096,000495: 27,3732           35021                           CAF      ZERO                                  
064097,000496: 27,3733           22007                           ZL                                             
064098,000497: 27,3734           52317                           DXCH     UPBUFF     +10D                       #  DECREMENT CSM STATE VECTOR TIME
064099,000498: 27,3735           21571                           DAS      TETCSM                                
064100,000499: 
064101,000500: 27,3736           35021                           CAF      ZERO                                  
064102,000501: 

Page 1507

064104,000503: 27,3737           22007                           ZL                                             
064105,000504: 27,3740           52321                           DXCH     UPBUFF     +12D                       #  DECREMENT LEM STATE VECTOR TIME
064106,000505: 27,3741           21643                           DAS      TETLEM                                
064107,000506: 27,3742           35021                           CAF      ZERO                                  
064108,000507: 27,3743           22007                           ZL                                             
064109,000508: 27,3744           52305                           DXCH     UPBUFF                                
064110,000509: 27,3745           21710                           DAS      TEPHEM     +1                         #  INCREMENT TP TEPHEM
064111,000510: 27,3746           27706                           ADS      TEPHEM                                
064112,000511: 
064113,000512: 27,3747           05412                           TC       PHASCHNG                              #  RESTART PROTECT (GROUP 6)
064114,000513: 27,3750           04026                           OCT      04026                                 
064115,000514: 
064116,000515: 27,3751     0304                                  EBANK=   UPBUFF                                
064117,000516: 
064118,000517: 27,3751           03703                           TC       UPOUT                                 #  GO TO STANDARD UPDATE PROGRAM EXIT
064119,000518: 
064120,000519:                                                                                                  #  ERROR SEQUENCE
064121,000520: 
064122,000521: 27,3752           04400        UPERROUT           TC       FALTON                                #  TURN ON *OPERATOR ERROR* LIGHT
064123,000522: 27,3753           13703                           TCF      UPOUT                                 #  GO TO COMMON UPDATE PROGRAM EXIT
064124,000523: 
064125,000524: 27,3754           04400                 +2        TC       FALTON                                #  TURN ON 'OPERATOR ERROR' LIGHT
064126,000525: 27,3755           03757                           TC       UPACTOFF                              #  TURN OFF 'UPLINK ACTIVITY' LIGHT
064127,000526: 27,3756           05534                           TC       ENDEXT                                #  EXTENDED VERB EXIT
064128,000527:                                                                                                  #  (THE PURPOSE OF UPERROUT +2 EXIT IS
064129,000528:                                                                                                  #  TO PROVIDE AN ERROR EXIT WHICH DOES NOT
064130,000529:                                                                                                  #  RESET ANY RESTART GROUPS)
064131,000530: 
064132,000531:                                                                                                  #  :UPACTOFF: IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
064133,000532: 
064134,000533: 27,3757           45015        UPACTOFF           CS       BIT3                                  
064135,000534: 27,3760           00006                           EXTEND                                         #  TURN OFF UPLINK ACTIVITY LIGHT
064136,000535: 27,3761           03011                           WAND     DSALMOUT                              #  (BIT 3 OF CHANNEL 11)
064137,000536: 27,3762           00002                           TC       Q                                     

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