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