16 22FL #SEG COREALLG [ BILL IZATT : CENT 8 22_= #OPT K0COREALLG=0 12 23DW #LIS K0COREALLG>K0KERNEL>K0ALLGEO 12 23YG #OPT K6COREALLG=K6KERNEL>K6ALLGEO 9 24D6 #OPT TRACE=K6COREALLG 7 24XQ 8HCOREALLG 17 25CB [ THIS ENTRY POINT MUST REMAIN FIXED WITHIN THE CHAPTER 12 25X2 SEGENTRY K1COREALLG,QENTRY1 12 266S ... SEGENTRY K2COREALLG,QENTRY2 4 26BL [ 4 26W= [ 20 27*W [ THIS CHAPTER CHECKS THE DENSITY OF LONGLOCK BLOCKS IN THE LONGLOCK 19 27TG [ AREA, AND TAKES STEPS TO INCREASE IT IF IT FALLS TOO LOW. 19 28*6 QENTRY1 [ ENTRY FROM REDUCELL MACRO 9 28BT ... LDX 0 CIROUND 8 28DJ ... SBN 0 32 18 28G? ... BNG 0 SMALLR [IF NOT LSM,DO FULL REDUCTION 9 28J2 ... LDX 0 GFIXCHAP 14 28KP ... SBX 0 CTOP [SIZE OF LL AREA 8 28MD ... SBN 0 4095 18 28P7 ... BNG 0 QEXIT1 [DONT BOTHER TO REDUCE IF SMALL 5 28QW ...SMALLR 8 28SQ LDX 1 CTOP 8 29#B #SKI TRACE>499-499 10 29S2 GSCAN CTOP,REDUCTOP 21 2=?L [ THIS PART FINDS A BLOCK TO START STEPPING FORWARD FROM. THE UPPERMOST 19 2=R= [ FREE BLOCK NOT ABOVE CTOP IS USED, IF SUCH A BLOCK EXISTS. 18 2?=W [ OTHERWISE THE FIRST BLOCK OF VARIABLE CORE IS USED. 8 2?QG LDX 2 BFREE 9 2#=6 PP1 LDX 2 BPTR(2) 19 2#PQ TXL 1 2 [ IS THE BLOCK ABOVE CTOP? 15 2*9B BCS PP1 [ JUMP IF YES 21 2*P2 TXU 2 CXFR [ IF EQUAL, THERE IS NO FREE BLOCK 16 2B8L BCS PP2 [ BELOW CTOP, 20 2BN= LDX 2 FCORES [ SO START FROM LOWEST BLOCK 21 2C7W [ THE HIGHEST BLOCK, OF ANY KIND, NOT ABOVE CTOP IS FOUND. THE AMOUNT 20 2CMG [ OF IT WHICH LIES BELOW CTOP IS STORED NEGATIVELY IN X1 TO BE 21 2D76 [ DEDUCTED FROM THE TOTAL RUNG UP IN X1 OF CORE NOT CONSISTING OF 21 2DLQ [ LONGLOCK BLOCKS. X3 WILL POINT TO THE LOWEST LONGLOCK BLOCK FOUND 7 2F6B PP2 LDX 0 2 14 2FL2 ADX 2 ASIZE(2) [ SET UP 19 2G5L TXL 1 2 [ IS THE BLOCK ABOVE CTOP? 15 2GK= BCC PP2 [ JUMP IF NO 19 2H4W SBX 1 0 [ X0 POINTS TO HIGHEST BLOCK 21 2HJG NGX 1 1 [ X1 HOLDS -OVERHANG OUTSIDE LL AREA 7 2J46 LDX 2 0 21 2JHQ NGN 3 1 [ X3=-1 => NO LONGLOCK BLOCK FOUND 20 2K3B [ THE LONGLOCK AREA IS SCANNED FOR NON-LONGLOCK BLOCKS. WHEN ONE IS 21 2KH2 [ FOUND, ITS SIZE IS ADDED TO THE RUNNING COUNT IN X1. IN PASSING, 19 2L2L [ THE ADDRESS OF THE LOWEST LONGLOCK BLOCK IS STORED IN X3. 9 2LG= PP3 LDX 0 AFLAG(2) 8 2L_W ANDN 0 #4 15 2MFG BNZ 0 PP4 [ JUMP IF LL 9 2M_6 ADX 1 ASIZE(2) 8 2NDQ BRN PP5 21 2NYB PP4 BPZ 3 PP5 [ JUMP IF LOWEST LL BLOCK ALREADY MET 7 2PD2 LDX 3 2 9 2PXL PP5 ADX 2 ASIZE(2) 18 2QC= TXL 2 GFIXCHAP [ TOP OF LL AREA REACHED? 15 2QWW BCS PP3 [ JUMP IF NO 21 2RBG [ THE LONGLOCK AREA HAVING BEEN SCANNED, TEST IF MORE THAN HALF OF IT 21 2RW6 [ CONSISTS ON NON-LONGLOCK BLOCKS. IF SO, CTOP IS MOVED UP UNTIL 20 2S*Q [ HALF OF THE RESULTING REGION IS OF LONGLOCK BLOCKS, UNLESS THE 16 2STB [ PRESENCE OF A LONGLOCK BLOCK PREVENTS THIS. 9 2T*2 LDX 0 GFIXCHAP 19 2TSL SBX 0 CTOP [ GET SIZE OF LL AREA IN X0 19 2W#= ... SLL 1 1 [ MAX FOR NON-LL BLOCKS IN X0 16 2WRW SBX 1 0 [ X1 HOLDS EXCESS 21 2X?G BNG 1 QEXIT1 [ JUMP IF NO EXCESS. (IF EXCESS = 0 19 2XR6 ADS 1 CTOP [ WE GO THE LONG WAY ROUND) 20 2Y=Q TXL 3 CTOP [ IF NO LL BLOCK FOUND, X3 >CTOP 9 2YQB BCC QEXIT1 21 2_=2 [ IF A LONGLOCK BLOCK GOT IN THE WAY, MOVE CTOP TO THE START OF IT, AND 21 2_PL [ MARK IT, AND ALL OTHER LONGLOCK BLOCKS UP TO THE DESIRED VALUE OF 11 329= [ CTOP, 'PLEASE MOVE UP'. 18 32NW LDX 2 CTOP [ X2 HOLDS DESIRE VALUE 8 338G STO 3 CTOP 19 33N6 LDN 0 #400 [ LOAD 'PLEASE MOVE UP' BIT 18 347Q PP6 ORS 0 AFLAG(3) [ MARK 'PLEASE MOVE UP' 14 34MB PP7 ADX 3 ASIZE(3) [ STEP ON 7 3572 TXL 3 2 9 35LL BCC QEXIT1 17 366= LDX 1 AFLAG(3) [ TEST IF LONGLOCK 8 36KW ANDN 1 #4 8 375G BNZ 1 PP6 8 37K6 BRN PP7 4 384Q [ 11 38JB [ SET UP ACCUMULATORS AND EXIT 5 3942 QEXIT1 8 39HL SMO FX2 19 3=3= LDX 3 ACC3 [ RESTORE X3 TO PRESERVE ACC3 19 3=GW ACROSS CHARGESC,13 [ RETURNS TO REDUCELL MACRO 4 3=G_ ...[ 13 3=H4 ...QENTRY2 [QUICK LL GETCORES FOR LSM 9 3=H7 ... LDX 3 GLLLOG 9 3=H= ... ADX 3 CIRNDB 9 3=H* ... ANDX 3 IROUNDNG 18 3=HD ... STO 3 GEN4 [ RESTORE SIZE PARAMETER 10 3=HH ... BXGE 3 CFREE,SFAIL 7 3=HL ... LDN 5 0 8 3=HP ... LDX 7 CTOP 8 3=HS ... SBN 7 2048 17 3=HX ... LDN 3 BCHAP [GET CHAP NEAREST CTOP AS A START 9 3=J2 ...QLL1 LDX 3 FPTR(3) 9 3=J5 ... BXE 3 CXCH,QEND 14 3=J8 ... BXGE 3 CTOP,QLL1 [J IF IN LLAREA 18 3=J? ... BXL 3 5,QLL1 [J IF NOT AS GOOD AS BEST SO FAR 14 3=JB ... BXGE 3 7,QFOUND [J IF WITHIN LIMIT 14 3=JF ... LDX 5 3 [MAKE BEST SO FAR 8 3=JJ ... BRN QLL1 7 3=JM ...QEND LDX 3 5 9 3=JQ ...QFOUND [X3->NEAREST 11 3=JT ... LDX 4 3 [KEEP 1ST 13 3=JY ... ADX 3 ASIZE(3) [GO TO NEXT 15 3=K3 ... BXL 3 CTOP,QFOUND [J IF NOT IN LL YET 12 3=K6 ... LDX 3 4 [LAST NOT IN LL 14 3=K9 ... BRN ROUND1 [GO TO SURVEY LL AREA 9 3=K# ...ROUND ADX 3 ASIZE(3) 13 3=KC ...ROUND1 BXE 3 GFIXCHAP,PHAIL [GIVE UP 20 3=KG ... JMBS ROUND,3,AFFROZ,AFLOCK,AFLONG [DROP THRU IF ORD OR FREE 9 3=KK ... LDX 6 ASIZE(3) 15 3=KN ... JBS PHREE,3,AFFREE [DROP THRU IF USED 9 3=KR ... LDX 0 ATYPE(3) 11 3=KW ... BXE 0 FPSEUTYP,ROUND 15 3=K_ ... BXL 6 GEN4,ROUND [J IF NOT BIG ENUF 10 3=L4 ... LDX 5 ALOGLEN(3) 18 3=L7 ...[ NOW GET CORE TO MOVE OUT USED BLOCK:WE KEEP COUNT OF BLOX 17 3=L= ...[MOVED SO KNOW WHETHER POINTERS SAFE AFTER THE GETCORE 7 3=L* ... PHOTO 7 18 3=LD ... LDX 4 GEN4 [KEEP AS GETCORE &BLOCKCOPY OVERWRITES 11 3=LH ... GETCORE 5,0 [OPTIONAL 11 3=LL ... BRN QGOT [SUCCESS 8 3=LP ... STO 4 GEN4 18 3=LS ... TESTMOVE 7,ROUND [CAN GO ON FROM X3 IF NO BLOX MOVED 16 3=LX ... BRN QENTRY2 [START AGAIN IF BLOX MOVED 8 3=M2 ...QGOT STO 4 GEN4 19 3=M5 ... BXU 7 BCOUNT,QABORT [GIVE UP IF BLOX MOVED,NEXT TIME 13 3=M8 ...[ ...SHOULD GET BLOCK WITHOUT MOVING 21 3=M? ... JMBS QABORT,3,AFFROZ,AFFREE,AFLOCK,AFLONG [J IF CHANGED TOO MUC 15 3=MB ... BXU 5 ALOGLEN(3),QABORT [OR ALTLENED 9 3=MF ... LDX 0 ATYPE(3) 15 3=MJ ... BXE 0 FPSEUTYP,QABORT [OR NOW PSEUDO 9 3=MK ... LDX 1 FPTR(2) 19 3=ML ... JBS QABORT,1,AFFROZ [J IF GOT BLK HAS BEEN FROZEN 18 3=MM ... BXE 3 FPTR(2),QGOTIT [IF CHAP USED FOR GETCORE & 13 3=MN ...[ ... ITS CHAP WERE MOVING ,USE DIRECT 15 3=MP ... JBC QNOCHAP,3,AFCHAP [DROP THRU IF CHAP 9 3=MQ ... LDX 0 FPTR(2) 8 3=MT ... ORX 0 GSIGN 9 3=MY ... SMO BACK1(3) 14 3=N3 ... STO 0 KTAB [UPDATE CHAP TABLE 8 3=N6 ... LDN 0 A1(3) 17 3=N9 ... BXU 0 FX1,QNOCHAP [DROP THRU IF CURRENT CHAP 9 3=N# ... LDX 0 FPTR(2) 8 3=NC ... ADN 0 A1 8 3=NG ... STO 0 FX1 5 3=NK ...QNOCHAP 7 3=NN ... LDX 2 3 19 3=NR ... BLOCKCOPY [COPIES TO BLOCK AFTER FX2,FREEING OLD SITE 21 3=NW ...[ ...BUT AS NO AMALG WITH LSM X3 STILL VALID AS PTR TO NOW FREE BLOCK 10 3=N_ ...[ ...BIG ENUF FOR REQUEST 15 3=P4 ... STO 4 GEN4 [CORRECT AFTER BLOCKCOPY 13 3=P7 ... BRN PHREE1 [BLOCK AS FREE 14 3=P= ...QABORT FREECORE FPTR(2) [GET RID OF NEW 12 3=P* ... BRN QENTRY2 [TRY AGAIN 9 3=PD ...PHREE [X3->FREE BLOCK 14 3=PH ... BXL 6 GEN4,QAMALG [J IF TOO SMALL 5 3=PL ...PHREE1 13 3=PP ... FREEOUT 3 [GET OUT OF STRUCTURE 14 3=PS ... BXE 6 GEN4,QEASY [J IF NO EXCESS 12 3=PX ... LDX 6 GEN4 [AMOUNT REQD 14 3=Q2 ... SBS 6 ASIZE(3) [SPLIT FROM END 16 3=Q5 ... FREEIN 3 [BACK IN NEW PLACE IN STRUCTURE 14 3=Q8 ... ADX 3 ASIZE(3) [END TO BE USED 9 3=Q? ... STO 6 ASIZE(3) 7 3=QB ... LDN 0 1 12 3=QF ... STO 0 AFLAG(3) [MARK FREE 9 3=QJ ... STO 3 FPTR(3) 9 3=QM ... STO 3 BPTR(3) 9 3=QQ ... STOZ ATYPE(3) 5 3=QT ...QEASY 13 3=QY ... CHAIN 3,FX2 [NEXT TO CUUR ACT 8 3=R3 ... BRN QSUCCESS 11 3=R6 ...QAMALG LDX 4 3 [KEEP START 5 3=R9 ...QAMALG1 9 3=R# ... ADX 3 ASIZE(3) 10 3=RC ... JBC ROUND1,3,AFFREE 9 3=RG ... ADX 6 ASIZE(3) 16 3=RK ... BXL 6 GEN4,QAMALG1 [J IF NOT ENUF YET 12 3=RN ... LDX 5 3 [X5->LAST BLOCK 8 3=RR ... CHAIN 4,FX2 7 3=RW ... LDX 3 4 7 3=R_ ... FREEOUT 3 9 3=S4 ...QAMRD ADX 3 ASIZE(3) 9 3=S7 ... BXL 5 3,QAMEND 8 3=S= ... DERING 3 7 3=S* ... FREEOUT 3 9 3=SD ... LDX 0 ASIZE(3) 7 3=SH ... SMO 4 14 3=SL ... ADS 0 ASIZE [KEEP SIZE RIGHT 8 3=SP ... BRN QAMRD 5 3=SS ...QAMEND 10 3=SX ...QSUCCESS [BLOCK NEXT IS OK 9 3=T2 ... LDX 1 FPTR(2) 9 3=T5 ... LDX 0 ASIZE(1) 8 3=T8 ... SBS 0 CFREE 5 3=T9 ...QGOTIT 18 3=T? ... BXGE 1 CTOP,QTOP [J IF CTOP LESS THAN GOT BLOCK 8 3=TB ... STO 1 CTOP 12 3=TF ...QTOP [NOW CTOP LESS THAN GOT BLOCK 18 3=TJ ... LDN 1 GLLACCS [ RESTORE THE ALEVEN WORD 18 3=TM ... SMO FX2 [ LINK OF THE ACTIVITY 19 3=TQ ... LDN 2 ACC3 [ REQUESTING THE NEW BLOCK 8 3=TT ... MOVE 1 ALINK 9 3=TY ... LDN 1 GLLLINKS 9 3=W3 ... LDN 2 GLINKSTEP 7 3=W6 ... MOVE 1 5 9 3=W9 ... STOZ GLLSEMA 9 3=W# ... FON GLLWAIT 8 3=WC ... COREQUST Y 5 3=WG ...PHAIL 5 3=WK ...SFAIL 14 3=WN ...SMALL ACROSS COREALLF,1 [TRY FULL RIGMAROLE 11 3?2G MENDAREA 30,K99COREALLG 4 3?G6 #END 8 ____ ...35614612001200000000