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