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: INCEOT865)}} ====== INCEOT865 ====== (George Source) **Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLENG|ALTLENG]], [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BACKWAIT|BACKWAIT]], [[george:macro:BC|BC]], [[george:macro:BS|BS]], [[george:macro:BWZ|BWZ]], [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:CHANGEFILE|CHANGEFILE]], [[george:macro:CLOSE|CLOSE]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:DOWN|DOWN]], [[george:macro:FCBFIND|FCBFIND]], [[george:macro:FINDACTFB|FINDACTFB]], [[george:macro:FPUT|FPUT]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETACT|GETACT]], [[george:macro:HUNT|HUNT]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:JBWS|JBWS]], [[george:macro:JFNZ|JFNZ]], [[george:macro:JMBS|JMBS]], [[george:macro:LBW|LBW]], [[george:macro:LINKSET|LINKSET]], [[george:macro:LOCK|LOCK]], [[george:macro:LOCKC|LOCKC]], [[george:macro:LOSEPARS|LOSEPARS]], [[george:macro:MBC|MBC]], [[george:macro:MBS|MBS]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:MONOUTX|MONOUTX]], [[george:macro:NAME|NAME]], [[george:macro:OPENDIR|OPENDIR]], [[george:macro:OPENRELN|OPENRELN]], [[george:macro:OUTNULL|OUTNULL]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:OUTPARAM|OUTPARAM]], [[george:macro:PAIR|PAIR]], [[george:macro:POP|POP]], [[george:macro:READAGAIN|READAGAIN]], [[george:macro:REWRITE|REWRITE]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:SUICIDE|SUICIDE]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:UNLOCK|UNLOCK]], [[george:macro:UNNORM|UNNORM]], [[george:macro:UP|UP]], [[george:macro:VFREEW|VFREEW]], [[george:macro:VOP|VOP]] <code - INCEOT865.txt>22FL SEG INCEOT,860,FILESTORE,INCDUMP 22^= SEGENTRY K1INCEOT,X1INCEOT 23DW SEGENTRY K2INCEOT,X2INCEOT 23YG SEGENTRY K3INCEOT,X3INCEOT 24D6 SEGENTRY K4INCEOT,X4INCEOT 24XQ SEGENTRY K5INCEOT,X5INCEOT 25CB SEGENTRY K7INCEOT,X7INCEOT 25X2 SEGENTRY K8INCEOT,X8INCEOT 26BL SEGENTRY K9INCEOT,X9INCEOT 26W= # 27*W # THIS SEG COPES WITH VARIOUS RARE CASES AND EXCEPTIONS 27TG # ENCOUNTERED BY SEG INCWRITE. 28*6 # 28SQ # ENTRY 1 OUTPUTS MESSAGES FOR DUMPER EOT AND FAIL 29#B # IT THEN RE-ENTERS INCWRITE IF NECESSARY TO TIDY UP 29S2 # 2=?L # ENTRY 2 COPES WITH FINDING HOW MANY BLOCKS OF A SERIAL, REVERED 2=R= # FILE ARE TO BE DUMPED. ON COMING DOWN FROM INCWRITE, A FILE ENT 2?=W # EXISTS FOR THE FILE, AND ITS SUP DIR IS OPEN AT TOP LEVEL. INCEOT 2?QG # LOCATES THE FCB (REVERED FILES CANNOT BE CLOSED, BY DEFINITION) 2#=6 # AND PLACES IN ACOMMUNE1 THE NO OF BLOCKS ON BS ACTUALLY WRITTEN TO 2#PQ # 2*9B # ENTRY 3 DEALS WITH 'TO-BE-ERASED' USERS. ON COMING DOWN FROM 2*P2 # INCWRITE, THE SUP DIR IS POSITIONED ON THE BLOCKS REC OF THE DIR. 2B8L # INCEOT INSERTS THE USERNAME INTO THE FI FERUS BLOCK IN THE MISC 2BN= # CHAIN, IF IT IS NOT ALREADY IN. 2C7W # 2CMG # ENTRY 4 DEALS WITH OUTPUTTING THE NAMES OF FILES WHICH HAVE CORRUPT 2D76 # DIRECTORY ENTRIES 2DLQ # 2F6B # ENTRY 5 DEALS WITH ENSURING THAT CORRUPT AND FAILING FILES 2FL2 # DISCOVERED IN INCMON ARE CLOSEABANDONED. THE STANDARD READFAIL 2G5L # MECHANISM CANNOT DO THIS AS IT NORMALLY WOULD AS WE DO NOT HAVE 2GK= # THE FILE OPEN AT THE TIME IT IS DISCOVERED. THIS ENTRY IS NEVER 2H4W # USED FOR CORRUPT DIRECTORIES SINCE READFAIL WILL HAVE GEOERRED. 2HJG # 2J46 # ENTRY 7 IS USED TO DRIVE AN AUTONOMOUS CLOSE ACTIVITY SET UP BY 2JHQ # ENTRY 5. THE CLOSABANDONED FILE CANNOT BE CLOSED FROM THE DUMPER ACT 2K3B # AS THE CLOSE CODE WILL TRY TO OPEN THE DIRECTORY AND DUMPER ALREADY 2KH2 # HAS THIS OPEN. (NOTE THAT K6INCEOT IS RESERVED FOR THE TRACE LEVEL.) 2L2L # 2LG= # ENTRY 8 IS CALLED BY INCWRITE WHEN IT WANTS TO ESTABLISH A RESTART 2L^W # POINT BACK TO WHICH IT CAN 'UNDUMP' THE PARALLEL-MODE RESTORABLE INC. 2MFG # IT ZEROISES THE COUNT OF PERIS SINCE THE LAST RESTART POINT (HELD IN 2M^6 # THE FINC BLOCK) AND COPIES THE FINC BLOCK TO THE FINCCOPY BLOCK. 2NDQ # 2NYB # AFTER A CALL TO ENTRY 8 A CALL WILL BE MADE TO ENTRY 9 FOR EACH FILE 2PD2 # OR DIRECTORY DUMPED UNTIL THE NEED FOR THE RESTART POINT VANISHES. 2PXL # THIS ENTRY SETS UP A FI FDUMPFAB BLOCK WHICH ENABLES THE DIRECTORY 2QC= # ENTRY OF THE FILE TO BE 'DEUPDATED' AS FAR AS IS NECESSARY IF THE 2QWW # FILE HAS TO BE 'UNDUMPED'. 2RBG # 2RW6 # 2S*Q # CONSTANTS 2STB WEOT +AEOT [MESSAGE "DUMPER: MT %A END OF TAPE" 2T*2 WF +AWF [MESSAGE "DUMPER: MT %A WRITE FAIL" 2TSL # 2W#= # 2WRW # 2X?G # THE SUBROUTINE SCHECKINC DOES MOST OF THE WORK OF THE K1 ENTRY 2XR6 # IT IS CALLED ON X4 WITH X3-> A FINC BLOCK. IT CARRIES OUT ANY ACTION 2Y=Q # THAT IS NECESSARY AND LEAVES X3-> THE SAME FINC. 2YQB # 2^=2 SCHECKINC 2^PL SBX 4 FX1 329= LDX 0 INCACT(3) 32NW BZE 0 NEVENT [J IF FINC DOESNT NEED ATTENTION 338G BNG 0 YEVENT [J IF TWAS A WRITE FAIL 33N6 JBS NEVENT,3,BINCEOT [IGNORE EOT IF INCR BEING WOUND UP 347Q [COS OF PREVIOUS TAPE EVENT 34MB YEVENT 3572 NAME 3,FILE,FGET [FOR REFERENCE 35LL JBC NPARALLEL,,BPARALLEL 366= # 36KW # SOME SPECIAL ACTION MAY BE NECESSARY IN PARALLEL MODE 375G # 37K6 JBS YREST,3,BINCGENRES 384Q JBS NPARALLEL,3,BINCFIN 38JB # 3942 # IT'S A FILE-ONLY INCR WHICH HAS HIT EOT OR FAIL FOR THE FIRST TIME. 39HL # IF WE HAVE WRITTEN STUFF TO THE RESTORABLE INCREMENT SINCE THE LAST 3=3= # POINT AT WHICH WE CAN SUSPEND THE INCREMENT WE MUST 'UNDUMP' THE 3=GW # FILES CONCERNED, BACKSPACE THE INCREMENT TAPES AND RESET THE FINC 3?2G # TO THE STATE IT WAS THEN. 3?G6 # 3?^Q HUNTW 3,FI,FDUMPFAB 3#FB BNG 3 NPARALLEL [J IF NO RESTART NEEDED 3#^2 MORESTART 3*DL MFREEW FILE,FABSNB [WILL BE REPLACED BY THE FDUMPFAB 3*Y= [WHEN WE HAVE FINISHED WITH IT 3BCW NAME 3,FILE,FABSNB 3BXG OPENDIR (GEOERR),CLEAN,QUERY [LOCATE DIRENT OF DUMPED FILE OR DIR 3CC6 TESTRPN2 OK,NOKREPLY [J IF CANT FIND IT 3CWQ MHUNTW 3,FILE,ENT 3DBB # 3DW2 # ESSENTIALLY, WE HAVE TO RESTORE THE EINC AND EFILNUM WORDS, 3F*L # WHICH ARE CUNNINGLY PRESERVED IN TWO EXTRA WORDS AT THE END OF 3FT= # THE RESTART 'FABSNB'. 3G#W # 3GSG MHUNTW 2,FILE,FABSNB 3H#6 SMO A1(2) 3HRQ LDX 0 A1(2) 3J?B STO 0 EINC(3) [DEUPDATE INCR NO 3JR2 SMO A1(2) 3K=L LDX 0 A1+1(2) 3KQ= STO 0 EFILNUM(3) [AND FILE NUMBER 3L24 ... STOZ EINCLOOK(3) 3L9W BS 3,BEDUMP [REINSERT TO BE DUMPED BIT 3LPG NAME 3,FILE,FWB [NOW WE REWRITE THE DIRENT 3M96 LDEX 0 ECOPS(3) 3MNQ BZE 0 NBSP [BACKSPACE OVER BLOCKS RECORD IF ANY 3N8B BACKSPACE 3NN2 NBSP 3P7L REWRITE 3PM= MFREEW FILE,FWB 3Q6W CLOSETOP 3QLG NOKREPLY 3R66 # 3RKQ # BEFORE CONTINUING WE CHECK TO SEE IF THE NEW FABS IS FOR A 3S5B # TERMINAL FILE. IF IT IS WE SHRINK IT TO POINT TO ITS SUP. DIR 3SK2 # 3T4L MHUNTW 3,FILE,FABSNB 3TJ= SMO A1(3) 3W3W LDX 0 A1-6(3) 3WHG ERX 0 HCOLUSER 3X36 BZE 0 YESADIR 3XGQ LDN 0 6 3Y2B SBS 0 A1(3) 3YG2 YESADIR 3Y^L HUNTW 3,FI,FDUMPFAB [LOOP IF THERE IS MORE TO DO 3^F= BPZ 3 MORESTART 3^YW # 42DG # NEXT WE REWIND THE TAPES TO 1 BLOCK BEFORE THE POINT AT WHICH 42Y6 # WE CAN SUSPEND PRODUCTION OF IT 43CQ # 43XB MHUNTW 3,FILE,FINC 44C2 JBC (GEOERR),3,BINCGENRES 44WL [THERE MUST BE A FINC ABOUT BESIDES 45B= [OUR DISGUISED ONE, AND IT MUST BE 45TW [RESTORABLE 46*G LDX 7 INCPERIS(3) [NO OF PERIS DONE SINCE RESTART POINT 46T6 BZE 7 (GEOERR) [J IF NONE 47#Q ADN 7 1 47SB NEXTBSP 48#2 LDN 0 3 [BACKSPACE MODE 48RL STO 0 ACOMMUNE1(2) 49?= DOWN MTDUMP,2 [CARRY OUT TRANSFER 49QW MHUNTW 3,FILE,FINC 4?9Q BCT 7 NEXTBSP [LOOP IF MORE BSPS TO DO 4?PB # 4#92 # WE NOW READ THE NEXT BLOCK (PUTTING OUR TAPES AT THE RESTART POINT) 4#NL # AND CHECK THAT WE ARE CORRECTLY POSITIONED (I.E. THAT ALL TAPES READ 4*8= # A 20 WORD QUALIFIER BLOCK WHICH WAS A START OR END SENTINEL WITH 4*MW # EITHER A FILE NUMBER OF ZERO OR THE CORRECT ONE FOR THIS POINT) 4B7G # 4BM6 LDN 0 0 4C6Q STO 0 ACOMMUNE1(2) [READ MODE 4CLB LDN 0 20 4D62 STO 0 ACOMMUNE2(2) [LENGTH OF TRANSFER 4DKL MHUNTW 3,FILE,FQUAL 4F5= LOCKC 3,SFINDFQUAL [LOCK IT 4FJW MHUNTW 3,FILE,FQUAL 4G4G LDN 0 ESENTYP(3) [START ADDR 4GJ6 STO 0 ACOMMUNE3(2) 4H3Q DOWN MTDUMP,2 [CARRY OUT TRANSFER 4HHB MHUNTW 3,FILE,FINC 4J32 LDX 0 INCACT(3) 4JGL BNG 0 X1REENT [J IF TAPE FAILED 4K2= LDX 6 INCCOPIES(3) [NO OF MTS TO CHECK 4KFW NEXTACT 4K^G FINDACTFB 2,,ACTDOC,ADUMPT,,BPTR [NEXT DTA BACK ALONG ACT CHAIN 4LF6 LDX 0 ADTSN(2) 4LYQ BXU 0 FGETSER(3),NEXTACT [J IF NOT THE ONE WERE LOOKING FOR 4MDB JMBS MISREAD,2,BRWLBLOCK,BRWTM [ MISREAD IF TM OR LONG BLOCK 4MY2 LDX 2 FX2 4NCL ADN 3 FGETLEN 4NX= BCT 6 NEXTACT [J IF MORE TAPES TO CHECK 4PBW MHUNTW 3,FILE,FQUAL 4PWG UNLOCK 3 [UNLOCK BUFFER 4QB6 LDX 0 ESENTYP(3) 4QTQ ERX 0 GSIGN 4R*B BZE 0 YSENT [J IF AN END SENT 4RT2 LDX 0 ESENTYP(3) 4S#L SBN 0 6 4SS= BNZ 0 MISREAD [J IF NOT A START SENT EITHER 4T?W YSENT 4TRG MHUNTW 2,FI,FINCCOPY [GET DUMPED COPY OF FINC BLOCK 4W?6 LDX 0 ESENFN(3) [PICK UP BLOCK NO 4WQQ BZE 0 YBLNUMOK [OK IF ZERO( COMP SF) 4X=B LDX 6 ESENTYP(3) 4XQ2 BNG 6 YENDSENT [J IF END SENT 4Y9L ADN 0 1 [FOR START SENT WE EXPECT INCBLNUM 4YP= [OF FINCCOPY=ESENFN OF SENT +1 4^8W BRN YBEGSENT 4^NG YENDSENT 5286 ADN 0 2 [FOR END SENT INCBLNUM=ESENFN+ 52MQ ADX 0 ESENBP(3) [ESENBP+2 537B YBEGSENT 53M2 BXU 0 INCBLNUM(2),MISREAD [OTHERWISE MUST TALLY WITH FINC 546L [AS DUMPED AT RESTART POINT 54L= YBLNUMOK 555W MHUNTW 3,FILE,FINC 55KG LDX 0 ALOGLEN(3) 5656 LDN 2 A1(2) 56JQ LDN 3 A1(3) 574B SMO 0 57J2 MOVE 2 0 [UNDUMP FINC 583L BRN NPARALLEL 58H= # 592W # IF CHECKING REVEALS THAT WE HAVE A MISPOSITIONED TAPE DUE TO HW FAULT 59GG # OR IF A FAIL OCCURS DURING THE PROCESS, WE REENTER INCEOT FROM THE 5=26 # BEGINNING TO COPE WITH THE NEW STATE OF AFFAIRS. 5=FQ # 5=^B MISREAD 5?F2 MONOUT ADUMPMISR [MISREAD MESSAGE 5?YL MHUNTW 3,FILE,FINC 5#D= LDX 0 GSIGN 5#XW ORX 0 INCACT(3) [SHOW SOMETHING HAS HAPPENED TO REST 5*CG X1REENT 5*X6 MHUNTW 3,FILE,FGET [RESET STATE AT CHAPTER ENTRY 5BBQ NAME 3,FILE,FINC 5BWB LDX 2 FX2 5CB2 LDX 1 FX1 5CTL BRN X1INCEOT 5D*= # 5DSW # IF THE TAPE EVENT OCCURRED ON THE RESTORABLE INCREMENT WE FREE ANY 5F#G # RESTART DATA AND MARK THE FILE ONLY INCREMENT AS ALSO NEEDING WINDING 5FS6 # UP. 5G?Q # 5GRB YREST 5H?2 HUNTW 3,FI,FDUMPFAB 5HQL BNG 3 NFDUMPS 5J== FREECORE 3 5JPW BRN YREST 5K9G NFDUMPS 5KP6 MHUNTW 3,FILE,FINC 5L8Q BS 3,BINCFIN 5LNB # 5M82 # ALL SPECIAL PARALLEL ONLY STUFF HAS NOW BEEN DONE SO WE UPDATE THE 5MML # DISGUISED FINC TO REFLECT ITS CHANGED STATUS AND OUTPUT END OF 5N7= # TAPE AND FAIL MESSAGES AS APPROPRIATE. 5NLW # 5P6G NPARALLEL 5PL6 MHUNTW 3,FILE,FGET [X3->DISGUISED FINC 5Q5Q LBW 3,BINCEOT,6 [REMEMBER WHETHER THIS IS 2ND TIME 5QKB [THRU FOR THIS FINC 5R52 MBS 3,BINCEOT,BINCFIN [CHANGE INCR STATUS 5RJL BC 3,BINCGENRES 5S4= STOZ INCACT(3) [CLEAR FAIL AND EOT BITS 5SHW LDN 7 0 [OFFSET DOWN FINC 5T3G LDX 5 INCCOPIES(3) [NO OF MTS TO CHECK 5TH6 NEXTTAPE 5W2Q LDX 2 FX2 5WGB NEXTDTA 5X22 FINDACTFB 2,,ACTDOC,ADUMPT,,BPTR [X2-> NEXT DTA BACK ALONG ACT C 5XFL LDX 0 ADTSN(2) 5X^= SMO 7 5YDW BXU 0 FGETSER(3),NEXTDTA [SKIP IF NOT DTA WE WANT 5YYG LDCT 0 #060 5^D6 ANDX 0 CPRW1(2) [PICK OUT FAIL AND EOT BITS 5^XQ BZE 0 NOWT [J IF NOWT WRONG 62CB STOZ CPRW1(2) [CLEAR DTA REPLY WORD 62X2 SLL 0 3 63BL BNG 0 TFAIL [J IF IT WAS A FAIL 63W= JBWS NOWT,6 [J IF NOT 1ST TIME (IGNORE EOT) 64*W LDN 3 WEOT [PREPARE EOT MESSAGE 64TG BRN TEOT 65*6 TFAIL 65SQ #UNS FPARTRES 66#B BS 3,BINCWRFAIL [SHOW INCR FAILED 66S2 LDN 3 WF [SET UP WRITEFAIL MESSAGE 67?L TEOT 67R= OUTPACK ADTSN(2),1,TSN [OUTPUT TSN AS A PARAMETER 68=W ADX 3 FX1 68QG MONOUTX 0(3) [OUTPUT MESSAGE 69=6 NOWT 69PQ MHUNTW 3,FILE,FGET 6=9B ADN 7 FGETLEN [UPDATE OFFSET DOWN FINC 6=P2 BCT 5 NEXTTAPE [J IF MORE TAPES TO LOOK AT 6?8L # 6?N= # THATS THE LOT , WE RENAME BACK OUR DISGUISED FINC AND EXIT 6#7W # 6#MG NEVENT 6*76 NAME 3,FILE,FINC 6*LQ ADX 4 FX1 6B6B EXIT 4 0 6BL2 # 6C5L # 6CK= SFINDFQUAL [LOCATES FQUAL FOR LOCKC 6D4W MHUNTW 2,FILE,FQUAL 6DJG EXIT 1 0 6F46 # 6FHQ # 6G3B X1INCEOT 6GH2 6H2L VFREEW FILE,ENT [THROW AWAY ANY FILE ENT BLOCK 6HG= [IT IS DIFFICULT TO TELL WHEN 6H^W [ONE WILL BE AROUND - HENCE VFREEW 6JFG VFREEW FILE,FINTER5 [LIKEWISE. THIS MAY HAVE BEEN 6J^6 [LEFT AROUND BY INCVFCHK 6KDQ LOSEPARS [THERE COULD BE PARAMS SET UP 6KYB [THROW THEM AWAY 6LD2 TOPFCB2 1 6LXL JBC NOD,1,BFDIR [J IF TOP FILE NOT A DIR 6MC= MBC 1,BFCORE,BFFREZ [CLEAR THESE BITS AS CLOSE DOESNT 6MWW CLOSETOP [CLOSE IT 6NBG BACKWAIT [IN CASE OF 'READAUTO'S 6NW6 RELFRB [WE MAY HAVE BEEN DUMPING A FILE 6P*Q HUNT 3,FILE,FRB [SO WE FREE ANY FRB'S,BREAD'S 6PTB BNG 3 RELBREAD [OR BFREEW'S 6Q*2 FREECORE 3 6QSL BRN RELFRB 6R#= RELBREAD 6RRW HUNT 3,BSTB,BREAD 6S?G BNG 3 RELBFREEW 6SR6 FREECORE 3 6T=Q BRN RELBREAD 6TQB RELBFREEW 6W=2 HUNT 3,BSTB,BFREEW 6WPL BNG 3 NOD 6X9= FREECORE 3 6XNW BRN RELBFREEW 6Y8G NOD 6YN6 BC ,BFILEINC 6^7Q LDX 1 FX1 6^MB MHUNTW 3,FILE,FINC 7272 CALL 4 SCHECKINC [EXAMINE AND DEAL WITH FIRST FINC 72LL JBC NOTPLL,,BPARALLEL 736= HUNT2 3,FILE,FINC 73KW CALL 4 SCHECKINC 745G NOTPLL 74K6 ... ACROSS INCMON,5 [GET INCMON TO WRITE END SENTS 754Q [AND THEN RETURN UP INTO INCEND 75JB # 7642 # 76HL X2INCEOT 773= FCBFIND 3,NOREV [X3->FCB OF FILE 77GW LDX 0 FBLMOD(3) 782G SBN 0 FBLKS-A1+1 78G6 BPZ 0 NNEG 78^Q LDN 0 0 79FB NNEG 79^2 STO 0 ACOMMUNE1(2) 7=DL UP [BACK TO INCWRITE 7=Y= NOREV [REV FILE NOT OPEN??? 7?CW GEOERR BRIEFPM,REVCLOSE 7?XG # 7#C6 # 7#WQ SFINDFER [S/R USED TO LOCATE FI/FERUS BLOCK FOR ALTLENG. 7*BB [X2->BLOCK. CALLED ON X1. 7*W2 HUNTMISB 2,FI,FERUS 7B*L EXIT 1 0 7BT= # 7C#W X3INCEOT 7CSG CALL 1 SFINDFER [X2->FERUS BLOCK 7D#6 LDX 4 FERUSNUM(2) [COUNT OF ENTRIES 7DRQ BZE 4 NOTINFER [J IF NONE 7F?B STEPAGAIN [X3->NAME REC 7FR2 NEXTFER 7G=L LDX 0 EUSE1N(3) [SEE IF USERNAME IN FERUS BLOCK 7GQ= BXU 0 FERUSER(2),NOTHIS 7H9W LDX 0 EUSE2N(3) 7HPG BXU 0 FERUSER+1(2),NOTHIS 7J96 LDX 0 EUSE3N(3) 7JNQ BXE 0 FERUSER+2(2),YINFER [J IF IN FERUS ALREADY 7K8B NOTHIS 7KN2 ADN 2 FERUSLEN 7L7L BCT 4 NEXTFER [TRY NEXT ENTRY IF ANY 7LM= NOTINFER [USERNAME IS NOT IN FI/FERUS BLOCK 7M6W POP NOTINFER,,FERUSALT [WAIT IF NEC WHILE ERASE FINISHES 7MLG [ITS OWN ALTLENG TO FERUS BLOCK 7N66 CALL 1 SFINDFER [X2->FERUS 7NKQ LDX 4 ALOGLEN(2) 7P5B ADN 4 FERUSLEN 7PK2 ALTLENG 2,4,SFINDFER [INCREASE FERUS 7Q4L STEPAGAIN 7QJ= CALL 1 SFINDFER [X2->FERUS 7R3W LDN 1 FERUSRH(2) 7RHG ADX 1 FERUSRH(2) 7S36 LDN 0 EUSE1N(3) 7SGQ MOVE 0 3 [MOVE USERNAME INTO FERUS BLOCK 7T2B STO 4 FERUSRH(2) [UPDATE RECORD HEADER 7TG2 LDN 0 1 7T^L ADS 0 FERUSNUM(2) [UPDATE COUNT OF ENTRIES 7WF= VOP ,FERUSALT [RELEASE THE SEMA CONTROLLING 7WYW [ALTLENGS TO FERUS BLOCK 7XDG YINFER 7XY6 UP [GO BACK TO INCWRITE 7YCQ # 7YXB # 7^C2 OUTFILE [SR TO OUTPUT CHAR STRING FROM ADATA CREADL 7^WL [X7=NO OF WDS OF DATA,CALLED ON X6,COORDINATES. 82B= SBX 6 FX1 82TW MHUNTW 3,ADATA,CREADL 83*G OUTPARAM A1(3),CPDATA,ADATA,CREADL 83T6 ADX 6 FX1 84#Q EXIT 6 0 84SB # 85#2 X4INCEOT 85RL STEPAGAIN [X3-> A RECORD OF DIRENT 86?= BZE 3 NOTNAME [J IF END OF FILE 86QW BWZ ERESN(3),NAMEREC [J IF THIS THE NAME REC 87=G NOTNAME 87Q6 BACKSPACE 889Q BRN X4INCEOT 88PB NAMEREC 8992 READAGAIN [GET NAME RECORD AS FILE FRB 89NL SETNCORE 10,2,FILE,FABSNB [SET UP FABSNB FOR UNNORM 8=8= TOPFCB 3 [X3->FCB OF SUP DIR 8=MW LDN 6 FME1(3) 8?7G LDN 7 A1+1(2) 8?M6 MOVE 6 3 [MOVE ACROSS USERNAME 8#6Q MHUNTW 3,FILE,FRB 8#LB LDN 6 ELOC1(3) 8*62 LDN 7 A1+4(2) 8*KL MOVE 6 5 [MOVE ACROSS LOCAL NAME 8B5= LDX 0 ELAN(3) [AND LANGUAGE 8BJW STO 0 A1+9(2) 8C4G LDN 0 10 8CJ6 STO 0 A1(2) [SET UP FABS HEADER 8CRY ... OUTNULL [ FIRST PARAMETER OF ADUDFILE IS IGNOR 8D3Q MHUNTW 3,ADATA,CREADL 8DHB STOZ A1(3) [ZERO COUNT OF CHARS IN UNNORM BUFFER 8F32 UNNORM TWO [UNNORMALIZE ENTRANT DESCRIPTIO 8FGL CALL 6 OUTFILE [OUTPUT FILENAME AS PARAMETER 8G2= MONOUT ADUDFILE 8GFW MHUNTW 3,FILE,FRB 8G^G BWZ EUSE1(3),NOTADIR4 [J IF FILE NOT A DIR 8HF6 CALL 6 OUTFILE [OUTPUT FILENAME AS PARAMETER 8HYQ MHUNTW 3,FILE,FRB 8JDB OUTPACK EUSE1(3),3,USERNAME 8JY2 MONOUT ALIAS [TELL OPS OF USERNAME OF DUDFILE 8KCL NOTADIR4 8KX= MFREEW FILE,FRB 8LBW MFREEW FILE,FABSNB 8LGR ... MHUNTW 1,FILE,FINC [ SIMULATE WRITE FAIL ON 8LLN ... LDCT 0 #400 [ (RESTORABLE) INCREMENT 8LQK ... ORS 0 INCACT(1) 8LWG UP 8MB6 # 8MTQ # 8N*B XENT7 PAIR INCEOT,7 8NK8 ...[ CODE TO CLOSEABANDON A FAILED OR CORRUPT FILE 8NT2 X5INCEOT 8P#L ... FCBFIND 3,NOTFOUND [ X3 ->FCB JUMP IF FILE NOT OPEN 8PJD ... JBS YINC,3,BFCLOSEAB [ IGNORE IF ALREADY CLOSEABED 8PS= ... LDX 0 CTOPEN(3) 8Q?W ... BZE 0 NOTFOUND 8QRG ... JBC NOTFOUND,3,BFMCOP [ JUMP IF OPEN IN COPY MODE 8R?6 ... BS 3,BFCLOSEAB [ SET CLOSEABANDON MARKER 8RQQ ... BRN YINC 8S=B ...NOTFOUND 8SQ2 ... MHUNTW 3,FILE,ENT 8T9L ... MHUNTW 2,FILE,FLOCNB [ MOVE NAME FROM ENT 8TP= ... LDN 0 ELOC1(3) 8W8W ... LDN 1 A1(2) 8WNG ... MOVE 0 5 8X86 ... LDX 0 ELAN(3) 8XMQ ... STO 0 A1+5(2) 8Y7B ... BACKSPACE 8YM2 ... OPENRELN (GEOERR),READR,LEAVE,DIROPEN,ERASING [ TRY TO OPEN 8^6L ... TOPFCB2 2 [ FAILED FILE AND 8^L= ... BS 2,BFCLOSEAB [ MARK TO BE CLOSEABANDONED 925W ... GETACT BSA,AUTCLOSE [ SET UP ACTIVITY TO CLOSE FILE 92KG ... LDX 2 BPTR(2) [ 9356 ... LINKSET 2,XENT7(1) [ GIVE IT LINK TO K7INCEOT 93JQ ... LOCK 2 [ MUST BE LOCKED FOR CHANGEFILE 944B ... LDX 2 BPTR(2) 94J2 ... CHANGEFILE 2 [ TRANSFER FILE TO AUTOCLOSE 953L ... LDX 2 BPTR(2) 95H= ... FPUT [ 962W ...YINC 969? ... LDN 5 1 [FILE OPEN - BLOCK CORRUPT 96CN ... MHUNTW 3,FILE,ENT [HUNT FILE-ENT BLOCK 96L5 ... JFNZ NOD,3,FEFSNO [IGNORE IF ALIEN FILE 96SG ... HUNTW 1,FILE,FINCPROC [ 972X ... BNG 1 NTTTP [FILE DOES NOT EXIST 979# ... LDX 7 FINCTRD(1) [NO. OF TTTP REDUMPED INCS 97CP ... BZE 7 NTTTP [J IF NONE 97L6 ... LDX 4 EINC(3) [X4 = INC NO 97SH ...NPROC 982Y ... SMO 7 989* ... BXE 4 INCLISTS-1(1),PROC [J IF INCR TO BE REDUMPED FOOR TTTP 98CQ ... BCT 7 NPROC 98L7 ... BRN NTTTP 98SJ ...PROC 992^ ... DOWN INCPROC,1 [DOWN TO REORGANISE THE FINCPROC 999B ...NTTTP 99D= MHUNTW 1,FILE,FINC 99XW JBC NFLINC,,BFILEINC 9=CG HUNT2 1,FILE,FINC,1 9=X6 NFLINC 9?BQ BS 1,BINCRFAIL [SET FAILED FILE BIT 9?WB BC 2,EXDUMPFAIL [CLEAR FLAG SET BY READFAIL 9#B2 UP [BACK TO INCMON. WE WILL CONTINUE 9#TL [DUMPING THE FILE BUT THE DIRENT 9**= [WILL NOT BE UPDATED. THIS PRESERVES 9*SW [THE DUMPTAPE FORMAT 9DQL # 9F== # 9FPW X7INCEOT 9G9G CLOSE 9GP6 SUICIDE 9H8Q # 9HNB # 9J82 X8INCEOT [ESTABLISH A RESTART POINT FOR A 9JML [PLLL MODE RESTABLE INCREMENT. 9K7= MHUNTW 3,FILE,FINC [X3->RESTORABLE INC FINC 9KLW STOZ INCPERIS(3) [CLEAR COUNT OF PERIS SINCE LAST 9L6G [RESTART POINT 9LL6 LDN 4 A1(3) [FIRST WORD TO BE COPIED 9M5Q MHUNTW 2,FI,FINCCOPY [X2->DESTINATION BLOCK FOR COPY 9MKB LDN 5 A1(2) [X5->1ST WORD 9N52 SMO ALOGLEN(3) [SIZE OF FINC 9NJL MOVE 4 0 [COPY IT 9P4= UP [EXIT 9PHW # 9Q3G # 9QH6 X9INCEOT [RECORDS RESTART DATA FOR A FILE OR 9R2Q [DIR DUMPED TO THE RESTORABLE INCR 9RGB [AFTER A CALL TO ENTRY 8. THE RESTART 9S22 [DATA IS A FDUMPFAB BLOCK IN THE FORM 9SFL [OF A FABSNB WITH TWO EXTRA WORDS 9S^= [HOLDING INC AND FILE NO FROM OLD 9TDW [DIRENT, WHICH IS HELD IN A FWB 9TYG [AT CALL OF ENTRY 8. 9WD6 MHUNTW 3,FILE,FABSNB [X3->DUMPER FABSNB. AT THIS POINT 9WXQ [IT IS SET TO INDICATE THE SUPERIOR 9XCB [OF THE ENTRANT CONCERNED. 9XX2 LDX 7 A1(3) [COMPUTE REQUIRED BLOCK SIZE. NEED 9YBL ADN 7 8 [AN EXTRA ELEMENT + 2 WORDS 9YW= SETUPCORE 7,3,FI,FDUMPFAB [SET UP BLOCK 9^*W MHUNTW 1,FILE,FABSNB 9^TG LDN 4 A1(1) =2*6 LDN 5 A1(3) =2SQ SBN 7 8 =3#B SMO 7 =3S2 MOVE 4 0 [COPY FABSNB INTO FDUMPFAB =4?L MHUNTW 1,FILE,FWB [X1->NAME RECORD =4R= ... ADX 3 7 [A1(3)->START OF NEW ELEM IN FDUMPFAB =5=W LDX 0 EINC(1) [PUT EINC + EFILNUM IN 2 WORDS AFTER =5QG STO 0 A1+6(3) [NEW ELEMENT. =6=6 ... LDX 0 EFILNUM(1) =6PQ STO 0 A1+7(3) =79B LDX 0 EUSE1(1) =7P2 BNG 0 YESDIR [IF DIR JUMP TO PUT USERNAME IN =88L [NEW ELEMENT. =8N= LDN 4 ELOC1(1) =97W LDN 5 A1(3) =9MG MOVE 4 5 [TRANSFER LOCAL NAME ==76 LDX 0 ELAN(1) ==LQ STO 0 A1+5(3) [AND LANG CODE =?6B SETHEADER =?L2 ADN 7 6 [INCREMENT HEADER TO INCLUDE NEW ELEM =#5L MHUNTW 3,FI,FDUMPFAB =#K= STO 7 A1(3) [STORE IT =*4W UP =*JG # =B46 YESDIR =BHQ LDX 0 HCOLUSER [PUT 4H000: IN 1ST WORD OF NEW ELEM =C3B STO 0 A1(3) =CH2 LDN 4 EUSE1(1) =D2L LDN 5 A1+1(3) =DG= MOVE 4 3 [TRANSFER USERNAME =D^W ... STOZ A1+4(3) [AND ZEROISE THE REST =FFG ... STOZ A1+5(3) =GDQ BRN SETHEADER =GYB # =HD2 # =HXL MENDAREA 20,K99INCEOT =JC= # =JWW #END ^^^^ ...053367770001 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In