16 22FL #LIS K0SAVEJOB>K0SAVEBLOK>K0HLS>K0GREATGEO>K0ALLGEO 16 22_= #SEG SAVEBLOK65 [RICHARD GRIMWADE 7 23DW 8HSAVEBLOK 19 23YG # THIS SEGMENT IMPLEMENTS THE SAVEBLK AND SAVECHN MACROS. 15 24D6 # SAVECHN USES THE SAVEBLOK CODE AS A S/R. 21 24XQ # SAVEBLOK SAVES THE LOCKED ACT BLOCK SPECIFIED OR THE IMMEDIATELY 8 25CB # FOLLOWING IT. 21 25X2 # SAVECHN SAVES ALL THE BLOCKS ASSOCIATED WITH A LOCKED ACT BLOCK. 20 26BL # WHEN IT FINDS THE NEXT ACT, THE PREVIOUS ONE IS MURDERED AND 21 26W= # A CHECK IS MADE AS TO WHETHER NEW ACTIVITY IS AN AOLPT WITH SAME 21 27*W # JOB NR - IF TRUE A NON-ZERO REPLY IS RETURNED TO SAVEJOB IN EXEC3; 21 27TG # SAVEJOB GEOERRS ON DETECTING THIS. IF THIS SEEMS ODD IT'S BECAUSE 21 28*6 # ITS A HANGOVER FROM THE BEGINNINGS OF AN ENHANCEMENT THAT HAS BEEN 11 28SQ # PUT OFF - INDEFINITELY. 4 29#B # 16 29S2 # NOTE:- AWORK1 IS SET TO 1 IF JOBLOCK BEING SAVED 15 2=?L # 0 IF CPAT BEING SAVED 11 2=R= # S/R TO REFIND BLOCK : CPAT 14 2?=W # LEAVES X3 -> RELEVANT BLOCK,X6 IS LINK 17 2?QG # MUST ALWAYS FOLLOW A CALL OF SJOBQ WITH ONE FOR SCPAT 4 2#=6 # 11 2#PQ SEGENTRY K3SAVEBLOK,XK3 11 2*9B SEGENTRY K10SAVEBLOK,XK10 11 2*P2 SEGENTRY K11SAVEBLOK,XK11 11 2B8L SEGENTRY K20SAVEBLOK,XK20 11 2BN= SEGENTRY K21SAVEBLOK,XK21 11 2C7W MENDAREA 25,K99SAVEBLOK 4 2CMG # 7 2D76 SCPAT FCAJO 3 7 2DLQ EXIT 6 0 10 2F6B SJOBQ JOBLOCK AWORK2(2),3 17 2FL2 SMO AWORK1(2) [EXIT +1 IF JOB BLOCK 7 2G5L EXIT 6 0 9 2GK= SCOM LDX 0 ACOM1(2) 9 2H4W STO 0 AWORK2(2) 7 2HJG EXIT 6 0 4 2J46 # 6 2JHQ X512 +512 4 2K3B XK11 21 2KH2 GEOERR 1,NEXTJBLK [ERROR IF BLOCK FOLLOWING JOBBLOCK 4 2L2L XK21 9 2LG= STOZ AWORK1(2) 8 2L_W CALL 6 SCOM 8 2MFG CALL 6 SJOBQ 19 2M_6 CALL 6 SCPAT [SKIPPED IF JOB BLOCK CASE 9 2NDQ LDX 3 FPTR(3) 9 2NYB #SKI K6SAVEBLOK>99-99 10 2PD2 TRACE 3,BLOCKSAV 14 2PXL LDN 7 0 [MARKER 8 2QC= BRN NOTSR 4 2QWW XK20 9 2RBG STOZ AWORK1(2) 8 2RW6 BRN PAST 4 2S*Q XK10 7 2STB LDN 0 1 9 2T*2 STO 0 AWORK1(2) 4 2TSL PAST 8 2W#= CALL 6 SCOM 8 2WRW CALL 6 SJOBQ 8 2X?G CALL 6 SCPAT 17 2XR6 LDX 7 FX1 [PREPARE FOR MARKER 4 2Y=Q SR1 8 2YQB SBX 7 FX1 10 2_=2 NOTSR LDX 4 ALOGLEN(3) 7 2_PL ADN 4 3 9 329= TXL 4 X512(1) 18 32NW BCS SHORT [J IF NOT 512 WORD BLOCK 9 338G GEOERR 1,LARGBLOK 9 33N6 SHORT LDX 0 BACK1(3) 19 347Q BZE 0 NOBSH [J IF NO BACKING STORE HOME 9 34MB FREEBACK BACK1(3) 8 3572 CALL 6 SJOBQ 8 35LL CALL 6 SCPAT 8 366= BZE 7 NOBSH 9 36KW LDX 3 FPTR(3) 15 375G NOBSH LDX 1 4 [BLOCK LENGTH 9 37K6 LDCH 5 ATYPE(3) 9 384Q SBN 5 BLINK/64 17 38JB BNZ 5 NBLNK [J IF NOT BLINK BLOCK 7 3942 LDX 5 4 7 39HL SBN 5 5 20 3=3= BZE 5 XFREE [DON'T SAVE 2 WORD BLINK BLOCKS 9 3=GW NBLNK LDCH 5 ATYPE(3) 10 3?2G SBN 5 BSTB+BFREEW 8 3?G6 BZE 5 XFREE 16 3?_Q LDX 5 ATYPE(3) [SAVE BLOCK TYPE 17 3#FB STEP ,0(1) [GET APPEND POINTE 10 3#_2 TESTREPN FILEFULL,ROK 10 3*DL GEOERR 1,FILEFULL 15 3*Y= ROK STO 5 2(3) [STORE TYPE 8 3BCW LDCT 0 #400 16 3BXG STO 0 1(3) [SAVED BLOCK BIT 8 3CC6 TXL 5 CACT 8 3CWQ BCS XIT 8 3DBB LDCT 0 #200 17 3DW2 ORS 0 1(3) [SET ACT BLOCK BIT 8 3F*L XIT LDN 5 3(3) 15 3FT= STO 4 0(3) [REC HEADER 15 3G#W CALL 6 SJOBQ [REFIND BLOCK 8 3GSG CALL 6 SCPAT 8 3H#6 BZE 7 NOTAL 9 3HRQ LDX 3 FPTR(3) 10 3J?B NOTAL LDX 1 ALOGLEN(3) 8 3JR2 LDN 4 A1(3) 17 3K=L MOVE 4 0(1) [MOVE IN INFORMATION 9 3KQ= LDCH 4 ATYPE(3) 9 3L9W SBN 4 JOBQE/64 8 3LPG BZE 4 UP 9 3M96 NOTJB LDX 4 ATYPE(3) 8 3MNQ TXL 4 CACT 16 3N8B BCC UP [J IF ACT BLOCK 7 3NN2 XFREE FREECORE 3 8 3P7L UP BNG 7 UP1 8 3PM= BNZ 7 XIT1 4 3Q6W UP1 5 3QLG UP 8 3R66 XIT1 ADX 7 FX1 7 3RKQ EXIT 7 0 21 3S5B # THIS SECTION IMPLEMENTS THE SAVECHN MACRO. IT EXPECTS ACOMMUNE1 17 3SK2 # TO CONTAIN THE JOB NUMBER. IT USES THE SAVEBLOK 10 3T4L # CODE AS A SUBROUTINE 4 3TJ= XK3 17 3W3W STOZ AWORK1(2) [SET FOR EXIT MARKER 8 3WHG CALL 6 SCOM 5 3X36 NXTBLK 8 3XGQ CALL 6 SJOBQ 8 3Y2B CALL 6 SCPAT 7 3YG2 LDX 2 3 16 3Y_L LDX 3 FPTR(2) [BLOCK FOLLOWING. 9 3_F= #SKI K6SAVEBLOK>99-99 11 3_YW TRACE ATYPE(3),SAVEBLTY 9 42DG LDX 6 ATYPE(3) 8 42Y6 SRL 6 12 19 437Y ... SBN 6 BSTB+BFREEW [FREE ANY BSTB/BFREEW BLOCKS 8 43MJ ... BNZ 6 NOTQ 19 44C2 FREECORE 3 [FREE ANY BSTB/FQBLK BLOCKS. 9 44WL BRN NXTBLK 11 45B= NOTQ SBN 6 #6000-BSTB-BFREEW 17 45TW BNG 6 SAVE [J IF NOT ACT BLOCK. 10 46*G SBN 6 AOLPT-#6000 16 46T6 BNZ 6 NOT [J IF NOT AOLPT. 9 47#Q LDX 6 JOBNO(3) 8 47SB SMO FX2 9 48#2 SBX 6 ACOMMUNE4 18 48RL BZE 6 NOT1 [J IF AOLPT OF SAME JOB. 7 49?= NOT LDN 3 0 7 49QW NOT1 LDX 7 3 9 4==G LOCKC 2,REFIND 9 4=Q6 CALL 1 REFIND 7 4?9Q MURDER 2 21 4?PB STO 7 EXEC3(2) [NON-ZERO (BUT VALUE NOT SIGNIFICANT) 21 4#92 UP [BLOCK IS AOLPT FOR SAME JOB - THIS WILL LEAD 20 4#NL [TO GEOERR-AOLPTSAV BACK IN SAVEJOB. 4 4*8= SAVE 16 4*MW CALL 7 SR1 [SAVE THE BLOCK. 9 4B7G BRN NXTBLK 21 4BM6 REFIND [SUBROUTINE TO REFIND CPAT FOR LOCKC 7 4C6Q LDX 5 1 8 4CLB CALL 6 SJOBQ 8 4D62 CALL 6 SCPAT 7 4DKL LDX 2 3 7 4F5= LDX 1 5 7 4FJW EXIT 1 0 4 4G4G #END 8 ____ ...53330441000600000000