Google
 

Trailing-Edge - PDP-10 Archives - bb-r775d-bm_tops20_ks_upd_4 - 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) 1981, 1985 BY
!	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
!		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 WHICH 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