{{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