{{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]]
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