Source Code

063302,000001: # Copyright: Public domain. 063303,000002: # Filename: UPDATE_PROGRAM.agc 063304,000003: # Purpose: Part of the source code for Colossus, build 249. 063305,000004: # It is part of the source code for the Command Module's (CM) 063306,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9. 063307,000006: # Assembler: yaYUL 063308,000007: # Reference: Starts at p. 1487 of 1701.pdf. 063309,000008: # Contact: Ron Burkey <info@sandroid.org>. 063310,000009: # Website: www.ibiblio.org/apollo/index.html 063311,000010: # Mod history: 08/30/04 RSB. Adapted from corresponding Luminary131 file. 063312,000011: # 05/14/05 RSB Corrected website reference above. 063313,000012: # 2010-10-24 JL Indentation fixes. 063314,000013: 063315,000014: # The contents of the "Colossus249" files, in general, are transcribed 063316,000015: # from a scanned document obtained from MIT's website, 063317,000016: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this 063318,000017: # document read, in part: 063319,000018: 063320,000019: # Assemble revision 249 of AGC program Colossus by NASA 063321,000020: # 2021111-041. October 28, 1968. 063322,000021: 063323,000022: # This AGC program shall also be referred to as 063324,000023: # Colossus 1A 063325,000024: 063326,000025: # Prepared by 063327,000026: # Massachusetts Institute of Technology 063328,000027: # 75 Cambridge Parkway 063329,000028: # Cambridge, Massachusetts 063330,000029: # under NASA contract NAS 9-4065. 063331,000030: 063332,000031: # Refer directly to the online document mentioned above for further information. 063333,000032: # Please report any errors (relative to 1701.pdf) to info@sandroid.org. 063334,000033: 063335,000034: # In some cases, where the source code for Luminary 131 overlaps that of 063336,000035: # Colossus 249, this code is instead copied from the corresponding Luminary 131 063337,000036: # source file, and then is proofed to incorporate any changes. 063338,000037: 063339,000038: # Page 1487 063340,000039: # PROGRAM NAME: P27 063341,000040: # WRITTEN BY: KILROY/ DE WOLF 063342,000041: 063343,000042: # MOD NO: 0 063344,000043: # MOD BY: KILROY 063345,000044: # DATE: 01DEC67 063346,000045: 063347,000046: # LOG SECTION: UPDATE PROGRAM. 063348,000047: 063349,000048: # FUNCT. DESCR.: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA 063350,000049: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK. 063351,000050: # THE P27 PROGRAM WILL ACCEPT UPDATES 063352,000051: # ONLY DURING P00 FOR THE LM, AND ONLY DURINT P00, 063353,000052: # P02, AND FRESH START FOR THE CSM. 063354,000053: 063355,000054: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72, AND 73. 063356,000055: 063357,000056: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE, 063358,000057: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG 063359,000058: 063360,000059: # NORMAL EXIT: TC ENDEXT 063361,000060: 063362,000061: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT 063363,000062: 063364,000063: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ... 063365,000064: # 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE 063366,000065: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)--- 063367,000066: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTROED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINE 063368,000067: # ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS). 063369,000068: # V70,V71,V72, OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER. 063370,000069: # 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)--- 063371,000070: # PROTECTED AGAINST RESTARTS. 063372,000071: 063373,000072: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS. 063374,000073: # UPVERB (1) VERB NUMBER MINUS 70D (E.G., FOR V72, UPVERB = 72D - 70D = 2) 063375,000074: # UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27. 063376,000075: # COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED. 063377,000076: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED. 063378,000077: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE. 063379,000078: 063380,000079: # INPUT: 063381,000080: 063382,000081: # ENTRY DESCRIPTION 063383,000082: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX, 063384,000083: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE 063385,000084: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM). 063386,000085: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28). 063387,000086: # Page 1488 063388,000087: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX, 063389,000088: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA. 063390,000089: # XXXXXE IT IS .GE. 3 .AND. .LE. 200., 063391,000090: # ... AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE 063392,000091: # NEXT BANK. SCALING IS SAME AS INTERNAL REGISTERS. 063393,000092: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE 063394,000093: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA. 063395,000094: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD. 063396,000095: # ... SCALING IS SAME AS INTERNAL REGISTERS. 063397,000096: 063398,000097: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME 063399,000098: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN 063400,000099: # CENTISECONDS SCALED AT (2)28). 063401,000100: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55. 063402,000101: 063403,000102: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES 063404,000103: # COMPLEMENT BIT3 OF FLAGWORD7. 063405,000104: 063406,000105: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES -- 063407,000106: # 1. CSM/LM STATE VECTOR UPDATE 063408,000107: # 2. REFSMMAT UPDATE 063409,000108: 063410,000109: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE --- 063411,000110: 063412,000111: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL) 063413,000112: # ENTRIES: DATA DEFINITION: SCALE FACTORS: 063414,000113: # V71E CONTIGUOUS BLOCK UPDATE VERB 063415,000114: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE 063416,000115: # AAAAE ECADR OF `UPSVFLAG' 063417,000116: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM -- EARTH SPHERE OF INFLUENCE SCALING 063418,000117: # 00002 FOR CSM, 77775 FOR LEM -- LUNAR SPHERE OF INFLUENCE SCALING 063419,000118: # XXXXXEXXXXXE X POSITION 063420,000119: # XXXXXEXXXXXE Y POSITION 063421,000120: # XXXXXEXXXXXE Z POSITION 063422,000121: # XXXXXEXXXXXE X VELOCITY 063423,000122: # XXXXXEXXXXXE Y VELOCITY 063424,000123: # XXXXXEXXXXXE Z VELOCITY 063425,000124: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO 063426,000125: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED. 063427,000126: 063428,000127: # 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL) 063429,000128: # ENTRIES DATA DEFINITITIONS SCALE FACTORS: 063430,000129: # Page 1489 063431,000130: # V71E CONTIGUOUS BLOCK UPDATE VERB 063432,000131: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE 063433,000132: # AAAAE ECADR OF `REFSMMAT' 063434,000133: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1) 063435,000134: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1) 063436,000135: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1) 063437,000136: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1) 063438,000137: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1) 063439,000138: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1) 063440,000139: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1) 063441,000140: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1) 063442,000141: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1) 063443,000142: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED 063444,000143: 063445,000144: 07,3717 BANK 07 063446,000145: 43,2000 SETLOC EXTVERBS 063447,000146: 43,2000 BANK 063448,000147: 063449,000148: 43,3722 E3,1706 EBANK= TEPHEM 063450,000149: 063451,000150: 43,3722 COUNT* $$/P27 063452,000151: 43,3722 34714 V70UPDAT CAF UP70 # COMES HERE ON V70E 063453,000152: 43,3723 13731 TCF V73UPDAT +1 063454,000153: 063455,000154: 43,3724 34712 V71UPDAT CAF UP71 # COMES HERE ON V71E 063456,000155: 43,3725 13731 TCF V73UPDAT +1 063457,000156: 063458,000157: 43,3726 34711 V72UPDAT CAF UP72 # COMES HERE ON V72E 063459,000158: 43,3727 13731 TCF V73UPDAT +1 063460,000159: 063461,000160: 43,3730 36214 V73UPDAT CAF UP73 # COMES HERE ON V73E 063462,000161: 063463,000162: 43,3731 54331 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27 063464,000163: 063465,000164: 43,3732 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE 063466,000165: # TURN *OPERATOR ERROR* ON AND TERMINATE EJOB 063467,000166: 063468,000167: 43,3733 31011 CA MODREG # CHECK IF UPDATE ALLOWED 063469,000168: 43,3734 00006 EXTEND # FIRST CHECK FOR MODREG = +0, -0 063470,000169: 43,3735 13737 BZF +2 # (+0 = P00, -0 = FRESHSTART) 063471,000170: 43,3736 03747 TC CKMDMORE # NOW CHECK FOR PROGRAM WHICH CAN BE 063472,000171: # INTERRUPTED BY P27. 063473,000172: 063474,000173: 43,3737 31011 CAE MODREG # UPDATE ALLOWED 063475,000174: 43,3740 54301 TS UPOLDMOD # SAVE CURRENT MAJOR MODE 063476,000175: # Page 1490 063477,000176: 43,3741 30331 CAE UPVERBSV # SET UPVERB TO INDICDATE TO P27 063478,000177: 43,3742 54302 TS UPVERB # WHICH EXTENDED VERB CALLED IT. 063479,000178: 063480,000179: 43,3743 34712 CAF ONE 063481,000180: 43,3744 54303 TS UPCOUNT # INITIALIZE UPCOUNT TO 1 063482,000181: 063483,000182: 43,3745 04574 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND 063484,000183: 43,3746 57364 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK. 063485,000184: 063486,000185: 43,3747 40101 CKMDMORE CS FLAGWRD5 063487,000186: 43,3750 74703 MASK BIT8 # CHECK IF COMPUTER IS LGC 063488,000187: 43,3751 10000 CCS A # IS COMPUER LGC OR AGC 063489,000188: 43,3752 13760 UPERLEM TCF UPERROR # ERROR: IT'S THE LEM + MODE IS NOT P00. 063490,000189: 43,3753 44711 CS TWO 063491,000190: 43,3754 71011 MASK MODREG 063492,000191: 43,3755 10000 CCS A 063493,000192: 43,3756 13760 UPERCMC TCF UPERROR # ERROR: IT'S THE CMC AND MODE IS NOT 063494,000193: # P00 OR P02. 063495,000194: 43,3757 00002 TC Q # ALLOW UPDATE TO PROCEED. 063496,000195: 063497,000196: 43,3760 04574 UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT 063498,000197: 43,3761 57745 CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT 063499,000198: 063500,000199: 43,3762 4714 UP70 EQUALS ZERO 063501,000200: 43,3762 4712 UP71 EQUALS ONE 063502,000201: 43,3762 4711 UP72 EQUALS TWO 063503,000202: 43,3762 6214 UP73 EQUALS THREE 063504,000203: 063505,000204: 04,3650 BANK 04 063506,000205: 27,2000 SETLOC UPDATE2 063507,000206: 27,2000 BANK 063508,000207: 063509,000208: 27,3364 COUNT* $$/P27 063510,000209: 063511,000210: 27,3364 UPPART2 EQUALS # UPDATE PROGRAM -- PART 2 063512,000211: 063513,000212: 27,3364 05301 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE 063514,000213: 27,3365 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS. 063515,000214: 27,3366 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO 063516,000215: 27,3367 0304 EBANK= UPBUFF 063517,000216: 27,3367 03675 56100 2CADR UPOUT +1 063518,000217: 063519,000218: 27,3371 34712 CAF ONE 063520,000219: 27,3372 54332 TS DNLSTCOD # DOWNLIST 063521,000220: 063522,000221: 27,3373 05243 TC NEWMODEX # SET MAJOR MODE = 27 063523,000222: 27,3374 00033 DEC 27 B-14 063524,000223: 063525,000224: # Page 1491 063526,000225: 27,3375 50302 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE 063527,000226: 27,3376 13377 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER 063528,000227: 27,3377 13402 TCF +3 # V70 FIXED (OF COMPONENTS) 063529,000228: 27,3400 13405 TCF OHWELL1 # V71 VARIABLE -- GO GET NO. OF COMPONENTS 063530,000229: 27,3401 13405 TCF OHWELL1 # V72 VARIABLE -- GO GET NO. OF COMPONENTS 063531,000230: 27,3402 34711 CA TWO # V73 (AND V70) FIXED 063532,000231: 27,3403 54300 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2. 063533,000232: 27,3404 13430 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS 063534,000233: 063535,000234: 27,3405 33500 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER * 063536,000235: 27,3406 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II) * 063537,000236: 27,3407 33501 +2 CAF UPLOADNV # (CKV432 RETURNS HERE IF V32 ENCOUNTERED) 063538,000237: 27,3410 04555 TC BANKCALL # DISPLAY A FLASHING V21N01 063539,000238: 27,3411 20465 CADR GOXDSPF # TO REQUEST II. 063540,000239: 27,3412 13675 TCF UPOUT4 # V32 TERMINATE UPDATE (P27) RETURN 063541,000240: 27,3413 13407 TCF OHWELL1 +2 063542,000241: 27,3414 03471 TC CK4V32 # DATA OR V32 RETURN 063543,000242: 27,3415 44711 CS BIT2 063544,000243: 27,3416 60304 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER) 063545,000244: 27,3417 00006 EXTEND # .GE. 3 AND .LE. 20D. 063546,000245: 27,3420 63407 BZMF OHWELL1 +2 063547,000246: 27,3421 40304 CS UPBUFF 063548,000247: 27,3422 64376 AD UP21 063549,000248: 27,3423 00006 EXTEND 063550,000249: 27,3424 63407 BZMF OHWELL1 +2 063551,000250: 27,3425 30304 CAE UPBUFF 063552,000251: 27,3426 54300 TS COMPNUMB # SAVE II IN COMPNUMB 063553,000252: 063554,000253: # UPBUFF LOADING SEQUENCE 063555,000254: 063556,000255: 27,3427 24303 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED. 063557,000256: 27,3430 33645 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION (ECADR) IN UPBUFF 063558,000257: 27,3431 60303 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED 063559,000258: 27,3432 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3. 063560,000259: 27,3433 33501 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED) 063561,000260: 27,3434 04555 TC BANKCALL # DISPLAY A FLASHING V21N01 063562,000261: 27,3435 20465 CADR GOXDSPF # TO REQUEST DATA. 063563,000262: 27,3436 13675 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN. 063564,000263: 27,3437 13433 TCF OHWELL2 +3 # V33 PROCEED RETURN 063565,000264: 27,3440 03471 TC CK4V32 # DATA OR V32 RETURN 063566,000265: 27,3441 40303 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL 063567,000266: 27,3442 60300 AD COMPNUMB # THE DATA WE EXPECTED. 063568,000267: 27,3443 00006 EXTEND 063569,000268: 27,3444 63446 BZMF UPVERIFY # YES -- GO TO VERIFICATION SEQUENCE 063570,000269: 27,3445 13427 TCF OHWELL2 -1 # NO -- REQUEST ADDITIONAL DATA. 063571,000270: 063572,000271: # VERIFY SEQUENCE 063573,000272: # Page 1492 063574,000273: 27,3446 33477 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX 063575,000274: 27,3447 54156 TS MPAC +2 # IS TO BE STORED INTO R3. 063576,000275: 27,3450 33502 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED) 063577,000276: 27,3451 04555 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEXT 063578,000277: 27,3452 20465 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION. 063579,000278: 27,3453 13675 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN 063580,000279: 27,3454 13503 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT. 063581,000280: 27,3455 03471 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN 063582,000281: 27,3456 30330 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SEND 063583,000282: 27,3457 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER? 063584,000283: 27,3460 63446 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO 063585,000284: 27,3461 40330 CS UPTEMP 063586,000285: 27,3462 60300 AD COMPNUMB 063587,000286: 27,3463 64712 AD BIT1 063588,000287: 27,3464 00006 EXTEND 063589,000288: 27,3465 63446 BZMF UPVERIFY # NO 063590,000289: 27,3466 33645 CAF ADUPBFM1 # YES -- BASED ON THE COMPONENT NO. INDEX 063591,000290: 27,3467 60330 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN 063592,000291: 27,3470 13432 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANG. 063593,000292: 063594,000293: 27,3471 27,3675 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TC TERMINATE UPDATE. 063595,000294: 063596,000295: # CHECK FOR VERB 32 SEQUENCE 063597,000296: 063598,000297: 27,3471 40154 CK4V32 CS MPAC # ON DATA RETURN FROM `GOXDSPF' 063599,000298: 27,3472 74705 MASK BIT6 # ON DATA RETURN FROM "GOXDSP" & THE CON- 063600,000299: 27,3473 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32. 063601,000300: 27,3474 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED. 063602,000301: 27,3475 50002 INDEX Q 063603,000302: 27,3476 77771 TC 0 -6 # V32 ENCOUNTERED -- GO BACK AND GET DATA 063604,000303: 063605,000304: 27,3477 00330 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS 063606,000305: 27,3500 00304 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER 063607,000306: 27,3501 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01 063608,000307: 27,3502 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02 063609,000308: 27,3503 4376 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1 063610,000309: 27,3503 4715 UPDTPHAS EQUALS FIVE 063611,000310: 063612,000311: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE 063613,000312: 063614,000313: 27,3503 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA. 063615,000314: 063616,000315: 27,3503 00004 INHINT 063617,000316: 063618,000317: 27,3504 30103 CAE FLAGWRD7 # INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO 063619,000318: 27,3505 56001 XCH L # INDICATE TO THE GROUND (VIA DOWNLINK) 063620,000319: 27,3506 34710 CAF BIT3 # THAT THE V33 (WHICH THE GROUND SENT TO 063621,000320: 27,3507 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY 063622,000321: 27,3510 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM 063623,000322: # Page 1493 063624,000323: 27,3511 54103 TS FLAGWRD7 063625,000324: 063626,000325: 27,3512 05301 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE 063627,000326: 27,3513 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS. 063628,000327: 27,3514 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT) 063629,000328: 063630,000329: 27,3515 44711 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED. 063631,000330: 27,3516 60302 AD UPVERB # THAT IS, IF IT'S A V70 - V72. 063632,000331: 27,3517 00006 EXTEND # GO TO UPEND73 IF IT'S A V73. 063633,000332: 27,3520 63527 BZMF UPFNDVAC 063634,000333: 063635,000334: # VERB 73 BRANCH 063636,000335: 063637,000336: 27,3521 00006 UPEND73 EXTEND # V73 -- PERFORM DP OCTAL AGC CLOCK INCREMENT 063638,000337: 27,3522 30305 DCA UPBUFF 063639,000338: 27,3523 52315 DXCH UPBUFF +8D 063640,000339: 27,3524 03552 TC TIMEDIDL 063641,000340: 27,3525 04400 TC FALTON # ERROR -- TURN ON *OPERATOR ERROR* LIGHT 063642,000341: 27,3526 03675 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT 063643,000342: 063644,000343: 27,3527 34371 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY) 063645,000344: 27,3530 05042 TC FINDVAC # GET VAC AREA FOR `CALL INTSTALL' 063646,000345: 27,3531 E3,1706 EBANK= TEPHEM 063647,000346: 27,3531 03534 56103 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR 063648,000347: 27,3533 05112 TC ENDOFJOB # `TEPHEM' UPDATE BY V70) 063649,000348: 063650,000349: 27,3534 06006 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE -- SO 063651,000350: 27,3535 77624 CALL # WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI) 063652,000351: 27,3536 27371 INTSTALL # IS IN PROGRESS -- OR -- GRAB OI AND RETURN 063653,000352: # TO UPWAKE IF OI IS NOT IN PROGRESS. 063654,000353: 063655,000354: 27,3537 77776 UPWAKE EXIT 063656,000355: 063657,000356: 27,3540 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6) 063658,000357: 27,3541 04026 OCT 04026 063659,000358: 063660,000359: 27,3542 05435 TC UPFLAG # SET INTEGRATION RESTART BIT 063661,000360: 27,3543 00236 ADRES REINTFLG 063662,000361: 27,3544 00004 INHINT 063663,000362: 27,3545 UPPART3 EQUALS 063664,000363: 063665,000364: 27,3545 50302 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB 063666,000365: 27,3546 13547 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE 063667,000366: 27,3547 13706 TCF UPEND70 # V70 063668,000367: 27,3550 13615 TCF UPEND71 # V71 063669,000368: 27,3551 13647 TCF UPEND72 # V72 063670,000369: 063671,000370: # ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF. 063672,000371: # Page 1494 063673,000372: 27,3552 00006 TIMEDIDL EXTEND 063674,000373: 27,3553 22330 QXCH UPTEMP # SAVE Q FOR RETURN 063675,000374: 27,3554 34714 CAF ZERO # ZERO AND SAVE TIME2,TIME1 063676,000375: 27,3555 22007 ZL 063677,000376: 27,3556 52025 DXCH TIME2 063678,000377: 27,3557 52327 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW 063679,000378: 063680,000379: 27,3560 34715 CAF UPDTPHAS # SO 063681,000380: 27,3561 54001 TS L # A 063682,000381: 27,3562 40000 COM # QUICK 063683,000382: 27,3563 52765 DXCH -PHASE6 # PHASCHNG 063684,000383: 063685,000384: 27,3564 00004 TIMEDIDR INHINT 063686,000385: 27,3565 34714 CAF ZERO 063687,000386: 27,3566 22007 ZL # PICK UP INCRMENTER (AND ZERO 063688,000387: 27,3567 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND 063689,000388: 27,3570 52315 DXCH UPBUFF +8D # STORE IT 063690,000389: 27,3571 52155 DXCH MPAC # INTO MPAC FOR TPAGREE. 063691,000390: 063692,000391: 27,3572 00006 EXTEND 063693,000392: 27,3573 30327 DCA UPBUFF +18D 063694,000393: 27,3574 20155 DAS MPAC # FORM SUM IN MPAC 063695,000394: 27,3575 00006 EXTEND 063696,000395: 27,3576 13605 BZF DELTAOK # TEST FOR OVERFLOW 063697,000396: 27,3577 34714 CAF ZERO 063698,000397: 27,3600 52327 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK 063699,000398: 27,3601 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR 063700,000399: 063701,000400: 27,3602 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6) 063702,000401: 27,3603 04026 OCT 04026 063703,000402: 063704,000403: 27,3604 00330 TC UPTEMP # GO TO ERROR EXIT 063705,000404: 063706,000405: 27,3605 07226 DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT 063707,000406: 27,3606 52155 DXCH MPAC 063708,000407: 27,3607 20025 DAS TIME2 # INCREMENT TIME2,TIME1 063709,000408: 063710,000409: 27,3610 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6) 063711,000410: 27,3611 04026 OCT 04026 063712,000411: 063713,000412: 27,3612 00004 INHINT 063714,000413: 27,3613 50330 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION) 063715,000414: 27,3614 00001 TC 1 # NORMAL RETURN 063716,000415: 063717,000416: # VERB 71 BRANCH 063718,000417: 063719,000418: 27,3615 30305 UPEND71 CAE UPBUFF +1 # SET EBANK 063720,000419: 27,3616 54003 TS EBANK # AND 063721,000420: 27,3617 74373 MASK LOW8 # CALCULATE 063722,000421: 27,3620 54330 TS UPTEMP # S-REG VALUE OF RECEIVING AREA 063723,000422: # Page 1495 063724,000423: 27,3621 67714 AD NEG3 # IN THE PROCESS OF 063725,000424: 27,3622 60300 AD COMPNUMB # PERFORMING 063726,000425: 27,3623 00006 EXTEND # THIS UPDATE 063727,000426: 27,3624 13632 BZF STORLP71 # WILL WE 063728,000427: 27,3625 74702 MASK BIT9 # OVERFLOW 063729,000428: 27,3626 10000 CCS A # INTO THE NEXT EBANK.... 063730,000429: 27,3627 13743 TCF UPERROUT 063731,000430: 063732,000431: 27,3630 37714 CA NEG3 # NO -- CALCULATE NUMBER OF 063733,000432: 27,3631 60300 AD COMPNUMB # WORDS TO BE STORED MINUS ONE 063734,000433: 27,3632 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE 063735,000434: 27,3633 50000 INDEX A # TAKE NEXT UPDATE WORD FROM 063736,000435: 27,3634 30306 CA UPBUFF +2 # UPBUFF AND 063737,000436: 27,3635 54001 TS L # SAVE IT IN L 063738,000437: 27,3636 30154 CA MPAC # CALCULATE NEXT 063739,000438: 27,3637 60330 AD UPTEMP # RECEIVING ADDRESS 063740,000439: 27,3640 50000 INDEX A 063741,000440: 27,3641 E3,1400 EBANK= 1400 063742,000441: 27,3641 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L 063743,000442: 27,3642 E3,1706 EBANK= TEPHEM 063744,000443: 27,3642 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED 063745,000444: 27,3643 13632 TCF STORLP71 # YES 063746,000445: 27,3644 13674 TCF UPOUT # NO -- THEN EXIT UPDATE PROGRAM 063747,000446: 27,3645 00303 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE) 063748,000447: 27,3646 13674 TCF UPOUT # NO -- EXIT UPDATE (HERE WHEN COMPNUMB = 3) 063749,000448: 063750,000449: # VERB 72 BRANCH 063751,000450: 063752,000451: 27,3647 34712 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS 063753,000452: 27,3650 70300 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ... 063754,000453: 27,3651 10000 CCS A 063755,000454: 27,3652 13654 TCF +2 # YES 063756,000455: 27,3653 13743 TCF UPERROUT # ERROR -- SHOULD BE ODD NO. OF COMPONENTS 063757,000456: 27,3654 44711 CS BIT2 063758,000457: 27,3655 60300 AD COMPNUMB 063759,000458: 27,3656 54154 LDLOOP72 TS MPAC # NO PERFORM THE UPDATE 063760,000459: 27,3657 50000 INDEX A 063761,000460: 27,3660 30305 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD 063762,000461: 27,3661 22000 LXCH A 063763,000462: 27,3662 10154 CCS MPAC # SET POINTER TO ECADR (MUST BE CCS) 063764,000463: 27,3663 54154 TS MPAC 063765,000464: 27,3664 50000 INDEX A 063766,000465: 27,3665 30305 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED 063767,000466: 27,3666 54003 TS EBANK # SET EBANK 063768,000467: 27,3667 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS 063769,000468: 27,3670 50000 INDEX A 063770,000469: 27,3671 E3,1400 EBANK= 1400 063771,000470: 27,3671 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L 063772,000471: 27,3672 E3,1706 EBANK= TEPHEM 063773,000472: # Page 1496 063774,000473: 27,3672 10154 CCS MPAC # ARE WE THORUGH THE V72 UPDATE... 063775,000474: 27,3673 13656 TCF LDLOOP72 # NO 063776,000475: 063777,000476: # NORMAL FINISH OF P27 063778,000477: 063779,000478: 27,3674 UPOUT EQUALS 063780,000479: 27,3674 02662 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION 063781,000480: 27,3675 30301 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE 063782,000481: 27,3676 05246 TC NEWMODEX +3 063783,000482: 27,3677 34714 CAF ZERO 063784,000483: 27,3700 54332 TS DNLSTCOD 063785,000484: 27,3701 03750 TC UPACTOFF # TURN OFF `UPLINK ACTIVITY' LIGHT 063786,000485: 27,3702 00006 EXTEND # KILL GROUP 6 063787,000486: 27,3703 34714 DCA NEG0 063788,000487: 27,3704 52765 DXCH -PHASE6 063789,000488: 063790,000489: 27,3705 05423 TC ENDEXT # EXTENDED VERB EXIT 063791,000490: 063792,000491: # VERB TO BRANCH 063793,000492: 063794,000493: 27,3706 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA 063795,000494: 27,3707 40305 DCS UPBUFF # TIME IN UPBUFF 063796,000495: 27,3710 52315 DXCH UPBUFF +8D 063797,000496: 27,3711 03552 TC TIMEDIDL # DECREMENT AGC CLOCK 063798,000497: 063799,000498: 27,3712 03743 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT 063800,000499: 063801,000500: 27,3713 E3,1706 EBANK= TEPHEM 063802,000501: 27,3713 00006 EXTEND 063803,000502: 27,3714 40305 DCS UPBUFF # COPY DECREMENTERS FOR 063804,000503: 27,3715 52317 DXCH UPBUFF +10D # RESTART PROTECTION 063805,000504: 27,3716 00006 EXTEND 063806,000505: 27,3717 40305 DCS UPBUFF 063807,000506: 27,3720 52321 DXCH UPBUFF +12D 063808,000507: 063809,000508: 27,3721 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6) 063810,000509: 27,3722 04026 OCT 04026 063811,000510: 063812,000511: 27,3723 34714 CAF ZERO 063813,000512: 27,3724 22007 ZL 063814,000513: 27,3725 52317 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME 063815,000514: 27,3726 21571 DAS TETCSM 063816,000515: 063817,000516: 27,3727 34714 CAF ZERO 063818,000517: 27,3730 22007 ZL 063819,000518: 27,3731 52321 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME 063820,000519: 27,3732 21643 DAS TETLEM 063821,000520: # Page 1497 063822,000521: 27,3733 34714 CAF ZERO 063823,000522: 27,3734 22007 ZL 063824,000523: 27,3735 52305 DXCH UPBUFF 063825,000524: 27,3736 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM 063826,000525: 27,3737 27706 ADS TEPHEM 063827,000526: 063828,000527: 27,3740 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6) 063829,000528: 27,3741 04026 OCT 04026 063830,000529: 063831,000530: 27,3742 0304 EBANK= UPBUFF 063832,000531: 063833,000532: 27,3742 03674 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT 063834,000533: 063835,000534: # ERROR SEQUENCE 063836,000535: 063837,000536: 27,3743 04400 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT 063838,000537: 27,3744 13674 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT 063839,000538: 063840,000539: 27,3745 04400 +2 TC FALTON # TURN ON `OPERATOR ERROR' LIGHT 063841,000540: 27,3746 03750 TC UPACTOFF # TURN OFF `UPLINK ACTIVITY' LIGHT 063842,000541: 27,3747 05423 TC ENDEXT # EXTENDED VERB EXIT 063843,000542: # (THE PURPOSE OF UPERROUT +2 EXIT IS 063844,000543: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT 063845,000544: # RESET ANY RESTART GROUPS) 063846,000545: 063847,000546: # `UPACTOFF' IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27). 063848,000547: 063849,000548: 27,3750 44710 UPACTOFF CS BIT3 063850,000549: 27,3751 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT 063851,000550: 27,3752 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11) 063852,000551: 27,3753 00002 TC Q End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc