{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: BMAPONE867)}}
====== BMAPONE867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLENG|ALTLENG]], [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BC|BC]], [[george:macro:BLOCKMAP|BLOCKMAP]], [[george:macro:BS|BS]], [[george:macro:BWNZ|BWNZ]], [[george:macro:BXE|BXE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:DOWN|DOWN]], [[george:macro:FFINDEXB|FFINDEXB]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:JBC|JBC]], [[george:macro:JBCC|JBCC]], [[george:macro:JBS|JBS]], [[george:macro:JMBAC|JMBAC]], [[george:macro:JMBS|JMBS]], [[george:macro:MBC|MBC]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:MONOUTX|MONOUTX]], [[george:macro:NOBITS|NOBITS]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:OUTPACKX|OUTPACKX]], [[george:macro:POP|POP]], [[george:macro:QSTEPC|QSTEPC]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:STEPREWRITE|STEPREWRITE]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TOPFCA|TOPFCA]], [[george:macro:TOPFCA2|TOPFCA2]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACEIF|TRACEIF]], [[george:macro:VOP|VOP]]
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