Source Code
![]() |
This is a reconstruction of the AGC program Luminary 99 Rev 0. It was the
second release of the Lunar Module flight software targeted for use in Apollo 11, after Luminary 97.
A bug (which had been around since at least Apollo 10, Luminary 69) was
discovered in Rev 0 shortly before the Apollo 11 flight, resulting in a last minute
revision into Rev 1,
which is what actually flew rather than
the Rev 0 presented here. A hardcopy of Rev 0 is known to
exist — it belonged to AGC developer Allan Klumpp for many years — but
unfortunately the Virtual AGC Project has not had access to that hardcopy. Thus
the code you see here had been reconstructed (we believe accurately) rather than
transcribed. The first step of the reconstruction of the Rev 0 source code was
the transcription of the Rev 1 source code from a hardcopy in the MIT Museum collection.
The process of reverting the active portion of the source code (i.e., other than
program comments) from Rev 1 to Rev 0 was very minor, consisting
only of moving the position of the STARTSB1 label in
FRESH START AND RESTART. Allan had previously given
us the checksums of the memory banks of Rev 0, and we have verified the program presented here has checksums
identical to all banks of Allan's listing of Rev 0. The notations on Allan's Rev 0 program listing read,
in part:GAP: ASSEMBLE REVISION 099 OF AGC PROGRAM LUMINARY BY NASA 2021112-051 A single program comment is known to differ between Rev 0 and Rev 1, but these are harder to reconstruct and verify than changes to the active portion of the code. Thus it is possible that there are additional differences between the program comments in Rev 0 and Rev 1 that are unknown to us, and therefore are not reflected in the code presented here. |
060571,000002: ## Copyright: Public domain.
060572,000003: ## Filename: UPDATE_PROGRAM.agc
060573,000004: ## Purpose: Part of the reconstructed source code for LMY99 Rev 0,
060574,000005: ## otherwise known as Luminary Rev 99, the second release
060575,000006: ## of the Apollo Guidance Computer (AGC) software for Apollo 11.
060576,000007: ## It differs from LMY99 Rev 1 (the flown version) only in the
060577,000008: ## placement of a single label. The corrections shown here have
060578,000009: ## been verified to have the same bank checksums as AGC developer
060579,000010: ## Allan Klumpp's copy of Luminary Rev 99, and so are believed
060580,000011: ## to be accurate. This file is intended to be a faithful
060581,000012: ## recreation, except that the code format has been changed to
060582,000013: ## conform to the requirements of the yaYUL assembler rather than
060583,000014: ## the original YUL assembler.
060584,000015: ##
060585,000016: ## Assembler: yaYUL
060586,000017: ## Contact: Ron Burkey <info@sandroid.org>.
060587,000018: ## Website: www.ibiblio.org/apollo.
060588,000019: ## Pages: 1386-1396
060589,000020: ## Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
060590,000021: ## from the Luminary131/ file of the same
060591,000022: ## name, using Luminary099 page images.
060592,000023: ## 2009-06-07 RSB Added an SBANK= to account for incompatibilities
060593,000024: ## between YUL and yaYUL.
060594,000025: ## 2011-01-06 JL Fixed pseudo-label indentation.
060595,000026: ## 2011-05-07 JL Flag SBANK= workaround.
060596,000027: ## 2016-12-18 RSB Proofed text comments with octopus/ProoferComments
060597,000028: ## and corrected the errors found.
060598,000029: ## 2017-01-28 RSB Comment-text fixes identified for Luminary 69.
060599,000030: ## 2017-02-09 RSB Comment-text fixes identified for Artemis 72.
060600,000031: ## 2017-03-14 RSB Comment-text fixes noted in proofing Luminary 116.
060601,000032: ## 2017-03-16 RSB Comment-text fixes identified in 5-way
060602,000033: ## side-by-side diff of Luminary 69/99/116/131/210.
060603,000034: ## 2017-06-17 MAS Globally removed all SBANK= workarounds.
060604,000035: ## 2017-08-01 MAS Created from LMY99 Rev 1.
060605,000036:
060606,000037: ## This source code has been transcribed or otherwise adapted from
060607,000038: ## digitized images of a hardcopy from the MIT Museum. The digitization
060608,000039: ## was performed by Paul Fjeld, and arranged for by Deborah Douglas of
060609,000040: ## the Museum. Many thanks to both. The images (with suitable reduction
060610,000041: ## in storage size and consequent reduction in image quality as well) are
060611,000042: ## available online at www.ibiblio.org/apollo. If for some reason you
060612,000043: ## find that the images are illegible, contact me at info@sandroid.org
060613,000044: ## about getting access to the (much) higher-quality images which Paul
060614,000045: ## actually created.
060615,000046: ##
060616,000047: ## The code has been modified to match LMY99 Revision 0, otherwise
060617,000048: ## known as Luminary Revision 99, the Apollo 11 software release preceeding
060618,000049: ## the listing from which it was transcribed. It has been verified to
060619,000050: ## contain the same bank checksums as AGC developer Allan Klumpp's listing
060620,000051: ## of Luminary Revision 99 (for which we do not have scans).
060621,000052: ##
060622,000053: ## Notations on Allan Klumpp's listing read, in part:
060623,000054: ##
060624,000055: ## ASSEMBLE REVISION 099 OF AGC PROGRAM LUMINARY BY NASA 2021112-51
060625,000056:
![]() |
Page 1386 |
060627,000058: # PROGRAM NAME: P27
060628,000059: # WRITTEN BY: KILROY/ DE WOLF
060629,000060:
060630,000061: # MOD NO: 6
060631,000062: # MOD BY: KILROY
060632,000063: # DATE: 01DEC67
060633,000064:
060634,000065: # LOG SECTION: UPDATE PROGRAM.
060635,000066:
060636,000067: # FUNCT. DESCR: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
060637,000068: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
060638,000069: # THE P27 PROGRAM WILL ACCEPT UPDATES
060639,000070: # ONLY DURING P00 FOR THE LM, AND ONLY DURING P00,
060640,000071: # P02, AND FRESH START FOR THE CSM
060641,000072:
060642,000073: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72 AND 73.
060643,000074:
060644,000075: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
060645,000076: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
060646,000077:
060647,000078: # NORMAL EXIT: TC ENDEXT
060648,000079:
060649,000080: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
060650,000081:
060651,000082: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ...
060652,000083: # 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
060653,000084: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
060654,000085: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTORED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK
060655,000086: # ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
060656,000087: # V70,V71,V72 OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
060657,000088: # 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
060658,000089: # PROTECTED AGAINST RESTARTS.
060659,000090:
060660,000091: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
060661,000092: # UPVERB (1) VERB NUMBER MINUS 70D (E.G. FOR V72, UPVERB = 72D - 70D = 2)
060662,000093: # UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27.
060663,000094: # COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
060664,000095: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
060665,000096: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE
060666,000097:
060667,000098: # INPUT:
060668,000099:
060669,000100: # ENTRY: DESCRIPTION
060670,000101: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
060671,000102: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
060672,000103: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
060673,000104: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
![]() |
Page 1387 |
060675,000106: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX,
060676,000107: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
060677,000108: # XXXXXE IT IS .GE. 3 .AND. .LE. 20D.,
060678,000109: # AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
060679,000110: # 9 NEXT BANK
060680,000111: # . SCALING IS SAME AS INTERNAL REGISTERS.
060681,000112: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE
060682,000113: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
060683,000114: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
060684,000115: # . SCALING IS SAME AS INTERNAL REGISTERS.
060685,000116:
060686,000117: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
060687,000118: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
060688,000119: # CENTISECONDS SCALED AT (2)28.
060689,000120: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
060690,000121:
060691,000122: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
060692,000123: # COMPLEMENT BIT3 OF FLAGWORD7.
060693,000124:
060694,000125: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --
060695,000126: # 1. CSM/LM STATE VECTOR UPDATE
060696,000127: # 2. REFSMMAT UPDATE
060697,000128:
060698,000129: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE ----
060699,000130:
060700,000131: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
060701,000132: # ENTRIES: DATA DEFINITION: SCALE FACTORS:
060702,000133: # V71E CONTIGUOUS BLOCK UPDATE VERB
060703,000134: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
060704,000135: # AAAAE ECADR OF 'UPSVFLAG'
060705,000136: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM - EARTH SPHERE OF INFLUENCE SCALING
060706,000137: # 00002 FOR CSM, 77775 FOR LEM - LUNAR SPHERE OF INFLUENCE SCALING
060707,000138: # XXXXXEXXXXXE X POSITION
060708,000139: # XXXXXEXXXXXE Y POSITION
060709,000140: # XXXXXEXXXXXE Z POSITION
060710,000141: # XXXXXEXXXXXE X VELOCITY
060711,000142: # XXXXXEXXXXXE Y VELOCITY
060712,000143: # XXXXXEXXXXXE Z VELOCITY
060713,000144: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
060714,000145: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
060715,000146:
060716,000147: # 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL)
060717,000148: # ENTRIES: DATA DEFINITIONS: SCALE FACTORS:
![]() |
Page 1388 |
060719,000150: # V71E CONTIGUOUS BLOCK UPDATE VERB
060720,000151: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
060721,000152: # AAAAE ECADR OF 'REFSMMAT'
060722,000153: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
060723,000154: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
060724,000155: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
060725,000156: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
060726,000157: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
060727,000158: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
060728,000159: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
060729,000160: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
060730,000161: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
060731,000162: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED.
060732,000163:
060733,000164:
060734,000165:
060735,000166: 07,3773 BANK 07
060736,000167: 43,2000 SETLOC EXTVERBS
060737,000168: 43,2000 BANK
060738,000169:
060739,000170: 43,3724 E3,1706 EBANK= TEPHEM
060740,000171:
060741,000172: 43,3724 COUNT* $$/P27
060742,000173: 43,3724 34755 V70UPDAT CAF UP70 # COMES HERE ON V70E
060743,000174: 43,3725 13733 TCF V73UPDAT +1
060744,000175:
060745,000176: 43,3726 34753 V71UPDAT CAF UP71 # COMES HERE ON V71E
060746,000177: 43,3727 13733 TCF V73UPDAT +1
060747,000178:
060748,000179: 43,3730 34752 V72UPDAT CAF UP72 # COMES HERE ON V72E
060749,000180: 43,3731 13733 TCF V73UPDAT +1
060750,000181:
060751,000182: 43,3732 36245 V73UPDAT CAF UP73 # COMES HERE ON V73E
060752,000183:
060753,000184: 43,3733 55166 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
060754,000185:
060755,000186: 43,3734 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
060756,000187: # TURN*OPERATOR ERROR* ON AND TERMINATEJOB
060757,000188:
060758,000189: 43,3735 31011 CA MODREG # CHECK IF UPDATE ALLOWED
060759,000190: 43,3736 00006 EXTEND # FIRST CHECK FOR MODREG = +0, -0
060760,000191: 43,3737 13742 BZF +3 # (+0 = P00, -0 = FRESHSTART)
060761,000192: 43,3740 04635 UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT
060762,000193: 43,3741 11762 CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT
060763,000194:
060764,000195: 43,3742 31011 CAE MODREG # UPDATE ALLOWED.
060765,000196: 43,3743 43,3740 CKMDMORE = UPERROR
060766,000197: 43,3743 55171 TS UPOLDMOD # SAVE CURRENT MAJOR MODE
![]() |
Page 1389 |
060768,000199: 43,3744 31166 CAE UPVERBSV # SET UPVERB TO INDICATE TO P27
060769,000200:
060770,000201: 43,3745 55172 TS UPVERB # WHICH EXTENDED VERB CALLED IT.
060771,000202:
060772,000203: 43,3746 34753 CAF ONE
060773,000204: 43,3747 55173 TS UPCOUNT # INITIALIZE UPCOUNT TO 1
060774,000205:
060775,000206: 43,3750 04635 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
060776,000207: 43,3751 11401 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
060777,000208:
060778,000209: 43,3752 4755 UP70 EQUALS ZERO
060779,000210: 43,3752 4753 UP71 EQUALS ONE
060780,000211: 43,3752 4752 UP72 EQUALS TWO
060781,000212: 43,3752 6245 UP73 EQUALS THREE
060782,000213:
060783,000214: 04,3401 BANK 04
060784,000215: 04,2000 SETLOC UPDATE2
060785,000216: 04,2000 BANK
060786,000217:
060787,000218: 04,3401 COUNT* $$/P27
060788,000219:
060789,000220: 04,3401 UPPART2 EQUALS # UPDATE PROGRAM - PART 2
060790,000221:
060791,000222: 04,3401 05353 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
060792,000223: 04,3402 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
060793,000224: 04,3403 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO
060794,000225: 04,3404 1174 EBANK= UPBUFF
060795,000226: 04,3404 03712 10102 2CADR UPOUT +1
060796,000227:
060797,000228: 04,3406 34753 CAF ONE
060798,000229: 04,3407 54332 TS DNLSTCOD # DOWNLIST
060799,000230:
060800,000231: 04,3410 05311 TC NEWMODEX # SET MAJOR MODE = 27
060801,000232: 04,3411 00033 DEC 27 B-14
060802,000233:
060803,000234: 04,3412 51172 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
060804,000235: 04,3413 13414 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
060805,000236: 04,3414 13417 TCF +3 # V70 FIXED. (OF COMPONENTS.
060806,000237: 04,3415 13422 TCF OHWELL1 # V71 VARIABLE - GO GET NO. OF COMPONENTS
060807,000238: 04,3416 13422 TCF OHWELL1 # V72 VARIABLE - GO GET NO. OF COMPONENTS
060808,000239: 04,3417 34752 CA TWO # V73 (AND V70) FIXED
060809,000240: 04,3420 55170 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
060810,000241: 04,3421 13445 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
060811,000242:
060812,000243: 04,3422 33515 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
060813,000244: 04,3423 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II).*
060814,000245: 04,3424 33516 +2 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
060815,000246: 04,3425 04616 TC BANKCALL # DISPLAY A FLASHING V21N01
![]() |
Page 1390 |
060817,000248: 04,3426 20334 CADR GOXDSPF # TO REQUEST II.
060818,000249:
060819,000250: 04,3427 13712 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
060820,000251: 04,3430 13424 TCF OHWELL1 +2
060821,000252: 04,3431 03506 TC CK4V32 # DATA OR V32 RETURN
060822,000253: 04,3432 44752 CS BIT2
060823,000254: 04,3433 61174 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
060824,000255: 04,3434 00006 EXTEND # .GE. 3 AND .LE. 20D.
060825,000256: 04,3435 63424 BZMF OHWELL1 +2
060826,000257: 04,3436 41174 CS UPBUFF
060827,000258: 04,3437 64362 AD UP21
060828,000259: 04,3440 00006 EXTEND
060829,000260: 04,3441 63424 BZMF OHWELL1 +2
060830,000261: 04,3442 31174 CAE UPBUFF
060831,000262: 04,3443 55170 TS COMPNUMB # SAVE II IN COMPNUMB
060832,000263:
060833,000264: # UPBUFF LOADING SEQUENCE
060834,000265:
060835,000266: 04,3444 25173 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
060836,000267: 04,3445 33662 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION (ECADR) IN UPBUFF
060837,000268: 04,3446 61173 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED.
060838,000269: 04,3447 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3.
060839,000270: 04,3450 33516 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
060840,000271: 04,3451 04616 TC BANKCALL # DISPLAY A FLASHING V21N01
060841,000272: 04,3452 20334 CADR GOXDSPF # TO REQUEST DATA.
060842,000273: 04,3453 13712 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
060843,000274: 04,3454 13450 TCF OHWELL2 +3 # V33 PROCEED RETURN
060844,000275: 04,3455 03506 TC CK4V32 # DATA OR V32 RETURN
060845,000276: 04,3456 41173 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
060846,000277: 04,3457 61170 AD COMPNUMB # THE DATA WE EXPECTED.
060847,000278: 04,3460 00006 EXTEND
060848,000279: 04,3461 63463 BZMF UPVERIFY # YES - GO TO VERIFICATION SEQUENCE
060849,000280: 04,3462 13444 TCF OHWELL2 -1 # NO - REQUEST ADDITIONAL DATA.
060850,000281:
060851,000282: # VERIFY SEQUENCE
060852,000283:
060853,000284: 04,3463 33514 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
060854,000285: 04,3464 54156 TS MPAC +2 # IS TO BE STORED INTO R3.
060855,000286: 04,3465 33517 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
060856,000287: 04,3466 04616 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEST
060857,000288: 04,3467 20334 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
060858,000289: 04,3470 13712 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
060859,000290: 04,3471 13520 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
060860,000291: 04,3472 03506 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
060861,000292: 04,3473 31167 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SENT
060862,000293: 04,3474 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
060863,000294: 04,3475 63463 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
060864,000295: 04,3476 41167 CS UPTEMP
060865,000296: 04,3477 61170 AD COMPNUMB
![]() |
Page 1391 |
060867,000298: 04,3500 64753 AD BIT1
060868,000299: 04,3501 00006 EXTEND
060869,000300: 04,3502 63463 BZMF UPVERIFY # NO
060870,000301: 04,3503 33662 CAF ADUPBFM1 # YES - BASED ON THE COMPONENT NO. INDEX
060871,000302: 04,3504 61167 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
060872,000303: 04,3505 13447 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANGE.
060873,000304:
060874,000305: 04,3506 04,3712 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TO TERMINATE UPDATE
060875,000306:
060876,000307: # CHECK FOR VERB 32 SEQUENCE
060877,000308:
060878,000309: 04,3506 40154 CK4V32 CS MPAC # ON DATA RETURN FROM 'GOXDSPF'
060879,000310: 04,3507 74746 MASK BIT6 # ON DATA RETURN FROM "GOXDSP" & THE CON-
060880,000311: 04,3510 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
060881,000312: 04,3511 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
060882,000313: 04,3512 50002 INDEX Q
060883,000314: 04,3513 77771 TC 0 -6 # V32 ENCOUNTERED - GO BACK AND GET DATA
060884,000315:
060885,000316: 04,3514 01167 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
060886,000317: 04,3515 01174 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
060887,000318: 04,3516 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01
060888,000319: 04,3517 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02
060889,000320: 04,3520 4362 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
060890,000321: 04,3520 4756 UPDTPHAS EQUALS FIVE
060891,000322:
060892,000323: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
060893,000324:
060894,000325: 04,3520 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
060895,000326:
060896,000327: 04,3520 00004 INHINT
060897,000328:
060898,000329: 04,3521 30103 CAE FLAGWRD7 # INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO
060899,000330: 04,3522 56001 XCH L # INDICATE TO THE GROUND (VIA DOWNLINK)
060900,000331: 04,3523 34751 CAF VERIFBIT # THAT THE V33 (WHICH THE GROUND SENT TO
060901,000332: 04,3524 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
060902,000333: 04,3525 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
060903,000334: 04,3526 54103 TS FLAGWRD7
060904,000335:
060905,000336: 04,3527 05353 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
060906,000337: 04,3530 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS.
060907,000338: 04,3531 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT)
060908,000339:
060909,000340: 04,3532 44752 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED,
060910,000341: 04,3533 61172 AD UPVERB # THAT IS, IF IT'S A V70 - V72.
060911,000342: 04,3534 00006 EXTEND # GO TO UPEND73 IF IT'S A V73.
060912,000343: 04,3535 63544 BZMF UPFNDVAC
060913,000344:
060914,000345: # VERB 73 BRANCH
![]() |
Page 1392 |
060916,000347: 04,3536 00006 UPEND73 EXTEND # V73 - PERFORM DP OCTAL AGC CLOCK INCREMENT
060917,000348:
060918,000349: 04,3537 31175 DCA UPBUFF
060919,000350: 04,3540 53205 DXCH UPBUFF +8D
060920,000351: 04,3541 03567 TC TIMEDIDL
060921,000352: 04,3542 04364 TC FALTON # ERROR - TURN ON *OPERATOR ERROR* LIGHT
060922,000353: 04,3543 03712 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
060923,000354:
060924,000355: 04,3544 34355 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
060925,000356: 04,3545 05105 TC FINDVAC # GET VAC AREA FOR 'CALL INTSTALL'
060926,000357: 04,3546 E3,1706 EBANK= TEPHEM
060927,000358: 04,3546 03551 10103 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
060928,000359: 04,3550 05155 TC ENDOFJOB # 'TEPHEM' UPDATE BY V70)
060929,000360:
060930,000361: 04,3551 06037 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE -- SO
060931,000362: 04,3552 77624 CALL # WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI)
060932,000363: 04,3553 27414 INTSTALL # IS IN PROGRESS -- OR -- GRAB OI AND RETURN
060933,000364: # TO UPWAKE IF OI IS NOT IN PROGRESS.
060934,000365:
060935,000366: 04,3554 77776 UPWAKE EXIT
060936,000367:
060937,000368: 04,3555 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
060938,000369: 04,3556 04026 OCT 04026
060939,000370:
060940,000371: 04,3557 05504 TC UPFLAG # SET INTEGRATION RESTART BIT
060941,000372: 04,3560 00236 ADRES REINTFLG
060942,000373: 04,3561 00004 INHINT
060943,000374: 04,3562 UPPART3 EQUALS
060944,000375:
060945,000376: 04,3562 51172 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
060946,000377: 04,3563 13564 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
060947,000378: 04,3564 13723 TCF UPEND70 # V70
060948,000379: 04,3565 13632 TCF UPEND71 # V71
060949,000380: 04,3566 13664 TCF UPEND72 # V72
060950,000381:
060951,000382: # ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
060952,000383:
060953,000384: 04,3567 00006 TIMEDIDL EXTEND
060954,000385: 04,3570 23167 QXCH UPTEMP # SAVE Q FOR RETURN
060955,000386: 04,3571 34755 CAF ZERO # ZERO AND SAVE TIME2,TIME1
060956,000387: 04,3572 22007 ZL
060957,000388: 04,3573 52025 DXCH TIME2
060958,000389: 04,3574 53217 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
060959,000390:
060960,000391: 04,3575 34756 CAF UPDTPHAS # DO
060961,000392: 04,3576 54001 TS L # A
060962,000393: 04,3577 40000 COM # QUICK
060963,000394: 04,3600 52765 DXCH -PHASE6 # PHASCHNG
![]() |
Page 1393 |
060965,000396: 04,3601 00004 TIMEDIDR INHINT
060966,000397:
060967,000398: 04,3602 34755 CAF ZERO
060968,000399: 04,3603 22007 ZL # PICK UP INCREMENTER(AND ZERO
060969,000400: 04,3604 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND
060970,000401: 04,3605 53205 DXCH UPBUFF +8D # STORE IT
060971,000402: 04,3606 52155 DXCH MPAC # INTO MPAC FOR TPAGREE.
060972,000403:
060973,000404: 04,3607 00006 EXTEND
060974,000405: 04,3610 31217 DCA UPBUFF +18D
060975,000406: 04,3611 20155 DAS MPAC # FORM SUM IN MPAC
060976,000407: 04,3612 00006 EXTEND
060977,000408: 04,3613 13622 BZF DELTAOK # TEST FOR OVERFLOW
060978,000409: 04,3614 34755 CAF ZERO
060979,000410: 04,3615 53217 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
060980,000411: 04,3616 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR
060981,000412:
060982,000413: 04,3617 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
060983,000414: 04,3620 04026 OCT 04026
060984,000415:
060985,000416: 04,3621 01167 TC UPTEMP # GO TO ERROR EXIT
060986,000417:
060987,000418: 04,3622 07257 DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT
060988,000419: 04,3623 52155 DXCH MPAC
060989,000420: 04,3624 20025 DAS TIME2 # INCREMENT TIME2,TIME1
060990,000421:
060991,000422: 04,3625 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
060992,000423: 04,3626 04026 OCT 04026
060993,000424:
060994,000425: 04,3627 00004 INHINT
060995,000426: 04,3630 51167 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
060996,000427: 04,3631 00001 TC 1 # NORMAL RETURN
060997,000428:
060998,000429: # VERB 71 BRANCH
060999,000430:
061000,000431: 04,3632 31175 UPEND71 CAE UPBUFF +1 # SET EBANK
061001,000432: 04,3633 54003 TS EBANK # AND
061002,000433: 04,3634 74357 MASK LOW8 # CALCULATE
061003,000434: 04,3635 55167 TS UPTEMP # S-REG VALUE OF RECEIVING AREA
061004,000435:
061005,000436: 04,3636 67745 AD NEG3 # IN THE PROCESS OF
061006,000437: 04,3637 61170 AD COMPNUMB # PERFORMING
061007,000438: 04,3640 00006 EXTEND # THIS UPDATE
061008,000439: 04,3641 13647 BZF STORLP71 # WILL WE
061009,000440: 04,3642 74743 MASK BIT9 # OVERFLOW
061010,000441: 04,3643 10000 CCS A # INTO THE NEXT EBANK....
061011,000442: 04,3644 13760 TCF UPERROUT # YES
061012,000443:
061013,000444: 04,3645 37745 CA NEG3 # NO - CALCULATE NUMBER OF
061014,000445: 04,3646 61170 AD COMPNUMB # WORDS TO BE STORED MINUS ONE
061015,000446: 04,3647 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
![]() |
Page 1394 |
061017,000448: 04,3650 50000 INDEX A # TAKE NEXT UPDATE WORD FROM
061018,000449: 04,3651 31176 CA UPBUFF +2 # UPBUFF AND
061019,000450:
061020,000451: 04,3652 54001 TS L # SAVE IT IN L
061021,000452: 04,3653 30154 CA MPAC # CALCULATE NEXT
061022,000453: 04,3654 61167 AD UPTEMP # RECEIVING ADDRESS
061023,000454: 04,3655 50000 INDEX A
061024,000455: 04,3656 E3,1400 EBANK= 1400
061025,000456: 04,3656 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
061026,000457: 04,3657 E3,1706 EBANK= TEPHEM
061027,000458: 04,3657 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
061028,000459: 04,3660 13647 TCF STORLP71 # YES
061029,000460: 04,3661 13711 TCF UPOUT # NO - THEN EXIT UPDATE PROGRAM
061030,000461: 04,3662 01173 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
061031,000462: 04,3663 13711 TCF UPOUT # NO - EXIT UPDATE (HERE WHEN COMPNUMB = 3)
061032,000463:
061033,000464: # VERB 72 BRANCH
061034,000465:
061035,000466: 04,3664 34753 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
061036,000467: 04,3665 71170 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ...
061037,000468: 04,3666 10000 CCS A
061038,000469: 04,3667 13671 TCF +2 # YES
061039,000470: 04,3670 13760 TCF UPERROUT # ERROR - SHOULD BE ODD NO. OF COMPONENTS
061040,000471: 04,3671 44752 CS BIT2
061041,000472: 04,3672 61170 AD COMPNUMB
061042,000473: 04,3673 54154 LDLOOP72 TS MPAC # NOW PERFORM THE UPDATE
061043,000474: 04,3674 50000 INDEX A
061044,000475: 04,3675 31175 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
061045,000476: 04,3676 22000 LXCH A
061046,000477: 04,3677 10154 CCS MPAC # SET POINTER TO ECADR (MUST BE CCS)
061047,000478: 04,3700 54154 TS MPAC
061048,000479: 04,3701 50000 INDEX A
061049,000480: 04,3702 31175 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
061050,000481: 04,3703 54003 TS EBANK # SET EBANK
061051,000482: 04,3704 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
061052,000483: 04,3705 50000 INDEX A
061053,000484: 04,3706 E3,1400 EBANK= 1400
061054,000485: 04,3706 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
061055,000486: 04,3707 E3,1706 EBANK= TEPHEM
061056,000487: 04,3707 10154 CCS MPAC # ARE WE THROUGH THE V72 UPDATE...
061057,000488: 04,3710 13673 TCF LDLOOP72 # NO
061058,000489:
061059,000490: # NORMAL FINISH OF P27
061060,000491:
061061,000492: 04,3711 UPOUT EQUALS
061062,000493: 04,3711 03165 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
061063,000494: 04,3712 31171 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
061064,000495: 04,3713 05314 TC NEWMODEX +3
061065,000496: 04,3714 34755 CAF ZERO
![]() |
Page 1395 |
061067,000498: 04,3715 54332 TS DNLSTCOD
061068,000499: 04,3716 03765 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
061069,000500:
061070,000501: 04,3717 00006 EXTEND # KILL GROUP 6.
061071,000502: 04,3720 34755 DCA NEG0
061072,000503: 04,3721 52765 DXCH -PHASE6
061073,000504:
061074,000505: 04,3722 05472 TC ENDEXT # EXTENDED VERB EXIT
061075,000506:
061076,000507: # VERB 70 BRANCH
061077,000508:
061078,000509: 04,3723 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
061079,000510: 04,3724 41175 DCS UPBUFF # TIME IN UPBUFF
061080,000511: 04,3725 53205 DXCH UPBUFF +8D
061081,000512: 04,3726 03567 TC TIMEDIDL # DECREMENT AGC CLOCK
061082,000513:
061083,000514: 04,3727 03760 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
061084,000515:
061085,000516: 04,3730 E3,1706 EBANK= TEPHEM
061086,000517: 04,3730 00006 EXTEND
061087,000518: 04,3731 41175 DCS UPBUFF # COPY DECREMENTERS FOR
061088,000519: 04,3732 53207 DXCH UPBUFF +10D # RESTART PROTECTION
061089,000520: 04,3733 00006 EXTEND
061090,000521: 04,3734 41175 DCS UPBUFF
061091,000522: 04,3735 53211 DXCH UPBUFF +12D
061092,000523:
061093,000524: 04,3736 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
061094,000525: 04,3737 04026 OCT 04026
061095,000526:
061096,000527: 04,3740 34755 CAF ZERO
061097,000528: 04,3741 22007 ZL
061098,000529: 04,3742 53207 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
061099,000530: 04,3743 21571 DAS TETCSM
061100,000531:
061101,000532: 04,3744 34755 CAF ZERO
061102,000533: 04,3745 22007 ZL
061103,000534: 04,3746 53211 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
061104,000535: 04,3747 21643 DAS TETLEM
061105,000536:
061106,000537: 04,3750 34755 CAF ZERO
061107,000538: 04,3751 22007 ZL
061108,000539: 04,3752 53175 DXCH UPBUFF
061109,000540: 04,3753 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM
061110,000541: 04,3754 27706 ADS TEPHEM
061111,000542:
061112,000543: 04,3755 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
061113,000544: 04,3756 04026 OCT 04026
061114,000545:
061115,000546: 04,3757 1174 EBANK= UPBUFF
![]() |
Page 1396 |
061117,000548: 04,3757 03711 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
061118,000549:
061119,000550:
061120,000551: # ERROR SEQUENCE
061121,000552:
061122,000553: 04,3760 04364 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
061123,000554: 04,3761 13711 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
061124,000555:
061125,000556: 04,3762 04364 +2 TC FALTON # TURN ON 'OPERATOR ERROR' LIGHT
061126,000557: 04,3763 03765 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
061127,000558: 04,3764 05472 TC ENDEXT # EXTENDED VERB EXIT
061128,000559: # (THE PURPOSE OF UPERROUT +2 EXIT IS
061129,000560: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT
061130,000561: # RESET ANY RESTART GROUPS)
061131,000562:
061132,000563: # :UPACTOFF: IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
061133,000564:
061134,000565: 04,3765 44751 UPACTOFF CS BIT3
061135,000566: 04,3766 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
061136,000567: 04,3767 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
061137,000568: 04,3770 00002 TC Q
061138,000569:
End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc