Google
 

Trailing-Edge - PDP-10 Archives - bb-h138f-bm - 7-sources/lshow.bli
There are 10 other files named lshow.bli in the archive. Click here to see a list.
 %TITLE 'LSHOW - SHOW line-mode command'
MODULE LSHOW (				! SHOW line-mode command
		IDENT = '3-007'			! File: LSHOW.B36 Edit: CJG3007
		) =
BEGIN
!COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1981, 1988.  ALL RIGHTS RESERVED.
!
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ONLY
!IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION OF 
!THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THEREOF MAY 
!NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.  NO TITLE
!TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
!
!THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND 
!SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
!
!DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 
!SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
!
!
!++
! FACILITY:	EDT -- The DEC Standard Editor
!
! ABSTRACT:
!
!	This module executes the line mode SHOW command.
!
! ENVIRONMENT:	Runs at any access mode - AST reentrant
!
! AUTHOR: Bob Kushlis, CREATION DATE: February 3, 1978
!
! MODIFIED BY:
!
! 1-001	- Original.  DJS 30-JAN-1981.  This module was created by
!	extracting the routine EDT$$SHW_CMD  from the module EXEC.BLI.
! 1-002	- Regularize headers.  JBS 20-Mar-1981
! 1-003	- Change E_VERSION to VER .  JBS 31-Mar-1981
! 1-004	- Use the ASSERT macro.  JBS 01-Jun-1981
! 1-005	- Use new message codes.  JBS 06-Aug-1981
! 1-006 - Add show command for REPEAT. STS 26-Aug-1981
! 1-007 - Add show command for FNF. TMV 10-Sept-1981
! 1-008 - Add show command for WPS search type and SUMMARY.
!	  Also a stub for PROMPT. STS 01-Oct-1981
! 1-009 - Add show command for the text of page and end. STS 06-Oct-1981
! 1-010	- Implement SHOW PROMPT.  JBS 21-Oct-1981
! 1-011 - Add show word and show para.  STS 22-Oct-1981
! 1-012	- Add four more prompts and don't document their lengths.  JBS 23-Oct-1981
! 1-013 - remove external reference to INI_TXT.  It was never used here
!         anyway.  STS 06-Nov-1981
! 1-014 - Add SHOW HELP command.  SMB 18-Dec-1981
! 1-015 - Change SHO BUF to call 48-bit count display module.  SMB 5-Feb-1982
! 1-016 - Add show autorepeat. JBS 09-Feb-1982
! 1-017 - Use VERSION.REQ to define the version number of EDT  JBS 09-Mar-1982
! 1-018	- Add SHOW COMMAND.  JBS 04-May-1982
! 1-019 - Change format of SHOW HELP.  SMB 25-May-1982
! 1-020 - Change SHOW HELP for the 11's.  SMB 2-Jun-1982
! 1-021	- Track changes to SET COMMAND in SHOW COMMAND.  JBS 07-Jun-1982
! 1-022 - Make all the show messages look alike. STS 08-Jun-1982
! 1-023	- Correct counts in SHOW WORD and SHOW PARA messages.  JBS 09-Jun-1982
! 1-024 - Modify for new message processing.  SMB 29-Jun-1982
! 1-025 - Add CRLF to SHOW BUFFER if using TI_WRSTR.  SMB 02-Jun-1982
! 1-026	- Use EDT$$FMT_CRLF instead of EDT$$OUT_FMTBUF.  JBS 05-Jul-1982
! 1-027 - Remove prompt PRTC. 07-Jul-1982
! 1-028	- Add two new SHOW SEARCH possibilities.  JBS 20-Jul-1982
! 1-029 - Add the SHOW FILES command.  SMB 04-Aug-1982
! 1-030 - Add a check for READONLY output files to edit 1-029.  SMB 09-Aug-1982
! 1-031	- New design for defined keys.  JBS 13-Aug-1982
! 1-032 - Make use of the bit masks for the options word. 17-Aug-1982
! 1-033	- Fix up references to the EDT$M_ symbols.  JBS 23-Aug-1982
! 1-034	- Add information to SHOW TERM.  JBS 02-Sep-1982
! 1-035	- Improve SHOW TERM printout and add copyright statement to SHOW VERSION.  JBS 17-Sep-1982
! 1-036	- More improvements to SHOW TERMINAL.  JBS 29-Oct-1982
! 1-037 - Change placement of colons in SHOW FILES.  SMB 20-Dec-1982
! 1-038	- Add conditionals for WPS support and VT220 support.  JBS 10-Feb-1983
! 1-039	- Correct the sense of SHOW WORD.  JBS 11-Feb-1983
! 1-040	- Print key definitions in segments.  JBS 07-Mar-1983
! 3-001 - Fix various string ptrs, %C's and string constants. Make this
!	  a 10/20 specific module.  GB 28-Feb-1983
! 3-002 - Change numbers to symbols to make the module more readable.
!	  CJG Ides of March, 1983
! 3-003 - Fix EDT$$FMT_STR and EDT$$FMT_STRCNT. CJG 22-Mar-1983
! 3-004 - Add SHOW CONTROL-T command. CJG 25-Sep-1983
! 3-005 - Add new message for SHOW FILES when invoked with CREATE. CJG 12-Oct-1983
! 3-006 - Add ignore string to SHOW SEARCH. CJG 2-Nov-1983
! 3-007 - Modify ASSERT macro to include error code. CJG 30-Jan-1984
!--

%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!

REQUIRE 'EDTSRC:TRAROUNAM';

FORWARD ROUTINE
    EDT$$SHW_CMD : NOVALUE;			! Process the SHOW command

!
! INCLUDE FILES:
!

LIBRARY 'EDTSRC:SUPPORTS';

LIBRARY 'EDTSRC:KEYPADDEF';

REQUIRE 'EDTSRC:EDTREQ';

REQUIRE 'EDTSRC:PARLITS';

REQUIRE 'EDTSRC:VERSION';

!
! MACROS:
!
!	NONE
!
! EQUATED SYMBOLS:
!
!	NONE
!
! OWN STORAGE:
!
!	NONE
!
! EXTERNAL REFERENCES:
!
!	In the routine
%SBTTL 'EDT$$SHW_CMD  - SHOW line-mode command'

GLOBAL ROUTINE EDT$$SHW_CMD 			! SHOW line-mode command
    : NOVALUE =

!++
! FUNCTIONAL DESCRIPTION:
!
!	Command processing routine for SHOW.  The current command node
!	field SET_TYPE gives an index for the type of SHOW which is
!	being done.  Case on this and put the stuff out.
!
! FORMAL PARAMETERS:
!
!	NONE
!
! IMPLICIT INPUTS:
!
!	TRN_TBLINIT
!	BUF_LST
!	CAS_FLG
!	EDIT_DFLTMOD
!	US_ENT
!	CMD_NAM
!	EXCT_MATCH
!	FNF_MSGFLG
!	US_TXT
!	KPAD
!	NOS
!	QUIET
!	SEA_BEG
!	RPT
!	SEA_BNDD
!	SCR_LNS
!	SCLL_BOT
!	SCLL_TOP
!	TAB_SIZ
!	CUR_BUF
!	TAB_LVL
!	TRUN
!	TI_TYP
!	TI_WID
!	VFY
!	WD_WRAP
!	EXE_CURCMD
!	SUMRY
!	ENB_AUTRPT
!	PARTYP
!	WRDTYP
!	PMT_LINE
!	PMT_KPD
!	PMT_NOKPD
!	PMT_HCCHG
!	PMT_INS
!	PMT_INSN
!	PMT_QUERY
!	CTRL_T
!
! IMPLICIT OUTPUTS:
!
!	NONE
!
! ROUTINE VALUE:
!
!	NONE
!
! SIDE EFFECTS:
!
!	NONE
!
!--

    BEGIN

    EXTERNAL ROUTINE
	EDT$$FMT_CRLF,				! Terminate an output line
	EDT$$TI_WRSTR,
	EDT$$SET_HLPFNAM,
	EDT$$FMT_STRCNT,
	EDT$$TST_BADK,
	EDT$$FMT_CH,
	EDT$$FMT_DCML,
	EDT$$FMT_STR,
	EDT$$OUT_FMTBUF,
	EDT$$MSG_TOSTR,
	EDT$$FIND_KEY,				! Find a key's definition
	EDT$$DEF_DFLTK,				! Define the default keypad
	EDT$$FMT_CHWID;				! Compute the width of a character

    EXTERNAL LITERAL
	EDT$M_NOOUTPUT;

    EXTERNAL
	OPTIONS : BITVECTOR [36],		! bit 3 = /NOOUTPUT
	INP_NAM : BLOCK,			! Input file name
	OUT_NAM : BLOCK,			! Output file name
	TRN_TBLINIT,				! True if translation table has been initialized
	BUF_LST,
	CAS_FLG,
	IGN_LEN,				! Ignore length
	IGN_PTR,				! Ignore pointer
	EDIT_DFLTMOD,
	US_ENT : VECTOR,
	EXCT_MATCH,
	US_TXT : VECTOR,			! user defined text
	FNF_MSGFLG,
	KPAD,
	NOS,
	QUIET,
	SEA_BEG,
	RPT,
	SEA_BNDD,
	SCR_LNS,
	SCLL_BOT,
	SCLL_TOP,
	TAB_SIZ,
	CUR_BUF : REF TBCB_BLOCK,
	TAB_LVL,
	TRUN,
	TI_TYP,
	TI_WID,
	VFY,
	CTRL_T,				! Control-T flag
	WD_WRAP,
	HELP_NAM,			! help file name
	HELP_NAMLEN,			! help file name length
	HELP_SET,			! flag for help file name set
	CMD_NAM : BLOCK,		! Name of command file
	TI_SCROLL,			! 1 = terminal has scrolling regions

