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.

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

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