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.

004938,000002:                                                                                                  ## Copyright:   Public domain.
004939,000003:                                                                                                  ## Filename:    WAITLIST.agc
004940,000004:                                                                                                  ## Purpose:     This program is designed to extensively test the Apollo Guidance Computer
004941,000005:                                                                                                  ##              (specifically the LM instantiation of it). It is built on top of a heavily
004942,000006:                                                                                                  ##              stripped-down Aurora 12, with all code ostensibly added by the DAP Group
004943,000007:                                                                                                  ##              removed. Instead Borealis expands upon the tests provided by Aurora,
004944,000008:                                                                                                  ##              including corrected tests from Retread 44 and tests from Ron Burkey's
004945,000009:                                                                                                  ##              Validation.
004946,000010:                                                                                                  ## Assembler:   yaYUL
004947,000011:                                                                                                  ## Contact:     Mike Stewart <mastewar1@gmail.com>.
004948,000012:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
004949,000013:                                                                                                  ## Mod history: 2016-12-20 MAS  Created from Aurora 12 (with much DAP stuff removed).
004950,000014:                                                                                                  ##              2017-01-15 MAS  Added setting of LASTIMER in T3RUPT.
004951,000015:                                                                                                  ##              2017-02-09 RSB  Comment-text fixes identified in proofing Artemis 72
004952,000016: 
004953,000017:                                                                                                  #  GROUNDRULE....DELTA T SHOULD NOT EXCEED 12000 (= 2 MINUTES)
004954,000018: 
004955,000019:    4517                                           SETLOC   ENDEXECF                              
004956,000020: 
004957,000021:    4517  E3,1400                                  EBANK=   LST1                                  #  TASK LISTS IN SWITCHED E BANK.
004958,000022: 
004959,000023:    4517           56002        WAITLIST           XCH      Q                                     #  SAVE DELTA T IN Q AND RETURN IN
004960,000024:    4520           54065                           TS       WAITEXIT                              #  WAITEXIT.
004961,000025:    4521           00006                           EXTEND                                         
004962,000026:    4522           50000                           INDEX    A                                     
004963,000027:    4523           30001                           DCA      0                                     #  PICK UP 2CADR OF TASK.
004964,000028:    4524           54070                           TS       WAITADR                               #  BBCON WILL REMAIN IN L.
004965,000029:    4525           34534        DLY2               CAF      WAITBB                                #  ENTRY FROM FIXDELAY AND VARDELAY.
004966,000030:    4526           56006                           XCH      BBANK                                 
004967,000031:    4527           12566                           TCF      WAIT2                                 
004968,000032: 
004969,000033:                                                                                                  #  RETURN TO CALLER AFTER TASK INSERTION:
004970,000034: 
004971,000035:    4530           30066        LVWTLIST           CA       WAITBANK                              
004972,000036:    4531           54006                           TS       BBANK                                 
004973,000037:    4532           50065                           INDEX    WAITEXIT                              
004974,000038:    4533           00002                           TC       2                                     
004975,000039: 
004976,000040:    4534           02003        WAITBB             BBCON    WAIT2                                 
004977,000041: 
004978,000042:                                                                                                  #  RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1.
004979,000043: 
004980,000044:    4535           50002        FIXDELAY           INDEX    Q                                     #  BOTH ROUTINES MUST BE CALLED UNDER
004981,000045:    4536           30000                           CAF      0                                     #  WAITLIST CONTROL AND TERMINATE THE TASK
004982,000046:    4537           24002                           INCR     Q                                     #  IN WHICH THEY WERE CALLED.
004983,000047: 
004984,000048:                                                                                                  #  RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A.
004985,000049: 
004986,000050:    4540           56002        VARDELAY           XCH      Q                                     #  DT TO Q.  TASK ADRES TO WAITADR.
004987,000051:    4541           54070                           TS       WAITADR                               
004988,000052:    4542           30006                           CA       BBANK                                 #  BBANK IS SAVED DURING DELAY.
004989,000053:    4543           54001                           TS       L                                     
004990,000054:    4544           34547                           CAF      DELAYEX                               
004991,000055:    4545           54065                           TS       WAITEXIT                              #  GO TO TASKOVER AFTER TASK ENTRY.
004992,000056:    4546           14525                           TCF      DLY2                                  
004993,000057: 
004994,000058:    4547           14561        DELAYEX            TCF      TASKOVER   -2                         #  RETURNS TO TASKOVER
004995,000059: 
004996,000060: 
004997,000061:                                                                                                  #  ENDTASK MUST BE ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE.
004998,000062: 
004999,000063:    4550           73225 73774  ENDTASK            -2CADR   SVCT3                                 
005000,000064: 
005001,000065:    4552           10063        SVCT3              CCS      STATE      +2                         #  DRIFT FLAG
005002,000066:    4553           14563                           TCF      TASKOVER                              
005003,000067:    4554           14563                           TCF      TASKOVER                              
005004,000068:    4555           14556                           TCF      +1                                    
005005,000069: 
005006,000070:    4556           34514                           CAF      PRIO35                                #  COMPENSATE FOR NBD COEFFICIENTS ONLY
005007,000071:    4557           04344                           TC       NOVAC                                 #      ENABLE EVERY 81.93 SECONDS
005008,000072:    4560           02257 16003                     2CADR    NBDONLY                               #  EBANK IS SET TO 3
005009,000073: 
005010,000074:    4562           14563                           TCF      TASKOVER                              
005011,000075: 
005012,000076: 
005013,000077:                                                                                                  #  BEGIN TASK INSERTION.
005014,000078: 
005015,000079: 01,2566                                           SETLOC   ENDEXECS                              
005016,000080: 
005017,000081: 01,2566           54066        WAIT2              TS       WAITBANK                              #  BBANK OF CALLING PROGRAM.
005018,000082: 01,2567           40026                           CS       TIME3                                 
005019,000083: 01,2570           62571                           AD       +1                                    #  CCS  A  = + 1/4
005020,000084: 01,2571           10000                           CCS      A                                     #  TEST  1/4 - C(TIME3).  IF POSITIVE,
005021,000085:                                                                                                  #  IT MEANS THAT TIME3 OVERFLOW HAS OCCURRED PRIOR TO CS  TIME3 AND THAT
005022,000086:                                                                                                  #  C(TIME3) = T - T1, INSTEAD OF 1.0 - (T1 - T).  THE FOLLOWING FOUR
005023,000087:                                                                                                  #  ORDERS SET C(A) = TD - T1 + 1 IN EITHER CASE.
005024,000088: 
005025,000089: 01,2572           66042                           AD       OCT40001                              #  OVERFLOW HAS OCCURRED.  SET C(A) =
005026,000090: 01,2573           40000                           CS       A                                     #  T - T1 + 3/4 - 1
005027,000091: 
005028,000092:                                                                                                  #  NORMAL CASE (C(A) MINUS) YIELDS SAME C(A)  -(-(1.0-(T1 - T))+1/4)-1
005029,000093: 
005030,000094: 01,2574           62722                           AD       OCT50001                              
005031,000095: 01,2575           60002                           AD       Q                                     #  RESULT = TD - T1 + 1.
005032,000096: 
005033,000097: 01,2576           10000                           CCS      A                                     #  TEST TD - T1 + 1
005034,000098: 
005035,000099: 01,2577           61400                           AD       LST1                                  #  IF TD - T1 POS, GO TO WTLST5 WITH
005036,000100: 01,2600           12642                           TCF      WTLST5                                #  C(A) = (TD - T1) + C(LST1) = TD-T2+1
005037,000101: 
005038,000102: 01,2601           12602                           NOOP                                           
005039,000103: 01,2602           40002                           CS       Q                                     
005040,000104: 
005041,000105:                                                                                                  #  NOTE THAT THIS PROGRAM SECTION IS NEVER ENTERED WHEN T-T1 G/E -1,
005042,000106:                                                                                                  #  SINCE TD-T1+1 = (TD-T) + (T-T1+1), AND DELTA T = TD-T G/E +1 .  (G/E
005043,000107:                                                                                                  #  SYMBOL MEANS GREATER THAN OR EQUAL TO).  THUS THERE NEED BE NO CON-
005044,000108:                                                                                                  #  CERN OVER A PREVIOUS OR IMMINENT OVERFLOW OF TIME3 HERE.
005045,000109: 
005046,000110: 01,2603           67642                           AD       POS1/2                                #  WHEN TD IS NEXT, FORM QUANTITY
005047,000111: 01,2604           67642                           AD       POS1/2                                #    1.0 - DELTA T = 1.0 - (TD - T)
005048,000112: 01,2605           56026                           XCH      TIME3                                 
005049,000113: 01,2606           67641                           AD       NEGMAX                                
005050,000114: 01,2607           60002                           AD       Q                                     #  1.0 - DELTAT T NOW COMPLETE.
005051,000115: 01,2610           00006                           EXTEND                                         #  ZERO INDEX Q.
005052,000116: 01,2611           22007                           QXCH     7                                     #  (ZQ)
005053,000117: 
005054,000118: 
005055,000119: 01,2612           57400        WTLST4             XCH      LST1                                  
005056,000120: 01,2613           57401                           XCH      LST1       +1                         
005057,000121: 01,2614           57402                           XCH      LST1       +2                         
005058,000122: 01,2615           57403                           XCH      LST1       +3                         
005059,000123: 01,2616           57404                           XCH      LST1       +4                         
005060,000124: 01,2617           57405                           XCH      LST1       +5                         
005061,000125: 01,2620           57406                           XCH      LST1       +6                         
005062,000126: 01,2621           57407                           XCH      LST1       +7                         
005063,000127: 
005064,000128: 01,2622           30070                           CA       WAITADR                               #  (MINOR PART OF TASK CADR HAS BEEN IN L.)
005065,000129: 01,2623           50002                           INDEX    Q                                     
005066,000130: 01,2624           12625                           TCF      +1                                    
005067,000131: 
005068,000132: 01,2625           53411                           DXCH     LST2                                  
005069,000133: 01,2626           53413                           DXCH     LST2       +2                         
005070,000134: 01,2627           53415                           DXCH     LST2       +4                         
005071,000135: 01,2630           53417                           DXCH     LST2       +6                         
005072,000136: 01,2631           53421                           DXCH     LST2       +8D                        
005073,000137: 01,2632           53423                           DXCH     LST2       +10D                       #  AT END, CHECK THAT C(LST2 +10) IS STD
005074,000138: 01,2633           53425                           DXCH     LST2       +12D                       
005075,000139: 01,2634           53427                           DXCH     LST2       +14D                       
005076,000140: 01,2635           53431                           DXCH     LST2       +16D                       
005077,000141: 01,2636           64550                           AD       ENDTASK                               #    END ITEM, AS CHECK FOR EXCEEDING
005078,000142:                                                                                                  #    THE LENGTH OF THE LIST.
005079,000143: 01,2637           00006                           EXTEND                                         #  DUMMY TASK ADRES SHOULD BE IN FIXED-
005080,000144: 01,2640           14530                           BZF      LVWTLIST                              #  FIXED SO ITS ADRES ALONE DISTINGUISHES
005081,000145: 01,2641           12715                           TCF      WTABORT                               #  IT.
005082,000146: 
005083,000147: 
005084,000148: 01,2642           10000        WTLST5             CCS      A                                     #  TEST TD - T2 + 1
005085,000149: 01,2643           61401                           AD       LST1       +1                         
005086,000150: 01,2644           12650                           TCF      +4                                    
005087,000151: 01,2645           67657                           AD       ONE                                   
005088,000152: 01,2646           02723                           TC       WTLST2                                
005089,000153: 01,2647           00001                           OCT      1                                     
005090,000154: 
005091,000155: 01,2650           10000                 +4        CCS      A                                     #  TEST TD - T3 + 1
005092,000156: 01,2651           61402                           AD       LST1       +2                         
005093,000157: 01,2652           12656                           TCF      +4                                    
005094,000158: 01,2653           67657                           AD       ONE                                   
005095,000159: 01,2654           02723                           TC       WTLST2                                
005096,000160: 01,2655           00002                           OCT      2                                     
005097,000161: 
005098,000162: 01,2656           10000                 +4        CCS      A                                     #  TEST TD - T4 + 1
005099,000163: 01,2657           61403                           AD       LST1       +3                         
005100,000164: 01,2660           12664                           TCF      +4                                    
005101,000165: 01,2661           67657                           AD       ONE                                   
005102,000166: 01,2662           02723                           TC       WTLST2                                
005103,000167: 01,2663           00003                           OCT      3                                     
005104,000168: 
005105,000169: 01,2664           10000                 +4        CCS      A                                     #  TEST TD - T5 + 1
005106,000170: 01,2665           61404                           AD       LST1       +4                         
005107,000171: 01,2666           12672                           TCF      +4                                    
005108,000172: 01,2667           67657                           AD       ONE                                   
005109,000173: 01,2670           02723                           TC       WTLST2                                
005110,000174: 01,2671           00004                           OCT      4                                     
005111,000175: 
005112,000176: 01,2672           10000                 +4        CCS      A                                     #  TEST TD - T6 + 1
005113,000177: 01,2673           61405                           AD       LST1       +5                         
005114,000178: 01,2674           12700                           TCF      +4                                    
005115,000179: 01,2675           67657                           AD       ONE                                   
005116,000180: 01,2676           02723                           TC       WTLST2                                
005117,000181: 01,2677           00005                           OCT      5                                     
005118,000182: 
005119,000183: 01,2700           10000                 +4        CCS      A                                     #  TEST TD - T7 + 1
005120,000184: 01,2701           61406                           AD       LST1       +6                         
005121,000185: 01,2702           12706                           TCF      +4                                    
005122,000186: 01,2703           67657                           AD       ONE                                   
005123,000187: 01,2704           02723                           TC       WTLST2                                
005124,000188: 01,2705           00006                           OCT      6                                     
005125,000189: 
005126,000190: 
005127,000191: 01,2706           10000                 +4        CCS      A                                     
005128,000192: 01,2707           61407                           AD       LST1       +7                         
005129,000193: 01,2710           12714                           TCF      +4                                    
005130,000194: 01,2711           67657                           AD       ONE                                   
005131,000195: 01,2712           02723                           TC       WTLST2                                
005132,000196: 01,2713           00007                           OCT      7                                     
005133,000197: 
005134,000198: 01,2714           10000                 +4        CCS      A                                     
005135,000199: 01,2715           05440        WTABORT            TC       ABORT                                 #  NO ROOM IN THE INN.
005136,000200: 01,2716           01203                           OCT      1203                                  
005137,000201: 
005138,000202: 01,2717           67657                           AD       ONE                                   
005139,000203: 01,2720           02723                           TC       WTLST2                                
005140,000204: 01,2721           00010                           OCT      10                                    
005141,000205: 
005142,000206: 01,2722           50001        OCT50001           OCT      50001                                 
005143,000207: 
005144,000208: 
005145,000209:                                                                                                  #  THE ENTRY TO WTLST2 JUST PRECEDING OCT  N  IS FOR T  LE TD LE T   -1.
005146,000210:                                                                                                  #                                                     N           N+1
005147,000211: 
005148,000212:                                                                                                  #  (LE MEANS LESS THAN OR EQUAL TO).  AT ENTRY, C(A) = -(TD - T   + 1)
005149,000213:                                                                                                  #                                                              N+1
005150,000214: 
005151,000215:                                                                                                  #  THE LST1 ENTRY -(T   - T +1) IS TO BE REPLACED BY -(TD - T  + 1), AND
005152,000216:                                                                                                  #                    N+1   N                                 N
005153,000217: 
005154,000218:                                                                                                  #  THE ENTRY -(T   - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING.
005155,000219:                                                                                                  #               N+1
005156,000220: 
005157,000221: 01,2723           54071        WTLST2             TS       WAITTEMP                              #      C(A) = -(TD - T   + 1)
005158,000222: 01,2724           50002                           INDEX    Q                                     
005159,000223: 01,2725           30000                           CAF      0                                     
005160,000224: 01,2726           54002                           TS       Q                                     #  INDEX VALUE INTO Q.
005161,000225: 
005162,000226: 01,2727           37657                           CAF      ONE                                   
005163,000227: 01,2730           60071                           AD       WAITTEMP                              
005164,000228: 01,2731           50002                           INDEX    Q                                     #  C(A) = -(TD - T ) + 1.
005165,000229: 01,2732           27377                           ADS      LST1       -1                         #                 N
005166,000230: 
005167,000231: 01,2733           40071                           CS       WAITTEMP                              
005168,000232: 01,2734           50002                           INDEX    Q                                     
005169,000233: 01,2735           12612                           TCF      WTLST4                                
005170,000234: 
005171,000235:                                                                                                  #  C(TIME3)  = 1.0 - (T1 - T)
005172,000236: 
005173,000237:                                                                                                  #  C(LST1  ) = - (T2 - T1) + 1
005174,000238:                                                                                                  #  C(LST1+1) = - (T3 - T2) + 1
005175,000239:                                                                                                  #  C(LST1+2) = - (T4 - T3) + 1
005176,000240:                                                                                                  #  C(LST1+3) = - (T5 - T4) + 1
005177,000241:                                                                                                  #  C(LST1+4) = - (T6 - T5) + 1
005178,000242: 
005179,000243:                                                                                                  #  C(LST2   ) = 2CADR  TASK1
005180,000244:                                                                                                  #  C(LST2+2 ) = 2CADR  TASK2
005181,000245:                                                                                                  #  C(LST2+4 ) = 2CADR  TASK3
005182,000246:                                                                                                  #  C(LST2+6 ) = 2CADR  TASK4
005183,000247:                                                                                                  #  C(LST2+8 ) = 2CADR  TASK5
005184,000248:                                                                                                  #  C(LST2+10) = 2CADR  TASK6
005185,000249: 
005186,000250: 
005187,000251:                                                                                                  #  ENTERS HERE ON T3 RUPT TO DISPATCH WAITLISTED TASK.
005188,000252: 
005189,000253: 01,2736           54016        T3RUPT             TS       BANKRUPT                              
005190,000254: 01,2737           00006                           EXTEND                                         
005191,000255: 01,2740           22012                           QXCH     QRUPT                                 
005192,000256: 
005193,000257: 01,2741           36165                           CAF      THREE                                 
005194,000258: 01,2742           55112                           TS       LASTIMER                              
005195,000259: 
005196,000260: 01,2743           37640        T3RUPT2            CAF      NEG1/2                                #  DISPATCH WAITLIST TASK.
005197,000261: 01,2744           57407                           XCH      LST1       +7                         
005198,000262: 01,2745           57406                           XCH      LST1       +6                         
005199,000263: 01,2746           57405                           XCH      LST1       +5                         
005200,000264: 01,2747           57404                           XCH      LST1       +4                         #  1.  MOVE UP LST1 CONTENTS, ENTERING
005201,000265: 01,2750           57403                           XCH      LST1       +3                         #      A VALUE OF 1/2 +1 AT THE BOTTOM
005202,000266: 01,2751           57402                           XCH      LST1       +2                         #      FOR T6-T5, CORRESPONDING TO THE
005203,000267: 01,2752           57401                           XCH      LST1       +1                         #      INTERVAL 81.91 SEC FOR ENDTASK.
005204,000268: 01,2753           57400                           XCH      LST1                                  
005205,000269: 01,2754           67637                           AD       POSMAX                                #  2. SET T3 = 1.0 - T2 -T USING LIST 1.
005206,000270: 01,2755           26026                           ADS      TIME3                                 #  SO T3 WONT TICK DURING UPDATE.
005207,000271: 01,2756           55070                           TS       RUPTAGN                               
005208,000272: 01,2757           47665                           CS       ZERO                                  
005209,000273: 01,2760           55070                           TS       RUPTAGN                               #  SETS RUPTAGN TO +1 ON OVERFLOW.
005210,000274: 
005211,000275: 01,2761           00006                           EXTEND                                         #  DISPATCH TASK.
005212,000276: 01,2762           44551                           DCS      ENDTASK                               
005213,000277: 01,2763           53431                           DXCH     LST2       +16D                       
005214,000278: 01,2764           53427                           DXCH     LST2       +14D                       
005215,000279: 01,2765           53425                           DXCH     LST2       +12D                       
005216,000280: 01,2766           53423                           DXCH     LST2       +10D                       
005217,000281: 01,2767           53421                           DXCH     LST2       +8D                        
005218,000282: 01,2770           53417                           DXCH     LST2       +6                         
005219,000283: 01,2771           53415                           DXCH     LST2       +4                         
005220,000284: 01,2772           53413                           DXCH     LST2       +2                         
005221,000285: 01,2773           53411                           DXCH     LST2                                  
005222,000286: 
005223,000287: 01,2774           52006                           DTCB                                           
005224,000288: 
005225,000289: 01,2775                        ENDWAITS           EQUALS                                         
005226,000290: 
005227,000291: 
005228,000292:                                                                                                  #  RETURN, AFTER EXECUTION OF T3 OVERFLOW TASK:
005229,000293: 
005230,000294:    4563                                           BLOCK    02                                    
005231,000295: 
005232,000296:    4563           11070        TASKOVER           CCS      RUPTAGN                               #  IF +1 RETURN TO T3RUPT, IF -0 RESUME.
005233,000297:    4564           34534                           CAF      WAITBB                                
005234,000298:    4565           54006                           TS       BBANK                                 
005235,000299:    4566           12743                           TCF      T3RUPT2                               #  DISPATCH NEXT TASK IF IT WAS DUE.
005236,000300: 
005237,000301:    4567           00006        RESUME             EXTEND                                         
005238,000302:    4570           22012                           QXCH     QRUPT                                 
005239,000303:    4571           30016        NOQRSM             CA       BANKRUPT                              
005240,000304:    4572           54006                           TS       BBANK                                 
005241,000305:    4573           52011        NOQBRSM            DXCH     ARUPT                                 
005242,000306:    4574           50017                           RESUME                                         
005243,000307: 
005244,000308:    4575                        ENDWAITF           EQUALS                                         #  LAST FIXED-FIXED LOCATION OF T3RUPT.

End of include-file WAITLIST.agc.  Parent file is MAIN.agc