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