Source Code

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