Source Code
![]() |
YAYUL: ASSEMBLE REVISION 5 OF PROGRAM BOREALIS BY MSTEWART MAR. 27,2017This is a modern AGC system self-test program, though based on the Apollo-era AURORA 12 program, and was not written by the original AGC developers, but rather by Mike Stewart. All of the original AURORA 12 DAP code added by the DAP Group has been removed, and extensive new system test code has been added in its place. This allows more in-depth testing of CPU behavior, both in AGC software simulations and hardware simulations. |
005247,000002: ## Copyright: Public domain.
005248,000003: ## Filename: PHASE_TABLE_MAINTENANCE.agc
005249,000004: ## Purpose: This program is designed to extensively test the Apollo Guidance Computer
005250,000005: ## (specifically the LM instantiation of it). It is built on top of a heavily
005251,000006: ## stripped-down Aurora 12, with all code ostensibly added by the DAP Group
005252,000007: ## removed. Instead Borealis expands upon the tests provided by Aurora,
005253,000008: ## including corrected tests from Retread 44 and tests from Ron Burkey's
005254,000009: ## Validation.
005255,000010: ## Assembler: yaYUL
005256,000011: ## Contact: Mike Stewart <mastewar1@gmail.com>.
005257,000012: ## Website: www.ibiblio.org/apollo/index.html
005258,000013: ## Mod history: 2016-12-20 MAS Created from Aurora 12 (with much DAP stuff removed).
005259,000014:
005260,000015: # THE FOLLOWING ROUTINES ARE PROVIDED TO MAINTAIN THE PHASE TABLE. TWO ROUTINES ARE AVAILABLE:
005261,000016:
005262,000017: # TC PHASCHNG SLOWER BUT LESS STORAGE.
005263,000018: # OCT PPPGG CHANGE RESTART GROUP GG TO PHASE PPP
005264,000019: # (PPP IS A SIGNED 8 BIT NUMBER).
005265,000020:
005266,000021: # CA PPPPP NEW PHASE ARRIVES IN A.
005267,000022: # TC NEWPHASE
005268,000023: # OCT 000GG UPDATES GG.
005269,000024:
005270,000025: # IN ALL CASES THE OLD PHASE RETURNS IN A. IF THE OLD PHASE WAS NEGATIVE, CALL A ROUTINE USING THE
005271,000026: # CORRESPONDING TERMCADR.
005272,000027:
005273,000028: 4575 SETLOC ENDWAITF
005274,000029:
005275,000030: 4575 00004 PHASCHNG INHINT
005276,000031: 4576 50002 INDEX Q
005277,000032: 4577 30000 CAF 0 # GET PARAMETER WORD.
005278,000033: 4600 54077 TS RUPTREG4
005279,000034: 4601 75216 MASK LOW5 # GROUP NUMBER 0 - 37.
005280,000035: 4602 60000 DOUBLE
005281,000036: 4603 56077 XCH RUPTREG4
005282,000037: 4604 00006 EXTEND
005283,000038: 4605 77647 MP BIT9 # SIGNED NEW PHASE.
005284,000039: 4606 14615 TCF PHASCH2
005285,000040:
005286,000041: 4607 00004 NEWPHASE INHINT # NEW PHASE ARRIVES IN A.
005287,000042: 4610 54077 TS RUPTREG4
005288,000043: 4611 50002 INDEX Q
005289,000044: 4612 30000 CAF 0 # GROUP NUMBER.
005290,000045: 4613 60000 DOUBLE
005291,000046: 4614 56077 XCH RUPTREG4
005292,000047:
005293,000048: 4615 54001 PHASCH2 TS L # DIRECT VERSION.
005294,000049: 4616 40000 COM # COMPLEMENTED VERSION IMMEDIATELY PRE-
005295,000050: 4617 50077 INDEX RUPTREG4 # CEDES THE DIRECT ONE.
005296,000051: 4620 53072 DXCH -PHASE0 # COPIES DISAGREE FOR MINIMUM TIME.
005297,000052: 4621 00006 EXTEND
005298,000053: 4622 64636 BZMF PHASEXIT # IF NO DERAIL.
005299,000054:
005300,000055: 4623 54074 TS RUPTREG1 # IF NEGATIVE, SAVE ABSOLUTE VALUE OF
005301,000056: 4624 00006 EXTEND # OLD PHASE AND RETURN Q.
005302,000057: 4625 22075 QXCH RUPTREG2
005303,000058: 4626 30077 CA RUPTREG4 # GET BACK GROUP NUMBER.
005304,000059: 4627 00006 EXTEND
005305,000060: 4630 77642 MP HALF
005306,000061: 4631 50000 INDEX A # SELECT TERMCADR.
005307,000062: 4632 34642 CAF TERMCADR
005308,000063: 4633 04200 TC ISWCALL
005309,000064:
005310,000065: 4634 52075 DXCH RUPTREG1 # -OLD PHASE BITS TO A - RETURN -1 TO L.
005311,000066: 4635 22002 LXCH Q
005312,000067:
005313,000068: 4636 40000 PHASEXIT COM # RETURN OLD PHASE IN A.
005314,000069: 4637 00003 RELINT
005315,000070: 4640 50002 INDEX Q
005316,000071: 4641 00001 TC 1
005317,000072:
005318,000073: 4642 00000 TERMCADR CADR 10000 # FILLED IN AS NEEDED.
005319,000074: 4643 00000 CADR 10000
005320,000075: 4644 00000 CADR 10000
005321,000076: 4645 00000 CADR 10000
005322,000077: 4646 00000 CADR 10000
005323,000078: 4647 00000 CADR 10000
005324,000079:
005325,000080: # SUBROUTINE TO UPDATE THE PROGRAM NUMBER DISPLAY ON THE DSKY.
005326,000081:
005327,000082: 4650 50002 NEWMODEX INDEX Q # UPDATE MODREG.
005328,000083: 4651 30000 CAF 0
005329,000084: 4652 24002 INCR Q
005330,000085: 4653 56276 XCH MODREG
005331,000086: 4654 40000 COM # IF NO CHANGE IN MODE, RETURN IMMEDIATELY
005332,000087: 4655 60276 AD MODREG
005333,000088: 4656 00006 EXTEND
005334,000089: 4657 14673 BZF TCQ
005335,000090:
005336,000091: 4660 34662 CAF +2 # CALL PINBALL SUBROUTINE.
005337,000092: 4661 14071 TCF SWCALL # WITH Q SET TO CALLERS RETURN.
005338,000093:
005339,000094: 4662 12001 CADR DSPMM
005340,000095:
005341,000096: # RETURN TO CALLER +3 IF MODE = THAT AT CALLER +1. OTHERWISE RETURN TO CALLER +2.
005342,000097:
005343,000098: 4663 50002 CHECKMM INDEX Q
005344,000099: 4664 40000 CS 0
005345,000100: 4665 60276 AD MODREG
005346,000101: 4666 00006 EXTEND
005347,000102: 4667 14672 BZF +3
005348,000103:
005349,000104: 4670 50002 INDEX Q
005350,000105: 4671 00001 TC 1 # NO MATCH.
005351,000106:
005352,000107: 4672 50002 INDEX Q
005353,000108: 4673 00002 TCQ TC 2 # (ALWAYS AVAILABLE TO BZF & BZMF)
005354,000109:
005355,000110: 4674 ENDPHMNF EQUALS
End of include-file PHASE_TABLE_MAINTENANCE.agc. Parent file is MAIN.agc