16 22FL ...#SEG COREALL [DEK BEASLEY : CENT 8 22_= #OPT K0COREALL=0 12 23DW #LIS K0COREALL>K0KERNEL>K0ALLGEO 12 23YG #OPT K6COREALL=K6KERNEL>K6ALLGEO 9 24D6 #DEF SPLITLEN=CSPLIT 8 24XQ #DEF NAFRA=CNAFRA 8 25CB #DEF NCHLI=CNCHLI 8 25X2 #DEF SPCHL=CSPCHL 7 26BL #DEF WAIT=CWAIT 11 26W= #DEF XJCHAPLOW=CJTHRESH3<#7777 9 27*W #DEF TRACE=K6COREALL 4 27TG [ 11 28*6 [CORE STORE ALLOCATION ROUTINES 4 28SQ [ 7 28TP ...#SKI K6COREALL 4 28WN ...( 20 28XM ...[THIS SUBROUTINE CHECKS THAT THE BLOCK SPECIFIED IN X1 IS CHAINED 19 28YL ...[CORRECTLY.IF NOT IT BRANCHES TO LABEL SILL TO GEOERR FREECORE. 9 28_5 ... LABFIX CHECKCHN 6 28_K ...XCHECKCHN 20 292J ... SMO FPTR(1) [ILLEGAL IF IMPROPERLY CHAINED 8 293H ... TXU 1 BPTR 9 294G ... BCS XBADCHAIN 9 295F ... SMO BPTR(1) 8 296D ... TXU 1 FPTR 9 297C ... BCS XBADCHAIN 7 298B ... EXIT 0 0 6 299* ...XBADCHAIN 10 29=# ... GEOERR 1,BADCHAIN 4 29?? ...) 4 29#B [ 4 29S2 [ 21 2=?L [THIS ROUTINE FREES THE BLOCK OF CORE SPECIFIED IN X1 RECHAINING IT IN 21 2=R= [ITS APPROPRIATE POSITION IN THE FREECORE CHAIN IF ANY ACTIVITIES ARE 20 2?=W [WAITING FOR CORE THEY ARE WOKEN UP THE TOTAL AMOUNT OF FREE CORE 11 2?QG [CURRENTLY AVAILABLE IS UPDATED 4 2#=6 [ 8 2#FY ... FIXTRA K1COREALL 7 2#PQ LABFIX HNFREE 16 2*9B NFREE STO 0 GL2 [REMEMBER LINK 9 2*P2 #SKI K6COREALL>699-699 10 2B8L TRACE 1,FREECORE 7 2BN= #SKI K6COREALL 4 2C7W ( 20 2CMG ... CALL 0 XCHECKCHN [CHECK BLOCK IN X1 CHAINED OK. 16 2GK= LDX 0 ATYPE(1) [FREED BLOCK TYPE 19 2H4W TXL 0 ACTY [TEST NOT ACTIVITY OR QBLOCK 8 2HJG BCS NJH1 18 2J46 LDX 0 BACKCHAN(1) [THAT IS STILL ON A LIST 8 2JHQ BZE 0 NJH1 10 2K3B ...SILL GEOERR 1,FREECORE 4 2KH2 NJH1 4 2L2L ) 21 2LG= STO 1 NAFRA [REMEMBER ADDRESS OF BLOCK TO FREE 21 2L_W LDX 0 WAIT [LOAD SWITCH SHOWING IF ANY ACTS ARE 19 2MFG ... BZE 0 NOWA1 [WAITING FOR CORE J IF NONE 21 2M_6 FON 1 [WAKE UP ALL ACTIVITIES WAITING CORE 19 2NDQ STOZ WAIT [SET SWITCH NONE NOW WAITING 5 2NG8 ...#SKI G4 5 2NHM ...NOWA1 6 2NLJ ...#UNS G4VOPA 4 2NPF ...( 5 2NSB ...#SKI G4 4 2NX? ...( 9 2P28 ... LDX 0 COBJFAIL 8 2P55 ... BZE 0 NOWA 9 2P82 ... LDX 0 COBJWAIT 16 2P=X ... BZE 0 NOWA [IF APPROPRIVATE 21 2P*S ... FON #105 [WAKE ACTS. WAITING FOR PROGRAM CORE 19 2PDP ... STOZ COBJWAIT [SET SWITCH NON NOW WAITING 4 2PHL ...) 4 2PLH ...) 16 2PPD ...NOWA LDX 1 NAFRA [RELOAD BLOCK S A 5 2Q2R ...#SKI G3 5 2Q#6 ...NOWA1 10 2QKF ... LDX 2 ARINGNO(1) 8 2QWW ANDX 2 BSP16 15 2RBG BZE 2 NRN [JUMP IF NONE 21 2RL# ... LDX 0 ATYPE(1) [J IF ADATA/FPSEUD BLOCK - MAY BE 8 15 2RW6 ... BXE 0 FPSEUTYP,NRN [ WDS ONLY 10 2S5Y ... LDX 0 ARINGNO(1) 18 2S*Q SRL 0 15 [ISOLATE NUMBER OF RINGS 16 2STB STO 0 ARINGLEN [REMEMBER NUMBER 9 2T*2 ADN 1 ARINGNO+1 9 2TSL NXT LDX 0 BPTR(1) 8 2W#= BZE 0 SNOOR 8 2WRW CALL 0 NDECH 18 2X?G SNOOR ADX 1 ARINGLEN [INCREMENT FOR NEXT RING 8 2XR6 BCT 2 NXT 18 2Y=Q LDX 1 NAFRA [RESTORE START ADDRESS 16 2YQB NRN CALL 0 NDECH [DECHAIN BLOCK 19 2_=2 N21X [ ENTRY FROM BCOPY AND LOCKC 8 2_PL STO 1 NAFRA 15 329= LDX 2 ASIZE(1) [ BLOCK SIZE 21 32NW LDN 0 2 [ MASK FOR BIT 22, THE 'FROZEN' BIT 9 338G ANDX 0 AFLAG(1) 18 347Q BNZ 0 XFROZ [ JUMP IF BLOCK IS FROZEN 21 34MB NFA [ ENTRY FOR FREED FAG-ENDS ( ALTLEN 21 3572 STOZ GENDP [ NO KNOWLEDGE OF POS'N IN F/C CHAIN 21 35LL NFE [ ENTRY FOR FREED FAG-ENDS ( RELFAG 21 366= LDN 0 1 [ OTHERWISE BLOCK WILL BE MADE 'FREE' 21 36KW STO 0 AFLAG(1) [ CLEAR FLAGS AND SET THE 'FREE' FLAG 18 375G ADS 2 CFREE [ UPDATE FREE CORE TOTAL 6 376X ...#UNS ISFCON 4 378# ...( 8 379P ... FIXTRA ISFCM1 14 37=M ... BRN XSFCM11 [IF ON TXL 1 CTOP 13 37?K ... BCC SLFC [J IF LL BLOCK 17 37#H ... BXU 2 CIROUND,SLFC [ONLY SMALLEST ON POOL 8 37*Y ... LDN 2 BF64 16 37C* ... STOZ ASFCFPTR+BPTR(1) [TO TELL FREEOUT 8 37DQ ... BRN NCH4 9 37G7 ... FIXTRA ISFCM11 5 37GT ...XSFCM11 4 37HJ ...) 19 37K6 ADX 2 1 [ GET NEXT CONTIGUOUS BLOCK 15 384Q ANDX 0 AFLAG(2) [ TEST BIT 23 18 38JB BZE 0 NAFT [ JUMP IF BLOCK NOT FREE 9 3942 #SKI K6COREALL>799-799 21 39HL TRACE ASIZE(2),AMALHIGH [TRACE SIZE & ADDR OF NEXT BLOCK UP 15 3=3= LDX 0 ASIZE(2) [ AMALGAMATE 15 3=GW ADS 0 ASIZE(1) [ SIZES 6 3=JY ...#UNS ISFCON 4 3=M2 ...( 8 3=P4 ... STO 1 NAFRA 7 3=R6 ... LDX 1 2 18 3=T8 ... CALL 0 NFROUT [REMOVE FROM SIZE RING 8 3=X= ... LDX 1 NAFRA 4 3=_# ...) 6 3?3B ...#UNS ISFCON 4 3?5D ...#SKI 7 3?7N ...[ FREEOUT 2 20 3?G6 LDX 0 FPTR(2) [THE FOLLOWING ROUTINE DECHAINS 15 3?_Q SMO BPTR(2) [THE BLOCK 17 3#FB STO 0 FPTR [IN ORDER TO COMPLETE 16 3#_2 LDX 0 BPTR(2) [THE AMALGAMATION 9 3*DL SMO FPTR(2) 8 3*Y= STO 0 BPTR 20 3BCW LDX 2 0 [X2 AND X0 BOTH NOW POINT TO THE 17 3BXG BRN NLOC [PRECEDING FREE BLOCK 19 3CC6 [ OTHERWISE IT IS NECESSARY TO LOCATE THE POSITION OF THE BLOCK 9 3CWQ [ IN THE FREECORE CHAIN 21 3DBB [ IF GENDP IS NON-ZERO IT HOLDS THE ADDRESS OF THE PRECEDING FREE BLOCK 21 3DW2 [ (AT PRESENT THIS ONLY APPLIES TO ENTRY FROM RELFAG FOR ORDINARY G/C 9 3F38 ... FIXTRA ISFCM10 4 3F8B ...SLFC 4 3F*L NAFT 8 3FT= LDX 2 GENDP 20 3G#W ... BNZ 2 NLNC [IF FAG END CANT BE PREVIOUS FREE ADJACENT 19 3GSG LDX 2 BFREE+1 [ TEST AND JUMP IF IT SHOULD 21 3H#6 TXL 1 2 [BE CHAINED AT END OF FREECORE CHAIN 8 3HRQ ... BCC NLOC1 15 3J?B LDN 2 BFREE [LOAD BASE 6 3J*5 ...#UNS ISFCON 4 3JBS ...( 16 3JDH ... BXL 1 FPTR(2),NLOC1 [J IF CAN GO AT FRONT 9 3JG= ... FIXTRA ISFCM100 16 3JH_ ... BRN XONFREE [LDN 2 BFTEMP IF ON 8 3JKN ... BRN NLNC 5 3JMC ...XONFREE 4 3JP6 ...) 9 3JR2 TXL 1 CMIDFREE 19 3K=L BCC NEND [JUMP IF AFTER MIDDLE OF CORE 18 3KQ= NTFR TXL 1 FPTR(2) [LOCATE CORRECT POSITION 17 3L9W BCS NLOC1 [STARTING AT FRONT 9 3LPG LDX 2 FPTR(2) 8 3M96 BRN NTFR 18 3MNQ NEND LDX 2 BPTR(2) [LOCATE CORRECT POSITION 16 3N8B TXL 1 2 [STARTING AT END 8 3NN2 BCS NEND 4 3P7L # 18 3PM= [ THE FINAL SECTION OF CODE DETERMINES WHETHER THE PRECEDING 14 3Q6W [ BLOCK IS FREE AND CAN THUS BE AMALGAMATED 4 3QLG # 9 3QW# ... FIXTRA ISFCM1100 7 3R66 NLOC1 LDX 0 2 20 3RKQ NLOC ADX 0 ASIZE(2) [ADDRESS BLOCK PHYSICALLY AFTER 19 3S5B [ PRECEDING FREE BLOCK 18 3SK2 TXU 0 1 [IF NOT OUR BLOCK - JUMP 8 3T4L BCS NLNC 9 3TJ= #SKI K6COREALL>799-799 21 3W3W TRACE ASIZE(2),AMALLOW [TRACE SIZE & ADDR OF NEXT BLOCK DOWN 20 3WHG LDX 0 ASIZE(1) [ OTHERWISE AMALGAMATE AND EXIT 9 3X36 ADS 0 ASIZE(2) 6 3X5F ...#UNS ISFCON 4 3X7S ...( 9 3X9B ... FIXTRA ISFCM1000 18 3X=Y ... BRN NZY [LDX 1 2 IF ON 20 3X#G ... CALL 0 NFROUT [REMOVE FROM SIZE RING (FREEOUT) 4 3XBT ...) 6 3XF8 ...#UNS ISFCON 4 3XHH ...#SKI 7 3XKW ...[ FREEOUT 2 6 3XPL ...#UNS ISFCON 10 3XTB ... TRANSFIX CALL 0 ,HZFRIN 6 3X_6 ...#UNS ISFCON 4 3Y4W ...#SKI 7 3Y8L ...[ FREEIN 2 8 3YG2 BRN NZY 4 3YPS ...NLNC 6 3YRH ...#UNS ISFCON 4 3YT= ...( 9 3YWB ... FIXTRA ISFCM110 16 3YXG ... BRN XSFCM110 [STO 2 BSOURCE WHEN ON 10 3YYN ... TRANSFIX CALL 0 ,HZFRIN 9 3_2C ... LDX 2 BSOURCE 5 3_3= ...XSFCM110 4 3_46 ...) 6 3_5T ...#UNS ISFCON 4 3_7J ...#SKI 21 3_9D ...[ FREEIN 1 [ LINK THE FREED BLOCK INTO SIZE RING 8 3_F= BRN NCH3 4 3_YW # 21 42DG XFROZ [ACTION WHEN A FROZEN BLOCK IS FREED 13 42N# ... STO 0 AFLAG(1) [FROZ BIT SET 18 42Y6 ADS 2 FREZFREE [UPDATE FROZEN FREE TOTAL 19 43CQ FREZKICK [AWAKEN ANY FREEZE ACTIVITIES 8 43XB LDX 1 NAFRA 9 44C2 XFR1 LDX 0 FPSEUTYP 18 44WL STO 0 ATYPE(1) [MARK BLOCK PSEUDO FREE 9 45B= LDN 2 BCAFREZ 19 45TW BRN NCH3 [J TO CHAIN IN FREEZE CHAIN 4 46*G # 20 46T6 [ RELFAG IS AN ENTRY BRANCH OF THE FREECORE ROUTINE. ALL CHECKS ARE 21 47#Q [ SKIPPED SINCE THEY DO NOT APPLY TO FAG-ENDS. THE LOWER SECURITY 21 47SB [ MEANS THAT THIS FACILITY SHOULD NOT BE AVAILABLE OUTSIDE COREALL. 21 48#2 RELFAG [ ASSUMES X1 POINTS TO FAG-END AND 20 48RL STO 0 GL2 [ ITS SIZE IS IN ITS ASIZE WORD 9 493D ... FIXTRA CHAPMOVE7 9 49?= LDX 2 ASIZE(1) 8 49QW #SKI TRACE>499-499 9 4==G TRACE 2,FAGEND 8 4=Q6 BRN NFE 4 4?9Q # 4 4?PB [ 19 4#92 [THIS ROUTINE RINGS THE ELEMENT POINTED TO BY X1 AFTER THE BLOCK 8 4#NL [POINTED TO BY X2 4 4*8= [ 7 4*MW LABFIX ERING 14 4B7G XRING STO 0 GL2 [SET LINK 16 4BM6 BRN NCH3 [JUMP TO ENRING 4 4C6Q [ 20 4CLB [THIS ROUTINE DERINGS THE ELEMENT POINTED TO BY X1, SETTING IT NULL 4 4D62 [ 7 4DKL LABFIX ARING 15 4F5= XDRIN STO 0 GL2 [STORE LINK 14 4FJW CALL 0 NDECH [DERING 14 4G4G STOZ BPTR(1) [SET NULL 17 4GJ6 BRN NZY [JUMP TO TERMINATE 4 4H3Q [ 21 4HHB [ THIS ROUTINE UNCHAINS THE BLOCK POINTED TO BY X1 AND RECHAINS IT AFTER 20 4J32 [ THE BLOCK POINTED TO BY X2, AFTER FIRST CHECKING X1 AND X2 FOR 9 4JGL [ REASONABLE VALUES 4 4K2= [ 6 4KFW LABFIX CHAN 16 4K_G XCHAN STO 0 GL2 [REMEMBER LINK 9 4LF6 #SKI K6COREALL>799-799 4 4LYQ ( 9 4MDB TRACE 1,CHAIN1 9 4MY2 TRACE 2,CHAIN2 4 4NCL ) 6 4S#L LABFIX ACH1 20 4SS= TXU 1 2 [TEST AND EXIT IF TRYING TO CHAIN 8 4T?W BCC NZY 17 4TRG NCH2 CALL 0 NDECH [DECHAIN THE BLOCK 6 4W?6 LABFIX ACH3 4 4WB= ...NCH3 7 4WFB ...#SKI K6COREALL 4 4WJG ...( 14 4WML ... STO 1 GL1 [SAVE X1 19 4WQQ ... LDX 1 2 [BLOCK TO BE CHAINED AFTER 21 4WTW ... CALL 0 XCHECKCHN [CHECK THAT IT IS CHAINED CORRECTLY 15 4W_2 ... LDX 1 GL1 [RESTORE X1 4 4X46 ...) 18 4X7= ...NCH4 CALL 0 NCHAIN [ CHAIN THE BLOCK 15 4X=B NZY LDX 1 FX1 [ RESET X1 15 4XQ2 LDX 2 FX2 [ AND X2 14 4Y9L BRN (GL2) [ EXIT 4 4YP= [ 21 4_8W [ THIS ROUTINE CHAINS THE BLOCK POINTED TO BY X1 AFTER THE BLOCK POINTED 7 4_NG [ TO BY X2 7 4_Y# ... LABFIX ACHAIN 5 5286 NCHAIN 15 52MQ STO 0 GL1 [ SAVE LINK 21 537B LDX 0 FPTR(2) [ LOAD FORWARD POINTER PRECEDING BLOK 21 53M2 STO 1 FPTR(2) [STORE NEW FORWARD PTR PRECEDING BLK 19 546L STO 0 FPTR(1) [STORE FORWARD PTR NEW BLOCK 19 54L= STO 2 BPTR(1) [STORE BACKWARD PTR NEW BLOCK 20 555W SMO 0 [STORE NEW BACKWARD POINTER IN 16 55KG STO 1 BPTR [FOLLOWING BLOCK 14 5656 BRN (GL1) [ EXIT 4 56JQ [ 15 574B [THIS ROUTINE DECHAINS THE BLOCK SPECIFIED IN X1 7 57J2 LABFIX ADECH 16 583L NDECH STO 0 GL1 [REMEMBER LINK 9 58H= #SKI K6COREALL>899-899 9 592W TRACE 1,NDECH 7 595F ...#SKI K6COREALL 4 5984 ...( 20 59=M ... CALL 0 XCHECKCHN [CHECK THAT BLOCK IS CHAINED OK. 18 59*= ... [GEOERR BADCHAIN IF NOT 4 59CT ...) 18 59GG LDX 0 FPTR(1) [LOAD S A OF NEXT BLOCK 20 5=26 SMO BPTR(1) [STORE AS NEW FORWARD POINTER IN 16 5=FQ STO 0 FPTR [PRECEDING BLOCK 18 5=_B LDX 0 BPTR(1) [LOAD S A PRECEDING BLOCK 20 5?F2 SMO FPTR(1) [STORE AS NEW BACKWARD POINTER IN 16 5?YL STO 0 BPTR [FOLLOWING BLOCK 13 5#D= BRN (GL1) [EXIT 4 5#XW [ 4 5*CG [ 20 5*X6 [THIS ROUTINE UNLOCKS A LOCKED BLOCK REMOVING ANY PLEASE MOVE MARKER 4 5BBQ [ 7 5BWB LABFIX GUNLOK 4 5CB2 NUNL 7 5CTL #SKI K6COREALL 4 5D*= ( 20 5DSW BXL 2 FCORES,SILL3 [GEORGE ERROR IF OUTSIDE VARIABLE 14 5F#G ... BXL 2 GFIXCHAP,NOTILL3 [ CORE 10 5FS6 SILL3 GEOERR 1,UNL HIGH 5 5G?Q NOTILL3 4 5GRB ) 15 5H?2 STO 0 GL2 [DUMP LINK 19 5HQL NGN 1 #11 [ MASK TO HIDE 'LOCKED' BIT 17 5J== ANDX 1 AFLAG(2) [ CLEAR LOCKED BIT 9 5JPW STO 1 AFLAG(2) 17 5K9G ANDN 1 2 [ CHECK 'FROZEN' BIT 18 5KP6 BNZ 1 NUNL1 [ JUMP IF BLOCK IS FROZEN 8 5L8Q LDX 1 WAIT 20 5LNB BZE 1 NZY [ IF NONE WAITING JUMP TO EXIT 21 5M82 FON 1 [WAKE UP ALL ACTIVITIES WAITING FORCO 19 5MML STOZ WAIT [SET SWITCH NONE NOW WAITING 8 5N7= BRN (GL2) 21 5NLW NUNL1 FREZKICK [AWAKEN ANY SLEEPING FREEZE ACTIVITIE 15 5P6G BRN NZY [ AND EXIT 4 5PL6 [ 4 5Q5Q [ 15 5QKB [THIS ROUTINE LOCKS THE BLOCK SPECIFIED IN X2 4 5R52 [ 7 5RJL LABFIX ALOCK 5 5S4= NLOCK 7 5SHW #SKI K6COREALL 4 5T3G ( 20 5TH6 BXL 2 FCORES,SILL4 [GEORGE ERROR IF OUTSIDE VARIABLE 14 5W2Q ... BXL 2 GFIXCHAP,NOTILL4 [ CORE 10 5WGB SILL4 GEOERR 1,LOCKHIGH 5 5X22 NOTILL4 4 5XFL ) 8 5X_= LDN 1 #10 19 5YDW ORS 1 AFLAG(2) [ SET 'LOCKED' BIT IN AFLAG 17 5YYG NLOC2 LDX 1 FX1 [RESET X1,X2 & EXIT 8 5_D6 LDX 2 FX2 7 5_XQ EXIT 0 0 4 62CB [ 15 62X2 [ THIS ROUTINE IS A COORDINATING VERSION OF LOCK 4 63BL [ 7 63W= LABFIX COLOCK 5 64*W NLOCKC 15 64TG STO 0 GL2 [DUMP LINK 17 65*6 STO 2 GEN0 [DUMP BLOCK ADDRESS 20 65SQ CALL 0 NLOCK [CHECK BLOCK ADDRESS & LOCK IT 8 66#B LDX 0 GL2 8 66S2 LDX 2 GEN0 9 67?L LDX 1 AFLAG(2) 19 67R= ANDN 1 #402 [ JUMP IF BLOCK IS MARKED AS 20 68=W BNZ 1 NLOK1 [ 'FROZEN' OR 'PLEASE MOVE UP' 7 68QG ADN 0 2 8 69=6 BRN NLOC2 19 69PQ NLOK1 LDX 1 ALOGLEN(2) [IF FROZEN,SET UP FOR GETCORE 16 6=9B STO 1 GLOGLEN [ LOGICAL LENGTH 9 6=P2 LDX 2 AFLAG(2) 7 6?8L ANDN 2 4 7 6?N= SRL 2 2 20 6#7W LDCT 2 HLOK(2) [ REQU TYPE-OPTIONAL,LONGLOCK IF 19 6#MG [ REQD,LOCK TYPE 21 6*76 LDN 1 0 [ RING CONFIGN-BLOCKCOPY WILL SET RNG 17 6*LQ [LINK ALREADY IN X0 16 6B6B BRN XTND [J TO DO GETCORE 4 6BL2 [ 6 6BL7 ...#UNS ISFCON 4 6BL# ...( 4 6BLF ...# 7 6BLL ...#UNS ICASSTATS 4 6BLR ...( 6 6BLS ...#UNS ICTON 4 6BLT ...( 6 6BLW ...SGETGMILL 13 6BLX ...# FOR ICT ADD OTHER G MEMBERS MILL 9 6BLY ... STO 1 BSOURCE 8 6BL_ ... LDCT 1 #001 9 6BM2 ... ANDX 1 ASWITCH1 16 6BM3 ... [J IF ICTSW OFF 9 6BM4 ... BZE 1 SGMEND 8 6BM5 ... LDX 1 ASFNO1 4 6BM6 ...SGM2 10 6BM7 ... SMO GMELRTAB+1(1) 8 6BM8 ... ADX 4 ATM 8 6BM9 ... BCT 1 SGM2 5 6BM= ...SGMEND 9 6BM? ... LDX 1 BSOURCE 7 6BM# ... EXIT 0 0 4 6BM* ...) 17 6BMB ...# FIND MILL SPENT IN ACAS 5 6BMC ...SCASMILL 7 6BMJ ... '167 0 0 8 6BML ... LDX 4 K7 6 6BMP ...#UNS ICTON 9 6BMW ... CALL 0 SGETGMILL 8 6BNS ... SBX 4 CASK7 15 6BN_ ... ADS 4 CASMILL [ADD TO TOTAL 5 6BP8 ...SCASEX 7 6BPD ... EXIT 7 0 4 6BPK ...) 4 6BPQ ...# 21 6BPX ...# IN THE STRUCTURED FREE CORE SYSTEM FREE BLOCKS ARE RINGED ON TO 21 6BQ4 ...# SIZE RINGS THROUGH THEIR SIZE RING POINTERS. THEY REMAIN ON THE 19 6BQ9 ...# FREE CORE CHAIN. EACH SIZE RING HOLDS A RANGE OF SIZES IN 19 6BQB ...# ASCENDING ORDER OF SIZE. THE SIZE RANGE FOR EACH RING IS 13 6BQH ...# DETERMINED BY A FIXED CORE TANBLE. 4 6BQN ...# 20 6BQT ...# THIS SUBROUTINE SEARCHES THE SIZE RINGS TO FIND A BLOCK BIG 21 6BR2 ...# ENOUGH TO SATISFY THE REQUEST. IT RETURNS TO THE CALLING ROUTINE 21 6BR7 ...# IF UNSUCCESSFUL. IF SUCCESSFUL IT BRANCHES TO PROCESS THE BLOCK. 21 6BR# ...# IT IS USED BY THE FREEIN MACRO, IN WHICH CASE ONLY THE APPROPRIAT 21 6BRF ...# SIZE RING IS SEARCHED, RETURNING THE ADDRESS OF THE BLOCK BEHIND 15 6BRL ...# WHICH THE FREED BLOCK SHOULD BE CHAINED. 4 6BRR ...# 4 6BSC ...# 17 6BSJ ...# THE CODE FOR THE SIZERINGS SUBROUTINE IS HELD IN 9 6BSP ...# SEGMENT CASCODE. 4 6BSW ...# 4 6BTG ...# 20 6BTM ...# ENTRY POINT FOR FREEIN MACRO. CHAINS BLOCK POINTED TO BY X1 17 6BTS ...# INTO ITS SIZE RING IN STRUCTURED FREE CORE SYSTEM. 20 6BT_ ...# X0, X2 OVERWRITTEN, X1 REMAINS POINTING TO THE BLOCK ON EXIT. 17 6BW6 ...# CODE FOR FREEIN ROUTINE HELD IN SEGMENT CASCODE. 4 6BW? ...# 4 6BWD ...) 6 6BWK ...#UNS ISFC 4 6BWQ ...( 18 6BWX ...# IF ONLY ISFC IS SET,AND NOT ISFCON, FREEIN AND FREEOUT 8 6BX4 ...# JUST EXIT. 7 6BX9 ... LABFIX HNFRIN 5 6BXB ...NFRIN 4 6BXH ...) 6 6BXN ...#UNS ISFCON 4 6BXT ...( 8 6BY3 ... FIXTRA ISFCM2 14 6BY9 ... EXIT 0 0 [STO 0 CASLNK IF ON 10 6BYC ... TRANSFIX BRN ,HZFRIN 4 6BYL ...# 20 6BYR ...# ENTRY POINT FOR FREEOUT MACRO. DECHAINS BLOCK POINTED TO BY X1 17 6BYY ...# FROM ITS SIZE RING IN STRUCTURED FREE CORE SYSTEM. 18 6B_5 ...# X0 OVERWRITTEN, X1 STILL POINTS TO BLOCK ON EXIT. 4 6B_= ...# 4 6B_C ...) 6 6B_J ...#UNS ISFC 4 6B_P ...( 7 6B_W ... LABFIX HNFROUT 5 6C23 ...NFROUT 4 6C2* ...) 6 6C2G ...#UNS ISFCON 4 6C2M ...( 8 6C2Q ... FIXTRA ISFCM3 14 6C2T ... EXIT 0 0 [STO 0 CASLNK IF ON 11 6C2Y ... LDX 0 ASFCFPTR+BPTR(1) 14 6C33 ... BZE 0 (CASLNK) [J IF NOT RINGED 10 6C36 ... SMO ASFCFPTR(1) 8 6C39 ... STO 0 BPTR 10 6C3# ... LDX 0 ASFCFPTR(1) 11 6C3C ... SMO ASFCFPTR+BPTR(1) 8 6C3G ... STO 0 FPTR 5 6C3K ...NFRINEND 6 6C3Q ...NFROUTEND 13 6C3S ... BRN (CASLNK) [EXIT 4 6C3X ...) 6 6C44 ...#UNS ISFC 4 6C49 ...( 6 6C4? ...#UNS ISFCON 4 6C4* ...#SKI 13 6C4C ... BRN (0) [EXIT 4 6C4H ...# 4 6C4N ...) 4 6C5L [ 4 6CK= [ 21 6D4W [THIS ROUTINE GETS A BLOCK OF CORE OF THE SIZE SPECIFIED IN X2 FOR AN 17 6DJG [OBJECT PROGRAM OR GEORGE'S OWN USE AS SPECIFIED IN X1 4 6F46 [ 4 6FHQ [ 18 6G3B [ENTRY POINT FOR GETTING BACKING STORE TRANSFER QUEUE BLOCKS 4 6GH2 [ 7 6H2L LABFIX BSTQSWAP 20 6HG= LDCT 1 HLINKB [GETQUEU - OPTIONAL IF FOR SWAP 8 6H_W BRN NQU1 7 6JFG LABFIX BSTQBLOK 16 6J_6 LDCT 1 HMANDAT+HLINKB [ ELSE MANDATORY 17 6KDQ NQU1 LDN 4 AQUE [QUEUE BLOCK LENGTH 9 6KYB LDX 2 AQTYPE 8 6LD2 BRN NEMS1 7 6LXL LABFIX EMSENT 19 6MC= NEMS LDCT 2 #2 [NO RINGS - DEFAULT LENGTH=2 15 6MWW LDCT 1 HMANDAT+HLINKB [MANDATORY 7 6NBG NEMS1 LDN 5 3 21 6NW6 STO 5 GLINKSTEP [NO STEPPING BACK FOR GETEMSCR/GETQUE 8 6P*Q BRN QCOM 7 6PTB LABFIX HGLINK 7 6Q*2 LDN 1 1 17 6QSL STO 1 GLINKSTEP [BACK 2 FOR GETLINK 9 6R#= LDX 2 ALINKTYPE 15 6RRW LDCT 1 HMANDAT+HLINKB [MANDATORY 14 6S?G QCOM STO 2 GRING [RINGS 13 6SR6 STO 0 NCHLI [LINK 9 6T=Q STO 1 GRTYPE 14 6TQB STO 4 GLOGLEN [REQUEST 17 6W=2 BRN NCHP [JOIN NORMAL G/C PATH 4 6WPL [ 9 6X9= [ NORMAL ENTRY POINTS 4 6XNW [ 13 6Y8G [ GETCORE WITHOUT RINGS, GETACT, GETCHAP 7 6YN6 LABFIX HNCORE 16 6_7Q NCORE STO 2 GLOGLEN [LENGTH REQUESTED 7 6_MB LDX 2 0 17 7272 LDN 0 0 [LINK STEP INCREMENT 20 72LL LDCT 1 2 [RING CONFIG.(IGNORED IF GETACT) 8 736= BRN NCO1 8 73KW [ GETCORE WITH RINGS 7 745G LABFIX HNCORE1 5 74K6 NCORE1 16 754Q STO 2 GLOGLEN [LENGTH REQUESTED 7 75JB LDX 2 0 17 7642 NGN 0 2 [LINK STEP INCREMENT 9 76HL NCO1 STO 0 GLINKSTEP 16 773= LDN 0 1(2) [RETURN ADDRESS 15 77GW LDX 2 0(2) [REQUEST TYPE 8 782G XTND STO 1 GRING 9 78G6 STO 2 GRTYPE 16 78_Q SQOSS [PROCESS THE LINK 18 79FB ... SQUMP2 [DUMP THE ACCUMULATORS 18 79_2 NB123 LDX 4 GLOGLEN [LOAD LENGTH REQUESTED 4 7=DL NCHP 8 7=ND ... STOZ GENDP 6 7=Q2 ...#UNS CA1D 9 7=RJ ... ADX 4 CIRNDB 6 7=T6 ...#UNS CA1D 4 7=WN ...#SKI 10 7=Y= ADN 4 A1+IROUND-1 9 7?CW ANDX 4 IROUNDNG 20 7?XG STO 4 GEN4 [STORE PHYSICAL AMOUNT REQUIRED 6 7?Y5 ...#UNS ADP21 4 7?_W ...( 20 7#2F ...# CODE FOR PERF. MEASUREMENT OF CORE ALLOCATION SYSTEM-MODULE 21 9 7#2K ... SMO ADPBUF 9 7#2P ... LDX 3 ADPTAB+3 17 7#2T ... BNG 3 XADP1 [J IF NOT SWITCHED ON 9 7#34 ... LDX 3 ADPPTR 17 7#3M ... BNG 3 XADP1 [J IF BUFFER NOT FREE 8 7#4= ... LDN 3 550 9 7#4T ... TXL 3 ADPPTR 18 7#5D ... BCS XADP1 [J IF NO ROOM IN BUFFER 8 7#63 ... LDN 3 450 9 7#6L ... TXU 3 ADPPTR 18 7#79 ... BCS XADP2 [IF BUFFER GETTING FULL 8 7#7S ... LDN 3 21 19 7#8C ... LONGON1 ADPSTYLE,3 [WAKE UP YOU LAZY PERF MOB 9 7#92 ...XADP2 LDX 3 ADPPTR 17 7#9K ... SRL 4 3 [DIVIDE LENGTH BY 8 17 7#=8 ... SRC 4 7 [LOAD INTO BITS 0-6 9 7#=R ... SMO ADPBUF 16 7#?B ... ORS 4 0(3) [STORE IN BUFFER 7 7#?_ ... LDN 3 1 15 7##J ... ADS 3 ADPPTR [UPDATE PTR. 15 7#*7 ... LDX 4 GEN4 [RELOAD X4 5 7#*Q ...XADP1 4 7#B* ...) 9 7#C6 #SKI K6COREALL>699-699 4 7#WQ ( 9 7*BB TRACE 4,GETCORE 10 7*W2 TRACE GRTYPE,GRTYPE 4 7B*L ) 7 7BT= #SKI K6COREALL 4 7C#W ( 21 7CSG TXL 4 AFREE [CHECK NOT ASKING FOR MORE THAN IS 15 7D#6 BCS NOTILL5 [AVAILABLE 10 7DRQ SILL5 GEOERR 1,COREREQU 5 7F?B NOTILL5 4 7FR2 ) 5 7G=L NBCK3 18 7GQ= LDCT 3 HLONGLOCK [ LOAD LONGLOCK-TYPE MASK 21 7H9W ANDX 3 GRTYPE [ CHECK IF REQUEST IS LONGLOCK TYPE 6 7H*2 ...#UNS ISFCON 16 7HD6 ... BZE 3 TESTSFC [J IF IT IS NOT 6 7HH= ...#UNS ISFCON 4 7HLB ...#SKI 17 7HPG BZE 3 NOR [ JUMP IF IT IS NOT 8 7J96 #SKI TRACE>499-499 10 7JNQ TRACE GRTYPE,LLTYPE 6 7JTY ...#UNS ISFCON 13 7K36 ... TRANSFIX CALL 0,LLQK [DO QUICK LLGC 21 7K8B LDX 1 GLLSEMA [ IS THERE A LONGLOCK GETCORE ALREADY 20 7KN2 BZE 1 RGC [ IN PROGRESS? JUMP IF NOT. 9 7L7L LDX 0 GRTYPE 18 7LM= SLC 0 1 [ IS REQUEST OPTIONAL? 18 7M6W BPZ 0 NOWAIT [ IF YES, EXIT VIA NOWAIT 8 7MLG #SKI TRACE>499-499 11 7N66 TRACE GLLSEMA,WAITING 21 7NKQ CALL 0 SETWAITING [ STEPS BACK LINK TO RE-ENTER GETCORE 17 7P5B COOR3X GLLWAIT [ AND WAIT FOR TURN 4 7PK2 RGC 20 7Q4L LDX 1 GFIXCHAP [ ALL LONGLOCK GETCORES SHOULD BE 6 7Q7Q ...#UNS ISFCON 19 7Q=W ... BNG 1 TESTSFC [ DELAYED UNTIL END OF EMS 6 7QB2 ...#UNS ISFCON 4 7QF6 ...#SKI 19 7QJ= BNG 1 NOR [ DELAYED UNTIL END OF EMS 9 7R3W STO 3 GLLSEMA 15 7RHG SMO FX2 [ SAVE THE 18 7S36 LDN 1 ACC3 [ LINK OF THE ACTIVITY 19 7SGQ LDN 2 GLLACCS [ REQUESTING THE GETCORE 18 7T2B MOVE 1 ALINK [ OVER THE COORDINATION 21 7TG2 LDN 1 GLINKSTEP [ SAVE THE OTHER REQUEST PARAMETERS, 21 7T_L LDN 2 GLLLINKS [ GLINKSTEP, GLOGLEN, GRING, GRTYPE 18 7WF= MOVE 1 5 [ OVER THE COORDINATION 9 7WP4 ... FIXTRA ISFCM30 21 7WYW ACROSS COREALLF,1 [ ENTER COREALLF FOR LONGLOCK REQUEST 6 7WYY ...#UNS ISFCON 4 7W_2 ...( 5 7W_4 ...TESTSFC 6 7W_5 ...#UNS ISFCON 4 7W_6 ...( 8 7W_7 ... FIXTRA ISFCM4 14 7W_8 ... BRN NOR [TXU 4 CIROUND IF ON 8 7W_9 ... BCS SLGC 8 7W_= ... LDX 1 BF64 15 7W_? ... BXE 1 CX64,SLGC [J IF POOL EMPTY 17 7W_# ... SBS 4 CFREE [KEEP FREEE TOTAL RIGHT 8 7W_* ... LDX 2 FX2 7 7W_B ...#SKI K6COREALL 9 7W_C ... CALL 0 XCHECKCHN 9 7W_D ... LDX 2 FPTR(1) 9 7W_F ... LDX 3 BPTR(1) 9 7W_G ... STO 2 FPTR(3) 9 7W_H ... STO 3 BPTR(2) 12 7W_J ... LDX 2 FX2 [NOW CHAIN IT 9 7W_K ... LDX 3 FPTR(2) 9 7W_L ... STO 1 FPTR(2) 9 7W_M ... STO 3 FPTR(1) 9 7W_N ... STO 2 BPTR(1) 9 7W_P ... STO 1 BPTR(3) 14 7W_Q ... STOZ AFLAG(1) [ORDINARY BLOCK 8 7W_R ... BRN Q64 4 7W_S ...SLGC 4 7W_T ...) 4 7W_W ...# 21 7W_X ...# CODE FOR ALTERNATIVE CORE ALLOCATION SYSTEM (STRUCTURED FREE CORE) 18 7W_Y ...# SOURCES OF CORE ARE LOOKED AT IN THE FOLLOWING 8 7W__ ...# ORDER:- 10 7X22 ...# (1) SIZE RINGS 18 7X23 ...# (2) INVALID FREE PROGRAM BLOCKS,IF BIG ENOUGH 13 7X24 ...# (3) CHAPTERS IF BIG ENOUGH 17 7X25 ...# (4) AMALGAMATION PATH (OF STANDARD CAS) 4 7X26 ...# 7 7X27 ...#UNS ICASSTATS 4 7X28 ...( 7 7X29 ... '167 0 0 8 7X2= ... LDX 4 K7 6 7X2? ...#UNS ICTON 9 7X2# ... CALL 0 SGETGMILL 20 7X2F ... STO 4 CASK7 [STORE MILL TIME AT ENTRY TO ACAS 8 7X2G ... LDX 4 GEN4 4 7X2J ...) 4 7X2L ...# 9 7X2M ... TRANSFIX CALL 7,HZRNG 7 7X2N ... FIXTRA ARJP 10 7X2P ... TRANSFIX CALL 7,QAMALG 20 7X2Q ...# RETURN MADE ONLY IF UNSUCCESSFUL 4 7X2S ...# 16 7X2W ...# (2) TRY IFPBS 4 7X2Y ...# 14 7X34 ... BSON EMSBIT,SUSECHAP [J IF EMS 21 7X36 ...# FIRST SEE IF THERE IS FPB RIGHT SIZE 17 7X38 ... LDN 1 BOBJUNUSE [BASE OF FPB CHAIN 5 7X3# ...SUNV1 18 7X3B ... CALL 7 NEXTFPB [GET NEXT FPB (BACKWARDS) 17 7X3D ... BRN SUSECHAP [J IF END OF CHAIN 10 7X3G ... LDX 0 JOBNOWAS(1) 16 7X3J ... BNZ 0 SUNV1 [J IF VALID FPB 9 7X3L ... LDX 0 ASIZE(1) 14 7X3N ... SBX 0 GEN4 [ S - R 17 7X3Q ... BNG 0 SUNV1 [J IF NOT BIG ENOUGH 17 7X5# ...# GOT IFPB BIG ENOUGH 5 7X5B ...SGOTIFPB 8 7X5C ...#SKI TRACE>499-499 9 7X5D ... TRACE 1,IFPBFND 7 7X5G ...#UNS ICASSTATS 4 7X5J ...( 7 7X5L ... LDN 0 1 18 7X5N ... ADS 0 CASIFPB [ADD TO CAS IFPB COUNT 4 7X5Q ...) 9 7X5S ... LDX 0 ALOGL(1) 17 7X5W ... SBS 0 CINVFPB [REDUCE FPB COUNTS 4 7X5Y ...SSUB 9 7X62 ... SBS 0 COBJUNUSE 15 7X64 ... CALL 0 NDECH [DECHAIN FPB 8 7X65 ... ADN 1 APBRG 8 7X66 ... CALL 0 NDECH 17 7X67 ... SBN 1 APBRG [DECHAIN FROM FPBRG 9 7X68 ... BRN SPLITTEST 4 7X69 ...# 21 7X6= ...# (3) TRY CHAPTERS, USING ONLY THOSE 20 7X6# ...# OVER CHAPTERQUOTA UNLESS CHAPTER 17 7X6B ...# REQUEST OR COREJAM 4 7X6D ...# 21 7X6G ...# FIRST SEE IF THERE IS A CHAPTER BIG 19 7X6J ...# ENOUGH (BUT OMIT IF COREJAM) 4 7X6L ...# 5 7X6N ...SUSECHAP 8 7X6Q ... LDX 0 CJSUM 9 7X6W ... SBN 0 XJCHAPLOW 12 7X6_ ... BPZ 0 SCHR [J IF COREJAM 5 7X74 ...SUCH1 20 7X76 ... CALL 7 SCHAPCHK [DO CHECKS, RETURNING AS FOLLOWS 19 7X78 ... BRN SFINDCH1 [J SINCE ACHAP > CHAPTERQUOTA 19 7X7= ... BRN SRAMALG [J SINCE CHAPTER REQUEST 20 7X7# ... BRN SRAMALG [J TO AMALGAMATION PATH SINCE WE 19 7X7B ... [CAN'T JUSTIFY USING CHAPTERS 4 7X7D ...SCHR 18 7X7G ... LDCT 5 #677 [SET X5 ARTIFICIALLY HIGH 9 7X7J ... BRN SFINDCH2 5 7X7L ...SFINDCH1 21 7X7N ... LDX 5 ACHAP [X5 = ACHAP INITIALLY. DECREMENTED BY 20 7X7Q ...SFINDCH2 [SIZES OF UNAVAILABLE CHAPTERS 18 7X7S ... LDN 1 BCHAP [BASE OF CHAPTER CHAIN 5 7X7W ...SFINDCH 9 7X7Y ... TXL 5 CHAPQUOTA 19 7X7_ ... BCS SRAMALG [J SINCE CHAPTERQUOTA REACHED 8 7X83 ... CALL 7 SFCH1 17 7X84 ... [FIND USABLE CHAPTER 17 7X86 ... BRN SRAMALG [J SINCE END OF CHAIN 9 7X88 ... LDX 0 ASIZE(1) 8 7X8= ... TXL 0 GEN4 18 7X8# ... BCC SGOTCHP [J SINCE BLOCK BIG ENOUGH 17 7X8B ... SBX 5 0 [REDUCE X5 BY SIZE 9 7X8D ... BRN SFINDCH 4 7X8G ...# 18 7X8J ...# NOW TRY FREEING CHAPTERS 4 7X8L ...# 6 7X8P ...SCHAPFREE 20 7X8S ... CALL 7 SCHAPCHK [DO CHECKS, RETURNING AS FOLLOWS 19 7X8W ... BRN SCHFREE [J SINCE ACHAP > CHAPTERQUOTA 18 7X8Y ... BRN SCHFREE [J SINCE CHAPTER REQUEST 8 7X92 ... LDX 0 CJSUM 9 7X94 ... SBN 0 XJCHAPLOW 17 7X96 ... BNG 0 SRAMALG [J IF NOT COREJAM 7 7X98 ... FIXTRA CHAPLOW3 18 7X99 ...# CHECK WITH RTM CHAPLOW BEFORE ALTERING NEXT 3 INSTRS. 9 7X9= ... BRN SCHFREE 9 7X9# ... BRN SRAMALG 5 7X9B ...SCHFREE 18 7X9D ... LDN 1 BCHAP [BASE OF CHAPTER CHAIN 18 7X9G ... CALL 7 SFINDCHAP [FIND AVAILABLE CHAPTER 18 7X9K ... BRN SRAMALG [J SINCE END OF CHAIN 17 7X9N ... CALL 7 SCHAPTIDY [ADJUST COUNTS ETC. 18 7X9Q ... CALL 0 NFREE [FREE THE CHAPTER & AMAL 7 7X9S ...#UNS ICASSTATS 4 7X9W ...( 7 7X9Y ... LDN 0 1 20 7X=2 ... ADS 0 CASCHAPS [ADD TO COUNT OF CHAPTERS FREED 4 7X=4 ...) 10 7X=8 ... TRANSFIX CALL 7,QAMALG1 21 7X=# ... CALL 0 SAMALG [J TO TRY AMALGAMATIONSINCE WE KNOW N 17 7X=D ... BRN SCHAPFREE [J SINCE UNSUCCESSFUL 5 7X=G ...SGOTCHP 8 7X=H ...#SKI TRACE>499-499 9 7X=J ... TRACE 1,SGOTCHP 17 7X=L ... CALL 7 SCHAPTIDY [ADJUST COUNTS ETC. 16 7X=N ... CALL 0 NDECH [DECHAIN CHAPTER 7 7X=Q ...#UNS ICASSTATS 4 7X=S ...( 7 7X=W ... LDN 0 1 20 7X=Y ... ADS 0 CASCHAPS [ADD TO COUNT OF CHAPTERS FREED 4 7X?2 ...) 9 7X?4 ... BRN SPLITTEST 4 7X?6 ...# 20 7X?8 ...# (4) TRY NORMAL AMALGAMATION PATH 5 7X?9 ...SRAMALG 5 7X?# ...SAMALG 11 7X?* ...# ENTER AMALGAMATION PATH 8 7X?C ... LDX 4 GEN4 7 7X?D ...#UNS ICASSTATS 4 7X?F ...( 7 7X?G ... LDN 0 1 21 7X?H ... ADS 0 CASAMAL [ADD TO NO.TIMES AMALGAMATION ENTERED 4 7X?J ...) 8 7X?L ... BRN NOR 4 7X?N ...# 21 7X*Y ...# NOW TEST THE CHOSEN BLOCK TO SEE IF 20 7XB2 ...# IT IS WORTH SPLITTING. IF SO, THE 7 7XCH ... LABFIX HNTST 5 7XCJ ...SDECH 17 7XCL ... CALL 0 NDECH [REMOVE FROM FREE CHAIN 9 7XCN ... LDX 6 ASIZE(1) 9 7XCQ ... BRN SALL11 18 7XCS ...SPLITTEST [CHOSEN BLK NOT A FREE BLK 9 7XCW ... LDX 6 ASIZE(1) 8 7XCY ... BRN SALL2 4 7XD2 ...) 9 7XD= ... FIXTRA ISFCM41 4 7XDG NOR 20 7XY6 BXGE 4 CFREE,NONE [ JUMP IF NOT ENOUGH FREE CORE 6 7XY* ...#UNS ISFCON 4 7XYJ ...( 15 7XYR ...[ IN SFC WE MUST NEED TO AMALGAMATE BY MOVING 8 7X_2 ...[GET X2->1ST/FREE 9 7X_9 ... LDX 2 FCORES 8 7X_D ... BRN PHIRST 5 7X_M ...NOTFREE 15 7X_W ... NGX 4 GEN4 [FOR COREMOVE CHECK 15 7Y25 ... LDX 5 GEN4 [DITTO:-RUNNING TOTAL 9 7Y2# ... ADX 2 ASIZE(2) 15 7Y2H ... BXE 2 GFIXCHAP,NONE [J IF END REACHED 5 7Y2Q ...PHIRST 9 7Y2_ ... LDX 0 AFLAG(2) 14 7Y38 ... BCT 0 NOTFREE [J IF NOT FREE 20 7Y3C ...NOK LDX 1 2 [LOAD SIZE FIRST FREE BLOCK READY 16 7Y3L ... LDN 7 0 [ FOR NEW FREE COUNT 9 7Y3T ... BRN PHIRSTA 19 7Y44 ...SFREE ADX 1 ASIZE(1) [ GET ADDRESS OF NEXT BLOCK 17 7Y4? ... BXGE 1 GFIXCHAP,NONE [J IF END OF VAR CORE 5 7Y4G ...PHIRSTA 16 7Y4P ... LDX 6 ASIZE(1) [ LOAD ITS SIZE 9 7Y4Y ... FIXTRA CHAPMOVE1 21 7Y57 ... LDN 0 #217 [ PRESERVE BITS 16,20,21,22,23 TO SEE 21 7Y5B ... ANDX 0 AFLAG(1) [IF CHAPTER, LOCKED, LOCKED, FROZEN 16 7Y5K ... [OR FREE RESP. 18 7Y5S ... BZE 0 SALR [ JUMP IF NONE OF THOSE 21 7Y63 ... ANDN 0 #16 [ TEST IF LOCKED,FROZEN OR LONGLOCK 21 7Y6= ... BZE 0 WHAT [ & JUMP IF NOT (EG NOT LOKD CHAPBLOK 9 7Y6F ...#SKI K6COREALL>299-299 11 7Y6N ... TRACE ATYPE(1),BLOCKING 8 7Y6X ... ANDN 0 #12 18 7Y76 ... BNZ 0 SLOKD [J IF LOCKED OR FROZEN 8 7Y7* ... TXL 2 CTOP 19 7Y7J ... BCC SALR [J IF OUT OF LONGLOCK AREA 7 7Y7R ...SLOKD LDX 2 1 15 7Y82 ... BRN NOTFREE [RESET TO START AGAIN 19 7Y89 ...SALR ADX 5 6 [KEEP RUNNING TOTAL OF AMOUNT TO MOVE 20 7Y8D ... SBX 6 ALOGLEN(1) [CALC ANY EXCESS IN A USED BLOCK 8 7Y8M ... SBN 6 A1 9 7Y8W ... ANDX 6 IROUNDNG 16 7Y95 ... SBX 5 6 [KEEP ACCURATE TAKE EXCESS OFF 8 7Y9# ... LDX 0 CJSUM 9 7Y9H ... SBN 0 XJCHAPLOW 17 7Y9Q ... BPZ 0 WHAT [J IF MOVE ANYWAY COS OF COREJAM 12 7Y9_ ... LDX 0 5 [KEEP A COPY 17 7Y=8 ... SBX 5 4 [SUB EXCESS COVERED 6 7Y=C ... NULL 7 7Y=L ... FIXTRA CORESET 7 7Y=T ... SRL 5 1 16 7Y?4 ... BXGE 5 GEN4,SLOKD [J IF TOO MUCH TO MOVE 14 7Y?? ... LDX 5 0 [RESTORE RUNNING TOTAL 18 7Y?G ...WHAT ADX 7 6 [ADD INTO NEW FREE COUNT 7 7Y?P ... ADX 4 6 21 7Y?Y ... TXL 7 GEN4 [TEST AND J IF ENOUGH NOT YET FOUND 8 7Y#7 ... BCS SFREE 9 7Y#8 ... LABFIX ISFCONE 16 7Y#9 ...# PRECAUTION - SEE GETCORE IN QENTRY2 IN COREALLG 7 7Y#= ... LDN 0 1 9 7Y#? ... ADS 0 BCOUNT 9 7Y#B ... FIXTRA ISFCUNIT 8 7Y#K ... LABFIX UNIT 14 7Y#S ...UNIT LDX 1 BPTR(2) [LDN 1 0 IF OFF 4 7Y*3 ...) 6 7Y*= ...#UNS ISFCON 4 7Y*F ...#SKI 4 7Y*N ...( 21 7YCQ NGX 4 4 [ SET NEGATIVE AMOUNT REQUIRED IN X4 8 7YXB LDX 2 BFREE 8 7_C2 LDN 3 BFREE 4 7_WL [ 21 82B= [A SEARCH IS MADE FORWARDS ALONG THE FREE CHAIN UNTIL ENOUGH FREE BLKS 21 82TW [HAVE BEEN COVERED TO SATISFY THE REQUEST X2 IS KEPT AS A POINTER TO 21 83*G [THE FIRST FREE BLOCK INCLUDED AND X3 TO THE LAST FREE BLOCK INCLUDED 4 83T6 [ 19 84#Q NBCK1 TXU 3 BFREE+1 [TEST AND J NOT ENOUGH FOUND 8 84SB BCC NONE 19 85#2 LDX 3 FPTR(3) [LOAD ADDRESS NEXT FREE BLOCK 16 85RL ADX 4 ASIZE(3) [ ADD ITS SIZE 16 86?= BNG 4 NBCK1 [J NOT ENOUGH YET 20 86QW TXU 2 3 [TEST AND J IF ALL IN ONE BLOCK 8 87=G BCC UNIT 18 87Q6 BZE 4 NMOVE [J IF NO EXCESS COVERED 4 889Q [ 19 88PB [BLOCKS ARE NOW REMOVED FROM THE FRONT OF THE CHAIN IF POSSIBLE 4 8992 [ 21 89NL NTAKE SBX 4 ASIZE(2) [ SUBTRACT SIZE OF 1ST BLOCK INCLUDED 20 8=8= LDX 2 FPTR(2) [GET ADDRESS OF NEW FIRST BLOCK 19 8=MW BPZ 4 NTAKE [J IF STILL EXCESS COVERED 19 8?7G LDX 2 BPTR(2) [REINCLUDE LAST BLOCK REMOVED 9 8?M6 ADX 4 ASIZE(2) 19 8#6Q TXU 2 3 [J IF NOW ALL IN ONE BLOCK 8 8#LB BCC UNIT 4 8*62 [ 21 8*KL [A TEST IS MADE TO ENSURE THAT THE AMOUNT REQUIRED IS NOT LESS THAN THE 20 8B5= [AMOUNT WHICH MUST BE MOVED TO GET A CONSECUTIVE BLOCK OF FREE CORE 4 8BJW [ 20 8C4G NMOVE LDX 5 CJSUM [TEST AND J IF CORE JAM EXISTS SO 21 8CJ6 SBN 5 XJCHAPLOW [THAT BLOCKS ARE MOOVED REGARDLESS 21 8D3Q BPZ 5 NOK [OF THIER SIZE WHEN IN A JAM STATE 19 8DHB LDX 5 3 [LOAD ADDRESS OF END BLOCK 16 8F32 ADX 5 ASIZE(3) [ ADD ITS SIZE 19 8FGL SBX 5 2 [SUB ADDRESS OF FIRST BLOCK 17 8G2= SBX 5 4 [SUB EXCESS COVERED 7 8GFW FIXTRA CORESET 7 8G_G SRL 5 1 20 8HF6 TXL 5 GEN4 [TEST AND J IF AMOUNT TO BE MOVED 16 8HYQ BCS NOK [IS SMALL ENOUGH 20 8JDB SBX 4 ASIZE(2) [ OTHERWISE SET NEW START BLOCK 9 8JY2 LDX 2 FPTR(2) 17 8KCL BRN NBCK1 [J TO SEARCH AGAIN 4 8KX= [ 21 8LBW [A CHECK IS MADE FOR LOCKED BLOCKS, IF ANY ARE FOUND BLOCKING AMALGAM- 21 8LWG [ATION THEY ARE MARKED PLEASE MOVE AND THE SEARCH IS RESTARTED BEYOND 21 8MB6 [THE LOCKED BLOCK A NEW COUNT OF FREE CORE AVAILABLE IS SET UP WHICH 17 8MTQ [INCLUDES CHAPTER SPACE AND EXTRA WORDS IN USED BLOCKS 4 8N*B [ 20 8NT2 NOK LDX 1 2 [LOAD SIZE FIRST FREE BLOCK READY 18 8P#L LDX 7 ASIZE(1) [ FOR NEW FREE COUNT 19 8PS= SFREE ADX 1 ASIZE(1) [ GET ADDRESS OF NEXT BLOCK 16 8Q?W LDX 6 ASIZE(1) [ LOAD ITS SIZE 9 8QHN ... FIXTRA CHAPMOVE1 21 8QTD ... LDN 0 #217 [ PRESERVE BITS 16,20,21,22,23 TO SEE 21 8R78 ... ANDX 0 AFLAG(1) [IF CHAPTER, LOCKED, LOCKED, FROZEN 16 8RDY ... [OR FREE RESP. 18 8RQQ BZE 0 SALR [ JUMP IF NONE OF THOSE 21 8S=B ... ANDN 0 #16 [ TEST IF LOCKED,FROZEN OR LONGLOCK 21 8SQ2 BZE 0 WHAT [ & JUMP IF NOT (EG NOT LOKD CHAPBLOK 9 8T9L #SKI K6COREALL>299-299 11 8TP= TRACE ATYPE(1),BLOCKING 8 8TSB ... ANDN 0 #12 17 8TXG ... BNZ 0 SLOKD [J IF NOT LONGLOCK 8 8W2L ... TXL 2 CTOP 19 8W5Q ... BCC SALR [J IF OUT OF LONGLOCK AREA 21 8W8W SLOKD SBX 4 ASIZE(2) [STEP ALONG FREE BLOCKS TO FIRST FREE 19 8WNG LDX 2 FPTR(2) [BLOCK BEYOND LOCKED BLOCK 7 8X86 TXL 1 2 8 8XMQ BCC SLOKD 17 8Y7B BRN NBCK1 [J TO RESTART SEARCH 4 8YM2 SALR 20 8_6L SBX 6 ALOGLEN(1) [CALC ANY EXCESS IN A USED BLOCK 8 8_L= SBN 6 A1 9 925W ANDX 6 IROUNDNG 18 92KG WHAT ADX 7 6 [ADD INTO NEW FREE COUNT 21 9356 TXL 7 GEN4 [TEST AND J IF ENOUGH NOT YET FOUND 8 93JQ BCS SFREE 4 93SJ ...) 4 944B [ 20 94J2 [IF NO LOCKED BLOCKS ARE FOUND THE USED PARTS OF MOVABLE BLOCKS ARE 20 953L [MOVED DOWN THE STORE, CHAPTER BLOCKS ARE FREED AND FREE BLOCKS ARE 16 95H= [AMALGAMATED UNTIL A LARGE ENOUGH BLOCK IS OBTAINED 4 962W [ 6 9662 ...#UNS ISFCON 4 9696 ...#SKI 4 96#= ...( 7 96CB ... LABFIX UNIT 4 96GG UNIT 9 9726 LDX 1 BPTR(2) 4 979Y ...) 21 97FQ UNE STO 1 GENDP [REMEMBER ADDR FOR RECHAINING FRAGMEN 19 97_B STO 2 GFORP [REMEMBER ADDR OF FIRST BLOCK 7 98F2 LDX 1 2 21 98YL CALL 0 NDECH [ UNCHAIN THE BLOCK TO ALLOW MOVING 6 99?3 ...#UNS ISFCON 20 99KD ... CALL 0 NFROUT [REMOVE FREE BLOCK FROM SIZE RING 16 99XW SNEXT LDX 6 ASIZE(1) [ LOAD ITS SIZE 18 9=CG SNEX1 TXL 6 GEN4 [ TEST AND JUMP IF ENOUGH 8 9=X6 BCC SALL1 19 9?BQ ADX 1 ASIZE(1) [GET ADDRESS OF NEXT BLOCK 16 9?WB STAR LDX 6 ASIZE(1) [LOAD ITS SIZE 9 9#B2 LDX 0 AFLAG(1) 9 9#KS ... FIXTRA CHAPMOVE2 18 9#TL ANDN 0 #201 [ TEST IF FREE OR CHAPTER 18 9**= BZE 0 NOTFR [ AND JUMP IF NEITHER 19 9*SW SRC 0 1 [ IF NOT FREE, THEN A CHAPTER 17 9B#G BPZ 0 SCHP [ JUMP IF A CHAPTER 6 9BLX ...#UNS ISFCON 20 9B_# ... CALL 0 NFROUT [REMOVE FREE BLOCK FROM SIZE RING 8 9C?Q BRN SOFR 21 9CRB SCHP ADS 6 CFREE [ADD SIZE OF CHAPTER TO CURRENT FREE 20 9D?2 SBS 6 ACHAP [MAINTAIN SUM OF CHAPTER SIZES 16 9DQL LDX 3 BACK1(1) [SEGMENT NUMBER 15 9F== LDX 0 BACK2(1) [BS ADDRESS 15 9FPW STO 0 KTAB(3) [UPDATE TABLE 7 9FXP ... LDN 0 1 18 9G5J ... SEGENTRY ADPCA1 [ MEND POINT FOR DATAPASS 7 9G?C ...#UNS FCCHAPFREE 17 9GF= ... ADS 0 FCCHAPMID [ INCREMENT F-C COUNT 7 9GM5 ...#UNS FCCHAPFREE 4 9GSY ...#SKI 6 9H2R ... NULL 20 9H8Q SOFR CALL 0 NDECH [DECHAIN CHAPTER AND FREE BLOCKS 19 9HNB ADS 6 ASIZE(2) [ADD SIZE TO PRECEDING FREE 14 9J82 LDX 1 2 [RESET X1 17 9JML BRN SNEXT [J TO TEST NEXT BLOCK 21 9K7= NOTFR LDX 3 ALOGLEN(1) [LOAD LOGICAL LENGTH OF USED BLOCK 6 9K=B ...#UNS CA1D 9 9K*G ... ADX 3 CIRNDB 6 9KDL ...#UNS CA1D 4 9KHQ ...#SKI 10 9KLW ADN 3 A1+IROUND-1 9 9L6G ANDX 3 IROUNDNG 20 9LL6 SBX 6 3 [SUB FROM ACTUAL SIZE OF BLOCK 20 9M5Q ADS 6 CFREE [ADD EXCESS TO CURRENT FREE TOTAL 17 9MKB ADX 6 ASIZE(2) [NEW SIZE FREE BLOCK 16 9N52 STO 3 ASIZE(1) [RESET BLOCK SIZE 16 9NJL CALL 0 MOVE [MOVE USED BLOCK 19 9P4= LDX 1 BDESTN [NEW START ADDR FOR F/C BLOCK 9 9P9D ... FIXTRA CHAPMOVE3 6 9PBL ... NULL 16 9PHW ADX 1 GUSSIZE [IS CALCULATED 7 9Q3G LDX 2 1 19 9QH6 STO 6 ASIZE(1) [STORE NEW SIZE FREE BLOCK 19 9R2Q BRN SNEX1 [ JUMP TO LOOK AT NEXT BLOCK 4 9RGB [ 21 9S22 [ WHEN ENOUGH CORE IS OBTAINED IN ONE BLOCK, EXCESS CORE IS SPLIT OFF 7 9SFL [ IF NECESSARY 4 9S_= [ 21 9TDW LABFIX GOTENUF [ 'SUCCESS' ENTY FROM LONGLOCK G/C 7 9TL4 ...#UNS ICASSTATS 8 9TR= ... STOZ CASK7 4 9TYG SALL 9 9WD6 LDX 4 GLOGLEN 6 9WH= ...#UNS CA1D 9 9WLB ... ADX 4 CIRNDB 6 9WPG ...#UNS CA1D 4 9WSL ...#SKI 10 9WXQ ADN 4 A1+IROUND-1 9 9XCB ANDX 4 IROUNDNG 8 9XX2 STO 4 GEN4 8 9YBL STOZ GENDP 8 9YW= LDX 2 FX2 7 9_*W FINDCORE 1 9 9_TG LDX 6 ASIZE(1) 8 =2*6 BRN SALT 18 =2SQ SALL1 [ FROM ORDINARY GETCORE 6 =2YM ...#UNS ISFCON 4 =329 ...( 8 =33R ...#SKI TRACE>499-499 9 =35* ... TRACE 1,AMALOK 4 =36X ...) 5 =38F ...SALL11 17 =3#B SBS 6 CFREE [ ADJUST FREE TOTAL 5 =3J8 ...SALL2 8 =3S2 LDX 2 FX2 19 =4?L CALL 0 NCHAIN [ CHAIN AFTER ACTIVITY BLOCK 4 =4R= SALT 17 =5=W SBX 6 GEN4 [ FIND EXCESS COVERED 19 =5QG BZE 6 TIDY [ NO SPLITTING AS NO EXCESS 21 =6=6 TXL 6 SPLITLEN [TEST AND J IF WORTH BACK SPLITTING 8 =6PQ BCC NDOSP 8 =79B LDCT 0 HCHAP 21 =7P2 ANDX 0 GRTYPE [SPLIT ANYWAY IF CHAP - ELSE ERROR IN 17 =88L BZE 0 TIDY [ RUNNING SUM ACHAP 5 =8N= NDOSP 8 =97W LDX 0 GEN4 9 =9MG STO 0 ASIZE(1) 20 ==76 ADX 1 GEN4 [ GET ADDRESS OF PORTION TO SPLIT 16 ==LQ STO 6 ASIZE(1) [ PUT IN ITS SIZE 17 =?6B CALL 0 RELFAG [ FREE THE FAG-END 5 =?B8 ...TIDY1 19 =?L2 FINDCORE 1 [ GET BACK TO ORIGINAL BLOCK 4 =#5L TIDY 9 =#K= LDCT 0 HLONGLOCK 9 =*4W ANDX 0 GRTYPE 8 =*JG BZE 0 XNLL 7 =B46 LDN 0 4 9 =BHQ XNLL STO 0 AFLAG(1) 9 =BRJ ...Q64 [QUICK LSM LABEL 17 =C3B STOZ ATYPE(1) [ ZERIOSE TYPE WORD 21 =CH2 STOZ BACK1(1) [ ZERIOSE BACKING STORE ADDRESS WORDS 9 =D2L STOZ BACK2(1) 9 =DG= LDX 4 GLOGLEN 17 =D_W STO 4 ALOGLEN(1) [ SET LOGICAL LENGTH 8 =FFG LDX 3 GRING 17 =F_6 STO 3 ARINGNO(1) [ SET UP RING WORD 20 =GDQ [ THIS MAY BE AN OPTIONAL GETCORE CALLED BY A MANDATORY ONE. IF THE 21 =GYB [ LATTER HAD FAILED, CLONG1 WOULD BE SET, SO THE 'REQUEST FAILED?' 19 =JWW LDX 0 CLONG1(2) [TEST IF REQUEST EVER FAILED 13 =KBG BPZ 0 WX2 [NO 21 =KGC ... LDCT 0 HMANDAT [ TEST IS SKIPPED FOR ALL OPTIONAL 15 =KL# ... ANDX 0 GRTYPE [ GETCORES 17 =KQ9 ... BZE 0 WX2 [ JUMP IF OPTIONAL 17 =KW6 LDCT 0 #400 [CLEARFAILED MARKER 9 =L*Q ERS 0 CLONG1(2) 21 =LTB LDN 0 1 [REDUCE COUNT OF OUTSTANDING REQUESTS 8 =M*2 SBS 0 CFAIL 4 =MSL WX2 8 =N4D ... LDCT 5 #116 17 =N#= ... ANDX 5 GRTYPE [GET LINK,ACT,ALTLEN&CHAP BITS 15 =NJ4 ... BZE 5 XORDINARY [J IF NONE OF THESE 7 =NRW SLC 5 2 19 =P?G BNG 5 NACTY [J IF ACTIVITY BLOCK REQUEST 7 =PR6 SLC 5 4 7 =PY# ...#UNS ICASSTATS 9 =Q5G ... CALL 7 SCASMILL 17 =Q=Q BNG 5 SMOVE [J IF ALTLEN REQUEST 7 =QQB SLC 5 1 20 =R=2 BNG 5 (NCHLI) [J IF LINK BLOCK TYPE OF REQUEST 13 =R*X ... SRC 5 2 [CHAP BIT TO B0 8 =RFS ... BNG 5 XCHAP 6 =RKP ...XORDINARY 16 =RPL ANDX 3 BSP16 [NO RINGS - ZERO 6 =RWS ...#UNS ISFCON 4 =S42 ...#SKI 9 =S98 ... TRANSFIX BZE 3,FLIST 6 =SBB ...#UNS ISFCON 15 =SHJ ... TRANSFIX BZE 3,TENT [EXIT IF NO RINGS 18 =SNW LDX 0 ARINGNO(1) [ISOLATE LENGTH OF RING 8 =T8G SRL 0 15 15 =TN6 SBC STOZ ARINGNO+2(1) [MAKE NULL 17 =W7Q ADX 1 0 [UPDATE FOR NEXT RING 16 =WMB BCT 3 SBC [IF THERE IS ONE 5 =X72 SNRING 6 =X*N ...#UNS ISFCON 4 =XJB ...#SKI 9 =XR4 ... TRANSFIX BRN ,FLIST 6 =X_Q ...#UNS ISFCON 10 =Y8D ... TRANSFIX BRN ,TENT 5 =YC6 ...XCHAP 17 =YKW LDN 0 #200 [ SET 'CHAPTER' BIT 16 =_5G FINDCORE 1 [ IN GOT BLOCK'S 15 =_K6 ORS 0 AFLAG(1) [ FLAG WORD 9 ?24Q LDX 4 ASIZE(1) 20 ?2JB ADS 4 ACHAP [MAINTAIN SUM OF CHAPTER SIZES 21 ?342 TRANSFIX BRN,FZCO [ JUMP TO BSTS VIA CHAPTER CHANGER 17 ?3HL NACTY LDN 7 ACTRINGNUM [NO OF RING ELEMENTS 9 ?43= LDX 0 ACTYPE 16 ?4GW STO 0 ARINGNO(1) [SET UP RING WORD 10 ?52G NACT1 LDN 6 ARINGNO+1(1) 14 ?5G6 STO 6 ARINGNO+1(1) [EMPTY 10 ?5_Q STO 6 ARINGNO+2(1) 7 ?6FB BDX 1 / 8 ?6_2 BCT 7 NACT1 9 ?7DL LDN 6 FILERING 10 ?7Y= NGS 6 ARINGNO+1(1) 9 ?8CW LDX 1 FPTR(2) 10 ?8XG STOZ BACKCHAN(1) 18 ?9C6 LDN 0 ACC3(1) [ZEROISE REST OF BLOCK 9 ?9WQ STOZ ACC3(1) 9 ?=BB LDN 1 ACC4(1) 9 ?=W2 LDX 3 GLOGLEN 16 ??*L MOVE 0 A1-1-ACC3(3) [ZEROISE BLOCK 17 ??T= LDX 0 ACTCOUNT [SET UP ACT NUMBER 11 ?##W STO 0 ACTNUM-ACC4(1) 19 ?#SG ADN 0 1 [AND INCREMENT FOR NEXT ONE 9 ?*#6 STO 0 ACTCOUNT 7 ?**T ...#UNS ICASSTATS 9 ?*CJ ... CALL 7 SCASMILL 21 ?*F# ... FIXTRA FSHGETACT [FOR SHARED FILESTARE MEND - TO SET 21 ?*LG ... [ 'MACHINE ^B^' BIT IN B M/C GETACTS 8 ?*RQ LDX 2 FX2 6 ?*WW ...#UNS ISFCON 4 ?B22 ...#SKI 9 ?B56 ... TRANSFIX BRN ,FLIST 6 ?B8= ...#UNS ISFCON 17 ?B?B ... TRANSFIX BRN,TENT [ JUMP TO COORDINATE 4 ?BBL ...[ 21 ?BFW ...[ AS CORE NOT IMMEDIATELY AVAILABLE,WE USE PROGRAM CORE IF POSSIBLE 21 ?BK6 ...[ UNLESS CHAPTERQUOTA AOBJFREE IN WHICH 13 ?BNB ...[ CASE WE ATTEMPT TO FREE CHAPTERS 4 ?BRL ...[ 4 ?BWW ...NONE 14 ?C26 ... BSON EMSBIT,USECHAP [J IF EMS 5 ?C5B ...#SKI G4 4 ?C8L ...( 21 ?C?W ... LDX 0 CFPCFREZ [J IF FREE PAGE CHAIN FROZEN AS WE 20 ?CC6 ... BNZ 0 USECHAP [THEN CAN'T TAKE A PAGE FROM IT 4 ?CGB ...) 5 ?CKL ...USEPROG 5 ?CNW ...#SKI G3 4 ?CS6 ...( 4 ?CXB ...[ 21 ?D2L ...[ WE ATTEMPT TO FREE ALL/PART OF AN INVALID FREE PROGRAM BLOCK(FPB). 17 ?D5W ...[ IF NON-AVAILABLE,WE ATTEMPT TO USE A VALID FPB. 4 ?D96 ...[ 17 ?D#B ... LDN 1 BOBJUNUSE [BASE OF FPB CHAIN 5 ?DCL ...UNVALFPB 20 ?DGW ... CALL 7 NEXTFPB [GET NEXT FPB ON CHAIN(BACKWARDS) 17 ?DL6 ... BRN VALFPB [J IF END OF CHAIN 10 ?DPB ... LDX 0 JOBNOWAS(1) 16 ?DSL ... BNZ 0 UNVALFPB [J IF A VALID FPB 18 ?DXW ... BRN XGOTFPB [LETS USE THIS FPB THEN 4 ?F36 ...[ 21 ?F6B ...[ SUBROUTINE TO STEP TO NEXT UNFROZEN FPB (BACKWARDS) ON THE CHAIN 18 ?F9L ...[ LINK - X7, EXIT 0 IF END OF CHAIN, EXIT 1 IF FPB FOUND 4 ?F#W ...[ 5 ?FD6 ...NEXTFPB 16 ?FHB ... LDX 1 BPTR(1) [GET NEXT BLOCK 18 ?FLL ... BXE 1 CXOBJUN,(7) [EXIT 0 IF END OF CHAIN 17 ?FPW ... JBS NEXTFPB,1,AFFROZ [J IF BLOCK FROZEN 7 ?FT6 ... EXIT 7 1 4 ?FYB ...[ 19 ?FYK ...[ SUBROUTINE TO TIDY UP WHEN VALID FPB BEING FREED OR USED 21 ?FYS ...[ LINK - X7, X1 POINTS TO FPB, X2 USED, X0 CONTAINS ALOGLEN ON EXIT 4 ?F_3 ...[ 6 ?F_= ...SCLEARFPB 19 ?F_F ... LDX 0 JOBNOWAS(1) [NOW SET UP AS INVALID FPB 16 ?F_N ... STOZ JOBNOWAS(1) [CLEAR JOB NO. 8 ?F_X ... LDN 2 BJOBQ 9 ?G26 ...XJOB LDX 2 FPTR(2) 11 ?G2* ... BXU 0 JOBNUM(2),XJOB 21 ?G2J ... BC 2,JBWASIN [CLEAR WAS FPB MARKER IN JOB BLOCK 9 ?G2R ... LDX 0 ALOGL(1) 7 ?G32 ... EXIT 7 0 4 ?G39 ...[ 19 ?G3L ...VALFPB [HAVE TO GET VALID FPB THEN 9 ?G6W ... LDN 1 BOBJUNUSE 18 ?G=6 ... CALL 7 NEXTFPB [GET NEXT FPB ON CHAIN 18 ?G*B ... BRN USECHAP [J TO USE CHAP. IF NO FPB 17 ?GQB ... CALL 7 SCLEARFPB [CHANGE VFPB TO IFPB 20 ?H7B ... ADS 0 CINVFPB [ ADD INTO TOTAL OF INVALID FPB'S 5 ?H=L ...XGOTFPB 4 ?H=R ...# 16 ?H=Y ...# ACAS (DC8219) - USE FPB DIRECTLY IF BIG ENOUGH 4 ?H?5 ...# 9 ?H?= ... LDX 0 ASIZE(1) 8 ?H?C ... SBX 0 GEN4 18 ?H?J ... BNG 0 XGOTFPB1 [J IF FPB NOT BIG ENOUGH 8 ?H?M ...#SKI TRACE>499-499 9 ?H?Q ... TRACE 1,ACASFPB 9 ?H?W ... LDX 0 ALOGL(1) 9 ?H#3 ... SBS 0 CINVFPB 9 ?H#8 ... SBS 0 COBJUNUSE 15 ?H#* ... CALL 0 NDECH [DECHAIN THE FPB 8 ?H#G ... ADN 1 APBRG 16 ?H#M ... CALL 0 NDECH [DERING FROM FPBG 8 ?H#S ... SBN 1 APBRG 9 ?H#_ ... LDX 6 ASIZE(1) 8 ?H*6 ... BRN SALL2 4 ?H*? ...# 5 ?H*D ...XGOTFPB1 21 ?H*W ...[ IF AFTER REDUCING FPB BY CFREETARG FPB IS OF SIZE < 64,FREE ALL FP 4 ?HF6 ...[ 10 ?HJB ... LDN 0 CFREETARG+63 17 ?HML ... BXGE 0 ASIZE(1),XALLFPB [J IF ALL FPB REQ'D 9 ?HQW ... LDN 0 CFREETARG 21 ?HW6 ... SBS 0 ASIZE(1) [RESET SIZE OF REMAINING INVALID FPB 9 ?H_B ... SBS 0 ALOGL(1) 19 ?J4L ... ADX 1 ASIZE(1) [GET ADDR. OF PART TO FREE 18 ?J7W ... STO 1 FPTR(1) [ AND SET UP ITS REDTAPE 9 ?J?6 ... STO 1 BPTR(1) 9 ?JBB ... STO 0 ASIZE(1) 8 ?JFL ... SBN 0 A1 9 ?JJW ... STO 0 ALOGL(1) 9 ?JN6 ... STOZ AFLAG(1) 9 ?JRB ... STOZ ATYPE(1) 10 ?JWL ... STOZ ARINGNO(1) 9 ?J_W ... LDX 0 ASIZE(1) 8 ?K56 ... BRN XFPB 5 ?K8B ...XALLFPB 17 ?K?L ... LDX 0 ALOGL(1) [REDUCE FPB COUNTS 4 ?KBW ...XFPB 9 ?KG6 ... SBS 0 CINVFPB 9 ?KKB ... SBS 0 COBJUNUSE 7 ?KNL ...#UNS ISTDPSTATS 12 ?KRW ... TRACEDP ACORFPB,COBJUNUSE,0 16 ?KX6 ... BRN NONFREE [ & J TO FREE IT 4 ?L2B ...) 5 ?L5L ...#SKI G4 4 ?L8W ...( 8 ?L#6 ...#SKI CFREETARG-1 18 ?LCB ... LDN 6 CFREETARG [NO. OF PAGES TO BE FREED 5 ?LGL ...NEXTPAGE 10 ?LKW ... LDX 0 APTURNPAGS 10 ?LP6 ... SBX 0 CPAGETURNS 18 ?LSB ... BPZ 0 TESTCOBJ [IF CPAGETURNS>APTURNPAGS 18 ?LXL ... LDN 0 0 [ALL FREE PAGES AVAILABLE 5 ?M2W ...TESTCOBJ 20 ?M66 ... TXL 0 COBJFREE [J IF ONLY ENOUGH FREE PAGES FOR 15 ?M9B ... BCC NOPAGS [ PAGETURNING 21 ?M#L ... TRANSFIX CALL 0,ONEPAGE [OBTAIN LAST PAGE ON FREE PAGE CHAIN 19 ?MCW ... LDN 0 1 [REDUCE NO. OF PAGES USED FOR 16 ?MH6 ... SBS 0 AOBJFREE [ OBJECT PROGRAMS 4 ?MLB ...[ 20 ?MPL ...[ WE NOW SEARCH OBJECT PROGRAM CHAIN TO FIND THIS FREE PAGE AND 8 ?MSW ...[ THEN REMOVE IT 11 ?MY6 ...[ X2 = A - SCANNING POINTER 14 ?N3B ...[ X1 = B - FOLLOWS X,ONE BLOCK BEHIND 12 ?N6L ...[ X3 = ADDR. OF PAGE TO BE FREED 7 ?N9W ... LDX 3 1 20 ?N*6 ... LDX 2 BOBJPROG [SET A=FIRST OBJECT PROGRAM BLOCK 9 ?NDB ...#SKI K6COREALL>499-499 10 ?NHL ... TRACE 3,PAGEFOUN 5 ?NLW ...NEXTOBJ 14 ?NQ6 ... LDX 1 2 [SET B=A 19 ?NTB ... LDX 2 FPTR(2) [SET A=NEXT BLOCK ON CHAIN 9 ?NYL ... TXU 2 CXOBPR 19 ?P3W ... BCC POBJ1 [J IF END OF CHAIN REACHED 20 ?P76 ... TXL 2 3 [J IF WE STILL HAVE NOT LOCATED 19 ?P=B ... BCS NEXTOBJ [BLOCK WITH THIS FREE PAGE IN 11 ?P*L ...[ FREE PAGE IS IN BLOCK B 9 ?PDW ...POBJ1 LDN 0 1024+A1D 9 ?PJ6 ... TXU 0 ASIZE(1) 19 ?PMB ... BCS POBJ2 [J IF NOT ONLY PAGE IN BLOCK 16 ?PQL ... CALL 0 NDECH [DECHAIN BLOCK B 9 ?PTW ... LDN 0 1024+A1D 8 ?P_6 ... BRN POBJ3 19 ?Q4B ...POBJ2 [MORE THAN ONE PAGE IN BLOCK 7 ?Q7L ... LDX 0 1 8 ?Q=W ... ADN 0 A1D 21 ?QB6 ... TXU 0 3 [J IF FREE PAGE NOT THE FIRST PAGE 15 ?QFB ... BCS NOTFIR [IN THE BLOCK 18 ?QJL ... LDX 2 1 [STORE REDTAPE OF B INTO 17 ?QMW ... ADN 2 1024 [REDTAPE OF B+1024 7 ?QR6 ... MOVE 1 9 21 ?QWB ... LDN 0 1024 [REDUCE LENGTHS OF NEW BLOCK B+1024 14 ?Q_L ... SBS 0 ASIZE(2) [BY 1024 9 ?R4W ... SBS 0 ALOGL(2) 9 ?R86 ... SMO BPTR(2) 20 ?R?B ... STO 2 FPTR [SET FPTR OF PREVIOUS AOBJPROG 9 ?RBL ... SMO FPTR(2) 19 ?RFW ... STO 2 BPTR [SET BPTR OF NEXT AOBJPROG 5 ?RK6 ...POBJ3 19 ?RNB ... STO 1 FPTR(1) [SET UP REDTAPE OF FREED CORE 9 ?RRL ... STO 1 BPTR(1) 9 ?RWW ... STO 0 ASIZE(1) 9 ?S26 ... STOZ AFLAG(1) 9 ?S5B ... STOZ ATYPE(1) 10 ?S8L ... STOZ ARINGNO(1) 8 ?S?W ...#SKI CFREETARG-1 4 ?SC6 ...( 14 ?SGB ... CALL 0 NFREE [FREE PAGE 18 ?SKL ... BCT 6 NEXTPAGE [J IF MORE PAGES REQUIRED 9 ?SNW ... BRN NRETRY 4 ?SS6 ...) 8 ?SXB ...#SKI CFREETARG-1 4 ?T2L ...#SKI 18 ?T5W ... BRN NONFREE [J TO FREECORE THE CORE 5 ?T96 ...NOTFIR 18 ?T#B ... LDX 0 1 [IS PAGE TO FREE THE LAST 17 ?TCL ... ADX 0 ASIZE(1) [PAGE IN THE BLOCK 8 ?TGW ... SBN 0 1024 7 ?TL6 ... TXU 0 3 14 ?TPB ... BCS NOTFIR1 [J IF NOT 18 ?TSL ... LDN 0 1024 [REDUCE SIZE OF B BY 1024 9 ?TXW ... SBS 0 ASIZE(1) 9 ?W36 ... SBS 0 ALOGL(1) 19 ?W6B ... LDX 1 3 [SET X1=ADDR. OF FREE PAGE 19 ?W9L ... BRN POBJ3 [AND JUMP TO FREECORE PAGE 5 ?W#W ...NOTFIR1 21 ?WD6 ... ADN 0 1024 [RESET X0 TO END ADDR. OF B-CALL D 21 ?WHB ... LDX 7 3 [SET LENGTH OF B=ADDR.OF FREE PAGE 19 ?WLL ... SBX 7 1 [ -ADDR.OF B 9 ?WPW ... STO 7 ASIZE(1) 8 ?WT6 ... SBN 7 A1 9 ?WYB ... STO 7 ALOGL(1) 18 ?X3L ...[ CALL C THE NEW OBJECT PROGRAM BLOCK SPLIT OFF FROM B 20 ?X6W ... LDX 2 3 [SET C=ADDR.OF FREE PAGE+1024-A1D 21 ?X=6 ... ADN 2 1024-A1D [AND SET UP REDTAPE AS OBJ.PROG.BLOCK 13 ?X*B ... SBX 0 2 [D-C 9 ?XDL ... STO 0 ASIZE(2) 14 ?XHW ... SBN 0 A1 [D-C-A1 9 ?XM6 ... STO 0 ALOGL(2) 8 ?XQB ... LDN 0 #10 16 ?XTL ... STO 0 AFLAG(2) [SET LOCKED BIT 9 ?XYW ... NAME 2,AOBJPROG 9 ?Y46 ... STOZ BACK1(2) 9 ?Y7B ... STOZ BACK2(2) 16 ?Y=L ... LDX 0 1 [CHANGE SO THAT 13 ?Y*W ... LDX 1 2 [X1=C 13 ?YF6 ... LDX 2 0 [X2=B 17 ?YJB ... CALL 0 NCHAIN [AND CHAIN C AFTER B 18 ?YML ... LDX 1 3 [SET X1=ADDR OF FREE PAGE 21 ?YQW ... LDN 0 1024-A1D [BUT WE CAN ONLY FREE 1024-REDTAPE 20 ?YW6 ... [FOR NEXT OBJECT PROGRAM BLOCK 8 ?Y_B ... BRN POBJ3 5 ?_4L ...NOPAGS 8 ?_7W ...#SKI CFREETARG-1 4 ?_?6 ...( 9 ?_BB ... SBN 6 CFREETARG 9 ?_FL ... BNG 6 NRETRY 4 ?_JW ...) 9 ?_LG ... BRN USECHAP 4 ?_N6 ...) 4 ?_N8 ...# 17 ?_N= ...# SUBROUTINE FOR A COUPLE OF CHECKS ABOUT CHAPTERS 9 ?_N# ...# LINK X7, USES X0 4 ?_NB ...# 5 ?_ND ...SCHAPCHK 9 ?_NG ... LDX 0 CHAPQUOTA 8 ?_NJ ... TXL 0 ACHAP 19 ?_NL ... BCS (7) [EXIT IF ACHAP > CHAPTERQUOTA 7 ?_NN ... ADN 7 1 8 ?_NQ ... LDCT 0 HCHAP 9 ?_NS ... ANDX 0 GRTYPE 19 ?_NW ... BNZ 0 (7) [EXIT 1 IF CHAPTER REQUEST 19 ?_NY ... EXIT 7 1 [OTHERWISE EXIT 2 (ACTUALLY) 4 ?_P2 ...# 4 ?_P4 ...# 19 ?_P6 ...# SUBROUTINE TO FIND NEXT USABLE CHAPTER, STARTING WITH LAST 21 ?_P8 ...# LINK X7, X0 USED, EXIT 0 IF NONE, ELSE EXIT 1 WITH X1 = CHAP.ADDR. 4 ?_P= ...# 6 ?_P# ...SFINDCHAP 8 ?_PB ... LDN 1 BCHAP 5 ?_PD ...SFCH1 20 ?_PG ... TXU 1 BCHAP [J IF CHAPTER CHAIN EMPTY OR END 8 ?_PJ ... BCC (7) 19 ?_PL ... LDX 1 BPTR(1) [LOAD ADDRESS NEXT CHAPTER 9 ?_PN ... TXL 1 GFIXCHAP 19 ?_PQ ... BCC YES [J IF IN FIXED CHAPTER SPACE 9 ?_PS ... LDX 0 AFLAG(1) 8 ?_PW ... ANDN 0 #1002 19 ?_PY ... BNZ 0 SFCH1 [J IF CHAPTER FROZEN OR KEPT 18 ?_Q2 ... EXIT 7 1 [EXIT IF CHAPTER FOUND 4 ?_Q4 ...# 21 ?_Q6 ...# SUBROUTINE TO ADJUST ACHAP AND CHAPTER TABLE WHEN CHAPTER FREED 18 ?_Q8 ...# OR USED. X7 - LINK, X1 PTS TO CHAPTER, X0 AND X2 USED. 4 ?_Q= ...# 6 ?_Q# ...SCHAPTIDY 20 ?_QB ... LDX 0 ASIZE(1) [MAINTAIN SUM OF CHAPTER SIZES 14 ?_QD ... SBS 0 ACHAP [IN CORE 7 ?_QG ...#UNS ISTDPSTATS 13 ?_QJ ... TRACEDP ACORCHAP,ACHAP,CHAPQUOTA 16 ?_QL ... LDX 2 BACK1(1) [SEGMENT NUMBER 15 ?_QN ... LDX 0 BACK2(1) [BS ADDRESS 15 ?_QQ ... STO 0 KTAB(2) [UPDATE TABLE 7 ?_QS ... LDN 0 1 7 ?_QW ... SEGENTRY ADPCA2 7 ?_QY ...#UNS FCCHAPFREE 17 ?_R2 ... ADS 0 FCCHAPEND [INCREMENT F-C COUNT 7 ?_R4 ...#UNS FCCHAPFREE 4 ?_R6 ...#SKI 6 ?_R8 ... NULL 7 ?_R= ... EXIT 7 0 4 ?_R# ...# 5 ?_RB ...USECHAP 4 ?_WL ...[ 18 ?__W ...[IF CORE NOT IMMEDIATELY AVAILABLE CHAPTER BLOCKS ARE FREED 4 #256 ...[ 20 #2=S ... CALL 7 SCHAPCHK [DO CHECKS, RETURNING AS FOLLOWS 19 #2DG ... BRN NONE1 [J SINCE ACHAP > CHAPTERQUOTA 18 #2L8 ... BRN NONE1 [J SINCE CHAPTER REQUEST 18 #2RW ... LDX 0 CJSUM [OR IF CORE JAM EXISTS 9 #2X6 ... SBN 0 XJCHAPLOW 8 #32B ... BNG 0 TOOMU 9 #35L ... FIXTRA CHAPLOW1 18 #36N ...# CHECK WITH RTM CHAPLOW BEFORE ALTERING NEXT 3 INSTRS. 8 #37R ... BRN NONE1 8 #39Y ... BRN TOOMU 5 #3#6 ...NONE1 17 #3K2 ... CALL 7 SFINDCHAP [FIND USABLE CHAPTER 17 #3TW ... BRN TOOMU [J IF END OF CHAIN 20 #46Q ... CALL 7 SCHAPTIDY [ADJUST CHAPTER TOTAL AND TABLE 4 #4CL ...# 17 #4NG ...# ACAS (DS8219) - USE CHAPTER DIRECTLY IF BIG ENOUGH 4 #4_B ...# 9 #5== ... LDX 0 ASIZE(1) 8 #5H6 ... SBX 0 GEN4 16 #5S2 ... BNG 0 NONFREE [J IF NOT BIG ENOUGH 8 #5_X ...#SKI TRACE>499-499 9 #67S ... TRACE 1,ACASCHAP 15 #6*Q ... CALL 0 NDECH [DECHAIN CHAPTER 9 #6LL ... LDX 6 ASIZE(1) 8 #6XG ... BRN SALL2 4 #78B ...# 5 #7FB ...NONFREE 15 #7JL ... CALL 0 NFREE [FREE CHAPTER 5 #7MW ...NRETRY 18 #7R6 ... LDX 4 GEN4 [ RESTORE REQUEST SIZE 18 #7WB ... BRN NOR [ AND JUMP TO TRY AGAIN 4 #87G [ 21 #8M6 [IF NO CORE CAN BE GIVEN THE LINK OF THE CALLING ACTIVITY IS SET BACK 21 #96Q [AND GETCORE COORDINATES SETTING THE ACTIVITY WAITING FOR CORE UNLESS 18 #9LB [IT WAS AN OPTIONAL REQUEST OR A REQUEST FOR CHAPTER SPACE 4 #=62 [ 21 #=KL LABFIX EXESIV [ 'FAIL' RE-ENTRY POINT FOR LONGLOCK 15 #?5= [ GETCORES 7 #?=D ...#UNS ICASSTATS 9 #?CM ... BRN TOOMU1 5 #?JW TOOMU 7 #?R? ...#UNS ICASSTATS 4 #?SJ ...( 7 #?TT ... LDN 0 1 19 #?X6 ... ADS 0 CASFAIL [ADD TO TOTAL NUMBER OF FAILS 16 #?XQ ... CALL 7 SCASMILL [ADD TO CAS MILL 4 #?YC ...) 5 ##2_ ...TOOMU1 9 ##4G LDX 0 GRTYPE 7 ##J6 SLC 0 1 20 #*3Q BPZ 0 NOWAIT [ JUMP IF REQUEST WAS OPTIONAL 7 #*HB SLC 0 4 19 #B32 BNG 0 SCHREQ [J IF CHAPTER BLOCK REQUEST 10 #BGL CALL 0 SETWAITING 20 #C2= LDN 0 1 [ STEP ON COUNT OF QUEUED CORE 15 #CFW ADS 0 CWAIT [ REQUESTS 21 #C_G LDX 1 CLONG1(2) [ TEST IF REQUEST FAILED PREVIOUSLY 15 #DF6 BNG 1 WX1 [ JUMP IF YES 21 #DYQ ADS 0 CFAIL [STEP TOT OF OUTSTANDING CORE REQ'STS 18 #FDB LDCT 0 #400 [ INDICATE FAILED REQUEST 9 #FY2 ORS 0 CLONG1(2) 4 #G4D ...WX1 15 #GQL ... COOR3X #1 [WAIT FOR CORE 4 #GX= [ 21 #HBW [ THIS ROUTINE STEPS BACK LINK SO THAT THE ACTIVITY WILL RE-ENTER THE 13 #HWG [ CORE ROUTINE ON BEING RESTARTED 6 #JB6 SETWAITING 8 #JTQ STO 0 GL2 21 #K*B NGN 0 3 [DIFFERENT ENTRIES TO G/C CAUSE LINK 20 #KT2 ADX 0 GLINKSTEP [ TO BE STEPPED BACK DIFFERENTLY 8 #L#L LDX 2 FX2 7 #LS= ADJUSTLK 2 8 #M?W BRN (GL2) 4 #MRG [ 20 #N?6 [FOR OPTIONAL REQUEST THE LINK IS STEPPED FORWARD ONE THEN EXITS VIA 7 #NQQ [THE COORDINATOR 4 #P=B [ 5 #PQ2 NOWAIT 21 #Q9L LDX 2 FX2 [ X2 MUST EQUAL FX2 FOR EXIT TO FLIST 21 #QP= SLC 0 6 [ HLINKB. EXIT WITHOUT STEPPING LINK 21 #R8W TRANSFIX BNG 0,FLIST [ FOR OPTIONAL BSTS Q-BLOCK REQUEST 14 #RNG SRC 0 2 [ HLOCK 7 #S86 ANDN 0 1 21 #SMQ ADN 0 1 [STEP LINK 2 FOR LOCKC REQU ELSE 1 17 #T7B ADJUSTLK 2 [ BRANCH TO FLIST 16 #TM2 TRANSFIX BRN,FLIST [ JUMP TO COOR2 18 #W6L YES LDCT 0 HCHAP [J IF NOT CHAPTER REQREST 9 #WL= ANDX 0 GRTYPE 8 #X5W ... BZE 0 SFCH1 4 #XKG [ 19 #Y56 [IF CHAPTER SPACE REQUIRED THE FIXED CHAPTER SPACE IS GIVEN WHEN 6 #YJQ [POSSIBLE 4 #_4B [ 5 #_J2 SCHREQ 6 #_K8 ...#UNS JPSCF 4 #_LB ...( 10 #_MJ ...[ CHECK IF FIX CHAP FREE 10 #_NQ ... BSOFF FXCHAPIN,XBWA 8 #_PY ... LDX 2 FX2 9 #_RS ... COOR3 FCXWAIT,3 10 #_TN ... TRANSFIX BRN,BSTS10 13 #_XJ ...[ BSTS HAS ANOTHER TRY AT GETCHAP 8 #__4 ...XBWA ON FXCHAPIN 4 *22= ...) 9 *23L LDX 1 GFIXCHAP 9 *2H= LDX 0 BACK2(1) 18 *32W BZE 0 SCHN [ZERO IF FIXCHAP UNUSED 16 *3GG LDX 2 BACK1(1) [SEGMENT NUMBER 15 *426 STO 0 KTAB(2) [UPDATE TABLE 4 *4FQ SCHN 9 *4_B LDX 0 GLOGLEN 19 *5F2 STO 0 ALOGLEN(1) [FOR BENEFIT OF P/M CHECKSUM 8 *5YL LDX 2 FX2 21 *6D= CHAIN 1,2 [ CHAIN FIXCHAP AFTER ACTIVITY BLOCK 21 *6XW TRANSFIX BRN,FZCO [ EXIT TO BSTS VIA CHAPTER CHANGER 4 *7CG [ 4 *7X6 [ 20 *8BQ [ THIS ROUTINE COPIES THE BLOCK POINTED TO BY X2 TO THE FIRST BLOCK 16 *8WB [ AFTER THE CURRENT ACTIVITY AND FREES THE OLD SITE 4 *9B2 [ 7 *9TL LABFIX HCOPY 8 *=*= ZCOPY STO 0 GL2 21 *=SW ZCOPYA [ENTRY FROM ALTLENG-IMPLICIT BLOCKCPY 8 *?#G STO 3 GEN2 8 *?S6 SMO FX2 8 *#?Q LDX 1 FPTR 18 *#RB CALL 0 NDECH [DECHAIN THE NEW BLOCK 7 **?2 LDX 0 1 17 **QL LDX 1 2 [SOURCE - OLD BLOCK 18 *B== LDX 2 0 [DESTINATION - NEW BLOCK 21 *BPW LDX 0 ASIZE(2) [REMEMBER SIZE/LOGLEN OF NEW BLOCK 8 *C9G STO 0 GEN3 9 *CP6 LDX 0 AFLAG(2) 9 *D8Q ANDX 0 FLAGPHYS 21 *DNB STO 0 GEN5 [REMEMBER 'PHYSICAL' BITS OF AFLAG 10 *F82 LDX 3 ALOGLEN(2) 8 *FML STO 3 GEN4 16 *G7= ADN 3 A1 [LENGTH TO MOVE 15 *GLW CALL 0 MOVE [MOVE BLOCK 9 *H6G LDX 1 BDESTN 8 *HL6 LDX 0 GEN3 20 *J5Q STO 0 ASIZE(1) [RESTORE SIZE (WITH LOCK BIT IF 21 *JKB LDX 0 GEN4 [ NECESSARY, & LOGLEN OF NEW BLOCK 10 *K52 STO 0 ALOGLEN(1) 20 *KJL LDX 0 GEN5 [RESTORE 'PHYSICAL' AFLAG BITS TO 15 *L4= ORS 0 AFLAG(1) [ NEW BLOCK 8 *LHW LDX 3 GEN2 9 *M3G LDX 1 BSOURCE 17 *MH6 BRN N21X [J TO FREE OLD SITE 4 *N2Q [ 20 *NGB [THIS SUBROUTINE MOVES THE NUMBER OF WORDS IN X3 FROM THE ADDRESS 16 *P22 [POINTED TO BY X1 TO THE ADDRESS POINTED TO BY X2 7 *PFL [IT CATERS FOR 9 *P_= [ 1. NULL ELEMENTS 9 *QDW [ 2. EMPTY ELEMENTS 17 *QYG [ 3. OVERLAP OF NEW AND OLD SITES -ONLY UPWARD MOVE 20 *RD6 [ 4. TWO OR MORE ELEMENTS FOLLOWING EACH OTHER ,IMMEDIATELY OR 15 *RXQ [ OTHERWISE IN SAME RING IN SAME BLOCK. 19 *SCB [IT IS CALLED FROM WITHIN THE SEGMENT OR BY THE BLOCKMOVE MACRO 4 *SX2 [ 7 *TBL LABFIX BLKMOVE 4 *TW= MOVE 8 *W*W STO 0 GEN0 16 *WTG STO 3 GUSSIZE [LENGTH TO MOVE 17 *X*6 STO 1 BSOURCE [ADDR TO MOVE FROM 16 *XSQ STO 2 BDESTN [ADDR TO MOVE TO 7 *Y#B #SKI K6COREALL 4 *YS2 ( 19 *_?L BXL 2 FCORES,MOV1 [ERROR IF DESTINATION NOT IN 16 *_R= ... BXGE 2 GFIXCHAP,MOV1 [ VARIABLE CORE 4 B2=W ) 19 B2QG SMO FPTR(1) [THESE UPDATE STANDARD RING 8 B3=6 STO 2 BPTR 9 B3PQ SMO BPTR(1) 8 B49B STO 2 FPTR 8 B4P2 TXU 1 FX2 19 B58L BCS XXXX [J IF BLOCK NOT CURRENT ACT 20 B5N= STO 2 FX2 [OTHERWISE RESET FX2 FOR NEW SITE 4 B67W XXXX 10 B6MG LDX 0 ARINGNO(1) 8 B776 ANDX 0 BSP16 16 B7LQ BZE 0 SNORING [J IF NO RINGS 10 B86B LDX 3 ARINGNO(1) 8 B8L2 SRL 3 15 18 B95L STO 3 GEN1 [ISOLATE RING DIMENSION 8 B9K= MOVE 1 A1 9 B=4W ADN 2 ARINGNO+1 17 B=JG ADN 1 ARINGNO+1 [POINT TO FIRST RING 16 B?46 SMORE LDX 3 BPTR(1) [PRECEDING BLOCK 17 B?HQ BZE 3 SNULL [UNLESS NULL ELEMENT 7 B?JT ...#SKI K6COREALL 4 B?KY ...( 12 B?M3 ...[ CHECK CHAINING OF RING ELEMENT 4 B?N6 ...[ 9 B?P9 ... SMO FPTR(1) 8 B?Q# ... TXU 1 BPTR 8 B?RC ... BCS SRERR 9 B?SG ... TXU 1 FPTR(3) 8 B?TK ... BCC SMOK 5 B?WN ...SRERR 10 B?XR ... GEOERR 1,BADRING! 4 B?YW ...SMOK 4 B?__ ...) 20 B#3B SMO FPTR(1) [THESE INSTRUCTIONS UPDATE REFS. 16 B#H2 STO 2 BPTR [TO RING CATERING 16 B*2L STO 2 FPTR(3) [FOR EMPTY RING 8 B*G= SNULL LDX 3 GEN1 15 B*_W MOVE 1 0(3) [MOVE ELEMENT 20 BBFG ADX 1 GEN1 [UPDATE OLD AND NEW ELEMENT SITE 15 BB_6 ADX 2 GEN1 [ POINTERS 8 BCDQ BCT 0 SMORE 15 BCYB LDX 3 GUSSIZE [CALCULATE 15 BDD2 ADX 3 BSOURCE [REMAINDER 15 BDXL SBX 3 1 [TO BE MOVED 8 BFC= BZE 3 NMV1 5 BFWW SNORING 16 BGBG TXL 3 B513 [JUMP IF SIZE<512 8 BGW6 BCS NMV 7 BH*Q #SKI K6COREALL 4 BHTB ( 17 BJ*2 BPZ 3 MOV2 [ERROR IF NEGATIVE 10 BJSL MOV1 GEOERR 1,COREMOVE 4 BK#= MOV2 4 BKRW ) 18 BL?G MOVE 1 512 [OTHERWISE MOVE 512 WORDS 15 BLR6 ADN 1 512 [AND UPDATE 14 BM=Q ADN 2 512 [POINTERS 18 BMQB SBN 3 512 [AND AMOUNT TO BE MOVED 9 BN=2 BRN SNORING 15 BNPL NMV MOVE 1 0(3) [MOVE RESIDUE 4 BP9= NMV1 7 BPNW LDN 3 1 17 BQ8G ADS 3 BCOUNT [INDICATE BLOCK MOVED 9 BQN6 LDX 0 FLAGLOG 9 BR7Q SMO BDESTN 21 BRMB ANDS 0 AFLAG [ERASE ALL BUT LOGICAL BITS OF AFLAG 9 BS72 BRN (GEN0) 4 BSLL [ 20 BT6= [THIS ROUTINE ALTERS THE LOGICAL LENGTH OF THE BLOCK SPECIFIED IN X1 11 BTKW [TO THE LENGTH SPECIFIED IN X2 21 BW5G [ THE ALTLENG ENTRY IS BY THE REPLACER CHANGEG. IF X1'NE'FX1 & X2'NE'FX2 21 BWK6 [ THEN ITS THE FIRST ENTRY. IF X1=FX1 BUT X2'NE'FX2, THIS IMPLIES THE 21 BX4Q [ LINK HAS BEEN STEPPED BACK 2 - A RE-ENTRY AFTER WAITING FOR CORE. IF 21 BXJB [ X1=FX1 & X2=FX2, THIS IMPLIES LINK STEPPED BACK 1 - SUCCESS RE-ENTRY 8 BY42 [ AFTER GETTING CORE 4 BYHL [ 7 B_3= LABFIX ALTLEN 16 B_GW NALT STO 0 GL2 [REMEMBER LINK 18 C22G STOZ GLINKSTEP [ZERO FOR ALTLEN ENTRY 8 C2G6 BRN PATH 6 C2_Q LABFIX ALTG 15 C3FB NALTG STO 0 GL2 [DUMP LINK 7 C3_2 LDN 0 2 20 C4DL STO 0 GLINKSTEP [LINK STEPPER INCREMENT / FLAG 16 C4Y= BXU 1 FX1,PATH [J IF FIRST ENTRY 19 C5CW STO 2 GEN1 [ ELSE RE-FIND SOURCE BLOCK 8 C5XG LDX 2 FX2 8 C6C6 SMO GL2 7 C6WQ LDX 0 0 20 C7BB BZE 0 YCURA [J IF %C WAS / - CURRENT ACTIVITY 8 C7W2 ADX 0 FX1 8 C8*L CALL 1 (0) 8 C8T= YCURA LDX 0 GEN1 20 C9#W BXU 0 FX2,TRYAG [J IF RE-ENTRY AFTER CORE WAIT 21 C9SG LDN 0 1 [ ELSE SET LINK TO INSTR AFTER MACRO 20 C=#6 ADS 0 GL2 [ & J TO DO IMPLICIT BLOCKCOPY 9 C=RQ BRN ZCOPYA 7 C??B TRYAG LDX 1 2 7 C?R2 LDX 2 0 4 C#=L PATH 7 C#Q= #SKI K6COREALL 4 C*9W ( 21 C*PG BXL 1 FCORES,SILL2 [ERROR IF BLOCK NOT IN VARIABLE CORE 11 CB96 ... BXGE 1 GFIXCHAP,SILL2 20 CBNQ TXL 2 AFREE [AND NOT ASKING FOR MORE THAN IS 15 CC8B BCS NOTILL6 [AVAILABLE 9 CCN2 SILL2 GEOERR 1,ALTLEN 5 CD7L NOTILL6 4 CDM= ) 9 CF6W LDX 0 GLINKSTEP 7 CFLG SRL 0 1 8 CG66 ADS 0 GL2 9 CGKQ #SKI K6COREALL>799-799 4 CH5B ( 9 CHK2 TRACE 1,EXTBLOCK 9 CJ4L TRACE 2,EXTSIZE 4 CJJ= ) 9 CK3W LDX 0 AFLAG(1) 7 CKHG ANDN 0 6 7 CL36 ERN 0 6 16 CLGQ BNZ 0 NLLCK [J IF NOT LL AND FROZEN 10 CM2B LDX 0 ALOGLEN(1) 7 CMG2 SBX 0 2 19 CM_L BNG 0 NEXTEND [DON'T LET FROZEN LLB EAT FAG-END 5 CNF= NLLCK 17 CNYW LDX 0 ASIZE(1) [ LOAD SIZE OF BLOCK 17 CPDG SBN 0 A1 [SUB RED TAPE WORDS 4 CPFY ...# 20 CPHB ...# ACAS (DS8219) - IF BLOCK FOLLOWING THE BLOCK TO BE LENGTHENED 15 CPJS ...# IS FREE AND LARGE ENOUGH, USE DIRECTLY 4 CPL= ...# 14 CPMN ... BXGE 0 2,YZ12 [J IF ENOUGH 9 CPP6 ... LDX 0 AFLAG(1) 7 CPQJ ... ANDN 0 2 14 CPS2 ... BNZ 0 NEXTEND [J IF FROZEN 14 CPSF ... LDX 0 GFIXCHAP [J IF EMS 9 CPSY ... BNG 0 NEXTEND 16 CPTD ... STO 2 GEN4 [REQD SIZE -> GEN4 18 CPWW ... LDX 2 1 [X2 NOW PTS TO OROGINAL BLK 17 CPY# ... ADX 1 ASIZE(2) [ADDRESS NEXT BLK IN CORE 9 CP_Q ... LDX 0 AFLAG(1) 7 CQ38 ... ANDN 0 1 15 CQ4L ... BZE 0 NALTRST [J IF NOT FREE 14 CQ64 ... LDX 0 ASIZE(2) [ADD SIZES 16 CQ7G ... SBN 0 A1 [SUB RED TAPE WORDS 9 CQ8Y ... ADX 0 ASIZE(1) 8 CQ=B ... SBX 0 GEN4 16 CQ?S ... BNG 0 NALTRST [J IF TOTAL NOT ENOUGH 8 CQ#Q ...#SKI TRACE>499-499 9 CQ*N ... TRACE 1,ACASALTL 19 CQBN ... CALL 0 NDECH [DECHAIN FREE BLK FROM FREE CHAIN 6 CQD6 ...#UNS ISFCON 16 CQFJ ... CALL 0 NFROUT [DECHAIN FROM SIZE RING 9 CQH2 ... LDX 0 ASIZE(1) 8 CQJD ... SBS 0 CFREE 19 CQKW ... ADS 0 ASIZE(2) [ADD SIZE TO THAT OF ORIGINAL BLK 8 CQL7 ... LDX 0 GL2 8 CQLD ... STO 0 GEN5 8 CQLP ... STO 2 GBL 8 CQM2 ... CALL 0 NUNL 20 CQM? ...# THIS MAY BE RE-ENTRY SO NEED UNLOCK 19 CQMJ ... LDX 1 GBL [X1 PTS TO ORIGINAL BLK AGAIN 8 CQMT ... LDX 0 GEN5 8 CQN6 ... STO 0 GL2 14 CQNC ... [RESTORE LINK 19 CQNQ ... LDX 2 GEN4 [X2 PTS TO REQD SIZE AGAIN 9 CQQ8 ... LDX 0 ASIZE(1) 8 CQRL ... SBN 0 A1 4 CQT4 ...# 15 CQXB YZ12 SBX 0 2 [GET EXCESS 17 CRC2 STO 2 ALOGLEN(1) [RESET LOGICAL LENGTH 20 CRWL TXL 0 SPLITLEN [J IF SOME SHOULD NOW BE SPLIT 19 CSB= BCS NZY [JUMP IF NOT WORTH SPLITTING 9 CSTW LDX 2 AFLAG(1) 7 CT*G ANDN 2 2 19 CTT6 BNZ 2 NZY [DONT SPLIT A FROZEN BLOCK 9 CW#Q ANDX 0 IROUNDNG 18 CWSB SBS 0 ASIZE(1) [SUB FROM SIZE OF BLOCK 20 CX#2 ADX 1 ASIZE(1) [ GET ADDRESS OF SPLIT PORTION 17 CXRL STO 0 ASIZE(1) [SET ITS SIZE WORD 7 CY?= STO 0 2 8 CYQW #SKI TRACE>499-499 10 C_=G TRACE 0,ALTLNFAG 18 C_Q6 BRN NFA [ JUMP TO FREE FAG-END 5 C_W3 ...NALTRST 7 C__Y ... LDX 1 2 8 D25T ... LDX 2 GEN4 5 D29Q NEXTEND 21 D2PB STO 1 GBL [STORE ADDRESS OF BLOCK TO BE ALTD 19 D392 STO 2 GLOGLEN [STORE NEW LENGTH REQUIRED 4 D3NL [ 21 D48= [IF ENOUGH FREE CORE CANNOT BE ADDED DIRECTLY, A NEW BLOCK OF CORE IS 13 D4MW [OBTAINED AND THE BLOCK IS COPIED TO IT 4 D57G [ 9 D5M6 LDX 2 AFLAG(1) 17 D66Q ANDN 2 4 [ PUT LONGLOCK BIT 17 D6LB SRL 2 2 [ INTO BIT 23 OF X2 21 D762 LDCT 2 HMANDAT(2) [REQUEST TYPE-MANDATORY,LL IF NEC. 21 D7KL LDX 0 GLINKSTEP [FOR ALTLENG ENTRY ONLY, STEP LINK 19 D85= SBS 0 GL2 [ BACK 1 & J TO AVOID LOCK 8 D8JW BNZ 0 TYPEG 8 D94G LDN 0 #10 17 D9J6 ORS 0 AFLAG(1) [ SET 'LOCKED' BIT 9 D=3Q LDCT 0 HALTLEN 21 D=HB ORX 2 0 [MODIFY REQUEST TYPE FROM ORDINARY 16 D?32 [ TO ALTLEN TYPE 18 D?GL TYPEG [BOTH ALTLEN & ALTLENG 21 D#2= LDN 1 0 [RING CONFIG - SET WHEN BLOCK COPIED 13 D#FW LDX 0 GL2 [LINK 17 D#_G BRN XTND [J TO PERFORM GETCORE 21 D*F6 SMOVE LDX 2 GBL [ALTLEN RE-ENTRY AFTER GETTING CORE 16 D*YQ CALL 0 NUNL [UNLOCK OLD BLOCK 8 DBDB LDX 2 GBL 21 DBY2 CALL 0 ZCOPY [COPY CONTENTS TO NEW SITE, FREE OLD 21 DCCL TRANSFIX BRN,FLIST [ SITE & EXIT VIA THE COORDINATOR 4 DCX= # 4 DDBW #END 8 ____ ...13135550006800000000