Trailing-Edge
-
PDP-10 Archives
-
cuspbinsrc_2of2_bb-fp63b-sb
-
10,7/soupr/soupr.rnm
There are no other files named soupr.rnm in the archive.
.FL CAP
.CH INTRODUCTION
.LC
.NPR
.AP
<SOUPR (^S^OFTWARE ^UPDATE ^PACKAGE ^REVISITED)
IS A COLLECTION OF THREE PROGRAMS:
^C^O^M^P^A^R, ^U^P^D^A^T^E, AND ^M^E^R^G^E.
^THE FOLLOWING IS A BRIEF DESCRIPTION OF
EACH PROGRAM. ^A MORE DETAILED EXPLANATION CAN BE FOUND IN THE
HELP FILES.
.B 1
.LM 5
.I -5
1. ^C^O^M^P^A^R
^THE INPUT TO ^C^O^M^P^A^R CONSISTS OF TWO
^A^S^C^I^I FILES KNOWN AS THE BASE FILE AND THE USER FILE.
^C^O^M^P^A^R WILL COMPARE THE TWO FILES
AND CREATE A CORRECTION FILE. ^THE
CORRECTION FILE DETAILS HOW THE USER FILE DIFFERS FROM THE
BASE FILE. ^THE COMMAND FORMAT IS:
.B 1
_.^R ^C^O^M^P^A^R
.BR
*COR-FILE=BASE-FILE,USER-FILE_/SWITCHES
.B 1
.I -5
2. ^U^P^D^A^T^E
^C^O^M^P^A^R AND ^U^P^D^A^T^E ARE INVERSE
OPERATIONS. ^THE INPUT TO ^U^P^D^A^T^E CONSISTS
OF A BASE FILE AND A CORRECTION FILE.
^U^P^D^A^T^E WILL RECONSTRUCT THE USER FILE.
^THE COMMAND FORMAT IS:
.B 1
_.^R ^U^P^D^A^T^E
.BR
*USER-FILE=BASE-FILE,COR-FILE/SWITCHES
.B 1
.I -5
3. ^M^E^R^G^E
^THE INPUT TO ^M^E^R^G^E CONSISTS
OF SEVERAL CORRECTION FILES. ^M^E^R^G^E
WILL MERGE THEM INTO A SINGLE CORRECTION FILE.
^THE COMMAND FORMAT IS:
.B 1
_.^R ^M^E^R^G^E
.BR
*COR-FILE=COR-FILE_/SWITCHES,COR-FILE_/SWITCHES...
.LM 0
.PG
<SOUPR IS DESIGNED TO FULFILL TWO FUNCTIONS:
.B 1
.TS 5
.LM 5
.I -5
1. ^VENDORS VERY RARELY REWRITE PROGRAMS FROM SCRATCH.
^QUITE FREQUENTLY WHEN A NEW VERSION OF A
PROGRAM IS RELEASED, IT DIFFERS ONLY SLIGHTLY
FROM THE OLD VERSION. ^IN SUCH CASES IT IS
WASTEFUL TO DISTRIBUTE A COMPLETE
COPY OF THE PROGRAM. ^A BETTER APPROACH WOULD BE TO
DISTRIBUTE ONLY THOSE PORTIONS OF THE PROGRAM THAT HAVE BEEN
ALTERED. ^TO DO THIS THE VENDOR WOULD USE ^C^O^M^P^A^R
TO COMPARE THE OLD VERSION WITH THE NEW VERSION AND CREATE
A CORRECTION FILE. ^THE CORRECTION FILE WOULD BE DISTRIBUTED TO
THE CUSTOMERS.
^THE CUSTOMERS WOULD USE ^U^P^D^A^T^E TO
RECONSTRUCT THE PROGRAM FROM THEIR
COPY OF THE OLD VERSION.
.B 1
.I -5
2. ^MANY INSTALLATIONS MODIFY VENDOR
SOFTWARE. ^EACH TIME THE VENDOR RELEASES A NEW VERSION
OF A PROGRAM, THE INSTALLATION MUST RECODE
THE LOCAL FEATURES. ^A QUICK WAY TO DO THIS IS
TO USE ^C^O^M^P^A^R TO CREATE TWO CORRECTION FILES:
ONE WITH THE LOCAL FEATURES, AND ONE WITH THE
VENDOR'S NEW FEATURES. ^THE TWO CORRECTION FILES CAN THEN
BE MERGED INTO A SINGLE CORRECTION FILE WITH ^M^E^R^G^E.
^FINALLY, ^U^P^D^A^T^E IS USED TO GENERATE A NEW
SOURCE FILE.
.CH FORMAT OF THE SOURCE FILE
.LC
.NPR
.AP
^ALTHOUGH <SOUPR IS NORMALLY
USED WITH ASSEMBLY LANGUAGE, THIS IS NOT
A RESTRICTION. <SOUPR MAY BE USED WITH ANY
SOURCE FILE. ^IN FACT, <SOUPR
MAY BE USED WITH ANY
^A^S^C^I^I FILE. ^THE FILE IS NOT PARSED IN ANY WAY.
^BINARY FILES (SUCH AS ^R^E^L FILES AND ^S^A^V^E FILES)
MAY NOT BE USED.
^EACH LINE IN THE SOURCE FILE IS IDENTIFIED BY THE
NOTATION "N_/M". ^WHERE N IS THE LINE NUMBER, AND M IS THE PAGE NUMBER.
^A LINE IS AN ARBITRARY SEQUENCE OF ^A^S^C^I^I CHARACTERS
TERMINATED BY A BREAK CHARACTER. ^THE BREAK CHARACTER ITSELF
IS CONSIDERED TO BE PART OF THE LINE.
^IN THE CASE OF CONSECUTIVE BREAK CHARACTERS,
EACH CHARACTER IS CONSIDERED TO
BE A SEPERATE LINE.
^THE FOLLOWING ARE DEFINED TO BE BREAK CHARACTERS:
.B 1
.TS 10,15,20
.NF
12 ^L^F ^LINE ^FEED
13 ^V^T ^VERTICAL ^TAB
14 ^F^F ^FORM ^FEED
32 _^^Z CONTROL ^Z
33 ^E^S^C ^E^S^CAPE
.F
.B 1
^A PAGE IS AN ARBITRARY SEQUENCE
OF LINES TERMINATED BY A FORM FEED.
^THE FORM FEED ITSELF IS CONSIDERED TO BE THE
LAST CHARACTER OF THE LAST LINE OF THE PREVIOUS
PAGE.
^SINCE FORM FEEDS ARE USUALLY PRECEDED BY <_<CR>_<LF>,
THE FORM FEED IS USUALLY THE ONLY CHARACTER IN ITS LINE.
<SOUPR WILL IGNORE THE LINE SEQUENCE NUMBERS
GENERATED BY ^S^O^S.
.CH FORMAT OF THE CORRECTION FILE
.LC
.NPR
.AP
^EACH LINE IN THE CORRECTION
FILE IS PREFIXED BY A SPECIAL CHARACTER.
^THIS CHARACTER DETERMINES WHICH OF THREE
CATEGORIES THE LINE FALLS INTO:
.LM 5
.TS 5
.B 1
.I -5
1. ^COMMANDS TO <SOUPR (SEE BELOW).
^ALL COMMANDS ARE PREFIXED BY A SPACE (^A^S^C^I^I 40).
.B 1
.I -5
2. ^TEXT TO BE ACTED UPON BY THE COMMANDS. ^EACH
LINE OF TEXT IS PREFIXED BY A TAB (^A^S^C^I^I 11).
^EXCEPT FOR ITS USE AS A DELIMITER, THE
TAB IS IGNORED.
.B 1
.I -5
3. ^IN THE EVENT THAT A LINE FAILS TO
BE PREFIXED BY EITHER A SPACE OR A TAB,
THE LINE IS REGARDED AS TEXT.
^THE FIRST CHARACTER, WHATEVER IT MAY BE,
IS CONSIDERED TO BE PART OF THE TEXT.
.B 2
.LM 0
<SOUPR SUPPORTS FIVE TYPES OF
COMMANDS:
.B 1
.LM 5
.TS 6
.I -5
1. ^D^E^L^E^T^E N_/M ;COMMENT
.I 8
TEXT
^DELETE TEXT STARTING AT LINE N OF PAGE M. ^THE
TEXT TO BE DELETED FOLLOWS IMMEDIATELY AFTER
THE ^D^E^L^E^T^E COMMAND, AND CONTINUES
UNTIL A SPACE IS ENCOUNTERED IN COLUMN ONE
(I.E. ANOTHER COMMAND). ^IF THE TEXT
AT LINE N OF PAGE M IN THE BASE FILE IS DIFFERENT
FROM THE TEXT IN THE CORRECTION FILE, ^U^P^D^A^T^E
WILL FLAG THE CONDITION AS AN ERROR.
.B 1
.I -5
2. ^I^N^S^E^R^T N_/M ;COMMENT
.I 8
TEXT
^INSERT TEXT JUST BEFORE LINE N OF PAGE M. ^THE TEXT
TO BE INSERTED FOLLOWS IMMEDIATELY AFTER THE ^I^N^S^E^R^T
COMMAND, AND CONTINUES UNTIL A SPACE IS ENCOUNTERED IN COLUMN
ONE.
.B 1
.I -5
3. ^R^E^P^L^A^C^E N_/M ;COMMENT
.I 8
TEXT1
.I 1
^W^I^T^H
.I 8
TEXT2
^AT LINE N OF PAGE M REPLACE TEXT1 WITH
TEXT2. ^TEXT1 FOLLOWS IMMEDIATELY AFTER THE ^R^E^P^L^A^C^E
COMMAND, AND CONTINUES UNTIL A SPACE IS ENCOUNTERED IN
COLUMN ONE. ^THIS LINE WILL BE THE ^W^I^T^H
AUXILIARY COMMAND. ^TEXT2 FOLLOWS IMMEDIATELY AFTER THE
^W^I^T^H COMMAND, AND CONTINUES
UNTIL A SPACE IS ENCOUNTERED IN COLUMN ONE. ^IF
THE TEXT AT LINE N OF PAGE M IN THE BASE FILE
IS DIFFERENT FROM TEXT1 IN THE CORRECTION FILE,
^U^P^D^A^T^E WILL FLAG THE CONDITION AS AN ERROR.
.B 1
.I -5
4. ^S^U^M N ;COMMENT
^WHERE N IS A ROTATE ADD ONE CHECKSUM OF THE BASE FILE.
^WHILE PROCESSING THE BASE FILE, ^U^P^D^A^T^E WILL
RECOMPUTE THIS CHECKSUM. ^IF THE VALUE DOES NOT MATCH THAT
STORED IN THE CORRECTION FILE, ^U^P^D^A^T^E WILL FLAG
THE CONDITION AS AN ERROR. ^HENCE A USER IS PREVENTED
FROM ACCIDENTALLY USING THE CORRECTION FILE
WITH AN INCORRECT VERSION OF THE BASE FILE.
^M^E^R^G^E WILL TYPE AN ERROR MESSAGE IF A USER ATTEMPTS TO
MERGE CORRECTION FILES WITH DIFFERENT CHECKSUMS.
^THE ^S^U^M COMMAND MARKS END OF FILE.
.B 1
.I -5
5. ;COMMENT
^IGNORED.
.LM 0
.NT
^ALL KEYWORDS (E.G. ^D^E^L^E^T^E, ^I^N^S^E^R^T,
^R^E^P^L^A^C^E, ^W^I^T^H, AND ^S^U^M) MAY
BE ABBREVIATED TO THE SMALLEST UNAMBIGUOUS
FORM (CURRENTLY ONE LETTER).
.EN
^M^E^R^G^E GOES TO A GREAT DEAL
OF TROUBLE TO MAKE CONFLICTS EASY TO RESOLVE.
^THE BEGINING AND ENDING OF EACH CONFLICT IS CLEARLY LABELED AND
NUMBERED. ^FOR EXAMPLE, A SECTION OF THE CORRECTION
FILE MIGHT APPEAR AS:
.B 1
.TS 9,17,25
.NF
.UC
;***BEGINING OF CONFLICT 3***
DEL 66/5
JRST FOO
REP 66/5
JRST FOO
WIT
;FALL TO ROUTINE FOO
;***END OF CONFLICT 3***
.F
.LC
.B 1
^THE PROGRAMMER CAN QUICKLY SEE THAT BOTH PATCHES ATTEMPTED.
TO DO THE SAME THING, THEY MERELY DID
IT IN DIFFERENT WAYS.
^THE OBJECT WAS TO REMOVE THE ^J^R^S^T AT LINE 66 OF PAGE 5.
^THE FIRST PATCH TRIED THE STRAIGHTFORWARD APPROACH,
IT MERELY DELETED THE LINE. ^THE
SECOND PATCH ATTEMPTED TO REPLACE THE LINE WITH A COMMENT.
^BUT ^M^E^R^G^E DOESN'T REALIZE THAT THE PATCHES ARE
EQUIVALENT. ^M^E^R^G^E WILL TYPE A
WARNING MESSAGE THAT CONFLICTS EXIST. ^THE PROGRAMMER
MUST TYPE OUT THE CORRECTION FILE AND STUDY THE
CONFLICTS. ^IN THIS CASE, HE MERELY DECIDES
WHICH PATCH HE WISHES TO USE AND
REMOVES THE OTHER. ^THIS SORT OF "CONFLICT", BY THE WAY,
IS QUITE COMMON. ^IT'S NICE TO KNOW THAT EVEN WHEN
CONFLICTS DO OCCUR, THEY ARE USUALLY
EASY TO RESOLVE.
.CH EXAMPLES
.C
^EXAMPLE ONE - ^COMERGE
.ST COMERGE
.LC
.NPR
.AP
^A.^M^A^C IS A VENDOR PROGRAM. ^A CERTAIN INSTALLATION
HAS ADDED A NEW FEATURE TO THE PROGRAM.
^THE IMPROVED VERSION IS CALLED ^B.^M^A^C .
^THE VENDOR HAS JUST RELEASED A NEW VERSION OF THE PROGRAM CALLED
^C.^M^A^C . ^THE INSTALLATION WOULD LIKE TO ADD THE SAME FEATURE
TO ^C.^M^A^C . ^THE RESULTING VERSION WILL BE CALLED ^D.^M^A^C .
^THIS CAN BE ACCOMPLISHED AS FOLLOWS:
.B 1
.UC
.NAP
.NF
.TS 8,16
_.TYPE A.MAC
TITLE DECO
T1=1
T2=T1+1
P=17
DECO:: IDIVI T1,_^D10
PUSH P,T2
SKIPE T1
PUSHJ P,.-3
POP P,T1
ADDI T1,"0"
OUTCHR T1
POPJ P,
END
.B 1
_.TYPE B.MAC
TITLE DECO
T1=1
T2=T1+1
P=17
DECO:: IDIVI T1,_^D10
HRLM T2,(P)
SKIPE T1
PUSHJ P,.-3
HLRZ T1,(P)
ADDI T1,"0"
OUTCHR T1
POPJ P,
END
.B 1
.TP 5
_.TYPE C.MAC
TITLE DECO
T1=1
T2=T1+1
P=17
DECO:: JUMPGE T1,.+3
OUTCHR ["-"]
MOVNS T1
IDIVI T1,_^D10
PUSH P,T2
SKIPE T1
PUSHJ P,.-3
POP P,T1
ADDI T1,"0"
OUTCHR T1
POPJ P,
END
.B 1
_.RUN COMPAR
*AB=A,B
AB.COR=A.MAC,B.MAC
*AC=A,C
AC.COR=A.MAC,C.MAC
*_^C
.B 1
_.TYPE AB.COR
REP 6/1
PUSH P,T2
SKIPE T1
PUSHJ P,.-3
POP P,T1
WIT
HRLM T2,(P)
SKIPE T1
PUSHJ P,.-3
HLRZ T1,(P)
SUM 179838
.B 1
_.TYPE AC.COR
REP 5/1
DECO:: IDIVI T1,_^D10
WIT
DECO:: JUMPGE T1,.+3
OUTCHR ["-"]
MOVNS T1
IDIVI T1,_^D10
SUM 179838
.B 1
_.RUN MERGE
*AD=AB,AC
AD.COR=AB.COR,AC.COR
*_^C
.B 1
.TP 5
_.TYPE AD.COR
REP 5/1
DECO:: IDIVI T1,_^D10
WIT
DECO:: JUMPGE T1,.+3
OUTCHR ["-"]
MOVNS T1
IDIVI T1,_^D10
REP 6/1
PUSH P,T2
SKIPE T1
PUSHJ P,.-3
POP P,T1
WIT
HRLM T2,(P)
SKIPE T1
PUSHJ P,.-3
HLRZ T1,(P)
SUM 179838
.B 1
_.RUN UPDATE
*D=A,AD
D.MAC=A.MAC,AD.COR
*_^C
.B 1
_.TYPE D.MAC
TITLE DECO
T1=1
T2=T1+1
P=17
DECO:: JUMPGE T1,.+3
OUTCHR ["-"]
MOVNS T1
IDIVI T1,_^D10
HRLM T2,(P)
SKIPE T1
PUSHJ P,.-3
HLRZ T1,(P)
ADDI T1,"0"
OUTCHR T1
POPJ P,
END
.PG
.LC
.C
^EXAMPLE TWO - ^CONFLICTS
.ST CONFLICTS
.F
.P
^A USER WISHES TO APPLY TWO CORRECTIONS FILES
(^A^B.^C^O^R AND ^A^C.^C^O^R) TO A SINGLE BASE FILE
(^A.^M^A^C). ^BUT SOME OF THE PATCHES
CONFLICT WITH EACH OTHER. ^THE USER MAY RESOLVE THE CONFLICTS
AS FOLLOWS:
.B 1
.UC
.NF
_.TYPE A.MAC
TITLE BP
T1=1
C=10
P=17
BP:: CAMN C,[15]
INCHWL C
MOVEI T1,1
LSH T1,(C)
TDNE T1,[1400012000]
POPJ P,
HALT
END
.B 1
_.TYPE AB.COR
REP 5/1
BP:: CAMN C,[15]
WIT
BP:: CAIN C,15
REP 9/1
TDNE T1,[1400012000]
WIT
TDNE T1,[1400016000]
SUM 238801
.B 1
_.TYPE AC.COR
REP 9/1
TDNE T1,[1400012000]
WIT
TDNE T1,[1400012200]
REP 11/1
HALT
WIT
JRST ERROR_#_#
SUM 238801
.B 1
_.R MERGE
*AD=AB,AC
AD.MAC=AB.COR,AC.COR
%MERFLT 1 CONFLICT
*_^C
.B 1
.TP 5
_.TYPE AD.COR
REP 5/1
BP:: CAMN C,[15]
WIT
BP:: CAIN C,15
;***BEGINNING OF CONFLICT 1***
REP 9/1
TDNE T1,[1400012000]
WIT
TDNE T1,[1400012200]
REP 9/1
TDNE T1,[1400012000]
WIT
TDNE T1,[1400016000]
;***END OF CONFLICT 1***
REP 11/1
HALT
WIT
JRST ERROR_#_#
SUM 238801
.B 1
_.TECO AD.COR
*S***$0LKFS122$162$L5KEX$$
.B 1
_.TYPE AD.COR
REP 5/1
BP:: CAMN C,[15]
WIT
BP:: CAIN C,15
REP 9/1
TDNE T1,[1400012000]
WIT
TDNE T1,[1400016200]
REP 11/1
HALT
WIT
JRST ERROR_#_#
SUM 238801
.B 1
_.R UPDATE
*D=A,AD
D.MAC=A.MAC,AD.COR
*_^C
.B 1
_.TYPE D.MAC
TITLE BP
T1=1
C=10
P=17
BP:: CAIN C,15
INCHWL C
MOVEI T1,1
LSH T1,(C)
TDNE T1,[1400016200]
POPJ P,
JRST ERROR_#_#
END
.CH CONDITIONALS
.AP
.NPR
.LC
^ONE OF THE MOST POWERFUL FEATURES
OF <SOUPR IS THE CONDITIONALS FACILITY.
^TO USE THIS FACILITY EACH COMMAND IN THE CORRECTION
FILE IS LABELED WITH A SIXBIT NAME. ^THE CORRECTION
FILE IS THEN REGARDED AS A LIBRARY OF PATCHES. ^EACH PATCH IS
REFERED TO BY NAME. ^THE USER MAY SPECIFY WHICH PATCHES FROM THE LIBRARY
ARE TO BE USED.
^LABELS ARE PLACED AT THE END OF A STATEMENT,
AND ARE PRECEDED BY A SEMICOLON. ^E.^G.:
.B 1
.I 1
^I^N^S 3_/4 ;^X^Y^Z^B^U^G ^S^P^R_#3141
.B 1
^THOSE OF YOU WHO ARE FAMILIAR WITH ^M^A^C^R^O
WILL RECOGNIZE THE LABEL AS A CROSS BETWEEN A COMMENT
AND A ^T^I^T^L^E. ^THE LABEL RESEMBLES A COMMENT IN THAT
IT MAY CONTAIN ANY INFORMATION THAT THE USER FEELS
WOULD BE HELPFUL. ^THE LABEL RESEMBLES A ^T^I^T^L^E
IN THAT THE FIRST WORD IS TAKEN AS THE NAME
OF THE MODULE. ^THUS IN THE EXAMPLE ABOVE, THE NAME
OF THE PATCH IS "^X^Y^Z^B^U^G". ^THE FOLLOWING IS A LIST
OF DATA THAT ONE MIGHT WISH TO INCLUDE IN A COMMENT:
.B 1
1. ^PATCH NAME
.BR
2. ^S^P^R NUMBER
.BR
3. ^M^C^O_/^P^C^O NUMBER
.BR
4. ^EDIT NUMBER
.BR
5. ^BRIEF DESCRIPTION
.BR
^LABELS ARE ADDED TO PATCHES
BY USING THE _/^N^A^M^E SWITCH IN ^C^O^M^P^A^R.
^THE SWITCH HAS TWO FORMS:
.B 1
_/^N^A^M^E:"STRING"
.BR
_/^N^A^M^E:FOO
.B 1
^THE FORMER IS USED TO SPECIFY AN ENTIRE STRING.
^THE LATER IS USED TO SPECIFY JUST A SIXBIT NAME.
^THE FOLLOWING IS A LIST OF SWITCHES USED
TO SELECT WHICH PATCHES FROM THE LIBRARY ARE TO BE USED.
^BOTH ^U^P^D^A^T^E AND ^M^E^R^G^E HAVE EACH OF THE SWITCHES:
.B 1
.LM 20
.TS 20
.I -20
_/^N^C^L^U^D^E:X ^PROCESSING INCLUDES
ONLY THOSE PATCHES LABELED WITH X.
^WILDCARDS ARE LEGAL. ^THE DEFAULT IS *
(I.E. INCLUDE ALL PATCHES).
.I -20
_/^N^C^L^U^D^E:(X,Y,...) ^SPECIFIES A LIST OF
PATCHES TO BE INCLUDED
.I -20
_/^U^N^C^L^U^D ^UNLABELED PATCHES ARE
ALWAYS INCLUDED (DEFAULT)
.I -20
_/^U^X^C^L^U^D ^UNLABELED PATCHES ARE
ALWAYS EXCLUDED
.I -20
_/^X^C^L^U^D^E:X ^PROCESSING EXCLUDES THOSE PATCHES LABELED
WITH X
.I -20
_/^X^C^L^U^D^E:(X,Y,...) ^SPECIFIES A LIST OF PATCHES
TO BE EXCLUDED
.LM 5
.TS 5
.B 1
.I -5
^EXAMPLES:
.I -5
1. ^TO CREATE A LABELED PATCH:
.B 1
_.^R ^C^O^M^P^A^R
.BR
*COR-FILE=BASE-FILE,USER-FILE_/^N^A^M^E:FOO
.B 1
.I -5
2. ^TO APPLY A SINGLE PATCH:
.B 1
_.^R ^U^P^D^A^T^E
.BR
*USER-FILE=BASE-FILE,COR-FILE_/^N^C^L^U^D^E:FOO
.B 1
.I -5
3. ^TO APPLY ALL BUT A SINGLE PATCH:
.B 1
_.^R ^U^P^D^A^T^E
.BR
*USER-FILE=BASE-FILE,COR-FILE_/^X^C^L^U^D^E:FOO
.B 1
.I -5
4. ^TO ADD A NEW PATCH TO THE LIBRARY:
.B 1
_.^R ^M^E^R^G^E
.BR
*NEW-LIBRARY=OLD-LIBRARY,NEW-PATCH
.B 1
.I -5
5. ^TO REMOVE A PATCH FROM THE LIBRARY:
.B 1
_.^R ^M^E^R^G^E
.BR
*NEW-LIBRARY=OLD-LIBRARY_/^X^C^L^U^D^E:FOO
.B 1
.I -5
6. ^TO EXTRACT A PATCH FROM THE LIBRARY:
.B 1
_.^R ^M^E^R^G^E
.BR
*COR-FILE=LIBRARY_/^N^C^L^U^D^E:FOO
.BR