Source Code
![]() |
These source-code files derive from a printout of Luminary 116 (the Apollo 12
Lunar Module guidance computer program), from the personal library of
original AGC developer Don Eyles, digitally photographed at archive.org,
financially sponsored by Ron Burkey, and transcribed to source code by a
team of volunteers. This colorized, syntax-highlighted form was created
by assembling that transcribed source code. Note that the full page images
are available on the
Virtual AGC project page at archive.org, while reduced-size images
are presented at the VirtualAGC project website. Report or fix any
transcription errors at
the Virtual AGC project code repository. Notations on the program listing read, in part: GAP: ASSEMBLE REVISION 116 OF AGC PROGRAM LUMINARY BY NASA 2021112-071 19:09 AUG. 11,1969Note that the date is the date of the printout, not the date of the program revision. |
058187,000002: ## Copyright: Public domain.
058188,000003: ## Filename: ALARM_AND_ABORT.agc
058189,000004: ## Purpose: A section of Luminary revision 116.
058190,000005: ## It is part of the source code for the Lunar Module's (LM)
058191,000006: ## Apollo Guidance Computer (AGC) for Apollo 12.
058192,000007: ## This file is intended to be a faithful transcription, except
058193,000008: ## that the code format has been changed to conform to the
058194,000009: ## requirements of the yaYUL assembler rather than the
058195,000010: ## original YUL assembler.
058196,000011: ## Reference: pp. 1371-1375
058197,000012: ## Assembler: yaYUL
058198,000013: ## Contact: Ron Burkey <info@sandroid.org>.
058199,000014: ## Website: www.ibiblio.org/apollo/index.html
058200,000015: ## Mod history: 2017-01-22 MAS Created from Luminary 99.
058201,000016: ## 2017-02-03 RRB Updated for Luminary 116.
058202,000017: ## 2017-03-01 HG Fix Page number
058203,000018: ## Fix operand : -> L
058204,000019: ## operator LXCH -> TS
058205,000020: ## 2017-03-10 RSB Proofed comment text via 3-way diff vs
058206,000021: ## Luminary 99 and 132 ... no problems found.
058207,000022:
![]() |
Page 1371 |
058209,000024: # THE FOLLOWING SUBROUTINE MAY BE CALLED TO DISPLAY A NON-ABORTIVE ALARM CONDITION. IT MAY BE CALLED
058210,000025: # EITHER IN INTERRUPT OR UNDER EXECUTIVE CONTROL.
058211,000026:
058212,000027: # CALLING SEQUENCE IS AS FOLLOWS:
058213,000028: # TC ALARM
058214,000029: # OCT AAANN ALARM NO. NN IN GENERAL AREA AAA.
058215,000030: # (RETURNS HERE)
058216,000031:
058217,000032: 5567 BLOCK 02
058218,000033: 4000 SETLOC FFTAG7
058219,000034: 4000 BANK
058220,000035:
058221,000036: 5567 0375 EBANK= FAILREG
058222,000037:
058223,000038: 5567 COUNT* $$/ALARM
058224,000039: # ALARM TURNS ON THE PROGRAM ALARM LIGHT, BUT DOES NOT DISPLAY.
058225,000040:
058226,000041: 5567 00004 ALARM INHINT
058227,000042:
058228,000043: 5570 30002 CA Q
058229,000044: 5571 55363 ALARM2 TS ALMCADR
058230,000045: 5572 50002 INDEX Q
058231,000046: 5573 30000 CA 0
058232,000047: 5574 54001 BORTENT TS L
058233,000048:
058234,000049: 5575 30006 PRIOENT CA BBANK
058235,000050: 5576 00006 +1 EXTEND
058236,000051: 5577 04007 ROR SUPERBNK # ADD SUPER BITS.
058237,000052: 5600 55364 TS ALMCADR +1
058238,000053:
058239,000054: 5601 30002 LARMENT CA Q # STORE RETURN FOR ALARM
058240,000055: 5602 54061 TS ITEMP1
058241,000056:
058242,000057: 5603 10375 CHKFAIL1 CCS FAILREG # IS ANYTHING IN FAILREG
058243,000058: 5604 15610 TCF CHKFAIL2 # YES TRY NEXT REG
058244,000059: 5605 30001 CA L
058245,000060: 5606 54375 TS FAILREG
058246,000061: 5607 15614 TCF PROGLARM # TURN ALARM LIGHT ON FOR FIRST ALARM
058247,000062:
058248,000063: 5610 10376 CHKFAIL2 CCS FAILREG +1
058249,000064: 5611 15614 TCF PROGLARM
058250,000065: 5612 30001 CA L
058251,000066: 5613 54376 TS FAILREG +1
058252,000067:
058253,000068:
058254,000069: 5614 22377 PROGLARM LXCH FAILREG +2 # STORE AS "MOST RECENT" ALARM CODE
058255,000070:
058256,000071: 5615 41035 CS DSPTAB +11D # TURN ON PROGRAM ALARM IF OFF
058257,000072: 5616 75632 MASK OCT40400
058258,000073: 5617 27035 ADS DSPTAB +11D
![]() |
Page 1372 |
058260,000075:
058261,000076: 5620 56061 MULTEXIT XCH ITEMP1 # OBTAIN RETURN ADDRESS IN A
058262,000077: 5621 00003 RELINT
058263,000078: 5622 50000 INDEX A
058264,000079: 5623 00001 TC 1
058265,000080:
058266,000081: # PRIOLARM DISPLAYS V05N09 VIA PRIODSPR WITH 3 RETURNS TO THE USER FROM THE ASTRONAUT AT CALL LOC +1,+2,+3 AND
058267,000082: # AN IMMEDIATE RETURN TO THE USER AT CALL LOC +4. EXAMPLE FOLLOWS,
058268,000083: # CAF OCTXX ALARM CODE
058269,000084: # TC BANKCALL
058270,000085: # CADR PRIOLARM
058271,000086:
058272,000087: # ... ...
058273,000088: # ... ...
058274,000089: # ... ... ASTRONAUT RETURN
058275,000090: # TC PHASCHNG IMMEDIATE RETURN TO USER. RESTART
058276,000091: # OCT X.1 PHASE CHANGE FOR PRIO DISPLAY
058277,000092:
058278,000093: 10,3563 BANK 10
058279,000094: 10,2000 SETLOC DISPLAYS
058280,000095: 10,2000 BANK
058281,000096:
058282,000097: 10,3563 COUNT* $$/DSPLA
058283,000098: 10,3563 00004 PRIOLARM INHINT # * * * KEEP IN DISPLAY ROUTINES BANK
058284,000099: 10,3564 54001 TS L # SAVE ALARM CODE
058285,000100:
058286,000101: 10,3565 30133 CA BUF2 # 2 CADR OF PRIOLARM USER
058287,000102: 10,3566 55363 TS ALMCADR
058288,000103: 10,3567 30134 CA BUF2 +1
058289,000104: 10,3570 05576 TC PRIOENT +1 # * LEAVE L ALONE
058290,000105: 10,3571 77467 -2SEC DEC -200 B-14 # *** DONT MOVE
058291,000106: 10,3572 35006 CAF V05N09
058292,000107: 10,3573 12505 TCF PRIODSPR
058293,000108:
058294,000109: 5624 BLOCK 02
058295,000110: 4000 SETLOC FFTAG7
058296,000111: 4000 BANK
058297,000112:
058298,000113: 5624 COUNT* $$/ALARM
058299,000114: 5624 00004 BAILOUT INHINT
058300,000115: 5625 30002 CA Q
058301,000116: 5626 55363 TS ALMCADR
058302,000117:
058303,000118: 5627 50002 INDEX Q
058304,000119: 5630 30000 CAF 0
058305,000120: 5631 05574 TC BORTENT
058306,000121: 5632 40400 OCT40400 OCT 40400
058307,000122:
058308,000123: 5633 00004 INHINT
058309,000124: 5634 34752 WHIMPER CA TWO
058310,000125: 5635 60005 AD Z
![]() |
Page 1373 |
058312,000127: 5636 54017 TS BRUPT
058313,000128: 5637 50017 RESUME
![]() |
The command RESUME is circled in red ink - RRB 2017 |
058315,000130: 5640 04635 TC POSTJUMP # RESUME SENDS CONTROL HERE
058316,000131: 5641 12763 CADR ENEMA
058317,000132: 5642 00004 POODOO INHINT
058318,000133: 5643 30002 CA Q
058319,000134: 5644 55363 ABORT2 TS ALMCADR
058320,000135: 5645 50002 INDEX Q
058321,000136: 5646 30000 CAF 0
058322,000137: 5647 05574 TC BORTENT
058323,000138: 5650 77770 OCT77770 OCT 77770 # DON'T MOVE
058324,000139:
058325,000140: 5651 34765 CAF OCT35 # 4.35SPOT FOR GOPOODOO
058326,000141: 5652 54001 TS L
058327,000142: 5653 40000 COM
058328,000143: 5654 52760 DXCH -PHASE4
058329,000144: 5655 00004 GOPOODOO INHINT
058330,000145: 5656 04616 TC BANKCALL # RESET STATEFLG, REINTFLG, AND NODOFLAG.
058331,000146: 5657 27750 CADR FLAGS
058332,000147: 5660 30103 CA FLAGWRD7 # IS SERVICER CURRENTLY IN OPERATION?
058333,000148: 5661 74746 MASK V37FLBIT
058334,000149: 5662 10000 CCS A
058335,000150: 5663 15671 TCF STRTIDLE
058336,000151: 5664 04616 TC BANKCALL # TERMINATE GRPS 1, 3, 5, AND 6
058337,000152: 5665 12650 CADR V37KLEAN
058338,000153: 5666 04616 TC BANKCALL # TERMINATE GRPS 2, 4, 1, 3, 5, AND 6
058339,000154: 5667 12641 CADR MR.KLEAN # (I.E., GRP 4 LAST)
058340,000155: 5670 15634 TCF WHIMPER
058341,000156: 5671 35733 STRTIDLE CAF BBSERVDL
058342,000157: 5672 04727 TC SUPERSW
058343,000158: 5673 04616 TC BANKCALL # PUT SERVICER INTO ITS "GROUND" STATE
058344,000159: 5674 57321 CADR SERVIDLE # AND PROCEED TO GOTOPOOH.
058345,000160: 5675 00004 CCSHOLE INHINT
058346,000161: 5676 30002 CA Q
058347,000162: 5677 05644 TC ABORT2
058348,000163: 5700 21103 OCT21103 OCT 21103
058349,000164: 5701 00004 CURTAINS INHINT
058350,000165: 5702 30002 CA Q
058351,000166: 5703 05571 TC ALARM2
058352,000167: 5704 00217 OCT217 OCT 00217
058353,000168: 5705 01363 TC ALMCADR # RETURN TO USER
058354,000169:
058355,000170: 5706 00004 BAILOUT1 INHINT
058356,000171: 5707 53364 DXCH ALMCADR
058357,000172: 5710 35732 CAF ADR40400
058358,000173: 5711 54061 BOTHABRT TS ITEMP1
058359,000174: 5712 50002 INDEX Q
058360,000175: 5713 30000 CAF 0
058361,000176: 5714 54001 TS L
058362,000177: 5715 15603 TCF CHKFAIL1
![]() |
Page 1374 |
058364,000179: 5716 00004 POODOO1 INHINT
058365,000180: 5717 53364 DXCH ALMCADR
058366,000181: 5720 35731 CAF ADR77770
058367,000182: 5721 15711 TCF BOTHABRT
058368,000183:
058369,000184: 5722 00004 ALARM1 INHINT
058370,000185: 5723 53364 DXCH ALMCADR
058371,000186: 5724 00004 ALMNCADR INHINT
058372,000187: 5725 50002 INDEX Q
058373,000188: 5726 30000 CA 0
058374,000189: 5727 54001 TS L
058375,000190: 5730 15601 TCF LARMENT
058376,000191:
058377,000192: 5731 15650 ADR77770 TCF OCT77770
058378,000193: 5732 15632 ADR40400 TCF OCT40400
058379,000194: 5733 5155 DOALARM EQUALS ENDOFJOB
058380,000195: 5733 E7,1515 EBANK= DVCNTR
058381,000196: 5733 56067 BBSERVDL BBCON SERVIDLE
058382,000197: # CALLING SEQUENCE FOR VARALARM
058383,000198:
058384,000199: # CAF (ALARM)
058385,000200: # TC VARALARM
058386,000201:
058387,000202: # VARALARM TURNS ON PROGRAM ALARM LIGHT BUT DOES NOT DISPLAY
058388,000203:
058389,000204: 5734 00004 VARALARM INHINT
058390,000205:
058391,000206: 5735 54001 TS L # SAVE USERS ALARM CODE
058392,000207:
058393,000208: 5736 30002 CA Q # SAVE USERS Q
058394,000209: 5737 55363 TS ALMCADR
058395,000210:
058396,000211: 5740 05575 TC PRIOENT
058397,000212: 5741 00014 OCT14 OCT 14 # DONT MOVE
058398,000213:
058399,000214: 5742 01363 TC ALMCADR # RETURN TO USER
058400,000215:
058401,000216: 5743 5634 ABORT EQUALS WHIMPER
058402,000217: 13,3750 BANK 13
058403,000218: 13,2000 SETLOC ABTFLGS
058404,000219: 13,2000 BANK
058405,000220: 13,3750 COUNT* $$/ALARM
058406,000221:
058407,000222: 13,3750 44747 FLAGS CS STATEBIT
058408,000223: 13,3751 70077 MASK FLAGWRD3
058409,000224: 13,3752 54077 TS FLAGWRD3
058410,000225: 13,3753 44745 CS REINTBIT
058411,000226: 13,3754 70106 MASK FLGWRD10
058412,000227: 13,3755 54106 TS FLGWRD10
058413,000228: 13,3756 44753 CS NODOBIT
058414,000229: 13,3757 70076 MASK FLAGWRD2
![]() |
Page 1375 |
058416,000231: 13,3760 54076 TS FLAGWRD2
058417,000232: 13,3761 00002 TC Q
058418,000233:
End of include-file ALARM_AND_ABORT.agc. Parent file is MAIN.agc