Source Code

061170,000001: # Copyright: Public domain. 061171,000002: # Filename: KEYRUPT_UPRUPT.agc 061172,000003: # Purpose: Part of the source code for Colossus, build 249. 061173,000004: # It is part of the source code for the Command Module's (CM) 061174,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9. 061175,000006: # Assembler: yaYUL 061176,000007: # Reference: Starts on p. 1439 of 1701.pdf. 061177,000008: # Contact: Ron Burkey <info@sandroid.org>. 061178,000009: # Website: www.ibiblio.org/apollo. 061179,000010: # Mod history: 08/30/04 RSB. Adapted from corresponding Luminary131 file. 061180,000011: 061181,000012: # The contents of the "Colossus249" files, in general, are transcribed 061182,000013: # from a scanned document obtained from MIT's website, 061183,000014: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this 061184,000015: # document read, in part: 061185,000016: 061186,000017: # Assemble revision 249 of AGC program Colossus by NASA 061187,000018: # 2021111-041. October 28, 1968. 061188,000019: 061189,000020: # This AGC program shall also be referred to as 061190,000021: # Colossus 1A 061191,000022: 061192,000023: # Prepared by 061193,000024: # Massachussets Institute of Technology 061194,000025: # 75 Cambridge Parkway 061195,000026: # Cambridge, Massachusetts 061196,000027: # under NASA contract NAS 9-4065. 061197,000028: 061198,000029: # Refer directly to the online document mentioned above for further information. 061199,000030: # Please report any errors (relative to 1701.pdf) to info@sandroid.org. 061200,000031: 061201,000032: # In some cases, where the source code for Luminary 131 overlaps that of 061202,000033: # Colossus 249, this code is instead copied from the corresponding Luminary 131 061203,000034: # source file, and then is proofed to incorporate any changes. 061204,000035: 061205,000036: # Page 1439 061206,000037: 14,3744 BANK 14 061207,000038: 07,2000 SETLOC KEYRUPT 061208,000039: 07,2000 BANK 061209,000040: 07,3613 COUNT* $$/KEYUP 061210,000041: 061211,000042: 07,3613 54016 KEYRUPT1 TS BANKRUPT 061212,000043: 07,3614 56002 XCH Q 061213,000044: 07,3615 54012 TS QRUPT 061214,000045: 07,3616 04414 TC LODSAMPT # TIME IS SNATCHED IN RUPT FOR NOUN 65. 061215,000046: 07,3617 34362 CAF LOW5 061216,000047: 07,3620 00006 EXTEND 061217,000048: 07,3621 02015 RAND MNKEYIN # CHECK IF KEYS 5M-1M ON 061218,000049: 07,3622 54073 KEYCOM TS RUPTREG4 061219,000050: 07,3623 40101 CS FLAGWRD5 061220,000051: 07,3624 74674 MASK BIT15 061221,000052: 07,3625 26101 ADS FLAGWRD5 061222,000053: 061223,000054: 07,3626 34371 ACCEPTUP CAF CHRPRIO # (NOTE: RUPTREG4 = KEYTEMP1) 061224,000055: 07,3627 05027 TC NOVAC 061225,000056: 07,3630 0777 EBANK= DSPCOUNT 061226,000057: 07,3630 02000 60101 2CADR CHARIN 061227,000058: 061228,000059: 07,3632 30073 CA RUPTREG4 061229,000060: 07,3633 50064 INDEX LOCCTR 061230,000061: 07,3634 54154 TS MPAC # LEAVE 5 BIT KEY CODE IN MPAC FOR CHARIN 061231,000062: 07,3635 05222 TC RESUME 061232,000063: 061233,000064: # Page 1440 061234,000065: # UPRUPT PROGRAM 061235,000066: 061236,000067: 07,3636 54016 UPRUPT TS BANKRUPT 061237,000068: 07,3637 56002 XCH Q 061238,000069: 07,3640 54012 TS QRUPT 061239,000070: 07,3641 04414 TC LODSAMPT # TIME IS SNATCHED IN RUPT FOR NOUN 65. 061240,000071: 07,3642 34714 CAF ZERO 061241,000072: 07,3643 56045 XCH INLINK 061242,000073: 07,3644 54073 TS KEYTEMP1 061243,000074: 07,3645 34710 CAF BIT3 # TURN ON UPACT LIGHT 061244,000075: 07,3646 00006 EXTEND # (BIT 3 OF CHANNEL 11) 061245,000076: 07,3647 05011 WOR DSALMOUT 061246,000077: 07,3650 34362 UPRPT1 CAF LOW5 # TEST FOR TRIPLE CHAR REDUNDANCY 061247,000078: 07,3651 70073 MASK KEYTEMP1 # LOW5 OF WORD 061248,000079: 07,3652 56073 XCH KEYTEMP1 # LOW5 INTO KEYTEMP1 061249,000080: 07,3653 00006 EXTEND 061250,000081: 07,3654 74701 MP BIT10 # SHIFT RIGHT 5 061251,000082: 07,3655 54734 TS KEYTEMP2 061252,000083: 07,3656 74362 MASK LOW5 # MID 5 061253,000084: 07,3657 63713 AD HI10 061254,000085: 07,3660 03710 TC UPTEST 061255,000086: 07,3661 34701 CAF BIT10 061256,000087: 07,3662 00006 EXTEND 061257,000088: 07,3663 70734 MP KEYTEMP2 # SHIFT RIGHT 5 061258,000089: 07,3664 74362 MASK LOW5 # HIGH 5 061259,000090: 07,3665 40000 COM 061260,000091: 07,3666 03710 TC UPTEST 061261,000092: 061262,000093: 07,3667 43716 UPCK CS ELRCODE # CODE IS GOOD. IF CODE = `ERROR RESET', 061263,000094: 07,3670 60073 AD KEYTEMP1 # CLEAR UPLOCKFL (SET BIT4 OF FLAGWRD7 = 0) 061264,000095: 07,3671 00006 EXTEND # IF CODE DOES NOT = `ERROR RESET', ACCEPT 061265,000096: 07,3672 13700 BZF CLUPLOCK # CODE ONLY IF UPLOCKFL IS CLEAR (=0). 061266,000097: 061267,000098: 07,3673 34707 CAF BIT4 # TEST UPLOCKFL FOR 0 OR 1 061268,000099: 07,3674 70103 MASK FLAGWRD7 061269,000100: 07,3675 10000 CCS A 061270,000101: 07,3676 05222 TC RESUME # UPLOCKFL = 1 061271,000102: 07,3677 03626 TC ACCEPTUP # UPLOCKFL = 0 061272,000103: 061273,000104: 07,3700 44707 CLUPLOCK CS BIT4 # CLEAR UPLOCKFL (I.E., SET BIT 4 OF 061274,000105: 07,3701 70103 MASK FLAGWRD7 # FLAGWRD7 = 0) 061275,000106: 07,3702 54103 TS FLAGWRD7 061276,000107: 07,3703 03626 TC ACCEPTUP 061277,000108: 061278,000109: # CODE IS BAD 061279,000110: 07,3704 40103 TMFAIL2 CS FLAGWRD7 # LOCK OUT FURTHER UPLINK ACTIVITY 061280,000111: 07,3705 74707 MASK BIT4 # (BY SETTING UPLOCKFL = 1) UNTIL 061281,000112: 07,3706 26103 ADS FLAGWRD7 # `ERROR RESET' IS SENT VIA UPLINK. 061282,000113: 07,3707 05222 TC RESUME 061283,000114: 07,3710 60073 UPTEST AD KEYTEMP1 061284,000115: # Page 1441 061285,000116: 07,3711 10000 CCS A 061286,000117: 07,3712 03704 TC TMFAIL2 061287,000118: 07,3713 77740 HI10 OCT 77740 061288,000119: 07,3714 03704 TC TMFAIL2 061289,000120: 07,3715 00002 TC Q 061290,000121: 061291,000122: 07,3716 00022 ELRCODE OCT 22 061292,000123: 061293,000124: # `UPLINK ACTIVITY LIGHT' IS TURNED OFF BY ..... 061294,000125: # 1. VBRELDSP 061295,000126: # 2. ERROR RESET 061296,000127: # 3. UPDATE PROGRAM (P27) ENTERED BY V70,V71,V72, AND V73. 061297,000128: 061298,000129: # THE RECEPTION OF A BAD CODE (I.E., CCC FAILURE) LOCKS OUT FURTHER UPLINK ACTIVITY BY SETTING BIT4 OF FLAGWRD7 = 1. 061299,000130: # THIS INDICATION WILL BE TRANSFERRED TO THE GROUND BY THE DOWNLINK WHICH DOWNLINKS ALL FLAGWORDS. 061300,000131: # WHEN UPLINK ACTIVITY IS LOCKED OUT, IT CAN BE ALLOWED WHEN THE GROUND UPLINS AND `ERROR RESET' CODE. 061301,000132: # (IT IS RECOMMENDED THAT THE `ERROR LIGHT RESET' CODE IS PRECEEDED BY 16 BITS THE FIRST OF WHICH IS 1 FOLLOWED 061302,000133: # BY 15 ZEROS. THIS WILL ELIMINATE EXTRANEOUS BITS FROM INLINK WHICH MAY HAVE BEEN LEFT OVER FROM THE ORIGINAL 061303,000134: # FAILURE). 061304,000135: 061305,000136: # UPLINK ACTIVITY IS ALSO ALLOWED (UNLOCKED) DURING FRECH START WHEN FRESH START SETS BIT4 OF FLAGWRD7 = 0. 061306,000137: 061307,000138: End of include-file KEYRUPT_UPRUPT.agc. Parent file is MAIN.agc