Source Code
063246,000001: # Copyright: Public domain.
063247,000002: # Filename: UPDATE_PROGRAM.agc
063248,000003: # Purpose: Part of the source code for Colossus, build 249.
063249,000004: # It is part of the source code for the Command Module's (CM)
063250,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9.
063251,000006: # Assembler: yaYUL
063252,000007: # Reference: Starts at p. 1487 of 1701.pdf.
063253,000008: # Contact: Ron Burkey <info@sandroid.org>.
063254,000009: # Website: www.ibiblio.org/apollo/index.html
063255,000010: # Mod history: 08/30/04 RSB. Adapted from corresponding Luminary131 file.
063256,000011: # 05/14/05 RSB Corrected website reference above.
063257,000012:
063258,000013: # The contents of the "Colossus249" files, in general, are transcribed
063259,000014: # from a scanned document obtained from MIT's website,
063260,000015: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this
063261,000016: # document read, in part:
063262,000017:
063263,000018: # Assemble revision 249 of AGC program Colossus by NASA
063264,000019: # 2021111-041. October 28, 1968.
063265,000020:
063266,000021: # This AGC program shall also be referred to as
063267,000022: # Colossus 1A
063268,000023:
063269,000024: # Prepared by
063270,000025: # Massachussets Institute of Technology
063271,000026: # 75 Cambridge Parkway
063272,000027: # Cambridge, Massachusetts
063273,000028: # under NASA contract NAS 9-4065.
063274,000029:
063275,000030: # Refer directly to the online document mentioned above for further information.
063276,000031: # Please report any errors (relative to 1701.pdf) to info@sandroid.org.
063277,000032:
063278,000033: # In some cases, where the source code for Luminary 131 overlaps that of
063279,000034: # Colossus 249, this code is instead copied from the corresponding Luminary 131
063280,000035: # source file, and then is proofed to incorporate any changes.
063281,000036:
063282,000037: # Page 1487
063283,000038: # PROGRAM NAME: P27
063284,000039: # WRITTEN BY: KILROY/ DE WOLF
063285,000040:
063286,000041: # MOD NO: 0
063287,000042: # MOD BY: KILROY
063288,000043: # DATE: 01DEC67
063289,000044:
063290,000045: # LOG SECTION: UPDATE PROGRAM.
063291,000046:
063292,000047: # FUNCT. DESCR.: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
063293,000048: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
063294,000049: # THE P27 PROGRAM WILL ACCEPT UPDATES
063295,000050: # ONLY DURING P00 FOR THE LM, AND ONLY DURINT P00,
063296,000051: # P02, AND FRESH START FOR THE CSM.
063297,000052:
063298,000053: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72, AND 73.
063299,000054:
063300,000055: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
063301,000056: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
063302,000057:
063303,000058: # NORMAL EXIT: TC ENDEXT
063304,000059:
063305,000060: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
063306,000061:
063307,000062: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ...
063308,000063: # 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
063309,000064: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
063310,000065: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTROED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINE
063311,000066: # ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
063312,000067: # V70,V71,V72, OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
063313,000068: # 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
063314,000069: # PROTECTED AGAINST RESTARTS.
063315,000070:
063316,000071: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
063317,000072: # UPVERB (1) VERB NUMBER MINUS 70D (E.G., FOR V72, UPVERB = 72D - 70D = 2)
063318,000073: # UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27.
063319,000074: # COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
063320,000075: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
063321,000076: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE.
063322,000077:
063323,000078: # INPUT:
063324,000079:
063325,000080: # ENTRY DESCRIPTION
063326,000081: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
063327,000082: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
063328,000083: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
063329,000084: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
063330,000085: # Page 1488
063331,000086: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX,
063332,000087: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
063333,000088: # XXXXXE IT IS .GE. 3 .AND. .LE. 200.,
063334,000089: # ... AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
063335,000090: # NEXT BANK. SCALING IS SAME AS INTERNAL REGISTERS.
063336,000091: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE
063337,000092: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
063338,000093: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
063339,000094: # ... SCALING IS SAME AS INTERNAL REGISTERS.
063340,000095:
063341,000096: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
063342,000097: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
063343,000098: # CENTISECONDS SCALED AT (2)28).
063344,000099: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
063345,000100:
063346,000101: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
063347,000102: # COMPLEMENT BIT3 OF FLAGWORD7.
063348,000103:
063349,000104: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --
063350,000105: # 1. CSM/LM STATE VECTOR UPDATE
063351,000106: # 2. REFSMMAT UPDATE
063352,000107:
063353,000108: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE ---
063354,000109:
063355,000110: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
063356,000111: # ENTRIES: DATA DEFINITION: SCALE FACTORS:
063357,000112: # V71E CONTIGUOUS BLOCK UPDATE VERB
063358,000113: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
063359,000114: # AAAAE ECADR OF `UPSVFLAG'
063360,000115: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM -- EARTH SPHERE OF INFLUENCE SCALING
063361,000116: # 00002 FOR CSM, 77775 FOR LEM -- LUNAR SPHERE OF INFLUENCE SCALING
063362,000117: # XXXXXEXXXXXE X POSITION
063363,000118: # XXXXXEXXXXXE Y POSITION
063364,000119: # XXXXXEXXXXXE Z POSITION
063365,000120: # XXXXXEXXXXXE X VELOCITY
063366,000121: # XXXXXEXXXXXE Y VELOCITY
063367,000122: # XXXXXEXXXXXE Z VELOCITY
063368,000123: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
063369,000124: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
063370,000125:
063371,000126: # 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL)
063372,000127: # ENTRIES DATA DEFINITITIONS SCALE FACTORS:
063373,000128: # Page 1489
063374,000129: # V71E CONTIGUOUS BLOCK UPDATE VERB
063375,000130: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
063376,000131: # AAAAE ECADR OF `REFSMMAT'
063377,000132: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
063378,000133: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
063379,000134: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
063380,000135: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
063381,000136: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
063382,000137: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
063383,000138: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
063384,000139: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
063385,000140: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
063386,000141: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED
063387,000142:
063388,000143: 07,3717 BANK 07
063389,000144: 43,2000 SETLOC EXTVERBS
063390,000145: 43,2000 BANK
063391,000146:
063392,000147: 43,3722 E3,1706 EBANK= TEPHEM
063393,000148:
063394,000149: 43,3722 COUNT* $$/P27
063395,000150: 43,3722 34714 V70UPDAT CAF UP70 # COMES HERE ON V70E
063396,000151: 43,3723 13731 TCF V73UPDAT +1
063397,000152:
063398,000153: 43,3724 34712 V71UPDAT CAF UP71 # COMES HERE ON V71E
063399,000154: 43,3725 13731 TCF V73UPDAT +1
063400,000155:
063401,000156: 43,3726 34711 V72UPDAT CAF UP72 # COMES HERE ON V72E
063402,000157: 43,3727 13731 TCF V73UPDAT +1
063403,000158:
063404,000159: 43,3730 36214 V73UPDAT CAF UP73 # COMES HERE ON V73E
063405,000160:
063406,000161: 43,3731 54331 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
063407,000162:
063408,000163: 43,3732 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
063409,000164: # TURN *OPERATOR ERROR* ON AND TERMINATE EJOB
063410,000165:
063411,000166: 43,3733 31011 CA MODREG # CHECK IF UPDATE ALLOWED
063412,000167: 43,3734 00006 EXTEND # FIRST CHECK FOR MODREG = +0, -0
063413,000168: 43,3735 13737 BZF +2 # (+0 = P00, -0 = FRESHSTART)
063414,000169: 43,3736 03747 TC CKMDMORE # NOW CHECK FOR PROGRAM WHICH CAN BE
063415,000170: # INTERRUPTED BY P27.
063416,000171:
063417,000172: 43,3737 31011 CAE MODREG # UPDATE ALLOWED
063418,000173: 43,3740 54301 TS UPOLDMOD # SAVE CURRENT MAJOR MODE
063419,000174: # Page 1490
063420,000175: 43,3741 30331 CAE UPVERBSV # SET UPVERB TO INDICDATE TO P27
063421,000176: 43,3742 54302 TS UPVERB # WHICH EXTENDED VERB CALLED IT.
063422,000177:
063423,000178: 43,3743 34712 CAF ONE
063424,000179: 43,3744 54303 TS UPCOUNT # INITIALIZE UPCOUNT TO 1
063425,000180:
063426,000181: 43,3745 04574 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
063427,000182: 43,3746 57364 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
063428,000183:
063429,000184: 43,3747 40101 CKMDMORE CS FLAGWRD5
063430,000185: 43,3750 74703 MASK BIT8 # CHECK IF COMPUTER IS LGC
063431,000186: 43,3751 10000 CCS A # IS COMPUER LGC OR AGC
063432,000187: 43,3752 13760 UPERLEM TCF UPERROR # ERROR: IT'S THE LEM + MODE IS NOT P00.
063433,000188: 43,3753 44711 CS TWO
063434,000189: 43,3754 71011 MASK MODREG
063435,000190: 43,3755 10000 CCS A
063436,000191: 43,3756 13760 UPERCMC TCF UPERROR # ERROR: IT'S THE CMC AND MODE IS NOT
063437,000192: # P00 OR P02.
063438,000193: 43,3757 00002 TC Q # ALLOW UPDATE TO PROCEED.
063439,000194:
063440,000195: 43,3760 04574 UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT
063441,000196: 43,3761 57745 CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT
063442,000197:
063443,000198: 43,3762 4714 UP70 EQUALS ZERO
063444,000199: 43,3762 4712 UP71 EQUALS ONE
063445,000200: 43,3762 4711 UP72 EQUALS TWO
063446,000201: 43,3762 6214 UP73 EQUALS THREE
063447,000202:
063448,000203: 04,3650 BANK 04
063449,000204: 27,2000 SETLOC UPDATE2
063450,000205: 27,2000 BANK
063451,000206:
063452,000207: 27,3364 COUNT* $$/P27
063453,000208:
063454,000209: 27,3364 UPPART2 EQUALS # UPDATE PROGRAM -- PART 2
063455,000210:
063456,000211: 27,3364 05301 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
063457,000212: 27,3365 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
063458,000213: 27,3366 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO
063459,000214: 27,3367 0304 EBANK= UPBUFF
063460,000215: 27,3367 03675 56100 2CADR UPOUT +1
063461,000216:
063462,000217: 27,3371 34712 CAF ONE
063463,000218: 27,3372 54332 TS DNLSTCOD # DOWNLIST
063464,000219:
063465,000220: 27,3373 05243 TC NEWMODEX # SET MAJOR MODE = 27
063466,000221: 27,3374 00033 DEC 27 B-14
063467,000222:
063468,000223: # Page 1491
063469,000224: 27,3375 50302 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
063470,000225: 27,3376 13377 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
063471,000226: 27,3377 13402 TCF +3 # V70 FIXED (OF COMPONENTS)
063472,000227: 27,3400 13405 TCF OHWELL1 # V71 VARIABLE -- GO GET NO. OF COMPONENTS
063473,000228: 27,3401 13405 TCF OHWELL1 # V72 VARIABLE -- GO GET NO. OF COMPONENTS
063474,000229: 27,3402 34711 CA TWO # V73 (AND V70) FIXED
063475,000230: 27,3403 54300 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
063476,000231: 27,3404 13430 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
063477,000232:
063478,000233: 27,3405 33500 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
063479,000234: 27,3406 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II) *
063480,000235: 27,3407 33501 +2 CAF UPLOADNV # (CKV432 RETURNS HERE IF V32 ENCOUNTERED)
063481,000236: 27,3410 04555 TC BANKCALL # DISPLAY A FLASHING V21N01
063482,000237: 27,3411 20465 CADR GOXDSPF # TO REQUEST II.
063483,000238: 27,3412 13675 TCF UPOUT4 # V32 TERMINATE UPDATE (P27) RETURN
063484,000239: 27,3413 13407 TCF OHWELL1 +2
063485,000240: 27,3414 03471 TC CK4V32 # DATA OR V32 RETURN
063486,000241: 27,3415 44711 CS BIT2
063487,000242: 27,3416 60304 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
063488,000243: 27,3417 00006 EXTEND # .GE. 3 AND .LE. 20D.
063489,000244: 27,3420 63407 BZMF OHWELL1 +2
063490,000245: 27,3421 40304 CS UPBUFF
063491,000246: 27,3422 64376 AD UP21
063492,000247: 27,3423 00006 EXTEND
063493,000248: 27,3424 63407 BZMF OHWELL1 +2
063494,000249: 27,3425 30304 CAE UPBUFF
063495,000250: 27,3426 54300 TS COMPNUMB # SAVE II IN COMPNUMB
063496,000251:
063497,000252: # UPBUFF LOADING SEQUENCE
063498,000253:
063499,000254: 27,3427 24303 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
063500,000255: 27,3430 33645 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION (ECADR) IN UPBUFF
063501,000256: 27,3431 60303 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED
063502,000257: 27,3432 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3.
063503,000258: 27,3433 33501 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
063504,000259: 27,3434 04555 TC BANKCALL # DISPLAY A FLASHING V21N01
063505,000260: 27,3435 20465 CADR GOXDSPF # TO REQUEST DATA.
063506,000261: 27,3436 13675 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
063507,000262: 27,3437 13433 TCF OHWELL2 +3 # V33 PROCEED RETURN
063508,000263: 27,3440 03471 TC CK4V32 # DATA OR V32 RETURN
063509,000264: 27,3441 40303 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
063510,000265: 27,3442 60300 AD COMPNUMB # THE DATA WE EXPECTED.
063511,000266: 27,3443 00006 EXTEND
063512,000267: 27,3444 63446 BZMF UPVERIFY # YES -- GO TO VERIFICATION SEQUENCE
063513,000268: 27,3445 13427 TCF OHWELL2 -1 # NO -- REQUEST ADDITIONAL DATA.
063514,000269:
063515,000270: # VERIFY SEQUENCE
063516,000271: # Page 1492
063517,000272: 27,3446 33477 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
063518,000273: 27,3447 54156 TS MPAC +2 # IS TO BE STORED INTO R3.
063519,000274: 27,3450 33502 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
063520,000275: 27,3451 04555 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEXT
063521,000276: 27,3452 20465 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
063522,000277: 27,3453 13675 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
063523,000278: 27,3454 13503 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
063524,000279: 27,3455 03471 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
063525,000280: 27,3456 30330 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SEND
063526,000281: 27,3457 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
063527,000282: 27,3460 63446 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
063528,000283: 27,3461 40330 CS UPTEMP
063529,000284: 27,3462 60300 AD COMPNUMB
063530,000285: 27,3463 64712 AD BIT1
063531,000286: 27,3464 00006 EXTEND
063532,000287: 27,3465 63446 BZMF UPVERIFY # NO
063533,000288: 27,3466 33645 CAF ADUPBFM1 # YES -- BASED ON THE COMPONENT NO. INDEX
063534,000289: 27,3467 60330 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
063535,000290: 27,3470 13432 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANG.
063536,000291:
063537,000292: 27,3471 27,3675 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TC TERMINATE UPDATE.
063538,000293:
063539,000294: # CHECK FOR VERB 32 SEQUENCE
063540,000295:
063541,000296: 27,3471 40154 CK4V32 CS MPAC # ON DATA RETURN FROM `GOXDSPF'
063542,000297: 27,3472 74705 MASK BIT6 # ON DATA RETURN FROM "GOXDSP" & THE CON-
063543,000298: 27,3473 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
063544,000299: 27,3474 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
063545,000300: 27,3475 50002 INDEX Q
063546,000301: 27,3476 77771 TC 0 -6 # V32 ENCOUNTERED -- GO BACK AND GET DATA
063547,000302:
063548,000303: 27,3477 00330 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
063549,000304: 27,3500 00304 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
063550,000305: 27,3501 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01
063551,000306: 27,3502 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02
063552,000307: 27,3503 4376 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
063553,000308: 27,3503 4715 UPDTPHAS EQUALS FIVE
063554,000309:
063555,000310: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
063556,000311:
063557,000312: 27,3503 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
063558,000313:
063559,000314: 27,3503 00004 INHINT
063560,000315:
063561,000316: 27,3504 30103 CAE FLAGWRD7 # INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO
063562,000317: 27,3505 56001 XCH L # INDICATE TO THE GROUND (VIA DOWNLINK)
063563,000318: 27,3506 34710 CAF BIT3 # THAT THE V33 (WHICH THE GROUND SENT TO
063564,000319: 27,3507 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
063565,000320: 27,3510 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
063566,000321: # Page 1493
063567,000322: 27,3511 54103 TS FLAGWRD7
063568,000323:
063569,000324: 27,3512 05301 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
063570,000325: 27,3513 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS.
063571,000326: 27,3514 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT)
063572,000327:
063573,000328: 27,3515 44711 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED.
063574,000329: 27,3516 60302 AD UPVERB # THAT IS, IF IT'S A V70 - V72.
063575,000330: 27,3517 00006 EXTEND # GO TO UPEND73 IF IT'S A V73.
063576,000331: 27,3520 63527 BZMF UPFNDVAC
063577,000332:
063578,000333: # VERB 73 BRANCH
063579,000334:
063580,000335: 27,3521 00006 UPEND73 EXTEND # V73 -- PERFORM DP OCTAL AGC CLOCK INCREMENT
063581,000336: 27,3522 30305 DCA UPBUFF
063582,000337: 27,3523 52315 DXCH UPBUFF +8D
063583,000338: 27,3524 03552 TC TIMEDIDL
063584,000339: 27,3525 04400 TC FALTON # ERROR -- TURN ON *OPERATOR ERROR* LIGHT
063585,000340: 27,3526 03675 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
063586,000341:
063587,000342: 27,3527 34371 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
063588,000343: 27,3530 05042 TC FINDVAC # GET VAC AREA FOR `CALL INTSTALL'
063589,000344: 27,3531 E3,1706 EBANK= TEPHEM
063590,000345: 27,3531 03534 56103 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
063591,000346: 27,3533 05112 TC ENDOFJOB # `TEPHEM' UPDATE BY V70)
063592,000347:
063593,000348: 27,3534 06006 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE -- SO
063594,000349: 27,3535 77624 CALL # WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI)
063595,000350: 27,3536 27371 INTSTALL # IS IN PROGRESS -- OR -- GRAB OI AND RETURN
063596,000351: # TO UPWAKE IF OI IS NOT IN PROGRESS.
063597,000352:
063598,000353: 27,3537 77776 UPWAKE EXIT
063599,000354:
063600,000355: 27,3540 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
063601,000356: 27,3541 04026 OCT 04026
063602,000357:
063603,000358: 27,3542 05435 TC UPFLAG # SET INTEGRATION RESTART BIT
063604,000359: 27,3543 00236 ADRES REINTFLG
063605,000360: 27,3544 00004 INHINT
063606,000361: 27,3545 UPPART3 EQUALS
063607,000362:
063608,000363: 27,3545 50302 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
063609,000364: 27,3546 13547 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
063610,000365: 27,3547 13706 TCF UPEND70 # V70
063611,000366: 27,3550 13615 TCF UPEND71 # V71
063612,000367: 27,3551 13647 TCF UPEND72 # V72
063613,000368:
063614,000369: # ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
063615,000370: # Page 1494
063616,000371: 27,3552 00006 TIMEDIDL EXTEND
063617,000372: 27,3553 22330 QXCH UPTEMP # SAVE Q FOR RETURN
063618,000373: 27,3554 34714 CAF ZERO # ZERO AND SAVE TIME2,TIME1
063619,000374: 27,3555 22007 ZL
063620,000375: 27,3556 52025 DXCH TIME2
063621,000376: 27,3557 52327 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
063622,000377:
063623,000378: 27,3560 34715 CAF UPDTPHAS # SO
063624,000379: 27,3561 54001 TS L # A
063625,000380: 27,3562 40000 COM # QUICK
063626,000381: 27,3563 52765 DXCH -PHASE6 # PHASCHNG
063627,000382:
063628,000383: 27,3564 00004 TIMEDIDR INHINT
063629,000384: 27,3565 34714 CAF ZERO
063630,000385: 27,3566 22007 ZL # PICK UP INCRMENTER (AND ZERO
063631,000386: 27,3567 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND
063632,000387: 27,3570 52315 DXCH UPBUFF +8D # STORE IT
063633,000388: 27,3571 52155 DXCH MPAC # INTO MPAC FOR TPAGREE.
063634,000389:
063635,000390: 27,3572 00006 EXTEND
063636,000391: 27,3573 30327 DCA UPBUFF +18D
063637,000392: 27,3574 20155 DAS MPAC # FORM SUM IN MPAC
063638,000393: 27,3575 00006 EXTEND
063639,000394: 27,3576 13605 BZF DELTAOK # TEST FOR OVERFLOW
063640,000395: 27,3577 34714 CAF ZERO
063641,000396: 27,3600 52327 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
063642,000397: 27,3601 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR
063643,000398:
063644,000399: 27,3602 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
063645,000400: 27,3603 04026 OCT 04026
063646,000401:
063647,000402: 27,3604 00330 TC UPTEMP # GO TO ERROR EXIT
063648,000403:
063649,000404: 27,3605 07226 DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT
063650,000405: 27,3606 52155 DXCH MPAC
063651,000406: 27,3607 20025 DAS TIME2 # INCREMENT TIME2,TIME1
063652,000407:
063653,000408: 27,3610 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
063654,000409: 27,3611 04026 OCT 04026
063655,000410:
063656,000411: 27,3612 00004 INHINT
063657,000412: 27,3613 50330 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
063658,000413: 27,3614 00001 TC 1 # NORMAL RETURN
063659,000414:
063660,000415: # VERB 71 BRANCH
063661,000416:
063662,000417: 27,3615 30305 UPEND71 CAE UPBUFF +1 # SET EBANK
063663,000418: 27,3616 54003 TS EBANK # AND
063664,000419: 27,3617 74373 MASK LOW8 # CALCULATE
063665,000420: 27,3620 54330 TS UPTEMP # S-REG VALUE OF RECEIVING AREA
063666,000421: # Page 1495
063667,000422: 27,3621 67714 AD NEG3 # IN THE PROCESS OF
063668,000423: 27,3622 60300 AD COMPNUMB # PERFORMING
063669,000424: 27,3623 00006 EXTEND # THIS UPDATE
063670,000425: 27,3624 13632 BZF STORLP71 # WILL WE
063671,000426: 27,3625 74702 MASK BIT9 # OVERFLOW
063672,000427: 27,3626 10000 CCS A # INTO THE NEXT EBANK....
063673,000428: 27,3627 13743 TCF UPERROUT
063674,000429:
063675,000430: 27,3630 37714 CA NEG3 # NO -- CALCULATE NUMBER OF
063676,000431: 27,3631 60300 AD COMPNUMB # WORDS TO BE STORED MINUS ONE
063677,000432: 27,3632 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
063678,000433: 27,3633 50000 INDEX A # TAKE NEXT UPDATE WORD FROM
063679,000434: 27,3634 30306 CA UPBUFF +2 # UPBUFF AND
063680,000435: 27,3635 54001 TS L # SAVE IT IN L
063681,000436: 27,3636 30154 CA MPAC # CALCULATE NEXT
063682,000437: 27,3637 60330 AD UPTEMP # RECEIVING ADDRESS
063683,000438: 27,3640 50000 INDEX A
063684,000439: 27,3641 E3,1400 EBANK= 1400
063685,000440: 27,3641 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
063686,000441: 27,3642 E3,1706 EBANK= TEPHEM
063687,000442: 27,3642 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
063688,000443: 27,3643 13632 TCF STORLP71 # YES
063689,000444: 27,3644 13674 TCF UPOUT # NO -- THEN EXIT UPDATE PROGRAM
063690,000445: 27,3645 00303 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
063691,000446: 27,3646 13674 TCF UPOUT # NO -- EXIT UPDATE (HERE WHEN COMPNUMB = 3)
063692,000447:
063693,000448: # VERB 72 BRANCH
063694,000449:
063695,000450: 27,3647 34712 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
063696,000451: 27,3650 70300 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ...
063697,000452: 27,3651 10000 CCS A
063698,000453: 27,3652 13654 TCF +2 # YES
063699,000454: 27,3653 13743 TCF UPERROUT # ERROR -- SHOULD BE ODD NO. OF COMPONENTS
063700,000455: 27,3654 44711 CS BIT2
063701,000456: 27,3655 60300 AD COMPNUMB
063702,000457: 27,3656 54154 LDLOOP72 TS MPAC # NO PERFORM THE UPDATE
063703,000458: 27,3657 50000 INDEX A
063704,000459: 27,3660 30305 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
063705,000460: 27,3661 22000 LXCH A
063706,000461: 27,3662 10154 CCS MPAC # SET POINTER TO ECADR (MUST BE CCS)
063707,000462: 27,3663 54154 TS MPAC
063708,000463: 27,3664 50000 INDEX A
063709,000464: 27,3665 30305 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
063710,000465: 27,3666 54003 TS EBANK # SET EBANK
063711,000466: 27,3667 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS
063712,000467: 27,3670 50000 INDEX A
063713,000468: 27,3671 E3,1400 EBANK= 1400
063714,000469: 27,3671 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
063715,000470: 27,3672 E3,1706 EBANK= TEPHEM
063716,000471: # Page 1496
063717,000472: 27,3672 10154 CCS MPAC # ARE WE THORUGH THE V72 UPDATE...
063718,000473: 27,3673 13656 TCF LDLOOP72 # NO
063719,000474:
063720,000475: # NORMAL FINISH OF P27
063721,000476:
063722,000477: 27,3674 UPOUT EQUALS
063723,000478: 27,3674 02662 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
063724,000479: 27,3675 30301 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
063725,000480: 27,3676 05246 TC NEWMODEX +3
063726,000481: 27,3677 34714 CAF ZERO
063727,000482: 27,3700 54332 TS DNLSTCOD
063728,000483: 27,3701 03750 TC UPACTOFF # TURN OFF `UPLINK ACTIVITY' LIGHT
063729,000484: 27,3702 00006 EXTEND # KILL GROUP 6
063730,000485: 27,3703 34714 DCA NEG0
063731,000486: 27,3704 52765 DXCH -PHASE6
063732,000487:
063733,000488: 27,3705 05423 TC ENDEXT # EXTENDED VERB EXIT
063734,000489:
063735,000490: # VERB TO BRANCH
063736,000491:
063737,000492: 27,3706 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
063738,000493: 27,3707 40305 DCS UPBUFF # TIME IN UPBUFF
063739,000494: 27,3710 52315 DXCH UPBUFF +8D
063740,000495: 27,3711 03552 TC TIMEDIDL # DECREMENT AGC CLOCK
063741,000496:
063742,000497: 27,3712 03743 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
063743,000498:
063744,000499: 27,3713 E3,1706 EBANK= TEPHEM
063745,000500: 27,3713 00006 EXTEND
063746,000501: 27,3714 40305 DCS UPBUFF # COPY DECREMENTERS FOR
063747,000502: 27,3715 52317 DXCH UPBUFF +10D # RESTART PROTECTION
063748,000503: 27,3716 00006 EXTEND
063749,000504: 27,3717 40305 DCS UPBUFF
063750,000505: 27,3720 52321 DXCH UPBUFF +12D
063751,000506:
063752,000507: 27,3721 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
063753,000508: 27,3722 04026 OCT 04026
063754,000509:
063755,000510: 27,3723 34714 CAF ZERO
063756,000511: 27,3724 22007 ZL
063757,000512: 27,3725 52317 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
063758,000513: 27,3726 21571 DAS TETCSM
063759,000514:
063760,000515: 27,3727 34714 CAF ZERO
063761,000516: 27,3730 22007 ZL
063762,000517: 27,3731 52321 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
063763,000518: 27,3732 21643 DAS TETLEM
063764,000519: # Page 1497
063765,000520: 27,3733 34714 CAF ZERO
063766,000521: 27,3734 22007 ZL
063767,000522: 27,3735 52305 DXCH UPBUFF
063768,000523: 27,3736 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM
063769,000524: 27,3737 27706 ADS TEPHEM
063770,000525:
063771,000526: 27,3740 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
063772,000527: 27,3741 04026 OCT 04026
063773,000528:
063774,000529: 27,3742 0304 EBANK= UPBUFF
063775,000530:
063776,000531: 27,3742 03674 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
063777,000532:
063778,000533: # ERROR SEQUENCE
063779,000534:
063780,000535: 27,3743 04400 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
063781,000536: 27,3744 13674 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
063782,000537:
063783,000538: 27,3745 04400 +2 TC FALTON # TURN ON `OPERATOR ERROR' LIGHT
063784,000539: 27,3746 03750 TC UPACTOFF # TURN OFF `UPLINK ACTIVITY' LIGHT
063785,000540: 27,3747 05423 TC ENDEXT # EXTENDED VERB EXIT
063786,000541: # (THE PURPOSE OF UPERROUT +2 EXIT IS
063787,000542: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT
063788,000543: # RESET ANY RESTART GROUPS)
063789,000544:
063790,000545: # `UPACTOFF' IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
063791,000546:
063792,000547: 27,3750 44710 UPACTOFF CS BIT3
063793,000548: 27,3751 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
063794,000549: 27,3752 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
063795,000550: 27,3753 00002 TC Q
063796,000551:
063797,000552:
063798,000553:
End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc