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