Source Code

047408,000001: # Copyright: Public domain. 047409,000002: # Filename: WAITLIST.agc 047410,000003: # Purpose: Part of the source code for Luminary 1A build 099. 047411,000004: # It is part of the source code for the Lunar Module's (LM) 047412,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 047413,000006: # Assembler: yaYUL 047414,000007: # Contact: Ron Burkey <info@sandroid.org>. 047415,000008: # Website: www.ibiblio.org/apollo. 047416,000009: # Pages: 1117-1132 047417,000010: # Mod history: 2009-05-25 RSB Adapted from the corresponding 047418,000011: # Luminary131 file, using page 047419,000012: # images from Luminary 1A. 047420,000013: # 2011-01-06 JL Fixed pseudo-label indentation. 047421,000014: # 2011-05-07 JL Removed workarounds. 047422,000015: 047423,000016: # This source code has been transcribed or otherwise adapted from 047424,000017: # digitized images of a hardcopy from the MIT Museum. The digitization 047425,000018: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 047426,000019: # the Museum. Many thanks to both. The images (with suitable reduction 047427,000020: # in storage size and consequent reduction in image quality as well) are 047428,000021: # available online at www.ibiblio.org/apollo. If for some reason you 047429,000022: # find that the images are illegible, contact me at info@sandroid.org 047430,000023: # about getting access to the (much) higher-quality images which Paul 047431,000024: # actually created. 047432,000025: 047433,000026: # Notations on the hardcopy document read, in part: 047434,000027: 047435,000028: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 047436,000029: # 16:27 JULY 14, 1969 047437,000030: 047438,000031: # Page 1117 047439,000032: # PROGRAM DESCRIPTION DATE -- 10 OCTOBER 1966 047440,000033: # MOD NO -- 2 LOG SECTION -- WAITLIST 047441,000034: # MOD BY -- MILLER (DTMAX INCREASED TO 162.5 SEC) ASSEMBLY -- SUNBURST REV 5 047442,000035: # MOD 3 BY KERNAN (INHINT INSERTED AT WAITLIST) 2/28/68 SKIPPER REV 4 047443,000036: # MOD 4 BY KERNAN (TWIDDLE IN 54) 3/28/68 SKIPPER REV 13. 047444,000037: 047445,000038: # FUNCTIONAL DESCRIPTION -- 047446,000039: # PART OF A SECTION OF PROGRAMS -- WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM (CALLED A TASK), 047447,000040: # WHICH IS TO BEGIN IN C(A) CENTISECONDS. WAITLIST UPDATES TIME3, LST1, AND LST2. THE MEANING OF THESE LISTS 047448,000041: # FOLLOW. 047449,000042: 047450,000043: # C(TIME3) = 16384 -(T1-T) CENTISECONDS, (T=PRESENT TIME, T1-TIME FOR TASK1) 047451,000044: 047452,000045: # C(LST1) = -(T2-T1)+1 047453,000046: # C(LST1 +1) = -(T3-T2)+1 047454,000047: # C(LST1 +2) = -(T4-T3)+1 047455,000048: # ... 047456,000049: # C(LST1 +6) = -(T8-T7)+1 047457,000050: # C(LST1 +7) = -(T9-T8)+1 047458,000051: 047459,000052: # C(LST2) = 2CADR OF TASK1 047460,000053: # C(LST2 +2) = 2CADR OF TASK2 047461,000054: # ... 047462,000055: # C(LST2 +14) = 2CADR OF TASK8 047463,000056: # C(LST2 +16) = 2CADR OF TASK9 047464,000057: 047465,000058: # WARNINGS -- 047466,000059: # 1) 1 <= C(A) <= 16250D (1 CENTISECOND TO 162.5 SEC) 047467,000060: # 2) 9 TASKS MAXIMUM 047468,000061: # 3) TASKS CALLED UNDER INTERRUPT INHIBITED 047469,000062: # 4) TASKS END BY TC TASKOVER 047470,000063: 047471,000064: # CALLING SEQUENCE -- 047472,000065: # L-1 CA DELTAT (TIME IN CENTISECONDS TO TASK START) 047473,000066: # L TC WAITLIST 047474,000067: # L+1 2CADR DESIRED TASK. 047475,000068: # L+2 (MINOR OF 2CADR) 047476,000069: # L+3 RELINT (RETURNS HERE) 047477,000070: 047478,000071: # TWIDDLE -- 047479,000072: # TWIDDLE IS FOR USE WHEN THE TASK BEING SET UP IS IN THE SAME EBANK AND FBANK AS THE USER. IN 047480,000073: # SUCH CASES, IT IMPROVES UPON WAITLIST BY ELIMINATING THE NEED FOR THE BBCON HALF OF THE 2CADR, 047481,000074: # Page 1118 047482,000075: # SAVING A WORD. TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT, 047483,000076: # L-1 CA DELTAT 047484,000077: # L TC TWIDDLE 047485,000078: # L+1 ADRES DESIRED TASK 047486,000079: # L+2 RELINT (RETURNS HERE) 047487,000080: 047488,000081: # NORMAL EXIT MODES -- 047489,000082: # AT L+3 OF CALLING SEQUENCE. 047490,000083: 047491,000084: # ALARM OR ABORT EXIT MODES -- 047492,000085: # TC ABORT 047493,000086: # OCT 1203 (WAITLIST OVERFLOW -- TOO MANY TASKS) 047494,000087: 047495,000088: # ERASABLE INITIALIZATION REQUIRED -- 047496,000089: # ACCOMPLISHED BY FRESH START -- LST2, ..., LST2 +16 = ENDTASK 047497,000090: # LST1, ..., LST1 +7 = NEG1/2 047498,000091: 047499,000092: # OUTPUT -- 047500,000093: # LST1 AND LST2 UPDATED WTIH NEW TASK AND ASSOCIATED TIME. 047501,000094: 047502,000095: # DEBRIS -- 047503,000096: # CENTRALS -- A,Q,L 047504,000097: # OTHER -- WAITEXIT, WAITADR, WAITTEMP, WAITBANK 047505,000098: 047506,000099: # DETAILED ANALYSIS OF TIMING -- 047507,000100: # CONTROL WILL NOT BE RETURNED TO THE SPECIFIED ADDRESS (2CADR) IN EXACTLY DELTA T CENTISECONDS. 047508,000101: # THE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS: 047509,000102: # LET T0 = THE TIME OF THE TC WAITLIST 047510,000103: # LET TS = T0 +147U + COUNTER INCREMENTS (SET UP TIME) 047511,000104: # LET X = TS -(100TS)/100 (VARIANCE FROM COUNTERS) 047512,000105: # LET Y = LENGTH OF TIME OF INHIBIT INTERRUPT AFTER T3RUPT 047513,000106: # LET Z = LENGTH OF TIME TO PROCESS TASKS WHICH ARE DUE THIS T3RUPT BUT DISPATCHED EARLIER. 047514,000107: # (Z=0, USUALLY). 047515,000108: # LET DELTD = THE ACTUAL TIME TAKEN TO GIVE CONTROL TO 2CADR 047516,000109: # THEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS* 047517,000110: # *THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME. 047518,000111: # IN SHORT, THE ACTUAL TIME TO RETURN CONTROL TO A 2CADR IS AUGMENTED BY THE TIME TO SET UP THE TASK'S 047519,000112: # INTERRUPT, ALL COUNTERS TICKING, THE T3RUPT PROCESSING TIME, THE WAITLIST PROCESSING TIME AND THE POSSIBILITY 047520,000113: # OF OTHER TASKS INHIBITING THE INTERRUPT. 047521,000114: 047522,000115: 5173 BLOCK 02 047523,000116: # Page 1119 047524,000117: 5173 E3,1400 EBANK= LST1 # TASK LISTS IN SWITCHED E BANK. 047525,000118: 047526,000119: 5173 COUNT* $$/WAIT 047527,000120: 5173 00004 TWIDDLE INHINT 047528,000121: 5174 54001 TS L # SAVE DELAY TIME IN L 047529,000122: 5175 34733 CA POSMAX 047530,000123: 5176 26002 ADS Q # CREATING OVERFLOW AND Q-1 IN Q 047531,000124: 5177 30006 CA BBANK 047532,000125: 5200 00006 EXTEND 047533,000126: 5201 04007 ROR SUPERBNK 047534,000127: 5202 56001 XCH L 047535,000128: 047536,000129: 5203 00004 WAITLIST INHINT 047537,000130: 5204 56002 XCH Q # SAVE DELTA T IN Q AND RETURN IN 047538,000131: 5205 54061 TS WAITEXIT # WAITEXIT. 047539,000132: 5206 00006 EXTEND 047540,000133: 5207 50061 INDEX WAITEXIT # IF TWIDDLING, THE TS SKIPS TO HERE 047541,000134: 5210 30001 DCA 0 # PICK UP 2CADR OF TASK. 047542,000135: 5211 54063 -1 TS WAITADR # BBCON WILL REMAIN IN L 047543,000136: 5212 35220 DLY2 CAF WAITBB # ENTRY FROM FIXDELAY AND VARDELAY. 047544,000137: 5213 56006 XCH BBANK 047545,000138: 5214 13231 TCF WAIT2 047546,000139: 047547,000140: # RETURN TO CALLER AFTER TASK INSERTION: 047548,000141: 047549,000142: 5215 52062 LVWTLIST DXCH WAITEXIT 047550,000143: 5216 64752 AD TWO 047551,000144: 5217 52006 DTCB 047552,000145: 047553,000146: 5220 E3,1400 EBANK= LST1 047554,000147: 5220 02063 WAITBB BBCON WAIT2 047555,000148: 047556,000149: # RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1. 047557,000150: 047558,000151: 5221 50002 FIXDELAY INDEX Q # BOTH ROUTINES MUST BE CALLED UNDER 047559,000152: 5222 30000 CAF 0 # WAITLIST CONTROL AND TERMINATE THE TASK 047560,000153: 5223 24002 INCR Q # IN WHICH THEY WERE CALLED. 047561,000154: 047562,000155: # RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A. 047563,000156: 047564,000157: 5224 56002 VARDELAY XCH Q # DT TO Q. TASK ADRES TO WAITADR. 047565,000158: 5225 54063 TS WAITADR 047566,000159: 5226 30006 CA BBANK # BBANK IS SAVED DURING DELAY. 047567,000160: 5227 00006 EXTEND 047568,000161: 5230 04007 ROR SUPERBNK # ADD SBANK TO BBCON. 047569,000162: 5231 54001 TS L 047570,000163: 5232 35235 CAF DELAYEX 047571,000164: 5233 54061 TS WAITEXIT # GO TO TASKOVER AFTER TASK ENTRY. 047572,000165: 5234 15212 TCF DLY2 047573,000166: 047574,000167: # Page 1120 047575,000168: 5235 15257 DELAYEX TCF TASKOVER -2 # RETURNS TO TASKOVER. 047576,000169: 047577,000170: # Page 1121 047578,000171: # ENDTASK MUST ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE. 047579,000172: 047580,000173: 5236 E3,1400 EBANK= LST1 047581,000174: 5236 72537 73714 ENDTASK -2CADR SVCT3 047582,000175: 047583,000176: 5240 10076 SVCT3 CCS FLAGWRD2 # DRIFT FLAG 047584,000177: 5241 15261 TCF TASKOVER 047585,000178: 5242 15261 TCF TASKOVER 047586,000179: 5243 15244 TCF +1 047587,000180: 047588,000181: 5244 11304 CKIMUSE CCS IMUCADR # DON'T DO NBDONLY IF SOMEONE ELSE IS IN 047589,000182: 5245 15256 TCF SVCT3X # IMUSTALL. 047590,000183: 5246 15251 TCF +3 047591,000184: 5247 15256 TCF SVCT3X 047592,000185: 5250 15256 TCF SVCT3X 047593,000186: 047594,000187: 5251 37723 +3 CAF PRIO35 # COMPENSATE FOR NBD COEFFICIENTS ONLY. 047595,000188: 5252 05072 TC NOVAC # ENABLE EVERY 81.93 SECONDS 047596,000189: 5253 E3,1460 EBANK= NBDX 047597,000190: 5253 03555 14063 2CADR NBDONLY 047598,000191: 047599,000192: 5255 15261 TCF TASKOVER 047600,000193: 047601,000194: 5256 05221 SVCT3X TC FIXDELAY # DELAY MAX OF 2 TIMES FOR IMUZERO. 047602,000195: 5257 00764 DEC 500 B-14 047603,000196: 5260 05240 TC SVCT3 # CHECK DRIFT FLAG AGAIN. 047604,000197: 047605,000198: # Page 1122 047606,000199: # BEGIN TASK INSERTION. 047607,000200: 047608,000201: 01,3231 BANK 01 047609,000202: 01,3231 COUNT* $$/WAIT 047610,000203: 01,3231 54062 WAIT2 TS WAITBANK # BBANK OF CALLING PROGRAM. 047611,000204: 01,3232 30002 CA Q 047612,000205: 01,3233 00006 EXTEND 047613,000206: 01,3234 63523 BZMF WAITP00H 047614,000207: 047615,000208: 01,3235 40026 CS TIME3 047616,000209: 01,3236 64744 AD BIT8 # BIT 8 = OCT 200 047617,000210: 01,3237 10000 CCS A # TEST 200 - C(TIME3). IF POSITIVE, 047618,000211: # IT MEANS THAT TIME3 OVERFLOW HAS OCCURRED PRIOR TO CS TIME3 AND THAT 047619,000212: # C(TIME3) = T - T1, INSTEAD OF 1.0 - (T1 - T). THE FOLLOWING FOUR 047620,000213: # ORDERS SET C(A) = TD - T1 + 1 IN EITHER CASE. 047621,000214: 047622,000215: 01,3240 66107 AD OCT40001 # OVERFLOW HAS OCCURRED. SET C(A) = 047623,000216: 01,3241 40000 CS A # T - T1 + 1.0 - 201 047624,000217: 047625,000218: # NORMAL CASE (C(A) NNZ) YIELDS SAME C(A): -( -(1.0-(T1-T)) + 200) - 1 047626,000219: 047627,000220: 01,3242 63370 AD OCT40201 047628,000221: 01,3243 60002 AD Q # RESULT = TD - T1 + 1. 047629,000222: 047630,000223: 01,3244 10000 CCS A # TEST TD - T1 + 1. 047631,000224: 047632,000225: 01,3245 61400 AD LST1 # IF TD - T1 POS, GO TO WTLST5 WITH 047633,000226: 01,3246 13310 TCF WTLST5 # C(A) = (TD - T1) + C(LST1) = TD-T2+1 047634,000227: 047635,000228: 01,3247 13250 NOOP 047636,000229: 01,3250 40002 CS Q 047637,000230: 047638,000231: # NOTE THAT THIS PROGRAM SECTION IS NEVER ENTERED WHEN T-T1 G/E -1, 047639,000232: # SINCE TD-T1+1 = (TD-T) + (T-T1+1), AND DELTA T = TD-T G/E +1. (G/E 047640,000233: # SYMBOL MEANS GREATER THAN OR EQUAL TO). THUS THERE NEED BE NO CON- 047641,000234: # CERN OVER A PREVIOUS OR IMMINENT OVEFLOW OF TIME3 HERE. 047642,000235: 047643,000236: 01,3251 64736 AD POS1/2 # WHEN TD IS NEXT, FORM QUANTITY 047644,000237: 01,3252 64736 AD POS1/2 # 1.0 - DELTA T = 1.0 - (TD - T) 047645,000238: 01,3253 56026 XCH TIME3 047646,000239: 01,3254 64735 AD NEGMAX 047647,000240: 01,3255 60002 AD Q # 1.0 - DELTAT T NOW COMPLETE. 047648,000241: 01,3256 00006 EXTEND # ZERO INDEX Q. 047649,000242: 01,3257 22007 QXCH 7 # (ZQ) 047650,000243: 047651,000244: # Page 1123 047652,000245: 01,3260 57400 WTLST4 XCH LST1 047653,000246: 01,3261 57401 XCH LST1 +1 047654,000247: 01,3262 57402 XCH LST1 +2 047655,000248: 01,3263 57403 XCH LST1 +3 047656,000249: 01,3264 57404 XCH LST1 +4 047657,000250: 01,3265 57405 XCH LST1 +5 047658,000251: 01,3266 57406 XCH LST1 +6 047659,000252: 01,3267 57407 XCH LST1 +7 047660,000253: 047661,000254: 01,3270 30063 CA WAITADR # (MINOR PART OF TASK CADR HAS BEEN IN L.) 047662,000255: 01,3271 50002 INDEX Q 047663,000256: 01,3272 13273 TCF +1 047664,000257: 047665,000258: 01,3273 53411 DXCH LST2 047666,000259: 01,3274 53413 DXCH LST2 +2 047667,000260: 01,3275 53415 DXCH LST2 +4 047668,000261: 01,3276 53417 DXCH LST2 +6 047669,000262: 01,3277 53421 DXCH LST2 +8D 047670,000263: 01,3300 53423 DXCH LST2 +10D # AT END, CHECK THAT C(LST2 +10) IS STD 047671,000264: 01,3301 53425 DXCH LST2 +12D 047672,000265: 01,3302 53427 DXCH LST2 +14D 047673,000266: 01,3303 53431 DXCH LST2 +16D 047674,000267: 01,3304 65236 AD ENDTASK # END ITEM, AS CHECK FOR EXCEEDING 047675,000268: # THE LENGTH OF THE LIST. 047676,000269: 01,3305 00006 EXTEND # DUMMY TASK ADRES SHOULD BE IN FIXED- 047677,000270: 01,3306 15215 BZF LVWTLIST # FIXED SO ITS ADRES ALONE DISTINGUISHES 047678,000271: 01,3307 13363 TCF WTABORT # IT. 047679,000272: 047680,000273: # Page 1124 047681,000274: 01,3310 10000 WTLST5 CCS A # TEST TD - T2 + 1 047682,000275: 01,3311 61401 AD LST1 +1 047683,000276: 01,3312 13316 TCF +4 047684,000277: 01,3313 64753 AD ONE 047685,000278: 01,3314 03374 TC WTLST2 047686,000279: 01,3315 00001 OCT 1 047687,000280: 047688,000281: 01,3316 10000 +4 CCS A # TEST TD - T3 + 1 047689,000282: 01,3317 61402 AD LST1 +2 047690,000283: 01,3320 13324 TCF +4 047691,000284: 01,3321 64753 AD ONE 047692,000285: 01,3322 03374 TC WTLST2 047693,000286: 01,3323 00002 OCT 2 047694,000287: 047695,000288: 01,3324 10000 +4 CCS A # TEST TD - T4 + 1 047696,000289: 01,3325 61403 AD LST1 +3 047697,000290: 01,3326 13332 TCF +4 047698,000291: 01,3327 64753 AD ONE 047699,000292: 01,3330 03374 TC WTLST2 047700,000293: 01,3331 00003 OCT 3 047701,000294: 047702,000295: 01,3332 10000 +4 CCS A # TEST TD - T5 + 1 047703,000296: 01,3333 61404 AD LST1 +4 047704,000297: 01,3334 13340 TCF +4 047705,000298: 01,3335 64753 AD ONE 047706,000299: 01,3336 03374 TC WTLST2 047707,000300: 01,3337 00004 OCT 4 047708,000301: 047709,000302: 01,3340 10000 +4 CCS A # TEST TD - T6 + 1 047710,000303: 01,3341 61405 AD LST1 +5 047711,000304: 01,3342 13346 TCF +4 047712,000305: 01,3343 64753 AD ONE 047713,000306: 01,3344 03374 TC WTLST2 047714,000307: 01,3345 00005 OCT 5 047715,000308: 047716,000309: 01,3346 10000 +4 CCS A # TEST TD - T7 + 1 047717,000310: 01,3347 61406 AD LST1 +6 047718,000311: 01,3350 13354 TCF +4 047719,000312: 01,3351 64753 AD ONE 047720,000313: 01,3352 03374 TC WTLST2 047721,000314: 01,3353 00006 OCT 6 047722,000315: 047723,000316: # Page 1125 047724,000317: 01,3354 10000 +4 CCS A # TEST TD - T2 + 1 047725,000318: 01,3355 61407 AD LST1 +7 047726,000319: 01,3356 13362 TCF +4 047727,000320: 01,3357 64753 AD ONE 047728,000321: 01,3360 03374 TC WTLST2 047729,000322: 01,3361 00007 OCT 7 047730,000323: 047731,000324: 01,3362 10000 +4 CCS A 047732,000325: 01,3363 03371 WTABORT TC FILLED 047733,000326: 01,3364 13365 NOOP # CAN'T GET HERE 047734,000327: 01,3365 64753 AD ONE 047735,000328: 01,3366 03374 TC WTLST2 047736,000329: 01,3367 00010 OCT 10 047737,000330: 047738,000331: 01,3370 40201 OCT40201 OCT 40201 047739,000332: 047740,000333: # Page 1126 047741,000334: 01,3371 52062 FILLED DXCH WAITEXIT 047742,000335: 01,3372 05716 TC BAILOUT1 # NO ROOM IN THE INN 047743,000336: 01,3373 01203 OCT 01203 047744,000337: 047745,000338: # Page 1127 047746,000339: # THE ENTRY TC WTLST2 JUST PRECEDING OCT N IS FOR T LE TD LE T -1. 047747,000340: # N N+1 047748,000341: # (LE MEANS LESS THAN OR EQUAL TO). AT ENTRY, C(A) = -(TD - T + 1) 047749,000342: # N+1 047750,000343: # THE LST1 ENTRY -(T -T +1) IS TO BE REPLACED BY -(TD - T + 1), AND 047751,000344: # N+1 N N 047752,000345: # THE ENTRY -(T - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING. 047753,000346: # N+1 047754,000347: 047755,000348: 01,3374 54064 WTLST2 TS WAITTEMP # C(A) = -(TD - T + 1) 047756,000349: 01,3375 50002 INDEX Q 047757,000350: 01,3376 30000 CAF 0 047758,000351: 01,3377 54002 TS Q # INDEX VALUE INTO Q. 047759,000352: 047760,000353: 01,3400 34753 CAF ONE 047761,000354: 01,3401 60064 AD WAITTEMP 047762,000355: 01,3402 50002 INDEX Q # C(A) = -(TD - T ) + 1. 047763,000356: 01,3403 27377 ADS LST1 -1 # N 047764,000357: 047765,000358: 01,3404 40064 CS WAITTEMP 047766,000359: 01,3405 50002 INDEX Q 047767,000360: 01,3406 13260 TCF WTLST4 047768,000361: 047769,000362: # C(TIME3) = 1.0 - (T1 - T) 047770,000363: 047771,000364: # C(LST1) = - (T2 - T1) + 1 047772,000365: # C(LST1+1) = - (T3 - T2) + 1 047773,000366: # C(LST1+2) = - (T4 - T3) + 1 047774,000367: # C(LST1+3) = - (T5 - T4) + 1 047775,000368: # C(LST1+4) = - (T6 - T5) + 1 047776,000369: 047777,000370: # C(LST2) = 2CADR TASK1 047778,000371: # C(LST2+2) = 2CADR TASK2 047779,000372: # C(LST2+4) = 2CADR TASK3 047780,000373: # C(LST2+6) = 2CADR TASK4 047781,000374: # C(LST2+8) = 2CADR TASK5 047782,000375: # C(LST2+10) = 2CADR TASK6 047783,000376: 047784,000377: # Page 1128 047785,000378: # ENTERS HERE ON T3 RUPT TO DISPATCH WAITLISTED TASK. 047786,000379: 047787,000380: 01,3407 00006 T3RUPT EXTEND 047788,000381: 01,3410 04007 ROR SUPERBNK # READ CURRENT SUPERBANK VALUE AND 047789,000382: 01,3411 54016 TS BANKRUPT # SAVE WITH E AND F BANK VALUES. 047790,000383: 01,3412 00006 EXTEND 047791,000384: 01,3413 22012 QXCH QRUPT 047792,000385: 047793,000386: 01,3414 34734 T3RUPT2 CAF NEG1/2 # DISPATCH WAITLIST TASK. 047794,000387: 01,3415 57407 XCH LST1 +7 047795,000388: 01,3416 57406 XCH LST1 +6 047796,000389: 01,3417 57405 XCH LST1 +5 047797,000390: 01,3420 57404 XCH LST1 +4 # 1. MOVE UP LST1 CONTENTS, ENTERING 047798,000391: 01,3421 57403 XCH LST1 +3 # A VALUE OF 1/2 +1 AT THE BOTTOM 047799,000392: 01,3422 57402 XCH LST1 +2 # FOR T6-T5, CORRESPONDING TO THE 047800,000393: 01,3423 57401 XCH LST1 +1 # INTERVAL 81.91 SEC FOR ENDTASK. 047801,000394: 01,3424 57400 XCH LST1 047802,000395: 01,3425 64733 AD POSMAX # 2. SET T3 = 1.0 - T2 - T USING LIST 1. 047803,000396: 01,3426 26026 ADS TIME3 # SO T3 WON'T TICK DURING UPDATE. 047804,000397: 01,3427 54734 TS RUPTAGN 047805,000398: 01,3430 44755 CS ZERO 047806,000399: 01,3431 54734 TS RUPTAGN # SETS RUPTAGN TO +1 ON OVERFLOW. 047807,000400: 047808,000401: 01,3432 00006 EXTEND # DISPATCH TASK. 047809,000402: 01,3433 45237 DCS ENDTASK 047810,000403: 01,3434 53431 DXCH LST2 +16D 047811,000404: 01,3435 53427 DXCH LST2 +14D 047812,000405: 01,3436 53425 DXCH LST2 +12D 047813,000406: 01,3437 53423 DXCH LST2 +10D 047814,000407: 01,3440 53421 DXCH LST2 +8D 047815,000408: 01,3441 53417 DXCH LST2 +6 047816,000409: 01,3442 53415 DXCH LST2 +4 047817,000410: 01,3443 53413 DXCH LST2 +2 047818,000411: 01,3444 53411 DXCH LST2 047819,000412: 047820,000413: 01,3445 56001 XCH L 047821,000414: 01,3446 00006 EXTEND 047822,000415: 01,3447 01007 WRITE SUPERBNK # SET SUPERBANK FROM BBCON OF 2CADR 047823,000416: 01,3450 56001 XCH L # RESTORE TO L FOR DXCH Z. 047824,000417: 01,3451 52006 DTCB 047825,000418: 047826,000419: # Page 1129 047827,000420: # RETURN, AFTER EXECUTION OF T3 OVERFLOW TASK: 047828,000421: 047829,000422: 5261 BLOCK 02 047830,000423: 5261 COUNT* $$/WAIT 047831,000424: 5261 10734 TASKOVER CCS RUPTAGN # IF +1 RETURN TO T3RUPT, IF -0 RESUME. 047832,000425: 5262 35220 CAF WAITBB 047833,000426: 5263 54006 TS BBANK 047834,000427: 5264 13414 TCF T3RUPT2 # DISPATCH NEXT TASK IF IT WAS DUE. 047835,000428: 047836,000429: 5265 30016 CA BANKRUPT 047837,000430: 5266 00006 EXTEND 047838,000431: 5267 01007 WRITE SUPERBNK # RESTORE SUPERBANK BEFORE RESUME IS DONE 047839,000432: 047840,000433: 5270 00006 RESUME EXTEND 047841,000434: 5271 22012 QXCH QRUPT 047842,000435: 5272 30016 NOQRSM CA BANKRUPT 047843,000436: 5273 56006 XCH BBANK 047844,000437: 5274 52011 NOQBRSM DXCH ARUPT 047845,000438: 5275 00003 RELINT 047846,000439: 5276 50017 RESUME 047847,000440: 047848,000441: # Page 1130 047849,000442: # LONGCALL 047850,000443: # PROGRAM DESCRIPTION DATE -- 17 MARCH 1967 047851,000444: # PROGRAM WRITTEN BY W.H.VANDEVER LOG SECTION WAITLIST 047852,000445: # MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 100 047853,000446: 047854,000447: # FUNCTIONAL DESCRIPTION -- 047855,000448: # LONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK 047856,000449: # IMMEDIATELY FOLLOWING THE TC LONGCALL. FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF 047857,000450: # A DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO 047858,000451: # START. 047859,000452: # CALLING SEQUENCE -- 047860,000453: # EXTEND 047861,000454: # DCA TIMELOC 047862,000455: # TC LONGCALL 047863,000456: # 2CADR TASKTODO 047864,000457: # NORMAL EXIT MODE -- 047865,000458: # 1) TC WAITLIST 047866,000459: # 2) DTCB (TC L+3 OF CALLING ROUTINE 1ST PASS THRU LONGCYCL) 047867,000460: # 3) DTCB (TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL) 047868,000461: # ALARM OR ABORT EXIT MODE -- 047869,000462: # NONE 047870,000463: # OUTPUT -- 047871,000464: # LONGTIME AND LONGTIME+1 = DELTA TIME 047872,000465: # LONGEXIT AND LONGEXIT+1 = RETURN 2CADR 047873,000466: # LONGCADR AND LONGCADR+1 = TASK 2CADR 047874,000467: # A = SINGLE PRECISION TIME FOR WAITLIST 047875,000468: # ERASABLE INITIALIZATION -- 047876,000469: # A = MOST SIGNIFICANT PART OF DELTA TIME 047877,000470: # L = LEAST SIGNIFICANT PART OF DELTA TIME 047878,000471: # Q = ADDRESS OF 2CADR TASK VALUE 047879,000472: # DEBRIS -- 047880,000473: # A,Q,L 047881,000474: # LONGCADR AND LONGCADR+1 047882,000475: # LONGEXIT AND LONGEXIT+1 047883,000476: # LONGTIME AND LONGTIME+1 047884,000477: # *** THE FOLLOWING IS TO BE IN FIXED-FIXED AND UNSWITCHED ERASIBLE ** 047885,000478: 047886,000479: 5277 BLOCK 02 047887,000480: 5277 E3,1400 EBANK= LST1 047888,000481: 5277 53154 LONGCALL DXCH LONGTIME # OBTAIN THE DELTA TIME 047889,000482: 047890,000483: 5300 00006 EXTEND # OBTAIN THE 2CADR 047891,000484: # Page 1131 047892,000485: 5301 50002 NDX Q 047893,000486: 5302 30001 DCA 0 047894,000487: 5303 53150 DXCH LONGCADR 047895,000488: 047896,000489: 5304 00006 EXTEND # NOW GO TO THE APPROPRIATE SWITCHED BANK 047897,000490: 5305 35310 DCA LGCL2CDR # FOR THE REST OF LONGCALL 047898,000491: 5306 52006 DTCB 047899,000492: 047900,000493: 5307 E3,1400 EBANK= LST1 047901,000494: 5307 03452 02063 LGCL2CDR 2CADR LNGCALL2 047902,000495: 047903,000496: # *** THE FOLLOWING MAY BE IN A SWITCHED BANK, INCLUDING ITS ERASABLE *** 047904,000497: 047905,000498: 01,3452 BANK 01 047906,000499: 01,3452 COUNT* $$/WAIT 047907,000500: 01,3452 23435 LNGCALL2 LXCH LONGEXIT +1 # SAVE THE CORRECT BB FOR RETURN 047908,000501: 01,3453 34752 CA TWO # OBTAIN THE RETURN ADDRESS 047909,000502: 01,3454 26002 ADS Q 047910,000503: 01,3455 55434 TS LONGEXIT 047911,000504: 047912,000505: 01,3456 31153 CA LONGTIME # CHECK FOR LEGITIMATE DELTA-TIME 047913,000506: 01,3457 10000 CCS A 047914,000507: 01,3460 13466 TCF LONGCYCL # HI-ORDER OK --> ALL IS OK. 047915,000508: 01,3461 13463 TCF +2 # HI-ORDER ZERO --> CHECK LO-ORDER. 047916,000509: 01,3462 13521 TCF LONGP00H # HI-ORDER NEG. --> NEG. DT 047917,000510: 01,3463 31154 +2 CA LONGTIME +1 # CHECK LO-ORDER FOR ZERO OR NEGATIVE. 047918,000511: 01,3464 00006 EXTEND 047919,000512: 01,3465 63521 BZMF LONGP00H # BAD DELTA-TIME. ABORT 047920,000513: 047921,000514: # *** WAITLIST TASK LONGCYCL *** 047922,000515: 047923,000516: 01,3466 00006 LONGCYCL EXTEND # CAN WE SUCCESFULLY TAKE ABOUT 1.25 047924,000517: 01,3467 43500 DCS DPBIT14 # MINUTES OFF OF LONGTIME 047925,000518: 01,3470 21154 DAS LONGTIME 047926,000519: 047927,000520: 01,3471 11154 CCS LONGTIME +1 # THE REASONING BEHIND THIS PART IS 047928,000521: 01,3472 13511 TCF MUCHTIME # INVOLVED, TAKING INTO ACCOUNT THAT THE 047929,000522: # WORDS MAY NOT BE SIGNED CORRECTED (DP 047930,000523: # BASIC INSTRUCTIONS 047931,000524: # DO NOT SIGN CORRECT) AND THAT WE SUBTRAC- 047932,000525: # TED BIT14 (1 OVER HALF THE POS. VALUE 047933,000526: # REPRESENTABLE IN SINGLE WORD) 047934,000527: 01,3473 13474 NOOP # CAN'T GET HERE ************* 047935,000528: 01,3474 13475 TCF +1 047936,000529: 01,3475 11153 CCS LONGTIME 047937,000530: 01,3476 13511 TCF MUCHTIME 047938,000531: 01,3477 00000 DPBIT14 OCT 00000 047939,000532: 01,3500 20000 OCT 20000 047940,000533: 047941,000534: # LONGCALL 047942,000535: # Page 1132 047943,000536: 01,3501 34736 LASTTIME CA BIT14 # GET BACK THE CORRECT DELTA T FOR WAITLIST 047944,000537: 01,3502 27154 ADS LONGTIME +1 047945,000538: 01,3503 05203 TC WAITLIST 047946,000539: 01,3504 E3,1400 EBANK= LST1 047947,000540: 01,3504 03516 02063 2CADR GETCADR # THE ENTRY TO OUR LONGCADR 047948,000541: 047949,000542: 01,3506 33520 LONGRTRN CA TSKOVCDR # SET IT UP SO THAT ONLY THE FIRST EXIT IS 047950,000543: 01,3507 53435 DXCH LONGEXIT # TO THE CALLER OF LONGCALL 047951,000544: 01,3510 52006 DTCB # THE REST ARE TO TASKOVER 047952,000545: 047953,000546: 01,3511 34736 MUCHTIME CA BIT14 # WE HAVE OVER OUR ABOUT 1.25 MINUTES 047954,000547: 01,3512 05203 TC WAITLIST # SO SET UP FOR ANOTHER CYCLE THROUGH HERE 047955,000548: 01,3513 E3,1400 EBANK= LST1 047956,000549: 01,3513 03466 02063 2CADR LONGCYCL 047957,000550: 047958,000551: 01,3515 13506 TCF LONGRTRN # NOW EXIT PROPERLY 047959,000552: 047960,000553: # *** WAITLIST TASK GETCADR *** 047961,000554: 047962,000555: 01,3516 53150 GETCADR DXCH LONGCADR # GET THE LONGCALL THAT WE WISHED TO START 047963,000556: 01,3517 52006 DTCB # AND TRANSFER CONTROL TO IT 047964,000557: 047965,000558: 01,3520 05261 TSKOVCDR GENADR TASKOVER 047966,000559: 01,3521 53435 LONGP00H DXCH LONGEXIT 047967,000560: 01,3522 13524 TCF +2 047968,000561: 01,3523 52062 WAITP00H DXCH WAITEXIT 047969,000562: 01,3524 05726 +2 TC P00DOO1 047970,000563: 01,3525 01204 OCT 01204 047971,000564: End of include-file WAITLIST.agc. Parent file is MAIN.agc