Source Code
![]() |
These source-code files derive from a printout of Luminary 210 (Apollo 15-17
Lunar Module guidance computer program), from the personal library of
original AGC developer Don Eyles, digitally photographed at archive.org,
financially sponsored by Jim Lawton, 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 210 OF AGC PROGRAM LUMINARY BY NASA 2021112-161 17:11 MAR. 19,1971Note that the date is the date of the printout, not the date of the program revision. |
059451,000002: ## Copyright: Public domain.
059452,000003: ## Filename: ALARM_AND_ABORT.agc
059453,000004: ## Purpose: A section of Luminary revision 210.
059454,000005: ## It is part of the source code for the Lunar Module's (LM)
059455,000006: ## Apollo Guidance Computer (AGC) for Apollo 15-17.
059456,000007: ## This file is intended to be a faithful transcription, except
059457,000008: ## that the code format has been changed to conform to the
059458,000009: ## requirements of the yaYUL assembler rather than the
059459,000010: ## original YUL assembler.
059460,000011: ## Reference: pp. 1378-1382
059461,000012: ## Assembler: yaYUL
059462,000013: ## Contact: Ron Burkey <info@sandroid.org>.
059463,000014: ## Website: www.ibiblio.org/apollo/index.html
059464,000015: ## Mod history: 2016-11-17 JL Created from Luminary131 version.
059465,000016: ## 2016-11-29 TB Transcribed
059466,000017: ## 2016-12-07 HG Fix P00 -> POO
059467,000018: ## 2016-12-11 HG add missing operation MASK FLGWRD10
059468,000019: ## 2016-12-12 HG add [WORKAROUND] using SBANK=
059469,000020: ## 2016-12-26 RSB Comment-text proofed using ProoferComments
059470,000021: ## and corrected errors found.
059471,000022:
![]() |
Page 1378 |
059473,000024: # THE FOLLOWING SUBROUTINE MAY BE CALLED TO DISPLAY A NON-ABORTIVE ALARM CONDITION. IT MAY BE CALLED
059474,000025: # EITHER IN INTERRUPT OR UNDER EXECUTIVE CONTROL.
059475,000026:
059476,000027: # CALLING SEQUENCE IS AS FOLLOWS:
059477,000028: # TC ALARM
059478,000029: # OCT AAANN ALARM NO. NN IN GENERAL AREA AAA.
059479,000030: # (RETURNS HERE)
059480,000031:
059481,000032: 5571 BLOCK 02
059482,000033: 4000 SETLOC FFTAG7
059483,000034: 4000 BANK
059484,000035:
059485,000036: 5571 0375 EBANK= FAILREG
059486,000037:
059487,000038: 5571 COUNT* $$/ALARM
059488,000039: # ALARM TURNS ON THE PROGRAM ALARM LIGHT, BUT DOES NOT DISPLAY.
059489,000040:
059490,000041: 5571 00004 ALARM INHINT
059491,000042:
059492,000043: 5572 30002 CA Q
059493,000044: 5573 55363 ALARM2 TS ALMCADR
059494,000045: 5574 50002 INDEX Q
059495,000046: 5575 30000 CA 0
059496,000047: 5576 54001 BORTENT TS L
059497,000048:
059498,000049: 5577 30006 PRIOENT CA BBANK
059499,000050: 5600 00006 +1 EXTEND
059500,000051: 5601 04007 ROR SUPERBNK # ADD SUPER BITS.
059501,000052: 5602 55364 TS ALMCADR +1
059502,000053:
059503,000054: 5603 30002 LARMENT CA Q # STORE RETURN FOR ALARM
059504,000055: 5604 54061 TS ITEMP1
059505,000056:
059506,000057: 5605 10375 CHKFAIL1 CCS FAILREG # IS ANYTHING IN FAILREG
059507,000058: 5606 15612 TCF CHKFAIL2 # YES TRY NEXT REG
059508,000059: 5607 30001 CA L
059509,000060: 5610 54375 TS FAILREG
059510,000061: 5611 15616 TCF PROGLARM # TURN ALARM LIGHT ON FOR FIRST ALARM
059511,000062:
059512,000063: 5612 10376 CHKFAIL2 CCS FAILREG +1
059513,000064: 5613 15616 TCF PROGLARM
059514,000065: 5614 30001 CA L
059515,000066: 5615 54376 TS FAILREG +1
059516,000067:
059517,000068: 5616 22377 PROGLARM LXCH FAILREG +2 # STORE AS "MOST RECENT" ALARM CODE
059518,000069:
059519,000070: 5617 41035 CS DSPTAB +11D # TURN ON PROGRAM ALARM IF OFF
059520,000071: 5620 75634 MASK OCT40400
059521,000072: 5621 27035 ADS DSPTAB +11D
059522,000073:
![]() |
Page 1379 |
059524,000075: 5622 56061 MULTEXIT XCH ITEMP1 # OBTAIN RETURN ADDRESS IN A
059525,000076: 5623 00003 RELINT
059526,000077: 5624 50000 INDEX A
059527,000078: 5625 00001 TC 1
059528,000079:
059529,000080: # PRIOLARM DISPLAYS V05N09 VIA PRIODSPR WITH 3 RETURNS TO THE USER FROM THE ASTRONAUT AT CALL LOC +1,+2,+3 AND
059530,000081: # AN IMMEDIATE RETURN TO THE USER AT CALL LOC +4. EXAMPLE FOLLOWS,
059531,000082: # CAF OCTXX ALARM CODE
059532,000083: # TC BANKCALL
059533,000084: # CADR PRIOLARM
059534,000085: # ... ...
059535,000086: # ... ...
059536,000087: # ... ... ASTRONAUT RETURN
059537,000088: # TC PHASCHNG IMMEDIATE RETURN TO USER. RESTART
059538,000089: # OCT X.1 PHASE CHANGE FOR PRIO DISPLAY
059539,000090:
059540,000091: 10,3572 BANK 10
059541,000092: 10,2000 SETLOC DISPLAYS
059542,000093: 10,2000 BANK
059543,000094:
059544,000095: 10,3572 COUNT* $$/DSPLA
059545,000096: 10,3572 00004 PRIOLARM INHINT # * * * KEEP IN DISPLAY ROUTINES BANK
059546,000097: 10,3573 54001 TS L # SAVE ALARM CODE
059547,000098:
059548,000099: 10,3574 30133 CA BUF2 # 2 CADR OF PRIOLARM USER
059549,000100: 10,3575 55363 TS ALMCADR
059550,000101: 10,3576 30134 CA BUF2 +1
059551,000102: 10,3577 05600 TC PRIOENT +1 # * LEAVE L ALONE
059552,000103: 10,3600 77467 -2SEC DEC -200 B-14 # *** DONT MOVE
059553,000104: 10,3601 34777 CAF V05N09
059554,000105: 10,3602 12477 TCF PRIODSPR
059555,000106:
059556,000107: 5626 BLOCK 02
059557,000108: 4000 SETLOC FFTAG7
059558,000109: 4000 BANK
059559,000110:
059560,000111: 5626 COUNT* $$/ALARM
059561,000112: 5626 00004 BAILOUT INHINT
059562,000113: 5627 30002 CA Q
059563,000114: 5630 55363 TS ALMCADR
059564,000115:
059565,000116: 5631 50002 INDEX Q
059566,000117: 5632 30000 CAF 0
059567,000118: 5633 05576 TC BORTENT
059568,000119: 5634 40400 OCT40400 OCT 40400
059569,000120:
059570,000121: 5635 00004 INHINT
059571,000122: 5636 34743 WHIMPER CA TWO
059572,000123: 5637 60005 AD Z
![]() |
Page 1380 |
059574,000125: 5640 54017 TS BRUPT
059575,000126: 5641 50017 RESUME
059576,000127: 5642 04626 TC POSTJUMP # RESUME SENDS CONTROL HERE
059577,000128: 5643 12767 CADR ENEMA
059578,000129: 5644 00004 POODOO INHINT
059579,000130: 5645 30002 CA Q
059580,000131: 5646 55363 ABORT2 TS ALMCADR
059581,000132: 5647 50002 INDEX Q
059582,000133: 5650 30000 CAF 0
059583,000134: 5651 05576 TC BORTENT
059584,000135: 5652 77770 OCT77770 OCT 77770 # DON'T MOVE
059585,000136:
059586,000137: 5653 11043 CCS EXTVBACT # DO BAILOUT NOT POODOO IF EXT. VB. ACTIVE
059587,000138: 5654 15635 TCF WHIMPER -1
059588,000139:
059589,000140: 5655 34756 CAF OCT35 # 4.35SPOT FOR GOPOODOO
059590,000141: 5656 54001 TS L
059591,000142: 5657 40000 COM
059592,000143: 5660 52760 DXCH -PHASE4
059593,000144: 5661 00004 GOPOODOO INHINT
059594,000145: 5662 04607 TC BANKCALL # RESET STATEFLG, REINTFLG, AND NODOFLAG.
059595,000146: # ALSO RNDVZFLG, P25FLAG AND TRACKFLG
059596,000147: 5663 43007 CADR FLAGS
059597,000148: 5664 30103 CA FLAGWRD7 # IS SERVICER CURRENTLY IN OPERATION?
059598,000149: 5665 74737 MASK V37FLBIT
059599,000150: 5666 10000 CCS A
059600,000151: 5667 15675 TCF STRTIDLE
059601,000152: 5670 04607 TC BANKCALL # TERMINATE GRPS 1, 3, 5, AND 6
059602,000153: 5671 12654 CADR V37KLEAN
059603,000154: 5672 04607 TC BANKCALL # TERMINATE GRPS 2, 4, 1, 3, 5, AND 6
059604,000155: 5673 12645 CADR MR.KLEAN # (I.E., GRP 4 LAST)
059605,000156: 5674 15636 TCF WHIMPER
059606,000157: 5675 35737 STRTIDLE CAF BBSERVDL
059607,000158: 5676 04720 TC SUPERSW
059608,000159: 5677 04607 TC BANKCALL # PUT SERVICER INTO ITS "GROUND" STATE
059609,000160: 5700 57324 CADR SERVIDLE # AND PROCEED TO GOTOPOOH.
059610,000161: 5701 00004 CCSHOLE INHINT
059611,000162: 5702 30002 CA Q
059612,000163: 5703 05646 TC ABORT2
059613,000164: 5704 21103 OCT21103 OCT 21103
059614,000165: 5705 00004 CURTAINS INHINT
059615,000166: 5706 30002 CA Q
059616,000167: 5707 05573 TC ALARM2
059617,000168: 5710 00217 OCT217 OCT 00217
059618,000169: 5711 01363 TC ALMCADR # RETURN TO USER
059619,000170:
059620,000171: 5712 00004 BAILOUT1 INHINT
059621,000172: 5713 53364 DXCH ALMCADR
059622,000173: 5714 35736 CAF ADR40400
059623,000174: 5715 54061 BOTHABRT TS ITEMP1
059624,000175:
![]() |
Page 1381 |
059626,000177: 5716 50002 INDEX Q
059627,000178: 5717 30000 CAF 0
059628,000179: 5720 54001 TS L
059629,000180: 5721 15605 TCF CHKFAIL1
059630,000181:
059631,000182: 5722 00004 POODOO1 INHINT
059632,000183: 5723 53364 DXCH ALMCADR
059633,000184: 5724 35735 CAF ADR77770
059634,000185: 5725 15715 TCF BOTHABRT
059635,000186:
059636,000187: 5726 00004 ALARM1 INHINT
059637,000188: 5727 53364 DXCH ALMCADR
059638,000189: 5730 00004 ALMNCADR INHINT
059639,000190: 5731 50002 INDEX Q
059640,000191: 5732 30000 CA 0
059641,000192: 5733 54001 TS L
059642,000193: 5734 15603 TCF LARMENT
059643,000194:
059644,000195: 5735 15652 ADR77770 TCF OCT77770
059645,000196: 5736 15634 ADR40400 TCF OCT40400
![]() |
[WORKAROUND] SBANK= not in original; for adjusting subsequent BBCON — HG |
059647,000198: 5737 30,2000 SBANK= LOWSUPER
059648,000199: 5737 5146 DOALARM EQUALS ENDOFJOB
059649,000200: 5737 E7,1515 EBANK= DVCNTR
059650,000201: 5737 56067 BBSERVDL BBCON SERVIDLE
059651,000202:
059652,000203: # CALLING SEQUENCE FOR VARALARM
059653,000204: # CAF (ALARM)
059654,000205: # TC VARALARM
059655,000206:
059656,000207: # VARALARM TURNS ON PROGRAM ALARM LIGHT BUT DOES NOT DISPLAY
059657,000208:
059658,000209: 5740 00004 VARALARM INHINT
059659,000210:
059660,000211: 5741 54001 TS L # SAVE USERS ALARM CODE
059661,000212:
059662,000213: 5742 30002 CA Q # SAVE USERS Q
059663,000214: 5743 55363 TS ALMCADR
059664,000215:
059665,000216: 5744 05577 TC PRIOENT
059666,000217: 5745 00014 OCT14 OCT 14 # DONT MOVE
059667,000218:
059668,000219: 5746 01363 TC ALMCADR # RETURN TO USER
059669,000220:
059670,000221: 5747 5636 ABORT EQUALS WHIMPER
059671,000222: 21,2000 SETLOC ABTFLGS
059672,000223: 21,2000 BANK
059673,000224: 21,3007 COUNT* $$/ALARM
059674,000225:
059675,000226: 21,3007 44740 FLAGS CS STATEBIT
059676,000227: 21,3010 70077 MASK FLAGWRD3
059677,000228: 21,3011 54077 TS FLAGWRD3
059678,000229: 21,3012 44736 CS REINTBIT
059679,000230: 21,3013 70106 MASK FLGWRD10
059680,000231:
![]() |
Page 1382 |
059682,000233: 21,3014 54106 TS FLGWRD10
059683,000234: 21,3015 44744 CS NODOBIT
059684,000235: 21,3016 70076 MASK FLAGWRD2
059685,000236: 21,3017 54076 TS FLAGWRD2
059686,000237: 21,3020 46017 CS BITS9+7
059687,000238: 21,3021 0000010 FLAGREF1 EQUALS RNDVZFLG
059688,000239: 21,3021 0000006 FLAGREF2 EQUALS P25FLAG
059689,000240: 21,3021 70074 MASK FLAGWRD0
059690,000241: 21,3022 54074 TS FLAGWRD0
059691,000242: 21,3023 40031 CS TRACKFLG
059692,000243: 21,3024 70075 MASK FLAGWRD1
059693,000244: 21,3025 54075 TS FLAGWRD1
059694,000245: 21,3026 00002 TC Q
059695,000246:
059696,000247:
End of include-file ALARM_AND_ABORT.agc. Parent file is MAIN.agc