Source Code

055319,000001: # Copyright: Public domain. 055320,000002: # Filename: KEYRUPT_UPRUPT.agc 055321,000003: # Purpose: A section of Luminary 1C, revision 131. 055322,000004: # It is part of the source code for the Lunar Module's (LM) 055323,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14. 055324,000006: # This file is intended to be a faithful transcription, except 055325,000007: # that the code format has been changed to conform to the 055326,000008: # requirements of the yaYUL assembler rather than the 055327,000009: # original YUL assembler. 055328,000010: # Reference: pp. 1335-1337 of 1729.pdf. 055329,000011: # Contact: Ron Burkey <info@sandroid.org>. 055330,000012: # Website: www.ibiblio.org/apollo/index.html 055331,000013: # Mod history: 06/06/03 RSB. Began transcribing. 055332,000014: # 05/14/05 RSB Corrected website reference above. 055333,000015: 055334,000016: # Page 1335 055335,000017: 14,3775 BANK 14 055336,000018: 04,2000 SETLOC KEYRUPT 055337,000019: 04,2000 BANK 055338,000020: 04,3253 COUNT* $$/KEYUP 055339,000021: 055340,000022: 04,3253 54016 KEYRUPT1 TS BANKRUPT 055341,000023: 04,3254 56002 XCH Q 055342,000024: 04,3255 54012 TS QRUPT 055343,000025: 04,3256 04400 TC LODSAMPT # TIME IS SNATCHED IN RUPT FOR NOUN 65. 055344,000026: 04,3257 34346 CAF LOW5 055345,000027: 04,3260 00006 EXTEND 055346,000028: 04,3261 02015 RAND MNKEYIN # CHECK IF KEYS 5M-1M ON 055347,000029: 04,3262 54073 KEYCOM TS RUPTREG4 055348,000030: 04,3263 40101 CS FLAGWRD5 055349,000031: 04,3264 74735 MASK DSKYFBIT 055350,000032: 04,3265 26101 ADS FLAGWRD5 055351,000033: 055352,000034: 04,3266 34355 ACCEPTUP CAF CHRPRIO # (NOTE: RUPTREG4 = KEYTEMP1) 055353,000035: 04,3267 05072 TC NOVAC 055354,000036: 04,3270 0776 EBANK= DSPCOUNT 055355,000037: 04,3270 02077 60101 2CADR CHARIN 055356,000038: 055357,000039: 04,3272 30073 CA RUPTREG4 055358,000040: 04,3273 50064 INDEX LOCCTR 055359,000041: 04,3274 54154 TS MPAC # LEAVE 5 BIT KEY CODE IN MPAC FOR CHARIN 055360,000042: 04,3275 05270 TC RESUME 055361,000043: 055362,000044: # Page 1336 055363,000045: # UPRUPT PROGRAM 055364,000046: 055365,000047: 04,3276 54016 UPRUPT TS BANKRUPT 055366,000048: 04,3277 56002 XCH Q 055367,000049: 04,3300 54012 TS QRUPT 055368,000050: 04,3301 04400 TC LODSAMPT # TIME IS SNATCHED IN RUPT FOR NOUN 65. 055369,000051: 04,3302 34755 CAF ZERO 055370,000052: 04,3303 56045 XCH INLINK 055371,000053: 04,3304 54073 TS KEYTEMP1 055372,000054: 04,3305 34751 CAF BIT3 # TURN ON UPACT LIGHT 055373,000055: 04,3306 00006 EXTEND # (BIT 3 OF CHANNEL 11) 055374,000056: 04,3307 05011 WOR DSALMOUT 055375,000057: 04,3310 34346 UPRPT1 CAF LOW5 # TEST FOR TRIPLE CHAR REDUNDANCY 055376,000058: 04,3311 70073 MASK KEYTEMP1 # LOW5 OF WORD 055377,000059: 04,3312 56073 XCH KEYTEMP1 # LOW5 INTO KEYTEMP1 055378,000060: 04,3313 00006 EXTEND 055379,000061: 04,3314 74742 MP BIT10 # SHIFT RIGHT 5 055380,000062: 04,3315 54332 TS KEYTEMP2 055381,000063: 04,3316 74346 MASK LOW5 # MID 5 055382,000064: 04,3317 63353 AD HI10 055383,000065: 04,3320 03350 TC UPTEST 055384,000066: 04,3321 34742 CAF BIT10 055385,000067: 04,3322 00006 EXTEND 055386,000068: 04,3323 70332 MP KEYTEMP2 # SHIFT RIGHT 5 055387,000069: 04,3324 74346 MASK LOW5 # HIGH 5 055388,000070: 04,3325 40000 COM 055389,000071: 04,3326 03350 TC UPTEST 055390,000072: 055391,000073: 04,3327 43356 UPCK CS ELRCODE # CODE IS GOOD. IF CODE = `ERROR RESET', 055392,000074: 04,3330 60073 AD KEYTEMP1 # CLEAR UPLOCKFL (SET BIT4 OF FLAGWRD7 = 0) 055393,000075: 04,3331 00006 EXTEND # IF CODE DOES NOT = `ERROR RESET', ACCEPT 055394,000076: 04,3332 13340 BZF CLUPLOCK # CODE ONLY IF UPLOCKFL IS CLEAR (=0). 055395,000077: 055396,000078: 04,3333 34750 CAF UPLOCBIT # TEST UPLOCKFL FOR 0 OR 1 055397,000079: 04,3334 70103 MASK FLAGWRD7 055398,000080: 04,3335 10000 CCS A 055399,000081: 04,3336 05270 TC RESUME # UPLOCKFL = 1 055400,000082: 04,3337 03266 TC ACCEPTUP # UPLOCKFL = 0 055401,000083: 055402,000084: 04,3340 44750 CLUPLOCK CS UPLOCBIT # CLEAR UPLOCKFL (I.E., SET BIT 4 OF 055403,000085: 04,3341 70103 MASK FLAGWRD7 # FLAGWRD7 = 0) 055404,000086: 04,3342 54103 TS FLAGWRD7 055405,000087: 04,3343 03266 TC ACCEPTUP 055406,000088: 055407,000089: # CODE IS BAD 055408,000090: 04,3344 40103 TMFAIL2 CS FLAGWRD7 # LOCK OUT FURTHER UPLINK ACTIVITY 055409,000091: 04,3345 74750 MASK UPLOCBIT # (BY SETTING UPLOCKFL = 1) UNTIL 055410,000092: 04,3346 26103 ADS FLAGWRD7 # `ERROR RESET' IS SENT VIA UPLINK. 055411,000093: 04,3347 05270 TC RESUME 055412,000094: 04,3350 60073 UPTEST AD KEYTEMP1 055413,000095: # Page 1337 055414,000096: 04,3351 10000 CCS A 055415,000097: 04,3352 03344 TC TMFAIL2 055416,000098: 04,3353 77740 HI10 OCT 77740 055417,000099: 04,3354 03344 TC TMFAIL2 055418,000100: 04,3355 00002 TC Q 055419,000101: 055420,000102: 04,3356 00022 ELRCODE OCT 22 055421,000103: 055422,000104: # `UPLINK ACTIVITY LIGHT' IS TURNED OFF BY ..... 055423,000105: # 1. VBRELDSP 055424,000106: # 2. ERROR RESET 055425,000107: # 3. UPDATE PROGRAM (P27) ENTERED BY V70,V71,V72, AND V73. 055426,000108: 055427,000109: # THE RECEPTION OF A BAD CODE (I.E., CCC FAILURE) LOCKS OUT FURTHER UPLINK ACTIVITY BY SETTING BIT4 OF FLAGWRD7 = 1. 055428,000110: # THIS INDICATION WILL BE TRANSFERRED TO THE GROUND BY THE DOWNLINK WHICH DOWNLINKS ALL FLAGWORDS. 055429,000111: # WHEN UPLINK ACTIVITY IS LOCKED OUT, IT CAN BE ALLOWED WHEN THE GROUND UPLINS AND `ERROR RESET' CODE. 055430,000112: # (IT IS RECOMMENDED THAT THE `ERROR LIGHT RESET' CODE IS PRECEEDED BY 16 BITS THE FIRST OF WHICH IS 1 FOLLOWED 055431,000113: # BY 15 ZEROS. THIS WILL ELIMINATE EXTRANEOUS BITS FROM INLINK WHICH MAY HAVE BEEN LEFT OVER FROM THE ORIGINAL 055432,000114: # FAILURE). 055433,000115: 055434,000116: # UPLINK ACTIVITY IS ALSO ALLOWED (UNLOCKED) DURING FRECH START WHEN FRESH START SETS BIT4 OF FLAGWRD7 = 0. End of include-file KEYRUPT_UPRUPT.agc. Parent file is MAIN.agc