
EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page   1
								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (1)

;	  0001	MODULE EXTRACT (
;	  0002			MAIN = EXTRACT,
;	  0003			ADDRESSING_MODE (EXTERNAL=LONG_RELATIVE, NONEXTERNAL=LONG_RELATIVE),
;	  0004			LANGUAGE (BLISS32),
;	  0005			IDENT = 'X0001D'
;	  0006			) =
;	  0007	BEGIN
;	  0008	
;	  0009	!
;	  0010	! Copyright (c) 1979
;	  0011	! Digital Equipment Corporation, Maynard, Massachusetts 01754
;	  0012	!
;	  0013	! This software is furnished  under a license for use only on a single
;	  0014	! computer  system and  may be  copied only with  the inclusion of the
;	  0015	! above copyright notice.  This software, or any other copies thereof,
;	  0016	! may not be provided or  otherwise made available to any other person
;	  0017	! except for use on such system and to one who agrees to these license
;	  0018	! terms.  Title to and  ownership of the  software  shall at all times
;	  0019	! remain in DEC.
;	  0020	!
;	  0021	! The information in this software is subject to change without notice
;	  0022	! and should  not be construed  as a commitment  by Digital  Equipment
;	  0023	! Corporation.
;	  0024	!
;	  0025	! DEC assumes  no  responsibility  for  the use or  reliability of its
;	  0026	! software on equipment which is not supplied by DEC.
;	  0027	
;	  0028	!++
;	  0029	!
;	  0030	! FACILITY:  System Update Procedure Utilities
;	  0031	!
;	  0032	! ABSTRACT:
;	  0033	!
;	  0034	!	This program compares two SLP update files and removes from file 1
;	  0035	!	any update that is found in its identical form in file 2. Thus, for
;	  0036	!	example, bug fixes may be removed from a composite update file by
;	  0037	!	running the bug fix file against it, leaving only enhancements
;	  0038	!	and conflicts.
;	  0039	!
;	  0040	! ENVIRONMENT:
;	  0041	!
;	  0042	!	VAX/VMS Operating System
;	  0043	!
;	  0044	!--
;	  0045	!
;	  0046	!
;	  0047	! AUTHOR:  Andrew C. Goldstein,	 CREATION DATE:  31-Jan-1979  20:54
;	  0048	!
;	  0049	! MODIFIED BY:
;	  0050	!
;	  0051	!**
;	  0052	
;	  0053	
;	  0054	LIBRARY 'SYS$LIBRARY:STARLET.L32';
;	  0055	LIBRARY 'SYS$LIBRARY:CLIMAC.L32';
;	  0056	LIBRARY 'SYS$LIBRARY:TPAMAC.L32';
;	  0057	
;	  0058	

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page   2
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (1)

;	  0059	FORWARD ROUTINE
;	  0060		EXTRACT,			! main program
;	  0061		GET_UPDATE	: NOVALUE,	! get next SLP update from file
;	  0062		READ_LINE	: NOVALUE,	! read a line from a file
;	  0063		FORMAT_COMMAND,			! format a SLP command
;	  0064		OUTPUT_TEXT	: NOVALUE,	! output update text
;	  0065		WRITE_LINE	: NOVALUE,	! write line to output file
;	  0066		HANDLER;			! facility condition handler
;	  0067	
;	  0068	
;	  0069	MACRO
;	M 0070		DESCRIPTOR (STRING) =
;	M 0071			UPLIT (%CHARCOUNT (STRING), UPLIT BYTE (STRING))
;	  0072			%;
;	  0073	
;	  0074	MACRO
;	M 0075		ERR_EXIT [] =
;	M 0076			SIGNAL_STOP (%REMAINING)
;	  0077			%;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page   3
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (2)

;	  0078	!+
;	  0079	!
;	  0080	! Module own data
;	  0081	!
;	  0082	!-
;	  0083	
;	  0084	!
;	  0085	! Format of command data blocks allocated below.
;	  0086	!
;	  0087	MACRO
;	  0088		RANGE_TOP	=  0, 0, 32, 0 %,
;	  0089		RANGE_END	=  1, 0, 32, 0 %,
;	  0090		AUDIT_LEN	=  2, 0, 32, 0 %,
;	  0091		AUDIT_ADR	=  3, 0, 32, 0 %,
;	  0092		COMMENT_LEN	=  4, 0, 32, 0 %,
;	  0093		COMMENT_ADR	=  5, 0, 32, 0 %,
;	  0094		UPD_SIZE	=  6, 0, 32, 0 %,
;	  0095		UPD_LINE	=  7, 0, 00, 0 %,
;	  0096		AUDIT_TEXT	= 40, 0, 00, 0 %,
;	  0097		COMMENT_TEXT	= 73, 0, 00, 0 %,
;	  0098		UPD_TEXT	=106, 0, 00, 0 %;
;	  0099	
;	  0100	
;	  0101	OWN
;	  0102		OUT_LINE	: VECTOR [132, BYTE], ! output file line buffer
;	  0103		PREV_AUDIT	: VECTOR [2],	! descriptor of last compare audit string
;	  0104		PREV_TEXT	: VECTOR [132, BYTE], ! text buffer of above
;	  0105	!
;	  0106	! Parameters of current SLP command in each file
;	  0107	!
;	  0108		RANGE1		: VECTOR [2],	! range of lines deleted
;	  0109		AUDIT1		: VECTOR [2],	! descriptor of audit trail
;	  0110		COMMENT1	: VECTOR [2],	! descriptor of comment
;	  0111		SIZE1,				! number of bytes of text
;	  0112		LINE1		: VECTOR [132, BYTE], ! file 1 input line
;	  0113		AU_TEXT1	: VECTOR [132, BYTE], ! file 1 audit string
;	  0114		CM_TEXT1	: VECTOR [132, BYTE], ! file 1 comment string
;	  0115		TEXT1		: VECTOR [100000, BYTE], ! file 1 text buffer
;	  0116	
;	  0117		RANGE2		: VECTOR [2],	! range of lines deleted
;	  0118		AUDIT2		: VECTOR [2],	! descriptor of audit trail
;	  0119		COMMENT2	: VECTOR [2],	! descriptor of comment
;	  0120		SIZE2,				! number of bytes of text
;	  0121		LINE2		: VECTOR [132, BYTE], ! file 2 input line
;	  0122		AU_TEXT2	: VECTOR [132, BYTE], ! file 2 audit string
;	  0123		CM_TEXT2	: VECTOR [132, BYTE], ! file 2 comment string
;	  0124		TEXT2		: VECTOR [100000, BYTE], ! file 2 text buffer
;	  0125	!
;	  0126	! SLP parser output area
;	  0127	!
;	  0128		START_LINE,			! starting line number
;	  0129		END_LINE,			! ending line number
;	  0130		AUDIT_STRING	: VECTOR [2],	! descriptor of audit trail
;	  0131		COMMENT_STRING	: VECTOR [2],	! descriptor of comment
;	  0132	!
;	  0133	! Command parser output area
;	  0134	!
;	  0135		FILE1		: VECTOR [2],	! descriptor of input file 1

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page   4
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (2)

;	  0136		FILE2		: VECTOR [2],	! descriptor of input file 2
;	  0137		OUTFILE		: VECTOR [2],	! descriptor of output file
;	  0138	!
;	  0139	! TPARSE parameter block
;	  0140	!
;	  0141		TPARSE_BLOCK	: BLOCK [TPA$K_LENGTH0, BYTE]
;	  0142				  INITIAL (TPA$K_COUNT0),
;	  0143	!
;	  0144	! Request block to get command line from CLI
;	  0145	!
;	  0146		GET_COMMAND	: $CLIREQDESC (RQTYPE = GETCMD);
;	  0147	
;	  0148	!
;	  0149	! Forward reference to TPARSE state tables
;	  0150	!
;	  0151	FORWARD
;	  0152		CMD_TABLE	: VECTOR [0],
;	  0153		CMD_KEY		: VECTOR [0],
;	  0154		SLP_TABLE	: VECTOR [0],
;	  0155		SLP_KEY		: VECTOR [0];

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page   5
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (3)

;	  0156	!
;	  0157	! Junk for opening files
;	  0158	!
;	  0159	OWN
;	  0160		INRES1		: VECTOR [132, BYTE], ! input file 1 result string
;	  0161	
;	P 0162		INNAM1		: $NAM (
;	P 0163					ESA = INRES1,
;	P 0164					ESS = 132,
;	P 0165					RSA = INRES1,
;	P 0166					RSS = 132
;	  0167					),
;	P 0168		INFAB1		: $FAB (
;	P 0169					DNA = UPLIT BYTE ('.UPD'),
;	P 0170					DNS = 4,
;	P 0171					FAC = GET,
;	P 0172					FOP = SQO,
;	P 0173					NAM = INNAM1
;	  0174					),
;	P 0175		INRAB1		: $RAB (
;	P 0176					FAB = INFAB1,
;	P 0177					UBF = LINE1,
;	P 0178					USZ = 132
;	  0179					),
;	  0180	
;	  0181		INRES2		: VECTOR [132, BYTE], ! input file 2 result string
;	  0182	
;	P 0183		INNAM2		: $NAM (
;	P 0184					ESA = INRES2,
;	P 0185					ESS = 132,
;	P 0186					RSA = INRES2,
;	P 0187					RSS = 132,
;	P 0188					RLF = INNAM1
;	  0189					),
;	P 0190		INFAB2		: $FAB (
;	P 0191					DNA = UPLIT BYTE ('.UPD'),
;	P 0192					DNS = 4,
;	P 0193					FAC = GET,
;	P 0194					FOP = SQO,
;	P 0195					NAM = INNAM2
;	  0196					),
;	P 0197		INRAB2		: $RAB (
;	P 0198					FAB = INFAB2,
;	P 0199					UBF = LINE2,
;	P 0200					USZ = 132
;	  0201					),
;	  0202	
;	  0203		OUTRES		: VECTOR [132, BYTE], ! output file result string
;	  0204	
;	P 0205		OUTNAM		: $NAM (
;	P 0206					ESA = OUTRES,
;	P 0207					ESS = 132,
;	P 0208					RSA = OUTRES,
;	P 0209					RSS = 132,
;	P 0210					RLF = INNAM1
;	  0211					),
;	P 0212		OUTFAB		: $FAB (
;	P 0213					FAC = PUT,

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page   6
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (3)

;	P 0214					FOP = (MXV, OFP, SQO),
;	P 0215					NAM = OUTNAM,
;	P 0216					ORG = SEQ,
;	P 0217					RAT = CR,
;	P 0218					RFM = VAR
;	  0219					),
;	  0220	
;	P 0221		OUTRAB		: $RAB (
;	P 0222					FAB = OUTFAB,
;	P 0223					RBF = OUT_LINE
;	  0224					);

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page   7
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (4)

;	  0225	!+
;	  0226	!
;	  0227	! Error messages
;	  0228	!
;	  0229	! Macro to generate each error message.
;	  0230	!
;	  0231	!-
;	  0232	
;	  0233	MACRO
;	M 0234		ERR_MESSAGE (CODE, STRING) =
;	M 0235			LITERAL %NAME ('ERR_',CODE) = MSG_CODE + FAC_CODE^16;
;	M 0236			SWITCHES UNAMES;
;	M 0237			PSECT OWN = $MSG_TEXT;
;	M 0238			OWN MSG_TEXT : VECTOR [%CHARCOUNT(STRING)+1, BYTE]
;	M 0239				INITIAL (BYTE (%CHARCOUNT (STRING), STRING));
;	M 0240			PSECT OWN = $MSG_INDEX;
;	M 0241			OWN MSG_INDEX : INITIAL (MSG_TEXT);
;	M 0242			UNDECLARE MSG_TEXT, MSG_INDEX;
;	M 0243			SWITCHES NOUNAMES;
;	M 0244			%ASSIGN (MSG_CODE, MSG_CODE+8)
;	  0245			%;
;	  0246	
;	  0247	!
;	  0248	! Initialize and label the message sections.
;	  0249	!
;	  0250	
;	  0251	PSECT
;	  0252		OWN	= $MSG_TEXT (NOWRITE, ALIGN(0));
;	  0253	OWN
;	  0254		MESSAGE_TEXT	: VECTOR [0, BYTE];
;	  0255	PSECT
;	  0256		OWN	= $MSG_INDEX (NOWRITE, ALIGN (2));
;	  0257	OWN
;	  0258		MESSAGE_TABLE	: VECTOR [0];
;	  0259	
;	  0260	COMPILETIME
;	  0261		MSG_CODE	= 0;
;	  0262	
;	  0263	!
;	  0264	! Generate the error messages
;	  0265	!
;	  0266	
;	  0267	LITERAL
;	  0268		FAC_CODE	= 69;		! or whatever
;	  0269	
;	  0270		ERR_MESSAGE (CMD_SYNTAX, 'Command line syntax error');
;	  0271		ERR_MESSAGE (INFILEOPEN, 'Error opening input file ');
;	  0272		ERR_MESSAGE (OUTFILEOPEN, 'Error opening output file ');
;	  0273		ERR_MESSAGE (OUTCLOSE, 'Error closing output file ');
;	  0274		ERR_MESSAGE (SLPSYNTAX, 'SLP syntax error in file ');
;	  0275		ERR_MESSAGE (BUFFOVER, 'Compare buffer overflow');
;	  0276		ERR_MESSAGE (READIN, 'I/O error on input file ');
;	  0277		ERR_MESSAGE (WRITEOUT, 'I/O error on output file ');
;	  0278	
;	  0279	PSECT
;	  0280		OWN	= $OWN$;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page   8
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

;	  0281	GLOBAL ROUTINE EXTRACT (START_ADDR, CLI_CALLBACK) =
;	  0282	BEGIN
;	  0283	
;	  0284	!++
;	  0285	!
;	  0286	! Functional Description:
;	  0287	!
;	  0288	!	This is the main routine of the EXTRACT utility. It acquires and
;	  0289	!	parses the command line, opens files, and does the main line
;	  0290	!	processing.
;	  0291	!
;	  0292	! Calling Sequence:
;	  0293	!	standard
;	  0294	!
;	  0295	! Input Parameters:
;	  0296	MAP
;	  0297		CLI_CALLBACK;			! CLI callback address
;	  0298	!
;	  0299	! Implicit Inputs:
;	  0300	!	none
;	  0301	!
;	  0302	! Output Parameters:
;	  0303	!	none
;	  0304	!
;	  0305	! Implicit Outputs:
;	  0306	!	none
;	  0307	!
;	  0308	! Routines Called:
;	  0309	!	none
;	  0310	!
;	  0311	! Routine Value:
;	  0312	!	1 if successful
;	  0313	!	assorted error statuses if not
;	  0314	!
;	  0315	! Signals:
;	  0316	!	none
;	  0317	!
;	  0318	! Side Effects:
;	  0319	!	update file with merged audit trails created
;	  0320	!
;	  0321	!--
;	  0322	
;	  0323	LABEL
;	  0324		MAIN_LOOP;			! main processing loop
;	  0325	
;	  0326	LOCAL
;	  0327		P,				! random pointer
;	  0328		MSG_DESC	: VECTOR [2],	! message line descriptor
;	  0329		PREV_LINE;			! line number of previous line
;	  0330	
;	  0331	EXTERNAL ROUTINE
;	  0332		LIB$PUT_OUTPUT,			! output to console
;	  0333		LIB$TPARSE;			! library parsing routine
;	  0334	
;	  0335	ENABLE HANDLER;
;	  0336	
;	  0337	
;	  0338	! Begin by parsing the command line and opening the files.

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page   9
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

;	  0339	!
;	  0340	
;	  0341	(.CLI_CALLBACK) (GET_COMMAND, 0, 0);
;	  0342	
;	  0343	TPARSE_BLOCK[TPA$V_ABBREV] = 1;
;	  0344	TPARSE_BLOCK[TPA$V_BLANKS] = 1;
;	  0345	TPARSE_BLOCK[TPA$L_STRINGCNT] = .GET_COMMAND[CLI$W_RQSIZE];
;	  0346	TPARSE_BLOCK[TPA$L_STRINGPTR] = .GET_COMMAND[CLI$A_RQADDR];
;	  0347	IF NOT LIB$TPARSE (TPARSE_BLOCK, CMD_TABLE, CMD_KEY)
;	  0348	THEN ERR_EXIT (ERR_CMD_SYNTAX);
;	  0349	
;	  0350	INFAB1[FAB$B_FNS] = .FILE1[0];
;	  0351	INFAB1[FAB$L_FNA] = .FILE1[1];
;	  0352	IF NOT $OPEN (FAB = INFAB1)
;	  0353	THEN ERR_EXIT (ERR_INFILEOPEN, INFAB1);
;	  0354	IF NOT $CONNECT (RAB = INRAB1)
;	  0355	THEN ERR_EXIT (ERR_INFILEOPEN, INRAB1);
;	  0356	
;	  0357	INFAB2[FAB$B_FNS] = .FILE2[0];
;	  0358	INFAB2[FAB$L_FNA] = .FILE2[1];
;	  0359	IF NOT $OPEN (FAB = INFAB2)
;	  0360	THEN ERR_EXIT (ERR_INFILEOPEN, INFAB2);
;	  0361	IF NOT $CONNECT (RAB = INRAB2)
;	  0362	THEN ERR_EXIT (ERR_INFILEOPEN, INRAB2);
;	  0363	
;	  0364	OUTFAB[FAB$B_FNS] = .OUTFILE[0];
;	  0365	OUTFAB[FAB$L_FNA] = .OUTFILE[1];
;	  0366	IF NOT $CREATE (FAB = OUTFAB)
;	  0367	THEN ERR_EXIT (ERR_OUTFILEOPEN, OUTFAB);
;	  0368	IF NOT $CONNECT (RAB = OUTRAB)
;	  0369	THEN ERR_EXIT (ERR_OUTFILEOPEN, OUTRAB);
;	  0370	
;	  0371	! Initialize running variables.
;	  0372	!
;	  0373	
;	  0374	PREV_LINE = 0;
;	  0375	PREV_AUDIT[0] = 0;
;	  0376	PREV_AUDIT[1] = PREV_TEXT;
;	  0377	CH$FILL (0, 28, RANGE1);
;	  0378	CH$FILL (0, 28, RANGE2);
;	  0379	
;	  0380	! Read the first record of each file into the read ahead buffers.
;	  0381	!
;	  0382	
;	  0383	READ_LINE (INRAB1);
;	  0384	READ_LINE (INRAB2);
;	  0385	
;	  0386	! Now loop, reading update commands from the primary and compare files. If
;	  0387	! the SLP command in the compare file precedes the primary, we discard it
;	  0388	! and read the compare file until we find one that doesn't. If it follows
;	  0389	! the primary, it is held for future use and we just regurgitate the
;	  0390	! the command from the primary file into the output file. If they match,
;	  0391	! we do the collision processing that this utility is all about.
;	  0392	!
;	  0393	
;	  0394	MAIN_LOOP:
;	  0395	BEGIN
;	  0396	WHILE 1

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  10
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

;	  0397	DO
;	  0398	    BEGIN
;	  0399	    WHILE .SIZE1 EQL 0 AND .RANGE1[1] EQL 0
;	  0400	    DO
;	  0401		BEGIN
;	  0402		GET_UPDATE (INRAB1, RANGE1);
;	  0403		IF .RANGE1[0] EQL -1 THEN LEAVE MAIN_LOOP;
;	  0404		END;
;	  0405	    WHILE .SIZE2 EQL 0 AND .RANGE2[1] EQL 0 AND .RANGE2[0] NEQ -1
;	  0406	    DO GET_UPDATE (INRAB2, RANGE2);
;	  0407	
;	  0408	! Check for exact match. If they match, discard both primary and secondary
;	  0409	! updates.
;	  0410	!
;	  0411	
;	  0412	    IF  .RANGE1[0] EQL .RANGE2[0]
;	  0413	    AND .RANGE1[1] EQL .RANGE2[1]
;	  0414	    AND CH$EQL (.SIZE1, TEXT1, .SIZE2, TEXT2)
;	  0415	    THEN
;	  0416		BEGIN
;	  0417		RANGE1[1] = 0;
;	  0418		SIZE1 = 0;
;	  0419		RANGE2[1] = 0;
;	  0420		SIZE2 = 0;
;	  0421		END
;	  0422	
;	  0423	! If we have not detected an match, we advance whatever file is behind.
;	  0424	! If the primary if behind, we output it as is and discard, so the next
;	  0425	! command will be read at the top of the loop. If the secondary is behind,
;	  0426	! check if it overlaps the primary. If not, output a message to that effect.
;	  0427	! Then just flush the secondary.
;	  0428	!
;	  0429	
;	  0430	    ELSE
;	  0431		BEGIN
;	  0432		IF (IF .RANGE1[1] NEQ 0
;	  0433		    THEN .RANGE1[1]
;	  0434		    ELSE .RANGE1[0])
;	  0435		   LSSU .RANGE2[0]
;	  0436		THEN
;	  0437		    BEGIN
;	  0438		    OUTPUT_TEXT (.SIZE1, TEXT1);
;	  0439		    PREV_LINE = .RANGE1[0];
;	  0440		    PREV_AUDIT[0] = 0;
;	  0441		    RANGE1[1] = 0;
;	  0442		    SIZE1 = 0;
;	  0443		    END
;	  0444	
;	  0445		ELSE
;	  0446		    BEGIN
;	  0447		    IF NOT
;	  0448			(
;	  0449			(.RANGE1[0] GEQU .RANGE2[0] AND .RANGE1[0] LEQU .RANGE2[1])
;	  0450			OR
;	  0451			(.RANGE2[0] GEQU .RANGE1[0] AND .RANGE2[0] LEQU .RANGE1[1])
;	  0452			)
;	  0453		    THEN
;	  0454			BEGIN

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  11
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

;	  0455			MSG_DESC[0] = 132;
;	  0456			MSG_DESC[1] = OUT_LINE;
;	P 0457			$FAO (
;	P 0458				DESCRIPTOR ('Unmatched update in compare file !AD'),
;	P 0459				MSG_DESC[0],
;	P 0460				MSG_DESC[0],
;	P 0461				.INNAM2[NAM$B_RSL],
;	P 0462				.INNAM2[NAM$L_RSA]
;	  0463				);
;	  0464			LIB$PUT_OUTPUT (MSG_DESC[0]);
;	  0465			P = CH$FIND_CH (.SIZE2, TEXT2, 0);
;	  0466			MSG_DESC[0] = .P - TEXT2;
;	  0467			MSG_DESC[1] = TEXT2;
;	  0468			LIB$PUT_OUTPUT (MSG_DESC[0]);
;	  0469			END;
;	  0470	
;	  0471		    RANGE2[1] = 0;
;	  0472		    SIZE2 = 0;
;	  0473		    END;
;	  0474		END;
;	  0475	
;	  0476	    END;				! end of file processing loop
;	  0477	END;					! end of block MAIN_LOOP
;	  0478	
;	  0479	! We have reached the end of the primary input file. Output the end command
;	  0480	! and close up shop.
;	  0481	!
;	  0482	
;	  0483	TEXT1[0] = '/';
;	  0484	OUTRAB[RAB$W_RSZ] = 1;
;	  0485	OUTRAB[RAB$L_RBF] = TEXT1;
;	  0486	WRITE_LINE (OUTRAB);
;	  0487	
;	  0488	IF NOT $CLOSE (FAB = OUTFAB)
;	  0489	THEN ERR_EXIT (ERR_OUTCLOSE, OUTFAB);
;	  0490	
;	  0491	$CLOSE (FAB = INFAB1);
;	  0492	$CLOSE (FAB = INFAB2);
;	  0493	
;	  0494	1
;	  0495	
;	  0496	END;					! end of routine EXTRACT


									  .TITLE  EXTRACT
									  .IDENT  \X0001D\

									  .PSECT  $MSG_INDEX,NOWRT,NOEXE,2

							    00000 MESSAGE_TABLE:
									  .BLKB   0
						  00000000' 00000 U.2:	  .ADDRESS U.1					      ;
						  00000000' 00004 U.4:	  .ADDRESS U.3					      ;
						  00000000' 00008 U.6:	  .ADDRESS U.5					      ;
						  00000000' 0000C U.8:	  .ADDRESS U.7					      ;
						  00000000' 00010 U.10:   .ADDRESS U.9					      ;
						  00000000' 00014 U.12:   .ADDRESS U.11					      ;
						  00000000' 00018 U.14:   .ADDRESS U.13					      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  12
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

						  00000000' 0001C U.16:   .ADDRESS U.15					      ;

									  .PSECT  $MSG_TEXT,NOWRT,NOEXE,0

							    00000 MESSAGE_TEXT:
									  .BLKB   0
							19  00000 U.1:	  .BYTE   25					      ;
79  73  20  65  6E  69  6C  20  64  6E  61  6D  6D  6F  43  00001 	  .ASCII  \Command line syntax error\		      ;
		    72  6F  72  72  65  20  78  61  74  6E  00010							      ;
							    0001A	  .BLKB   2
							19  0001C U.3:	  .BYTE   25					      ;
69  20  67  6E  69  6E  65  70  6F  20  72  6F  72  72  45  0001D 	  .ASCII  \Error opening input file \		      ;
		    20  65  6C  69  66  20  74  75  70  6E  0002C							      ;
							    00036	  .BLKB   2
							1A  00038 U.5:	  .BYTE   26					      ;
6F  20  67  6E  69  6E  65  70  6F  20  72  6F  72  72  45  00039 	  .ASCII  \Error opening output file \		      ;
		20  65  6C  69  66  20  74  75  70  74  75  00048							      ;
							    00053	  .BLKB   1
							1A  00054 U.7:	  .BYTE   26					      ;
6F  20  67  6E  69  73  6F  6C  63  20  72  6F  72  72  45  00055 	  .ASCII  \Error closing output file \		      ;
		20  65  6C  69  66  20  74  75  70  74  75  00064							      ;
							    0006F	  .BLKB   1
							19  00070 U.9:	  .BYTE   25					      ;
6F  72  72  65  20  78  61  74  6E  79  73  20  50  4C  53  00071 	  .ASCII  \SLP syntax error in file \		      ;
		    20  65  6C  69  66  20  6E  69  20  72  00080							      ;
							    0008A	  .BLKB   2
							17  0008C U.11:   .BYTE   23					      ;
20  72  65  66  66  75  62  20  65  72  61  70  6D  6F  43  0008D 	  .ASCII  \Compare buffer overflow\		      ;
			    77  6F  6C  66  72  65  76  6F  0009C							      ;
							18  000A4 U.13:   .BYTE   24					      ;
6E  69  20  6E  6F  20  72  6F  72  72  65  20  4F  2F  49  000A5 	  .ASCII  \I/O error on input file \		      ;
			20  65  6C  69  66  20  74  75  70  000B4							      ;
							    000BD	  .BLKB   3
							19  000C0 U.15:   .BYTE   25					      ;
75  6F  20  6E  6F  20  72  6F  72  72  65  20  4F  2F  49  000C1 	  .ASCII  \I/O error on output file \		      ;
		    20  65  6C  69  66  20  74  75  70  74  000D0							      ;

									  .PSECT  $PLIT$,NOWRT,NOEXE,2

					    44  50  55  2E  00000 P.AAA:  .ASCII  \.UPD\				      ;
					    44  50  55  2E  00004 P.AAB:  .ASCII  \.UPD\				      ;
74  61  64  70  75  20  64  65  68  63  74  61  6D  6E  55  00008 P.AAD:  .ASCII  \Unmatched update in compare file !AD\      ;
69  66  20  65  72  61  70  6D  6F  63  20  6E  69  20  65  00017							      ;
				    44  41  21  20  65  6C  00026							      ;
						  00000024  0002C P.AAC:  .LONG   36					      ;
						  00000000' 00030 	  .ADDRESS P.AAD				      ;

									  .PSECT  $OWN$,NOEXE,2

							    00000 OUT_LINE:
									  .BLKB   132
							    00084 PREV_AUDIT:
									  .BLKB   8
							    0008C PREV_TEXT:
									  .BLKB   132
							    00110 RANGE1: .BLKB   8
							    00118 AUDIT1: .BLKB   8
							    00120 COMMENT1:

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  13
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

									  .BLKB   8
							    00128 SIZE1:  .BLKB   4
							    0012C LINE1:  .BLKB   132
							    001B0 AU_TEXT1:
									  .BLKB   132
							    00234 CM_TEXT1:
									  .BLKB   132
							    002B8 TEXT1:  .BLKB   100000
							    18958 RANGE2: .BLKB   8
							    18960 AUDIT2: .BLKB   8
							    18968 COMMENT2:
									  .BLKB   8
							    18970 SIZE2:  .BLKB   4
							    18974 LINE2:  .BLKB   132
							    189F8 AU_TEXT2:
									  .BLKB   132
							    18A7C CM_TEXT2:
									  .BLKB   132
							    18B00 TEXT2:  .BLKB   100000
							    311A0 START_LINE:
									  .BLKB   4
							    311A4 END_LINE:
									  .BLKB   4
							    311A8 AUDIT_STRING:
									  .BLKB   8
							    311B0 COMMENT_STRING:
									  .BLKB   8
							    311B8 FILE1:  .BLKB   8
							    311C0 FILE2:  .BLKB   8
							    311C8 OUTFILE:.BLKB   8
						  00000008  311D0 TPARSE_BLOCK:
									  .LONG   8					      ;
							    311D4	  .BLKB   32
							01  311F4 GET_COMMAND:
									  .BYTE   1					      ;
							00  311F5 	  .BYTE   0					      ;
							00  311F6 	  .BYTE   0					      ;
							00  311F7 	  .BYTE   0					      ;
						  00000000  311F8 	  .LONG   0					      ;
					00000000  00000000  311FC 	  .LONG   0, 0					      ;
						  00000000  31204 	  .LONG   0					      ;
						  00000000  31208 	  .LONG   0					      ;
						  00000000  3120C 	  .LONG   0					      ;
							    31210 INRES1: .BLKB   132
							02  31294 INNAM1: .BYTE   2					      ;
							38  31295 	  .BYTE   56					      ;
							84  31296 	  .BYTE   -124					      ;
							00  31297 	  .BYTE   0					      ;
						  00000000' 31298 	  .ADDRESS INRES1				      ;
						      0000  3129C 	  .WORD   0					      ;
							84  3129E 	  .BYTE   -124					      ;
							00  3129F 	  .BYTE   0					      ;
						  00000000' 312A0 	  .ADDRESS INRES1				      ;
						  00000000  312A4 	  .LONG   0					      ;
						      0000# 312A8 	  .WORD   0[8]					      ;
						      0000# 312B8 	  .WORD   0[3]					      ;
						      0000# 312BE 	  .WORD   0[3]					      ;
						  00000000  312C4 	  .LONG   0					      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  14
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

						  00000000  312C8 	  .LONG   0					      ;
							03  312CC INFAB1: .BYTE   3					      ;
							50  312CD 	  .BYTE   80					      ;
						      0000  312CE 	  .WORD   0					      ;
						  00000040  312D0 	  .LONG   64					      ;
						  00000000  312D4 	  .LONG   0					      ;
						  00000000  312D8 	  .LONG   0					      ;
						  00000000  312DC 	  .LONG   0					      ;
						      0000  312E0 	  .WORD   0					      ;
							02  312E2 	  .BYTE   2					      ;
							00  312E3 	  .BYTE   0					      ;
						  00000000  312E4 	  .LONG   0					      ;
							00  312E8 	  .BYTE   0					      ;
							00  312E9 	  .BYTE   0					      ;
							00  312EA 	  .BYTE   0					      ;
							02  312EB 	  .BYTE   2					      ;
						  00000000  312EC 	  .LONG   0					      ;
						  00000000  312F0 	  .LONG   0					      ;
						  00000000' 312F4 	  .ADDRESS INNAM1				      ;
						  00000000  312F8 	  .LONG   0					      ;
						  00000000' 312FC 	  .ADDRESS P.AAA				      ;
							00  31300 	  .BYTE   0					      ;
							04  31301 	  .BYTE   4					      ;
						      0000  31302 	  .WORD   0					      ;
						  00000000  31304 	  .LONG   0					      ;
						      0000  31308 	  .WORD   0					      ;
							00  3130A 	  .BYTE   0					      ;
							00  3130B 	  .BYTE   0					      ;
						  00000000  3130C 	  .LONG   0					      ;
						  00000000  31310 	  .LONG   0					      ;
						  00000000# 31314 	  .LONG   0[2]					      ;
							01  3131C INRAB1: .BYTE   1					      ;
							44  3131D 	  .BYTE   68					      ;
						      0000  3131E 	  .WORD   0					      ;
						  00000000  31320 	  .LONG   0					      ;
						  00000000  31324 	  .LONG   0					      ;
						  00000000  31328 	  .LONG   0					      ;
						      0000# 3132C 	  .WORD   0[3]					      ;
						      0000  31332 	  .WORD   0					      ;
						  00000000  31334 	  .LONG   0					      ;
						      0000  31338 	  .WORD   0					      ;
							00  3133A 	  .BYTE   0					      ;
							00  3133B 	  .BYTE   0					      ;
						      0084  3133C 	  .WORD   132					      ;
						      0000  3133E 	  .WORD   0					      ;
						  00000000' 31340 	  .ADDRESS LINE1				      ;
						  00000000  31344 	  .LONG   0					      ;
						  00000000  31348 	  .LONG   0					      ;
						  00000000  3134C 	  .LONG   0					      ;
							00  31350 	  .BYTE   0					      ;
							00  31351 	  .BYTE   0					      ;
							00  31352 	  .BYTE   0					      ;
							00  31353 	  .BYTE   0					      ;
						  00000000  31354 	  .LONG   0					      ;
						  00000000' 31358 	  .ADDRESS INFAB1				      ;
						  00000000  3135C 	  .LONG   0					      ;
							    31360 INRES2: .BLKB   132
							02  313E4 INNAM2: .BYTE   2					      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  15
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

							38  313E5 	  .BYTE   56					      ;
							84  313E6 	  .BYTE   -124					      ;
							00  313E7 	  .BYTE   0					      ;
						  00000000' 313E8 	  .ADDRESS INRES2				      ;
						      0000  313EC 	  .WORD   0					      ;
							84  313EE 	  .BYTE   -124					      ;
							00  313EF 	  .BYTE   0					      ;
						  00000000' 313F0 	  .ADDRESS INRES2				      ;
						  00000000' 313F4 	  .ADDRESS INNAM1				      ;
						      0000# 313F8 	  .WORD   0[8]					      ;
						      0000# 31408 	  .WORD   0[3]					      ;
						      0000# 3140E 	  .WORD   0[3]					      ;
						  00000000  31414 	  .LONG   0					      ;
						  00000000  31418 	  .LONG   0					      ;
							03  3141C INFAB2: .BYTE   3					      ;
							50  3141D 	  .BYTE   80					      ;
						      0000  3141E 	  .WORD   0					      ;
						  00000040  31420 	  .LONG   64					      ;
						  00000000  31424 	  .LONG   0					      ;
						  00000000  31428 	  .LONG   0					      ;
						  00000000  3142C 	  .LONG   0					      ;
						      0000  31430 	  .WORD   0					      ;
							02  31432 	  .BYTE   2					      ;
							00  31433 	  .BYTE   0					      ;
						  00000000  31434 	  .LONG   0					      ;
							00  31438 	  .BYTE   0					      ;
							00  31439 	  .BYTE   0					      ;
							00  3143A 	  .BYTE   0					      ;
							02  3143B 	  .BYTE   2					      ;
						  00000000  3143C 	  .LONG   0					      ;
						  00000000  31440 	  .LONG   0					      ;
						  00000000' 31444 	  .ADDRESS INNAM2				      ;
						  00000000  31448 	  .LONG   0					      ;
						  00000000' 3144C 	  .ADDRESS P.AAB				      ;
							00  31450 	  .BYTE   0					      ;
							04  31451 	  .BYTE   4					      ;
						      0000  31452 	  .WORD   0					      ;
						  00000000  31454 	  .LONG   0					      ;
						      0000  31458 	  .WORD   0					      ;
							00  3145A 	  .BYTE   0					      ;
							00  3145B 	  .BYTE   0					      ;
						  00000000  3145C 	  .LONG   0					      ;
						  00000000  31460 	  .LONG   0					      ;
						  00000000# 31464 	  .LONG   0[2]					      ;
							01  3146C INRAB2: .BYTE   1					      ;
							44  3146D 	  .BYTE   68					      ;
						      0000  3146E 	  .WORD   0					      ;
						  00000000  31470 	  .LONG   0					      ;
						  00000000  31474 	  .LONG   0					      ;
						  00000000  31478 	  .LONG   0					      ;
						      0000# 3147C 	  .WORD   0[3]					      ;
						      0000  31482 	  .WORD   0					      ;
						  00000000  31484 	  .LONG   0					      ;
						      0000  31488 	  .WORD   0					      ;
							00  3148A 	  .BYTE   0					      ;
							00  3148B 	  .BYTE   0					      ;
						      0084  3148C 	  .WORD   132					      ;
						      0000  3148E 	  .WORD   0					      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  16
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

						  00000000' 31490 	  .ADDRESS LINE2				      ;
						  00000000  31494 	  .LONG   0					      ;
						  00000000  31498 	  .LONG   0					      ;
						  00000000  3149C 	  .LONG   0					      ;
							00  314A0 	  .BYTE   0					      ;
							00  314A1 	  .BYTE   0					      ;
							00  314A2 	  .BYTE   0					      ;
							00  314A3 	  .BYTE   0					      ;
						  00000000  314A4 	  .LONG   0					      ;
						  00000000' 314A8 	  .ADDRESS INFAB2				      ;
						  00000000  314AC 	  .LONG   0					      ;
							    314B0 OUTRES: .BLKB   132
							02  31534 OUTNAM: .BYTE   2					      ;
							38  31535 	  .BYTE   56					      ;
							84  31536 	  .BYTE   -124					      ;
							00  31537 	  .BYTE   0					      ;
						  00000000' 31538 	  .ADDRESS OUTRES				      ;
						      0000  3153C 	  .WORD   0					      ;
							84  3153E 	  .BYTE   -124					      ;
							00  3153F 	  .BYTE   0					      ;
						  00000000' 31540 	  .ADDRESS OUTRES				      ;
						  00000000' 31544 	  .ADDRESS INNAM1				      ;
						      0000# 31548 	  .WORD   0[8]					      ;
						      0000# 31558 	  .WORD   0[3]					      ;
						      0000# 3155E 	  .WORD   0[3]					      ;
						  00000000  31564 	  .LONG   0					      ;
						  00000000  31568 	  .LONG   0					      ;
							03  3156C OUTFAB: .BYTE   3					      ;
							50  3156D 	  .BYTE   80					      ;
						      0000  3156E 	  .WORD   0					      ;
						  20000042  31570 	  .LONG   536870978				      ;
						  00000000  31574 	  .LONG   0					      ;
						  00000000  31578 	  .LONG   0					      ;
						  00000000  3157C 	  .LONG   0					      ;
						      0000  31580 	  .WORD   0					      ;
							01  31582 	  .BYTE   1					      ;
							00  31583 	  .BYTE   0					      ;
						  00000000  31584 	  .LONG   0					      ;
							00  31588 	  .BYTE   0					      ;
							00  31589 	  .BYTE   0					      ;
							02  3158A 	  .BYTE   2					      ;
							02  3158B 	  .BYTE   2					      ;
						  00000000  3158C 	  .LONG   0					      ;
						  00000000  31590 	  .LONG   0					      ;
						  00000000' 31594 	  .ADDRESS OUTNAM				      ;
						  00000000  31598 	  .LONG   0					      ;
						  00000000  3159C 	  .LONG   0					      ;
							00  315A0 	  .BYTE   0					      ;
							00  315A1 	  .BYTE   0					      ;
						      0000  315A2 	  .WORD   0					      ;
						  00000000  315A4 	  .LONG   0					      ;
						      0000  315A8 	  .WORD   0					      ;
							00  315AA 	  .BYTE   0					      ;
							00  315AB 	  .BYTE   0					      ;
						  00000000  315AC 	  .LONG   0					      ;
						  00000000  315B0 	  .LONG   0					      ;
						  00000000# 315B4 	  .LONG   0[2]					      ;
							01  315BC OUTRAB: .BYTE   1					      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  17
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

							44  315BD 	  .BYTE   68					      ;
						      0000  315BE 	  .WORD   0					      ;
						  00000000  315C0 	  .LONG   0					      ;
						  00000000  315C4 	  .LONG   0					      ;
						  00000000  315C8 	  .LONG   0					      ;
						      0000# 315CC 	  .WORD   0[3]					      ;
						      0000  315D2 	  .WORD   0					      ;
						  00000000  315D4 	  .LONG   0					      ;
						      0000  315D8 	  .WORD   0					      ;
							00  315DA 	  .BYTE   0					      ;
							00  315DB 	  .BYTE   0					      ;
						      0000  315DC 	  .WORD   0					      ;
						      0000  315DE 	  .WORD   0					      ;
						  00000000  315E0 	  .LONG   0					      ;
						  00000000' 315E4 	  .ADDRESS OUT_LINE				      ;
						  00000000  315E8 	  .LONG   0					      ;
						  00000000  315EC 	  .LONG   0					      ;
							00  315F0 	  .BYTE   0					      ;
							00  315F1 	  .BYTE   0					      ;
							00  315F2 	  .BYTE   0					      ;
							00  315F3 	  .BYTE   0					      ;
						  00000000  315F4 	  .LONG   0					      ;
						  00000000' 315F8 	  .ADDRESS OUTFAB				      ;
						  00000000  315FC 	  .LONG   0					      ;

									  .EXTRN  LIB$PUT_OUTPUT, LIB$TPARSE
									  .EXTRN  SYS$OPEN, SYS$CONNECT
									  .EXTRN  SYS$CREATE, SYS$FAO
									  .EXTRN  SYS$CLOSE

									  .PSECT  $CODE$,NOWRT,2

						       0FFC 00000 	  .ENTRY  EXTRACT, Save R2,R3,R4,R5,R6,R7,R8,R9,R10,- ; 0281
										  R11					      ;
				       5B 00000000G  9F  9E 00002 	  MOVAB   @#SYS$CLOSE, R11			      ;
				       5A 00000000G  9F  9E 00009 	  MOVAB   @#SYS$CONNECT, R10			      ;
				       59 00000000G  00  9E 00010 	  MOVAB   LIB$STOP, R9				      ;
				       58 00000000'  EF  9E 00017 	  MOVAB   RANGE1, R8				      ;
				       5E	     08  C2 0001E 	  SUBL2   #8, SP				      ;
				       6D 0000030F   EF  DE 00021 	  MOVAL   21$, (FP)				      ; 0282
						     7E  7C 00028 	  CLRQ    -(SP)					      ; 0341
					  00000000'  EF  9F 0002A 	  PUSHAB  GET_COMMAND				      ;
				  08   BC	     03  FB 00030 	  CALLS   #3, @CLI_CALLBACK			      ;
			    00000000'  EF	     03  88 00034 	  BISB2   #3, TPARSE_BLOCK+4			      ; 0344
			    00000000'  EF 00000000'  EF  3C 0003B 	  MOVZWL  GET_COMMAND+8, TPARSE_BLOCK+8		      ; 0345
			    00000000'  EF 00000000'  EF  D0 00046 	  MOVL    GET_COMMAND+12, TPARSE_BLOCK+12	      ; 0346
					  00000000V  EF  9F 00051 	  PUSHAB  CMD_KEY				      ; 0347
					  00000000V  EF  9F 00057 	  PUSHAB  CMD_TABLE				      ;
					  00000000'  EF  9F 0005D 	  PUSHAB  TPARSE_BLOCK				      ;
			    00000000G  EF	     03  FB 00063 	  CALLS   #3, LIB$TPARSE			      ;
				       09	     50  E8 0006A 	  BLBS    R0, 1$				      ;
					  00450000   8F  DD 0006D 	  PUSHL   #4521984				      ; 0348
				       69	     01  FB 00073 	  CALLS   #1, LIB$STOP				      ;
			    00000000'  EF 00000000'  EF  90 00076 1$:	  MOVB    FILE1, INFAB1+52			      ; 0350
			    00000000'  EF 00000000'  EF  D0 00081 	  MOVL    FILE1+4, INFAB1+44			      ; 0351
					  00000000'  EF  9F 0008C 	  PUSHAB  INFAB1				      ; 0352
			    00000000G  9F	     01  FB 00092 	  CALLS   #1, @#SYS$OPEN			      ;
				       0F	     50  E8 00099 	  BLBS    R0, 2$				      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  18
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

					  00000000'  EF  9F 0009C 	  PUSHAB  INFAB1				      ; 0353
					  00450008   8F  DD 000A2 	  PUSHL   #4521992				      ;
				       69	     02  FB 000A8 	  CALLS   #2, LIB$STOP				      ;
					  00000000'  EF  9F 000AB 2$:	  PUSHAB  INRAB1				      ; 0354
				       6A	     01  FB 000B1 	  CALLS   #1, SYS$CONNECT			      ;
				       0F	     50  E8 000B4 	  BLBS    R0, 3$				      ;
					  00000000'  EF  9F 000B7 	  PUSHAB  INRAB1				      ; 0355
					  00450008   8F  DD 000BD 	  PUSHL   #4521992				      ;
				       69	     02  FB 000C3 	  CALLS   #2, LIB$STOP				      ;
			    00000000'  EF 00000000'  EF  90 000C6 3$:	  MOVB    FILE2, INFAB2+52			      ; 0357
			    00000000'  EF 00000000'  EF  D0 000D1 	  MOVL    FILE2+4, INFAB2+44			      ; 0358
					  00000000'  EF  9F 000DC 	  PUSHAB  INFAB2				      ; 0359
			    00000000G  9F	     01  FB 000E2 	  CALLS   #1, @#SYS$OPEN			      ;
				       0F	     50  E8 000E9 	  BLBS    R0, 4$				      ;
					  00000000'  EF  9F 000EC 	  PUSHAB  INFAB2				      ; 0360
					  00450008   8F  DD 000F2 	  PUSHL   #4521992				      ;
				       69	     02  FB 000F8 	  CALLS   #2, LIB$STOP				      ;
					  00000000'  EF  9F 000FB 4$:	  PUSHAB  INRAB2				      ; 0361
				       6A	     01  FB 00101 	  CALLS   #1, SYS$CONNECT			      ;
				       0F	     50  E8 00104 	  BLBS    R0, 5$				      ;
					  00000000'  EF  9F 00107 	  PUSHAB  INRAB2				      ; 0362
					  00450008   8F  DD 0010D 	  PUSHL   #4521992				      ;
				       69	     02  FB 00113 	  CALLS   #2, LIB$STOP				      ;
			    00000000'  EF 00000000'  EF  90 00116 5$:	  MOVB    OUTFILE, OUTFAB+52			      ; 0364
			    00000000'  EF 00000000'  EF  D0 00121 	  MOVL    OUTFILE+4, OUTFAB+44			      ; 0365
					  00000000'  EF  9F 0012C 	  PUSHAB  OUTFAB				      ; 0366
			    00000000G  9F	     01  FB 00132 	  CALLS   #1, @#SYS$CREATE			      ;
				       0F	     50  E8 00139 	  BLBS    R0, 6$				      ;
					  00000000'  EF  9F 0013C 	  PUSHAB  OUTFAB				      ; 0367
					  00450010   8F  DD 00142 	  PUSHL   #4522000				      ;
				       69	     02  FB 00148 	  CALLS   #2, LIB$STOP				      ;
					  00000000'  EF  9F 0014B 6$:	  PUSHAB  OUTRAB				      ; 0368
				       6A	     01  FB 00151 	  CALLS   #1, SYS$CONNECT			      ;
				       0F	     50  E8 00154 	  BLBS    R0, 7$				      ;
					  00000000'  EF  9F 00157 	  PUSHAB  OUTRAB				      ; 0369
					  00450010   8F  DD 0015D 	  PUSHL   #4522000				      ;
				       69	     02  FB 00163 	  CALLS   #2, LIB$STOP				      ;
						     56  D4 00166 7$:	  CLRL    PREV_LINE				      ; 0374
					      FF74   C8  D4 00168 	  CLRL    PREV_AUDIT				      ; 0375
				FF78   C8     FF7C   C8  9E 0016C 	  MOVAB   PREV_TEXT, PREV_AUDIT+4		      ; 0376
	   1C	         00	       6E	     00  2C 00173 	  MOVC5   #0, (SP), #0, #28, RANGE1		      ; 0377
						     68     00178							      ;
	   1C	         00	       6E	     00  2C 00179 	  MOVC5   #0, (SP), #0, #28, RANGE2		      ; 0378
					  00000000'  EF     0017E							      ;
					  00000000'  EF  9F 00183 	  PUSHAB  INRAB1				      ; 0383
			    00000000V  EF	     01  FB 00189 	  CALLS   #1, READ_LINE				      ;
					  00000000'  EF  9F 00190 	  PUSHAB  INRAB2				      ; 0384
			    00000000V  EF	     01  FB 00196 	  CALLS   #1, READ_LINE				      ;
						18   A8  D5 0019D 8$:	  TSTL    SIZE1					      ; 0399
						     20  12 001A0 	  BNEQ    9$					      ;
						04   A8  D5 001A2 	  TSTL    RANGE1+4				      ;
						     1B  12 001A5 	  BNEQ    9$					      ;
						     58  DD 001A7 	  PUSHL   R8					      ; 0402
					  00000000'  EF  9F 001A9 	  PUSHAB  INRAB1				      ;
			    00000000V  EF	     02  FB 001AF 	  CALLS   #2, GET_UPDATE			      ;
			    FFFFFFFF   8F	     68  D1 001B6 	  CMPL    RANGE1, #-1				      ; 0403
						     DE  12 001BD 	  BNEQ    8$					      ;
						   0121  31 001BF 	  BRW     19$					      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  19
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

					  00000000'  EF  D5 001C2 9$:	  TSTL    SIZE2					      ; 0405
						     2A  12 001C8 	  BNEQ    10$					      ;
					  00000000'  EF  D5 001CA 	  TSTL    RANGE2+4				      ;
						     22  12 001D0 	  BNEQ    10$					      ;
			    FFFFFFFF   8F 00000000'  EF  D1 001D2 	  CMPL    RANGE2, #-1				      ;
						     15  13 001DD 	  BEQL    10$					      ;
					  00000000'  EF  9F 001DF 	  PUSHAB  RANGE2				      ; 0406
					  00000000'  EF  9F 001E5 	  PUSHAB  INRAB2				      ;
			    00000000V  EF	     02  FB 001EB 	  CALLS   #2, GET_UPDATE			      ;
						     CE  11 001F2 	  BRB     9$					      ; 0405
				       55	     68  D0 001F4 10$:	  MOVL    RANGE1, R5				      ; 0412
				       54 00000000'  EF  D0 001F7 	  MOVL    RANGE2, R4				      ;
				       54	     55  D1 001FE 	  CMPL    R5, R4				      ;
						     26  12 00201 	  BNEQ    11$					      ;
			    00000000'  EF	04   A8  D1 00203 	  CMPL    RANGE1+4, RANGE2+4			      ; 0413
						     1C  12 0020B 	  BNEQ    11$					      ;
