INCEOT865

(George Source)

Macros used: ACROSS, ALTLENG, BACKSPACE, BACKWAIT, BC, BS, BWZ, BXE, BXU, CHANGEFILE, CLOSE, CLOSETOP, DOWN, FCBFIND, FINDACTFB, FPUT, FREECORE, GEOERR, GETACT, HUNT, HUNT2, HUNTMISB, HUNTW, JBC, JBS, JBWS, JFNZ, JMBS, LBW, LINKSET, LOCK, LOCKC, LOSEPARS, MBC, MBS, MENDAREA, MFREEW, MHUNTW, MONOUT, MONOUTX, NAME, OPENDIR, OPENRELN, OUTNULL, OUTPACK, OUTPARAM, PAIR, POP, READAGAIN, REWRITE, SEG, SEGENTRY, SETNCORE, SETUPCORE, STEPAGAIN, SUICIDE, TESTRPN2, TOPFCB, TOPFCB2, UNLOCK, UNNORM, UP, VFREEW, VOP

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