Source Code

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