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