

; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 1

; Digital Equipment Corporation

;

;	0001	MODULE copycli (   ! Declarations of CLI data structures for the COPY command

;	0002	                    LANGUAGE (BLISS32),

;	0003	                    IDENT = 'X00001'

;	0004	                    ) =

;	0005	BEGIN

;	0006	

;	0007	!

;	0008	! Copyright (c) 1978

;	0009	! Digital Equipment Corporation, Maynard, Massachusetts 01754

;	0010	!

;	0011	! This software is furnished  under a license for use only on a single

;	0012	! computer  system and  may be  copied only with  the inclusion of the

;	0013	! above copyright notice.  This software, or any other copies thereof,

;	0014	! may not be provided or  otherwise made available to any other person

;	0015	! except for use on such system and to one who agrees to these license

;	0016	! terms.  Title to and  ownership of the  software  shall at all times

;	0017	! remain in DEC.

;	0018	!

;	0019	! The information in this software is subject to change without notice

;	0020	! and should  not be construed  as a commitment  by Digital  Equipment

;	0021	! Corporation.

;	0022	!

;	0023	! DEC assumes  no  responsibility  for  the use or  reliability of its

;	0024	! software on equipment which is not supplied by DEC.

;	0025	

;	0026	!++

;	0027	! FACILITY:	File Handling Utilities

;	0028	!

;	0029	! ABSTRACT:

;	0030	!

;	0031	!	This module contains declarations of the RMS data storage areas needed

;	0032	!	for handling input file specifications.

;	0033	!

;	0034	! ENVIRONMENT:

;	0035	!

;	0036	!	VAX/VMS operating system, unprivileged user mode utility,

;	0037	!	operates at non-AST level.

;	0038	!

;	0039	!--

;	0040	!++

;	0041	!

;	0042	! AUTHOR:	Carol Peters,	CREATION DATE:	28 April 1978 07:36

;	0043	!

;	0044	! REVISION HISTORY:

;	0045	!

;	0046	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 2

; Digital Equipment Corporation

;

;	0047	!

;	0048	! Table of contents

;	0049	!

;	0050	

;	0051	FORWARD ROUTINE

;	0052	    get_cmd_qual	: NOVALUE,			! Retrieve command level qualifiers from CLI

;	0053	    cli_error		: NOVALUE,			! CLI error routine

;	0054	    align_parse		: NOVALUE,			! Parse routine for /ALIGNMENT qualifier

;	0055	    numeric_parse	: NOVALUE,			! Parse routine for qualifier numeric value

;	0056	    protect_parse	: NOVALUE;			! Parse routine for /PROTECTION qualifier

;	0057	

;	0058	!

;	0059	! Include files

;	0060	!

;	0061	

;	0062	LIBRARY 'SYS$LIBRARY:STARLET.L32';			! Common system definitions

;	0063	

;	0064	LIBRARY 'SYS$LIBRARY:CLIMAC.L32';			! CLI definitions

;	0065	

;	0066	REQUIRE 'SRC$:COPY.REQ';				! Definitions for the COPY utility

;	0281	

;	0282	REQUIRE 'SRC$:COPYMSG.REQ';				! Put message macros

;	0330	

;	0331	!

;	0332	! External declarations

;	0333	!

;	0334	

;	0335	EXTERNAL

;	0336	

;	0337	!

;	0338	! RMS definition

;	0339	!

;	0340	

;	0341	    infile_xaball	: BLOCK [, BYTE],		! XABALL block associated with input file

;	0342	

;	0343	!

;	0344	! Parsing keyword tables

;	0345	!

;	0346	

;	0347	    copy$align_keys,					! Alignment keyword table

;	0348	    copy$prot_keys,					! Protection keyword table

;	0349	    copy$prot_value;					! Protection keyword value table

;	0350	

;	0351	EXTERNAL ROUTINE

;	0352	    lib$lookup_key;					! Library keyword lookup routine



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 3

; Digital Equipment Corporation

;

;	0353	!

;	0354	! Global variables

;	0355	!

;	0356	

;	0357	GLOBAL

;	0358	

;	0359	!

;	0360	! The following variables hold qualifier and option values gathered during the CLI processing.

;	0361	!

;	0362	

;	0363	    align_type		: BYTE,				! Output file alignment type

;	0364	    align_option	: BYTE,				! Output file alignment type

;	0365	    align_location,					! Output file location value

;	0366	    alloc_value,					! Binary allocation value

;	0367	    extension_value,					! Binary extension value

;	0368	    file_max_value,					! Binary file maximum value

;	0369	    protect_and		: WORD INITIAL (-1),		! Protection value AND mask

;	0370	    protect_or		: WORD INITIAL (0),		! Protection value OR mask

;	0371	

;	0372	

;	0373	!

;	0374	! CLI Control blocks and work areas used by both the COPY and the APPEND commands.

;	0375	!

;	0376	

;	0377	    initial_desc:					! CLI initialization descriptor:

;	0378			$CLIREQDESC (rqtype = initprs,		!    Initialization indicator

;     P 0379				     rqflgs = absadr,		!    Absolute address indicator

;     P 0380				     erract = cli_error),	!    Address of error action routine

;	0381	

;	0382	    cmd_name_desc:					! Command line request descriptor:

;	0383			$CLIREQDESC (rqtype = getcmd,		!    Command-line (i.e., name) indicator

;     P 0384				     rqflgs = absadr,		!    Absolute address indicator

;     P 0385				     erract = cli_error),	!    Address of error action routine

;	0386	

;	0387	    cmd_desc:						! Command qualifiers request descriptor:

;	0388			$CLIREQDESC (rqtype = getqual,		!    Command-level qualifiers request

;     P 0389				     rqflgs = absadr,		!    Absolute address indicator

;     P 0390				     erract = cli_error,	!    Address of error action routine

;     P 0391				     qualst = 0),		!    Address of qualifier descriptors

;	0392								!    supplied at execution time.

;	0393	

;	0394	    infile_desc:					! Input file request descriptor:

;	0395			$CLIREQDESC (rqtype = input1,		!    Primary input indicator

;     P 0396				     rqflgs = absadr,		!    Absolute address indicator

;     P 0397				     erract = cli_error,	!    Address of error action routine

;     P 0398				     qualst = 0),		!    Address of qualifier descriptors

;	0399								!    supplied at execution time.

;	0400	

;	0401	    outfile_desc:  					! Output file request descriptor:

;	0402			$CLIREQDESC (rqtype = output1,		!    Primary output indicator

;     P 0403				     rqflgs = absadr,		!    Absolute address indicator

;     P 0404				     erract = cli_error,	!    Address of error action routine

;     P 0405				     qualst = 0),		!    Address of qualifier descriptors

;	0406								!    supplied at execution time.

;	0407	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 3-1

; Digital Equipment Corporation

;

;	0408	    cleanup_desc:					! Parameter "cleanup" request descriptor:

;	0409			$CLIREQDESC (rqtype = endprm1,		!    Parameter cleanup indicator

;     P 0410				     rqflgs = absadr,		!    Absolute address indicator

;     P 0411				     erract = cli_error),	!    CLI error action routine

;	0412	

;	0413	    numb_parse_desc:					! Decimal value parse request descriptor:

;	0414			$CLIREQDESC (rqtype = numerval,		!    Numeric value parse indicator

;     P 0415				     rqflgs = <absadr>,		!    Single value and absolute address indicators

;     P 0416				     erract = cli_error),	!    Address of error action routine

;	0417	

;	0418	    str_parse_desc:					! ASCII string value parse request descriptor:

;	0419			$CLIREQDESC (rqtype = asciival,		!    ASCII string value parse indicator

;     P 0420				     rqflgs = absadr,		!    Absolute address indicator

;     P 0421				     erract = cli_error),	!    Address of error action routine

;	0422	

;	0423	    cli_work_area:  VECTOR [cli$c_workarea, BYTE];	! CLI work area



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 4

; Digital Equipment Corporation

;

;	0424	!

;	0425	! COPY-specific Command Language Interpreter control Blocks

;	0426	!

;	0427	

;	0428	    $CLIQUALCODES (copy,				! Define the COPY qualifier codes

;     P 0429	                    alignment,

;     P 0430	                    allocation,

;     P 0431	                    concatenate,

;     P 0432	                    contiguous,

;     P 0433	                    extension,

;     P 0434	                    file_maximum,

;     P 0435	                    log,

;     P 0436	                    overlay,

;     P 0437	                    protection,

;     P 0438	                    read_check,

;     P 0439	                    replace,

;     P 0440	                    truncate,

;     P 0441	                    write_check);

;	0442	

;	0443	!

;	0444	! Command Qualifier Descriptors

;	0445	!

;	0446	

;	0447	GLOBAL

;	0448	    copy_conc_qual:					! concatenate qualifier

;	0449			$CLIQUALDESC (qdcode = concatenate,

;     P 0450				      setlst = concatenate_bit),

;	0451	

;	0452	    copy_log_qual:					!    log qualifier

;	0453			$CLIQUALDESC (qdcode = log,

;     P 0454				      setlst = log_msg_bit),

;	0455	

;	0456	    copy_qual_end:					! End of command qualifier descriptors

;	0457			$CLIQUALEND,

;	0458	

;	0459	!

;	0460	! Input file Qualifier Descriptors

;	0461	!

;	0462	

;	0463	    copy_iread_qual:					! read_check qualifier

;	0464			$CLIQUALDESC (qdcode = read_check,

;     P 0465				      setlst = iread_check_bit),

;	0466	

;	0467	    copy_iqual_end:					! End of input file qualifier descriptors

;	0468			$CLIQUALEND,

;	0469	

;	0470	!

;	0471	! Output file qualifier descriptors

;	0472	!

;	0473	

;	0474	    copy_alig_qual:					! alignment qualifier

;	0475			$CLIQUALDESC (qdcode = alignment,

;     P 0476				      truact = align_parse,		!    Address of value parse routine

;     P 0477				      setlst = alignment_bit),

;	0478	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 4-1

; Digital Equipment Corporation

;

;	0479	    copy_allo_qual:					! allocation qualifier

;	0480			$CLIQUALDESC (qdcode = allocation,

;     P 0481				      truact = numeric_parse,		!    Address of value parse routine

;     P 0482				      usrval = alloc_value,		!    Address of allocation value deposit area

;     P 0483				      setlst = allocation_bit),

;	0484	

;	0485	    copy_cont_qual:					! contiguous qualifier

;	0486			$CLIQUALDESC (qdcode = contiguous,

;     P 0487				      setlst = contiguous_bit),

;	0488	

;	0489	    copy_exte_qual:					! extension qualifier

;	0490			$CLIQUALDESC (qdcode = extension,

;     P 0491				      truact = numeric_parse,		!    Address of value parse routine

;     P 0492				      usrval = extension_value,	!    Address of extension value deposit area

;     P 0493				      setlst = extension_bit),

;	0494	

;	0495	    copy_file_qual:					! file_maximum qualifier

;	0496			$CLIQUALDESC (qdcode = file_maximum,

;     P 0497				      truact = numeric_parse,		!    Address of value parse routine

;     P 0498				      usrval = file_max_value,	!    Address of file maximum value deposit area

;     P 0499				      setlst = file_max_bit),

;	0500	

;	0501	    copy_over_qual:					! overlay qualifier

;	0502			$CLIQUALDESC (qdcode = overlay,

;     P 0503				      setlst = overlay_bit),

;	0504	

;	0505	    copy_prot_qual:					! protection qualifier

;	0506			$CLIQUALDESC (qdcode = protection,

;     P 0507				      truact = protect_parse,		!    Address of value parse routine

;     P 0508				      setlst = protection_bit),

;	0509	

;	0510	    copy_oread_qual:					! read_check qualifier

;	0511			$CLIQUALDESC (qdcode = read_check,

;     P 0512				      setlst = oread_check_bit),

;	0513	

;	0514	    copy_repl_qual:					! replace qualifier

;	0515			$CLIQUALDESC (qdcode = replace,

;     P 0516				      setlst = replace_bit),

;	0517	

;	0518	    copy_trun_qual:					! truncate files at EOF mark

;	0519			$CLIQUALDESC (qdcode = truncate,

;     P 0520				      setlst = truncate_bit),

;	0521	

;	0522	    copy_writ_qual:					! write_check qualifier

;	0523			$CLIQUALDESC (qdcode = write_check,

;     P 0524				      setlst = write_check_bit),

;	0525	

;	0526	    copy_oqual_end:					! End of output file qualifier descriptors

;	0527			$CLIQUALEND;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 5

; Digital Equipment Corporation

;

;	0528	!

;	0529	! APPEND-specific Command Language Interpreter control Blocks

;	0530	!

;	0531	

;	0532	    $CLIQUALCODES (append,				! Define the append qualifier codes

;     P 0533				alignment,

;     P 0534				allocation,

;     P 0535				contiguous,

;     P 0536				extension,

;     P 0537				file_maximum,

;     P 0538				log,

;     P 0539				new_,

;     P 0540				protection,

;     P 0541				read_check,

;     P 0542				write_check);

;	0543	

;	0544	!

;	0545	! Command Qualifier Descriptors

;	0546	!

;	0547	

;	0548								! append command qualifier descriptors:

;	0549	GLOBAL

;	0550	    appe_log_qual:					!    log qualifier

;	0551			$CLIQUALDESC (qdcode = log,

;     P 0552				      setlst = log_msg_bit),

;	0553	

;	0554	    appe_qual_end:					! End of command qualifier descriptors

;	0555			$CLIQUALEND,

;	0556	

;	0557	!

;	0558	! Input file Qualifier Descriptors

;	0559	!

;	0560	

;	0561	    appe_iread_qual:					! read_check qualifier

;	0562			$CLIQUALDESC (qdcode = read_check,

;     P 0563				      setlst = iread_check_bit),

;	0564	

;	0565	    appe_iqual_end:					! End of input file qualifier descriptors

;	0566			$CLIQUALEND,

;	0567	

;	0568	!

;	0569	! Output file Qualifier Descriptors

;	0570	!

;	0571	

;	0572	    appe_alig_qual:					! alignment qualifier

;	0573			$CLIQUALDESC (qdcode = alignment,

;     P 0574				      truact = align_parse,	!    Address of value parse routine

;     P 0575				      setlst = <alignment_bit, new_bit>),

;	0576	

;	0577	    appe_allo_qual:					! allocation qualifier

;	0578			$CLIQUALDESC (qdcode = allocation,

;     P 0579				      truact = numeric_parse,	!    Address of value parse routine

;     P 0580				      usrval = alloc_value,		!    Address of allocation value deposit area

;     P 0581				      setlst = <allocation_bit, new_bit>),

;	0582	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 5-1

; Digital Equipment Corporation

;

;	0583	    appe_cont_qual:					! contiguous qualifier

;	0584			$CLIQUALDESC (qdcode = contiguous,

;     P 0585				      setlst = contiguous_bit),

;	0586	

;	0587	    appe_exte_qual:					! extension qualifier

;	0588			$CLIQUALDESC (qdcode = extension,

;     P 0589				      truact = numeric_parse,	!    Address of value parse routine

;     P 0590				      usrval = extension_value,	!    Address of extension value deposit area

;     P 0591				      setlst = <extension_bit, new_bit>),

;	0592	

;	0593	    appe_file_qual:					! file_maximum qualifier

;	0594			$CLIQUALDESC (qdcode = file_maximum,

;     P 0595				      truact = numeric_parse,	!    Address of value parse routine

;     P 0596				      usrval = file_max_value,	!    Address of file maximum value deposit area

;     P 0597				      setlst = <file_max_bit, new_bit>),

;	0598	

;	0599	    appe_new_qual:					! new qualifier

;	0600			$CLIQUALDESC (qdcode = new_,

;     P 0601				      setlst = new_bit),

;	0602	

;	0603	    appe_prot_qual:					! protection qualifier

;	0604			$CLIQUALDESC (qdcode = protection,

;     P 0605				      truact = protect_parse,		!    Address of value parse routine

;     P 0606				      setlst = protection_bit),

;	0607	

;	0608	    appe_oread_qual:					! read_check qualifier

;	0609			$CLIQUALDESC (qdcode = read_check,

;     P 0610				      setlst = oread_check_bit),

;	0611	

;	0612	    appe_writ_qual:					! write_check qualifier

;	0613			$CLIQUALDESC (qdcode = write_check,

;     P 0614				      setlst = write_check_bit),

;	0615	

;	0616	    appe_oqual_end:					! End of output file qualifier descriptors

;	0617			$CLIQUALEND;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6

; Digital Equipment Corporation

;

;	0618	GLOBAL ROUTINE GET_CMD_QUAL :  NOVALUE =		! Retrieve command-level qualifiers from the CLI

;	0619	

;	0620	!++

;	0621	! FUNCTIONAL DESCRIPTION:

;	0622	!

;	0623	!	This routine completes all CLI request descriptors and then

;	0624	!	obtains the command-level qualifiers (i.e., options) from the

;	0625	!	Command Language Interpreter.

;	0626	!

;	0627	! FORMAL PARAMETERS:

;	0628	!

;	0629	!	None

;	0630	!

;	0631	! IMPLICIT INPUTS:

;	0632	!

;	0633	!	CMD_NAME_DESC - Command name request descriptor

;	0634	!

;	0635	!	The starting address of the CLI qualifier lists for command, input parameter,

;	0636	!	and output parameter qualifiers. These are:

;	0637	!

;	0638	!		copy_conc_qual	- COPY command qualifier list head

;	0639	!		copy_iread_qual	- COPY input parameter qualifier list head

;	0640	!		copy_alig_qual	- COPY output parameter qualifier list head

;	0641	!		appe_log_qual	- APPEND command qualifier list head

;	0642	!		appe_iread_qual	- APPEND input parameter qualifier list head

;	0643	!		appe_alig_qual	- APPEND output parameter qualifier list head

;	0644	!

;	0645	! IMPLICIT OUTPUTS:

;	0646	!

;	0647	!	COPY$CLI_STATUS - Relevant command and qualifier indicators set

;	0648	!	COPY$SEM_STATUS	- APPEND_COMMAND bit set if this is an APPEND command

;	0649	!			- CONCAT_QUAL bit set if the /CONCATENATE qualifier was explicitly given

;	0650	!			- NOCONCAT_QUAL bit set if the /NOCONCATENATE qualifier was explicitly given

;	0651	!	CMD_DESC - Qualifier list address set

;	0652	!	INFILE_DESC - Qualifier list address set

;	0653	!	OUTFILE_DESC - Qualifier list address set

;	0654	!

;	0655	! ROUTINE VALUE:

;	0656	!

;	0657	!	None

;	0658	!

;	0659	! SIDE EFFECTS:

;	0660	!

;	0661	!	None

;	0662	!

;	0663	!--

;	0664	

;	0665	    BEGIN

;	0666	

;	0667	!

;	0668	! Determine whether this is a COPY command or an APPEND command.

;	0669	!

;	0670	

;	0671	    CALL_CLI(						! Call the CLI with the following arguments:

;	0672			CMD_NAME_DESC,				!    Command line request descriptor address



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6-1

; Digital Equipment Corporation

;

;	0673			CLI_WORK_AREA,				!    CLI work area address

;	0674			COPY$CLI_STATUS );			!    COPY status bit vector address

;	0675	

;	0676	    IF .CMD_NAME_DESC[CLI$B_RQSTAT] EQL CLI$K_VERB_COPY	! If this is a COPY command,

;	0677	    THEN						! setup the addresses of the COPY qualifier

;	0678		BEGIN						! descriptor lists in the following CLI control blocks:

;	0679		CMD_DESC[CLI$A_QUALST] = COPY_CONC_QUAL;	!    Command qualifier request descriptor

;	0680		INFILE_DESC[CLI$A_QUALST] = COPY_IREAD_QUAL;	!    Input file request descriptor

;	0681		OUTFILE_DESC[CLI$A_QUALST] = COPY_ALIG_QUAL;	!    Output file request descriptor

;	0682		END

;	0683	    ELSE

;	0684		BEGIN						! Otherwise,

;	0685		APPEND_COMMAND = YES;				! indicate that this is an APPEND command

;	0686								! and setup the address of the APPEND qualifier

;	0687								! descriptor lists in the following CLI control blocks:

;	0688		CMD_DESC[CLI$A_QUALST] = APPE_LOG_QUAL;		!    Command qualifier request descriptor

;	0689		INFILE_DESC[CLI$A_QUALST] = APPE_IREAD_QUAL;	!    Input file request descriptor

;	0690		OUTFILE_DESC[CLI$A_QUALST] = APPE_ALIG_QUAL;	!    Output file request descriptor

;	0691		END;

;	0692	

;	0693	!

;	0694	! Get the command-level qualifiers from the Command Language Interpreter.

;	0695	!

;	0696	

;	0697	    CALL_CLI(						! Call the CLI with the following arguments:

;	0698			CMD_DESC,				!    Command qualifiers request descriptor address

;	0699			CLI_WORK_AREA,				!    CLI work area address

;	0700			COPY$CLI_STATUS );			!    COPY status bit vector address

;	0701	

;	0702	!

;	0703	! See whether the user explicitly specified /CONCATENATE or /NOCONCATENATE.

