BMCNTRL866

(George Source)

Macros used: ACROSS, BACKREAD, BS, BSOFF, BWNZ, BXE, BXGE, BXL, BXU, CHAIN, CHECKBL, CLOSEFRBS, COOR1, DOWN, FILEMOVE, FINDREC, FPUT, FREECORE, GEOERR, GETACT, HUNT, HUNTMISB, HUNTW, JBC, JBS, LINK, LINKSET, LOCK, LOCKC, MFREE, MFREEW, MHUNTW, MONOUT, MONOUTX, NAME, ON, OUTPACK, OUTPACKX, POP, QSTEPC, READAGAIN, REPEAT, REWIND, SEG, SEGENTRY, SETNCORE, SUICIDE, TESTRPN2, TOPFCA, TOPFCA2, TOPFCB2, TRACEIF, UNLOCK, UP, UPPLUS, VOP, WAKEUP, WRITEAUTO

BMCNTRL866.txt
22FL          SEG      BMCNTRL,864,EDWARD MOON,BMAP 
22^=          SEGENTRY K1BMCNTRL,START  
23DW          SEGENTRY K3BMCNTRL,NEXTFTAB   
23YG          SEGENTRY K4BMCNTRL,MASTENT
24D6          SEGENTRY K2BMCNTRL,QSTEPC 
24MY ...      SEGENTRY K5BMCNTRL,QSTEPC1
24XQ    [   
25CB    [   
25X2    TYPEFURB
26BL    #HAL +FILE+FURB,0   
26W=    TYPEFUWB
27*W    #HAL +FILE+FUWB,0   
27TG    NSYS
28*6                   12HSYSTEM
28SQ    NUMDIRMES      +BMNUMPRDIR  
29#B    PRMESS         +BMPARTRES   
29S2    PRUSER         +BMRESTUSER  
2=?L    STRINGABAND    16HABANDONED  :  
2=R=    STRINGSTART    12HSTARTING  
2?=W    STRINGFIN      12HFINISHED  
2?QG    STRUSNOTFND    16HUSER NOT FOUND
2#=6    STRNOTDUMP     16HUSER NOT DUMPED   
2#PQ    STRNOINC       20HINCREMENT NOT FOUND   
2*9B    OUTPACK 
2*P2          SBX   7  FX1  
2B8L          OUTPACKX 4,5,6
2BN=          ADX   7  FX1  
2C7W          EXIT  7  0
2CMG    MONOUT  
2D76          SBX   7  FX1  
2DLQ          MONOUTX  3
2F6B          ADX   7  FX1  
2FL2          EXIT  7  0
2G5L    XLINK   
2GK=          LINK     BMAPONE,2
2H4W    MLINK   
2HJG          LINK     BMCNTRL,4
2J46    [   
2JHQ    TOHUNTFLIST 
2K3B          HUNTMISB 3,FI,FLIST   
2KH2          EXIT  7  0
2L2L    [   
2LG=    START   
2L^W    [   
2MFG    [***************************************************** START
2M^6    [   
2NDQ    [   ENTRY FOR MASTER ACTIVITY   
2NYB    [   
2PD2          POP      START,2,FTABWAIT     [SEMAPHOR SET SHOWS MASTER ACTIVE   
2PXL          STO   1  AWORK1(2)
2QC=          TRACEIF  K6BMCNTRL,99,299,AWORK3(2),MASTEND   
2QWW          CALL  7  TOHUNTFLIST  
2RBG          STOZ     A1+1(3)  
2RW6          BRN      MASTACT  
2S*Q    [   
2STB    [************************************************** NEXTFTAB
2T*2    [   
2TSL    [   ENTRY FOR SLAVE ACTIVITIES  
2W#=    [   
2WRW    NEXTFTAB
2X?G          STOZ     AWORK1(2)
2XR6    MASTACT 
2Y=Q          HUNTW    3,FILE,FTAB  
2YQB          BNG   3  UPALEVEL             [IF NO SLAVES TO BE SET UP NOW. 
2^=2          LDX   0  A1+1(3)              [LEVEL @ WHICH TABS APPLY   
2^PL          LDX   7  AWORK1(2)            [NO NEED TO CHECK DEPTH IF MASTER   
329=          BNZ   7  NODPTHCHEK           [(MUST BE 0) & 'AMAPDEPTH' USED FOR 
32NW                                        ['FTABWAIT' SEMAPHOR IN MASTER ACT. 
338G                                        [ SO CHECK WOULD GIVE WRONG RESULT  
33N6          BXU   0  AMAPDEPTH(2),UPALEVEL [J. UNLESS @ THIS LEVEL
347Q    NODPTHCHEK  
34MB          LDX   7  A1(3)                [USED SPACE IN FTAB 
3572          STO   7  AWORK3(2)
35LL          LDX   5  A1+1(3)             [DEPTH OF THIS FTAB  
366=          ADN   5  1                    [ DEPTH FOR NEW DIRECRORY   
36KW          STOZ     4
375G    NEXTENTRY   
37K6          TOPFCA2  1                   [FILE THAT PAIRS WITH FTAB   
384Q          HUNTW    3,FILE,FTAB  
38JB          SMO      4
3942          LDX   0  A1+2(3)  
39HL          BZE   0  RESUME             [J. IF ENTRY ALREADY USED 
3=3=          SMO      4
3=GW          STOZ     A1+2(3)            [ELSE MARK IT USED
3?2G          STO   0  FREADBLOCK(1)
3?G6          SMO      4
3?^Q          LDX   0  A1+3(3)  
3#FB          STO   0  FREADWORD(1)        [TAB POINT FOR DIRECTORY ENTRY   
3#^2          SMO      4
3*DL          LDN   6  A1+4(3)  
3*Y=          LDN   7  ASUPUSER(2)         [ TRANSFER SUPERIOR PROPER   
3BCW          MOVE  6  3                   [ USERS NAME 
3BXG          HUNT     3,FILE,FLOCNB       [ NEEDED FOR OPENRELN
3CC6          BPZ   3  NSETFLOCNB         [J. IF ONE HERE   
3CWQ          SETNCORE 6,3,FILE,FLOCNB     [ ELSE GET ONE   
3DBB    NSETFLOCNB  
3DW2          READAGAIN 
3F*L ...      MHUNTW   1,FILE,FRB   
3FT= ...      NAME     1,FILE,ENT   
3G#W          BMOPENRE XBR,CLEAN           [  OPEN DIRECTORY
3GSG          TESTRPN2 OK,XBR   
3H#6          CALL  7  TOHUNTFLIST         [X3-> FLIST  
3HRQ          LDX   0  A1+2(3)  
3J?B          ANDX  0  BITS22LS            [MAX. ALLOWED SLAVES 
3JR2          SBX   0  A1+1(3)             [ NO. RUNNING
3K=L          NGX   0  0
3KQ=          BNG   0  NEWACT              [ J. IF CAN SET UP ANOTHER   
3L9W          LDX   0  AWORK1(2)           [ OR IF MASTER ACT.  
3LPG          BNZ   0  NEWACT   
3M96    [   
3MNQ    [  CAN'T SET UP SLAVE SO MAP NEXT DIR YOURSELF  
3N8B    [   
3NN2          STO   5  AMAPDEPTH(2)        [ LEVEL OF NEW DIRECTORY 
3P7L          ACROSS   BMAPONE,2           [ RECURSE
3PM=    [   
3Q6W    NEWACT  
3QLG          CALL  7  TOHUNTFLIST  
3R66          LDN   0  1
3RKQ          ADS   0  A1+1(3)             [ INCREMENT COUNT OF SLAVES  
3S5B          GETACT   BSA,AUTOMAP         [  SET UP NEW SLAVE  
3SK2          LDX   3  BPTR(2)  
3T4L          JBC      NOTPARTR,2,AW2PARTRES
3TJ=          BS       3,AW2PARTRES        [ IF MAPPING RESTORED LIMB   
3W3W    NOTPARTR
3WHG          LDN   6  ASUPUSER(2)  
3X36          LDN   7  ASUPUSER(3)  
3XGQ          MOVE  6  3                   [ TRANSFER SUPERIOR USERNAME 
3Y2B          STO   5  AMAPDEPTH(3)        [DEPTH OF THIS NEW ACTIVITY  
3YG2          LINKSET  3,XLINK(1)   
3Y^L          LOCK     3                   [AUTOMAP BLOCK   
3^F=          CHANGEFI 3                   ['SUPERIOR'DIRECTORY TO NEW ACT  
3^YW          LDX   3  BPTR(2)  
42DG          UNLOCK   3                   [AUTOMAP BLOCK   
42Y6          LDX   2  3
43CQ          FPUT  
43XB    RESUME  
44C2          ADN   4  6                     [RELATIVE POINTER FOR NEXT ENT 
44WL          BXU   4  AWORK3(2),NEXTENTRY [ J. UNLESS ALL FTAB ENTS DEALT WITH 
45B=          MFREEW   FILE,FTAB
45TW    UPALEVEL                           [FINISHED WITH DIR.@ THIS LEVEL  
46*G          LDX   0  AWORK1(2)
46T6          BNZ   0  NOFTABS             [J. IF MASTER ACT.   
47#Q          CLOSEFRBS 
47SB          MHUNTW   3,FILE,FTAB  
48#2          BNG   3  NOFTABS  
48RL          LDN   0  1                   [DECREMENT FILESTORE LEVEL   
49?=          SBS   0  AMAPDEPTH(2)        [ & POCESS NEXT FTAB 
49QW          BRN      NEXTFTAB            [ IMPLIES DIR. OPEN  
4==G    [   
4=Q6    NOFTABS 
4?9Q          LDX   0  AWORK1(2)
4?PB          BZE   0  SLAVEND  
4#92          VOP      2,FTABWAIT          [ CLEAR SEMAPHOR - MASTER DORMANT
4#NL          CALL  7  TOHUNTFLIST  
4*8=          LDX   0  A1+1(3)  
4*MW          BZE   0  MASTENT  
4B7G          COOR1 
4BM6          BRN      MASTENT             [ ALL  SLAVES FINISHED : TIDY UP 
4C6Q    [   
4CLB    SLAVEND 
4D62          CALL  7  TOHUNTFLIST  
4DKL          LDN   0  1
4F5=          SBS   0  A1+1(3)             [ DECREENT COUNT OF SLAVES RUNNING   
4FJW    WAKEUP  
4G4G          CALL  7  TOHUNTFLIST  
4GJ6          LDX   0  A1+1(3)             [ CHECK COUNT TO SEE IF ANY OTHERS   
4H3Q          BNZ   0  SUICIDE             [ J. IF THER ARE OTHERS  
4HHB          LDX   2  BSACHAPTR
4J32          POP      WAKEUP,2,FTABWAIT  [ CHECK SEM. TO SEE IF MASTER ACTIVE  
4JGL          VOP      2,FTABWAIT          [ LEAVE SEMAPHOR CLEAR   
4JQD ...      LDX   2  BSACHAPTR
4K2=          FPUT  
4KFW    SUICIDE 
4K^G          SUICIDE   
4LF6    [   
4LYQ    [   
4MDB    [   
4MY2    [*************************************************** MASTENT
4NCL    [  ALL SLAVES HAVE FINISHED - NOW CHECK IF REPEAT OF
4NX=    [  SEARCH IS NECESSARY OR IF PARTIAL RESTORES ARE NEEDED
4PBW    [   
4PWG    MASTENT 
4QB6          JBS      SFSTSFIN,2,AW2PARTRES
4QTQ          BSOFF    BMBLKTWICE,XISITWICE  [J. IF ON FIRST PASS   
4R*B          BRN      PASSEND  
4RT2    SFSTSFIN                           [ MOVE DIRECTORY (TOP OF LIMB)   
4S#L          FILEMOVE 0,-1                [ TO BOTTOM OF STACK 
4SS=    PASSEND 
4T?W          HUNTMISB 3,FI,FRESTUSER   
4TRG          LDX   0  FRCNT(3) 
4W?6          BNZ   0  RESTUSER            [ J. IF RESTORES NEEDED  
4WQQ          LDX   0  FRTSN(3) 
4X=B          BZE   0  PHREEIT  
4XQ2          DOWN     RESTOREA,4          [ TO REWIND TAPE IF LOADED   
4Y9L    PHREEIT 
4YP=          HUNTMISB 3,FI,FRESTUSER   
4^8W          FREECORE 3
4^NG          MHUNTW  3,FILE,APROC  
5286          BNG   3  NOAPROC  
52MQ          FREECORE 3
537B    NOAPROC 
53M2          HUNTMISB 3,FI,FRESUNAV
546L          BNG   3  NOFRUNAV 
54L=          FREECORE 3
555W    NOFRUNAV
55KG          HUNTMISB 3,FI,FONCE   
5656          BNG   3  NOWFREEBS
56JQ          LDX   0  A1(3)
574B          BNZ   0  NOWFREEBS
57J2          FREECORE 3                   [ FREE FONCE IF EMPTY
583L    NOWFREEBS   
58H=          JBC      NOPRS,2,AW2PARTRES  [ J. IF NO P.R. INITIATED
592W          LDN   1  BTHREE   
59GG          LDN   2  ADMASTDIR           [ ELSE SET BEPARTRES 
5=26          BACKREAD ,BSBS,,1            [ IN BOTH HALVES OF :MASTTR'S
5=FQ          MHUNTW   3,BSTB,BREAD        [ DIRECTORY ENTRY
5=^B          BS       3,BEPARTRES  
5?F2          LDCT  0  #200 
5?YL          ERS   0  EREC(3)  
5#D=          LDN   4  A1(3)
5#XW          LDN   5  GSBS/2+A1(3) 
5*CG          MOVE  4  GSBS/2   
5*X6          LDX   3  BFILE
5BBQ          BS       3,BFPARTRES         [ AND BFPARTRES IN HIS FCB   
5BWB          BACKWRIT FREE,BSBS
5CB2    NOPRS   
5CTL    #UNS AMTGR  
5D*=          JBC      NEXTFBSIB,,BFREEBS   [ J. IF B.S. ALREDY FREED ELSE  
5DSW          DOWN     BACKROOM,11         [ FREE SPARE BACKING STORE   
5F#G    NEXTFBSIB   
5FS6          HUNT     1,BSTB,FBSIB 
5G?Q          BNG   1  SFTSENDED
5GRB          FREECORE 1
5H?2          BRN      NEXTFBSIB
5HQL    SFTSENDED   
5J==          ACROSS   ADDICT,1            [ TO CHECK DICTIONARY
5JPW    [   
5K9G    [*************************************************** XISITWICE  
5KP6    [   
5L8Q    [ CHECK IF ANY DOUBLY ALLOCATED BLOCKS WERE FOUND   
5LNB    [  IN THE FIRST PASS OF THE FIRST FILESTORE TREE SEARCH 
5M82    [   
5MML    XISITWICE   
5N7=          HUNTMISB 3,FI,FONCE   
5NLW          LDX   0  A1(3)           [ IS FONCE EMPTY 
5P6G          BZE   0  PASSEND        [ J. IF NO BLOCKTWICES FOUND  
5PL6          ON       BMBLKTWICE      [ INDICATE ON SECOND PASS
5Q5Q          ACROSS   BMFIXIT,4           [ TO REINITIALISE AND REPEAT TREE SEA
5QKB    RESTUSER
5R52    [   
5RJL    [************************************************** RESTUSER
5S4=    [   
5SHW    [ THERE ARE USERS TO BE RESTORED - CHECK IF ANY HAVE
5T3G    [  -VE. INCREMENT NO.. SELECT HIGHEST INCREMENT NO. 
5TH6    [  AND LOWEST FILE NUMBER FOR NEXT RESTORE  
5W2Q    [   
5WGB          LDN   7  FRUSE(3) 
5X22          ADX   7  A1(3)
5XFL          STOZ     AWORK4(2)           [ SWITCH FOR 'N RESTORES STARTING' ME
5X^=          JBS      NOSWITCH,2,AW2PARTRES
5YDW          NGS   2  AWORK4(2)           [ SET -VE. FIRST TIME, ELSE 0
5YG7 ...#UNS AMTGR  
5YHD ...(   
5YJP ...      BWNZ     GINCTSN,PRNOTFORB   [ J. IF MULTI-TAPE GEN. RES. 
5YL2 ...      SEGENTRY K80BMCNTRL          [ FOR SWAPPR AND NOPARTRES R.T.M.
5YM? ...      BRN      PRNOTFORB           [ NULLED BY BOTH - REINSTATED BY *OFF
5YNJ ...      DOWN     BMPRCHEK,1          [ TO CHECK IF P.R. ALLOWED   
5YPT ...      NULL  
5YR6 ...      BRN      PRNOTFORB           [ IF ALLOWED OR SWAPPED  
5YSC ...      SEGENTRY K82BMCNTRL          [ FOR NOPARTRES *OFF 
5YTN ...PRNOTFORB   
5YW^ ...)   
5YYG    NOSWITCH
5^D6          STOZ     AWORK1(2)           [ INITIALISE INCREMENT NO. TO 0  
5^XQ          NGNC  0  1                   [  AND   
62CB          STO   0  AWORK2(2)           [ FILE NO. TO HIGHEST POSITIVE NO.   
62X2    NEXTINC 
63BL          LDX   0  FRINC(3) 
63W=          BNG   0  REPEAT              [ J. IF -VE. TO REPEAT SEARCH
64*W          LDX   4  AWORK1(2)
64TG          BXL   0  4,TRYNEXT           [ J. IF INCR. NO. NOT > SO FAR   
65*6          BXE   0  4,WHATFNO
65SQ          NGNC  6  1                   [ RESET FILE NO. IF HIGHER   
66#B          STO   6  AWORK2(2)           [ INCR. NO. FOUND
66S2    WHATFNO 
67?L          LDX   4  AWORK2(2)
67R=          LDX   5  FRFIL(3) 
68=W          BXGE  5  4,TRYNEXT           [ J. IF FILE NO. NOT < SO FAR
68QG    THISINC 
69=6          STO   0  AWORK1(2)           [ REMEMBER HIGHEST INCR. NO. AND 
69PQ          STO   5  AWORK2(2)           [ LOWEST FILE NO. SO FAR 
6=9B          STO   3  AWORK3(2)           [ AND POINTER TO IT  
6=P2    TRYNEXT 
6?8L          ADN   3  8
6?N=          LDN   0  FRUSE(3) 
6#7W          BXU   0  7,NEXTINC           [ J. IF ALL ENTRIES NOT YET LOOKED AT
6#MG          HUNTMISB 3,FI,FRESTUSER   
6*76          LDX   0  AWORK3(2)
6*LQ          SBX   0  3
6B6B    #UNS AMTGR  
6BL2    (   
6C5L          LDCT  7  #600                [ MASK FOR BITS 0 AND 1  
6CK=          ANDX  7  FRNXT(3)            [ NEED TO KEEP THEM IF SET   
6D4W          ADX   0  7                   [ ADD IN POINTER TO NEXT USER
6DJG    )   
6F46          STO   0  FRNXT(3) 
6F?Y ...#UNS AMTGR  
6FHQ ...#SKI
6FRJ ...(   
6G3B          BWNZ     GINCTSN,PRNOTFORB   [ J. IF MULTI-TAPE GEN. RES. 
6GH2          SEGENTRY K80BMCNTRL          [ FOR SWAPPR AND NOPARTTES R.T.M.
6H2L          BRN      PRNOTFORB           [ NULLED BY BOTH - REINSTATED BY *OFF
6HG=          DOWN     BMPRCHEK,1          [ TO CHECK IF PR ALLOWED 
6H^W          BRN      PRNOTFORB           [ ALLOWED IF UP  
6JFG          BRN      PASSEND             [ SWAPPED IF UP+1
6J^6          SEGENTRY K82BMCNTRL          [ FOR NOPARTRES *OFF 
6KDQ    PRNOTFORB   
6KNJ ...)   
6KYB          HUNTMISB  3,FI,FRESTUSER  
6LD2          LDX   3  FRCNT(3) 
6LXL          SMO      FX2  
6MC=          LDX   0  AWORK4   
6MWW          BZE   0  MESSENT             [ J. IF 'N RESTORES STARTING'
6NBG          SRL   3  3                   [ ALREADY OUTPUT 
6NW6          LDN   4  3                   [ ELSE   
6P*Q          LDN   5  1                   [ OUTPUT MESSAGE 
6PTB          LDN   6  JPDNUMA  
6Q*2          CALL  7  OUTPACK  
6QSL          LDX   3  NUMDIRMES(1) 
6R#=          CALL  7  MONOUT   
6RRW    MESSENT 
6S?G    [   
6SR6    [****************************************************** 
6T=Q    [  WE HAVE SELECTED THE NEXT RESTORE BE DONE
6TQB    [  NOW OBTAIN TSNS FOR THE RESTORE FROM INCINDEX.   
6W=2    [   
6WPL          HUNTMISB 3,FI,FRESTUSER   
6X9=          SMO      FRNXT(3) 
6XNW          LDX   7  FRINC(3)            [ INCR. NO. WANTED   
6Y8G          HUNTW    3,FILE,APROC 
6YN6          BNG   3  NOAPROCHERE  
6^7Q          BXE   7  AINCNO(3),SAMEASLAST [ ALREADY HAVE TSNS SO JUMP.
6^MB          FREECORE 3
7272    NOAPROCHERE 
72LL          REWIND   3                   [  INCINDEX  
736=          FINDREC  3,AINCNO-A1,7,XINCREMENT [ LOCATE RECORD FOR INCREMENT   
73KW          READAGAIN 3                  [ AND READ IT
745G          MHUNTW   3,FILE,FRB   
74K6          NAME     3,FILE,APROC 
754Q    SAMEASLAST  
75JB    [   
7642    [*******************************************************
76HL    [  OUTPUT 'RESTORE OF %A STARTING' MESSAGE  
773=    [   
77GW          HUNTMISB 3,FI,FRESTUSER   
782G          SMO      FRNXT(3) 
78G6          LDN   4  FRUSE(3) 
78^Q          LDN   5  3
79FB          LDN   6  JPDUSERNAME  
79^2          CALL  7  OUTPACK  
7=DL          LDN   4  STRINGSTART(1)   
7=Y=          LDN   5  3
7?CW          LDN   6  JPDVARCHAR   
7?XG          CALL  7  OUTPACK  
7#C6          LDX   3  PRMESS(1)
7#WQ          CALL  7  MONOUT   
7*BB    [   
7*W2    [*****************************************************  
7B*L    [  GO DOWN TO RESTOREA TO DO THE RESTORE
7BT=    [   
7C#W          DOWN     RESTOREA,3   
7CSG          LOCKC    2,£                 [ RE-LOCK MASTER ACTIVITY
7D#6          LDX   2  FX2                 [ AND
7DRQ          STO   2  BSACHAPTR           [ STORE PTR. TO IT   
7F?B          TESTRPN2 OK,RESFAIL          [  J. IF RESTORE FAILED  
7FR2    [   
7G=L    [*****************************************************  
7GQ=    [  OUTPUT 'RESTORE OF %A FINISHED' MESSAGE  
7H9W    [   
7HPG          TOPFCB2  3
7J96          LDN   4  FME1(3)  
7JNQ          LDN   5  3
7K8B          LDN   6  JPDUSERNAME  
7KN2          CALL  7  OUTPACK  
7L7L          LDN   4  STRINGFIN(1) 
7LM=          LDN   5  3
7M6W          LDN   6  JPDVARCHAR   
7MLG          CALL  7  OUTPACK  
7N66          LDX   3  PRMESS(1)
7NKQ          CALL  7  MONOUT   
7P5B    [   
7PK2    [*****************************************************  
7Q4L    [  OUTPUT '%A RESTORED' MESSAGE FOR TOP DIR. OF LIMB
7QJ=    [   
7R3W    #UNS AMTGR  
7RHG          BWNZ     GINCTSN,NOTIFMTGR  [ NOT IF FOR MULTI-TAPE G.R.  
7S36          TOPFCB2  3
7SGQ          LDN   4  FME1(3)  
7T2B          LDN   5  3
7TG2          LDN   6  JPDUSERNAME  
7T^L          CALL  7  OUTPACK  
7WF=          LDX   3  PRUSER(1)
7WYW          CALL  7  MONOUT   
7XDG    #UNS AMTGR  
7XY6    NOTIFMTGR   
7YCQ    [   
7YXB    [*****************************************************  
7^C2    [  DELETE FRESTUSER ENTRY BY SETTING FRINC=0 AND
7^WL    [  REDUCING FRCNT BY 8 - THEN SET ABOUT MAPPING RESTORED LIMB   
82B=    [   
82TW          HUNTMISB 3,FI,FRESTUSER   
83*G          SMO      FRNXT(3) 
83T6          STOZ     FRINC(3) 
84#Q          LDN   0  8
84SB          SBS   0  FRCNT(3) 
85#2          SMO      FRNXT(3) 
85RL          LDN   6  FRSUP(3)            [ MOVE SUPERIOR PROPER   
86?=          LDN   7  ASUPUSER(2)         [ USER NAME INTO ACTIVITY
86QW          MOVE  6  3                   [ BLOCK FOR USE IN MAPPING   
87=G          STOZ     AWORK2(2)
87Q6    NEXTFWB 
889Q          MHUNTW   3,FILE,FWB   
88PB          BNG   3  NOMORFWB            [ FREE ALL FILE/FWB BLOCKS SO THEY   
8992          FREECORE 3                   [ WON'T CONFUSE CREALEX LATER
89NL          BRN      NEXTFWB             [ (MAY HAVE BEEN LEFT BY RESTORE)
8=8=    NOMORFWB
8=MW          BS       2,AW2PARTRES        [ INDICATE MAPPING RESTORED LIMB 
8?7G          ACROSS   BMAPONE,11          [ TO MAP RESTORED LIMB   
8?M6    [   
8#6Q    [************************************************** RESFAIL 
8#LB    [  RESTORE HAS FAILED SO DELETE FRESTUSER ENTRY - LOOK  
8*62    [   FOR NEXT USER TO BE RESTORED IF ANY 
8*KL    [   
8B5=    RESFAIL 
8BJW          HUNTMISB 3,FI,FRESTUSER   
8C4G          SMO      FRNXT(3) 
8CJ6          STOZ     FRINC(3) 
8D3Q          LDN   0  8
8DHB          SBS   0  FRCNT(3) 
8F32          BRN      PASSEND  
8FGL    [   
8G2=    [************************************************ XINCREMENT
8GFW    [  INCREMENT NO. NOT FOUND IN INCINDEX.(SHOULD NEVER
8G^G    [   HAPPEN - MAY BE DUE TO CORRUPTION) OUTPUT 'ABANDONED'   
8HF6    [    MESSAGE AND CHECK IF USER CAN BE ERASED, THEN DELETE   
8HYQ    [      FRESTUSER ENTRY  
8JDB    [   
8JY2    XINCREMENT  
8KCL          HUNTMISB 3,FI,FRESTUSER   
8KX=          SMO      FRNXT(3) 
8LBW          STOZ     FRINC(3) 
8LWG          SMO      FRNXT(3) 
8MB6          LDN   4  FRUSE(3) 
8MTQ          LDN   5  3
8N*B          LDN   6  JPDUSERNAME  
8NT2          CALL  7  OUTPACK  
8P#L          LDN   4  STRINGABAND(1)   
8PS=          LDN   5  3
8Q?W          LDN   6  JPDVARCHAR   
8QRG          CALL  7  OUTPACK  
8R?6          LDN   4  STRNOINC(1)  
8RQQ          LDN   5  5
8S=B          LDN   6  JPDVARCHAR   
8SQ2          CALL  7  OUTPACK  
8T9L          LDX   3  PRMESS(1)
8TP=          CALL  7  MONOUT   
8W8W ...      DOWN     BMQUESTB,7           [ TO CHECK IF ERASURE ALLOWED   
8WNG    NXTRESTUSER 
8X86          HUNTMISB 3,FI,FRESTUSER   
8XMQ          SMO      FRNXT(3) 
8Y7B          STOZ     FRINC(3) 
8YM2          LDN   0  8
8^6L          SBS   0  FRCNT(3) 
8^L=          BRN      PASSEND  
925W    [   
92KG    [************************************************ REPEAT
9356    [  -VE. INCR. NO. HAS BEEN FOUND. CHECK IF  
93JQ    [ NOMINATION BY OPERATORS(= -2). IF NOT CHECK IF
944B    [  PREVIOUSLY CORRUPT DIR. WHICH IS O.K. ON THIS PASS   
94J2    [(FRFIL -VE.) - IF SO IGNORE ENTRY. ELSE REPEAT SEARCH  
953L    [   
95H=    REPEAT  
962W          ADN   0  2
96GG          BNZ   0  REPEATSRCH          [ J. IF NOT NOMINATED
9726          HUNTMISB 1,FI,FRESTUSER   
97FQ          SBX   3  1
97^B          STO   3  AWORK3(2)           [ DATUMISE POINTER AND SAVE IT   
98F2          SMO      3
98YL          LDN   4  FRUSE(1) 
99D=          LDN   5  3
99XW          LDN   6  JPDUSERNAME         [  OUTPUT
9=CG          CALL  7  OUTPACK             [
9=X6          LDN   4  STRINGABAND(1)      [ ABANDONED  
9?BQ          LDN   5  3                   [
9?WB          LDN   6  JPDVARCHAR          [  MESSAGE   
9#B2          CALL  7  OUTPACK  
9#TL          LDN   4  STRUSNOTFND(1)   
9**=          LDN   5  4
9*SW          LDN   6  JPDVARCHAR   
9B#G          CALL  7  OUTPACK  
9BS6          LDX   3  PRMESS(1)
9C?Q          CALL  7  MONOUT   
9CRB    NOREPEAT
9D38 ...      STOZ     FRINC(3) 
9D?2          HUNTMISB 3,FI,FRESTUSER   
9DQL          LDN   0  8                   [  DELETE
9F==          SBS   0  FRCNT(3)            [ FRESTUSER  
9GP6          BRN      PASSEND  
9H8Q    REPEATSRCH  
9HNB          LDX   0  FRFIL(3)            [ CHECK IF PREVIOUS FAILURE  
9J82          BNG   0  NOREPEAT            [ BUT O.K. THIS TIME 
9JML          ACROSS   BMFIXIT,4           [ IF NOT REPEAT SEARCH   
9K7=    [   
9KLW ...[************************************************* QSTEPC/QSTEPC1   
9L6G    [   
9L9# ...[   QSTEPC(K2) AND QSTEPC1(K5) READ THE NEXT BLOCK  
9L#6 ...[  FROM BACKING STORE   
9LBY ...[   
9LFQ ...[ K2 IS USED FROM BMAPONE AND BMAPDIR WHEN CHECKING A   
9LJJ ...[DIRECTORY - IN THIS CASE EXISTING FURBS ARE FREED  
9LMB ...[AND FUWBS ARE WRITTEN AWAY THEN FREED. 
9LQ8 ...[   
9LT2 ...[ K5 IS USED FROM BMINDEX WHEN CHECKING INDEXING OF 
9LXS ...[VARIOUS SYSTEM FILES. BUFFER BLOCKS ARE NOT FREED. 
9M2L ...[   
9M5D ...[ IN BOTH CASES EXIT IS:
9M8= ...[  UP         IF TRANSFER OKAY  
9M?4 ...[  UP+1       IF CORRUPTION DETECTED
9M*W ...[  UP+2       IF EOF REACHED
9MDN ...[IF A READ FAIL OCCURS EXIT IS ACROSS TO BMAPONE,14 
9MHG ...[IF K2 ENTRY SO THAT A PARTIAL RESTORE CAN BE   
9ML# ...[INITIATED, BUT FOR K5 ENTRY EXIT IS UPPLUS 3 SO THAT   
9MP6 ...[THE CALLING SEGMENT CAN TAKE APPROPRIATE ACTION.   
9MRY ...[   
9MWQ ...QSTEPC1 
9M^J ...      NGNC  0  1
9N52    [   
9NJL    QSTEPC  
9NPS ...      LDN   0  0
9NX2 ...      STO   0  AWORK1(2)
9P4=          STOZ     AWORK2(2)           [ NO OF REPEATS  
9P#4 ...      BNZ   0  NOUBL               [DO NOT FREE BUFFER BLOCKS IF K5 
9PHW    NXTUBL  
9Q3G          TOPFCA2  3
9QH6          ADX   3  FBACKPOINT(3)
9R2Q          LDX   3  FPTR(3)  
9RGB          LDX   0  ATYPE(3) 
9S22          BXE   0  TYPEFURB(1),READFREE[  FURB ?
9SFL          BXU   0  TYPEFUWB(1),NOUBL   [ J. IF NOT A FUWB   
9S^=          TOPFCB2  1
9TDW          CHECKBL  1,3,WRITEIT         [ CHECK RECORD HEADERS   
9TYG          GEOERR   1,WRITE! 
9WD6    WRITEIT                            [ AND
9WXQ          LDX   2  FX2                 [  WRITE IT AWAY 
9XCB          CHAIN    3,2  
9XX2          WRITEAUTO FREE,BSBS,,BACK1(3) 
9YBL          BRN      NXTUBL   
9YW=    READFREE
9^*W          FREECORE 3                   [  FREE FURB 
9^TG          BRN      NXTUBL   
9^^C ...[   
=25# ...[  ALL EXISTING USAGE BLOCKS HAVE BEEN FREED.   
=299 ...[   
=2*6    NOUBL   
=4R=          TOPFCA2  3
=5=W    TRYNXTBLK   
=5QG          LDX   3  FREADBLOCK(3)
=6=6          TOPFCB2  1
=6PQ          LDX   2  FBLMOD(1)
=79B          ADN   2  A1   
=7P2          SBX   2  3
=88L          BNZ   2  NOTEOF   
=8N=          UPPLUS   2                   [ IF END OF FILE REACHED 
=97W    NOTEOF  
=9MG          SMO      3
==76          LDX   3  0(1)                [ BLOCK NUMBER   
==LQ          LDX   2  BSPRE(1)            [ RESIDENCE NO.  
=?6B          BACKREAD ,BSBS,READFAIL,2    [ READ BLOCK FROM B.S. - J. IF FAIL  
=?L2          MHUNTW   3,BSTB,BREAD 
=#5L          BNG   3  READFAIL            [ J. IF NO BREAD BLOCK FORMED
=#K=          TOPFCB2  1
=*4W          CHECKBL  1,3,NOTCORUPT       [ CHECK RECORD HEADERS- J. IF O.K
=*JG          LDX   2  FX2  
=B46          LDX   6  BACK1(3) 
=BHQ          LDX   7  BACK2(3)            [ SAVE RES. NO. AND BLOCK NO.
=C3B          STO   6  ACOMMUNE2(2)        [ FOR READFAIL SEGMENT   
=CH2          STO   7  ACOMMUNE3(2)        [ ( WOULD BE CORRUPTED BY CHAPTER
=D2L          TOPFCA2  3                   [  TRANSFER OF SEGMENT READFAIL) 
=DG=          LDX   0  AWORK2(2)
=D^W          SBN   0  5                   [ CHECK NO. OF REPEATS   
=FFG          BZE   0  XRECHEAD            [ J. IF 5 ALREADY DONE   
=F^6          MFREE     BSTB,BREAD  
=GDQ          LDN   0  1                   [ ELSE INCREMENT COUNT   
=GYB          ADS   0  AWORK2(2)
=HD2          BRN      TRYNXTBLK           [ AND TRY AGAIN  
=HXL    [   
=JC=    [************************************************** XRECHEAD
=JWW    [  IN SPITE OF REPEATS RECORD HEADERS ARE STILL CORRUPT 
=KBG    [   
=KW6    XRECHEAD
=L*Q          DOWN     READFAIL,3          [ TO SEND 'CORRUPT' MESSAGE TO JOURNA
=LTB          MFREE     BSTB,BREAD  
=M*2          UPPLUS   1                   [ TO SHOW CORRUPT RECORD HEADERS 
=MSL    [   
=N#=    [************************************************** READFAIL
=NLM ...[  TRANSFER HAS FAILED SO NEED TO DO A P.R. FOR DIRECTORY   
=N^4 ...[  OR OUTPUT MESSAGE AND RETURN UPPLUS 3 FOR OTHER CASES.   
=P?G    [   
=PR6    READFAIL
=PY# ...      LDX   0  AWORK1(2)
=Q5G ...      BNZ   0  XUP3 
=Q=Q          ACROSS   BMAPONE,14          [ TO DO P.R. IF REQUIRED 
=Q#^ ...XUP3  STO   3  ACOMMUNE3(2)        [STORE BLK NO
=QC8 ...      TOPFCB2  1
=QFC ...      LDX   0  BSPRE(1)            [AND RES NO FOR READFAIL 
=QHL ...      STO   0  ACOMMUNE2(2) 
=QKT ...      DOWN     READFAIL,4   
=QN4 ...      UPPLUS   3
=QQB    [   
=R=2    [************************************************ NOTCORUPT 
=RPL    [  TRANSFER O.K. SO RENAME BREAD BLOCK TO BE A  
=S9=    [ FURB AND CHAIN IN FRONT OF FSTACK 
=SNW    [   
=T8G    NOTCORUPT   
=TN6          NAME     3,FILE,FURB  
=W7Q          TOPFCA   2
=WMB          ADX   2  FBACKPOINT(2)
=X72          CHAIN    3,2  
=XLL          UP                           [ TO SHOW TRANSFER O.K.  
=Y6=    XBR 
=YKW          GEOERR   1,BMCNTRL
=^5G    [   
=^K6    #END
^^^^ ...203034720002
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1