Source Code

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