Source Code

057274,000001: # Copyright: Public domain. 057275,000002: # Filename: UPDATE_PROGRAM.agc 057276,000003: # Purpose: A section of Luminary 1C, revision 131. 057277,000004: # It is part of the source code for the Lunar Module's (LM) 057278,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14. 057279,000006: # This file is intended to be a faithful transcription, except 057280,000007: # that the code format has been changed to conform to the 057281,000008: # requirements of the yaYUL assembler rather than the 057282,000009: # original YUL assembler. 057283,000010: # Reference: pp. 1383-1393 of 1729.pdf. 057284,000011: # Contact: Ron Burkey <info@sandroid.org>. 057285,000012: # Website: www.ibiblio.org/apollo/index.html 057286,000013: # Mod history: 06/07/03 RSB. Began transcribing. 057287,000014: # 05/14/05 RSB Corrected website reference above. 057288,000015: 057289,000016: # Page 1383 057290,000017: # PROGRAM NAME: P27 057291,000018: # WRITTEN BY: KILROY/ DE WOLF 057292,000019: 057293,000020: # MOD NO: 6 057294,000021: # MOD BY: KILROY 057295,000022: # DATE: 01DEC67 057296,000023: 057297,000024: # LOG SECTION: UPDATE PROGRAM. 057298,000025: 057299,000026: # FUNCT. DESCR.: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA 057300,000027: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK. 057301,000028: # THE P27 PROGRAM WILL ACCEPT UPDATES 057302,000029: # ONLY DURING P00 FOR THE LM, AND ONLY DURINT P00, 057303,000030: # P02, AND FRESH START FOR THE CSM. 057304,000031: 057305,000032: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72, AND 73. 057306,000033: 057307,000034: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE, 057308,000035: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG 057309,000036: 057310,000037: # NORMAL EXIT: TC ENDEXT 057311,000038: 057312,000039: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT 057313,000040: 057314,000041: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ... 057315,000042: # 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE 057316,000043: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)--- 057317,000044: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTROED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINE 057318,000045: # ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS). 057319,000046: # V70,V71,V72, OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER. 057320,000047: # 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)--- 057321,000048: # PROTECTED AGAINST RESTARTS. 057322,000049: 057323,000050: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS. 057324,000051: # UPVERB (1) VERB NUMBER MINUS 70D (E.G., FOR V72, UPVERB = 72D - 70D = 2) 057325,000052: # UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27. 057326,000053: # COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED. 057327,000054: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED. 057328,000055: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE. 057329,000056: 057330,000057: # INPUT: 057331,000058: 057332,000059: # ENTRY DESCRIPTION 057333,000060: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX, 057334,000061: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE 057335,000062: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM). 057336,000063: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28). 057337,000064: # Page 1384 057338,000065: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX, 057339,000066: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA. 057340,000067: # XXXXXE IT IS .GE. 3 .AND. .LE. 200., 057341,000068: # ... AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE 057342,000069: # NEXT BANK. SCALING IS SAME AS INTERNAL REGISTERS. 057343,000070: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE 057344,000071: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA. 057345,000072: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD. 057346,000073: # ... SCALING IS SAME AS INTERNAL REGISTERS. 057347,000074: 057348,000075: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME 057349,000076: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN 057350,000077: # CENTISECONDS SCALED AT (2)28). 057351,000078: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55. 057352,000079: 057353,000080: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES 057354,000081: # COMPLEMENT BIT3 OF FLAGWORD7. 057355,000082: 057356,000083: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES -- 057357,000084: # 1. CSM/LM STATE VECTOR UPDATE 057358,000085: # 2. REFSMMAT UPDATE 057359,000086: 057360,000087: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE --- 057361,000088: 057362,000089: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL) 057363,000090: # ENTRIES: DATA DEFINITION: SCALE FACTORS: 057364,000091: # V71E CONTIGUOUS BLOCK UPDATE VERB 057365,000092: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE 057366,000093: # AAAAE ECADR OF `UPSVFLAG' 057367,000094: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM -- EARTH SPHERE OF INFLUENCE SCALING 057368,000095: # 00002 FOR CSM, 77775 FOR LEM -- LUNAR SPHERE OF INFLUENCE SCALING 057369,000096: # XXXXXEXXXXXE X POSITION 057370,000097: # XXXXXEXXXXXE Y POSITION 057371,000098: # XXXXXEXXXXXE Z POSITION 057372,000099: # XXXXXEXXXXXE X VELOCITY 057373,000100: # XXXXXEXXXXXE Y VELOCITY 057374,000101: # XXXXXEXXXXXE Z VELOCITY 057375,000102: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO 057376,000103: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED. 057377,000104: 057378,000105: # 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL) 057379,000106: # ENTRIES DATA DEFINITITIONS SCALE FACTORS: 057380,000107: # Page 1385 057381,000108: # V71E CONTIGUOUS BLOCK UPDATE VERB 057382,000109: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE 057383,000110: # AAAAE ECADR OF `REFSMMAT' 057384,000111: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1) 057385,000112: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1) 057386,000113: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1) 057387,000114: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1) 057388,000115: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1) 057389,000116: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1) 057390,000117: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1) 057391,000118: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1) 057392,000119: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1) 057393,000120: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED 057394,000121: 057395,000122: 13,3760 40,2000 SBANK= PINSUPER # RSB 2004 057396,000123: 057397,000124: 07,3763 BANK 07 057398,000125: 43,2000 SETLOC EXTVERBS 057399,000126: 43,2000 BANK 057400,000127: 057401,000128: 43,3751 E3,1706 EBANK= TEPHEM 057402,000129: 057403,000130: 43,3751 COUNT* $$/P27 057404,000131: 43,3751 34755 V70UPDAT CAF UP70 # COMES HERE ON V70E 057405,000132: 43,3752 13760 TCF V73UPDAT +1 057406,000133: 057407,000134: 43,3753 34753 V71UPDAT CAF UP71 # COMES HERE ON V71E 057408,000135: 43,3754 13760 TCF V73UPDAT +1 057409,000136: 057410,000137: 43,3755 34752 V72UPDAT CAF UP72 # COMES HERE ON V72E 057411,000138: 43,3756 13760 TCF V73UPDAT +1 057412,000139: 057413,000140: 43,3757 36250 V73UPDAT CAF UP73 # COMES HERE ON V73E 057414,000141: 057415,000142: 43,3760 55165 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27 057416,000143: 057417,000144: 43,3761 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE 057418,000145: # TURN *OPERATOR ERROR* ON AND TERMINATE EJOB 057419,000146: 057420,000147: 43,3762 31010 CA MODREG # CHECK IF UPDATE ALLOWED 057421,000148: 43,3763 00006 EXTEND # FIRST CHECK FOR MODREG = +0, -0 057422,000149: 43,3764 13767 BZF +3 # (+0 = P00, -0 = FRESHSTART) 057423,000150: 43,3765 04635 UPERROR TC POSTJUMP # TURN ON `OPERATOR ERROR' LIGHT 057424,000151: 43,3766 11740 CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT 057425,000152: 057426,000153: 43,3767 43,3765 CKMDMORE = UPERROR 057427,000154: 43,3767 55170 +3 TS UPOLDMOD # SET UPOLDMOD TO ZERO. 057428,000155: 43,3770 31165 CAE UPVERBSV # SET UPVERB TO INDICDATE TO P27 057429,000156: # Page 1386 057430,000157: 43,3771 55171 TS UPVERB # WHICH EXTENDED VERB CALLED IT. 057431,000158: 057432,000159: 43,3772 34753 CAF ONE 057433,000160: 43,3773 55172 TS UPCOUNT # INITIALIZE UPCOUNT TO 1 057434,000161: 057435,000162: 43,3774 04635 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND 057436,000163: 43,3775 11357 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK. 057437,000164: 057438,000165: 43,3776 4755 UP70 EQUALS ZERO 057439,000166: 43,3776 4753 UP71 EQUALS ONE 057440,000167: 43,3776 4752 UP72 EQUALS TWO 057441,000168: 43,3776 6250 UP73 EQUALS THREE 057442,000169: 057443,000170: 04,3357 BANK 04 057444,000171: 04,2000 SETLOC UPDATE2 057445,000172: 04,2000 BANK 057446,000173: 057447,000174: 04,3357 COUNT* $$/P27 057448,000175: 057449,000176: 04,3357 UPPART2 EQUALS # UPDATE PROGRAM -- PART 2 057450,000177: 057451,000178: 04,3357 05353 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE 057452,000179: 04,3360 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS. 057453,000180: 04,3361 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO 057454,000181: 04,3362 1173 EBANK= UPBUFF 057455,000182: 04,3362 03670 10102 2CADR UPOUT +1 057456,000183: 057457,000184: 04,3364 34753 CAF ONE 057458,000185: 04,3365 54333 TS DNLSTCOD # DOWNLIST 057459,000186: 057460,000187: 04,3366 05311 TC NEWMODEX # SET MAJOR MODE = 27 057461,000188: 04,3367 00033 DEC 27 B-14 057462,000189: 057463,000190: 04,3370 51171 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE 057464,000191: 04,3371 13372 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER 057465,000192: 04,3372 13375 TCF +3 # V70 FIXED (OF COMPONENTS) 057466,000193: 04,3373 13400 TCF OHWELL1 # V71 VARIABLE -- GO GET NO. OF COMPONENTS 057467,000194: 04,3374 13400 TCF OHWELL1 # V72 VARIABLE -- GO GET NO. OF COMPONENTS 057468,000195: 04,3375 34752 CA TWO # V73 (AND V70) FIXED 057469,000196: 04,3376 55167 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2. 057470,000197: 04,3377 13423 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS 057471,000198: 057472,000199: 04,3400 33473 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER * 057473,000200: 04,3401 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II) * 057474,000201: 04,3402 33474 +2 CAF UPLOADNV # (CKV432 RETURNS HERE IF V32 ENCOUNTERED) 057475,000202: 04,3403 04616 TC BANKCALL # DISPLAY A FLASHING V21N01 057476,000203: 04,3404 20334 CADR GOXDSPF # TO REQUEST II. 057477,000204: # Page 1387 057478,000205: 04,3405 13670 TCF UPOUT4 # V32 TERMINATE UPDATE (P27) RETURN 057479,000206: 04,3406 13402 TCF OHWELL1 +2 057480,000207: 04,3407 03464 TC CK4V32 # DATA OR V32 RETURN 057481,000208: 04,3410 44752 CS BIT2 057482,000209: 04,3411 61173 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER) 057483,000210: 04,3412 00006 EXTEND # .GE. 3 AND .LE. 20D. 057484,000211: 04,3413 63402 BZMF OHWELL1 +2 057485,000212: 04,3414 41173 CS UPBUFF 057486,000213: 04,3415 64362 AD UP21 057487,000214: 04,3416 00006 EXTEND 057488,000215: 04,3417 63402 BZMF OHWELL1 +2 057489,000216: 04,3420 31173 CAE UPBUFF 057490,000217: 04,3421 55167 TS COMPNUMB # SAVE II IN COMPNUMB 057491,000218: 057492,000219: # UPBUFF LOADING SEQUENCE 057493,000220: 057494,000221: 04,3422 25172 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED. 057495,000222: 04,3423 33640 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION (ECADR) IN UPBUFF 057496,000223: 04,3424 61172 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED 057497,000224: 04,3425 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3. 057498,000225: 04,3426 33474 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED) 057499,000226: 04,3427 04616 TC BANKCALL # DISPLAY A FLASHING V21N01 057500,000227: 04,3430 20334 CADR GOXDSPF # TO REQUEST DATA. 057501,000228: 04,3431 13670 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN. 057502,000229: 04,3432 13426 TCF OHWELL2 +3 # V33 PROCEED RETURN 057503,000230: 04,3433 03464 TC CK4V32 # DATA OR V32 RETURN 057504,000231: 04,3434 41172 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL 057505,000232: 04,3435 61167 AD COMPNUMB # THE DATA WE EXPECTED. 057506,000233: 04,3436 00006 EXTEND 057507,000234: 04,3437 63441 BZMF UPVERIFY # YES -- GO TO VERIFICATION SEQUENCE 057508,000235: 04,3440 13422 TCF OHWELL2 -1 # NO -- REQUEST ADDITIONAL DATA. 057509,000236: 057510,000237: # VERIFY SEQUENCE 057511,000238: 057512,000239: 04,3441 33472 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX 057513,000240: 04,3442 54156 TS MPAC +2 # IS TO BE STORED INTO R3. 057514,000241: 04,3443 33475 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED) 057515,000242: 04,3444 04616 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEXT 057516,000243: 04,3445 20334 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION. 057517,000244: 04,3446 13670 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN 057518,000245: 04,3447 13476 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT. 057519,000246: 04,3450 03464 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN 057520,000247: 04,3451 31166 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SEND 057521,000248: 04,3452 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER? 057522,000249: 04,3453 63441 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO 057523,000250: 04,3454 41166 CS UPTEMP 057524,000251: 04,3455 61167 AD COMPNUMB 057525,000252: 04,3456 64753 AD BIT1 057526,000253: # Page 1388 057527,000254: 04,3457 00006 EXTEND 057528,000255: 04,3460 63441 BZMF UPVERIFY # NO 057529,000256: 04,3461 33640 CAF ADUPBFM1 # YES -- BASED ON THE COMPONENT NO. INDEX 057530,000257: 04,3462 61166 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN 057531,000258: 04,3463 13425 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANG. 057532,000259: 057533,000260: 04,3464 04,3670 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TC TERMINATE UPDATE. 057534,000261: 057535,000262: # CHECK FOR VERB 32 SEQUENCE 057536,000263: 057537,000264: 04,3464 40154 CK4V32 CS MPAC # ON DATA RETURN FROM `GOXDSPF' 057538,000265: 04,3465 74746 MASK BIT6 # ON DATA RETURN FROM "GOXDSP" & THE CON- 057539,000266: 04,3466 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32. 057540,000267: 04,3467 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED. 057541,000268: 04,3470 50002 INDEX Q 057542,000269: 04,3471 77771 TC 0 -6 # V32 ENCOUNTERED -- GO BACK AND GET DATA 057543,000270: 057544,000271: 04,3472 01166 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS 057545,000272: 04,3473 01173 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER 057546,000273: 04,3474 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01 057547,000274: 04,3475 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02 057548,000275: 04,3476 4362 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1 057549,000276: 04,3476 4756 UPDTPHAS EQUALS FIVE 057550,000277: 057551,000278: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE 057552,000279: 057553,000280: 04,3476 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA. 057554,000281: 057555,000282: 04,3476 00004 INHINT 057556,000283: 057557,000284: 04,3477 30103 CAE FLAGWRD7 # INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO 057558,000285: 04,3500 56001 XCH L # INDICATE TO THE GROUND (VIA DOWNLINK) 057559,000286: 04,3501 34751 CAF VERIFBIT # THAT THE V33 (WHICH THE GROUND SENT TO 057560,000287: 04,3502 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY 057561,000288: 04,3503 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM 057562,000289: 04,3504 54103 TS FLAGWRD7 057563,000290: 057564,000291: 04,3505 05353 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE 057565,000292: 04,3506 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS. 057566,000293: 04,3507 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT) 057567,000294: 057568,000295: 04,3510 44752 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED. 057569,000296: 04,3511 61171 AD UPVERB # THAT IS, IF IT'S A V70 - V72. 057570,000297: 04,3512 00006 EXTEND # GO TO UPEND73 IF IT'S A V73. 057571,000298: 04,3513 63522 BZMF UPFNDVAC 057572,000299: 057573,000300: # VERB 73 BRANCH 057574,000301: 057575,000302: 04,3514 00006 UPEND73 EXTEND # V73 -- PERFORM DP OCTAL AGC CLOCK INCREMENT 057576,000303: # Page 1389 057577,000304: 04,3515 31174 DCA UPBUFF 057578,000305: 04,3516 53204 DXCH UPBUFF +8D 057579,000306: 04,3517 03545 TC TIMEDIDL 057580,000307: 04,3520 04364 TC FALTON # ERROR -- TURN ON *OPERATOR ERROR* LIGHT 057581,000308: 04,3521 03670 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT 057582,000309: 057583,000310: 04,3522 34355 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY) 057584,000311: 04,3523 05105 TC FINDVAC # GET VAC AREA FOR `CALL INTSTALL' 057585,000312: 04,3524 E3,1706 EBANK= TEPHEM 057586,000313: 04,3524 03527 10103 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR 057587,000314: 04,3526 05155 TC ENDOFJOB # `TEPHEM' UPDATE BY V70) 057588,000315: 057589,000316: 04,3527 06042 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE -- SO 057590,000317: 04,3530 77624 CALL # WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI) 057591,000318: 04,3531 27410 INTSTALL # IS IN PROGRESS -- OR -- GRAB OI AND RETURN 057592,000319: # TO UPWAKE IF OI IS NOT IN PROGRESS. 057593,000320: 057594,000321: 04,3532 77776 UPWAKE EXIT 057595,000322: 057596,000323: 04,3533 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6) 057597,000324: 04,3534 04026 OCT 04026 057598,000325: 057599,000326: 04,3535 05504 TC UPFLAG # SET INTEGRATION RESTART BIT 057600,000327: 04,3536 00236 ADRES REINTFLG 057601,000328: 04,3537 00004 INHINT 057602,000329: 04,3540 UPPART3 EQUALS 057603,000330: 057604,000331: 04,3540 51171 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB 057605,000332: 04,3541 13542 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE 057606,000333: 04,3542 13701 TCF UPEND70 # V70 057607,000334: 04,3543 13610 TCF UPEND71 # V71 057608,000335: 04,3544 13642 TCF UPEND72 # V72 057609,000336: 057610,000337: # ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF. 057611,000338: 057612,000339: 04,3545 00006 TIMEDIDL EXTEND 057613,000340: 04,3546 23166 QXCH UPTEMP # SAVE Q FOR RETURN 057614,000341: 04,3547 34755 CAF ZERO # ZERO AND SAVE TIME2,TIME1 057615,000342: 04,3550 22007 ZL 057616,000343: 04,3551 52025 DXCH TIME2 057617,000344: 04,3552 53216 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW 057618,000345: 057619,000346: 04,3553 34756 CAF UPDTPHAS # SO 057620,000347: 04,3554 54001 TS L # A 057621,000348: 04,3555 40000 COM # QUICK 057622,000349: 04,3556 52764 DXCH -PHASE6 # PHASCHNG 057623,000350: 057624,000351: 04,3557 00004 TIMEDIDR INHINT 057625,000352: # Page 1390 057626,000353: 04,3560 34755 CAF ZERO 057627,000354: 04,3561 22007 ZL # PICK UP INCRMENTER (AND ZERO 057628,000355: 04,3562 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND 057629,000356: 04,3563 53204 DXCH UPBUFF +8D # STORE IT 057630,000357: 04,3564 52155 DXCH MPAC # INTO MPAC FOR TPAGREE. 057631,000358: 057632,000359: 04,3565 00006 EXTEND 057633,000360: 04,3566 31216 DCA UPBUFF +18D 057634,000361: 04,3567 20155 DAS MPAC # FORM SUM IN MPAC 057635,000362: 04,3570 00006 EXTEND 057636,000363: 04,3571 13600 BZF DELTAOK # TEST FOR OVERFLOW 057637,000364: 04,3572 34755 CAF ZERO 057638,000365: 04,3573 53216 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK 057639,000366: 04,3574 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR 057640,000367: 057641,000368: 04,3575 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6) 057642,000369: 04,3576 04026 OCT 04026 057643,000370: 057644,000371: 04,3577 01166 TC UPTEMP # GO TO ERROR EXIT 057645,000372: 057646,000373: 04,3600 07262 DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT 057647,000374: 04,3601 52155 DXCH MPAC 057648,000375: 04,3602 20025 DAS TIME2 # INCREMENT TIME2,TIME1 057649,000376: 057650,000377: 04,3603 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6) 057651,000378: 04,3604 04026 OCT 04026 057652,000379: 057653,000380: 04,3605 00004 INHINT 057654,000381: 04,3606 51166 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION) 057655,000382: 04,3607 00001 TC 1 # NORMAL RETURN 057656,000383: 057657,000384: # VERB 71 BRANCH 057658,000385: 057659,000386: 04,3610 31174 UPEND71 CAE UPBUFF +1 # SET EBANK 057660,000387: 04,3611 54003 TS EBANK # AND 057661,000388: 04,3612 74357 MASK LOW8 # CALCULATE 057662,000389: 04,3613 55166 TS UPTEMP # S-REG VALUE OF RECEIVING AREA 057663,000390: 057664,000391: 04,3614 67750 AD NEG3 # IN THE PROCESS OF 057665,000392: 04,3615 61167 AD COMPNUMB # PERFORMING 057666,000393: 04,3616 00006 EXTEND # THIS UPDATE 057667,000394: 04,3617 13625 BZF STORLP71 # WILL WE 057668,000395: 04,3620 74743 MASK BIT9 # OVERFLOW 057669,000396: 04,3621 10000 CCS A # INTO THE NEXT EBANK.... 057670,000397: 04,3622 13736 TCF UPERROUT 057671,000398: 057672,000399: 04,3623 37750 CA NEG3 # NO -- CALCULATE NUMBER OF 057673,000400: 04,3624 61167 AD COMPNUMB # WORDS TO BE STORED MINUS ONE 057674,000401: 04,3625 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE 057675,000402: 04,3626 50000 INDEX A # TAKE NEXT UPDATE WORD FROM 057676,000403: 04,3627 31175 CA UPBUFF +2 # UPBUFF AND 057677,000404: # Page 1391 057678,000405: 04,3630 54001 TS L # SAVE IT IN L 057679,000406: 04,3631 30154 CA MPAC # CALCULATE NEXT 057680,000407: 04,3632 61166 AD UPTEMP # RECEIVING ADDRESS 057681,000408: 04,3633 50000 INDEX A 057682,000409: 04,3634 E3,1400 EBANK= 1400 057683,000410: 04,3634 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L 057684,000411: 04,3635 E3,1706 EBANK= TEPHEM 057685,000412: 04,3635 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED 057686,000413: 04,3636 13625 TCF STORLP71 # YES 057687,000414: 04,3637 13667 TCF UPOUT # NO -- THEN EXIT UPDATE PROGRAM 057688,000415: 04,3640 01172 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE) 057689,000416: 04,3641 13667 TCF UPOUT # NO -- EXIT UPDATE (HERE WHEN COMPNUMB = 3) 057690,000417: 057691,000418: # VERB 72 BRANCH 057692,000419: 057693,000420: 04,3642 34753 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS 057694,000421: 04,3643 71167 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ... 057695,000422: 04,3644 10000 CCS A 057696,000423: 04,3645 13647 TCF +2 # YES 057697,000424: 04,3646 13736 TCF UPERROUT # ERROR -- SHOULD BE ODD NO. OF COMPONENTS 057698,000425: 04,3647 44752 CS BIT2 057699,000426: 04,3650 61167 AD COMPNUMB 057700,000427: 04,3651 54154 LDLOOP72 TS MPAC # NO PERFORM THE UPDATE 057701,000428: 04,3652 50000 INDEX A 057702,000429: 04,3653 31174 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD 057703,000430: 04,3654 22000 LXCH A 057704,000431: 04,3655 10154 CCS MPAC # SET POINTER TO ECADR (MUST BE CCS) 057705,000432: 04,3656 54154 TS MPAC 057706,000433: 04,3657 50000 INDEX A 057707,000434: 04,3660 31174 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED 057708,000435: 04,3661 54003 TS EBANK # SET EBANK 057709,000436: 04,3662 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS 057710,000437: 04,3663 50000 INDEX A 057711,000438: 04,3664 E3,1400 EBANK= 1400 057712,000439: 04,3664 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L 057713,000440: 04,3665 E3,1706 EBANK= TEPHEM 057714,000441: 04,3665 10154 CCS MPAC # ARE WE THORUGH THE V72 UPDATE... 057715,000442: 04,3666 13651 TCF LDLOOP72 # NO 057716,000443: 057717,000444: # NORMAL FINISH OF P27 057718,000445: 057719,000446: 04,3667 UPOUT EQUALS 057720,000447: 04,3667 03131 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION 057721,000448: 04,3670 31170 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE 057722,000449: 04,3671 05314 TC NEWMODEX +3 057723,000450: 04,3672 34755 CAF ZERO 057724,000451: 04,3673 54333 TS DNLSTCOD 057725,000452: 04,3674 03743 TC UPACTOFF # TURN OFF `UPLINK ACTIVITY' LIGHT 057726,000453: # Page 1392 057727,000454: 04,3675 00006 EXTEND # KILL GROUP 6 057728,000455: 04,3676 34755 DCA NEG0 057729,000456: 04,3677 52764 DXCH -PHASE6 057730,000457: 057731,000458: 04,3700 05472 TC ENDEXT # EXTENDED VERB EXIT 057732,000459: 057733,000460: # VERB TO BRANCH 057734,000461: 057735,000462: 04,3701 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA 057736,000463: 04,3702 41174 DCS UPBUFF # TIME IN UPBUFF 057737,000464: 04,3703 53204 DXCH UPBUFF +8D 057738,000465: 04,3704 03545 TC TIMEDIDL # DECREMENT AGC CLOCK 057739,000466: 057740,000467: 04,3705 03736 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT 057741,000468: 057742,000469: 04,3706 E3,1706 EBANK= TEPHEM 057743,000470: 04,3706 00006 EXTEND 057744,000471: 04,3707 41174 DCS UPBUFF # COPY DECREMENTERS FOR 057745,000472: 04,3710 53206 DXCH UPBUFF +10D # RESTART PROTECTION 057746,000473: 04,3711 00006 EXTEND 057747,000474: 04,3712 41174 DCS UPBUFF 057748,000475: 04,3713 53210 DXCH UPBUFF +12D 057749,000476: 057750,000477: 04,3714 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6) 057751,000478: 04,3715 04026 OCT 04026 057752,000479: 057753,000480: 04,3716 34755 CAF ZERO 057754,000481: 04,3717 22007 ZL 057755,000482: 04,3720 53206 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME 057756,000483: 04,3721 21571 DAS TETCSM 057757,000484: 057758,000485: 04,3722 34755 CAF ZERO 057759,000486: 04,3723 22007 ZL 057760,000487: 04,3724 53210 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME 057761,000488: 04,3725 21643 DAS TETLEM 057762,000489: 057763,000490: 04,3726 34755 CAF ZERO 057764,000491: 04,3727 22007 ZL 057765,000492: 04,3730 53174 DXCH UPBUFF 057766,000493: 04,3731 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM 057767,000494: 04,3732 27706 ADS TEPHEM 057768,000495: 057769,000496: 04,3733 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6) 057770,000497: 04,3734 04026 OCT 04026 057771,000498: 057772,000499: 04,3735 1173 EBANK= UPBUFF 057773,000500: 057774,000501: 04,3735 03667 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT 057775,000502: 057776,000503: # Page 1393 057777,000504: # ERROR SEQUENCE 057778,000505: 057779,000506: 04,3736 04364 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT 057780,000507: 04,3737 13667 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT 057781,000508: 057782,000509: 04,3740 04364 +2 TC FALTON # TURN ON `OPERATOR ERROR' LIGHT 057783,000510: 04,3741 03743 TC UPACTOFF # TURN OFF `UPLINK ACTIVITY' LIGHT 057784,000511: 04,3742 05472 TC ENDEXT # EXTENDED VERB EXIT 057785,000512: # (THE PURPOS OF UPERROUT +2 EXIT IS 057786,000513: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT 057787,000514: # RESET ANY RESTART GROUPS) 057788,000515: 057789,000516: # `UPACTOFF' IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27). 057790,000517: 057791,000518: 04,3743 44751 UPACTOFF CS BIT3 057792,000519: 04,3744 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT 057793,000520: 04,3745 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11) 057794,000521: 04,3746 00002 TC Q 057795,000522: End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc