BMSJRNL866

(George Source)

Macros used: ACROSS, BACKREAD, BACKSPACE, BMCHECKRF, BXE, BXGE, BXU, CHAIN, CHAIND, CLOSETOP, CREATEB, DELETE, DOWN, FPUT, FREECORE, FSHTEST, FULLBPAS, GEOERR, GETACT, GETDIR, HUNT, HUNT2J, JBC, JBS, JMBS, KEEPREP, LINK, LINKSET, LOCK, LOCKC, MBC, MBS, MENDAREA, MFREEW, MHUNT, MHUNTW, MONOUT, NAME, NAMEX, NEWDIR, OPEN, PROPTEST, PUTREP, PUTREP2, READ, READAGAIN, REPLACE, SEG, SEGENTRY, SETNCORE, SETREP2, SKIP, STARTACT, STEP, STEPREWRITE, STEPWRITE, SUICIDE, TESTNAMX, TESTREP2, TESTRPN2, TOPFCB, TRACEIF, UNLOCK, UP

BMSJRNL866.txt
22FL          SEG      BMSJRNL,7,GEORGE PORTER,BMAP 
22^=          SEGENTRY K1BMSJRNL,Z1BMSJRNL  
23DW          SEGENTRY K2BMSJRNL,ZBMCHECKRF 
23NN ...      SEGENTRY K3BMSJRNL,Z3BMSJRNL  
23QL ...#DEF CURREC=ASUPUSER
23SJ ...#DEF ENDUSED=CURREC+1   
23WG ...#DEF ENDBLOCK=ENDUSED+1 
23YG    [   
245N ...NSWAPID        +ASWAPID 
24=W ...[   
24D6    NJOURNAL       +4   
24XQ                   12HJOURNAL   
25CB    NSYSJ          +10  
25X2                   12HSYSTEM
26BL ...               12HJOURNAL   
26W=                   1,1,4HC1 
27*W    NLOC           12HSJFILE
27TG                   1,1  
28*6    NLAN           4HB1 
28G# ...XJRNLINK
28MG ...      LINK     BMSJRNL,3
28NB ...PMSJ           4HPMSJ   
28NS ...PMSQ           4HPMSQ   
28P= ...[   
28Q6 ...SUB1
28R2 ...      MHUNTW   2,FI,FUTILITY
28RW ...      EXIT  1  0
28SQ    [   
29#B    STEPWRITE   
29S2          SBX   6  FX1  
2=?L          STEPWRITE 
2=R=          ADX   6  FX1  
2?=W          EXIT  6  0
2?QG    [   
2#=6    RDELETE 
2#PQ          SBX   6  FX1  
2*9B          LDX   3  7
2*P2          ADN   7  1
2B8L          BZE   3  RDLOOP   
2BN=          READ  
2C7W          MHUNTW   1,FILE,FRB   
2CMG          NGN   0  #100                [B0-17   
2D76          ANDX  0  EDESCRIBE+A1(1)  
2DLQ          BNZ   0  RNOTBLOCKS          [J IF INDEX OR TRAPS 
2F6B          NAME     1,BSTB,FULLB 
2FL2          FULLBPAS 1,2  
2G5L          BRN      RDSKIP   
2GK=    RNOTBLOCKS  
2H4W          FREECORE 1
2HJG    RDSKIP  
2J46          SBN   3  1
2JHQ          BZE   3  RDLOOP   
2K3B          SKIP     ,0(3)
2KH2    RDLOOP  
2L2L          DELETE
2LG=          BCT   7  RDLOOP   
2L^W          ADX   6  1
2MFG          EXIT  6  0
2M^6    [   
2NDQ    Z1BMSJRNL      [ENTRY TO SORT OUT SJFILES   
2NYB    [   
2PD2          MHUNT    2,FILE,FABSNB
2PXL          ADN   1  NJOURNAL 
2QC=          ADN   2  A1   
2QWW          MOVE  1  4
2RBG          OPEN     XBR,GENERAL,QUERY   [OPEN :JOURNAL   
2RW6          TESTREP2 OK,XISTS            [J IF IT EXISTS  
2S*Q          MHUNTW   2,FILE,FABSNB
2STB          ADN   1  NSYSJ
2T*2          ADN   2  A1   
2TSL          MOVE  1  10   
2W#=          CREATEB  2
2WRW          ADN   2  CEUSE1   
2X?G          ADN   1  NJOURNAL+1   
2XR6          MOVE  1  3
2Y=Q          NEWDIR   XBR                 [ATTEMPT TO CREATE :JOURNAL  
2YQB          TESTRPN2 OK,XBR              [GEOERR IF NEWDIR UNSUCCESSFUL   
2YXH ...      TRACEIF  K6BMSJRNL,99,,2,CE JDIR  
2Y^= ...      BRN      Z1BMSJRNL
33N6    STARTACT
347Q          LDX   2  GSIGN
34MB    #SKI  K6BMSJRNL>199-199 
3572    (   
35LL          ANDX  2  JSJPTR   
366=          BZE   2  XBR                 [SHOULD BE -VE AT THIS STAGE 
36KW    )   
375G          ERX   2  JSJPTR              [CLEAR B0
37K6          FPUT                         [JOURNAL ACTIVITY
384Q          ADN   2  FPROPUSER
38JB          SMO      JSJPTR   
3942          LDN   3  JNLUSER  
39HL          MOVE  2  3
3=3= ...      SUICIDE   
3=GW    XISTS   
3=J4 ...      GETACT   BSA,AUTOMAP  
3=K= ...      LDX   3  BPTR(2)  
3=LD ...      LINKSET  3,XJRNLINK(1)
3=ML ...      LOCK     3
3=NS ...      CHANGEFI 3
3=Q2 ...      LDX   3  BPTR(2)  
3=R8 ...      UNLOCK   3
3=SB ...      LDX   2  3
3=TJ ...      FPUT  
3=WQ ...      ACROSS   BMJLIST,1
3=XY ...Z3BMSJRNL   
3=Y3 ...[   
3=Y6 ...[******************************************************  Z3BMSJRNL  
3=Y9 ...[  FIRST TRY TO RECOVER JOURNAL CHAIN AND USAGE 
3=Y# ...[  BLOCKS FROM THE LOWEST NUMBER SWAPFILE - P.M.
3=YC ...[  SHOULD HAVE WRITTEN THEM THERE.  
3=YG ...[   
3=^= ...[   
3=^* ...[  FIRST FIND LOWEST NUMBER SWAPFILE.   
3=^D ...[   
3=^H ...      LDX   3  ALFTP               [ ALFTABLE POINTER   
3=^L ...      LDX   5  ALOGLEN(3)   
3=^P ...      ADX   5  3                   [  => TO END OF BLOCK
3=^S ...      LDN   6  0                   [  RESIDENCE NO. 
3=^X ...TRYNXT  
3?22 ...      LDX   0  A1(3)
3?25 ...      BNG   0  NXTNTRY             [ J. IF NO RES OF THIS NUMBER
3?28 ...      LDCT  0  #200                [ CHECK IF SWAP RESIDENCE
3?2? ...      ANDX  0  A1(3)
3?2B ...      BNZ   0  SWAPFND             [ J. IF LOWEST SWAP RESIDENCE
3?2F ...NXTNTRY 
3?2J ...      ADN   6  1                   [ ELSE UPDATE RES. NO.   
3?2M ...      ADN   3  2                   [ AND POINTER
3?2Q ...      TXL   3  5                    [ CHECK IF PAST END OF BLOCK
3?2T ...      BCS      TRYNXT               [ J. BACK TO TRY NEXT IF NOT
3?2Y ...      CALL  4  XBR                  [ IF NO SWAP RESIDENCE FOUND
3?33 ...SWAPFND                             [ THEN J. TO GEOERR OTHERWISE   
3?36 ...                                    [ SWAP RESIDENCE NO. NOW IN X6  
3?39 ...      STO   6  AWORK1(2)            [ REMEMBER RES. NO. 
3?3# ...      STOZ     AWORK2(2)            [ INITIAL BLOCK NUMBER TO READ  
3?3C ...      SETNCORE 2048,3,FI,FUTILITY,1 [ SET UP BUFFER BLOCK FOR READS 
3?3G ...      LOCKC    3,SUB1               [ LOCK IT FOR DURATION  
3?3K ...      CALL  1  SUB1 
3?3N ...      LDN   5  A1(2)                [ ADDRESS OF START OF BLOCK 
3?3R ...      LDN   6  A1+2048(2)           [ ADDRESS OF END OF BLOCK   
3?3W ...      LDX   2  FX2  
3?3^ ...      STO   5  CURREC(2)            [ INITIALISE PTR. TO CURRENT REC.   
3?44 ...      STO   5  ENDUSED(2)           [ AND PTR. TO END OF USED SPACE 
3?47 ...      STO   6  ENDBLOCK(2)          [ AND PTR. TO END OF BLOCK  
3?4= ...      LDN   7  0                    [ SWITCH WORD SET ZERO  
3?4* ...READBLOX
3?4D ...      LDX   0  ENDBLOCK(2)          [ CALCULATE SPARE SPACE 
3?4H ...      SBX   0  ENDUSED(2)           [ IN BUFFER 
3?4L ...      SBN   0  512                  [ MORE THAN 512 ?   
3?4P ...      BPZ   0  ROOMENUFF            [ J. IF THERE IS ENOUGH ELSE
3?4S ...                                    [ MOVE CURRENT RECORD ETC. TO   
3?4X ...                                    [ START OF THE BUFFER   
3?52 ...      CALL  1  SUB1                 [   
3?55 ...      LDN   5  A1(2)
3?58 ...      LDX   2  FX2                  [ SET UP POINTERS IN X4 AND X5  
3?5? ...      LDX   4  CURREC(2)            [ TO MOVE USED DATA TO START OF 
3?5B ...      NGN   3  513                  [ OF BLOCK  
3?5F ...      ADX   3  ENDUSED(2)           [ CALCULATE AMOUNT OF   
3?5J ...      SBX   3  CURREC(2)            [ DATA TO MOVE  
3?5M ...SEEIFMORE   
3?5Q ...      BNG   3  NOTMORE              [ J. IF < 513 ELSE  
3?5T ...      MOVE  4  512                  [ MOVE 512 WORDS
3?5Y ...      ADN   4  512  
3?63 ...      ADN   5  512                  [ UPDATE POINTERS   
3?66 ...      SBN   3  512                  [ LESS 512 ALREADY MOVED
3?69 ...      BRN      SEEIFMORE
3?6# ...NOTMORE 
3?6C ...      ADN   3  513                  [ RESET AMOUNT TO MOVE  
3?6G ...      MOVE  4  0(3)                 [ MOVE REST OF USED DATA
3?6K ...      ADX   5  3
3?6N ...      STO   5  ENDUSED(2)           [ UPDATE END OF USED SPACE PTR. 
3?6R ...      CALL  1  SUB1 
3?6W ...      LDN   0  A1(2)
3?6^ ...      LDX   2  FX2  
3?74 ...      STO   0  CURREC(2)            [ UPDATE CURRENT RECORD PTR.
3?77 ...ROOMENUFF   
3?7= ...[   
3?7* ...[*************************************************************  
3?7D ...[ THERE IS NOW ENOUGH SPACE IN THE BUFFER FOR THE NEXT  
3?7H ...[ 512 WORDS TO BE READ IN FROM THE SWAPFILE 
3?7L ...[   
3?7P ...      BACKREAD BSET,BSBS,RFAIL,AWORK1(2),,ENDUSED(2)
3?7S ...      LDN   0  512  
3?7X ...      ADS   0  ENDUSED(2)           [ UPDATE END OF USED SPACE PTR. 
3?82 ...      LDN   0  4
3?85 ...      ADS   0  AWORK2(2)            [ UPDATE NEXT BLOCK NO. TO READ 
3?88 ...      BNG   7  NXTRECORD            [ J. IF NOT ON FIRST BLOCK  
3?8? ...      ORX   7  GSIGN                [ SHOW FIRST BLOCK READ 
3?8B ...      CALL  1  SUB1 
3?8F ...      LDX   0  A1(2)                [ FIRST WORD OF DATA
3?8J ...      LDX   1  FX1  
3?8M ...      SBX   0  PMSJ(1)              [ CHECK IF 'PMSJ'   
3?8Q ...      BNZ   0  RFAIL                [ J. TO GIVE UP 
3?8T ...      LDX   0  A1+1(2)              [ PICK UP CONVERSION IDENT. 
3?8Y ...      SBX   0  NSWAPID(1)           [ IF NOT SAME AS CURRENT
3?93 ...      BNZ   0  RFAIL                [ J. TO GIVE UP 
3?94 ...      LDX   0  A1+2(2)             [IS THIRD WORD   
3?95 ...      SBX   0  PMSQ(1)             [PMSQ
3?96 ...      BNZ   0  NOPMSQ              [J IF NO 
3?97 ...      LDX   0  A1+3(2)             [ELSE STORE SEQUENCE NO  
3?98 ...      STO   0  ERLSEQNO            [IN FIXED
3?99 ...      LDN   0  A1+4(2)             [ADDRESS FIRST RECORD
3?9= ...      BRN      UPPTR
3?9? ...NOPMSQ  
3?9# ...      LDN   0  A1+2(2)              [ ADDRESS OF FIRST RECORD   
3?9* ...UPPTR   
3?9B ...      LDX   2  FX2  
3?9C ...      STO   0  CURREC(2)            [ UPDATE CURRENT RECORD PTR.
3?9D ...[  IF GENERAL (OR PARTIAL INVOLVING :JOURNAL) RESTORE   
3?9F ...[  IS BEING DONE, DON'T RECOVER DATA FROM SWAPFILE. 
3?9G ...[   
3?9H ...      LDX   0  GINCTSN  
3?9J ...      BNZ   0  NDOFSWAP            [IF GEN. RES. DONE   
3?9K ...      TOPFCB   3                   [OR IF PARTIAL RESTORE   
3?9L ...      JBS      NDOFSWAP,3,BFPARTRES  [INVOLVING :JOURNAL
3?9M ...#   
3?9N ...NXTRECORD   
3?9P ...      LDX   3  CURREC(2)
3?9Q ...      LDX   0  0(3)                 [ IF FIRST WORD IS 'PMSJ'   
3?9R ...      BXE   0  PMSJ(1),NDOFSWAP     [ THEN NO MORE DATA TO CHECK
3?9S ...      LDX   0  ASIZE(3)             [ CHECK SIZE OF THIS BLOCK  
3?9W ...      BZE   0  RFAIL                [ ASIZE CANT BE ZERO
3?=5 ...      BNG   0  RFAIL               [OR NEGATIVE 
3?=* ...      SBN   0  1024                 [ CHECK IF ASIZE > 1024 
3?=D ...      BPZ   0  RFAIL                [ TREAT AS FAIL IF CORRUPT  
3?=F ...      LDX   0  ASIZE(3) 
3?=G ...      ADX   0  3
3?=H ...      BXGE  0  ENDUSED(2),READBLOX  [ J.IF REC. GOES INTO NEXT BLOCK
3?=J ...      LDX   0  ASIZE(3) 
3?=K ...      ADS   0  CURREC(2)            [ UPDATE CURRENT RECORD POINTER 
3?=L ...      LDX   4  ALOGLEN(3)           [ LOGICAL LENGTH OF RECORD  
3?=M ...      BZE   4  RFAIL                [ ALOGL CANT BE ZERO
3?=P ...      LDN   6  8                    [ AND   
3?=S ...      ADX   6  4                    [ MUST BE < OR = ASIZE-9
3?=X ...      BXGE  6  ASIZE(3),RFAIL       [ IF NOT, TREAT AS FAIL 
3??2 ...      LDN   0  1024 
3??5 ...      SBX   0  4                    [ CHECK IF ALOGLEN < 1024   
3??8 ...      BNG   0  RFAIL                [ TREAT AS READFAIL IF CORRUPT  
3??? ...      SETUPCOR 4,2,FILE,FTAB        [ SET UP BLOCK FOR DATA 
3??B ...      LDX   0  ATYPE(3)             [ BLOCK TYPE
3??F ...      ANDX  0  HALFTOP              [ MASK OUT TOP 12 BITS  
3??J ...      BXE   0  FILEPLUSFCB,NORENAME [ DONT RENAME IF ITS FCB AS 'OPEN'  
3??M ...                                    [ MAY FREE FCBS FROM ACT. CHAIN 
3??Q ...      NAMEX    2                    [ RENAME BLOCK  
3??T ...NORENAME
3??Y ...      LDX   0  BACK1(3) 
3?#3 ...      STO   0  BACK1(2)             [ TRANSFER BACKING STORE
3?#6 ...      LDX   0  BACK2(3)             [ HOME FOR THIS BLOCK   
3?#9 ...      STO   0  BACK2(2) 
3?## ...      LDN   4  A1(3)
3?#C ...      LDN   5  A1(2)                [ SET UP PTRS. FOR MOVE 
3?#G ...      LDX   3  ALOGLEN(2)           [ LOGICAL LENGTH OF USED DATA   
3?#K ...      SBN   3  513                  [ CHECK IF > 512 WORDS TO MOVE  
3?#N ...NYMORE  
3?#R ...      BNG   3  NMORE                [ J. IF < 512 TO MOVE   
3?#W ...      MOVE  4  512                  [ ELSE MOVE 512 
3?#^ ...      ADN   4  512  
3?*4 ...      ADN   5  512                  [ AND UPDATE POINTERS   
3?*7 ...      SBN   3  512  
3?*= ...      BRN      NYMORE   
3?** ...NMORE   
3?*D ...      ADN   3  513                  [ RESET AMOUNT TO MOVE  
3?*H ...      MOVE  4  0(3)                 [ MOVE REST OF DATA 
3?*L ...      LDX   2  FX2  
3?*P ...      BRN      NXTRECORD            [ LOOP FOR NEXT RECORD  
3?*S ...RFAIL   
3?*X ...      MONOUT   JSJTRUNC             [INFORM OF LOST DATA IF FAILED  
3?B2 ...NDOFSWAP
3?B5 ...[   
3?B8 ...[***************************************************  NDOFSWAP  
3?B? ...[ ALL DATA HAS BEEN READ FROM THE SWAPFILE - FIRST  
3?BB ...[ OVERWRITE RECOVERED DATA ON SWAPFILE, THEN
3?BF ...[ FREE THE BACKING STORE ON ALL SWAPFILES, NEXT 
3?BJ ...[ CHAIN ANY GMON/JRNL BLOCKS AT FRONT OF JOURNAL
3?BM ...[ CHAIN.(N.B. WHEN READ BACK AND SET UP IN ACTIVITY 
3?BQ ...[ CHAIN THE ORDER OF THE BLOCKS WAS REVERSED, SO
3?BT ...[ BY CHAINING EACH AT FRONT OF JOURNAL CHAIN THE
3?BY ...[ ORDERING IS CORRECTED)
3?C3 ...[   
3?C6 ...      LDN   7  GZERO
3?C9 ...      LDN   6  0                   [ OVERWRITE SWAPFILE BLOCK 0 
3?C# ...      BACKWRIT BSET,BSBS,NORECOVRY,AWORK1(2),EX6,EX7
3?CC ...NORECOVRY   
3?CD ...#UNS FSHTEST                       [ OMIT IF IN TESTING ENVIR. AS   
3?CF ...#SKI                               [ THIS WILL HAVE BEEN DONE EARLIER   
3?CG ...      DOWN     SETLIST,2           [ TO FREEBAX SWAPFILES   
3?CK ...NXTGJRNL
3?CN ...      HUNT     2,GMON,JRNAL        [ FIND NEXT GMON/JRNAL BLOCK 
3?CR ...      BNG   2  XLASTGJRNL          [ J. IF NONE LEFT
3?CW ...      STOZ     JWAITER(2)          [ SO IF NON-AUTO MESS.JRNL ACT WONT  
3?C^ ...                                   [ TRY TO WAKE IT UP - 'COS ITS GONE !
3?D4 ...      CHAIND   2,BSJC              [ CHAIN IN JOURNAL CHAIN 
3?D7 ...      BRN      NXTGJRNL 
3?D= ...XLASTGJRNL  
3?D* ...[   
3?DD ...[**************************************************  XLASTGJRNL 
3?DH ...[ ALL GMON/JRNL BLOCKS SHOULD NOW BE IN JOURNAL CHAIN   
3?DL ...[ ANY OTHER BLOCKS LEFT ARE FILE BLOCKS 
3?DP ...[   
3?DS ...      SETNCORE 6,3,FILE,FLOCNB  
3?DX ...      PROPTEST  
3?G6          LDN   0  ACOMMUNE1(2) 
3?^Q          LDN   1  FPROPUSER(2) 
3#FB          MOVE  0  3
3#^2          LDN   5  0
3*DL          LDN   4  0
3*Y=          LDX   0  GSIGN
3BCW          STO   0  AWORK1(2)           [1ST SEARCH  
3BXG          STO   0  AWORK2(2)           [NO FAILS
3CC6    SCRUB   
3CWQ          STEP  
3DBB          BZE   3  NDJRNL              [END OF :JOURNAL 
3DW2          LDX   0  EDESCRIBE(3) 
3F*L          BNZ   0  SCRUB               [J IF NOT NAME   
3FT=          TESTNAMX 3,NLOC(1),ELOC1N(3),SCRUB,6  
3G#W    #                                   JUMP IF LOCAL NAME DIFFERENT
3GSG          LDX   0  AWORK1(2)
3H#6          BPZ   0  SJCLOSE             [J IF SECOND TIME ROUND  
3HRQ          LDX   0  ELAN-A1(3)   
3J?B          BXU   0  NLAN(1),QDELETE     [WRONG LANGUAGE  
3JR2          JBC      QDELETE,3,BNSERIAL  [J IF NOT SERIAL OR IF MULT  
3K=L ...      JMBS     QDELETE,3,BNMDF,BNMULT   
3KQ=          LDX   0  EVERSION-A1(3)   
3L9W          BZE   0  QDELETE             [NOT CREATED BY JOURNAL ACT  
3LPG          BXGE  5  EVERSIONN(3),SCRUB  [J UNLESS HIGHEST VERSION YET FOUND  
3M96          LDX   5  EVERSION-A1(3)   
3MNQ          LDX   4  EGEN-A1(3)   
3N8B          BRN      SCRUB
3NN2    QDELETE 
3P7L          TRACEIF  K6BMSJRNL,99,299,EGEN-A1(3),NOTSJFIL 
3PM=          TRACEIF  K6BMSJRNL,199,299,ELAN-A1(3),ELAN
3Q6W          TRACEIF  K6BMSJRNL,199,299,EINF1-A1(3),EINF1  
3QLG          TRACEIF  K6BMSJRNL,199,299,EVERSION-A1(3),EVERSION
3R66          LDEX  7  ECOPSN(3)
3RKQ          ADX   7  ENUSEN(3)
3S5B          CALL  6  RDELETE             [DELETE FILE 
3SK2          BRN      SCRUB
3T4L    SJCLOSE                            [FNISH CLOSE IN PROGRESS BEORE BREAK 
3TJ=          JBC      SCRUB,3,BNREVERE    [J UNLESS REVERED
3W3W          TRACEIF  K6BMSJRNL,99,299,EGEN-A1(3),SJFCLOSE 
3WHG          LDX   0  EDATE
3X36          STO   0  EWRITDAYN(3) 
3XGQ          STO   0  EDLAN(3) 
3Y2B          LDX   0  CLEANCT  
3YG2          STO   0  EWRITTIMEN(3)
3Y^L          STO   0  ETLAN(3) 
3^F=          MBC      3,BNREVERE,BNBMUWB   
3^LD ...      LDN   0  FILESIZE 
3^RL ...      DEX   0  EINF3N(3)
3^SY ...      LDX   1  BFILE
3^W= ...      LDX   0  FGMTBS(1)          [ G.M.T. FROM MASTER'S FCB
3^XJ ...      STO   0  EGMTLAN(3)         [ UPDATE DIRECTORY ENTRY. 
3^YW          STEPREWRITE   
42DG          BRN      SCRUB
42Y6    NDJRNL  
43CQ          LDX   0  AWORK1(2)
43XB          BPZ   0  SCLOSE              [J IF SECOND TIME THRU   
44C2          TRACEIF  K6BMSJRNL,99,299,5,MAXEVERS  
44WL          TRACEIF  K6BMSJRNL,99,299,4,MAXSJGEN  
45B=          BZE   5  SCLOSE              [J IF NO SJFILES FOUND   
45TW          STOZ     AWORK1(2)
46*G          MHUNTW   2,FILE,FLOCNB
46T6          ADN   1  NLOC 
47#Q          ADN   2  A1   
47SB          MOVE  1  6
48#2    SEARCH  
48RL          TRACEIF  K6BMSJRNL,99,299,5,NEXEVERS  
49?=          MHUNTW   1,FILE,FLOCNB
49QW          STO   4  A1+4(1)             [GENERATION REQUIRED 
4==G          GETDIR   1
4=Q6          TRACEIF  K6BMSJRNL,99,299,ACOMMUNE9(2),GDE REP
4?9Q          TESTRPN2 OK,NOFILE           [CANT HAPPEN 1ST TIME
4?PB          MHUNTW   1,FILE,ENT   
4#92          JBC      NDFOUND,1,BEREVERE  [J UNLESS REVERED
4#NL          LDEX  0  ECOPS(1) 
4*8=          BZE   0  NDFOUND             [OFFLINE SO IGNORE   
4*MW          BMCHECKRF 
4B7G          MHUNTW   1,FILE,ENT   
4BM6          TESTREP2 FULL,SFULL,SHORT,NDFOUND,CORRUPT,REVFAIL 
4C6Q    SDELETE 
4CLB          TRACEIF  K6BMSJRNL,99,299,EVERSION(1),SJF DEL 
4D62          LDEX  7  ECOPS(1) 
4DKL          ADX   7  ENUSE(1) 
4F5=          FREECORE 1
4FJW          BACKSPACE 
4G4G          CALL  6  RDELETE             [DELETE FILE IF EMPTY OR FAILED 1ST B
4GJ6    NOFILE  
4H3Q          SBN   5  1
4HHB          BZE   5  SCLOSE              [NO MORE - SO GIVE UP
4J32          SBN   4  1                   [REDUCE GEN TO CORRESPOND
4JGL          BNZ   4  SEARCH              [IF ZERO CORRECT TO 4095 
4K2=          LDN   4  4095 
4KFW          BRN      SEARCH   
4K^G    REVFAIL 
4LF6          LDX   0  ACOMMUNE1(2) 
4LYQ          BNZ   0  SLOSTDATA           [J IF NOT FAILED ON 1ST BLOCK FF FILE
4MDB          STOZ     AWORK2(2)           [TO MARK FAILED ON 1ST BLOCK 
4MY2          BRN      SDELETE  
4NCL    SLOSTDATA   
4NX=          FREECORE 1
4PBW          MONOUT   JSJTRUNC 
4PWG          BRN      SETUP
4QB6    NDFOUND 
4QTQ          FREECORE 1
4R*B    SETUP   
4RT2          LDX   2  JSJPTR   
4S#L          STO   4  JGEN(2)  
4SS=          STO   5  JVERSION(2)  
4T?W          FASTREWI 3
4TRG          BRN      SCRUB               [TIDY UP ANY REMAINING REVERED FILES 
4W?6    SCLOSE  
4WGX ...      TOPFCB   3
4WHH ...      JBC      NONLOST,3,BFPARTRES  
4WJ7 ...      MONOUT  JSJTRUNC  
4WJR ...NONLOST 
4WKG ...      MBS      3,BFALLINCS,BFDIRUPDATE  
4WQQ          CLOSETOP  
4X=B          BRN      STARTACT 
4XQ2    SFULL   
4Y9L          LDX   0  AWORK2(2)
4YP=          BNG   0  NDFOUND             [OK IF PREVIOUS FILE DIDNT FAIL ON 1S
4^8W          BRN      SLOSTDATA           [ELSE DATA MAY HAVE BEEN LOST
4^NG    #PAGE   
5286    [   
52MQ    ZBMCHECKRF     [ENTRY FOR BMCHECKRF MACRO   
537B    [   
53M2          READ                         [BLOCKS RECORD   
546L          MHUNTW   1,FILE,FRB   
54L=          LDEX  7  A1(1)
555W          SBN   7  2
55KG          BZE   7  MPTYFILE            [J IF FILE HAS NO BLOCKS 
5656          LDN   5  0                   [BLOCK MOD   
56JQ    READBLOCK   
56K3 ...[   
56K# ...[***************************************************  READBLOCK 
56KK ...[ FIRST FIND THE FCB FOR THIS SJFILE IF RECOVERED   
56KW ...[   
56L7 ...      LDX   1  FX1  
56LD ...      LDX   2  FX2  
56LP ...      STOZ     AWORK4(2)           [ SHOW USING ORIGINAL BLOCK  
56M2 ...      MHUNTW   3,FILE,ENT          [ PRESENT ON ENTRY   
56M? ...      LDX   0  EGEN(3)  
56MJ ...      STO   0  AWORK3(2)           [ REMEMBER GENERATION BEING CHECKED  
56MT ...      LDX   3  2
56N6 ...NXTFCB                             [ FIND NEXT FCB IF THERE IS ONE  
56NC ...      STO   3  2                   [ REMEMBER LAST FCB FOUND
56NN ...      HUNT2J   3,FILE,FTAB,,NOTRECOVRD   [ N.B. ITS CALLED A'FTAB' !!   
56N^ ...      LDX   0  FGEN(3)  
56P= ...      SMO      FX2                 [ X2 NOT = FX2 !!
56PH ...      BXU   0  AWORK3,NXTFCB       [ J. IF WRONG GENERATION 
56PS ...      TESTNAMX 3,NJOURNAL+1(1),FUSE1(3),NXTFCB,4
56Q5 ...      TESTNAMX 3,NLOC(1),FLOC1(3),NXTFCB,4  
56QB ...      LDX   0  FLAN(3)             [ OR IF NAME OR  
56QM ...      BXU   0  NLAN(1),NXTFCB      [ LANGUAGE WRONG 
56QY ...[   
56R9 ...[****************************************************** 
56RG ...[  WE HAVE THE FCB - IF RECOVERED, THE REQUIRED BLOCK   
56RR ...[  MUST BE BETWEEN THIS FCB AND THE LAST ONE (OR THE
56S4 ...[  CURRENT ACTIVITY) SO HUNT BACKWARDS AND COMPARE  
56S* ...[  BACK1/2 . FIRST FIND RES. NO. AND BLOCK NO. REQUIRED 
56SL ...[   
56SX ...      MHUNTW   1,FILE,FRB   
56T8 ...      SMO      5
56TF ...      LDX   4  A1+2(1)  
56TQ ...NEXTBACK
56W3 ...      LDX   3  BPTR(3)             [ POINTER TO PREVIOUS BLOCK  
56W# ...      BXE   3  2,NOTRECOVRD        [ J. IF NOT FOUND BEFORE => FX2  
56WK ...      LDX   0  BACK1(3) 
56WW ...      BXU   0  A1+1(1),NEXTBACK    [ J. IF RESIDENCE NO.WRONG   
56X7 ...      LDX   0  BACK2(3) 
56XD ...      BXU   0  4,NEXTBACK          [ J. IF WRONG BLOCK NO.  
56XP ...      LDX   0  ALOGLEN(3)   
56Y2 ...      SBN   0  512                 [ CHECK IF BLOCK LENGTH RIGHT
56Y? ...      BNZ   0  NOTRECOVRD          [ J. IF RIGHT BLOCK BUT WRONG LENGTH 
56YJ ...      LDX   2  FX2  
56YT ...      CHAIN    3,2                 [ RECHAIN BLOCK IN FRONT OF ACTIVITY 
56^6 ...      LDX   1  FPTR(2)             [ AND GET PTR. TO IT 
56^C ...      NGN   0  1
56^N ...      STO   0  AWORK4(2)           [ SHOW USING RECOVERED BLOCK 
56^^ ...      NAME     1,BSTB,BREAD        [ NAME RECOVERED BLOCK A BREAD   
572= ...      BRN      USERECBLOK          [ J. TO USE RECOVERED BLOCK  
572H ...NOTRECOVRD  
572S ...[   
5735 ...[********************************************************** 
573B ...[  BLOCK NOT SUCCESSFULLY RECOVERED SO READ OLD VERSION 
573M ...[  FROM BACKING STORE AND USE THAT  
573Y ...[   
574B          LDN   6  2                   [NUMBER OF ATTEMPTS TO READ FAILING B
57J2    READAGAIN   
583L          MHUNTW   1,FILE,FRB   
58H=          SMO      5
592W          LDX   2  A1+2(1)             [NEXT BLOCK NUMBER   
59GG          BACKREAD BUSE,BSBS,TRYAGAIN,A1+1(1),2 
5=26                                       [USE BFREEW : J TO TRANFAIL IF FAIL  
5=FQ          MHUNTW   1,BSTB,BREAD 
5=PJ ...USERECBLOK  
5=^B          LDX   0  A1(1)
5?F2          BZE   0  MPTYBLOCK           [J IF BLOCK HAS NEVER BEEN WRITTEN TO
5?YL          LDN   3  A1(1)
5#D=          LDN   6  GSBS(3)  
5#XW    NEXTREC 
5*CG          LDXC  0  FRH(3)   
5*X6          BCC      NOTDUMMY            [J UNLESS DUMMY RECORD   
5BBQ          ANDX  0  BRHMASK  
5BWB          BNZ   0  SCORRUPT            [J IF RECORD HEADER CORRUPT  
5CB2          LDEX  0  FRH(3)   
5CTL          BZE   0  SCORRUPT            [BLOCK CANT END WITH DUMMY   
5D*=          ADX   3  0                   [UPDATE PTR  
5DSW          BXGE  3  6,SCORRUPTND        [OFF END OF BLOCK
5F#G          BRN      NEXTREC  
5FS6    NOTDUMMY
5G?Q          ANDX  0  BRHMASK  
5GRB          BNZ   0  SCORRUPT 
5H?2          LDEX  0  FRH(3)   
5HQL          BZE   0  NDBLOCK             [J IF END OF BLOCK   
5J==          ADX   0  3
5JPW          BXGE  0  6,SCORRUPT   
5K9G          SBN   0  2(3)                [NO OF WORDS OF USER DATA
5KP6          ADN   3  2                   [->USER DATA 
5L8Q          SMO      0
5LNB          SUM   2  0
5M82          BNZ   2  SCORRUPTCH          [CHECKSUM FAIL   
5MML          ADX   3  0                   [UPDATE POINTER  
5N7=          BRN      NEXTREC  
5NLW    NDBLOCK 
5NP5 ...      LDX   2  FX2  
5NR# ...      LDX   0  AWORK4(2)           [ CHECK IF USING RECOVERED BLOCK 
5NTH ...      BPZ   0  USINGOLD            [ J. IF NOT  
5NXQ ...      BACKWRIT ,BSBS,WFAIL         [ WRITE RECOVERED BLOCK AWAY 
5N^^ ...      LDX   1  FPTR(2)             [ RECOVER POINTER TO WRITE BLOCK 
5P48 ...USINGOLD
5P6G          NAME     1,BSTB,BFREEW
5PL6          ADN   5  1
5Q5Q          BCT   7  READBLOCK
5QKB          FREECORE 1
5R52          MFREEW   FILE,FRB 
5RJL          SETREP2  FULL                [ALL BLOCKS USED 
5S4=          UP
5S7B ...WFAIL   
5S=G ...      MONOUT   JSJTRUNC            [ INFORM OF POSS. LOST DATA  
5S*L ...      STOZ     AWORK4(2)           [ INDICATE USING OLD BLOCK   
5SDQ ...      BRN      NOTRECOVRD   
5SHW    MPTYBLOCK   
5T3G          FREECORE 1
5TH6          KEEPREP  4,SHORT             [SOME UNUSED BLOCKS  
5W2Q          BNZ   5  SHORT
5WGB          KEEPREP  4,EMPTY             [NO USED BLOCKS  
5X22    SHORT   
5XFL          BZE   7  USEDALL             [TRUNCATED IN LAST BLOCK - UPDATE UNN
5X^=          BACKSPACE                    [TO NAME RECORD  
5YDW          CALL  6  STEPWRITE
5YYG          SMO      5
5^D6          LDCT  0  0
5^XQ          ORN   0  1
62CB          STO   0  ECOPS-A1(3)         [UPDATE ECOPS
62X2          READ                         [BLOCKS RECORD AGAIN 
63BL          MHUNTW   1,FILE,FRB   
63W=          NAME     1,FILE,FWB          [FOR REPLACE MACRO   
64*W          ADN   5  2                   [RECORD HEADER FOR SHORTENED BLOCKS R
64TG          STO   5  A1(1)
65*6          REPLACE                      [BLOCKS RECORD   
65SQ          MFREEW   FILE,FWB 
66#B          MHUNTW   1,FILE,FRB          [FROM 1ST READ   
66S2          NAME     1,BSTB,FULLB 
67?L          LDX   3  1
67R=          SBN   5  2
68=W          BZE   5  SFREE               [J IF ALL BLOCKS TO BE FREED 
68QG          SBS   5  A1(1)               [SHORTEN HEADER BY NO OF USED BLOCKS 
69=6          ADN   1  A1+2 
69PQ          LDX   2  1
6=9B          ADX   1  5
6=P2          SMO      7
6?8L          MOVE  1  0                   [MOVE BLOCKS DOWN FULLB  
6?N=    SFREE   
6#7W          FULLBPAS 3,2  
6#MG          LDX   2  FX2  
6*76    USEDALL 
6*LQ          STO   5  ACOMMUNE1(2)        [REPLY   
6B6B    PUTREP  
6BL2          TRACEIF  K6BMSJRNL,99,299,4,CHRFREP   
6C5L          PUTREP2  4
6CK=          UP
6D4W    SCORRUPTND  
6DJG          SBX   3  0                   [RECOVER RECORD POINTER  
6F46          BRN      SCORRUPT 
6FHQ    SCORRUPTCH  
6G3B          SBN   3  2                   [RECOVER RECORD POINTER  
6GH2    SCORRUPT
6GJY ...      LDX   2  FX2  
6GLW ...      LDX   0  AWORK4(2)
6GNS ...      BPZ   0  USEDOLD             [ J. IF USING OLD BLOCK ELSE 
6GQQ ...      MONOUT   JSJTRUNC            [ INFORM OF POSS. LOST DATA  
6GSN ...      STOZ     AWORK4(2)           [ SHOW USING OLD 
6GWL ...      BRN      NOTRECOVRD          [ TO TRY OLD BLOCK   
6GYJ ...USEDOLD 
6H2L          STOZ     FRH(3)              [TRUNCATE BLOCK BEFORE CORRUPT RECORD
6HG=          SBN   3  A1(1)
6H^W          BZE   3  RECORDONE           [J IF 1ST RECORD IN BLOCK IS CORRUPT 
6JFG          BACKWRIT FREE,BSBS,RECORDONE [REWRITE BLOCK - IF FAIL LOSE WHOLE B
6J^6          ADN   5  1                   [TO INCLUDE THIS BLOCK   
6KDQ          SBN   7  1
6KYB          BRN      TRANFAIL 
6LD2    RECORDONE   
6LXL          FREECORE 1
6MC=    TRANFAIL
6MWW          KEEPREP  4,CORRUPT
6NBG          BRN      SHORT
6NW6    MPTYFILE
6P*Q          FREECORE 1
6PTB          KEEPREP  4,EMPTY  
6Q*2          BRN      PUTREP   
6QSL    TRYAGAIN
6R#=          BCT   6  READAGAIN
6RRW          BRN      TRANFAIL 
6S?G    XBR 
6SR6          GEOERR   1,BMSJRNL
6T=Q    [   
6TQB          MENDAREA BMAPGAP,K99BMSJRNL   
6W=2    #END
^^^^ ...12756607000200000000
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1