Google
 

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