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