00000000'  EF	         00	01A8   C8	18   A8  2D 0020D 	  CMPC5   SIZE1, TEXT1, #0, SIZE2, TEXT2	      ; 0414
					  00000000'  EF     00219							      ;
						     09  12 0021E 	  BNEQ    11$					      ;
						04   A8  D4 00220 	  CLRL    RANGE1+4				      ; 0417
						18   A8  D4 00223 	  CLRL    SIZE1					      ; 0418
						   00AB  31 00226 	  BRW     18$					      ; 0419
				       52	04   A8  D0 00229 11$:	  MOVL    RANGE1+4, R2				      ; 0432
						     05  13 0022D 	  BEQL    12$					      ;
				       50	     52  D0 0022F 	  MOVL    R2, R0				      ;
						     03  11 00232 	  BRB     13$					      ;
				       50	     55  D0 00234 12$:	  MOVL    R5, R0				      ;
				       54	     50  D1 00237 13$:	  CMPL    R0, R4				      ; 0435
						     1E  1E 0023A 	  BGEQU   14$					      ;
					      01A8   C8  9F 0023C 	  PUSHAB  TEXT1					      ; 0438
						18   A8  DD 00240 	  PUSHL   SIZE1					      ;
			    00000000V  EF	     02  FB 00243 	  CALLS   #2, OUTPUT_TEXT			      ;
				       56	     68  D0 0024A 	  MOVL    RANGE1, PREV_LINE			      ; 0439
					      FF74   C8  D4 0024D 	  CLRL    PREV_AUDIT				      ; 0440
						04   A8  D4 00251 	  CLRL    RANGE1+4				      ; 0441
						18   A8  D4 00254 	  CLRL    SIZE1					      ; 0442
						   FF43  31 00257 	  BRW     8$					      ; 0432
				       54	     55  D1 0025A 14$:	  CMPL    R5, R4				      ; 0449
						     09  1F 0025D 	  BLSSU   15$					      ;
			    00000000'  EF	     55  D1 0025F 	  CMPL    R5, RANGE2+4				      ;
						     6C  1B 00266 	  BLEQU   18$					      ;
				       55	     54  D1 00268 15$:	  CMPL    R4, R5				      ; 0451
						     05  1F 0026B 	  BLSSU   16$					      ;
				       52	     54  D1 0026D 	  CMPL    R4, R2				      ;
						     62  1B 00270 	  BLEQU   18$					      ;
				       6E	84   8F  9A 00272 16$:	  MOVZBL  #132, MSG_DESC			      ; 0455
				  04   AE     FEF0   C8  9E 00276 	  MOVAB   OUT_LINE, MSG_DESC+4			      ; 0456
					  00000000'  EF  DD 0027C 	  PUSHL   INNAM2+4				      ; 0463
				       7E 00000000'  EF  9A 00282 	  MOVZBL  INNAM2+3, -(SP)			      ;
						08   AE  9F 00289 	  PUSHAB  MSG_DESC				      ;
						0C   AE  9F 0028C 	  PUSHAB  MSG_DESC				      ;
					  00000000'  EF  9F 0028F 	  PUSHAB  P.AAC					      ;
			    00000000G  9F	     05  FB 00295 	  CALLS   #5, @#SYS$FAO				      ;
						     5E  DD 0029C 	  PUSHL   SP					      ; 0464
			    00000000G  EF	     01  FB 0029E 	  CALLS   #1, LIB$PUT_OUTPUT			      ;
	      00000000'  EF 00000000'  EF	     00  3A 002A5 	  LOCC    #0, SIZE2, TEXT2			      ; 0465
						     02  12 002B1 	  BNEQ    17$					      ;
						     51  D4 002B3 	  CLRL    R1					      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  20
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5)

				       57	     51  D0 002B5 17$:	  MOVL    R1, P					      ;
				       50 00000000'  EF  9E 002B8 	  MOVAB   TEXT2, R0				      ; 0466
		         6E	       57	     50  C3 002BF 	  SUBL3   R0, P, MSG_DESC			      ;
				  04   AE 00000000'  EF  9E 002C3 	  MOVAB   TEXT2, MSG_DESC+4			      ; 0467
						     5E  DD 002CB 	  PUSHL   SP					      ; 0468
			    00000000G  EF	     01  FB 002CD 	  CALLS   #1, LIB$PUT_OUTPUT			      ;
					  00000000'  EF  D4 002D4 18$:	  CLRL    RANGE2+4				      ; 0471
					  00000000'  EF  D4 002DA 	  CLRL    SIZE2					      ; 0472
						   FEBA  31 002E0 	  BRW     8$					      ; 0396
				01A8   C8	     2F  90 002E3 19$:	  MOVB    #47, TEXT1				      ; 0483
			    00000000'  EF	     01  B0 002E8 	  MOVW    #1, OUTRAB+34				      ; 0484
			    00000000'  EF     01A8   C8  9E 002EF 	  MOVAB   TEXT1, OUTRAB+40			      ; 0485
					  00000000'  EF  9F 002F8 	  PUSHAB  OUTRAB				      ; 0486
			    00000000V  EF	     01  FB 002FE 	  CALLS   #1, WRITE_LINE			      ;
					  00000000'  EF  9F 00305 	  PUSHAB  OUTFAB				      ; 0488
				       6B	     01  FB 0030B 	  CALLS   #1, SYS$CLOSE				      ;
				       0F	     50  E8 0030E 	  BLBS    R0, 20$				      ;
					  00000000'  EF  9F 00311 	  PUSHAB  OUTFAB				      ; 0489
					  00450018   8F  DD 00317 	  PUSHL   #4522008				      ;
				       69	     02  FB 0031D 	  CALLS   #2, LIB$STOP				      ;
					  00000000'  EF  9F 00320 20$:	  PUSHAB  INFAB1				      ; 0491
				       6B	     01  FB 00326 	  CALLS   #1, SYS$CLOSE				      ;
					  00000000'  EF  9F 00329 	  PUSHAB  INFAB2				      ; 0492
				       6B	     01  FB 0032F 	  CALLS   #1, SYS$CLOSE				      ;
				       50	     01  D0 00332 	  MOVL    #1, R0				      ; 0281
							 04 00335 	  RET     					      ;
						       0000 00336 21$:	  .WORD   Save nothing				      ; 0282
						     7E  D4 00338 	  CLRL    -(SP)					      ;
						     5E  DD 0033A 	  PUSHL   SP					      ;
				       7E	04   AC  7D 0033C 	  MOVQ    4(AP), -(SP)				      ;
			    00000000V  EF	     03  FB 00340 	  CALLS   #3, HANDLER				      ;
							 04 00347 	  RET     					      ;

; Routine Size:  840 bytes,    Routine Base:  $CODE$ + 0000



EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  21
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6)

;	  0497	ROUTINE GET_UPDATE (RAB, BUFFER) : NOVALUE =
;	  0498	BEGIN
;	  0499	
;	  0500	!++
;	  0501	!
;	  0502	! Functional Description:
;	  0503	!
;	  0504	!	This routine reads the next SLP update into the specified update
;	  0505	!	buffer, parsing the command and accumulating the text.
;	  0506	!
;	  0507	! Calling Sequence:
;	  0508	!	standard
;	  0509	!
;	  0510	! Input Parameters:
;	  0511	MAP
;	  0512		RAB		: REF $RAB_DECL; ! RAB of input file to read
;	  0513	!
;	  0514	! Implicit Inputs:
;	  0515	!	TPARSE SLP output area
;	  0516	!
;	  0517	! Output Parameters:
;	  0518	MAP
;	  0519		BUFFER		: REF BLOCK;	! command buffer to build update in
;	  0520	!
;	  0521	! Implicit Outputs:
;	  0522	!	none
;	  0523	!
;	  0524	! Routines Called:
;	  0525	!	READ_LINE	: NOVALUE;	! read a record from input file
;	  0526	!	FORMAT_COMMAND,			! format a SLP command
;	  0527	EXTERNAL ROUTINE
;	  0528		LIB$TPARSE;			! library parser
;	  0529	!
;	  0530	! Routine Value:
;	  0531	!	none
;	  0532	!
;	  0533	! Signals:
;	  0534	!	none
;	  0535	!
;	  0536	! Side Effects:
;	  0537	!	none
;	  0538	!
;	  0539	!--
;	  0540	
;	  0541	LOCAL
;	  0542		C,				! size of formatted string
;	  0543		BUFFER_END;			! pointer to text at end of buffer
;	  0544	
;	  0545	
;	  0546	! Start with the record read ahead in the line buffer. If it is a SLP command,
;	  0547	! parse it. Then reformat it into the text buffer area to guarantee SLP
;	  0548	! command uniformity. Otherwise just copy it into the text buffer. Then read
;	  0549	! and copy into the text buffer until another SLP command appears in the line
;	  0550	! buffer.
;	  0551	!
;	  0552	
;	  0553	BUFFER_END = BUFFER[UPD_TEXT];		! init text pointer
;	  0554	

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  22
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6)

;	  0555	IF .RAB[RAB$W_RSZ] NEQ 0
;	  0556	AND (.(BUFFER[UPD_LINE])<0,8> EQL '-'	! look for SLP command
;	  0557	    OR .(BUFFER[UPD_LINE])<0,8> EQL '/')
;	  0558	THEN
;	  0559	    BEGIN
;	  0560	    CH$FILL (0, 24, START_LINE);
;	  0561	    TPARSE_BLOCK[TPA$V_BLANKS] = 0;
;	  0562	    TPARSE_BLOCK[TPA$L_STRINGCNT] = .RAB[RAB$W_RSZ];
;	  0563	    TPARSE_BLOCK[TPA$L_STRINGPTR] = .RAB[RAB$L_RBF];
;	  0564	    IF NOT LIB$TPARSE (TPARSE_BLOCK, SLP_TABLE, SLP_KEY)
;	  0565	    THEN ERR_EXIT (ERR_SLPSYNTAX, .RAB);
;	  0566	
;	  0567	    IF .START_LINE NEQ 0
;	  0568	    THEN
;	  0569		BEGIN
;	  0570		BUFFER[RANGE_TOP] = .START_LINE;
;	  0571		BUFFER[RANGE_END] = .END_LINE;
;	  0572		END;
;	  0573	    IF .AUDIT_STRING[0] NEQ 0
;	  0574	    THEN
;	  0575		BEGIN
;	  0576		BUFFER[AUDIT_LEN] = .AUDIT_STRING[0];
;	  0577		BUFFER[AUDIT_ADR] = BUFFER[AUDIT_TEXT];
;	  0578		CH$MOVE (.AUDIT_STRING[0], .AUDIT_STRING[1], BUFFER[AUDIT_TEXT]);
;	  0579		END;
;	  0580	    BUFFER[COMMENT_LEN] = .COMMENT_STRING[0];
;	  0581	    BUFFER[COMMENT_ADR] = BUFFER[COMMENT_TEXT];
;	  0582	    CH$MOVE (.COMMENT_STRING[0], .COMMENT_STRING[1], BUFFER[COMMENT_TEXT]);
;	  0583	
;	  0584	    C = FORMAT_COMMAND (BUFFER[RANGE_TOP], BUFFER[AUDIT_LEN], BUFFER[COMMENT_LEN], UPLIT (0, 0));
;	  0585	    CH$COPY (.C, OUT_LINE, 0, .C+1, .BUFFER_END);
;	  0586	    BUFFER_END = .BUFFER_END + .C + 1;
;	  0587	    END
;	  0588	
;	  0589	ELSE
;	  0590	    BEGIN
;	  0591	    CH$COPY (.RAB[RAB$W_RSZ], .RAB[RAB$L_RBF],
;	  0592		     0,
;	  0593		     .RAB[RAB$W_RSZ]+1, .BUFFER_END);
;	  0594	    BUFFER_END = .BUFFER_END + .RAB[RAB$W_RSZ] + 1;
;	  0595	    END;
;	  0596	
;	  0597	! The SLP end of edit command appears as a line number of -1. If this has
;	  0598	! happened, stop reading.
;	  0599	!
;	  0600	
;	  0601	IF .BUFFER[RANGE_TOP] EQL -1
;	  0602	THEN
;	  0603	    BEGIN
;	  0604	    BUFFER[UPD_SIZE] = 0;
;	  0605	    RETURN;
;	  0606	    END;
;	  0607	
;	  0608	! Now read records and copy into the text buffer until another SLP command
;	  0609	! shows up. Parse the SLP command. If has a non-null start line, quit. Else
;	  0610	! reformat the command, include it in the text, and continue processing.
;	  0611	!
;	  0612	

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  23
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6)

;	  0613	WHILE 1 DO
;	  0614	    BEGIN
;	  0615	    READ_LINE (.RAB);
;	  0616	    IF .RAB[RAB$W_RSZ] NEQ 0
;	  0617	    AND ((.(BUFFER[UPD_LINE])<0,8> EQL '-' ! look for SLP command
;	  0618		    AND (.BUFFER[RANGE_END] EQL 0
;	  0619			OR (.RAB[RAB$W_RSZ] GEQU 2
;	  0620			    AND .(BUFFER[UPD_LINE])<8,8> NEQ ',')))
;	  0621		OR .(BUFFER[UPD_LINE])<0,8> EQL '/')
;	  0622	    THEN
;	  0623		BEGIN
;	  0624		CH$FILL (0, 24, START_LINE);
;	  0625		TPARSE_BLOCK[TPA$V_BLANKS] = 0;
;	  0626		TPARSE_BLOCK[TPA$L_STRINGCNT] = .RAB[RAB$W_RSZ];
;	  0627		TPARSE_BLOCK[TPA$L_STRINGPTR] = .RAB[RAB$L_RBF];
;	  0628		IF NOT LIB$TPARSE (TPARSE_BLOCK, SLP_TABLE, SLP_KEY)
;	  0629		THEN ERR_EXIT (ERR_SLPSYNTAX, .RAB);
;	  0630		IF .START_LINE EQL 0
;	  0631		THEN
;	  0632		    BEGIN
;	  0633		    IF .AUDIT_STRING[0] EQL 0
;	  0634		    THEN
;	  0635			BEGIN
;	  0636			AUDIT_STRING[0] = .BUFFER[AUDIT_LEN];
;	  0637			AUDIT_STRING[1] = .BUFFER[AUDIT_ADR];
;	  0638			END;
;	  0639		    C = FORMAT_COMMAND (BUFFER[RANGE_TOP], BUFFER[AUDIT_LEN], BUFFER[COMMENT_LEN], UPLIT (0, 0));
;	  0640		    IF .BUFFER_END + .C + 1 GEQA BUFFER[UPD_TEXT] + 100000
;	  0641		    THEN ERR_EXIT (ERR_BUFFOVER);
;	  0642		    CH$COPY (.C, OUT_LINE, 0, .C+1, .BUFFER_END);
;	  0643		    BUFFER_END = .BUFFER_END + .C + 1;
;	  0644		    END
;	  0645	
;	  0646		ELSE
;	  0647		    BEGIN
;	  0648		    BUFFER[UPD_SIZE] = .BUFFER_END - BUFFER[UPD_TEXT];
;	  0649		    RETURN;
;	  0650		    END;
;	  0651		END
;	  0652	
;	  0653	    ELSE
;	  0654		BEGIN
;	  0655		IF .BUFFER_END + .RAB[RAB$W_RSZ] + 1 GEQA BUFFER[UPD_TEXT] + 100000
;	  0656		THEN ERR_EXIT (ERR_BUFFOVER);
;	  0657	
;	  0658		CH$COPY (.RAB[RAB$W_RSZ], .RAB[RAB$L_RBF],
;	  0659			 0,
;	  0660			 .RAB[RAB$W_RSZ]+1, .BUFFER_END);
;	  0661	 	BUFFER_END = .BUFFER_END + .RAB[RAB$W_RSZ] + 1;
;	  0662		END;
;	  0663	    END;
;	  0664	
;	  0665	END;					! end of routine GET_UPDATE



									  .PSECT  $PLIT$,NOWRT,NOEXE,2


EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  24
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6)

					00000000  00000000  00034 P.AAE:  .LONG   0, 0					      ;
					00000000  00000000  0003C P.AAF:  .LONG   0, 0					      ;



									  .PSECT  $CODE$,NOWRT,2

						       0FFC 00000 GET_UPDATE:
									  .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11	      ; 0497
				       56	08   AC  D0 00002 	  MOVL    BUFFER, R6				      ; 0553
					      01A8   C6  9F 00006 	  PUSHAB  424(R6)				      ;
				       57	     6E  D0 0000A 	  MOVL    (SP), BUFFER_END			      ;
				       59	04   AC  D0 0000D 	  MOVL    RAB, R9				      ; 0555
				       58	22   A9  3C 00011 	  MOVZWL  34(R9), R8				      ;
						     03  12 00015 	  BNEQ    2$					      ;
						   00D1  31 00017 1$:	  BRW     7$					      ;
				       2D	1C   A6  91 0001A 2$:	  CMPB    28(R6), #45				      ; 0556
						     06  13 0001E 	  BEQL    3$					      ;
				       2F	1C   A6  91 00020 	  CMPB    28(R6), #47				      ; 0557
						     F1  12 00024 	  BNEQ    1$					      ;
	   18	         00	       6E	     00  2C 00026 3$:	  MOVC5   #0, (SP), #0, #24, START_LINE		      ; 0560
					  00000000'  EF     0002B							      ;
			    00000000'  EF	     01  8A 00030 	  BICB2   #1, TPARSE_BLOCK+4			      ; 0561
			    00000000'  EF	     58  D0 00037 	  MOVL    R8, TPARSE_BLOCK+8			      ; 0562
			    00000000'  EF	28   A9  D0 0003E 	  MOVL    40(R9), TPARSE_BLOCK+12		      ; 0563
					  00000000V  EF  9F 00046 	  PUSHAB  SLP_KEY				      ; 0564
					  00000000V  EF  9F 0004C 	  PUSHAB  SLP_TABLE				      ;
					  00000000'  EF  9F 00052 	  PUSHAB  TPARSE_BLOCK				      ;
			    00000000G  EF	     03  FB 00058 	  CALLS   #3, LIB$TPARSE			      ;
				       0F	     50  E8 0005F 	  BLBS    R0, 4$				      ;
						     59  DD 00062 	  PUSHL   R9					      ; 0565
					  00450020   8F  DD 00064 	  PUSHL   #4522016				      ;
			    00000000G  00	     02  FB 0006A 	  CALLS   #2, LIB$STOP				      ;
				       50 00000000'  EF  D0 00071 4$:	  MOVL    START_LINE, R0			      ; 0567
						     0B  13 00078 	  BEQL    5$					      ;
				       66	     50  D0 0007A 	  MOVL    R0, (R6)				      ; 0570
				  04   A6 00000000'  EF  D0 0007D 	  MOVL    END_LINE, 4(R6)			      ; 0571
				       50 00000000'  EF  D0 00085 5$:	  MOVL    AUDIT_STRING, R0			      ; 0573
						     14  13 0008C 	  BEQL    6$					      ;
				  08   A6	     50  D0 0008E 	  MOVL    R0, 8(R6)				      ; 0576
				  0C   A6     00A0   C6  9E 00092 	  MOVAB   160(R6), 12(R6)			      ; 0577
		  00A0   C6 00000000'  FF	     50  28 00098 	  MOVC3   R0, @AUDIT_STRING+4, 160(R6)		      ; 0578
				  10   A6 00000000'  EF  D0 000A2 6$:	  MOVL    COMMENT_STRING, 16(R6)		      ; 0580
				  14   A6     0124   C6  9E 000AA 	  MOVAB   292(R6), 20(R6)			      ; 0581
		  0124   C6 00000000'  FF 00000000'  EF  28 000B0 	  MOVC3   COMMENT_STRING, @COMMENT_STRING+4, 292(R6)  ; 0582
					  00000000'  EF  9F 000BE 	  PUSHAB  P.AAE					      ; 0584
						10   A6  9F 000C4 	  PUSHAB  16(R6)				      ;
						08   A6  9F 000C7 	  PUSHAB  8(R6)					      ;
						     56  DD 000CA 	  PUSHL   R6					      ;
			    00000000V  EF	     04  FB 000CC 	  CALLS   #4, FORMAT_COMMAND			      ;
				       5A	     50  D0 000D3 	  MOVL    R0, C					      ;
				       50	01   AA  9E 000D6 	  MOVAB   1(R10), R0				      ; 0585
	   50	         00 00000000'  EF	     5A  2C 000DA 	  MOVC5   C, OUT_LINE, #0, R0, (BUFFER_END)	      ;
						     67     000E3							      ;
				       57	01 AA47  9E 000E4 	  MOVAB   1(C)[BUFFER_END], BUFFER_END		      ; 0586
						     10  11 000E9 	  BRB     8$					      ; 0555
				       50	01   A8  9E 000EB 7$:	  MOVAB   1(R8), R0				      ; 0593
	   50	         00	  28   B9	     58  2C 000EF 	  MOVC5   R8, @40(R9), #0, R0, (BUFFER_END)	      ; 0591

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  25
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6)

						     67     000F5							      ;
				       57	01 A847  9E 000F6 	  MOVAB   1(R8)[BUFFER_END], BUFFER_END		      ; 0594
			    FFFFFFFF   8F	     66  D1 000FB 8$:	  CMPL    (R6), #-1				      ; 0601
						     04  12 00102 	  BNEQ    9$					      ;
						18   A6  D4 00104 	  CLRL    24(R6)				      ; 0604
							 04 00107 	  RET     					      ; 0603
						     59  DD 00108 9$:	  PUSHL   R9					      ; 0615
			    00000000V  EF	     01  FB 0010A 	  CALLS   #1, READ_LINE				      ;
				       58	22   A9  3C 00111 	  MOVZWL  34(R9), R8				      ; 0616
						     03  12 00115 	  BNEQ    11$					      ;
						   00CB  31 00117 10$:	  BRW     18$					      ;
				       2D	1C   A6  91 0011A 11$:	  CMPB    28(R6), #45				      ; 0617
						     10  12 0011E 	  BNEQ    12$					      ;
						04   A6  D5 00120 	  TSTL    4(R6)					      ; 0618
						     11  13 00123 	  BEQL    13$					      ;
				       02	     58  B1 00125 	  CMPW    R8, #2				      ; 0619
						     06  1F 00128 	  BLSSU   12$					      ;
				       2C	1D   A6  91 0012A 	  CMPB    29(R6), #44				      ; 0620
						     06  12 0012E 	  BNEQ    13$					      ;
				       2F	1C   A6  91 00130 12$:	  CMPB    28(R6), #47				      ; 0621
						     E1  12 00134 	  BNEQ    10$					      ;
	   18	         00	       6E	     00  2C 00136 13$:	  MOVC5   #0, (SP), #0, #24, START_LINE		      ; 0624
					  00000000'  EF     0013B							      ;
			    00000000'  EF	     01  8A 00140 	  BICB2   #1, TPARSE_BLOCK+4			      ; 0625
			    00000000'  EF	     58  D0 00147 	  MOVL    R8, TPARSE_BLOCK+8			      ; 0626
			    00000000'  EF	28   A9  D0 0014E 	  MOVL    40(R9), TPARSE_BLOCK+12		      ; 0627
					  00000000V  EF  9F 00156 	  PUSHAB  SLP_KEY				      ; 0628
					  00000000V  EF  9F 0015C 	  PUSHAB  SLP_TABLE				      ;
					  00000000'  EF  9F 00162 	  PUSHAB  TPARSE_BLOCK				      ;
			    00000000G  EF	     03  FB 00168 	  CALLS   #3, LIB$TPARSE			      ;
				       0F	     50  E8 0016F 	  BLBS    R0, 14$				      ;
						     59  DD 00172 	  PUSHL   R9					      ; 0629
					  00450020   8F  DD 00174 	  PUSHL   #4522016				      ;
			    00000000G  00	     02  FB 0017A 	  CALLS   #2, LIB$STOP				      ;
					  00000000'  EF  D5 00181 14$:	  TSTL    START_LINE				      ; 0630
						     56  12 00187 	  BNEQ    17$					      ;
					  00000000'  EF  D5 00189 	  TSTL    AUDIT_STRING				      ; 0633
						     08  12 0018F 	  BNEQ    15$					      ;
			    00000000'  EF	08   A6  7D 00191 	  MOVQ    8(R6), AUDIT_STRING			      ; 0636
					  00000000'  EF  9F 00199 15$:	  PUSHAB  P.AAF					      ; 0639
						10   A6  9F 0019F 	  PUSHAB  16(R6)				      ;
						08   A6  9F 001A2 	  PUSHAB  8(R6)					      ;
						     56  DD 001A5 	  PUSHL   R6					      ;
			    00000000V  EF	     04  FB 001A7 	  CALLS   #4, FORMAT_COMMAND			      ;
				       5A	     50  D0 001AE 	  MOVL    R0, C					      ;
				       5B	01 AA47  9E 001B1 	  MOVAB   1(C)[BUFFER_END], R11			      ; 0640
				       50 00018848   E6  9E 001B6 	  MOVAB   100424(R6), R0			      ;
				       50	     5B  D1 001BD 	  CMPL    R11, R0				      ;
						     0D  1F 001C0 	  BLSSU   16$					      ;
					  00450028   8F  DD 001C2 	  PUSHL   #4522024				      ; 0641
			    00000000G  00	     01  FB 001C8 	  CALLS   #1, LIB$STOP				      ;
				       50	01   AA  9E 001CF 16$:	  MOVAB   1(R10), R0				      ; 0642
	   50	         00 00000000'  EF	     5A  2C 001D3 	  MOVC5   C, OUT_LINE, #0, R0, (BUFFER_END)	      ;
						     67     001DC							      ;
						     2F  11 001DD 	  BRB     20$					      ; 0643
		    18   A6	       57	     6E  C3 001DF 17$:	  SUBL3   (SP), BUFFER_END, 24(R6)		      ; 0648
							 04 001E4 	  RET     					      ; 0647
				       5B	01 A847  9E 001E5 18$:	  MOVAB   1(R8)[BUFFER_END], R11		      ; 0655

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  26
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6)

				       50 00018848   E6  9E 001EA 	  MOVAB   100424(R6), R0			      ;
				       50	     5B  D1 001F1 	  CMPL    R11, R0				      ;
						     0D  1F 001F4 	  BLSSU   19$					      ;
					  00450028   8F  DD 001F6 	  PUSHL   #4522024				      ; 0656
			    00000000G  00	     01  FB 001FC 	  CALLS   #1, LIB$STOP				      ;
				       50	01   A8  9E 00203 19$:	  MOVAB   1(R8), R0				      ; 0660
	   50	         00	  28   B9	     58  2C 00207 	  MOVC5   R8, @40(R9), #0, R0, (BUFFER_END)	      ; 0658
						     67     0020D							      ;
				       57	     5B  D0 0020E 20$:	  MOVL    R11, BUFFER_END			      ; 0661
						   FEF4  31 00211 	  BRW     9$					      ; 0613

; Routine Size:  532 bytes,    Routine Base:  $CODE$ + 0348



EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  27
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (7)

