

; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 1

; Digital Equipment Corporation

;

;	0001	%TITLE	'HELP$HELP'

;	0002	MODULE HELP$HELP(	IDENT='04'

;	0003			,MAIN=HELP$HELP

;	0004				) =

;	0005	

;	0006	BEGIN

;	0007	

;	0008	! COPYRIGHT (C) 1977

;	0009	! DIGITAL EQUIPMENT CORPORATION,  MAYNARD, MASSACHUSETTS  01754

;	0010	!

;	0011	! THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON  A

;	0012	! SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU-

;	0013	! SION OF THE ABOVE COPYRIGHT NOTICE.  THIS  SOFTWARE,  OR  ANY

;	0014	! OTHER  COPIES  THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE

;	0015	! AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON  SUCH  SYSTEM

;	0016	! AND  TO  ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE TO AND

;	0017	! OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.

;	0018	!

;	0019	! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT

;	0020	! NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL

;	0021	! EQUIPMENT CORPORATION.

;	0022	!

;	0023	! DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF

;	0024	! ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

;	0025	!

;	0026	!

;	0027	!++

;	0028	!

;	0029	!

;	0030	! FACILITY:	VMS NATIVE HELP UTILITY

;	0031	!

;	0032	! ABSTRACT:

;	0033	! 	THIS MODULE CONTAINS THE NATIVE HELP UTILITY THAT FORMS,

;	0034	!	TOGETHER WITH A SET OF HELP TEXT FILES, THE STARLET HELP 

;	0035	!	FACILITY

;	0036	!

;	0037	! ENVIRONMENT:	USER MODE

;	0038	!

;	0039	!--

;	0040	!

;	0041	!	VERSION: 03.00

;	0042	!

;	0043	! HISTORY:

;	0044	!

;	0045	!	AUTHOR: B.U. WALTHER 12-AUG-1977

;	0046	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 2

; Digital Equipment Corporation

;

;	0047	%SBTTL	'HISTORY'

;	0048	!

;	0049	!	MODIFICATIONS:

;	0050	!

;	0051	! NO.	DATE		PROGRAMMER	PURPOSE

;	0052	! ---	----		----------	-------

;	0053	!  02 	4-OCT-77	B. U. WALTHER	CORRECT BUG (CLOSE FILES)

;	0054	!					VARIOUS FORMATTING IMPROVEMENTS

