Google
 

Trailing-Edge - PDP-10 Archives - tops20-v7-ft-dist1-clock - 7-sources/ltype.bli
There are 10 other files named ltype.bli in the archive. Click here to see a list.
 %TITLE 'LTYPE - TYPE and null line-mode commands'
MODULE LTYPE (				! TYPE and null line-mode commands
		IDENT = '3-002'			! File: LTYPE.BLI Edit: GB3002
		) =
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 TYPE and null commands.
!
! 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 routines EDT$$TY_CMD  and NULL_COM from the
!	module EXEC.BLI.
! 1-002	- Regularize headers.  JBS 20-Mar-1981
! 1-003	- Change NULL_COM to EDT$$NULL_CMD .  JBS 30-Mar-1981
! 1-005 - Switch back to first buffer if /STAY. STS 21-Apr-1982
! 1-006 - Add a check for CNTRL/C.  SMB 19-May-1982
! 1-007	- Set a flag if control C actually aborts something.  JBS 25-May-1982
! 1-008 - Stop working message before printing to screen.  SMB 22-Jun-1982
! 1-009 - Stop processing on bad select range.  SMB 01-Jul-1982
! 1-010 - Undo yesterday's fix because we want to print current line.  SMB 02-Jul-1982
! 1-011	- Don't fool with the formatting routine.  JBS 05-Jul-1982
! 1-012 - Make the call to EDT$$RNG_NUMLN in line. STS 22-Sep-1982
! 1-013	- Correct a typo in edit 1-012.  JBS 30-Sep-1982
! 1-014 - Put code for edt$$rng_retfrst in line. STS 11-Oct-1982
! 1-015 - Remove setting of G_TXT_ONSCR.  SMB 14-Dec-1982
! 3-001 - Fix problem when there is no range pointer in the null command. CJG 10-Jan-1984
! 3-002 - Fix the fix above.  GB 22-Aug-1984
!--
%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!

REQUIRE 'EDTSRC:TRAROUNAM';

FORWARD ROUTINE
    EDT$$TY_CMD : NOVALUE,			! Process the TYPE command
    EDT$$NULL_CMD : NOVALUE;			! Process the null command

!
! INCLUDE FILES:
!

REQUIRE 'EDTSRC:EDTREQ';

!
! MACROS:
!
!	NONE
!
! EQUATED SYMBOLS:
!
!	NONE
!
! OWN STORAGE:
!
!	NONE
!
! EXTERNAL REFERENCES:
!
!	In the routines
%SBTTL 'EDT$$TY_CMD  - TYPE line-mode command'

GLOBAL ROUTINE EDT$$TY_CMD 			! TYPE line-mode command
    : NOVALUE =

!++
! FUNCTIONAL DESCRIPTION:
!
!	Command processing routine for the TYPE command.  Position to
!	the first line of the range, then loop through the range
!	displaying each line.  If the /STAY qualifier was used,
!	then reposition to the position at the start of the command,
!	otherwise, reposition to the first line typed.
!
! FORMAL PARAMETERS:
!
!	NONE
!
! IMPLICIT INPUTS:
!
!	CUR_BUF
!	RNG_ORIGPOS
!	EXE_CURCMD
!	EXE_SBITS
!	RNG_NOOFLN
!
! IMPLICIT OUTPUTS:
!
!	CUR_BUF
!	CC_DONE
!
! ROUTINE VALUE:
!
!	NONE
!
! SIDE EFFECTS:
!
!	NONE
!
!--

    BEGIN

    EXTERNAL ROUTINE
	EDT$$STOP_WKINGMSG,		! Stop the working message
	EDT$$CHK_CC,			! Check for CONTROL C typed
	EDT$$NXT_LNRNG,
	EDT$$RNG_REPOS,
	EDT$$RD_CURLN,
	EDT$$TY_CURLN;

    EXTERNAL
	EXT_MOD,			! 1 = we are under the EXT command
	RNG_FRSTLN,
	CUR_BUF : REF TBCB_BLOCK,
	RNG_ORIGPOS : POS_BLOCK,
	EXE_CURCMD : REF NODE_BLOCK,	! Pointer to the current command.
	RNG_SAVPOS : POS_BLOCK,
	EXE_SBITS,			! The options switches.
	CC_DONE,			! Set to 1 if control C actually aborts something
	RNG_NOOFLN;			! number of lines processed in a range

    LOCAL
	SAV_BUF,
	STATUS;

    SAV_BUF = .CUR_BUF;
    RNG_FRSTLN = 1;
    EDT$$CPY_MEM (POS_SIZE, .CUR_BUF, RNG_ORIGPOS);
    EDT$$RNG_REPOS (.EXE_CURCMD [RANGE1]);
    STATUS = 1;
!+
! Turn off the "working" message if it might be on, since the type
! command doesn't want competition with a flashing message.
!-

    IF (.EXT_MOD) THEN EDT$$STOP_WKINGMSG ();

    WHILE .STATUS DO
	BEGIN
	STATUS = EDT$$NXT_LNRNG (0);

	IF .STATUS
	THEN
	    BEGIN
	    STATUS = ( NOT EDT$$CHK_CC ());

	    IF .STATUS THEN EDT$$TY_CURLN () ELSE CC_DONE = 1;

	    END;

	END;

    IF (.RNG_NOOFLN EQL 0) THEN EDT$$TY_CURLN ();

    IF ( NOT .EXE_SBITS<OPB_STAY>)
    THEN
	BEGIN
	EDT$$CPY_MEM (POS_SIZE, RNG_SAVPOS, .CUR_BUF);
	EDT$$RD_CURLN ();
	END
    ELSE
	BEGIN
	CUR_BUF = .SAV_BUF;
	EDT$$CPY_MEM (POS_SIZE, RNG_ORIGPOS, .CUR_BUF);
	EDT$$RD_CURLN ();
	END;

    END;					! of routine EDT$TY_CMD
%SBTTL 'EDT$$NULL_CMD  - null line-mode command'

GLOBAL ROUTINE EDT$$NULL_CMD 			! Null line-mode command
    : NOVALUE =

!++
! FUNCTIONAL DESCRIPTION:
!
!	Command processing routine for the null command.  If the range is '.'
!	then move one line forward and display it.  Otherwise, process it as
!	a TYPE comamnd.
!
! FORMAL PARAMETERS:
!
!	NONE
!
! IMPLICIT INPUTS:
!
!	EXE_CURCMD
!
! IMPLICIT OUTPUTS:
!
!	NONE
!
! ROUTINE VALUE:
!
!	NONE
!
! SIDE EFFECTS:
!
!	NONE
!
!--

    BEGIN

    EXTERNAL ROUTINE
	EDT$$RD_NXTLN,
	EDT$$TY_CURLN;

    EXTERNAL
	EXE_CURCMD : REF NODE_BLOCK;	! Pointer to the current command.

    BIND
	RANGE = .EXE_CURCMD [RANGE1] : NODE_BLOCK;

    IF ((.RANGE [RAN_TYPE] EQL RAN_NULL) OR (RANGE EQL 0))
    THEN
	BEGIN
	EDT$$RD_NXTLN ();
	EDT$$TY_CURLN ()
	END
    ELSE
	EDT$$TY_CMD ();

    END;					! of routine EDT$$NULL_CMD
END						! of module EDT$LTYPE

ELUDOM