Source Code
These source-code files are part of a reconstructed copy of Aurora 88, the
final release of the Lunar Module (LM) Apollo Guidance Computer (AGC) system
test software.
They have been created via disassembly of binary dumps of original core rope memory modules, part numbers 2003972-011, 2003972-091, and 2003972-111, belonging to Steve Jurvetson. Since only binary dumps (rather than listings) of Aurora 88 are available as source material, all comments and labels are approximate. They have been taken from other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing. |
016203,000002: ## Copyright: Public domain.
016204,000003: ## Filename: RTB_OP_CODES.agc
016205,000004: ## Purpose: A section of Aurora 88.
016206,000005: ## It is part of the reconstructed source code for the final
016207,000006: ## release of the Lunar Module system test software. No original
016208,000007: ## listings of this program are available; instead, this file
016209,000008: ## was created via disassembly of dumps of Aurora 88 core rope
016210,000009: ## modules and comparison with other AGC programs.
016211,000010: ## Assembler: yaYUL
016212,000011: ## Contact: Ron Burkey <info@sandroid.org>.
016213,000012: ## Website: www.ibiblio.org/apollo/index.html
016214,000013: ## Mod history: 2023-06-30 MAS Created from Aurora 12.
016215,000014: ## 2023-07-12 MAS Updated for Aurora 88.
016216,000015:
016217,000016:
016218,000017: 15,3460 SETLOC ENDINFSS
016219,000018:
016220,000019: # LOAD TIME2, TIME1 INTO MPAC:
016221,000020:
016222,000021: 15,3460 00006 LOADTIME EXTEND
016223,000022: 15,3461 30025 DCA TIME2
016224,000023: 15,3462 16470 TCF SLOAD2
016225,000024:
016226,000025: # CONVERT THE SINGLE PRECISION 2'S COMPLEMENT NUMBER ARRIVING IN MPAC (SCALED IN HALF-REVOLUTIONS) TO A
016227,000026: # DP 1'S COMPLEMENT NUMBER SCALED IN REVOLUTIONS.
016228,000027:
016229,000028: 15,3463 10140 CDULOGIC CCS MPAC
016230,000029: 15,3464 37657 CAF ZERO
016231,000030: 15,3465 13470 TCF +3
016232,000031: 15,3466 13467 NOOP
016233,000032: 15,3467 47635 CS HALF
016234,000033:
016235,000034: 15,3470 54141 TS MPAC +1
016236,000035: 15,3471 37657 CAF ZERO
016237,000036: 15,3472 56140 XCH MPAC
016238,000037: 15,3473 00006 EXTEND
016239,000038: 15,3474 77635 MP HALF
016240,000039: 15,3475 20141 DAS MPAC
016241,000040: 15,3476 16472 TCF SLOAD2 +2 # C(A) = +0.
016242,000041:
016243,000042: # READ IMU CDUS INTO MPAC AS A VECTOR. ESPECIALLY USEFUL IN CONNECTION WITH SMNB, ETC.
016244,000043:
016245,000044: 15,3477 00004 READCDUS INHINT
016246,000045: 15,3500 30033 CA CDUY # IN ORDER Y Z X
016247,000046: 15,3501 54140 TS MPAC
016248,000047: 15,3502 30034 CA CDUZ
016249,000048: 15,3503 54143 TS MPAC +3
016250,000049: 15,3504 30032 CA CDUX
016251,000050: 15,3505 13514 TCF READPIPS +6 # COMMON CODING.
016252,000051:
016253,000052: # READ THE PIPS INTO MPAC WITHOUT CHANGING THEM:
016254,000053:
016255,000054: 15,3506 00004 READPIPS INHINT
016256,000055: 15,3507 30037 CA PIPAX
016257,000056: 15,3510 54140 TS MPAC
016258,000057: 15,3511 30040 CA PIPAY
016259,000058: 15,3512 54143 TS MPAC +3
016260,000059: 15,3513 30041 CA PIPAZ
016261,000060: 15,3514 00003 RELINT
016262,000061: 15,3515 54145 TS MPAC +5
016263,000062:
016264,000063: 15,3516 37657 CAF ZERO
016265,000064: 15,3517 54141 TS MPAC +1
016266,000065: 15,3520 54144 TS MPAC +4
016267,000066: 15,3521 54146 TS MPAC +6
016268,000067:
016269,000068: 15,3522 47652 VECMODE CS ONE
016270,000069: 15,3523 16013 TCF NEWMODE
016271,000070:
016272,000071: # FORCE TP SIGN AGREEMENT IN MPAC:
016273,000072:
016274,000073: 15,3524 07230 SGNAGREE TC TPAGREE
016275,000074: 15,3525 16014 TCF DANZIG
016276,000075:
016277,000076: # CONVERT THE DP 1'S COMPLEMENT ANGLE SCALED IN REVOLUTIONS TO A SINGLE PRECISION 2'S COMPLEMENT ANGLE
016278,000077: # SCALED IN HALF-REVOLUTIONS.
016279,000078:
016280,000079: 15,3526 03556 1STO2S TC 1TO2SUB
016281,000080: 15,3527 37657 CAF ZERO
016282,000081: 15,3530 54141 TS MPAC +1
016283,000082: 15,3531 16013 TCF NEWMODE
016284,000083:
016285,000084: # DO 1STO2S ON A VECTOR OF ANGLES:
016286,000085:
016287,000086: 15,3532 03556 V1STO2S TC 1TO2SUB # ANSWER ARRIVES IN A AND MPAC.
016288,000087:
016289,000088: 15,3533 52146 DXCH MPAC +5
016290,000089: 15,3534 52141 DXCH MPAC
016291,000090: 15,3535 03556 TC 1TO2SUB
016292,000091: 15,3536 54142 TS MPAC +2
016293,000092:
016294,000093: 15,3537 52144 DXCH MPAC +3
016295,000094: 15,3540 52141 DXCH MPAC
016296,000095: 15,3541 03556 TC 1TO2SUB
016297,000096: 15,3542 54141 TS MPAC +1
016298,000097:
016299,000098: 15,3543 30145 CA MPAC +5
016300,000099: 15,3544 54140 TS MPAC
016301,000100:
016302,000101: 15,3545 37652 CAF ONE # MODE IS TP.
016303,000102: 15,3546 16013 TCF NEWMODE
016304,000103:
016305,000104: # V1STO2S FOR 2 COMPONENT VECTOR, USED BY RR.
016306,000105:
016307,000106: 15,3547 03556 2V1STO2S TC 1TO2SUB
016308,000107: 15,3550 52144 DXCH MPAC +3
016309,000108: 15,3551 52141 DXCH MPAC
016310,000109: 15,3552 03556 TC 1TO2SUB
016311,000110: 15,3553 54001 TS L
016312,000111: 15,3554 30143 CA MPAC +3
016313,000112: 15,3555 16470 TCF SLOAD2
016314,000113:
016315,000114: # SUBROUTINE TO DO DOUBLING AND 1'S TO 2'S COMVERSION:
016316,000115:
016317,000116: 15,3556 52141 1TO2SUB DXCH MPAC # FINAL MPAC +1 UNSPECIFIED.
016318,000117: 15,3557 20001 DDOUBL
016319,000118: 15,3560 10000 CCS A
016320,000119: 15,3561 67652 AD ONE
016321,000120: 15,3562 13564 TCF +2
016322,000121: 15,3563 40000 COM # THIS WAS REVERSE OF MSU.
016323,000122:
016324,000123: 15,3564 54140 TS MPAC # AND SKIP ON OVERFLOW.
016325,000124: 15,3565 00002 TC Q
016326,000125:
016327,000126: 15,3566 50000 INDEX A # OVERFLOW UNCORRECT AND IN MSU.
016328,000127: 15,3567 37633 CAF LIMITS
016329,000128: 15,3570 26140 ADS MPAC
016330,000129: 15,3571 00002 TC Q
016331,000130:
016332,000131: # SUBROUTINE TO INCREMENT CDUS
016333,000132: 15,3572 33605 INCRCDUS CAF LOCTHETA
016334,000133: 15,3573 54114 TS BUF # PLACE ADRES(THETA) IN BUF.
016335,000134: 15,3574 30140 CAE MPAC # INCREMENT IN 1S COMPL.
016336,000135: 15,3575 03606 TC CDUINC
016337,000136:
016338,000137: 15,3576 24114 INCR BUF
016339,000138: 15,3577 30143 CAE MPAC +3
016340,000139: 15,3600 03606 TC CDUINC
016341,000140:
016342,000141: 15,3601 24114 INCR BUF
016343,000142: 15,3602 30145 CAE MPAC +5
016344,000143: 15,3603 03606 TC CDUINC
016345,000144:
016346,000145: 15,3604 13522 TCF VECMODE
016347,000146:
016348,000147: 15,3605 00400 LOCTHETA ADRES THETAD
016349,000148:
016350,000149: # THE FOLLOWING ROUTINE INCREMENTS IN 2S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN BUF BY THE 1S COMPL.
016351,000150: # QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCREMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2S COMPL.
016352,000151: # (+0 UNEQUAL TO -0) QUANTITY. MAY BE CALLED BY BANKCALL/SWCALL.
016353,000152:
016354,000153: 15,3606 54126 CDUINC TS TEM2 # 1S COMPL.QUANT. ARRIVES IN ACC. STORE IT
016355,000154: 15,3607 50114 INDEX BUF
016356,000155: 15,3610 10000 CCS 0 # CHANGE 2S COMPL. ANGLE(IN BUF)INTO 1S
016357,000156: 15,3611 67652 AD ONE
016358,000157: 15,3612 13616 TCF +4
016359,000158: 15,3613 67652 AD ONE
016360,000159: 15,3614 67652 AD ONE # OVERFLOW HERE IF 2S COMPL. IS 180 DEG.
016361,000160: 15,3615 40000 COM
016362,000161:
016363,000162: 15,3616 60126 AD TEM2 # ADD IN INCREMENT. WILL OVERFLOW IF RE-
016364,000163: # SULT MOVES FROM 2ND TO 3D QUAD.(OR BACK)
016365,000164: 15,3617 10000 CCS A # BACK TO 2S COMPL.
016366,000165: 15,3620 67652 AD ONE
016367,000166: 15,3621 13623 TCF +2
016368,000167: 15,3622 40000 COM
016369,000168: 15,3623 54126 TS TEM2 # STORE 14BIT QUANTITY WITH PRESENT SIGN
016370,000169: 15,3624 13630 TCF +4
016371,000170: 15,3625 50000 INDEX A # OVERFLOW MEANS CORRECT 14BIT VALUE,WRONG
016372,000171: # SIGN.
016373,000172: 15,3626 37633 CAF LIMITS # FIX IT,BY ADDING IN 37777 OR 40000
016374,000173: 15,3627 60126 AD TEM2
016375,000174:
016376,000175: 15,3630 50114 INDEX BUF
016377,000176: 15,3631 54000 TS 0 # STORE NEW ANGLE IN 2S COMPLEMENT.
016378,000177: 15,3632 00002 TC Q
016379,000178:
016380,000179: # RTB TO TORQUE GYROS, EXCEPT FOR THE CALL TO IMUSTALL. ECADR OF COMMANDS ARRIVES IN X1.
016381,000180:
016382,000181: 15,3633 50104 PULSEIMU INDEX FIXLOC # ADDRESS OF GYRO COMMANDS SHOULD BE IN X1
016383,000182: 15,3634 30046 CA X1
016384,000183: 15,3635 04063 TC BANKCALL
016385,000184: 15,3636 26317 CADR IMUPULSE
016386,000185: 15,3637 16014 TCF DANZIG
016387,000186:
016388,000187: # THE FOLLOWING ROUTINE IS USED ONLY IN BENCH TESTING THE RR.
016389,000188:
016390,000189: 15,3640 04467 RRSIM TC FIXDELAY
016391,000190: 15,3641 00062 DEC 50 B-14
016392,000191:
016393,000192: 15,3642 37651 RRSIM2 CAF BIT2 # SEE IF RR ECTR ENABLED.
016394,000193: 15,3643 00006 EXTEND
016395,000194: 15,3644 02012 RAND 12
016396,000195: 15,3645 00006 EXTEND
016397,000196: 15,3646 13640 BZF RRSIM
016398,000197:
016399,000198: 15,3647 30126 CA TEM2 # SAVE EXEC TEMPS SINCE IN RUPT.
016400,000199: 15,3650 54074 TS RUPTREG1
016401,000200: 15,3651 33707 CAF LOPTY
016402,000201: 15,3652 56114 XCH BUF
016403,000202: 15,3653 54075 TS RUPTREG2
016404,000203: 15,3654 30362 CA LASTYCMD # ECTR.
016405,000204: 15,3655 60000 DOUBLE
016406,000205: 15,3656 00006 EXTEND
016407,000206: 15,3657 73710 MP RRSIMG
016408,000207: 15,3660 03606 TC CDUINC
016409,000208: 15,3661 24114 INCR BUF
016410,000209: 15,3662 30035 CA OPTY # SHAFT CMD IS DIVIDED BY THE ABS VALUE OF
016411,000210: 15,3663 00006 EXTEND # THE COS OF THE TRUNNION ANGLE.
016412,000211: 15,3664 20007 MSU 7 # TO 1S COMPLEMENT.
016413,000212: 15,3665 04150 TC SPCOS
016414,000213: 15,3666 10000 CCS A
016415,000214: 15,3667 13672 TCF +3
016416,000215: 15,3670 13672 TCF +2
016417,000216: 15,3671 13672 TCF +1
016418,000217: 15,3672 67652 AD ONE
016419,000218: 15,3673 54065 TS ITEMP1
016420,000219:
016421,000220: 15,3674 30363 CA LASTXCMD # SHAFT RATE DEPENDS ON TRUNNION.
016422,000221: 15,3675 00006 EXTEND
016423,000222: 15,3676 73710 MP RRSIMG
016424,000223: 15,3677 00006 EXTEND
016425,000224: 15,3700 10065 DV ITEMP1
016426,000225: 15,3701 03606 TC CDUINC
016427,000226: 15,3702 30074 CA RUPTREG1
016428,000227: 15,3703 54126 TS TEM2
016429,000228: 15,3704 30075 CA RUPTREG2
016430,000229: 15,3705 54114 TS BUF
016431,000230: 15,3706 13640 TCF RRSIM
016432,000231:
016433,000232: 15,3707 00035 LOPTY ADRES OPTY
016434,000233: 15,3710 22755 RRSIMG DEC .59259
016435,000234:
016436,000235:
MAS 2023: The following chunk of code (down to ENDRTBSS) was added as a patch between Aurora 85 and Aurora 88. It was placed here at the end of the bank so as to not change addresses of existing symbols. |
016440,000239:
016441,000240: 15,3711 45133 AOTNB1 SLOAD* RTB
016442,000241: 15,3712 00004 3,1
016443,000242: 15,3713 33463 CDULOGIC
016444,000243: 15,3714 77650 GOTO
016445,000244: 15,3715 33173 AOTNB +4
016446,000245:
016447,000246: 15,3716 ENDRTBSS EQUALS
End of include-file RTB_OP_CODES.agc. Parent file is MAIN.agc