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