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