Source Code
![]() |
This is the source-code for the Apollo 9 Command Module's Guidance Computer.
These files were derived originally from the scan from MIT's Dibner Institute's
now-discontinued website titled "History of Recent Science and Technology", which
in turn was originally created by Gary Neff, though his high-quality scans were
unfortunately reduced in legibility when presented online.
The markings on the front of the
printout imply that it was the original AGC developer Norm Brodeur's copy.
A scan by Ron Burkey has superceded it, made from a more-legible copy from the collection of original
AGC developer Fred Martin. The source code was transcribed from
those images by Ron Burkey. Note that the page images
presented online are of reduced quality, and that higher-quality images
are available. Report any conversion errors or legibility
problems in page images to info@sandroid.org.
Notations on the program listing read, in part:ASSEMBLE REVISION 249 OF AGC PROGRAM COLOSSUS BY NASA 2021111-041 20'35 OCT. 28,1968Note that the date is the date of the printout, not the date of the program revision. |
052116,000002: ## Copyright: Public domain.
052117,000003: ## Filename: WAITLIST.agc
052118,000004: ## Purpose: Part of the source code for Colossus, build 249.
052119,000005: ## It is part of the source code for the Command Module's (CM)
052120,000006: ## Apollo Guidance Computer (AGC), for Apollo 9.
052121,000007: ## Assembler: yaYUL
052122,000008: ## Reference: Begins on p. 1191
052123,000009: ## Contact: Ron Burkey <info@sandroid.org>.
052124,000010: ## Website: www.ibiblio.org/apollo/index.html
052125,000011: ## Mod history: 08/28/04 RSB Began adapting from similar Luminary131 file.
052126,000012: ## 05/14/05 RSB Corrected website reference above.
052127,000013: ## 2010-10-24 JL Indentation fixes.
052128,000014: ## 2011-05-07 JL Remove workarounds.
052129,000015: ## 2017-01-06 RSB Page numbers now agree with those on the
052130,000016: ## original harcopy, as opposed to the PDF page
052131,000017: ## numbers in 1701.pdf.
052132,000018: ## 2017-01-20 RSB Cross-diff'd comment text (not whitespace)
052133,000019: ## vs the already-proofed corresponding Colossus
052134,000020: ## 237 and Comanche 55 source-code files
052135,000021: ## and corrected errors found.
052136,000022: ## 2017-02-09 RSB Comment-text fixes identified in proofing Artemis 72
052137,000023: ## 2017-03-16 RSB Comment-text fixes identified in 5-way
052138,000024: ## side-by-side diff of Luminary 69/99/116/131/210.
052139,000025:
052140,000026: ## The contents of the "Colossus249" files, in general, are transcribed
052141,000027: ## from a scanned copy of the program listing. Notations on this
052142,000028: ## document read, in part:
052143,000029: ##
052144,000030: ## Assemble revision 249 of AGC program Colossus by NASA
052145,000031: ## 2021111-041. October 28, 1968.
052146,000032: ##
052147,000033: ## This AGC program shall also be referred to as
052148,000034: ## Colossus 1A
052149,000035: ##
052150,000036: ## Prepared by
052151,000037: ## Massachusetts Institute of Technology
052152,000038: ## 75 Cambridge Parkway
052153,000039: ## Cambridge, Massachusetts
052154,000040: ## under NASA contract NAS 9-4065.
052155,000041: ##
052156,000042: ## Refer directly to the online document mentioned above for further information.
052157,000043: ## Please report any errors (relative to the scanned pages) to info@sandroid.org.
052158,000044: ##
052159,000045: ## In some cases, where the source code for Luminary 131 overlaps that of
052160,000046: ## Colossus 249, this code is instead copied from the corresponding Luminary 131
052161,000047: ## source file, and then is proofed to incorporate any changes.
052162,000048:
![]() |
Page 1191 |
052164,000050: # PROGRAM DESCRIPTION DATE - 10 OCTOBER 1966
052165,000051: # MOD NO - 2 LOG SECTION - WAITLIST
052166,000052: # MOD BY - MILLER (DTMAX INCREASED TO 162.5 SEC) ASSEMBLY SUNBURST REV 5
052167,000053: # MOD 3 BY KERNAN (INHINT INSERTED AT WAITLIST) 2/28/68 SKIPPER REV 4
052168,000054: # MOD 4 BY KERNAN (TWIDDLE IN 54) 3/28/68 SKIPPER REV 13.
052169,000055:
052170,000056: # FUNCTIONAL DESCRIPTION -
052171,000057: # PART OF A SECTION OF PROGRAMS,- WAITLIST, TASKOVER, T3RUPT, USED TO CALL A PROGRAM, (CALLED A TASK),
052172,000058: # WHICH IS TO BEGIN IN C(A) CENTISECONDS. WAITLIST UPDATES TIME3, LST1 AND LST2. THE MEANING OF THESE LISTS
052173,000059: # FOLLOW.
052174,000060:
052175,000061: # C(TIME3) = 16384 -(T1-T) CENTISECONDS, (T=PRESENT TIME, T1-TIME FOR TASK1)
052176,000062:
052177,000063: # C(LST1) = -(T2-T1)+1
052178,000064: # C(LST1 +1) = -(T3-T2)+1
052179,000065: # C(LST1 +2) = -(T4-T3)+1
052180,000066: # .
052181,000067: # .
052182,000068: # C(LST1 +6) = -(T8-T7)+1
052183,000069: # C(LST1 +7) = -(T9-T8)+1
052184,000070:
052185,000071: # C(LST2) = 2CADR OF TASK1
052186,000072: # C(LST2 +2) = 2CADR OF TASK2
052187,000073: # .
052188,000074: # .
052189,000075: # C(LST2 +14) = 2CADR OF TASK8
052190,000076: # C(LST2 +16) = 2CADR OF TASK9
052191,000077:
052192,000078: # WARNINGS-
052193,000079: # --------
052194,000080: # 1) 1 <= C(A) <= 16250D (1 CENTISECOND TO 162.5 SEC)
052195,000081: # 2) 9 TASKS MAXIMUM
052196,000082: # 3) TASKS CALLED UNDER INTERRUPT INHIBITED
052197,000083: # 4) TASKS END BY TC TASKOVER
052198,000084:
052199,000085: # CALLING SEQUENCE -
052200,000086: # L-1 CA DELTAT (TIME IN CENTISECONDS TO TASK START)
052201,000087: # L TC WAITLIST
052202,000088: # L+1 2CADR DESIRED TASK
052203,000089: # L+2 (MINOR OF 2CADR)
052204,000090: # L+3 RELINT (RETURNS HERE)
052205,000091:
052206,000092: # TWIDDLE-
052207,000093: # -------
052208,000094: # TWIDDLE IS FOR USE WHEN THE TASK BEING SET UP IS IN THE SAME EBANK AND FBANK AS THE USER. IN
052209,000095: # SUCH CASES, IT IMPROVES UPON WAITLIST BY ELIMINATING THE NEED FOR THE BBCON HALF OF THE 2CADR,
![]() |
Page 1192 |
052211,000097: # SAVING A WORD. TWIDDLE IS LIKE WAITLIST IN EVERY RESPECT EXCEPT CALLING SEQUENCE, TO WIT-
052212,000098: # L-1 CA DELTAT
052213,000099: # L TC TWIDDLE
052214,000100: # L+1 ADRES DESIRED TASK
052215,000101: # L+2 RELINT (RETURNS HERE)
052216,000102:
052217,000103: # NORMAL EXIT MODES -
052218,000104: # AT L+3 OF CALLING SEQUENCE
052219,000105:
052220,000106: # ALARM OR ABORT EXIT MODES -
052221,000107: # TC ABORT
052222,000108: # OCT 1203 (WAITLIST OVERFLOW - TOO MANY TASKS)
052223,000109:
052224,000110: # ERASABLE INITIALIZATION REQUIRED -
052225,000111: # ACCOMPLISHED BY FRESH START,-- LST2, ..., LST2 +16 = ENDTASK
052226,000112: # LST1, ..., LST1 +7 = NEG1/2
052227,000113:
052228,000114: # OUTPUT --
052229,000115: # LST1 AND LST2 UPDATED WITH NEW TASK AND ASSOCIATED TIME.
052230,000116:
052231,000117: # DEBRIS -
052232,000118: # CENTRALS - A,Q,L
052233,000119: # OTHER - WAITEXIT, WAITADR, WAITTEMP, WAITBANK
052234,000120:
052235,000121: # DETAILED ANALYSIS OF TIMING -
052236,000122: # CONTROL WILL NOT BE RETURNED TO THE SPECIFIED ADDRESS (2CADR) IN EXACTLY DELTA T CENTISECONDS.
052237,000123: # THE APPROXIMATE TIME MAY BE CALCULATED AS FOLLOWS
052238,000124: # LET TO = THE TIME OF THE TC WAITLIST
052239,000125: # LET TS = TO +147U + COUNTER INCREMENTS (SET UP TIME)
052240,000126: # LET X = TS -(100TS)/100 (VARIANCE FROM COUNTERS)
052241,000127: # LET Y = LENGTH OF TIME OF INHIBIT INTERRUPT AFTER T3RUPT
052242,000128: # LET Z = LENGTH OF TIME TO PROCESS TASKS WHICH ARE DUE THIS T3RUPT BUT DISPATCHED EARLIER.
052243,000129: # (Z=0, USUALLY)
052244,000130: # LET DELTD = THE ACTUAL TIME TAKEN TO GIVE CONTROL TO 2CADR
052245,000131: # THEN DELTD = TS+DELTA T -X +Y +Z +1.05MS* +COUNTERS*
052246,000132: # *-THE TIME TAKEN BY WAITLIST ITSELF AND THE COUNTER TICKING DURING THIS WAITLIST TIME.
052247,000133: # IN SHORT, THE ACTUAL TIME TO RETURN CONTROL TO A 2CADR IS AUGMENTED BY THE TIME TO SET UP THE TASK:S
052248,000134: # INTERRUPT, ALL COUNTERS TICKING, THE T3RUPT PROCESSING TIME, THE WAITLIST PROCESSING TIME AND THE POSSIBILITY
052249,000135: # OF OTHER TASKS INHIBITING THE INTERRUPT.
052250,000136:
052251,000137: 5130 BLOCK 02
![]() |
Page 1193 |
052253,000139: 5130 E3,1400 EBANK= LST1 # TASK LISTS IN SWITCHED E BANK.
052254,000140:
052255,000141: 5130 COUNT 02/WAIT
052256,000142:
052257,000143: 5130 00004 TWIDDLE INHINT
052258,000144: 5131 54001 TS L # SAVE DELAY TIME IN L
052259,000145: 5132 34672 CA POSMAX
052260,000146: 5133 26002 ADS Q # CREATING OVERFLOW AND Q-1 IN Q
052261,000147: 5134 30006 CA BBANK
052262,000148: 5135 00006 EXTEND
052263,000149: 5136 04007 ROR SUPERBNK
052264,000150: 5137 56001 XCH L
052265,000151:
052266,000152: 5140 00004 WAITLIST INHINT
052267,000153: 5141 56002 XCH Q # SAVE DELTA T IN Q AND RETURN IN
052268,000154: 5142 54061 TS WAITEXIT # WAITEXIT.
052269,000155: 5143 00006 EXTEND
052270,000156: 5144 50061 INDEX WAITEXIT # IF TWIDDLING, THE TS SKIPS TO HERE
052271,000157: 5145 30001 DCA 0 # PICK UP 2CADR OF TASK.
052272,000158: 5146 54063 -1 TS WAITADR # BBCON WILL REMAIN IN L
052273,000159: 5147 35155 DLY2 CAF WAITBB # ENTRY FROM FIXDELAY AND VARDELAY.
052274,000160: 5150 56006 XCH BBANK
052275,000161: 5151 13246 TCF WAIT2
052276,000162:
052277,000163: # RETURN TO CALLER AFTER TASK INSERTION:
052278,000164:
052279,000165: 5152 52062 LVWTLIST DXCH WAITEXIT
052280,000166: 5153 64711 AD TWO
052281,000167: 5154 52006 DTCB
052282,000168:
052283,000169: 5155 E3,1400 EBANK= LST1
052284,000170: 5155 02063 WAITBB BBCON WAIT2
052285,000171:
052286,000172: # RETURN TO CALLER +2 AFTER WAITING DT SPECIFIED AT CALLER +1.
052287,000173:
052288,000174: 5156 50002 FIXDELAY INDEX Q # BOTH ROUTINES MUST BE CALLED UNDER
052289,000175: 5157 30000 CAF 0 # WAITLIST CONTROL AND TERMINATE THE TASK
052290,000176: 5160 24002 INCR Q # IN WHICH THEY WERE CALLED.
052291,000177:
052292,000178: # RETURN TO CALLER +1 AFTER WAITING THE DT AS ARRIVING IN A.
052293,000179:
052294,000180: 5161 56002 VARDELAY XCH Q # DT TO Q. TASK ADRES TO WAITADR.
052295,000181: 5162 54063 TS WAITADR
052296,000182: 5163 30006 CA BBANK # BBANK IS SAVED DURING DELAY.
052297,000183: 5164 00006 EXTEND
052298,000184: 5165 04007 ROR SUPERBNK # ADD SBANK TO BBCON.
052299,000185: 5166 54001 TS L
052300,000186: 5167 35172 CAF DELAYEX
052301,000187: 5170 54061 TS WAITEXIT # GO TO TASKOVER AFTER TASK ENTRY.
052302,000188: 5171 15147 TCF DLY2
052303,000189:
![]() |
Page 1194 |
052305,000191: 5172 15211 DELAYEX TCF TASKOVER -2 # RETURNS TO TASKOVER
052306,000192:
![]() |
Page 1195 |
052308,000194: # ENDTASK MUST BE ENTERED IN FIXED-FIXED SO IT IS DISTINGUISHABLE BY ITS ADRES ALONE.
052309,000195:
052310,000196: 5173 E3,1400 EBANK= LST1
052311,000197: 5173 72602 73714 ENDTASK -2CADR SVCT3
052312,000198:
052313,000199: 5175 10076 SVCT3 CCS FLAGWRD2 # DRIFT FLAG
052314,000200: 5176 15213 TCF TASKOVER
052315,000201: 5177 15213 TCF TASKOVER
052316,000202: 5200 15201 TCF +1
052317,000203:
052318,000204: 5201 11322 CCS IMUCADR # DON'T DO NBDONLY IF SOMEONE ELSE IS IN
052319,000205: 5202 15213 TCF TASKOVER # IMUSTALL.
052320,000206: 5203 15206 TCF +3
052321,000207: 5204 15213 TCF TASKOVER
052322,000208: 5205 15213 TCF TASKOVER
052323,000209:
052324,000210: 5206 37672 +3 CAF PRIO35 # COMPENSATE FOR NBD COEFFICIENTS ONLY.
052325,000211: 5207 05027 TC NOVAC # ENABLE EVERY 81.93 SECONDS
052326,000212: 5210 E3,1460 EBANK= NBDX
052327,000213: 5210 03542 14063 2CADR NBDONLY
052328,000214:
052329,000215: 5212 15213 TCF TASKOVER
052330,000216:
![]() |
Page 1196 |
052332,000218: # BEGIN TASK INSERTION.
052333,000219:
052334,000220: 01,3246 BANK 01
052335,000221: 01,3246 COUNT 01/WAIT
052336,000222:
052337,000223: 01,3246 54062 WAIT2 TS WAITBANK # BBANK OF CALLING PROGRAM.
052338,000224: 01,3247 40026 CS TIME3
052339,000225: 01,3250 64703 AD BIT8 # BIT 8 = OCT 200
052340,000226: 01,3251 10000 CCS A # TEST 200 - C(TIME3). IF POSITIVE,
052341,000227: # IT MEANS THAT TIME3 OVERFLOW HAS OCCURRED PRIOR TO CS TIME3 AND THAT
052342,000228: # C(TIME3) = T - T1, INSTEAD OF 1.0 - (T1 - T). THE FOLLOWING FOUR
052343,000229: # ORDERS SET C(A) = TD - T1 + 1 IN EITHER CASE.
052344,000230:
052345,000231: 01,3252 66056 AD OCT40001 # OVERFLOW HAS OCCURRED. SET C(A) =
052346,000232: 01,3253 40000 CS A # T - T1 + 1.0 - 201
052347,000233:
052348,000234: # NORMAL CASE (C(A) NNZ) YIELDS SAME C(A): -( -(1.0-(T1-T)) + 200) - 1
052349,000235:
052350,000236: 01,3254 63402 AD OCT40201
052351,000237: 01,3255 60002 AD Q # RESULT = TD - T1 + 1.
052352,000238:
052353,000239: 01,3256 10000 CCS A # TEST TD - T1 +1
052354,000240:
052355,000241: 01,3257 61400 AD LST1 # IF TD - T1 POS, GO TO WTLST5 WITH
052356,000242: 01,3260 13322 TCF WTLST5 # C(A) = (TD - T1) + C(LST1) = TD-T2+1
052357,000243:
052358,000244: 01,3261 13262 NOOP
052359,000245: 01,3262 40002 CS Q
052360,000246:
052361,000247: # NOTE THAT THIS PROGRAM SECTION IS NEVER ENTERED WHEN T-T1 G/E -1,
052362,000248: # SINCE TD-T1+1 = (TD-T) + (T-T1+1), AND DELTA T = TD-T G/E +1. (G/E
052363,000249: # SYMBOL MEANS GREATER THAN OR EQUAL TO). THUS THERE NEED BE NO CON-
052364,000250: # CERN OVER A PREVIOUS OR IMMINENT OVERFLOW OF TIME3 HERE.
052365,000251:
052366,000252: 01,3263 64675 AD POS1/2 # WHEN TD IS NEXT, FORM QUANTITY
052367,000253: 01,3264 64675 AD POS1/2 # 1.0 - DELTA T = 1.0 - (TD - T)
052368,000254: 01,3265 56026 XCH TIME3
052369,000255: 01,3266 64674 AD NEGMAX
052370,000256: 01,3267 60002 AD Q # 1.0 - DELTAT T NOW COMPLETE.
052371,000257: 01,3270 00006 EXTEND # ZERO INDEX Q.
052372,000258: 01,3271 22007 QXCH 7 # (ZQ)
052373,000259:
![]() |
Page 1197 |
052375,000261: 01,3272 57400 WTLST4 XCH LST1
052376,000262: 01,3273 57401 XCH LST1 +1
052377,000263: 01,3274 57402 XCH LST1 +2
052378,000264: 01,3275 57403 XCH LST1 +3
052379,000265: 01,3276 57404 XCH LST1 +4
052380,000266: 01,3277 57405 XCH LST1 +5
052381,000267: 01,3300 57406 XCH LST1 +6
052382,000268: 01,3301 57407 XCH LST1 +7
052383,000269:
052384,000270: 01,3302 30063 CA WAITADR # (MINOR PART OF TASK CADR HAS BEEN IN L.)
052385,000271: 01,3303 50002 INDEX Q
052386,000272: 01,3304 13305 TCF +1
052387,000273:
052388,000274: 01,3305 53411 DXCH LST2
052389,000275: 01,3306 53413 DXCH LST2 +2
052390,000276: 01,3307 53415 DXCH LST2 +4
052391,000277: 01,3310 53417 DXCH LST2 +6
052392,000278: 01,3311 53421 DXCH LST2 +8D
052393,000279: 01,3312 53423 DXCH LST2 +10D # AT END, CHECK THAT C(LST2 +10) IS STD
052394,000280: 01,3313 53425 DXCH LST2 +12D
052395,000281: 01,3314 53427 DXCH LST2 +14D
052396,000282: 01,3315 53431 DXCH LST2 +16D
052397,000283: 01,3316 65173 AD ENDTASK # END ITEM, AS CHECK FOR EXCEEDING
052398,000284: # THE LENGTH OF THE LIST.
052399,000285: 01,3317 00006 EXTEND # DUMMY TASK ADRES SHOULD BE IN FIXED-
052400,000286: 01,3320 15152 BZF LVWTLIST # FIXED SO ITS ADRES ALONE DISTINGUISHES
052401,000287: 01,3321 13375 TCF WTABORT # IT.
052402,000288:
![]() |
Page 1198 |
052404,000290: 01,3322 10000 WTLST5 CCS A # TEST TD - T2 + 1
052405,000291: 01,3323 61401 AD LST1 +1
052406,000292: 01,3324 13330 TCF +4
052407,000293: 01,3325 64712 AD ONE
052408,000294: 01,3326 03403 TC WTLST2
052409,000295: 01,3327 00001 OCT 1
052410,000296:
052411,000297: 01,3330 10000 +4 CCS A # TEST TD - T3 + 1
052412,000298: 01,3331 61402 AD LST1 +2
052413,000299: 01,3332 13336 TCF +4
052414,000300: 01,3333 64712 AD ONE
052415,000301: 01,3334 03403 TC WTLST2
052416,000302: 01,3335 00002 OCT 2
052417,000303:
052418,000304: 01,3336 10000 +4 CCS A # TEST TD - T4 + 1
052419,000305: 01,3337 61403 AD LST1 +3
052420,000306: 01,3340 13344 TCF +4
052421,000307: 01,3341 64712 AD ONE
052422,000308: 01,3342 03403 TC WTLST2
052423,000309: 01,3343 00003 OCT 3
052424,000310:
052425,000311: 01,3344 10000 +4 CCS A # TEST TD - T5 + 1
052426,000312: 01,3345 61404 AD LST1 +4
052427,000313: 01,3346 13352 TCF +4
052428,000314: 01,3347 64712 AD ONE
052429,000315: 01,3350 03403 TC WTLST2
052430,000316: 01,3351 00004 OCT 4
052431,000317:
052432,000318: 01,3352 10000 +4 CCS A # TEST TD - T6 + 1
052433,000319: 01,3353 61405 AD LST1 +5
052434,000320: 01,3354 13360 TCF +4
052435,000321: 01,3355 64712 AD ONE
052436,000322: 01,3356 03403 TC WTLST2
052437,000323: 01,3357 00005 OCT 5
052438,000324:
052439,000325: 01,3360 10000 +4 CCS A # TEST TD - T7 + 1
052440,000326: 01,3361 61406 AD LST1 +6
052441,000327: 01,3362 13366 TCF +4
052442,000328: 01,3363 64712 AD ONE
052443,000329: 01,3364 03403 TC WTLST2
052444,000330: 01,3365 00006 OCT 6
052445,000331:
![]() |
Page 1199 |
052447,000333: 01,3366 10000 +4 CCS A
052448,000334: 01,3367 61407 AD LST1 +7
052449,000335: 01,3370 13374 TCF +4
052450,000336: 01,3371 64712 AD ONE
052451,000337: 01,3372 03403 TC WTLST2
052452,000338: 01,3373 00007 OCT 7
052453,000339:
052454,000340: 01,3374 10000 +4 CCS A
052455,000341: 01,3375 05604 WTABORT TC BAILOUT # NO ROOM IN THE INN.
052456,000342: 01,3376 01203 OCT 1203
052457,000343:
052458,000344: 01,3377 64712 AD ONE
052459,000345: 01,3400 03403 TC WTLST2
052460,000346: 01,3401 00010 OCT 10
052461,000347:
052462,000348: 01,3402 40201 OCT40201 OCT 40201
052463,000349:
![]() |
Page 1200 |
052465,000351: # THE ENTRY TO WTLST2 JUST PRECEDING OCT N IS FOR T LE TD LE T -1.
052466,000352: # N N+1
052467,000353: # (LE MEANS LESS THAN OR EQUAL TO). AT ENTRY, C(A) = -(TD - T + 1)
052468,000354: # N+1
052469,000355: # THE LST1 ENTRY-(T -T +1) IS TO BE REPLACED BY -(TD - T + 1), AND
052470,000356: # N+1 N N
052471,000357: # THE ENTRY-(T - TD + 1) IS TO BE INSERTED IMMEDIATELY FOLLOWING.
052472,000358: # N+1
052473,000359:
052474,000360: 01,3403 54064 WTLST2 TS WAITTEMP # C(A) = -(TD - T + 1)
052475,000361: 01,3404 50002 INDEX Q
052476,000362: 01,3405 30000 CAF 0
052477,000363: 01,3406 54002 TS Q # INDEX VALUE INTO Q.
052478,000364:
052479,000365: 01,3407 34712 CAF ONE
052480,000366: 01,3410 60064 AD WAITTEMP
052481,000367: 01,3411 50002 INDEX Q # C(A) = -(TD - T ) + 1.
052482,000368: 01,3412 27377 ADS LST1 -1 # N
052483,000369:
052484,000370: 01,3413 40064 CS WAITTEMP
052485,000371: 01,3414 50002 INDEX Q
052486,000372: 01,3415 13272 TCF WTLST4
052487,000373:
052488,000374: # C(TIME3) = 1.0 - (T1 - T)
052489,000375:
052490,000376: # C(LST1) = - (T2 - T1) + 1
052491,000377: # C(LST1+1) = - (T3 - T2) + 1
052492,000378: # C(LST1+2) = - (T4 - T3) + 1
052493,000379: # C(LST1+3) = - (T5 - T4) + 1
052494,000380: # C(LST1+4) = - (T6 - T5) + 1
052495,000381:
052496,000382: # C(LST2) = 2CADR TASK1
052497,000383: # C(LST2+2) = 2CADR TASK2
052498,000384: # C(LST2+4) = 2CADR TASK3
052499,000385: # C(LST2+6) = 2CADR TASK4
052500,000386: # C(LST2+8) = 2CADR TASK5
052501,000387: # C(LST2+10) = 2CADR TASK6
052502,000388:
![]() |
Page 1201 |
052504,000390: # ENTERS HERE ON T3 RUPT TO DISPATCH WAITLISTED TASK.
052505,000391:
052506,000392: 01,3416 00006 T3RUPT EXTEND
052507,000393: 01,3417 04007 ROR SUPERBNK # READ CURRENT SUPERBANK VALUE AND
052508,000394: 01,3420 54016 TS BANKRUPT # SAVE WITH E AND F BANK VALUES.
052509,000395: 01,3421 00006 EXTEND
052510,000396: 01,3422 22012 QXCH QRUPT
052511,000397:
052512,000398: 01,3423 34673 T3RUPT2 CAF NEG1/2 # DISPATCH WAITLIST TASK.
052513,000399: 01,3424 57407 XCH LST1 +7
052514,000400: 01,3425 57406 XCH LST1 +6
052515,000401: 01,3426 57405 XCH LST1 +5
052516,000402: 01,3427 57404 XCH LST1 +4 # 1. MOVE UP LST1 CONTENTS, ENTERING
052517,000403: 01,3430 57403 XCH LST1 +3 # A VALUE OF 1/2 +1 AT THE BOTTOM
052518,000404: 01,3431 57402 XCH LST1 +2 # FOR T6-T5, CORRESPONDING TO THE
052519,000405: 01,3432 57401 XCH LST1 +1 # INTERVAL 81.91 SEC FOR ENDTASK.
052520,000406: 01,3433 57400 XCH LST1
052521,000407: 01,3434 64672 AD POSMAX # 2. SET T3 = 1.0 - T2 - T USING LIST 1.
052522,000408: 01,3435 26026 ADS TIME3 # SO T3 WONT TICK DURING UPDATE.
052523,000409: 01,3436 54734 TS RUPTAGN
052524,000410: 01,3437 44714 CS ZERO
052525,000411: 01,3440 54734 TS RUPTAGN # SETS RUPTAGN TO +1 ON OVERFLOW.
052526,000412:
052527,000413: 01,3441 00006 EXTEND # DISPATCH TASK.
052528,000414: 01,3442 45174 DCS ENDTASK
052529,000415: 01,3443 53431 DXCH LST2 +16D
052530,000416: 01,3444 53427 DXCH LST2 +14D
052531,000417: 01,3445 53425 DXCH LST2 +12D
052532,000418: 01,3446 53423 DXCH LST2 +10D
052533,000419: 01,3447 53421 DXCH LST2 +8D
052534,000420: 01,3450 53417 DXCH LST2 +6
052535,000421: 01,3451 53415 DXCH LST2 +4
052536,000422: 01,3452 53413 DXCH LST2 +2
052537,000423: 01,3453 53411 DXCH LST2
052538,000424:
052539,000425: 01,3454 56001 XCH L
052540,000426: 01,3455 00006 EXTEND
052541,000427: 01,3456 01007 WRITE SUPERBNK # SET SUPERBANK FROM BBCON OF 2CADR
052542,000428: 01,3457 56001 XCH L # RESTORE TO L FOR DXCH Z.
052543,000429: 01,3460 52006 DTCB
052544,000430:
![]() |
Page 1202 |
052546,000432: # RETURN, AFTER EXECUTION OF T3 OVERFLOW TASK:
052547,000433:
052548,000434: 5213 BLOCK 02
052549,000435: 5213 COUNT 02/WAIT
052550,000436:
052551,000437: 5213 10734 TASKOVER CCS RUPTAGN # IF +1 RETURN TO T3RUPT, IF -0 RESUME.
052552,000438: 5214 35155 CAF WAITBB
052553,000439: 5215 54006 TS BBANK
052554,000440: 5216 13423 TCF T3RUPT2 # DISPATCH NEXT TASK IF IT WAS DUE.
052555,000441:
052556,000442: 5217 30016 CA BANKRUPT
052557,000443: 5220 00006 EXTEND
052558,000444: 5221 01007 WRITE SUPERBNK # RESTORE SUPERBANK BEFORE RESUME IS DONE
052559,000445:
052560,000446: 5222 00006 RESUME EXTEND
052561,000447: 5223 22012 QXCH QRUPT
052562,000448: 5224 30016 NOQRSM CA BANKRUPT
052563,000449: 5225 56006 XCH BBANK
052564,000450: 5226 52011 NOQBRSM DXCH ARUPT
052565,000451: 5227 00003 RELINT
052566,000452: 5230 50017 RESUME
052567,000453:
![]() |
Page 1203 |
052569,000455: # LONGCALL
052570,000456: # PROGRAM DESCRIPTION DATE - 17 MARCH 1967
052571,000457: # PROGRAM WRITTEN BY W.H.VANDEVER LOG SECTION WAITLIST
052572,000458: # MOD BY - R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 100
052573,000459:
052574,000460: # FUNCTIONAL DESCRIPTION -
052575,000461: # LONGCALL IS CALLED WITH THE DELTA TIME ARRIVING IN A,L SCALED AS TIME2,TIME1 WITH THE 2CADR OF THE TASK
052576,000462: # IMMEDIATELY FOLLOWING THE TC LONGCALL. FOR EXAMPLE, IT MIGHT BE DONE AS FOLLOWS WHERE TIMELOC IS THE NAME OF
052577,000463: # A DP REGISTER CONTAINING A DELTA TIME AND WHERE TASKTODO IS THE NAME OF THE LOCATION AT WHICH LONGCALL IS TO
052578,000464: # START
052579,000465: # CALLING SEQUENCE -
052580,000466: # EXTEND
052581,000467: # DCA TIMELOC
052582,000468: # TC LONGCALL
052583,000469: # 2CADR TASKTODO
052584,000470: # NORMAL EXIT MODE -
052585,000471: # 1). TC WAITLIST
052586,000472: # 2). DTCB (TO L+3 OF CALLING ROUTINE 1ST PASS THRU LONGCYCL)
052587,000473: # 3). DTCB (TO TASKOVER ON SUBSEQUENT PASSES THRU LONGCYCL)
052588,000474: # ALARM OR ABORT EXIT MODE -
052589,000475: # NONE
052590,000476: # OUTPUT -
052591,000477: # LONGTIME AND LONGTIME+1 = DELTA TIME
052592,000478: # LONGEXIT AND LONGEXIT+1 = RETURN 2CADR
052593,000479: # LONGCADR AND LONGCADR+1 = TASK 2CADR
052594,000480: # A = SINGLE PRECISION TIME FOR WAITLIST
052595,000481: # ERASABLE INITIALIZATION -
052596,000482: # A = MOST SIGNIFICANT PART OF DELTA TIME
052597,000483: # L = LEAST SIGNIFICANT PART OF DELTA TIME
052598,000484: # Q = ADDRESS OF 2CADR TASK VALUE
052599,000485: # DEBRIS -
052600,000486: # A,Q,L
052601,000487: # LONGCADR AND LONGCADR+1
052602,000488: # LONGEXIT AND LONGEXIT+1
052603,000489: # LONGTIME AND LONGTIME+1
052604,000490: # *** THE FOLLOWING IS TO BE IN FIXED-FIXED AND UNSWITCHED ERRASIBLE ***
052605,000491:
052606,000492: 5231 BLOCK 02
052607,000493: 5231 E3,1400 EBANK= LST1
052608,000494: 5231 53140 LONGCALL DXCH LONGTIME # OBTAIN THE DELTA TIME
052609,000495:
052610,000496: 5232 00006 EXTEND # OBTAIN THE 2CADR
![]() |
Page 1204 |
052612,000498: 5233 50002 NDX Q
052613,000499: 5234 30001 DCA 0
052614,000500: 5235 53134 DXCH LONGCADR
052615,000501:
052616,000502: 5236 00006 EXTEND # NOW GO TO THE APPROPRIATE SWITCHED BANK
052617,000503: 5237 35242 DCA LGCL2CDR # FOR THE REST OF LONGCALL
052618,000504: 5240 52006 DTCB
052619,000505:
052620,000506: 5241 E3,1400 EBANK= LST1
052621,000507: 5241 03461 02063 LGCL2CDR 2CADR LNGCALL2
052622,000508:
052623,000509: # *** THE FOLLOWING MAY BE IN A SWITCHED BANK, INCLUDING ITS ERASABLE ***
052624,000510:
052625,000511: 01,3461 BANK 01
052626,000512: 01,3461 COUNT 01/WAIT
052627,000513:
052628,000514: 01,3461 23435 LNGCALL2 LXCH LONGEXIT +1 # SAVE THE CORRECT BB FOR RETURN
052629,000515: 01,3462 34711 CA TWO # OBTAIN THE RETURN ADDRESS
052630,000516: 01,3463 26002 ADS Q
052631,000517: 01,3464 55434 TS LONGEXIT
052632,000518:
052633,000519: # *** WAITLIST TASK LONGCYCL ***
052634,000520:
052635,000521: 01,3465 00006 LONGCYCL EXTEND # CAN WE SUCCESFULLY TAKE ABOUT 1.25
052636,000522: 01,3466 43477 DCS DPBIT14 # MINUTES OFF OF LONGTIME
052637,000523: 01,3467 21140 DAS LONGTIME
052638,000524:
052639,000525: 01,3470 11140 CCS LONGTIME +1 # THE REASONIBG BEHIND THIS PART IS
052640,000526: 01,3471 13510 TCF MUCHTIME # INVOLVED, TAKING INTO ACCOUNT THAT THE
052641,000527: # WORDS MAY NOT BE SIGNED CORRECTED (DP
052642,000528: # BASIC INSTRUCTIONS
052643,000529: # DO NOT SIGN CORRECT) AND THAT WE SUBTRAC
052644,000530: # TED BIT14 (1 OVER HALF THE POS. VALUE
052645,000531: # REPRESENTIBLE IN SINGLE WORD)
052646,000532: 01,3472 13473 NOOP # CAN:T GET HERE **********
052647,000533: 01,3473 13474 TCF +1
052648,000534: 01,3474 11137 CCS LONGTIME
052649,000535: 01,3475 13510 TCF MUCHTIME
052650,000536: 01,3476 00000 DPBIT14 OCT 00000
052651,000537: 01,3477 20000 OCT 20000
052652,000538:
052653,000539: # LONGCALL
052654,000540: 01,3500 34675 LASTTIME CA BIT14 # GET BACK THE CORRECT DELTA TFOR WAITLIST
052655,000541: 01,3501 27140 ADS LONGTIME +1
052656,000542: 01,3502 05140 TC WAITLIST
052657,000543: 01,3503 E3,1400 EBANK= LST1
052658,000544: 01,3503 03515 02063 2CADR GETCADR # THE ENTRY TO OUR LONGCADR
052659,000545:
052660,000546: 01,3505 33517 LONGRTRN CA TSKOVCDR # SET IT UP SO THAT ONLY THE FIRST EXIT IS
![]() |
Page 1205 |
052662,000548: 01,3506 53435 DXCH LONGEXIT # TO THE CALLER OF LONGCALL
052663,000549: 01,3507 52006 DTCB # THE REST ARE TO TASKOVER
052664,000550:
052665,000551: 01,3510 34675 MUCHTIME CA BIT14 # WE HAVE OVER OUR ABOUT 1.25 MINUTES
052666,000552: 01,3511 05140 TC WAITLIST # SO SET UP FOR ANOTHER CYCLE THROUGH HERE
052667,000553: 01,3512 E3,1400 EBANK= LST1
052668,000554: 01,3512 03465 02063 2CADR LONGCYCL
052669,000555:
052670,000556: 01,3514 13505 TCF LONGRTRN # NOW EXIT PROPERLY
052671,000557:
052672,000558: # *** WAITLIST TASK GETCADR ***
052673,000559:
052674,000560: 01,3515 53134 GETCADR DXCH LONGCADR # GET THE LONGCALL THAT WE WISHED TO START
052675,000561: 01,3516 52006 DTCB # AND TRANSFER CONTROL TO IT
052676,000562:
052677,000563: 01,3517 05213 TSKOVCDR GENADR TASKOVER
End of include-file WAITLIST.agc. Parent file is MAIN.agc