;	0704	!

;	0705	

;	0706	    IF .copy$cli_status [concatenate_bit]		! If concatenation is to occur,

;	0707	    THEN

;	0708	        BEGIN						!    then test whether the explicit qualifier --

;	0709	        IF explic_cop_qual [conc]			!    /CONCATENATE -- was given.

;	0710	        THEN

;	0711	            concat_qual = TRUE;				!    Set CONCAT_QUAL in COPY$SEM_STATUS is qualifier present.

;	0712	        END

;	0713	    ELSE						! Otherwise, test to see whether the explicit

;	0714	        BEGIN						!    negative qualifier -- /NOCONCATENATE --

;	0715	        IF explic_cop_qual [conc]			!    was given, set NOCONCAT_QUAL in

;	0716	        THEN						!    COPY$SEM_STATUS.

;	0717	            noconcat_qual = TRUE;

;	0718	        END;

;	0719	

;	0720	    END;





							    .TITLE  COPYCLI

							    .IDENT  \X00001\



							    .PSECT  $GLOBAL$,NOEXE,2





; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6-2

; Digital Equipment Corporation

;

					      00000 ALIGN_TYPE::

							    .BLKB   1

					      00001 ALIGN_OPTION::

							    .BLKB   1

					      00002	    .BLKB   2

					      00004 ALIGN_LOCATION::

							    .BLKB   4

					      00008 ALLOC_VALUE::

							    .BLKB   4

					      0000C EXTENSION_VALUE::

							    .BLKB   4

					      00010 FILE_MAX_VALUE::

							    .BLKB   4

					      00014 PROTECT_AND::

							    .WORD   -1							      ;

					      00016 PROTECT_OR::

							    .WORD   0							      ;

					      00018 INITIAL_DESC::

							    .BYTE   0							      ;

					      00019 	    .BYTE   0							      ;

					      0001A 	    .BYTE   2							      ;

					      0001B 	    .BYTE   0							      ;

					      0001C 	    .ADDRESS  CLI_ERROR						      ;

					      00020 	    .LONG   0, 0						      ;

					      00028 	    .LONG   0							      ;

					      0002C 	    .LONG   0							      ;

					      00030 	    .LONG   0							      ;

					      00034 CMD_NAME_DESC::

							    .BYTE   1							      ;

					      00035 	    .BYTE   0							      ;

					      00036 	    .BYTE   2							      ;

					      00037 	    .BYTE   0							      ;

					      00038 	    .ADDRESS  CLI_ERROR						      ;

					      0003C 	    .LONG   0, 0						      ;

					      00044 	    .LONG   0							      ;

					      00048 	    .LONG   0							      ;

					      0004C 	    .LONG   0							      ;

					      00050 CMD_DESC::

							    .BYTE   2							      ;

					      00051 	    .BYTE   0							      ;

					      00052 	    .BYTE   2							      ;

					      00053 	    .BYTE   0							      ;

					      00054 	    .ADDRESS  CLI_ERROR						      ;

					      00058 	    .LONG   0, 0						      ;

					      00060 	    .LONG   0							      ;

					      00064 	    .LONG   0							      ;

					      00068 	    .LONG   0							      ;

					      0006C INFILE_DESC::

							    .BYTE   16							      ;

					      0006D 	    .BYTE   0							      ;

					      0006E 	    .BYTE   2							      ;

					      0006F 	    .BYTE   0							      ;

					      00070 	    .ADDRESS  CLI_ERROR						      ;

					      00074 	    .LONG   0, 0						      ;

					      0007C 	    .LONG   0							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6-3

; Digital Equipment Corporation

;

					      00080 	    .LONG   0							      ;

					      00084 	    .LONG   0							      ;

					      00088 OUTFILE_DESC::

							    .BYTE   32							      ;

					      00089 	    .BYTE   0							      ;

					      0008A 	    .BYTE   2							      ;

					      0008B 	    .BYTE   0							      ;

					      0008C 	    .ADDRESS  CLI_ERROR						      ;

					      00090 	    .LONG   0, 0						      ;

					      00098 	    .LONG   0							      ;

					      0009C 	    .LONG   0							      ;

					      000A0 	    .LONG   0							      ;

					      000A4 CLEANUP_DESC::

							    .BYTE   48							      ;

					      000A5 	    .BYTE   0							      ;

					      000A6 	    .BYTE   2							      ;

					      000A7 	    .BYTE   0							      ;

					      000A8 	    .ADDRESS  CLI_ERROR						      ;

					      000AC 	    .LONG   0, 0						      ;

					      000B4 	    .LONG   0							      ;

					      000B8 	    .LONG   0							      ;

					      000BC 	    .LONG   0							      ;

					      000C0 NUMB_PARSE_DESC::

							    .BYTE   64							      ;

					      000C1 	    .BYTE   0							      ;

					      000C2 	    .BYTE   2							      ;

					      000C3 	    .BYTE   0							      ;

					      000C4 	    .ADDRESS  CLI_ERROR						      ;

					      000C8 	    .LONG   0, 0						      ;

					      000D0 	    .LONG   0							      ;

					      000D4 	    .LONG   0							      ;

					      000D8 	    .LONG   0							      ;

					      000DC STR_PARSE_DESC::

							    .BYTE   65							      ;

					      000DD 	    .BYTE   0							      ;

					      000DE 	    .BYTE   2							      ;

					      000DF 	    .BYTE   0							      ;

					      000E0 	    .ADDRESS  CLI_ERROR						      ;

					      000E4 	    .LONG   0, 0						      ;

					      000EC 	    .LONG   0							      ;

					      000F0 	    .LONG   0							      ;

					      000F4 	    .LONG   0							      ;

					      000F8 CLI_WORK_AREA::

							    .BLKB   128

					      00178 COPY_CONC_QUAL::

							    .BYTE   24							      ;

					      00179 	    .BYTE    CLI$K_COPY_CONC					      ;

					      0017A 	    .BYTE   0							      ;

					      0017B 	    .BYTE   0							      ;

					      0017C 	    .LONG   0, 0						      ;

					      00184 	    .LONG   0							      ;

					      00188 	    .LONG   0							      ;

					      0018C 	    .BYTE   0							      ;

					      0018D 	    .BYTE   1, 12						      ;

					      0018F 	    .BYTE   0							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6-4

; Digital Equipment Corporation

;

					      00190 COPY_LOG_QUAL::

							    .BYTE   24							      ;

					      00191 	    .BYTE    CLI$K_COPY_LOG					      ;

					      00192 	    .BYTE   0							      ;

					      00193 	    .BYTE   0							      ;

					      00194 	    .LONG   0, 0						      ;

					      0019C 	    .LONG   0							      ;

					      001A0 	    .LONG   0							      ;

					      001A4 	    .BYTE   0							      ;

					      001A5 	    .BYTE   1, 1						      ;

					      001A7 	    .BYTE   0							      ;

					      001A8 COPY_QUAL_END::

							    .BYTE   0							      ;

					      001A9 COPY_IREAD_QUAL::

							    .BYTE   24							      ;

					      001AA 	    .BYTE    CLI$K_COPY_READ					      ;

					      001AB 	    .BYTE   0							      ;

					      001AC 	    .BYTE   0							      ;

					      001AD 	    .LONG   0, 0						      ;

					      001B5 	    .LONG   0							      ;

					      001B9 	    .LONG   0							      ;

					      001BD 	    .BYTE   0							      ;

					      001BE 	    .BYTE   1, 13						      ;

					      001C0 	    .BYTE   0							      ;

					      001C1 COPY_IQUAL_END::

							    .BYTE   0							      ;

					      001C2 COPY_ALIG_QUAL::

							    .BYTE   24							      ;

					      001C3 	    .BYTE    CLI$K_COPY_ALIG					      ;

					      001C4 	    .BYTE   0							      ;

					      001C5 	    .BYTE   0							      ;

					      001C6 	    .LONG   0, 0						      ;

					      001CE 	    .ADDRESS  ALIGN_PARSE					      ;

					      001D2 	    .LONG   0							      ;

					      001D6 	    .BYTE   0							      ;

					      001D7 	    .BYTE   1, 2						      ;

					      001D9 	    .BYTE   0							      ;

					      001DA COPY_ALLO_QUAL::

							    .BYTE   28							      ;

					      001DB 	    .BYTE    CLI$K_COPY_ALLO					      ;

					      001DC 	    .BYTE   2							      ;

					      001DD 	    .BYTE   0							      ;

					      001DE 	    .LONG   0, 0						      ;

					      001E6 	    .ADDRESS  NUMERIC_PARSE					      ;

					      001EA 	    .LONG   0							      ;

					      001EE 	    .ADDRESS  ALLOC_VALUE					      ;

					      001F2 	    .BYTE   0							      ;

					      001F3 	    .BYTE   1, 3						      ;

					      001F5 	    .BYTE   0							      ;

					      001F6 COPY_CONT_QUAL::

							    .BYTE   24							      ;

					      001F7 	    .BYTE    CLI$K_COPY_CONT					      ;

					      001F8 	    .BYTE   0							      ;

					      001F9 	    .BYTE   0							      ;

					      001FA 	    .LONG   0, 0						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6-5

; Digital Equipment Corporation

;

					      00202 	    .LONG   0							      ;

					      00206 	    .LONG   0							      ;

					      0020A 	    .BYTE   0							      ;

					      0020B 	    .BYTE   1, 4						      ;

					      0020D 	    .BYTE   0							      ;

					      0020E COPY_EXTE_QUAL::

							    .BYTE   28							      ;

					      0020F 	    .BYTE    CLI$K_COPY_EXTE					      ;

					      00210 	    .BYTE   2							      ;

					      00211 	    .BYTE   0							      ;

					      00212 	    .LONG   0, 0						      ;

					      0021A 	    .ADDRESS  NUMERIC_PARSE					      ;

					      0021E 	    .LONG   0							      ;

					      00222 	    .ADDRESS  EXTENSION_VALUE					      ;

					      00226 	    .BYTE   0							      ;

					      00227 	    .BYTE   1, 5						      ;

					      00229 	    .BYTE   0							      ;

					      0022A COPY_FILE_QUAL::

							    .BYTE   28							      ;

					      0022B 	    .BYTE    CLI$K_COPY_FILE					      ;

					      0022C 	    .BYTE   2							      ;

					      0022D 	    .BYTE   0							      ;

					      0022E 	    .LONG   0, 0						      ;

					      00236 	    .ADDRESS  NUMERIC_PARSE					      ;

					      0023A 	    .LONG   0							      ;

					      0023E 	    .ADDRESS  FILE_MAX_VALUE					      ;

					      00242 	    .BYTE   0							      ;

					      00243 	    .BYTE   1, 6						      ;

					      00245 	    .BYTE   0							      ;

					      00246 COPY_OVER_QUAL::

							    .BYTE   24							      ;

					      00247 	    .BYTE    CLI$K_COPY_OVER					      ;

					      00248 	    .BYTE   0							      ;

					      00249 	    .BYTE   0							      ;

					      0024A 	    .LONG   0, 0						      ;

					      00252 	    .LONG   0							      ;

					      00256 	    .LONG   0							      ;

					      0025A 	    .BYTE   0							      ;

					      0025B 	    .BYTE   1, 7						      ;

					      0025D 	    .BYTE   0							      ;

					      0025E COPY_PROT_QUAL::

							    .BYTE   24							      ;

					      0025F 	    .BYTE    CLI$K_COPY_PROT					      ;

					      00260 	    .BYTE   0							      ;

					      00261 	    .BYTE   0							      ;

					      00262 	    .LONG   0, 0						      ;

					      0026A 	    .ADDRESS  PROTECT_PARSE					      ;

					      0026E 	    .LONG   0							      ;

					      00272 	    .BYTE   0							      ;

					      00273 	    .BYTE   1, 8						      ;

					      00275 	    .BYTE   0							      ;

					      00276 COPY_OREAD_QUAL::

							    .BYTE   24							      ;

					      00277 	    .BYTE    CLI$K_COPY_READ					      ;

					      00278 	    .BYTE   0							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6-6

