17 22FL ...#SEG COREALLF [ DEK BEASLEY : CENT 4 22KH ...[ 15 22PD ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983 4 22T* ...[ 8 22_= #OPT K0COREALLF=0 12 23DW #LIS K0COREALLF>K0KERNEL>K0ALLGEO 12 23YG #OPT K6COREALLF=K6KERNEL>K6ALLGEO 9 24D6 #DEF TRACE=K6COREALLF 4 24XQ # 21 25CB [ THIS IS THE PART OF THE CORE ALLOCATOR IMPLEMENTED OUT OF FIXED CORE 12 25X2 [ IT HAS THE FOLLOWING ENTRY POINTS 13 26BL [ 1. ENTRY FOR THE LONGLOCK GETCORE 17 26W= [ 2. ENTRY FROM THE GEORGE 3 STARTSTRAT PACRO VIA DOWN 17 27*W [ 3. ENTRY FROM THE GEORGE 3 EXTRACOR MACRO VIA DOWN 13 27TG [ 4. ENTRY FOR THE NOISY CORE SYSTEM 17 28SQ [ 41. ENTRY FROM THE GEORGE 4 COREFLUSH MACRO VIA DOWN 19 294J ...[ 5. ENTRY FROM GETPROGCORE TO OBTAIN PROGRAM CORE(G4 ONLY) 4 29#B [ 7 29S2 8HCOREALLF 8 2=?L [ THE ENTRY POINTS 19 2=R= [ THESE ENTRY POINTS MUST BE KEPT FIXED WITHIN THE SEGMENT 12 2?=W SEGENTRY K1COREALLF,QENTRY1 12 2?QG SEGENTRY K2COREALLF,QENTRY2 12 2#=6 SEGENTRY K3COREALLF,QENTRY3 12 2#PQ SEGENTRY K4COREALLF,QENTRY4 12 2#SW ... SEGENTRY K5COREALLF,QENTRY5 4 2#Y2 ...[ 17 2*36 ...[ TABLE OF COREFREEZE ABORT CONDITION SUBROUTINES 13 2*6= ...[ FIRST ENTRY IS SUBROUTINE NO. 1 5 2*9B ...XABANSUB 9 2*#G ... +UTEST 9 2*CL ... +SWAPTEST 9 2*GQ ... +STRATEST 5 2*KW ...XABANEND 4 2*P2 [ 21 2B8L [ THIS PART OF THE SEGMENT IMPLEMENTS THE COREFREEZE MACRO,VIA WHICH IT 17 2BN= [ IS ENTERED BY S/R CALL. VARIABLES ARE USED AS FOLLOWS: 16 2C7W [ WORD MNEMONIC IN USED FOR 7 2CMG [ GIM 16 2D76 [ X2 - ALWAYS HOLDS FX2 16 2DLQ [ X3 X SCANNING POINTER 18 2F6B [ X4 P' START OF EXTENDED FREEZE 19 2FL2 [ X5 Y FOLLOWS X, ONE BLOCK BEHIND 15 2G5L [X0,1,6,7 - WORK WORDS 4 2GK= [ 17 2H4W [ AWORK1 B0-12 RELATIVISED S/R LINK 14 2HJG [ B13-17 UNUSED 20 2J46 [ B18-19 A FIELD TO HOLD THE VALUE OF %E 19 2JHQ [ B20 LOCKED BLOCK FOUND THIS PASS 18 2K3B [ B21 FREE CHAPTERS THIS PASS 20 2KH2 [ B22 COORDN SINCE FINDING LOCKED BLOCK 14 2L2L [ B23 UNUSED 19 2LG= [ AWORK2 P START OF REQUESTED FREEZE 18 2L_W [ AWORK3 Q END OF REQUESTED FREEZE 21 2MFG [ AWORK4 T VALUE OF APROCTIME WHEN WE TIME OUT 21 2M_6 [ (BEFORE 1ST WAIT = -(MAX(%F,0)) ) 4 2NDQ [ 11 2NYB [ WORDS FOLLOWING S/R CALL 18 2PD2 #DEF RFAIL=0 [BRANCH TO FAIL EXIT %C 21 2PXL #DEF RTABORT=RFAIL+1 [ABORT S/R LABEL %D ( 0 IF NOT SPECD) 19 2QC= #DEF RLLBLK=RTABORT+1 [ACTION ON LONGLOCK BLOCKS %E 17 2QWW #DEF RTIMOUT=RLLBLK+1 [TIME OUT INTERVAL %F 15 2RBG #DEF RSUCCESS=RTIMOUT+1 [SUCCESS EXIT 4 2RW6 [ 21 2S*Q [ FIRST WE SEE IF THERES ENOUGH FREE/CHAP CORE TO IMPLEMENT THE FREEZE 4 2STB [ 5 2T*2 RCORFREZ 8 2TSL LDX 2 FX2 9 2W#= ANDX 6 IROUNDNG 6 2WCB ...#UNS CA1D 9 2WGG ... ADX 7 CIRNDA 6 2WKL ...#UNS CA1D 4 2WNQ ...#SKI 9 2WRW ADN 7 IROUND-1 9 2X?G ANDX 7 IROUNDNG 7 2XR6 ADX 7 6 14 2Y=Q STO 6 AWORK2(2) [STORE P 14 2YQB STO 7 AWORK3(2) [STORE Q 7 2_28 ... LDX 1 0 8 2_=2 SBX 0 FX1 8 2_PL SLL 0 12 20 329= STO 0 AWORK1(2) [STORE LINK / INITIALISE FLAGS 14 32#B ... LDX 0 RLLBLK(1) [LOAD %E 17 32CG ... STO 0 GEN2 [TEMPORARY COPY OF %E 7 32GL ... SLL 0 4 18 32KQ ... ORS 0 AWORK1(2) [SET B18-19 TO HOLD %E 16 32NW SBX 7 6 [SIZE OF FREEZE 5 32T6 ...#SKI G4 4 32_B ...( 14 335L ... LDX 0 GEN2 [LOAD %E 7 339W ... SBN 0 3 16 33B6 ... BNZ 0 RNE31 [J IF NOT %E=3 8 33GB ... STOZ GEN3 8 33LL ... BRN RNE32 5 33QW ...RNE31 4 33X6 ...) 8 343B ... LDX 0 ACHAP 21 347Q SBX 0 CHAPQUOTA [ UNFROZEN FREEABLE (SOME NEEDED FOR 18 34=W ... BPZ 0 RLESSCQ [IF ACHAP599-599 10 375G TRACE 7,SPARECOR 21 37K6 BPZ 7 RABAN3 [ABANDON FREEZE IF NOT ENOUGH CORE 9 384Q ...RNE32 CALL 7 RABORTIO 21 38JB BRN RABAN9 [J IF ABORT REQUEST ALREADY OCCURED 4 3942 [ 18 39HL [ NOW WE SET P' TO THE START OF THE BLOCK WHICH CONTAINS P 4 3=3= [ 13 3=GW LDX 7 AWORK2(2) [X7=P 8 3?2G LDN 1 BFREE 19 3?G6 ROUN1 LDX 1 BPTR(1) [ STEP DOWN FREE CHAIN UNTIL 21 3?_Q BXL 7 1,ROUN1 [ X1 P 9 3*Y= ADX 1 ASIZE(1) 9 3BCW BXGE 7 1,ROUN3 8 3BXG #SKI TRACE>599-599 9 3CC6 TRACE 0,ROUN P' 19 3CWQ LDX 4 0 [P'=X0, HIGHEST BLOCK 599-599 4 3R66 ( 11 3RKQ TRACE ATYPE(3),RSCAN TP 11 3S5B TRACE AFLAG(3),RSCAN FG 4 3SK2 ) 20 3T4L ... JMBAC RSCA2,3,AFLONG,AFFROZ [J IF BLOCK NOT LL NOR FROZEN 18 3TJ= ... JBS RABAN7,3,AFFROZ [ABANDON FREEZE IF FROZEN 8 3XGQ LDX 0 GEN2 16 3Y2B TXL 3 CTOP [ CHECK BLOCK NOT 19 3YG2 BCC RSCAA [ 'ESCAPED' FROM LL AREA 8 3Y_L STO 3 CTOP 17 3_F= STOZ BLLCLOCK [ FORCE IN REDUCELL 7 3_YW SBN 0 2 9 42DG BNG 0 RABAN2 9 42Y6 GEOERR 1,CTOP! 20 43CQ RSCAA BZE 0 RABAN2 [ - ELSE LONGLOCK:ABANDON IF %E=0 14 43XB [ THIS SECTION DEALS WITH NON-PSEUD BLOCKS 15 44C2 RSCA2 LDX 7 ASIZE(3) [ BLOCK SIZE 21 44WL ... JMBAC RSCA4,3,AFLOCK,AFFREE [J IF BLOCK NOT LOCKED NOR FREE 15 45B= ... JBS RSCA3,3,AFFREE [J IF FREE 9 47PL ... NGX 0 AWORK4(2) 21 47SB BNG 0 RABAN8 [ - OTHERWISE LOCKED:ABANDON IF %F<0 21 48#2 BRN RSCA4 [ ELSE CHECK IF ITS A CHAPTER BLOCK 17 48RL RSCA3 SBS 7 CFREE [ UPDATE FREE TOTAL 21 49?= ADS 7 FREZFREE [MAKE FREE BLK PSEUDO FREE AND CHAIN 16 49QW LDX 0 FPSEUTYP [ IN FREEZE CHAIN 9 4==G STO 0 ATYPE(3) 19 4=Q6 STOZ AFLAG(3) [ CLEAR THE 'FREE BLOCK' BIT 9 4?9Q CHAIND 3,BCAFREZ 6 4?#* ...#UNS ISFC 4 4?BY ...( 19 4?FH ... FREEOUT 3 [REMOVE BLK FROM SIZE RING 15 4?J6 ... LDX 1 FX1 [RESTORE X1 4 4?LP ...) 8 4?PB BRN RSCA1 9 4#92 RSCA4 LDX 0 ATYPE(3) 16 4#NL BXU 0 GCHTY,RSCA1 [J IF NOT CHAPTER 8 4*8= SBS 7 ACHAP 9 4*MW ADS 7 FREZCHAP 16 4B7G ...RSCA1 BS 3,AFFROZ [SET FROZEN BIT 14 4BM6 ...RSCA5 LDX 5 3 [SEY Y=X 17 4C6Q ADX 3 7 [STEP X TO NEXT BLOCK 9 4C=9 ... TXL 3 AWORK3(2) 14 4C*N ... BCS RSCAN [J IF X599-599 11 4NX= TRACE AWORK1(2),RSTART 21 4PBW LDX 3 4 [SET X=P',START OF EXTENDED FREEZE 4 4PCT ...[ 21 4PDS ...[ X6 IS USED FROM HERE ONWARDS TO CONTAIN THE ADDRESS OF THE NEXT 21 4PFR ...[ K BOUNDARY.THIS IS ONLY USED FOR A GETPROGCORE REQUEST(%E=3) IN 11 4PGQ ...[ G4.MNEMONIC IN GIM IS K 4 4PHP ...[ 7 4PWG NGN 5 1 5 4QB6 RNEXT 8 4QTQ #SKI TRACE>599-599 4 4R*B ( 11 4RT2 TRACE ATYPE(3),RNEXT TP 11 4S#L TRACE AFLAG(3),RNEXT FG 4 4SS= ) 9 4T?W LDX 7 ATYPE(3) 18 4TRG BXU 7 FPSEUTYP,RLOCD [J IF NOT A PSEUD BLOCK 21 4W?6 RPSEU BNG 5 RPSE1 [J IF PREVIOUS BLOCK NOT A PSEUD BLK 8 4WQQ #SKI TRACE>599-599 10 4X=B TRACE 5,AMALGAMT 20 4XQ2 LDX 0 ASIZE(3) [ ELSE AMALGAMATE PSEUD BLOCKS 7 4Y9L SMO 5 8 4YP= ADS 0 ASIZE 7 4_8W DERING 3 14 4_NG LDX 3 5 [SET X=Y 14 5286 RPSE1 LDX 5 3 [SET Y=X 18 52MQ RSTEP ADX 3 ASIZE(3) [ ADVANCE X BY ONE BLOCK 21 537B BXL 3 AWORK3(2),RNEXT [ & J BACK IF X599-599 12 5=FQ TRACE APROCTIME,FREZWAIT 19 5=PJ ... BXE 2 CXAC,RABAN5 [BLANKET CANNOT DO FREZWAIT 20 5=_B FREZWAIT [WAIT FOR UNLOCK OR SPRING CLEAN 19 5?F2 CALL 7 RABORT [CHECK FOR ABORT CONDITION 9 5?YL BRN RABAN6 19 5#D= BRN RSTART [ & IF NONE TRY ANOTHER SCAN 5 5#WJ ...RLOCD 18 5*R8 ... JBS RFPB,3,AFFPB [J IF FREE PROGRAM BLOCK 17 5B9G ... JBS RLOKD,3,AFLOCK [J IF BLOCK LOCKED 20 5BMS ... JBS RCHAP,3,AFCHAP [J IF CHAPTER TO COPY AND PSEUD 9 5C68 ... SEGENTRY CHAPMOVE4 10 5CB2 LDX 7 ALOGLEN(3) 17 5CTL ... JBC RUSE1,3,AFLONG [J IF NOT LONGLOCK 21 5DSW LDX 0 AWORK1(2) [ IF %E=2, LEAVE IN AS A NON-PSEUD 20 5F8K ... ANDN 0 #60 [ BLOCK, OTHERWISE COPY OUT AS 18 5FJ# ... SBN 0 #40 [WITH ORDINARY BLOCKS 8 5FY3 ... BZE 0 RCHLO 18 5G?Q LDX 0 GLLSEMA [ TEST FOR DEADLY EMBRACE 20 5GRB BZE 0 RNDE [ ( AFTER TESTING SEGMENT, CHANGE 17 5H?2 GEOERR 0,DEADLY [ TO AN ABANDON ) 4 5HQL RNDE 8 5J== GETCORE 7,0,1 8 5JPW BRN RUSE2 9 5K9G BRN RABAN4 5 5KP6 RUSE1 17 5L8Q GETCORE 7,0 [ ORDINARY, OPTIONAL 18 5LNB BRN RUSE2 [J IF GETCORE SUCCESSFUL 17 5M82 BRN RABAN4 [ ELSE ABANDON FREEZE 5 5MML RUSE2 9 5N7= LDX 0 ATYPE(3) 21 5NLW BXE 0 FPSEUTYP,RUSE3 [J IF BLOCK FREED AT LAST COORDINATN 15 5P6G ... JBS RUSE3,3,AFLOCK [OR LOCKED 16 5QKB BXU 7 ALOGLEN(3),RUSE3 [ OR ALTLEN-ED 8 5R52 #SKI TRACE>599-599 4 5RJL ( 9 5S4= TRACE 3,SOURCE 10 5SHW TRACE FPTR(2),DESTN 4 5T3G ) 7 5TH6 LDX 2 3 20 5W2Q BLOCKCOPY [TRANSFER BLOCK TO NEW SITE, FREE 15 5WGB [ OLD SITE 9 5WMJ ... SEGENTRY CHAPMOVE6 6 5WSQ ... NULL 19 5X22 CALL 7 RABORT [CHECK IF WE NEED TO ABORT 9 5XFL BRN RABAN6 21 5X_= BRN RPSEU [ ELSE TRY PSEUD BLOCK AMALGAMATION 21 5YDW RUSE3 FREECORE FPTR(2) [IF SOMETHING HAPPENED TO MOVE CAND- 21 5YYG BRN RNEXT [ IDATE OVER GETCORE,J TO TRY AGAIN 4 5_D6 [ 20 5_XQ RLOKD [ACTION ON FINDING A LOCKED BLOCK 8 62CB LDN 0 #10 20 62X2 ORS 0 AWORK1(2) [SET 'LOCKED BLOCK FOUND' SWITCH 5 62XP ...#SKI G3 4 62YD ...( 9 62_7 ... LDX 0 AWORK1(2) 15 62_W ... ANDN 0 #60 [TEST IF %E=2 8 632K ... SBN 0 #40 16 633# ... BZE 0 RLOKD1 [J IF LL GETCORE 9 6348 ... LDX 0 ATYPE(3) 17 639B ... STO 0 ACOMMUNE9(2) [KEEP FOR COREALLH 4 63=N ...) 5 63#2 ...RLOKD1 8 63BL BRN RCHLO 4 63W= [ 18 63XT ...RFPB [ACTION ON FINDING FPB 7 63YB ... LDN 0 4 9 63YX ... ANDX 0 AWORK1(2) 19 63_D ... BZE 0 RCHLO [J IF FREE CHAPS.SWITCH UNSET 18 63__ ... CALL 7 RINVFPB [INVALIDATE FPB IF VALID 9 642G ... LDX 0 ALOGL(3) 9 6433 ... SBS 0 CINVFPB 9 643J ... SBS 0 COBJUNUSE 7 6445 ... FREECORE 3 8 644L ... BRN RPSEU 9 6464 ... SEGENTRY CHAPMOVE5 19 64*W RCHAP [ACTION ON FINDING CHAPTER 7 64TG LDN 0 4 9 65*6 ANDX 0 AWORK1(2) 20 65SQ BNZ 0 RCHA1 [J IF 'FREE CHAPTERS' SWITCH SET 7 66#B RCHLO LDX 5 3 20 66S2 ORX 5 GSIGN [ ELSE INDICATE NON-PSEUD BLOCK 17 67?L BRN RSTEP [ &STEP TO NEXT BLOCK 17 67R= RCHA1 [FREE THIS CHAPTER 8 68=W #SKI TRACE>599-599 11 68QG TRACE BACK1(3),FREECHAP 9 69=6 LDX 1 BACK1(3) 9 69PQ LDX 0 BACK2(3) 17 6=9B STO 0 KTAB(1) [UPDATE CHAPTER TABLE 9 6=P2 LDX 0 ASIZE(3) 20 6?8L SBS 0 FREZCHAP [DECREMENT FROZEN CHAPTER TOTAL 7 6?DD ... LDN 0 1 8 6?N= SEGENTRY ADPCAF1 7 6?RB ...#UNS FCCHAPFREE 17 6?WG ... ADS 0 FCCHAPFREE [ INCREMENT F-C COUNT 7 6?_L ...#UNS FCCHAPFREE 4 6#4Q ...#SKI 6 6#7W NULL 7 6#MG FREECORE 3 8 6*76 SBN 1 A1(3) 21 6*LQ BNZ 1 RPSEU [IF NOT CURRENT CHAP,J TO AMAL PSEUDS 21 6B6B FPUT [ ELSE GET CURRENT CHAP BACK FIRST 21 6BL2 COOR1 [ (COOR2 WONT DO IT IF K8,K3 EMPTY!) 8 6C5L BRN RPSEU 4 6C5Q ...[ 4 6CK= [ 21 6D4W RCHAPMODE [REACH HERE AFTER A SUCCESSFUL SCAN WITHOUT LOCKED BLOCKS 7 6DJG LDX 1 4 7 6F46 LDN 0 4 9 6F?Y ... SEGENTRY CHAPMOVE8 20 6FHQ ANDX 0 AWORK1(2) [IF 'FREE CHAPTERS' SWITCH SET, J 8 6G3B BNZ 0 RCHP1 7 6GH2 LDN 0 4 21 6H2L ORS 0 AWORK1(2) [OTHERWISE SET IT AND GO BACK FOR A 18 6HG= BRN RSTARTA [ CHAPTER FREEING PASS 5 6H_W RCHP1 20 6JFG ... JBC RLA,1,AFLONG [J IF FIRST BLOCK NOT LONGLOCK 21 6KYB LDX 0 AWORK1(2) [ HERE FIRST BLOCK IS LONGLOCK TYPE 15 6L#5 ... ANDN 0 #60 [ IS %E=2? 8 6LMS ... SBN 0 #40 20 6M3H ... BNZ 0 RERROR [ JUMP IF NO. INCONSISTENCY 21 6MC= LDX 0 AWORK2(2) [ EXTENDED FREEZE BOUNDARY WILL NOT 21 6MWW SBX 0 4 [ BE MOVED UP TO P, YET, BUT DECRE 20 6NBG SBS 0 FREZTOT [ MENT FREZTOT IN ANTICIPATION. 8 6NW6 BRN WT 5 6P*Q RERROR 10 6PTB GEOERR 1,WRONG %E 20 6Q*2 RLA [ IF EXTENDED FREEZE STILL TO BE 16 6QSL BXU 4 AWORK2(2),RSTARTA [ CONTRACTED 9 6R#= LDX 0 AWORK1(2) 8 6RM_ ... ANDN 0 #60 8 6S3N ... SBN 0 #40 8 6SCC ... BNZ 0 RTERM 21 6SR6 [ IF %E=2, A FINAL PASS IS MADE OVER THE REGION (WHICH NOW CONSISTS ONLY 20 6T=Q [ OF ALTERNATING PSEUD AND LONLOCK BLOCKS) TO SHIFT THE LONGLOCK 13 6TQB [ BLOCKS TO THE BOTTOM OF THE REGION 18 6W=2 WT [ DEAL WITH FIRST BLOCK 8 6WPL #SKI TRACE>499-499 4 6X9= ( 9 6XNW TRACE 1,LLAREA 11 6Y8G TRACE AFLAG(1),LLAREA 4 6YN6 ) 19 6_7Q ... JBC WT1,1,AFLONG [J IF PSEUD - NOT LONGLOCK 16 6_MB ... BC 1,AFFROZ [UNSET FROZEN BIT 9 73KW LDX 6 ASIZE(1) 21 745G SBX 6 ALOGLEN(1) [ CHOP OFF THE FAG-END (IF IT EXISTS) 21 74K6 SBN 6 A1 [ TO MAKE THE FIRST PSEUD BLOCK, OR 20 754Q ANDX 6 IROUNDNG [ IF NO FAG-END, DELETE THIS 21 75JB BNZ 6 WTA [ LONGLOCK BLOCK FROM THE FREEZE 20 7642 ADX 1 ASIZE(1) [ AREA AND START WITH THE NEXT 15 76HL STO 1 4 [ BLOCK UP 17 773= BRN WT [ IN BOTH CASES, 4 77GW WTA 20 782G SBS 6 ASIZE(1) [ MOVE LOWER FREEZE BOUNDARY UP 16 78G6 ADX 1 ASIZE(1) [ ACCORDINGLY. 7 78_Q STO 1 4 21 79FB ADS 6 FREZFREE [ ADD NEW PSEUD SPACE TO PSEUD TOTAL 21 79_2 STO 6 ASIZE(1) [ RUDIMENTARY, UNCHAINED PSEUD BLOCK 21 7=DL BRN WT1A [ SKIP SINCE BLOCK NOT ON PSEUD CHAIN 19 7=Y= WT1 DERING 1 [ UNCHAIN THIS PSEUD BLOCK 18 7?CW LDX 1 4 [ RESTORE X1 AFTER DERING 16 7?XG WT1A ADX 1 ASIZE(1) [ LOOK AT NEXT 21 7#C6 TXL 1 AWORK3(2) [ CONTINUE IF BLOCK STILL IN FREEZE 19 7#WQ BCC WT4 [ REGION, OTHERWISE EXIT 9 7*BB LDX 6 ASIZE(1) 21 7*W2 ... JMBAC WT3,1,AFLONG,AFLOCK [J IF PSEUD-NEITHER LL NOR LOCKED 16 7B*L ... JBC WT2,1,AFLOCK [J IF NOT LOCKED 18 7CW9 ... LDX 1 4 [ADDR. OF CORE FOR FREE 16 7CYR ... BS 1,AFFROZ [SET FROZEN BIT 9 7D3B ... LDX 0 FPSEUTYP 18 7D55 ... STO 0 ATYPE(1) [SET TYPE FOR FROZEN FREE 9 7D6S ... LDN 2 BCAFREZ 20 7D8H ... ENRING 1,2 [ & CHAIN ON FROZEN FREE CHAIN 19 7D== ... LDX 4 AWORK2(2) [SET X4=START OF FREEZE AREA 17 7D#6 ... BRN RABAN5 [ABANDON IF LOCKED 4 7DRQ [ 19 7F?B [ MOVE THE LONGLOCK BLOCK DOWN TO THE BOTTOM OF THE FREEZE AREA, 19 7FR2 [ ADJUSTING THE POINTERS IN ITS CHAIN AND RING NEIGHBOURS IN THE 19 7G=L [ PROCESS, DELETE ITS 'FROZEN' MARKER AND MOVE THE LOWER FREEZE 18 7GQ= [ AREA BOUNDARY UP SUFFICIENT TO LEAVE BEHIND THE FAG END. 4 7H9W WT2 18 7HPG LDX 2 4 [ SET X2 FOR BLOCKMOVE 10 7J96 SBX 6 ALOGLEN(1) 8 7JNQ SBN 6 A1 19 7K8B ANDX 6 IROUNDNG [ THE FAG END (MAY BE ZERO) 17 7KN2 SBS 6 ASIZE(1) [ TRIM LONGLOCK BLOCK 19 7L7L ADS 6 FREZFREE [ AND ADD TO TOTAL PSEUD 21 7LM= ADX 6 ASIZE(2) [ SAVE THE INCREASED SIZE OF PSEUD 16 7M6W ADX 4 ASIZE(1) [ MOVE UP POINTER 17 7MLG LDX 3 ASIZE(1) [ X3 FOR BLOCKMOVE 21 7N66 BLOCKMOVE [ ALSO CLEARS PHYSICAL BITS OF AFLAG 15 7NKQ LDX 2 FX2 [ RESTORE X2 21 7P5B LDX 1 4 [ SET UP LOWEST PSEUD BLOCK AGAIN, 21 7PK2 STO 6 ASIZE(1) [ SKIPPING RED TAPE THAT ISN'T REQU'D 8 7Q4L BRN WT1A 14 7QJ= [ AMALGAMATE PSEUD BLOCK WITH LOWEST BLOCK 4 7R3W WT3 7 7RHG SMO 4 8 7S36 ADS 6 ASIZE 21 7SGQ BRN WT1 [ BRANCH TO UNCHAIN THE FUSED BLOCK 21 7T2B [ PUT 'EMPTY CHAIN' CHAIN WORDS IN THE PSEUD BLOCK TO ALLOW DECHAINING 18 7TG2 WT4 [ IN THE 'CHAIN' MACRO 7 7T_L LDX 1 4 9 7WF= STO 1 FPTR(1) 9 7WYW STO 1 BPTR(1) 4 7XDG [ 21 7XY6 [ SUCCESSFUL TERMINATION - REACH HERE WITH ONE PSEUD BLOCK OCCUPYING THE 9 7YCQ [ REQUESTED FREEZE AREA 4 7YXB [ 5 7_C2 RTERM 8 7_WL #SKI TRACE>599-599 11 82B= TRACE FREZFREE,RTERM 18 82TW STOZ ATYPE(1) [ SET UP BLOCK'S RED TAPE 9 83*G STOZ AFLAG(1) 9 83T6 STOZ BACK1(1) 9 84#Q STOZ BACK2(1) 9 84SB LDX 0 ASIZE(1) 8 85#2 SBN 0 A1 10 85RL STO 0 ALOGLEN(1) 10 86?= STOZ ARINGNO(1) 21 86QW CHAIN 4,2 [ CHAIN BLOCK AFTER CURRENT ACTIVITY 9 87=G LDX 0 AWORK3(2) 19 87Q6 SBX 0 AWORK2(2) [X0=SIZE OF FREEZE AREA (Q-P) 17 889Q SBS 0 FREZTOT [REDUCE TOTAL FROZEN 9 88PB LDX 0 AWORK3(2) 7 8992 SBX 0 4 19 89NL SBS 0 FREZFREE [REDUCE TOTAL OF FROZEN FREE 5 89YD ...RTER4 18 8=8= LDN 6 RSUCCESS [PREPARE FOR SUCCESS EXIT 5 8=MW RTER2 6 8?7G #SKI TRACE 4 8?M6 ( 9 8#6Q LDX 0 FREZFREE 9 8#LB ORX 0 FREZTOT 9 8*62 ORX 0 FREZCHAP 18 8*KL BNG 0 RUGH [ERROR IF ANY NEGATIVE 9 8B5= NGX 0 FREZFREE 9 8BJW LDN 1 BCAFREZ 8 8C4G BRN RUGH2 9 8CJ6 RUGH1 ADX 0 ASIZE(1) 9 8D3Q RUGH2 LDX 1 FPTR(1) 10 8DHB BXU 1 CXCA,RUGH1 21 8F32 BNZ 0 RUGH [ERROR IF FREEZE CHN TOT NOT FREZFREE 9 8FGL LDX 0 FREZTOT 9 8G2= SBX 0 FREZCHAP 9 8GFW SBX 0 FREZFREE 21 8G_G BPZ 0 RTER1 [ERROR IF FROZEN FREE + CHAPS EXCEEDS 14 8HF6 RUGH GEOERR 1,COREFREZ [ TOTAL 4 8HYQ ) 8 8JDB RTER1 LDX 0 CWAIT 8 8JY2 BZE 0 RTER3 20 8KCL COREWAKE [AWAKEN ACTYS WAITING FOR CORE 9 8KX= RTER3 LDX 7 AWORK1(2) 8 8LBW SRL 7 12 8 8LWG ADX 7 FX1 21 8MB6 ADX 7 6 [INCREMENT LINK FOR SUCCESS/FAILURE 8 8MTQ LDX 1 FX1 7 8N*B EXIT 7 0 4 8NT2 [ 21 8P#L [ UNSUCCESSFUL TERMINATION . Y=,OR IS SET TO, HIGHEST BLOCK PROCESSED SO 5 8PS= [ FAR 4 8Q?W [ 19 8QRG RABAN9 [ABORT BY REQUEST B22 (ENTRY) 7 8R?6 LDN 0 2 8 8RQQ BRN RABA3 20 8S=B RABAN3 [INSUFFICIENT CORE B23 (ENTRY) 7 8SQ2 LDN 0 1 15 8T9L STO 7 AWORK2(2) [SHORTFALL 9 8TP= RABA3 DSA 0 AWORK1(2) 8 8W8W BRN RFAI7 21 8WNG RABAN4 [INSUFFICIENT CORE B23 (OPT G/C FAIL) 9 8X86 LDX 0 FREZTOT 9 8XMQ SBX 0 FREZFREE 9 8Y7B SBX 0 FREZCHAP 9 8YM2 STO 0 AWORK2(2) 7 8_6L LDN 0 1 8 8_L= BRN RFAI1 21 8_W4 ...RABAN5 [TIMED OUT B21 OR LOCKED BLOCK FOUND 21 925W ... [IN LL GETCORE FREEZE ON FINAL PASS 20 92*N ... [WHICH MOVES EXISTING LL BLOCKS 7 92KG LDN 0 4 8 9356 BRN RFAI1 17 93JQ RABAN6 [ABORT BY REQUEST B22 7 944B LDN 0 2 8 94J2 BRN RFAI1 5 94L9 ...#SKI G4 4 94ND ...( 21 94QM ...RABAN10 [ABORT AS ENOUGH PAGES NOW AVAILABLE 20 94SW ... LDN 0 0 [ZEROISE BITS 12-23 OF REPLY WORD 8 94X5 ... BRN RFAI1 4 94_# ...) 19 953L RABAN2 [LL BLOCK FOUND & %E=0 B18 8 95H= LDN 0 #40 8 962W BRN RFAI2 20 96GG RABAN8 [LOCKED BLOCK FOUND & %F=0 B21 7 9726 LDN 0 4 8 97FQ BRN RFAI2 18 97_B RABAN7 [OVERLAPPING FREEZES B20 8 98F2 LDN 0 #10 5 98YL RFAI2 8 99D= #SKI TRACE>599-599 10 99XW TRACE 0,RFAI2 FG 21 9=CG LDX 5 3 [SET X:=Y (BLOCK ABOVE LAST PROCESSD) 8 9=X6 BRN RFAI8 5 9?BQ RFAI1 8 9?WB #SKI TRACE>599-599 10 9#B2 TRACE 0,RFAI1 FG 14 9#TL LDX 5 AWORK3(2) [ SET Y=Q 17 9**= RFAI8 DSA 0 AWORK1(2) [SET EXIT CONDITION 20 9*SW BXE 5 4,RFAI3 [J IF NO BLOCKS PROCESSED SO FAR 4 9B#G [ 20 9BS6 [WE ERASE THE FROZEN MARKER FROM ALL BLOCKS ALREADY PROCESSED, AND 18 9C?Q [UPDATE FREEZE TOTALS. ALL BLOCKS ALREADY PROCESSED ARE < Y 4 9CRB [ 13 9D?2 LDX 3 4 [X=P' 5 9F== RFAI4 8 9FPW #SKI TRACE>599-599 4 9G9G ( 11 9GP6 TRACE ATYPE(3),RFAI4 TP 11 9H8Q TRACE AFLAG(3),RFAI4 FG 4 9HNB ) 16 9J45 ... BC 3,AFFROZ [ERASE FROZEN BIT 21 9JCS ... LDX 7 ASIZE(3) [LOAD SIZE IN CASE ADATA/FPSEUD GETS 20 9JML ... [MERGED WITH FREE BLOCK AT FREEZE 14 9JXD ... [BOUNDARY 9 9K7= LDX 0 ATYPE(3) 16 9KLW BXU 0 GCHTY,RFAI5 [J IF NOT CHAPTER 15 9L3B ... LDX 0 ASIZE(3) [BLOCK SIZE 19 9LCW ... SBS 0 FREZCHAP [ ELSE UPDATE CHAPTER TOTALS 8 9LSB ... ADS 0 ACHAP 8 9M8W ... BRN RFAI9 17 9MKB RFAI5 BXU 0 FPSEUTYP,RFAI6 [J IF NOT PSEUDO FREE 15 9MXR ... LDX 0 ASIZE(3) [BLOCK SIZE 21 9N=8 ... SBS 0 FREZFREE [ ELSE DECREMENT FROZEN FREE TOTAL & 21 9NJL FREECORE 3 [ MAKE TRULY FREE-THIS UPDATES CFREE 8 9NM4 ... BRN RFAI9 5 9NPG ...RFAI6 5 9PP8 ...RFAI9 17 9PRL ... ADX 3 7 [STEP X TO NEXT BLOCK 7 9PW4 ... TXL 3 5 14 9PYG ... BCS RFAI4 [J IF X599-599 12 9SFL TRACE AWORK1(2),RFAI7 FG 15 9S_= BRN RTER2 [ & J TO EXIT 4 9TDW [ 17 9TYG [ THERE NOW FOLLOW THE SUBROUTINES USED BY COREFREEZE 4 9WD6 [ 21 9WXQ [ SURGERY SUBROUTINES. ATTEMPT TO DISECT A BLOCK AT P (SURGERYB) OR Q 20 9XCB [ (SURGERYT).BOTH HANDLE PSEUD BLOCKS,SURGERYB USED BLOCKS TOO. THE 20 9XX2 [ SUPERFLUOUS FRAGMENT IS FREED IF PSEUD ELSE MARKED NON FROZEN, AND 9 9YBL [ FREZFREE ETC UPDATED 20 9YLD ...[ SURGERYK IS USED DURING A GETPROGCORE REQUEST TO DISECT BLOCK AT 20 9YW= ...[ A 'K' BOUNDARY CHAINING OVERSPILL IN (FROZEN OR) FREE CORE CHAIN. 20 9_64 ...[ ENTER X1-> BLOCK X2=FX2 LINK X7 ;EXIT X0,X1,GEN2,3 DESTRD X2=FX2 4 9_*W [ 5 =8=J ...SURGERYT 8 =8?H ...#SKI TRACE>599-599 4 =8#G ...( 11 =8*F ... TRACE ASIZE(1),SURGT SZ 11 =8BD ... TRACE ATYPE(1),SURGT TP 4 =8CC ...) 9 =8DB ... SMO ASIZE(1) 8 =8F* ... LDN 0 0(1) 21 =8G# ... BXE 0 AWORK3(2),SURG1 [EXIT IF NOTHING TO SPLIT-LIM(X1)=Q 9 =8H? ... LDX 0 ATYPE(1) 20 =8J= ... BXU 0 FPSEUTYP,SURG1 [EXIT IF BLOCK NOT PSEUDO FREE 13 =8K9 ... LDX 2 AWORK3(2) [ Q 21 =8L8 ... STO 2 GEN2 [ADDRESS OF FRAGMENT TO BE DISCARDED 8 =8M7 ... BRN SURG2 5 =8N= SURGERYB 8 =97W #SKI TRACE>599-599 4 =9MG ( 11 ==76 TRACE ASIZE(1),SURGB SZ 11 ==LQ TRACE ATYPE(1),SURGB TP 4 =?6B ) 20 =?L2 BXE 1 AWORK2(2),SURG1 [EXIT IF NOTHING TO SPLIT - X1=P 13 =#5L LDX 2 AWORK2(2) [ P 9 =#K= LDX 0 ATYPE(1) 19 =*4W BXE 0 FPSEUTYP,SURG3 [J IF BLOCK IS PSEUDO FREE 20 =*JG LDX 0 ALOGLEN(1) [ ELSE CHECK LENGTH OF USED PART 6 =*LD ...#UNS CA1D 4 =*NB ...( 9 =*Q# ... ADX 0 CIRNDB 8 =*S= ... ADN 0 0(1) 4 =*W8 ...) 6 =*Y6 ...#UNS CA1D 4 =B24 ...#SKI 11 =B46 ADN 0 A1+IROUND-1(1) 9 =BHQ ANDX 0 IROUNDNG 7 =C3B SBX 0 2 17 =CH2 BPZ 0 SURG1 [ J IF IT IS TOO LONG 19 =D2L SMO ASIZE(1) [ ELSE INCR FREZFREE BY SPARE 8 =DG= LDN 0 0(1) 7 =D_W SBX 0 2 9 =FFG ADS 0 FREZFREE 21 =F_6 SURG3 STO 1 GEN2 [ADDRESS OF FRAGMENT TO BE DISCARDED 15 =GDQ LDX 4 2 [UPDATE P' 9 =GYB SURG2 SMO ASIZE(1) 8 =HD2 LDN 0 0(1) 16 =HXL SBX 0 2 [SIZE OF FRAGMENT 20 =JC= SBS 0 ASIZE(1) [DECREMENT SIZE OF PARENT BLOCK 19 =JWW STO 0 ASIZE(2) [SET UP SIZE OF NEW FRAGMENT 9 =KBG ... STOZ AFLAG(2) 16 =KW6 ... BS 2,AFFROZ [SET FROZEN BIT 9 =L*Q LDX 0 FPSEUTYP 18 =LTB STO 0 ATYPE(2) [SET TYPE - ADATA/FPSEUD 7 =M*2 LDX 1 2 9 =MSL LDN 2 BCAFREZ 21 =N#= ENRING 1,2 [CHAIN FRAGMENT IN FROZEN FREE CHAIN 20 =NRW LDX 2 GEN2 [ADDR OF FRAGMENT TO BE DISCARDED 18 =P?G ... BC 2,AFFROZ [MARK DISCARD NON FROZEN 9 =Q=Q LDX 1 ASIZE(2) 20 =QQB SBS 1 FREZTOT [DECREMENT TOTAL OF FROZEN CORE 9 =R=2 LDX 0 ATYPE(2) 19 =RPL BXU 0 FPSEUTYP,SURG1 [EXIT IF DISCARD NOT PSEUD 21 =S9= SBS 1 FREZFREE [ ELSE DECREMENT TOTAL OF FROZEN FREE 18 =SNW FREECORE 2 [RENDER BLOCK TRULY FREE 8 =T8G SURG1 LDX 2 FX2 7 =TN6 EXIT 7 0 4 =TNN ...[ 21 =TP= ...[ RABORT SUBROUTINE TO TEST WHETHER THE FREEZE IS STILL SUFFICIENT 14 =TPS ...[ AFTER A COORDINATION.ONLY USED IN G4 15 =TQB ...[ EXIT - CALL+1 IF FREEZE NOT SUFFICINT 11 =TQY ...[ CQLL+2 IF OKAY 11 =TRG ...[ X0 & X1 CORRUPTED 4 =TS4 ...[ 4 =W7Q [ 16 =WMB [ RABORT SUBROUTINE - CHECKS FOR AN ABORT CONDITION 20 =X72 [ RABORTIO IS THE VERSION USED WHEN COREFREZ HAS JUST BEEN ENTERED 4 =XLL [ 5 =Y6= RABORT 20 =YKW LDX 0 AWORK1(2) [SINCE S/R ONLY CALLED AFTER A 21 =_5G ANDN 0 #10 [ COORDINATION, IF'LOCKED BLOCK FND' 20 =_K6 SRL 0 2 [ SWITCH SET, SET'COORDINATION' 14 ?24Q ORS 0 AWORK1(2) [ SWITCH 9 ?2JB LDX 0 AWORK4(2) 15 ?342 BXL 0 APROCTIME,RABAN5 [J IF TIME UP 5 ?3HL RABORTIO 9 ?43= LDX 1 AWORK1(2) 8 ?4GW SRL 1 12 8 ?52G ADX 1 FX1 19 ?5G6 ... OBEY RTABORT(1) [GET ABORT SUBROUTINE NUMBER 17 ?5_Q BZE 0 RABO1 [J IF NONE SPECIFIED 9 ?659 ... LDN 1 XABANEND 9 ?68N ... SBN 1 XABANSUB 7 ?6#7 ... SBX 1 0 19 ?6CL ... BPZ 1 RABO2 [J IF SUBROUTINE NUMBER VALID 20 ?6H5 ... GEOERR 1,ABORTSUB [OTHERWISE CORRUPTION OR ERROR? 8 ?6LJ ...RABO2 LDX 1 FX1 7 ?6Q3 ... SMO 0 18 ?6TG ... LDX 0 XABANSUB-1(1) [LOAD SUBROUTINE ADDR. 7 ?6_2 ADX 0 1 18 ?7DL STO 0 GEN0 [CALL SPECIFIED ABORT S/R 21 ?7Y= CALL 0 (GEN0) [CALL 0 (0) FAILS ON STEV'GE PROCSSRS 8 ?8CW LDX 2 FX2 17 ?8XG ... BNZ 0 (7) [J IF ABORT REQUESTED 7 ?9C6 RABO1 EXIT 7 1 4 ?9WQ [ 16 ?9_F ...[ SUBROUTINE TO INVALIDATE FPB IN X3 IF VALID 12 ?=2B ...[ ENTRY X3=FPB ADDR., X7=LINK 9 ?=3? ...[ EXIT X3=FPB ADDR. 4 ?=48 ...[ 5 ?=55 ...RINVFPB 10 ?=62 ... LDX 0 JOBNOWAS(3) 16 ?=6X ... BZE 0 (7) [J IF INVALID FPB 10 ?=7S ... STOZ JOBNOWAS(3) 10 ?=8P ... FINDJOBQ 1,0,(GEOERR) 18 ?=9L ... BC 1,JBWASIN [CLEAR VALID FPB MARKER 9 ?==H ... LDX 0 ALOGL(3) 20 ?=?D ... ADS 0 CINVFPB [ADD SIZE INTO INVALID FPB SIZE 7 ?=#* ... EXIT 7 0 4 ?=BB [ 4 ?=W2 [ 19 ??*L [ THIS SECTION SERVICES LONGLOCK REQUESTS. BLOCKS ARE EXAMINED 19 ??T= [ PROGRESSIVELY FROM THE HIGHEST ADDRESS IN MOVEABLE CORE DOWN, 19 ?##W [ AND A COUNT OF AVAILABLE SPACE (I.E. CORE WHICH IS EITHER FREE 19 ?#SG [ OR OCCUPIED BY A NON-LONGLOCK BLOCK OR IS THE 'FAG-END' OF A 21 ?*#6 [ LONGLOCK BLOCK) IS KEPT. IF A LOCKED LONGLOCK BLOCK IS ENCOUNTERED, 16 ?*RQ [ THE SEARCH IS RESTARTED FROM THE NEXT BLOCK DOWN. 19 ?B?B [ WHEN THE REQUEST IS SATISFIED, A CHECK IS MADE THAT THE REGION 18 ?BR2 [ INVOLVED DOES NOT EXTEND BELOW THE HIGHEST PROGRAM BLOCK. 20 ?C=L [ SINCE PROGRAM BLOCKS ARE USUALLY LARGE, MEETING ONE WILL ALMOST 20 ?CQ= [ ALWAYS CAUSE IMMEDIATE SATISFACTION OF THE REQUEST SO THAT THIS 14 ?D9W [ TEST IS NOT NEEDED ELSEWHERE IN THE CODE. 4 ?DPG [ 5 ?F96 QENTRY1 8 ?FNQ #SKI TRACE>499-499 11 ?G8B TRACE GLLSEMA,LLCORE 5 ?GN2 STARTLL 10 #?K* ... SEGENTRY K50COREALLF 5 #?KS ...MTFREE 6 #?L? ...#UNS ISFC 4 #?LQ ...( 14 #?M9 ... BRN THEND [STAN EXCLUDE THIS 7 #?MN ... LDX 0 0 18 #?N7 ... BXE 0 0,SFAIL [IF NOTHING ON TEMP ALREADY MERGED 12 #?NL ...[NOW MERGE TEMP FREE CHAIN WITH REAL 7 #?P5 ...ROUND LDX 1 1 9 #?PC ... BXE 1 1,THEND1 7 #?PP ...[ HALFWAY POINT 19 #?Q3 ... LDX 2 BFREE+1 [ TEST AND JUMP IF IT SHOULD 21 #?QG ... TXL 1 2 [BE CHAINED AT END OF FREECORE CHAIN 8 #?Q_ ... BCC NLOC1 15 #?RD ... LDN 2 BFREE [LOAD BASE 9 #?RX ... TXL 1 CMIDFREE 19 #?SB ... BCC NEND [JUMP IF AFTER MIDDLE OF CORE 18 #?ST ...NTFR TXL 1 FPTR(2) [LOCATE CORRECT POSITION 17 #?T# ... BCS NLOC1 [STARTING AT FRONT 9 #?TR ... LDX 2 FPTR(2) 8 #?W= ... BRN NTFR 18 #?WP ...NEND LDX 2 BPTR(2) [LOCATE CORRECT POSITION 16 #?X8 ... TXL 1 2 [STARTING AT END 8 #?XM ... BCS NEND 8 #?Y6 ...NLOC1 CHAIN 1,2 8 #?YK ... BRN ROUND 5 #?YN ...THEND1 8 #?YR ... LDN 3 2048 17 #?YW ... BXL 3 GLLLOG,THEND [ENSURE WITH LSM THAT WORTH 15 #?Y_ ... BRN THEND2 [DOING FULL PALAVER 5 #?_4 ...THEND 10 #?_H ... SEGENTRY K51COREALLF 4 #?_J ...) 9 #?_K ... LDX 3 GLLLOG 5 #?_L ...THEND2 6 #?_M ...#UNS CA1D 9 #?_N ... ADX 3 CIRNDB 6 #?_P ...#UNS CA1D 4 #?_Q ...#SKI 10 #?_R ... ADN 3 A1+IROUND-1 9 #?_S ... ANDX 3 IROUNDNG 18 #?_T ... STO 3 GEN4 [ RESTORE SIZE PARAMETER 10 #?_W ... BXGE 3 CFREE,SFAIL 8 #?_X ...#SKI TRACE>499-499 10 #?_Y ... TRACE GEN4,LLREQ 10 #?__ ... LDX 1 BFREE+BPTR 6 ##22 ...#UNS ISFC 17 ##23 ... BXE 1 CXFR,MTFREE [J IF NOTHING ON FREE CHAIN 9 ##24 ... LDX 2 GFIXCHAP 5 ##25 ...PREV1 8 ##26 ... NGX 4 GEN4 17 ##27 ... LDX 7 2 [ MARK TOP OF AREA 7 ##28 ... LDX 3 1 7 ##29 ... LDX 0 2 7 ##2= ...XXX LDX 2 3 9 ##2? ... ADX 3 ASIZE(3) 7 ##2# ... TXU 3 0 8 ##2* ... BCS XXX 7 ##2B ... LDN 5 4 20 ##2C ... ANDX 5 AFLAG(2) [ IS TOPMOST BLOCK A 'LONGLOCK' 18 ##2D ... BNZ 5 PREV1 [ JUMP IF YES TO RESTART 16 ##2F ... BRN STT [ CONTINUE IF NO 4 ##2G ...PREV 14 ##2H ... LDX 3 1 [ TO FIND 14 ##2J ... LDX 0 2 [ NEXT 14 ##2K ...XX LDX 2 3 [ BLOCK 14 ##2L ... ADX 3 ASIZE(3) [ BELOW 14 ##2M ... TXU 3 0 [ PRESENT 13 ##2N ... BCS XX [ ONE 9 ##2P ...STT LDX 6 ASIZE(2) 12 ##2Q ... LDX 5 AFLAG(2) [ 18 ##2R ... ANDN 5 #15 [ PRESERVE BITS 20,21,23 17 ##2S ... BZE 5 XFR [ JUMP IF 'ORDINARY' 19 ##2T ... SRC 5 1 [ 'FREE' BIT INTO SIGN BIT 17 ##2W ... BPZ 5 XNFR [ JUMP IF NOT FREE 20 ##2X ... TXU 1 BFREE [ IS THIS THE LOWEST FREE BLOCK? 20 ##2Y ... BCC XFR [ JUMP IF YES. TRY TO SATISFY 21 ##2_ ... [ REQUEST. IF NOT X5 NEG. => FAIL 12 ##32 ... STOZ 5 [ 10 ##34 ... SEGENTRY K52COREALLF 20 ##36 ... LDN 0 1 [IF SFC ON: LDX 0 ASFCFPTR+BPTR(2) 16 ##38 ... BZE 0 XFR [J IF FAST FREE 20 ##3? ... LDX 1 BPTR(1) [ POINT TO NEXT FREE BLOCK DOWN 8 ##3B ... BRN XFR 20 ##3F ...XNFR SRC 5 2 [ 'LONGLOCK' BIT INTO SIGN BIT 20 ##3J ... BPZ 5 XFR [ JUMP IF ORDINARY LOCKED BLOCK 20 ##3M ... SRC 5 1 [ X5<0 IF LOCKED LONGLOCK BLOCK 21 ##3Q ... BNG 5 PREV1 [CANNOT HAVE LOCKED LL IN FREEZE AREA 18 ##3T ... SBX 6 ALOGLEN(2) [ DETACH LONGLOCK BLOCK'S 15 ##3Y ... SBN 6 A1 [ FAG END, 15 ##43 ... ANDX 6 IROUNDNG [ IF ANY 21 ##46 ...XFR ADX 4 6 [ ADD IN POTENTIAL FREE CORE TO SUM 20 ##49 ... BPZ 4 SOFAR [ JUMP IF REQUEST NOW SATISFIED 17 ##4# ... BPZ 5 PREV [ GET ANOTHER BLOCK 21 ##4G ... BRN SFAIL [ X5 NEG => THIS WAS LOWEST FREE BLOK 5 ##J6 SOFAR 19 #*JQ ... LDX 3 BPBRG+BPTR [IS THE TOPMOST PROGRAM BLOCK 20 #*T= ...NEXTPROG [ABOVE THE START OF THE EXTENDED 19 #B5Q ... SBN 3 APBRG [FREEZE(X2).OK IF IT IS NOT 20 #BB= ... BXL 3 2,NOPROGABOVE [SO J TO CONTINUE.ALSO OK IF IT 19 #BLQ ... JBC SFAIL,3,AFFPB [IS AN FPB BUT FAIL IF NOT. 18 #BX= ... LDX 3 APBRG+BPTR(3) [GET NEXT PROGRAM BLOCK 16 #C7Q ... BRN NEXTPROG [AND LOOK AGAIN. 6 #CD= ...NOPROGABOVE 7 #C_G STO 2 6 18 #DF6 ... JBS XTND,2,AFLONG [J IF BOTTOM BLOCK IS LL 18 #DYQ ... [ REGION NOT SHORTENED 19 #FY2 ADS 4 6 [ MOVE POINTER UP BY EXCESS 19 #GCL XTND TXL 6 CTOP [DOES X6 POINT BELOW CTOP? 13 #GX= BCC SUCCESS [ NO 17 #HBW STO 6 CTOP [ YES. ADJUST CTOP 5 #HWG SUCCESS 18 #JB6 SBX 7 6 [ X7 HOLDS REGION'S SIZE 11 #JTQ COREFREEZE 6,7,TFAIL,,2,5 9 #K*B CALL 0 RESTORE 8 #KT2 #SKI TRACE>499-499 10 #L#L TRACE CTOP,LLSUCCES 7 #LS= COREQUST Y 5 #M?W SFAIL 8 #MRG #SKI TRACE>499-499 10 #N?6 TRACE CTOP,LLFAIL 9 #NQQ CALL 0 RESTORE 7 #P=B COREQUST N 4 #PQ2 [ 21 #Q9L [ THIS ROUTINE RESTORES ACTIVITY LINKS AND GETCORE PARAMATERS READY FOR 21 #QP= [ AN EXIT, SUCCESSFUL OR UNSUCCESSFUL, VIA COREALL. IT ALSO UNSETS THE 21 #R8W [ LONGLOCK FLAG AND RELEASES ANOTHER ACTIVITY WAITING FOR PERMISSION TO 11 #RNG [ ENTER COREALLF, IF ONE EXISTS. 5 #S86 RESTORE 8 #SMQ STO 0 GL1 18 #T7B LDN 1 GLLACCS [ RESTORE THE ALEVEN WORD 18 #TM2 SMO FX2 [ LINK OF THE ACTIVITY 19 #W6L LDN 2 ACC3 [ REQUESTING THE NEW BLOCK 8 #WL= MOVE 1 ALINK 9 #X5W LDN 1 GLLLINKS 9 #XKG LDN 2 GLINKSTEP 7 #Y56 MOVE 1 5 9 #YJQ STOZ GLLSEMA 9 #_4B FON GLLWAIT 8 #_J2 BRN (GL1) 4 *23L [ 15 *2H= [ THE 'FAIL' RETURN FROM THE LONGLOCK COREFREEZE 5 *32W TFAIL 20 *3GG LDX 7 AWORK1(2) [ AWORK1 HOLDS REASON FOR FAILURE 7 *426 SRC 7 3 8 *4FQ BPZ 7 TFAI1 6 *4H3 ...#UNS ICT 4 *4J# ...( 10 *4KK ... JBC OFFICT,,ICTSW 9 *4LW ... LDCH 0 ATYPE(2) 17 *4N7 ... SBN 0 BAT/64 [IF BLANKET COOR2 WONT WORK 19 *4PD ... BZE 0 SFAIL [IF ICT ON,SO FAIL INSTEAD 20 *4QP ... COOR3 #41 [VIZ WAIT FOR NEXT SPRING CLEAN 9 *4S2 ... BRN STARTLL 10 *4T? ...[ .....JUST LIKE COOR3 #41 5 *4WJ ...OFFICT 4 *4XT ...) 6 *4_B COOR2 9 *5F2 BRN STARTLL 7 *5YL TFAI1 SRC 7 3 8 *6D= BPZ 7 SFAIL 10 *6XW GEOERR 0,NOTLLERR 4 *8BQ [ 14 *8WB [ THIS PART IMPLEMENTS THE STARTSTRAT MACRO 21 *9B2 [ FIRST THE AREA INDICATED BY THE ADATA/ASTRAT BLOCK IS CLEARED OUT,AND 14 *9TL [ THEN THE PROGRAM IS MOVED OR SWAPPED IN 9 *=*= [ WORDS USED AS FOLLOWS: 18 *=SW [ ACOM1 SWITCHES B23 SET IF FREEZE IS FOR SWAP IN 19 *?#G [ B22 SET IF SWAP FOR REALTIME PROGRAM 20 *?S6 [ B21 SET IF BLOCK OVERLAP IN PROGRAM MOVE 17 *#?Q [ ACOM2 ADDRESS OF OLD PROGRAM SITE 17 *#RB ...[ ACOM4 DISTANCE PROGRAM TO BE MOVED 4 **?2 [ 5 **QL QENTRY2 11 *B== MHUNTW 3,ADATA,ASTRAT 18 *BPW LDX 0 GPCNT(3) [NUMBER OF ASTRAT ENTRIES 19 *C9G BCT 0 UMOVE [J IF NOT 1 - PROGRAM MOVE 16 *CP6 [ ELSE SWAP IN 10 *D8Q LDX 0 GPROG+1(3) 7 *DNB SLC 0 3 7 *F82 ANDN 0 2 18 *FML ORN 0 1 [SET FLAGS - B23 FOR SWAP 21 *G7= STO 0 ACOMMUNE1(2) [ B22 IF FOR REALTIME PROG 10 *GLW LDX 6 GPROG+1(3) 21 *H6G ANDX 6 BITS22LS [START OF PROSPECTIVE PROGRAM BLOCK 20 *HL6 LDX 3 GPROG(3) [JOB NUMBER OF SWAP IN CANDIDATE 16 *J5Q CALL 7 UFIND [X3-> JOBS PCA 10 *JKB HUNT2 3,BSTB,BSCB 9 *K52 LDX 7 ACORSZ(3) 6 *K86 ...#UNS CA1D 20 *K?= ... ADX 7 CA1D [SIZE OF REQUIRED PROGRAM BLOCK 6 *KBB ...#UNS CA1D 4 *KFG ...#SKI 20 *KJL ADN 7 A1D [SIZE OF REQUIRED PROGRAM BLOCK 18 *L4= BRN UFREZ [J TO GET PROGRAM BLOCK 5 *LHW UMOVE 15 *M3G STOZ ACOMMUNE1(2) [CLEAR FLAGS 11 *MH6 LDX 6 GPROG+GPREN+1(3) 17 *N2Q ANDX 6 BITS22LS [DESTINATION ADDRESS 18 *NGB LDX 3 GPROG+GPREN(3) [JOB NUMBER OF THE MOVED 16 *P22 CALL 7 UFIND [X3-> JOBS PCA 7 *PFL LDX 1 3 10 *P_= HUNT2 3,AOBJPROG,0 18 *QDW STO 3 ACOMMUNE2(2) [REMEMBER PROGRAM SITE 9 *QYG LDX 7 ASIZE(3) 7 *RD6 SBX 3 6 21 *RXQ BXL 7 3,UNOLP [J IF NO OVERLAP OF OLD & NEW SITES 21 *SCB LDX 7 3 [ ELSE SET FREEZE SIZE TO (SOURCE - 16 *SX2 [ DESTINATION) 7 *TBL LDN 0 4 17 *TW= ORS 0 ACOMMUNE1(2) [SET OVERLAP SWITCH 21 *W*W ...UNOLP STO 3 ACOMMUNE4(2) [DUMP DISTANCE PROGRAM BEING MOVED 20 *WTG UFREZ [BEFORE FREEZING WE MUST CHECK WHETHER A PROGRAM HAS 20 *X*6 [EXTRACOR-ED ITSELF INTO FREEZE AREA. IF SO, %C EXIT 10 *XSQ LDN 1 BPBRG-APBRG 19 *Y#B ...UCHK1 CALL 5 XSTEP [X1 -> NEXT PROGRAM OR CTOP 21 *YS2 BXL 6 1,UCHK2 [J IF START OF PROG > FREEZE START 21 *_?L SMO ASIZE(1) [ ELSE MUST BE < OR = FREEZE START 21 *_R= LDN 0 0(1) [IF END OF PROG ALSO < FREEZE START, 20 B2=W BXGE 6 0,UCHK1 [ J BACK TO CHECK NEXT PROGRAM 18 B2QG BRN UFAI3 [ ELSE TAKE ABORT EXIT 12 B3=6 ...UCHK2 COREFREEZE 6,7,UFAIL,1,1,25 7 B3PQ FINDCORE 1 9 B49B STOZ ATYPE(1) 9 B4P2 STOZ AFLAG(1) 9 B58L STOZ BACK1(1) 9 B5N= STOZ BACK2(1) 9 B67W LDX 0 ASIZE(1) 8 B6MG SBN 0 A1 20 B776 STO 0 ALOGLEN(1) [ SET LOGICAL LENGTH TO MAXIMUM 10 B7LQ LDX 0 ACOMMUNE1(2) 7 B86B ANDN 0 1 17 B8L2 BZE 0 UMOV [J IF PROGRAM MOVING 7 B95L LDX 3 1 15 B9K= NAME 1,AOBJPROG [NAME BLOCK 7 B=4W LDCT 0 2 7 B=JG ORN 0 1 17 B?46 STO 0 ARINGNO(1) [SET ITS RING WORD 21 B?HQ STOZ JRETI(1) [SWITCH WD(B0 SET IF RE WHEN PLUGGED) 8 B#3B ADN 1 APBRG 8 B#H2 LDN 2 BPBRG 21 B*2L ULCT2 LDX 2 FPTR(2) [ESTABLISH BLOCK IN PROGRAM BLOCK CHN 17 B*G= BXL 2 FCORES,ULCT1 [J IF BACK AT BASE 20 B*_W BXL 2 1,ULCT2 [ ELSE STEP BACK TO NEXT PROGRAM 9 BBFG ULCT1 ENRING 1,BPTR(2) 17 BB_6 LOCK 3 [LOCK PROGRAM BLOCK 20 BCDQ SWAP IN [SWAP PROGRAM IN, RETURN TO MACRO 16 BCYB [ SUCCESS EXIT 4 BDD2 UMOV 12 BDXL ... LOCK 1 [DONT LOSE BLOCK 15 BFC= ... ACROSS COREALLJ,1 [DO PROGRAM MOVE 5 CH5B USUCX 15 CHK2 UP [SUCCESS EXIT 4 CJ4L [ 5 CJJ= UFAIL 9 CK3W LDX 7 AWORK1(2) 7 CKHG SRC 7 1 8 CL36 BPZ 7 UFAI1 19 CLGQ LDX 0 AWORK2(2) [IF INSUFFICIENT CORE (B23) 16 CM2B STO 0 ACOMMUNE1(2) [ SET SHORTFALL 16 CMG2 UPPLUS 1 [ & TAKE %A EXIT 7 CM_L UFAI1 SRC 7 2 8 CNF= BPZ 7 UFAI3 21 CNYW ACROSS COREALLH,1 [IF TIMED OUT (B21) TAKE %B 21 CPDG UFAI3 UPPLUS 3 [ ELSE TAKE ABORT EXIT (%C).THIS EXIT 20 CPY6 [ ALSO IF PROG FOUND IN THE WAY 4 CQCQ [ 16 CQXB [ NOW THE SUBROUTINES USED IN THE STARTSTRAT CODE 4 CRC2 [ 21 CRWL [UFIND ENTERED WITH X3=JOB NUMBER,EXIT WITH X3-> PCA ,X1=FX1 X2=FX2 11 CSB= [ X0 DESTROYED LINK X7 4 CSTW [ 5 CT8? ...UFIND 10 CTGN ... FINDJOBQ 3,3,(GEOERR) 7 CTT6 FPCAJO 3 7 CW#Q EXIT 7 0 4 CWSB [ 21 CX#2 [UTEST USED BY THE COREFREEZE CALL TO TEST ABORT CONDITIONS & HAS 16 CXRL [ COMMON SPEC OF ALL COREFREEZE ABORT SUBROUTINES 4 CY?= [ 8 CYQW UTEST STO 0 GEN0 10 C_=G LDX 0 ACOMMUNE1(2) 7 C_Q6 ANDN 0 1 21 D29Q BZE 0 UTES1 [J IF FREEZE IS FOR PROGRAM MOVING 21 D2PB TEST 0,CJAMAB [ ELSE SWAP IN - JUST TEST C/J SWITCH 9 D392 BRN (GEN0) 21 D3NL UTES1 TEST 0,CJAMAB,CSWAPAB,CDELAB [TEST FOR C/J,SWAPOUT,DELETE 9 D48= BRN (GEN0) 4 D4MW [ 19 D57G [UCOPY COPIES [X5] WORDS FROM X3 TO X4, COOR2-ING EVERY 2K 16 D5M6 [ ENTERED X1=FX1,X2=FX2,X3,4,5 AS ABOVE , LINK X7 21 D66Q [ EXIT X1=FX1,X2=FX2, NEXT WORD WOULD HAVE BEEN TRANSFERED FROM X3+X5 TO 5 D6LB [ X4+X5 4 D762 [ 8 D7KL UCOPY SBX 7 FX1 7 D85= UCOP1 LDN 0 4 21 D8JW UCOP2 BXL 5 B513,UCOP3 [J IF < 513 WORDS STILL TO TRANSFER 17 D94G MOVE 3 0 [ELSE MOVE 512 WORDS 8 D9J6 ADN 3 512 8 D=3Q ADN 4 512 8 D=HB SBN 5 512 8 D?32 BCT 0 UCOP2 18 D?GL COOR2 [TAKE A BREATHER EVERY 2K 8 D#2= BRN UCOP1 15 D#FW UCOP3 SMO 5 [MOVE RESIDUE 7 D#_G MOVE 3 0 8 D*F6 ADX 7 FX1 7 D*YQ EXIT 7 0 4 DBDB [ 20 DBY2 [ THIS SECTION IMPLEMENTS THE EXTRACOR MACRO. ENTRY IS IN THE CPA OF 20 DCCL [ THE JOB TRYING TO EXTEND ITS CORE IMAGE, WITH ACOMMUNE1 THE NEW 19 DCX= [ PROGRAM SIZE REQUIRED (NOT INCLUDING AOBJPROG BLOCK RED TAPE) 4 DDBW [ 4 DDWG [ 5 DFB6 QENTRY3 8 DFTQ #SKI TRACE>99-99 12 DG*B TRACE ACOMMUNE1(2),EXTRACOR 8 DGT2 FJOCA 3,2 9 DH#L LDX 0 JMISC(3) 16 DHS= ANDX 0 BITS910 [TEST BITS 9 & 10 21 DJ?W BZE 0 XFAI1 [J IF PROGRAM NO LONGER SWAPPED IN 20 DJRG TESTAXES 3,XFAI1 [J IF PROGRAM IS BEING ACCESSED 19 DK?6 PROGAXES 3,(GEOERR) [ ELSE CLAIM IT FOR OUR OWN 17 DKQQ CALL 7 XFPRO [X3-> PROGRAM BLOCK 14 DL=B LDX 4 ACOMMUNE1(2) [NEW SIZE 8 DLQ2 #SKI TRACE>99-99 4 DM9L ( 10 DMP= LDX 0 ALOGLEN(3) 6 DMR8 ...#UNS CA1D 4 DMT6 ...( 8 DMX4 ... SBX 0 CA1D 8 DM_2 ... ADN 0 A1 4 DN2Y ...) 6 DN4W ...#UNS CA1D 4 DN6S ...#SKI 9 DN8W SBN 0 A1D-A1 9 DNNG BXL 0 4,XNOUG 20 DP86 GEOERR 1,EXTRACOR [ERROR IF REQUEST< CURRENT SIZE 5 DPMQ XNOUG 4 DQ7B ) 6 DQ9# ...#UNS CA1D 4 DQ?= ...( 8 DQ*8 ... LDX 7 CA1D 8 DQC6 ... ADN 7 0(3) 4 DQF4 ...) 6 DQH2 ...#UNS CA1D 4 DQJY ...#SKI 9 DQM2 LDN 7 A1D(3) 18 DR6L ADX 7 4 [X7 WOULD BE NEW LIMIT 7 DRL= LDX 1 3 21 DS5W ... CALL 5 XSTEP [GET ADDR OF NEXT PROG OR TOP OF CORE 21 DSKG BXGE 7 1,XFAI2 [NO CHANCE IF ANOTHER PROGRAM IN WAY 9 DT56 SMO ASIZE(3) 18 DTJQ LDN 6 0(3) [CURRENT LIMIT OF PROGRAM 17 DW4B SBX 7 6 [EXTRA CORE NEEDED 11 DWJ2 COREFREEZE 6,7,XFAI2,,1,5 17 DX3L CALL 7 XFPRO [X3-> PROGRAM BLOCK 18 DXH= FINDCORE 1 [GET THE NEW EXTENSION 21 DY2W LDX 5 ASIZE(1) [ AMALGAMATE THE EXTENSION WITH THE 17 DYGG [ OLD PROGRAM BLOCK 9 D_26 ADS 5 ASIZE(3) 10 D_FQ ADS 5 ALOGLEN(3) 9 D_PJ ... ADS 5 COBJUSE 8 D__B #SKI TRACE>99-99 11 F2F2 TRACE ASIZE(3),EXTRAGOT 7 F2YL LDX 3 1 17 F3D= DERING 1 [DERING THE EXTENSION 8 F3XW LDN 4 2(3) 7 F4CG SBN 5 2 21 F4X6 STOZ 1(3) [ZEROISE THE EXTENSION - 2 WORD O/LAP 8 F5BQ STOZ 0(3) 20 F5WB CALL 7 UCOPY [ FOR CORE INTERLEAVED MACHINES 19 F6B2 ... CALL 7 XAXES [SIGNAL END OF PROGRAM ACCESS 18 F7*= UP [BACK FOR SUCCESS EXIT 4 F7SW [ 9 F8#G [ NOW THE FAILURE LABELS 4 F8S6 [ 20 F9?Q XFAI2 [COREFREEZE FAILS TO GET THE CORE 8 F9RB #SKI TRACE>99-99 12 F=?2 TRACE AWORK1(2),EXTRAFAI 19 F=QL ... CALL 7 XAXES [SIGNAL END OF PROGRAM ACCESS 19 F?PW XFAI1 [BACK UP TO THE SWAPOUT MACRO 7 F#9G UPPLUS 4 4 F#P6 [ 14 F*8Q [ NOW THE SUBROUTINES USED IN THIS SECTION 4 F*=N ...[ 19 F*#L ...[ XAXES FINDS JOB BLOCK AND INDICATES END OF PROGRAM ACCESS 8 F*BJ ...[ X7= LINK 5 F*DG ...XAXES 8 F*GD ... FJOCA 3,FX2 7 F*JB ... ENDPAXES 3 7 F*L# ... EXIT 7 0 4 F*NB [ 20 FB82 [ XFPRO FINDS THE OBJECT PROGRAM BLOCK . ENTER X2-> CPA LINK X7 15 FBML [ EXIT X0 DESTROYED,X3-> PROGRAM BLOCK 4 FC7= [ 8 FCLW XFPRO FPCACA 3,2 10 FD6G HUNT2 3,AOBJPROG,0 7 FDL6 EXIT 7 0 4 FF5Q [ 21 FFKB [ XSTEP STEPS X1 TO THE START OF THE NEXT PROGRAM BLOCK OR TO THE 13 FG52 [ START OF THE LONGLOCK AREA. LINK X0 4 FGJL [ 9 FH4= XSTEP LDX 1 APBRG(1) 8 FHHW SBN 1 APBRG 19 FJ3G ... BXGE 1 FCORES,XSTEP1 [EXIT IF X1-> VARIABLE CORE 21 FJH6 LDX 1 CTOP [ ELSE OVER TOP - SET X1 TO LL BNDY 7 FJPB ... EXIT 5 0 5 FJXL ...XSTEP1 20 FK5W ... JBS XSTEP,1,AFFPB [IF FPB,J TO GET NEXT AOBJPROG 7 FK#6 ... EXIT 5 0 4 FL22 [ 15 FLFL [ THIS ENTRY IMPLEMENTS THE NOISY CORE SYSTEM 4 FL_= [ 5 FMDW QENTRY4 6 FMYG #SKI FNOISE 4 FND6 ( 9 FNXQ NOISE CALL 4 (GNCCODE) 11 FPCB COREFREEZE 6,7,NFAIL,,1,0 7 FPX2 NGNC 5 1 7 FQBL NFAIL NGN 5 0 8 FQW= BRN NOISE 4 FR*W ) 7 FRTG #SKI FNOISE<1$1 9 FS*6 GEOERR 1,NOT YET! 4 FSSQ # 5 G5B8 ...STRATEST 5 G5L2 ...SWAPTEST 5 G5TS ...QENTRY5 10 G65L GEOERR 0,G4ENTRY! 11 G6K= MENDAREA 100,K99COREALLF 4 G74W #END 8 ____ ...54740463000100000000