Google
 

Trailing-Edge - PDP-10 Archives - bb-h138f-bm - 7-sources/scrwid.bli
There are 10 other files named scrwid.bli in the archive. Click here to see a list.
 %TITLE 'SCRWID - set the screen width'
MODULE SCRWID (				! Set the screen width
		IDENT = '3-001'			! File: SCRWID.BLI Edit: CJG3001
		) =
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 outputs an escape sequence to set the terminal width
!
! ENVIRONMENT:	Runs at any access mode - AST reentrant
!
! AUTHOR: Sharon M. Burlingame, CREATION DATE: July 29, 1982
!
! MODIFIED BY:
!
! 1-001	- Original.  SMB 29-Jul-1982.
! 1-002	- Maintain PRV_COL and PRV_LN.  JBS 05-Oct-1982
! 1-003 - Remove conditional setting of screen width.  SMB 16-Feb-1983
! 3-001 - Manual says that you can SET SCREEN on a VT52. Make sure it works.
!	  Also check for silly values of width. CJG 12-Jan-1984
!--
%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!

REQUIRE 'EDTSRC:TRAROUNAM';

FORWARD ROUTINE
    EDT$$SC_SETWID;				! Set screen width on VT100's

!
! INCLUDE FILES:
!

REQUIRE 'EDTSRC:EDTREQ';

!
! MACROS:
!
!	NONE
!
! EQUATED SYMBOLS:
!

BIND
    WID_80 = UPLIT (%STRING (%CHAR (ASC_K_ESC), '[?3l')),
    WID_132 = UPLIT (%STRING (%CHAR (ASC_K_ESC), '[?3h'));

LITERAL
    WID_LEN = 5;

!
! OWN STORAGE:
!
!	NONE
!
! EXTERNAL REFERENCES:
!
!	In the routine
%SBTTL 'EDT$$SC_SETWID - set screen width'

GLOBAL ROUTINE EDT$$SC_SETWID (			! Set screen width
    SIZE					! Desired screen size
    ) =

!++
! FUNCTIONAL DESCRIPTION:
!
!	If this terminal is a VT100, then output an escape sequence
!	to modify the width of the terminal
!
! FORMAL PARAMETERS:
!
!  SIZE			the desired screen size
!
! IMPLICIT INPUTS:
!
!	TI_WID
!	TI_TYP
!
! IMPLICIT OUTPUTS:
!
!	TI_WID
!	PRV_COL
!	PRV_LN
!
! ROUTINE VALUE:
!
!	0 = screen size was not changed
!	1 = screen size was changed
!
! SIDE EFFECTS:
!
!	NONE
!
!--

    BEGIN

    EXTERNAL ROUTINE
	EDT$$OUT_FMTBUF,		! Output the escape seq
	EDT$$FMT_LIT;			! Format the escape seq

    EXTERNAL
	TI_WID,				! Current screen size
	TI_TYP,				! Terminal type
	PRV_COL,			! Cursor column number
	PRV_LN;				! Cursor line number

!+
! If this is a VT100 then set the width in the terminal
!-

    IF (.TI_TYP EQL TERM_VT100)
    THEN
	BEGIN
	IF (.SIZE GTR 132) THEN RETURN (0);

!+
! Set the width unconditionally because sometimes the hardware screws up.
!_

	IF (.SIZE LEQ 80)
	THEN
	    EDT$$FMT_LIT (CH$PTR (WID_80), WID_LEN)
	ELSE
	    EDT$$FMT_LIT (CH$PTR (WID_132), WID_LEN);

	EDT$$OUT_FMTBUF ();
	PRV_COL = 0;
	PRV_LN = 0;
	END
    ELSE
	IF (.SIZE GTR 80) THEN RETURN (0);

    TI_WID = .SIZE;
    RETURN (1);
    END;					! of routine EDT$$SC_SETWID

!<BLF/PAGE>
END						! of module EDT$SCWID

ELUDOM