;	  0666	ROUTINE READ_LINE (RAB) : NOVALUE =
;	  0667	BEGIN
;	  0668	
;	  0669	!++
;	  0670	!
;	  0671	! Functional Description:
;	  0672	!
;	  0673	!	This routine reads the next line from the specified input file.
;	  0674	!
;	  0675	! Calling Sequence:
;	  0676	!	standard
;	  0677	!
;	  0678	! Input Parameters:
;	  0679	MAP
;	  0680		RAB		: REF $RAB_DECL; ! RAB to read with
;	  0681	!
;	  0682	! Implicit Inputs:
;	  0683	!	none
;	  0684	!
;	  0685	! Output Parameters:
;	  0686	!	none
;	  0687	!
;	  0688	! Implicit Outputs:
;	  0689	!	line buffer pointed to by RAB
;	  0690	!
;	  0691	! Routines Called:
;	  0692	!	SYS$GET
;	  0693	!
;	  0694	! Routine Value:
;	  0695	!	none
;	  0696	!
;	  0697	! Signals:
;	  0698	!	none
;	  0699	!
;	  0700	! Side Effects:
;	  0701	!	none
;	  0702	!
;	  0703	!--
;	  0704	
;	  0705	
;	  0706	! Just get the record and check for errors.
;	  0707	!
;	  0708	
;	  0709	IF NOT $GET (RAB = .RAB)
;	  0710	THEN ERR_EXIT (ERR_READIN, .RAB);
;	  0711	
;	  0712	END;					! end of routine READ_LINE



									  .EXTRN  SYS$GET

						       0000 00000 READ_LINE:
									  .WORD   Save nothing				      ; 0666
						04   AC  DD 00002 	  PUSHL   RAB					      ; 0709
			    00000000G  9F	     01  FB 00005 	  CALLS   #1, @#SYS$GET				      ;
				       10	     50  E8 0000C 	  BLBS    R0, 1$				      ;
						04   AC  DD 0000F 	  PUSHL   RAB					      ; 0710

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  28
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (7)

					  00450030   8F  DD 00012 	  PUSHL   #4522032				      ;
			    00000000G  00	     02  FB 00018 	  CALLS   #2, LIB$STOP				      ;
							 04 0001F 1$:	  RET     					      ; 0666

; Routine Size:  32 bytes,    Routine Base:  $CODE$ + 055C



EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  29
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (8)

;	  0713	ROUTINE FORMAT_COMMAND (RANGE, AUDIT, COMMENT1, COMMENT2) =
;	  0714	BEGIN
;	  0715	
;	  0716	!++
;	  0717	!
;	  0718	! Functional Description:
;	  0719	!
;	  0720	!	This routine formats a SLP command containing the given data.
;	  0721	!
;	  0722	! Calling Sequence:
;	  0723	!	standard
;	  0724	!
;	  0725	! Input Parameters:
;	  0726	MAP
;	  0727		RANGE		: REF VECTOR [2], ! start and end line numbers
;	  0728		AUDIT		: REF VECTOR [2], ! descriptor of audit trail string
;	  0729		COMMENT1	: REF VECTOR [2], ! descriptor of comment string
;	  0730		COMMENT2	: REF VECTOR [2]; ! descriptor of second comment string
;	  0731	!	COMMENT2 is optional and is concatenated if non-null
;	  0732	!
;	  0733	! Implicit Inputs:
;	  0734	!	OUTRAB		: $RAB_DECL;	! RAB of output file
;	  0735	!
;	  0736	! Output Parameters:
;	  0737	!	none
;	  0738	!
;	  0739	! Implicit Outputs:
;	  0740	!	OUT_LINE	: VECTOR [132, BYTE]; ! buffer to build output record
;	  0741	!
;	  0742	! Routines Called:
;	  0743	!	SYS$PUT
;	  0744	!
;	  0745	! Routine Value:
;	  0746	!	none
;	  0747	!
;	  0748	! Signals:
;	  0749	!	none
;	  0750	!
;	  0751	! Side Effects:
;	  0752	!	record written
;	  0753	!
;	  0754	!--
;	  0755	
;	  0756	LOCAL
;	  0757		C,				! character counter
;	  0758		FORMAT		: REF VECTOR [,BYTE], ! format string pointer
;	  0759		OUT_STRING	: VECTOR [2];	! descriptor for FAO output buffer
;	  0760	
;	  0761	!
;	  0762	! FAO control strings to generate SLP commands
;	  0763	!
;	  0764	BIND
;	  0765		NULL_CMD	= DESCRIPTOR ('-!+,!+,/!AS/'),
;	  0766		INSERT_CMD	= DESCRIPTOR ('-!UL,!+,/!AS/'),
;	  0767		REPLACE_CMD	= DESCRIPTOR ('-!UL,!UL,/!AS/');
;	  0768	
;	  0769	
;	  0770	! Select the appropriate format string according to the range values.

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  30
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (8)

;	  0771	!
;	  0772	
;	  0773	FORMAT = NULL_CMD;			! assume null
;	  0774	IF .RANGE[0] NEQ 0
;	  0775	THEN
;	  0776	    BEGIN
;	  0777	    FORMAT = INSERT_CMD;		! use insert
;	  0778	    IF .RANGE[1] NEQ 0
;	  0779	    THEN FORMAT = REPLACE_CMD;		! use replace
;	  0780	    END;
;	  0781	
;	  0782	! Now generate the SLP command with FAO
;	  0783	!
;	  0784	
;	  0785	OUT_STRING[0] = 132;			! buffer length
;	  0786	OUT_STRING[1] = OUT_LINE;		! buffer address
;	P 0787	$FAO (
;	P 0788		.FORMAT,
;	P 0789		OUT_STRING[0],
;	P 0790		OUT_STRING[0],
;	P 0791		.RANGE[0],
;	P 0792		.RANGE[1],
;	P 0793		AUDIT[0]
;	  0794		);
;	  0795	C = .OUT_STRING[0];
;	  0796	
;	  0797	! Append the comment strings, if any are present.
;	  0798	!
;	  0799	
;	  0800	IF .COMMENT1[0] NEQ 0
;	  0801	OR .COMMENT2[0] NEQ 0
;	  0802	THEN
;	  0803	    BEGIN
;	  0804	    (OUT_LINE[.C])<0,16> = '	; ';
;	  0805	    C = .C + 2;
;	  0806	
;	  0807	    IF .COMMENT1[0] NEQ 0
;	  0808	    THEN
;	  0809		BEGIN
;	  0810		CH$COPY (1, UPLIT BYTE (' '), .COMMENT1[0], .COMMENT1[1],
;	  0811			' ', 132-.C, OUT_LINE[.C]);
;	  0812		C = MINU (.C+.COMMENT1[0]+1, 132);
;	  0813		END;
;	  0814	
;	  0815	    IF .COMMENT2[0] NEQ 0
;	  0816	    THEN
;	  0817		BEGIN
;	  0818		CH$COPY (.COMMENT2[0], .COMMENT2[1], ' ', 132-.C, OUT_LINE[.C]);
;	  0819		C = MINU (.C+.COMMENT2[0], 132);
;	  0820		END;
;	  0821	    END;
;	  0822	
;	  0823	RETURN .C;
;	  0824	
;	  0825	END;					! end of routine FORMAT_COMMAND




EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  31
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (8)

									  .PSECT  $PLIT$,NOWRT,NOEXE,2

	    2F  53  41  21  2F  2C  2B  21  2C  2B  21  2D  00044 P.AAH:  .ASCII  \-!+,!+,/!AS/\			      ;
						  0000000C  00050 P.AAG:  .LONG   12					      ;
						  00000000' 00054 	  .ADDRESS P.AAH				      ;
	2F  53  41  21  2F  2C  2B  21  2C  4C  55  21  2D  00058 P.AAJ:  .ASCII  \-!UL,!+,/!AS/\			      ;
							    00065	  .BLKB   3
						  0000000D  00068 P.AAI:  .LONG   13					      ;
						  00000000' 0006C 	  .ADDRESS P.AAJ				      ;
    2F  53  41  21  2F  2C  4C  55  21  2C  4C  55  21  2D  00070 P.AAL:  .ASCII  \-!UL,!UL,/!AS/\			      ;
							    0007E	  .BLKB   2
						  0000000E  00080 P.AAK:  .LONG   14					      ;
						  00000000' 00084 	  .ADDRESS P.AAL				      ;
							20  00088 P.AAM:  .ASCII  \ \					      ;

								  NULL_CMD=	      P.AAG
								  INSERT_CMD=	      P.AAI
								  REPLACE_CMD=	      P.AAK


									  .PSECT  $CODE$,NOWRT,2

						       0FFC 00000 FORMAT_COMMAND:
									  .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11	      ; 0713
				       5B 00000000'  EF  9E 00002 	  MOVAB   OUT_LINE, R11				      ;
				       5E	     08  C2 00009 	  SUBL2   #8, SP				      ;
				       51 00000000'  EF  9E 0000C 	  MOVAB   NULL_CMD, FORMAT			      ; 0714
				       50	04   AC  D0 00013 	  MOVL    RANGE, R0				      ; 0774
						     60  D5 00017 	  TSTL    (R0)					      ;
						     13  13 00019 	  BEQL    1$					      ;
				       51 00000000'  EF  9E 0001B 	  MOVAB   INSERT_CMD, FORMAT			      ; 0776
						04   A0  D5 00022 	  TSTL    4(R0)					      ; 0778
						     07  13 00025 	  BEQL    1$					      ;
				       51 00000000'  EF  9E 00027 	  MOVAB   REPLACE_CMD, FORMAT			      ;
				       6E	84   8F  9A 0002E 1$:	  MOVZBL  #132, OUT_STRING			      ; 0785
				  04   AE	     6B  9E 00032 	  MOVAB   OUT_LINE, OUT_STRING+4		      ; 0786
						08   AC  DD 00036 	  PUSHL   AUDIT					      ; 0794
				       7E	     60  7D 00039 	  MOVQ    (R0), -(SP)				      ;
						0C   AE  9F 0003C 	  PUSHAB  OUT_STRING				      ;
						10   AE  9F 0003F 	  PUSHAB  OUT_STRING				      ;
						     51  DD 00042 	  PUSHL   FORMAT				      ;
			    00000000G  9F	     06  FB 00044 	  CALLS   #6, @#SYS$FAO				      ;
				       56	     6E  D0 0004B 	  MOVL    OUT_STRING, C				      ; 0795
				       57	0C   AC  D0 0004E 	  MOVL    COMMENT1, R7				      ; 0800
				       59	     67  D0 00052 	  MOVL    (R7), R9				      ;
						     50  D4 00055 	  CLRL    R0					      ;
						     59  D5 00057 	  TSTL    R9					      ;
						     04  13 00059 	  BEQL    2$					      ;
						     50  D6 0005B 	  INCL    R0					      ;
						     05  11 0005D 	  BRB     3$					      ;
						10   BC  D5 0005F 2$:	  TSTL    @COMMENT2				      ; 0801
						     72  13 00062 	  BEQL    8$					      ;
						   6B46  9F 00064 3$:	  PUSHAB  OUT_LINE[C]				      ; 0804
				       9E     3B09   8F  B0 00067 	  MOVW    #15113, @(SP)+			      ;
				       56	     02  C0 0006C 	  ADDL2   #2, C					      ; 0805
				       38	     50  E9 0006F 	  BLBC    R0, 6$				      ; 0807
		         58 00000084   8F	     56  C3 00072 	  SUBL3   C, #132, R8				      ; 0811
		         5A	       56	     5B  C1 0007A 	  ADDL3   R11, C, R10				      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  32
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (8)

	   58	         20 00000000'  EF	     01  2C 0007E 	  MOVC5   #1, P.AAM, #32, R8, (R10)		      ; 0810
						     6A     00087							      ;
						     0B  18 00088 	  BGEQ    4$					      ;
						     5A  D6 0008A 	  INCL    R10					      ;
						     58  D7 0008C 	  DECL    R8					      ;
	   58	         20	  04   B7	     59  2C 0008E 	  MOVC5   R9, @4(R7), #32, R8, (R10)		      ;
						     6A     00094							      ;
				       50	01 A946  9E 00095 4$:	  MOVAB   1(R9)[C], R0				      ; 0812
			    00000084   8F	     50  D1 0009A 	  CMPL    R0, #132				      ;
						     04  1B 000A1 	  BLEQU   5$					      ;
				       50	84   8F  9A 000A3 	  MOVZBL  #132, R0				      ;
				       56	     50  D0 000A7 5$:	  MOVL    R0, C					      ;
				       57	10   AC  D0 000AA 6$:	  MOVL    COMMENT2, R7				      ; 0815
						     67  D5 000AE 	  TSTL    (R7)					      ;
						     24  13 000B0 	  BEQL    8$					      ;
		         50 00000084   8F	     56  C3 000B2 	  SUBL3   C, #132, R0				      ; 0818
	   50	         20	  04   B7	     67  2C 000BA 	  MOVC5   (R7), @4(R7), #32, R0, OUT_LINE[C]	      ;
						   6B46     000C0							      ;
		         50	       56	     67  C1 000C2 	  ADDL3   (R7), C, R0				      ; 0819
			    00000084   8F	     50  D1 000C6 	  CMPL    R0, #132				      ;
						     04  1B 000CD 	  BLEQU   7$					      ;
				       50	84   8F  9A 000CF 	  MOVZBL  #132, R0				      ;
				       56	     50  D0 000D3 7$:	  MOVL    R0, C					      ;
				       50	     56  D0 000D6 8$:	  MOVL    C, R0					      ; 0714
							 04 000D9 	  RET     					      ; 0713

; Routine Size:  218 bytes,    Routine Base:  $CODE$ + 057C



EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  33
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (9)

;	  0826	ROUTINE OUTPUT_TEXT (SIZE, BUFFER) : NOVALUE =
;	  0827	BEGIN
;	  0828	
;	  0829	!++
;	  0830	!
;	  0831	! Functional Description:
;	  0832	!
;	  0833	!	This routine writes the contents of the indicated text buffer to
;	  0834	!	the output file. Lines of text are terminated with nulls.
;	  0835	!
;	  0836	! Calling Sequence:
;	  0837	!	standard
;	  0838	!
;	  0839	! Input Parameters:
;	  0840	MAP
;	  0841		SIZE,				! byte count of buffer
;	  0842		BUFFER		: REF VECTOR [,BYTE];
;	  0843	!
;	  0844	! Implicit Inputs:
;	  0845	MAP
;	  0846		OUTRAB		: $RAB_DECL;	! RAB for output file
;	  0847	!
;	  0848	! Output Parameters:
;	  0849	!	none
;	  0850	!
;	  0851	! Implicit Outputs:
;	  0852	!	none
;	  0853	!
;	  0854	! Routines Called:
;	  0855	!	WRITE_LINE;			! write line of text to output
;	  0856	!
;	  0857	! Routine Value:
;	  0858	!	none
;	  0859	!
;	  0860	! Signals:
;	  0861	!	none
;	  0862	!
;	  0863	! Side Effects:
;	  0864	!	records written
;	  0865	!
;	  0866	!--
;	  0867	
;	  0868	LOCAL
;	  0869		P,				! text pointer
;	  0870		P0;				! another text pointer
;	  0871	
;	  0872	
;	  0873	! Loop, scanning the text for line end markers. As each is found, write that
;	  0874	! line. Stop when the buffer has been scanned.
;	  0875	!
;	  0876	
;	  0877	P = .BUFFER;				! init pointer
;	  0878	UNTIL .P GEQA .BUFFER + .SIZE
;	  0879	DO
;	  0880	    BEGIN
;	  0881	    P0 = .P;				! mark start of current line
;	  0882	    P = CH$FIND_CH (.SIZE-(.P0-.BUFFER), .P0, 0);
;	  0883	    OUTRAB[RAB$W_RSZ] = .P - .P0;	! set record length

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  34
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (9)

;	  0884	    OUTRAB[RAB$L_RBF] = .P0;		! and record address
;	  0885	    WRITE_LINE (OUTRAB);
;	  0886	    P = .P + 1;				! eat the null
;	  0887	    END;
;	  0888	
;	  0889	END;					! end of routine OUTPUT_TEXT





						       003C 00000 OUTPUT_TEXT:
									  .WORD   Save R2,R3,R4,R5			      ; 0826
				       55 00000000'  EF  9E 00002 	  MOVAB   OUTRAB+34, R5				      ;
				       52	08   AC  D0 00009 	  MOVL    BUFFER, P				      ; 0877
		         54	  08   AC	04   AC  C1 0000D 	  ADDL3   SIZE, BUFFER, R4			      ; 0878
				       54	     52  D1 00013 1$:	  CMPL    P, R4					      ;
						     2D  1E 00016 	  BGEQU   3$					      ;
				       53	     52  D0 00018 	  MOVL    P, P0					      ; 0881
		         50	  08   AC	     53  C3 0001B 	  SUBL3   P0, BUFFER, R0			      ; 0882
				       50	04   AC  C0 00020 	  ADDL2   SIZE, R0				      ;
		         63	       50	     00  3A 00024 	  LOCC    #0, R0, (P0)				      ;
						     02  12 00028 	  BNEQ    2$					      ;
						     51  D4 0002A 	  CLRL    R1					      ;
				       52	     51  D0 0002C 2$:	  MOVL    R1, P					      ;
		         65	       52	     53  A3 0002F 	  SUBW3   P0, P, OUTRAB+34			      ; 0883
				  06   A5	     53  D0 00033 	  MOVL    P0, OUTRAB+40				      ; 0884
						DE   A5  9F 00037 	  PUSHAB  OUTRAB				      ; 0885
			    00000000V  EF	     01  FB 0003A 	  CALLS   #1, WRITE_LINE			      ;
						     52  D6 00041 	  INCL    P					      ; 0886
						     CE  11 00043 	  BRB     1$					      ; 0878
							 04 00045 3$:	  RET     					      ; 0826

; Routine Size:  70 bytes,    Routine Base:  $CODE$ + 0656



EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  35
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (10)

;	  0890	ROUTINE WRITE_LINE (RAB) : NOVALUE =
;	  0891	BEGIN
;	  0892	
;	  0893	!++
;	  0894	!
;	  0895	! Functional Description:
;	  0896	!
;	  0897	!	This routine writes the next line to the specified output file.
;	  0898	!
;	  0899	! Calling Sequence:
;	  0900	!	standard
;	  0901	!
;	  0902	! Input Parameters:
;	  0903	MAP
;	  0904		RAB		: REF $RAB_DECL; ! RAB to write with
;	  0905	!
;	  0906	! Implicit Inputs:
;	  0907	!	line buffer pointed to by RAB
;	  0908	!
;	  0909	! Output Parameters:
;	  0910	!	none
;	  0911	!
;	  0912	! Implicit Outputs:
;	  0913	!	none
;	  0914	!
;	  0915	! Routines Called:
;	  0916	!	SYS$PUT
;	  0917	!
;	  0918	! Routine Value:
;	  0919	!	none
;	  0920	!
;	  0921	! Signals:
;	  0922	!	none
;	  0923	!
;	  0924	! Side Effects:
;	  0925	!	none
;	  0926	!
;	  0927	!--
;	  0928	
;	  0929	
;	  0930	! Just put the record and check for errors.
;	  0931	!
;	  0932	
;	  0933	IF NOT $PUT (RAB = .RAB)
;	  0934	THEN ERR_EXIT (ERR_WRITEOUT, .RAB);
;	  0935	
;	  0936	END;					! end of routine WRITE_LINE



									  .EXTRN  SYS$PUT

						       0000 00000 WRITE_LINE:
									  .WORD   Save nothing				      ; 0890
						04   AC  DD 00002 	  PUSHL   RAB					      ; 0933
			    00000000G  9F	     01  FB 00005 	  CALLS   #1, @#SYS$PUT				      ;
				       10	     50  E8 0000C 	  BLBS    R0, 1$				      ;
						04   AC  DD 0000F 	  PUSHL   RAB					      ; 0934

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  36
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (10)

					  00450038   8F  DD 00012 	  PUSHL   #4522040				      ;
			    00000000G  00	     02  FB 00018 	  CALLS   #2, LIB$STOP				      ;
							 04 0001F 1$:	  RET     					      ; 0890

; Routine Size:  32 bytes,    Routine Base:  $CODE$ + 069C



EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  37
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (11)

;	  0937	ROUTINE HANDLER (SIGNAL, MECHANISM) =
;	  0938	BEGIN
;	  0939	
;	  0940	!++
;	  0941	!
;	  0942	! Functional Description:
;	  0943	!
;	  0944	!	This routine is the condition handler for the utility. It receives
;	  0945	!	a signal which is the error code of the message to print. If
;	  0946	!	a secondary signal argument is present, it is the FAB or RAB
;	  0947	!	address of the file in question, from which the file name and
;	  0948	!	error status will be output.
;	  0949	!
;	  0950	! Calling Sequence:
;	  0951	!	standard
;	  0952	!
;	  0953	! Input Parameters:
;	  0954	MAP
;	  0955		SIGNAL		: REF BLOCK [,BYTE], ! address of signal vector
;	  0956		MECHANISM	: REF BLOCK [,BYTE]; ! address of mechanism vector
;	  0957	!
;	  0958	! Implicit Inputs:
;	  0959	!	none
;	  0960	!
;	  0961	! Output Parameters:
;	  0962	!	none
;	  0963	!
;	  0964	! Implicit Outputs:
;	  0965	!	none
;	  0966	!
;	  0967	! Routines Called:
;	  0968	EXTERNAL ROUTINE
;	  0969		LIB$PUT_OUTPUT	: ADDRESSING_MODE (GENERAL),
;	  0970						! library output routine
;	  0971		LIB$SIGNAL	: ADDRESSING_MODE (GENERAL);
;	  0972						! library signal routine
;	  0973	!
;	  0974	! Routine Value:
;	  0975	!	SS$_RESIGNAL
;	  0976	!
;	  0977	! Signals:
;	  0978	!	none
;	  0979	!
;	  0980	! Side Effects:
;	  0981	!	stack unwound, control returned to caller of facility
;	  0982	!
;	  0983	!--
;	  0984	
;	  0985	LOCAL
;	  0986		C,				! string character count
;	  0987		P		: REF VECTOR [,BYTE], ! string pointer
;	  0988		STS,				! RMS status
;	  0989		STV,				! RMS status value
;	  0990		ERR_CODE	: BLOCK [4, BYTE], ! error code being signalled
;	  0991		MSG_DESC	: VECTOR [2],	! message text descriptor
;	  0992		MSG_BUFFER	: VECTOR [132, BYTE], ! message text buffer
;	  0993		FAB		: REF $FAB_DECL, ! local FAB pointer
;	  0994		NAM		: REF $NAM_DECL; ! local NAM pointer

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  38
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (11)

;	  0995	
;	  0996	
;	  0997	! Get the signal code. If it is a local error message, do error processing.
;	  0998	! Otherwise, just resignal the error.
;	  0999	!
;	  1000	
;	  1001	STS = 1;
;	  1002	ERR_CODE = .SIGNAL[CHF$L_SIG_NAME] - FAC_CODE^16;
;	  1003	IF .ERR_CODE[STS$V_FAC_NO] EQL 0
;	  1004	THEN
;	  1005	    BEGIN
;	  1006	    ERR_CODE = .ERR_CODE[STS$V_MSG_NO];
;	  1007	    P = .MESSAGE_TABLE[.ERR_CODE];
;	  1008	    MSG_DESC[0] = .(.P)<0,8>;
;	  1009	    MSG_DESC[1] = MSG_BUFFER;
;	  1010	    CH$MOVE (.(.P)<0,8>, .P+1, MSG_BUFFER);
;	  1011	
;	  1012	    IF .SIGNAL[CHF$L_SIG_ARGS] GEQU 4
;	  1013	    THEN
;	  1014		BEGIN
;	  1015		FAB = .SIGNAL[CHF$L_SIG_ARG1];
;	  1016		STS = .FAB[FAB$L_STS];
;	  1017		STV = .FAB[FAB$L_STV];
;	  1018		IF .FAB[FAB$B_BID] EQL RAB$C_BID
;	  1019		THEN FAB = .FAB[RAB$L_FAB];
;	  1020	
;	  1021		NAM = .FAB[FAB$L_NAM];
;	  1022		C = .NAM[NAM$B_RSL];
;	  1023		P = .NAM[NAM$L_RSA];
;	  1024		IF .C EQL 0
;	  1025		THEN
;	  1026		    BEGIN
;	  1027		    C = .NAM[NAM$B_ESL];
;	  1028		    P = .NAM[NAM$L_ESA];
;	  1029		    END;
;	  1030		IF .C EQL 0
;	  1031		THEN
;	  1032		    BEGIN
;	  1033		    C = .FAB[FAB$B_FNS];
;	  1034		    P = .FAB[FAB$L_FNA];
;	  1035		    END;
;	  1036	
;	  1037		CH$MOVE (.C, .P, .MSG_DESC[1] + .MSG_DESC[0]);
;	  1038		MSG_DESC[0] = .MSG_DESC[0] + .C;
;	  1039		END;
;	  1040	
;	  1041	    LIB$PUT_OUTPUT (MSG_DESC[0]);
;	  1042	
;	  1043	    IF NOT .STS
;	  1044	    THEN LIB$SIGNAL (.STS, .STV);
;	  1045	    MECHANISM[CHF$L_MCH_SAVR0] = STS$K_ERROR OR STS$M_INHIB_MSG;
;	  1046	    $UNWIND ();
;	  1047	    END;
;	  1048	
;	  1049	SS$_RESIGNAL
;	  1050	
;	  1051	END;					! end of routine HANDLER


EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  39
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (11)



									  .EXTRN  LIB$SIGNAL, SYS$UNWIND

						       03FC 00000 HANDLER:.WORD   Save R2,R3,R4,R5,R6,R7,R8,R9		      ; 0937
				       5E     FF74   CE  9E 00002 	  MOVAB   -140(SP), SP				      ;
				       58	     01  D0 00007 	  MOVL    #1, STS				      ; 1001
				       56	04   AC  D0 0000A 	  MOVL    SIGNAL, R6				      ; 1002
		         50	  04   A6 00450000   8F  C3 0000E 	  SUBL3   #4521984, 4(R6), ERR_CODE		      ;
	   00	         50	       0C	     10  ED 00017 	  CMPZV   #16, #12, ERR_CODE, #0		      ; 1003
						     03  13 0001C 	  BEQL    1$					      ;
						   0091  31 0001E 	  BRW     7$					      ;
	   50	         50	       0D	     03  EF 00021 1$:	  EXTZV   #3, #13, ERR_CODE, ERR_CODE		      ; 1006
				       57 00000000'EF40  D0 00026 	  MOVL    MESSAGE_TABLE[ERR_CODE], P		      ; 1007
				  F8   AD	     67  9A 0002E 	  MOVZBL  (P), MSG_DESC				      ; 1008
				  FC   AD	     6E  9E 00032 	  MOVAB   MSG_BUFFER, MSG_DESC+4		      ; 1009
				       50	     67  9A 00036 	  MOVZBL  (P), R0				      ; 1010
		         6E	  01   A7	     50  28 00039 	  MOVC3   R0, 1(P), MSG_BUFFER			      ;
				       04	     66  D1 0003E 	  CMPL    (R6), #4				      ; 1012
						     43  1F 00041 	  BLSSU   5$					      ;
				       50	08   A6  D0 00043 	  MOVL    8(R6), FAB				      ; 1015
				       58	08   A0  7D 00047 	  MOVQ    8(FAB), STS				      ; 1016
				       01	     60  91 0004B 	  CMPB    (FAB), #1				      ; 1018
						     04  12 0004E 	  BNEQ    2$					      ;
				       50	3C   A0  D0 00050 	  MOVL    60(FAB), FAB				      ; 1019
				       51	28   A0  D0 00054 2$:	  MOVL    40(FAB), NAM				      ; 1021
				       56	03   A1  9A 00058 	  MOVZBL  3(NAM), C				      ; 1022
				       57	04   A1  D0 0005C 	  MOVL    4(NAM), P				      ; 1023
						     56  D5 00060 	  TSTL    C					      ; 1024
						     08  12 00062 	  BNEQ    3$					      ;
				       56	0B   A1  9A 00064 	  MOVZBL  11(NAM), C				      ; 1027
				       57	0C   A1  D0 00068 	  MOVL    12(NAM), P				      ; 1028
						     56  D5 0006C 3$:	  TSTL    C					      ; 1030
						     08  12 0006E 	  BNEQ    4$					      ;
				       56	34   A0  9A 00070 	  MOVZBL  52(FAB), C				      ; 1033
				       57	2C   A0  D0 00074 	  MOVL    44(FAB), P				      ; 1034
		         50	  FC   AD	F8   AD  C1 00078 4$:	  ADDL3   MSG_DESC, MSG_DESC+4, R0		      ; 1037
		         60	       67	     56  28 0007E 	  MOVC3   C, (P), (R0)				      ;
				  F8   AD	     56  C0 00082 	  ADDL2   C, MSG_DESC				      ; 1038
						F8   AD  9F 00086 5$:	  PUSHAB  MSG_DESC				      ; 1041
			    00000000G  00	     01  FB 00089 	  CALLS   #1, LIB$PUT_OUTPUT			      ;
				       0A	     58  E8 00090 	  BLBS    STS, 6$				      ; 1043
				       7E	     58  7D 00093 	  MOVQ    STS, -(SP)				      ; 1044
			    00000000G  00	     02  FB 00096 	  CALLS   #2, LIB$SIGNAL			      ;
				       50	08   AC  D0 0009D 6$:	  MOVL    MECHANISM, R0				      ; 1045
				  0C   A0 10000002   8F  D0 000A1 	  MOVL    #268435458, 12(R0)			      ;
						     7E  7C 000A9 	  CLRQ    -(SP)					      ; 1046
			    00000000G  9F	     02  FB 000AB 	  CALLS   #2, @#SYS$UNWIND			      ;
				       50     0918   8F  3C 000B2 7$:	  MOVZWL  #2328, R0				      ; 0937
							 04 000B7 	  RET     					      ;

; Routine Size:  184 bytes,    Routine Base:  $CODE$ + 06BC



EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  40
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12)

;	  1052	!+
;	  1053	!
;	  1054	! TPARSE State Tables
;	  1055	!
;	  1056	!-
;	  1057	
;	  1058	!
;	  1059	! Parse command line
;	  1060	!
;	  1061	
;	  1062	$INIT_STATE (CMD_TABLE, CMD_KEY);
;	  1063	
;	P 1064	$STATE	(FIRST,
;	P 1065		((FILESPEC),,,,FILE1),
;	P 1066		((OPTION),FIRST)
;	  1067		);
;	  1068	
;	P 1069	$STATE	(,
;	P 1070		(TPA$_BLANK),
;	P 1071		((OPTION))
;	  1072		);
;	  1073	
;	P 1074	$STATE	(SECOND,
;	P 1075		((FILESPEC),,,,FILE2),
;	P 1076		((OPTION), SECOND)
;	  1077		);
;	  1078	
;	P 1079	$STATE	(LAST,
;	P 1080		((OPTION), LAST),
;	P 1081		(TPA$_EOS, TPA$_EXIT)
;	  1082		);
;	  1083	
;	P 1084	$STATE	(OPTION,
;	P 1085		(TPA$_BLANK),
;	P 1086		(TPA$_LAMBDA)
;	  1087		);
;	  1088	
;	P 1089	$STATE	(,
;	P 1090		('/')
;	  1091		);
;	  1092	
;	P 1093	$STATE	(,
;	P 1094		('OUTPUT')
;	  1095		);
;	  1096	
;	P 1097	$STATE	(,
;	P 1098		('='),
;	P 1099		(':')
;	  1100		);
;	  1101	
;	P 1102	$STATE	(,
;	P 1103		((FILESPEC),,,, OUTFILE)
;	  1104		);
;	  1105	
;	P 1106	$STATE	(,
;	P 1107		(TPA$_BLANK, TPA$_EXIT),
;	P 1108		(TPA$_LAMBDA, TPA$_EXIT)
;	  1109		);

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  41
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12)

