Source Code
064671,000001: # Copyright: Public domain.
064672,000002: # Filename: UPDATE_PROGRAM.agc
064673,000003: # Purpose: Part of the source code for Comanche, build 055. It
064674,000004: # is part of the source code for the Command Module's
064675,000005: # (CM) Apollo Guidance Computer (AGC), Apollo 11.
064676,000006: # Assembler: yaYUL
064677,000007: # Reference: pp. 1497-1507
064678,000008: # Contact: Ron Burkey <info@sandroid.org>
064679,000009: # Website: http://www.ibiblio.org/apollo.
064680,000010: # Mod history: 2009-05-07 RSB Adapted from Colossus249/UPDATE_PROGRAM.agc
064681,000011: # and page images. Corrected various typos
064682,000012: # in the transcription of program comments,
064683,000013: # and these should be back-ported to
064684,000014: # Colossus249.
064685,000015: # 2010-08-29 JL Fixed indentation, whitespace.
064686,000016:
064687,000017: # The contents of the "Comanche055" files, in general, are transcribed
064688,000018: # from scanned documents.
064689,000019:
064690,000020: # Assemble revision 055 of AGC program Comanche by NASA
064691,000021: # 2021113-051. April 1, 1969.
064692,000022:
064693,000023: # This AGC program shall also be referred to as Colossus 2A
064694,000024:
064695,000025: # Prepared by
064696,000026: # Massachusetts Institute of Technology
064697,000027: # 75 Cambridge Parkway
064698,000028: # Cambridge, Massachusetts
064699,000029:
064700,000030: # under NASA contract NAS 9-4065.
064701,000031:
064702,000032: # Refer directly to the online document mentioned above for further
064703,000033: # information. Please report any errors to info@sandroid.org.
064704,000034:
064705,000035: # Page 1497
064706,000036: # PROGRAM NAME: P27
064707,000037: # WRITTEN BY: KILROY/ DE WOLF
064708,000038:
064709,000039: # MOD NO: 0
064710,000040: # MOD BY: KILROY
064711,000041: # DATE: 01DEC67
064712,000042:
064713,000043: # LOG SECTION: UPDATE PROGRAM.
064714,000044:
064715,000045: # FUNCT. DESCR.: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
064716,000046: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
064717,000047: # THE P27 PROGRAM WILL ACCEPT UPDATES
064718,000048: # ONLY DURING P00 FOR THE LM, AND ONLY DURINT P00,
064719,000049: # P02, AND FRESH START FOR THE CSM.
064720,000050:
064721,000051: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72, AND 73.
064722,000052:
064723,000053: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
064724,000054: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
064725,000055:
064726,000056: # NORMAL EXIT: TC ENDEXT
064727,000057:
064728,000058: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
064729,000059:
064730,000060: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ...
064731,000061: # 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
064732,000062: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
064733,000063: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTROED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINE
064734,000064: # ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
064735,000065: # V70,V71,V72, OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
064736,000066: # 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
064737,000067: # PROTECTED AGAINST RESTARTS.
064738,000068:
064739,000069: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
064740,000070: # UPVERB (1) VERB NUMBER MINUS 70D (E.G., FOR V72, UPVERB = 72D - 70D = 2)
064741,000071: # UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27.
064742,000072: # COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
064743,000073: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
064744,000074: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE.
064745,000075:
064746,000076: # INPUT:
064747,000077:
064748,000078: # ENTRY DESCRIPTION
064749,000079: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
064750,000080: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
064751,000081: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
064752,000082: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
064753,000083: # Page 1498
064754,000084: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX,
064755,000085: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
064756,000086: # XXXXXE IT IS .GE. 3 .AND. .LE. 20D.,
064757,000087: # AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
064758,000088: # 9 NEXT BANK
064759,000089: # . SCALING IS SAME AS INTERNAL REGISTERS.
064760,000090: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE
064761,000091: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
064762,000092: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
064763,000093: # . SCALING IS SAME AS INTERNAL REGISTERS.
064764,000094:
064765,000095: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
064766,000096: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
064767,000097: # CENTISECONDS SCALED AT (2)28).
064768,000098: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
064769,000099:
064770,000100: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
064771,000101: # COMPLEMENT BIT3 OF FLAGWORD7.
064772,000102:
064773,000103: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --
064774,000104: # 1. CSM/LM STATE VECTOR UPDATE
064775,000105: # 2. REFSMMAT UPDATE
064776,000106:
064777,000107: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE ---
064778,000108:
064779,000109: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
064780,000110: # ENTRIES: DATA DEFINITION: SCALE FACTORS:
064781,000111: # V71E CONTIGUOUS BLOCK UPDATE VERB
064782,000112: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
064783,000113: # AAAAE ECADR OF `UPSVFLAG'
064784,000114: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM -- EARTH SPHERE OF INFLUENCE SCALING
064785,000115: # 00002 FOR CSM, 77775 FOR LEM -- LUNAR SPHERE OF INFLUENCE SCALING
064786,000116: # XXXXXEXXXXXE X POSITION
064787,000117: # XXXXXEXXXXXE Y POSITION
064788,000118: # XXXXXEXXXXXE Z POSITION
064789,000119: # XXXXXEXXXXXE X VELOCITY
064790,000120: # XXXXXEXXXXXE Y VELOCITY
064791,000121: # XXXXXEXXXXXE Z VELOCITY
064792,000122: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
064793,000123: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
064794,000124:
064795,000125: # 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL)
064796,000126: # ENTRIES DATA DEFINITITIONS SCALE FACTORS:
064797,000127: # Page 1499
064798,000128: # V71E CONTIGUOUS BLOCK UPDATE VERB
064799,000129: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
064800,000130: # AAAAE ECADR OF `REFSMMAT'
064801,000131: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
064802,000132: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
064803,000133: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
064804,000134: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
064805,000135: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
064806,000136: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
064807,000137: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
064808,000138: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
064809,000139: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
064810,000140: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED
064811,000141:
064812,000142: 07,3777 BANK 07
064813,000143: 43,2000 SETLOC EXTVERBS
064814,000144: 43,2000 BANK
064815,000145:
064816,000146: 43,3726 E3,1706 EBANK= TEPHEM
064817,000147:
064818,000148: 43,3726 COUNT* $$/P27
064819,000149: 43,3726 35021 V70UPDAT CAF UP70 # COMES HERE ON V70E
064820,000150: 43,3727 13735 TCF V73UPDAT +1
064821,000151:
064822,000152: 43,3730 35017 V71UPDAT CAF UP71 # COMES HERE ON V71E
064823,000153: 43,3731 13735 TCF V73UPDAT +1
064824,000154:
064825,000155: 43,3732 35016 V72UPDAT CAF UP72 # COMES HERE ON V72E
064826,000156: 43,3733 13735 TCF V73UPDAT +1
064827,000157:
064828,000158: 43,3734 36214 V73UPDAT CAF UP73 # COMES HERE ON V73E
064829,000159:
064830,000160: 43,3735 54331 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
064831,000161:
064832,000162: 43,3736 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
064833,000163: # TURN *OPERATOR ERROR* ON AND TERMINATE JOB
064834,000164:
064835,000165: 43,3737 31011 CA MODREG # CHECK IF UPDATE ALLOWED
064836,000166: 43,3740 00006 EXTEND # FIRST CHECK FOR MODREG = +0, -0
064837,000167: 43,3741 13743 BZF +2 # (+0 = P00, -0 = FRESHSTART)
064838,000168: 43,3742 03753 TC CKMDMORE # NOW CHECK FOR PROGRAM WHICH CAN BE
064839,000169: # INTERRUPTED BY P27.
064840,000170:
064841,000171: 43,3743 31011 CAE MODREG # UPDATE ALLOWED
064842,000172: 43,3744 54301 TS UPOLDMOD # SAVE CURRENT MAJOR MODE
064843,000173: # Page 1500
064844,000174: 43,3745 30331 CAE UPVERBSV # SET UPVERB TO INDICDATE TO P27
064845,000175: 43,3746 54302 TS UPVERB # WHICH EXTENDED VERB CALLED IT.
064846,000176:
064847,000177: 43,3747 35017 CAF ONE
064848,000178: 43,3750 54303 TS UPCOUNT # INITIALIZE UPCOUNT TO 1
064849,000179:
064850,000180: 43,3751 04701 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
064851,000181: 43,3752 57373 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
064852,000182:
064853,000183: 43,3753 40101 CKMDMORE CS FLAGWRD5
064854,000184: 43,3754 75010 MASK BIT8 # CHECK IF COMPUTER IS LGC
064855,000185: 43,3755 10000 CCS A # IS COMPUER LGC OR AGC
064856,000186: 43,3756 13764 UPERLEM TCF UPERROR # ERROR: IT'S THE LEM + MODE IS NOT P00.
064857,000187: 43,3757 45016 CS TWO
064858,000188: 43,3760 71011 MASK MODREG
064859,000189: 43,3761 10000 CCS A
064860,000190: 43,3762 13764 UPERCMC TCF UPERROR # ERROR: IT'S THE CMC AND MODE IS NOT
064861,000191: # P00 OR P02.
064862,000192: 43,3763 00002 TC Q # ALLOW UPDATE TO PROCEED.
064863,000193:
064864,000194: 43,3764 04701 UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT
064865,000195: 43,3765 57754 CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT
064866,000196:
064867,000197: 43,3766 30,2000 SBANK= LOWSUPER
064868,000198: 43,3766 5021 UP70 EQUALS ZERO
064869,000199: 43,3766 5017 UP71 EQUALS ONE
064870,000200: 43,3766 5016 UP72 EQUALS TWO
064871,000201: 43,3766 6214 UP73 EQUALS THREE
064872,000202:
064873,000203: 04,3757 BANK 04
064874,000204: 27,2000 SETLOC UPDATE2
064875,000205: 27,2000 BANK
064876,000206:
064877,000207: 27,3373 COUNT* $$/P27
064878,000208:
064879,000209: 27,3373 UPPART2 EQUALS # UPDATE PROGRAM -- PART 2
064880,000210:
064881,000211: 27,3373 05412 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
064882,000212: 27,3374 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
064883,000213: 27,3375 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO
064884,000214: 27,3376 0304 EBANK= UPBUFF
064885,000215: 27,3376 03704 56060 2CADR UPOUT +1
064886,000216:
064887,000217: 27,3400 35017 CAF ONE
064888,000218: 27,3401 54332 TS DNLSTCOD # DOWNLIST
064889,000219:
064890,000220: 27,3402 05354 TC NEWMODEX # SET MAJOR MODE = 27
064891,000221: # Page 1501
064892,000222: 27,3403 00033 DEC 27 B-14
064893,000223:
064894,000224: 27,3404 50302 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
064895,000225: 27,3405 13406 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
064896,000226: 27,3406 13411 TCF +3 # V70 FIXED (OF COMPONENTS)
064897,000227: 27,3407 13414 TCF OHWELL1 # V71 VARIABLE -- GO GET NO. OF COMPONENTS
064898,000228: 27,3410 13414 TCF OHWELL1 # V72 VARIABLE -- GO GET NO. OF COMPONENTS
064899,000229: 27,3411 35016 CA TWO # V73 (AND V70) FIXED
064900,000230: 27,3412 54300 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
064901,000231: 27,3413 13437 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
064902,000232:
064903,000233: 27,3414 33507 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
064904,000234: 27,3415 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II) *
064905,000235: 27,3416 33510 +2 CAF UPLOADNV # (CKV432 RETURNS HERE IF V32 ENCOUNTERED)
064906,000236: 27,3417 04662 TC BANKCALL # DISPLAY A FLASHING V21N01
064907,000237: 27,3420 20561 CADR GOXDSPF # TO REQUEST II.
064908,000238: 27,3421 13704 TCF UPOUT4 # V32 TERMINATE UPDATE (P27) RETURN
064909,000239: 27,3422 13416 TCF OHWELL1 +2
064910,000240: 27,3423 03500 TC CK4V32 # DATA OR V32 RETURN
064911,000241: 27,3424 45016 CS BIT2
064912,000242: 27,3425 60304 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
064913,000243: 27,3426 00006 EXTEND # .GE. 3 AND .LE. 20D.
064914,000244: 27,3427 63416 BZMF OHWELL1 +2
064915,000245: 27,3430 40304 CS UPBUFF
064916,000246: 27,3431 64376 AD UP21
064917,000247: 27,3432 00006 EXTEND
064918,000248: 27,3433 63416 BZMF OHWELL1 +2
064919,000249: 27,3434 30304 CAE UPBUFF
064920,000250: 27,3435 54300 TS COMPNUMB # SAVE II IN COMPNUMB
064921,000251:
064922,000252: # UPBUFF LOADING SEQUENCE
064923,000253:
064924,000254: 27,3436 24303 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
064925,000255: 27,3437 33654 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION (ECADR) IN UPBUFF
064926,000256: 27,3440 60303 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED
064927,000257: 27,3441 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3.
064928,000258: 27,3442 33510 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
064929,000259: 27,3443 04662 TC BANKCALL # DISPLAY A FLASHING V21N01
064930,000260: 27,3444 20561 CADR GOXDSPF # TO REQUEST DATA.
064931,000261: 27,3445 13704 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
064932,000262: 27,3446 13442 TCF OHWELL2 +3 # V33 PROCEED RETURN
064933,000263: 27,3447 03500 TC CK4V32 # DATA OR V32 RETURN
064934,000264: 27,3450 40303 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
064935,000265: 27,3451 60300 AD COMPNUMB # THE DATA WE EXPECTED.
064936,000266: 27,3452 00006 EXTEND
064937,000267: 27,3453 63455 BZMF UPVERIFY # YES -- GO TO VERIFICATION SEQUENCE
064938,000268: 27,3454 13436 TCF OHWELL2 -1 # NO -- REQUEST ADDITIONAL DATA.
064939,000269:
064940,000270: # Page 1502
064941,000271: # VERIFY SEQUENCE
064942,000272: 27,3455 33506 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
064943,000273: 27,3456 54156 TS MPAC +2 # IS TO BE STORED INTO R3.
064944,000274: 27,3457 33511 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
064945,000275: 27,3460 04662 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEXT
064946,000276: 27,3461 20561 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
064947,000277: 27,3462 13704 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
064948,000278: 27,3463 13512 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
064949,000279: 27,3464 03500 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
064950,000280: 27,3465 30330 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SENT
064951,000281: 27,3466 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
064952,000282: 27,3467 63455 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
064953,000283: 27,3470 40330 CS UPTEMP
064954,000284: 27,3471 60300 AD COMPNUMB
064955,000285: 27,3472 65017 AD BIT1
064956,000286: 27,3473 00006 EXTEND
064957,000287: 27,3474 63455 BZMF UPVERIFY # NO
064958,000288: 27,3475 33654 CAF ADUPBFM1 # YES -- BASED ON THE COMPONENT NO. INDEX
064959,000289: 27,3476 60330 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
064960,000290: 27,3477 13441 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANGE.
064961,000291:
064962,000292: 27,3500 27,3704 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TC TERMINATE UPDATE.
064963,000293:
064964,000294: # CHECK FOR VERB 32 SEQUENCE
064965,000295:
064966,000296: 27,3500 40154 CK4V32 CS MPAC # ON DATA RETURN FROM `GOXDSPF'
064967,000297: 27,3501 75012 MASK BIT6 # ON DATA RETURN FROM "GOXDSP" & THE CON-
064968,000298: 27,3502 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
064969,000299: 27,3503 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
064970,000300: 27,3504 50002 INDEX Q
064971,000301: 27,3505 77771 TC 0 -6 # V32 ENCOUNTERED -- GO BACK AND GET DATA
064972,000302:
064973,000303: 27,3506 00330 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
064974,000304: 27,3507 00304 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
064975,000305: 27,3510 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01
064976,000306: 27,3511 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02
064977,000307: 27,3512 4376 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
064978,000308: 27,3512 5022 UPDTPHAS EQUALS FIVE
064979,000309:
064980,000310: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
064981,000311:
064982,000312: 27,3512 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
064983,000313:
064984,000314: 27,3512 00004 INHINT
064985,000315:
064986,000316: 27,3513 30103 CAE FLAGWRD7 # INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO
064987,000317: 27,3514 56001 XCH L # INDICATE TO THE GROUND (VIA DOWNLINK)
064988,000318: 27,3515 35015 CAF BIT3 # THAT THE V33 (WHICH THE GROUND SENT TO
064989,000319: # Page 1503
064990,000320: 27,3516 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
064991,000321: 27,3517 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
064992,000322: 27,3520 54103 TS FLAGWRD7
064993,000323:
064994,000324: 27,3521 05412 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
064995,000325: 27,3522 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS.
064996,000326: 27,3523 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT)
064997,000327:
064998,000328: 27,3524 45016 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED.
064999,000329: 27,3525 60302 AD UPVERB # THAT IS, IF IT'S A V70 - V72.
065000,000330: 27,3526 00006 EXTEND # GO TO UPEND73 IF IT'S A V73.
065001,000331: 27,3527 63536 BZMF UPFNDVAC
065002,000332:
065003,000333: # VERB 73 BRANCH
065004,000334:
065005,000335: 27,3530 00006 UPEND73 EXTEND # V73 -- PERFORM DP OCTAL AGC CLOCK INCREMENT
065006,000336: 27,3531 30305 DCA UPBUFF
065007,000337: 27,3532 52315 DXCH UPBUFF +8D
065008,000338: 27,3533 03561 TC TIMEDIDL
065009,000339: 27,3534 04400 TC FALTON # ERROR -- TURN ON *OPERATOR ERROR* LIGHT
065010,000340: 27,3535 03704 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
065011,000341:
065012,000342: 27,3536 34371 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
065013,000343: 27,3537 05147 TC FINDVAC # GET VAC AREA FOR `CALL INTSTALL'
065014,000344: 27,3540 E3,1706 EBANK= TEPHEM
065015,000345: 27,3540 03543 56063 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
065016,000346: 27,3542 05217 TC ENDOFJOB # `TEPHEM' UPDATE BY V70)
065017,000347:
065018,000348: 27,3543 06006 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE -- SO
065019,000349: 27,3544 77624 CALL # WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI)
065020,000350: 27,3545 27442 INTSTALL # IS IN PROGRESS -- OR -- GRAB OI AND RETURN
065021,000351: # TO UPWAKE IF OI IS NOT IN PROGRESS.
065022,000352:
065023,000353: 27,3546 77776 UPWAKE EXIT
065024,000354:
065025,000355: 27,3547 05412 TC PHASCHNG # RESTART PROTECT (GROUP 6)
065026,000356: 27,3550 04026 OCT 04026
065027,000357:
065028,000358: 27,3551 05546 TC UPFLAG # SET INTEGRATION RESTART BIT
065029,000359: 27,3552 00236 ADRES REINTFLG
065030,000360: 27,3553 00004 INHINT
065031,000361: 27,3554 UPPART3 EQUALS
065032,000362:
065033,000363: 27,3554 50302 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
065034,000364: 27,3555 13556 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
065035,000365: 27,3556 13715 TCF UPEND70 # V70
065036,000366: 27,3557 13624 TCF UPEND71 # V71
065037,000367: 27,3560 13656 TCF UPEND72 # V72
065038,000368:
065039,000369: # Page 1504
065040,000370: # ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
065041,000371: 27,3561 00006 TIMEDIDL EXTEND
065042,000372: 27,3562 22330 QXCH UPTEMP # SAVE Q FOR RETURN
065043,000373: 27,3563 35021 CAF ZERO # ZERO AND SAVE TIME2,TIME1
065044,000374: 27,3564 22007 ZL
065045,000375: 27,3565 52025 DXCH TIME2
065046,000376: 27,3566 52327 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
065047,000377:
065048,000378: 27,3567 35022 CAF UPDTPHAS # DO
065049,000379: 27,3570 54001 TS L # A
065050,000380: 27,3571 40000 COM # QUICK
065051,000381: 27,3572 52765 DXCH -PHASE6 # PHASCHNG
065052,000382:
065053,000383: 27,3573 00004 TIMEDIDR INHINT
065054,000384: 27,3574 35021 CAF ZERO
065055,000385: 27,3575 22007 ZL # PICK UP INCRMENTER (AND ZERO
065056,000386: 27,3576 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND
065057,000387: 27,3577 52315 DXCH UPBUFF +8D # STORE IT
065058,000388: 27,3600 52155 DXCH MPAC # INTO MPAC FOR TPAGREE.
065059,000389:
065060,000390: 27,3601 00006 EXTEND
065061,000391: 27,3602 30327 DCA UPBUFF +18D
065062,000392: 27,3603 20155 DAS MPAC # FORM SUM IN MPAC
065063,000393: 27,3604 00006 EXTEND
065064,000394: 27,3605 13614 BZF DELTAOK # TEST FOR OVERFLOW
065065,000395: 27,3606 35021 CAF ZERO
065066,000396: 27,3607 52327 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
065067,000397: 27,3610 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR
065068,000398:
065069,000399: 27,3611 05412 TC PHASCHNG # RESTART PROTECT (GROUP 6)
065070,000400: 27,3612 04026 OCT 04026
065071,000401:
065072,000402: 27,3613 00330 TC UPTEMP # GO TO ERROR EXIT
065073,000403:
065074,000404: 27,3614 07226 DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT
065075,000405: 27,3615 52155 DXCH MPAC
065076,000406: 27,3616 20025 DAS TIME2 # INCREMENT TIME2,TIME1
065077,000407:
065078,000408: 27,3617 05412 TC PHASCHNG # RESTART PROTECT (GROUP 6)
065079,000409: 27,3620 04026 OCT 04026
065080,000410:
065081,000411: 27,3621 00004 INHINT
065082,000412: 27,3622 50330 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
065083,000413: 27,3623 00001 TC 1 # NORMAL RETURN
065084,000414:
065085,000415: # VERB 71 BRANCH
065086,000416:
065087,000417: 27,3624 30305 UPEND71 CAE UPBUFF +1 # SET EBANK
065088,000418: 27,3625 54003 TS EBANK # AND
065089,000419: # Page 1505
065090,000420: 27,3626 74373 MASK LOW8 # CALCULATE
065091,000421: 27,3627 54330 TS UPTEMP # S-REG VALUE OF RECEIVING AREA
065092,000422: 27,3630 67714 AD NEG3 # IN THE PROCESS OF
065093,000423: 27,3631 60300 AD COMPNUMB # PERFORMING
065094,000424: 27,3632 00006 EXTEND # THIS UPDATE
065095,000425: 27,3633 13641 BZF STORLP71 # WILL WE
065096,000426: 27,3634 75007 MASK BIT9 # OVERFLOW
065097,000427: 27,3635 10000 CCS A # INTO THE NEXT EBANK....
065098,000428: 27,3636 13752 TCF UPERROUT # YES
065099,000429:
065100,000430: 27,3637 37714 CA NEG3 # NO -- CALCULATE NUMBER OF
065101,000431: 27,3640 60300 AD COMPNUMB # WORDS TO BE STORED MINUS ONE
065102,000432: 27,3641 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
065103,000433: 27,3642 50000 INDEX A # TAKE NEXT UPDATE WORD FROM
065104,000434: 27,3643 30306 CA UPBUFF +2 # UPBUFF AND
065105,000435: 27,3644 54001 TS L # SAVE IT IN L
065106,000436: 27,3645 30154 CA MPAC # CALCULATE NEXT
065107,000437: 27,3646 60330 AD UPTEMP # RECEIVING ADDRESS
065108,000438: 27,3647 50000 INDEX A
065109,000439: 27,3650 E3,1400 EBANK= 1400
065110,000440: 27,3650 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
065111,000441: 27,3651 E3,1706 EBANK= TEPHEM
065112,000442: 27,3651 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
065113,000443: 27,3652 13641 TCF STORLP71 # YES
065114,000444: 27,3653 13703 TCF UPOUT # NO -- THEN EXIT UPDATE PROGRAM
065115,000445: 27,3654 00303 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
065116,000446: 27,3655 13703 TCF UPOUT # NO -- EXIT UPDATE (HERE WHEN COMPNUMB = 3)
065117,000447:
065118,000448: # VERB 72 BRANCH
065119,000449:
065120,000450: 27,3656 35017 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
065121,000451: 27,3657 70300 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ...
065122,000452: 27,3660 10000 CCS A
065123,000453: 27,3661 13663 TCF +2 # YES
065124,000454: 27,3662 13752 TCF UPERROUT # ERROR -- SHOULD BE ODD NO. OF COMPONENTS
065125,000455: 27,3663 45016 CS BIT2
065126,000456: 27,3664 60300 AD COMPNUMB
065127,000457: 27,3665 54154 LDLOOP72 TS MPAC # NOW PERFORM THE UPDATE
065128,000458: 27,3666 50000 INDEX A
065129,000459: 27,3667 30305 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
065130,000460: 27,3670 22000 LXCH A
065131,000461: 27,3671 10154 CCS MPAC # SET POINTER TO ECADR (MUST BE CCS)
065132,000462: 27,3672 54154 TS MPAC
065133,000463: 27,3673 50000 INDEX A
065134,000464: 27,3674 30305 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
065135,000465: 27,3675 54003 TS EBANK # SET EBANK
065136,000466: 27,3676 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS
065137,000467: 27,3677 50000 INDEX A
065138,000468:
065139,000469: # Page 1506
065140,000470: 27,3700 E3,1400 EBANK= 1400
065141,000471: 27,3700 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
065142,000472: 27,3701 E3,1706 EBANK= TEPHEM
065143,000473: 27,3701 10154 CCS MPAC # ARE WE THORUGH THE V72 UPDATE...
065144,000474: 27,3702 13665 TCF LDLOOP72 # NO
065145,000475:
065146,000476: # NORMAL FINISH OF P27
065147,000477:
065148,000478: 27,3703 UPOUT EQUALS
065149,000479: 27,3703 02671 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
065150,000480: 27,3704 30301 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
065151,000481: 27,3705 05357 TC NEWMODEX +3
065152,000482: 27,3706 35021 CAF ZERO
065153,000483: 27,3707 54332 TS DNLSTCOD
065154,000484: 27,3710 03757 TC UPACTOFF # TURN OFF `UPLINK ACTIVITY' LIGHT
065155,000485: 27,3711 00006 EXTEND # KILL GROUP 6
065156,000486: 27,3712 35021 DCA NEG0
065157,000487: 27,3713 52765 DXCH -PHASE6
065158,000488:
065159,000489: 27,3714 05534 TC ENDEXT # EXTENDED VERB EXIT
065160,000490:
065161,000491: # VERB TO BRANCH
065162,000492:
065163,000493: 27,3715 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
065164,000494: 27,3716 40305 DCS UPBUFF # TIME IN UPBUFF
065165,000495: 27,3717 52315 DXCH UPBUFF +8D
065166,000496: 27,3720 03561 TC TIMEDIDL # DECREMENT AGC CLOCK
065167,000497:
065168,000498: 27,3721 03752 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
065169,000499:
065170,000500: 27,3722 E3,1706 EBANK= TEPHEM
065171,000501: 27,3722 00006 EXTEND
065172,000502: 27,3723 40305 DCS UPBUFF # COPY DECREMENTERS FOR
065173,000503: 27,3724 52317 DXCH UPBUFF +10D # RESTART PROTECTION
065174,000504: 27,3725 00006 EXTEND
065175,000505: 27,3726 40305 DCS UPBUFF
065176,000506: 27,3727 52321 DXCH UPBUFF +12D
065177,000507:
065178,000508: 27,3730 05412 TC PHASCHNG # RESTART PROTECT (GROUP 6)
065179,000509: 27,3731 04026 OCT 04026
065180,000510:
065181,000511: 27,3732 35021 CAF ZERO
065182,000512: 27,3733 22007 ZL
065183,000513: 27,3734 52317 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
065184,000514: 27,3735 21571 DAS TETCSM
065185,000515:
065186,000516: 27,3736 35021 CAF ZERO
065187,000517:
065188,000518: # Page 1507
065189,000519: 27,3737 22007 ZL
065190,000520: 27,3740 52321 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
065191,000521: 27,3741 21643 DAS TETLEM
065192,000522: 27,3742 35021 CAF ZERO
065193,000523: 27,3743 22007 ZL
065194,000524: 27,3744 52305 DXCH UPBUFF
065195,000525: 27,3745 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM
065196,000526: 27,3746 27706 ADS TEPHEM
065197,000527:
065198,000528: 27,3747 05412 TC PHASCHNG # RESTART PROTECT (GROUP 6)
065199,000529: 27,3750 04026 OCT 04026
065200,000530:
065201,000531: 27,3751 0304 EBANK= UPBUFF
065202,000532:
065203,000533: 27,3751 03703 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
065204,000534:
065205,000535: # ERROR SEQUENCE
065206,000536:
065207,000537: 27,3752 04400 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
065208,000538: 27,3753 13703 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
065209,000539:
065210,000540: 27,3754 04400 +2 TC FALTON # TURN ON `OPERATOR ERROR' LIGHT
065211,000541: 27,3755 03757 TC UPACTOFF # TURN OFF `UPLINK ACTIVITY' LIGHT
065212,000542: 27,3756 05534 TC ENDEXT # EXTENDED VERB EXIT
065213,000543: # (THE PURPOSE OF UPERROUT +2 EXIT IS
065214,000544: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT
065215,000545: # RESET ANY RESTART GROUPS)
065216,000546:
065217,000547: # `UPACTOFF' IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
065218,000548:
065219,000549: 27,3757 45015 UPACTOFF CS BIT3
065220,000550: 27,3760 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
065221,000551: 27,3761 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
065222,000552: 27,3762 00002 TC Q
End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc