Show pageBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: SAVEFILE860)}} ====== SAVEFILE860 ====== (George Source) **Macros used:** [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BS|BS]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CHANGEACT|CHANGEACT]], [[george:macro:CHANGEFILE|CHANGEFILE]], [[george:macro:FCAJO|FCAJO]], [[george:macro:FILEMOVE|FILEMOVE]], [[george:macro:FINDACTNO|FINDACTNO]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FREEZESAVE|FREEZESAVE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNT|HUNT]], [[george:macro:HUNTX|HUNTX]], [[george:macro:JBS|JBS]], [[george:macro:JOBLOCK|JOBLOCK]], [[george:macro:LOCK|LOCK]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:SAVETHAW|SAVETHAW]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:STEP|STEP]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TRACE|TRACE]], [[george:macro:UNLOCK|UNLOCK]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]] <code - SAVEFILE860.txt>22FL ... SEG SAVEFILE,860,SECTION FILE,CLOSE 22^= ...# 23DW ...# 24XQ # 25CB # SAVES AND UNSAVES FILES OPEN TO A GIVEN ACTIVITY 25X2 # BUT NOT WORKFILES OR COMMUNICATION FILES (EXCEPT THE 26BL # MONITORING FILE, OPEN IN SYSTCOM MODE) 26W= # K1SAVEFILE IS THE SAVING ENTRY, FROM THE MACRO SAVEACTF 27*W # K2SAVEFILE IS THE UNSAVE ENTRY, FROM THE MACRO RESTACTF 27TG # 28*6 SEGENTRY K1SAVEFILE,XENT1 28SQ SEGENTRY K2SAVEFILE,XENT2 294J ...# 29#B SVB1 4H#### 29S2 # 2=?L SVA [CHANGES THE SAVING FILE TO THE ACTIVITY BEING SAVED, & MAKES 2=R= [THAT THE CURRENT ACTIVITY 2?=W [SET UP A FUTILITY BLOCK TO HOLD THE CURRENT ACNUM, AND THE LINK 2?QG [PAIR OF THE ACTIVITY BEING SAVED, AND ITS ACCUMULATORS 2#=6 SBX 6 FX1 2#PQ SETNCORE 12,1,FI,FUTILITY 2*9B JOBLOCK ACOMMUNE4(2),3 2*P2 BPZ 3 OKJOB [J IF JOB BLOCK FOUND 2B8L GEOERR BRIEFPM,JOBLOCK? 2BN= OKJOB 2C7W FCAJO 3 [FIND THE CPA 2CMG MHUNTW 1,FI,FUTILITY [X1->FUTILITY 2D76 LDX 4 ACNUM(2) 2DLQ STO 4 A1(1) [NO. OF THE SAVING/UNSAVING ACTIVITY 2F6B LDN 4 ALINK1(3) 2FL2 LDN 5 A1+1(1) 2G5L MOVE 4 HLINK [LINK 2GK= LDN 4 ACC3(3) 2H4W LDN 5 A1+3(1) 2HJG MOVE 4 5 [PRESERVE THE ACCUMULATORS 2J46 LDX 4 AMFMS(3) 2JHQ STO 4 A1+8(1) [PRESERVE 2K3B STOZ AMFMS(3) [STOP ANY OP TO YET-UNSAVED MON FILE 2KH2 CHAIN 1,3 [AFTER LOCKED ACTIVITY 2L2L LOCK 3 2LG= CHANGEFILE 3,-1 2L^W UNLOCK 3 2MFG CHANGEACT 3 2M^6 ADX 6 FX1 2NDQ EXIT 6 0 2NYB # 2PD2 SVB [FINDS THE ORIGINAL ACTIVITY AND CHANGES THE SAVING FILE TO IT 2PXL [AND THEN MAKES IT THE CURRENT ACTIVITY 2QC= SBX 6 FX1 2QWW MHUNTW 1,FI,FUTILITY 2RBG LDX 7 A1(1) 2RW6 FINDACTNO 3,7 [X3->THE SAVING ACTIVITY 2S*Q CHAIN 1,3 [GIVE IT THE FUTILITY 2STB LOCK 3 2T*2 CHANGEFILE 3,,-1 [AND THE SAVING FILE 2TSL UNLOCK 3 2W#= CHANGEACT 3 [AND MAKE IT THE CURRENT ACTIVITY 2WRW ADX 6 FX1 2X?G EXIT 6 0 2XR6 # 2Y=Q SVSTEP [STEP APPENDS A RECORD TO THE SAVING FILE AND HUNTS THE BLOCK 2YQB [BEING SAVED. 2^=2 SBX 6 FX1 2^PL ADN 1 2 [RECORD LENGTH 329= LDX 4 1 32NW STEP -1,0(1) 338G LDX 1 4 33N6 STO 1 0(3) [INSERT RECORD HEADER 347Q SBN 1 2 34MB SLL 7 12 [BLOCK TYPE 3572 HUNTX 2,7 35LL BPZ 2 SVS1 [BRANCH IF FOUND 366= GEOERR 1,SAVEMISS 36KW SVS1 375G #SKI K6SAVEFILE>599-599 37K6 TRACE 7,SAVEBLOK 384Q ADX 6 FX1 38JB EXIT 6 0 3942 # 39HL SVMOVE [MOVES TO-BE-SAVED DATA INTO ITS SAVING RECORD 3=3= LDN 5 2(3) 3=GW MOVE 4 0(1) 3?2G SMO FX2 3?G6 LDX 1 AWORK1 3?^Q STO 1 1(3) [SET RECORD CATEGORY WORD 3#FB EXIT 6 0 3#^2 # 3*DL RSTEP [STEP READS FROM THE SAVING FILE. GOES UP IF NOT A FILE RECORD 3*Y= [AND UPPLUS1 IF EMPTY 3BCW #SKI K6SAVEFILE>599-599 3BXG TRACE ATYPE(2),REOPBLOK 3CC6 SBX 6 FX1 3CWQ STEP -1 3DBB BNZ 3 RST1 [J IF NOT AT END OF SAVING FILE 3DW2 LDN 5 0 3F*L BRN RST3 3FT= RST1 LDCT 0 #44 3G#W ANDX 0 1(3) [CATEGORY WORD 3GSG BNZ 0 RST2 [J IF A FILE RECORD 3H#6 LDN 5 1 3HRQ RST3 LDX 4 ACNUM(2) [THE BEING-UNSAVED ACTIVITY 3J?B HUNT 1,FILE,FABSNB 3JR2 FREECORE 1 3K=L CALL 6 SVB [CHANGE TO THE SAVING ACT 3KQ= FINDACTNO 2,4 [X2->THE BEING-UNSAVED ACTIVITY 3L9W MHUNTW 3,FI,FUTILITY 3LPG LDN 0 A1+1(3) 3M96 LDN 1 ALINK1(2) 3MNQ MOVE 0 HLINK [LINK 3N8B LDN 0 A1+3(3) 3NN2 LDN 1 ACC3(2) 3P7L MOVE 0 5 3PM= LDX 0 A1+8(3) 3Q6W STO 0 AMFMS(2) [RESTORE 3QLG FREECORE 3 [THE FUTILITY 3R66 BNZ 5 RST4 [J IF NOT AT END OF THE SAVING FILE 3RKQ UP 3S5B RST4 UPPLUS 1 3SK2 RST2 ADX 6 FX1 3T4L EXIT 6 0 3TJ= # 3W3W RMOVE [CLEARS THE NEWLY SET UP BLOCK,MOVES IN DATA FROM THE SAVING 3WHG [RECORD AND SETS A1 3X36 STO 4 A1(2) 3XGQ SBN 4 1 3Y2B LDX 7 4 3YG2 LDX 1 5 3Y^L RM1 STOZ 0(1) 3^F= ADN 1 1 3^YW BCT 4 RM1 42DG LDX 1 7 42Y6 LDN 4 2(3) 43CQ MOVE 4 0(1) 43XB EXIT 6 0 44C2 # 44WL # SAVEACTLF ENTRY 45B= # ON ENTRY, THE TOP LEVEL FILE OPEN TO THE SAVING ACTIVITY IS THE 45TW # SAVING FILE (LANGUAGE ####) AND ACOMMUNE1 CONTAINS THE 46*G # ADDRESS OF A LOCKED ACTIVITY WHICH IS BEING SAVED 46T6 # THE FILES OPEN TO THAT ACTIVITY ARE FROZEN AND CLOSED BY 47#Q # FREEZESAVE, WHICH LEAVES A 10 WORD FABSNB, AND A COPY OF THE 47SB # FILE'S FCA IN A FI/FCA BLOCK 48#2 # EACH FILE SAVED HAS A PAIR OF RECORDS IN THE SAVING FILE - FABSNB 48RL # AND FCA. EACH RECORD HAS A CATEGORY WORD AFTER THE HEADER - 49?= # BIT3 SET - THIS IS A FILE RECORD, BIT6 UNSET - THE FIRST OF 49QW # THE PAIR 4==G XENT1 4=Q6 CALL 6 SVA [CHANGE SAVING FILE AND ACTIVITY 4?9Q SV4 TOPFCB 3 4?PB #SKI K6SAVEFILE>599-599 4#92 TRACE FLOC1(3),SAVEFILE 4#NL LDX 0 FLAN(3) 4*8= SMO FX1 4*MW TXU 0 SVB1 [IDENTIFY SAVING FILE BY LANGUAGE 4B7G BCS SV1 [J IF NOT SAVING FILE 4BM6 CALL 6 SVB 4C6Q MHUNTW 1,FI,FUTILITY 4CLB FREECORE 1 4D62 UP 4DKL SV1 LDX 0 FCOMM(3) 4F5= ANDN 0 4 4FJW BZE 0 SV2 [J IF NOT CAREFUL 4G4G GEOERR BRIEFPM,CARESAVE 4GJ6 SV2 4H3Q FREEZESAVE [FREEZE THE TOP LEVEL FILE & CLOSE IT 4HHB # BLOCKS TO-BE-SAVED CHAINED AFTER CURRENT ACTIVITY 4J32 LDCT 1 #40 [BIT3 - CATEGORY WORD FOR FIRST 4JGL STO 1 AWORK1(2) [RECORD FOR THIS FILE 4K2= # SAVE THE FABSNB 4KFW LDN 1 FABSAVENO [NO OF WORDS TO MOVE 4K^G LDN 7 FILE+FABSNB 4LF6 CALL 6 SVSTEP [SET UP RECORD 4LYQ LDN 4 FABSAVE(2) 4MDB CALL 6 SVMOVE [MOVE USER AND LOCAL NAME 4MY2 FREECORE 2 4NCL LDCT 1 #44 [BITS3,6 - CATEGORY W-RD FOR FILE 4NX= STO 1 AWORK1(2) [RECORD NOT THE FIRST FOR THIS FILE 4PBW # SAVE THE FCA 4PWG LDN 1 FCASAVENO [NO OF WORDS TO MOVE 4QB6 LDN 7 FI+FCA 4QTQ CALL 6 SVSTEP [SET UP RECORD 4QX^ ... LDX 0 FIRB(2) [J IF FREADBLOCK -IVE 4R28 ... BNG 0 SV3 4R4C ... LDN 0 FBLKS 4R6L ... SBS 0 FIRB(2) [RELATIVISE FREADBLOCK 4R8T ...SV3 4R?4 ... BS 2,BFCASAVEREL [SET 4R*B LDN 4 FCASAVE(2) 4RT2 CALL 6 SVMOVE [SAVE FREADBLOCK - FGENE-AL2 4T?W FREECORE 2 4TRG BRN SV4 4W?6 # 4WQQ # RESTACTF ENTRY 4X=B # ON ENTRY, THE TOP LEVEL FILE OPEN TO THE UNSAVING ACTIVITY IS THE 4XQ2 # SAVING FILE, AND ACOMMUNE1 CONTAINS THE ADDRESS OF A LOCKED 4Y9L # ACTIVITY WHICH IS BEING UNSAVED. WE ARE POSITIONED ON THE 4YP= # SECOND FILE RECORD 4^8W # A FABSNB AND A FI/FCA ARE SET UP FROM EACH RECORD PAIR, THE MODE 4^NG # OF OPENING WHEN SAVED IS EXTRACTED FROM THE FCA AND THE FILE 5286 # IS REOPENED 52MQ XENT2 537B CALL 6 SVA [CHANGE SAVING FILE AND ACTIVITY 53M2 # SET UP FABSNB 546L BACKSPACE -1 54L= R1 LDN 4 FABSAVENO+1 [LOGICAL LENGTH 555W SETUPCORE 4,2,FILE,FABSNB 55KG CALL 6 RSTEP [NEXT RECORD 5656 HUNT 2,FILE,FABSNB 56JQ LDN 5 FABSAVE(2) 574B CALL 6 RMOVE [COMPLETE FABSNB 57J2 #SKI K6SAVEFILE>599-599 583L TRACE A1+4(2),REOPFILE 58H= # SET UP FCA BLOCK 592W LDN 4 FCASAVENO+1 [LOGICAL LENGTH 59GG SETUPCORE 4,2,FI,FCA 5=26 CALL 6 RSTEP [NEXT RECORD 5=FQ HUNT 2,FI,FCA 5=^B LDN 5 FCASAVE(2) 5?F2 CALL 6 RMOVE 5?K= ... JBS R4,2,BFCASAVEREL [J IF NEW RELATIVISED SAVED FORMAT 5?PG ... LDN 0 A1+2 5?TQ ... ADS 0 FIRB(2) [ADJUST FREADBLOCK 5#22 ... BRN R5 5#6= ...R4 5#=G ... LDX 0 FIRB(2) 5#BQ ... BNG 0 R5 [J IF FREADBLOCK -IVE 5#H2 ... LDN 0 FBLKS 5#M= ... ADS 0 FIRB(2) [ADJUST FREADBLOCK 5#RG ...R5 5#XW HUNT 1,FI,FCA 5*CG LDX 0 FG1(1) [EXTRACT MAIN MODE FROM FGENERAL1 5*X6 LDN 4 1 5BBQ LDN 5 7 5BWB R2 BNG 0 R3 [J IF READ MODE 5CB2 SLL 0 1 5CTL ADN 4 1 [MAIN MODE IS ADDITIVE 5D*= BCT 5 R2 [CHECK TOP 7 BITS 5DSW GEOERR BRIEFPM,MODE??? 5F#G R3 SLL 4 9 [MAIN MODE IN BITS 12-14 5FS6 LDCT 0 #004 5G?Q ORX 4 0 [ERASING MODE 5GRB LDX 0 FG1(1) 5H?2 ANDX 0 BIT11 5HQL BZE 0 NOTCOM [J IF NOT OPEN FOR COMMUNICATION 5J== LDCT 0 #002 [THIS MUST BE THE MON. FILE 5JPW ORX 4 0 [SYSTCOM MODE 5K9G NOTCOM 5KP6 SAVETHAW SVBRK,4 5L8Q LDX 3 FILERING(2) 5LNB MHUNTW 2,FI,FCA 5M82 LDN 4 FCASAVE(2) 5MML LDN 5 FREADBLOCK(3) 5N7= LDN 1 FCASAVENO 5NLW MOVE 4 0(1) [RESTORE FREADBLOCK-FGENERAL2 5P6G FREECORE 2 [FCA 5PL6 FILEMOVE 0,-2 [KEEP THE ORIGINAL ORDER 5Q5Q MHUNT 1,FILE,FABSNB 5QKB FREECORE 1 [FABSNB 5R52 BRN R1 5RJL SVBRK GEOERR BRIEFPM,SAVEBRK 5SHW #END ^^^^ ...04547632000100000000 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In