;	  1110	
;	P 1111	$STATE	(FILESPEC,
;	P 1112		((FILESPECC))
;	  1113		);
;	  1114	
;	P 1115	$STATE	(FILESPEC1,
;	P 1116		((FILESPECC), FILESPEC1),
;	P 1117		(TPA$_LAMBDA, TPA$_EXIT)
;	  1118		);
;	  1119	
;	P 1120	$STATE	(FILESPECC,
;	P 1121		(TPA$_SYMBOL, TPA$_EXIT),
;	P 1122		((QUOTED), TPA$_EXIT),
;	P 1123		(':', TPA$_EXIT),
;	P 1124		('[', TPA$_EXIT),
;	P 1125		(']', TPA$_EXIT),
;	P 1126		('<', TPA$_EXIT),
;	P 1127		('>', TPA$_EXIT),
;	P 1128		('.', TPA$_EXIT),
;	P 1129		(';', TPA$_EXIT),
;	P 1130		('-', TPA$_EXIT)
;	  1131		);
;	  1132	
;	P 1133	$STATE	(QUOTED,
;	P 1134		('"')
;	  1135		);
;	  1136	
;	P 1137	$STATE	(QUOTED1,
;	P 1138		('"', TPA$_EXIT),
;	P 1139		(TPA$_ANY, QUOTED1)
;	  1140		);
;	  1141	
;	  1142	!
;	  1143	! Parse a SLP command
;	  1144	!
;	  1145	
;	  1146	$INIT_STATE (SLP_TABLE, SLP_KEY);
;	  1147	
;	P 1148	$STATE	(,
;	P 1149		('/', TPA$_EXIT,, -1, START_LINE),
;	P 1150		('-')
;	  1151		);
;	  1152	
;	P 1153	$STATE	(,
;	P 1154		(TPA$_DECIMAL,,,, START_LINE),
;	P 1155		(TPA$_LAMBDA)
;	  1156		);
;	  1157	
;	P 1158	$STATE	(,
;	P 1159		(','),
;	P 1160		(';', CHKCOMM),
;	P 1161		(TPA$_EOS, TPA$_EXIT)
;	  1162		);
;	  1163	
;	P 1164	$STATE	(,
;	P 1165		(TPA$_DECIMAL,,,, END_LINE),
;	P 1166		(TPA$_LAMBDA)
;	  1167		);

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  42
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12)

;	  1168	
;	P 1169	$STATE	(,
;	P 1170		(','),
;	P 1171		(';', CHKCOMM),
;	P 1172		(TPA$_EOS, TPA$_EXIT)
;	  1173		);
;	  1174	
;	P 1175	$STATE	(,
;	P 1176		('/'),
;	P 1177		(';', CHKCOMM),
;	P 1178		(TPA$_EOS, TPA$_EXIT)
;	  1179		);
;	  1180	
;	P 1181	$STATE	(,
;	P 1182		((AUDIT),,,, AUDIT_STRING)
;	  1183		);
;	  1184	
;	P 1185	$STATE	(,
;	P 1186		('/'),
;	P 1187		(TPA$_EOS, TPA$_EXIT)
;	  1188		);
;	  1189	
;	P 1190	$STATE	(,
;	P 1191		(';'),
;	P 1192		(TPA$_EOS, TPA$_EXIT)
;	  1193		);
;	  1194	
;	P 1195	$STATE	(CHKCOMM,
;	P 1196		((COMMENT),,,, COMMENT_STRING),
;	P 1197		(TPA$_EOS, TPA$_EXIT)
;	  1198		);
;	  1199	
;	P 1200	$STATE	(,
;	P 1201		(TPA$_EOS, TPA$_EXIT)
;	  1202		);
;	  1203	
;	P 1204	$STATE	(AUDIT,
;	P 1205		((AUDITC), AUDIT),
;	P 1206		(TPA$_LAMBDA, TPA$_EXIT)
;	  1207		);
;	  1208	
;	P 1209	$STATE	(AUDITC,
;	P 1210		('/', TPA$_FAIL),
;	P 1211		(TPA$_ANY, TPA$_EXIT)
;	  1212		);
;	  1213	
;	P 1214	$STATE	(COMMENT,
;	P 1215		(TPA$_ANY, COMMENT),
;	P 1216		(TPA$_EOS, TPA$_EXIT)
;	  1217		);
;	  1218	
;	  1219	END
;	  1220	ELUDOM



									  .PSECT  _LIB$KEY1$,NOWRT,  SHR,  PIC,0


EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  43
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12)

							    00000 ;TPA$KEYST0
								  U.43:   .BLKB   0
				    54  55  50  54  55  4F  00000 U.45:   .ASCII  \OUTPUT\				      ;
							FF  00006 	  .BYTE   -1					      ;
							FF  00007 U.47:   .BYTE   -1					      ;

									  .PSECT  _LIB$STATE$,NOWRT,  SHR,  PIC,0

							    00000 CMD_TABLE::
									  .BLKB   0
							    00000 FIRST:  .BLKB   0
						      49F8  00000 U.18:   .WORD   18936					      ;
						      0000* 00002 U.20:   .WORD   <<U.19-U.20>-2>			      ;
						  00000000* 00004 U.21:   .LONG   <<FILE1-U.21>-4>			      ;
						      1DF8  00008 U.22:   .WORD   7672					      ;
						      0000* 0000A U.24:   .WORD   <<U.23-U.24>-2>			      ;
						      0000* 0000C U.25:   .WORD   <<FIRST-U.25>-2>			      ;
						      01F2  0000E U.26:   .WORD   498					      ;
						      0DF8  00010 U.27:   .WORD   3576					      ;
						      0000* 00012 U.28:   .WORD   <<U.23-U.28>-2>			      ;
							    00014 SECOND: .BLKB   0
						      49F8  00014 U.29:   .WORD   18936					      ;
						      0000* 00016 U.30:   .WORD   <<U.19-U.30>-2>			      ;
						  00000000* 00018 U.31:   .LONG   <<FILE2-U.31>-4>			      ;
						      1DF8  0001C U.32:   .WORD   7672					      ;
						      0000* 0001E U.33:   .WORD   <<U.23-U.33>-2>			      ;
						      0000* 00020 U.34:   .WORD   <<SECOND-U.34>-2>			      ;
							    00022 LAST:   .BLKB   0
						      19F8  00022 U.35:   .WORD   6648					      ;
						      0000* 00024 U.36:   .WORD   <<U.23-U.36>-2>			      ;
						      0000* 00026 U.37:   .WORD   <<LAST-U.37>-2>			      ;
						      15F7  00028 U.38:   .WORD   5623					      ;
						      FFFF  0002A U.39:   .WORD   -1					      ;
							    0002C ;OPTION
								  U.23:   .BLKB   0
						      01F2  0002C U.40:   .WORD   498					      ;
						      05F6  0002E U.41:   .WORD   1526					      ;
						      042F  00030 U.42:   .WORD   1071					      ;
						      0500  00032 U.46:   .WORD   1280					      ;
						      003D  00034 U.48:   .WORD   61					      ;
						      043A  00036 U.49:   .WORD   1082					      ;
						      4DF8  00038 U.50:   .WORD   19960					      ;
						      0000* 0003A U.51:   .WORD   <<U.19-U.51>-2>			      ;
						  00000000* 0003C U.52:   .LONG   <<OUTFILE-U.52>-4>			      ;
						      11F2  00040 U.53:   .WORD   4594					      ;
						      FFFF  00042 U.54:   .WORD   -1					      ;
						      15F6  00044 U.55:   .WORD   5622					      ;
						      FFFF  00046 U.56:   .WORD   -1					      ;
							    00048 ;FILESPEC
								  U.19:   .BLKB   0
						      0DF8  00048 U.57:   .WORD   3576					      ;
						      0000* 0004A U.59:   .WORD   <<U.58-U.59>-2>			      ;
							    0004C FILESPEC1:
									  .BLKB   0
						      19F8  0004C U.60:   .WORD   6648					      ;
						      0000* 0004E U.61:   .WORD   <<U.58-U.61>-2>			      ;
						      0000* 00050 U.62:   .WORD   <<FILESPEC1-U.62>-2>			      ;
						      15F6  00052 U.63:   .WORD   5622					      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  44
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12)

						      FFFF  00054 U.64:   .WORD   -1					      ;
							    00056 ;FILESPECC
								  U.58:   .BLKB   0
						      11F1  00056 U.65:   .WORD   4593					      ;
						      FFFF  00058 U.66:   .WORD   -1					      ;
						      19F8  0005A U.67:   .WORD   6648					      ;
						      0000* 0005C U.69:   .WORD   <<U.68-U.69>-2>			      ;
						      FFFF  0005E U.70:   .WORD   -1					      ;
						      103A  00060 U.71:   .WORD   4154					      ;
						      FFFF  00062 U.72:   .WORD   -1					      ;
						      105B  00064 U.73:   .WORD   4187					      ;
						      FFFF  00066 U.74:   .WORD   -1					      ;
						      105D  00068 U.75:   .WORD   4189					      ;
						      FFFF  0006A U.76:   .WORD   -1					      ;
						      103C  0006C U.77:   .WORD   4156					      ;
						      FFFF  0006E U.78:   .WORD   -1					      ;
						      103E  00070 U.79:   .WORD   4158					      ;
						      FFFF  00072 U.80:   .WORD   -1					      ;
						      102E  00074 U.81:   .WORD   4142					      ;
						      FFFF  00076 U.82:   .WORD   -1					      ;
						      103B  00078 U.83:   .WORD   4155					      ;
						      FFFF  0007A U.84:   .WORD   -1					      ;
						      142D  0007C U.85:   .WORD   5165					      ;
						      FFFF  0007E U.86:   .WORD   -1					      ;
							    00080 ;QUOTED
								  U.68:   .BLKB   0
						      0422  00080 U.87:   .WORD   1058					      ;
							    00082 QUOTED1:.BLKB   0
						      1022  00082 U.88:   .WORD   4130					      ;
						      FFFF  00084 U.89:   .WORD   -1					      ;
						      15ED  00086 U.90:   .WORD   5613					      ;
						      0000* 00088 U.91:   .WORD   <<QUOTED1-U.91>-2>			      ;
							    0008A	  .BLKB   2
							    0008C SLP_TABLE::
									  .BLKB   0
						      702F  0008C U.93:   .WORD   28719					      ;
						  00000000* 0008E U.94:   .LONG   <<START_LINE-U.94>-4>			      ;
						  FFFFFFFF  00092 U.95:   .LONG   -1					      ;
						      FFFF  00096 U.96:   .WORD   -1					      ;
						      042D  00098 U.97:   .WORD   1069					      ;
						      41F3  0009A U.98:   .WORD   16883					      ;
						  00000000* 0009C U.99:   .LONG   <<START_LINE-U.99>-4>			      ;
						      05F6  000A0 U.100:  .WORD   1526					      ;
						      002C  000A2 U.101:  .WORD   44					      ;
						      103B  000A4 U.102:  .WORD   4155					      ;
						      0000* 000A6 U.104:  .WORD   <<U.103-U.104>-2>			      ;
						      15F7  000A8 U.105:  .WORD   5623					      ;
						      FFFF  000AA U.106:  .WORD   -1					      ;
						      41F3  000AC U.107:  .WORD   16883					      ;
						  00000000* 000AE U.108:  .LONG   <<END_LINE-U.108>-4>			      ;
						      05F6  000B2 U.109:  .WORD   1526					      ;
						      002C  000B4 U.110:  .WORD   44					      ;
						      103B  000B6 U.111:  .WORD   4155					      ;
						      0000* 000B8 U.112:  .WORD   <<U.103-U.112>-2>			      ;
						      15F7  000BA U.113:  .WORD   5623					      ;
						      FFFF  000BC U.114:  .WORD   -1					      ;
						      002F  000BE U.115:  .WORD   47					      ;
						      103B  000C0 U.116:  .WORD   4155					      ;

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  45
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12)

						      0000* 000C2 U.117:  .WORD   <<U.103-U.117>-2>			      ;
						      15F7  000C4 U.118:  .WORD   5623					      ;
						      FFFF  000C6 U.119:  .WORD   -1					      ;
						      4DF8  000C8 U.120:  .WORD   19960					      ;
						      0000* 000CA U.122:  .WORD   <<U.121-U.122>-2>			      ;
						  00000000* 000CC U.123:  .LONG   <<AUDIT_STRING-U.123>-4>		      ;
						      002F  000D0 U.124:  .WORD   47					      ;
						      15F7  000D2 U.125:  .WORD   5623					      ;
						      FFFF  000D4 U.126:  .WORD   -1					      ;
						      003B  000D6 U.127:  .WORD   59					      ;
						      15F7  000D8 U.128:  .WORD   5623					      ;
						      FFFF  000DA U.129:  .WORD   -1					      ;
							    000DC ;CHKCOMM
								  U.103:  .BLKB   0
						      49F8  000DC U.130:  .WORD   18936					      ;
						      0000* 000DE U.132:  .WORD   <<U.131-U.132>-2>			      ;
						  00000000* 000E0 U.133:  .LONG   <<COMMENT_STRING-U.133>-4>		      ;
						      15F7  000E4 U.134:  .WORD   5623					      ;
						      FFFF  000E6 U.135:  .WORD   -1					      ;
						      15F7  000E8 U.136:  .WORD   5623					      ;
						      FFFF  000EA U.137:  .WORD   -1					      ;
							    000EC ;AUDIT
								  U.121:  .BLKB   0
						      19F8  000EC U.138:  .WORD   6648					      ;
						      0000* 000EE U.140:  .WORD   <<U.139-U.140>-2>			      ;
						      0000* 000F0 U.141:  .WORD   <<U.121-U.141>-2>			      ;
						      15F6  000F2 U.142:  .WORD   5622					      ;
						      FFFF  000F4 U.143:  .WORD   -1					      ;
							    000F6 ;AUDITC
								  U.139:  .BLKB   0
						      102F  000F6 U.144:  .WORD   4143					      ;
						      FFFE  000F8 U.145:  .WORD   -2					      ;
						      15ED  000FA U.146:  .WORD   5613					      ;
						      FFFF  000FC U.147:  .WORD   -1					      ;
							    000FE ;COMMENT
								  U.131:  .BLKB   0
						      11ED  000FE U.148:  .WORD   4589					      ;
						      0000* 00100 U.149:  .WORD   <<U.131-U.149>-2>			      ;
						      15F7  00102 U.150:  .WORD   5623					      ;
						      FFFF  00104 U.151:  .WORD   -1					      ;

									  .PSECT  _LIB$KEY0$,NOWRT,  SHR,  PIC,1

							    00000 CMD_KEY::
									  .BLKB   0
							    00000 ;TPA$KEY0
								  U.17:   .BLKB   0
						      0000* 00000 U.44:   .WORD   <U.43-U.17>				      ;
							    00002	  .BLKB   2
							    00004 SLP_KEY::
									  .BLKB   0
							    00004 ;TPA$KEY0
								  U.92:   .BLKB   0


									  .EXTRN  LIB$STOP

;				       PSECT SUMMARY

EXTRACT								31-Oct-1980 18:33:57	VAX-11 Bliss-32 V2-622		    Page  46
X0001D								22-Oct-1979 16:42:17	_DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12)

;
;	Name			 Bytes			       Attributes
;
;  $OWN$			   202240       ,  WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)
;  $PLIT$			      137       ,NOWRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)
;  $MSG_TEXT			      218       ,NOWRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(0)
;  $MSG_INDEX			       32       ,NOWRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)
;  $CODE$			     1908       ,NOWRT,  RD ,  EXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)
;  _LIB$KEY0$			        4       ,NOWRT,  RD ,  EXE,  SHR,  LCL,  REL,  CON,  PIC,ALIGN(1)
;  _LIB$STATE$			      262       ,NOWRT,  RD ,  EXE,  SHR,  LCL,  REL,  CON,  PIC,ALIGN(0)
;  _LIB$KEY1$			        8       ,NOWRT,  RD ,  EXE,  SHR,  LCL,  REL,  CON,  PIC,ALIGN(0)




;				LIBRARY STATISTICS
;
;					     -------- Symbols --------    Blocks
;	File				     Total    Loaded   Percent      Read
;
;  _DRA1:[SYSLIB]STARLET.L32;1		      3893        67         1       198
;  _DRA1:[SYSLIB]CLIMAC.L32;1		        14         2        14         5
;  _DRA1:[SYSLIB]TPAMAC.L32;1		        39        29        74        27







;					COMMAND QUALIFIERS

;	BLISS /LIS EXTRACT

; Size:		1908 code + 202901 data bytes
; Run Time:	00:57.2
; Elapsed Time:	01:41.5
; Memory Used:	315 pages
; Compilation Complete
