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. |
005201,000002: ## Copyright: Public domain.
005202,000003: ## Filename: PHASE_TABLE_MAINTENANCE.agc
005203,000004: ## Purpose: A section of Aurora 88.
005204,000005: ## It is part of the reconstructed source code for the final
005205,000006: ## release of the Lunar Module system test software. No original
005206,000007: ## listings of this program are available; instead, this file
005207,000008: ## was created via disassembly of dumps of Aurora 88 core rope
005208,000009: ## modules and comparison with other AGC programs.
005209,000010: ## Assembler: yaYUL
005210,000011: ## Contact: Ron Burkey <info@sandroid.org>.
005211,000012: ## Website: www.ibiblio.org/apollo/index.html
005212,000013: ## Mod history: 2023-06-30 MAS Created from Aurora 12.
005213,000014:
005214,000015:
005215,000016: # THE FOLLOWING ROUTINES ARE PROVIDED TO MAINTAIN THE PHASE TABLE. TWO ROUTINES ARE AVAILABLE:
005216,000017:
005217,000018: # TC PHASCHNG SLOWER BUT LESS STORAGE.
005218,000019: # OCT PPPGG CHANGE RESTART GROUP GG TO PHASE PPP
005219,000020: # (PPP IS A SIGNED 8 BIT NUMBER).
005220,000021:
005221,000022: # CA PPPPP NEW PHASE ARRIVES IN A.
005222,000023: # TC NEWPHASE
005223,000024: # OCT 000GG UPDATES GG.
005224,000025:
005225,000026: # IN ALL CASES THE OLD PHASE RETURNS IN A. IF THE OLD PHASE WAS NEGATIVE, CALL A ROUTINE USING THE
005226,000027: # CORRESPONDING TERMCADR.
005227,000028:
005228,000029: 4517 SETLOC ENDWAITF
005229,000030:
005230,000031: 4517 00004 PHASCHNG INHINT
005231,000032: 4520 50002 INDEX Q
005232,000033: 4521 30000 CAF 0 # GET PARAMETER WORD.
005233,000034: 4522 54077 TS RUPTREG4
005234,000035: 4523 75126 MASK LOW5 # GROUP NUMBER 0 - 37.
005235,000036: 4524 60000 DOUBLE
005236,000037: 4525 56077 XCH RUPTREG4
005237,000038: 4526 00006 EXTEND
005238,000039: 4527 77642 MP BIT9 # SIGNED NEW PHASE.
005239,000040: 4530 14537 TCF PHASCH2
005240,000041:
005241,000042: 4531 00004 NEWPHASE INHINT # NEW PHASE ARRIVES IN A.
005242,000043: 4532 54077 TS RUPTREG4
005243,000044: 4533 50002 INDEX Q
005244,000045: 4534 30000 CAF 0 # GROUP NUMBER.
005245,000046: 4535 60000 DOUBLE
005246,000047: 4536 56077 XCH RUPTREG4
005247,000048:
005248,000049: 4537 54001 PHASCH2 TS L # DIRECT VERSION.
005249,000050: 4540 40000 COM # COMPLEMENTED VERSION IMMEDIATELY PRE-
005250,000051: 4541 50077 INDEX RUPTREG4 # CEDES THE DIRECT ONE.
005251,000052: 4542 53073 DXCH -PHASE0 # COPIES DISAGREE FOR MINIMUM TIME.
005252,000053: 4543 00006 EXTEND
005253,000054: 4544 64560 BZMF PHASEXIT # IF NO DERAIL.
005254,000055:
005255,000056: 4545 54074 TS RUPTREG1 # IF NEGATIVE, SAVE ABSOLUTE VALUE OF
005256,000057: 4546 00006 EXTEND # OLD PHASE AND RETURN Q.
005257,000058: 4547 22075 QXCH RUPTREG2
005258,000059: 4550 30077 CA RUPTREG4 # GET BACK GROUP NUMBER.
005259,000060: 4551 00006 EXTEND
005260,000061: 4552 77635 MP HALF
005261,000062: 4553 50000 INDEX A # SELECT TERMCADR.
005262,000063: 4554 34564 CAF TERMCADR
005263,000064: 4555 04135 TC ISWCALL
005264,000065:
005265,000066: 4556 52075 DXCH RUPTREG1 # -OLD PHASE BITS TO A - RETURN -1 TO L.
005266,000067: 4557 22002 LXCH Q
005267,000068:
005268,000069: 4560 40000 PHASEXIT COM # RETURN OLD PHASE IN A.
005269,000070: 4561 00003 RELINT
005270,000071: 4562 50002 INDEX Q
005271,000072: 4563 00001 TC 1
005272,000073:
005273,000074: 4564 00000 TERMCADR CADR 10000 # FILLED IN AS NEEDED.
005274,000075: 4565 00000 CADR 10000
005275,000076: 4566 00000 CADR 10000
005276,000077: 4567 00000 CADR 10000
005277,000078: 4570 00000 CADR 10000
005278,000079: 4571 00000 CADR 10000
005279,000080:
005280,000081: # SUBROUTINE TO UPDATE THE PROGRAM NUMBER DISPLAY ON THE DSKY.
005281,000082:
005282,000083: 4572 50002 NEWMODEX INDEX Q # UPDATE MODREG.
005283,000084: 4573 30000 CAF 0
005284,000085: 4574 24002 INCR Q
005285,000086: 4575 56276 XCH MODREG
005286,000087: 4576 40000 COM # IF NO CHANGE IN MODE, RETURN IMMEDIATELY
005287,000088: 4577 60276 AD MODREG
005288,000089: 4600 00006 EXTEND
005289,000090: 4601 14615 BZF TCQ
005290,000091:
005291,000092: 4602 34604 CAF +2 # CALL PINBALL SUBROUTINE.
005292,000093: 4603 14067 TCF SWCALL # WITH Q SET TO CALLERS RETURN.
005293,000094:
005294,000095: 4604 12001 CADR DSPMM
005295,000096:
005296,000097: # RETURN TO CALLER +3 IF MODE = THAT AT CALLER +1. OTHERWISE RETURN TO CALLER +2.
005297,000098:
005298,000099: 4605 50002 CHECKMM INDEX Q
005299,000100: 4606 40000 CS 0
005300,000101: 4607 60276 AD MODREG
005301,000102: 4610 00006 EXTEND
005302,000103: 4611 14614 BZF +3
005303,000104:
005304,000105: 4612 50002 INDEX Q
005305,000106: 4613 00001 TC 1 # NO MATCH.
005306,000107:
005307,000108: 4614 50002 INDEX Q
005308,000109: 4615 00002 TCQ TC 2 # (ALWAYS AVAILABLE TO BZF & BZMF)
005309,000110:
005310,000111: 4616 ENDPHMNF EQUALS
End of include-file PHASE_TABLE_MAINTENANCE.agc. Parent file is MAIN.agc