{{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