%IF SUPPORT_VT220
%THEN
	EIGHT_BIT,			! 1 = this is an eight-bit terminal
%FI

	TI_EDIT,			! 1 = this terminal has 'edit' features (ICM, DCH, IL, DL)
	FMT_LNPOS,			! Current line position
	SUMRY,				! summary flag
	ENB_AUTRPT,			! 1 = manipulate autorepeat in VT100, 0 = don't
	WRDTYP,				! type of word flag
	PARTYP,				! type of para flag
	EXE_CURCMD : REF NODE_BLOCK,	! Pointer to the current command.
	PMT_LINE : VECTOR,		! Counted ASCII string of line-mode prompt
	PMT_KPD : VECTOR,		! Counted ASCII string of keypad prompt
	PMT_NOKPD : VECTOR,		! Counted ASCII string of nokeypad prompt
	PMT_HCCHG : VECTOR,		! Counted ASCII string of hard copy change mode prompt
	PMT_INS : VECTOR,		! Counted ASCII string of line-mode insert prompt
	PMT_INSN : VECTOR,		! Counted ASCII string of line-mode insert nonumbers prompt
	PMT_QUERY : VECTOR;		! Counted ASCII string of /QUERY prompt

    MESSAGES ((KEYNOTDEF, NODEFN, INVPARFOR));

    CASE .EXE_CURCMD [SET_TYPE] FROM SHO_BUFF TO MAX_SHO OF
	SET

	[SHO_BUFF] : 					! Show buffers
	    BEGIN

	    LOCAL
		BUF : REF TBCB_BLOCK;

!+
! Point to first buffer.
!-
	    BUF = .BUF_LST;
!+
! Loop through all buffers, displaying the number of lines
! in each.
!-

	    WHILE (.BUF NEQA 0) DO
		BEGIN
!+
! Put an equal sign before the current buffer.
!-

		IF (.BUF EQL .CUR_BUF) THEN EDT$$FMT_CH (%C'=') ELSE EDT$$FMT_CH (%C' ');

		EDT$$FMT_STR (CH$PTR (BUF [TBCB_NAME],, BYTE_SIZE), .BUF [TBCB_NAME_LEN]);
		EDT$$FMT_CH (ASC_K_TAB);
		EDT$$FMT_STRCNT (BUF [TBCB_LINE_COUNT], CH$PTR (UPLIT (%C' ')), 0);
!+
! If the buffer still has a file attached to it, then print
! an asterisk after the count to indicate there may be more
! lines than we have indicated.
!-

		IF (.BUF [TBCB_INPUT_RAB] NEQ 0) THEN EDT$$FMT_CH (%C'*');

		EDT$$FMT_STR (CH$PTR (UPLIT('	lines')), 6);
		EDT$$FMT_CRLF ();
		BUF = .BUF [TBCB_NEXT_BUF];
		END;

	    END;

	[SHO_CASE] : 					! Show case
	    BEGIN

!+
! The following code relies on there being 5 bytes for each case type
!  and also that they are stored 5 bytes/word  (ie. 10/20 only)
!-
	    BIND
		CASE_STRING = UPLIT('None UpperLower') : VECTOR [3];

	    EDT$$FMT_STR (CH$PTR (CASE_STRING [.CAS_FLG]), 5);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_CTRLT] :					! Show control-T
	    BEGIN

	    IF (.CTRL_T EQL 0)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT ('nocontrol-T')), 11)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT ('control-T')), 9);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_SRCH] : 					! Show search
	    BEGIN

	    CASE .EXCT_MATCH FROM 0 TO 4 OF
		SET

		[0]:
		    EDT$$FMT_STR (CH$PTR (UPLIT ('general')), 7);

		[1]:
		    EDT$$FMT_STR (CH$PTR (UPLIT ('exact')), 5);

		[2]:
		    EDT$$FMT_STR (CH$PTR (UPLIT ('wps')), 3);

		[3]:
		    EDT$$FMT_STR (CH$PTR (UPLIT ('case insensitive')), 16);

		[4]:
		    EDT$$FMT_STR (CH$PTR (UPLIT ('diacritical insensitive')), 25);

		[OUTRANGE]:
		    ASSERT (16, 0);

		TES;

	    IF .SEA_BEG
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT(' begin ')), 7)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT(' end ')), 5);

	    IF (.SEA_BNDD EQL 0)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT('unbounded')), 9)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT('bounded')), 7);

	    IF (.IGN_LEN NEQ 0)
	    THEN
		BEGIN
		EDT$$FMT_STR (CH$PTR (UPLIT (' ignore: "')), 10);
		EDT$$FMT_STR (.IGN_PTR, .IGN_LEN);
		EDT$$FMT_STR (CH$PTR (UPLIT ('"')), 1);
		END;

	    EDT$$FMT_CRLF ();
	    END;

	[SHO_TERM] : 					! Show terminal
	    BEGIN

	    CASE .TI_TYP FROM 0 TO 3 OF
		SET
		[ 0 ] : EDT$$FMT_STR (CH$PTR (UPLIT ('Unknown')), 7);
		[ 1 ] : EDT$$FMT_STR (CH$PTR (UPLIT ('VT52')), 4);
		[ 2 ] : EDT$$FMT_STR (CH$PTR (UPLIT ('VT100')), 5);
		[ 3 ] : EDT$$FMT_STR (CH$PTR (UPLIT ('Hardcopy')), 8);
		TES;

	    IF .TI_SCROLL
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT (', scroll')), 8)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT (', noscroll')), 10);

%IF SUPPORT_VT220
%THEN
	    IF .EIGHT_BIT
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT (', eightbit')), 10)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT (', noeightbit')), 12);
%FI

	    IF .TI_EDIT
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT (', edit')), 6)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT (', noedit')), 8);

	    EDT$$FMT_CRLF ();
	    END;

	[SHO_VERS] : 					! Show version
	    BEGIN
	    EDT$$FMT_STR (CH$PTR (VERSION_TEXT), VERSION_TEXT_LEN);

!+
! Show the copyright statement. If we have an eightbit terminal, we use the
! international copyright symbol, otherwise we simulate it using (C). The
! copyright statement goes on the same line as the version number.
!-

%IF SUPPORT_VT220
%THEN
	    IF .EIGHT_BIT
	    THEN
		EDT$$FMT_STR (CH$PTR (COPYRIGHT_TEXT_8,, BYTE_SIZE), COPYRIGHT_TEXT_8_LEN)
	    ELSE
%FI
		EDT$$FMT_STR (CH$PTR (COPYRIGHT_TEXT_7), COPYRIGHT_TEXT_7_LEN);

	    EDT$$FMT_CRLF ();
	    END;

	[SHO_NTITY] : 					! Show entity
	    BEGIN

	    LOCAL
		LEN,
		ENT;

	    ENT = .US_ENT [.EXE_CURCMD [SET_VAL] - 1];
	    LEN = ..ENT;
	    EDT$$FMT_STR (CH$PTR (.ENT + 1,, BYTE_SIZE), .LEN);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_KEY] : 					! Show key
	    BEGIN

	    LOCAL
		KEY_PTR : REF BLOCK FIELD (KEY_DEF_FIELD),
		STATUS;

	    IF ( NOT .TRN_TBLINIT) THEN STATUS = EDT$$DEF_DFLTK () ELSE STATUS = 1;

	    IF .STATUS
	    THEN
		BEGIN
!+
! Get a pointer to the key definition.  If the key has been defined,
! show that; if the keypad has been defined already, the
! definition is in TRN_TBL ; otherwise use the appropriate
! default keypad tables.
!-
		IF EDT$$TST_BADK (.EXE_CURCMD [KEY_VAL])
		THEN
		    EDT$$MSG_TOSTR (EDT$_KEYNOTDEF)
		ELSE

		    IF EDT$$FIND_KEY (.EXE_CURCMD [KEY_VAL], KEY_PTR)
		    THEN
			BEGIN
!+
! If the key definition is long, show it in pieces.
!-
			LOCAL
			    KEY_P,
			    KEY_L,
			    CH;

			KEY_P = CH$PTR (KEY_PTR [KEY_DEF_TEXT],, BYTE_SIZE);
			KEY_L = .KEY_PTR [KEY_DEF_LEN];
			FMT_LNPOS = 0;
			CH = CH$RCHAR_A (KEY_P);
			KEY_L = .KEY_L - 1;

			WHILE (.KEY_L GEQ 0) DO
			    BEGIN
			    IF ((.FMT_LNPOS + EDT$$FMT_CHWID (.CH, .FMT_LNPOS)) GEQ
				 .TI_WID)
			    THEN
				EDT$$FMT_CRLF ();

			    EDT$$FMT_CH (.CH);
			    CH = CH$RCHAR_A (KEY_P);
			    KEY_L = .KEY_L - 1;
			    END;
			END
		    ELSE
			EDT$$MSG_TOSTR (EDT$_NODEFN);
		END
	    ELSE
		EDT$$MSG_TOSTR (.STATUS);

		EDT$$FMT_CRLF ();
		END;

	[SHO_CURSR] : 					! Show cursor
	    BEGIN
	    EDT$$FMT_DCML (.SCLL_TOP);
	    EDT$$FMT_CH (%C':');
	    EDT$$FMT_DCML (.SCLL_BOT);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_SCRN] : 					! Show screen.
	    BEGIN
	    EDT$$FMT_DCML (.TI_WID);
	    EDT$$OUT_FMTBUF ();
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_NUM] : 					! Show numbers.
	    BEGIN

	    IF (.NOS EQL 1)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT ('numbers')), 7)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT ('nonumbers')), 9);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_VRFY] : 					! Show verify
	    BEGIN

	    IF (.VFY EQL 1)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT ('verify')), 6)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT ('noverify')), 8);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_TRUNC] : 					! Show truncate
	    BEGIN

	    IF (.TRUN EQL 1)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT ('truncate')), 8)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT ('notruncate')), 10);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_KEYPD] : 					! Show keypad
	    BEGIN

	    IF (.KPAD EQL 1)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT ('keypad')), 6)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT ('nokeypad')), 8);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_WRAP] : 					! Show wrap
	    BEGIN

	    IF (.WD_WRAP EQL 256)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT('nowrap')), 6)
	    ELSE
		EDT$$FMT_DCML (.WD_WRAP);

	    EDT$$FMT_CRLF ();
	    END;

	[SHO_MODE] : 					! Show mode
	    BEGIN
