Source Code
These source-code files are part of a reconstructed copy of Sunrise 45, the
penultimate release of the Block I Command Module (CM) Apollo Guidance Computer
(AGC) system test software.
They have been created via disassembly of binary dumps of original core rope memory modules, part numbers 1003133-18, 1003133-19, and 1003133-20. Corresponding portions of code have been copied from Solarium 55 where applicable. Extensive use was also made of the AGC Information Series documents, which were specifically written about the Sunrise software. Since only binary dumps (rather than listings) of Sunrise are available as source material, all comments and labels are approximate. They have been taken from other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing. |
002889,000002: ## Copyright: Public domain.
002890,000003: ## Filename: EXECUTIVE.agc
002891,000004: ## Purpose: A section of Sunrise 45.
002892,000005: ## It is part of the reconstructed source code for the penultimate
002893,000006: ## release of the Block I Command Module system test software. No
002894,000007: ## original listings of this program are available; instead, this
002895,000008: ## file was created via disassembly of dumps of Sunrise core rope
002896,000009: ## memory modules and comparison with the later Block I program
002897,000010: ## Solarium 55.
002898,000011: ## Assembler: yaYUL --block1
002899,000012: ## Contact: Ron Burkey <info@sandroid.org>.
002900,000013: ## Website: www.ibiblio.org/apollo/index.html
002901,000014: ## Mod history: 2022-12-09 MAS Initial reconstructed source.
002902,000015:
002903,000016:
002904,000017: # EXECUTIVE PROGRAMS
002905,000018: # --------- --------
002906,000019:
002907,000020:
002908,000021:
002909,000022: 2037 BANK 1
002910,000023: 2037 50572 FINDVAC TS NEWPRIO # PROGRAM TO FIND AN AVAILABLE VAC
002911,000024: 2040 30001 XCH Q
002912,000025: 2041 02056 TC EXECCOM # COMMON FF EXECUTIVE SUBROUTINE.
002913,000026: 2042 06003 TC FINDVAC2 # OFF TO EXECUTIVE BANK.
002914,000027:
002915,000028: 2043 50572 NOVAC TS NEWPRIO # ENTRY EXCLUSIVELY FOR BASIC JOBS NOT
002916,000029: 2044 30001 XCH Q # REQUIRING A VAC AREA.
002917,000030: 2045 02056 TC EXECCOM # COMMON FF EXECUTIVE SUBROUTINE.
002918,000031: 2046 35500 CAF ZERO # ZERO PD FIELD IN PUSHLOC.
002919,000032: 2047 50567 TS EXECTEM3
002920,000033: 2050 06026 TC NOVAC2
002921,000034:
002922,000035: 2051 50566 JOBWAKE TS EXECTEM2 # ENTRY HERE TO RE-ACTIVATE A SLEEPING JOB
002923,000036: 2052 10001 CCS Q # RETURN ADDRESS - 1 TO WTEXIT.
002924,000037: 2053 50573 TS WTEXIT # SHARES FINAL PORTION OF FINDVAC, NOVAC.
002925,000038: 2054 02062 TC EXECSW # COMMON EXEC BANK-SWITCH SUBROUTINE.
002926,000039: 2055 06107 TC JOBWAKE2
002927,000040:
002928,000041: 2056 50573 EXECCOM TS WTEXIT # EXIT ADDRESS
002929,000042: 2057 20000 INDEX A # PICK UP JOB OR TASK ADDRESS.
002930,000043: 2060 30000 CAF 0 # (USED BY FINDVAC, NOVAC, AND WAITLIST)
002931,000044: 2061 50566 TS EXECTEM2
002932,000045:
002933,000046: 2062 32066 EXECSW CAF EXECBANK
002934,000047: 2063 30015 XCH BANKREG # CALL IN EXEC BANK, SAVING RETURN.
002935,000048: 2064 50565 TS EXECTEM1
002936,000049: 2065 00001 TC Q
002937,000050:
002938,000051: 2066 10003 EXECBANK CADR FINDVAC2
002939,000052:
002940,000053: 2067 50015 FOUNDVAC TS BANKREG # COMES HERE TO RETURN FROM FINDVAC,
002941,000054: 2070 20573 INDEX WTEXIT # NOVAC, OR JOBWAKE.
002942,000055: 2071 00001 TC 1
002943,000056:
002944,000057:
002945,000058: # CALLS TO FINDVAC BEGIN HERE, SNATCHING AN AVAILABLE VAC AREA.
002946,000059:
002947,000060: 04,6000 SETLOC 10000 # EXEC/WAITLIST BANK.
002948,000061:
002949,000062: 04,6000 06744 SLAPB TC SLAP1
002950,000063:
002951,000064: 04,6001 07265 KEYRUPTC TC KEYRUPT1 # STANDARD LOC, DONT MOVE
002952,000065:
002953,000066: 04,6002 06724 MODROUTB TC MODROUT # STANDARD LOC, DONT MOVE
002954,000067:
002955,000068: 04,6003 10214 FINDVAC2 CCS VAC1USE # C(VAC1USE) = TC VAC1USE IF VAC1 IS
002956,000069: 04,6004 06017 TC FV1 # AVAILABLE, OR +0 IF IT IS IN USE.
002957,000070: 04,6005 10270 CCS VAC2USE
002958,000071: 04,6006 06017 TC FV1 # THE FIRST CCS WITH +0 JUMPS TO THE
002959,000072: 04,6007 10344 CCS VAC3USE # CORRESPONDING TC ORDER.
002960,000073: 04,6010 06017 TC FV1
002961,000074: 04,6011 10420 CCS VAC4USE
002962,000075: 04,6012 06017 TC FV1
002963,000076: 04,6013 10474 CCS VAC5USE
002964,000077: 04,6014 06017 TC FV1
002965,000078:
002966,000079: 04,6015 02652 TC ABORT # NO VAC AREAS AVAILABLE.
002967,000080: 04,6016 01201 OCT 01201
002968,000081:
002969,000082: 04,6017 65502 FV1 AD TWO # TO FORM ADDRESS OF ASSIGNED VAC AREA.
002970,000083: 04,6020 50567 TS EXECTEM3
002971,000084: 04,6021 60572 AD NEWPRIO # ) STORE ADDRESS OF VAC1 IN LOW-ORDER
002972,000085: 04,6022 50572 TS NEWPRIO # ) 9 BITS OF NEWPRIO.
002973,000086:
002974,000087: 04,6023 35500 CAF ZERO # )
002975,000088: 04,6024 20567 INDEX EXECTEM3 # ) STORE +0 IN VAC1USE, INDICATING USE.
002976,000089: 04,6025 47777 TS 0 -1 # )
002977,000090:
002978,000091: 04,6026 36041 NOVAC2 CAF LASTADR # RELATIVE ADDRESS OF LAST REGISTER SET.
002979,000092: 04,6027 50574 TS LOCCTR
002980,000093: 04,6030 10000 CCS A
002981,000094: 04,6031 06036 TC +5 # PNZ AND -0 ONLY.
002982,000095:
002983,000096: 04,6032 40566 12BITSOK CS EXECTEM2 # COMES HERE IF JOB ADDRESS LESS THAN 6K.
002984,000097: 04,6033 06066 TC LOCSET
002985,000098:
002986,000099: 04,6034 02652 TC ABORT # NO REGISTER SETS AVAILABLE.
002987,000100: 04,6035 01202 OCT 01202
002988,000101:
002989,000102: 04,6036 20574 +5 INDEX LOCCTR # THIS LOOP FINDS THE FIRST AVAILABLE
002990,000103: 04,6037 10123 CCS PRIORITY # STORAGE AREA FOR CORE REGISTERS FOR
002991,000104: 04,6040 06104 TC NOVAC3 # THE NEW JOB.
002992,000105: 04,6041 00070 LASTADR DEC 56 B-14 # EIGHT SETS OF EIGHT REGISTERS.
002993,000106: 04,6042 06104 TC NOVAC3 # NNZ MEANS JOB ASLEEP HERE.
002994,000107:
002995,000108:
002996,000109: # NOW THAT REGISTER SETS HAVE BEEN FOUND FOR THE NEW JOB, INITIALIZE THEM AND SET NEWJOB IF CALLED FOR.
002997,000110:
002998,000111: 04,6043 20574 CORSW INDEX LOCCTR # (COMES HERE WITH C(A) = 0). TURN OFF OVF
002999,000112: 04,6044 50121 TS OVFIND
003000,000113:
003001,000114: 04,6045 60572 AD NEWPRIO # SET UP PRIORITY FOR NEW JOB.
003002,000115: 04,6046 20574 JOBWAKE4 INDEX LOCCTR # JOB WAKING ENTERS HERE TO FINISH UP.
003003,000116: 04,6047 50123 TS PRIORITY # STORE NEW PRIORITY
003004,000117: 04,6050 32206 CAF BANKMASK
003005,000118: 04,6051 70566 MASK EXECTEM2
003006,000119: 04,6052 60567 AD EXECTEM3 # PUSHLOC
003007,000120: 04,6053 20574 INDEX LOCCTR
003008,000121: 04,6054 50122 TS PUSHLOC
003009,000122:
003010,000123: 04,6055 36315 CAF EXEC70K # CREATE PROPER 12 BIT ADDRESS.
003011,000124: 04,6056 70566 MASK EXECTEM2 # SEE IF HIGH THREE BITS ZERO.
003012,000125: 04,6057 10000 CCS A
003013,000126: 04,6060 06062 TC +2 # NEEDS SPECIAL TREATMENT IF C(A) NOT ZERO
003014,000127: 04,6061 06032 TC 12BITSOK
003015,000128:
003016,000129: 04,6062 30566 XCH EXECTEM2
003017,000130: 04,6063 74605 MASK LOW10
003018,000131: 04,6064 64373 AD 6K
003019,000132: 04,6065 40000 COM
003020,000133: 04,6066 20574 LOCSET INDEX LOCCTR
003021,000134: 04,6067 50117 TS LOC
003022,000135:
003023,000136: 04,6070 20550 INDEX NEWJOB
003024,000137: 04,6071 40123 CS PRIORITY # TEST WHETHER NEW JOB HAS HIGHER
003025,000138: 04,6072 60572 AD NEWPRIO # PRIORITY THAN PREVIOUS HIGHEST
003026,000139: 04,6073 10000 CCS A
003027,000140: 04,6074 40574 CS LOCCTR # NEW JOB HAS HIGHER PRIORITY.
003028,000141: 04,6075 06101 TC NEWHIGH # SET NEWJOB, LEAVING LOCCTR UNCHANGED.
003029,000142:
003030,000143: 04,6076 06077 TC +1 # -0 IF PRIORITIES = AND BOTH ARE NOVACS.
003031,000144: 04,6077 30565 NOWAKE2 XCH EXECTEM1
003032,000145: 04,6100 02067 ENDFIND TC FOUNDVAC
003033,000146:
003034,000147: 04,6101 40000 NEWHIGH COM # SET NEWJOB AND RETURN TO CALLER.
003035,000148: 04,6102 50550 TS NEWJOB
003036,000149: 04,6103 06077 TC ENDFIND -1
003037,000150:
003038,000151: 04,6104 44513 NOVAC3 CS EIGHT # COMES HERE TO EXAMINE NEXT REGISTER SET.
003039,000152: 04,6105 60574 AD LOCCTR
003040,000153: 04,6106 06027 TC NOVAC2 +1
003041,000154:
003042,000155:
003043,000156: # THE JOBWAKE ROUTINE REACTIVES A SLEEPING JOB, SETTING IT TO BEGIN AT THE GIVEN WAKE ADDRESS.
003044,000157:
003045,000158: 04,6107 36041 JOBWAKE2 CAF LASTADR # BEGIN SEARCH FOR REGISTER SET CONTAINING
003046,000159: 04,6110 50574 TS LOCCTR # SLEEPING JOB. WAKE ADDRESS IS IN LOC IN
003047,000160: 04,6111 10000 CCS A # CADR FORM, AS PLACED THERE BY JOBSLEEP.
003048,000161: 04,6112 20574 INDEX LOCCTR # PNZ AND -0 ONLY. SEE IF THIS JOB ASLEEP.
003049,000162: 04,6113 10123 CCS PRIORITY # THIS CCS CANT GO TO TC NOWAKE .
003050,000163: 04,6114 06137 TC JOBWAKE3 # PNZ - ACTIVE JOB PRESENT. +0 IMPOSSIBLE.
003051,000164:
003052,000165: 04,6115 06142 TC NOWAKE # ALARM - SLEEPING JOB NOT FOUND.
003053,000166:
003054,000167: 04,6116 06120 TC +2 # INACTIVE JOB FOUND.
003055,000168: 04,6117 06137 TC JOBWAKE3 # -0 - NOT IN USE.
003056,000169:
003057,000170: 04,6120 40566 +2 CS EXECTEM2 # SEE IF THIS IS THE DESIRED SLEEPING JOB.
003058,000171: 04,6121 20574 INDEX LOCCTR
003059,000172: 04,6122 60117 AD LOC
003060,000173: 04,6123 10000 CCS A
003061,000174: 04,6124 06137 TC JOBWAKE3 # SEARCH NEXT SET IF NOT AT END.
003062,000175: 04,6126 SETLOC +1
003063,000176: 04,6126 06137 TC JOBWAKE3
003064,000177:
003065,000178: 04,6127 34605 CAF LOW10 # SET UP EXECTEM3 AND PRIORITY SO WE CAN
003066,000179: 04,6130 20574 INDEX LOCCTR # FINISH AT STANDARD CORSW .
003067,000180: 04,6131 70122 MASK PUSHLOC # PROTECT PD SETTING.
003068,000181: 04,6132 50567 TS EXECTEM3
003069,000182:
003070,000183: 04,6133 20574 INDEX LOCCTR # RE-COMPLEMENT PRIORITY AND FINISH UP.
003071,000184: 04,6134 40123 CS PRIORITY
003072,000185: 04,6135 50572 TS NEWPRIO
003073,000186: 04,6136 06046 TC JOBWAKE4
003074,000187:
003075,000188: 04,6137 44513 JOBWAKE3 CS EIGHT # ADVANCE TO NEXT REGISTER SET.
003076,000189: 04,6140 60574 AD LOCCTR
003077,000190: 04,6141 06110 TC JOBWAKE2 +1
003078,000191:
003079,000192: 04,6142 50574 NOWAKE TS LOCCTR # SET LOCCTR = +0 TO SHOW NO JOB WAS
003080,000193: 04,6143 06077 TC NOWAKE2 # AWAKENED.
003081,000194:
003082,000195:
003083,000196: # A NEW JOB, OF HIGHER PRIORITY THAN THE PRESENT ONE, CAUSES THE RELA-
003084,000197: # TIVE ADDRESS (9, 18, ..., 63) OF THE NEW JOB CORE REGISTERS TO BE
003085,000198: # PLACED IN REGISTER NEWJOB , WHERE IT IS TESTED BY THE INTERPRETER.
003086,000199: # THE RESULTING BRANCH TO CHANJOB, BELOW, CAUSES A TRADE BETWEEN THE
003087,000200: # CORE REGISTERS OF THE PRESENT AND NEW JOBS.
003088,000201:
003089,000202: 2072 SETLOC FOUNDVAC +3
003090,000203:
003091,000204: 2072 20017 CHANG1 INHINT # BASIC JOBS COME HERE WHEN C(NEWJOB)
003092,000205: 2073 32066 CAF EXECBANK # NON-ZERO. START BY CALLING IN EXECUTIVE
003093,000206: 2074 30015 XCH BANKREG # BANK AND SAVING RETURN BANK CODE.
003094,000207: 2075 40000 COM
003095,000208: 2076 50060 TS BANKSET
003096,000209: 2077 30122 XCH PUSHLOC # BLANK OUT THE HIGH-ORDER 4 BITS IN
003097,000210: 2100 74605 MASK LOW10 # PUSHLOC SO THE BANK BITS CAN BE PACKED
003098,000211: 2101 50122 TS PUSHLOC # WITH IT
003099,000212: 2102 40001 CS Q # FOR RETURN, SHOWING THIS WAS A BASIC JOB
003100,000213: 2103 06144 TC CHANJOB # OFF TO BANK 0
003101,000214:
003102,000215: 2104 10065 CHANG2 CCS NEWEQIND # INTERPRETIVE INTERRUPTS START HERE,
003103,000216: 2105 00001 TC Q # PROVIDED THE LOAD INDICATOR ISNT ON
003104,000217:
003105,000218: 2106 20017 INHINT
003106,000219: 2107 32066 CAF EXECBANK # CALL IN EXECUTIVE BANK.
003107,000220: 2110 50015 TS BANKREG
003108,000221: 2111 30117 XCH LOC
003109,000222: 2112 06144 TC CHANJOB # WITH C(A) PNZ, SHOWING WE WERE IN INTERP
003110,000223: # RETER
003111,000224: 04,6144 SETLOC NOWAKE +2
003112,000225: 04,6144 20550 CHANJOB INDEX NEWJOB # TO BEGIN SWAP OF CORE REGISTERS
003113,000226: 04,6145 30117 XCH LOC
003114,000227: 04,6146 50117 TS LOC # SAVE PROPER 12 BIT ADDRESS
003115,000228:
003116,000229: 04,6147 30123 XCH PRIORITY
003117,000230: 04,6150 20550 INDEX NEWJOB
003118,000231: 04,6151 30123 XCH PRIORITY
003119,000232: 04,6152 50123 TS PRIORITY
003120,000233: 04,6153 74606 MASK LOW9 # TO GET FIXLOC
003121,000234: 04,6154 50066 TS FIXLOC
003122,000235: 04,6155 64511 AD BIT6 # SET UP VACLOC ( = FIXLOC + 32D )
003123,000236: 04,6156 50067 TS VACLOC
003124,000237:
003125,000238: 04,6157 40060 CS BANKSET # SAVE BANK
003126,000239: 04,6160 60122 AD PUSHLOC # AND PUSHLOC IN SAME WORD
003127,000240: 04,6161 20550 INDEX NEWJOB
003128,000241: 04,6162 30122 XCH PUSHLOC
003129,000242: 04,6163 50122 TS PUSHLOC
003130,000243: 04,6164 74605 MASK LOW10
003131,000244: 04,6165 30122 XCH PUSHLOC
003132,000245: 04,6166 40000 COM
003133,000246: 04,6167 60122 AD PUSHLOC # WE NOW HAVE COMPLEMNT OF BANK BITS
003134,000247: 04,6170 50060 TS BANKSET
003135,000248:
003136,000249: 04,6171 40120 CS ADRLOC # SAVE MODE AND COMPLEMENT OF ADRLOC IN
003137,000250: 04,6172 60000 DOUBLE # SAME WORD. ADRLOC MUST BE SHIFTED 2
003138,000251: 04,6173 60000 DOUBLE # PLACES TO MAKE ROOM FOR MODE
003139,000252: 04,6174 60064 AD MODE # -0, -1, OR -2
003140,000253: 04,6175 20550 INDEX NEWJOB
003141,000254: 04,6176 30120 XCH ADRLOC
003142,000255: 04,6177 50021 TS SR
003143,000256: 04,6200 74473 MASK THREE # SAVE LOW 2 BITS
003144,000257: 04,6201 64341 AD NEG3 # THIS RESULTS IN EITHER -0, -1, OR -2
003145,000258: 04,6202 50064 TS MODE
003146,000259: 04,6203 40021 CS SR
003147,000260: 04,6204 40021 CS SR
003148,000261: 04,6205 50120 TS ADRLOC
003149,000262:
003150,000263: 04,6206 10121 CCS OVFIND # SAVE C(ORDER) POSITIVE IF C(OVFIND) = 0
003151,000264: 04,6207 06211 TC +2 # AND NEGATIVE OTHERWISE
003152,000265: 04,6210 06213 TC +3
003153,000266: 04,6211 40062 CS ORDER
003154,000267: 04,6212 06214 TC +2
003155,000268: 04,6213 30062 XCH ORDER
003156,000269: 04,6214 20550 INDEX NEWJOB
003157,000270: 04,6215 30121 XCH OVFIND
003158,000271: 04,6216 50062 TS ORDER
003159,000272: 04,6217 10000 CCS A # DETERMINE NEW SETTING OF OVFIND
003160,000273: 04,6220 35500 CAF ZERO # TO ZERO
003161,000274: 04,6221 06225 TC OVFSET
003162,000275: 04,6222 40062 CS ORDER # ORDER WAS NEGATIVE, MAKE IT POSITIVE
003163,000276: 04,6223 50062 TS ORDER
003164,000277: 04,6224 34516 CAF ONE # TO SET OVFIND
003165,000278: 04,6225 50121 OVFSET TS OVFIND
003166,000279:
003167,000280: 04,6226 30114 XCH MPAC # TRADE C(MPAC TO MPAC+2)
003168,000281: 04,6227 20550 INDEX NEWJOB
003169,000282: 04,6230 30114 XCH MPAC
003170,000283: 04,6231 50114 TS MPAC
003171,000284: 04,6232 30115 XCH MPAC +1
003172,000285: 04,6233 20550 INDEX NEWJOB
003173,000286: 04,6234 30115 XCH MPAC +1
003174,000287: 04,6235 50115 TS MPAC +1
003175,000288: 04,6236 30116 XCH MPAC +2
003176,000289: 04,6237 20550 INDEX NEWJOB
003177,000290: 04,6240 30116 XCH MPAC +2
003178,000291: 04,6241 50116 TS MPAC +2
003179,000292:
003180,000293: 04,6242 35500 CAF ZERO
003181,000294: 04,6243 50065 TS NEWEQIND # MAKE SURE LOAD INDICATOR OFF.
003182,000295: 04,6244 50550 SETNJ TS NEWJOB
003183,000296: 04,6245 20016 RELINT # ENABLE INTERRUPT
003184,000297: 04,6246 10117 CCS LOC # C(LOC) PNZ FOR INTERPRETIVE JOBS.
003185,000298: 04,6247 35500 CAF ZERO
003186,000299: 04,6250 04026 TC DANZIG +2 # RETURN TO INTERPRETER
003187,000300: 04,6251 64516 AD ONE # GET ABS(LOC) AND RETURN TO BASIC
003188,000301: 04,6252 50061 TS ADDRWD
003189,000302: 04,6253 40060 CS BANKSET # GET DESIRED BANKBITS
003190,000303: 04,6254 02113 ENDCHANG TC BASICALL
003191,000304:
003192,000305: 2113 SETLOC CHANG2 +7D # TAKE UP WHERE WE LEFT OFF IN FIXED-FIXED
003193,000306:
003194,000307: 2113 50015 BASICALL TS BANKREG
003195,000308: 2114 00061 TC ADDRWD
003196,000309:
003197,000310: 2115 32066 ENDOFJOB CAF EXECBANK # NORMAL ENDJOB ENTRY.
003198,000311: 2116 50015 TS BANKREG
003199,000312: 2117 06255 TC ENDJOB1
003200,000313:
003201,000314: 2120 50117 JOBSLEEP TS LOC # ENTRY HERE TO DE-ACTIVE THIS JOB.
003202,000315: 2121 32066 CAF EXECBANK # LOC IS SET TO THE AWAKENING ADDRESS
003203,000316: 2122 50015 TS BANKREG # SO THE SUBSEQUENT JOBWAKE CAN FIND
003204,000317: 2123 06266 TC JOBSLP1 # THE PROPER REGISTER SET.
003205,000318:
003206,000319: 04,6255 SETLOC ENDCHANG +1
003207,000320:
003208,000321: 04,6255 20017 ENDJOB1 INHINT # INTERPRETIVE JOBS FINISH WITH RTB
003209,000322: 04,6256 45500 CS ZERO # TO ENDJOB1
003210,000323: 04,6257 50077 TS BUF +1 # ENDJOB USES BUF, BUF +1, AND BUF +2.
003211,000324: 04,6260 30123 XCH PRIORITY
003212,000325: 04,6261 74606 MASK LOW9 # RESTORE AVAILABILITY OF VAC1 BY SETTING
003213,000326: 04,6262 10000 CCS A # C(VAC1USE) NON-ZERO
003214,000327: 04,6263 20000 INDEX A
003215,000328: 04,6264 50000 TS 0
003216,000329:
003217,000330: 04,6265 06273 TC EJSCAN # ENDJOB NEED NOT EXAMINE FIRST REG. SET.
003218,000331:
003219,000332: 04,6266 20017 JOBSLP1 INHINT # FINISH JOB SLEEP AND START ENDJOB-TYPE
003220,000333: 04,6267 40123 CS PRIORITY # SCAN. COMPLEMENTED PRIORITY REGISTER
003221,000334: 04,6270 50123 TS PRIORITY # SHOWS JOB IS ASLEEP.
003222,000335: 04,6271 45500 CS ZERO # INITIALIZE SEARCH FOR HIGHEST PRIORITY.
003223,000336: 04,6272 50077 TS BUF +1
003224,000337:
003225,000338:
003226,000339: # SCAN FOR THE ACTIVE JOB OF HIGHEST PRIORITY.
003227,000340:
003228,000341: 04,6273 10133 EJSCAN CCS PRIORITY +8D # EACH PRIORITY REGISTER (PRIORITY +8N)
003229,000342: 04,6274 06335 TC EJ1 # IS SCANNED. ITS CONTENTS ARE EITHER
003230,000343: 04,6276 SETLOC +1
003231,000344: 04,6276 06277 TC +1 # 2. NNZ - AN INACTIVE PRIORITY NUMBER.
003232,000345:
003233,000346: 04,6277 10143 CCS PRIORITY +16D # OR 3. -0 - NOT IN USE.
003234,000347: 04,6300 06335 TC EJ1 # IF PNZ, CONTROL IS TRANSFERRED TO EJ1
003235,000348: 04,6302 SETLOC +1
003236,000349: 04,6302 06303 TC +1 # PARED WITH THE PREVIOUS HIGHEST
003237,000350:
003238,000351: 04,6303 10153 CCS PRIORITY +24D # PRIORITY FOUND. THE CONTENTS OF Q
003239,000352: 04,6304 06335 TC EJ1 # SERVE TO LOCATE THE CCS WHICH WAS
003240,000353: 04,6306 SETLOC +1
003241,000354: 04,6306 06307 TC +1 # NEWJOB IS SET TO THE RELATIVE ADDRESS
003242,000355:
003243,000356: 04,6307 10163 CCS PRIORITY +32D # OF THE REGISTER SET WITH THE HIGHTEST
003244,000357: 04,6310 06335 TC EJ1 # ACTIVE PRIORITY AT THE END OF THE SCAN.
003245,000358: 04,6312 SETLOC +1
003246,000359: 04,6312 06313 TC +1
003247,000360:
003248,000361: 04,6313 10173 CCS PRIORITY +40D
003249,000362: 04,6314 06335 TC EJ1
003250,000363: 04,6315 70000 EXEC70K OCT 70000
003251,000364: 04,6316 06317 TC +1
003252,000365:
003253,000366: 04,6317 10203 CCS PRIORITY +48D
003254,000367: 04,6320 06335 TC EJ1
003255,000368: 04,6321 67654 -CCSPR -CCS PRIORITY
003256,000369: 04,6322 06323 TC +1
003257,000370:
003258,000371: 04,6323 10213 CCS PRIORITY +56D
003259,000372: 04,6324 06335 TC EJ1
003260,000373: 04,6326 SETLOC +1
003261,000374: 04,6326 06327 TC +1
003262,000375:
003263,000376: 04,6327 20076 INDEX BUF # PICK UP CCS INSTRUCTION TO GET NEWJOB
003264,000377: 04,6330 27776 CAF 0 -2 # SELECT CCS INSTRUCTION.
003265,000378: 04,6331 66321 AD -CCSPR
003266,000379: 04,6332 50550 TS NEWJOB # RELATIVE ADDRESS ONLY.
003267,000380: 04,6333 30117 XCH LOC # (NO MEANING FOR ENDOFJOB).
003268,000381: 04,6334 06144 TC CHANJOB
003269,000382:
003270,000383:
003271,000384:
003272,000385: 04,6335 50100 EJ1 TS BUF +2 # STORE NEW PRIORITY
003273,000386: 04,6336 60077 AD BUF +1 # - OLD PRIORITY
003274,000387: 04,6337 10000 CCS A
003275,000388: 04,6340 30001 XCH Q # IF NEW PRIORITY IS LARGER
003276,000389: 04,6341 06345 TC EJ2
003277,000390: 04,6342 30000 NOOP # IF OLD PRIORITY IS LARGER
003278,000391: 04,6343 20001 INDEX Q # OR EQUAL
003279,000392: 04,6344 00002 TC 2
003280,000393:
003281,000394: 04,6345 50076 EJ2 TS BUF # SAVE C(Q) TO LOCATE HIGHEST PRIORITY
003282,000395: 04,6346 40100 CS BUF +2 # JOB AT END OF SCAN.
003283,000396: 04,6347 50077 TS BUF +1
003284,000397: 04,6350 20076 INDEX BUF
003285,000398: 04,6351 00002 TC 2
End of include-file EXECUTIVE.agc. Parent file is MAIN.agc