BMAPONE867

(George Source)

Macros used: ACROSS, ALTLENG, BACKSPACE, BC, BLOCKMAP, BS, BWNZ, BXE, BXL, BXU, DOWN, FFINDEXB, FREECORE, GEOERR, HUNTMISB, JBC, JBCC, JBS, JMBAC, JMBS, MBC, MENDAREA, MHUNTW, MONOUT, MONOUTX, NOBITS, OUTPACK, OUTPACKX, POP, QSTEPC, SEG, SEGENTRY, STEPAGAIN, STEPREWRITE, TESTNAMX, TOPFCA, TOPFCA2, TOPFCB, TOPFCB2, TRACEIF, VOP

BMAPONE867.txt
22FL          SEG      BMAPONE,86,EDWARD MOON,BMAP,G252 
22^=    [   
23DW    [ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
23YG    [     THIS EXCLUDES CODE UNDER #SKI G252
24D6    [   
24XQ    #OPT G252 = 0   
25CB    #SKI G252&1 
25X2    # WITH UGUG EDIT M252 (RETAIN TO-BE-ERASED STATUS)  
26BL          SEGENTRY K1BMAPONE,Z1BMAPONE  
26W=          SEGENTRY K2BMAPONE,Z2BMAPONE  
27*W          SEGENTRY K4BMAPONE,SKIPTRAPS  
27TG          SEGENTRY K5BMAPONE,SKIPALL
28*6          SEGENTRY K11BMAPONE,Z11BMAPONE
28SQ          SEGENTRY K12BMAPONE,XFILEBENT 
29#B          SEGENTRY K13BMAPONE,XRECHEAD  
29S2          SEGENTRY K14BMAPONE,READFAIL  
2=?L    #SKI G252&1 
2=R=    (   
2?=W    [ BIRMINGHAM UNIVERSITY CHANGES:
2?QG    [ SETS WORD 'EU' OF DIRECTORY ENTRY TO ONE  
2#=6    [ IF 'ERASE' BIT SET FOR A TERMINAL FILE.   
2#PQ    [ THIS IS TO PREVENT LOSS OF ERASE STATUS   
2*9B    [ FOR FILES TO BE LISTED AFTER A BREAK. 
2*P2    [ SEE ALSO SEGMENT BMOUTPUT.
2B8L    [   
2BN=    [ COPYRIGHT UNIVERSITY OF BIRMINGHAM.   
2C7W    [ USE SUBJECT TO CONDITIONS OF LICENCE. 
2CMG    [   
2D76    )   
2DLQ    [   
2F6B    [  THIS SEGMENT PERFORMS THE SFTS   
2FL2    [ BLOCKS ARE MAPPED FOR ALL ONLINE FILES WHICH ARE TO BE RETAINED   
2G5L    [ TEMPORARY DIRECTORIES HAVE THE 'ERASE' BIT SET SO THAT INFERIOR FILES 
2GK=    [ CANNOT LATER BE OPENED.THEY ARE NOT MAPPED
2H4W    [ PERMANENT DIRECTORIES HAVE THEIR ENTRIES IN THE FUSER BLOCK MARKED.   
2HJG    [ IF THERE IS NO FUSER ENTRY THE ERASE BIT IS SET,OTHERWISE IT IS UNSET 
2J46    [ IF IT IS SET  
2JHQ    [ TERMINAL FILES
2K3B    [     THE ERASE BIT IS    UNSET IF SET  
2KH2    [     FREEZECOUNTS ARE ZEROISED IF NON ZERO 
2L2L    [     UNCLEAN BITS ARE REPLACED BY BACKMAP MARKERS-NO MAPPING   
2LG=    [   
2L^W
2MFG    MASKGEN        #77770000
2M^6    XPRMESS        +BMPARTRES   
2NDQ    XBLOCKWRONG    +BMREPEAT
2NYB    NINITIATED     16HINITIATED DUE TO  
2PD2    NCORRUPTION    12HCORRUPTION
2PXL    NREADFAIL      12HREAD FAIL 
2QC=    SLAVEACT
2QWW    #HAL  +BSA+AUTOMAP,0
2RBG    NUJLIST 
2RW6                   4H****   
2S*Q    SAVELANG       4H####   
2STB    NSYS           12HSYSTEM
2T*2    NMASTER        12HMASTER
2TSL    [ VITAL SYSTEM FILES
2W#=    NVSF
2WRW                   12HSERIAL
2X?G                   12HINCINDEX  
2XR6                   12HIDF   
2Y=Q                   12HPROPERTY  
2YQB    #DEF  NUMF=0?-NVSF/3
2^=2    [   
2^PL    [****************************************** QSTEPC  
329=    [  SUBROUTINE TO 'STEP' TO NEXT RECORD USING QSTEPC 
32NW    [   AND BMCNTRL TO DO READ TRANSFERS.   
338G    [   
33N6    QSTEPC  
347Q          SBX   7  FX1  
34MB    QSTEPCRPT   
3572          QSTEPC   ,XBACKREAD   
35LL          ADX   7  FX1  
366=          EXIT  7  0
36KW    XBACKREAD   
375G          DOWN     BMCNTRL,2
37K6          BRN      QSTEPCRPT
384Q          BRN      XRECHEAD 
38JB          STOZ     3
3942          ADX   7  FX1  
39HL          EXIT  7  0
3=3=    [   
3=GW    [******************************************** MAPBLOCKS 
3?2G    [  SUBROUTINE TO 'MAP' THE BLOCKS OF A FILE 
3?G6    [   
3?^Q    MAPBLOCKS   
3#FB          SBX   7  FX1  
3#^2          STO   7  ACOMMUNE2(2) 
3*DL          BLOCKMAP NOLF,ZBLOCK1 
3*Y=          LDX   7  ACOMMUNE2(2) 
3BCW          ADX   7  FX1  
3BXG          EXIT  7  0                   [IF NORMAL EXIT  
3CC6    ZBLOCK1                            [HERE IF FILE EMPTY  
3CWQ          LDX   2  FX2  
3DBB          LDX   4  ACOMMUNE1(2) 
3DW2          LDX   0  AWORK1(2)
3F*L          ADN   0  1
3FT=          BNZ   0  SKIPTRAPS           [IF NOT MAPPING MASTERS FCB  
3G#W          JBS   NOMULT,2,AW2PARTRES 
3GSG          GEOERR   1,FS-HELP!   
3H#6    [   
3HRQ    STEPREWRITE 
3J?B          STEPREWRITE   
3JR2          EXIT  7  0
3K=L    [   
3KQ=    SUB1
3L9W          HUNTMISB 2,FI,FLIST   
3LPG          EXIT  1  0
3M96    [   
3MNQ    SUB2
3N8B          HUNTMISB 2,FI,FRESTUSER   
3NN2          EXIT  1  0
3P7L    [   
3PM=    OUTPACK 
3Q6W          SBX   7  FX1  
3QLG          OUTPACKX  2,5,6   
3R66          ADX   7  FX1  
3RKQ          EXIT  7  0
3S5B    [   
3SK2    MONOUT  
3T4L          SBX   7  FX1  
3TJ=          MONOUTX  3
3W3W          ADX   7  FX1  
3WHG          EXIT  7  0
3X36    [   
3XGQ    PUTINFLIST  
3Y2B          BS       2,AW2PUTINFL 
3YG2          EXIT  7  0
3Y^L    [   
3^F=    TOHUNTFLIST 
3^YW          HUNTMISB 1,FI,FLIST   
42DG          EXIT  7  0
42Y6    [   
43CQ    [********************************************* Z1BMAPONE
43XB    [   ENTRY ACROSS FROM BACKMAP TO 'MAP'  
44C2    [   :MASTER'S FCB   
44WL    [   
45B=    Z1BMAPONE   
45TW          STOZ     AWORK2(2)
46*G    [*************:********:*:*:*:************** Z11BMAPONE 
46T6    [  ENTRY ACROSS FRON BMCNTRL TO 'MAP' THE TOP   
47#Q    [    DIRECTORY OF A RESTORED LIMB'S FCB.
47SB    [   
48#2    Z11BMAPONE  
48RL          STOZ     AMAPDEPTH(2) 
49?=          NGN   0  1
49QW          STO   0  AWORK1(2)             [ TO INDICATE MAPPING MASTERS FCB  
4==G
4=Q6          TOPFCB2  3                   [MASTER  
4?9Q          LDX   5  FUSEBL(3)
4?PB          SBN   5  FCBLEN-2 
4#92          LDX   4  5                   [PSEUDO RECORD HEADER
4#NL          SBN   4  2                   [PSEUDO RECORD LENGTH
4*8=          ADN   3  BSPRE-1  
4*MW          TRACEIF  K6BMAPONE,99,299,AWORK1(2),MAPMAST   
4B7G          CALL  7  MAPBLOCKS           [TO MAP MASTERS FCB  
4BM6    [   
4C6Q    [********************************************: Z2BMAPONE
4CLB    [   MAIN ENTRY FOR SLAVE ACTIVITIES TO 'MAP7 A DIRECTORY
4D62    [   
4DKL    Z2BMAPONE   
4F5=    [   
4FJW    [   
4G4G          LDN   0  FBLKS
4GJ6          STO   0  AWORK3(2)           [FREADBLOCK FOR FIRST BLOCK  
4H3Q          STOZ     AWORK4(2)           [USED FOR KEY CHECK  
4HHB          MBC      2,AW2DIRBELOW,AW2DUMP,AW2JOB4ASTR,AW2PUTINFL,AW2MULT 
4J32    NEXTNAME
4JGL           CALL  7  QSTEPC  
4K2=          BZE   3  NOMORE              [IF END OF DIRECTORY 
4KFW          MBC      2,AW2INDEX,AW2ONLINE,AW2DIR  
4K^G          LDEX  0  FRH(3)   
4LF6          SBN   0  FRDE 
4LYQ          BNZ   0  XFILEBENT           [IF NOT NAMERECORD   
4MDB          LDX   0  ERESN(3) 
4MY2          BNZ   0  XFILEBENT
4NCL          LDX   0  EINCN(3) 
4NX=          BNG   0  SKELETON            [IF SKELETON FROM GEN RES
4PBW          JBC      NINDEX,3,BNINDEX    [JUMP IF UNINDEXED   
4PWG          BS       2,AW2INDEX          [IF FILE IS INDEXED  
4QB6    NINDEX  
4QTQ          LDX   4  ECOPSN(3)
4R*B          SRL   4  15                  [NUMBER OF BLOCKS FOR LATER CHECK
4RT2          STO   4  ANUMBLKS(2)  
4S#L          LDX   0  ENUSEN(3)
4SS=          STO   0  AWORK1(2)           [NUMBER OF TRAPS 
4T?W          LDEX  0  ECOPSN(3)           [ONLINE MARKER   
4TRG          SBN   0  2
4W?6          BPZ   0  XFILEBENT           [IF MORE THAN ONE BLOCKS RECORD  
4WQQ          ADN   0  2
4X=B          BZE   0  NOONLINE 
4XQ2          BS       2,AW2ONLINE  
4Y9L    NOONLINE
4YP=          LDX   5  ELOC1N(3)           [CALCULATE KEY OF ENTRANT
4^8W          ADX   5  ELOC2N(3)           [     "     "         "  
4^NG          ADX   5  ELOC3N(3)           [   "       "
5286          BXL  5  AWORK4(2),XFILEBENT  [ ERROR IF < LAST ENTRY  
52MQ          TOPFCA2  1
537B          LDX   7  FREADBLOCK(1)
53M2          BXE   7  AWORK3(2),NONUBLOK   
546L          FFINDEXB 1,1                 [ CHECK KEY OF LAST BLOCK IF 
54L=          SBN   7  FBLKS-1             [ JUST GONE ON TO NEW BLOCK  
555W          ADN   1  A1+1 
55KG          LDX   0  AWORK4(2)
5656          SMO      7
56JQ          BXU   0  0(1),XFILEBENT      [ ERROR IF NOT SAME AS IN FINDEXF
574B          ADN   7  FBLKS-1  
57J2          STO   7  AWORK3(2)
583L    NONUBLOK
58H=          LDX   1  FX1  
592W          STO   5  AWORK4(2)
59GG          JBS      TAPE,3,BNLIB        [IF LIBRARIAN ENTRANT
5=26          LDX   0  ESERN(3)            [ZERO FOR NON-TAPE ENTRANT   
5=FQ          BNZ   0  XFILEBENT
5=^B          LDX   0  ELOC1N(3)
5?F2          BPZ   0  XFILEBENT           [IF LOCAL NAME CHAR1 = NON ALPHA 
5?YL          LDX   0  EREELN(3)           [REEL NUM MUST BE 1 FOR FILE 
5#D=          SBN   0  1
5#XW          BNZ   0  XFILEBENT
5*CG          LDX   0  EGENN(3) 
5*X6          ANDX  0  MASKGEN(1)   
5BBQ          BNZ   0  XFILEBENT
5BWB          LDX   0  EUSE1N(3)
5CB2          BZE   0  TERMINAL            [IF TERMINAL FILE
5CTL          BPZ   0  XFILEBENT           [DIRECTORY NAME IS NON ALPHA 
5D*=    [   
5DSW    [********************************************   
5F#G    [  ENTRY IS FOR A DIRECTORY - GO ACROSS TO BMAPDIR  
5FS6    [    TO DO SPECIAL CHECKS AND MARK FUSER ENTRY  
5G?Q    [   
5GRB          ACROSS   BMAPDIR,1
5H?2    TAPE
5HQL    [   
5J==    [********************************************   
5JPW    [  ENTRY IS FOR A TAPE - SO GO ACRPSS TO BMAPTAPE TO DO S   
5K9G    [   SPECIAL TAPE CHECKS AND MARK FUSER ENTRY
5KP6    [   
5L8Q          ACROSS   BMAPTAPE,1   
5LNB    MAPTERMINAL 
5M82          CALL  7  QSTEPC   
5MML          BZE   3  XFILEBENT
5N7=          LDEX  5  FRH(3)   
5NLW          CALL  7  MAPBLOCKS            [ MAP BLOCKS RECORD 
5P6G          BRN      SKIPTRAPS
5PL6    [   
5Q5Q    [*************************************************** TERMINAL   
5QKB    [    ENTRY IS FOR A TERMINAL FILE   
5R52    [   
5RJL    TERMINAL
5S4=          TRACEIF  K6BMAPONE,99,299,ELOC1N(3),TERMINAL  
5SHW          LDX   0  ELANN(3) 
5T3G          BXE   0  NUJLIST(1),SEEIFEMPT 
5TH6          BXU   0  SAVELANG(1),NOTSAVING
5W2Q    [   
5WGB    [*************************************************  
5X22    [  ENTRY IS FOR SAVING FILE SO MARK FUSER ENTRY BY  
5XFL    [ GOING DOWN TO BMAPDIR 
5X^=    [   
5YDW          DOWN     BMAPDIR,4
5YYG          STEPAGAIN 
5^D6    NOTSAVING   
5^XQ    [   
62CB    [***************************************************
62X2    [  ENTRYIS FOR A USER JOBLLST SO CHECK IF EMPTY,
63BL    [  UNLESS DOING A GENERAL OR PARTIAL RESTORE. IF
63W=    [  NON-EMPTY OR DOING A RESTORE MARK FUSER E
64*W    [   ENTRY BY  GOING DOWN TO BMAPDIR.( IN THE CASE OF RESTORE
64TG    [   THE FILE WILL NEED RE-INDEXING) 
65*6    [   
65SQ          JMBAC    NOBITS,3,BNONLINE,BNALLINCS,BNPURE   
66#B          ERS   0  EINF2-A1(3)  
66S2          CALL  7  STEPREWRITE  
67?L          BRN      NOCHEKEMPTY  
67R=    SEEIFEMPT   
68=W          BWNZ     GINCTSN,NOTEMPTIES   
68QG          JBS      NOTEMPTIES,2,AW2PARTRES  
69=6          LDX   0  ECOPSN(3)
69PQ          SRL   0  9
6=9B          BZE   0  NOCHEKEMPTY  
6=P2    NOTEMPTIES  
6?8L          DOWN     BMAPDIR,3          [ TO SET JOBLIST BIT IN FUSER 
6?N=          BS       2,AW2JOB4ASTR
6#7W          STEPAGAIN 
6#MG    NOCHEKEMPTY 
6*76    NOBITS  
6*LQ    [   
6B6B    [*********************************************  
6BL2    [   CLEAR FREEZECOUNTS AND REMOVE ERASE BITS
6C5L    [   
6CK=          JBCC     TERM2,3,BNBM 
6D4W          CALL  7  STEPREWRITE  
6DJG    TERM2   
6F46          LDX   0  EAUTOCOUNTN(3)   
6FHQ          ADX   0  ESAVECOUNTN(3)   
6G3B          BZE   0  NOFREEZE            [IF NOT FROZEN   
6GH2          STOZ     EAUTOCOUNTN(3)      [UNFREEZE
6H2L          STOZ     ESAVECOUNTN(3)      [UNFREEZE
6HG=          CALL  7  STEPREWRITE  
6H^W    NOFREEZE
6JFG    #SKI G252&1 
6J^6    (   
6KDQ          LDN   0  1                   [ SEE IF EU SET TO 1 
6KYB          ANDX  0  EUN(3)   
6LD2          BZE   0  ZBHAM2   
6LXL          ERS   0  EUN(3)              [ CLEAR BIT IF SET   
6MC=          CALL  7  STEPREWRITE  
6MWW    ZBHAM2  
6NBG    )   
6NW6          JBCC     NERASE,3,BNERASE    [UNSET ERASE BIT IF SET  
6P*Q    #SKI G252&1 
6PTB    (   
6Q*2          LDN   0  1
6QSL          ERS   0  EUN(3)              [ SET EU TO 1 IF 'ERASE' BIT SET 
6R#=    )   
6RRW          CALL  7  STEPREWRITE  
6S?G    NERASE  
6SR6    [   
6T=Q    [***********************************************************
6TQB    [   IF ENTRY IS A MULTIFILE GO DOWN TO BMSTREAM TO  
6W=2    [   RECORD DETAILS AND CHECK CONSISTENCY
6WPL    [   
6X9=          JMBAC    NOTSTREAM,3,BNMDF,BNMULT 
6XNW          DOWN     BMSTREAM,1          [REMENBER MULTIFILE DETAILS  
6Y8G          STEPAGAIN                    [ON NAME RECORD  
6YN6          BS       2,AW2MULT           [TO DENOTE MULTIFILE 
6^7Q    NOTSTREAM   
6^MB          JBC      TEMPFILE,3,BNTEMP   [IF TEMPORARY FILE   
7272          CALL  7  PUTINFLIST   
72LL    TEMPFILE
736=    [   
73KW    [*****************************************************  
745G    [  CHECK IF FILE UNCLEAN - IT WILL NEED TO BE DELETED   
74K6    [  UNLESS IT IS REVERED OR AN INTER PROCESSOR LINK  
754Q    [  (IPL) FILE WHEN IT SHOULD BE TREATED AS CLEAN
75JB    [   
7642          JBS      UNCLEAN,3,BNUWB     [IF OPEN UNCLEANLY   
76HL          JBS      SKIPALL,3,BNBMUWB   [IF WAS PREVIOUSLY OPEN UNCLEANLY
773=    QIPL
77GW          JBC      SKIPTRAPS,2,AW2ONLINE    [DO NOT MAP IF OFFLINE  
782G          TRACEIF  K6BMAPONE,99,299,4,MAPTERM   
78G6          JBC      NOTOBEDUMP,3,BNDUMP  
78^Q          BS       2,AW2DUMP
79FB    NOTOBEDUMP  
79^2          BRN      MAPTERMINAL         [  TO MAP IT 
7=DL    UNCLEAN 
7=Y=          BC       3,BNUWB  
7?CW          CALL  7  STEPREWRITE  
7?XG          JMBS     QIPL,3,BNIPL,BNREVERE
7#C6          BS       3,BNBMUWB
7#WQ    [   
7*BB    [********************************************** SKIPALL 
7*W2    [   ENTRY POINT FROM BMAPDIR TO 'SKIP' BLOCKS RECORD AND
7B*L    [   GO ON TO CHECK TRAPS RECORDS ETC.   
7BT=    [   
7C#W    SKIPALL 
7CSG          TRACEIF  K6BMAPONE,99,299,1,FLISTADD  
7D#6          CALL  7  PUTINFLIST   
7DRQ          JBC      SKIPTRAPS,2,AW2ONLINE
7F?B          CALL  7  QSTEPC   
7FR2          BZE   3  XFILEBENT           [VERY NASTY EOF  
7G=L    [   
7GQ=    [**************************************************** SKIPTRAPS 
7H9W    [   ENTRY POINT FROM BMAPDIR HAVING ALREADY MAPPED  
7HPG    [  BLOCKS RECORD, TO CHECK TRAPS ETC.   
7J96    [   
7JNQ    SKIPTRAPS   
7K8B          JBC      NOINDEX,2,AW2INDEX   
7KN2          CALL  7  QSTEPC                         [ONTO INDEX RECORD
7L7L          BZE   3  XFILEBENT
7LM=          LDEX  0  FRH(3)              [CHECK BASIC FORMAT  
7M6W          SBN   0  3                   [ -OF
7MLG          SBX   0  ANUMBLKS(2)          [ -THE  
7N66          BNZ   0  XFILEBENT           [ -INDEX 
7NKQ          LDCT  0  #200                [ -RECORD
7P5B          ERX   0  INDEXIDN(3)         [ -FOR SIZE  
7PK2          BNZ   0  XFILEBENT           [ -AND IDENTIFICATION
7Q4L    NOINDEX 
7QJ=          LDX   6  AWORK1(2)
7R3W          BZE   6  NEXTNAME            [IF FILE HAS NO TRAPS
7RHG    NEXTTRAP
7S36          CALL  7  QSTEPC                         [ONTO TRAPS RECORD
7SGQ          BZE   3  XFILEBENT
7T2B          LDEX  0  FRH(3)              [CHECK FORMAT OF TRAPS RECORD
7TG2          SBN   0  5                   [FOR 
7T^L          BNZ   0  XFILEBENT           [ - WRONG SIZE   
7WF=          LDX   0  ETRUSER1N(3)        [       AND  
7WYW          BPZ   0  XFILEBENT           [ - INVALID USERNAME 
7XDG          BCT   6  NEXTTRAP 
7XY6          BRN      NEXTNAME            [ AT END OF TRAPS
7YCQ    NOMORE  
7YXB    [   
7^C2    [*****************************************:***: 
7^WL    [  IF ANY MULTIFILES HAVE BEEN FOUND, GO DOWN TO
82B=    [   BMSTREAM TO CHECK FSMB ENTRIES. 
82TW    [   
83*G          JBC      NOMULT,2,AW2MULT 
83T6          DOWN     BMSTREAM,3          [ TO SORT OUT MULTIFILES 
84#Q          BRN   NOMULT              [ IF UP - NO FLISTADD   
84SB          CALL  7  PUTINFLIST          [ IF UP + 1  - FLISTADD  
85#2    NOMULT  
85RL    [   
86?=    [****************************************************   
86QW    [  NOW CHECK EXPECTED SETTINGS OF DUMPER'S 'NOT 
87=G    [  SEARCHING ALL DIRECTORIES' BITS (FROM FCB)   
87Q6    [  AGAINST ACTUAL CONTENTS OF DIRECTORY (IN AWORK2 BITS)
889Q    [   
88PB          TOPFCB2  3
8992          LDN   5  7
89NL          JBS      X4ASTRBIT,3,BFJOB4ASTR   
8=8=          SBN   5  4
8=MW    X4ASTRBIT   
8?7G          JBS      XDUMPBIT,3,BFDUMP
8?M6          SBN   5  2
8#6Q    XDUMPBIT
8#LB          JBS      XDIRBIT,3,BFDIRBELOW 
8*62          SBN   5  1
8*KL    XDIRBIT 
8B5=          LDN   7  7
8BJW          JBS      Y4ASTR,2,AW2JOB4ASTR 
8C4G          SBN   7  4
8CJ6    Y4ASTR  
8D3Q          JBS      YDUMP,2,AW2DUMP  
8DHB          SBN   7  2
8F32    YDUMP   
8FGL          JBS      YDIR,2,AW2DIRBELOW   
8G2=          SBN   7  1
8GFW    YDIR
8G^G    [   
8HF6    [******************************************************:
8HYQ    [  EXPECTED SETTINGS NOW IN X5 - CORRECT SETTINGS IN X7 
8JDB    [   
8JY2          ERX   5  7
8KCL          BZE   5  XNSADOK             [ J. IF SAME 
8KX=          LDN   6  4
8LBW          SBX   6  5
8LWG          BNZ   6  XNSADRONG           [ J. IF OTHER THAN JOB4ASTR WRONG
8MB6          LDN   6  4
8MTQ          ANDS  7  6
8N*B          BNZ   6  XNSADOK             [ J. IF SET WHEN SHOULD BE CLEAR 
8NT2    [   
8P#L    [****************************************************** 
8PS=    [ NOW CHECK IF ANY FLIST ENTRY AT ALL IS REQUIRED   
8Q?W    [    (1) FOR N.S.A.D. BITS TO BE CORRECTED  
8QRG    [   
8R?6    XNSADRONG   
8RQQ          LDCT  0  #200 
8S=B          ORS   0  7
8SQ2    XNSADOK 
8T9L    [   
8TP=    [********************************************** 
8W8W    [   
8WNG    [    (2) SO THAT ALL BEPARTRES BITS WILL BE CLEARED 
8X86          JBC      XNOTPR,2,AW2PARTRES  
8XMQ          LDCT  0  #100 
8Y7B          ORS   0  7
8YM2    XNOTPR  
8^6L    [   
8^L=    [**********************************************:
925W    [   (3) TO DO A FULL SEARCH OF DIRECTORY TO  CHECK  
92KG    [ FOR UNCLEAN OR TEMPORARY FILES ETC. TO BE DELETED 
9356    [   
93JQ          JBC      XCHECKADD,2,AW2PUTINFL   
944B          LDCT  0  #400 
94J2          ORS   0  7
953L    XCHECKADD   
95H=          LDCT  0  #700 
962W          ANDX  0  7
96GG          BZE   0  ZENTFOUND           [ J. IF NO ENTRY REQUIRED
9726          LDX   4  FME1(3)  
97FQ          LDX   5  FME2(3)  
97^B          LDX   6  FME3(3)  
98F2    ZADDENT 
98YL          HUNTMISB 1,FI,FLIST   
99D=          LDX   0  A1(1)
99XW          ADN   0  8                   [ 1ST. 4 WORDS + THIS ENTRY  
9=CG          TXL   0  ALOGLEN(1)   
9=X6          BCS      ZNOWADENT           [IF THERE IS ROOM FOR ENTRY  
9?BQ          POP      ZADDENT,1,FLISTLENWT  [ CHECK LENGTHENING
9?WB          LDX   3  ALOGLEN(1)   
9#B2          ADN   3  150  
9#TL          ALTLENG  1,3,SUB1            [ADD 150 WORDS TO FLIST  
9**=          HUNTMISB 1,FI,FLIST   
9*SW          VOP      1,FLISTLENWT 
9B#G          HUNTMISB 1,FI,FLIST   
9BS6    ZNOWADENT   
9C?Q          ADX   1  A1(1)
9CRB          STO   4  A1+4(1)             [
9D?2          STO   5  A1+5(1)             [
9DQL          STO   6  A1+6(1)             [  MAKE ENTRY
9F==          STO   7  A1+7(1)             [
9FPW          CALL  7  TOHUNTFLIST  
9G9G          LDN   0  4
9GP6          ADS   0  A1(1)
9H8Q    ZENTFOUND   
9HNB          LDX   1  FX1  
9J82          LDX   0  ATYPE(2) 
9JML          BXE   0  SLAVEACT(1),SLAVEND [IF END OF A SLAVE ACTIVITY  
9K7=          ACROSS   BMCNTRL,1
9KLW    SLAVEND 
9L6G          TRACEIF  K6BMAPONE,99,299,AWORK2(2),SLAVEND   
9LL6          ACROSS   BMCNTRL,3
9M5Q    NCLOSE  
9MKB          MHUNTW   3,FILE,FTAB  
9N52          BNG   3  SLAVEND  
9NJL          LDX   0  A1+1(3)  
9P4=          BXU   0  AMAPDEPTH(2),SLAVEND 
9PHW          FREECORE 3
9Q3G          BRN      SLAVEND  
9QH6    [   
9R2Q    [******************************************* NOLF   
9RGB    [ THIS SECTION OF CODE DEALS WITH ENTRANTS FOUND TO BE ON   
9S22    [ UNAVAILABLE RESIDENCES.   
9SFL    [   
9S^=    NOLF
9TDW          LDX   2  FX2  
9TYG          LDX   4  1(3)                [RESIDENCE NUMBER
9WD6          BACKSPACE                    [TO NAME RECORD  
9WXQ          STEPAGAIN 
9XCB          JMBAC    PUTOFF,3,BNDUMP,BNREVERE 
9XX2    [   
9YBL    [**************************************************:
9YW=    [  FILE IS EITHHR TO-BE-DUMPED OR REVERED SO ASK
9^*W    [   OPERATORS TO LOAD RESIDENCE TO AVOID LOSS OF FILES  
9^TG    [   
=2*6    REQUESTRES  
=2SQ          DOWN      BMQUEST,3   
=3#B    [   
=3S2    [********************************************************   
=4?L    [  IF IT COMES UP, RESIDENCE IS UNAVAILABLE SO PUT  
=4R=    [  FILE OFFLINE UNLESS MDF(MOVE TO RES. 3 AS ITS EMPTY) 
=5=W    [ OR 'TO-BE-DUMPED' MULTIFILE ELEMENT(NEEDS SPECIAL 
=5QG    [  ACTION BY BBSTREAM). 
=6=6    [   
=6PQ    PUTOFF  
=79B          STEPAGAIN 
=7P2          JBS      MULTENT,3,BNMULT 
=88L          JBC      NOTSTRM,3,BNMDF  
=8N=          CALL  7  QSTEPC   
=97W          LDN   0  3
=9MG          STO   0  1(3) 
==76          CALL  7  STEPREWRITE  
==LQ          BRN      SKIPTRAPS
=?6B    MULTENT 
=?L2          LDX   0  EDLDN(3) 
=#5L          BZE   0  MULTODUMP
=#K=          JBC      NOTSTRM,3,BNDUMP 
=*4W          BRN      NOWMULTDOWN  
=*JG    MULTODUMP   
=B46          JBC      NOTSTRM,3,BNDUMP 
=BHQ    NOWMULTDOWN 
=C3B          DOWN     BMSTREAM,2          [OTHERWISE CONSIDER AS UNCLEAN   
=CH2    NOTSTRM 
=D2L          STEPAGAIN 
=DG=          CALL  7  STEPREWRITE  
=D^W          BS       3,BNBM              [MARK TO BE PUT OFFLINE IN BMAPTWO   
=FFG          JBCC     NOTJRNL,3,BNREVERE  [ IF ITS AN SJFILE TELL OPS. 
=F^6          MONOUT   JSJTRUNC            [ JOURNAL DATA LOST  
=GDQ    NOTJRNL 
=GYB          LDX   2  FX2  
=HD2          BRN      SKIPALL  
=HXL    [   
=JC=    [***************************************************** XFILEBENT
=JWW    [  ENTRY FROM BMAPDIR OR BMAPONE IF DIRECTORY WAS   
=KBG    [ FOUND TO BE CORRUPT. FIRST CHECK IF THIS IS THE   
=KW6    [  SECOND TIME THIS BLOCK HAS BEEN FOUND CORRUPT
=L*Q    [  ( I.E. CONFIRM THAT CORRUPTION NOT MISREAD 1ST TIME) 
=LTB    [   
=M*2    XFILEBENT   
=MSL          NGN   5  1
=N#=          TOPFCB2  3
=NRW          CALL  1  SUB2 
=P?G          LDX   1  A1(2)
=PR6    NEXTFRNAME  
=Q=Q          BZE   1  WAITPUT  
=QQB          TESTNAMX 3,FME1(3),FRUSE(2),NOTSAME   
=R=2          TOPFCA   3
=RPL          LDX   0  FREADBLOCK(3)
=S9=          SBN   0  FBLKS-1  
=SNW          LDEX   7  FRFIL(2)
=T8G          STOZ     FRFIL(2) 
=TN6          SBX   7  0
=W7Q          BZE   7  RESINIT             [ J. IF CORRUPTION CONFIRMED 
=WMB          STO   0  FRFIL(2) 
=X72          LDX   7  0
=XLL          CALL  1  SUB2 
=Y6=          LDX   0  7
=YKW          BRN      XBENTRPT            [ ELSE WANT TO REPEAT SEARCH 
=^5G    NOTSAME                            [ TO GET A SECOND CHANCE 
=^K6          ADN   2  8
?24Q          SBN   1  8
?2JB          BRN      NEXTFRNAME   
?342    [   
?3HL    [***************************************************** XRECHEAD 
?43=    [  ENTRY IF CORRUPT RECORD HEADERS WERE FOUND   
?4GW    [     (EVEN AFTTR REPEATS)  
?52G    [   
?5G6    XRECHEAD
?5^Q          LDN   5  1
?6FB          BRN      WAITPUT  
?6^2
?7DL    [******************************************************* READFAIL   
?7Y=    [  'READFAIL' HAS OCCURRED - SAVE 'BA' WORDS (TRANSFER  
?8CW    [   DETAILS) FOR SEGMENT READFAIL TO OUTPUT MESSAGE 
?8XG    [   
?9C6    READFAIL
?9WQ          LDN   7  BA1(2)   
?=BB          LDN   0  ACOMMUNE1(2) 
?=W2          MOVE  7  3
??*L          STOZ     5
??T=          DOWN     READFAIL,4   
?##W    [   
?#SG    [*****************************************************: 
?*#6    [  WE ARE GOING TO INITIATEE A RESTORE BY MAKING A  
?*RQ    [  FRESTUSER ENTRY ( LOCKOUT IS REQUIRED TO PREVENT 
?B?B    [  TWO LENGTHENERS AT THE SAME TIME)
?BR2    [   
?C=L    WAITPUT 
?CQ=          LDX   2  BSACHAPTR
?D9W          POP      WAITPUT,2,FTABWAIT   
?DPG          CALL  1  SUB2 
?F96          LDX   0  ALOGLEN(2)   
?FNQ          ADN   0  8
?G8B          ALTLENG  2,0,SUB2 
?GN2          LDX   2  BSACHAPTR
?H7L          VOP      2,FTABWAIT   
?HM=          CALL  1  SUB2 
?J6W          TOPFCB   3
?JLG          LDN   6  FME1(3)  
?K66          SMO      A1(2)
?KKQ          LDN   7  FRUSE(2) 
?L5B          MOVE  6  3                   [  PUT IN USERNAME   
?LK2          SMO      FX2  
?M4L          LDN   6  ASUPUSER 
?MJ=          SMO      A1(2)
?N3W          LDN   7  FRSUP(2) 
?NHG          MOVE  6  3                   [ AND SUPERIOR USERNAME  
?P36          NGN   0  1
?PGQ          SMO      A1(2)
?Q2B          STO   0  FRINC(2)            [ INCREMENT NO. = -1 
?QG2          SMO      A1(2)
?Q^L          STOZ     FRFIL(2)            [ AND ZERO FILE  NO. 
?RF=          LDN   0  8
?RYW          ADS   0  A1(2)
?SDG          ADS   0  FRCNT(2) 
?SY6          BPZ   5  RESINIT             [ J. IF NOT 'FILEBENT' ENTRY 
?TCQ    [   
?TXB    [*********************************************: 
?WC2    [  IF 'FILEBENT' WE WANT TO REPEAT SEARCH SO WE 
?WWL    [  REMEMBER WHICH BLOCK WE THOUGHT TO BE CORRUPT SO THAT
?XB=    [  WE CAN CHECK IF SAME BLOCK CORRUPT NEXT TIME 
?XTW    [   
?Y*G          TOPFCA   3
?YT6          LDX   0  FREADBLOCK(3)
?^#Q          SBN   0  FBLKS-1  
?^SB          LDX   3  A1(2)
#2#2         SBN   3  8 
#2RL          SMO      3                   [ PUT BLOCK NO. IN FRFIL 
#3?=          STO   0  FRFIL(2)            [ SO CAN CHECK IF SAME BLOCK NXT TIME
#3QW    XBENTRPT
#4=G          LDX   3  0
#4Q6          SBN   3  1
#59Q          LDN   2  3
#5PB          LDN   5  1
#692          LDN   6  JPDNUMA  
#6NL          CALL  7  OUTPACK  
#78=          TOPFCB2  3
#7MW          LDN   2  FME1(3)  
#87G          LDN   5  3
#8M6          LDN   6  JPDUSERNAME  
#96Q          CALL  7  OUTPACK             [ OUTPUT DETAILS OF CORRUPT BLOCK
#9LB          LDX   3  XBLOCKWRONG(1)      [ TO OPERATORS   
#=62          CALL  7  MONOUT   
#=KL          BRN      NCLOSE              [ ABANDON MAPPING OF THIS  DIR.  
#?5=    RESINIT 
#?JW          LDX   4  5
##4G          TOPFCB   3
##J6          LDX   1  FX1  
#*3Q          TESTNAMX 3,FME1(3),NMASTER(1),NOTMASTER   
#*HB          GEOERR   1,MASBENT           [ CAN'T RESTORE :MASTER  
#B32    [   
#BGL    [********************************************************   
#C2=    [  INFORM OPERATORS THAT RESTORE HAS BEEN INITIATED 
#CFW    [   
#C^G    NOTMASTER   
#DF6          LDN   2  FME1(3)  
#DYQ          LDN   5  3
#FDB          LDN   6  JPDUSERNAME  
#FY2          CALL  7  OUTPACK  
#GCL          LDN   2  NINITIATED(1)
#GX=          LDN   5  4
#HBW          LDN   6  JPDVARCHAR   
#HWG          CALL  7  OUTPACK  
#JB6          LDN   2  NREADFAIL(1) 
#JTQ          BZE   4  XRFAIL   
#K*B          LDN   2  NCORRUPTION(1)   
#KT2    XRFAIL  
#L#L          LDN   5  3
#LS=          LDN   6  JPDVARCHAR   
#M?W          CALL  7  OUTPACK  
#MRG          LDX   3  XPRMESS(1)   
#N?6          CALL  7  MONOUT   
#NQQ          SEGENTRY K60BMAPONE          [ USED BY PRQUERY
#P=B          BRN      NOQUERY             [ RESTORE TIME MACRO 
#PQ2          DOWN     BMQUESTB,5          [ TO ASK IF A 'PM' IS WANTED 
#Q9L    NOQUERY 
#QP=          BRN      NCLOSE              [ TO ABANDON MAPPING OF THIS DIR.
#R8W
#RNG    SKELETON
#S86          GEOERR   1,SKELETON   
#SMQ    XBR 
#T7B          GEOERR   1,BMAPONE
#TM2    [   
#W6L          MENDAREA BMAPGAP,K99BMAPONE   
#WL=    [   
#X5W    #END
#XKG
^^^^ ...335012600001
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1