Source Code

   YAYUL: ASSEMBLE REVISION 5 OF PROGRAM BOREALIS       BY MSTEWART MAR. 27,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.

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