Source Code

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