; Digital Equipment Corporation

;

					      00279 	    .BYTE   0							      ;

					      0027A 	    .LONG   0, 0						      ;

					      00282 	    .LONG   0							      ;

					      00286 	    .LONG   0							      ;

					      0028A 	    .BYTE   0							      ;

					      0028B 	    .BYTE   1, 14						      ;

					      0028D 	    .BYTE   0							      ;

					      0028E COPY_REPL_QUAL::

							    .BYTE   24							      ;

					      0028F 	    .BYTE    CLI$K_COPY_REPL					      ;

					      00290 	    .BYTE   0							      ;

					      00291 	    .BYTE   0							      ;

					      00292 	    .LONG   0, 0						      ;

					      0029A 	    .LONG   0							      ;

					      0029E 	    .LONG   0							      ;

					      002A2 	    .BYTE   0							      ;

					      002A3 	    .BYTE   1, 9						      ;

					      002A5 	    .BYTE   0							      ;

					      002A6 COPY_TRUN_QUAL::

							    .BYTE   24							      ;

					      002A7 	    .BYTE    CLI$K_COPY_TRUN					      ;

					      002A8 	    .BYTE   0							      ;

					      002A9 	    .BYTE   0							      ;

					      002AA 	    .LONG   0, 0						      ;

					      002B2 	    .LONG   0							      ;

					      002B6 	    .LONG   0							      ;

					      002BA 	    .BYTE   0							      ;

					      002BB 	    .BYTE   1, 10						      ;

					      002BD 	    .BYTE   0							      ;

					      002BE COPY_WRIT_QUAL::

							    .BYTE   24							      ;

					      002BF 	    .BYTE    CLI$K_COPY_WRIT					      ;

					      002C0 	    .BYTE   0							      ;

					      002C1 	    .BYTE   0							      ;

					      002C2 	    .LONG   0, 0						      ;

					      002CA 	    .LONG   0							      ;

					      002CE 	    .LONG   0							      ;

					      002D2 	    .BYTE   0							      ;

					      002D3 	    .BYTE   1, 11						      ;

					      002D5 	    .BYTE   0							      ;

					      002D6 COPY_OQUAL_END::

							    .BYTE   0							      ;

					      002D7 APPE_LOG_QUAL::

							    .BYTE   24							      ;

					      002D8 	    .BYTE    CLI$K_APPE_LOG					      ;

					      002D9 	    .BYTE   0							      ;

					      002DA 	    .BYTE   0							      ;

					      002DB 	    .LONG   0, 0						      ;

					      002E3 	    .LONG   0							      ;

					      002E7 	    .LONG   0							      ;

					      002EB 	    .BYTE   0							      ;

					      002EC 	    .BYTE   1, 1						      ;

					      002EE 	    .BYTE   0							      ;

					      002EF APPE_QUAL_END::

							    .BYTE   0							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6-7

; Digital Equipment Corporation

;

					      002F0 APPE_IREAD_QUAL::

							    .BYTE   24							      ;

					      002F1 	    .BYTE    CLI$K_APPE_READ					      ;

					      002F2 	    .BYTE   0							      ;

					      002F3 	    .BYTE   0							      ;

					      002F4 	    .LONG   0, 0						      ;

					      002FC 	    .LONG   0							      ;

					      00300 	    .LONG   0							      ;

					      00304 	    .BYTE   0							      ;

					      00305 	    .BYTE   1, 13						      ;

					      00307 	    .BYTE   0							      ;

					      00308 APPE_IQUAL_END::

							    .BYTE   0							      ;

					      00309 APPE_ALIG_QUAL::

							    .BYTE   25							      ;

					      0030A 	    .BYTE    CLI$K_APPE_ALIG					      ;

					      0030B 	    .BYTE   0							      ;

					      0030C 	    .BYTE   0							      ;

					      0030D 	    .LONG   0, 0						      ;

					      00315 	    .ADDRESS  ALIGN_PARSE					      ;

					      00319 	    .LONG   0							      ;

					      0031D 	    .BYTE   0							      ;

					      0031E 	    .BYTE   2, 2, 28						      ;

					      00321 	    .BYTE   0							      ;

					      00322 APPE_ALLO_QUAL::

							    .BYTE   29							      ;

					      00323 	    .BYTE    CLI$K_APPE_ALLO					      ;

					      00324 	    .BYTE   2							      ;

					      00325 	    .BYTE   0							      ;

					      00326 	    .LONG   0, 0						      ;

					      0032E 	    .ADDRESS  NUMERIC_PARSE					      ;

					      00332 	    .LONG   0							      ;

					      00336 	    .ADDRESS  ALLOC_VALUE					      ;

					      0033A 	    .BYTE   0							      ;

					      0033B 	    .BYTE   2, 3, 28						      ;

					      0033E 	    .BYTE   0							      ;

					      0033F APPE_CONT_QUAL::

							    .BYTE   24							      ;

					      00340 	    .BYTE    CLI$K_APPE_CONT					      ;

					      00341 	    .BYTE   0							      ;

					      00342 	    .BYTE   0							      ;

					      00343 	    .LONG   0, 0						      ;

					      0034B 	    .LONG   0							      ;

					      0034F 	    .LONG   0							      ;

					      00353 	    .BYTE   0							      ;

					      00354 	    .BYTE   1, 4						      ;

					      00356 	    .BYTE   0							      ;

					      00357 APPE_EXTE_QUAL::

							    .BYTE   29							      ;

					      00358 	    .BYTE    CLI$K_APPE_EXTE					      ;

					      00359 	    .BYTE   2							      ;

					      0035A 	    .BYTE   0							      ;

					      0035B 	    .LONG   0, 0						      ;

					      00363 	    .ADDRESS  NUMERIC_PARSE					      ;

					      00367 	    .LONG   0							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6-8

; Digital Equipment Corporation

;

					      0036B 	    .ADDRESS  EXTENSION_VALUE					      ;

					      0036F 	    .BYTE   0							      ;

					      00370 	    .BYTE   2, 5, 28						      ;

					      00373 	    .BYTE   0							      ;

					      00374 APPE_FILE_QUAL::

							    .BYTE   29							      ;

					      00375 	    .BYTE    CLI$K_APPE_FILE					      ;

					      00376 	    .BYTE   2							      ;

					      00377 	    .BYTE   0							      ;

					      00378 	    .LONG   0, 0						      ;

					      00380 	    .ADDRESS  NUMERIC_PARSE					      ;

					      00384 	    .LONG   0							      ;

					      00388 	    .ADDRESS  FILE_MAX_VALUE					      ;

					      0038C 	    .BYTE   0							      ;

					      0038D 	    .BYTE   2, 6, 28						      ;

					      00390 	    .BYTE   0							      ;

					      00391 APPE_NEW_QUAL::

							    .BYTE   24							      ;

					      00392 	    .BYTE    CLI$K_APPE_NEW_					      ;

					      00393 	    .BYTE   0							      ;

					      00394 	    .BYTE   0							      ;

					      00395 	    .LONG   0, 0						      ;

					      0039D 	    .LONG   0							      ;

					      003A1 	    .LONG   0							      ;

					      003A5 	    .BYTE   0							      ;

					      003A6 	    .BYTE   1, 28						      ;

					      003A8 	    .BYTE   0							      ;

					      003A9 APPE_PROT_QUAL::

							    .BYTE   24							      ;

					      003AA 	    .BYTE    CLI$K_APPE_PROT					      ;

					      003AB 	    .BYTE   0							      ;

					      003AC 	    .BYTE   0							      ;

					      003AD 	    .LONG   0, 0						      ;

					      003B5 	    .ADDRESS  PROTECT_PARSE					      ;

					      003B9 	    .LONG   0							      ;

					      003BD 	    .BYTE   0							      ;

					      003BE 	    .BYTE   1, 8						      ;

					      003C0 	    .BYTE   0							      ;

					      003C1 APPE_OREAD_QUAL::

							    .BYTE   24							      ;

					      003C2 	    .BYTE    CLI$K_APPE_READ					      ;

					      003C3 	    .BYTE   0							      ;

					      003C4 	    .BYTE   0							      ;

					      003C5 	    .LONG   0, 0						      ;

					      003CD 	    .LONG   0							      ;

					      003D1 	    .LONG   0							      ;

					      003D5 	    .BYTE   0							      ;

					      003D6 	    .BYTE   1, 14						      ;

					      003D8 	    .BYTE   0							      ;

					      003D9 APPE_WRIT_QUAL::

							    .BYTE   24							      ;

					      003DA 	    .BYTE    CLI$K_APPE_WRIT					      ;

					      003DB 	    .BYTE   0							      ;

					      003DC 	    .BYTE   0							      ;

					      003DD 	    .LONG   0, 0						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 6-9

; Digital Equipment Corporation

;

					      003E5 	    .LONG   0							      ;

					      003E9 	    .LONG   0							      ;

					      003ED 	    .BYTE   0							      ;

					      003EE 	    .BYTE   1, 11						      ;

					      003F0 	    .BYTE   0							      ;

					      003F1 APPE_OQUAL_END::

							    .BYTE   0							      ;



							    .GLOBL  COPY$CLI_RESULT, COPY$CLI_STATUS, COPY$SEM_STATUS

							    .GLOBL  COPY$MSG_NUMBER, INFILE_XABALL, COPY$ALIGN_KEYS

							    .GLOBL  COPY$PROT_KEYS, COPY$PROT_VALUE, LIB$LOOKUP_KEY

							    .GLOBL  CLI$K_COPY_ALIG, CLI$K_COPY_ALLO, CLI$K_COPY_CONC

							    .GLOBL  CLI$K_COPY_CONT, CLI$K_COPY_EXTE, CLI$K_COPY_FILE

							    .GLOBL  CLI$K_COPY_LOG, CLI$K_COPY_OVER, CLI$K_COPY_PROT

							    .GLOBL  CLI$K_COPY_READ, CLI$K_COPY_REPL, CLI$K_COPY_TRUN

							    .GLOBL  CLI$K_COPY_WRIT, CLI$K_APPE_ALIG, CLI$K_APPE_ALLO

							    .GLOBL  CLI$K_APPE_CONT, CLI$K_APPE_EXTE, CLI$K_APPE_FILE

							    .GLOBL  CLI$K_APPE_LOG, CLI$K_APPE_NEW_, CLI$K_APPE_PROT

							    .GLOBL  CLI$K_APPE_READ, CLI$K_APPE_WRIT



							    .PSECT  $CODE$,NOWRT,2



					 0800 00000 	    .ENTRY  GET_CMD_QUAL, Save R11				      ; 0618

		         5B	0000'  CF  9E 00002 	    MOVAB   CLI_WORK_AREA, R11					      ;

				0000G  CF  9F 00007 	    PUSHAB  COPY$CLI_STATUS					      ; 0671

				       5B  DD 0000B 	    PUSHL   R11							      ;

				FF3C   CB  9F 0000D 	    PUSHAB  CMD_NAME_DESC					      ;

		  0000G  DF	       03  FB 00011 	    CALLS   #3, @COPY$CLI_RESULT				      ;

		         08	FF3F   CB  91 00016 	    CMPB    CMD_NAME_DESC+3, #8					      ; 0676

				       15  12 0001B 	    BNEQ    1$							      ;

		  FF70   CB	0080   CB  9E 0001D 	    MOVAB   COPY_CONC_QUAL, CMD_DESC+24				      ; 0679

		    8C   AB	00B1   CB  9E 00024 	    MOVAB   COPY_IREAD_QUAL, INFILE_DESC+24			      ; 0680

		    A8   AB	00CA   CB  9E 0002A 	    MOVAB   COPY_ALIG_QUAL, OUTFILE_DESC+24			      ; 0681

				       18  11 00030 	    BRB     2$							      ; 0676

		  0000G  CF	       10  88 00032 1$:     BISB2   #16, COPY$SEM_STATUS+1				      ; 0685

		  FF70   CB	01DF   CB  9E 00037 	    MOVAB   APPE_LOG_QUAL, CMD_DESC+24				      ; 0688

		    8C   AB	01F8   CB  9E 0003E 	    MOVAB   APPE_IREAD_QUAL, INFILE_DESC+24			      ; 0689

		    A8   AB	0211   CB  9E 00044 	    MOVAB   APPE_ALIG_QUAL, OUTFILE_DESC+24			      ; 0690

				0000G  CF  9F 0004A 2$:     PUSHAB  COPY$CLI_STATUS					      ; 0697

				       5B  DD 0004E 	    PUSHL   R11							      ;

				FF58   CB  9F 00050 	    PUSHAB  CMD_DESC						      ;

		  0000G  DF	       03  FB 00054 	    CALLS   #3, @COPY$CLI_RESULT				      ;

	   0C	  0000G  CF	       04  E1 00059 	    BBC     #4, COPY$CLI_STATUS+1, 3$				      ; 0706

	   11	  0083   CB	       01  E1 0005F 	    BBC     #1, COPY_CONC_QUAL+3, 4$				      ; 0709

		  0000G  CF	       01  88 00065 	    BISB2   #1, COPY$SEM_STATUS					      ; 0711

					   04 0006A 	    RET     							      ; 0706

	   05	  0083   CB	       01  E1 0006B 3$:     BBC     #1, COPY_CONC_QUAL+3, 4$				      ; 0715

		  0000G  CF	       08  88 00071 	    BISB2   #8, COPY$SEM_STATUS					      ; 0717

					   04 00076 4$:     RET     							      ; 0618



; Routine Size:  119 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 7

; Digital Equipment Corporation

;

;	0721	ROUTINE CLI_ERROR (					! CLI error action routine

;	0722			CB_ADDRESS,				! Address of associated CLI control block

;	0723			ERROR_NUMBER )				! CLI error number

;	0724			: NOVALUE =

;	0725	

;	0726	!++

;	0727	! FUNCTIONAL DESCRIPTION:

;	0728	!

;	0729	!	This CLI error action routine sends a CLI error message to the user.

;	0730	!

;	0731	! FORMAL PARAMETERS:

;	0732	!

;	0733	!	CB_ADDRESS.ra.v - Address of the associated CLI control block

;	0734	!	ERROR_NUMBER.rlu.v - CLI error number

;	0735	!

;	0736	! IMPLICIT INPUTS:

;	0737	!

;	0738	!	None

;	0739	!

;	0740	! IMPLICIT OUTPUTS:

;	0741	!

;	0742	!	None

;	0743	!

;	0744	! ROUTINE VALUE:

;	0745	!

;	0746	!	None

;	0747	!

;	0748	! SIDE EFFECTS:

;	0749	!

;	0750	!	None

;	0751	!

;	0752	!--

;	0753	

;	0754	    BEGIN

;	0755	

;	0756	    BIND

;	0757		CONTROL_BLOCK = .CB_ADDRESS :  BLOCK[,BYTE];	! Define the format of the input argument

;	0758	

;	0759	!

;	0760	! Call FAO to format the error message in the message buffer.

;	0761	!

;	0762	

;	0763	    PUT_MESSAGE( MSG$_SYNTAX,				! Signal "syntax error" with the following arguments:

;     P 0764			1,					!    Number of message arguments

;     P 0765			CONTROL_BLOCK[CLI$Q_RQDESC],		!    Address of current element descriptor

;     P 0766			.ERROR_NUMBER );			!    CLI error number (secondary message)

;	0767	

;	0768	!

;	0769	! Return to the caller.

;	0770	!

;	0771	

;	0772	    RETURN;						! Return to the caller.

;	0773	

;	0774	    END;





; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 7-1

; Digital Equipment Corporation

;









					 0000 00077 CLI_ERROR:

							    .WORD   Save nothing					      ; 0721

		         50	  04   AC  D0 00079 	    MOVL    CB_ADDRESS, R0					      ; 0754

				  08   AC  DD 0007D 	    PUSHL   ERROR_NUMBER					      ; 0766

				  08   A0  9F 00080 	    PUSHAB  8(R0)						      ;

				       01  DD 00083 	    PUSHL   #1							      ;

		         7E	10FC   8F  3C 00085 	    MOVZWL  #4348, -(SP)					      ;

		  0000G  CF	       01  FB 0008A 	    CALLS   #1, COPY$MSG_NUMBER					      ;

				       50  DD 0008F 	    PUSHL   R0							      ;

	      00000000G  00	       04  FB 00091 	    CALLS   #4, LIB$STOP					      ;

					   04 00098 	    RET     							      ; 0721



; Routine Size:  34 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 8

; Digital Equipment Corporation

;

;	0775	ROUTINE ALIGN_PARSE (					! ALIGNMENT qualifier value parse routine

;	0776				QUAL_DESC_ADDR )		! Address of associated qualifier descriptor

;	0777				: NOVALUE =

;	0778	

;	0779	!++

;	0780	! FUNCTIONAL DESCRIPTION:

;	0781	!

;	0782	!	This routine parses a ALIGNMENT qualifier value.

;	0783	!

;	0784	! FORMAL PARAMETERS:

;	0785	!

;	0786	!	QUAL_DESC_ADDR.r.r - Address of the qualifier descriptor containing

;	0787	!			     the value(s) to be parsed

;	0788	!

;	0789	! IMPLICIT INPUTS:

;	0790	!

;	0791	!	STR_PARSE_DESC - CLI string parsing descriptor

;	0792	!	INFILE_XABALL - Input file allocation XAB

;	0793	!

;	0794	! IMPLICIT OUTPUTS:

;	0795	!

;	0796	!	ALIGN_TYPE - XAB$B_ALN code

;	0797	!	ALIGN_OPTION - XAB$B_AOP "and" mask

;	0798	!	ALIGN_LOCATION - actual cylinder or logical location value

;	0799	!

;	0800	! ROUTINE VALUE:

;	0801	!

;	0802	!	None

;	0803	!

;	0804	! SIDE EFFECTS:

;	0805	!

;	0806	!	None

;	0807	!

;	0808	!--

;	0809	

;	0810	    BEGIN

;	0811	

;	0812	    BIND

;	0813		QUAL_DESC = .QUAL_DESC_ADDR :  BLOCK[,BYTE];	! Redefine the input argument

;	0814	

;	0815	    LOCAL

;	0816		STATUS,						! Keyword lookup completion code

;	0817	

;	0818		QUAL_VALUE_DESC :  VECTOR[2],			! Qualifier value descriptor before parsing

;	0819	

;	0820		KEY_VALUES :  VECTOR[4,BYTE];			! 4-byte value returned from keyword lookup

;	0821	

;	0822	    MACRO						! Redefine the keyword value bytes:

;	0823		KEY_TYPE = KEY_VALUES[0] %,			!    XAB$B_ALN code value

;	0824		KEY_OPTION = KEY_VALUES[1] %,			!    XAB$B_AOP "and" mask

;	0825		KEY_VALUE_OK = KEY_VALUES[2] %,			!    keyword value permitted indicator

;	0826		KEY_VALUE_REQ = KEY_VALUES[3] %;		!    keyword value required indicator

;	0827	

;	0828	!

;	0829	! Initialize the ALIGNMENT qualifier temporary values.



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 8-1

; Digital Equipment Corporation

;

;	0830	!

;	0831	

;	0832	    ALIGN_TYPE = 0;					! Initially, assume no alignment.

;	0833	

;	0834	    ALIGN_OPTION = .INFILE_XABALL[XAB$B_AOP] OR		! Use the existing alignment options

;	0835					XAB$M_HRD;		! but assume forced alignment.

;	0836	

;	0837	    ALIGN_LOCATION = -1;				! Setup for "any cylinder" alignment.

;	0838	

;	0839	    QUAL_VALUE_DESC[0] = .QUAL_DESC[CLI$W_QDVALSIZ];	! Save the length and address of the

;	0840	    QUAL_VALUE_DESC[1] = .QUAL_DESC[CLI$A_QDVALADR];	! qualifier value string before parsing.

;	0841	

;	0842	!

;	0843	! Get a qualifier keyword string from the CLI.

;	0844	!

;	0845	

;	0846	    STR_PARSE_DESC[CLI$V_MOREVALS] = YES;		! Set bit to begin following loop.

;	0847	

;	0848	    WHILE .STR_PARSE_DESC[CLI$V_MOREVALS] DO		! Repeat the remainder of this routine 

;	0849		BEGIN						! for each qualifier keyword/value pair.

;	0850	

;	0851		CALL_CLI(					! Call the CLI with the following arguments:

;	0852			STR_PARSE_DESC,				!    String parse request descriptor address

;	0853			CLI_WORK_AREA,				!    CLI work area address

;	0854			QUAL_DESC );				!    Qualifier descriptor address

;	0855	

;	0856	!

;	0857	! Verify that a valid keyword was specified.

;	0858	!

;	0859	

;	0860		STATUS = LIB$LOOKUP_KEY(			! Call the keyword lookup routine with the following args:

;	0861				STR_PARSE_DESC[CLI$Q_RQDESC],	!    Address of keyword descriptor

;	0862				COPY$ALIGN_KEYS,		!    Address of keyword table

;	0863				KEY_VALUES );			!    Address of keyword value deposit area

;	0864	

;	0865		IF .STATUS					! If a keyword match was found

;	0866		THEN						!

;	0867		    BEGIN					!

;	0868		    IF .KEY_TYPE NEQ 0				! save the keyword type (if any)

;	0869		    THEN					!

;	0870			ALIGN_TYPE = .KEY_TYPE;			!

;	0871		    ALIGN_OPTION = .ALIGN_OPTION AND		! and update the XAB option mask.

;	0872					.KEY_OPTION;

;	0873	

;	0874	!

;	0875	! Parse a keyword value.

;	0876	!

;	0877	

;	0878		    IF .STR_PARSE_DESC[CLI$V_KEYVALU]		! If a value follows the keyword,

;	0879		    THEN					!

;	0880			IF .KEY_VALUE_OK			! make sure that a value is permitted.

;	0881			THEN					!

;	0882			    BEGIN				! If a value exists and is permitted,

;	0883			    CALL_CLI(				! call the CLI with the following arguments:

;	0884				    NUMB_PARSE_DESC,		!    numeric parse request descriptor address



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 8-2

; Digital Equipment Corporation

;

;	0885				    CLI_WORK_AREA,		!    CLI work area address

;	0886				    QUAL_DESC );		!    qualifier descriptor address

;	0887								!

;	0888			    ALIGN_LOCATION =			! and then save the converted location value.

;	0889				.NUMB_PARSE_DESC[CLI$L_RQVALU];	!

;	0890								!

;	0891			    END

;	0892			ELSE					! If a value was specified and no value is permitted,

;	0893			    BEGIN				!

;	0894			    PUT_MESSAGE(		    	! signal the following error information:

;     P 0895				MSG$_SYNTAX,			!    "syntax error" message id

;     P 0896				1,				!    Number of FAO arguments

;     P 0897				QUAL_VALUE_DESC,		!    Address of qualifier value descriptor

;     P 0898				COPY$MSG_NUMBER(MSG$_BADDELIM),	!    "invalid delimiter" message id

;     P 0899				1,				!    Number of associated FAO arguments

;     P 0900				STR_PARSE_DESC[CLI$Q_RQDESC] );	!    Address of keyword value descriptor

;	0901				    				!

;	0902			    RETURN;			    	! and then return to the caller.

;	0903			    END

;	0904	

;	0905	!

;	0906	! Check for a missing keyword value.

;	0907	!

;	0908	

;	0909		    ELSE					! If no keyword value was specified

;	0910			IF .KEY_VALUE_REQ			! and a value is required,

;	0911			THEN					!

;	0912			    BEGIN				!

;	0913			    PUT_MESSAGE(		    	! signal the following error information:

;     P 0914			    	MSG$_SYNTAX,		    	!    "syntax error" message id

;     P 0915			    	1,		    		!    Number of FAO arguments

;     P 0916			    	QUAL_VALUE_DESC,		!    Address of qualifier value descriptor

;     P 0917			    	COPY$MSG_NUMBER(MSG$_NOVALUE),	!    "keyword value required" message id

;     P 0918			    	1,		    		!    Number of associated FAO arguments

;     P 0919			    	STR_PARSE_DESC[CLI$Q_RQDESC] );	!    Address of keyword descriptor

;	0920			    		    		    	!

;	0921			    RETURN;				! and then return to the caller.

;	0922			    END;

;	0923		    END						! End of valid keyword processing.

;	0924	

;	0925	!

;	0926	! Process a keyword lookup error.

;	0927	!

;	0928	

;	0929		ELSE						! If there was a keyword error,

;	0930		    BEGIN					!

;	0931		    PUT_MESSAGE(				! signal the following error information:

;     P 0932			    MSG$_SYNTAX,			!	"syntax error" message id

;     P 0933			    1,					!	Number of FAO arguments

;     P 0934			    QUAL_VALUE_DESC,			!	Address of qualifier value descriptor

;     P 0935			    .STATUS,				!	Keyword lookup error number

;     P 0936			    1,					!	Number of associated FAO arguments

;     P 0937			    STR_PARSE_DESC[CLI$Q_RQDESC] );	!	Address of keyword descriptor

;	0938								    !

;	0939		    RETURN;					! and then return to the caller.



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 8-3

; Digital Equipment Corporation

;

;	0940		    END;

;	0941	

;	0942		END;						! End of the keyword processing loop.

;	0943	

;	0944	!

;	0945	! Return to the caller.

;	0946	!

;	0947	

;	0948	    RETURN;

;	0949	

;	0950	    END;











					 080C 00099 ALIGN_PARSE:

							    .WORD   Save R2,R3,R11					      ; 0775

		         5B	0000'  CF  9E 0009B 	    MOVAB   STR_PARSE_DESC+8, R11				      ;

		         5E	       0C  C2 000A0 	    SUBL2   #12, SP						      ;

		         52	  04   AC  D0 000A3 	    MOVL    QUAL_DESC_ADDR, R2					      ; 0810

				FF1C   CB  94 000A7 	    CLRB    ALIGN_TYPE						      ; 0832

    FF1D   CB	  0000G  CF	       01  89 000AB 	    BISB3   #1, INFILE_XABALL+8, ALIGN_OPTION			      ; 0834

		  FF20   CB	       01  CE 000B3 	    MNEGL   #1, ALIGN_LOCATION					      ; 0837

		    04   AE	  04   A2  3C 000B8 	    MOVZWL  4(R2), QUAL_VALUE_DESC				      ; 0839

		    08   AE	  08   A2  D0 000BD 	    MOVL    8(R2), QUAL_VALUE_DESC+4				      ; 0840

		    FB   AB	       01  88 000C2 	    BISB2   #1, STR_PARSE_DESC+3				      ; 0846

		         01	  FB   AB  E8 000C6 1$:     BLBS    STR_PARSE_DESC+3, 2$				      ; 0848

					   04 000CA 	    RET     							      ;

				       52  DD 000CB 2$:     PUSHL   R2							      ; 0851

				  14   AB  9F 000CD 	    PUSHAB  CLI_WORK_AREA					      ;

				  F8   AB  9F 000D0 	    PUSHAB  STR_PARSE_DESC					      ;

		  0000G  DF	       03  FB 000D3 	    CALLS   #3, @COPY$CLI_RESULT				      ;

				       5E  DD 000D8 	    PUSHL   SP							      ; 0860

				0000G  CF  9F 000DA 	    PUSHAB  COPY$ALIGN_KEYS					      ;

				       5B  DD 000DE 	    PUSHL   R11							      ; 0861

		  0000G  CF	       03  FB 000E0 	    CALLS   #3, LIB$LOOKUP_KEY					      ; 0860

		         53	       50  D0 000E5 	    MOVL    R0, STATUS						      ;

		         51	       53  E9 000E8 	    BLBC    STATUS, 7$						      ; 0865

				       6E  95 000EB 	    TSTB    KEY_VALUES						      ; 0868

				       05  13 000ED 	    BEQL    3$							      ;

		  FF1C   CB	       6E  90 000EF 	    MOVB    KEY_VALUES, ALIGN_TYPE				      ; 0870

		         50	  01   AE  92 000F4 3$:     MCOMB   KEY_VALUES+1, R0					      ; 0871

		  FF1D   CB	       50  8A 000F8 	    BICB2   R0, ALIGN_OPTION					      ;

	   24	    FB   AB	       01  E1 000FD 	    BBC     #1, STR_PARSE_DESC+3, 5$				      ; 0878

		         15	  02   AE  E9 00102 	    BLBC    KEY_VALUES+2, 4$					      ; 0880

				       52  DD 00106 	    PUSHL   R2							      ; 0883

				  14   AB  9F 00108 	    PUSHAB  CLI_WORK_AREA					      ;

				  DC   AB  9F 0010B 	    PUSHAB  NUMB_PARSE_DESC					      ;

		  0000G  DF	       03  FB 0010E 	    CALLS   #3, @COPY$CLI_RESULT				      ;

		  FF20   CB	  E8   AB  D0 00113 	    MOVL    NUMB_PARSE_DESC+12, ALIGN_LOCATION			      ; 0888

				       AB  11 00119 	    BRB     1$							      ; 0880

				       5B  DD 0011B 4$:     PUSHL   R11							      ; 0900

				       01  DD 0011D 	    PUSHL   #1							      ;

		         7E	111A   8F  3C 0011F 	    MOVZWL  #4378, -(SP)					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 8-4

; Digital Equipment Corporation

;

				       0D  11 00124 	    BRB     6$							      ;

		         9C	  03   AE  E9 00126 5$:     BLBC    KEY_VALUES+3, 1$					      ; 0910

				       5B  DD 0012A 	    PUSHL   R11							      ; 0919

				       01  DD 0012C 	    PUSHL   #1							      ;

		         7E	1102   8F  3C 0012E 	    MOVZWL  #4354, -(SP)					      ;

		  0000G  CF	       01  FB 00133 6$:     CALLS   #1, COPY$MSG_NUMBER					      ;

				       50  DD 00138 	    PUSHL   R0							      ;

				       06  11 0013A 	    BRB     8$							      ;

				       5B  DD 0013C 7$:     PUSHL   R11							      ; 0937

				       01  DD 0013E 	    PUSHL   #1							      ;

				       53  DD 00140 	    PUSHL   STATUS						      ;

				  10   AE  9F 00142 8$:     PUSHAB  QUAL_VALUE_DESC					      ;

				       01  DD 00145 	    PUSHL   #1							      ;

		         7E	10FC   8F  3C 00147 	    MOVZWL  #4348, -(SP)					      ;

		  0000G  CF	       01  FB 0014C 	    CALLS   #1, COPY$MSG_NUMBER					      ;

				       50  DD 00151 	    PUSHL   R0							      ;

	      00000000G  00	       06  FB 00153 	    CALLS   #6, LIB$STOP					      ;

					   04 0015A 9$:     RET     							      ; 0775



