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