Source Code
These source-code files are part of a reconstructed copy of Luminary 69/2,
the flown, final release of the Apollo 10 Lunar Module (LM) Apollo Guidance Computer (AGC) software.
The reconstruction is based on the source code of Luminary 69 — i.e., the initial, unflown version, "revision 0" — of which a contemporary listing was available. The code was then updated by incorporating the differences between Luminary 69 and Luminary 69/2, known from other contemporary documentation. The only such difference is the implementation in Luminary 69/2 of the "R-2 Lunar Potential Model", the source code for which was taken from program Luminary 99/1 (Apollo 11 LM), of which a contemporary listing was also available. Finally, the now-reconstructed Luminary 69/2 was then validated by assembling it to executable form and verifying that its memory banks had the correct checksums, known from still other contemporary documentation. Note that page numbers in the reconstructed code match those in the original Luminary 69 program listing, or in the ORBITAL INTEGRATION log section, in Luminary 99/1. Page numbers would certainly differ somewhat in a contemporary Luminary 69/2 listing. Moreover, annotations that were not present in the contemporary source code have been added to the reconstructed code to justify each change in Luminary 69/2 relative to Luminary 69. Here's a guide to the Apollo documentation referenced in those annotations:
|
059531,000002: ## Copyright: Public domain.
059532,000003: ## Filename: UPDATE_PROGRAM.agc
059533,000004: ## Purpose: A section of LUM69 revision 2.
059534,000005: ## It is part of the reconstructed source code for the flown
059535,000006: ## version of the flight software for the Lunar Module's (LM)
059536,000007: ## Apollo Guidance Computer (AGC) for Apollo 10. The code has
059537,000008: ## been recreated from a copy of Luminary revsion 069, using
059538,000009: ## changes present in Luminary 099 which were described in
059539,000010: ## Luminary memos 75 and 78. The code has been adapted such
059540,000011: ## that the resulting bugger words exactly match those specified
059541,000012: ## for LUM69 revision 2 in NASA drawing 2021152B, which gives
059542,000013: ## relatively high confidence that the reconstruction is correct.
059543,000014: ## Reference: pp. 1379-1389
059544,000015: ## Assembler: yaYUL
059545,000016: ## Contact: Ron Burkey <info@sandroid.org>.
059546,000017: ## Website: www.ibiblio.org/apollo/index.html
059547,000018: ## Mod history: 2019-07-27 MAS Created from Luminary 69.
059548,000019: ## 2021-05-30 ABS DELTAOK -> DELTATOK
059549,000020:
Page 1379 |
059551,000022: # PROGRAM NAME: P27
059552,000023: # WRITTEN BY: KILROY/ DE WOLF
059553,000024:
059554,000025: # MOD NO: 6
059555,000026: # MOD BY: KILROY
059556,000027: # DATE: 01DEC67
059557,000028:
059558,000029: # LOG SECTION: UPDATE PROGRAM.
059559,000030:
059560,000031: # FUNCT. DESCR: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
059561,000032: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
059562,000033: # THE P27 PROGRAM WILL ACCEPT UPDATES
059563,000034: # ONLY DURING P00 FOR THE LM, AND ONLY DURING P00,
059564,000035: # P02, AND FRESH START FOR THE CSM
059565,000036:
059566,000037: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72 AND 73.
059567,000038:
059568,000039: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
059569,000040: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
059570,000041:
059571,000042: # NORMAL EXIT: TC ENDEXT
059572,000043:
059573,000044: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
059574,000045:
059575,000046: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS...
059576,000047: # 1. PRIOR TO VERIFLAG INVERSION(WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
059577,000048: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
059578,000049: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTORED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK
059579,000050: # ACTIVITY LIGHT IS TURNED OFF.(JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
059580,000051: # V70,V71,V72 OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
059581,000052: # 2. AFTER VERIFLAG INVERSION(WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
059582,000053: # PROTECTED AGAINST RESTARTS.
059583,000054:
059584,000055: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
059585,000056: # UPVERB (1) VERB NUMBER MINUS 70D (E.G. FOR V72, UPVERB = 72D - 70D = 2)
059586,000057: # UPOLDMOD (1) FOR MAJOR MODE INTERRUPTED BY P27.
059587,000058: # COMPNUMB (1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
059588,000059: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
059589,000060: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE
059590,000061:
059591,000062: # INPUT:
059592,000063:
059593,000064: # ENTRY: DESCRIPTION
059594,000065:
059595,000066: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
059596,000067: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
059597,000068: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
059598,000069: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
Page 1380 |
059600,000071: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS,XXXXX,
059601,000072: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
059602,000073: # XXXXXE IT IS .GE. 3 .AND. .LE. 20D.,
059603,000074: # AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
059604,000075: # 9 NEXT BANK
059605,000076: # . SCALING IS SAME AS INTERNAL REGISTERS.
059606,000077:
059607,000078: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS,XXXXX, ARE
059608,000079: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
059609,000080: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
059610,000081: # . SCALING IS SAME AS INTERNAL REGISTERS.
059611,000082:
059612,000083: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
059613,000084: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
059614,000085: # CENTISECONDS SCALED AT (2)28.
059615,000086: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
059616,000087:
059617,000088: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
059618,000089: # COMPLEMENT BIT3 OF FLAGWORD7.
059619,000090:
059620,000091: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES--
059621,000092: # 1. CSM/LM STATE VECTOR UPDATE
059622,000093: # 2. REFSMMAT UPDATE
059623,000094:
059624,000095: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE----
059625,000096:
059626,000097: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
059627,000098:
059628,000099: # ENTRIES: DATA DEFINITION: SCALE FACTORS:
059629,000100: # V71E CONTIGUOUS BLOCK UPDATE VERB
059630,000101: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
059631,000102: # AAAAE ECADR OF 'UPSVFLAG'
059632,000103: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM - EARTH SPHERE OF INFLUENCE SCALING
059633,000104: # 00002 FOR CSM, 77775 FOR LEM - LUNAR SPHERE OF INFLUENCE SCALING
059634,000105: # XXXXXEXXXXXE X POSITION
059635,000106: # XXXXXEXXXXXE Y POSITION
059636,000107: # XXXXXEXXXXXE Z POSITION
059637,000108: # XXXXXEXXXXXE X VELOCITY
059638,000109: # XXXXXEXXXXXE Y VELOCITY
059639,000110: # XXXXXEXXXXXE Z VELOCITY
059640,000111: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
059641,000112: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
059642,000113:
059643,000114: # 2. REFSMMAT(ALL DATA ENTRIES IN OCTAL)
059644,000115: # ENTRIES: DATA DEFINITIONS: SCALE FACTORS:
Page 1381 |
059646,000117: # V71E CONTIGUOUS BLOCK UPDATE VERB
059647,000118: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
059648,000119: # AAAAE ECADR OF 'REFSMMAT'
059649,000120: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
059650,000121: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
059651,000122: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
059652,000123: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
059653,000124: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
059654,000125: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
059655,000126: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
059656,000127: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
059657,000128: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
059658,000129: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED.
059659,000130:
059660,000131:
059661,000132: 07,3746 BANK 07
059662,000133: 43,2000 SETLOC EXTVERBS
059663,000134: 43,2000 BANK
059664,000135:
059665,000136: 43,3732 E3,1706 EBANK= TEPHEM
059666,000137:
059667,000138: 43,3732 COUNT* $$/P27
059668,000139: 43,3732 34755 V70UPDAT CAF UP70 # COMES HERE ON V70E
059669,000140: 43,3733 13741 TCF V73UPDAT +1
059670,000141:
059671,000142: 43,3734 34753 V71UPDAT CAF UP71 # COMES HERE ON V71E
059672,000143: 43,3735 13741 TCF V73UPDAT +1
059673,000144:
059674,000145: 43,3736 34752 V72UPDAT CAF UP72 # COMES HERE ON V72E
059675,000146: 43,3737 13741 TCF V73UPDAT +1
059676,000147:
059677,000148: 43,3740 36244 V73UPDAT CAF UP73 # COMES HERE ON V73E
059678,000149:
059679,000150: 43,3741 55166 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
059680,000151:
059681,000152: 43,3742 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
059682,000153: # TURN*OPERATOR ERROR* ON AND TERMINATEJOB
059683,000154:
059684,000155: 43,3743 31011 CA MODREG # CHECK IF UPDATE ALLOWED
059685,000156: 43,3744 00006 EXTEND # FIRST CHECK FOR MODREG = +0, -0
059686,000157: 43,3745 13750 BZF +3 # (+0 = P00, -0 = FRESHSTART)
059687,000158: 43,3746 04635 UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT
059688,000159: 43,3747 11703 CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT
059689,000160:
059690,000161: 43,3750 31011 CAE MODREG # UPDATE ALLOWED.
059691,000162: 43,3751 43,3746 CKMDMORE = UPERROR
059692,000163: 43,3751 55171 TS UPOLDMOD # SAVE CURRENT MAJOR MODE
Page 1382 |
059694,000165: 43,3752 31166 CAE UPVERBSV # SET UPVERB TO INDICATE TO P27
059695,000166:
059696,000167: 43,3753 55172 TS UPVERB # WHICH EXTENDED VERB CALLED IT.
059697,000168:
059698,000169: 43,3754 34753 CAF ONE
059699,000170: 43,3755 55173 TS UPCOUNT # INITIALIZE UPCOUNT TO 1
059700,000171:
059701,000172: 43,3756 04635 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
059702,000173: 43,3757 11322 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
059703,000174:
059704,000175: 43,3760 4755 UP70 EQUALS ZERO
059705,000176: 43,3760 4753 UP71 EQUALS ONE
059706,000177: 43,3760 4752 UP72 EQUALS TWO
059707,000178: 43,3760 6244 UP73 EQUALS THREE
059708,000179:
059709,000180: 04,3322 BANK 04
059710,000181: 04,2000 SETLOC UPDATE2
059711,000182: 04,2000 BANK
059712,000183:
059713,000184: 04,3322 COUNT* $$/P27
059714,000185:
059715,000186: 04,3322 UPPART2 EQUALS # UPDATE PROGRAM - PART 2
059716,000187:
059717,000188: 04,3322 05353 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
059718,000189: 04,3323 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
059719,000190: 04,3324 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO
059720,000191: 04,3325 1174 EBANK= UPBUFF
059721,000192: 04,3325 03633 10102 2CADR UPOUT +1
059722,000193:
059723,000194: 04,3327 34753 CAF ONE
059724,000195: 04,3330 54332 TS DNLSTCOD # DOWNLIST
059725,000196:
059726,000197: 04,3331 05311 TC NEWMODEX # SET MAJOR MODE = 27
059727,000198: 04,3332 00033 DEC 27 B-14
059728,000199:
059729,000200: 04,3333 51172 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
059730,000201: 04,3334 13335 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
059731,000202: 04,3335 13340 TCF +3 # V70 FIXED. (OF COMPONENTS.
059732,000203: 04,3336 13343 TCF OHWELL1 # V71 VARIABLE - GO GET NO. OF COMPONENTS
059733,000204: 04,3337 13343 TCF OHWELL1 # V72 VARIABLE - GO GET NO. OF COMPONENTS
059734,000205: 04,3340 34752 CA TWO # V73 (AND V70) FIXED
059735,000206: 04,3341 55170 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
059736,000207: 04,3342 13366 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
059737,000208:
059738,000209: 04,3343 33436 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
059739,000210: 04,3344 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II).*
059740,000211: 04,3345 33437 +2 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
059741,000212: 04,3346 04616 TC BANKCALL # DISPLAY A FLASHING V21N01
Page 1383 |
059743,000214: 04,3347 20212 CADR GOXDSPF # TO REQUEST II.
059744,000215: 04,3350 13633 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
059745,000216: 04,3351 13345 TCF OHWELL1 +2
059746,000217: 04,3352 03427 TC CK4V32 # DATA OR V32 RETURN
059747,000218: 04,3353 44752 CS BIT2
059748,000219: 04,3354 61174 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
059749,000220: 04,3355 00006 EXTEND # .GE. 3 AND .LE. 20D.
059750,000221: 04,3356 63345 BZMF OHWELL1 +2
059751,000222: 04,3357 41174 CS UPBUFF
059752,000223: 04,3360 64362 AD UP21
059753,000224: 04,3361 00006 EXTEND
059754,000225: 04,3362 63345 BZMF OHWELL1 +2
059755,000226: 04,3363 31174 CAE UPBUFF
059756,000227: 04,3364 55170 TS COMPNUMB # SAVE II IN COMPNUMB
059757,000228:
059758,000229: # UPBUFF LOADING SEQUENCE
059759,000230:
059760,000231: 04,3365 25173 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
059761,000232: 04,3366 33603 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION(ECADR) IN UPBUFF
059762,000233: 04,3367 61173 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED.
059763,000234: 04,3370 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3.
059764,000235: 04,3371 33437 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
059765,000236: 04,3372 04616 TC BANKCALL # DISPLAY A FLASHING V21N01
059766,000237: 04,3373 20212 CADR GOXDSPF # TO REQUEST DATA.
059767,000238: 04,3374 13633 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
059768,000239: 04,3375 13371 TCF OHWELL2 +3 # V33 PROCEED RETURN
059769,000240: 04,3376 03427 TC CK4V32 # DATA OR V32 RETURN
059770,000241: 04,3377 41173 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
059771,000242: 04,3400 61170 AD COMPNUMB # THE DATA WE EXPECTED.
059772,000243: 04,3401 00006 EXTEND
059773,000244: 04,3402 63404 BZMF UPVERIFY # YES- GO TO VERIFICATION SEQUENCE
059774,000245: 04,3403 13365 TCF OHWELL2 -1 # NO- REQUEST ADDITIONAL DATA.
059775,000246:
059776,000247: # VERIFY SEQUENCE
059777,000248:
059778,000249: 04,3404 33435 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
059779,000250: 04,3405 54156 TS MPAC +2 # IS TO BE STORED INTO R3.
059780,000251: 04,3406 33440 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
059781,000252: 04,3407 04616 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEST
059782,000253: 04,3410 20212 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
059783,000254: 04,3411 13633 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
059784,000255: 04,3412 13441 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
059785,000256: 04,3413 03427 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
059786,000257: 04,3414 31167 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SENT
059787,000258: 04,3415 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
059788,000259: 04,3416 63404 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
059789,000260: 04,3417 41167 CS UPTEMP
059790,000261: 04,3420 61170 AD COMPNUMB
Page 1384 |
059792,000263: 04,3421 64753 AD BIT1
059793,000264: 04,3422 00006 EXTEND
059794,000265: 04,3423 63404 BZMF UPVERIFY # NO
059795,000266: 04,3424 33603 CAF ADUPBFM1 # YES- BASED ON THE COMPONENT NO. INDEX
059796,000267: 04,3425 61167 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
059797,000268: 04,3426 13370 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANGE.
059798,000269:
059799,000270: 04,3427 04,3633 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TO TERMINATE UPDATE
059800,000271:
059801,000272: # CHECK FOR VERB 32 SEQUENCE
059802,000273:
059803,000274: 04,3427 40154 CK4V32 CS MPAC # ON DATA RETURN FROM 'GOXDSPF'
059804,000275: 04,3430 74746 MASK BIT6 # ON DATA RETURN FROM "GOXDSP"& THE CON-
059805,000276: 04,3431 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
059806,000277: 04,3432 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
059807,000278: 04,3433 50002 INDEX Q
059808,000279: 04,3434 77771 TC 0 -6 # V32 ENCOUNTERED - GO BACK AND GET DATA
059809,000280:
059810,000281: 04,3435 01167 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
059811,000282: 04,3436 01174 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
059812,000283: 04,3437 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01
059813,000284: 04,3440 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02
059814,000285: 04,3441 4362 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
059815,000286: 04,3441 4756 UPDTPHAS EQUALS FIVE
059816,000287:
059817,000288: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
059818,000289:
059819,000290: 04,3441 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
059820,000291:
059821,000292: 04,3441 00004 INHINT
059822,000293:
059823,000294: 04,3442 30103 CAE FLAGWRD7 # INVERT VERIFLAG(BIT 3 OF FLAGWRD7) TO
059824,000295: 04,3443 56001 XCH L # INDICATE TO THE GROUND(VIA DOWNLINK)
059825,000296: 04,3444 34751 CAF VERIFBIT # THAT THE V33 (WHICH THE GROUND SENT TO
059826,000297: 04,3445 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
059827,000298: 04,3446 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
059828,000299: 04,3447 54103 TS FLAGWRD7
059829,000300:
059830,000301: 04,3450 05353 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
059831,000302: 04,3451 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS.
059832,000303: 04,3452 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT)
059833,000304:
059834,000305: 04,3453 44752 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED,
059835,000306: 04,3454 61172 AD UPVERB # THAT IS, IF IT'S A V70 - V72.
059836,000307: 04,3455 00006 EXTEND # GO TO UPEND73 IF IT'S A V73.
059837,000308: 04,3456 63465 BZMF UPFNDVAC
059838,000309:
059839,000310: # VERB 73 BRANCH
Page 1385 |
059841,000312: 04,3457 00006 UPEND73 EXTEND # V73-PERFORM DP OCTAL AGC CLOCK INCREMENT
059842,000313:
059843,000314: 04,3460 31175 DCA UPBUFF
059844,000315: 04,3461 53205 DXCH UPBUFF +8D
059845,000316: 04,3462 03510 TC TIMEDIDL
059846,000317: 04,3463 04364 TC FALTON # ERROR- TURN ON *OPERATOR ERROR* LIGHT
059847,000318: 04,3464 03633 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
059848,000319:
059849,000320: 04,3465 34355 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
059850,000321: 04,3466 05105 TC FINDVAC # GET VAC AREA FOR 'CALL INTSTALL'
059851,000322: 04,3467 E3,1706 EBANK= TEPHEM
059852,000323: 04,3467 03472 10103 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
059853,000324:
059854,000325: 04,3471 05155 TC ENDOFJOB # 'TEPHEM' UPDATE BY V70)
059855,000326:
059856,000327: 04,3472 06036 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE--SO
059857,000328: 04,3473 77624 CALL # WAIT(PUT JOB TO SLEEP) IF ORBIT INT(OI)
059858,000329: 04,3474 27412 INTSTALL # IS IN PROGRESS--OR--GRAB OI AND RETURN
059859,000330: # TO UPWAKE IF OI IS NOT IN PROGRESS.
059860,000331:
059861,000332: 04,3475 77776 UPWAKE EXIT
059862,000333:
059863,000334: 04,3476 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
059864,000335: 04,3477 04026 OCT 04026
059865,000336:
059866,000337: 04,3500 05504 TC UPFLAG # SET INTEGRATION RESTART BIT
059867,000338: 04,3501 00236 ADRES REINTFLG
059868,000339: 04,3502 00004 INHINT
059869,000340: 04,3503 UPPART3 EQUALS
059870,000341:
059871,000342: 04,3503 51172 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
059872,000343: 04,3504 13505 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
059873,000344: 04,3505 13644 TCF UPEND70 # V70
059874,000345: 04,3506 13553 TCF UPEND71 # V71
059875,000346: 04,3507 13605 TCF UPEND72 # V72
059876,000347:
059877,000348: # ROUTINE TO INCREMENT CLOCK(TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
059878,000349:
059879,000350: 04,3510 00006 TIMEDIDL EXTEND
059880,000351: 04,3511 23167 QXCH UPTEMP # SAVE Q FOR RETURN
059881,000352: 04,3512 34755 CAF ZERO # ZERO AND SAVE TIME2,TIME1
059882,000353: 04,3513 22007 ZL
059883,000354: 04,3514 52025 DXCH TIME2
059884,000355: 04,3515 53217 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
059885,000356:
059886,000357: 04,3516 34756 CAF UPDTPHAS # DO
059887,000358: 04,3517 54001 TS L # A
059888,000359: 04,3520 40000 COM # QUICK
059889,000360: 04,3521 52765 DXCH -PHASE6 # PHASCHNG
Page 1386 |
059891,000362: 04,3522 00004 TIMEDIDR INHINT
059892,000363:
059893,000364: 04,3523 34755 CAF ZERO
059894,000365: 04,3524 22007 ZL # PICK UP INCREMENTER(AND ZERO
059895,000366: 04,3525 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND
059896,000367: 04,3526 53205 DXCH UPBUFF +8D # STORE IT
059897,000368: 04,3527 52155 DXCH MPAC # INTO MPAC FOR TPAGREE.
059898,000369:
059899,000370: 04,3530 00006 EXTEND
059900,000371: 04,3531 31217 DCA UPBUFF +18D
059901,000372: 04,3532 20155 DAS MPAC # FORM SUM IN MPAC
059902,000373: 04,3533 00006 EXTEND
059903,000374: 04,3534 13543 BZF DELTATOK # TEST FOR OVERFLOW
059904,000375: 04,3535 34755 CAF ZERO
059905,000376: 04,3536 53217 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
059906,000377: 04,3537 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR
059907,000378:
059908,000379: 04,3540 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
059909,000380: 04,3541 04026 OCT 04026
059910,000381:
059911,000382: 04,3542 01167 TC UPTEMP # GO TO ERROR EXIT
059912,000383:
059913,000384: 04,3543 07256 DELTATOK TC TPAGREE # FORCE SIGN AGREEMENT
059914,000385: 04,3544 52155 DXCH MPAC
059915,000386: 04,3545 20025 DAS TIME2 # INCREMENT TIME2,TIME1
059916,000387:
059917,000388: 04,3546 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
059918,000389: 04,3547 04026 OCT 04026
059919,000390:
059920,000391: 04,3550 00004 INHINT
059921,000392: 04,3551 51167 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
059922,000393: 04,3552 00001 TC 1 # NORMAL RETURN
059923,000394:
059924,000395: # VERB 71 BRANCH
059925,000396:
059926,000397: 04,3553 31175 UPEND71 CAE UPBUFF +1 # SET EBANK
059927,000398: 04,3554 54003 TS EBANK # AND
059928,000399: 04,3555 74357 MASK LOW8 # CALCULATE
059929,000400: 04,3556 55167 TS UPTEMP # S-REG VALUE OF RECEIVING AREA
059930,000401:
059931,000402: 04,3557 67744 AD NEG3 # IN THE PROCESS OF
059932,000403: 04,3560 61170 AD COMPNUMB # PERFORMING
059933,000404: 04,3561 00006 EXTEND # THIS UPDATE
059934,000405: 04,3562 13570 BZF STORLP71 # WILL WE
059935,000406: 04,3563 74743 MASK BIT9 # OVERFLOW
059936,000407: 04,3564 10000 CCS A # INTO THE NEXT EBANK....
059937,000408: 04,3565 13701 TCF UPERROUT # YES
059938,000409:
059939,000410: 04,3566 37744 CA NEG3 # NO- CALCULATE NUMBER OF
059940,000411: 04,3567 61170 AD COMPNUMB # WORDS TO BE STORED MINUS ONE
059941,000412: 04,3570 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
Page 1387 |
059943,000414: 04,3571 50000 INDEX A # TAKE NEXT UPDATE WORD FROM
059944,000415: 04,3572 31176 CA UPBUFF +2 # UPBUFF AND
059945,000416: 04,3573 54001 TS L # SAVE IT IN L
059946,000417: 04,3574 30154 CA MPAC # CALCULATE NEXT
059947,000418: 04,3575 61167 AD UPTEMP # RECEIVING ADDRESS
059948,000419: 04,3576 50000 INDEX A
059949,000420: 04,3577 E3,1400 EBANK= 1400
059950,000421: 04,3577 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
059951,000422: 04,3600 E3,1706 EBANK= TEPHEM
059952,000423: 04,3600 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
059953,000424: 04,3601 13570 TCF STORLP71 # YES
059954,000425: 04,3602 13632 TCF UPOUT # NO- THEN EXIT UPDATE PROGRAM
059955,000426: 04,3603 01173 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
059956,000427: 04,3604 13632 TCF UPOUT # NO- EXIT UPDATE(HERE WHEN COMPNUMB = 3)
059957,000428:
059958,000429: # VERB 72 BRANCH
059959,000430:
059960,000431: 04,3605 34753 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
059961,000432: 04,3606 71170 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ...
059962,000433: 04,3607 10000 CCS A
059963,000434: 04,3610 13612 TCF +2 # YES
059964,000435: 04,3611 13701 TCF UPERROUT # ERROR- SHOULD BE ODD NO. OF COMPONENTS
059965,000436: 04,3612 44752 CS BIT2
059966,000437: 04,3613 61170 AD COMPNUMB
059967,000438: 04,3614 54154 LDLOOP72 TS MPAC # NOW PERFORM THE UPDATE
059968,000439: 04,3615 50000 INDEX A
059969,000440: 04,3616 31175 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
059970,000441: 04,3617 22000 LXCH A
059971,000442: 04,3620 10154 CCS MPAC # SET POINTER TO ECADR (MUST BE CCS)
059972,000443: 04,3621 54154 TS MPAC
059973,000444: 04,3622 50000 INDEX A
059974,000445: 04,3623 31175 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
059975,000446: 04,3624 54003 TS EBANK # SET EBANK
059976,000447: 04,3625 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
059977,000448: 04,3626 50000 INDEX A
059978,000449: 04,3627 E3,1400 EBANK= 1400
059979,000450: 04,3627 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
059980,000451: 04,3630 E3,1706 EBANK= TEPHEM
059981,000452: 04,3630 10154 CCS MPAC # ARE WE THROUGH THE V72 UPDATE...
059982,000453: 04,3631 13614 TCF LDLOOP72 # NO
059983,000454:
059984,000455: # NORMAL FINISH OF P27
059985,000456:
059986,000457: 04,3632 UPOUT EQUALS
059987,000458: 04,3632 03106 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
059988,000459: 04,3633 31171 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
059989,000460: 04,3634 05314 TC NEWMODEX +3
059990,000461: 04,3635 34755 CAF ZERO
Page 1388 |
059992,000463: 04,3636 54332 TS DNLSTCOD
059993,000464: 04,3637 03706 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
059994,000465:
059995,000466: 04,3640 00006 EXTEND # KILL GROUP 6.
059996,000467: 04,3641 34755 DCA NEG0
059997,000468: 04,3642 52765 DXCH -PHASE6
059998,000469:
059999,000470: 04,3643 05472 TC ENDEXT # EXTENDED VERB EXIT
060000,000471:
060001,000472: # VERB 70 BRANCH
060002,000473:
060003,000474: 04,3644 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
060004,000475: 04,3645 41175 DCS UPBUFF # TIME IN UPBUFF
060005,000476: 04,3646 53205 DXCH UPBUFF +8D
060006,000477: 04,3647 03510 TC TIMEDIDL # DECREMENT AGC CLOCK
060007,000478:
060008,000479: 04,3650 03701 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
060009,000480:
060010,000481: 04,3651 E3,1706 EBANK= TEPHEM
060011,000482: 04,3651 00006 EXTEND
060012,000483: 04,3652 41175 DCS UPBUFF # COPY DECREMENTERS FOR
060013,000484: 04,3653 53207 DXCH UPBUFF +10D # RESTART PROTECTION
060014,000485: 04,3654 00006 EXTEND
060015,000486: 04,3655 41175 DCS UPBUFF
060016,000487: 04,3656 53211 DXCH UPBUFF +12D
060017,000488:
060018,000489: 04,3657 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060019,000490: 04,3660 04026 OCT 04026
060020,000491:
060021,000492: 04,3661 34755 CAF ZERO
060022,000493: 04,3662 22007 ZL
060023,000494: 04,3663 53207 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
060024,000495: 04,3664 21571 DAS TETCSM
060025,000496:
060026,000497: 04,3665 34755 CAF ZERO
060027,000498: 04,3666 22007 ZL
060028,000499: 04,3667 53211 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
060029,000500: 04,3670 21643 DAS TETLEM
060030,000501:
060031,000502: 04,3671 34755 CAF ZERO
060032,000503: 04,3672 22007 ZL
060033,000504: 04,3673 53175 DXCH UPBUFF
060034,000505: 04,3674 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM
060035,000506: 04,3675 27706 ADS TEPHEM
060036,000507:
060037,000508: 04,3676 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060038,000509: 04,3677 04026 OCT 04026
060039,000510:
060040,000511: 04,3700 1174 EBANK= UPBUFF
Page 1389 |
060042,000513: 04,3700 03632 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
060043,000514:
060044,000515:
060045,000516: # ERROR SEQUENCE
060046,000517:
060047,000518: 04,3701 04364 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
060048,000519: 04,3702 13632 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
060049,000520:
060050,000521: 04,3703 04364 +2 TC FALTON # TURN ON 'OPERATOR ERROR' LIGHT
060051,000522: 04,3704 03706 TC UPACTOFF # TURN OFF'UPLINK ACTIVITY'LIGHT
060052,000523: 04,3705 05472 TC ENDEXT # EXTENDED VERB EXIT
060053,000524: # (THE PURPOSE OF UPERROUT +2 EXIT IS
060054,000525: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT
060055,000526: # RESET ANY RESTART GROUPS)
060056,000527:
060057,000528: # :UPACTOFF: IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
060058,000529:
060059,000530: 04,3706 44751 UPACTOFF CS BIT3
060060,000531: 04,3707 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
060061,000532: 04,3710 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
060062,000533: 04,3711 00002 TC Q
060063,000534:
End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc