{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: FREEBUFF860)}} ====== FREEBUFF860 ====== (George Source) **Macros used:** [[george:macro:ADDSKIP|ADDSKIP]], [[george:macro:CHANGEACT|CHANGEACT]], [[george:macro:COOR3|COOR3]], [[george:macro:FCAPCA|FCAPCA]], [[george:macro:FJOCA|FJOCA]], [[george:macro:FPCAJO|FPCAJO]], [[george:macro:FRITE|FRITE]], [[george:macro:JBSS|JBSS]], [[george:macro:LINK|LINK]], [[george:macro:LINKSET|LINKSET]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TESTCOR|TESTCOR]], [[george:macro:TRACEIF|TRACEIF]], [[george:macro:UP|UP]], [[george:macro:VOP|VOP]] 22FL ... SEG FREEBUFF,,P.R. CRUICKSHANK,FILESTORE 22^= ... SEGENTRY K1FREEBUFF,ZFBALL 23DW ... SEGENTRY K2FREEBUFF,ZFBAOLPTS 23YG ... SEGENTRY K3FREEBUFF,ZFBCACT 24D6 ... SEGENTRY K4FREEBUFF,ZFBFILE 24XQ ...[ THIS SEGMENT WRITES AWAY FUWBS AND FURWBS(USING THE FRITE 25CB ...[ ASSOCIATED WITH EITHER A WHOLE JOB , A SINGLE ACTIVITY, 25X2 ...[ ALL THE AOLPTS OF A JOB OR A SINGLE FILE. 26BL ...[ 26W= ...[ ENTRY POINTS :- 27*W ...[ 1 FREEBUFF ALL ACTIVITIES TO A JOB 27TG ...[ 2 FREEBUFF ALL AOLPTS TO A JOB 28*6 ...[ 3 FREEBUFF CURRENT ACTIVITY 28SQ ...[ 4 FREEBUFF A FILE CHAINED TO THE CURREN 29#B ...[ ACTIVITY 29S2 ...[ 2=?L ...[ 1 AND 2 THE CALLING ACTIVITY SHOULD BE A CPAT OR AN APET 2=R= ...[ FOR 4 X3 MUST CONTAIN THE FILE DEPTH 2?=W ...[ 2?GN ...[ FOR TESTING PURPOSES ONLY : 2?QG ...[ SET K6FREEBUFF TO 200 FOR TRACES 2#2# ...[ 500 TO TEST SEMAPHORES 2#=6 ...[ 1000 FOR TRACEVERS 2#FY ...[ 2#PQ ...XLINK 2#^J ... LINK FREEBUFF,1 [ FOR LINKSET MACRO AFTER CHANGEACTS 2*9B ...[ THIS ROUTINE GETS A POINTER IN X2 TO THE CALLING ACTIVITY 2*P2 ...[ ( IT USES THE INDICATOR IN X7 TO TELL IT WHETHER THE 2B8L ...[ CALLING ACTIVITY IS A CPAT OR APET). 2BN= ...[ LINK X5 2C7W ...XPTRS 2CMG ... LDCH 0 ATYPE(2) 2D76 ... SBN 0 AOLPT/64 2DLQ ... BNZ 0 XPTR1 [ NOT AN AOLPT 2F6B ... LDX 2 ACTRG+BPTR(2) 2FL2 ... SBN 2 ACTRG [ PREVIOUS ACTIVITY 2G5L ... BRN XPTRS 2GK= ...XPTR1 2H4W ... ADN 0 AOLPT/64 2HJG ... SBN 0 CPAT/64 2J46 ... BZE 0 XITPTRS [ J IF CPAT 2JHQ ... BZE 7 XITPTRS [ APET AND X7=0 2K3B ... FCAPCA 2 [ X2 -> CPAT 2KH2 ...XITPTRS 2L2L ... EXIT 5 0 2LG= ... 2L^W ... 2MFG ...[ THIS ROUTINE WRITES AWAY BUFFERS OF THE CURRENT ACTIVITY 2M^6 ...[ LINK X7 2NDQ ...XFBCACT 2NYB ... SBX 7 FX1 2PD2 ... TRACEIF K6FREEBUFF,199,999,7,FB CACT 2PXL ...[ CALL THE FIXED CORE ROUTINES TO SEE WHETHER IT IS WORTH 2QC= ...[ COORDINATING TO WRITE BUFFERS AWAY (SETS OVERFLOW). 2QWW ... BVCR XACTCLEAR [ CLEAR OVERFLOW 2RBG ...XACTCLEAR 2RW6 ... LDX 4 FX2 [ ACTIVITY POINTER 2S*Q ... CALL 6 (FBACT) 2STB ... BVCR XITFBACT [ J IF NO FUWBS OR FURWBS PRESENT 2T*2 ...#SKI K6FREEBUFF>199-199 2TSL ... LDX 2 FX2 [ FOR TRACEIF MACRO ONLY 2W#= ... TRACEIF K6FREEBUFF,199,999,ACTNUM(2),FRITEACT 2WJ4 ... ADDSKIP K6FREEBUFF>199-199,INSTPARAM+1 2WRW ... FRITE ALL,AUT [ WRITE BUFFERS AWAY 2X?G ...XITFBACT 2XR6 ... ADX 7 FX1 2Y=Q ... EXIT 7 0 2YQB ... 2^=2 ... 2^PL ...[ THIS ROUTINE WRITES AWAY BUFFERS OF ALL THE AOLPTS OF A JOB. 329= ...[ IT MAY BE ISSUED FROM A CPAT OR AN APET AND WILL ONLY COORDINATE 32NW ...[ IF THERE ARE ANY FUWBS OR FURWBS TO WRITE AWAY 338G ...[ LINK X7 (STORED IN AWORK1 OF CALLING ACTIVITY), APET/CPAT INDICATOR X7 33N6 ...XFBAOLPTS 347Q ... SBX 7 FX1 34MB ... STO 7 AWORK1(2) [ STORE LINK 3572 ... TRACEIF K6FREEBUFF,199,999,7,FB AOLPT 35LL ... LDN 7 0 [ X7=0 FOR APET 366= ... LDCH 0 ATYPE(2) 36KW ... SBN 0 CPAT/64 375G ... BNZ 0 XNCPAT [ NOT A CPAT 37K6 ... LDCT 7 #400 [ X7 NEGATIVE FOR CPAT 384Q ... FJOCA 2 [ -> JOB BLOCK 38JB ... TESTCOR 2,YCORIMG [ J IF CORE IMAGE 3942 ... BRN XITFBAPT [ NO CORE IMAGE 39HL ...YCORIMG 3=3= ... FPCAJO 2 [ -> PCA 3=GW ... BRN XFBAPTLP 3=JK ...#SKI K6FREEBUFF>199-199 3=L# ...( 3=N3 ...XFBAPTLP1 3=PQ ... TRACEIF K6FREEBUFF,199,499,BFSTATE(2),SEMAPHOR 3=RF ... TRACEIF K6FREEBUFF,199,499,ALINK1(2),ACT LINK 3=T8 ... ADDSKIP K6FREEBUFF>199-199,INSTPARAM+4 3=WX ... BRN XFBAPTLP 3=YL ...) 3?2G ...XNCPAT 3?G6 ... LDCH 0 ATYPE(2) 3?^Q ... SBN 0 APET/64 3#FB ... BNZ 0 XITFBAPT [ NOT AN APET 3#^2 ...[ POINTER TO PCA IN X2 3*DL ...XFBAPTLP 3*Y= ... LDX 2 ACTRG+FPTR(2) [ NEXT ACTIVITY ON ACT RING 3BCW ... SBN 2 ACTRG [ X2-> ACTIVITY 3BXG ... LDCH 1 ATYPE(2) 3CC6 ... SBN 1 AOLPT/64 3CWQ ... BNZ 1 XFBAPTRESET [ NOT AN AOLPT 3DBB ... LDX 0 ATMARK(2) 3DW2 ... BZE 0 XFBAPT [ J - IF OFFLINE PERI 3F*L ... SBN 0 3 3FT= ... BNZ 0 XFBAPTLP 3G#W ...[ EITHER A) OFFLINE RESULTING FROM AN ASSIGN 3GSG ...[ OR ASSILO 3H#6 ...[ (INCLUDING ANTICIPATED BUDGET EXTRACODES) 3HRQ ...[ OR B) ONLINE WITHOUT DOCUMENT NAME OR ACCESS, OR HLS EXTRACODES 3J?B ... 3JR2 ...XFBAPT 3K=L ... LDX 4 2 [ ACTIVITY POINTER 3KQ= ...[ CALL THE FIXED CORE ROUTINES TO SEE WHETHER IT IS WORTH 3L9W ...[ COORDINATING TO WRITE BUFFERS AWAY (SETS OVERFLOW) 3LPG ... BVCR XFBAPTCOV [ CLEAR OVERFLOW 3M96 ...XFBAPTCOV 3MNQ ... CALL 6 (FBACT) [ SETS OVERFLOW IF ANY FUWBS OR FURWB 3N8B ... LDX 2 4 3NN2 ... BVCR XFBAPTLP [ J IF NO BLOCKS TO WRITE AWAY 3P7L ...[ WE HAVE AT LEAST ONE BUFFER BLOCK TO WRITE AWAY 3P8M ...[ 3P9N ...[ ENSURE THAT NO ONE ELSE IS RUNNING UNDER THIS AOLPT. 3P=P ...[ SINCE WE DO NOT WISH TO WAIT IF SOMEONE IS RUNNING 3P?Q ...[ UNDER THIS AOLPT (IE SEMAPHORE LOCK BIT SET) WE DO 3P#R ...[ NOT USE THE "POP" MACRO TO SEIZE THE SEMAPHORE ! 3P*S ...[ 3PBT ...#SKI K6FREEBUFF>199-199 3PCW ...#SKI 3PDX ... JBSS XFBAPTLP,2,FBOFFLKB [ J-IF BIT SET ELSE SET IT 3PFY ...#SKI K6FREEBUFF>199-199 3PG^ ... JBSS XFBAPTLP1,2,FBOFFLKB [ FOR TESTING ONLY !!!! 3PJ2 ...[ 3PK3 ...[ INTERLOCK BIT IS NOW SET 3PL4 ...[ 3PM= ... LDN 1 ACC3(2) 3Q6W ... CALL 5 XPTRS [ DUMP ACC3 THRU7 TO ALINK1 3QLG ... ADN 2 ACOMMUNE1 [ IN ACOM1 TO ACOM6 IN 3R66 ... MOVE 1 6 [ CALLING ACTIVITY 3RKQ ... CHANGEACT 4 [ TO AOLPT ACTIVITY 3S5B ... LINKSET 2,XLINK(1) [ FOR COORDINATIONS 3SK2 ... TRACEIF K6FREEBUFF,199,999,ACTNUM(2),FRITEAPT 3SSS ... ADDSKIP K6FREEBUFF>199-199,INSTPARAM+2 3T4L ... FRITE ALL,AUT [ WRITE AWAY BLOCKS 3T6* ...#SKI K6FREEBUFF-500 3T84 ...#SKI 3T9R ... COOR3 #62 [ FRIG TO WAIT HOLDING SEMAPHORE 3T?G ...[ 3T*9 ...[ WE NOW WAKE UP ANYONE WAITING ON THE SEMAPHORE. 3TBY ...[ 3TDM ... VOP 2,FBOFFWAIT 3TGB ... LDX 2 FX2 [ VOP CORRUPTS X2 3TJ= ... LDN 3 ACC3(2) [ RESET ACC3 TO ALINK1 3W3W ... CALL 5 XPTRS 3WHG ... ADN 2 ACOMMUNE1 [ FROM ACOM1 TO 6 FROM 3X36 ... MOVE 2 6 [ CALLING ACTIVITY 3XGQ ... LDX 2 FX2 3Y2B ... BRN XFBAPTLP [ LOOP ROUND FOR NEXT AOLPT 3YG2 ... 3Y^L ...[ RESET ACTIVITY POINTERS AFTER CHANGEACT 3^F= ...XFBAPTRESET 3^YW ... LDX 2 ACTRG+BPTR(2) [ PREVIOUS ACTIVITY 42DG ... SBN 2 ACTRG [ FOR RESET 42Y6 ... CALL 5 XPTRS [ X2-> CALLING ACTIVITY 43CQ ... CHANGEACT 2 [ RESET FX2 43XB ... LINKSET 2,XLINK(1) [ FOR COORDINATIONS 44C2 ...XITFBAPT 44WL ... LDX 2 FX2 45B= ... LDX 7 AWORK1(2) [ RESTORE LINK 45TW ... ADX 7 FX1 46*G ... EXIT 7 0 46T6 ...[ 47#Q ...[ 47SB ...[ 48#2 ...[ ENTRY POINTS 48RL ...[ 49?= ...[ 49QW ... 4==G ...[ FREEBUFF WHOLE JOB 4=Q6 ... 4?9Q ...ZFBALL 4?PB ... CALL 7 XFBAOLPTS [ AOLPTS FIRST (IF ANY) 4#92 ... 4#NL ...[ FREEBUFF CURRENT ACTIVITY 4*8= ... 4*MW ...ZFBCACT 4B7G ... CALL 7 XFBCACT 4BM6 ... BRN XUP 4C6Q ... 4CLB ...[ FREEBUFF AOLPTS TO THE JOB ONLY 4D62 ...ZFBAOLPTS 4DKL ... CALL 7 XFBAOLPTS 4F5= ... BRN XUP 4FJW ... 4G4G ...[ FREEBUFF A FILE AT DEPTH X3 4GJ6 ...ZFBFILE 4H3Q ... TRACEIF K6FREEBUFF,199,999,3,FB FILE 4H?J ... ADDSKIP K6FREEBUFF>199-199,INSTPARAM+3 4HHB ... FRITE 0(3),AUT 4J32 ... 4JGL ...XUP 4K2= ... UP 4KFW ... 4XQ2 #END ^^^^ ...142264740023