; Routine Size:  194 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 9

; Digital Equipment Corporation

;

;	0951	ROUTINE NUMERIC_PARSE (					! Numeric qualifier value parse routine

;	0952			QUAL_DESC_ADDR )			! Address of associated qualifier descriptor

;	0953			: NOVALUE =

;	0954	

;	0955	!++

;	0956	! FUNCTIONAL DESCRIPTION:

;	0957	!

;	0958	!	This routine is called by the CLI for each qualifier which has a decimal value.

;	0959	!	The CLI is called to validate and convert this numeric value to binary.

;	0960	!

;	0961	! FORMAL PARAMETERS:

;	0962	!

;	0963	!	QUAL_DESC_ADDR.r.r - Address of the qualifier descriptor containing 

;	0964	!			     the value to be converted.

;	0965	!

;	0966	! IMPLICIT INPUTS:

;	0967	!

;	0968	!	NUMB_PARSE_DESC - CLI value parsing request descriptor

;	0969	!

;	0970	! IMPLICIT OUTPUTS:

;	0971	!

;	0972	!	The converted numeric value is placed at the location specified

;	0973	!	by the CLI$L_USRVAL field of the qualifier descriptor.

;	0974	!

;	0975	! ROUTINE VALUE:

;	0976	!

;	0977	!	None

;	0978	!

;	0979	! SIDE EFFECTS:

;	0980	!

;	0981	!	None

;	0982	!

;	0983	!--

;	0984	

;	0985	    BEGIN

;	0986	

;	0987	    BIND

;	0988		QUAL_DESC = .QUAL_DESC_ADDR : BLOCK[,BYTE];	! Redefine the input argument.

;	0989	

;	0990	    CALL_CLI(						! Call the CLI with the following arguments:

;	0991			NUMB_PARSE_DESC,			!    Value parse request descriptor address

;	0992			CLI_WORK_AREA,				!    CLI work area address

;	0993			QUAL_DESC );				!    Qualifier descriptor address

;	0994	

;	0995	    .QUAL_DESC[CLI$L_USRVAL] =				! Save the converted value.

;	0996			.NUMB_PARSE_DESC[CLI$L_RQVALU];		!

;	0997	

;	0998	    RETURN;						! Return to the caller (CLI).

;	0999	

;	1000	    END;













; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 9-1

; Digital Equipment Corporation

;

					 0004 0015B NUMERIC_PARSE:

							    .WORD   Save R2						      ; 0951

		         52	  04   AC  D0 0015D 	    MOVL    QUAL_DESC_ADDR, R2					      ; 0985

				       52  DD 00161 	    PUSHL   R2							      ; 0990

				0000'  CF  9F 00163 	    PUSHAB  CLI_WORK_AREA					      ;

				0000'  CF  9F 00167 	    PUSHAB  NUMB_PARSE_DESC					      ;

		  0000G  DF	       03  FB 0016B 	    CALLS   #3, @COPY$CLI_RESULT				      ;

		    14   B2	0000'  CF  D0 00170 	    MOVL    NUMB_PARSE_DESC+12, @20(R2)				      ; 0995

					   04 00176 	    RET     							      ; 0951



; Routine Size:  28 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 10

; Digital Equipment Corporation

;

;	1001	ROUTINE PROTECT_PARSE (					! PROTECTION qualifier value parse routine

;	1002				QUAL_DESC_ADDR )		! Address of associated qualifier descriptor

;	1003				: NOVALUE =

;	1004	

;	1005	!++

;	1006	! FUNCTIONAL DESCRIPTION:

;	1007	!

;	1008	!	This routine parses a PROTECTION qualifier value.

;	1009	!

;	1010	!	***** Modification, June 15, 1978

;	1011	!

;	1012	!		If a protection keyword, such as W for world, does not have an accompanying

;	1013	!		specified value, then the value defaults to no access.

;	1014	!	***** C. Peters

;	1015	!

;	1016	! FORMAL PARAMETERS:

;	1017	!

;	1018	!	QUAL_DESC_ADDR.r.r - Address of the qualifier descriptor containing

;	1019	!			     the value(s) to be parsed

;	1020	!

;	1021	! IMPLICIT INPUTS:

;	1022	!

;	1023	!	STR_PARSE_DESC - CLI string parsing descriptor

;	1024	!

;	1025	! IMPLICIT OUTPUTS:

;	1026	!

;	1027	!	COPY$CLI_STATUS[PROTECT_VAL_BIT] - Protection value indicator set

;	1028	!	PROTECT_AND - Protection value AND mask

;	1029	!	PROTECT_OR - Protection value OR mask

;	1030	!

;	1031	! ROUTINE VALUE:

;	1032	!

;	1033	!	None

;	1034	!

;	1035	! SIDE EFFECTS:

;	1036	!

;	1037	!	None

;	1038	!

;	1039	!--

;	1040	

;	1041	    BEGIN

;	1042	

;	1043	    BIND

;	1044		QUAL_DESC = .QUAL_DESC_ADDR :  BLOCK[,BYTE];	! Redefine the input argument

;	1045	

;	1046	    MAP

;	1047		PROTECT_AND :  BLOCK[2,BYTE],			! Redefine the protection value

;	1048		PROTECT_OR :  BLOCK[2,BYTE];			! AND and OR masks.

;	1049	

;	1050	    LOCAL

;	1051		STATUS,						! Keyword lookup completion code

;	1052	

;	1053		QUAL_VALUE_DESC :  VECTOR[2],			! Qualifier value descriptor before parsing

;	1054	

;	1055		KEY_DISP,					! Displacement of keyword nibble in XAB$W_PRO



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 10-1

; Digital Equipment Corporation

;

;	1056		BIT_DISP,					! Displacement of mask bit within keyword nibble

;	1057	

;	1058		CHAR_DESC :  VECTOR[2];				! String descriptor for error message

;	1059	

;	1060	    MACRO

;	1061		PROTECT_MASK(DISP,SIZE) =			! XAB$W_PRO bit and mask definitions macros

;     M 1062			MASK_DEF(XAB$W_PRO,DISP,SIZE) %,

;	1063		MASK_DEF(L,B,S,X,DISP,SIZE) =

;     M 1064			0, B+DISP, SIZE, X %;

;	1065	

;	1066	!

;	1067	! Check to see if any explicit protection specification was provided.

;	1068	!

;	1069	

;	1070	    IF .QUAL_DESC[CLI$W_QDVALSIZ] EQL 0			! If no protection info was provided,

;	1071	    THEN						!

;	1072		BEGIN						!

;	1073		COPY$CLI_STATUS[PROTECT_VAL_BIT] = NO;		! indicate there was no protection value

;	1074		RETURN;						! and then return to the caller.

;	1075		END

;	1076	    ELSE

;	1077		COPY$CLI_STATUS[PROTECT_VAL_BIT] = YES;		! Otherwise, turn the protection value indicator on.

;	1078	

;	1079	    QUAL_VALUE_DESC[0] = .QUAL_DESC[CLI$W_QDVALSIZ];	! Save the length and address of the

;	1080	    QUAL_VALUE_DESC[1] = .QUAL_DESC[CLI$A_QDVALADR];	! qualifier value string before parsing.

;	1081	

;	1082	!

;	1083	! Get a qualifier keyword string from the CLI.

;	1084	!

;	1085	

;	1086	    STR_PARSE_DESC[CLI$V_MOREVALS] = YES;		! Set bit to begin following loop.

;	1087	

;	1088	    WHILE .STR_PARSE_DESC[CLI$V_MOREVALS] DO		! Repeat the remainder of this routine 

;	1089		BEGIN						! for each qualifier keyword/value pair.

;	1090	

;	1091		CALL_CLI(					! Call the CLI with the following arguments:

;	1092			STR_PARSE_DESC,				!    String parse request descriptor address

;	1093			CLI_WORK_AREA,				!    CLI work area address

;	1094			QUAL_DESC );				!    Qualifier descriptor address

;	1095	

;	1096	!

;	1097	! Verify that a valid keyword was specified and that it is followed by a value.

;	1098	!

;	1099	

;	1100		STATUS = LIB$LOOKUP_KEY(			! Call the keyword lookup routine with the following args:

;	1101				STR_PARSE_DESC[CLI$Q_RQDESC],	!    Address of keyword descriptor

;	1102				COPY$PROT_KEYS,			!    Address of keyword table

;	1103				KEY_DISP );			!    Address of keyword value deposit area

;	1104	

;	1105		IF NOT .STATUS					! If a keyword match was not found

;	1106		THEN						!

;	1107	            BEGIN					!

;	1108		    PUT_MESSAGE(				! signal the following error information:

;     P 1109				MSG$_SYNTAX,			!    "syntax error" message id

;     P 1110				1,				!    Number of FAO arguments



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 10-2

; Digital Equipment Corporation

;

;     P 1111				QUAL_VALUE_DESC,		!    Address of qualifier value descriptor

;     P 1112				.STATUS,			!    Keyword lookup error number

;     P 1113				1,				!    Number of associated FAO arguments

;     P 1114				STR_PARSE_DESC[CLI$Q_RQDESC] );	!    Address of keyword descriptor

;	1115								!

;	1116		    RETURN;					! and then return to the caller.

;	1117		    END;

;	1118	

;	1119	!

;	1120	! Initialize protection bits for this keyword.

;	1121	!

;	1122	

;	1123		PROTECT_AND[PROTECT_MASK(.KEY_DISP,4)] = 0;	! Setup the protection attributes AND mask to

;	1124								! zero the nibble corresponding to the keyword.

;	1125	

;	1126		PROTECT_OR[PROTECT_MASK(.KEY_DISP,4)] = -1;	! Initialize the protection attributes OR mask to

;	1127								! deny all privileges corresponding to the keyword.

;	1128	

;	1129	!

;	1130	! If a value follows, then parse the value following a valid keyword.

;	1131	!

;	1132	

;	1133	        IF .STR_PARSE_DESC[CLI$V_KEYVALU]		! If a value was specified,

;	1134	        THEN						!

;	1135	            BEGIN					!    then parse it.

;	1136	            CALL_CLI(					! Call the CLI with the following arguments:

;	1137	                    STR_PARSE_DESC,			!    String parse request descriptor address

;	1138	                    CLI_WORK_AREA,			!    CLI work area address

;	1139	                    QUAL_DESC );			!    Qualifier descriptor address