!+
! The following code relies on there being 10 bytes for each edit mode
!  and also that they are stored 5 bytes/word  (ie. 10/20 only)
!-

	    BIND
		MODE_STRING = UPLIT('Change    Line      ') : BLOCKVECTOR [, 2];

	    EDT$$FMT_STR (CH$PTR (MODE_STRING [.EDIT_DFLTMOD, 0, 0, 0, 0]), 6);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_LINES] : 					! Show lines
	    BEGIN
	    EDT$$FMT_DCML (.SCR_LNS);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_QUIET] : 					! Show quiet
	    BEGIN

	    IF (.QUIET EQL 1)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT ('quiet')), 5)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT ('noquiet')), 7);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_TAB] : 					! Show tab
	    BEGIN

	    IF (.TAB_SIZ EQL 0)
	    THEN
		BEGIN
		EDT$$FMT_STR (CH$PTR (UPLIT('notab')), 5);
		EDT$$FMT_CRLF ();
		END
	    ELSE
		BEGIN
		EDT$$FMT_STR (CH$PTR (UPLIT('tab size ')), 9);
		EDT$$FMT_DCML (.TAB_SIZ);
		EDT$$FMT_STR (CH$PTR (UPLIT('; tab level ')), 12);
		EDT$$FMT_DCML (.TAB_LVL);
		EDT$$FMT_CRLF ();
		END;

	    END;

	[SHO_REPT] : 					! Show repeat
	    BEGIN

	    IF (.RPT EQL 1)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT('repeat')), 6)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT('norepeat')), 8);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_FNF] : 					! Show file_not_found
	    BEGIN

	    IF (.FNF_MSGFLG EQL 1)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT ('fnf')), 3)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT ('nofnf')), 5);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_SUMM] : 					! show summary
	    BEGIN

	    IF (.SUMRY EQL 1)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT('summary')), 7)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT('nosummary')), 9);

	    EDT$$FMT_CRLF ();
	    END;

	[SHO_PROMPT] : 					! Show Prompt
	    BEGIN

	    LOCAL
		LEN,				! Length of the string
		TXT,				! Address of string contents
		PROMPT_NUM;			! Which prompt string

	    PROMPT_NUM = .EXE_CURCMD [SET_VAL];
	    TXT = (CASE .PROMPT_NUM FROM SET_PLINE TO MAX_SET_PROMPT OF
		SET
		[SET_PLINE] : PMT_LINE;
		[SET_PKEY]  : PMT_KPD;
		[SET_PNKEY] : PMT_NOKPD;
		[SET_PHCCH] : PMT_HCCHG;
		[SET_PINS]  : PMT_INS;
		[SET_PNINS] : PMT_INSN;
		[SET_PQRY]  : PMT_QUERY;
		[OUTRANGE]  :
		    BEGIN
		    ASSERT (16, 0);
		    0
		    END;
		TES);
	    LEN = ..TXT;
	    EDT$$FMT_STR (CH$PTR (.TXT + 1,, BYTE_SIZE), .LEN);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_TEXT] : 					! show text
	    BEGIN

	    LOCAL
		LEN,
		TXT;

	    TXT = .US_TXT [.EXE_CURCMD [SET_VAL] - 1];
	    LEN = ..TXT;
	    EDT$$FMT_STR (CH$PTR (.TXT + 1,, BYTE_SIZE), .LEN);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_WORD] : 					! show word type
	    BEGIN

	    IF .WRDTYP
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT('nodelimiter ')), 12)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT('delimiter ')), 10);

	    EDT$$FMT_CRLF ();
	    END;

	[SHO_PARA] : 					! show word
	    BEGIN

	    IF .PARTYP
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT('nowps ')), 6)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT('wps ')), 4);

	    EDT$$FMT_CRLF ();
	    END;

	[SHO_HELP] : 					! Show Help File Name
	    BEGIN

	    LOCAL
		STATUS;

