Source Code
![]() |
These source-code files derive from a printout of Luminary 210 (Apollo 15-17
Lunar Module guidance computer program), from the personal library of
original AGC developer Don Eyles, digitally photographed at archive.org,
financially sponsored by Jim Lawton, and transcribed to source code by a
team of volunteers. This colorized, syntax-highlighted form was created
by assembling that transcribed source code. Note that the full page images
are available on the
Virtual AGC project page at archive.org, while reduced-size images
are presented at the VirtualAGC project website. Report or fix any
transcription errors at
the Virtual AGC project code repository. Notations on the program listing read, in part: GAP: ASSEMBLE REVISION 210 OF AGC PROGRAM LUMINARY BY NASA 2021112-161 17:11 MAR. 19,1971Note that the date is the date of the printout, not the date of the program revision. |
059699,000002: ## Copyright: Public domain.
059700,000003: ## Filename: UPDATE_PROGRAM.agc
059701,000004: ## Purpose: A section of Luminary revision 210.
059702,000005: ## It is part of the source code for the Lunar Module's (LM)
059703,000006: ## Apollo Guidance Computer (AGC) for Apollo 15-17.
059704,000007: ## This file is intended to be a faithful transcription, except
059705,000008: ## that the code format has been changed to conform to the
059706,000009: ## requirements of the yaYUL assembler rather than the
059707,000010: ## original YUL assembler.
059708,000011: ## Reference: pp. 1383-1393
059709,000012: ## Assembler: yaYUL
059710,000013: ## Contact: Ron Burkey <info@sandroid.org>.
059711,000014: ## Website: www.ibiblio.org/apollo/index.html
059712,000015: ## Mod history: 2016-11-17 JL Created from Luminary131 version.
059713,000016: ## 2016-12-06 RRB Updated for Luminary210.
059714,000017: ## 2016-12-07 HG Fix P00 -> POO (appears only in comments)
059715,000018: ## Change POO -> P00 in some comments
059716,000019: ## 2016-12-11 HG Add missing operation AD BIT1
059717,000020: ## 2016-12-26 RSB Comment-text proofed using ProoferComments
059718,000021: ## and corrected errors found.
059719,000022: ## 2017-01-28 RSB Comment-text fixes identified for Luminary 69.
059720,000023: ## 2017-02-09 RSB Comment-text fixes identified for Artemis 72.
059721,000024:
![]() |
Page 1383 |
059723,000026: # PROGRAM NAME: P27
059724,000027: # WRITTEN BY: KILROY/ DE WOLF
059725,000028:
059726,000029: # MOD NO: 6
059727,000030: # MOD BY: KILROY
059728,000031: # DATE: 01DEC67
059729,000032:
059730,000033: # LOG SECTION: UPDATE PROGRAM.
059731,000034:
059732,000035: # FUNCT. DESCR: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
059733,000036: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
059734,000037: # THE P27 PROGRAM WILL ACCEPT UPDATES
059735,000038: # ONLY DURING P00 FOR THE LM, AND ONLY DURING P00,
059736,000039: # P02, AND FRESH START FOR THE CSM
059737,000040:
059738,000041: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72 AND 73.
059739,000042:
059740,000043: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
059741,000044: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
059742,000045:
059743,000046: # NORMAL EXIT: TC ENDEXT
059744,000047:
059745,000048: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
059746,000049:
059747,000050: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ...
059748,000051: # 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
059749,000052: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
059750,000053: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTORED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK
059751,000054: # ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
059752,000055: # V70,V71,V72 OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
059753,000056: # 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
059754,000057: # PROTECTED AGAINST RESTARTS.
059755,000058:
059756,000059: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
059757,000060: # UPVERB (1) VERB NUMBER MINUS 70D (E.G. FOR V72, UPVERB = 72D - 70D = 2)
059758,000061: # UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27.
059759,000062: # COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
059760,000063: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
059761,000064: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE
059762,000065:
059763,000066: # INPUT:
059764,000067:
059765,000068: # ENTRY: DESCRIPTION
059766,000069: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
059767,000070: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
059768,000071: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
059769,000072: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
![]() |
Page 1384 |
059771,000074: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX,
059772,000075: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
059773,000076: # XXXXXE IT IS .GE. 3 .AND. .LE. 20D.,
059774,000077: # AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
059775,000078: # 9 NEXT BANK
059776,000079: # . SCALING IS SAME AS INTERNAL REGISTERS.
059777,000080: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE
059778,000081: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
059779,000082: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
059780,000083: # . SCALING IS SAME AS INTERNAL REGISTERS.
059781,000084:
059782,000085: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
059783,000086: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
059784,000087: # CENTISECONDS SCALED AT (2)28.
059785,000088: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
059786,000089:
059787,000090: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
059788,000091: # COMPLEMENT BIT3 OF FLAGWORD7.
059789,000092:
059790,000093: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --
059791,000094: # 1. CSM/LM STATE VECTOR UPDATE
059792,000095: # 2. REFSMMAT UPDATE
059793,000096:
059794,000097: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE----
059795,000098:
059796,000099: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
059797,000100: # ENTRIES: DATA DEFINITION: SCALE FACTORS:
059798,000101: # V71E CONTIGUOUS BLOCK UPDATE VERB
059799,000102: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
059800,000103: # AAAAE ECADR OF 'UPSVFLAG'
059801,000104: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM - EARTH SPHERE OF INFLUENCE SCALING
059802,000105: # 00002 FOR CSM, 77775 FOR LEM - LUNAR SPHERE OF INFLUENCE SCALING
059803,000106: # XXXXXEXXXXXE X POSITION
059804,000107: # XXXXXEXXXXXE Y POSITION
059805,000108: # XXXXXEXXXXXE Z POSITION
059806,000109: # XXXXXEXXXXXE X VELOCITY
059807,000110: # XXXXXEXXXXXE Y VELOCITY
059808,000111: # XXXXXEXXXXXE Z VELOCITY
059809,000112: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
059810,000113: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
059811,000114:
059812,000115: # 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL)
059813,000116: # ENTRIES: DATA DEFINITIONS: SCALE FACTORS:
![]() |
Page 1385 |
059815,000118: # V71E CONTIGUOUS BLOCK UPDATE VERB
059816,000119: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
059817,000120: # AAAAE ECADR OF 'REFSMMAT'
059818,000121: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
059819,000122: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
059820,000123: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
059821,000124: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
059822,000125: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
059823,000126: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
059824,000127: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
059825,000128: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
059826,000129: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
059827,000130: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED.
059828,000131:
![]() |
[WORKAROUND] RSB 2004 |
059830,000133: 21,3027 40,2000 SBANK= PINSUPER
059831,000134:
059832,000135: 07,3767 BANK 07
059833,000136: 43,2000 SETLOC EXTVERBS
059834,000137: 43,2000 BANK
059835,000138:
059836,000139: 43,3727 E3,1706 EBANK= TEPHEM
059837,000140:
059838,000141: 43,3727 COUNT* $$/P27
059839,000142: 43,3727 34746 V70UPDAT CAF UP70 # COMES HERE ON V70E
059840,000143: 43,3730 13736 TCF V73UPDAT +1
059841,000144:
059842,000145: 43,3731 34744 V71UPDAT CAF UP71 # COMES HERE ON V71E
059843,000146: 43,3732 13736 TCF V73UPDAT +1
059844,000147:
059845,000148: 43,3733 34743 V72UPDAT CAF UP72 # COMES HERE ON V72E
059846,000149: 43,3734 13736 TCF V73UPDAT +1
059847,000150:
059848,000151: 43,3735 36266 V73UPDAT CAF UP73 # COMES HERE ON V73E
059849,000152:
059850,000153: 43,3736 55165 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
059851,000154:
059852,000155: 43,3737 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
059853,000156: # TURN *OPERATOR ERROR* ON AND TERMINATEJOB
059854,000157:
059855,000158: 43,3740 04626 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
059856,000159: 43,3741 11372 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
059857,000160:
059858,000161: 43,3742 4746 UP70 EQUALS ZERO
059859,000162: 43,3742 4744 UP71 EQUALS ONE
059860,000163: 43,3742 4743 UP72 EQUALS TWO
059861,000164: 43,3742 6266 UP73 EQUALS THREE
![]() |
Page 1386 |
059863,000166: 04,3372 BANK 04
059864,000167: 04,2000 SETLOC UPDATE2
059865,000168: 04,2000 BANK
059866,000169:
059867,000170: 04,3372 COUNT* $$/P27
059868,000171:
059869,000172: 04,3372 UPPART2 EQUALS # UPDATE PROGRAM - PART 2
059870,000173:
059871,000174: 04,3372 31010 CA MODREG # IS UPDATE ALLOWED AT THIS TIME?
059872,000175: 04,3373 00006 EXTEND # IS MODREG +0 (POOH) OR -0 (FRESH START)?
059873,000176: 04,3374 13376 BZF UPDATOK
059874,000177:
059875,000178: 04,3375 03764 UPERROR TC UPERROUT +2 # TURN ON OPERATOR ERROR LIGHT AND EXIT
059876,000179:
059877,000180: 04,3376 55170 UPDATOK TS UPOLDMOD
059878,000181:
059879,000182: 04,3377 31165 CAE UPVERBSV # SET UPVERB TO TELL P27 WHICH EXTENDED
059880,000183: 04,3400 55171 TS UPVERB # VERB CALLED IT
059881,000184:
059882,000185: 04,3401 34744 CAF ONE
059883,000186: 04,3402 55172 TS UPCOUNT
059884,000187:
059885,000188: 04,3403 05355 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
059886,000189: 04,3404 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
059887,000190: 04,3405 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO
059888,000191: 04,3406 1173 EBANK= UPBUFF
059889,000192: 04,3406 03714 10102 2CADR UPOUT +1
059890,000193:
059891,000194: 04,3410 34744 CAF ONE
059892,000195: 04,3411 54333 TS DNLSTCOD # DOWNLIST
059893,000196:
059894,000197: 04,3412 05313 TC NEWMODEX # SET MAJOR MODE = 27
059895,000198: 04,3413 00033 DEC 27 B-14
059896,000199:
059897,000200: 04,3414 51171 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
059898,000201: 04,3415 13416 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
059899,000202: 04,3416 13421 TCF +3 # V70 FIXED. (OF COMPONENTS.
059900,000203: 04,3417 13424 TCF OHWELL1 # V71 VARIABLE - GO GET NO. OF COMPONENTS
059901,000204: 04,3420 13424 TCF OHWELL1 # V72 VARIABLE - GO GET NO. OF COMPONENTS
059902,000205: 04,3421 34743 CA TWO # V73 (AND V70) FIXED
059903,000206: 04,3422 55167 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
059904,000207: 04,3423 13447 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
059905,000208:
059906,000209: 04,3424 33517 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
059907,000210: 04,3425 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II). *
059908,000211: 04,3426 33520 +2 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
059909,000212: 04,3427 04607 TC BANKCALL # DISPLAY A FLASHING V21N01
059910,000213: 04,3430 20323 CADR GOXDSPF # TO REQUEST II.
059911,000214: 04,3431 13714 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
![]() |
Page 1387 |
059913,000216: 04,3432 13426 TCF OHWELL1 +2
059914,000217: 04,3433 03510 TC CK4V32 # DATA OR V32 RETURN
059915,000218: 04,3434 44743 CS BIT2
059916,000219: 04,3435 61173 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
059917,000220: 04,3436 00006 EXTEND # .GE. 3 AND .LE. 20D.
059918,000221: 04,3437 63426 BZMF OHWELL1 +2
059919,000222: 04,3440 41173 CS UPBUFF
059920,000223: 04,3441 64353 AD UP21
059921,000224: 04,3442 00006 EXTEND
059922,000225: 04,3443 63426 BZMF OHWELL1 +2
059923,000226: 04,3444 31173 CAE UPBUFF
059924,000227: 04,3445 55167 TS COMPNUMB # SAVE II IN COMPNUMB
059925,000228:
059926,000229: # UPBUFF LOADING SEQUENCE
059927,000230:
059928,000231: 04,3446 25172 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
059929,000232: 04,3447 33664 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION(ECADR) IN UPBUFF
059930,000233: 04,3450 61172 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED.
059931,000234: 04,3451 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3.
059932,000235: 04,3452 33520 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
059933,000236: 04,3453 04607 TC BANKCALL # DISPLAY A FLASHING V21N01
059934,000237: 04,3454 20323 CADR GOXDSPF # TO REQUEST DATA.
059935,000238: 04,3455 13714 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
059936,000239: 04,3456 13452 TCF OHWELL2 +3 # V33 PROCEED RETURN
059937,000240: 04,3457 03510 TC CK4V32 # DATA OR V32 RETURN
059938,000241: 04,3460 41172 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
059939,000242: 04,3461 61167 AD COMPNUMB # THE DATA WE EXPECTED.
059940,000243: 04,3462 00006 EXTEND
059941,000244: 04,3463 63465 BZMF UPVERIFY # YES- GO TO VERIFICATION SEQUENCE
059942,000245: 04,3464 13446 TCF OHWELL2 -1 # NO- REQUEST ADDITIONAL DATA.
059943,000246:
059944,000247: # VERIFY SEQUENCE
059945,000248:
059946,000249: 04,3465 33516 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
059947,000250: 04,3466 54156 TS MPAC +2 # IS TO BE STORED INTO R3.
059948,000251: 04,3467 33521 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
059949,000252: 04,3470 04607 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEST
059950,000253: 04,3471 20323 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
059951,000254: 04,3472 13714 TCF UPOUT4 # V34 TERMINATE UPDATE(P27) RETURN
059952,000255: 04,3473 13522 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
059953,000256: 04,3474 03510 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
059954,000257: 04,3475 31166 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SENT
059955,000258: 04,3476 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
059956,000259: 04,3477 63465 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
059957,000260: 04,3500 41166 CS UPTEMP
059958,000261: 04,3501 61167 AD COMPNUMB
059959,000262: 04,3502 64744 AD BIT1
059960,000263: 04,3503 00006 EXTEND
![]() |
Page 1388 |
059962,000265: 04,3504 63465 BZMF UPVERIFY # NO
059963,000266: 04,3505 33664 CAF ADUPBFM1 # YES- BASED ON THE COMPONENT NO. INDEX
059964,000267: 04,3506 61166 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
059965,000268: 04,3507 13451 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANGE.
059966,000269:
059967,000270: 04,3510 04,3714 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TO TERMINATE UPDATE
059968,000271:
059969,000272: # CHECK FOR VERB 32 SEQUENCE
059970,000273:
059971,000274: 04,3510 40154 CK4V32 CS MPAC # ON DATA RETURN FROM 'GOXDSPF'
059972,000275: 04,3511 74737 MASK BIT6 # ON DATA RETURN FROM "GOXDSP"& THE CON-
059973,000276: 04,3512 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
059974,000277: 04,3513 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
059975,000278: 04,3514 50002 INDEX Q
059976,000279: 04,3515 77771 TC 0 -6 # V32 ENCOUNTERED - GO BACK AND GET DATA
059977,000280:
059978,000281: 04,3516 01166 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
059979,000282: 04,3517 01173 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
059980,000283: 04,3520 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01
059981,000284: 04,3521 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02
059982,000285: 04,3522 4353 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
059983,000286: 04,3522 4747 UPDTPHAS EQUALS FIVE
059984,000287:
059985,000288: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
059986,000289:
059987,000290: 04,3522 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
059988,000291:
059989,000292: 04,3522 00004 INHINT
059990,000293:
059991,000294: 04,3523 30103 CAE FLAGWRD7 # INVERT VERIFLAG(BIT 3 OF FLAGWRD7) TO
059992,000295: 04,3524 56001 XCH L # INDICATE TO THE GROUND(VIA DOWNLINK)
059993,000296: 04,3525 34742 CAF VERIFBIT # THAT THE V33 (WHICH THE GROUND SENT TO
059994,000297: 04,3526 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
059995,000298: 04,3527 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
059996,000299: 04,3530 54103 TS FLAGWRD7
059997,000300:
059998,000301: 04,3531 05355 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
059999,000302: 04,3532 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS.
060000,000303: 04,3533 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT)
060001,000304:
060002,000305: 04,3534 44743 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED,
060003,000306: 04,3535 61171 AD UPVERB # THAT IS, IF IT'S A V70 - V72.
060004,000307: 04,3536 00006 EXTEND # GO TO UPEND73 IF IT'S A V73.
060005,000308: 04,3537 63546 BZMF UPFNDVAC
060006,000309:
060007,000310: # VERB 73 BRANCH
060008,000311:
060009,000312: 04,3540 00006 UPEND73 EXTEND # V73-PERFORM DP OCTAL AGC CLOCK INCREMENT
060010,000313: 04,3541 31174 DCA UPBUFF
![]() |
Page 1389 |
060012,000315: 04,3542 53204 DXCH UPBUFF +8D
060013,000316: 04,3543 03571 TC TIMEDIDL
060014,000317: 04,3544 04355 TC FALTON # ERROR- TURN ON *OPERATOR ERROR* LIGHT
060015,000318: 04,3545 03714 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
060016,000319:
060017,000320: 04,3546 34346 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
060018,000321: 04,3547 05076 TC FINDVAC # GET VAC AREA FOR 'CALL INTSTALL'
060019,000322: 04,3550 E3,1706 EBANK= TEPHEM
060020,000323: 04,3550 03553 10103 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
060021,000324:
060022,000325: 04,3552 05146 TC ENDOFJOB # 'TEPHEM' UPDATE BY V70)
060023,000326:
060024,000327: 04,3553 06060 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE--SO
060025,000328: 04,3554 77624 CALL # WAIT(PUT JOB TO SLEEP) IF ORBIT INT(OI)
060026,000329: 04,3555 27447 INTSTALL # IS IN PROGRESS--OR--GRAB OI AND RETURN
060027,000330: # TO UPWAKE IF OI IS NOT IN PROGRESS.
060028,000331:
060029,000332: 04,3556 77776 UPWAKE EXIT
060030,000333:
060031,000334: 04,3557 05355 TC PHASCHNG # RESTART PROTECT (GROUP 6)
060032,000335: 04,3560 04026 OCT 04026
060033,000336:
060034,000337: 04,3561 05506 TC UPFLAG # SET INTEGRATION RESTART BIT
060035,000338: 04,3562 00236 ADRES REINTFLG
060036,000339: 04,3563 00004 INHINT
060037,000340: 04,3564 UPPART3 EQUALS
060038,000341:
060039,000342: 04,3564 51171 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
060040,000343: 04,3565 13566 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
060041,000344: 04,3566 13725 TCF UPEND70 # V70
060042,000345: 04,3567 13634 TCF UPEND71 # V71
060043,000346: 04,3570 13666 TCF UPEND72 # V72
060044,000347:
060045,000348: # ROUTINE TO INCREMENT CLOCK(TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
060046,000349:
060047,000350: 04,3571 00006 TIMEDIDL EXTEND
060048,000351: 04,3572 23166 QXCH UPTEMP # SAVE Q FOR RETURN
060049,000352: 04,3573 34746 CAF ZERO # ZERO AND SAVE TIME2,TIME1
060050,000353: 04,3574 22007 ZL
060051,000354: 04,3575 52025 DXCH TIME2
060052,000355: 04,3576 53216 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
060053,000356:
060054,000357: 04,3577 34747 CAF UPDTPHAS # DO
060055,000358: 04,3600 54001 TS L # A
060056,000359: 04,3601 40000 COM # QUICK
060057,000360: 04,3602 52764 DXCH -PHASE6 # PHASCHNG
060058,000361:
060059,000362: 04,3603 00004 TIMEDIDR INHINT
![]() |
Page 1390 |
060061,000364: 04,3604 34746 CAF ZERO
060062,000365: 04,3605 22007 ZL # PICK UP INCREMENTER(AND ZERO
060063,000366: 04,3606 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND
060064,000367: 04,3607 53204 DXCH UPBUFF +8D # STORE IT
060065,000368: 04,3610 52155 DXCH MPAC # INTO MPAC FOR TPAGREE.
060066,000369:
060067,000370: 04,3611 00006 EXTEND
060068,000371: 04,3612 31216 DCA UPBUFF +18D
060069,000372: 04,3613 20155 DAS MPAC # FORM SUM IN MPAC
060070,000373: 04,3614 00006 EXTEND
060071,000374: 04,3615 13624 BZF DELTAOK # TEST FOR OVERFLOW
060072,000375: 04,3616 34746 CAF ZERO
060073,000376: 04,3617 53216 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
060074,000377: 04,3620 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR
060075,000378:
060076,000379: 04,3621 05355 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060077,000380: 04,3622 04026 OCT 04026
060078,000381:
060079,000382: 04,3623 01166 TC UPTEMP # GO TO ERROR EXIT
060080,000383:
060081,000384: 04,3624 07300 DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT
060082,000385: 04,3625 52155 DXCH MPAC
060083,000386: 04,3626 20025 DAS TIME2 # INCREMENT TIME2,TIME1
060084,000387:
060085,000388: 04,3627 05355 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060086,000389: 04,3630 04026 OCT 04026
060087,000390:
060088,000391: 04,3631 00004 INHINT
060089,000392: 04,3632 51166 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
060090,000393: 04,3633 00001 TC 1 # NORMAL RETURN
060091,000394:
060092,000395: # VERB 71 BRANCH
060093,000396:
060094,000397: 04,3634 31174 UPEND71 CAE UPBUFF +1 # SET EBANK
060095,000398: 04,3635 54003 TS EBANK # AND
060096,000399: 04,3636 74350 MASK LOW8 # CALCULATE
060097,000400: 04,3637 55166 TS UPTEMP # S-REG VALUE OF RECEIVING AREA
060098,000401:
060099,000402: 04,3640 67766 AD NEG3 # IN THE PROCESS OF
060100,000403: 04,3641 61167 AD COMPNUMB # PERFORMING
060101,000404: 04,3642 00006 EXTEND # THIS UPDATE
060102,000405: 04,3643 13651 BZF STORLP71 # WILL WE
060103,000406: 04,3644 74734 MASK BIT9 # OVERFLOW
060104,000407: 04,3645 10000 CCS A # INTO THE NEXT EBANK....
060105,000408: 04,3646 13762 TCF UPERROUT # YES
060106,000409:
060107,000410: 04,3647 37766 CA NEG3 # NO- CALCULATE NUMBER OF
060108,000411: 04,3650 61167 AD COMPNUMB # WORDS TO BE STORED MINUS ONE
060109,000412: 04,3651 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
060110,000413: 04,3652 50000 INDEX A # TAKE NEXT UPDATE WORD FROM
060111,000414: 04,3653 31175 CA UPBUFF +2 # UPBUFF AND
![]() |
Page 1391 |
060113,000416: 04,3654 54001 TS L # SAVE IT IN L
060114,000417: 04,3655 30154 CA MPAC # CALCULATE NEXT
060115,000418: 04,3656 61166 AD UPTEMP # RECEIVING ADDRESS
060116,000419: 04,3657 50000 INDEX A
060117,000420: 04,3660 E3,1400 EBANK= 1400
060118,000421: 04,3660 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
060119,000422: 04,3661 E3,1706 EBANK= TEPHEM
060120,000423: 04,3661 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
060121,000424: 04,3662 13651 TCF STORLP71 # YES
060122,000425: 04,3663 13713 TCF UPOUT # NO- THEN EXIT UPDATE PROGRAM
060123,000426: 04,3664 01172 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
060124,000427: 04,3665 13713 TCF UPOUT # NO- EXIT UPDATE(HERE WHEN COMPNUMB = 3)
060125,000428:
060126,000429: # VERB 72 BRANCH
060127,000430:
060128,000431: 04,3666 34744 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
060129,000432: 04,3667 71167 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE...
060130,000433: 04,3670 10000 CCS A
060131,000434: 04,3671 13673 TCF +2 # YES
060132,000435: 04,3672 13762 TCF UPERROUT # ERROR- SHOULD BE ODD NO. OF COMPONENTS
060133,000436: 04,3673 44743 CS BIT2
060134,000437: 04,3674 61167 AD COMPNUMB
060135,000438: 04,3675 54154 LDLOOP72 TS MPAC # NOW PERFORM THE UPDATE
060136,000439: 04,3676 50000 INDEX A
060137,000440: 04,3677 31174 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
060138,000441: 04,3700 22000 LXCH A
060139,000442: 04,3701 10154 CCS MPAC # SET POINTER TO ECADR(MUST BE CCS)
060140,000443: 04,3702 54154 TS MPAC
060141,000444: 04,3703 50000 INDEX A
060142,000445: 04,3704 31174 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
060143,000446: 04,3705 54003 TS EBANK # SET EBANK
060144,000447: 04,3706 74350 MASK LOW8 # ISOLATE RELATIVE ADDRESS
060145,000448: 04,3707 50000 INDEX A
060146,000449: 04,3710 E3,1400 EBANK= 1400
060147,000450: 04,3710 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
060148,000451: 04,3711 E3,1706 EBANK= TEPHEM
060149,000452: 04,3711 10154 CCS MPAC # ARE WE THROUGH THE V72 UPDATE...
060150,000453: 04,3712 13675 TCF LDLOOP72 # NO
060151,000454:
060152,000455: # NORMAL FINISH OF P27
060153,000456:
060154,000457: 04,3713 UPOUT EQUALS
060155,000458: 04,3713 03172 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
060156,000459: 04,3714 31170 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
060157,000460: 04,3715 05316 TC NEWMODEX +3
060158,000461: 04,3716 34746 CAF ZERO
060159,000462: 04,3717 54333 TS DNLSTCOD
060160,000463: 04,3720 03767 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
![]() |
Page 1392 |
060162,000465: 04,3721 00006 EXTEND # KILL GROUP 6.
060163,000466: 04,3722 34746 DCA NEG0
060164,000467: 04,3723 52764 DXCH -PHASE6
060165,000468:
060166,000469: 04,3724 05474 TC ENDEXT # EXTENDED VERB EXIT
060167,000470:
060168,000471: # VERB 70 BRANCH
060169,000472:
060170,000473: 04,3725 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
060171,000474: 04,3726 41174 DCS UPBUFF # TIME IN UPBUFF
060172,000475: 04,3727 53204 DXCH UPBUFF +8D
060173,000476: 04,3730 03571 TC TIMEDIDL # DECREMENT AGC CLOCK
060174,000477:
060175,000478: 04,3731 03762 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
060176,000479:
060177,000480: 04,3732 E3,1706 EBANK= TEPHEM
060178,000481: 04,3732 00006 EXTEND
060179,000482: 04,3733 41174 DCS UPBUFF # COPY DECREMENTERS FOR
060180,000483: 04,3734 53206 DXCH UPBUFF +10D # RESTART PROTECTION
060181,000484: 04,3735 00006 EXTEND
060182,000485: 04,3736 41174 DCS UPBUFF
060183,000486: 04,3737 53210 DXCH UPBUFF +12D
060184,000487:
060185,000488: 04,3740 05355 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060186,000489: 04,3741 04026 OCT 04026
060187,000490:
060188,000491: 04,3742 34746 CAF ZERO
060189,000492: 04,3743 22007 ZL
060190,000493: 04,3744 53206 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
060191,000494: 04,3745 21571 DAS TETCSM
060192,000495:
060193,000496: 04,3746 34746 CAF ZERO
060194,000497: 04,3747 22007 ZL
060195,000498: 04,3750 53210 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
060196,000499: 04,3751 21643 DAS TETLEM
060197,000500:
060198,000501: 04,3752 34746 CAF ZERO
060199,000502: 04,3753 22007 ZL
060200,000503: 04,3754 53174 DXCH UPBUFF
060201,000504: 04,3755 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM
060202,000505: 04,3756 27706 ADS TEPHEM
060203,000506:
060204,000507: 04,3757 05355 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060205,000508: 04,3760 04026 OCT 04026
060206,000509:
060207,000510: 04,3761 1173 EBANK= UPBUFF
060208,000511:
060209,000512: 04,3761 03713 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
060210,000513:
![]() |
Page 1393 |
060212,000515: # ERROR SEQUENCE
060213,000516:
060214,000517: 04,3762 04355 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
060215,000518: 04,3763 13713 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
060216,000519:
060217,000520: 04,3764 04355 +2 TC FALTON # TURN ON 'OPERATOR ERROR' LIGHT
060218,000521: 04,3765 03767 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
060219,000522: 04,3766 05474 TC ENDEXT # EXTENDED VERB EXIT
060220,000523: # (THE PURPOSE OF UPERROUT +2 EXIT IS
060221,000524: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT
060222,000525: # RESET ANY RESTART GROUPS)
060223,000526:
060224,000527: # :UPACTOFF: IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM(P27).
060225,000528:
060226,000529: 04,3767 44742 UPACTOFF CS BIT3
060227,000530: 04,3770 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
060228,000531: 04,3771 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
060229,000532: 04,3772 00002 TC Q
060230,000533:
End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc