Source Code
046041,000001: # Copyright: Public domain.
046042,000002: # Filename: WAITLIST.agc
046043,000003: # Purpose: A section of Luminary 1C, revision 131.
046044,000004: # It is part of the source code for the Lunar Module's (LM)
046045,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14.
046046,000006: # This file is intended to be a faithful transcription, except
046047,000007: # that the code format has been changed to conform to the
046048,000008: # requirements of the yaYUL assembler rather than the
046049,000009: # original YUL assembler.
046050,000010: # Reference: pp. 1116-1131 of 1729.pdf.
046051,000011: # Contact: Ron Burkey <info@sandroid.org>.
046052,000012: # Website: www.ibiblio.org/apollo/index.html
046053,000013: # Mod history: 05/31/03 RSB. Began transcribing.
046054,000014: # 05/14/05 RSB Corrected website reference above.
046055,000015:
046056,000016: # Page 1116
046057,000017: # PROGRAM DESCRIPTION DATE -- 10 OCTOBER 1966
046058,000018: # MOD NO -- 2 LOG SECTION -- WAITLIST
046059,000019: # MOD BY -- MILLER (DTMAX INCREASED TO 162.5 SEC) ASSEMBLY -- SUNBURST REV 5
046060,000020: # MOD 3 BY KERNAN (INHINT INSERTED AT WAITLIST) 2/28/68 SKIPPER REV 4
046061,000021: # MOD 4 BY KERNAN (TWIDDLE IN 54) 3/28/68 SKIPPER REV 13.
046062,000022:
046063,000023: # FUNCTIONAL DESCRIPTION --
046064,000024: # PART OF A SECTION OF PROGRAMS -- WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM (CALLED A TASK),
046065,000025: # WHICH IS TO BEGIN IN C(A) CENTISECONDS. WAITLIST UPDATES TIME3, LST1, AND LST2. THE MEANING OF THESE LISTS
046066,000026: # FOLLOW.
046067,000027:
046068,000028: # ((TIME3) = 16384 -(T1-T) CENTISECONDS, (T=PRESENT TIME, T1-TIME FOR TASK1)
046069,000029:
046070,000030: # C(LST1) = -(T2-T1)+1
046071,000031: # C(LST1 +1) = -(T3-T2)+1
046072,000032: # C(LST1 +2) = -(T4-T3)+1
046073,000033: # ...
046074,000034: # C(LST1 +6) = -(T8-T7)+1
046075,000035: # C(LST1 +7) = -(T9-T8)+1
046076,000036:
046077,000037: # C(LST2) = 2CADR OF TASK1
046078,000038: # C(LST2 +2) = 2CADR OF TASK2
046079,000039: # ...
046080,000040: # C(LST2 +14) = 2CADR OF TASK8
046081,000041: # C(LST2 +16) = 2CADR OF TASK9
046082,000042:
046083,000043: # WARNINGS --
046084,000044: # 1) 1 <= C(A) <= 16250D (1 CENTISCOND TO 162.5 SEC)
046085,000045: # 2) 9 TASKS MAXIMUM
046086,000046: # 3) TASKS CALLED UNDER INTERRUPT INHIBITED
046087,000047: # 4) TASKS END BY TC TASKOVER
046088,000048:
046089,000049: # CALLING SEQUENCE --
046090,000050: # L-1 CA DELTAT (TIME IN CENTISECONDS TO TASK START)
046091,000051: # L TC WAITLIST
046092,000052: # L+1 2CADR DESIRED TASK.
046093,000053: # L+2 (MINOR OF 2CADR)
046094,000054: # L+3 RELINT (RETURNS HERE)
046095,000055:
046096,000056: # TWIDDLE --
046097,000057: # TWIDDLE IS FOR USE WHEN THE TASK BEING SET UP IS IN THE SAME EBANK AND FBANK AS THE USER. IN
046098,000058: # SUCH CASES, IT IMPROVES UPON WAITLIST BY ELIMINATING THE NEED FOR THE BBCON HALF OF THE 2CADR,
046099,000059: # Page 1117
046100,000060: # SAVING A WORD. TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT,
046101,000061: # L-1 CA DELTAT
046102,000062: # L TC TWIDDLE
046103,000063: # L+1 ADRES DESIRED TASK
046104,000064: # L+2 RELINT (RETURNS HERE)
046105,000065:
046106,000066: # NORMAL EXIT MODES --
046107,000067: # AT L+3 OF CALLING SEQUENCE.
046108,000068:
046109,000069: # ALARM OR ABORT EXIT MODES --
046110,000070: # TC ABORT
046111,000071: # OCT 1203 (WAITLIST OVERFLOW -- TOO MANY TASKS)
046112,000072:
046113,000073: # ERASABLE INITIALIZATION REQUIRED --
046114,000074: # ACCOMPLISHED BY FRESH START -- LST2, ..., LST2 +16 = ENDTASK
046115,000075: # LST1, ..., LST1 +7 = NEG1/2
046116,000076:
046117,000077: # OUTPUT --
046118,000078: # LST1 AND LST2 UPDATED WTIH NEW TASK AND ASSOCIATED TIME.
046119,000079:
046120,000080: # DEBRIS --
046121,000081: # CENTRALS -- A,Q,L
046122,000082: # OTHER -- WAITEXIT, WAITADR, WAITTEMP, WAITBANK
046123,000083:
046124,000084: # DETAILED ANALYSIS OF TIMING --
046125,000085: # CONTROL WILL NOT BE RETURNED TO THE SPECIFIED ADDRESS (2CADR) IN EXACTLY DELTA T CENTISECONDS.
046126,000086: # THE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS:
046127,000087: # LET T0 = THE TIME OF THE TC WAITLIST
046128,000088: # LET TS = T0 +147U + COUNTER INCREMENTS (SET UP TIME)
046129,000089: # LET X = TS -(100TS)/100 (VARIANCE FROM COUNTERS)
046130,000090: # LET Y = LENGTH OF TIME OF INHIBIT INTERRUPT AFTER T3RUPT
046131,000091: # LET Z = LENGTH OF TIME TO PROCESS TASKS WHICH ARE DUE THIS T3RUPT BUT DISPATCHED EARLIER.
046132,000092: # (Z=0, USUALLY).
046133,000093: # LET DELTD = THE ACTUAL TIME TAKEN TO GIVE CONTROL TO 2CADR
046134,000094: # THEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS*
046135,000095: # *THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME.
046136,000096: # IN SHORT, THE ACTUAL TIME TO RETURN CONTROL TO A 2CADR IS AUGMENTED BY THE TIME TO SET UP THE TASK'S
046137,000097: # INTERRUPT, ALL COUNTERS TICKING, THE T3RUPT PROCESSING TIME, THE WAITLIST PROCESSING TIME AND THE POSSIBILITY
046138,000098: # OF OTHER TASKS INHIBITING THE INTERRUPT.
046139,000099:
046140,000100: 5173 BLOCK 02
046141,000101: # Page 1118
046142,000102: 5173 E3,1400 EBANK= LST1 # TASK LISTS IN SWITCHED E BANK.
046143,000103:
046144,000104: 5173 COUNT* $$/WAIT
046145,000105: 5173 00004 TWIDDLE INHINT
046146,000106: 5174 54001 TS L # SAVE DELAY TIME IN L
046147,000107: 5175 34733 CA POSMAX
046148,000108: 5176 26002 ADS Q # CREATING OVERFLOW AND Q-1 IN Q
046149,000109: 5177 30006 CA BBANK
046150,000110: 5200 00006 EXTEND
046151,000111: 5201 04007 ROR SUPERBNK
046152,000112: 5202 56001 XCH L
046153,000113:
046154,000114: 5203 00004 WAITLIST INHINT
046155,000115: 5204 56002 XCH Q SAVE DELTA
046156,000116: 5205 54061 TS WAITEXIT WAITEXIT.
046157,000117: 5206 00006 EXTEND
046158,000118: 5207 50061 INDEX WAITEXIT # IF TWIDDLING, THE TS SKIPS TO HERE
046159,000119: 5210 30001 DCA 0 # PICK UP 2CADR OF TASK.
046160,000120: 5211 54063 -1 TS WAITADR # BBCON WILL REMAIN IN L
046161,000121: 5212 35220 DLY2 CAF WAITBB # ENTRY FROM FIXDELAY AND VARDELAY.
046162,000122: 5213 56006 XCH BBANK
046163,000123: 5214 13232 TCF WAIT2
046164,000124:
046165,000125: # RETURN TO CALLER AFTER TASK INSERTION:
046166,000126:
046167,000127: 5215 52062 LVWTLIST DXCH WAITEXIT
046168,000128: 5216 64752 AD TWO
046169,000129: 5217 52006 DTCB
046170,000130:
046171,000131: 5220 E3,1400 EBANK= LST1
046172,000132: 5220 02063 WAITBB BBCON WAIT2
046173,000133:
046174,000134: # RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1.
046175,000135:
046176,000136: 5221 50002 FIXDELAY INDEX Q # BOTH ROUTINES MUST BE CALLED UNDER
046177,000137: # Was CAF --- RSB 2004.
046178,000138: 5222 30000 CA 0 # WAITLIST CONTROL AND TERMINATE THE TASK
046179,000139: 5223 24002 INCR Q # IN WHICH THEY WERE CALLED.
046180,000140:
046181,000141: # RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A.
046182,000142:
046183,000143: 5224 56002 VARDELAY XCH Q # DT TO Q. TASK ADRES TO WAITADR.
046184,000144: 5225 54063 TS WAITADR
046185,000145: 5226 30006 CA BBANK # BBANK IS SAVED DURING DELAY.
046186,000146: 5227 00006 EXTEND
046187,000147: 5230 04007 ROR SUPERBNK # ADD SBANK TO BBCON.
046188,000148: 5231 54001 TS L
046189,000149: 5232 35235 CAF DELAYEX
046190,000150: 5233 54061 TS WAITEXIT # GO TO TASKOVER AFTER TASK ENTRY.
046191,000151: 5234 15212 TCF DLY2
046192,000152:
046193,000153: # Page 1119
046194,000154: 5235 15257 DELAYEX TCF TASKOVER -2 # RETURNS TO TASKOVER.
046195,000155:
046196,000156: # Page 1120
046197,000157: # ENDTASK MUST ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE.
046198,000158:
046199,000159: 5236 E3,1400 EBANK= LST1
046200,000160: 5236 72537 73714 ENDTASK -2CADR SVCT3
046201,000161:
046202,000162: 5240 10076 SVCT3 CCS FLAGWRD2 # DRIFT FLAG
046203,000163: 5241 15261 TCF TASKOVER
046204,000164: 5242 15261 TCF TASKOVER
046205,000165: 5243 15244 TCF +1
046206,000166:
046207,000167: 5244 11301 CKIMUSE CCS IMUCADR # DON'T DO NBDONLY IF SOMEONE ELSE IS IN
046208,000168: 5245 15256 TCF SVCT3X # IMUSTALL.
046209,000169: 5246 15251 TCF +3
046210,000170: 5247 15256 TCF SVCT3X
046211,000171: 5250 15256 TCF SVCT3X
046212,000172:
046213,000173: 5251 37726 +3 CAF PRIO35 # COMPENSATE FOR NBD COEFFICIENTS ONLY.
046214,000174: 5252 05072 TC NOVAC # ENABLE EVERY 81.93 SECONDS
046215,000175: 5253 E3,1460 EBANK= NBDX
046216,000176: 5253 03563 14063 2CADR NBDONLY
046217,000177:
046218,000178: 5255 15261 TCF TASKOVER
046219,000179:
046220,000180: 5256 05221 SVCT3X TC FIXDELAY # DELAY MAX OF 2 TIMES FOR IMUZERO.
046221,000181: 5257 00764 DEC 500 B-14
046222,000182: 5260 05240 TC SVCT3 # CHECK DRIFT FLAG AGAIN.
046223,000183:
046224,000184: # Page 1121
046225,000185: # BEGIN TASK INSERTION.
046226,000186:
046227,000187: 01,3232 BANK 01
046228,000188: 01,3232 COUNT* $$/WAIT
046229,000189: 01,3232 54062 WAIT2 TS WAITBANK # BBANK OF CALLING PROGRAM.
046230,000190: 01,3233 30002 CA Q
046231,000191: 01,3234 00006 EXTEND
046232,000192: 01,3235 63524 BZMF WAITP00H
046233,000193:
046234,000194: 01,3236 40026 CS TIME3
046235,000195: 01,3237 64744 AD BIT8 # BIT 8 = OCT 200
046236,000196: 01,3240 10000 CCS A # TEST 200 - C(TIME3). IF POSITIVE,
046237,000197: # IT MEANS THAT TIME3 OVERFLOW HAS OCCURRED PRIOR TO CS TIME3 AND THAT
046238,000198: # C(TIME3) = T - T1, INSTEAD OF 1.0 - (T1 - T). THE FOLLOWING FOUR
046239,000199: # ORDERS SET C(A) = TD - T1 + 1 IN EITHER CASE.
046240,000200:
046241,000201: 01,3241 66112 AD OCT40001 # OVERFLOW HAS OCCURRED. SET C(A) =
046242,000202: 01,3242 40000 CS A # T - T1 + 1.0 - 201
046243,000203:
046244,000204: # NORMAL CASE (C(A) NNZ) YIELDS SAME C(A): -( -(1.0-(T1-T)) + 200) - 1
046245,000205:
046246,000206: 01,3243 63371 AD OCT40201
046247,000207: 01,3244 60002 AD Q # RESULT = TD - T1 + 1.
046248,000208:
046249,000209: 01,3245 10000 CCS A # TEST TD - T1 +1.
046250,000210:
046251,000211: 01,3246 61400 AD LST1 # IF TD - T1 POS, GO TO WTLST5 WITH
046252,000212: 01,3247 13311 TCF WTLST5 # C(A) = (TD - T1) + C(LST1) = TD-T2+1
046253,000213:
046254,000214: 01,3250 13251 NOOP
046255,000215: 01,3251 40002 CS Q
046256,000216:
046257,000217: # NOTE THAT THIS PROGRAM SECTION IS NEVER ENTERED WHEN T-T1 G/E -1,
046258,000218: # SINCE TD-T1+1 = (TD-T) + (T-T1+1), AND DELTA T = TD-T G/E +1. (G/E
046259,000219: # SYMBOL MEANS GREATER THAN OR EQUAL TO). THUS THERE NEED BE NO CON-
046260,000220: # CERN OVER A PREVIOUS OR IMMINENT OVEFLOW OF TIME3 HERE.
046261,000221:
046262,000222: 01,3252 64736 AD POS1/2 # WHEN TD IS NEXT, FORM QUANTITY
046263,000223: 01,3253 64736 AD POS1/2 # 1.0 - DELTA T = 1.0 - (TD - T)
046264,000224: 01,3254 56026 XCH TIME3
046265,000225: 01,3255 64735 AD NEGMAX
046266,000226: 01,3256 60002 AD Q # 1.0 - DELTAT T NOW COMPLETE.
046267,000227: 01,3257 00006 EXTEND # ZERO INDEX Q.
046268,000228: 01,3260 22007 QXCH 7 # (ZQ)
046269,000229:
046270,000230: # Page 1122
046271,000231: 01,3261 57400 WTLST4 XCH LST1
046272,000232: 01,3262 57401 XCH LST1 +1
046273,000233: 01,3263 57402 XCH LST1 +2
046274,000234: 01,3264 57403 XCH LST1 +3
046275,000235: 01,3265 57404 XCH LST1 +4
046276,000236: 01,3266 57405 XCH LST1 +5
046277,000237: 01,3267 57406 XCH LST1 +6
046278,000238: 01,3270 57407 XCH LST1 +7
046279,000239:
046280,000240: 01,3271 30063 CA WAITADR # (MINOR PART OF TASK CADR HAS BEEN IN L.)
046281,000241: 01,3272 50002 INDEX Q
046282,000242: 01,3273 13274 TCF +1
046283,000243:
046284,000244: 01,3274 53411 DXCH LST2
046285,000245: 01,3275 53413 DXCH LST2 +2
046286,000246: 01,3276 53415 DXCH LST2 +4
046287,000247: 01,3277 53417 DXCH LST2 +6
046288,000248: 01,3300 53421 DXCH LST2 +8D
046289,000249: 01,3301 53423 DXCH LST2 +10D # AT END, CHECK THAT C(LST2 +10) IS STD
046290,000250: 01,3302 53425 DXCH LST2 +12D
046291,000251: 01,3303 53427 DXCH LST2 +14D
046292,000252: 01,3304 53431 DXCH LST2 +16D
046293,000253: 01,3305 65236 AD ENDTASK # END ITEM, AS CHECK FOR EXCEEDING
046294,000254: # THE LENGTH OF THE LIST.
046295,000255: 01,3306 00006 EXTEND # DUMMY TASK ADRES SHOULD BE IN FIXED-
046296,000256: 01,3307 15215 BZF LVWTLIST # FIXED SO ITS ADRES ALONE DISTINGUISHES
046297,000257: 01,3310 13364 TCF WTABORT # IT.
046298,000258:
046299,000259: # Page 1123
046300,000260: 01,3311 10000 WTLST5 CCS A # TEST TD - T2 + 1
046301,000261: 01,3312 61401 AD LST1 +1
046302,000262: 01,3313 13317 TCF +4
046303,000263: 01,3314 64753 AD ONE
046304,000264: 01,3315 03375 TC WTLST2
046305,000265: 01,3316 00001 OCT 1
046306,000266:
046307,000267: 01,3317 10000 +4 CCS A # TEST TD - T3 + 1
046308,000268: 01,3320 61402 AD LST1 +2
046309,000269: 01,3321 13325 TCF +4
046310,000270: 01,3322 64753 AD ONE
046311,000271: 01,3323 03375 TC WTLST2
046312,000272: 01,3324 00002 OCT 2
046313,000273:
046314,000274: 01,3325 10000 +4 CCS A # TEST TD - T4 + 1
046315,000275: 01,3326 61403 AD LST1 +3
046316,000276: 01,3327 13333 TCF +4
046317,000277: 01,3330 64753 AD ONE
046318,000278: 01,3331 03375 TC WTLST2
046319,000279: 01,3332 00003 OCT 3
046320,000280:
046321,000281: 01,3333 10000 +4 CCS A # TEST TD - T5 + 1
046322,000282: 01,3334 61404 AD LST1 +4
046323,000283: 01,3335 13341 TCF +4
046324,000284: 01,3336 64753 AD ONE
046325,000285: 01,3337 03375 TC WTLST2
046326,000286: 01,3340 00004 OCT 4
046327,000287:
046328,000288: 01,3341 10000 +4 CCS A # TEST TD - T6 + 1
046329,000289: 01,3342 61405 AD LST1 +5
046330,000290: 01,3343 13347 TCF +4
046331,000291: 01,3344 64753 AD ONE
046332,000292: 01,3345 03375 TC WTLST2
046333,000293: 01,3346 00005 OCT 5
046334,000294:
046335,000295: 01,3347 10000 +4 CCS A # TEST TD - T7 + 1
046336,000296: 01,3350 61406 AD LST1 +6
046337,000297: 01,3351 13355 TCF +4
046338,000298: 01,3352 64753 AD ONE
046339,000299: 01,3353 03375 TC WTLST2
046340,000300: 01,3354 00006 OCT 6
046341,000301:
046342,000302: # Page 1124
046343,000303: 01,3355 10000 +4 CCS A # TEST TD - T2 + 1
046344,000304: 01,3356 61407 AD LST1 +7
046345,000305: 01,3357 13363 TCF +4
046346,000306: 01,3360 64753 AD ONE
046347,000307: 01,3361 03375 TC WTLST2
046348,000308: 01,3362 00007 OCT 7
046349,000309:
046350,000310: 01,3363 10000 +4 CCS A
046351,000311: 01,3364 03372 WTABORT TC FILLED
046352,000312: 01,3365 13366 NOOP # CAN'T GET HERE
046353,000313: 01,3366 64753 AD ONE
046354,000314: 01,3367 03375 TC WTLST2
046355,000315: 01,3370 00010 OCT 10
046356,000316:
046357,000317: 01,3371 40201 OCT40201 OCT 40201
046358,000318:
046359,000319: # Page 1125
046360,000320: 01,3372 52062 FILLED DXCH WAITEXIT
046361,000321: 01,3373 05706 TC BAILOUT1 # NO ROOM IN THE INN
046362,000322: 01,3374 31203 OCT 31203
046363,000323:
046364,000324: # Page 1126
046365,000325: # THE ENTRY TC WTLST2 JUST PRECEDING OCT N IS FOR T LE TD LE T -1.
046366,000326: # N N+1
046367,000327: # (LE MEANS LESS THAN OR EQUAL TO). AT ENTRY, C(A) = -(TD - T + 1)
046368,000328: # N+1
046369,000329: # THE LST1 ENTRY-(T -T +1) IS TO BE REPLACED BY -(TD - T + 1), AND
046370,000330: # N+1 N N
046371,000331: # THE ENTRY-(T - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING.
046372,000332: # N+1
046373,000333:
046374,000334: 01,3375 54064 WTLST2 TS WAITTEMP # C(A) = -(TD - T + 1)
046375,000335: 01,3376 50002 INDEX Q
046376,000336: # Was CAF --- RSB 2004.
046377,000337: 01,3377 30000 CA 0
046378,000338: 01,3400 54002 TS Q # INDEX VALUE INTO Q.
046379,000339:
046380,000340: 01,3401 34753 CAF ONE
046381,000341: 01,3402 60064 AD WAITTEMP
046382,000342: 01,3403 50002 INDEX Q # C(A) = -(TD - T ) + 1.
046383,000343: 01,3404 27377 ADS LST1 -1 # N
046384,000344:
046385,000345: 01,3405 40064 CS WAITTEMP
046386,000346: 01,3406 50002 INDEX Q
046387,000347: 01,3407 13261 TCF WTLST4
046388,000348:
046389,000349: # C(TIME3) = 1.0 - (T1 - T)
046390,000350:
046391,000351: # C(LST1) = - (T2 - T1) + 1
046392,000352: # C(LST1+1) = - (T3 - T2) + 1
046393,000353: # C(LST1+2) = - (T4 - T3) + 1
046394,000354: # C(LST1+3) = - (T5 - T4) + 1
046395,000355: # C(LST1+4) = - (T6 - T5) + 1
046396,000356:
046397,000357: # C(LST2) = 2CADR TASK1
046398,000358: # C(LST2+2) = 2CADR TASK2
046399,000359: # C(LST2+4) = 2CADR TASK3
046400,000360: # C(LST2+6) = 2CADR TASK4
046401,000361: # C(LST2+8) = 2CADR TASK5
046402,000362: # C(LST2+10) = 2CADR TASK6
046403,000363:
046404,000364: # Page 1127
046405,000365: # ENTERS HERE ON T3 RUPT TO DISPATCH WAITLISTED TASK.
046406,000366:
046407,000367: 01,3410 00006 T3RUPT EXTEND
046408,000368: 01,3411 04007 ROR SUPERBNK # READ CURRENT SUPERBANK VALUE AND
046409,000369: 01,3412 54016 TS BANKRUPT # SAVE WITH E AND F BANK VALUES.
046410,000370: 01,3413 00006 EXTEND
046411,000371: 01,3414 22012 QXCH QRUPT
046412,000372:
046413,000373: 01,3415 34734 T3RUPT2 CAF NEG1/2 # DISPATCH WAITLIST TASK.
046414,000374: 01,3416 57407 XCH LST1 +7
046415,000375: 01,3417 57406 XCH LST1 +6
046416,000376: 01,3420 57405 XCH LST1 +5
046417,000377: 01,3421 57404 XCH LST1 +4 # 1. MOVE UP LST1 CONTENTS, ENTERING
046418,000378: 01,3422 57403 XCH LST1 +3 # A VALUE OF 1/2 +1 AT THE BOTTOM
046419,000379: 01,3423 57402 XCH LST1 +2 # FOR T6-T5, CORRESPONDING TO THE
046420,000380: 01,3424 57401 XCH LST1 +1 # INTERVAL 81.91 SEC FOR ENDTASK.
046421,000381: 01,3425 57400 XCH LST1
046422,000382: 01,3426 64733 AD POSMAX # 2. SET T3 = 1.0 - T2 - T USING LIST 1.
046423,000383: 01,3427 26026 ADS TIME3 # SO T3 WON'T TICK DURING UPDATE.
046424,000384: 01,3430 54332 TS RUPTAGN
046425,000385: 01,3431 44755 CS ZERO
046426,000386: 01,3432 54332 TS RUPTAGN # SETS RUPTAGN TO +1 ON OVERFLOW.
046427,000387:
046428,000388: 01,3433 00006 EXTEND # DISPATCH TASK.
046429,000389: 01,3434 45237 DCS ENDTASK
046430,000390: 01,3435 53431 DXCH LST2 +16D
046431,000391: 01,3436 53427 DXCH LST2 +14D
046432,000392: 01,3437 53425 DXCH LST2 +12D
046433,000393: 01,3440 53423 DXCH LST2 +10D
046434,000394: 01,3441 53421 DXCH LST2 +8D
046435,000395: 01,3442 53417 DXCH LST2 +6
046436,000396: 01,3443 53415 DXCH LST2 +4
046437,000397: 01,3444 53413 DXCH LST2 +2
046438,000398: 01,3445 53411 DXCH LST2
046439,000399:
046440,000400: 01,3446 56001 XCH L
046441,000401: 01,3447 00006 EXTEND
046442,000402: 01,3450 01007 WRITE SUPERBNK # SET SUPERBANK FROM BBCON OF 2CADR
046443,000403: 01,3451 56001 XCH L # RESTORE TO L FOR DXCH Z.
046444,000404: 01,3452 52006 DTCB
046445,000405:
046446,000406: # Page 1128
046447,000407: # RETURN, AFTER EXECUTION OF T3 OVERFLOW TASK:
046448,000408:
046449,000409: 5261 BLOCK 02
046450,000410: 5261 COUNT* $$/WAIT
046451,000411: 5261 10332 TASKOVER CCS RUPTAGN # IF +1 RETURN TO T3RUPT, IF -0 RESUME.
046452,000412: 5262 35220 CAF WAITBB
046453,000413: 5263 54006 TS BBANK
046454,000414: 5264 13415 TCF T3RUPT2 # DISPATCH NEXT TASK IF IT WAS DUE.
046455,000415:
046456,000416: 5265 30016 CA BANKRUPT
046457,000417: 5266 00006 EXTEND
046458,000418: 5267 01007 WRITE SUPERBNK # RESTORE SUPERBANK BEFORE RESUME IS DON
046459,000419:
046460,000420: 5270 00006 RESUME EXTEND
046461,000421: 5271 22012 QXCH QRUPT
046462,000422: 5272 30016 NOQRSM CA BANKRUPT
046463,000423: 5273 56006 XCH BBANK
046464,000424: 5274 52011 NOQBRSM DXCH ARUPT
046465,000425: 5275 00003 RELINT
046466,000426: 5276 50017 RESUME
046467,000427:
046468,000428: # Page 1129
046469,000429: # LONGCALL
046470,000430: # PROGRAM DESCRIPTION DATE -- 17 MARCH 1967
046471,000431: # PROGRAM WRITTEN BY W.H.VANDEVER LOG SECTION WAITLIST
046472,000432: # MOD BY -- R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 100
046473,000433:
046474,000434: # FUNCTIONAL DESCRIPTION --
046475,000435: # LONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK
046476,000436: # IMMEDIATELY FOLLOWING THE TC LONGCALL. FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF
046477,000437: # A DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO
046478,000438: # START.
046479,000439: # CALLING SEQUENCE --
046480,000440: # EXTEND
046481,000441: # DCA TIMELOC
046482,000442: # TC LONGCALL
046483,000443: # 2CADR TASKTODO
046484,000444: # NORMAL EXIT MODE --
046485,000445: # 1) TC WAITLIST
046486,000446: # 2) DTCB (TC L+3 OF CALLING ROUTINE 1S PASS THRU LONGCYCL)
046487,000447: # 3) DTCB (TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL)
046488,000448: # ALARM OR ABORT EXIT MODE --
046489,000449: # NONE
046490,000450: # OUTPUT --
046491,000451: # LONGTIME AND LONGTIME+1 = DELTA TIME
046492,000452: # LONGEXIT AND LONGEXIT+1 = RETURN 2CADR
046493,000453: # LONGCADR AND LONGCADR+1 = TASK 2CADR
046494,000454: # A = SINGLE PRECISION TIME FOR WAITLIST
046495,000455: # ERASABLE INITIALIZATION --
046496,000456: # A = MOST SIGNIFICANT PART OF DELTA TIME
046497,000457: # L = LEAST SIGNIFICANT PART OF DELTA TIME
046498,000458: # Q = ADDRESS OF 2CADR TASK VALUE
046499,000459: # DEBRIS --
046500,000460: # A,Q,L
046501,000461: # LONGCADR AND LONGCADR+1
046502,000462: # LONGEXIT AND LONGEXIT+1
046503,000463: # LONGTIME AND LONGTIME+1
046504,000464: # *** THE FOLLOWING IS TO BE IN FIXED-FIXED AND UNSWITCHED ERASIBLE **
046505,000465:
046506,000466: 5277 BLOCK 02
046507,000467: 5277 E3,1400 EBANK= LST1
046508,000468: 5277 53153 LONGCALL DXCH LONGTIME # OBTAIN THE DELTA TIME
046509,000469:
046510,000470: 5300 00006 EXTEND # OBTAIN THE 2CADR
046511,000471: # Page 1130
046512,000472: 5301 50002 NDX Q
046513,000473: 5302 30001 DCA 0
046514,000474: 5303 53147 DXCH LONGCADR
046515,000475:
046516,000476: 5304 00006 EXTEND # NO GO TO THE APPROPRIATE SWITCHED BANK
046517,000477: 5305 35310 DCA LGCL2CDR # FOR THE REST OF LONGCALL
046518,000478: 5306 52006 DTCB
046519,000479:
046520,000480: 5307 E3,1400 EBANK= LST1
046521,000481: 5307 03453 02063 LGCL2CDR 2CADR LNGCALL2
046522,000482:
046523,000483: # *** THE FOLLOWING MAY BE IN A SWITCHED BANK, INCLUDING ITS ERASABLE ***
046524,000484:
046525,000485: 01,3453 BANK 01
046526,000486: 01,3453 COUNT* $$/WAIT
046527,000487: 01,3453 23435 LNGCALL2 LXCH LONGEXIT +1 # SAVE THE CORRECT BB FOR RETURN
046528,000488: 01,3454 34752 CA TWO # OBTAIN THE RETURN ADDRESS
046529,000489: 01,3455 26002 ADS Q
046530,000490: 01,3456 55434 TS LONGEXIT
046531,000491:
046532,000492: 01,3457 31152 CA LONGTIME # CHECK FOR LEGITIMATE DELTA-TIME
046533,000493: 01,3460 10000 CCS A
046534,000494: 01,3461 13467 TCF LONGCYCL # HI-ORDER OK --> ALL IS OK.
046535,000495: 01,3462 13464 TCF +2 # HI-ORDER ZERO --> CHECK LO-ORDER.
046536,000496: 01,3463 13522 TCF LONGP00H # HI-ORDER NEG. --> NEG. DT
046537,000497: 01,3464 31153 +2 CA LONGTIME +1 # CHECK LO-ORDER FOR ZERO OR NEGATIVE.
046538,000498: 01,3465 00006 EXTEND
046539,000499: 01,3466 63522 BZMF LONGP00H # BAD DELTA-TIME. ABORT
046540,000500:
046541,000501: # *** WAITLIST TASK LONGCYCL ***
046542,000502:
046543,000503: 01,3467 00006 LONGCYCL EXTEND # CAN WE SUCCESFULLY TAKE ABOUT 1.25
046544,000504: 01,3470 43501 DCS DPBIT14 # MINUTES OFF OF LONGTIME
046545,000505: 01,3471 21153 DAS LONGTIME
046546,000506:
046547,000507: 01,3472 11153 CCS LONGTIME +1 # THE REASONING BEHIND THIS PART IS
046548,000508: 01,3473 13512 TCF MUCHTIME # INVOLVED, TAKING INTO ACCOUNT THAT THE
046549,000509: # WORDS MAY NOT BE SIGNED CORRECTED (DP
046550,000510: # BASIC INSTRUCTIONS
046551,000511: # DO NOT SIGN CORRECT) AND THAT WE SUBTRAC-
046552,000512: # TED BIT14 (1 OVER HALF THE POS. VALUE
046553,000513: # REPRESENTABLE IN SINGLE WORD)
046554,000514: 01,3474 13475 NOOP # CAN'T GET HERE *************
046555,000515: 01,3475 13476 TCF +1
046556,000516: 01,3476 11152 CCS LONGTIME
046557,000517: 01,3477 13512 TCF MUCHTIME
046558,000518: 01,3500 00000 DPBIT14 OCT 00000
046559,000519: 01,3501 20000 OCT 20000
046560,000520: # Page 1131
046561,000521: 01,3502 34736 LASTTIME CA BIT14 # GET BACK THE CORRECT DELTA TFOR WAITLIST
046562,000522: 01,3503 27153 ADS LONGTIME +1
046563,000523: 01,3504 05203 TC WAITLIST
046564,000524: 01,3505 E3,1400 EBANK= LST1
046565,000525: 01,3505 03517 02063 2CADR GETCADR # THE ENTRY TO OUR LONGCADR
046566,000526:
046567,000527: 01,3507 33521 LONGRTRN CA TSKOVCDR # SET IT UP SO THAT ONLY THE FIRST EXIT IS
046568,000528: 01,3510 53435 DXCH LONGEXIT # TO THE CALLER OF LONGCALL
046569,000529: 01,3511 52006 DTCB # THE REST ARE TO TASKOVER
046570,000530:
046571,000531: 01,3512 34736 MUCHTIME CA BIT14 # WE HAVE OVER OUR ABOUT 1.25 MINUTES
046572,000532: 01,3513 05203 TC WAITLIST # SO SET UP FOR ANOTHER CYCLE THROUGH HERE
046573,000533: 01,3514 E3,1400 EBANK= LST1
046574,000534: 01,3514 03467 02063 2CADR LONGCYCL
046575,000535:
046576,000536: 01,3516 13507 TCF LONGRTRN # NOW EXIT PROPERLY
046577,000537:
046578,000538: # *** WAITLIST TASK GETCADR ***
046579,000539:
046580,000540: 01,3517 53147 GETCADR DXCH LONGCADR # GET THE LONGCALL THAT WE WISHED TO START
046581,000541: 01,3520 52006 DTCB # AND TRANSFER CONTROL TO IT
046582,000542:
046583,000543: 01,3521 05261 TSKOVCDR GENADR TASKOVER
046584,000544: 01,3522 53435 LONGP00H DXCH LONGEXIT
046585,000545: 01,3523 13525 TCF +2
046586,000546: 01,3524 52062 WAITP00H DXCH WAITEXIT
046587,000547: 01,3525 05716 +2 TC P00DOO1
046588,000548: 01,3526 21204 OCT 21204
046589,000549:
End of include-file WAITLIST.agc. Parent file is MAIN.agc