Source Code

051512,000001: # Copyright: Public domain. 051513,000002: # Filename: WAITLIST.agc 051514,000003: # Purpose: Part of the source code for Colossus, build 249. 051515,000004: # It is part of the source code for the Command Module's (CM) 051516,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9. 051517,000006: # Assembler: yaYUL 051518,000007: # Reference: Begins on p. 1203 of 1701.pdf. 051519,000008: # Contact: Ron Burkey <info@sandroid.org>. 051520,000009: # Website: www.ibiblio.org/apollo/index.html 051521,000010: # Mod history: 08/28/04 RSB Began adapting from similar Luminary131 file. 051522,000011: # 05/14/05 RSB Corrected website reference above. 051523,000012: # 2010-10-24 JL Indentation fixes. 051524,000013: # 2011-05-07 JL Remove workarounds. 051525,000014: 051526,000015: # The contents of the "Colossus249" files, in general, are transcribed 051527,000016: # from a scanned document obtained from MIT's website, 051528,000017: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this 051529,000018: # document read, in part: 051530,000019: 051531,000020: # Assemble revision 249 of AGC program Colossus by NASA 051532,000021: # 2021111-041. October 28, 1968. 051533,000022: 051534,000023: # This AGC program shall also be referred to as 051535,000024: # Colossus 1A 051536,000025: 051537,000026: # Prepared by 051538,000027: # Massachusetts Institute of Technology 051539,000028: # 75 Cambridge Parkway 051540,000029: # Cambridge, Massachusetts 051541,000030: # under NASA contract NAS 9-4065. 051542,000031: 051543,000032: # Refer directly to the online document mentioned above for further information. 051544,000033: # Please report any errors (relative to 1701.pdf) to info@sandroid.org. 051545,000034: 051546,000035: # In some cases, where the source code for Luminary 131 overlaps that of 051547,000036: # Colossus 249, this code is instead copied from the corresponding Luminary 131 051548,000037: # source file, and then is proofed to incorporate any changes. 051549,000038: 051550,000039: # Page 1203 051551,000040: # PROGRAM DESCRIPTION DATE -- 10 OCTOBER 1966 051552,000041: # MOD NO -- 2 LOG SECTION -- WAITLIST 051553,000042: # MOD BY -- MILLER (DTMAX INCREASED TO 162.5 SEC) ASSEMBLY -- SUNBURST REV 5 051554,000043: # MOD 3 BY KERNAN (INHINT INSERTED AT WAITLIST) 2/28/68 SKIPPER REV 4 051555,000044: # MOD 4 BY KERNAN (TWIDDLE IN 54) 3/28/68 SKIPPER REV 13. 051556,000045: 051557,000046: # FUNCTIONAL DESCRIPTION -- 051558,000047: # PART OF A SECTION OF PROGRAMS -- WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM (CALLED A TASK), 051559,000048: # WHICH IS TO BEGIN IN C(A) CENTISECONDS. WAITLIST UPDATES TIME3, LST1, AND LST2. THE MEANING OF THESE LISTS 051560,000049: # FOLLOW. 051561,000050: 051562,000051: # ((TIME3) = 16384 -(T1-T) CENTISECONDS, (T=PRESENT TIME, T1-TIME FOR TASK1) 051563,000052: 051564,000053: # C(LST1) = -(T2-T1)+1 051565,000054: # C(LST1 +1) = -(T3-T2)+1 051566,000055: # C(LST1 +2) = -(T4-T3)+1 051567,000056: # ... 051568,000057: # C(LST1 +6) = -(T8-T7)+1 051569,000058: # C(LST1 +7) = -(T9-T8)+1 051570,000059: 051571,000060: # C(LST2) = 2CADR OF TASK1 051572,000061: # C(LST2 +2) = 2CADR OF TASK2 051573,000062: # ... 051574,000063: # C(LST2 +14) = 2CADR OF TASK8 051575,000064: # C(LST2 +16) = 2CADR OF TASK9 051576,000065: 051577,000066: # WARNINGS -- 051578,000067: # 1) 1 <= C(A) <= 16250D (1 CENTISCOND TO 162.5 SEC) 051579,000068: # 2) 9 TASKS MAXIMUM 051580,000069: # 3) TASKS CALLED UNDER INTERRUPT INHIBITED 051581,000070: # 4) TASKS END BY TC TASKOVER 051582,000071: 051583,000072: # CALLING SEQUENCE -- 051584,000073: # L-1 CA DELTAT (TIME IN CENTISECONDS TO TASK START) 051585,000074: # L TC WAITLIST 051586,000075: # L+1 2CADR DESIRED TASK. 051587,000076: # L+2 (MINOR OF 2CADR) 051588,000077: # L+3 RELINT (RETURNS HERE) 051589,000078: 051590,000079: # TWIDDLE -- 051591,000080: # TWIDDLE IS FOR USE WHEN THE TASK BEING SET UP IS IN THE SAME EBANK AND FBANK AS THE USER. IN 051592,000081: # SUCH CASES, IT IMPROVES UPON WAITLIST BY ELIMINATING THE NEED FOR THE BBCON HALF OF THE 2CADR, 051593,000082: # Page 1204 051594,000083: # SAVING A WORD. TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT, 051595,000084: # L-1 CA DELTAT 051596,000085: # L TC TWIDDLE 051597,000086: # L+1 ADRES DESIRED TASK 051598,000087: # L+2 RELINT (RETURNS HERE) 051599,000088: 051600,000089: # NORMAL EXIT MODES -- 051601,000090: # AT L+3 OF CALLING SEQUENCE. 051602,000091: 051603,000092: # ALARM OR ABORT EXIT MODES -- 051604,000093: # TC ABORT 051605,000094: # OCT 1203 (WAITLIST OVERFLOW -- TOO MANY TASKS) 051606,000095: 051607,000096: # ERASABLE INITIALIZATION REQUIRED -- 051608,000097: # ACCOMPLISHED BY FRESH START -- LST2, ..., LST2 +16 = ENDTASK 051609,000098: # LST1, ..., LST1 +7 = NEG1/2 051610,000099: 051611,000100: # OUTPUT -- 051612,000101: # LST1 AND LST2 UPDATED WTIH NEW TASK AND ASSOCIATED TIME. 051613,000102: 051614,000103: # DEBRIS -- 051615,000104: # CENTRALS -- A,Q,L 051616,000105: # OTHER -- WAITEXIT, WAITADR, WAITTEMP, WAITBANK 051617,000106: 051618,000107: # DETAILED ANALYSIS OF TIMING -- 051619,000108: # CONTROL WILL NOT BE RETURNED TO THE SPECIFIED ADDRESS (2CADR) IN EXACTLY DELTA T CENTISECONDS. 051620,000109: # THE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS: 051621,000110: # LET T0 = THE TIME OF THE TC WAITLIST 051622,000111: # LET TS = T0 +147U + COUNTER INCREMENTS (SET UP TIME) 051623,000112: # LET X = TS -(100TS)/100 (VARIANCE FROM COUNTERS) 051624,000113: # LET Y = LENGTH OF TIME OF INHIBIT INTERRUPT AFTER T3RUPT 051625,000114: # LET Z = LENGTH OF TIME TO PROCESS TASKS WHICH ARE DUE THIS T3RUPT BUT DISPATCHED EARLIER. 051626,000115: # (Z=0, USUALLY). 051627,000116: # LET DELTD = THE ACTUAL TIME TAKEN TO GIVE CONTROL TO 2CADR 051628,000117: # THEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS* 051629,000118: # *THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME. 051630,000119: # IN SHORT, THE ACTUAL TIME TO RETURN CONTROL TO A 2CADR IS AUGMENTED BY THE TIME TO SET UP THE TASK'S 051631,000120: # INTERRUPT, ALL COUNTERS TICKING, THE T3RUPT PROCESSING TIME, THE WAITLIST PROCESSING TIME AND THE POSSIBILITY 051632,000121: # OF OTHER TASKS INHIBITING THE INTERRUPT. 051633,000122: 051634,000123: 5130 BLOCK 02 051635,000124: # Page 1205 051636,000125: 5130 E3,1400 EBANK= LST1 # TASK LISTS IN SWITCHED E BANK. 051637,000126: 051638,000127: 5130 COUNT 02/WAIT 051639,000128: 051640,000129: 5130 00004 TWIDDLE INHINT 051641,000130: 5131 54001 TS L # SAVE DELAY TIME IN L 051642,000131: 5132 34672 CA POSMAX 051643,000132: 5133 26002 ADS Q # CREATING OVERFLOW AND Q-1 IN Q 051644,000133: 5134 30006 CA BBANK 051645,000134: 5135 00006 EXTEND 051646,000135: 5136 04007 ROR SUPERBNK 051647,000136: 5137 56001 XCH L 051648,000137: 051649,000138: 5140 00004 WAITLIST INHINT 051650,000139: 5141 56002 XCH Q # SAVE DELTA T IN Q AND RETURN IN 051651,000140: 5142 54061 TS WAITEXIT # WAITEXIT. 051652,000141: 5143 00006 EXTEND 051653,000142: 5144 50061 INDEX WAITEXIT # IF TWIDDLING, THE TS SKIPS TO HERE 051654,000143: 5145 30001 DCA 0 # PICK UP 2CADR OF TASK. 051655,000144: 5146 54063 -1 TS WAITADR # BBCON WILL REMAIN IN L 051656,000145: 5147 35155 DLY2 CAF WAITBB # ENTRY FROM FIXDELAY AND VARDELAY. 051657,000146: 5150 56006 XCH BBANK 051658,000147: 5151 13246 TCF WAIT2 051659,000148: 051660,000149: # RETURN TO CALLER AFTER TASK INSERTION: 051661,000150: 051662,000151: 5152 52062 LVWTLIST DXCH WAITEXIT 051663,000152: 5153 64711 AD TWO 051664,000153: 5154 52006 DTCB 051665,000154: 051666,000155: 5155 E3,1400 EBANK= LST1 051667,000156: 5155 02063 WAITBB BBCON WAIT2 051668,000157: 051669,000158: # RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1. 051670,000159: 051671,000160: 5156 50002 FIXDELAY INDEX Q # BOTH ROUTINES MUST BE CALLED UNDER 051672,000161: 5157 30000 CAF 0 # WAITLIST CONTROL AND TERMINATE THE TASK 051673,000162: 5160 24002 INCR Q # IN WHICH THEY WERE CALLED. 051674,000163: 051675,000164: # RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A. 051676,000165: 051677,000166: 5161 56002 VARDELAY XCH Q # DT TO Q. TASK ADRES TO WAITADR. 051678,000167: 5162 54063 TS WAITADR 051679,000168: 5163 30006 CA BBANK # BBANK IS SAVED DURING DELAY. 051680,000169: 5164 00006 EXTEND 051681,000170: 5165 04007 ROR SUPERBNK # ADD SBANK TO BBCON. 051682,000171: 5166 54001 TS L 051683,000172: 5167 35172 CAF DELAYEX 051684,000173: 5170 54061 TS WAITEXIT # GO TO TASKOVER AFTER TASK ENTRY. 051685,000174: 5171 15147 TCF DLY2 051686,000175: 051687,000176: # Page 1206 051688,000177: 5172 15211 DELAYEX TCF TASKOVER -2 # RETURNS TO TASKOVER. 051689,000178: 051690,000179: # Page 1207 051691,000180: # ENDTASK MUST ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE. 051692,000181: 051693,000182: 5173 E3,1400 EBANK= LST1 051694,000183: 5173 72602 73714 ENDTASK -2CADR SVCT3 051695,000184: 051696,000185: 5175 10076 SVCT3 CCS FLAGWRD2 # DRIFT FLAG 051697,000186: 5176 15213 TCF TASKOVER 051698,000187: 5177 15213 TCF TASKOVER 051699,000188: 5200 15201 TCF +1 051700,000189: 051701,000190: 5201 11322 CCS IMUCADR # DON'T DO NBDONLY IF SOMEONE ELSE IS IN 051702,000191: 5202 15213 TCF TASKOVER # IMUSTALL. 051703,000192: 5203 15206 TCF +3 051704,000193: 5204 15213 TCF TASKOVER 051705,000194: 5205 15213 TCF TASKOVER 051706,000195: 051707,000196: 5206 37672 +3 CAF PRIO35 # COMPENSATE FOR NBD COEFFICIENTS ONLY. 051708,000197: 5207 05027 TC NOVAC # ENABLE EVERY 81.93 SECONDS 051709,000198: 5210 E3,1460 EBANK= NBDX 051710,000199: 5210 03542 14063 2CADR NBDONLY 051711,000200: 051712,000201: 5212 15213 TCF TASKOVER 051713,000202: 051714,000203: # Page 1208 051715,000204: # BEGIN TASK INSERTION. 051716,000205: 051717,000206: 01,3246 BANK 01 051718,000207: 01,3246 COUNT 01/WAIT 051719,000208: 051720,000209: 01,3246 54062 WAIT2 TS WAITBANK # BBANK OF CALLING PROGRAM. 051721,000210: 01,3247 40026 CS TIME3 051722,000211: 01,3250 64703 AD BIT8 # BIT 8 = OCT 200 051723,000212: 01,3251 10000 CCS A # TEST 200 - C(TIME3). IF POSITIVE, 051724,000213: # IT MEANS THAT TIME3 OVERFLOW HAS OCCURRED PRIOR TO CS TIME3 AND THAT 051725,000214: # C(TIME3) = T - T1, INSTEAD OF 1.0 - (T1 - T). THE FOLLOWING FOUR 051726,000215: # ORDERS SET C(A) = TD - T1 + 1 IN EITHER CASE. 051727,000216: 051728,000217: 01,3252 66056 AD OCT40001 # OVERFLOW HAS OCCURRED. SET C(A) = 051729,000218: 01,3253 40000 CS A # T - T1 + 1.0 - 201 051730,000219: 051731,000220: # NORMAL CASE (C(A) NNZ) YIELDS SAME C(A): -( -(1.0-(T1-T)) + 200) - 1 051732,000221: 051733,000222: 01,3254 63402 AD OCT40201 051734,000223: 01,3255 60002 AD Q # RESULT = TD - T1 + 1. 051735,000224: 051736,000225: 01,3256 10000 CCS A # TEST TD - T1 +1. 051737,000226: 051738,000227: 01,3257 61400 AD LST1 # IF TD - T1 POS, GO TO WTLST5 WITH 051739,000228: 01,3260 13322 TCF WTLST5 # C(A) = (TD - T1) + C(LST1) = TD-T2+1 051740,000229: 051741,000230: 01,3261 13262 NOOP 051742,000231: 01,3262 40002 CS Q 051743,000232: 051744,000233: # NOTE THAT THIS PROGRAM SECTION IS NEVER ENTERED WHEN T-T1 G/E -1, 051745,000234: # SINCE TD-T1+1 = (TD-T) + (T-T1+1), AND DELTA T = TD-T G/E +1. (G/E 051746,000235: # SYMBOL MEANS GREATER THAN OR EQUAL TO). THUS THERE NEED BE NO CON- 051747,000236: # CERN OVER A PREVIOUS OR IMMINENT OVEFLOW OF TIME3 HERE. 051748,000237: 051749,000238: 01,3263 64675 AD POS1/2 # WHEN TD IS NEXT, FORM QUANTITY 051750,000239: 01,3264 64675 AD POS1/2 # 1.0 - DELTA T = 1.0 - (TD - T) 051751,000240: 01,3265 56026 XCH TIME3 051752,000241: 01,3266 64674 AD NEGMAX 051753,000242: 01,3267 60002 AD Q # 1.0 - DELTAT T NOW COMPLETE. 051754,000243: 01,3270 00006 EXTEND # ZERO INDEX Q. 051755,000244: 01,3271 22007 QXCH 7 # (ZQ) 051756,000245: 051757,000246: # Page 1209 051758,000247: 01,3272 57400 WTLST4 XCH LST1 051759,000248: 01,3273 57401 XCH LST1 +1 051760,000249: 01,3274 57402 XCH LST1 +2 051761,000250: 01,3275 57403 XCH LST1 +3 051762,000251: 01,3276 57404 XCH LST1 +4 051763,000252: 01,3277 57405 XCH LST1 +5 051764,000253: 01,3300 57406 XCH LST1 +6 051765,000254: 01,3301 57407 XCH LST1 +7 051766,000255: 051767,000256: 01,3302 30063 CA WAITADR # (MINOR PART OF TASK CADR HAS BEEN IN L.) 051768,000257: 01,3303 50002 INDEX Q 051769,000258: 01,3304 13305 TCF +1 051770,000259: 051771,000260: 01,3305 53411 DXCH LST2 051772,000261: 01,3306 53413 DXCH LST2 +2 051773,000262: 01,3307 53415 DXCH LST2 +4 051774,000263: 01,3310 53417 DXCH LST2 +6 051775,000264: 01,3311 53421 DXCH LST2 +8D 051776,000265: 01,3312 53423 DXCH LST2 +10D # AT END, CHECK THAT C(LST2 +10) IS STD 051777,000266: 01,3313 53425 DXCH LST2 +12D 051778,000267: 01,3314 53427 DXCH LST2 +14D 051779,000268: 01,3315 53431 DXCH LST2 +16D 051780,000269: 01,3316 65173 AD ENDTASK # END ITEM, AS CHECK FOR EXCEEDING 051781,000270: # THE LENGTH OF THE LIST. 051782,000271: 01,3317 00006 EXTEND # DUMMY TASK ADRES SHOULD BE IN FIXED- 051783,000272: 01,3320 15152 BZF LVWTLIST # FIXED SO ITS ADRES ALONE DISTINGUISHES 051784,000273: 01,3321 13375 TCF WTABORT # IT. 051785,000274: 051786,000275: # Page 1210 051787,000276: 01,3322 10000 WTLST5 CCS A # TEST TD - T2 + 1 051788,000277: 01,3323 61401 AD LST1 +1 051789,000278: 01,3324 13330 TCF +4 051790,000279: 01,3325 64712 AD ONE 051791,000280: 01,3326 03403 TC WTLST2 051792,000281: 01,3327 00001 OCT 1 051793,000282: 051794,000283: 01,3330 10000 +4 CCS A # TEST TD - T3 + 1 051795,000284: 01,3331 61402 AD LST1 +2 051796,000285: 01,3332 13336 TCF +4 051797,000286: 01,3333 64712 AD ONE 051798,000287: 01,3334 03403 TC WTLST2 051799,000288: 01,3335 00002 OCT 2 051800,000289: 051801,000290: 01,3336 10000 +4 CCS A # TEST TD - T4 + 1 051802,000291: 01,3337 61403 AD LST1 +3 051803,000292: 01,3340 13344 TCF +4 051804,000293: 01,3341 64712 AD ONE 051805,000294: 01,3342 03403 TC WTLST2 051806,000295: 01,3343 00003 OCT 3 051807,000296: 051808,000297: 01,3344 10000 +4 CCS A # TEST TD - T5 + 1 051809,000298: 01,3345 61404 AD LST1 +4 051810,000299: 01,3346 13352 TCF +4 051811,000300: 01,3347 64712 AD ONE 051812,000301: 01,3350 03403 TC WTLST2 051813,000302: 01,3351 00004 OCT 4 051814,000303: 051815,000304: 01,3352 10000 +4 CCS A # TEST TD - T6 + 1 051816,000305: 01,3353 61405 AD LST1 +5 051817,000306: 01,3354 13360 TCF +4 051818,000307: 01,3355 64712 AD ONE 051819,000308: 01,3356 03403 TC WTLST2 051820,000309: 01,3357 00005 OCT 5 051821,000310: 051822,000311: 01,3360 10000 +4 CCS A # TEST TD - T7 + 1 051823,000312: 01,3361 61406 AD LST1 +6 051824,000313: 01,3362 13366 TCF +4 051825,000314: 01,3363 64712 AD ONE 051826,000315: 01,3364 03403 TC WTLST2 051827,000316: 01,3365 00006 OCT 6 051828,000317: 051829,000318: # Page 1211 051830,000319: 01,3366 10000 +4 CCS A 051831,000320: 01,3367 61407 AD LST1 +7 051832,000321: 01,3370 13374 TCF +4 051833,000322: 01,3371 64712 AD ONE 051834,000323: 01,3372 03403 TC WTLST2 051835,000324: 01,3373 00007 OCT 7 051836,000325: 051837,000326: 01,3374 10000 +4 CCS A 051838,000327: 01,3375 05604 WTABORT TC BAILOUT # NO ROOM IN THE INN 051839,000328: 01,3376 01203 OCT 1203 051840,000329: 051841,000330: 01,3377 64712 AD ONE 051842,000331: 01,3400 03403 TC WTLST2 051843,000332: 01,3401 00010 OCT 10 051844,000333: 051845,000334: 01,3402 40201 OCT40201 OCT 40201 051846,000335: 051847,000336: # Page 1212 051848,000337: # THE ENTRY TC WTLST2 JUST PRECEDING OCT N IS FOR T LE TD LE T -1. 051849,000338: # N N+1 051850,000339: # (LE MEANS LESS THAN OR EQUAL TO). AT ENTRY, C(A) = -(TD - T + 1) 051851,000340: # N+1 051852,000341: # THE LST1 ENTRY-(T -T +1) IS TO BE REPLACED BY -(TD - T + 1), AND 051853,000342: # N+1 N N 051854,000343: # THE ENTRY-(T - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING. 051855,000344: # N+1 051856,000345: 051857,000346: 01,3403 54064 WTLST2 TS WAITTEMP # C(A) = -(TD - T + 1) 051858,000347: 01,3404 50002 INDEX Q 051859,000348: 01,3405 30000 CAF 0 051860,000349: 01,3406 54002 TS Q # INDEX VALUE INTO Q. 051861,000350: 051862,000351: 01,3407 34712 CAF ONE 051863,000352: 01,3410 60064 AD WAITTEMP 051864,000353: 01,3411 50002 INDEX Q # C(A) = -(TD - T ) + 1. 051865,000354: 01,3412 27377 ADS LST1 -1 # N 051866,000355: 051867,000356: 01,3413 40064 CS WAITTEMP 051868,000357: 01,3414 50002 INDEX Q 051869,000358: 01,3415 13272 TCF WTLST4 051870,000359: 051871,000360: # C(TIME3) = 1.0 - (T1 - T) 051872,000361: 051873,000362: # C(LST1) = - (T2 - T1) + 1 051874,000363: # C(LST1+1) = - (T3 - T2) + 1 051875,000364: # C(LST1+2) = - (T4 - T3) + 1 051876,000365: # C(LST1+3) = - (T5 - T4) + 1 051877,000366: # C(LST1+4) = - (T6 - T5) + 1 051878,000367: 051879,000368: # C(LST2) = 2CADR TASK1 051880,000369: # C(LST2+2) = 2CADR TASK2 051881,000370: # C(LST2+4) = 2CADR TASK3 051882,000371: # C(LST2+6) = 2CADR TASK4 051883,000372: # C(LST2+8) = 2CADR TASK5 051884,000373: # C(LST2+10) = 2CADR TASK6 051885,000374: 051886,000375: # Page 1213 051887,000376: # ENTERS HERE ON T3 RUPT TO DISPATCH WAITLISTED TASK. 051888,000377: 051889,000378: 01,3416 00006 T3RUPT EXTEND 051890,000379: 01,3417 04007 ROR SUPERBNK # READ CURRENT SUPERBANK VALUE AND 051891,000380: 01,3420 54016 TS BANKRUPT # SAVE WITH E AND F BANK VALUES. 051892,000381: 01,3421 00006 EXTEND 051893,000382: 01,3422 22012 QXCH QRUPT 051894,000383: 051895,000384: 01,3423 34673 T3RUPT2 CAF NEG1/2 # DISPATCH WAITLIST TASK. 051896,000385: 01,3424 57407 XCH LST1 +7 051897,000386: 01,3425 57406 XCH LST1 +6 051898,000387: 01,3426 57405 XCH LST1 +5 051899,000388: 01,3427 57404 XCH LST1 +4 # 1. MOVE UP LST1 CONTENTS, ENTERING 051900,000389: 01,3430 57403 XCH LST1 +3 # A VALUE OF 1/2 +1 AT THE BOTTOM 051901,000390: 01,3431 57402 XCH LST1 +2 # FOR T6-T5, CORRESPONDING TO THE 051902,000391: 01,3432 57401 XCH LST1 +1 # INTERVAL 81.91 SEC FOR ENDTASK. 051903,000392: 01,3433 57400 XCH LST1 051904,000393: 01,3434 64672 AD POSMAX # 2. SET T3 = 1.0 - T2 - T USING LIST 1. 051905,000394: 01,3435 26026 ADS TIME3 # SO T3 WON'T TICK DURING UPDATE. 051906,000395: 01,3436 54734 TS RUPTAGN 051907,000396: 01,3437 44714 CS ZERO 051908,000397: 01,3440 54734 TS RUPTAGN # SETS RUPTAGN TO +1 ON OVERFLOW. 051909,000398: 051910,000399: 01,3441 00006 EXTEND # DISPATCH TASK. 051911,000400: 01,3442 45174 DCS ENDTASK 051912,000401: 01,3443 53431 DXCH LST2 +16D 051913,000402: 01,3444 53427 DXCH LST2 +14D 051914,000403: 01,3445 53425 DXCH LST2 +12D 051915,000404: 01,3446 53423 DXCH LST2 +10D 051916,000405: 01,3447 53421 DXCH LST2 +8D 051917,000406: 01,3450 53417 DXCH LST2 +6 051918,000407: 01,3451 53415 DXCH LST2 +4 051919,000408: 01,3452 53413 DXCH LST2 +2 051920,000409: 01,3453 53411 DXCH LST2 051921,000410: 051922,000411: 01,3454 56001 XCH L 051923,000412: 01,3455 00006 EXTEND 051924,000413: 01,3456 01007 WRITE SUPERBNK # SET SUPERBANK FROM BBCON OF 2CADR 051925,000414: 01,3457 56001 XCH L # RESTORE TO L FOR DXCH Z. 051926,000415: 01,3460 52006 DTCB 051927,000416: 051928,000417: # Page 1214 051929,000418: # RETURN, AFTER EXECUTION OF T3 OVERFLOW TASK: 051930,000419: 051931,000420: 5213 BLOCK 02 051932,000421: 5213 COUNT 02/WAIT 051933,000422: 051934,000423: 5213 10734 TASKOVER CCS RUPTAGN # IF +1 RETURN TO T3RUPT, IF -0 RESUME. 051935,000424: 5214 35155 CAF WAITBB 051936,000425: 5215 54006 TS BBANK 051937,000426: 5216 13423 TCF T3RUPT2 # DISPATCH NEXT TASK IF IT WAS DUE. 051938,000427: 051939,000428: 5217 30016 CA BANKRUPT 051940,000429: 5220 00006 EXTEND 051941,000430: 5221 01007 WRITE SUPERBNK # RESTORE SUPERBANK BEFORE RESUME IS DON 051942,000431: 051943,000432: 5222 00006 RESUME EXTEND 051944,000433: 5223 22012 QXCH QRUPT 051945,000434: 5224 30016 NOQRSM CA BANKRUPT 051946,000435: 5225 56006 XCH BBANK 051947,000436: 5226 52011 NOQBRSM DXCH ARUPT 051948,000437: 5227 00003 RELINT 051949,000438: 5230 50017 RESUME 051950,000439: 051951,000440: # Page 1215 051952,000441: # LONGCALL 051953,000442: # PROGRAM DESCRIPTION DATE -- 17 MARCH 1967 051954,000443: # PROGRAM WRITTEN BY W.H.VANDEVER LOG SECTION WAITLIST 051955,000444: # MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 100 051956,000445: 051957,000446: # FUNCTIONAL DESCRIPTION -- 051958,000447: # LONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK 051959,000448: # IMMEDIATELY FOLLOWING THE TC LONGCALL. FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF 051960,000449: # A DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO 051961,000450: # START. 051962,000451: # CALLING SEQUENCE -- 051963,000452: # EXTEND 051964,000453: # DCA TIMELOC 051965,000454: # TC LONGCALL 051966,000455: # 2CADR TASKTODO 051967,000456: # NORMAL EXIT MODE -- 051968,000457: # 1) TC WAITLIST 051969,000458: # 2) DTCB (TC L+3 OF CALLING ROUTINE 1S PASS THRU LONGCYCL) 051970,000459: # 3) DTCB (TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL) 051971,000460: # ALARM OR ABORT EXIT MODE -- 051972,000461: # NONE 051973,000462: # OUTPUT -- 051974,000463: # LONGTIME AND LONGTIME+1 = DELTA TIME 051975,000464: # LONGEXIT AND LONGEXIT+1 = RETURN 2CADR 051976,000465: # LONGCADR AND LONGCADR+1 = TASK 2CADR 051977,000466: # A = SINGLE PRECISION TIME FOR WAITLIST 051978,000467: # ERASABLE INITIALIZATION -- 051979,000468: # A = MOST SIGNIFICANT PART OF DELTA TIME 051980,000469: # L = LEAST SIGNIFICANT PART OF DELTA TIME 051981,000470: # Q = ADDRESS OF 2CADR TASK VALUE 051982,000471: # DEBRIS -- 051983,000472: # A,Q,L 051984,000473: # LONGCADR AND LONGCADR+1 051985,000474: # LONGEXIT AND LONGEXIT+1 051986,000475: # LONGTIME AND LONGTIME+1 051987,000476: # *** THE FOLLOWING IS TO BE IN FIXED-FIXED AND UNSWITCHED ERASIBLE ** 051988,000477: 051989,000478: 5231 BLOCK 02 051990,000479: 5231 E3,1400 EBANK= LST1 051991,000480: 5231 53140 LONGCALL DXCH LONGTIME # OBTAIN THE DELTA TIME 051992,000481: 051993,000482: 5232 00006 EXTEND # OBTAIN THE 2CADR 051994,000483: # Page 1216 051995,000484: 5233 50002 NDX Q 051996,000485: 5234 30001 DCA 0 051997,000486: 5235 53134 DXCH LONGCADR 051998,000487: 051999,000488: 5236 00006 EXTEND # NO GO TO THE APPROPRIATE SWITCHED BANK 052000,000489: 5237 35242 DCA LGCL2CDR # FOR THE REST OF LONGCALL 052001,000490: 5240 52006 DTCB 052002,000491: 052003,000492: 5241 E3,1400 EBANK= LST1 052004,000493: 5241 03461 02063 LGCL2CDR 2CADR LNGCALL2 052005,000494: 052006,000495: # *** THE FOLLOWING MAY BE IN A SWITCHED BANK, INCLUDING ITS ERASABLE *** 052007,000496: 052008,000497: 01,3461 BANK 01 052009,000498: 01,3461 COUNT 01/WAIT 052010,000499: 052011,000500: 01,3461 23435 LNGCALL2 LXCH LONGEXIT +1 # SAVE THE CORRECT BB FOR RETURN 052012,000501: 01,3462 34711 CA TWO # OBTAIN THE RETURN ADDRESS 052013,000502: 01,3463 26002 ADS Q 052014,000503: 01,3464 55434 TS LONGEXIT 052015,000504: 052016,000505: # *** WAITLIST TASK LONGCYCL *** 052017,000506: 052018,000507: 01,3465 00006 LONGCYCL EXTEND # CAN WE SUCCESFULLY TAKE ABOUT 1.25 052019,000508: 01,3466 43477 DCS DPBIT14 # MINUTES OFF OF LONGTIME 052020,000509: 01,3467 21140 DAS LONGTIME 052021,000510: 052022,000511: 01,3470 11140 CCS LONGTIME +1 # THE REASONING BEHIND THIS PART IS 052023,000512: 01,3471 13510 TCF MUCHTIME # INVOLVED, TAKING INTO ACCOUNT THAT THE 052024,000513: # WORDS MAY NOT BE SIGNED CORRECTED (DP 052025,000514: # BASIC INSTRUCTIONS 052026,000515: # DO NOT SIGN CORRECT) AND THAT WE SUBTRAC- 052027,000516: # TED BIT14 (1 OVER HALF THE POS. VALUE 052028,000517: # REPRESENTABLE IN SINGLE WORD) 052029,000518: 01,3472 13473 NOOP # CAN'T GET HERE ************* 052030,000519: 01,3473 13474 TCF +1 052031,000520: 01,3474 11137 CCS LONGTIME 052032,000521: 01,3475 13510 TCF MUCHTIME 052033,000522: 01,3476 00000 DPBIT14 OCT 00000 052034,000523: 01,3477 20000 OCT 20000 052035,000524: 052036,000525: # LONGCALL 052037,000526: 01,3500 34675 LASTTIME CA BIT14 # GET BACK THE CORRECT DELTA TFOR WAITLIST 052038,000527: 01,3501 27140 ADS LONGTIME +1 052039,000528: 01,3502 05140 TC WAITLIST 052040,000529: 01,3503 E3,1400 EBANK= LST1 052041,000530: 01,3503 03515 02063 2CADR GETCADR # THE ENTRY TO OUR LONGCADR 052042,000531: 052043,000532: 01,3505 33517 LONGRTRN CA TSKOVCDR # SET IT UP SO THAT ONLY THE FIRST EXIT IS 052044,000533: # Page 1217 052045,000534: 01,3506 53435 DXCH LONGEXIT # TO THE CALLER OF LONGCALL 052046,000535: 01,3507 52006 DTCB # THE REST ARE TO TASKOVER 052047,000536: 052048,000537: 01,3510 34675 MUCHTIME CA BIT14 # WE HAVE OVER OUR ABOUT 1.25 MINUTES 052049,000538: 01,3511 05140 TC WAITLIST # SO SET UP FOR ANOTHER CYCLE THROUGH HERE 052050,000539: 01,3512 E3,1400 EBANK= LST1 052051,000540: 01,3512 03465 02063 2CADR LONGCYCL 052052,000541: 052053,000542: 01,3514 13505 TCF LONGRTRN # NOW EXIT PROPERLY 052054,000543: 052055,000544: # *** WAITLIST TASK GETCADR *** 052056,000545: 052057,000546: 01,3515 53134 GETCADR DXCH LONGCADR # GET THE LONGCALL THAT WE WISHED TO START 052058,000547: 01,3516 52006 DTCB # AND TRANSFER CONTROL TO IT 052059,000548: 052060,000549: 01,3517 05213 TSKOVCDR GENADR TASKOVER End of include-file WAITLIST.agc. Parent file is MAIN.agc