Source Code
![]() |
These source-code files were transcribed from scans made from Don Eyles's personal
copy of Luminary 069. They were scanned at archive.org's Boston
facility, and the scanning was sponsored by Onno Hommes. The code was transcribed
from these scans by a team of volunteers who are referenced in the program
comments. Comments from the original source code are prefixed with a single '#' symbol,
whereas comments added later are prefixed by "##" or "###". In some cases, where
similar code blocks exist in previously-transcribed AGC programs (primarily
Luminary 99, from Apollo 11) those code blocks were used as a starting point and
then corrected to agree with the Luminary 69 scans. The full scans are available
at the Virtual AGC
project's collection at archive.org, while more-convenient reduced-size (but reduced-quality)
images are available at
the main Virtual AGC website. Report any errors noted by creating an
issue report at the Virtual AGC
project's GitHub repository. Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 069 OF AGC PROGRAM LUMINARY BY NASA 2021112-011 19:02 NOV. 25,1968Note that the date is the date of the printout, not the date of the program revision. |
059774,000002: ## Copyright: Public domain.
059775,000003: ## Filename: UPDATE_PROGRAM.agc
059776,000004: ## Purpose: The main source file for Luminary revision 069.
059777,000005: ## It is part of the source code for the original release
059778,000006: ## of the flight software for the Lunar Module's (LM) Apollo
059779,000007: ## Guidance Computer (AGC) for Apollo 10. The actual flown
059780,000008: ## version was Luminary 69 revision 2, which included a
059781,000009: ## newer lunar gravity model and only affected module 2.
059782,000010: ## This file is intended to be a faithful transcription, except
059783,000011: ## that the code format has been changed to conform to the
059784,000012: ## requirements of the yaYUL assembler rather than the
059785,000013: ## original YUL assembler.
059786,000014: ## Reference: pp. 1379-1389
059787,000015: ## Assembler: yaYUL
059788,000016: ## Contact: Ron Burkey <info@sandroid.org>.
059789,000017: ## Website: www.ibiblio.org/apollo/index.html
059790,000018: ## Mod history: 2016-12-13 MAS Created from Luminary 99.
059791,000019: ## 2016-12-18 MAS Updated from comment-proofed Luminary 99 version.
059792,000020: ## 2017-01-09 RSB Completed transcription. I made an effort to
059793,000021: ## correct all of the whitespace, but I believe that
059794,000022: ## whitespace was the only actual change.
059795,000023: ## 2017-01-16 MAS Fixed a page number and changed to spaces-only in
059796,000024: ## the line comments.
059797,000025: ## 2017-01-22 HG Add workaround for SBANK
059798,000026: ## 2017-01-28 RSB Proofed comment text using octopus/prooferComments
059799,000027: ## and fixed errors found.
059800,000028: ## 2017-02-09 RSB Comment-text fixes identified for Artemis 72.
059801,000029:
![]() |
Page 1379 |
059803,000031: # PROGRAM NAME: P27
059804,000032: # WRITTEN BY: KILROY/ DE WOLF
059805,000033:
059806,000034: # MOD NO: 6
059807,000035: # MOD BY: KILROY
059808,000036: # DATE: 01DEC67
059809,000037:
059810,000038: # LOG SECTION: UPDATE PROGRAM.
059811,000039:
059812,000040: # FUNCT. DESCR: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
059813,000041: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
059814,000042: # THE P27 PROGRAM WILL ACCEPT UPDATES
059815,000043: # ONLY DURING P00 FOR THE LM, AND ONLY DURING P00,
059816,000044: # P02, AND FRESH START FOR THE CSM
059817,000045:
059818,000046: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72 AND 73.
059819,000047:
059820,000048: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
059821,000049: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
059822,000050:
059823,000051: # NORMAL EXIT: TC ENDEXT
059824,000052:
059825,000053: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
059826,000054:
059827,000055: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS...
059828,000056: # 1. PRIOR TO VERIFLAG INVERSION(WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
059829,000057: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
059830,000058: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTORED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK
059831,000059: # ACTIVITY LIGHT IS TURNED OFF.(JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
059832,000060: # V70,V71,V72 OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
059833,000061: # 2. AFTER VERIFLAG INVERSION(WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
059834,000062: # PROTECTED AGAINST RESTARTS.
059835,000063:
059836,000064: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
059837,000065: # UPVERB (1) VERB NUMBER MINUS 70D (E.G. FOR V72, UPVERB = 72D - 70D = 2)
059838,000066: # UPOLDMOD (1) FOR MAJOR MODE INTERRUPTED BY P27.
059839,000067: # COMPNUMB (1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
059840,000068: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
059841,000069: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE
059842,000070:
059843,000071: # INPUT:
059844,000072:
059845,000073: # ENTRY: DESCRIPTION
059846,000074:
059847,000075: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
059848,000076: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
059849,000077: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
059850,000078: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
![]() |
Page 1380 |
059852,000080: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS,XXXXX,
059853,000081: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
059854,000082: # XXXXXE IT IS .GE. 3 .AND. .LE. 20D.,
059855,000083: # AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
059856,000084: # 9 NEXT BANK
059857,000085: # . SCALING IS SAME AS INTERNAL REGISTERS.
059858,000086:
059859,000087: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS,XXXXX, ARE
059860,000088: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
059861,000089: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
059862,000090: # . SCALING IS SAME AS INTERNAL REGISTERS.
059863,000091:
059864,000092: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
059865,000093: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
059866,000094: # CENTISECONDS SCALED AT (2)28.
059867,000095: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
059868,000096:
059869,000097: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
059870,000098: # COMPLEMENT BIT3 OF FLAGWORD7.
059871,000099:
059872,000100: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES--
059873,000101: # 1. CSM/LM STATE VECTOR UPDATE
059874,000102: # 2. REFSMMAT UPDATE
059875,000103:
059876,000104: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE----
059877,000105:
059878,000106: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
059879,000107:
059880,000108: # ENTRIES: DATA DEFINITION: SCALE FACTORS:
059881,000109: # V71E CONTIGUOUS BLOCK UPDATE VERB
059882,000110: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
059883,000111: # AAAAE ECADR OF 'UPSVFLAG'
059884,000112: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM - EARTH SPHERE OF INFLUENCE SCALING
059885,000113: # 00002 FOR CSM, 77775 FOR LEM - LUNAR SPHERE OF INFLUENCE SCALING
059886,000114: # XXXXXEXXXXXE X POSITION
059887,000115: # XXXXXEXXXXXE Y POSITION
059888,000116: # XXXXXEXXXXXE Z POSITION
059889,000117: # XXXXXEXXXXXE X VELOCITY
059890,000118: # XXXXXEXXXXXE Y VELOCITY
059891,000119: # XXXXXEXXXXXE Z VELOCITY
059892,000120: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
059893,000121: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
059894,000122:
059895,000123: # 2. REFSMMAT(ALL DATA ENTRIES IN OCTAL)
059896,000124: # ENTRIES: DATA DEFINITIONS: SCALE FACTORS:
![]() |
Page 1381 |
059898,000126: # V71E CONTIGUOUS BLOCK UPDATE VERB
059899,000127: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
059900,000128: # AAAAE ECADR OF 'REFSMMAT'
059901,000129: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
059902,000130: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
059903,000131: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
059904,000132: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
059905,000133: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
059906,000134: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
059907,000135: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
059908,000136: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
059909,000137: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
059910,000138: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED.
059911,000139:
059912,000140:
059913,000141: 07,3746 BANK 07
059914,000142: 43,2000 SETLOC EXTVERBS
059915,000143: 43,2000 BANK
059916,000144:
059917,000145: 43,3732 E3,1706 EBANK= TEPHEM
059918,000146:
059919,000147: 43,3732 COUNT* $$/P27
059920,000148: 43,3732 34755 V70UPDAT CAF UP70 # COMES HERE ON V70E
059921,000149: 43,3733 13741 TCF V73UPDAT +1
059922,000150:
059923,000151: 43,3734 34753 V71UPDAT CAF UP71 # COMES HERE ON V71E
059924,000152: 43,3735 13741 TCF V73UPDAT +1
059925,000153:
059926,000154: 43,3736 34752 V72UPDAT CAF UP72 # COMES HERE ON V72E
059927,000155: 43,3737 13741 TCF V73UPDAT +1
059928,000156:
059929,000157: 43,3740 36244 V73UPDAT CAF UP73 # COMES HERE ON V73E
059930,000158:
059931,000159: 43,3741 55166 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
059932,000160:
059933,000161: 43,3742 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
059934,000162: # TURN*OPERATOR ERROR* ON AND TERMINATEJOB
059935,000163:
059936,000164: 43,3743 31011 CA MODREG # CHECK IF UPDATE ALLOWED
059937,000165: 43,3744 00006 EXTEND # FIRST CHECK FOR MODREG = +0, -0
059938,000166: 43,3745 13750 BZF +3 # (+0 = P00, -0 = FRESHSTART)
059939,000167: 43,3746 04635 UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT
059940,000168: 43,3747 11703 CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT
059941,000169:
059942,000170: 43,3750 31011 CAE MODREG # UPDATE ALLOWED.
059943,000171: 43,3751 43,3746 CKMDMORE = UPERROR
059944,000172: 43,3751 55171 TS UPOLDMOD # SAVE CURRENT MAJOR MODE
![]() |
Page 1382 |
059946,000174: 43,3752 31166 CAE UPVERBSV # SET UPVERB TO INDICATE TO P27
059947,000175:
059948,000176: 43,3753 55172 TS UPVERB # WHICH EXTENDED VERB CALLED IT.
059949,000177:
059950,000178: 43,3754 34753 CAF ONE
059951,000179: 43,3755 55173 TS UPCOUNT # INITIALIZE UPCOUNT TO 1
059952,000180:
059953,000181: 43,3756 04635 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
059954,000182: 43,3757 11322 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
059955,000183:
059956,000184: 43,3760 4755 UP70 EQUALS ZERO
059957,000185: 43,3760 4753 UP71 EQUALS ONE
059958,000186: 43,3760 4752 UP72 EQUALS TWO
059959,000187: 43,3760 6244 UP73 EQUALS THREE
059960,000188:
059961,000189: 04,3322 BANK 04
059962,000190: 04,2000 SETLOC UPDATE2
059963,000191: 04,2000 BANK
059964,000192:
059965,000193: 04,3322 COUNT* $$/P27
059966,000194:
059967,000195: 04,3322 UPPART2 EQUALS # UPDATE PROGRAM - PART 2
059968,000196:
059969,000197: 04,3322 05353 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
059970,000198: 04,3323 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
059971,000199: 04,3324 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO
![]() |
[WORKAROUND] HG |
059973,000201: 04,3325 40,2000 SBANK= PINSUPER
![]() |
[WORKAROUND] HG |
059975,000203: 04,3325 1174 EBANK= UPBUFF
059976,000204: 04,3325 03633 10102 2CADR UPOUT +1
059977,000205:
059978,000206: 04,3327 34753 CAF ONE
059979,000207: 04,3330 54332 TS DNLSTCOD # DOWNLIST
059980,000208:
059981,000209: 04,3331 05311 TC NEWMODEX # SET MAJOR MODE = 27
059982,000210: 04,3332 00033 DEC 27 B-14
059983,000211:
059984,000212: 04,3333 51172 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
059985,000213: 04,3334 13335 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
059986,000214: 04,3335 13340 TCF +3 # V70 FIXED. (OF COMPONENTS.
059987,000215: 04,3336 13343 TCF OHWELL1 # V71 VARIABLE - GO GET NO. OF COMPONENTS
059988,000216: 04,3337 13343 TCF OHWELL1 # V72 VARIABLE - GO GET NO. OF COMPONENTS
059989,000217: 04,3340 34752 CA TWO # V73 (AND V70) FIXED
059990,000218: 04,3341 55170 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
059991,000219: 04,3342 13366 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
059992,000220:
059993,000221: 04,3343 33436 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
059994,000222: 04,3344 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II).*
059995,000223: 04,3345 33437 +2 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
059996,000224: 04,3346 04616 TC BANKCALL # DISPLAY A FLASHING V21N01
![]() |
Page 1383 |
059998,000226: 04,3347 20212 CADR GOXDSPF # TO REQUEST II.
059999,000227: 04,3350 13633 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
060000,000228: 04,3351 13345 TCF OHWELL1 +2
060001,000229: 04,3352 03427 TC CK4V32 # DATA OR V32 RETURN
060002,000230: 04,3353 44752 CS BIT2
060003,000231: 04,3354 61174 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
060004,000232: 04,3355 00006 EXTEND # .GE. 3 AND .LE. 20D.
060005,000233: 04,3356 63345 BZMF OHWELL1 +2
060006,000234: 04,3357 41174 CS UPBUFF
060007,000235: 04,3360 64362 AD UP21
060008,000236: 04,3361 00006 EXTEND
060009,000237: 04,3362 63345 BZMF OHWELL1 +2
060010,000238: 04,3363 31174 CAE UPBUFF
060011,000239: 04,3364 55170 TS COMPNUMB # SAVE II IN COMPNUMB
060012,000240:
060013,000241: # UPBUFF LOADING SEQUENCE
060014,000242:
060015,000243: 04,3365 25173 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
060016,000244: 04,3366 33603 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION(ECADR) IN UPBUFF
060017,000245: 04,3367 61173 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED.
060018,000246: 04,3370 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3.
060019,000247: 04,3371 33437 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
060020,000248: 04,3372 04616 TC BANKCALL # DISPLAY A FLASHING V21N01
060021,000249: 04,3373 20212 CADR GOXDSPF # TO REQUEST DATA.
060022,000250: 04,3374 13633 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
060023,000251: 04,3375 13371 TCF OHWELL2 +3 # V33 PROCEED RETURN
060024,000252: 04,3376 03427 TC CK4V32 # DATA OR V32 RETURN
060025,000253: 04,3377 41173 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
060026,000254: 04,3400 61170 AD COMPNUMB # THE DATA WE EXPECTED.
060027,000255: 04,3401 00006 EXTEND
060028,000256: 04,3402 63404 BZMF UPVERIFY # YES- GO TO VERIFICATION SEQUENCE
060029,000257: 04,3403 13365 TCF OHWELL2 -1 # NO- REQUEST ADDITIONAL DATA.
060030,000258:
060031,000259: # VERIFY SEQUENCE
060032,000260:
060033,000261: 04,3404 33435 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
060034,000262: 04,3405 54156 TS MPAC +2 # IS TO BE STORED INTO R3.
060035,000263: 04,3406 33440 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
060036,000264: 04,3407 04616 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEST
060037,000265: 04,3410 20212 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
060038,000266: 04,3411 13633 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
060039,000267: 04,3412 13441 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
060040,000268: 04,3413 03427 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
060041,000269: 04,3414 31167 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SENT
060042,000270: 04,3415 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
060043,000271: 04,3416 63404 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
060044,000272: 04,3417 41167 CS UPTEMP
060045,000273: 04,3420 61170 AD COMPNUMB
![]() |
Page 1384 |
060047,000275: 04,3421 64753 AD BIT1
060048,000276: 04,3422 00006 EXTEND
060049,000277: 04,3423 63404 BZMF UPVERIFY # NO
060050,000278: 04,3424 33603 CAF ADUPBFM1 # YES- BASED ON THE COMPONENT NO. INDEX
060051,000279: 04,3425 61167 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
060052,000280: 04,3426 13370 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANGE.
060053,000281:
060054,000282: 04,3427 04,3633 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TO TERMINATE UPDATE
060055,000283:
060056,000284: # CHECK FOR VERB 32 SEQUENCE
060057,000285:
060058,000286: 04,3427 40154 CK4V32 CS MPAC # ON DATA RETURN FROM 'GOXDSPF'
060059,000287: 04,3430 74746 MASK BIT6 # ON DATA RETURN FROM "GOXDSP"& THE CON-
060060,000288: 04,3431 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
060061,000289: 04,3432 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
060062,000290: 04,3433 50002 INDEX Q
060063,000291: 04,3434 77771 TC 0 -6 # V32 ENCOUNTERED - GO BACK AND GET DATA
060064,000292:
060065,000293: 04,3435 01167 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
060066,000294: 04,3436 01174 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
060067,000295: 04,3437 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01
060068,000296: 04,3440 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02
060069,000297: 04,3441 4362 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
060070,000298: 04,3441 4756 UPDTPHAS EQUALS FIVE
060071,000299:
060072,000300: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
060073,000301:
060074,000302: 04,3441 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
060075,000303:
060076,000304: 04,3441 00004 INHINT
060077,000305:
060078,000306: 04,3442 30103 CAE FLAGWRD7 # INVERT VERIFLAG(BIT 3 OF FLAGWRD7) TO
060079,000307: 04,3443 56001 XCH L # INDICATE TO THE GROUND(VIA DOWNLINK)
060080,000308: 04,3444 34751 CAF VERIFBIT # THAT THE V33 (WHICH THE GROUND SENT TO
060081,000309: 04,3445 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
060082,000310: 04,3446 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
060083,000311: 04,3447 54103 TS FLAGWRD7
060084,000312:
060085,000313: 04,3450 05353 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
060086,000314: 04,3451 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS.
060087,000315: 04,3452 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT)
060088,000316:
060089,000317: 04,3453 44752 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED,
060090,000318: 04,3454 61172 AD UPVERB # THAT IS, IF IT'S A V70 - V72.
060091,000319: 04,3455 00006 EXTEND # GO TO UPEND73 IF IT'S A V73.
060092,000320: 04,3456 63465 BZMF UPFNDVAC
060093,000321:
060094,000322: # VERB 73 BRANCH
![]() |
Page 1385 |
060096,000324: 04,3457 00006 UPEND73 EXTEND # V73-PERFORM DP OCTAL AGC CLOCK INCREMENT
060097,000325:
060098,000326: 04,3460 31175 DCA UPBUFF
060099,000327: 04,3461 53205 DXCH UPBUFF +8D
060100,000328: 04,3462 03510 TC TIMEDIDL
060101,000329: 04,3463 04364 TC FALTON # ERROR- TURN ON *OPERATOR ERROR* LIGHT
060102,000330: 04,3464 03633 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
060103,000331:
060104,000332: 04,3465 34355 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
060105,000333: 04,3466 05105 TC FINDVAC # GET VAC AREA FOR 'CALL INTSTALL'
060106,000334: 04,3467 E3,1706 EBANK= TEPHEM
060107,000335: 04,3467 03472 10103 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
060108,000336:
060109,000337: 04,3471 05155 TC ENDOFJOB # 'TEPHEM' UPDATE BY V70)
060110,000338:
060111,000339: 04,3472 06036 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE--SO
060112,000340: 04,3473 77624 CALL # WAIT(PUT JOB TO SLEEP) IF ORBIT INT(OI)
060113,000341: 04,3474 27412 INTSTALL # IS IN PROGRESS--OR--GRAB OI AND RETURN
060114,000342: # TO UPWAKE IF OI IS NOT IN PROGRESS.
060115,000343:
060116,000344: 04,3475 77776 UPWAKE EXIT
060117,000345:
060118,000346: 04,3476 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060119,000347: 04,3477 04026 OCT 04026
060120,000348:
060121,000349: 04,3500 05504 TC UPFLAG # SET INTEGRATION RESTART BIT
060122,000350: 04,3501 00236 ADRES REINTFLG
060123,000351: 04,3502 00004 INHINT
060124,000352: 04,3503 UPPART3 EQUALS
060125,000353:
060126,000354: 04,3503 51172 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
060127,000355: 04,3504 13505 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
060128,000356: 04,3505 13644 TCF UPEND70 # V70
060129,000357: 04,3506 13553 TCF UPEND71 # V71
060130,000358: 04,3507 13605 TCF UPEND72 # V72
060131,000359:
060132,000360: # ROUTINE TO INCREMENT CLOCK(TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
060133,000361:
060134,000362: 04,3510 00006 TIMEDIDL EXTEND
060135,000363: 04,3511 23167 QXCH UPTEMP # SAVE Q FOR RETURN
060136,000364: 04,3512 34755 CAF ZERO # ZERO AND SAVE TIME2,TIME1
060137,000365: 04,3513 22007 ZL
060138,000366: 04,3514 52025 DXCH TIME2
060139,000367: 04,3515 53217 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
060140,000368:
060141,000369: 04,3516 34756 CAF UPDTPHAS # DO
060142,000370: 04,3517 54001 TS L # A
060143,000371: 04,3520 40000 COM # QUICK
060144,000372: 04,3521 52765 DXCH -PHASE6 # PHASCHNG
![]() |
Page 1386 |
060146,000374: 04,3522 00004 TIMEDIDR INHINT
060147,000375:
060148,000376: 04,3523 34755 CAF ZERO
060149,000377: 04,3524 22007 ZL # PICK UP INCREMENTER(AND ZERO
060150,000378: 04,3525 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND
060151,000379: 04,3526 53205 DXCH UPBUFF +8D # STORE IT
060152,000380: 04,3527 52155 DXCH MPAC # INTO MPAC FOR TPAGREE.
060153,000381:
060154,000382: 04,3530 00006 EXTEND
060155,000383: 04,3531 31217 DCA UPBUFF +18D
060156,000384: 04,3532 20155 DAS MPAC # FORM SUM IN MPAC
060157,000385: 04,3533 00006 EXTEND
060158,000386: 04,3534 13543 BZF DELTAOK # TEST FOR OVERFLOW
060159,000387: 04,3535 34755 CAF ZERO
060160,000388: 04,3536 53217 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
060161,000389: 04,3537 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR
060162,000390:
060163,000391: 04,3540 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060164,000392: 04,3541 04026 OCT 04026
060165,000393:
060166,000394: 04,3542 01167 TC UPTEMP # GO TO ERROR EXIT
060167,000395:
060168,000396: 04,3543 07256 DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT
060169,000397: 04,3544 52155 DXCH MPAC
060170,000398: 04,3545 20025 DAS TIME2 # INCREMENT TIME2,TIME1
060171,000399:
060172,000400: 04,3546 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060173,000401: 04,3547 04026 OCT 04026
060174,000402:
060175,000403: 04,3550 00004 INHINT
060176,000404: 04,3551 51167 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
060177,000405: 04,3552 00001 TC 1 # NORMAL RETURN
060178,000406:
060179,000407: # VERB 71 BRANCH
060180,000408:
060181,000409: 04,3553 31175 UPEND71 CAE UPBUFF +1 # SET EBANK
060182,000410: 04,3554 54003 TS EBANK # AND
060183,000411: 04,3555 74357 MASK LOW8 # CALCULATE
060184,000412: 04,3556 55167 TS UPTEMP # S-REG VALUE OF RECEIVING AREA
060185,000413:
060186,000414: 04,3557 67744 AD NEG3 # IN THE PROCESS OF
060187,000415: 04,3560 61170 AD COMPNUMB # PERFORMING
060188,000416: 04,3561 00006 EXTEND # THIS UPDATE
060189,000417: 04,3562 13570 BZF STORLP71 # WILL WE
060190,000418: 04,3563 74743 MASK BIT9 # OVERFLOW
060191,000419: 04,3564 10000 CCS A # INTO THE NEXT EBANK....
060192,000420: 04,3565 13701 TCF UPERROUT # YES
060193,000421:
060194,000422: 04,3566 37744 CA NEG3 # NO- CALCULATE NUMBER OF
060195,000423: 04,3567 61170 AD COMPNUMB # WORDS TO BE STORED MINUS ONE
060196,000424: 04,3570 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
![]() |
Page 1387 |
060198,000426: 04,3571 50000 INDEX A # TAKE NEXT UPDATE WORD FROM
060199,000427: 04,3572 31176 CA UPBUFF +2 # UPBUFF AND
060200,000428: 04,3573 54001 TS L # SAVE IT IN L
060201,000429: 04,3574 30154 CA MPAC # CALCULATE NEXT
060202,000430: 04,3575 61167 AD UPTEMP # RECEIVING ADDRESS
060203,000431: 04,3576 50000 INDEX A
060204,000432: 04,3577 E3,1400 EBANK= 1400
060205,000433: 04,3577 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
060206,000434: 04,3600 E3,1706 EBANK= TEPHEM
060207,000435: 04,3600 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
060208,000436: 04,3601 13570 TCF STORLP71 # YES
060209,000437: 04,3602 13632 TCF UPOUT # NO- THEN EXIT UPDATE PROGRAM
060210,000438: 04,3603 01173 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
060211,000439: 04,3604 13632 TCF UPOUT # NO- EXIT UPDATE(HERE WHEN COMPNUMB = 3)
060212,000440:
060213,000441: # VERB 72 BRANCH
060214,000442:
060215,000443: 04,3605 34753 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
060216,000444: 04,3606 71170 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ...
060217,000445: 04,3607 10000 CCS A
060218,000446: 04,3610 13612 TCF +2 # YES
060219,000447: 04,3611 13701 TCF UPERROUT # ERROR- SHOULD BE ODD NO. OF COMPONENTS
060220,000448: 04,3612 44752 CS BIT2
060221,000449: 04,3613 61170 AD COMPNUMB
060222,000450: 04,3614 54154 LDLOOP72 TS MPAC # NOW PERFORM THE UPDATE
060223,000451: 04,3615 50000 INDEX A
060224,000452: 04,3616 31175 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
060225,000453: 04,3617 22000 LXCH A
060226,000454: 04,3620 10154 CCS MPAC # SET POINTER TO ECADR (MUST BE CCS)
060227,000455: 04,3621 54154 TS MPAC
060228,000456: 04,3622 50000 INDEX A
060229,000457: 04,3623 31175 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
060230,000458: 04,3624 54003 TS EBANK # SET EBANK
060231,000459: 04,3625 74357 MASK LOW8 # ISOLATE RELATIVE ADDRESS
060232,000460: 04,3626 50000 INDEX A
060233,000461: 04,3627 E3,1400 EBANK= 1400
060234,000462: 04,3627 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
060235,000463: 04,3630 E3,1706 EBANK= TEPHEM
060236,000464: 04,3630 10154 CCS MPAC # ARE WE THROUGH THE V72 UPDATE...
060237,000465: 04,3631 13614 TCF LDLOOP72 # NO
060238,000466:
060239,000467: # NORMAL FINISH OF P27
060240,000468:
060241,000469: 04,3632 UPOUT EQUALS
060242,000470: 04,3632 03106 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
060243,000471: 04,3633 31171 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
060244,000472: 04,3634 05314 TC NEWMODEX +3
060245,000473: 04,3635 34755 CAF ZERO
![]() |
Page 1388 |
060247,000475: 04,3636 54332 TS DNLSTCOD
060248,000476: 04,3637 03706 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
060249,000477:
060250,000478: 04,3640 00006 EXTEND # KILL GROUP 6.
060251,000479: 04,3641 34755 DCA NEG0
060252,000480: 04,3642 52765 DXCH -PHASE6
060253,000481:
060254,000482: 04,3643 05472 TC ENDEXT # EXTENDED VERB EXIT
060255,000483:
060256,000484: # VERB 70 BRANCH
060257,000485:
060258,000486: 04,3644 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
060259,000487: 04,3645 41175 DCS UPBUFF # TIME IN UPBUFF
060260,000488: 04,3646 53205 DXCH UPBUFF +8D
060261,000489: 04,3647 03510 TC TIMEDIDL # DECREMENT AGC CLOCK
060262,000490:
060263,000491: 04,3650 03701 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
060264,000492:
060265,000493: 04,3651 E3,1706 EBANK= TEPHEM
060266,000494: 04,3651 00006 EXTEND
060267,000495: 04,3652 41175 DCS UPBUFF # COPY DECREMENTERS FOR
060268,000496: 04,3653 53207 DXCH UPBUFF +10D # RESTART PROTECTION
060269,000497: 04,3654 00006 EXTEND
060270,000498: 04,3655 41175 DCS UPBUFF
060271,000499: 04,3656 53211 DXCH UPBUFF +12D
060272,000500:
060273,000501: 04,3657 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060274,000502: 04,3660 04026 OCT 04026
060275,000503:
060276,000504: 04,3661 34755 CAF ZERO
060277,000505: 04,3662 22007 ZL
060278,000506: 04,3663 53207 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
060279,000507: 04,3664 21571 DAS TETCSM
060280,000508:
060281,000509: 04,3665 34755 CAF ZERO
060282,000510: 04,3666 22007 ZL
060283,000511: 04,3667 53211 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
060284,000512: 04,3670 21643 DAS TETLEM
060285,000513:
060286,000514: 04,3671 34755 CAF ZERO
060287,000515: 04,3672 22007 ZL
060288,000516: 04,3673 53175 DXCH UPBUFF
060289,000517: 04,3674 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM
060290,000518: 04,3675 27706 ADS TEPHEM
060291,000519:
060292,000520: 04,3676 05353 TC PHASCHNG # RESTART PROTECT(GROUP 6)
060293,000521: 04,3677 04026 OCT 04026
060294,000522:
060295,000523: 04,3700 1174 EBANK= UPBUFF
![]() |
Page 1389 |
060297,000525: 04,3700 03632 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
060298,000526:
060299,000527:
060300,000528: # ERROR SEQUENCE
060301,000529:
060302,000530: 04,3701 04364 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
060303,000531: 04,3702 13632 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
060304,000532:
060305,000533: 04,3703 04364 +2 TC FALTON # TURN ON 'OPERATOR ERROR' LIGHT
060306,000534: 04,3704 03706 TC UPACTOFF # TURN OFF'UPLINK ACTIVITY'LIGHT
060307,000535: 04,3705 05472 TC ENDEXT # EXTENDED VERB EXIT
060308,000536: # (THE PURPOSE OF UPERROUT +2 EXIT IS
060309,000537: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT
060310,000538: # RESET ANY RESTART GROUPS)
060311,000539:
060312,000540: # :UPACTOFF: IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
060313,000541:
060314,000542: 04,3706 44751 UPACTOFF CS BIT3
060315,000543: 04,3707 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
060316,000544: 04,3710 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
060317,000545: 04,3711 00002 TC Q
060318,000546:
End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc