15 22FL ...#SEG UNJAMMER [DEK BEASLEY 8 22_= #OPT K0UNJAMMER=0 11 23DW #LIS K0UNJAMMER>K0ALLGEO>K0LLS 7 23YG 8HUNJAMMER 4 24D6 # 21 24XQ # THIS IS THE MAIN SEGMENT OF THE CORE UNJAMMER,ENTERED IF NECESSARY 7 25CB # IN BLANKET 4 25X2 # 21 26BL # THERE IS ONE MAIN ENTRY POINT:K1 AND ONE RETURN FROM JAMSWAP IF NO 14 26W= # CANDIDATE FOR SWAPOUT CAN BE FOUND:K2 11 27*W SEGENTRY K1UNJAMMER,XX1U 11 27TG SEGENTRY K2UNJAMMER,XX2U 4 28SQ # 6 28XW ...#UNS ISTDP 10 2932 ...TARGET +CUNJAMTARG 6 2966 ...#UNS ISTDP 4 299= ...#SKI 9 29#B TARGET #12000 10 29S2 T15 +CJTHRESH15 10 2=?L T2 +CJTHRESH2 10 2=R= T3 +CJTHRESH3 10 2?=W T4 +CJTHRESH4 2 2?QG 4 2CMG TEST 9 2D76 TXL 6 CJTARGET 6 2D?3 ...#UNS ISTDP 4 2DBY ...#SKI 4 2DGT ...( 18 2DLQ BCC R11A [END IF TARGET REACHED 7 2F6B EXIT 7 0 4 2F85 ...) 6 2F9S ...#UNS ISTDP 4 2F?H ...( 8 2F*= ... BCS (7) 7 2FB_ ...#UNS ISTDPSTATS 9 2FDN ... TRACEDP AJAMSUC 8 2FGC ... BRN R11A 4 2FJ6 ...) 4 2FL2 # 18 2G5L # S/R TO FIND JOBLOCK IN X3,LINK X7,EXITS 0 IF MISSING 4 2GK= # 10 2H4W TJOB FINDJOBQ 3,CJJOBNO,(7) 7 2HJG EXIT 7 1 4 2J46 # 21 2JHQ # SUBROUTINE TO SCAN UP THROUGH THE CORE, SPLITTING OFF FROM THE END 21 2K3B # BLOCKS ANY EXCESS, AND CHAIN ANY CORE THUS RECLAIMED INTO THE FREE 21 2KH2 # AT END OF ROUTINE ANY ACTIVITIES WAITING ON THE QUEUE FOR CORE ARE 21 2L2L # UP. LINK X7. NO COORDINATION. ON EXIT, X1=FX1,X2=FX2, ALL OTHERS E 8 2LG= # ARE DESTROYED. 21 2L_W # IN A SENSE THIS ROUTINE IS AN EXTENSION OF THE CORE ALLOCATION SYS 4 2MFG # 6 2MKC ...#UNS ISFC 4 2MP# ...#SKI 4 2MT9 ...( 4 2M_6 QCJ1 6 2N3P ...#UNS CA1D 4 2N6# ...( 18 2N8X ... ANDX 7 BITS22LS [ENSURE B0 & 1 CLEAR 20 2N?G ... ORX 7 0 [SET B0 OF X7 ACCORDING TO SOURCE 4 2NB5 ...) 20 2NDQ LDX 3 GLOW [START OF VARIABLE CORE='THIS' 19 2NYB LDN 4 BFREE [THE 'FREE BLOCK' BELOW THIS 21 2PD2 NEXT TXU 4 BPTR(3) [IF THE BLOCK CHAINED BEFORE THIS IS 21 2PXL BCC XFREE [BLOCK BELOW IT, THEN THIS BLOCK IS F 9 2QC= LDX 0 AFLAG(3) 7 2QWW ANDN 0 2 18 2RBG BNZ 0 NONE [IGNORE ANY FROZEN BLOCK 16 2RW6 LDX 0 ALOGLEN(3) [LOGICAL LENGTH 9 2S*Q ANDX 0 BITS22LS 10 2STB TXU 0 ALOGLEN(3) 21 2T*2 BCS (GEOERR) [JUMP IF CORRUPTION HAS OCCURRED 6 2TD6 ...#UNS CA1D 9 2TH= ... ADX 0 CIRNDB 6 2TLB ...#UNS CA1D 4 2TPG ...#SKI 10 2TSL ADN 0 A1+IROUND-1 9 2W#= ANDX 0 IROUNDNG 15 2WRW LDX 5 ASIZE(3) [ACTUAL SIZE 9 2X?G ANDX 5 BITS22LS 14 2XR6 SBX 5 0 [EXCESS 15 2Y=Q BZE 5 NONE [J IF NONE 9 2YQB BNG 5 (GEOERR) 6 2YR* ...#UNS CA1D 4 2YS# ...( 8 2YT? ... BPZ 7 NEXT1 21 2YW= ... [J ACCORDING TO CONSTANT REQD 9 2YX9 ... TXL 5 CIROUND 8 2YY8 ... BCS NONE 8 2Y_7 ... BRN NEXT2 5 2_26 ...NEXT1 9 2_35 ... TXL 5 CSPLIT 8 2_44 ... BCS NONE 5 2_53 ...NEXT2 4 2_62 ...) 6 2_6_ ...#UNS CA1D 4 2_7Y ...#SKI 4 2_8X ...( 7 2_=2 SMO 7 7 2_PL TXL 5 0 17 329= BCS NONE [JUMP IF NOT ENOUGH 4 32F4 ...) 9 32NW LDX 1 ATYPE(3) 18 338G TXU 1 GCHTY [TEST IF A CHAPTER BLOCK 13 33N6 BCS XCHAP [NO 21 347Q SBS 5 ACHAP [ADJUST TOTAL OF CORE USED FOR CHAPTE 5 34MB XCHAP 16 3572 ADS 5 CFREE [NEW FREE TOTAL 16 35LL SBS 5 ASIZE(3) [NEW BLOCK SIZE 19 366= ADX 6 5 [UPDATE COUNT OF WORDS FREED 17 36KW ADX 3 0 [ADDRESS F/C BLOCK 17 375G LDX 2 4 [PRECEDING F/C BLOCK 19 37K6 LDX 1 FPTR(2) [ADDRESS SUCCEEDING F/C BLOCK 16 384Q LDX 0 3 [PRESERVE ADDRESS 20 38JB ADX 0 5 [ADDRESS OF NEXT BLOCK IN CORE 7 3942 TXU 0 1 19 39HL BCS NOAML [JUMP IF THIS IS NOT FREE 21 3=3= ADX 5 ASIZE(1) [NEW SIZE FREE BL AFTER AMALGAMATION 6 3=5T ...#UNS ISFC 4 3=8D ...( 19 3=?3 ... FREEOUT 1 [REMOVE BLK FROM SIZE RING 15 3=*L ... LDX 2 4 [RESTORE X2 4 3=D9 ...) 18 3=GW LDX 1 FPTR(1) [NEW SUCCEEDING F/C BLOCK 9 3?2G SMO BPTR(1) 8 3?G6 TXU 1 FPTR 16 3?_Q BCS (GEOERR) [J IF CORRUPTED 17 3#FB NOAML STO 2 BPTR(3) [THESE INSTRUCTIONS 14 3#_2 STO 1 FPTR(3) [CHAIN IN 14 3*DL STO 3 FPTR(2) [THE NEW 16 3*Y= STO 3 BPTR(1) [FREECORE BLOCK 6 3B2# ...#UNS ISFC 4 3B4B ...( 9 3B6D ... STO 5 ASIZE(3) 17 3B8G ... [SET SIZE FOR FREEIN 18 3B=L ... FREEIN 3 [CHAIN BLK INTO SIZE RING 4 3B*= ...) 7 3BCW #SKI CAMK7>4-4 4 3BXG ( 9 3CC6 STO 5 ASIZE(3) 7 3CWQ LDN 5 1 9 3DBB STO 5 AFLAG(3) 4 3DW2 ) 7 3F*L #SKI CAMK7<5-5 4 3FT= ( 15 3G#W ORX 5 GSIGN [MARK AS FREE 14 3GSG STO 5 ASIZE(3) [SET SIZE 9 3H#6 STOZ AFLAG(3) 4 3HRQ ) 21 3J?B XFREE LDX 4 3 [COPY ADDR OF NEW FREE BLOCK BELOW 9 3JR2 NONE SMO ASIZE(3) 18 3K=L ADN 3 0 [GET ADDR OF NEXT BLOCK 9 3KQ= SMO BPTR(3) 8 3L9W TXU 3 FPTR 16 3LPG BCS (GEOERR) [ J IF CORRUPTED 21 3M96 TXU 3 GFIXCHAP [TEST IF REACHED THE END OF VARIABLE 13 3MNQ BCS NEXT [NO 21 3N8B COREWAKE [WAKE UP ANY ACTIVITIES AWAITING CORE 7 3NN2 EXIT 7 1 4 3NN9 ...) 6 3NND ...#UNS ISFC 4 3NNM ...( 4 3NNW ...QCJ1 20 3NP5 ... LDX 3 GLOW [START OF VARIABLE CORE='THIS' 9 3NP# ...NEXT JBS NONE,3,AFFREE 9 3NPH ... LDX 0 AFLAG(3) 7 3NPQ ... ANDN 0 2 18 3NP_ ... BNZ 0 NONE [IGNORE ANY FROZEN BLOCK 16 3NQ8 ... LDX 0 ALOGLEN(3) [LOGICAL LENGTH 9 3NQC ... ANDX 0 BITS22LS 10 3NQL ... TXU 0 ALOGLEN(3) 21 3NQT ... BCS (GEOERR) [JUMP IF CORRUPTION HAS OCCURRED 6 3NR4 ...#UNS CA1D 9 3NR? ... ADX 0 CIRNDB 6 3NRG ...#UNS CA1D 4 3NRP ...#SKI 10 3NRY ... ADN 0 A1+IROUND-1 9 3NS7 ... ANDX 0 IROUNDNG 15 3NSB ... LDX 5 ASIZE(3) [ACTUAL SIZE 9 3NSK ... ANDX 5 BITS22LS 14 3NSS ... SBX 5 0 [EXCESS 15 3NT3 ... BZE 5 NONE [J IF NONE 9 3NT= ... BNG 5 (GEOERR) 6 3NTF ...#UNS CA1D 4 3NTN ...( 9 3NTX ... BXL 5 4,NONE 4 3NW6 ...) 6 3NW* ...#UNS CA1D 4 3NWJ ...#SKI 4 3NWR ...( 7 3NX2 ... SMO 7 7 3NX9 ... TXL 5 0 17 3NXD ... BCS NONE [JUMP IF NOT ENOUGH 4 3NXM ...) 9 3NXW ... LDX 1 ATYPE(3) 18 3NY5 ... TXU 1 GCHTY [TEST IF A CHAPTER BLOCK 13 3NY# ... BCS XCHAP [NO 21 3NYH ... SBS 5 ACHAP [ADJUST TOTAL OF CORE USED FOR CHAPTE 5 3NYQ ...XCHAP 13 3NY_ ... ADX 6 5 [UPDATE RUNNING TOTAL 12 3N_8 ... SBS 5 ASIZE(3) [NEW SIZE 12 3N_C ... ADX 3 ASIZE(3) [X3->FRAG 9 3N_L ... STO 3 FPTR(3) 13 3N_T ... STO 3 BPTR(3) [CHAIN FRAG 9 3P24 ... STOZ AFLAG(3) 15 3P26 ... LDX 0 FPSEUTYP [SET TO PSEUD BLOCK 16 3P28 ... STO 0 ATYPE(3) [FOR FREECORE INTERFACE 9 3P2? ... STO 5 ASIZE(3) 9 3P2G ... LDN 0 ARINGNO+1 9 3P2P ... BXL 5 0,SHORT 7 3P2Y ... LDCT 0 2 10 3P37 ... STO 0 ARINGNO(3) 7 3P3B ...SHORT LDX 2 3 7 3P3S ... FREECORE 2 9 3P4= ...NONE SMO ASIZE(3) 18 3P4F ... ADN 3 0 [GET ADDR OF NEXT BLOCK 5 3P4N ...NONE1 9 3P4X ... SMO BPTR(3) 8 3P56 ... TXU 3 FPTR 16 3P5* ... BCS (GEOERR) [ J IF CORRUPTED 21 3P5J ... TXU 3 GFIXCHAP [TEST IF REACHED THE END OF VARIABLE 13 3P5R ... BCS NEXT [NO 7 3P62 ... EXIT 7 1 4 3P69 ...) 4 3P7L # 16 3PM= # SUBROUTINE TO FREE UNUSED LINK BLOCKS. X7=LINK 14 3Q6W # NO COOR. ON EXIT X2& X3 DESTROYED & X4 4 3QLG # 4 3R66 # 4 3RKQ QCJ2 17 3S5B LDN 2 BACT+ACTRING [SEARCH ACTIVITY RING 9 3SK2 QCJ21 LDX 2 FPTR(2) 15 3T4L BXE 2 BACTR,(7) [EXIT AT END 2 3TJ= 12 3W3W LDX 3 ALINKRING-ACTRING(2) 17 3WHG BXE 3 0(3),QCJ21 [J IF NO LINK BLOCK 19 3X36 SBN 3 BLINKRING [X3 -> START OF LINK BLOCK 10 3XGQ LDX 0 ALOGLEN(3) 7 3Y2B SBN 0 3 16 3YG2 BPZ 0 QCJ21 [ J IF NO SPARE 7 3Y_L LDX 4 2 9 3_F= ADX 6 ASIZE(3) 18 3_YW FREECORE 3 [FREE EMPTY LINK BLOCK. 20 42DG LDX 2 4 [RESTORE POINTER ROUND ACTRING 8 42Y6 BRN QCJ21 4 43CQ # 15 43XB # SUBROUTINES USED BY FREE---- MACROS ABOVE 4 44C2 # 7 44WL FREEFILE 4 45B= # 20 45TW # SUBROUTINE TO FREE BSTB/BFREEW BLOCKS.X7=LINK.NO COORDINATION. 4 46*G # 4 46T6 QCJ7 10 47#Q LDN 5 BSTB+BFREEW 8 47SB LDX 2 BACT 8 48#2 SQ2 TXU 2 CXAC 8 48RL BCC SQ99 16 49?= LDX 4 FPTR(2) [GET NEXT BLOCK 9 49QW LDX 0 ATYPE(2) 8 4==G SRL 0 12 7 4=Q6 SBX 0 5 8 4?9Q BNZ 0 SQ1 19 4?PB ADX 6 ASIZE(2) [UPDATE COUNT OF WORDS FREED 20 4#92 FREECORE 2 [FREE THIS BLOCK IF RIGHT TYPE 20 4#NL SQ1 LDX 2 4 [RESTORE ADDRESS OF NEXT BLOCK 8 4*8= BRN SQ2 4 4*MW SQ99 7 4B7G EXIT 7 0 4 4BM6 # 20 4C6Q # ENTERED HERE FROM CHARGESC WHEN CORE USAGE SUM IS > OR = FIRST 21 4CLB # THRESHOLD, OR A FAILED SWAPIN HAS LEFT BIT SET IN INOUTPC REQUESTI 15 4D62 # ENTRY TO RECLAIMING ROUTINES ONE AND TWO. 21 4DKL # THE AMOUNT OF CORE UNJAMMING ACTION TAKEN DEPENDS UPON THE SERIOUS 21 4F5= # THE JAM, AS INDICATED BY THE VALUE OF THE CORE JAM SUM(CJSUM) WHIC 16 4FJW # BUILT UP, RELATIVE TO THE THRESHOLD VALUES. 4 4G4G # 18 4GJ6 XX1U [K1UNJAMMER: MAIN ENTRY 10 4H3Q GSCAN CFREE,COREJAM 10 4HHB TRACE ACHAP,ACHAP 10 4J32 TRACE CJSUM,CJSUM 9 4J88 ...#SKI K6UNJAMMER>499-499 9 4J*B ... GSCAN FX2,JAMACT 7 4JGL #SKI CAMK7<6-6 7 4K2= EXTENDLL 7 4KFW LDN 6 0 9 4LF6 LDX 0 CLEANCT 16 4LYQ STO 0 CJTIME [FOR BUFFERED *DA 7 4MDB ...#UNS ISTDPSTATS 9 4MN8 ... TRACEDP AJAMCORE 17 4MRD ... BXE 2 BSWINT,YD3 [J IF LLS INITIATED 19 4MS5 ... JBC XSWAP,,ASWOUTING [J IF NO SWAPOUT IN PROGRESS 18 4MY2 ... LDN 0 CJDANGER [AS SWAPOUT IN PROGRESS 18 4N3X ... BXL 0 CFREE,R11A [DO NOTHING IF CFREE>128 20 4N7S ... BRN YD1 [OTHERWISE,CONTINUE WITH UNJAM 5 4N?P ...XSWAP 7 4NCL COBJUSE 5 4NX= #SKI G4 4 4P4D ...( 9 4P9L ... LDX 6 AOBJFAIL 8 4PBS ... SLL 6 10 7 4PJ2 ... ADX 0 6 4 4PP8 ...) 9 4Q8S ... MOBJQUOTA MAX,6 8 4QND ... BXGE 6 0,YD1 20 4R*B BRN TH4 [SWAPOUT IMMEDIATELY,IF EXCEEDING 15 4RT2 [ OBJECTQUOTA 4 4S#L ...YD3 7 4SS= ...#UNS ISTDPSTATS 9 4T?W ... TRACEDP AJAMLLS 21 4TRG ... LDX 0 CJTARGTN [IF UNJAMMING ACTION INITIATED BY PC 20 4_8W ADN 0 #3000 [ SET TARGET TO SHORTFALL + 3/2 K 9 4_NG STO 0 CJTARGET 7 4_P? ...#UNS ADPLLSKIP 4 4_Q4 ...( 17 4_QT ... LDN 0 1 [- DATAPASS COUNT OF 16 4_RL ... SMO ADPSWPPTR [- LLS INITIATES 15 4_SC ... ADS 0 9 [- COREJAMS 4 4_T8 ...) 8 5286 BRN YD 8 52MQ YD1 LDX 1 FX1 9 537B LDX 0 TARGET(1) 9 53M2 STO 0 CJTARGET 12 53MF ...[ AS ENTERED FOR FAILED GETCORE 11 53MY ...[ IF X=0,CONTINUE TO UNJAM 14 53NC ...[ IF XOR= CJTARGET,JOIN SUCCESS EXIT 17 53P* ...[ WHERE X=TOTAL UN-FROZEN FREE PROGRAM CORE/PAGES 4 53PS ...[ 5 53Q? ...#SKI G3 4 53QQ ...( 9 53R9 ... LDX 0 FREZTOT 19 53RN ... BZE 0 NONFROZ [J IF NO CORE FREEZE ACTIVE 19 53S7 ... LDN 3 BOBJUNUSE [NOW TOTAL UN-FROZEN FPB'S 7 53SL ... LDN 6 0 5 53T5 ...NEXTFPB 9 53TJ ... LDX 3 FPTR(3) 19 53W3 ... BXE 3 CXOBJUN,SOMFROZ [J IF END OF CHAIN REACHED 15 53WG ... JBS NEXTFPB,3,AFFROZ [J IF FROZEN 21 53W_ ... ADX 6 ALOGL(3) [INCREMENT COUNT OF UNFROZEN FPB'S 9 53XD ... BRN NEXTFPB 5 53XX ...NONFROZ 4 53YB ...) 5 53YT ...#SKI G4 4 53_# ...( 9 53_R ... LDX 0 CFPCFREZ 8 542= ... BNZ 0 YD 4 542P ...) 8 5438 ... COBJUNUSE 6 5 543M ...SOMFROZ 8 5446 ... BZE 6 YD 11 544K ... BXGE 6 CJTARGET,R11AA 9 5454 ... SBS 6 CJTARGET 7 545H ...#UNS ISTDPSTATS 9 5462 ... TRACEDP AJAMADJ,6 7 546L YD LDN 6 0 7 548T ...#UNS ADPLLSKIP 4 54?4 ...( 17 54*? ... LDN 0 1 [- DATAPASS COUNT OF 17 54CG ... SMO ADPSWPPTR [- LEVEL 1 COREJAMS 7 54FP ... ADS 0 5 4 54HY ...) 18 54L= CALL 7 QCJ2 [FREE 2-WORD LINK BLOCKS 10 555W LDX 7 CJDELAYCNT3 18 55KG BPZ 7 TN1 [SKIP IF DONE RECENTLY 9 5656 LDN 7 CJDELAY3 10 56JQ STO 7 CJDELAYCNT3 6 56PY ...#UNS CA1D 9 56X7 ... LDX 4 CSPLIT 21 574B CALL 7 QCJ1 [FREE EXCESS CORE FROM ENDS OF BLOCKS 21 57J2 +CSPLITLN [BUT ONLY IN AMOUNTS > OR = CSPLITLN 8 583L TN1 CALL 7 TEST 10 58H= LDX 7 CJDELAYCNT1 21 592W BPZ 7 TH2 [SKIP RECLAIMING ROUTINE ONE IF DONE 9 59GG LDN 7 CJDELAY1 18 5=26 STO 7 CJDELAYCNT1 [INDICATE DONE RECENTLY 17 5=FQ CALL 7 QCJ7 [FREE BFREEW BLOCKS 8 5=_B CALL 7 TEST 21 5?F2 FRSOFURB [FURBS/FURRBS ASSOCIATED WITH SWAPPED 20 5?YL [OUT PROGRAMS ONLY TO BE FREED 8 5#D= CALL 7 TEST 21 5#XW FRSOFUWB [FUWBS/FURWBS ASSOCIATED WITH SWAPPED 20 5*CG [OUT PROGRAMS ONLY TO BE FREED 8 5*X6 CALL 7 TEST 19 5BBQ FREEHALF [FREE HALF THE HALFOPEN CHAIN 8 5BWB CALL 7 TEST 20 5CB2 FREHFURB [HALF OF FURBS/FURRBS TO BE FREED 8 5CTL CALL 7 TEST 4 5D*= TH2 8 5DSW LDX 2 FX2 10 5F#G BSON EMSBIT,QEMS 17 5FS6 ... BXE 2 BSWINT,TH3 [J IF LLS INITIATED 4 5GRB QEMS 8 5H?2 LDX 0 CJSUM 8 5HQL SMO FX1 8 5J== TXL 0 T15 21 5JPW BCS R11A [END IF CJSUM