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