Source Code
058980,000001: # Copyright: Public domain.
058981,000002: # Filename: UPDATE_PROGRAM.agc
058982,000003: # Purpose: Part of the source code for Luminary 1A build 099.
058983,000004: # It is part of the source code for the Lunar Module's (LM)
058984,000005: # Apollo Guidance Computer (AGC), for Apollo 11.
058985,000006: # Assembler: yaYUL
058986,000007: # Contact: Ron Burkey <info@sandroid.org>.
058987,000008: # Website: www.ibiblio.org/apollo.
058988,000009: # Pages: 1386-1396
058989,000010: # Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
058990,000011: # from the Luminary131/ file of the same
058991,000012: # name, using Luminary099 page images.
058992,000013: # 2009-06-07 RSB Added an SBANK= to account for incompatibilities
058993,000014: # between YUL and yaYUL.
058994,000015: # 2011-01-06 JL Fixed pseudo-label indentation.
058995,000016: # 2011-05-07 JL Flag SBANK= workaround.
058996,000017:
058997,000018: # This source code has been transcribed or otherwise adapted from
058998,000019: # digitized images of a hardcopy from the MIT Museum. The digitization
058999,000020: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of
059000,000021: # the Museum. Many thanks to both. The images (with suitable reduction
059001,000022: # in storage size and consequent reduction in image quality as well) are
059002,000023: # available online at www.ibiblio.org/apollo. If for some reason you
059003,000024: # find that the images are illegible, contact me at info@sandroid.org
059004,000025: # about getting access to the (much) higher-quality images which Paul
059005,000026: # actually created.
059006,000027:
059007,000028: # Notations on the hardcopy document read, in part:
059008,000029:
059009,000030: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61
059010,000031: # 16:27 JULY 14, 1969
059011,000032:
059012,000033: # Page 1386
059013,000034: # PROGRAM NAME: P27
059014,000035: # WRITTEN BY: KILROY/ DE WOLF
059015,000036:
059016,000037: # MOD NO: 6
059017,000038: # MOD BY: KILROY
059018,000039: # DATE: 01DEC67
059019,000040:
059020,000041: # LOG SECTION: UPDATE PROGRAM.
059021,000042:
059022,000043: # FUNCT. DESCR.: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
059023,000044: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
059024,000045: # THE P27 PROGRAM WILL ACCEPT UPDATES
059025,000046: # ONLY DURING P00 FOR THE LM, AND ONLY DURINT P00,
059026,000047: # P02, AND FRESH START FOR THE CSM
059027,000048:
059028,000049: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72, AND 73.
059029,000050:
059030,000051: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
059031,000052: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
059032,000053:
059033,000054: # NORMAL EXIT: TC ENDEXT
059034,000055:
059035,000056: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
059036,000057:
059037,000058: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ...
059038,000059: # 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
059039,000060: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
059040,000061: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTROED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK
059041,000062: # ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
059042,000063: # V70,V71,V72, OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
059043,000064: # 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
059044,000065: # PROTECTED AGAINST RESTARTS.
059045,000066:
059046,000067: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
059047,000068: # UPVERB (1) VERB NUMBER MINUS 70D (E.G., FOR V72, UPVERB = 72D - 70D = 2)
059048,000069: # UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27.
059049,000070: # COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
059050,000071: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
059051,000072: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE
059052,000073:
059053,000074: # INPUT:
059054,000075:
059055,000076: # ENTRY DESCRIPTION
059056,000077: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
059057,000078: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
059058,000079: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
059059,000080: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
059060,000081: # Page 1387
059061,000082: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX,
059062,000083: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
059063,000084: # XXXXXE IT IS .GE. 3 .AND. .LE. 200.,
059064,000085: # ... AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
059065,000086: # NEXT BANK.
059066,000087: # SCALING IS SAME AS INTERNAL REGISTERS.
059067,000088: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE
059068,000089: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
059069,000090: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
059070,000091: # ... SCALING IS SAME AS INTERNAL REGISTERS.
059071,000092:
059072,000093: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
059073,000094: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
059074,000095: # CENTISECONDS SCALED AT (2)28).
059075,000096: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
059076,000097:
059077,000098: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
059078,000099: # COMPLEMENT BIT3 OF FLAGWORD7.
059079,000100:
059080,000101: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --
059081,000102: # 1. CSM/LM STATE VECTOR UPDATE
059082,000103: # 2. REFSMMAT UPDATE
059083,000104:
059084,000105: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE ---
059085,000106:
059086,000107: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
059087,000108: # ENTRIES: DATA DEFINITION: SCALE FACTORS:
059088,000109: # V71E CONTIGUOUS BLOCK UPDATE VERB
059089,000110: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
059090,000111: # AAAAE ECADR OF `UPSVFLAG'
059091,000112: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM -- EARTH SPHERE OF INFLUENCE SCALING
059092,000113: # 00002 FOR CSM, 77775 FOR LEM -- LUNAR SPHERE OF INFLUENCE SCALING
059093,000114: # XXXXXEXXXXXE X POSITION
059094,000115: # XXXXXEXXXXXE Y POSITION
059095,000116: # XXXXXEXXXXXE Z POSITION
059096,000117: # XXXXXEXXXXXE X VELOCITY
059097,000118: # XXXXXEXXXXXE Y VELOCITY
059098,000119: # XXXXXEXXXXXE Z VELOCITY
059099,000120: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
059100,000121: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
059101,000122:
059102,000123: # 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL)
059103,000124: # ENTRIES: DATA DEFINITITIONS: SCALE FACTORS:
059104,000125: # Page 1388
059105,000126: # V71E CONTIGUOUS BLOCK UPDATE VERB
059106,000127: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
059107,000128: # AAAAE ECADR OF `REFSMMAT'
059108,000129: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
059109,000130: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
059110,000131: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
059111,000132: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
059112,000133: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
059113,000134: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
059114,000135: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
059115,000136: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
059116,000137: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
059117,000138: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED
059118,000139:
059119,000140:
059120,000141:
059121,000142: 07,3773 BANK 07
059122,000143: 43,2000 SETLOC EXTVERBS
059123,000144: 43,2000 BANK
059124,000145:
059125,000146: 43,3724 E3,1706 EBANK= TEPHEM
059126,000147:
059127,000148: 43,3724 COUNT* $$/P27
059128,000149: 43,3724 34755 V70UPDAT CAF UP70 # COMES HERE ON V70E
059129,000150: 43,3725 13733 TCF V73UPDAT +1
059130,000151:
059131,000152: 43,3726 34753 V71UPDAT CAF UP71 # COMES HERE ON V71E
059132,000153: 43,3727 13733 TCF V73UPDAT +1
059133,000154:
059134,000155: 43,3730 34752 V72UPDAT CAF UP72 # COMES HERE ON V72E
059135,000156: 43,3731 13733 TCF V73UPDAT +1
059136,000157:
059137,000158: 43,3732 36245 V73UPDAT CAF UP73 # COMES HERE ON V73E
059138,000159:
059139,000160: 43,3733 55166 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
059140,000161:
059141,000162: 43,3734 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
059142,000163: # TURN*OPERATOR ERROR* ON AND TERMINATEJOB
059143,000164:
059144,000165: 43,3735 31011 CA MODREG # CHECK IF UPDATE ALLOWED
059145,000166: 43,3736 00006 EXTEND # FIRST CHECK FOR MODREG = +0, -0
059146,000167: 43,3737 13742 BZF +3 # (+0 = P00, -0 = FRESHSTART)
059147,000168: 43,3740 04635 UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT
059148,000169: 43,3741 11762 CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT
059149,000170:
059150,000171: 43,3742 31011 CAE MODREG # UPDATE ALLOWED.
059151,000172: 43,3743 43,3740 CKMDMORE = UPERROR
059152,000173: 43,3743 55171 TS UPOLDMOD # SAVE CURRENT MAJOR MODE
059153,000174: # Page 1389
059154,000175: 43,3744 31166 CAE UPVERBSV # SET UPVERB TO INDICDATE TO P27
059155,000176:
059156,000177: 43,3745 55172 TS UPVERB # WHICH EXTENDED VERB CALLED IT.
059157,000178:
059158,000179: 43,3746 34753 CAF ONE
059159,000180: 43,3747 55173 TS UPCOUNT # INITIALIZE UPCOUNT TO 1
059160,000181:
059161,000182: 43,3750 04635 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
059162,000183: 43,3751 11401 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
059163,000184:
059164,000185: 43,3752 4755 UP70 EQUALS ZERO
059165,000186: 43,3752 4753 UP71 EQUALS ONE
059166,000187: 43,3752 4752 UP72 EQUALS TWO
059167,000188: 43,3752 6245 UP73 EQUALS THREE
059168,000189:
059169,000190: 04,3401 BANK 04
059170,000191: 04,2000 SETLOC UPDATE2
059171,000192: 04,2000 BANK
059172,000193:
059173,000194: 04,3401 COUNT* $$/P27
059174,000195:
059175,000196: 04,3401 UPPART2 EQUALS # UPDATE PROGRAM -- PART 2
059176,000197:
059177,000198: 04,3401 05353 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
059178,000199: 04,3402 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
059179,000200: 04,3403 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO
![]() |
[WORKAROUND] RSB 2009 |
059181,000202: 04,3404 40,2000 SBANK= PINSUPER
![]() |
[WORKAROUND] |
059183,000204: 04,3404 1174 EBANK= UPBUFF
059184,000205: 04,3404 03712 10102 2CADR UPOUT +1
059185,000206:
059186,000207: 04,3406 34753 CAF ONE
059187,000208: 04,3407 54332 TS DNLSTCOD # DOWNLIST
059188,000209:
059189,000210: 04,3410 05311 TC NEWMODEX # SET MAJOR MODE = 27
059190,000211: 04,3411 00033 DEC 27 B-14
059191,000212:
059192,000213: 04,3412 51172 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
059193,000214: 04,3413 13414 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
059194,000215: 04,3414 13417 TCF +3 # V70 FIXED (OF COMPONENTS)
059195,000216: 04,3415 13422 TCF OHWELL1 # V71 VARIABLE -- GO GET NO. OF COMPONENTS
059196,000217: 04,3416 13422 TCF OHWELL1 # V72 VARIABLE -- GO GET NO. OF COMPONENTS
059197,000218: 04,3417 34752 CA TWO # V73 (AND V70) FIXED
059198,000219: 04,3420 55170 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
059199,000220: 04,3421 13445 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
059200,000221:
059201,000222: 04,3422 33515 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
059202,000223: 04,3423 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II).*
059203,000224: 04,3424 33516 +2 CAF UPLOADNV # (CKV432 RETURNS HERE IF V32 ENCOUNTERED)
059204,000225: 04,3425 04616 TC BANKCALL # DISPLAY A FLASHING V21N01
059205,000226: # Page 1390
059206,000227: 04,3426 20334 CADR GOXDSPF # TO REQUEST II.
059207,000228:
059208,000229: 04,3427 13712 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
059209,000230: 04,3430 13424 TCF OHWELL1 +2
059210,000231: 04,3431 03506 TC CK4V32 # DATA OR V32 RETURN
059211,000232: 04,3432 44752 CS BIT2
059212,000233: 04,3433 61174 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
059213,000234: 04,3434 00006 EXTEND # .GE. 3 AND .LE. 20D.
059214,000235: 04,3435 63424 BZMF OHWELL1 +2
059215,000236: 04,3436 41174 CS UPBUFF
059216,000237: 04,3437 64362 AD UP21
059217,000238: 04,3440 00006 EXTEND
059218,000239: 04,3441 63424 BZMF OHWELL1 +2
059219,000240: 04,3442 31174 CAE UPBUFF
059220,000241: 04,3443 55170 TS COMPNUMB # SAVE II IN COMPNUMB
059221,000242:
059222,000243: # UPBUFF LOADING SEQUENCE
059223,000244:
059224,000245: 04,3444 25173 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
059225,000246: 04,3445 33662 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION (ECADR) IN UPBUFF
059226,000247: 04,3446 61173 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED
059227,000248: 04,3447 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3.
059228,000249: 04,3450 33516 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
059229,000250: 04,3451 04616 TC BANKCALL # DISPLAY A FLASHING V21N01
059230,000251: 04,3452 20334 CADR GOXDSPF # TO REQUEST DATA.
059231,000252: 04,3453 13712 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
059232,000253: 04,3454 13450 TCF OHWELL2 +3 # V33 PROCEED RETURN
059233,000254: 04,3455 03506 TC CK4V32 # DATA OR V32 RETURN
059234,000255: 04,3456 41173 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
059235,000256: 04,3457 61170 AD COMPNUMB # THE DATA WE EXPECTED.
059236,000257: 04,3460 00006 EXTEND
059237,000258: 04,3461 63463 BZMF UPVERIFY # YES -- GO TO VERIFICATION SEQUENCE
059238,000259: 04,3462 13444 TCF OHWELL2 -1 # NO -- REQUEST ADDITIONAL DATA.
059239,000260:
059240,000261: # VERIFY SEQUENCE
059241,000262:
059242,000263: 04,3463 33514 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
059243,000264: 04,3464 54156 TS MPAC +2 # IS TO BE STORED INTO R3.
059244,000265: 04,3465 33517 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
059245,000266: 04,3466 04616 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEST
059246,000267: 04,3467 20334 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
059247,000268: 04,3470 13712 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
059248,000269: 04,3471 13520 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
059249,000270: 04,3472 03506 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
059250,000271: 04,3473 31167 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SENT
059251,000272: 04,3474 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
059252,000273: 04,3475 63463 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
059253,000274: 04,3476 41167 CS UPTEMP
059254,000275: 04,3477 61170 AD COMPNUMB
059255,000276: # Page 1391
059256,000277: 04,3500 64753 AD BIT1
059257,000278: 04,3501 00006 EXTEND
059258,000279: 04,3502 63463 BZMF UPVERIFY # NO
059259,000280: 04,3503 33662 CAF ADUPBFM1 # YES -- BASED ON THE COMPONENT NO. INDEX
059260,000281: 04,3504 61167 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
059261,000282: 04,3505 13447 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANGE.
059262,000283:
059263,000284: 04,3506 04,3712 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TO TERMINATE UPDATE
059264,000285:
059265,000286: # CHECK FOR VERB 32 SEQUENCE
059266,000287:
059267,000288: 04,3506 40154 CK4V32 CS MPAC # ON DATA RETURN FROM `GOXDSPF'
059268,000289: 04,3507 74746 MASK BIT6 # ON DATA RETURN FROM "GOXDSP" & THE CON-
059269,000290: 04,3510 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
059270,000291: 04,3511 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
059271,000292: 04,3512 50002 INDEX Q
059272,000293: 04,3513 77771 TC 0 -6 # V32 ENCOUNTERED -- GO BACK AND GET DATA
059273,000294:
059274,000295: 04,3514 01167 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
059275,000296: 04,3515 01174 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
059276,000297: 04,3516 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01
059277,000298: 04,3517 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02
059278,000299: 04,3520 4362 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
059279,000300: 04,3520 4756 UPDTPHAS EQUALS FIVE
059280,000301:
059281,000302: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
059282,000303:
059283,000304: 04,3520 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
059284,000305:
059285,000306: 04,3520 00004 INHINT
059286,000307:
059287,000308: 04,3521 30103 CAE FLAGWRD7 # INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO
059288,000309: 04,3522 56001 XCH L # INDICATE TO THE GROUND (VIA DOWNLINK)
059289,000310: 04,3523 34751 CAF VERIFBIT # THAT THE V33 (WHICH THE GROUND SENT TO
059290,000311: 04,3524 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
059291,000312: 04,3525 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
059292,000313: 04,3526 54103 TS FLAGWRD7
059293,000314:
059294,000315: 04,3527 05353 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
059295,000316: 04,3530 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS.
059296,000317: 04,3531 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT)
059297,000318:
059298,000319: 04,3532 44752 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED.
059299,000320: 04,3533 61172 AD UPVERB # THAT IS, IF IT'S A V70 - V72.
059300,000321: 04,3534 00006 EXTEND # GO TO UPEND73 IF IT'S A V73.
059301,000322: 04,3535 63544 BZMF UPFNDVAC
059302,000323:
059303,000324: # VERB 73 BRANCH
059304,000325: # Page 1392
059305,000326: 04,3536 00006 UPEND73 EXTEND # V73 -- PERFORM DP OCTAL AGC CLOCK INCREMENT
059306,000327:
059307,000328: 04,3537 31175 DCA UPBUFF
059308,000329: 04,3540 53205 DXCH UPBUFF +8D
059309,000330: 04,3541 03567 TC TIMEDIDL
059310,000331: 04,3542 04364 TC FALTON # ERROR -- TURN ON *OPERATOR ERROR* LIGHT
059311,000332: 04,3543 03712 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
059312,000333:
059313,000334: 04,3544 34355 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
059314,000335: 04,3545 05105 TC FINDVAC # GET VAC AREA FOR 'CALL INTSTALL'
059315,000336: 04,3546 E3,1706 EBANK= TEPHEM
059316,000337: 04,3546 03551 10103 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
059317,000338: 04,3550 05155 TC ENDOFJOB # 'TEPHEM' UPDATE BY V70)
059318,000339:
059319,000340: 04,3551 06037 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE -- SO
059320,000341: 04,3552 77624 CALL # WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI)
059321,000342: 04,3553 27414 INTSTALL # IS IN PROGRESS -- OR -- GRAB OI AND RETURN
059322,000343: # TO UPWAKE IF OI IS NOT IN PROGRESS.
059323,000344:
059324,000345: 04,3554 77776 UPWAKE EXIT
059325,000346:
059326,000347: 04,3555 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
059327,000348: 04,3556 04026 OCT 04026
059328,000349:
059329,000350: 04,3557 05504 TC UPFLAG # SET INTEGRATION RESTART BIT
059330,000351: 04,3560 00236 ADRES REINTFLG
059331,000352: 04,3561 00004 INHINT
059332,000353: 04,3562 UPPART3 EQUALS
059333,000354:
059334,000355: 04,3562 51172 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
059335,000356: 04,3563 13564 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
059336,000357: 04,3564 13723 TCF UPEND70 # V70
059337,000358: 04,3565 13632 TCF UPEND71 # V71
059338,000359: 04,3566 13664 TCF UPEND72 # V72
059339,000360:
059340,000361: # ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
059341,000362:
059342,000363: 04,3567 00006 TIMEDIDL EXTEND
059343,000364: 04,3570 23167 QXCH UPTEMP # SAVE Q FOR RETURN
059344,000365: 04,3571 34755 CAF ZERO # ZERO AND SAVE TIME2,TIME1
059345,000366: 04,3572 22007 ZL
059346,000367: 04,3573 52025 DXCH TIME2
059347,000368: 04,3574 53217 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
059348,000369:
059349,000370: 04,3575 34756 CAF UPDTPHAS # SO
059350,000371: 04,3576 54001 TS L # A
059351,000372: 04,3577 40000 COM # QUICK
059352,000373: 04,3600 52765 DXCH -PHASE6 # PHASCHNG
059353,000374: # Page 1393
059354,000375: 04,3601 00004 TIMEDIDR INHINT
059355,000376:
059356,000377: 04,3602 34755 CAF ZERO
059357,000378: 04,3603 22007 ZL # PICK UP INCRMENTER (AND ZERO
059358,000379: 04,3604 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND
059359,000380: 04,3605 53205 DXCH UPBUFF +8D # STORE IT
059360,000381: 04,3606 52155 DXCH MPAC # INTO MPAC FOR TPAGREE.
059361,000382:
059362,000383: 04,3607 00006 EXTEND
059363,000384: 04,3610 31217 DCA UPBUFF +18D
059364,000385: 04,3611 20155 DAS MPAC # FORM SUM IN MPAC
059365,000386: 04,3612 00006 EXTEND
059366,000387: 04,3613 13622 BZF DELTAOK # TEST FOR OVERFLOW
059367,000388: 04,3614 34755 CAF ZERO
059368,000389: 04,3615 53217 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
059369,000390: 04,3616 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR
059370,000391:
059371,000392: 04,3617 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
059372,000393: 04,3620 04026 OCT 04026
059373,000394:
059374,000395: 04,3621 01167 TC UPTEMP # GO TO ERROR EXIT
059375,000396:
059376,000397: 04,3622 07257 DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT
059377,000398: 04,3623 52155 DXCH MPAC
059378,000399: 04,3624 20025 DAS TIME2 # INCREMENT TIME2,TIME1
059379,000400:
059380,000401: 04,3625 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
059381,000402: 04,3626 04026 OCT 04026
059382,000403:
059383,000404: 04,3627 00004 INHINT
059384,000405: 04,3630 51167 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
059385,000406: 04,3631 00001 TC 1 # NORMAL RETURN
059386,000407:
059387,000408: # VERB 71 BRANCH
059388,000409:
059389,000410: 04,3632 31175 UPEND71 CAE UPBUFF +1 # SET EBANK
059390,000411: 04,3633 54003 TS EBANK # AND
059391,000412: 04,3634 74357 MASK LOW8 # CALCULATE
059392,000413: 04,3635 55167 TS UPTEMP # S-REG VALUE OF RECEIVING AREA
059393,000414:
059394,000415: 04,3636 67745 AD NEG3 # IN THE PROCESS OF
059395,000416: 04,3637 61170 AD COMPNUMB # PERFORMING
059396,000417: 04,3640 00006 EXTEND # THIS UPDATE
059397,000418: 04,3641 13647 BZF STORLP71 # WILL WE
059398,000419: 04,3642 74743 MASK BIT9 # OVERFLOW
059399,000420: 04,3643 10000 CCS A # INTO THE NEXT EBANK....
059400,000421: 04,3644 13760 TCF UPERROUT # YES
059401,000422:
059402,000423: 04,3645 37745 CA NEG3 # NO -- CALCULATE NUMBER OF
059403,000424: 04,3646 61170 AD COMPNUMB # WORDS TO BE STORED MINUS ONE
059404,000425: 04,3647 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
059405,000426: # Page 1394
059406,000427: 04,3650 50000 INDEX A # TAKE NEXT UPDATE WORD FROM
059407,000428: 04,3651 31176 CA UPBUFF +2 # UPBUFF AND
059408,000429:
059409,000430: 04,3652 54001 TS L # SAVE IT IN L
059410,000431: 04,3653 30154 CA MPAC # CALCULATE NEXT
059411,000432: 04,3654 61167 AD UPTEMP # RECEIVING ADDRESS
059412,000433: 04,3655 50000 INDEX A
059413,000434: 04,3656 E3,1400 EBANK= 1400
059414,000435: 04,3656 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
059415,000436: 04,3657 E3,1706 EBANK= TEPHEM
059416,000437: 04,3657 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
059417,000438: 04,3660 13647 TCF STORLP71 # YES
059418,000439: 04,3661 13711 TCF UPOUT # NO -- THEN EXIT UPDATE PROGRAM
059419,000440: 04,3662 01173 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
059420,000441: 04,3663 13711 TCF UPOUT # NO -- EXIT UPDATE (HERE WHEN COMPNUMB = 3)
059421,000442:
059422,000443: # VERB 72 BRANCH
059423,000444:
059424,000445: 04,3664 34753 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
059425,000446: 04,3665 71170 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ...
059426,000447: 04,3666 10000 CCS A
059427,000448: 04,3667 13671 TCF +2 # YES
059428,000449: 04,3670 13760 TCF UPERROUT # ERROR -- SHOULD BE ODD NO. OF COMPONENTS
059429,000450: 04,3671 44752 CS BIT2
059430,000451: 04,3672 61170 AD COMPNUMB
059431,000452: 04,3673 54154 LDLOOP72 TS MPAC # NOW PERFORM THE UPDATE
059432,000453: 04,3674 50000 INDEX A
059433,000454: 04,3675 31175 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
059434,000455: 04,3676 22000 LXCH A
059435,000456: 04,3677 10154 CCS MPAC # SET POINTER TO ECADR (MUST BE CCS)
059436,000457: 04,3700 54154 TS MPAC
059437,000458: 04,3701 50000 INDEX A
059438,000459: 04,3702 31175 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
059439,000460: 04,3703 54003 TS EBANK # SET EBANK
059440,000461: 04,3704 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
059441,000462: 04,3705 50000 INDEX A
059442,000463: 04,3706 E3,1400 EBANK= 1400
059443,000464: 04,3706 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
059444,000465: 04,3707 E3,1706 EBANK= TEPHEM
059445,000466: 04,3707 10154 CCS MPAC # ARE WE THORUGH THE V72 UPDATE...
059446,000467: 04,3710 13673 TCF LDLOOP72 # NO
059447,000468:
059448,000469: # NORMAL FINISH OF P27
059449,000470:
059450,000471: 04,3711 UPOUT EQUALS
059451,000472: 04,3711 03165 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
059452,000473: 04,3712 31171 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
059453,000474: 04,3713 05314 TC NEWMODEX +3
059454,000475: 04,3714 34755 CAF ZERO
059455,000476: # Page 1395
059456,000477: 04,3715 54332 TS DNLSTCOD
059457,000478: 04,3716 03765 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
059458,000479:
059459,000480: 04,3717 00006 EXTEND # KILL GROUP 6.
059460,000481: 04,3720 34755 DCA NEG0
059461,000482: 04,3721 52765 DXCH -PHASE6
059462,000483:
059463,000484: 04,3722 05472 TC ENDEXT # EXTENDED VERB EXIT
059464,000485:
059465,000486: # VERB TO BRANCH
059466,000487:
059467,000488: 04,3723 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
059468,000489: 04,3724 41175 DCS UPBUFF # TIME IN UPBUFF
059469,000490: 04,3725 53205 DXCH UPBUFF +8D
059470,000491: 04,3726 03567 TC TIMEDIDL # DECREMENT AGC CLOCK
059471,000492:
059472,000493: 04,3727 03760 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
059473,000494:
059474,000495: 04,3730 E3,1706 EBANK= TEPHEM
059475,000496: 04,3730 00006 EXTEND
059476,000497: 04,3731 41175 DCS UPBUFF # COPY DECREMENTERS FOR
059477,000498: 04,3732 53207 DXCH UPBUFF +10D # RESTART PROTECTION
059478,000499: 04,3733 00006 EXTEND
059479,000500: 04,3734 41175 DCS UPBUFF
059480,000501: 04,3735 53211 DXCH UPBUFF +12D
059481,000502:
059482,000503: 04,3736 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
059483,000504: 04,3737 04026 OCT 04026
059484,000505:
059485,000506: 04,3740 34755 CAF ZERO
059486,000507: 04,3741 22007 ZL
059487,000508: 04,3742 53207 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
059488,000509: 04,3743 21571 DAS TETCSM
059489,000510:
059490,000511: 04,3744 34755 CAF ZERO
059491,000512: 04,3745 22007 ZL
059492,000513: 04,3746 53211 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
059493,000514: 04,3747 21643 DAS TETLEM
059494,000515:
059495,000516: 04,3750 34755 CAF ZERO
059496,000517: 04,3751 22007 ZL
059497,000518: 04,3752 53175 DXCH UPBUFF
059498,000519: 04,3753 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM
059499,000520: 04,3754 27706 ADS TEPHEM
059500,000521:
059501,000522: 04,3755 05353 TC PHASCHNG # RESTART PROTECT (GROUP 6)
059502,000523: 04,3756 04026 OCT 04026
059503,000524:
059504,000525: 04,3757 1174 EBANK= UPBUFF
059505,000526: # Page 1396
059506,000527: 04,3757 03711 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
059507,000528:
059508,000529:
059509,000530: # ERROR SEQUENCE
059510,000531:
059511,000532: 04,3760 04364 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
059512,000533: 04,3761 13711 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
059513,000534:
059514,000535: 04,3762 04364 +2 TC FALTON # TURN ON 'OPERATOR ERROR' LIGHT
059515,000536: 04,3763 03765 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
059516,000537: 04,3764 05472 TC ENDEXT # EXTENDED VERB EXIT
059517,000538: # (THE PURPOS OF UPERROUT +2 EXIT IS
059518,000539: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT
059519,000540: # RESET ANY RESTART GROUPS)
059520,000541:
059521,000542: # 'UPACTOFF' IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
059522,000543:
059523,000544: 04,3765 44751 UPACTOFF CS BIT3
059524,000545: 04,3766 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
059525,000546: 04,3767 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
059526,000547: 04,3770 00002 TC Q
059527,000548:
End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc