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