Source Code
This is the source-code for the Apollo 9 Command Module's Guidance Computer.
These files were derived originally from the scan from MIT's Dibner Institute's
now-discontinued website titled "History of Recent Science and Technology", which
in turn was originally created by Gary Neff, though his high-quality scans were
unfortunately reduced in legibility when presented online.
The markings on the front of the
printout imply that it was the original AGC developer Norm Brodeur's copy.
A scan by Ron Burkey has superceded it, made from a more-legible copy from the collection of original
AGC developer Fred Martin. The source code was transcribed from
those images by Ron Burkey. Note that the page images
presented online are of reduced quality, and that higher-quality images
are available. Report any conversion errors or legibility
problems in page images to info@sandroid.org.
Notations on the program listing read, in part:ASSEMBLE REVISION 249 OF AGC PROGRAM COLOSSUS BY NASA 2021111-041 20'35 OCT. 28,1968Note that the date is the date of the printout, not the date of the program revision. |
064083,000002: ## Copyright: Public domain.
064084,000003: ## Filename: UPDATE_PROGRAM.agc
064085,000004: ## Purpose: Part of the source code for Colossus, build 249.
064086,000005: ## It is part of the source code for the Command Module's (CM)
064087,000006: ## Apollo Guidance Computer (AGC), for Apollo 9.
064088,000007: ## Assembler: yaYUL
064089,000008: ## Reference: Starts at p. 1465
064090,000009: ## Contact: Ron Burkey <info@sandroid.org>.
064091,000010: ## Website: www.ibiblio.org/apollo/index.html
064092,000011: ## Mod history: 08/30/04 RSB. Adapted from corresponding Luminary131 file.
064093,000012: ## 05/14/05 RSB Corrected website reference above.
064094,000013: ## 2010-10-24 JL Indentation fixes.
064095,000014: ## 2017-01-06 RSB Page numbers now agree with those on the
064096,000015: ## original harcopy, as opposed to the PDF page
064097,000016: ## numbers in 1701.pdf.
064098,000017: ## 2017-01-20 RSB Cross-diff'd comment text (not whitespace)
064099,000018: ## vs the already-proofed corresponding Colossus
064100,000019: ## 237 and Comanche 55 source-code files
064101,000020: ## and corrected errors found.
064102,000021: ## 2017-02-09 RSB Comment-text fixes identified for Artemis 72.
064103,000022: ##
064104,000023: ## The contents of the "Colossus249" files, in general, are transcribed
064105,000024: ## from a scanned copy of the program listing. Notations on this
064106,000025: ## document read, in part:
064107,000026: ##
064108,000027: ## Assemble revision 249 of AGC program Colossus by NASA
064109,000028: ## 2021111-041. October 28, 1968.
064110,000029: ##
064111,000030: ## This AGC program shall also be referred to as
064112,000031: ## Colossus 1A
064113,000032: ##
064114,000033: ## Prepared by
064115,000034: ## Massachusetts Institute of Technology
064116,000035: ## 75 Cambridge Parkway
064117,000036: ## Cambridge, Massachusetts
064118,000037: ## under NASA contract NAS 9-4065.
064119,000038: ##
064120,000039: ## Refer directly to the online document mentioned above for further information.
064121,000040: ## Please report any errors (relative to the scanned pages) to info@sandroid.org.
064122,000041: ##
064123,000042: ## In some cases, where the source code for Luminary 131 overlaps that of
064124,000043: ## Colossus 249, this code is instead copied from the corresponding Luminary 131
064125,000044: ## source file, and then is proofed to incorporate any changes.
064126,000045:
Page 1465 |
064128,000047: # PROGRAM NAME: P27
064129,000048: # WRITTEN BY: KILROY/ DE WOLF
064130,000049:
064131,000050: # MOD NO: 6
064132,000051: # MOD BY: KILROY
064133,000052: # DATE: 01DEC67
064134,000053:
064135,000054: # LOG SECTION: UPDATE PROGRAM.
064136,000055:
064137,000056: # FUNCT. DESCR: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
064138,000057: # INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
064139,000058: # THE P27 PROGRAM WILL ACCEPT UPDATES
064140,000059: # ONLY DURING P00 FOR THE LM, AND ONLY DURING P00,
064141,000060: # P02, AND FRESH START FOR THE CSM
064142,000061:
064143,000062: # CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72 AND 73.
064144,000063:
064145,000064: # SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
064146,000065: # INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
064147,000066:
064148,000067: # NORMAL EXIT: TC ENDEXT
064149,000068:
064150,000069: # ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
064151,000070:
064152,000071: # RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ...
064153,000072: # 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
064154,000073: # DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
064155,000074: # NO PROTECTION EXCEPT PRE-P27 MODE IS RESTORED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK
064156,000075: # ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
064157,000076: # V70,V71,V72 OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
064158,000077: # 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
064159,000078: # PROTECTED AGAINST RESTARTS.
064160,000079:
064161,000080: # DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
064162,000081: # UPVERB (1) VERB NUMBER MINUS 70D (E.G. FOR V72, UPVERB = 72D - 70D = 2)
064163,000082: # UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27.
064164,000083: # COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
064165,000084: # UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
064166,000085: # UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE
064167,000086:
064168,000087: # INPUT:
064169,000088:
064170,000089: # ENTRY: DESCRIPTION
064171,000090: # V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
064172,000091: # IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
064173,000092: # VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
064174,000093: # THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
Page 1466 |
064176,000095: # V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX,
064177,000096: # XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
064178,000097: # XXXXXE IT IS .GE. 3 .AND. .LE. 20D.,
064179,000098: # AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
064180,000099: # 9 NEXT BANK
064181,000100: # . SCALING IS SAME AS INTERNAL REGISTERS.
064182,000101: # V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE
064183,000102: # AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
064184,000103: # AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
064185,000104: # . SCALING IS SAME AS INTERNAL REGISTERS.
064186,000105:
064187,000106: # V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
064188,000107: # INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
064189,000108: # CENTISECONDS SCALED AT (2)28.
064190,000109: # THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
064191,000110:
064192,000111: # OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
064193,000112: # COMPLEMENT BIT3 OF FLAGWORD7.
064194,000113:
064195,000114: # ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --
064196,000115: # 1. CSM/LM STATE VECTOR UPDATE
064197,000116: # 2. REFSMMAT UPDATE
064198,000117:
064199,000118: # THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE----
064200,000119:
064201,000120: # 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
064202,000121: # ENTRIES: DATA DEFINITION: SCALE FACTORS:
064203,000122: # V71E CONTIGUOUS BLOCK UPDATE VERB
064204,000123: # 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
064205,000124: # AAAAE ECADR OF 'UPSVFLAG'
064206,000125: # XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM - EARTH SPHERE OF INFLUENCE SCALING
064207,000126: # 00002 FOR CSM, 77775 FOR LEM - LUNAR SPHERE OF INFLUENCE SCALING
064208,000127: # XXXXXEXXXXXE X POSITION
064209,000128: # XXXXXEXXXXXE Y POSITION
064210,000129: # XXXXXEXXXXXE Z POSITION
064211,000130: # XXXXXEXXXXXE X VELOCITY
064212,000131: # XXXXXEXXXXXE Y VELOCITY
064213,000132: # XXXXXEXXXXXE Z VELOCITY
064214,000133: # XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
064215,000134: # V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
064216,000135:
064217,000136: # 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL)
064218,000137: # ENTRIES: DATA DEFINITIONS: SCALE FACTORS:
Page 1467 |
064220,000139: # V71E CONTIGUOUS BLOCK UPDATE VERB
064221,000140: # 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
064222,000141: # AAAAE ECADR OF 'REFSMMAT'
064223,000142: # XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
064224,000143: # XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
064225,000144: # XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
064226,000145: # XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
064227,000146: # XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
064228,000147: # XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
064229,000148: # XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
064230,000149: # XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
064231,000150: # XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
064232,000151: # V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED.
064233,000152:
064234,000153: 07,3717 BANK 07
064235,000154: 43,2000 SETLOC EXTVERBS
064236,000155: 43,2000 BANK
064237,000156:
064238,000157: 43,3722 E3,1706 EBANK= TEPHEM
064239,000158:
064240,000159: 43,3722 COUNT* $$/P27
064241,000160: 43,3722 34714 V70UPDAT CAF UP70 # COMES HERE ON V70E
064242,000161: 43,3723 13731 TCF V73UPDAT +1
064243,000162:
064244,000163: 43,3724 34712 V71UPDAT CAF UP71 # COMES HERE ON V71E
064245,000164: 43,3725 13731 TCF V73UPDAT +1
064246,000165:
064247,000166: 43,3726 34711 V72UPDAT CAF UP72 # COMES HERE ON V72E
064248,000167: 43,3727 13731 TCF V73UPDAT +1
064249,000168:
064250,000169: 43,3730 36214 V73UPDAT CAF UP73 # COMES HERE ON V73E
064251,000170:
064252,000171: 43,3731 54331 +1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
064253,000172:
064254,000173: 43,3732 02076 TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
064255,000174: # TURN *OPERATOR ERROR* ON AND TERMINATE JOB
064256,000175:
064257,000176: 43,3733 31011 CA MODREG # CHECK IF UPDATE ALLOWED
064258,000177: 43,3734 00006 EXTEND # FIRST CHECK FOR MODREG = +0, -0
064259,000178: 43,3735 13737 BZF +2 # (+0 = P00, -0 = FRESHSTART)
064260,000179: 43,3736 03747 TC CKMDMORE # NOW CHECK FOR PROGRAM WHICH CAN BE
064261,000180: # INTERRUPTED BY P27.
064262,000181:
064263,000182: 43,3737 31011 CAE MODREG # UPDATE ALLOWED.
064264,000183: 43,3740 54301 TS UPOLDMOD # SAVE CURRENT MAJOR MODE
Page 1468 |
064266,000185: 43,3741 30331 CAE UPVERBSV # SET UPVERB TO INDICATE TO P27
064267,000186: 43,3742 54302 TS UPVERB # WHICH EXTENDED VERB CALLED IT.
064268,000187:
064269,000188: 43,3743 34712 CAF ONE
064270,000189: 43,3744 54303 TS UPCOUNT # INITIALIZE UPCOUNT TO 1
064271,000190:
064272,000191: 43,3745 04574 TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
064273,000192: 43,3746 57364 CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
064274,000193:
064275,000194: 43,3747 40101 CKMDMORE CS FLAGWRD5
064276,000195: 43,3750 74703 MASK BIT8 # CHECK IF COMPUTER IS LGC
064277,000196: 43,3751 10000 CCS A # IS COMPUTER LGC OR AGC
064278,000197: 43,3752 13760 UPERLEM TCF UPERROR # ERROR- IT'S THE LEM + MODE IS NOT POO.
064279,000198: 43,3753 44711 CS TWO
064280,000199: 43,3754 71011 MASK MODREG
064281,000200: 43,3755 10000 CCS A
064282,000201: 43,3756 13760 UPERCMC TCF UPERROR # ERROR- IT'S THE CMC AND MODE IS NOT
064283,000202: # P00 OR P02.
064284,000203: 43,3757 00002 TC Q # ALLOW UPDATE TO PROCEED
064285,000204:
064286,000205: 43,3760 04574 UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT
064287,000206: 43,3761 57745 CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT
064288,000207:
064289,000208: 43,3762 4714 UP70 EQUALS ZERO
064290,000209: 43,3762 4712 UP71 EQUALS ONE
064291,000210: 43,3762 4711 UP72 EQUALS TWO
064292,000211: 43,3762 6214 UP73 EQUALS THREE
064293,000212:
064294,000213: 04,3650 BANK 04
064295,000214: 27,2000 SETLOC UPDATE2
064296,000215: 27,2000 BANK
064297,000216:
064298,000217: 27,3364 COUNT* $$/P27
064299,000218:
064300,000219: 27,3364 UPPART2 EQUALS # UPDATE PROGRAM - PART 2
064301,000220:
064302,000221: 27,3364 05301 TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
064303,000222: 27,3365 07026 OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
064304,000223: 27,3366 30000 OCT 30000 # PRIORITY SAME AS CHRPRIO
064305,000224: 27,3367 0304 EBANK= UPBUFF
064306,000225: 27,3367 03675 56100 2CADR UPOUT +1
064307,000226:
064308,000227: 27,3371 34712 CAF ONE
064309,000228: 27,3372 54332 TS DNLSTCOD # DOWNLIST
064310,000229:
064311,000230: 27,3373 05243 TC NEWMODEX # SET MAJOR MODE = 27
064312,000231: 27,3374 00033 DEC 27 B-14
064313,000232:
Page 1469 |
064315,000234: 27,3375 50302 INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
064316,000235: 27,3376 13377 TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
064317,000236: 27,3377 13402 TCF +3 # V70 FIXED. (OF COMPONENTS.
064318,000237: 27,3400 13405 TCF OHWELL1 # V71 VARIABLE - GO GET NO. OF COMPONENTS
064319,000238: 27,3401 13405 TCF OHWELL1 # V72 VARIABLE - GO GET NO. OF COMPONENTS
064320,000239: 27,3402 34711 CA TWO # V73 (AND V70) FIXED
064321,000240: 27,3403 54300 TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
064322,000241: 27,3404 13430 TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
064323,000242:
064324,000243: 27,3405 33500 OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
064325,000244: 27,3406 54156 TS MPAC +2 # * OF COMPONENTS PARAMETER(II). *
064326,000245: 27,3407 33501 +2 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
064327,000246: 27,3410 04555 TC BANKCALL # DISPLAY A FLASHING V21N01
064328,000247: 27,3411 20465 CADR GOXDSPF # TO REQUEST II.
064329,000248: 27,3412 13675 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
064330,000249: 27,3413 13407 TCF OHWELL1 +2
064331,000250: 27,3414 03471 TC CK4V32 # DATA OR V32 RETURN
064332,000251: 27,3415 44711 CS BIT2
064333,000252: 27,3416 60304 AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
064334,000253: 27,3417 00006 EXTEND # .GE. 3 AND .LE. 20D.
064335,000254: 27,3420 63407 BZMF OHWELL1 +2
064336,000255: 27,3421 40304 CS UPBUFF
064337,000256: 27,3422 64376 AD UP21
064338,000257: 27,3423 00006 EXTEND
064339,000258: 27,3424 63407 BZMF OHWELL1 +2
064340,000259: 27,3425 30304 CAE UPBUFF
064341,000260: 27,3426 54300 TS COMPNUMB # SAVE II IN COMPNUMB
064342,000261:
064343,000262: # UPBUFF LOADING SEQUENCE
064344,000263:
064345,000264: 27,3427 24303 INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
064346,000265: 27,3430 33645 OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION (ECADR) IN UPBUFF
064347,000266: 27,3431 60303 AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED.
064348,000267: 27,3432 54156 +2 TS MPAC +2 # PLACE ECADR INTO R3.
064349,000268: 27,3433 33501 +3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
064350,000269: 27,3434 04555 TC BANKCALL # DISPLAY A FLASHING V21N01
064351,000270: 27,3435 20465 CADR GOXDSPF # TO REQUEST DATA.
064352,000271: 27,3436 13675 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
064353,000272: 27,3437 13433 TCF OHWELL2 +3 # V33 PROCEED RETURN
064354,000273: 27,3440 03471 TC CK4V32 # DATA OR V32 RETURN
064355,000274: 27,3441 40303 CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
064356,000275: 27,3442 60300 AD COMPNUMB # THE DATA WE EXPECTED.
064357,000276: 27,3443 00006 EXTEND
064358,000277: 27,3444 63446 BZMF UPVERIFY # YES - GO TO VERIFICATION SEQUENCE
064359,000278: 27,3445 13427 TCF OHWELL2 -1 # NO - REQUEST ADDITIONAL DATA.
064360,000279:
064361,000280: # VERIFY SEQUENCE
Page 1470 |
064363,000282: 27,3446 33477 UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
064364,000283: 27,3447 54156 TS MPAC +2 # IS TO BE STORED INTO R3.
064365,000284: 27,3450 33502 CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
064366,000285: 27,3451 04555 TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEST
064367,000286: 27,3452 20465 CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
064368,000287: 27,3453 13675 TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
064369,000288: 27,3454 13503 TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
064370,000289: 27,3455 03471 TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
064371,000290: 27,3456 30330 CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SENT
064372,000291: 27,3457 00006 EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
064373,000292: 27,3460 63446 BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
064374,000293: 27,3461 40330 CS UPTEMP
064375,000294: 27,3462 60300 AD COMPNUMB
064376,000295: 27,3463 64712 AD BIT1
064377,000296: 27,3464 00006 EXTEND
064378,000297: 27,3465 63446 BZMF UPVERIFY # NO
064379,000298: 27,3466 33645 CAF ADUPBFM1 # YES - BASED ON THE COMPONENT NO. INDEX
064380,000299: 27,3467 60330 AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
064381,000300: 27,3470 13432 TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANGE.
064382,000301:
064383,000302: 27,3471 27,3675 UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TO TERMINATE UPDATE
064384,000303:
064385,000304: # CHECK FOR VERB 32 SEQUENCE
064386,000305:
064387,000306: 27,3471 40154 CK4V32 CS MPAC # ON DATA RETURN FROM 'GOXDSPF'
064388,000307: 27,3472 74705 MASK BIT6 # ON DATA RETURN FROM "GOXDSP" & THE CON-
064389,000308: 27,3473 10000 CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
064390,000309: 27,3474 00002 TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
064391,000310: 27,3475 50002 INDEX Q
064392,000311: 27,3476 77771 TC 0 -6 # V32 ENCOUNTERED - GO BACK AND GET DATA
064393,000312:
064394,000313: 27,3477 00330 ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
064395,000314: 27,3500 00304 ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
064396,000315: 27,3501 05201 UPLOADNV VN 2101 # VERB 21 NOUN 01
064397,000316: 27,3502 05202 UPVRFYNV VN 2102 # VERB 21 NOUN 02
064398,000317: 27,3503 4376 UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
064399,000318: 27,3503 4715 UPDTPHAS EQUALS FIVE
064400,000319:
064401,000320: # PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
064402,000321:
064403,000322: 27,3503 UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
064404,000323:
064405,000324: 27,3503 00004 INHINT
064406,000325:
064407,000326: 27,3504 30103 CAE FLAGWRD7 # INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO
064408,000327: 27,3505 56001 XCH L # INDICATE TO THE GROUND (VIA DOWNLINK)
064409,000328: 27,3506 34710 CAF BIT3 # THAT THE V33 (WHICH THE GROUND SENT TO
064410,000329: 27,3507 00006 EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
064411,000330: 27,3510 06001 RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
Page 1471 |
064413,000332: 27,3511 54103 TS FLAGWRD7
064414,000333:
064415,000334: 27,3512 05301 TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
064416,000335: 27,3513 04026 OCT 04026 # DATA STORE IF A RESTART OCCURS.
064417,000336: 27,3514 00004 INHINT # (BECAUSE PHASCHNG DID A RELINT)
064418,000337:
064419,000338: 27,3515 44711 CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED,
064420,000339: 27,3516 60302 AD UPVERB # THAT IS, IF IT'S A V70 - V72.
064421,000340: 27,3517 00006 EXTEND # GO TO UPEND73 IF IT'S A V73.
064422,000341: 27,3520 63527 BZMF UPFNDVAC
064423,000342:
064424,000343: # VERB 73 BRANCH
064425,000344:
064426,000345: 27,3521 00006 UPEND73 EXTEND # V73 - PERFORM DP OCTAL AGC CLOCK INCREMENT
064427,000346: 27,3522 30305 DCA UPBUFF
064428,000347: 27,3523 52315 DXCH UPBUFF +8D
064429,000348: 27,3524 03552 TC TIMEDIDL
064430,000349: 27,3525 04400 TC FALTON # ERROR - TURN ON *OPERATOR ERROR* LIGHT
064431,000350: 27,3526 03675 TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
064432,000351:
064433,000352: 27,3527 34371 UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
064434,000353: 27,3530 05042 TC FINDVAC # GET VAC AREA FOR 'CALL INTSTALL'
064435,000354: 27,3531 E3,1706 EBANK= TEPHEM
064436,000355: 27,3531 03534 56103 2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
064437,000356: 27,3533 05112 TC ENDOFJOB # 'TEPHEM' UPDATE BY V70)
064438,000357:
064439,000358: 27,3534 06006 UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE -- SO
064440,000359: 27,3535 77624 CALL # WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI)
064441,000360: 27,3536 27371 INTSTALL # IS IN PROGRESS -- OR -- GRAB OI AND RETURN
064442,000361: # TO UPWAKE IF OI IS NOT IN PROGRESS.
064443,000362:
064444,000363: 27,3537 77776 UPWAKE EXIT
064445,000364:
064446,000365: 27,3540 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
064447,000366: 27,3541 04026 OCT 04026
064448,000367:
064449,000368: 27,3542 05435 TC UPFLAG # SET INTEGRATION RESTART BIT
064450,000369: 27,3543 00236 ADRES REINTFLG
064451,000370: 27,3544 00004 INHINT
064452,000371: 27,3545 UPPART3 EQUALS
064453,000372:
064454,000373: 27,3545 50302 INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
064455,000374: 27,3546 13547 TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
064456,000375: 27,3547 13706 TCF UPEND70 # V70
064457,000376: 27,3550 13615 TCF UPEND71 # V71
064458,000377: 27,3551 13647 TCF UPEND72 # V72
064459,000378:
064460,000379: # ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
Page 1472 |
064462,000381: 27,3552 00006 TIMEDIDL EXTEND
064463,000382: 27,3553 22330 QXCH UPTEMP # SAVE Q FOR RETURN
064464,000383: 27,3554 34714 CAF ZERO # ZERO AND SAVE TIME2,TIME1
064465,000384: 27,3555 22007 ZL
064466,000385: 27,3556 52025 DXCH TIME2
064467,000386: 27,3557 52327 DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
064468,000387:
064469,000388: 27,3560 34715 CAF UPDTPHAS # DO
064470,000389: 27,3561 54001 TS L # A
064471,000390: 27,3562 40000 COM # QUICK
064472,000391: 27,3563 52765 DXCH -PHASE6 # PHASCHNG
064473,000392:
064474,000393: 27,3564 00004 TIMEDIDR INHINT
064475,000394: 27,3565 34714 CAF ZERO
064476,000395: 27,3566 22007 ZL # PICK UP INCREMENTER (AND ZERO
064477,000396: 27,3567 54156 TS MPAC +2 # IT IN CASE OF RESTARTS) AND
064478,000397: 27,3570 52315 DXCH UPBUFF +8D # STORE IT
064479,000398: 27,3571 52155 DXCH MPAC # INTO MPAC FOR TPAGREE.
064480,000399:
064481,000400: 27,3572 00006 EXTEND
064482,000401: 27,3573 30327 DCA UPBUFF +18D
064483,000402: 27,3574 20155 DAS MPAC # FORM SUM IN MPAC
064484,000403: 27,3575 00006 EXTEND
064485,000404: 27,3576 13605 BZF DELTAOK # TEST FOR OVERFLOW
064486,000405: 27,3577 34714 CAF ZERO
064487,000406: 27,3600 52327 DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
064488,000407: 27,3601 20025 DAS TIME2 # AND TURN ON OPERATOR ERROR
064489,000408:
064490,000409: 27,3602 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
064491,000410: 27,3603 04026 OCT 04026
064492,000411:
064493,000412: 27,3604 00330 TC UPTEMP # GO TO ERROR EXIT
064494,000413:
064495,000414: 27,3605 07226 DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT
064496,000415: 27,3606 52155 DXCH MPAC
064497,000416: 27,3607 20025 DAS TIME2 # INCREMENT TIME2,TIME1
064498,000417:
064499,000418: 27,3610 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
064500,000419: 27,3611 04026 OCT 04026
064501,000420:
064502,000421: 27,3612 00004 INHINT
064503,000422: 27,3613 50330 INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
064504,000423: 27,3614 00001 TC 1 # NORMAL RETURN
064505,000424:
064506,000425: # VERB 71 BRANCH
064507,000426:
064508,000427: 27,3615 30305 UPEND71 CAE UPBUFF +1 # SET EBANK
064509,000428: 27,3616 54003 TS EBANK # AND
064510,000429: 27,3617 74373 MASK LOW8 # CALCULATE
064511,000430: 27,3620 54330 TS UPTEMP # S-REG VALUE OF RECEIVING AREA
Page 1473 |
064513,000432: 27,3621 67714 AD NEG3 # IN THE PROCESS OF
064514,000433: 27,3622 60300 AD COMPNUMB # PERFORMING
064515,000434: 27,3623 00006 EXTEND # THIS UPDATE
064516,000435: 27,3624 13632 BZF STORLP71 # WILL WE
064517,000436: 27,3625 74702 MASK BIT9 # OVERFLOW
064518,000437: 27,3626 10000 CCS A # INTO THE NEXT EBANK....
064519,000438: 27,3627 13743 TCF UPERROUT # YES
064520,000439:
064521,000440: 27,3630 37714 CA NEG3 # NO - CALCULATE NUMBER OF
064522,000441: 27,3631 60300 AD COMPNUMB # WORDS TO BE STORED MINUS ONE
064523,000442: 27,3632 54154 STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
064524,000443: 27,3633 50000 INDEX A # TAKE NEXT UPDATE WORD FROM
064525,000444: 27,3634 30306 CA UPBUFF +2 # UPBUFF AND
064526,000445: 27,3635 54001 TS L # SAVE IT IN L
064527,000446: 27,3636 30154 CA MPAC # CALCULATE NEXT
064528,000447: 27,3637 60330 AD UPTEMP # RECEIVING ADDRESS
064529,000448: 27,3640 50000 INDEX A
064530,000449: 27,3641 E3,1400 EBANK= 1400
064531,000450: 27,3641 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
064532,000451: 27,3642 E3,1706 EBANK= TEPHEM
064533,000452: 27,3642 10154 CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
064534,000453: 27,3643 13632 TCF STORLP71 # YES
064535,000454: 27,3644 13674 TCF UPOUT # NO - THEN EXIT UPDATE PROGRAM
064536,000455: 27,3645 00303 ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
064537,000456: 27,3646 13674 TCF UPOUT # NO - EXIT UPDATE (HERE WHEN COMPNUMB = 3)
064538,000457:
064539,000458: # VERB 72 BRANCH
064540,000459:
064541,000460: 27,3647 34712 UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
064542,000461: 27,3650 70300 MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ...
064543,000462: 27,3651 10000 CCS A
064544,000463: 27,3652 13654 TCF +2 # YES
064545,000464: 27,3653 13743 TCF UPERROUT # ERROR - SHOULD BE ODD NO. OF COMPONENTS
064546,000465: 27,3654 44711 CS BIT2
064547,000466: 27,3655 60300 AD COMPNUMB
064548,000467: 27,3656 54154 LDLOOP72 TS MPAC # NOW PERFORM THE UPDATE
064549,000468: 27,3657 50000 INDEX A
064550,000469: 27,3660 30305 CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
064551,000470: 27,3661 22000 LXCH A
064552,000471: 27,3662 10154 CCS MPAC # SET POINTER TO ECADR (MUST BE CCS)
064553,000472: 27,3663 54154 TS MPAC
064554,000473: 27,3664 50000 INDEX A
064555,000474: 27,3665 30305 CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
064556,000475: 27,3666 54003 TS EBANK # SET EBANK
064557,000476: 27,3667 74373 MASK LOW8 # ISOLATE RELATIVE ADDRESS
064558,000477: 27,3670 50000 INDEX A
064559,000478: 27,3671 E3,1400 EBANK= 1400
064560,000479: 27,3671 23400 LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
064561,000480: 27,3672 E3,1706 EBANK= TEPHEM
Page 1474 |
064563,000482: 27,3672 10154 CCS MPAC # ARE WE THROUGH THE V72 UPDATE...
064564,000483: 27,3673 13656 TCF LDLOOP72 # NO
064565,000484:
064566,000485: # NORMAL FINISH OF P27
064567,000486:
064568,000487: 27,3674 UPOUT EQUALS
064569,000488: 27,3674 02662 TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
064570,000489: 27,3675 30301 +1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
064571,000490: 27,3676 05246 TC NEWMODEX +3
064572,000491: 27,3677 34714 CAF ZERO
064573,000492: 27,3700 54332 TS DNLSTCOD
064574,000493: 27,3701 03750 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
064575,000494: 27,3702 00006 EXTEND # KILL GROUP 6.
064576,000495: 27,3703 34714 DCA NEG0
064577,000496: 27,3704 52765 DXCH -PHASE6
064578,000497:
064579,000498: 27,3705 05423 TC ENDEXT # EXTENDED VERB EXIT
064580,000499:
064581,000500: # VERB 70 BRANCH
064582,000501:
064583,000502: 27,3706 00006 UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
064584,000503: 27,3707 40305 DCS UPBUFF # TIME IN UPBUFF
064585,000504: 27,3710 52315 DXCH UPBUFF +8D
064586,000505: 27,3711 03552 TC TIMEDIDL # DECREMENT AGC CLOCK
064587,000506:
064588,000507: 27,3712 03743 TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
064589,000508:
064590,000509: 27,3713 E3,1706 EBANK= TEPHEM
064591,000510: 27,3713 00006 EXTEND
064592,000511: 27,3714 40305 DCS UPBUFF # COPY DECREMENTERS FOR
064593,000512: 27,3715 52317 DXCH UPBUFF +10D # RESTART PROTECTION
064594,000513: 27,3716 00006 EXTEND
064595,000514: 27,3717 40305 DCS UPBUFF
064596,000515: 27,3720 52321 DXCH UPBUFF +12D
064597,000516:
064598,000517: 27,3721 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
064599,000518: 27,3722 04026 OCT 04026
064600,000519:
064601,000520: 27,3723 34714 CAF ZERO
064602,000521: 27,3724 22007 ZL
064603,000522: 27,3725 52317 DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
064604,000523: 27,3726 21571 DAS TETCSM
064605,000524:
064606,000525: 27,3727 34714 CAF ZERO
064607,000526: 27,3730 22007 ZL
064608,000527: 27,3731 52321 DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
064609,000528: 27,3732 21643 DAS TETLEM
Page 1475 |
064611,000530: 27,3733 34714 CAF ZERO
064612,000531: 27,3734 22007 ZL
064613,000532: 27,3735 52305 DXCH UPBUFF
064614,000533: 27,3736 21710 DAS TEPHEM +1 # INCREMENT TP TEPHEM
064615,000534: 27,3737 27706 ADS TEPHEM
064616,000535:
064617,000536: 27,3740 05301 TC PHASCHNG # RESTART PROTECT (GROUP 6)
064618,000537: 27,3741 04026 OCT 04026
064619,000538:
064620,000539: 27,3742 0304 EBANK= UPBUFF
064621,000540:
064622,000541: 27,3742 03674 TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
064623,000542:
064624,000543: # ERROR SEQUENCE
064625,000544:
064626,000545: 27,3743 04400 UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
064627,000546: 27,3744 13674 TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
064628,000547:
064629,000548: 27,3745 04400 +2 TC FALTON # TURN ON 'OPERATOR ERROR' LIGHT
064630,000549: 27,3746 03750 TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
064631,000550: 27,3747 05423 TC ENDEXT # EXTENDED VERB EXIT
064632,000551: # (THE PURPOSE OF UPERROUT +2 EXIT IS
064633,000552: # TO PROVIDE AN ERROR EXIT WHICH DOES NOT
064634,000553: # RESET ANY RESTART GROUPS)
064635,000554:
064636,000555: # :UPACTOFF: IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
064637,000556:
064638,000557: 27,3750 44710 UPACTOFF CS BIT3
064639,000558: 27,3751 00006 EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
064640,000559: 27,3752 03011 WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
064641,000560: 27,3753 00002 TC Q
End of include-file UPDATE_PROGRAM.agc. Parent file is MAIN.agc