;	0055	!					RECOGNIZE /*

;	0056	!

;	0057	!  03	10-JAN-78	B. U. WALTHER	INCORPORATE CALLS TO PUT_MESSAGE

;	0058	!  04	25-FEB-78	B. U. WALTHER	OPTIMIZATION

;	0059	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 3

; Digital Equipment Corporation

;

;	0060	%SBTTL	'GLOBAL DECLARATIONS'

;	0061	

;	0062	!

;	0063	! TABLE OF CONTENTS

;	0064	!

;	0065	

;	0066	FORWARD ROUTINE

;	0067		HELP$HELP,			! INITIALIZATION

;	0068		ALFA,				! MAIN LOOP FOR A LEVEL

;	0069		GET_PARAM	:NOVALUE,	! GET PARAMETERS FROM COMMAND LINE

;	0070		MATCH,				! FIND ALL MATCHES ON THIS LEVEL

;	0071		UPPER_CASE	:NOVALUE,	! CONVERT A STRING TO UPPER CASE

;	0072		PRINT_OPTIONS	:NOVALUE,	! PRINT OPTIONS FOR THIS LEVEL

;	0073		DO_PARAGRAF,			! PROCESS A PARAGRAPH

;	0074		READ_LINE	,		! READ LINE FROM CURRENT FILE

;	0075		PRINT_LINE	:NOVALUE;	! PRINT CURRENT LINE ON OUTPUT

;	0076	!

;	0077	! INCLUDE FILES:

;	0078	!

;	0079	

;	0080	LIBRARY 'SYS$LIBRARY:STARLET.L32';

;	0081	

;	0082	!

;	0083	! BUILTIN DECLARATIONS

;	0084	!

;	0085	

;	0086	BUILTIN

;	0087		ACTUALCOUNT,

;	0088		ACTUALPARAMETER;

;	0089	!

;	0090	! MACROS 

;	0091	!

;	0092	

;	0093	MACRO TRUE=1%, FALSE=0%;

;	0094	

;	0095	!

;	0096	! $SHR_MESSAGES - a macro which defines facility-specific message codes

;	0097	!	which are based on the system-wide shared message codes.

;	0098	!

;	0099	!	$SHR_MESSAGES( name, code, (msg,severity), ... )

;	0100	!

;	0101	!	where:

;	0102	!	    "name" is the name of the facility (e.g., COPY)

;	0103	!	    "code" is the corresponding facility code (e.g., 103)

;	0104	!	    "msg" is the name of the shared message (e.g., BEGIN)

;	0105	!	    "severity" is the desired message severity (e.g., 1, 0, 2, 4)

;	0106	!

;	0107	

;	0108	MACRO

;	0109	    $SHR_MESSAGES( FACILITY_NAME, FACILITY_CODE ) =

;     M 0110		LITERAL

;     M 0111		SHR$MSG_IDS( FACILITY_NAME, FACILITY_CODE, %REMAINING ); %,

;	0112	

;	0113	    SHR$MSG_IDS( FACILITY_NAME, FACILITY_CODE) [ VALUE ] =

;     M 0114		SHR$MSG_CALC( FACILITY_NAME, FACILITY_CODE, %REMOVE(VALUE) ) %,



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 3-1

; Digital Equipment Corporation

;

;	0115	

;	0116	    SHR$MSG_CALC( FACILITY_NAME, FACILITY_CODE, MSG_ID, SEVERITY ) =

;     M 0117		%NAME(FACILITY_NAME,'$_',MSG_ID) = %NAME('SHR$_',MSG_ID) + FACILITY_CODE*65536 +

;     M 0118		    %IF %DECLARED(%NAME('STS$K_',SEVERITY))

;     M 0119			%THEN %NAME('STS$K_',SEVERITY)

;     M 0120			%ELSE SEVERITY %FI %,

;	0121	

;	0122	    PUT_MESSAGE( MSG_SYMBOL ) =

;     M 0123		%IF MSG_SYMBOL MOD 8 NEQ STS$K_SEVERE

;     M 0124		    %THEN SIGNAL

;     M 0125		    %ELSE SIGNAL_STOP %FI

;     M 0126		( MSG_SYMBOL

;     M 0127		%IF %LENGTH GTR 1

;     M 0128		    %THEN , %REMAINING %FI  ) %,

;	0129	

;	0130	    PUT_MESSAGEX(MSG_VALUE)=

;     M 0131		IF MSG_VALUE MOD 8 NEQ STS$K_SEVERE

;     M 0132		THEN SIGNAL(MSG_VALUE

;     M 0133		    %IF %LENGTH GTR 1

;     M 0134		    %THEN , %REMAINING %FI)

;     M 0135		ELSE SIGNAL_STOP(MSG_VALUE

;     M 0136		    %IF %LENGTH GTR 1

;     M 0137		    %THEN , %REMAINING %FI) %;

;	0138	!

;	0139	! EQUATED SYMBOLS:

;	0140	!

;	0141	

;	0142	LITERAL

;	0143		MAX_LEVELS=10,			! MAXIMUM NUMBER OF LEVELS OF DATA

;	0144		OUTPUT_MARGIN=80,		! MARGIN WHEN PACKING ITEMS ON A LINE FOR PRINTING

;	0145		SPACE_ITEMS=2,			! NUMBER OF BLANKS TO SPACE BETWEEN ITEMS PACKED ON A LINE

;	0146		DEF_TAB_WIDTH=11,		! DEFAULT LOGICAL TAB WIDTH FOR OPTION PRINTING

;	0147		MAX_MBC=16,			! MULTI-BUFFER COUNT FOR LEVEL 0

;	0148		MBC_DIV_FACT=2,			! FACTOR BY WHICH TO DIVIDE MBC FOR EACH LEVEL

;	0149		INDENT=2,			! OUTPUT INDENTATION PER LEVEL

;	0150		MAX_LINE_SIZE=132,		! SIZE OF LINE BUFFER (INPUT AND OUTPUT)

;	0151		MAX_COM_SIZE=132,		! MAXIMUM SIZE OF COMMAND LINE IMAGE

;	0152		MATCH_ALL_SIZE=1,		! SIZE OF THE MATCH ALL STRING

;	0153		COMMENT_CHAR='!',

;	0154		ASTERIX='*',

;	0155		SLASH='/',

;	0156		AT_SIGN='@';

;	0157	BIND

;	0158		MATCH_ALL_STR= UPLIT BYTE('*'),	! DEFINE THE MATCH ALL STRING

;	0159		CONTROL_CHARS= UPLIT BYTE(COMMENT_CHAR,ASTERIX,SLASH,AT_SIGN);

;	0160						! DEFINE CONTROL CHARACTERS FOR INPUT

;	0161	LITERAL

;	0162		MAX_CONTROL_CH=4,		! LENGTH OF CONTROL CHARACTER STRING

;	0163		BLANK=' ',			!

;	0164		TAB=%DECIMAL'9',		!

;	0165		MAX_TAB_SIZE=((MAX_LEVELS*INDENT+8)/4)*4;	!ALLOW TWO MORE TAB THAN LEVELS

;	0166	

;	0167	!

;	0168	! HELP MESSAGE CODES FROM SHARED MESSAGE DEFINITIONS

;	0169	!



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 3-2

; Digital Equipment Corporation

;

;	0170	

;	0171	$SHR_MESSAGES(HELP,118,			!

;     P 0172			( OPENIN, ERROR),	! ERROR OPENING "X" AS INPUT

;     P 0173			( OPENOUT, SEVERE),	! ERROR OPENING "X" AS OUTPUT

;     P 0174			( CLOSEIN, SEVERE),	! ERROR CLOSING "X" AS INPUT

;     P 0175			( READERR, ERROR),	! ERROR READING "X"

;     P 0176			( WRITEERR, SEVERE));	! ERROR WRITING "X" 

;	0177	

;	0178	!

;	0179	! HELP UTILITY PRIVATE MESSAGE TEXT

;	0180	!

;	0181	

;	0182	BIND	MSG_NODOC=

;	0183			UPLIT BYTE('Sorry, no documentation on  '),

;	0184		MSG_OPTIONS=

;	0185			UPLIT BYTE('Additional information available:'),

;	0186		MSG_NODATA=

;	0187			UPLIT BYTE('Sorry, no data at this level for keyword   ');

;	0188	LITERAL	MSG_NODOC_LEN=

;	0189			%CHARCOUNT('Sorry, no documentation on  '),

;	0190		MSG_OPTIONS_LEN=

;	0191			%CHARCOUNT('Additional information available:'),

;	0192		MSG_NODATA_LEN=

;	0193			%CHARCOUNT('Sorry, no data at this level for keyword   ');

;	0194	!

;	0195	! OWN STORAGE

;	0196	!

;	0197	

;	0198	!

;	0199	! RMS STRUCTURES FOR 'SYS$OUTPUT:'

;	0200	!

;	0201	

;	0202	OWN

;	0203		OUTPUT_RAB:	$RAB(),		! INITIALIZE RAB FOR 'OUTPUT'

;	0204		OUTPUT_NAM_DESC:  VECTOR[2]	! DESCRIPTOR TO NAME

;	0205		INITIAL (%CHARCOUNT('SYS$OUTPUT:'),

;	0206			UPLIT BYTE('SYS$OUTPUT:')),

;	0207	

;	0208	!

;	0209	! RMS STRUCTURES FOR HELP TEXT FILES

;	0210	!

;	0211	

;	0212		HELP_FNA:  VECTOR[NAM$C_MAXRSS,BYTE]	! BUFFER FOR CURRENT HELP 

;	0213			INITIAL (BYTE('HELP')),		! FILE NAME AND FNS.

;	0214		HELP_FNS: 				! INITIALIZE TO ROOT 

;	0215			INITIAL(%CHARCOUNT('HELP')),

;	0216		HELP_FNA_PT:  INITIAL(HELP_FNA);! DESCRIPTOR TO HELP FILE NAME

;	0217	BIND						!

;	0218		HELP_DNA =UPLIT BYTE('SYS$HELP:.HLP');	! DEFAULT DEVICE AND FILE TYPE

;	0219							! FOR ALL HELP FILES

;	0220	LITERAL

;	0221		HELP_DNS=%CHARCOUNT('SYS$HELP:.HLP');	! LENGTH OF DEFAULT FILE NAME

;	0222	

;	0223	

;	0224	!



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 3-3

; Digital Equipment Corporation

;

;	0225	! OVERALL RMS STATUS WORD

;	0226	!

;	0227	

;	0228	OWN

;	0229		RMS_STATUS:	LONG;

;	0230	

;	0231	!

;	0232	! FLAGS AND STATUS VARIABLES

;	0233	!

;	0234	

;	0235	OWN

;	0236		LEVEL:	LONG,

;	0237		GLOBAL_FLAGS:  BYTE		! ALLOCATE STORAGE FOR GLOBAL FLAGS

;	0238			INITIAL(BYTE(0)),

;	0239		LOCAL_FLAGS:	BLOCKVECTOR[MAX_LEVELS,1,BYTE]

;	0240				INITIAL(BYTE(REP MAX_LEVELS OF (0)));

;	0241						! AND LOCAL FLAGS

;	0242	MAP

;	0243		GLOBAL_FLAGS:	BITVECTOR[];

;	0244	

;	0245	MACRO

;	0246		QUAL_MODE(X)=LOCAL_FLAGS[X,0,0,1,0]%,

;	0247		MATCH_ALL_MODE =  GLOBAL_FLAGS[0]%,

;	0248		DONT_READ=GLOBAL_FLAGS[1]%,

;	0249	

;	0250	!

;	0251	! DEFINE STATUS BITS FOR READING 

;	0252	!

;	0253	

;	0254		TEXT=0 %,

;	0255		END_OF_FILE=1%,

;	0256		TITLE_FOUND=2%,

;	0257		QUAL_FOUND=3%,

;	0258		IND_FOUND=4%,

;	0259		DELIM_FOUND=5%;

;	0260	

;	0261	! WARNING : NUMBERS 2-4 HAVE TO CORRESPOND

;	0262	! TO THE POSITION OF CHARACTERS IN CONTROL_CHARS

;	0263	

;	0264	!

;	0265	! INPUT, OUTPUT AND COMMAND LINE BUFFERS

;	0266	!

;	0267	

;	0268	OWN				! ALLOCATE STRING OF BLANKS STRICTLY BEFORE LINE_BUFFER!

;	0269	TAB_STRING:	VECTOR[MAX_TAB_SIZE,BYTE]

;	0270			INITIAL(BYTE(REP MAX_TAB_SIZE OF (BLANK))),	! BECAUSE OF ALIGNMENT

;	0271	LINE_BUFFER: VECTOR[MAX_LINE_SIZE,BYTE],	!ALLOCATE LINE BUFFER

;	0272	COM_LINE_IMAGE: VECTOR[MAX_COM_SIZE,BYTE],	! ALLOCATE COMMAND LINE  IMAGE BUFFER

;	0273	LINE_SIZE:	LONG,				! ACTUAL LINE SIZE READ

;	0274	CUR_SIZE:	LONG,			! DESCRIPTOR TO CURRENT STRING

;	0275	CUR_STRING:	LONG,			!

;	0276	

;	0277	!

;	0278	! PARAMETER TABLE

;	0279	!



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 3-4

; Digital Equipment Corporation

;

;	0280	!	THE N'TH ENTRY IN THE PARAMETER TABLE IS A DESCRIPTOR

;	0281	!	TO THE N'TH PARAMETER IN THE COMMAND LINE.

;	0282	!	A ZERO WORD ENDS THE LIST.

;	0283	!

;	0284	

;	0285		PAR_TABLE:	BLOCKVECTOR[MAX_LEVELS+1,2,LONG]

;	0286			INITIAL(REP (MAX_LEVELS+1)*2 OF (0));

;	0287	

;	0288	! DEFINE ENTRY FORMAT

;	0289	MACRO

;	0290		PAR_SIZE (X) = PAR_TABLE[X,0,0,32,0] %,	! LENGTH OF PARAMETER

;	0291		PAR_STRING (X)=PAR_TABLE[X,1,0,32,0] %;	!  POINTER TO PARAMETER

;	0292	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 4

; Digital Equipment Corporation

;

;	0293	%SBTTL	'HELP$HELP'

;	0294	ROUTINE HELP$HELP(CLI_ARGLIS)=

;	0295	

;	0296	!++

;	0297	! FUNCTIONAL DESCRIPTION

;	0298	!

;	0299	!	HELP UTILITY INITIALIZATION ROUTINE

;	0300	!	CALLS CLI INTERFACE TO GET AND PARSE PARAMETERS,

;	0301	!	THEN CALLS MAIN LOOP FOR FIRST LEVEL

;	0302	!

;	0303	!

;	0304	!

;	0305	! INPUTS:

;	0306	!

;	0307	!	CLI_ARGLIS =

;	0308	!	ARGUMENT LIST PASSED BY THE STARLET COMMAND LANGUAGE INTERFACE

;	0309	!

;	0310	! IMPLICIT INPUTS:

;	0311	!

;	0312	!	LEVEL = LEVEL COUNTER

;	0313	!

;	0314	! OUTPUTS:

;	0315	!

;	0316	!	NONE

;	0317	!

;	0318	! IMPLICIT OUTPUTS:

;	0319	!

;	0320	!	NONE

;	0321	!

;	0322	! COMPLETION CODES:

;	0323	!

;	0324	!	SS$_NORMAL

;	0325	!	LAST RMS ERROR ENCOUNTERED

;	0326	!

;	0327	! SIDE EFFECTS:

;	0328	!

;	0329	!	NONE

;	0330	!

;	0331	!--

;	0332	

;	0333	BEGIN

;	0334	

;	0335	GET_PARAM(CLI_ARGLIS-4);	! GET PARAMETERS THROUGH CLI INTERFACE

;	0336					!  (PASS AP, NOT FIRST PARAMETER !!)

;	0337	LEVEL=0;			! INITIALIZE LEVEL COUNTER

;	0338	ALFA();				! CALL TOP LEVEL

;	0339	RETURN	.RMS_STATUS OR STS$M_INHIB_MSG;	! RETURN STATUS OF LAST RMS OPERATION

;	0340					! CALL TOP LEVEL AND RETURN STATUS

;	0341	END;





							    .TITLE  HELP$HELP

							    .IDENT  \04\



							    .PSECT  $PLIT$,NOWRT,NOEXE,2



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 4-1

; Digital Equipment Corporation

;



					      00000 P.AAA:  .ASCII  \*\							      ;

					      00001	    .BLKB   3

					      00004 P.AAB:  .BYTE   33, 42, 47, 64					      ;

					      00008 P.AAC:  .ASCII  \Sorry, no documentation on  \			      ;

					      00024 P.AAD:  .ASCII  \Additional information available:\			      ;

					      00045	    .BLKB   3

					      00048 P.AAE:  .ASCII  \Sorry, no data at this level for keyword   \	      ;

					      00073	    .BLKB   1

					      00074 P.AAF:  .ASCII  \SYS$OUTPUT:\					      ;

					      0007F	    .BLKB   1

					      00080 P.AAG:  .ASCII  \SYS$HELP:.HLP\					      ;

					      0008D	    .BLKB   3



							    .PSECT  $OWN$,NOEXE,2



					      00000 OUTPUT_RAB:

							    .BYTE   1							      ;

					      00001 	    .BYTE   68							      ;

					      00002 	    .WORD   0							      ;

					      00004 	    .LONG   0							      ;

					      00008 	    .LONG   0							      ;

					      0000C 	    .LONG   0							      ;

					      00010 	    .WORD   0, 0, 0						      ;

					      00016 	    .WORD   0							      ;

					      00018 	    .LONG   0							      ;

					      0001C 	    .WORD   0							      ;

					      0001E 	    .BYTE   0							      ;

					      0001F 	    .BYTE   0							      ;

					      00020 	    .WORD   0							      ;

					      00022 	    .WORD   0							      ;

					      00024 	    .LONG   0							      ;

					      00028 	    .LONG   0							      ;

					      0002C 	    .LONG   0							      ;

					      00030 	    .LONG   0							      ;

					      00034 	    .BYTE   0							      ;

					      00035 	    .BYTE   0							      ;

					      00036 	    .BYTE   0							      ;

					      00037 	    .BYTE   0							      ;

					      00038 	    .LONG   0							      ;

					      0003C 	    .LONG   0							      ;

					      00040 	    .LONG   0							      ;

					      00044 OUTPUT_NAM_DESC:

							    .LONG   11							      ;

					      00048 	    .ADDRESS  P.AAF						      ;

					      0004C HELP_FNA:

							    .ASCII  \HELP\						      ;

					      00050	    .BLKB   124

					      000CC HELP_FNS:

							    .LONG   4							      ;

					      000D0 HELP_FNA_PT:

							    .ADDRESS  HELP_FNA						      ;

					      000D4 RMS_STATUS:

							    .BLKB   4

					      000D8 LEVEL:  .BLKB   4



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 4-2

; Digital Equipment Corporation

;

					      000DC GLOBAL_FLAGS:

							    .BYTE   0							      ;

					      000DD	    .BLKB   3

					      000E0 LOCAL_FLAGS:

							    .BYTE   0, 0, 0, 0, 0, 0, 0, 0, 0, 0			      ;

					      000EA	    .BLKB   2

					      000EC TAB_STRING:

							    .BYTE   32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - ;

								    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32    ;

					      00108 LINE_BUFFER:

							    .BLKB   132

					      0018C COM_LINE_IMAGE:

							    .BLKB   132

					      00210 LINE_SIZE:

							    .BLKB   4

					      00214 CUR_SIZE:

							    .BLKB   4

					      00218 CUR_STRING:

							    .BLKB   4

					      0021C PAR_TABLE:

							    .LONG   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -;

								    0, 0, 0						      ;



						    MATCH_ALL_STR=	P.AAA

						    CONTROL_CHARS=	P.AAB

						    MSG_NODOC=		P.AAC

						    MSG_OPTIONS=	P.AAD

						    MSG_NODATA=		P.AAE

						    HELP_DNA=		P.AAG





							    .PSECT  $CODE$,NOWRT,2



					 0000 00000 HELP$HELP:

							    .WORD   Save nothing					      ; 0294

				       5C  DD 00002 	    PUSHL   AP							      ; 0335

		  0000V  CF	       01  FB 00004 	    CALLS   #1, GET_PARAM					      ;

				0000'  CF  D4 00009 	    CLRL    LEVEL						      ; 0337

		  0000V  CF	       00  FB 0000D 	    CALLS   #0, ALFA						      ; 0338

	   50	  0000'  CF 10000000   8F  C9 00012 	    BISL3   #268435456, RMS_STATUS, R0				      ; 0339

					   04 0001C 	    RET     							      ; 0294



; Routine Size:  29 bytes





;	0342	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 5

; Digital Equipment Corporation

;

;	0343	%SBTTL	'ALFA'

;	0344	!

;	0345	ROUTINE ALFA=

;	0346	

;	0347	!++

;	0348	! FUNCTIONAL DESCRIPTION

;	0349	!

;	0350	!	MAIN LOOP TO PROCESS ONE LEVEL

;	0351	!	CAN BE CALLED RECURSIVELY

;	0352	!	ARE TO BE DEFINED  LOCALLY FOR EACH LEVEL :

;	0353	!		- FAB AND RAB OF CURRENT LEVEL'S FILE

;	0354	!		- LOCAL FLAGS (SEE LIST)

;	0355	!		- GLOBAL FLAGS (SEE LIST)

;	0356	!

;	0357	! INPUTS:

;	0358	!

;	0359	!	NONE

;	0360	!

;	0361	! IMPLICIT INPUTS:

;	0362	!

;	0363	!	LEVEL = LEVEL COUNTER

;	0364	!	PAR_SIZE,PAR_STRING =

;	0365	!		DESCRIPTOR OF PARAMETER ASSOCIATED WITH THIS LEVEL

;	0366	!		(PAR_SIZE=0 MEANS NO PARAMETER)

;	0367	!	HELP_FNA,HELP_FNS,HELP_DNA,HELP_DNS,LINE_BUFFER,LINE_SIZE=

;	0368	!		INFORMATION NECESSARY TO OPEN CURRENT LEVEL FILE

;	0369	!		(HELP_FNS=0  MEANS NO MORE DATA AT THIS LEVEL)

;	0370	!	LOCAL FLAGS:

;	0371	!		QUAL_MODE[.LEVEL] = PARAMETER AT THIS LEVEL IS A QUALIFIER

;	0372	!	GLOBAL FLAGS:

;	0373	!		MATCH_ALL_MODE = A MATCH ALL SYMBOL WAS ENCOUNTERED 

;	0374	!		DONT_READ = SKIP BACK ONE LINE ON FILE CURRENTLY OPEN

;	0375	!

;	0376	! OUTPUTS:

;	0377	!

;	0378	!	NONE

;	0379	!

;	0380	! IMPLICIT OUTPUTS:

;	0381	!

;	0382	!	NONE

;	0383	!

;	0384	! ROUTINE VALUE:

;	0385	!

;	0386	!	FLAG	1: DATA FOR THIS LEVEL WAS FOUND 

;	0387	!		0: NO DATA FOR THIS LEVEL WAS FOUND

;	0388	!

;	0389	! SIDE EFFECTS:

;	0390	!

;	0391	!	CAN BE CALLED RECURSIVELY

;	0392	!	CREATES FAB AND RAB FOR CURRENT LEVEL FILE AND OPENS IT

;	0393	!

;	0394	!--

;	0395	

;	0396	BEGIN

;	0397	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 5-1

; Digital Equipment Corporation

;

;	0398	LOCAL

;	0399		READ_STATUS:,			! STATUS CODE OF LAST READ 

;	0400		MATCH_FOUND:,			! AT LEAST ONE MATCH WAS FOUND

;	0401		DATA_FOUND:,			! FLAG FOR DATA FOUND

;	0402		CALC_MBC:,			! CALCULATED MBC VALUE

;	0403		HELP_FAB:	$FAB_DECL,	! LOCAL RMS STRUCTURES

;	0404		HELP_RAB:	$RAB_DECL,	! FOR CURRENT LEVEL FILE

;	0405		HELP_NAM:	$NAM_DECL,	! DECLARE NAME BLOCK

;	0406		HELP_ESA:	VECTOR[NAM$C_MAXRSS,BYTE],

;	0407						! EXPANDED STRING BUFFER

;	0408		HELP_NAM_DESC:	VECTOR[2],	! DESCRIPTOR TO EXPANDED STRING NME

;	0409		RMS_STATUS:;			! RMS STATUS

;	0410	

;	0411	MAP

;	0412		READ_STATUS:	BITVECTOR[];

;	0413	

;	0414	!

;	0415	! CLEAR RETURN STATUS

;	0416	!

;	0417	

;	0418	DATA_FOUND=FALSE;

;	0419	

;	0420	!

;	0421	! INITIALIZE RMS STRUCTURES FOR CURRENT LEVEL FILE

;	0422	!

;	0423	

;	0424	CALC_MBC=MAX_MBC;			! SET MULTI-BUFFER COUNT TO MAXIMUM

;	0425	IF	.LEVEL NEQU 0			! REDUCE MBC FOR HIGHER LEVELS

;	0426	THEN	BEGIN

;	0427		INCR I FROM 0 TO .LEVEL		! DIVIDE BY A FACTOR FOR EACH LEVEL

;	0428		DO	CALC_MBC=.CALC_MBC/MBC_DIV_FACT;

;	0429		IF .CALC_MBC LEQU 0		! MAKE SURE MINIMUM MBC IS ALLOCATED

;	0430	

;	0431		THEN CALC_MBC=1;

;	0432		END;

;	0433	

;	0434	$FAB_INIT(	FAB=HELP_FAB,		! INITIALIZE FAB

;     P 0435			FAC=GET,		! FOR CURRENT LEVEL FILE

;     P 0436			FOP=SQO,		! SEQUENTIAL ACCESS ONLY

;     P 0437			FNA=HELP_FNA,

;     P 0438			FNS=.HELP_FNS,

;     P 0439			DNA=HELP_DNA,

;     P 0440			DNS=HELP_DNS,

;     P 0441			NAM=HELP_NAM);

;	0442	$RAB_INIT(	RAB=HELP_RAB,		! ... AND RAB

;     P 0443			RAC=SEQ,

;     P 0444			FAB=HELP_FAB,		! 

;     P 0445			MBC=.CALC_MBC,		! PREVIOUSLY CALCULATED MBC

;     P 0446			ROP=RAH,		! READ AHEAD

;     P 0447			CTX=HELP_NAM_DESC,	! USE CTX FOR POINTER TO EXPANDED NAME

;     P 0448			UBF=LINE_BUFFER,	!

;     P 0449			USZ=MAX_LINE_SIZE);

;	0450	$NAM_INIT(	NAM=HELP_NAM,

;     P 0451			ESA=HELP_ESA,		! RESULTANT STRING ADDRESS

;     P 0452			ESS=NAM$C_MAXRSS);



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 5-2

; Digital Equipment Corporation

;

;	0453	

;	0454	!

;	0455	! OPEN AND CONNECT CURRENT LEVEL FILE

;	0456	!

;	0457	

;	0458	RMS_STATUS=$OPEN(FAB=HELP_FAB);	

;	0459	IF	.HELP_NAM[NAM$B_ESL] NEQU 0

;	0460	THEN	BEGIN

;	0461		HELP_NAM_DESC[0]=.HELP_NAM[NAM$B_ESL];

;	0462		HELP_NAM_DESC[1]=.HELP_NAM[NAM$L_ESA];

;	0463		END

;	0464	ELSE	BEGIN

;	0465		HELP_NAM_DESC[0]=.HELP_FNS;

;	0466		HELP_NAM_DESC[1]=HELP_FNA;

;	0467		END;

;	0468					! BUILD DESCRIPTOR TO EXPANDED FILE NAME

;	0469	IF 	NOT .RMS_STATUS

;	0470	THEN	BEGIN

;	0471		PUT_MESSAGE( HELP$_OPENIN,

;     P 0472			1,HELP_NAM_DESC,

;     P 0473			.RMS_STATUS,

;     P 0474			.HELP_FAB[FAB$L_STV]);

;	0475		RETURN TRUE;		! EXIT ON ERROR

;	0476		END

;	0477	ELSE	IF NOT (RMS_STATUS=$CONNECT(RAB=HELP_RAB))

;	0478		THEN 	BEGIN

;	0479			PUT_MESSAGE(HELP$_OPENIN,

;     P 0480				1,HELP_NAM_DESC,

;     P 0481				.RMS_STATUS,

;     P 0482				.HELP_RAB[FAB$L_STV]);

;	0483			RETURN TRUE;		! EXIT ON ERROR

;	0484			END;

;	0485	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 6

; Digital Equipment Corporation

;

;	0486	

;	0487	!

;	0488	! MAIN SCANNING ALGORITHM:

;	0489	!

;	0490	!	SCAN CURRENT LEVEL FILE FOR MATCHING KEYWORDS.

;	0491	!	WHENEVER A MATCH OCCURS, PRINT RELEVANT INFORMATION

;	0492	!	PROVIDED THE LAST INPUT PARAMETER IS BEEING PROCESSED,

;	0493	!	ELSE PROCEED DOWNWARD IN THE LOGICAL TREE

;	0494	!

;	0495	

;	0496	IF .PAR_SIZE [.LEVEL] NEQU 0	! HAVE WE PASSED THE LAST PARAMETER ?

;	0497	THEN	BEGIN

;	0498		MATCH_FOUND=FALSE;			!

;	0499		UNTIL	(WHILE	(READ_STATUS=READ_LINE(HELP_RAB);

;	0500				.READ_STATUS[TEXT])	! SKIP TO NEXT KEYWORD IN FILE

;	0501			DO;  .READ_STATUS[END_OF_FILE])	!

;	0502		DO	BEGIN

;	0503			DATA_FOUND=TRUE;		! SIGNAL THAT WE FOUND A KEYWORD

;	0504			IF MATCH(.READ_STATUS)		! DOES KEYWORD MATCH  PARAMETER?

;	0505			THEN 	BEGIN			!

;	0506				MATCH_FOUND=TRUE;	! SIGNAL AT LEAST ONE MATCH FOUND ON THIS LEVEL

;	0507				PRINT_LINE();		! BLANK LINE

;	0508				DO	PRINT_LINE(.CUR_STRING,.CUR_SIZE)

;	0509				WHILE	(READ_STATUS=READ_LINE(HELP_RAB);

;	0510					.READ_STATUS[DELIM_FOUND]);

;	0511							! PRINT ADJACENT KEYWORDS IF ANY

;	0512				IF	NOT .READ_STATUS[END_OF_FILE]

;	0513				THEN	BEGIN

;	0514					LEVEL=.LEVEL+1;		! INCREMENT LEVEL COUNTER

;	0515					DONT_READ=TRUE;		!

;	0516					IF NOT  DO_PARAGRAF(HELP_RAB)

;	0517								! PRINT RELEVANT INFORMATION

;	0518								! OR GO DOWN THE TREE IF NECESSARY

;	0519					THEN	BEGIN

;	0520						PRINT_LINE();	! BLANK LINE

;	0521					  	PRINT_LINE(MSG_NODATA,MSG_NODATA_LEN,

;	0522						.PAR_STRING[.LEVEL],.PAR_SIZE[.LEVEL]);

;	0523							! PRINT MESSAGE IF NO DATA AT THIS LEVEL

;	0524						END;

;	0525					LEVEL=.LEVEL-1;		! DECREMENT LEVEL COUNTER

;	0526					END;

;	0527				END;

;	0528			END;

;	0529	

;	0530	!

;	0531	! IF NO MATCH WAS FOUND AT THIS LEVEL, PRINT MAIN INFORMATION FOR	UAT

;	0532	! PREVIOUS LEVEL, AND A LIST OF OPTIONS

;	0533	!

;	0534	

;	0535		IF .DATA_FOUND AND NOT (.MATCH_FOUND OR .MATCH_ALL_MODE)

;	0536						!  AT LEAST ONE MATCH WAS FOUND

;	0537						! ( AND NO MATCH_ALL SYMBOL PREVIOUSLY ENCOUNTERED)

;	0538		THEN	BEGIN

;	0539			PRINT_LINE();		! BLANK LINE

;	0540			PRINT_LINE(MSG_NODOC,MSG_NODOC_LEN,



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 6-1

; Digital Equipment Corporation

;

;	0541					.PAR_STRING[.LEVEL],.PAR_SIZE[.LEVEL]);

;	0542						! SORRY, NO DOCUMENTATION ON CURRENT SUBJECT

;	0543			IF  NOT (RMS_STATUS= $REWIND(RAB=HELP_RAB))

;	0544			THEN 	BEGIN		! REWIND CURRENT LEVEL FILE

;	0545				PUT_MESSAGEX(.RMS_STATUS,

;     P 0546					.HELP_RAB[FAB$L_STV]);

;	0547				RETURN .DATA_FOUND

;	0548				END;

;	0549			PRINT_OPTIONS(HELP_RAB);! AND PRINT A LIST OF OPTIONS

;	0550			END

;	0551		END

;	0552	

;	0553	!

;	0554	! THIS WAS INDEED THE LAST PARAMETER :

;	0555	! PRINT FIRST PARAGRAPH OF FILE, FOLLOWED BY A LIST OF OPTIONS

;	0556	!

;	0557	

;	0558	ELSE	BEGIN

;	0559		DATA_FOUND=TRUE;		! SIGNAL DATA FOUND FOR THIS LEVEL

;	0560		PRINT_LINE();			! BLANK LINE

;	0561		WHILE	(READ_STATUS=READ_LINE(HELP_RAB);

;	0562			.READ_STATUS[TEXT])	! PRINT WHILE TEXT

;	0563		DO	PRINT_LINE(0);		!

;	0564		IF	NOT .READ_STATUS[END_OF_FILE]

;	0565		THEN 	BEGIN

;	0566			DONT_READ=TRUE;		! SIGNAL SKIP BACK

;	0567			PRINT_OPTIONS(HELP_RAB); ! PRINT LIST OF OPTIONS

;	0568			END;

;	0569		END;

;	0570	

;	0571	!

;	0572	! CLOSE CURRENT LEVEL FILE

;	0573	!

;	0574	

;	0575	IF 	NOT (RMS_STATUS=$CLOSE(FAB=HELP_FAB))

;	0576	THEN	PUT_MESSAGE( HELP$_CLOSEIN,		

;     P 0577			1,HELP_NAM_DESC,

;     P 0578			.HELP_FAB[FAB$L_STS],

;     P 0579			.HELP_FAB[FAB$L_STV]);

;	0580	

;	0581	!

;	0582	! RETURN LAST RMS STATUS

;	0583	!

;	0584	

;	0585	RETURN .DATA_FOUND;

;	0586	END;







							    .GLOBL  SYS$OPEN, SYS$CONNECT, SYS$REWIND, SYS$CLOSE



					 0FFC 0001D ALFA:   .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11		      ; 0345

		         59 00000000G  00  9E 0001F 	    MOVAB   LIB$SIGNAL, R9					      ;

		         5A	0000V  CF  9E 00026 	    MOVAB   PRINT_LINE, R10					      ;

		         5B	0000'  CF  9E 0002B 	    MOVAB   LEVEL, R11						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 6-2

; Digital Equipment Corporation

;

		         5E	FEAC   CE  9E 00030 	    MOVAB   -340(SP), SP					      ;

		         57	       10  7D 00035 	    MOVQ    #16, CALC_MBC					      ; 0424

		         51	       6B  D0 00038 	    MOVL    LEVEL, R1						      ; 0425

				       13  13 0003B 	    BEQL    3$							      ;

		         50	       01  CE 0003D 	    MNEGL   #1, I						      ; 0427

				       03  11 00040 	    BRB     2$							      ;

		         57	       02  C6 00042 1$:     DIVL2   #2, CALC_MBC					      ; 0428

	   F9	         50	       51  F3 00045 2$:     AOBLEQ  R1, I, 1$						      ; 0427

				       57  D5 00049 	    TSTL    CALC_MBC						      ; 0429

				       03  1A 0004B 	    BGTRU   3$							      ;

		         57	       01  D0 0004D 	    MOVL    #1, CALC_MBC					      ; 0431

		         56	  B0   AD  9E 00050 3$:     MOVAB   HELP_FAB, $RMS_PTR					      ; 0441

	   00	         6E	       00  2C 00054 	    MOVC5   #0, (SP), #0, #80, ($RMS_PTR)			      ;

		         66	0050   8F     00058									      ;

		         66	5003   8F  B0 0005C 	    MOVW    #20483, ($RMS_PTR)					      ;

		    04   A6	  40   8F  9A 00061 	    MOVZBL  #64, 4($RMS_PTR)					      ;

		    16   A6	       02  90 00066 	    MOVB    #2, 22($RMS_PTR)					      ;

		    1F   A6	       02  90 0006A 	    MOVB    #2, 31($RMS_PTR)					      ;

		    28   A6	0088   CE  9E 0006E 	    MOVAB   HELP_NAM, 40($RMS_PTR)				      ;

		    2C   A6	FF74   CB  9E 00074 	    MOVAB   HELP_FNA, 44($RMS_PTR)				      ;

		    30   A6	0000'  CF  9E 0007A 	    MOVAB   HELP_DNA, 48($RMS_PTR)				      ; 0345

		    34   A6	  F4   AB  90 00080 	    MOVB    HELP_FNS, 52($RMS_PTR)				      ; 0441

		    35   A6	       0D  90 00085 	    MOVB    #13, 53($RMS_PTR)					      ;

		         56	FF6C   CD  9E 00089 	    MOVAB   HELP_RAB, $RMS_PTR					      ; 0449

	   00	         6E	       00  2C 0008E 	    MOVC5   #0, (SP), #0, #68, ($RMS_PTR)			      ;

		         66	0044   8F     00092									      ;

		         66	4401   8F  B0 00096 	    MOVW    #17409, ($RMS_PTR)					      ;

		    04   A6	0200   8F  3C 0009B 	    MOVZWL  #512, 4($RMS_PTR)					      ;

		    18   A6	       6E  9E 000A1 	    MOVAB   HELP_NAM_DESC, 24($RMS_PTR)				      ;

				  1E   A6  94 000A5 	    CLRB    30($RMS_PTR)					      ;

		    20   A6	  84   8F  9B 000A8 	    MOVZBW  #132, 32($RMS_PTR)					      ;

		    24   A6	  30   AB  9E 000AD 	    MOVAB   LINE_BUFFER, 36($RMS_PTR)				      ;

		    37   A6	       57  90 000B2 	    MOVB    CALC_MBC, 55($RMS_PTR)				      ;

		    3C   A6	  B0   AD  9E 000B6 	    MOVAB   HELP_FAB, 60($RMS_PTR)				      ;

		         57	0088   CE  9E 000BB 	    MOVAB   HELP_NAM, $RMS_PTR					      ; 0452

	   00	         6E	       00  2C 000C0 	    MOVC5   #0, (SP), #0, #56, ($RMS_PTR)			      ;

		         67	       38     000C4									      ;

		         67	3802   8F  B0 000C6 	    MOVW    #14338, ($RMS_PTR)					      ;

		    0A   A7	  80   8F  90 000CB 	    MOVB    #-128, 10($RMS_PTR)					      ;

		    0C   A7	  08   AE  9E 000D0 	    MOVAB   HELP_ESA, 12($RMS_PTR)				      ;

				  B0   AD  9F 000D5 	    PUSHAB  HELP_FAB						      ; 0458

	      00000000G  9F	       01  FB 000D8 	    CALLS   #1, @#SYS$OPEN					      ;

		         53	       50  D0 000DF 	    MOVL    R0, RMS_STATUS					      ;

				0093   CE  95 000E2 	    TSTB    HELP_NAM+11						      ; 0459

				       0D  13 000E6 	    BEQL    4$							      ;

		         6E	0093   CE  9A 000E8 	    MOVZBL  HELP_NAM+11, HELP_NAM_DESC				      ; 0461

		    04   AE	0094   CE  D0 000ED 	    MOVL    HELP_NAM+12, HELP_NAM_DESC+4			      ; 0462

				       0A  11 000F3 	    BRB     5$							      ; 0459

		         6E	  F4   AB  D0 000F5 4$:     MOVL    HELP_FNS, HELP_NAM_DESC				      ; 0465

		    04   AE	FF74   CB  9E 000F9 	    MOVAB   HELP_FNA, HELP_NAM_DESC+4				      ; 0466

		         05	       53  E8 000FF 5$:     BLBS    RMS_STATUS, 6$					      ; 0469

				  BC   AD  DD 00102 	    PUSHL   HELP_FAB+12						      ; 0474

				       15  11 00105 	    BRB     7$							      ;

				FF6C   CD  9F 00107 6$:     PUSHAB  HELP_RAB						      ; 0477

	      00000000G  9F	       01  FB 0010B 	    CALLS   #1, @#SYS$CONNECT					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 6-3

; Digital Equipment Corporation

;

		         53	       50  D0 00112 	    MOVL    R0, RMS_STATUS					      ;

		         18	       53  E8 00115 	    BLBS    RMS_STATUS, 8$					      ;

				FF78   CD  DD 00118 	    PUSHL   HELP_RAB+12						      ; 0482

				       53  DD 0011C 7$:     PUSHL   RMS_STATUS						      ;

				  08   AE  9F 0011E 	    PUSHAB  HELP_NAM_DESC					      ;

				       01  DD 00121 	    PUSHL   #1							      ;

			    0076109A   8F  DD 00123 	    PUSHL   #7737498						      ;

		         69	       05  FB 00129 	    CALLS   #5, LIB$SIGNAL					      ;

		         50	       01  D0 0012C 	    MOVL    #1, R0						      ; 0483

					   04 0012F 	    RET     							      ;

	   50	         6B	       01  78 00130 8$:     ASHL    #1, LEVEL, R0					      ; 0496

				0144 CB40  D5 00134 	    TSTL    PAR_TABLE[R0]					      ;

				       03  12 00139 	    BNEQ    9$							      ;

				     00D8  31 0013B 	    BRW     17$							      ;

				       54  D4 0013E 9$:     CLRL    MATCH_FOUND						      ; 0498

				FF6C   CD  9F 00140 10$:    PUSHAB  HELP_RAB						      ; 0499

		  0000V  CF	       01  FB 00144 	    CALLS   #1, READ_LINE					      ;

		         52	       50  D0 00149 	    MOVL    R0, READ_STATUS					      ;

		         F1	       52  E8 0014C 	    BLBS    READ_STATUS, 10$					      ; 0500

	   62	         52	       01  E0 0014F 	    BBS     #1, READ_STATUS, 13$				      ; 0501

		         58	       01  D0 00153 	    MOVL    #1, DATA_FOUND					      ; 0503

				       52  DD 00156 	    PUSHL   READ_STATUS						      ; 0504

		  0000V  CF	       01  FB 00158 	    CALLS   #1, MATCH						      ;

		         E0	       50  E9 0015D 	    BLBC    R0, 10$						      ;

		         54	       01  D0 00160 	    MOVL    #1, MATCH_FOUND					      ; 0506

		         6A	       00  FB 00163 	    CALLS   #0, PRINT_LINE					      ; 0507

				013C   CB  DD 00166 11$:    PUSHL   CUR_SIZE						      ; 0508

				0140   CB  DD 0016A 	    PUSHL   CUR_STRING						      ;

		         6A	       02  FB 0016E 	    CALLS   #2, PRINT_LINE					      ;

				FF6C   CD  9F 00171 	    PUSHAB  HELP_RAB						      ; 0509

		  0000V  CF	       01  FB 00175 	    CALLS   #1, READ_LINE					      ;

		         52	       50  D0 0017A 	    MOVL    R0, READ_STATUS					      ;

	   E5	         52	       05  E0 0017D 	    BBS     #5, READ_STATUS, 11$				      ;

	   BB	         52	       01  E0 00181 	    BBS     #1, READ_STATUS, 10$				      ; 0512

				       6B  D6 00185 	    INCL    LEVEL						      ; 0514

		    04   AB	       02  88 00187 	    BISB2   #2, GLOBAL_FLAGS					      ; 0515

				FF6C   CD  9F 0018B 	    PUSHAB  HELP_RAB						      ; 0516

		  0000V  CF	       01  FB 0018F 	    CALLS   #1, DO_PARAGRAF					      ;

		         1A	       50  E8 00194 	    BLBS    R0, 12$						      ;

		         6A	       00  FB 00197 	    CALLS   #0, PRINT_LINE					      ; 0520

	   50	         6B	       01  78 0019A 	    ASHL    #1, LEVEL, R0					      ; 0522

				0144 CB40  DD 0019E 	    PUSHL   PAR_TABLE[R0]					      ; 0521

				0148 CB40  DD 001A3 	    PUSHL   PAR_TABLE+4[R0]					      ;

				       2B  DD 001A8 	    PUSHL   #43							      ;

				0000'  CF  9F 001AA 	    PUSHAB  MSG_NODATA						      ; 0345

		         6A	       04  FB 001AE 	    CALLS   #4, PRINT_LINE					      ; 0521

				       6B  D7 001B1 12$:    DECL    LEVEL						      ; 0525

				       8B  11 001B3 	    BRB     10$							      ; 0504

		         03	       58  E8 001B5 13$:    BLBS    DATA_FOUND, 15$					      ; 0535

				     0088  31 001B8 14$:    BRW     21$							      ;

		         FA	       54  E8 001BB 15$:    BLBS    MATCH_FOUND, 14$					      ;

		         F6	  04   AB  E8 001BE 	    BLBS    GLOBAL_FLAGS, 14$					      ;

		         6A	       00  FB 001C2 	    CALLS   #0, PRINT_LINE					      ; 0539

	   50	         6B	       01  78 001C5 	    ASHL    #1, LEVEL, R0					      ; 0541

				0144 CB40  DD 001C9 	    PUSHL   PAR_TABLE[R0]					      ; 0540



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 6-4

; Digital Equipment Corporation

;

				0148 CB40  DD 001CE 	    PUSHL   PAR_TABLE+4[R0]					      ;

				       1C  DD 001D3 	    PUSHL   #28							      ;

				0000'  CF  9F 001D5 	    PUSHAB  MSG_NODOC						      ; 0345

		         6A	       04  FB 001D9 	    CALLS   #4, PRINT_LINE					      ; 0540

				FF6C   CD  9F 001DC 	    PUSHAB  HELP_RAB						      ; 0543

	      00000000G  9F	       01  FB 001E0 	    CALLS   #1, @#SYS$REWIND					      ;

		         53	       50  D0 001E7 	    MOVL    R0, RMS_STATUS					      ;

		         4D	       53  E8 001EA 	    BLBS    RMS_STATUS, 20$					      ;

	   00	         53	       01  7A 001ED 	    EMUL    #1, RMS_STATUS, #0, -(SP)				      ; 0546

				       7E     001F1									      ;

	   50	         8E	       08  7B 001F2 	    EDIV    #8, (SP)+, R0, R0					      ;

				       50     001F6									      ;

		         04	       50  D1 001F7 	    CMPL    R0, #4						      ;

				       0B  13 001FA 	    BEQL    16$							      ;

				FF78   CD  DD 001FC 	    PUSHL   HELP_RAB+12						      ;

				       53  DD 00200 	    PUSHL   RMS_STATUS						      ;

		         69	       02  FB 00202 	    CALLS   #2, LIB$SIGNAL					      ;

				       62  11 00205 	    BRB     22$							      ;

				FF78   CD  DD 00207 16$:    PUSHL   HELP_RAB+12						      ;

				       53  DD 0020B 	    PUSHL   RMS_STATUS						      ;

	      00000000G  00	       02  FB 0020D 	    CALLS   #2, LIB$STOP					      ;

				       53  11 00214 	    BRB     22$							      ; 0547

		         58	       01  D0 00216 17$:    MOVL    #1, DATA_FOUND					      ; 0559

		         6A	       00  FB 00219 	    CALLS   #0, PRINT_LINE					      ; 0560

				FF6C   CD  9F 0021C 18$:    PUSHAB  HELP_RAB						      ; 0561

		  0000V  CF	       01  FB 00220 	    CALLS   #1, READ_LINE					      ;

		         52	       50  D0 00225 	    MOVL    R0, READ_STATUS					      ;

		         07	       52  E9 00228 	    BLBC    READ_STATUS, 19$					      ; 0562

				       7E  D4 0022B 	    CLRL    -(SP)						      ; 0563

		         6A	       01  FB 0022D 	    CALLS   #1, PRINT_LINE					      ;

				       EA  11 00230 	    BRB     18$							      ; 0561

	   0D	         52	       01  E0 00232 19$:    BBS     #1, READ_STATUS, 21$				      ; 0564

		    04   AB	       02  88 00236 	    BISB2   #2, GLOBAL_FLAGS					      ; 0566

				FF6C   CD  9F 0023A 20$:    PUSHAB  HELP_RAB						      ; 0567

		  0000V  CF	       01  FB 0023E 	    CALLS   #1, PRINT_OPTIONS					      ;

				  B0   AD  9F 00243 21$:    PUSHAB  HELP_FAB						      ; 0575

	      00000000G  9F	       01  FB 00246 	    CALLS   #1, @#SYS$CLOSE					      ;

		         53	       50  D0 0024D 	    MOVL    R0, RMS_STATUS					      ;

		         16	       53  E8 00250 	    BLBS    RMS_STATUS, 22$					      ;

		         7E	  B8   AD  7D 00253 	    MOVQ    HELP_FAB+8, -(SP)					      ; 0579

				  08   AE  9F 00257 	    PUSHAB  HELP_NAM_DESC					      ;

				       01  DD 0025A 	    PUSHL   #1							      ;

			    00761054   8F  DD 0025C 	    PUSHL   #7737428						      ;

	      00000000G  00	       05  FB 00262 	    CALLS   #5, LIB$STOP					      ;

		         50	       58  D0 00269 22$:    MOVL    DATA_FOUND, R0					      ; 0585

					   04 0026C 	    RET     							      ; 0345



; Routine Size:  592 bytes





;	0587	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 7

; Digital Equipment Corporation

;

;	0588	%SBTTL 'PRINT_OPTIONS'

;	0589	ROUTINE PRINT_OPTIONS(F_RAB):NOVALUE=

;	0590	

;	0591	!++

;	0592	! FUNCTIONAL DESCRIPTION

;	0593	!

;	0594	! PRINTS OPTIONS FOR CURRENT LEVEL I.E JUST TITLES (OR QUALIFIERS)

;	0595	! ATTEMPTS TO PACK ITEMS IN ONE LINE FOR READABLILITY

;	0596	!

;	0597	! INPUTS:

;	0598	!

;	0599	!	 RAB OF CURRENT LEVEL'S FILE

;	0600	!

;	0601	! IMPLICIT INPUTS:

;	0602	!

;	0603	!	FORMATTING INFORMATION (CONSTANTS) :

;	0604	!		OUTPUT_MARGIN,BLANK_STRING,INDENT,SPACE_ITEM

;	0605	!	LEVEL = LEVEL COUNTER

;	0606	!

;	0607	!	EXPECTS CURRENT FILE TO BE POSITIONED CORRECTLY

;	0608	!

;	0609	! OUTPUTS:

;	0610	!

;	0611	!	NONE

;	0612	!

;	0613	! IMPLICIT OUTPUTS:

;	0614	!

;	0615	!	NONE

;	0616	!

;	0617	! ROUTINE VALUE:

;	0618	!

;	0619	!	NONE

;	0620	!

;	0621	! SIDE EFFECTS:

;	0622	!

;	0623	!	NONE

;	0624	!

;	0625	!--

;	0626	

;	0627	BEGIN

;	0628	

;	0629	LITERAL

;	0630		MAX_TAB_STOPS=(OUTPUT_MARGIN/DEF_TAB_WIDTH)+1;

;	0631					! CALCULATE MAXIMUM NUMBER OF LOGICAL TABS

;	0632	LOCAL

;	0633		READ_STATUS:,		! STATUS OF READ OPERATION

;	0634		FIRST_LINE:,		! FLAG FOR SOMETHING PRINTED

;	0635		LAST_KEY_TYPE:,		! REMEMBER LAST KEYWORD TYPE

;	0636		OUTPUT_POS:,		! KEEP TRACK OF OUTPUT POSITION

;	0637		TAB_INDEX:,		! KEEP TRACK OF LOGICAL TABS

;	0638		OUT_LINE_LIMIT:,	! OUTPUT LINE LIMIT

;	0639		OUT_LINE:	VECTOR[OUTPUT_MARGIN,BYTE],

;	0640					! OUTPUT BUFFER FOR PACKING

;	0641		LOGICAL_TABS:	VECTOR[MAX_TAB_STOPS+1];

;	0642					! ARRAY OF LOGICAL TABS



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 7-1

; Digital Equipment Corporation

;

;	0643	MAP

;	0644		READ_STATUS: BITVECTOR[];

;	0645	

;	0646	!

;	0647	! INITIALIZE COUNTERS AND POINTERS

;	0648	!

;	0649	

;	0650	OUTPUT_POS=OUT_LINE;			! RESET POSITION COUNTER

;	0651	OUT_LINE_LIMIT=OUT_LINE+OUTPUT_MARGIN-(.LEVEL+1)*INDENT;

;	0652						! COMPUTE LIMIT 

;	0653	TAB_INDEX=0;				! RESET LOGICAL TAB INDEX

;	0654	LOGICAL_TABS[0]=OUT_LINE;		! INITIALIZE LOGICAL TABS

;	0655	INCR I FROM 1 TO MAX_TAB_STOPS		!

;	0656	DO	LOGICAL_TABS[.I]=.LOGICAL_TABS[.I-1]+DEF_TAB_WIDTH;

;	0657	CH$FILL(%ASCII' ',OUTPUT_MARGIN,OUT_LINE); ! BLANK OUT LINE

;	0658	FIRST_LINE=TRUE;			! SIGNAL NOTHING PRINTED YET

;	0659	LAST_KEY_TYPE=0;			! LAST KEY TYPE UNDEFINED

;	0660	

;	0661	!

;	0662	! SKIP TO NEXT KEYWORD

;	0663	!

;	0664	

;	0665	UNTIL	(UNTIL (READ_STATUS=READ_LINE(.F_RAB);	!

;	0666			.READ_STATUS[TITLE_FOUND]	! SKIP TO NEXT KEYWORD

;	0667			 OR .READ_STATUS[QUAL_FOUND]	!

;	0668			OR .READ_STATUS[END_OF_FILE])	! OR END OF FILE

;	0669		DO; .READ_STATUS[END_OF_FILE])		!

;	0670					

;	0671	!

;	0672	! PACK ITEMS AND RECOMPUTE LOGICAL TABS

;	0673	!

;	0674	

;	0675	DO	BEGIN

;	0676		IF .LAST_KEY_TYPE EQLU 0 ! INITIALIZE LAST KEY WORD TYPE

;	0677		THEN LAST_KEY_TYPE=.READ_STATUS;

;	0678		IF .FIRST_LINE		! PRINT HEADING FIRST TIME AROUND

;	0679		THEN	BEGIN

;	0680			FIRST_LINE=FALSE; 

;	0681			PRINT_LINE();	

;	0682			PRINT_LINE(MSG_OPTIONS,MSG_OPTIONS_LEN);

;	0683			PRINT_LINE();

;	0684			END;

;	0685		IF  ((.OUTPUT_POS+.CUR_SIZE) GTRU .OUT_LINE_LIMIT

;	0686						! IF NO MORE ROOM ON LINE

;	0687			OR (.LAST_KEY_TYPE NEQU .READ_STATUS))

;	0688						! OR A CHANGE OF KEYWORD TYPE

;	0689		THEN 	BEGIN			

;	0690			PRINT_LINE(OUT_LINE,.OUTPUT_POS-OUT_LINE);

;	0691			OUTPUT_POS=OUT_LINE;	! THEN PRINT FULL LINE AND START A NEW ONE

;	0692			TAB_INDEX=0;		! RESET TAB STOP INDEX

;	0693			CH$FILL(%ASCII' ',OUTPUT_MARGIN,OUT_LINE);

;	0694						! BLANK OUT LINE

;	0695			END;		

;	0696		LAST_KEY_TYPE=.READ_STATUS;	! REMEMBER LAST KEY TYPE

;	0697		OUTPUT_POS=CH$MOVE(.CUR_SIZE,.CUR_STRING,.OUTPUT_POS)+SPACE_ITEMS;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 7-2

; Digital Equipment Corporation

;

;	0698						! PACK KEYWORD ON LINE

;	0699		DO	TAB_INDEX=.TAB_INDEX+1		! ADVANCE LOGICAL TAB

;	0700		WHILE	.OUTPUT_POS GTRU  (.LOGICAL_TABS[.TAB_INDEX]/2+

;	0701					.LOGICAL_TABS[.TAB_INDEX+1]/2);

;	0702						! ACCOUNT FOR ITEM SPANNING MULTIPLE FIELDS

;	0703		IF .LOGICAL_TABS[.TAB_INDEX] GEQU .OUTPUT_POS

;	0704						! SET POSITION COUNTER TO TAB STOP

;	0705		THEN 	OUTPUT_POS=.LOGICAL_TABS[.TAB_INDEX]

;	0706		ELSE	LOGICAL_TABS[.TAB_INDEX]=.OUTPUT_POS;

;	0707						! OR RECOMPUTE NEW TAB POSITION

;	0708		IF .OUTPUT_POS GTRU .OUT_LINE_LIMIT

;	0709		THEN OUTPUT_POS=.OUT_LINE_LIMIT; ! MAKE SURE WE DONT OVERFLOW BUFFER

;	0710		END;

;	0711	IF .OUTPUT_POS NEQU OUT_LINE		! IF LAST LINE IS NON EMPTY

;	0712	THEN	PRINT_LINE(OUT_LINE,.OUTPUT_POS-OUT_LINE);

;	0713						! THEN PRINT IT

;	0714	RETURN;

;	0715	END;











					 0FFC 0026D PRINT_OPTIONS:

							    .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11		      ; 0589

		         5E	  90   AE  9E 0026F 	    MOVAB   -112(SP), SP					      ;

		         58	  20   AE  9E 00273 	    MOVAB   OUT_LINE, OUTPUT_POS				      ; 0650

		         50	       6D  9E 00277 	    MOVAB   OUT_LINE+80, R0					      ; 0651

		         51	0000'  CF  D0 0027A 	    MOVL    LEVEL, R1						      ;

		         51	       02  C4 0027F 	    MULL2   #2, R1						      ;

		         50	       51  C2 00282 	    SUBL2   R1, R0						      ;

	   5B	         50	       02  C3 00285 	    SUBL3   #2, R0, OUT_LINE_LIMIT				      ;

				       56  D4 00289 	    CLRL    TAB_INDEX						      ; 0653

				  20   AE  9F 0028B 	    PUSHAB  OUT_LINE						      ; 0654

		         50	       01  D0 0028E 	    MOVL    #1, I						      ; 0655

	 6E40	    FC AE40	       0B  C1 00291 1$:     ADDL3   #11, LOGICAL_TABS-4[I], LOGICAL_TABS[I]		      ; 0656

	   F5	         50	       08  F3 00298 	    AOBLEQ  #8, I, 1$						      ; 0655

	   20	         6E	       00  2C 0029C 	    MOVC5   #0, (SP), #32, #80, OUT_LINE			      ; 0657

		    24   AE	0050   8F     002A0									      ;

		         5A	       01  D0 002A5 	    MOVL    #1, FIRST_LINE					      ; 0658

				       59  D4 002A8 	    CLRL    LAST_KEY_TYPE					      ; 0659

				  04   AC  DD 002AA 2$:     PUSHL   F_RAB						      ; 0665

		  0000V  CF	       01  FB 002AD 	    CALLS   #1, READ_LINE					      ;

		         57	       50  D0 002B2 	    MOVL    R0, READ_STATUS					      ;

	   08	         57	       02  E0 002B5 	    BBS     #2, READ_STATUS, 3$					      ; 0666

	   04	         57	       03  E0 002B9 	    BBS     #3, READ_STATUS, 3$					      ; 0667

	   E9	         57	       01  E1 002BD 	    BBC     #1, READ_STATUS, 2$					      ; 0668

	   03	         57	       01  E1 002C1 3$:     BBC     #1, READ_STATUS, 4$					      ; 0669

				     0090  31 002C5 	    BRW     13$							      ;

				       59  D5 002C8 4$:     TSTL    LAST_KEY_TYPE					      ; 0676

				       03  12 002CA 	    BNEQ    5$							      ;

		         59	       57  D0 002CC 	    MOVL    READ_STATUS, LAST_KEY_TYPE				      ; 0677

		         17	       5A  E9 002CF 5$:     BLBC    FIRST_LINE, 6$					      ; 0678

				       5A  D4 002D2 	    CLRL    FIRST_LINE						      ; 0680

		  0000V  CF	       00  FB 002D4 	    CALLS   #0, PRINT_LINE					      ; 0681



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 7-3

; Digital Equipment Corporation

;

				       21  DD 002D9 	    PUSHL   #33							      ; 0682

				0000'  CF  9F 002DB 	    PUSHAB  MSG_OPTIONS						      ; 0589

		  0000V  CF	       02  FB 002DF 	    CALLS   #2, PRINT_LINE					      ; 0682

		  0000V  CF	       00  FB 002E4 	    CALLS   #0, PRINT_LINE					      ; 0683

	   50	         58	0000'  CF  C1 002E9 6$:     ADDL3   CUR_SIZE, OUTPUT_POS, R0				      ; 0685

		         5B	       50  D1 002EF 	    CMPL    R0, OUT_LINE_LIMIT					      ;

				       05  1A 002F2 	    BGTRU   7$							      ;

		         57	       59  D1 002F4 	    CMPL    LAST_KEY_TYPE, READ_STATUS				      ; 0687

				       1F  13 002F7 	    BEQL    8$							      ;

		         50	  24   AE  9E 002F9 7$:     MOVAB   OUT_LINE, R0					      ; 0690

	   7E	         58	       50  C3 002FD 	    SUBL3   R0, OUTPUT_POS, -(SP)				      ;

				  28   AE  9F 00301 	    PUSHAB  OUT_LINE						      ;

		  0000V  CF	       02  FB 00304 	    CALLS   #2, PRINT_LINE					      ;

		         58	  24   AE  9E 00309 	    MOVAB   OUT_LINE, OUTPUT_POS				      ; 0691

				       56  D4 0030D 	    CLRL    TAB_INDEX						      ; 0692

	   20	         6E	       00  2C 0030F 	    MOVC5   #0, (SP), #32, #80, OUT_LINE			      ; 0693

		    24   AE	0050   8F     00313									      ;

		         59	       57  D0 00318 8$:     MOVL    READ_STATUS, LAST_KEY_TYPE				      ; 0696

	   68	  0000'  DF	0000'  CF  28 0031B 	    MOVC3   CUR_SIZE, @CUR_STRING, (OUTPUT_POS)			      ; 0697

	   58	         53	       02  C1 00323 	    ADDL3   #2, R3, OUTPUT_POS					      ;

				       56  D6 00327 9$:     INCL    TAB_INDEX						      ; 0699

		         50	     6E46  D0 00329 	    MOVL    LOGICAL_TABS[TAB_INDEX], R0				      ; 0700

	   52	         50	       02  C7 0032D 	    DIVL3   #2, R0, R2						      ;

	   51	    04 AE46	       02  C7 00331 	    DIVL3   #2, LOGICAL_TABS+4[TAB_INDEX], R1			      ; 0701

		         52	       51  C0 00337 	    ADDL2   R1, R2						      ; 0700

		         52	       58  D1 0033A 	    CMPL    OUTPUT_POS, R2					      ;

				       E8  1A 0033D 	    BGTRU   9$							      ;

		         58	       50  D1 0033F 	    CMPL    R0, OUTPUT_POS					      ; 0703

				       05  1F 00342 	    BLSSU   10$							      ;

		         58	       50  D0 00344 	    MOVL    R0, OUTPUT_POS					      ; 0705

				       04  11 00347 	    BRB     11$							      ; 0703

		       6E46	       58  D0 00349 10$:    MOVL    OUTPUT_POS, LOGICAL_TABS[TAB_INDEX]			      ; 0706

		         5B	       58  D1 0034D 11$:    CMPL    OUTPUT_POS, OUT_LINE_LIMIT				      ; 0708

				       03  1B 00350 	    BLEQU   12$							      ;

		         58	       5B  D0 00352 	    MOVL    OUT_LINE_LIMIT, OUTPUT_POS				      ; 0709

				     FF52  31 00355 12$:    BRW     2$							      ; 0665

		         50	  24   AE  9E 00358 13$:    MOVAB   OUT_LINE, R0					      ; 0711

		         50	       58  D1 0035C 	    CMPL    OUTPUT_POS, R0					      ;

				       10  13 0035F 	    BEQL    14$							      ;

		         50	  24   AE  9E 00361 	    MOVAB   OUT_LINE, R0					      ; 0712

	   7E	         58	       50  C3 00365 	    SUBL3   R0, OUTPUT_POS, -(SP)				      ;

				  28   AE  9F 00369 	    PUSHAB  OUT_LINE						      ;

		  0000V  CF	       02  FB 0036C 	    CALLS   #2, PRINT_LINE					      ;

					   04 00371 14$:    RET     							      ; 0589



; Routine Size:  261 bytes





;	0716	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 8

; Digital Equipment Corporation

;

;	0717	%SBTTL 'DO_PARAGRAF'

;	0718	ROUTINE DO_PARAGRAF(F_RAB)=

;	0719	!++

;	0720	! FUNCTIONAL DESCRIPTION

;	0721	!

;	0722	! 	INTERPRETS ONE PARAGRAPH

;	0723	! 	IF INDIRECT FILE SPEC FOUND,THEN CALLS ALFA RECURSIVELY !!

;	0724	!

;	0725	! INPUTS:

;	0726	!

;	0727	!	 RAB OF CURRENT LEVEL FILE

;	0728	!

;	0729	! IMPLICIT INPUTS:

;	0730	!

;	0731	!	LEVEL = LEVEL COUNTER

;	0732	!	CURRENT KEYWORD DESCRIPTOR:

;	0733	!		CUR_STRING,CUR_SIZE

;	0734	!	EXPECTS CURRENT LEVEL FILE TO BE POSITIONED CORRECTLY.

;	0735	!	( SKIP FLAG DONT_READ CAN BE IN EFFECT)

;	0736	!

;	0737	! OUTPUTS:

;	0738	!

;	0739	!	NONE

;	0740	!

;	0741	! IMPLICIT OUTPUTS:

;	0742	!

;	0743	!	FLAGS :

;	0744	!		DONT_READ = SKIP BACK FLAG

;	0745	!	INDIRECT FILE'S NAME, USED TO OPEN NEXT LEVEL'S FILE:

;	0746	!		HELP_FNA,HELP_FNS

;	0747	!

;	0748	! ROUTINE VALUE:

;	0749	!

;	0750	!	FLAG	=	0 : NO DATA PRINTED

;	0751	!			1 : DATA WAS FOUND AT THIS LEVEL

;	0752	!

;	0753	! SIDE EFFECTS:

;	0754	!

;	0755	!	CAN CALL ALFA , CAUSING RECURSION

;	0756	!

;	0757	!--

;	0758	

;	0759	BEGIN

;	0760	

;	0761	LOCAL

;	0762		READ_STATUS:,		! STATUS OF READ OPERATION

;	0763		FNA_SIZE:,		! USED TO CALCULATE SIZE OF FILE NAME

;	0764		DATA_FOUND:;		! FLAG FOR SOMETHING PRINTED

;	0765	

;	0766	MAP

;	0767		READ_STATUS: BITVECTOR[];

;	0768	

;	0769	!

;	0770	! EXAMINE LINES ONE BY ONE

;	0771	!



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 8-1

; Digital Equipment Corporation

;

;	0772	

;	0773	DATA_FOUND=FALSE;

;	0774	WHILE	(LEVEL=.LEVEL-1;		! READ AS THOUGH ONE LEVEL LOWER

;	0775		READ_STATUS=READ_LINE(.F_RAB);	! (RECOGNIZING END OF PARAGRAPH INVOLVES

;	0776						! QUAL_MODE[.LEVEL] FLAG)

;	0777		LEVEL=.LEVEL+1;			! BACK TO HIGHER 

;	0778		.READ_STATUS[TEXT])

;	0779	DO

;	0780	

;	0781	!

;	0782	! PROCESS INDIRECT FILE SPECIFICATION

;	0783	!

;	0784	

;	0785		IF .READ_STATUS[IND_FOUND]	

;	0786		THEN	BEGIN			! 

;	0787			FNA_SIZE= (IF .CUR_SIZE LSSU NAM$C_MAXRSS		

;	0788					THEN .CUR_SIZE	! CHECK SIZE OF

;	0789					ELSE NAM$C_MAXRSS); ! NEW FILE NAME

;	0790			UPPER_CASE(.FNA_SIZE,.CUR_STRING,HELP_FNA);

;	0791			HELP_FNS=.FNA_SIZE;	! INSERT INDIRECT FILE NAME AND SIZE

;	0792			DATA_FOUND=ALFA();	! PERFORM RECURSIVE CALL 

;	0793			END

;	0794	

;	0795	!

;	0796	! PRINT TEXT UNTIL NEXT KEYWORD, OR END OF FILE ENCOUNTERED

;	0797	!

;	0798	

;	0799		ELSE	IF .PAR_SIZE[.LEVEL] EQLU 0	! PRINT ONLY IF LAST LEVEL

;	0800			THEN	BEGIN

;	0801				IF NOT .DATA_FOUND		! PRINT BLANK LINE FIRST TIME AROUND

;	0802				THEN	BEGIN

;	0803					DATA_FOUND=TRUE;

;	0804					PRINT_LINE();

;	0805					END;

;	0806				PRINT_LINE(0);		! PRINT CURRENT TEXT LINE

;	0807				END;

;	0808	IF	NOT	.READ_STATUS[END_OF_FILE]

;	0809	THEN 	DONT_READ=TRUE;			! SET SKIP BACK FLAG FOR NEXT ROUTINE

;	0810	RETURN .DATA_FOUND;

;	0811	END;











					 081C 00372 DO_PARAGRAF:

							    .WORD   Save R2,R3,R4,R11					      ; 0718

		         5B	0000'  CF  9E 00374 	    MOVAB   LEVEL, R11						      ;

				       53  D4 00379 	    CLRL    DATA_FOUND						      ; 0773

				       6B  D7 0037B 1$:     DECL    LEVEL						      ; 0774

				  04   AC  DD 0037D 	    PUSHL   F_RAB						      ; 0775

		  0000V  CF	       01  FB 00380 	    CALLS   #1, READ_LINE					      ;

		         52	       50  D0 00385 	    MOVL    R0, READ_STATUS					      ;

				       6B  D6 00388 	    INCL    LEVEL						      ; 0777

		         56	       52  E9 0038A 	    BLBC    READ_STATUS, 6$					      ; 0778



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 8-2

; Digital Equipment Corporation

;

	   33	         52	       04  E1 0038D 	    BBC     #4, READ_STATUS, 4$					      ; 0785

	      00000080   8F	013C   CB  D1 00391 	    CMPL    CUR_SIZE, #128					      ; 0787

				       07  1E 0039A 	    BGEQU   2$							      ;

		         54	013C   CB  D0 0039C 	    MOVL    CUR_SIZE, FNA_SIZE					      ;

				       04  11 003A1 	    BRB     3$							      ;

		         54	  80   8F  9A 003A3 2$:     MOVZBL  #128, FNA_SIZE					      ;

				FF74   CB  9F 003A7 3$:     PUSHAB  HELP_FNA						      ; 0790

				0140   CB  DD 003AB 	    PUSHL   CUR_STRING						      ;

				       54  DD 003AF 	    PUSHL   FNA_SIZE						      ;

		  0000V  CF	       03  FB 003B1 	    CALLS   #3, UPPER_CASE					      ;

		    F4   AB	       54  D0 003B6 	    MOVL    FNA_SIZE, HELP_FNS					      ; 0791

		  FC5E   CF	       00  FB 003BA 	    CALLS   #0, ALFA						      ; 0792

		         53	       50  D0 003BF 	    MOVL    R0, DATA_FOUND					      ;

				       B7  11 003C2 	    BRB     1$							      ; 0785

	   50	         6B	       01  78 003C4 4$:     ASHL    #1, LEVEL, R0					      ; 0799

				0144 CB40  D5 003C8 	    TSTL    PAR_TABLE[R0]					      ;

				       AC  12 003CD 	    BNEQ    1$							      ;

		         08	       53  E8 003CF 	    BLBS    DATA_FOUND, 5$					      ; 0801

		         53	       01  D0 003D2 	    MOVL    #1, DATA_FOUND					      ; 0803

		  0000V  CF	       00  FB 003D5 	    CALLS   #0, PRINT_LINE					      ; 0804

				       7E  D4 003DA 5$:     CLRL    -(SP)						      ; 0806

		  0000V  CF	       01  FB 003DC 	    CALLS   #1, PRINT_LINE					      ;

				       98  11 003E1 	    BRB     1$							      ; 0774

	   04	         52	       01  E0 003E3 6$:     BBS     #1, READ_STATUS, 7$					      ; 0808

		    04   AB	       02  88 003E7 	    BISB2   #2, GLOBAL_FLAGS					      ; 0809

		         50	       53  D0 003EB 7$:     MOVL    DATA_FOUND, R0					      ; 0810

					   04 003EE 	    RET     							      ; 0718



; Routine Size:  125 bytes





;	0812	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 9

; Digital Equipment Corporation

;

;	0813	%SBTTL 'GET_PARAM'

;	0814	ROUTINE GET_PARAM(CLI_ARGLIS):NOVALUE=

;	0815	

;	0816	!++

;	0817	! FUNCTIONAL DESCRIPTION

;	0818	!

;	0819	! 	GETS WHOLE COMMAND LINE THROUGH CLI INTERFACE

;	0820	!	 AND PARSES IT.

;	0821	!

;	0822	!

;	0823	! INPUTS:

;	0824	!

;	0825	!	CLI_ARGLIS:

;	0826	!	POINTER TO ARGUMENT LIST ORIGINALLY PASSED TO HELP BY CLI

;	0827	!		(I.E. ORIGINAL REGISTER AP)

;	0828	!

;	0829	! IMPLICIT INPUTS:

;	0830	!

;	0831	!	COM_LINE_SIZE= SIZE OF COMMAND LINE IMAGE

;	0832	!

;	0833	! OUTPUTS:

;	0834	!

;	0835	!	NONE

;	0836	!

;	0837	! IMPLICIT OUTPUTS:

;	0838	!

;	0839	!	SETS UP PARAMETER LIST, I.E. CONSTRUCTS DESCRIPTOR FOR

;	0840	!	EACH PARAMETER IN THE INPUT LINE AS AN ENTRY

;	0841	!	OF TABLE PAR_TABLE (DESCRIBED IN OWN STORAGE)

;	0842	!	ENTRIES OF PAR_TABLE CAN BE ACCESSED BY MACROS:

;	0843	!		PAR_SIZE[.LEVEL], PAR_STRING[.LEVEL]

;	0844	!

;	0845	!	SETS FLAG QUAL_MODE[.LEVEL] FOR EACH PARAMETER, IF APPLICABLE

;	0846	!

;	0847	!	COM_LINE_IMAGE= COPY OF COMMAND LINE  ,TRANSLATED TO UPPER CASE

;	0848	!		( PAR_TABLE ENTRIES POINT AT SUBSTRINGS OF COM_LINE_IMAGE)

;	0849	!

;	0850	! ROUTINE VALUE:

;	0851	!

;	0852	!	NONE

;	0853	!

;	0854	! SIDE EFFECTS:

;	0855	!

;	0856	!	NONE

;	0857	!

;	0858	!--

;	0859	

;	0860	BEGIN

;	0861	

;	0862	MAP				! GET ADDRESS OF CLI SERVICE ROUTINE

;	0863		CLI_ARGLIS:	REF BLOCK[,BYTE];

;	0864	BIND

;	0865		RECALLCLI=.CLI_ARGLIS[CLI$A_UTILSERV];

;	0866	LOCAL

;	0867		GETCMD_DESC:  BLOCK[CLI$K_REQDESC,BYTE],



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 9-1

; Digital Equipment Corporation

;

;	0868					! ALLOCATE CLI REQUEST DESCRIPTOR BLOCK ON STACK

;	0869		CLI_WORKAREA:  VECTOR[CLI$K_WORKAREA,BYTE];	! AS WELL AS CLI WORK AREA

;	0870	

;	0871	MACRO

;	0872		COMMAND_LINE_PT= GETCMD_DESC[CLI$A_RQADDR] %;

;	0873	

;	0874	LOCAL

;	0875		COMMAND_SIZE: ,		! SIZE OF COMMAND LINE

;	0876		PAR_BEGIN:,		! POINTER TO PARAMETER  BEEING PARSED

;	0877		PAR_END: ,		! POINTER TO END OF PARAMETER BEEING PARSED

;	0878		COMMAND_END: ,		! POINTER TO END OF COMMAND LINE

;	0879		NEXT_QUAL: ;		! POINTER TO NEXT QUALIFIER ENCOUNTERED

;	0880	

;	0881	!

;	0882	! REQUEST WHOLE COMMAND LINE FROM CLI

;	0883	!

;	0884	

;	0885	CH$FILL(0,CLI$K_REQDESC,GETCMD_DESC);	! INITIALIZE

;	0886	GETCMD_DESC[CLI$B_RQTYPE]=CLI$K_GETCMD;	! CLI REQUEST DESCRIPTOR BLOCK

;	0887	RECALLCLI(GETCMD_DESC,CLI_WORKAREA);	! GET WHOLE COMMAND LINE FROM CLI

;	0888	IF (COMMAND_SIZE=.GETCMD_DESC[CLI$W_RQSIZE]) EQLU 0

;	0889						! RETRIEVE LENGTH OF COMMAND

;	0890	THEN	RETURN;

;	0891	IF .COMMAND_SIZE GTRU MAX_COM_SIZE	! ADJUST LENGTH IF NECESSARY

;	0892	THEN COMMAND_SIZE=MAX_COM_SIZE;

;	0893	UPPER_CASE(.COMMAND_SIZE,.COMMAND_LINE_PT,COM_LINE_IMAGE);

;	0894						! CONVERT COMMAND LINE TO UPPER CASE

;	0895	

;	0896	!

;	0897	!  PARSE COMMAND LINE

;	0898	!

;	0899	

;	0900	PAR_END=COM_LINE_IMAGE;		! INITIALIZE POINTERS

;	0901	COMMAND_END=COM_LINE_IMAGE+.COMMAND_SIZE;

;	0902	NEXT_QUAL=CH$FIND_CH(.COMMAND_SIZE,COM_LINE_IMAGE,SLASH);

;	0903					! MARK BEGINNING OF NEXT QUALIFIER

;	0904	INCR DUMMY_LEVEL FROM 0  TO MAX_LEVELS-1

;	0905	DO	BEGIN			! SCAN COMMAND LINE

;	0906	

;	0907	!

;	0908	!  FIND BEGINNING OF NEXT PARAMETER

;	0909	!

;	0910	

;	0911		IF  (PAR_BEGIN=CH$FIND_NOT_CH(.COMMAND_END-.PAR_END,.PAR_END,BLANK)) EQLU 0

;	0912				 	! NEXT NON BLANK

;	0913		THEN	PAR_BEGIN=.COMMAND_END;	!POSITION BEYOND END

;	0914		IF .NEXT_QUAL NEQU 0

;	0915		THEN	IF .PAR_BEGIN GEQU .NEXT_QUAL

;	0916			THEN	BEGIN

;	0917				QUAL_MODE[.DUMMY_LEVEL]=TRUE;

;	0918					! THERE IS A QUALIFIER CLOSER

;	0919				PAR_BEGIN=.NEXT_QUAL;

;	0920				NEXT_QUAL=CH$FIND_CH(.COMMAND_END-.PAR_BEGIN-1,.PAR_BEGIN+1,SLASH);

;	0921				END;

;	0922	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 9-2

; Digital Equipment Corporation

;

;	0923	!

;	0924	!  FIND END OF NEXT PARAMETER

;	0925	!

;	0926	

;	0927		IF (PAR_END=CH$FIND_CH(.COMMAND_END-.PAR_BEGIN,.PAR_BEGIN,BLANK)) EQLU 0

;	0928					! NEXT BLANK

;	0929		THEN PAR_END=.COMMAND_END;	

;	0930		IF .NEXT_QUAL NEQU 0

;	0931		THEN	IF .PAR_END GTRU .NEXT_QUAL

;	0932			THEN PAR_END=.NEXT_QUAL;

;	0933	!

;	0934	

;	0935	! NOW COMPUTE POINTER AND SIZE OF PARAMETER

;	0936	!

;	0937	

;	0938		IF (PAR_SIZE[.DUMMY_LEVEL]=.PAR_END-.PAR_BEGIN) EQLU 0

;	0939							! COMPUTE SIZE OF PARAMETER

;	0940		THEN EXITLOOP;				! DONE !!

;	0941		PAR_STRING[.DUMMY_LEVEL]=.PAR_BEGIN;	! POINTER  TO PARAMETER

;	0942		END;

;	0943	RETURN;

;	0944	END;











					 087C 003EF GET_PARAM:

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

		         5B	0000'  CF  9E 003F1 	    MOVAB   COM_LINE_IMAGE, R11					      ;

		         5E	FF64   CE  9E 003F6 	    MOVAB   -156(SP), SP					      ;

		         50	  04   AC  D0 003FB 	    MOVL    CLI_ARGLIS, R0					      ; 0865

		         56	  08   A0  D0 003FF 	    MOVL    8(R0), R6						      ; 0860

	   00	         6E	       00  2C 00403 	    MOVC5   #0, (SP), #0, #28, GETCMD_DESC			      ; 0885

		    E4   AD	       1C     00407									      ;

		    E4   AD	       01  90 0040A 	    MOVB    #1, GETCMD_DESC					      ; 0886

				       5E  DD 0040E 	    PUSHL   SP							      ; 0887

				  E4   AD  9F 00410 	    PUSHAB  GETCMD_DESC						      ;

		         66	       02  FB 00413 	    CALLS   #2, (R6)						      ;

		         52	  EC   AD  3C 00416 	    MOVZWL  GETCMD_DESC+8, COMMAND_SIZE				      ; 0888

				       01  12 0041A 	    BNEQ    1$							      ;

					   04 0041C 	    RET     							      ;

	      00000084   8F	       52  D1 0041D 1$:     CMPL    COMMAND_SIZE, #132					      ; 0891

				       04  1B 00424 	    BLEQU   2$							      ;

		         52	  84   8F  9A 00426 	    MOVZBL  #132, COMMAND_SIZE					      ; 0892

				       5B  DD 0042A 2$:     PUSHL   R11							      ; 0893

				  F0   AD  DD 0042C 	    PUSHL   GETCMD_DESC+12					      ;

				       52  DD 0042F 	    PUSHL   COMMAND_SIZE					      ;

		  0000V  CF	       03  FB 00431 	    CALLS   #3, UPPER_CASE					      ;

		         54	       6B  9E 00436 	    MOVAB   COM_LINE_IMAGE, PAR_END				      ; 0900

	   56	         52	       5B  C1 00439 	    ADDL3   R11, COMMAND_SIZE, COMMAND_END			      ; 0901

	   6B	         52	       2F  3A 0043D 	    LOCC    #47, COMMAND_SIZE, COM_LINE_IMAGE			      ; 0902

				       02  12 00441 	    BNEQ    3$							      ;

				       51  D4 00443 	    CLRL    R1							      ;

		         55	       51  D0 00445 3$:     MOVL    R1, NEXT_QUAL					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 9-3

; Digital Equipment Corporation

;

				       53  D4 00448 	    CLRL    DUMMY_LEVEL						      ; 0904

	   50	         56	       54  C3 0044A 4$:     SUBL3   PAR_END, COMMAND_END, R0				      ; 0911

	   64	         50	       20  3B 0044E 	    SKPC    #32, R0, (PAR_END)					      ;

				       02  12 00452 	    BNEQ    5$							      ;

				       51  D4 00454 	    CLRL    R1							      ;

		         52	       51  D0 00456 5$:     MOVL    R1, PAR_BEGIN					      ;

				       03  12 00459 	    BNEQ    6$							      ;

		         52	       56  D0 0045B 	    MOVL    COMMAND_END, PAR_BEGIN				      ; 0913

				       55  D5 0045E 6$:     TSTL    NEXT_QUAL						      ; 0914

				       20  13 00460 	    BEQL    8$							      ;

		         55	       52  D1 00462 	    CMPL    PAR_BEGIN, NEXT_QUAL				      ; 0915

				       1B  1F 00465 	    BLSSU   8$							      ;

		  FF54 CB43	       01  88 00467 	    BISB2   #1, LOCAL_FLAGS[DUMMY_LEVEL]			      ; 0917

		         52	       55  D0 0046D 	    MOVL    NEXT_QUAL, PAR_BEGIN				      ; 0919

	   50	         56	       52  C3 00470 	    SUBL3   PAR_BEGIN, COMMAND_END, R0				      ; 0920

				       50  D7 00474 	    DECL    R0							      ;

      01   A2	         50	       2F  3A 00476 	    LOCC    #47, R0, 1(PAR_BEGIN)				      ;

				       02  12 0047B 	    BNEQ    7$							      ;

				       51  D4 0047D 	    CLRL    R1							      ;

		         55	       51  D0 0047F 7$:     MOVL    R1, NEXT_QUAL					      ;

	   50	         56	       52  C3 00482 8$:     SUBL3   PAR_BEGIN, COMMAND_END, R0				      ; 0927

	   62	         50	       20  3A 00486 	    LOCC    #32, R0, (PAR_BEGIN)				      ;

				       02  12 0048A 	    BNEQ    9$							      ;

				       51  D4 0048C 	    CLRL    R1							      ;

		         54	       51  D0 0048E 9$:     MOVL    R1, PAR_END						      ;

				       03  12 00491 	    BNEQ    10$							      ;

		         54	       56  D0 00493 	    MOVL    COMMAND_END, PAR_END				      ; 0929

				       55  D5 00496 10$:    TSTL    NEXT_QUAL						      ; 0930

				       08  13 00498 	    BEQL    11$							      ;

		         55	       54  D1 0049A 	    CMPL    PAR_END, NEXT_QUAL					      ; 0931

				       03  1B 0049D 	    BLEQU   11$							      ;

		         54	       55  D0 0049F 	    MOVL    NEXT_QUAL, PAR_END					      ; 0932

	   50	         53	       01  78 004A2 11$:    ASHL    #1, DUMMY_LEVEL, R0					      ; 0938

    0090 CB40	         54	       52  C3 004A6 	    SUBL3   PAR_BEGIN, PAR_END, PAR_TABLE[R0]			      ;

				       0A  13 004AD 	    BEQL    12$							      ;

		  0094 CB40	       52  D0 004AF 	    MOVL    PAR_BEGIN, PAR_TABLE+4[R0]				      ; 0941

	   91	         53	       09  F3 004B5 	    AOBLEQ  #9, DUMMY_LEVEL, 4$					      ; 0904

					   04 004B9 12$:    RET     							      ; 0814



; Routine Size:  203 bytes





;	0945	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 10

; Digital Equipment Corporation

;

;	0946	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 11

; Digital Equipment Corporation

;

;	0947	%SBTTL	'MATCH'

;	0948	ROUTINE MATCH(READ_STATUS)=

;	0949	

;	0950	!++

;	0951	! FUNCTIONAL DESCRIPTION

;	0952	!

;	0953	!	TESTS FOR A MATCH OF CURRENT KEY WORD (=TITLE OR QUALIFIER)

;	0954	!	WITH CURRENT PARAMETER.

;	0955	!	RETURN TRUE IF MATCH, ELSE RETURN FALSE.

;	0956	! 	UPPER CASE CONVERSION IS PERFORMED BEFORE COMPARISON

;	0957	!	THE MATCH ALL SYMBOL, OR , IF A QUALIFIER, / FOLLOWED

;	0958	!	BY THE MATCH ALL SYMBOL, WILL ALWAYS YIELD A TRUE VALUE.

;	0959	!

;	0960	! INPUTS:

;	0961	!

;	0962	!	READ_STATUS = READ STATUS OF CURRENT LINE

;	0963	!

;	0964	! IMPLICIT INPUTS:

;	0965	!

;	0966	!	LEVEL = CURRENT LEVEL

;	0967	!	CURRENT PARAMETER (PAR_STRING,PAR_SIZE)

;	0968	!	CURRENT LINE  (CUR_SIZE,CUR_STRING)

;	0969	!

;	0970	! OUTPUTS:

;	0971	!

;	0972	!	SETS GLOBAL FLAG MATCH_ALL_MODE IF MATCH ALL SYMBOL IS ENCOUNTERED

;	0973	!

;	0974	! IMPLICIT OUTPUTS:

;	0975	!

;	0976	!	NONE

;	0977	!

;	0978	! ROUTINE VALUE:

;	0979	!

;	0980	!	FALSE	= NO MATCH FOUND

;	0981	!	TRUE	= MATCH FOUND

;	0982	!

;	0983	! SIDE EFFECTS:

;	0984	!

;	0985	!	NONE

;	0986	!

;	0987	!--

;	0988	

;	0989	BEGIN

;	0990	

;	0991	MAP

;	0992		READ_STATUS: BITVECTOR[];

;	0993	

;	0994	!

;	0995	! CHECK MATCH ALL SYMBOL

;	0996	!

;	0997	

;	0998	IF 	CH$EQL(MATCH_ALL_SIZE,.PAR_STRING[.LEVEL],MATCH_ALL_SIZE,MATCH_ALL_STR) 

;	0999						! IS IT THE MATCH ALL SYMBOL ??

;	1000		OR (IF .READ_STATUS[QUAL_FOUND]	

;	1001		THEN	CH$EQL(MATCH_ALL_SIZE,(.PAR_STRING[.LEVEL])+1,MATCH_ALL_SIZE,MATCH_ALL_STR) )



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 11-1

; Digital Equipment Corporation

;

;	1002						! OR THE QUALIFIER MATCH ALL SYMBOL

;	1003	THEN 	RETURN (MATCH_ALL_MODE=TRUE)

;	1004	

;	1005	!

;	1006	! PERFORM UPPER CASE CONVERSION AND COMPARE STRINGS

;	1007	!

;	1008	

;	1009	ELSE	BEGIN

;	1010		LOCAL  TRANS_STRING:	VECTOR[MAX_LINE_SIZE,BYTE];

;	1011	

;	1012		UPPER_CASE(.PAR_SIZE[.LEVEL],.CUR_STRING,TRANS_STRING);

;	1013						! TRANSLATE TO UPPER CASE

;	1014		RETURN				! RETURN TRUTH VALUE

;	1015		(CH$EQL(.PAR_SIZE[.LEVEL],.PAR_STRING[.LEVEL],.PAR_SIZE[.LEVEL],TRANS_STRING)) 

;	1016		END;

;	1017	END;











					 003C 004BA MATCH:  .WORD   Save R2,R3,R4,R5					      ; 0948

		         5E	FF7C   CE  9E 004BC 	    MOVAB   -132(SP), SP					      ;

		         55	0000'  CF  D0 004C1 	    MOVL    LEVEL, R5						      ; 0998

	   50	         55	       01  78 004C6 	    ASHL    #1, R5, R0						      ;

		         54	0000'CF40  D0 004CA 	    MOVL    PAR_TABLE+4[R0], R4					      ;

    0000'  CF	         64	       01  29 004D0 	    CMPC3   #1, (R4), MATCH_ALL_STR				      ;

				       0E  13 004D6 	    BEQL    1$							      ;

	   12	    04   AC	       03  E1 004D8 	    BBC     #3, READ_STATUS, 2$					      ; 1000

    0000'  CF	    01   A4	       01  29 004DD 	    CMPC3   #1, 1(R4), MATCH_ALL_STR				      ; 1001

				       09  12 004E4 	    BNEQ    2$							      ;

		  0000'  CF	       01  88 004E6 1$:     BISB2   #1, GLOBAL_FLAGS					      ; 1003

		         50	       01  D0 004EB 	    MOVL    #1, R0						      ;

					   04 004EE 	    RET     							      ;

				       5E  DD 004EF 2$:     PUSHL   SP							      ; 1012

				0000'  CF  DD 004F1 	    PUSHL   CUR_STRING						      ;

	   50	         55	       01  78 004F5 	    ASHL    #1, R5, R0						      ;

				0000'CF40  DD 004F9 	    PUSHL   PAR_TABLE[R0]					      ;

		  0000V  CF	       03  FB 004FE 	    CALLS   #3, UPPER_CASE					      ;

	   50	  0000'  CF	       01  78 00503 	    ASHL    #1, LEVEL, R0					      ; 1015

		         51	0000'CF40  D0 00509 	    MOVL    PAR_TABLE+4[R0], R1					      ;

				       54  D4 0050F 	    CLRL    R4							      ;

				0000'CF40  DF 00511 	    PUSHAL  PAR_TABLE[R0]					      ;

	   6E	         61	       9E  29 00516 	    CMPC3   @(SP)+, (R1), TRANS_STRING				      ;

				       02  12 0051A 	    BNEQ    3$							      ;

				       54  D6 0051C 	    INCL    R4							      ;

		         50	       54  D0 0051E 3$:     MOVL    R4, R0						      ; 1014

					   04 00521 	    RET     							      ; 0948



; Routine Size:  104 bytes





;	1018	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 12

; Digital Equipment Corporation

;

;	1019	%SBTTL	'UPPER_CASE'

;	1020	ROUTINE UPPER_CASE(SIZE,SOURCE_STR,DEST_STR) :NOVALUE=

;	1021	

;	1022	!++

;	1023	! FUNCTIONAL DESCRIPTION

;	1024	!

;	1025	!	CONVERTS STRING TO UPPER CASE

;	1026	!

;	1027	! INPUTS:

;	1028	!

;	1029	!	SIZE=SIZE OF STRING TO CONVERT

;	1030	!	SOURCE_STR=SOURCE

;	1031	!	DEST_STR=DESTINATION

;	1032	!

;	1033	! IMPLICIT INPUTS:

;	1034	!

;	1035	!	NONE

;	1036	!

;	1037	! OUTPUTS:

;	1038	!

;	1039	!	NONE

;	1040	!

;	1041	! IMPLICIT OUTPUTS:

;	1042	!

;	1043	! 	STRING POINTED TO BY DEST_STR IS WRITTEN

;	1044	!

;	1045	! ROUTINE VALUE:

;	1046	!

;	1047	!	NONE

;	1048	!

;	1049	! SIDE EFFECTS:

;	1050	!

;	1051	!	NONE

;	1052	!

;	1053	!--

;	1054	

;	1055	BEGIN

;	1056	

;	1057	LITERAL UPPER_MASK=NOT %X'20';

;	1058	LOCAL	TEMP:	;			! TEMPORARY

;	1059	

;	1060	MAP

;	1061		SOURCE_STR: REF	VECTOR[,BYTE],	! MAP FOR VECTOR ACCESS

;	1062		DEST_STR: REF	VECTOR[,BYTE];	!

;	1063	

;	1064	INCR I FROM 0 TO .SIZE-1

;	1065	DO	BEGIN

;	1066		TEMP=.SOURCE_STR[.I];

;	1067		IF (.TEMP LEQU %ASCII'z') AND (.TEMP GEQU %ASCII'a')

;	1068		THEN TEMP=.TEMP AND UPPER_MASK;

;	1069		DEST_STR[.I]=.TEMP;

;	1070		END;

;	1071	RETURN;

;	1072	END;





; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 12-1

; Digital Equipment Corporation

;









					 0000 00522 UPPER_CASE:

							    .WORD   Save nothing					      ; 1020

		         50	       01  CE 00524 	    MNEGL   #1, I						      ; 1064

				       1F  11 00527 	    BRB     3$							      ;

		         51	  08 BC40  9A 00529 1$:     MOVZBL  @SOURCE_STR[I], TEMP				      ; 1066

	      0000007A   8F	       51  D1 0052E 	    CMPL    TEMP, #122						      ; 1067

				       0C  1A 00535 	    BGTRU   2$							      ;

	      00000061   8F	       51  D1 00537 	    CMPL    TEMP, #97						      ;

				       03  1F 0053E 	    BLSSU   2$							      ;

		         51	       20  CA 00540 	    BICL2   #32, TEMP						      ; 1068

		    0C BC40	       51  90 00543 2$:     MOVB    TEMP, @DEST_STR[I]					      ; 1069

	   DC	         50	  04   AC  F2 00548 3$:     AOBLSS  SIZE, I, 1$						      ; 1064

					   04 0054D 	    RET     							      ; 1020



; Routine Size:  44 bytes





;	1073	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 13

; Digital Equipment Corporation

;

;	1074	!

;	1075	%SBTTL	'READ_LINE'

;	1076	ROUTINE READ_LINE(F_RAB)=

;	1077	

;	1078	!++

;	1079	! FUNCTIONAL DESCRIPTION

;	1080	!

;	1081	!	READS A LINE FROM RAB POINTED TO BY F_RAB

;	1082	! 	RAB IS SUPPOSED INITIALIZED TO POINT TO LINE_BUFFER

;	1083	! 	DETECTS THE FOLLOWING CONDITIONS =

;	1084	!  		- END OF FILE

;	1085	!		- TITLE FOUND

;	1086	!		- INDIRECT FILE SPEC FOUND

;	1087	!		- QUALIFIER FOUND

;	1088	!	(IN WHICH CASE POINTER AND LENGTH OF ITEM ARE RETURNED)

;	1089	!

;	1090	!

;	1091	! INPUTS:

;	1092	!

;	1093	!	RAB OF CURRENT FILE

;	1094	!

;	1095	! IMPLICIT INPUTS:

;	1096	!

;	1097	!	LINE_BUFFER

;	1098	!	GLOBAL FLAG: DONT_READ

;	1099	!	CONSTANT STRING OF CONTROL CHARACTERS:

;	1100	!	CONTROL_CHARS

;	1101	!		COMMENT_CHAR:	SKIP LINE

;	1102	!		ASTERIX:	SIGNAL A TITLE

;	1103	!		SLASH:		SIGNAL A QUALIFIER

;	1104	!		AT_SIGN:	SIGNAL AN INDIRECT FILE SPEC

;	1105	!

;	1106	! OUTPUTS:

;	1107	!

;	1108	!	NONE

;	1109	!

;	1110	! IMPLICIT OUTPUTS:

;	1111	!

;	1112	!	SETS LINE_SIZE TO CORRECT LENGTH

;	1113	!	IF NECESSARY, RETURNS DESCRIPTION OF CURRENT KEYWORD(=TITLE OR QUAL.)

;	1114	!			:  CUR_SIZE,CUR_STRING

;	1115	!

;	1116	! ROUTINE VALUE:

;	1117	!

;	1118	! 	STATUS WORD HAVING THE FOLLOWING BITS DEFINED:

;	1119	!

;	1120	!		[TEXT] : SET IF	- TEXT FOUND

;	1121	!				- INDIRECT FILE SPEC FOUND

;	1122	!				- QUALIFIER FOUND, BUT CURRENT PARAMETER 

;	1123	!				  IS NOT A QUALIFIER

;	1124	!		[END_OF_FILE]: SET IF END OF FILE ENCOUNTERED

;	1125	!		[TITLE_FOUND]: SET IF TITLE DETECTED

;	1126	!		[QUAL_FOUND]: SET IF A QUALIFIER FOUND

;	1127	!		[IND_FOUND]:  SET IF INDIRECT FILE SPECIFICATION ENCOUNTERED

;	1128	!		[DELIM_FOUND] : SET IF A DELIMITER HAS BEEN FOUND,



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 13-1

; Digital Equipment Corporation

;

;	1129	!				I.E. A TITLE (TITLE_FOUND)

;	1130	!				OR IF CURRENT PARAMETER IS A QUALIFIER, A QUALIFIER (QUAL_FOUND)

;	1131	!

;	1132	! SIDE EFFECTS:

;	1133	!

;	1134	!	NONE

;	1135	!

;	1136	!--

;	1137	

;	1138	BEGIN

;	1139	

;	1140	LOCAL

;	1141		READ_STATUS:,		! STATUS TO BE RETURNED

;	1142		CONTROL_OPTION:;	! TEMPORARY FOR SELECTING OPTIONS

;	1143	MAP

;	1144		READ_STATUS: BITVECTOR[],

;	1145		F_RAB:	REF BLOCK[,BYTE];

;	1146	

;	1147	!

;	1148	! INITIALIZE

;	1149	!

;	1150	

;	1151	READ_STATUS=0;			! INITIALIZE RETURN STATUS

;	1152	

;	1153	!

;	1154	! READ NECT LINE, SKIPPING COMMENTS

;	1155	! EXIT IF END OF FILE

;	1156	!

;	1157	

;	1158	IF	.DONT_READ		! IS SKIP BACK FLAG IN EFFECT ?

;	1159	THEN	DONT_READ=FALSE

;	1160	ELSE	DO	IF	NOT $GET(RAB=.F_RAB)

;	1161			THEN	BEGIN	! READ NEXT LINE FROM CURRENT FILE

;	1162				IF  .F_RAB[FAB$L_STS] NEQU RMS$_EOF

;	1163				THEN 	PUT_MESSAGE( HELP$_READERR,

;     P 1164						1,.F_RAB[RAB$L_CTX],	! POINTER TO FILE NAME DESCRIPTOR

;     P 1165						.F_RAB[FAB$L_STS],

;     P 1166						.F_RAB[FAB$L_STV])

;	1167				ELSE	BEGIN	! END OF FILE WAS DETECTED

;	1168					READ_STATUS[END_OF_FILE]=TRUE;

;	1169					LINE_SIZE=0;

;	1170					RETURN .READ_STATUS;

;	1171					END

;	1172				END

;	1173		WHILE CH$EQL(1,LINE_BUFFER,1,CONTROL_CHARS);	! TRY AGAIN IF COMMENT

;	1174	

;	1175	!

;	1176	! EXAMINE CONTROL CHARACTERS AND RETURN STATUS

;	1177	!

;	1178	

;	1179	IF	(LINE_SIZE=.F_RAB[RAB$W_RSZ]) EQLU 0	!SET LENGTH READ

;	1180	THEN	RETURN (READ_STATUS[TEXT]=TRUE; .READ_STATUS);	! EXIT IF NULL LINE

;	1181	IF	(CONTROL_OPTION=

;	1182		CH$FIND_CH(MAX_CONTROL_CH,CONTROL_CHARS,.LINE_BUFFER)) EQLU 0

;	1183	THEN	BEGIN			! NO SPECIAL OPTIONS RECOGNIZED



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 13-2

; Digital Equipment Corporation

;

;	1184		READ_STATUS[TEXT]=TRUE;

;	1185		RETURN .READ_STATUS;

;	1186		END

;	1187	ELSE	BEGIN			! A CONTROL CHARACTER WAS RECOGNIZED

;	1188		READ_STATUS[.CONTROL_OPTION-CONTROL_CHARS+1]=TRUE;

;	1189		CUR_STRING=LINE_BUFFER;	! SET UP DESCRIPTOR TO CURRENT KEY WORD

;	1190		CUR_SIZE=.LINE_SIZE;

;	1191		IF	(.READ_STATUS[TITLE_FOUND] OR	! SET RELEVANT BITS IN RETURN STATUS

;	1192			(IF .QUAL_MODE[.LEVEL] THEN .READ_STATUS[QUAL_FOUND]))

;	1193		THEN	READ_STATUS[DELIM_FOUND]=TRUE

;	1194		ELSE	READ_STATUS[TEXT]=TRUE;

;	1195		IF	NOT .READ_STATUS[QUAL_FOUND]

;	1196		THEN	BEGIN		! ADJUST KEYWORD DESCRIPTOR IF NECESSARY

;	1197			CUR_STRING=.CUR_STRING+1;

;	1198			CUR_SIZE=.CUR_SIZE-1;

;	1199			END;

;	1200		RETURN	.READ_STATUS;

;	1201		END;

;	1202	END;







							    .GLOBL  SYS$GET



					 0C3C 0054E READ_LINE:

							    .WORD   Save R2,R3,R4,R5,R10,R11				      ; 1076

		         5A	0000'  CF  9E 00550 	    MOVAB   CONTROL_CHARS, R10					      ;

		         5B	0000'  CF  9E 00555 	    MOVAB   LINE_SIZE, R11					      ;

				       55  D4 0055A 	    CLRL    READ_STATUS						      ; 1151

	   07	  FECC   CB	       01  E1 0055C 	    BBC     #1, GLOBAL_FLAGS, 1$				      ; 1158

		  FECC   CB	       02  8A 00562 	    BICB2   #2, GLOBAL_FLAGS					      ; 1159

				       41  11 00567 	    BRB     5$							      ; 1158

		         54	  04   AC  D0 00569 1$:     MOVL    F_RAB, R4						      ; 1160

				       54  DD 0056D 2$:     PUSHL   R4							      ;

	      00000000G  9F	       01  FB 0056F 	    CALLS   #1, @#SYS$GET					      ;

		         29	       50  E8 00576 	    BLBS    R0, 4$						      ;

	      0001827A   8F	  08   A4  D1 00579 	    CMPL    8(R4), #98938					      ; 1162

				       18  13 00581 	    BEQL    3$							      ;

		         7E	  08   A4  7D 00583 	    MOVQ    8(R4), -(SP)					      ; 1166

				  18   A4  DD 00587 	    PUSHL   24(R4)						      ;

				       01  DD 0058A 	    PUSHL   #1							      ;

			    007610B2   8F  DD 0058C 	    PUSHL   #7737522						      ;

	      00000000G  00	       05  FB 00592 	    CALLS   #5, LIB$SIGNAL					      ;

				       07  11 00599 	    BRB     4$							      ; 1161

		         55	       02  88 0059B 3$:     BISB2   #2, READ_STATUS					      ; 1168

				       6B  D4 0059E 	    CLRL    LINE_SIZE						      ; 1169

				       63  11 005A0 	    BRB     13$							      ; 1170

	   6A	  FEF8   CB	       01  29 005A2 4$:     CMPC3   #1, LINE_BUFFER, CONTROL_CHARS			      ; 1173

				       C3  13 005A8 	    BEQL    2$							      ;

		         50	  04   AC  D0 005AA 5$:     MOVL    F_RAB, R0						      ; 1179

		         6B	  22   A0  3C 005AE 	    MOVZWL  34(R0), LINE_SIZE					      ;

				       0E  13 005B2 	    BEQL    7$							      ;

	   6A	         04	FEF8   CB  3A 005B4 	    LOCC    LINE_BUFFER, #4, CONTROL_CHARS			      ; 1182

				       02  12 005BA 	    BNEQ    6$							      ;

				       51  D4 005BC 	    CLRL    R1							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 13-3

; Digital Equipment Corporation

;

				       51  D5 005BE 6$:     TSTL    CONTROL_OPTION					      ;

				       05  12 005C0 	    BNEQ    8$							      ;

		         55	       01  88 005C2 7$:     BISB2   #1, READ_STATUS					      ; 1184

				       3E  11 005C5 	    BRB     13$							      ; 1185

		         50	       6A  9E 005C7 8$:     MOVAB   CONTROL_CHARS, R0					      ; 1188

		         50	       51  C2 005CA 	    SUBL2   CONTROL_OPTION, R0					      ;

	   50	         01	       50  C3 005CD 	    SUBL3   R0, #1, R0						      ;

	   00	         55	       50  E2 005D1 	    BBSS    R0, READ_STATUS, 9$					      ;

		    08   AB	FEF8   CB  9E 005D5 9$:     MOVAB   LINE_BUFFER, CUR_STRING				      ; 1189

		    04   AB	       6B  D0 005DB 	    MOVL    LINE_SIZE, CUR_SIZE					      ; 1190

	   10	         55	       02  E0 005DF 	    BBS     #2, READ_STATUS, 10$				      ; 1191

		         50	FED0   CB  9E 005E3 	    MOVAB   LOCAL_FLAGS, R0					      ; 1192

	   09	  FEC8 DB40	       00  E1 005E8 	    BBC     #0, @LEVEL[R0], 11$					      ;

	   05	         55	       03  E1 005EF 	    BBC     #3, READ_STATUS, 11$				      ;

		         55	       20  88 005F3 10$:    BISB2   #32, READ_STATUS					      ; 1193

				       03  11 005F6 	    BRB     12$							      ; 1191

		         55	       01  88 005F8 11$:    BISB2   #1, READ_STATUS					      ; 1194

	   06	         55	       03  E0 005FB 12$:    BBS     #3, READ_STATUS, 13$				      ; 1195

				  08   AB  D6 005FF 	    INCL    CUR_STRING						      ; 1197

				  04   AB  D7 00602 	    DECL    CUR_SIZE						      ; 1198

		         50	       55  D0 00605 13$:    MOVL    READ_STATUS, R0					      ; 1200

					   04 00608 	    RET     							      ; 1076



; Routine Size:  187 bytes





;	1203	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 14

; Digital Equipment Corporation

;

;	1204	%SBTTL	'PRINT_LINE'

;	1205	

;	1206	ROUTINE PRINT_LINE:NOVALUE=

;	1207	

;	1208	!++

;	1209	! FUNCTIONAL DESCRIPTION

;	1210	!

;	1211	!	PRINTS A LINE ON LOGICAL DEVICE SYS$OUTPUT:

;	1212	!

;	1213	! INPUTS:

;	1214	!

;	1215	! 	N+1ST PARAMETER = POINTER TO STRING TO BE PRINTED

;	1216	! 	N+2D PARAMETER = LENGTH OF STRING

;	1217	!		IF NO PARAMETERS AT ALL: BLANK LINE

;	1218	!		IF ONE PARAMETER :  LINE_BUFFER AND .LINE_SIZE ARE ASSUMED

;	1219	!				    ( VALUE OF PARAMETER IS NOT LOOKED AT IN THIS CASE)

;	1220	!

;	1221	!	LEVEL = LEVEL COUNTER

;	1222	!		(.LEVEL+1)*INDENT BLANKS ARE INSERTED IN FRONT OF LINE

;	1223	!

;	1224	! IMPLICIT INPUTS:

;	1225	!

;	1226	!	OUTPUT RAB FIELDS, LINE_BUFFER,LINE_SIZE

;	1227	!

;	1228	! OUTPUTS:

;	1229	!

;	1230	!	NONE

;	1231	!

;	1232	! IMPLICIT OUTPUTS:

;	1233	!

;	1234	!	NONE

;	1235	!

;	1236	! ROUTINE VALUE:

;	1237	!

;	1238	!	NONE

;	1239	!

;	1240	! SIDE EFFECTS:

;	1241	!

;	1242	!	NONE

;	1243	!

;	1244	!--

;	1245	

;	1246	BEGIN

;	1247	

;	1248	!

;	1249	! IF SYS$OUTPUT: HAS NEVER BEEN OPENED, CREATE A TEMPORARY FAB

;	1250	! AND OPEN IT.

;	1251	!

;	1252	

;	1253	IF .OUTPUT_RAB[RAB$W_ISI] EQLU 0

;	1254	THEN	BEGIN

;	1255		LOCAL 	OUTPUT_FAB:	$FAB_DECL,	! ALLOCATE FAB

;	1256			RMS_STATUS:;			! TEMPORARY STATUS

;	1257		$FAB_INIT(	FAB=OUTPUT_FAB,		! INITIALIZE OUTPUT FAB

;     P 1258				FAC=PUT,



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 14-1

; Digital Equipment Corporation

;

;     P 1259				RAT=CR,

;     P 1260				FNA=.OUTPUT_NAM_DESC[1],

;     P 1261				FNS=.OUTPUT_NAM_DESC[0]);

;	1262		OUTPUT_RAB[RAB$L_FAB]=OUTPUT_FAB;	! INSERT POINTER TO FAB

;	1263		IF NOT (RMS_STATUS=$OPEN(FAB=OUTPUT_FAB))

;	1264		THEN	PUT_MESSAGE(HELP$_OPENOUT,

;     P 1265			1,OUTPUT_NAM_DESC,

;     P 1266			.RMS_STATUS,

;     P 1267			.OUTPUT_FAB[FAB$L_STV])

;	1268		ELSE	IF NOT (RMS_STATUS=$CONNECT(RAB=OUTPUT_RAB))

;	1269			THEN	PUT_MESSAGE(HELP$_OPENOUT,

;     P 1270					1,OUTPUT_NAM_DESC,

;     P 1271					.RMS_STATUS,

;     P 1272					.OUTPUT_RAB[FAB$L_STV]);

;	1273		END;

;	1274	

;	1275	!

;	1276	! TEST NUMBER OF PARAMETERS PASSED

;	1277	!

;	1278	

;	1279	IF	ACTUALCOUNT() EQLU 0

;	1280	THEN	BEGIN				! JUST A BLANK LINE

;	1281		OUTPUT_RAB[RAB$L_RBF]=0;	!

;	1282		OUTPUT_RAB[RAB$W_RSZ]=0;	!

;	1283		END				!

;	1284	ELSE	BEGIN

;	1285		LOCAL TABS;

;	1286		TABS=(.LEVEL+1)*INDENT;		! COMPUTE NUMBER OF BLANKS TO PRECEDE OUTPUT LINE

;	1287		IF ACTUALCOUNT() EQLU 1

;	1288		THEN	BEGIN			! USE DEFAULT OUTPUT BUFFER AND SIZE

;	1289			OUTPUT_RAB[RAB$L_RBF]=LINE_BUFFER-.TABS;

;	1290						! (INCLUDE LEADING BLANKS)

;	1291			OUTPUT_RAB[RAB$W_RSZ]=.LINE_SIZE+.TABS;

;	1292			END

;	1293		ELSE	BEGIN			!  BUILD OUTPUT BUFFER

;	1294			LOCAL	OUT_LINE:	VECTOR[MAX_LINE_SIZE+MAX_TAB_SIZE,BYTE],

;	1295				OUT_POINTER:;	! POINTER TO OUTPUT STRING

;	1296			OUT_POINTER=CH$MOVE(.TABS,TAB_STRING,OUT_LINE);

;	1297						! INSERT LEADING BLANKS

;	1298			INCR ARG FROM 1 TO ACTUALCOUNT() BY 2

;	1299						! PACK ITEMS ON LINE

;	1300			DO	BEGIN

;	1301				IF (.OUT_POINTER+ACTUALPARAMETER(.ARG+1))

;	1302					GEQU (OUT_LINE+MAX_TAB_SIZE+MAX_LINE_SIZE)

;	1303				THEN EXITLOOP

;	1304				ELSE	OUT_POINTER=CH$MOVE(ACTUALPARAMETER(.ARG+1),

;	1305					ACTUALPARAMETER(.ARG),.OUT_POINTER);

;	1306				END;

;	1307			OUTPUT_RAB[RAB$L_RBF]=OUT_LINE;

;	1308			OUTPUT_RAB[RAB$W_RSZ]= .OUT_POINTER-OUT_LINE;

;	1309			END;

;	1310		END;

;	1311	

;	1312	!

;	1313	! WRITE RECORD TO OUTPUT



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 14-2

; Digital Equipment Corporation

;

;	1314	!

;	1315	

;	1316	IF	NOT $PUT(RAB=OUTPUT_RAB)

;	1317	THEN	PUT_MESSAGE(HELP$_WRITEERR,

;     P 1318				1,OUTPUT_NAM_DESC,

;     P 1319				.OUTPUT_RAB[FAB$L_STS],

;     P 1320				.OUTPUT_RAB[FAB$L_STV]);

;	1321	RETURN;

;	1322	END;







							    .GLOBL  SYS$PUT



					 0DFC 00609 PRINT_LINE:

							    .WORD   Save R2,R3,R4,R5,R6,R7,R8,R10,R11			      ; 1206

		         5A 00000000G  00  9E 0060B 	    MOVAB   LIB$STOP, R10					      ;

		         5B	0000'  CF  9E 00612 	    MOVAB   OUTPUT_NAM_DESC, R11				      ;

		         5E	FF60   CE  9E 00617 	    MOVAB   -160(SP), SP					      ;

				  BE   AB  B5 0061C 	    TSTW    OUTPUT_RAB+2					      ; 1253

				       60  12 0061F 	    BNEQ    3$							      ;

		         56	  50   AE  9E 00621 	    MOVAB   OUTPUT_FAB, $RMS_PTR				      ; 1261

	   00	         6E	       00  2C 00625 	    MOVC5   #0, (SP), #0, #80, ($RMS_PTR)			      ;

		         66	0050   8F     00629									      ;

		         66	5003   8F  B0 0062D 	    MOVW    #20483, ($RMS_PTR)					      ;

		    16   A6	       01  90 00632 	    MOVB    #1, 22($RMS_PTR)					      ;

		    1E   A6	0202   8F  B0 00636 	    MOVW    #514, 30($RMS_PTR)					      ;

		    2C   A6	  04   AB  D0 0063C 	    MOVL    OUTPUT_NAM_DESC+4, 44($RMS_PTR)			      ;

		    34   A6	       6B  90 00641 	    MOVB    OUTPUT_NAM_DESC, 52($RMS_PTR)			      ;

		    F8   AB	  50   AE  9E 00645 	    MOVAB   OUTPUT_FAB, OUTPUT_RAB+60				      ; 1262

				  50   AE  9F 0064A 	    PUSHAB  OUTPUT_FAB						      ; 1263

	      00000000G  9F	       01  FB 0064D 	    CALLS   #1, @#SYS$OPEN					      ;

		         52	       50  D0 00654 	    MOVL    R0, RMS_STATUS					      ;

		         05	       52  E8 00657 	    BLBS    RMS_STATUS, 1$					      ;

				  5C   AE  DD 0065A 	    PUSHL   OUTPUT_FAB+12					      ; 1267

				       13  11 0065D 	    BRB     2$							      ;

				  BC   AB  9F 0065F 1$:     PUSHAB  OUTPUT_RAB						      ; 1268

	      00000000G  9F	       01  FB 00662 	    CALLS   #1, @#SYS$CONNECT					      ;

		         52	       50  D0 00669 	    MOVL    R0, RMS_STATUS					      ;

		         12	       52  E8 0066C 	    BLBS    RMS_STATUS, 3$					      ;

				  C8   AB  DD 0066F 	    PUSHL   OUTPUT_RAB+12					      ; 1272

				       52  DD 00672 2$:     PUSHL   RMS_STATUS						      ;

				       5B  DD 00674 	    PUSHL   R11							      ;

				       01  DD 00676 	    PUSHL   #1							      ;

			    007610A4   8F  DD 00678 	    PUSHL   #7737508						      ;

		         6A	       05  FB 0067E 	    CALLS   #5, LIB$STOP					      ;

				       6C  95 00681 3$:     TSTB    (AP)						      ; 1279

				       08  12 00683 	    BNEQ    4$							      ;

				  E4   AB  D4 00685 	    CLRL    OUTPUT_RAB+40					      ; 1281

				  DE   AB  B4 00688 	    CLRW    OUTPUT_RAB+34					      ; 1282

				       61  11 0068B 	    BRB     9$							      ; 1279

	   50	  0094   CB	       01  C1 0068D 4$:     ADDL3   #1, LEVEL, R0					      ; 1286

		         50	       02  C4 00693 	    MULL2   #2, TABS						      ;

		         01	       6C  91 00696 	    CMPB    (AP), #1						      ; 1287

				       13  12 00699 	    BNEQ    5$							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 14-3

; Digital Equipment Corporation

;

		         51	00C4   CB  9E 0069B 	    MOVAB   LINE_BUFFER, R1					      ; 1289

      E4   AB	         51	       50  C3 006A0 	    SUBL3   TABS, R1, OUTPUT_RAB+40				      ;

      DE   AB	  01CC   CB	       50  A1 006A5 	    ADDW3   TABS, LINE_SIZE, OUTPUT_RAB+34			      ; 1291

				       40  11 006AC 	    BRB     9$							      ; 1287

	   6E	  00A8   CB	       50  28 006AE 5$:     MOVC3   TABS, TAB_STRING, OUT_LINE				      ; 1296

		         57	       53  D0 006B4 	    MOVL    R3, OUT_POINTER					      ;

		         58	       6C  9A 006B7 	    MOVZBL  (AP), R8						      ; 1298

		         56	       01  CE 006BA 	    MNEGL   #1, ARG						      ;

				       1D  11 006BD 	    BRB     7$							      ;

	   51	         57	  04 AC46  C1 006BF 6$:     ADDL3   4(AP)[ARG], OUT_POINTER, R1				      ; 1301

		         50	       6D  9E 006C5 	    MOVAB   OUT_LINE+160, R0					      ; 1302

		         50	       51  D1 006C8 	    CMPL    R1, R0						      ;

				       15  1E 006CB 	    BGEQU   8$							      ;

		         50	     6C46  D0 006CD 	    MOVL    (AP)[ARG], R0					      ; 1305

				  04 AC46  DF 006D1 	    PUSHAL  4(AP)[ARG]						      ; 1304

	   67	         60	       9E  28 006D5 	    MOVC3   @(SP)+, (R0), (OUT_POINTER)				      ;

		         57	       53  D0 006D9 	    MOVL    R3, OUT_POINTER					      ;

	   56	         02	       58  F1 006DC 7$:     ACBL    R8, #2, ARG, 6$					      ; 1298

				     FFDD     006E0									      ;

		    E4   AB	       6E  9E 006E2 8$:     MOVAB   OUT_LINE, OUTPUT_RAB+40				      ; 1307

		         50	       6E  9E 006E6 	    MOVAB   OUT_LINE, R0					      ; 1308

      DE   AB	         57	       50  A3 006E9 	    SUBW3   R0, OUT_POINTER, OUTPUT_RAB+34			      ;

				  BC   AB  9F 006EE 9$:     PUSHAB  OUTPUT_RAB						      ; 1316

	      00000000G  9F	       01  FB 006F1 	    CALLS   #1, @#SYS$PUT					      ;

		         11	       50  E8 006F8 	    BLBS    R0, 10$						      ;

		         7E	  C4   AB  7D 006FB 	    MOVQ    OUTPUT_RAB+8, -(SP)					      ; 1320

				       5B  DD 006FF 	    PUSHL   R11							      ;

				       01  DD 00701 	    PUSHL   #1							      ;

			    007610D4   8F  DD 00703 	    PUSHL   #7737556						      ;

		         6A	       05  FB 00709 	    CALLS   #5, LIB$STOP					      ;

					   04 0070C 10$:    RET     							      ; 1206



; Routine Size:  260 bytes





;	1323	



; Bliss-32 7.352	Saturday 22-AUG-1978 03:41:13	DBB3:[HELP.SRC]HELP.B32;8					Page 15

; Digital Equipment Corporation

;

;	1324	END ELUDOM









							    .GLOBL  LIB$SIGNAL, LIB$STOP



;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  $PLIT$         	   144  NOWRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $OWN$          	   628    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $CODE$         	  1805  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       103         3       174











; Size:		1805 code + 772 data bytes

; Run Time:	00:54.1

; Elapsed Time:	01:47.8

; Memory Used:	303 pages

; Compilation Complete