;	1140	

;	1141	            CHAR_DESC[0] = 1;				! Setup the length of a single character.

;	1142	

;	1143	            INCR INDEX FROM 0 TO .STR_PARSE_DESC[CLI$W_RQSIZE]-1 DO

;	1144	                BEGIN					! Process the keyword value a character at a time.

;	1145	

;	1146	                CHAR_DESC[1] = .STR_PARSE_DESC[CLI$A_RQADDR] + .INDEX;

;	1147	

;	1148	                STATUS = LIB$LOOKUP_KEY(		! Call the keyword lookup routine with the following args:

;	1149	                                CHAR_DESC,		!    Address of the character descriptor

;	1150	                                COPY$PROT_VALUE,	!    Address of the keyword table

;	1151	                                BIT_DISP );		!    Address of the keyword value deposit area

;	1152	

;	1153	                IF NOT .STATUS				! If no character match was found,

;	1154	                THEN					!

;	1155	                    BEGIN				!

;	1156	                    PUT_MESSAGE(			! signal the following error information:

;     P 1157	                            MSG$_SYNTAX,		!    "syntax error" message id

;     P 1158	                            1,				!    Number of FAO arguments

;     P 1159	                            QUAL_VALUE_DESC,		!    Address of qualifier value descriptor

;     P 1160	                            .STATUS,			!    Keyword lookup error number

;     P 1161	                            1,				!    Number of associated FAO arguments

;     P 1162	                            STR_PARSE_DESC[CLI$Q_RQDESC] );	!    Address of keyword descriptor

;	1163								!

;	1164	                    RETURN;				! and then return to the caller.

;	1165	                    END;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 10-3

; Digital Equipment Corporation

;

;	1166	

;	1167	                PROTECT_OR[PROTECT_MASK(		! Turn off the mask bit which corresponds to the

;     P 1168				.KEY_DISP+.BIT_DISP,1)] = NO;	! keyword and protection attribute specified.

;	1169	

;	1170	                END;					! End of single character value loop.

;	1171	

;	1172	!

;	1173	! Make sure that the delimiter following the keyword value is correct.

;	1174	!

;	1175	

;	1176	            IF .STR_PARSE_DESC[CLI$V_KEYVALU]		! If a "value" delimiter follows this value,

;	1177	            THEN					!

;	1178	                BEGIN					!

;	1179	                PUT_MESSAGE(				! signal the following error information:

;     P 1180	                            MSG$_SYNTAX,		!    "syntax error" message id

;     P 1181	                            1,				!    Number of FAO arguments

;     P 1182	                            QUAL_VALUE_DESC,		!    Address of qualifier value descriptor

;     P 1183	                            COPY$MSG_NUMBER(MSG$_BADDELIM),	!    "invalid delimiter" message id

;     P 1184	                            1,				!    Number of associated FAO arguments

;     P 1185	                            STR_PARSE_DESC[CLI$Q_RQDESC] );	!    Address of keyword value descriptor

;	1186								!

;	1187	                RETURN;					! and then return to the caller.

;	1188	                END;

;	1189	

;	1190	            END;					! End of protection value processing.

;	1191	

;	1192		END;						! End of keyword processing loop.

;	1193	

;	1194	!

;	1195	! Return to the caller.

;	1196	!

;	1197	

;	1198	    RETURN;						! Return to the caller.

;	1199	

;	1200	    END;











					 087C 00177 PROTECT_PARSE:

							    .WORD   Save R2,R3,R4,R5,R6,R11				      ; 1001

		         5B	0000'  CF  9E 00179 	    MOVAB   STR_PARSE_DESC+3, R11				      ;

		         5E	       18  C2 0017E 	    SUBL2   #24, SP						      ;

		         52	  04   AC  D0 00181 	    MOVL    QUAL_DESC_ADDR, R2					      ; 1041

				  04   A2  B5 00185 	    TSTW    4(R2)						      ; 1070

				       06  12 00188 	    BNEQ    1$							      ;

		  0000G  CF	       20  8A 0018A 	    BICB2   #32, COPY$CLI_STATUS+3				      ; 1073

					   04 0018F 	    RET     							      ; 1074

		  0000G  CF	       20  88 00190 1$:     BISB2   #32, COPY$CLI_STATUS+3				      ; 1077

		    10   AE	  04   A2  3C 00195 	    MOVZWL  4(R2), QUAL_VALUE_DESC				      ; 1079

		    14   AE	  08   A2  D0 0019A 	    MOVL    8(R2), QUAL_VALUE_DESC+4				      ; 1080

		         6B	       01  88 0019F 	    BISB2   #1, STR_PARSE_DESC+3				      ; 1086

		         01	       6B  E8 001A2 2$:     BLBS    STR_PARSE_DESC+3, 3$				      ; 1088

					   04 001A5 	    RET     							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 10-4

; Digital Equipment Corporation

;

				       52  DD 001A6 3$:     PUSHL   R2							      ; 1091

				  19   AB  9F 001A8 	    PUSHAB  CLI_WORK_AREA					      ;

				  FD   AB  9F 001AB 	    PUSHAB  STR_PARSE_DESC					      ;

		  0000G  DF	       03  FB 001AE 	    CALLS   #3, @COPY$CLI_RESULT				      ;

				  04   AE  9F 001B3 	    PUSHAB  KEY_DISP						      ; 1100

				0000G  CF  9F 001B6 	    PUSHAB  COPY$PROT_KEYS					      ;

				  05   AB  9F 001BA 	    PUSHAB  STR_PARSE_DESC+8					      ; 1101

		  0000G  CF	       03  FB 001BD 	    CALLS   #3, LIB$LOOKUP_KEY					      ; 1100

		         55	       50  D0 001C2 	    MOVL    R0, STATUS						      ;

		         4E	       55  E9 001C5 	    BLBC    STATUS, 6$						      ; 1105

		         54	  04   AE  D0 001C8 	    MOVL    KEY_DISP, R4					      ; 1123

	   04	         54	       00  F0 001CC 	    INSV    #0, R4, #4, PROTECT_AND				      ;

				FF35   CB     001D0									      ;

	   04	         54 FFFFFFFF   8F  F0 001D3 	    INSV    #-1, R4, #4, PROTECT_OR				      ; 1126

				FF37   CB     001DB									      ;

	   C0	         6B	       01  E1 001DE 4$:     BBC     #1, STR_PARSE_DESC+3, 2$				      ; 1133

				       52  DD 001E2 	    PUSHL   R2							      ; 1136

				  19   AB  9F 001E4 	    PUSHAB  CLI_WORK_AREA					      ;

				  FD   AB  9F 001E7 	    PUSHAB  STR_PARSE_DESC					      ;

		  0000G  DF	       03  FB 001EA 	    CALLS   #3, @COPY$CLI_RESULT				      ;

		    08   AE	       01  D0 001EF 	    MOVL    #1, CHAR_DESC					      ; 1141

		         56	  05   AB  3C 001F3 	    MOVZWL  STR_PARSE_DESC+8, R6				      ; 1143

		         53	       01  CE 001F7 	    MNEGL   #1, INDEX						      ;

				       2D  11 001FA 	    BRB     8$							      ;

      0C   AE	    09   AB	       53  C1 001FC 5$:     ADDL3   INDEX, STR_PARSE_DESC+12, CHAR_DESC+4		      ; 1146

				       5E  DD 00202 	    PUSHL   SP							      ; 1148

				0000G  CF  9F 00204 	    PUSHAB  COPY$PROT_VALUE					      ;

				  10   AE  9F 00208 	    PUSHAB  CHAR_DESC						      ;

		  0000G  CF	       03  FB 0020B 	    CALLS   #3, LIB$LOOKUP_KEY					      ;

		         55	       50  D0 00210 	    MOVL    R0, STATUS						      ;

		         09	       55  E8 00213 	    BLBS    STATUS, 7$						      ; 1153

				  05   AB  9F 00216 6$:     PUSHAB  STR_PARSE_DESC+8					      ; 1162

				       01  DD 00219 	    PUSHL   #1							      ;

				       55  DD 0021B 	    PUSHL   STATUS						      ;

				       23  11 0021D 	    BRB     9$							      ;

	   50	         54	       6E  C1 0021F 7$:     ADDL3   BIT_DISP, R4, R0					      ; 1168

	   00	  FF37   CB	       50  E5 00223 	    BBCC    R0, PROTECT_OR, 8$					      ;

	   CF	         53	       56  F2 00229 8$:     AOBLSS  R6, INDEX, 5$					      ; 1143

	   AD	         6B	       01  E1 0022D 	    BBC     #1, STR_PARSE_DESC+3, 4$				      ; 1176

				  05   AB  9F 00231 	    PUSHAB  STR_PARSE_DESC+8					      ; 1185

				       01  DD 00234 	    PUSHL   #1							      ;

		         7E	111A   8F  3C 00236 	    MOVZWL  #4378, -(SP)					      ;

		  0000G  CF	       01  FB 0023B 	    CALLS   #1, COPY$MSG_NUMBER					      ;

				       50  DD 00240 	    PUSHL   R0							      ;

				  1C   AE  9F 00242 9$:     PUSHAB  QUAL_VALUE_DESC					      ;

				       01  DD 00245 	    PUSHL   #1							      ;

		         7E	10FC   8F  3C 00247 	    MOVZWL  #4348, -(SP)					      ;

		  0000G  CF	       01  FB 0024C 	    CALLS   #1, COPY$MSG_NUMBER					      ;

				       50  DD 00251 	    PUSHL   R0							      ;

	      00000000G  00	       06  FB 00253 	    CALLS   #6, LIB$STOP					      ;

					   04 0025A 10$:    RET     							      ; 1001



; Routine Size:  228 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 10-5

; Digital Equipment Corporation

;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:43:05	DBB3:[COPY.SRC]COPYCLI.B32;17					Page 11

; Digital Equipment Corporation

;

;	1201	END

;	1202	ELUDOM









							    .GLOBL  LIB$STOP



;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  $GLOBAL$       	  1010    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $CODE$         	   603  NOWRT,  RD ,  EXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)









;				LIBRARY STATISTICS

;

;					     -------- Symbols --------    Blocks

;	File				     Total    Loaded   Percent      Read

;

;  DBA4:[SYSLIB]STARLET.L32;1		      2688        66         2       134

;  DBA4:[SYSLIB]CLIMAC.L32;1		        14        14       100        14

;  DBB3:[COPY.SRC]VMSMAC.L32;1		         6         3        50         4











; Size:		603 code + 1010 data bytes

; Run Time:	00:54.0

; Elapsed Time:	01:47.9

; Memory Used:	260 pages

; Compilation Complete

