7 22_= #OPT WELLTEST=0 15 23DW #LIS K0JSASCAN>K0ALLGEO>K0GREATGEO>K0COMMAND 12 23M6 ... SEG JSASCAN,867,SECTION CENT 4 23TB ...[ 16 243L ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 4 249W ...[ 4 24D6 [ 7 24XQ #DEF RRH=A1+FRH 4 25CB [ 17 25X2 [ THIS SEGMENT PERFORMS THE JOB SELECTION MECHAINISM 11 26BL [ AND CREATES VIRTUAL SLOTS 4 26W= [ 20 27*W SEGENTRY K1JSASCAN,SOPEN [ :SYSTEM.JOBLIST ALREADY OPEN 19 27TG SEGENTRY K2JSASCAN,SCLOS [ ABOVE NEEDS TO BE OPENED 4 28*6 [ 4 29#B [ 4 29S2 [ 4 2=?L [ 17 2?=W [ THE RELEVANT POP WILL HAVE BEEN DONE BY THE HOST 21 2?QG ...SOPEN BS ,HOSTOPEN [ B0 AWORK1 INDICATES JOBLIST OPEN 8 2#=6 BRN SCAN 5 2#JH ...SCLOS 11 2#WY ...POPC POP POPC,,JWACCESS 12 2*9B ... MBC ,IVEOPEND,HOSTOPEN 4 2*P2 SCAN 21 2B8L JBS START,,JSAREQ [ SHOULD ONLY BE OBEYED IF JSAREQ 9 2BN= GEOERR 1,ILL JSA 4 2C7W [ 13 2CMG [ DON'T BOTHER IF FINISH ISSUED... 4 2D76 [ 9 2DLQ START LDXC 0 FINISH 8 2F6B BCS TFIN 4 2FL2 [ 16 2G5L LDN 5 JWMOPB [ MOP JOB TYPE(X) 15 2GK= SAGIN HUNTMISB 3,JWELL [ JWELL BLOCK 19 2H4W ANDN 5 1 [ ENSURE ONLY MOP/BACK TYPE 18 2HJG REACH LDEX 0 JOBENTS+JOBCTS(3) [ BACK RUNNING 18 2J46 LDEX 1 JOBENTS+JWENTRY+JOBCTS(3) [ MOP RUNNING 7 2JHQ LDX 4 0 14 2K3B ADX 4 1 [ TOTAL 9 2KH2 LDX 6 BACKJOBS 14 2L2L LDX 7 IMOPJOBS [ IP'S 15 2LG= ADX 7 6 [ TOTAL JOBS 7 2L_W TXL 4 7 20 2MFG BCC TFIN [ J IF MAX JOBS REACHED OR PASSED 16 2M_6 SBX 7 6 [ RESTORE MOP IP 7 2N2H ...#SKI JWPHASE4 4 2N3Y ...( 10 2N5* ... JBC NOHLSB,,HLSBS 20 2N6Q ... LDN 6 0 [DON'T START ANY BACK IF HLS IN CONTROL 5 2N87 ...NOHLSB 10 2N9J ... JBC NOHLSM,,HLSMS 14 2N=_ ... LDN 7 0 [DITTO FOR MOP 5 2N#B ...NOHLSM 11 2N*R ... LDEX 0 JOBENTS+JOBCTS(3) 4 2NC8 ...) 7 2NDQ SMO 5 17 2NYB LDX 4 0 [ COUNT FOR TYPE(X) 7 2PD2 SMO 5 7 2PXL TXL 4 6 17 2QC= BCC STIDY [ J IF LIMIT REACHED 7 2QWW SMO 5 16 2RBG LDXC 4 CLUSTERBACK [ IP CLUSTER(X) 16 2RW6 BCS NOTIP [ J IF IP NOT SET 17 2S*Q ORN 5 JWCLUSB [ MAKE TYPE CLUSTER 4 2STB [ 11 2T*2 [ SUM LIVEJOBS FOR THIS TYPE 4 2TSL [ 17 2W#= LDN 1 0 [ CUMULATIVE TOTAL 10 2WRW LDN 3 JOBENTS(3) 8 2X?G BRN TRYT 15 2XR6 TMORE ADN 3 JWENTRY [ NEXT ENTRY 10 2Y=Q TRYT LDX 0 JOBTYPE(3) 15 2YQB BNG 0 SUMD [ J IF END 15 2_=2 ANDN 0 JOBBITS [ GET TYPE 7 2_PL TXU 0 5 17 329= BCS TMORE [ J IF DIFFERENT TYPE 15 32NW LDEX 7 JOBCTS(3) [ CUMULATE 14 338G ADX 1 7 [ COUNT 8 33N6 BRN TMORE 7 347Q SUMD TXL 1 4 20 34MB BCS REMJB [ J IF IP CLUSTER(X) NOT REACHED 17 3572 ERN 5 JWCLUSB [ REMOVE CLUSTER BIT 9 35LL ORN 5 JWCENTB 18 366= CALL 4 STARTNEXT [ START NEXT CENTRAL(X) 18 36KW BZE 7 SAGIN [ SUCCESS SO TRY AGAIN 9 375G ERN 5 JWCENTB 9 37K6 ORN 5 JWCLUSB 18 384Q CALL 4 STARTNEXT [ START NEXT CLUSTER(X) 16 38JB BZE 7 SAGIN [ OK SO TRY AGAIN 19 3942 BRN VSLOT [ J TO CREATE A VIRTUAL SLOT 18 39HL REMJB CALL 4 STARTNEXT [ START NEXT CLUSTER(X) 16 3=3= BZE 7 SAGIN [ OK SO TRY AGAIN 9 3=GW ERN 5 JWCLUSB 9 3?2G ORN 5 JWCENTB 18 3?G6 CALL 4 STARTNEXT [ START NEXT CENTRAL(X) 16 3?_Q BZE 7 SAGIN [ OK SO TRY AGAIN 19 3#FB BRN VSLOT [ J TO CREATE A VIRTUAL SLOT 4 3#_2 [ 16 3*DL NOTIP CALL 4 STARTNEXT [ START NEXT(X) 16 3*Y= BZE 7 SAGIN [ OK SO TRY AGAIN 7 3BCW VSLOT ANDN 5 1 17 3BXG BZE 5 SBACK [ J IF BACKGROUND JOB 17 3CC6 BS ,JSVIRTMOP [ VIRTUAL MOP SLOT 8 3CWQ BRN STIDY 17 3DBB SBACK BS ,JSVIRTBACK [ VIRTUAL BACK SLOT 16 3DW2 STIDY BZE 5 TIDY [ J IF FINISHED 10 3F*L JBC SDUN,,JSAREQ 9 3FT= LDN 5 JWBACKB 9 3G#W BC ,JSAREQ 17 3GSG BRN SAGIN [ LOOP FOR BACK JOBS 10 3H#6 TIDY JBCC SDUN,,JSAREQ 8 3HRQ BRN START 9 3J?B TFIN BC ,JSAREQ 9 3JR2 SDUN BC ,JSACT 8 3K=L LDX 2 FX2 20 3KL* ... JBS OUTV,,HOSTOPEN [ CLOSE JOBLIST IF OPENED BY ME 11 3L24 ... JBC OUTW,,IVEOPEND 9 3L*R ... BC ,IVEOPEND 7 3LPG CLOSETOP 18 3M96 OUTW VOP ,JWACCESS [ RELEASE ACCESS TO JWELL 9 3MHH ...OUTV BC ,HOSTOPEN 5 3MTY ... UP 4 3N8B [ 11 3NN2 [ STARTNEXT JOB OF TYPE(X) 19 3P7L [ TYPE IS DEFINED BY THE JOBBITS OF THE JWELL JOBTYPE WORD 4 3PM= [ 17 3Q6W [ AWORK2 - USED TO SAVE THE POSITION IN JWELL OF (Z) 4 3QLG [ 9 3R66 [ X4/AWORK3 - LINK 12 3RKQ [ X5 - TYPE OF JOB TO BE STARTED 17 3S5B [ X6 - STARTING POINT JOBNO(Y) IF SCANNEXT CALLED 11 3SK2 [ X7 - REPLY =0 JOB STARTED 14 3T4L [ #0 FAILED TO START A JOB 4 3TJ= [ 6 3W3W STARTNEXT 8 3WHG SBX 4 FX1 14 3X36 STO 4 AWORK3(2) [ LINK 18 3XGQ LDN 7 1 [ JOB NOT STARTED REPLY 9 3Y2B HUNTMISB 1,JWELL 10 3YG2 LDN 3 JOBENTS(1) 8 3Y_L BRN XCOMP 4 3_F= [ 18 3_YW XINC ADN 3 JWENTRY [ INCREMENT TO NEXT TYPE 10 42DG XCOMP LDX 0 JOBTYPE(3) 16 42Y6 BNG 0 XNOJB [ J IF NO MORE 9 43CQ ANDN 0 JOBBITS 7 43XB TXU 0 5 8 44C2 BCS XINC 9 44WL LDX 0 JOBCTS(3) 7 45B= SRL 0 9 17 45TW BZE 0 XINC [ J IF NO WELLJOBS 8 46*G BRN XUPD 4 46T6 [ 8 47#Q XNOJB ADX 4 FX1 15 47SB EXIT 4 0 [ FAILED EXIT 4 48#2 [ 13 48RL [ THERE JOBS OF TYPE(X) IN THE WELL 4 49?= [ 21 49QW XUPD SBX 3 1 [ POSITION WITHIN JWELL OF TYPE(X) 15 4==G STO 3 AWORK2(2) [ PRESERVE 4 4=Q6 [ 13 4?9Q ... JMBS OPEND,,HOSTOPEN,IVEOPEND 4 4?PB [ 18 4#92 OPENSYS ,JOBLIST,GENERAL [ OPEN :SYSTEM.JOBLIST 18 4#NL ... BS ,IVEOPEND [ INDICATE OPENED BY ME 9 4*8= HUNTMISB 1,JWELL 7 4*MW OPEND LDX 3 1 18 4B7G ADX 3 AWORK2(2) [ RESTORE JWELL POINTER 4 4BM6 [ 10 4BPP ... LDX 0 JOBPROP(3) 9 4BS# ... STO 0 AWORK1(2) 4 4BWX ...[ 14 4B_G ...[ PROPERTY OF THIS JOB TYPE PRESERVED.. 4 4C45 ...[ 18 4C6Q LDXC 6 JNEXT(3) [ POINTER OR ACTUAL JOB 16 4CLB BCC RJOB [ J IF REAL JOB 4 4D62 [ 15 4DKL [ POINTER TO JOB OF TYPE(X) IN X6 - IE(Y) 4 4F5= [ 19 4FJW XSCAN CALL 7 SCANNEXT [ LOOK FOR NEXT(X) AFTER(Y) 9 4G4G HUNTMISB 1,JWELL 4 4GJ6 [ 16 4H3Q [ SET B0 IN ALL JWELL ELEMENTS WHERE JNEXT=(Y) 4 4HHB [ 8 4J32 RJOB LDX 0 GSIGN 18 4JGL LDN 3 JOBENTS(1) [ START OF JWELL ENTRIES 21 4K2= BRN Z2 [ SET B0 FOR ALL ELEMENTS WHERE JNEXT 14 4KFW Z1 ADN 3 JWENTRY [ =(Y) 10 4K_G Z2 LDX 7 JOBTYPE(3) 8 4LF6 BNG 7 XEND 9 4LYQ LDX 7 JNEXT(3) 7 4MDB TXU 6 7 8 4MY2 BCS Z1 9 4NCL ORS 0 JNEXT(3) 8 4NX= BRN Z1 4 4PBW [ 17 4PWG XEND GETJOB 6,SYSTEM [ READ ENTRY FOR(Y) 9 4QB6 TESTREP2 OK,XND 10 4QTQ GEOERR 1,NOSUCHJB 7 4R*B XND READAGAIN 10 4RT2 MHUNT 3,FILE,FRB 10 4S#L SMO JOBDATASIZE 10 4SS= LDXC 7 RRH+JLSTAT(3) 8 4T?W BCC YMARK 7 4TRG FREECORE 3 8 4W?6 BRN XSCAN 4 4WQQ [ 4 4X=B [ 10 4XQ2 YMARK NAME 3,FILE,FWB 7 4Y9L JLADJUST 3 10 4YP= BS 3,JLBRUNNING 18 4_8W REWRITE [ WRITE BACK TO JOBLIST 10 4_NG MHUNT 3,FILE,FWB 17 5286 NAME 3,JWELL,COPYSYS [ RENAME FOR NEWJOB 4 52MQ [ 21 537B [ DECREMENT WELLJOBS AND INCREMENT LIVEJOBS FOR THE TYPES INDICATED 17 53M2 [ BY THE TYPE BITS IN JLSTAT OF THE JOBLIST ENTRY 4 546L [ 11 54L= LDX 4 JLPROPNO+RRH(3) 9 555W STOZ AWORK4(2) 7 55KG JLADJUST 3 9 5656 LDX 2 JLSTAT(3) 7 56JQ ANDN 2 3 19 574B ADN 2 2 [ FORM NOW SAME AS JOBTYPE 15 57J2 NGN 7 1 [ LOOP MARKER 17 583L HUNTMISB 1,JWELL [ LOCATE JWELL BLOCK 10 58H= X0 LDN 3 JOBENTS(1) 8 592W BRN X2 14 59GG X1 ADN 3 JWENTRY [ NEXT 10 5=26 X2 LDX 0 JOBTYPE(3) 8 5=FQ BPZ 0 X3 18 5=_B GEOERR 1,NOJBTYPE [ SHOULD ALWAYS FIND TYPE 9 5?F2 X3 ANDN 0 JOBBITS 16 5?YL TXU 0 2 [ COMPARE TYPES 16 5#D= BCS X1 [ J IF DIFFERENT 17 5#XW BPZ 7 X4 [ J IF NOT FIRST TIME 9 5*CG ANDN 0 JWCLUSB 17 5*X6 BZE 0 X4 [ J IF NOT CLUSTER 10 5BBQ TXU 4 JOBPROP(3) 18 5BWB BCS X1 [ J IF DIFF PROPERTIES 20 5CB2 SMO FX2 [ RETAIN ADDRESS OF CLUSTER ENTRY 16 5CTL STO 3 AWORK4 [ IN JWELL BLOCK 16 5D*= X4 LDN 0 JWELLONE [ TYPES MATCHED 17 5DSW SBS 0 JOBCTS(3) [ DECREMENT WELLJOBS 7 5F#G LDN 0 1 17 5FS6 ADS 0 JOBCTS(3) [ INCREMENT LIVEJOBS 19 5G?Q BZE 7 X5 [ EXIT IF END OF SECOND PASS 7 5GRB ADN 7 1 18 5H?2 ANDN 2 1 [ ISOLATE MOP/BACK BIT 15 5HQL BRN X0 [ AND REPEAT 8 5J== X5 LDX 2 FX2 21 5JPW LDX 1 AWORK4(2) [ SEE IF CLUSTER COUNT WAS UPDATED 15 5K9G BZE 1 SWOPE [ J IF NOT 4 5KP6 [ 17 5L8Q [ RE-ORDER ELEMENTS OF SAME TYPE TO SHARE CLUSTERS 4 5LNB [ 7 5M82 LDX 3 1 16 5MML LDEX 4 JOBCTS(3) [ LIVEJOBS FOR(M) 16 5N7= X6 ADN 3 JWENTRY [ NEXT ELEMENT(N) 10 5NLW LDX 0 JOBTYPE(3) 15 5P6G BNG 0 X7 [ J IF NO (N) 16 5PL6 ANDN 0 JOBBITS [ EXTRACT TYPE 7 5Q5Q TXU 0 5 16 5QKB BCS X7 [ J IF DIFFERENT 9 5R52 LDEX 2 JOBCTS(3) 16 5RJL TXL 4 2 [ IS (M).LT.(N) 16 5S4= BCC X6 [ J IF (M).GE.(N) 4 5SHW [ 10 5T3G [ RE-ORDER IF NECESSARY 4 5TH6 [ 18 5W2Q X7 SBN 3 JWENTRY [ LAST ENTRY OF SAME TYPE 7 5WGB TXU 3 1 16 5X22 BCC SWOPE [ J IF SAME ENTRY 8 5XFL SMO FX2 9 5X_= LDN 2 ACOMMUNE1 15 5YDW MOVE 1 JWENTRY [ MOVE(M) OUT 19 5YYG LDN 0 JWENTRY(1) [ ADDRESS OF ENTRY AFTER(M) 7 5_D6 LDX 2 3 7 5_XQ SBX 2 1 18 62CB MOVE 0 0(2) [ MOVE OTHER ENTRIES DOWN 8 62X2 SMO FX2 9 63BL LDN 2 ACOMMUNE1 19 63W= MOVE 2 JWENTRY [ MOVE(M) BACK TO END OF LIST 8 64*W SWOPE LDX 2 FX2 8 64TG LDX 1 FX1 9 65*6 TRACE 5,JSASCAN 7 65F3 ...#SKI JWPHASE4 9 65JY ... DOWN SETJOBQ,2 8 65NT ...#SKI JWPHASE4<1$1 9 668F ... DOWN ENWELLB,1 4 6=P2 [ 8 6?8L [ SUCCESS...... 4 6?N= [ 7 6#7W XIT LDN 7 0 16 6#MG XITC LDX 4 AWORK3(2) [ RESTORE LINK 8 6*76 ADX 4 FX1 7 6*LQ EXIT 4 0 4 6B6B [ 7 6BL2 [ SCANNEXT 4 6C5L [ 17 6CK= [ SCAN JOBLIST FOR NEXT JOB(Z) AFTER (Y) OF TYPE(X) 4 6D4W [ 18 6DJG [ X5 JOB TYPE(X) BOTTOM BITS OF JOBTYPE - UNCHANGED 15 6F46 [ X6 STARTING POINT(Y) BECOMES ANSWER(Z) 10 6FHQ [ X7 LINK - AWORK4 4 6G3B [ 5 6GH2 SCANNEXT 8 6H2L SBX 7 FX1 16 6HG= STO 7 AWORK4(2) [ PROCESS LINK 4 6H_W [ 18 6JFG LDX 7 6 [ STARTING POINT(W)=(Y) 4 6J_6 [ 19 6KDQ GETJOB 6,SYSTEM [ POSITION JOBLIST AFTER(Y) 15 6KYB TESTREP OK,XREAD [ J IF FOUND 18 6LD2 STEPAGAIN [ RE-READ RECORD AFTER(Y) 8 6LXL BRN TRY 17 6MC= XREAD STEP [ READ NEXT RECORD 8 6MWW ...TRY BNZ 3 XON 19 6P*Q REWIND [ ELSE START AT FRONT AGAIN 6 6PTB STEP 8 6Q*2 BRN XREAD 4 6QSL [ 12 6R#= [ (Z) = JOBNO OF CURRENT RECORD 4 6RRW [ 13 6S?G XON LDX 6 JLJOBNO(3) [ (Z) 4 6SR6 [ 19 6T=Q [ CONSTRUCT JWELL(JOBTYPE) BIT PATTERN FROM JOBLIST ENTRY 4 6TQB [ 10 6W=2 SMO JOBDATASIZE 18 6WPL LDX 4 JLSTAT(3) [ JOBLIST ENTRY STATUS 20 6X9= ANDN 4 3 [ CLUS/CENT/MOP - BOTTOM TWO BITS 18 6XNW ADN 4 2 [ NOW SAME AS JWELL BITS 4 6Y8G [ 15 6YN6 [ LOCATE JWELL BLOCK AND INITIALISE POINTERS 4 6_7Q [ 5 6_F6 ...PASS2 9 6_MB HUNTMISB 1,JWELL 10 7272 LDN 1 JOBENTS(1) 8 72LL BRN XSORT 4 736= [ 18 73KW [ PROCESS JNEXTS IN JWELL BLOCK BY UPDATING AS NECESSARY 4 745G [ 10 74*# ...XLOO SBX 3 JOBDATASIZE 16 74K6 XLOOP ADN 1 JWENTRY [ TO NEXT ENTRY 10 754Q XSORT LDX 0 JOBTYPE(1) 17 75JB BNG 0 XNDW [ J IF END OF BLOCK 9 7642 LDXC 0 JNEXT(1) 19 76HL BCC XLOOP [ TO NEXT IF NOT A POINTER 7 773= TXU 0 7 18 77GW BCS XLOOP [ J IF JOBNO'S DIFFERENT 4 782G [ 11 78G6 [ SET JNEXT TO CURRENT JOB 4 78_Q [ 9 79FB STO 6 JNEXT(1) 8 79_2 LDX 0 GSIGN 14 7=DL ORS 0 JNEXT(1) [ POINTER 4 7=Y= [ 15 7?CW [ SEE IF SAME TYPE AND CLEAR B0 IF THEY ARE 4 7?XG [ 10 7#C6 LDX 0 JOBTYPE(1) 16 7#WQ ANDN 0 JOBBITS [ JWELL JOBTYPE 7 7*BB LDX 2 0 20 7*W2 ANDX 2 4 [ EXTRACT THESE BITS FROM JOBLIST 7 7B*L TXU 2 0 17 7BT= BCS XLOOP [ J IF NOT SAME TYPE 4 7BXF ...[ 14 7B_N ...[ ALSO JUMP IF MOP/BACK TYPE NOT SAME... 4 7C3X ...[ 7 7C66 ... ERX 2 4 7 7C8* ... ANDN 2 1 8 7C=J ... BNZ 2 XLOOP 9 7C#W ANDN 0 JWCLUSB 17 7CSG BZE 0 XCLR [ J IF NOT CLUSTER 20 7D#6 LDX 0 JOBPROP(1) [ COMPARE PROPERTIES AS CLUSTER 10 7DRQ TXU 0 JLPROPNO(3) 16 7F?B BCS XLOOP [ J IF DIFFERENT 4 7FR2 [ 10 7G=L [ SAME TYPE AND PROPERTY 4 7GQ= [ 10 7GW7 ...XCLR ADX 3 JOBDATASIZE 4 7H24 ...[ 14 7H5_ ...[ SKIP IF ALREADY RUNNING OR DEGENERATE 4 7H9W ...[ 14 7HCP ... JMBS XLOO,3,JLBRUNNING,JLBNOTCAND 9 7HKK ... LDX 0 JNEXT(1) 15 7HPG STOC 0 JNEXT(1) [ REMOVE B0 8 7J96 ... BRN XLOO 4 7JNQ [ 18 7K8B [ END OF JWELL BLOCK - IS CURRENT JOB THE CORRECT TYPE 4 7KN2 [ 14 7L7L XNDW LDX 7 6 [ (W)=(Z) 11 7LM= LDN 0 JWCENTB+JWCLUSB 4 7M6W [ 13 7MLG [ EXTRACT CLUS/CENT BITS AS REQUIRED 4 7N66 [ 7 7NKQ ANDX 0 5 9 7P5B ORN 0 JWMOPB 7 7PK2 ANDX 4 0 4 7Q4L [ 7 7QJ= TXU 4 5 15 7R3W BCS XREAD [ LOOP IF NOT 4 7RHG [ 14 7S36 [ IF JOB ALREADY STARTED LOOK FOR NEXT 4 7SGQ [ 10 7T2B ADX 3 JOBDATASIZE 14 7TG2 ... JMBS XREAD,3,JLBRUNNING,JLBNOTCAND 16 7WYW LDX 2 FX2 [ RESTORE LINK 4 7X2K ...[ 17 7X4# ...[ IF JOBLIST ENTRY IS CLUSTER CHECK PROPS ARE SAME 4 7X63 ...[ 11 7X7Q ... JBC XPROK,3,JLBCLUS 9 7X93 ... LDX 0 AWORK1(2) 8 7X=# ... BZE 0 XPROK 10 7X=Y ... SBX 3 JOBDATASIZE 10 7X?K ... TXU 0 JLPROPNO(3) 8 7X#X ... BCS XREAD 5 7XBL ...XPROK 9 7XDG LDX 7 AWORK4(2) 8 7XY6 ADX 7 FX1 7 7YCQ EXIT 7 0 4 7YXB #END 8 ____ ...73745023000100000000