Source Code

   YAYUL: ASSEMBLE REVISION 6 OF PROGRAM BOREALIS       BY MSTEWART JUN. 28,2017
This 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