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