Source Code
![]() |
YAYUL: ASSEMBLE REVISION 6 OF PROGRAM BOREALIS BY MSTEWART JUN. 28,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. |
005332,000002: ## Copyright: Public domain.
005333,000003: ## Filename: PHASE_TABLE_MAINTENANCE.agc
005334,000004: ## Purpose: This program is designed to extensively test the Apollo Guidance Computer
005335,000005: ## (specifically the LM instantiation of it). It is built on top of a heavily
005336,000006: ## stripped-down Aurora 12, with all code ostensibly added by the DAP Group
005337,000007: ## removed. Instead Borealis expands upon the tests provided by Aurora,
005338,000008: ## including corrected tests from Retread 44 and tests from Ron Burkey's
005339,000009: ## Validation.
005340,000010: ## Assembler: yaYUL
005341,000011: ## Contact: Mike Stewart <mastewar1@gmail.com>.
005342,000012: ## Website: www.ibiblio.org/apollo/index.html
005343,000013: ## Mod history: 2016-12-20 MAS Created from Aurora 12 (with much DAP stuff removed).
005344,000014:
005345,000015: # THE FOLLOWING ROUTINES ARE PROVIDED TO MAINTAIN THE PHASE TABLE. TWO ROUTINES ARE AVAILABLE:
005346,000016:
005347,000017: # TC PHASCHNG SLOWER BUT LESS STORAGE.
005348,000018: # OCT PPPGG CHANGE RESTART GROUP GG TO PHASE PPP
005349,000019: # (PPP IS A SIGNED 8 BIT NUMBER).
005350,000020:
005351,000021: # CA PPPPP NEW PHASE ARRIVES IN A.
005352,000022: # TC NEWPHASE
005353,000023: # OCT 000GG UPDATES GG.
005354,000024:
005355,000025: # IN ALL CASES THE OLD PHASE RETURNS IN A. IF THE OLD PHASE WAS NEGATIVE, CALL A ROUTINE USING THE
005356,000026: # CORRESPONDING TERMCADR.
005357,000027:
005358,000028: 4575 SETLOC ENDWAITF
005359,000029:
005360,000030: 4575 00004 PHASCHNG INHINT
005361,000031: 4576 50002 INDEX Q
005362,000032: 4577 30000 CAF 0 # GET PARAMETER WORD.
005363,000033: 4600 54077 TS RUPTREG4
005364,000034: 4601 75216 MASK LOW5 # GROUP NUMBER 0 - 37.
005365,000035: 4602 60000 DOUBLE
005366,000036: 4603 56077 XCH RUPTREG4
005367,000037: 4604 00006 EXTEND
005368,000038: 4605 77661 MP BIT9 # SIGNED NEW PHASE.
005369,000039: 4606 14615 TCF PHASCH2
005370,000040:
005371,000041: 4607 00004 NEWPHASE INHINT # NEW PHASE ARRIVES IN A.
005372,000042: 4610 54077 TS RUPTREG4
005373,000043: 4611 50002 INDEX Q
005374,000044: 4612 30000 CAF 0 # GROUP NUMBER.
005375,000045: 4613 60000 DOUBLE
005376,000046: 4614 56077 XCH RUPTREG4
005377,000047:
005378,000048: 4615 54001 PHASCH2 TS L # DIRECT VERSION.
005379,000049: 4616 40000 COM # COMPLEMENTED VERSION IMMEDIATELY PRE-
005380,000050: 4617 50077 INDEX RUPTREG4 # CEDES THE DIRECT ONE.
005381,000051: 4620 53072 DXCH -PHASE0 # COPIES DISAGREE FOR MINIMUM TIME.
005382,000052: 4621 00006 EXTEND
005383,000053: 4622 64636 BZMF PHASEXIT # IF NO DERAIL.
005384,000054:
005385,000055: 4623 54074 TS RUPTREG1 # IF NEGATIVE, SAVE ABSOLUTE VALUE OF
005386,000056: 4624 00006 EXTEND # OLD PHASE AND RETURN Q.
005387,000057: 4625 22075 QXCH RUPTREG2
005388,000058: 4626 30077 CA RUPTREG4 # GET BACK GROUP NUMBER.
005389,000059: 4627 00006 EXTEND
005390,000060: 4630 77654 MP HALF
005391,000061: 4631 50000 INDEX A # SELECT TERMCADR.
005392,000062: 4632 34642 CAF TERMCADR
005393,000063: 4633 04200 TC ISWCALL
005394,000064:
005395,000065: 4634 52075 DXCH RUPTREG1 # -OLD PHASE BITS TO A - RETURN -1 TO L.
005396,000066: 4635 22002 LXCH Q
005397,000067:
005398,000068: 4636 40000 PHASEXIT COM # RETURN OLD PHASE IN A.
005399,000069: 4637 00003 RELINT
005400,000070: 4640 50002 INDEX Q
005401,000071: 4641 00001 TC 1
005402,000072:
005403,000073: 4642 00000 TERMCADR CADR 10000 # FILLED IN AS NEEDED.
005404,000074: 4643 00000 CADR 10000
005405,000075: 4644 00000 CADR 10000
005406,000076: 4645 00000 CADR 10000
005407,000077: 4646 00000 CADR 10000
005408,000078: 4647 00000 CADR 10000
005409,000079:
005410,000080: # SUBROUTINE TO UPDATE THE PROGRAM NUMBER DISPLAY ON THE DSKY.
005411,000081:
005412,000082: 4650 50002 NEWMODEX INDEX Q # UPDATE MODREG.
005413,000083: 4651 30000 CAF 0
005414,000084: 4652 24002 INCR Q
005415,000085: 4653 56276 XCH MODREG
005416,000086: 4654 40000 COM # IF NO CHANGE IN MODE, RETURN IMMEDIATELY
005417,000087: 4655 60276 AD MODREG
005418,000088: 4656 00006 EXTEND
005419,000089: 4657 14673 BZF TCQ
005420,000090:
005421,000091: 4660 34662 CAF +2 # CALL PINBALL SUBROUTINE.
005422,000092: 4661 14071 TCF SWCALL # WITH Q SET TO CALLERS RETURN.
005423,000093:
005424,000094: 4662 12001 CADR DSPMM
005425,000095:
005426,000096: # RETURN TO CALLER +3 IF MODE = THAT AT CALLER +1. OTHERWISE RETURN TO CALLER +2.
005427,000097:
005428,000098: 4663 50002 CHECKMM INDEX Q
005429,000099: 4664 40000 CS 0
005430,000100: 4665 60276 AD MODREG
005431,000101: 4666 00006 EXTEND
005432,000102: 4667 14672 BZF +3
005433,000103:
005434,000104: 4670 50002 INDEX Q
005435,000105: 4671 00001 TC 1 # NO MATCH.
005436,000106:
005437,000107: 4672 50002 INDEX Q
005438,000108: 4673 00002 TCQ TC 2 # (ALWAYS AVAILABLE TO BZF & BZMF)
005439,000109:
005440,000110: 4674 ENDPHMNF EQUALS
End of include-file PHASE_TABLE_MAINTENANCE.agc. Parent file is MAIN.agc