Source Code

052843,000001: # Copyright: Public domain. 052844,000002: # Filename: WAITLIST.agc 052845,000003: # Purpose: Part of the source code for Colossus 2A, AKA Comanche 055. 052846,000004: # It is part of the source code for the Command Module's (CM) 052847,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 052848,000006: # Assembler: yaYUL 052849,000007: # Contact: Ron Burkey <info@sandroid.org>. 052850,000008: # Website: www.ibiblio.org/apollo. 052851,000009: # Pages: 1221-1235 052852,000010: # Mod history: 2009-05-14 RSB Adapted from the Colossus249/ file of the 052853,000011: # same name, using Comanche055 page images. 052854,000012: # 2010-08-29 JL Fixed indentation. 052855,000013: # 2011-05-08 JL Removed workarounds. 052856,000014: 052857,000015: # This source code has been transcribed or otherwise adapted from digitized 052858,000016: # images of a hardcopy from the MIT Museum. The digitization was performed 052859,000017: # by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many 052860,000018: # thanks to both. The images (with suitable reduction in storage size and 052861,000019: # consequent reduction in image quality as well) are available online at 052862,000020: # www.ibiblio.org/apollo. If for some reason you find that the images are 052863,000021: # illegible, contact me at info@sandroid.org about getting access to the 052864,000022: # (much) higher-quality images which Paul actually created. 052865,000023: 052866,000024: # Notations on the hardcopy document read, in part: 052867,000025: 052868,000026: # Assemble revision 055 of AGC program Comanche by NASA 052869,000027: # 2021113-051. 10:28 APR. 1, 1969 052870,000028: 052871,000029: # This AGC program shall also be referred to as 052872,000030: # Colossus 2A 052873,000031: 052874,000032: # Page 1221 052875,000033: # PROGRAM DESCRIPTION DATE -- 10 OCTOBER 1966 052876,000034: # MOD NO -- 2 LOG SECTION -- WAITLIST 052877,000035: # MOD BY -- MILLER (DTMAX INCREASED TO 162.5 SEC) ASSEMBLY -- SUNBURST REV 5 052878,000036: # MOD 3 BY KERNAN (INHINT INSERTED AT WAITLIST) 2/28/68 SKIPPER REV 4 052879,000037: # MOD 4 BY KERNAN (TWIDDLE IN 54) 3/28/68 SKIPPER REV 13. 052880,000038: 052881,000039: # FUNCTIONAL DESCRIPTION -- 052882,000040: # PART OF A SECTION OF PROGRAMS -- WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM (CALLED A TASK), 052883,000041: # WHICH IS TO BEGIN IN C(A) CENTISECONDS. WAITLIST UPDATES TIME3, LST1, AND LST2. THE MEANING OF THESE LISTS 052884,000042: # FOLLOW. 052885,000043: 052886,000044: # C(TIME3) = 16384 -(T1-T) CENTISECONDS, (T=PRESENT TIME, T1-TIME FOR TASK1) 052887,000045: 052888,000046: # C(LST1) = -(T2-T1)+1 052889,000047: # C(LST1 +1) = -(T3-T2)+1 052890,000048: # C(LST1 +2) = -(T4-T3)+1 052891,000049: # ... 052892,000050: # C(LST1 +6) = -(T8-T7)+1 052893,000051: # C(LST1 +7) = -(T9-T8)+1 052894,000052: 052895,000053: # C(LST2) = 2CADR OF TASK1 052896,000054: # C(LST2 +2) = 2CADR OF TASK2 052897,000055: # ... 052898,000056: # C(LST2 +14) = 2CADR OF TASK8 052899,000057: # C(LST2 +16) = 2CADR OF TASK9 052900,000058: 052901,000059: # WARNINGS -- 052902,000060: # 1) 1 <= C(A) <= 16250D (1 CENTISCOND TO 162.5 SEC) 052903,000061: # 2) 9 TASKS MAXIMUM 052904,000062: # 3) TASKS CALLED UNDER INTERRUPT INHIBITED 052905,000063: # 4) TASKS END BY TC TASKOVER 052906,000064: 052907,000065: # CALLING SEQUENCE -- 052908,000066: # L-1 CA DELTAT (TIME IN CENTISECONDS TO TASK START) 052909,000067: # L TC WAITLIST 052910,000068: # L+1 2CADR DESIRED TASK 052911,000069: # L+2 (MINOR OF 2CADR) 052912,000070: # L+3 RELINT (RETURNS HERE) 052913,000071: 052914,000072: # TWIDDLE -- 052915,000073: # TWIDDLE IS FOR USE WHEN THE TASK BEING SET UP IS IN THE SAME EBANK AND FBANK AS THE USER. IN 052916,000074: # SUCH CASES, IT IMPROVES UPON WAITLIST BY ELIMINATING THE NEED FOR THE BBCON HALF OF THE 2CADR, 052917,000075: # Page 1222 052918,000076: # SAVING A WORD. TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT, 052919,000077: # L-1 CA DELTAT 052920,000078: # L TC TWIDDLE 052921,000079: # L+1 ADRES DESIRED TASK 052922,000080: # L+2 RELINT (RETURNS HERE) 052923,000081: 052924,000082: # NORMAL EXIT MODES -- 052925,000083: # AT L+3 OF CALLING SEQUENCE. 052926,000084: 052927,000085: # ALARM OR ABORT EXIT MODES -- 052928,000086: # TC ABORT 052929,000087: # OCT 1203 (WAITLIST OVERFLOW -- TOO MANY TASKS) 052930,000088: 052931,000089: # ERASABLE INITIALIZATION REQUIRED -- 052932,000090: # ACCOMPLISHED BY FRESH START -- LST2, ..., LST2 +16 = ENDTASK 052933,000091: # LST1, ..., LST1 +7 = NEG1/2 052934,000092: 052935,000093: # OUTPUT -- 052936,000094: # LST1 AND LST2 UPDATED WITH NEW TASK AND ASSOCIATED TIME. 052937,000095: 052938,000096: # DEBRIS -- 052939,000097: # CENTRALS -- A,Q,L 052940,000098: # OTHER -- WAITEXIT, WAITADR, WAITTEMP, WAITBANK 052941,000099: 052942,000100: # DETAILED ANALYSIS OF TIMING -- 052943,000101: # CONTROL WILL NOT BE RETURNED TO THE SPECIFIED ADDRESS (2CADR) IN EXACTLY DELTA T CENTISECONDS. 052944,000102: # THE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS: 052945,000103: # LET T0 = THE TIME OF THE TC WAITLIST 052946,000104: # LET TS = T0 +147U + COUNTER INCREMENTS (SET UP TIME) 052947,000105: # LET X = TS -(100TS)/100 (VARIANCE FROM COUNTERS) 052948,000106: # LET Y = LENGTH OF TIME OF INHIBIT INTERRUPT AFTER T3RUPT 052949,000107: # LET Z = LENGTH OF TIME TO PROCESS TASKS WHICH ARE DUE THIS T3RUPT BUT DISPATCHED EARLIER. 052950,000108: # (Z=0, USUALLY). 052951,000109: # LET DELTD = THE ACTUAL TIME TAKEN TO GIVE CONTROL TO 2CADR 052952,000110: # THEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS* 052953,000111: # *THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME. 052954,000112: # IN SHORT, THE ACTUAL TIME TO RETURN CONTROL TO A 2CADR IS AUGMENTED BY THE TIME TO SET UP THE TASK'S 052955,000113: # INTERRUPT, ALL COUNTERS TICKING, THE T3RUPT PROCESSING TIME, THE WAITLIST PROCESSING TIME AND THE POSSIBILITY 052956,000114: # OF OTHER TASKS INHIBITING THE INTERRUPT. 052957,000115: 052958,000116: 5235 BLOCK 02 052959,000117: # Page 1223 052960,000118: 5235 E3,1400 EBANK= LST1 # TASK LISTS IN SWITCHED E BANK. 052961,000119: 052962,000120: 5235 COUNT 02/WAIT 052963,000121: 052964,000122: 5235 00004 TWIDDLE INHINT 052965,000123: 5236 54001 TS L # SAVE DELAY TIME IN L 052966,000124: 5237 34777 CA POSMAX 052967,000125: 5240 26002 ADS Q # CREATING OVERFLOW AND Q-1 IN Q 052968,000126: 5241 30006 CA BBANK 052969,000127: 5242 00006 EXTEND 052970,000128: 5243 04007 ROR SUPERBNK 052971,000129: 5244 56001 XCH L 052972,000130: 052973,000131: 5245 00004 WAITLIST INHINT 052974,000132: 5246 00006 EXTEND 052975,000133: 5247 65261 BZMF WATLST0- 052976,000134: 5250 56002 XCH Q # SAVE DELTA T IN Q AND RETURN IN 052977,000135: 5251 54061 TS WAITEXIT # WAITEXIT. 052978,000136: 5252 00006 EXTEND 052979,000137: 5253 50061 INDEX WAITEXIT # IF TWIDDLING, THE TS SKIPS TO HERE 052980,000138: 5254 30001 DCA 0 # PICK UP 2CADR OF TASK. 052981,000139: 5255 54063 -1 TS WAITADR # BBCON WILL REMAIN IN L 052982,000140: 5256 35266 DLY2 CAF WAITBB # ENTRY FROM FIXDELAY AND VARDELAY. 052983,000141: 5257 56006 XCH BBANK 052984,000142: 5260 13246 TCF WAIT2 052985,000143: 052986,000144: 5261 05721 WATLST0- TC P00DOO 052987,000145: 5262 01204 OCT 1204 # WAITLIST CALL WITH ZERO OR NEG DT 052988,000146: 052989,000147: # RETURN TO CALLER AFTER TASK INSERTION: 052990,000148: 052991,000149: 5263 52062 LVWTLIST DXCH WAITEXIT 052992,000150: 5264 65016 AD TWO 052993,000151: 5265 52006 DTCB 052994,000152: 052995,000153: 5266 E3,1400 EBANK= LST1 052996,000154: 5266 02063 WAITBB BBCON WAIT2 052997,000155: 052998,000156: # RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1. 052999,000157: 053000,000158: 5267 50002 FIXDELAY INDEX Q # BOTH ROUTINES MUST BE CALLED UNDER 053001,000159: 5270 30000 CAF 0 # WAITLIST CONTROL AND TERMINATE THE TASK 053002,000160: 5271 24002 INCR Q # IN WHICH THEY WERE CALLED. 053003,000161: 053004,000162: # RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A. 053005,000163: 053006,000164: 5272 56002 VARDELAY XCH Q # DT TO Q. TASK ADRES TO WAITADR. 053007,000165: 5273 54063 TS WAITADR 053008,000166: 5274 30006 CA BBANK # BBANK IS SAVED DURING DELAY. 053009,000167: 5275 00006 EXTEND 053010,000168: # Page 1224 053011,000169: 5276 04007 ROR SUPERBNK # ADD SBANK TO BBCON. 053012,000170: 5277 54001 TS L 053013,000171: 5300 35303 CAF DELAYEX 053014,000172: 5301 54061 TS WAITEXIT # GO TO TASKOVER AFTER TASK ENTRY. 053015,000173: 5302 15256 TCF DLY2 053016,000174: 053017,000175: 5303 15322 DELAYEX TCF TASKOVER -2 # RETURNS TO TASKOVER. 053018,000176: 053019,000177: # Page 1225 053020,000178: # ENDTASK MUST ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE. 053021,000179: 053022,000180: 5304 E3,1400 EBANK= LST1 053023,000181: 5304 72471 73714 ENDTASK -2CADR SVCT3 053024,000182: 053025,000183: 5306 10076 SVCT3 CCS FLAGWRD2 # DRIFT FLAG 053026,000184: 5307 15324 TCF TASKOVER 053027,000185: 5310 15324 TCF TASKOVER 053028,000186: 5311 15312 TCF +1 053029,000187: 053030,000188: 5312 11322 CCS IMUCADR # DON'T DO NBDONLY IF SOMEONE ELSE IS IN 053031,000189: 5313 17717 TCF SVCT3X 053032,000190: 5314 15317 TCF +3 053033,000191: 5315 17717 TCF SVCT3X 053034,000192: 5316 17717 TCF SVCT3X 053035,000193: 5317 37672 +3 CAF PRIO35 # COMPENSATE FOR NBD COEFFICIENTS ONLY. 053036,000194: 5320 05134 TC NOVAC # ENABLE EVERY 81.93 SECONDS 053037,000195: 5321 E3,1460 EBANK= NBDX 053038,000196: 5321 03542 14063 2CADR NBDONLY 053039,000197: 053040,000198: 5323 15324 TCF TASKOVER 053041,000199: 053042,000200: 6000 SETLOC FFTAG6 053043,000201: 6000 BANK 053044,000202: 053045,000203: 7717 05267 SVCT3X TC FIXDELAY # DELAY MAX OF 2 TIMES FOR IMU ZERO 053046,000204: 7720 00764 DEC 500 B-14 053047,000205: 7721 05306 TC SVCT3 053048,000206: 053049,000207: # Page 1226 053050,000208: # BEGIN TASK INSERTION. 053051,000209: 053052,000210: 01,3246 BANK 01 053053,000211: 01,3246 COUNT 01/WAIT 053054,000212: 053055,000213: 01,3246 54062 WAIT2 TS WAITBANK # BBANK OF CALLING PROGRAM. 053056,000214: 01,3247 40026 CS TIME3 053057,000215: 01,3250 65010 AD BIT8 # BIT 8 = OCT 200 053058,000216: 01,3251 10000 CCS A # TEST 200 - C(TIME3). IF POSITIVE, 053059,000217: # IT MEANS THAT TIME3 OVERFLOW HAS OCCURRED PRIOR TO CS TIME3 AND THAT 053060,000218: # C(TIME3) = T - T1, INSTEAD OF 1.0 - (T1 - T). THE FOLLOWING FOUR 053061,000219: # ORDERS SET C(A) = TD - T1 + 1 IN EITHER CASE. 053062,000220: 053063,000221: 01,3252 66056 AD OCT40001 # OVERFLOW HAS OCCURRED. SET C(A) = 053064,000222: 01,3253 40000 CS A # T - T1 + 1.0 - 201 053065,000223: 053066,000224: # NORMAL CASE (C(A) NNZ) YIELDS SAME C(A): -( -(1.0-(T1-T)) + 200) - 1 053067,000225: 053068,000226: 01,3254 63402 AD OCT40201 053069,000227: 01,3255 60002 AD Q # RESULT = TD - T1 + 1. 053070,000228: 053071,000229: 01,3256 10000 CCS A # TEST TD - T1 +1. 053072,000230: 053073,000231: 01,3257 61400 AD LST1 # IF TD - T1 POS, GO TO WTLST5 WITH 053074,000232: 01,3260 13322 TCF WTLST5 # C(A) = (TD - T1) + C(LST1) = TD-T2+1 053075,000233: 053076,000234: 01,3261 13262 NOOP 053077,000235: 01,3262 40002 CS Q 053078,000236: 053079,000237: # NOTE THAT THIS PROGRAM SECTION IS NEVER ENTERED WHEN T-T1 G/E -1, 053080,000238: # SINCE TD-T1+1 = (TD-T) + (T-T1+1), AND DELTA T = TD-T G/E +1. (G/E 053081,000239: # SYMBOL MEANS GREATER THAN OR EQUAL TO). THUS THERE NEED BE NO CON- 053082,000240: # CERN OVER A PREVIOUS OR IMMINENT OVEFLOW OF TIME3 HERE. 053083,000241: 053084,000242: 01,3263 65002 AD POS1/2 # WHEN TD IS NEXT, FORM QUANTITY 053085,000243: 01,3264 65002 AD POS1/2 # 1.0 - DELTA T = 1.0 - (TD - T) 053086,000244: 01,3265 56026 XCH TIME3 053087,000245: 01,3266 65001 AD NEGMAX 053088,000246: 01,3267 60002 AD Q # 1.0 - DELTAT T NOW COMPLETE. 053089,000247: 01,3270 00006 EXTEND # ZERO INDEX Q. 053090,000248: 01,3271 22007 QXCH 7 # (ZQ) 053091,000249: 053092,000250: # Page 1227 053093,000251: 01,3272 57400 WTLST4 XCH LST1 053094,000252: 01,3273 57401 XCH LST1 +1 053095,000253: 01,3274 57402 XCH LST1 +2 053096,000254: 01,3275 57403 XCH LST1 +3 053097,000255: 01,3276 57404 XCH LST1 +4 053098,000256: 01,3277 57405 XCH LST1 +5 053099,000257: 01,3300 57406 XCH LST1 +6 053100,000258: 01,3301 57407 XCH LST1 +7 053101,000259: 053102,000260: 01,3302 30063 CA WAITADR # (MINOR PART OF TASK CADR HAS BEEN IN L.) 053103,000261: 01,3303 50002 INDEX Q 053104,000262: 01,3304 13305 TCF +1 053105,000263: 053106,000264: 01,3305 53411 DXCH LST2 053107,000265: 01,3306 53413 DXCH LST2 +2 053108,000266: 01,3307 53415 DXCH LST2 +4 053109,000267: 01,3310 53417 DXCH LST2 +6 053110,000268: 01,3311 53421 DXCH LST2 +8D 053111,000269: 01,3312 53423 DXCH LST2 +10D # AT END, CHECK THAT C(LST2 +10) IS STD 053112,000270: 01,3313 53425 DXCH LST2 +12D 053113,000271: 01,3314 53427 DXCH LST2 +14D 053114,000272: 01,3315 53431 DXCH LST2 +16D 053115,000273: 01,3316 65304 AD ENDTASK # END ITEM, AS CHECK FOR EXCEEDING 053116,000274: # THE LENGTH OF THE LIST. 053117,000275: 01,3317 00006 EXTEND # DUMMY TASK ADRES SHOULD BE IN FIXED- 053118,000276: 01,3320 15263 BZF LVWTLIST # FIXED SO ITS ADRES ALONE DISTINGUISHES 053119,000277: 01,3321 13375 TCF WTABORT # IT. 053120,000278: 053121,000279: # Page 1228 053122,000280: 01,3322 10000 WTLST5 CCS A # TEST TD - T2 + 1 053123,000281: 01,3323 61401 AD LST1 +1 053124,000282: 01,3324 13330 TCF +4 053125,000283: 01,3325 65017 AD ONE 053126,000284: 01,3326 03403 TC WTLST2 053127,000285: 01,3327 00001 OCT 1 053128,000286: 053129,000287: 01,3330 10000 +4 CCS A # TEST TD - T3 + 1 053130,000288: 01,3331 61402 AD LST1 +2 053131,000289: 01,3332 13336 TCF +4 053132,000290: 01,3333 65017 AD ONE 053133,000291: 01,3334 03403 TC WTLST2 053134,000292: 01,3335 00002 OCT 2 053135,000293: 053136,000294: 01,3336 10000 +4 CCS A # TEST TD - T4 + 1 053137,000295: 01,3337 61403 AD LST1 +3 053138,000296: 01,3340 13344 TCF +4 053139,000297: 01,3341 65017 AD ONE 053140,000298: 01,3342 03403 TC WTLST2 053141,000299: 01,3343 00003 OCT 3 053142,000300: 053143,000301: 01,3344 10000 +4 CCS A # TEST TD - T5 + 1 053144,000302: 01,3345 61404 AD LST1 +4 053145,000303: 01,3346 13352 TCF +4 053146,000304: 01,3347 65017 AD ONE 053147,000305: 01,3350 03403 TC WTLST2 053148,000306: 01,3351 00004 OCT 4 053149,000307: 053150,000308: 01,3352 10000 +4 CCS A # TEST TD - T6 + 1 053151,000309: 01,3353 61405 AD LST1 +5 053152,000310: 01,3354 13360 TCF +4 053153,000311: 01,3355 65017 AD ONE 053154,000312: 01,3356 03403 TC WTLST2 053155,000313: 01,3357 00005 OCT 5 053156,000314: 053157,000315: 01,3360 10000 +4 CCS A # TEST TD - T7 + 1 053158,000316: 01,3361 61406 AD LST1 +6 053159,000317: 01,3362 13366 TCF +4 053160,000318: 01,3363 65017 AD ONE 053161,000319: 01,3364 03403 TC WTLST2 053162,000320: 01,3365 00006 OCT 6 053163,000321: 053164,000322: # Page 1229 053165,000323: 01,3366 10000 +4 CCS A 053166,000324: 01,3367 61407 AD LST1 +7 053167,000325: 01,3370 13374 TCF +4 053168,000326: 01,3371 65017 AD ONE 053169,000327: 01,3372 03403 TC WTLST2 053170,000328: 01,3373 00007 OCT 7 053171,000329: 053172,000330: 01,3374 10000 +4 CCS A 053173,000331: 01,3375 07755 WTABORT TC BAILOUT # NO ROOM IN THE INN 053174,000332: 01,3376 01203 OCT 1203 053175,000333: 053176,000334: 01,3377 65017 AD ONE 053177,000335: 01,3400 03403 TC WTLST2 053178,000336: 01,3401 00010 OCT 10 053179,000337: 053180,000338: 01,3402 40201 OCT40201 OCT 40201 053181,000339: 053182,000340: # Page 1230 053183,000341: # THE ENTRY TC WTLST2 JUST PRECEDING OCT N IS FOR T LE TD LE T -1. 053184,000342: # N N+1 053185,000343: 053186,000344: # (LE MEANS LESS THAN OR EQUAL TO). AT ENTRY, C(A) = -(TD - T + 1) 053187,000345: # N+1 053188,000346: 053189,000347: # THE LST1 ENTRY-(T -T +1) IS TO BE REPLACED BY -(TD - T + 1), AND 053190,000348: # N+1 N N 053191,000349: 053192,000350: # THE ENTRY-(T - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING. 053193,000351: # N+1 053194,000352: 053195,000353: 01,3403 54064 WTLST2 TS WAITTEMP # C(A) = -(TD - T + 1) 053196,000354: 01,3404 50002 INDEX Q 053197,000355: 01,3405 30000 CAF 0 053198,000356: 01,3406 54002 TS Q # INDEX VALUE INTO Q. 053199,000357: 053200,000358: 01,3407 35017 CAF ONE 053201,000359: 01,3410 60064 AD WAITTEMP 053202,000360: 01,3411 50002 INDEX Q # C(A) = -(TD - T ) + 1. 053203,000361: 01,3412 27377 ADS LST1 -1 # N 053204,000362: 053205,000363: 01,3413 40064 CS WAITTEMP 053206,000364: 01,3414 50002 INDEX Q 053207,000365: 01,3415 13272 TCF WTLST4 053208,000366: 053209,000367: # Page 1231 053210,000368: # ENTERS HERE ON T3 RUPT TO DISPATCH WAITLISTED TASK. 053211,000369: 053212,000370: 01,3416 00006 T3RUPT EXTEND 053213,000371: 01,3417 04007 ROR SUPERBNK # READ CURRENT SUPERBANK VALUE AND 053214,000372: 01,3420 54016 TS BANKRUPT # SAVE WITH E AND F BANK VALUES. 053215,000373: 01,3421 00006 EXTEND 053216,000374: 01,3422 22012 QXCH QRUPT 053217,000375: 053218,000376: 01,3423 35000 T3RUPT2 CAF NEG1/2 # DISPATCH WAITLIST TASK. 053219,000377: 01,3424 57407 XCH LST1 +7 053220,000378: 01,3425 57406 XCH LST1 +6 053221,000379: 01,3426 57405 XCH LST1 +5 053222,000380: 01,3427 57404 XCH LST1 +4 # 1. MOVE UP LST1 CONTENTS, ENTERING 053223,000381: 01,3430 57403 XCH LST1 +3 # A VALUE OF 1/2 +1 AT THE BOTTOM 053224,000382: 01,3431 57402 XCH LST1 +2 # FOR T6-T5, CORRESPONDING TO THE 053225,000383: 01,3432 57401 XCH LST1 +1 # INTERVAL 81.91 SEC FOR ENDTASK. 053226,000384: 01,3433 57400 XCH LST1 053227,000385: 01,3434 64777 AD POSMAX # 2. SET T3 = 1.0 - T2 - T USING LIST 1. 053228,000386: 01,3435 26026 ADS TIME3 # SO T3 WON'T TICK DURING UPDATE. 053229,000387: 01,3436 54734 TS RUPTAGN 053230,000388: 01,3437 45021 CS ZERO 053231,000389: 01,3440 54734 TS RUPTAGN # SETS RUPTAGN TO +1 ON OVERFLOW. 053232,000390: 053233,000391: 01,3441 00006 EXTEND # DISPATCH TASK. 053234,000392: 01,3442 45305 DCS ENDTASK 053235,000393: 01,3443 53431 DXCH LST2 +16D 053236,000394: 01,3444 53427 DXCH LST2 +14D 053237,000395: 01,3445 53425 DXCH LST2 +12D 053238,000396: 01,3446 53423 DXCH LST2 +10D 053239,000397: 01,3447 53421 DXCH LST2 +8D 053240,000398: 01,3450 53417 DXCH LST2 +6 053241,000399: 01,3451 53415 DXCH LST2 +4 053242,000400: 01,3452 53413 DXCH LST2 +2 053243,000401: 01,3453 53411 DXCH LST2 053244,000402: 053245,000403: 01,3454 56001 XCH L 053246,000404: 01,3455 00006 EXTEND 053247,000405: 01,3456 01007 WRITE SUPERBNK # SET SUPERBANK FROM BBCON OF 2CADR 053248,000406: 01,3457 56001 XCH L # RESTORE TO L FOR DXCH Z. 053249,000407: 01,3460 52006 DTCB 053250,000408: 053251,000409: # Page 1232 053252,000410: # RETURN, AFTER EXECUTION OF T3 OVERFLOW TASK: 053253,000411: 053254,000412: 5324 BLOCK 02 053255,000413: 5324 COUNT 02/WAIT 053256,000414: 053257,000415: 5324 10734 TASKOVER CCS RUPTAGN # IF +1 RETURN TO T3RUPT, IF -0 RESUME. 053258,000416: 5325 35266 CAF WAITBB 053259,000417: 5326 54006 TS BBANK 053260,000418: 5327 13423 TCF T3RUPT2 # DISPATCH NEXT TASK IF IT WAS DUE. 053261,000419: 053262,000420: 5330 30016 CA BANKRUPT 053263,000421: 5331 00006 EXTEND 053264,000422: 5332 01007 WRITE SUPERBNK # RESTORE SUPERBANK BEFORE RESUME IS DONE 053265,000423: 053266,000424: 5333 00006 RESUME EXTEND 053267,000425: 5334 22012 QXCH QRUPT 053268,000426: 5335 30016 NOQRSM CA BANKRUPT 053269,000427: 5336 56006 XCH BBANK 053270,000428: 5337 52011 NOQBRSM DXCH ARUPT 053271,000429: 5340 00003 RELINT 053272,000430: 5341 50017 RESUME 053273,000431: 053274,000432: # Page 1233 053275,000433: # LONGCALL 053276,000434: # PROGRAM DESCRIPTION DATE -- 17 MARCH 1967 053277,000435: # PROGRAM WRITTEN BY W.H.VANDEVER LOG SECTION WAITLIST 053278,000436: # MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 100 053279,000437: 053280,000438: # FUNCTIONAL DESCRIPTION -- 053281,000439: # LONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK 053282,000440: # IMMEDIATELY FOLLOWING THE TC LONGCALL. FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF 053283,000441: # A DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO 053284,000442: # START. 053285,000443: 053286,000444: # CALLING SEQUENCE -- 053287,000445: # EXTEND 053288,000446: # DCA TIMELOC 053289,000447: # TC LONGCALL 053290,000448: # 2CADR TASKTODO 053291,000449: 053292,000450: # NORMAL EXIT MODE -- 053293,000451: # 1) TC WAITLIST 053294,000452: # 2) DTCB (TC L+3 OF CALLING ROUTINE 1ST PASS THRU LONGCYCL) 053295,000453: # 3) DTCB (TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL) 053296,000454: 053297,000455: # ALARM OR ABORT EXIT MODE -- 053298,000456: # NONE 053299,000457: 053300,000458: # OUTPUT -- 053301,000459: # LONGTIME AND LONGTIME+1 = DELTA TIME 053302,000460: # LONGEXIT AND LONGEXIT+1 = RETURN 2CADR 053303,000461: # LONGCADR AND LONGCADR+1 = TASK 2CADR 053304,000462: # A = SINGLE PRECISION TIME FOR WAITLIST 053305,000463: 053306,000464: # ERASABLE INITIALIZATION -- 053307,000465: # A = MOST SIGNIFICANT PART OF DELTA TIME 053308,000466: # L = LEAST SIGNIFICANT PART OF DELTA TIME 053309,000467: # Q = ADDRESS OF 2CADR TASK VALUE 053310,000468: 053311,000469: # DEBRIS -- 053312,000470: # A,Q,L 053313,000471: # LONGCADR AND LONGCADR+1 053314,000472: # LONGEXIT AND LONGEXIT+1 053315,000473: # LONGTIME AND LONGTIME+1 053316,000474: 053317,000475: # *** THE FOLLOWING IS TO BE IN FIXED-FIXED AND UNSWITCHED ERASIBLE ** 053318,000476: 053319,000477: 5342 BLOCK 02 053320,000478: 5342 E3,1400 EBANK= LST1 053321,000479: 5342 53140 LONGCALL DXCH LONGTIME # OBTAIN THE DELTA TIME 053322,000480: 053323,000481: 5343 00006 EXTEND # OBTAIN THE 2CADR 053324,000482: # Page 1234 053325,000483: 5344 50002 NDX Q 053326,000484: 5345 30001 DCA 0 053327,000485: 5346 53134 DXCH LONGCADR 053328,000486: 053329,000487: 5347 00006 EXTEND # NO GO TO THE APPROPRIATE SWITCHED BANK 053330,000488: 5350 35353 DCA LGCL2CDR # FOR THE REST OF LONGCALL 053331,000489: 5351 52006 DTCB 053332,000490: 053333,000491: 5352 E3,1400 EBANK= LST1 053334,000492: 5352 03461 02063 LGCL2CDR 2CADR LNGCALL2 053335,000493: 053336,000494: # *** THE FOLLOWING MAY BE IN A SWITCHED BANK, INCLUDING ITS ERASABLE *** 053337,000495: 053338,000496: 01,3461 BANK 01 053339,000497: 01,3461 COUNT 01/WAIT 053340,000498: 053341,000499: 01,3461 23435 LNGCALL2 LXCH LONGEXIT +1 # SAVE THE CORRECT BB FOR RETURN 053342,000500: 01,3462 35016 CA TWO # OBTAIN THE RETURN ADDRESS 053343,000501: 01,3463 26002 ADS Q 053344,000502: 01,3464 55434 TS LONGEXIT 053345,000503: 053346,000504: # *** WAITLIST TASK LONGCYCL *** 053347,000505: 053348,000506: 01,3465 00006 LONGCYCL EXTEND # CAN WE SUCCESFULLY TAKE ABOUT 1.25 053349,000507: 01,3466 43477 DCS DPBIT14 # MINUTES OFF OF LONGTIME 053350,000508: 01,3467 21140 DAS LONGTIME 053351,000509: 053352,000510: 01,3470 11140 CCS LONGTIME +1 # THE REASONING BEHIND THIS PART IS 053353,000511: 01,3471 13510 TCF MUCHTIME # INVOLVED, TAKING INTO ACCOUNT THAT THE 053354,000512: # WORDS MAY NOT BE SIGNED CORRECTED (DP 053355,000513: # BASIC INSTRUCTIONS 053356,000514: # DO NOT SIGN CORRECT) AND THAT WE SUBTRAC- 053357,000515: # TED BIT14 (1 OVER HALF THE POS. VALUE 053358,000516: # REPRESENTABLE IN SINGLE WORD) 053359,000517: 01,3472 13473 NOOP # CAN'T GET HERE ************* 053360,000518: 01,3473 13474 TCF +1 053361,000519: 01,3474 11137 CCS LONGTIME 053362,000520: 01,3475 13510 TCF MUCHTIME 053363,000521: 01,3476 00000 DPBIT14 OCT 00000 053364,000522: 01,3477 20000 OCT 20000 053365,000523: 053366,000524: # LONGCALL 053367,000525: 01,3500 35002 LASTTIME CA BIT14 # GET BACK THE CORRECT DELTA TFOR WAITLIST 053368,000526: 01,3501 27140 ADS LONGTIME +1 053369,000527: 01,3502 05245 TC WAITLIST 053370,000528: 01,3503 E3,1400 EBANK= LST1 053371,000529: 01,3503 03515 02063 2CADR GETCADR # THE ENTRY TO OUR LONGCADR 053372,000530: 053373,000531: 01,3505 33517 LONGRTRN CA TSKOVCDR # SET IT UP SO THAT ONLY THE FIRST EXIT IS 053374,000532: # Page 1235 053375,000533: 01,3506 53435 DXCH LONGEXIT # TO THE CALLER OF LONGCALL 053376,000534: 01,3507 52006 DTCB # THE REST ARE TO TASKOVER 053377,000535: 053378,000536: 01,3510 35002 MUCHTIME CA BIT14 # WE HAVE OVER OUR ABOUT 1.25 MINUTES 053379,000537: 01,3511 05245 TC WAITLIST # SO SET UP FOR ANOTHER CYCLE THROUGH HERE 053380,000538: 01,3512 E3,1400 EBANK= LST1 053381,000539: 01,3512 03465 02063 2CADR LONGCYCL 053382,000540: 053383,000541: 01,3514 13505 TCF LONGRTRN # NOW EXIT PROPERLY 053384,000542: 053385,000543: # *** WAITLIST TASK GETCADR *** 053386,000544: 053387,000545: 01,3515 53134 GETCADR DXCH LONGCADR # GET THE LONGCALL THAT WE WISHED TO START 053388,000546: 01,3516 52006 DTCB # AND TRANSFER CONTROL TO IT 053389,000547: 053390,000548: 01,3517 05324 TSKOVCDR GENADR TASKOVER 053391,000549: 053392,000550: End of include-file WAITLIST.agc. Parent file is MAIN.agc