!+
! If the help file name has not been parsed, call SET HELP so
! that the resultant file name will appear in the message.
!-
	    STATUS = 1;

	    IF (.HELP_SET EQL 0)
	    THEN
		STATUS = EDT$$SET_HLPFNAM (CH$PTR (HELP_NAM), .HELP_NAMLEN);

	    IF (.STATUS)
	    THEN
		BEGIN
		EDT$$FMT_STR (CH$PTR (UPLIT ('Help file name : ')), 17);

		EDT$$FMT_STR (CH$PTR (HELP_NAM), .HELP_NAMLEN);

		EDT$$FMT_CRLF ();
		END;

	    END;

	[SHO_AUTO] : 					! show autorepeat
	    BEGIN

	    IF (.ENB_AUTRPT EQL 1)
	    THEN
		EDT$$FMT_STR (CH$PTR (UPLIT('autorepeat')), 10)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT('noautorepeat')), 12);

	    EDT$$FMT_CRLF ();
	    END;

	[SHO_COMND] : 					! show command

	    BEGIN
	    IF (.CMD_NAM [DSC$A_POINTER] NEQ 0) THEN
		    EDT$$FMT_STR (CH$PTR (.CMD_NAM [DSC$A_POINTER]), .CMD_NAM [DSC$W_LENGTH]);
	    EDT$$FMT_CRLF ();
	    END;

	[SHO_FILES] :

	    BEGIN					! show input/output files
	    LOCAL
		LEN,
		TXT;

	    TXT = CH$PTR (.INP_NAM [DSC$A_POINTER]);
	    LEN = .INP_NAM [DSC$W_LENGTH];
	    EDT$$FMT_STR (CH$PTR (UPLIT ('Input  file: ')), 13);
	    IF (.LEN NEQ 0)
	    THEN
		EDT$$FMT_STR (.TXT, .LEN)
	    ELSE
		EDT$$FMT_STR (CH$PTR (UPLIT ('**Creating new file**')), 21);
	    EDT$$FMT_CRLF ();
	    EDT$$FMT_STR (CH$PTR (UPLIT ('Output file: ')), 13);
	    IF (.OUT_NAM [DSC$W_LENGTH] EQL 0)
	    THEN
		IF ((.OPTIONS AND EDT$M_NOOUTPUT) NEQ 0)
		THEN
		    EDT$$FMT_STR (CH$PTR (UPLIT ('**Readonly**')), 12)
		ELSE
		    EDT$$FMT_STR (.TXT, .LEN)
	    ELSE
		EDT$$FMT_STR (CH$PTR (.OUT_NAM [DSC$A_POINTER]), .OUT_NAM [DSC$W_LENGTH]);

	    EDT$$FMT_CRLF ();
	    END;

	[OUTRANGE] :
	    ASSERT (16, 0);

	TES;

    END;					! of routine EDT$$SHW_CMD


END
ELUDOM