Source Code

059716,000001: # Copyright: Public domain. 059717,000002: # Filename: T6-RUPT_PROGRAMS.agc 059718,000003: # Purpose: Part of the source code for Luminary 1A build 099. 059719,000004: # It is part of the source code for the Lunar Module's (LM) 059720,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 059721,000006: # Assembler: yaYUL 059722,000007: # Contact: Ron Burkey <info@sandroid.org>. 059723,000008: # Website: www.ibiblio.org/apollo. 059724,000009: # Pages: 1403-1405 059725,000010: # Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting 059726,000011: # from the Luminary131/ file of the same 059727,000012: # name, using Luminary099 page images. 059728,000013: 059729,000014: # This source code has been transcribed or otherwise adapted from 059730,000015: # digitized images of a hardcopy from the MIT Museum. The digitization 059731,000016: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 059732,000017: # the Museum. Many thanks to both. The images (with suitable reduction 059733,000018: # in storage size and consequent reduction in image quality as well) are 059734,000019: # available online at www.ibiblio.org/apollo. If for some reason you 059735,000020: # find that the images are illegible, contact me at info@sandroid.org 059736,000021: # about getting access to the (much) higher-quality images which Paul 059737,000022: # actually created. 059738,000023: 059739,000024: # Notations on the hardcopy document read, in part: 059740,000025: 059741,000026: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 059742,000027: # 16:27 JULY 14, 1969 059743,000028: 059744,000029: # Page 1403 059745,000030: # PROGRAM NAMES: (1) T6JOBCHK MOD. NO. 5 OCTOBER 2, 1967 059746,000031: # (2) DOT6RUPT 059747,000032: # MODIFICATION BY: LOWELL G. HULL (A.C.ELECTRONICS) 059748,000033: 059749,000034: # THESE PROGRAMS ENABLE THE LM DAP TO CONTROL THE THRUST TIMES OF THE REACTION CONTROL SYSTEM JETS BY USING TIME6. 059750,000035: # SINCE THE LM DAP MAINTAINS EXCLUSIVE CONTROL OVER TIME6 AND ITS INTERRUPTS, THE FOLLOWING CONVENTIONS HAVE BEEN 059751,000036: # ESTABLISHED AND MUST NOT BE TAMPERED WITH: 059752,000037: # 1. NO NUMBER IS EVER PLACED INTO TIME6 EXCEPT BY LM DAP. 059753,000038: # 2. NO PROGRAM OTHER THAN LM DAP ENABLES THE TIME6 COUNTER. 059754,000039: # 3. TO USE TIME6, THE FOLLOWING SEQUENCE IS ALWAYS EMPLOYED: 059755,000040: # A. A POSITIVE (NON-ZERO) NUMBER IS STORED IN TIME6. 059756,000041: # B. THE TIME6 CLOCK IS ENABLED. 059757,000042: # C. TIME6 IS INTERROGATED AND IS: 059758,000043: # I. NEVER FOUND NEGATIVE (NON-ZERO) OR +0. 059759,000044: # II. SOMETIMES FOUND POSITIVE (BETWEEN 1 AND 240D) INDICATING THAT IT IS ACTIVE. 059760,000045: # III. SOMETIMES FOUND POSMAX INDICATING THAT IT IS INACTIVE AND NOT ENABLED. 059761,000046: # IV. SOMETIMES FOUND NEGATIVE ZERO INDICATING THAT: 059762,000047: # A. A T6RUPT IS ABOUT TO OCCUR AT THE NEXT DINC, OR 059763,000048: # B. A T6RUPT IS WAITING IN THE PRIORITY CHAIN, OR 059764,000049: # C. A T6RUPT IS IN PROCESS NOW. 059765,000050: # 4. ALL PROGRAMS WHICH OPERATE IN EITHER INTERRUPT MODE OR WITH INTERRUPT INHIBITED MUST CALL T6JOBCHK 059766,000051: # EVERY 5 MILLISECONDS TO PROCESS A POSSIBLE WAITING T6RUPT BEFORE IT CAN BE HONORED BY THE HARDWARE. 059767,000052: # (5. PROGRAM JTLST, IN Q,R-AXES, HANDLES THE INPUT LIST.) 059768,000053: 059769,000054: # T6JOBCHK CALLING SEQUENCE: 059770,000055: # L TC T6JOBCHK 059771,000056: # L+1 (RETURN) 059772,000057: 059773,000058: # DOT6RUPT CALLING SEQUENCE: 059774,000059: # DXCH ARUPT # T6RUPT LEAD IN AT LOCATION 4004. 059775,000060: # EXTEND 059776,000061: # DCA T6ADR 059777,000062: # DTCB 059778,000063: 059779,000064: # SUBROUTINES CALLED: DOT6RUPT CALLS T6JOBCHK. 059780,000065: 059781,000066: # NORMAL EXIT MODES: T6JOBCHK RETURNS TO L +1. 059782,000067: # DOT6RUPT TRANSFERS CONTROL TO RESUME. 059783,000068: 059784,000069: # ALARM/ABORT MODES: NONE. 059785,000070: 059786,000071: # INPUT: TIME6 NXT6ADR OUTPUT: TIME6 NXT6ADR CHANNEL 5 059787,000072: # T6NEXT T6NEXT +1 T6NEXT T6NEXT +1 CHANNEL 6 059788,000073: # T6FURTHA T6FURTHA +1 T6FURTHA T6FURTHA +1 BIT15/CH13 059789,000074: 059790,000075: # DEBRIS: T6JOBCHK CLOBBERS A. DOT6RUPT CLOBBERS NOTHING. 059791,000076: 059792,000077: 5753 BLOCK 02 059793,000078: # Page 1404 059794,000079: 17,2027 BANK 17 059795,000080: 17,2000 SETLOC DAPS2 059796,000081: 17,2000 BANK 059797,000082: 17,2027 E6,1466 EBANK= T6NEXT 059798,000083: 17,2027 COUNT* $$/DAPT6 059799,000084: 059800,000085: 17,2027 10031 T6JOBCHK CCS TIME6 # CHECK TIME6 FOR WAITING T6RUPT: 059801,000086: 17,2030 00002 TC Q # NONE: CLOCK COUNTING DOWN. 059802,000087: 17,2031 05705 TC CCSHOLE 059803,000088: 17,2032 02032 TC T6JOBCHK +3 059804,000089: 059805,000090: # CONTROL PASSES TO T6JOB ONLY WHEN C(TIME6) = -0 (I.E., WHEN A T6RUPT MUST BE PROCESSED). 059806,000091: 059807,000092: 17,2033 34733 T6JOB CAF POSMAX # DISABLE CLOCK: NEEDED SINCE RUPT OCCURS 059808,000093: 17,2034 00006 EXTEND # 1 DINC AFTER T6 = 77777. FOR 625 MUSECS 059809,000094: 17,2035 03013 WAND CHAN13 # MUST NOT HAVE T6 = +0 WITH ENABLE SET 059810,000095: 059811,000096: 17,2036 34733 CA POSMAX 059812,000097: 17,2037 22007 ZL 059813,000098: 17,2040 53471 DXCH T6FURTHA 059814,000099: 17,2041 53467 DXCH T6NEXT 059815,000100: 17,2042 23465 LXCH NXT6ADR 059816,000101: 17,2043 54031 TS TIME6 059817,000102: 059818,000103: 17,2044 67725 AD PRIO37 059819,000104: 17,2045 54000 TS A 059820,000105: 17,2046 12052 TCF ENABLET6 059821,000106: 17,2047 34733 CA POSMAX 059822,000107: 17,2050 54031 TS TIME6 059823,000108: 17,2051 12063 TCF GOCH56 059824,000109: 17,2052 34735 ENABLET6 CA BIT15 059825,000110: 17,2053 00006 EXTEND 059826,000111: 17,2054 05013 WOR CHAN13 059827,000112: 17,2055 31466 CA T6NEXT 059828,000113: 17,2056 67725 AD PRIO37 059829,000114: 17,2057 54000 TS A 059830,000115: 17,2060 12063 TCF GOCH56 059831,000116: 17,2061 34733 CA POSMAX 059832,000117: 17,2062 55466 TS T6NEXT 059833,000118: 17,2063 50001 GOCH56 INDEX L 059834,000119: 17,2064 15753 TCF WRITEP -1 059835,000120: 059836,000121: 5753 BLOCK 02 059837,000122: 4000 SETLOC FFTAG9 059838,000123: 4000 BANK 059839,000124: 5753 E6,1635 EBANK= CDUXD 059840,000125: 5753 COUNT* $$/DAPT6 059841,000126: 059842,000127: 5753 31472 CA NEXTP 059843,000128: 5754 00006 WRITEP EXTEND 059844,000129: 5755 01006 WRITE CHAN6 059845,000130: # Page 1405 059846,000131: 5756 00002 TC Q 059847,000132: 059848,000133: 5757 31473 CA NEXTU 059849,000134: 5760 54001 WRITEU TS L 059850,000135: 5761 45774 CS 00314OCT 059851,000136: 5762 00006 EXTEND 059852,000137: 5763 02005 RAND CHAN5 059853,000138: 5764 60001 AD L 059854,000139: 5765 00006 EXTEND 059855,000140: 5766 01005 WRITE CHAN5 059856,000141: 5767 00002 TC Q 059857,000142: 059858,000143: 5770 31474 CA NEXTV 059859,000144: 5771 54001 WRITEV TS L 059860,000145: 5772 35774 CA 00314OCT 059861,000146: 5773 15762 TCF -9D 059862,000147: 5774 00314 00314OCT OCT 00314 059863,000148: 059864,000149: 17,2065 BANK 17 059865,000150: 17,2000 SETLOC DAPS2 059866,000151: 17,2000 BANK 059867,000152: 059868,000153: 17,2065 E6,1466 EBANK= T6NEXT 059869,000154: 17,2065 COUNT* $$/DAPT6 059870,000155: 059871,000156: 17,2065 22016 DOT6RUPT LXCH BANKRUPT # (INTERRUPT LEAD INS CONTINUED) 059872,000157: 17,2066 00006 EXTEND 059873,000158: 17,2067 22012 QXCH QRUPT 059874,000159: 059875,000160: 17,2070 02027 TC T6JOBCHK # CALL T6JOBCHK. 059876,000161: 059877,000162: 17,2071 15270 TCF RESUME # END TIME6 INTERRUPT PROCESSOR. 059878,000163: End of include-file T6-RUPT_PROGRAMS.agc. Parent file is MAIN.agc