{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: BMQUEST866)}}
====== BMQUEST866 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLENG|ALTLENG]], [[george:macro:ALTLENGD|ALTLENGD]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CLOSEFRBS|CLOSEFRBS]], [[george:macro:COOR3|COOR3]], [[george:macro:DEMMESS|DEMMESS]], [[george:macro:DEMMEX|DEMMEX]], [[george:macro:EMSCONWT|EMSCONWT]], [[george:macro:FILENUMB|FILENUMB]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GEOSTOP|GEOSTOP]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:MBS|MBS]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:MONOUTX|MONOUTX]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:OUTPACKX|OUTPACKX]], [[george:macro:POP|POP]], [[george:macro:PRQUERY|PRQUERY]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:STEPREWRITE|STEPREWRITE]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:VFREE|VFREE]], [[george:macro:VOP|VOP]]
22FL ... SEG BMQUEST,866,EDWARD MOON,BMAP
22^= SEGENTRY K1BMQUEST,Z1BMQUEST
23DW SEGENTRY K2BMQUEST,Z2BMQUEST
23YG SEGENTRY K3BMQUEST,Z3BMQUEST
24D6 SEGENTRY K4BMQUEST,PRDIRS
24XQ SEGENTRY K5BMQUEST,PRQUERY
25CB SEGENTRY K7BMQUEST,PRERASE
25X2 SEGENTRY K8BMQUEST,Z8BMQUEST
26BL SEGENTRY K9BMQUEST,MOUT [FORCE "RESTORE?"
26W= SEGENTRY K10BMQUEST,MOUTERR
27*W ...[ENTRIES PRQUERY,PRERASE & Z8BMQUEST ARE NOW
27TG ...[CONTAINED IN BMQUESTB
2CMG MESS +3
2D76 8HRESTORE?
2DLQ RELOADING +12,12HRELOADING
2F6B XNOTDUMP 16HUSER NOT DUMPED
2G5L XABANDONED 16HABANDONED :
2GK= USEFUL 8H USEFUL
2H4W XESSENTIAL 12H ESSENTIAL
2HJG NEEDRES +BMRESUNAV
2J46 PRMESS +BMPARTRES
2JHQ MDIRUNAV +BMDIRUNAV
2K3B #SKI EMSJRNL<1$1
2KH2 NULL +2,4H
2L2L SP #20
2LG= Y #71
2L^W N #56
2MFG XCOLON #12
2M^6 NHYPHEN #35
2NDQ TEN +10
2NYB THIRTEEN +13
2PD2 [
2PXL STEPREWRITE
2QC= STEPREWRITE
2QWW EXIT 7 0
2RBG OUTPACK
2RW6 SBX 7 FX1
2S*Q OUTPACKX 2,5,6
2STB ADX 7 FX1
2T*2 EXIT 7 0
2TSL SUB4
2W#= HUNTMISB 2,FI,FRESUNAV
2WRW EXIT 1 0
2X?G SUB3
2XR6 HUNTMISB 2,FI,FRESTUSER
2Y=Q EXIT 1 0
2YQB SUB2
2^=2 HUNTMISB 3,FI,FRESTUSER
2^PL EXIT 1 0
329= [
32NW [**************************************************** Z1BMQUEST
338G [
33N6 [ ENTRY POINT TO ASK 'RESTORE?' AND ANALYSE REPLY
347Q [
34MB [ RE-ENTER @ K9(MOUT) TO FORCE "RESTORE?" IF BREAK DURING PREVIOUS
3572 [ BACKMAP
35LL [
366= Z1BMQUEST
36KW [
375G SEGENTRY K90BMQUEST [FOR THE FSLOAD MACRO
37K6 BRN Z91BMQUEST [ NULLED BY FSLOAD COPY,SAME OR GR
384Q [ RE-INSTATED BY FSLOAD OFF
38JB LDX 7 G3DOL [ RESTORE FLAG LEFT BY LOADER
3942 BZE 7 Z92BMQUEST [ J IF GENERAL RESTORE SUPPRESSED
39HL BRN MOUT [ ELSE ASK THE QUESTION "RESTORE?"
3=3= Z91BMQUEST
3=GW SEGENTRY K91BMQUEST [ FOR FSRELOAD MACRO
3?2G NULL [ BRN K92BMQUEST IF FSRELOAD MACRO IS
3?G6 [
3?^Q MOUT [K9BMQUEST ENTRY POINT
3#FB [
3#^2
3*DL STO 1 AWORK1(2) [ NON-ZERO TO INDICATE 'RESTORE?' OUT
3*Y= #SKI EMSJRNL
3BCW DEMMESS BMQUERY
3BXG #SKI EMSJRNL<1$1
3CC6 DEMMESS MESS
3CWQ MHUNTW 3,CONBUFF,EMSIN [ HUNT BLOCK CONTAINING REPLY
3DBB LDX 2 3
3DW2 LDX 4 A1(3)
3F*L BZE 4 NOCH [ JUMP TO REPEAT QUESTION IF NULL
3FT= NCH LDCH 5 A1+1(3)
3G#W BXE 5 SP(1),NCH1 [ IGNORE SPACES
3GSG BXL 5 TEN(1),RESTNUM [ IF FIRST CHAR IS DECIMAL INTEGER
3H#6 BXE 5 XCOLON(1),PARTRES [ IF FIRST CHAR IS ':'
3HRQ FREECORE 2
3J?B BXU 5 N(1),MOUT [ TRY AGAIN IF NOT N(O)
3JR2 [
3K=L SEGENTRY K92BMQUEST [ FOR FSRELOAD MACRO
3KQ= Z92BMQUEST
3L9W STOZ GINCTSN [ INDICATE NOT A GEN. RES.
3LPG NR
3M96 ACROSS BACKMAP,4
3MNQ NCH1 BCHX 3 £
3N8B BCT 4 NCH [TRY NEXT CHAR
3NN2 NOCH FREECORE 2
3P7L BRN MOUT [ REPEAT QUESTION
3PM= [
3Q6W [*********************************************************************
3QLG [ REPLY STARTS WITH A ':' SO WE ASSUME IT IS A STRING OF USENAMES
3R66 [ WHICH MUST BE ALPHA-NUMERIC,SPACE OR HYPHEN CHARS., STARTING WITH
3RKQ [ ALPHA CHAR., WITH NO REDUNDANT SPACES, DELIMITED BY COMMA(,)S,
3S5B [ INTRODUCED BY A ':' AND NOT MORE THAN 12 CHARS EACH LONG. IF NOT
3SK2 [ REPEAT THE QUESTION.
3T4L [ EACH VALID USERNAME IS PUT INTO THE FI/FRESTUSER BLOCK WITH INCR.
3TJ= [ NO. = -2 INDICATING REQUEST BY OPERATOR
3W3W [
3WHG [
3X36 PARTRES
3XGQ LDN 2 A1+1(3) [ ADDRESS OF FIRST CHAR
3Y2B MHUNTW 3,CONBUFF,EMSIN
3YG2 LDN 5 A1+1(3)
3Y^L SLC 5 2
3^F= ADX 5 A1(3) [ ADDRESS(IN CHARS) OF END OF BLOCK
3^YW CALL 1 SUB2 [ HUNT FRESTUSER BLOCK
42DG LDX 1 FX1
42Y6 SMO A1(3)
43CQ LDN 3 FRUSE(3) [ START ADDR. FOR CHARS. INTO FRESTUS
43XB NXTUSER
44C2 [
44WL [*******************************************************************
45B= [ VALIDATE FIRST CHARACTER OF USERNAME
45TW [
46*G BCHX 2 £ [ POINTER TO NEXT CHAR. IN REPLY
46T6 SLC 2 2 [ CONVERT ADDR. TO CHARS.
47#Q BXGE 2 5,MOUTERR [ UNEXPECTED END OF REPLY WITH ':'
47SB SRC 2 2 [ CONVERT BACK TO POINTER
48#2 LDCH 0 0(2)
48RL SBN 0 #41
49?= BNG 0 MOUTERR [ IF NOT ALPHA
49QW SBN 0 #73-#41
4==G BPZ 0 MOUTERR [ IF NOT ALPHA
4=Q6 ADN 0 #73 [ ELSE CHAR IS ALPHA SO WE
4?9Q DCH 0 0(3) [ TRANSFER IT TO FRESTUSER
4?PB LDN 6 1 [ INITIALISE CHAR. COUNT FOR THIS NAME
4#92 [
4#NL [**********************************************************************
4*8= [ LOOP TO VALIDATE SUBSEQUENT CHARACTERS.
4*MW [
4B7G NXCHAR
4BM6 BCHX 3 £ [ UPDATE POINTERS
4C6Q BCHX 2 £
4CLB SLC 2 2
4D62 BXGE 2 5,XUSEND [ IF END OF REPLY
4DKL SRC 2 2
4F5= LDCH 0 0(2) [ PICK UP NEXT CHAR.
4FJW LDX 1 FX1
4G4G BXL 0 TEN(1),NCHAROK [ O.K. IF NUMERIC
4GJ6 BXE 0 SP(1),NCHAROK [ O.K. IF SPACE
4H3Q BXE 0 NHYPHEN(1),NCHAROK [ O.K. IF HYPHEN
4HHB SBN 0 #34
4J32 BZE 0 XUSEND [ END OF THIS NAME IF COMMA
4JGL SBN 0 #41-#34
4K2= BNG 0 MOUTERR [ ERROR IF NOT ALPHA, REPEAT QUESTION
4KFW SBN 0 #73-#41
4K^G BPZ 0 MOUTERR [ ERROR IF NOT ALPHA
4LF6 ADN 0 #73
4LYQ NCHAROK
4MDB DCH 0 0(3) [ CHAR IS O.K., TRANSFER IT
4MY2 ADN 6 1 [ UPDATE CHAR COUNT
4NCL BRN NXCHAR
4NX= [
4PBW [*********************************************************************
4PWG [ END OF A USERNAME - CHECK LENGTH,ALTLENG FRESTUSER BLOCK
4QB6 [ AND SPACE FILL NEXT USERNAME FIELD. SET INCREMENT NO. = -2
4QTQ [ IF REPLY NOT YET EXHAUSTED, CHECK NEXT CHAR IS ':'
4R*B [
4RT2 [
4S#L XUSEND
4SS= STO 2 4 [ PRESERVE POINTER TO REPLY
4T?W MHUNTW 3,CONBUFF,EMSIN
4TRG SLC 3 2
4W?6 SBX 4 3 [ RELATIVEISE POINTER TO REPLY
4WQQ SBX 5 3 [ RELATIVEISE POINTER TO END
4X=B BXGE 6 THIRTEEN(1),MOUTERR [ CHECK LENGTH LESS THAN 13 CHARS
4XQ2 CALL 1 SUB2
4Y9L LDX 7 ALOGLEN(3)
4YP= ADN 7 8
4^8W ALTLENG 3,7,SUB3 [ LENGTHEN FRESTUSER
4^NG CALL 1 SUB2
5286 NGN 0 2
52MQ SMO A1(3)
537B STO 0 FRINC(3) [ SET INCR. NO. = -2
53M2 SMO A1(3)
546L STOZ FRFIL(3) [ ZEROISE FILE NO.
54L= LDN 0 8
555W ADS 0 A1(3) [ UPDATE RECORD HEADER
55KG ADS 0 FRCNT(3) [ UPDATE COUNT OF USED SPACE
5656 LDX 0 ACES
56JQ SMO A1(3)
574B STO 0 FRUSE(3) [
57J2 SMO A1(3) [
583L STO 0 FRUSE+1(3) [ SPACE FILL NEXT USERNAME FIELD
58H= SMO A1(3) [
592W STO 0 FRUSE+2(3) [
59GG MHUNTW 2,CONBUFF,EMSIN
5=26 SLC 2 2 [ DERELATIVEISE POINTER TO REPLY
5=FQ ADX 4 2 [ AND END OF REPLY
5=^B ADX 5 2 [
5?F2 STO 4 2 [
5?YL BCHX 2 £
5#D= SLC 2 2
5#XW BXGE 2 5,NRPR [ IF AT END OF REPLY
5*CG SRC 2 2 [ ELSE
5*X6 LDCH 0 0(2) [ CHECK NEXT CHARACTER
5BBQ SBN 0 #12
5BWB BNZ 0 MOUTERR [ IF NOT A ':'
5CB2 SMO A1(3)
5CTL LDN 3 FRUSE(3) [UPDATE PTR TO NXT USER IN FRESTUSER
5D*= BRN NXTUSER
5DSW NRPR
5F#G MFREE CONBUFF,EMSIN [ TREAT AS REPLY 'NO' IF END
5FS6 BRN NR [ OF REPLY AND NO ERRORS FOUND
5G?Q [
5GRB [*********************************************************************
5H?2 [
5HQL [ ERROR ROUTINE REINITIALISES FRESTUSER AND DISCARDS REPLY
5J== [
5JPW MOUTERR
5K9G VFREE CONBUFF,EMSIN
5KP6 CALL 1 SUB2
5L8Q STOZ A1(3)
5LNB STOZ FRCNT(3)
5M82 LDX 0 ACES
5MML STO 0 FRUSE(3)
5N7= STO 0 FRUSE+1(3)
5NLW STO 0 FRUSE+2(3)
5P6G STOZ FRINC(3)
5PL6 ALTLENGD 3,14,SUB3
5Q5Q LDX 2 FX2
5QKB BRN MOUT
5R52 [
5RJL [***********************************************************************
5S4= [ ROUTINE TO HANDLE INCREMENT NO. REPLIES
5SHW [ ALL CHARACTERS MUST BE NUMERIC
5T3G [
5TH6 RESTNO
5W2Q LDCH 5 A1+1(3)
5WGB BXGE 5 TEN(1),NOCH
5X22 RESTNUM
5XFL BCHX 3 £
5X^= BCT 4 RESTNO
5YDW RESTYES
5YYG ACROSS BACKMAP,3 [ TO DO A GENERAL RESTORE
5^D6 [
5^XQ [*********************************************************** Z3BMQUEST
62CB [
62X2 [ ENTRY POINT TO DEAL WITH UNAVAILABLE RESIDENCES
63BL [ ( FROM BMAPONE - 'USEFUL' FILES)
63W= [
64*W Z3BMQUEST
64TG LDX 2 BSACHAPTR
65*6 POP Z3BMQUEST,2,FTABWAIT [ LOCKOUT ANY OTHER ACTS. WHICH
65SQ LDX 2 FX2 [ FIND UNAV. RESIDENCES
66#B NGN 0 1
66S2 STO 0 AWORK1(2) [ INDICATE 'USEFUL' FILE ENTRY
67?L BRN USEFULENT
67R= [
68=W [********************************************************* Z2BMQUEST
68QG [ ENTRY POINT TO DEAL WITH UNAVAILABLE RESIDENCES
69=6 [ ('ESSENTIAL' FILES ENTRY FROM BACKMAP)
69PQ [ X4 CONTAINS RESIDENCE NO. AS FOR Z3BMQUEST ENTRY
6=9B [
6=P2 Z2BMQUEST
6?8L VOP 2,FTABWAIT [CLEAR LOCKOUT SO DICT. & SER. SLAVE FINISH
6?N= STOZ AWORK1(2) [ INDICATE 'ESSENTIAL' FILE ENTRY
6#7W USEFULENT
6#MG CALL 1 SUB4
6*76 BPZ 2 NORESETUP [ IF FRESUNAV EXISTS ALREADY
6*LQ SETNCORE 7,2,FI,FRESUNAV [ ELSE SET ONE UP
6B6B STOZ A1(2)
6BL2 SMO FX2
6C5L STOZ AWORK3 [INITIALISE REL. PTR. DOWN FRESUNAV
6CK= CHAIN 2,BMISC+1 [ CHAIN IN MISCELLANEOUS CHAIN
6D4W CALL 1 SUB4 [ SO ALL SLAVES CAN FIND IT
6DJG STOZ 3 [ INIT. MODIFIER(PTR. TO RES. NO.)
6F46 BRN NOCHEX [ SKIP LENGTHENING IF JUST SET UP
6FHQ NORESETUP
6G3B LDX 0 ALOGLEN(2)
6GH2 SBX 0 A1(2)
6H2L SBN 0 2
6HG= BPZ 0 NOLENFR [ DONT LENGTHEN IF ROOM ENOUGH
6H^W LDX 7 ALOGLEN(2)
6JFG ADN 7 8
6J^6 ALTLENG 2,7,SUB4 [ ELSE LENGTHEN BY 8 WORDS
6KDQ CALL 1 SUB4
6KYB NOLENFR
6LD2 STOZ 3 [ INITIALISE MODIFIER
6LXL NXTNO
6MC= SMO FX2
6MWW STO 3 AWORK3 [ SAVE REL. PTR. TO THIS RES. NO.
6NBG SMO 3
6NW6 LDEX 0 FRESNO(2) [ PICK UP RES. NO. FROM FRESUNAV
6P*Q BXE 0 4,NOASK [ IS IT SAME AS ONE IN QUESTION
6PTB [ IF SO, DONT REPEAT QUESTION
6Q*2 ADN 3 1 [ UPDATE RELATIVE PTR.
6QSL SMO FX2
6R#= STO 3 AWORK3 [ SAVE REL.PTR. TO NEXT RES.NO.
6RRW BXL 3 A1(2),NXTNO [ IF NOT END OF BLOCK
6S?G NOCHEX
6SR6 LDN 0 1
6T=Q ADS 0 A1(2) [ UPDATE RECORD HEADER
6TQB SMO 3 [ AND
6W=2 STO 4 FRESNO(2) [ STORE THIS RESIDENCE NO.
6WPL [
6X9= [***********************************************************************
6XNW [ OUTPUT UNAVAILABLE RESIDENCE MESSAGES AND CHECK REPLY
6Y8G [
6YN6 REPQUEST
6^7Q LDN 2 4
6^MB LDN 5 1
7272 LDN 6 JPDNUMA
72LL CALL 7 OUTPACK [ RESIDENCE NO.
736= LDX 0 AWORK1(2)
73KW BPZ 0 XESSMESS [ IF 'ESSENTIAL'
745G LDN 2 USEFUL(1)
74K6 LDN 5 2
754Q BRN USEMESS [ IF 'USEFUL'
75JB XESSMESS
7642 LDN 2 XESSENTIAL(1)
76HL LDN 5 3
773= USEMESS
77GW LDN 6 JPDVARCHAR
782G CALL 7 OUTPACK [ 'ESSENTIAL' OR 'USEFUL'
78G6 LDX 3 NEEDRES(1)
78^Q #SKI EMSJRNL
79FB DEMMEX 3 [ ASK FOR RESIDENCE
79^2 #SKI EMSJRNL<1$1
7=DL (
7=Y= MONOUTX 3 [
7?CW DEMMESS NULL [ ASK FOR RESIDENCE
7?XG )
7#C6 MHUNTW 3,CONBUFF,EMSIN [ HUNT REPLY BLOCK
7#WQ LDX 2 3
7*BB LDX 6 A1(2) [ CHECK IF NULL REPLY
7*W2 BZE 6 REPFREE [ REPEAT QUESTION IF IT IS
7B*L NEXTCHAR
7BT= LDCH 5 A1+1(3)
7C#W BXE 5 SP(1),NEXTCHARUP [ IGNORE LEADING SPACES
7CSG BXE 5 N(1),RESUNAVAIL [ IF N(O)
7D#6 FREECORE 2
7DRQ BXE 5 Y(1),RELOAD [ IF Y(ES)
7F?B BRN REPFREE [ TO REPEAT QUESTION IF NEITHER
7FR2 NEXTCHARUP
7G=L BCHX 3 £
7GQ= BRN NEXTCHAR
7H9W REPFREE
7HPG BRN REPQUEST [ TO REPEAT QUESTION
7J96 RELOAD
7JNQ EMSCONWT [ WAIT FOR ALL MESSAGES TO FINISH
7K8B LDX 1 FX1
7KN2 GEOSTOP RELOADING(1) [ TO ALLOW INCLUSION OF RESIDENCE
7L7L RESUNAVAIL
7LM= [
7M6W [*********************************************************************
7MLG [ RESIDENCE CONFIRMED TO BE UNAVAILABLE. IF FILE IS ESSENTIAL WE
7N66 [ HAVE TO ASK FOR A GENERAL RESTORE - MEANS REINITIALISING
7NKQ [ EVERYTHING AND ASKING 'RESTORE?' AGAIN.
7P5B [ IF THE FILE IS 'USEFUL' WE DO PARTIAL RESTORES OF DIRECTORIES.
7PK2 [
7Q4L LDX 2 FX2
7QJ= LDX 0 AWORK1(2)
7R3W BNG 0 WANTPR [ WANT TO DO P.R. IF 'USEFUL'
7RHG FILENUMB 7
7S36 XSTART
7SGQ LDX 0 AMAPDEPTH(2) [ CHECK IF DICT. OR SER. SLAVE EXTANT
7T2B BZE 0 NXTCLOSE [ CARRY ON IF THEY'VE FINISHED
7TG2 COOR3 BMAPACT [ ELSE WAIT FOR THEM
7T^L BRN XSTART
7WF= NXTCLOSE
7WYW CLOSEFRBS [ CLOSE ALL FILES OPEN
7XDG BCT 7 NXTCLOSE
7XY6 LDX 3 BFILE [
7YCQ STOZ FCOMM(3) [ REINITIALISE MASTER'S FCB
7YXB STOZ FINFC(3) [
7^C2 FREECORE BFILE+1 [ FREE FMAPP
7^WL FREECORE BFILE+1 [ FREE FINDEXF
82B= HUNTMISB 3,FI,FRESUNAV
82TW BNG 3 NOWFUSER
83*G FREECORE 3 [ FREE FRESUNAV IF IT EXISTS
83T6 NOWFUSER
84#Q HUNTMISB 3,FI,FUSER
84SB BNG 3 NOWFTAPE
85#2 FREECORE 3 [ FREE FUSER IF IT EXISTS
85RL NOWFTAPE
86?= HUNTMISB 3,FI,FTAPE
86QW BNG 3 MOUTERR
87=G FREECORE 3 [ FREE FTAPE IF IT EXISTS ELSE
87Q6 BRN MOUTERR [ REINITIALISE FRESTUSER AND 'RESTORE?'
889Q NOASK
88PB SMO 3
8992 LDX 0 FRESNO(2)
89NL BNG 0 XINFORMED [ B0 SET INDICATES MESSAGE ALREADY OUTPUT
8=8= SMO 3 [ FOR THIS RESIDENCE
8=MW LDN 2 FRESNO(2) [ PICK UP RESIDENCE NO. FOR OUTPACK
8?7G BRN NOWINFORM
8?M6 WANTPR
8#6Q CALL 1 SUB4
8#LB SMO FX2
8*62 LDX 3 AWORK3
8*KL SMO 3
8B5= LDN 2 FRESNO(2) [ PICK UP RESIDENCE NO. FOR OUTPACK
8BJW NOWINFORM
8C4G LDN 5 1
8CJ6 LDN 6 JPDNUMA
8D3Q CALL 7 OUTPACK
8DHB LDX 3 MDIRUNAV(1) [ OUTPUT RESTORES INIT. MESSAGE
8F32 MONOUTX 3 [ FOR THIS RESIDENCE
8FGL CALL 1 SUB4
8G2= SMO FX2
8GFW LDX 3 AWORK3
8G^G SMO 3
8HF6 LDN 2 FRESNO(2)
8HYQ LDX 0 GSIGN
8JDB ORS 0 0(2) [ INDICATE MESSAGE OUTPUT
8JY2 XINFORMED
8KCL LDX 2 BSACHAPTR
8KX= VOP 2,FTABWAIT [ CLEAR LOCKOUT
8LBW STEPAGAIN
8LWG LDX 0 EUSE1N(3)
8MB6 BNG 0 PRDIRS [ IF DIRECTORY
8MTQ UPPLUS 1 [ ELSE GO BACK TO BMAPONE
8N*B [
8NT2 [************************************************************** PRDIRS
8P#L [
8PS= [ ROUTINE TO INITIATE A PARTIAL RESTORE
8Q?W [
8QRG [
8R?6 PRDIRS
8RQQ STEPAGAIN
8S=B CALL 7 STEPREWRITE
8SQ2 MBS 3,BNPARTRES,BNTEMP [ MARK PARTIAL RESTORE INITIATED
8T9L LDX 4 EINCN(3) [ PICK UP INCR. NO. LAST DUMPED
8TP= BZE 4 NOTDUMP [ TO ABANDON RESTORE IF NOT DUMPED
8W8W #UNS AMTGR
8WNG (
8X86 #UNS B7739
8XMQ (
8Y7B [*********************************************************
8YM2 [ FIRST CHECK IF THERE IS AN ENTRY FOR THIS USER
8^6L [ ALREADY. IF SO JUST UPDATE IT ELSE MAKE NEW ENTRY.
8^L= [
925W HUNTMISB 1,FI,FRESTUSER
92KG LDX 0 FRCNT(1)
9356 BZE 0 NOTALREADY [ J. IF NONE AT ALL
93JQ LDX 2 1
944B SBN 2 8 [ INITIALISE POINTER
94J2 ADX 1 A1(1)
953L ADN 1 A1 [ AND PTR. TO END OF BLOCK
95H= NXTNAME
962W ADN 2 8 [ UPDATE PTR. TO NEXT ENTRY
96GG BXGE 2 1,NOTALREADY [ J. IF USER NOT FOUND
9726 TESTNAMX 3,EUSE1N(3),FRUSE(2),NXTNAME [ J. IF NOT THIS ONE
97FQ LDX 0 FRINC(2) [ ENTRY ALREADY HERE SO SEE IF
97^B BPZ 0 TOUP [ ALREADY COMPLETE - IF SO 'UP'
98F2 STO 4 FRINC(2) [ ELSE FILL IN INCR. NO.
98YL LDX 0 EFILNUMN(3)
99D= STO 0 FRFIL(2) [ AND FILE NO.
99XW LDN 7 EUSE1N(3) [ TAKE SUPER'S NAME FROM DIRENT
9=CG JBC NOTSUDUSER,3,BNPSEUDO [ UNLESS PSEUDO USER
9=X6 SMO FX2
9?BQ LDN 7 ASUPUSER [ IN WHICH CASE FROM ACT BLOCK
9?WB NOTSUDUSER
9#B2 LDN 0 FRSUP(2) [ AND UPDATE SUPERIOR'S NAME
9#TL MOVE 7 3
9**= BRN TOUP [ RETURN 'UP'
9*SW NOTALREADY
9B#G )
9BS6 [
9C?Q [************************************************
9CRB [ NOW CHECK IF THIS IS FOR AN OFFLINE DIRECTORY (I.E. A
9D?2 [ MULTI-TAPE RESTORE. IF SO, FOR THE FIRST ONE
9DQL [ OUTPUT THE RESTORES INITIATED MESSAGE.
9F== [
9FPW LDEX 0 ECOPSN(3) [ CHECK IF FOR OFLINE DIR.
9G9G BNZ 0 WTFORLEN [ J. IF IT ISN'T
9GP6 HUNTMISB 1,FI,FRESTUSER
9H8Q LDCT 0 #200 [ ELSE CHECK IF THE
9HNB ANDX 0 FRNXT(1) [ MESSAGE ALREADY SENT.
9J82 BNZ 0 WTFORLEN [ J. IF WE HAVE ELSE
9JML LDCT 0 #200
9K7= ORS 0 FRNXT(1) [ SET BIT TO SHOW WE HAVE
9KLW MONOUT BMPROFF [ AND OUTPUT MESSAGE
9L6G )
9LL6 WTFORLEN
9M5Q LDX 2 BSACHAPTR
9MKB POP WTFORLEN,2,FTABWAIT [ LOCKOUT FOR LENGTHENING FRESTUSER
9N52 CALL 1 SUB2
9NJL LDX 7 ALOGLEN(3)
9P4= ADN 7 8
9PHW ALTLENG 3,7,SUB3 [ MAKE ROOM FOR THIS ENTRY
9Q3G LDX 2 BSACHAPTR
9QH6 VOP 2,FTABWAIT [ CLEAR LOCKOUT
9R2Q STEPAGAIN
9RGB LDX 5 EFILNUMN(3) [ PICK UP FILE NO.
9S22 LDN 6 EUSE1N(3) [ POINTER TO USERNAME
9SFL CALL 1 SUB2
9S^= SMO A1(3)
9TDW LDN 7 FRUSE(3)
9TYG MOVE 6 3 [ STORE USERNAME
9WD6 SMO A1(3)
9WXQ STO 4 FRINC(3) [ INCREMENT NO.
9XCB SMO A1(3)
9XX2 STO 5 FRFIL(3) [ AND FILE NO. IN FRESTUSER
9YBL STEPAGAIN
9YW= LDN 4 ASUPUSER(2) [ TAKE SUPERIOR PROPER USERNAME FROM
9^*W JBS SUDUS,3,BNPSEUDO [ ASUPUSER IF THIS IS A PSEUDO
9^TG LDN 4 EUSE1N(3) [ ELSE FRON EUSE1
=2*6 SUDUS
=2SQ CALL 1 SUB2
=3#B SMO A1(3) [ STORE SUPERIOR PROPER USERNAME IN
=3S2 LDN 5 FRSUP(3) [ FRESTUSER FOR LATER USE IN MAPPING
=4?L MOVE 4 3 [ RESTORED LIMB
=4R= LDN 0 8
=5=W ADS 0 A1(3) [ UPDATE RECORD HEADER
=5QG ADS 0 FRCNT(3) [ AND USED SPACE COUNT
=6=6 #UNS B7739
=6PQ TOUP
=79B UP
=7P2 [
=88L [*********************************************************************
=8N= [ IF USER TO BE RESTORED WAS NOT DUMPED, THE RESTORE
=97W [ MUST BE ABANDONED, IF THIS IS ALLOWED, OTHERWISE WE RELOAD
=9MG [
==76 NOTDUMP
==LQ LDN 2 EUSE1N(3) [ PICK UP USERNAME
=?6B LDN 5 3
=?L2 LDN 6 JPDUSERNAME
=#5L CALL 7 OUTPACK
=#K= LDN 2 XABANDONED(1)
=*4W LDN 5 4
=*JG LDN 6 JPDVARCHAR
=B46 CALL 7 OUTPACK
=BHQ LDN 2 XNOTDUMP(1)
=C3B LDN 5 4
=CH2 LDN 6 JPDVARCHAR
=D2L CALL 7 OUTPACK [ OUTPUT ABANDONED
=DG= LDX 3 PRMESS(1) [ MESSAGE
=D^W MONOUTX 3
=FFG UPPLUS 1 [
=F^6 ...PRQUERY
=GDQ ... GEOERR 1,K5BMQEST
=GYB ...PRERASE
=HD2 ... GEOERR 1,K7BMQEST
=HXL ...Z8BMQUEST
=JC= ... GEOERR 1,K8BMQEST
##J6 #END
^^^^ ...151207750001