Google
 

Trailing-Edge - PDP-10 Archives - tops20-v7-ft-dist1-clock - 7-sources/scrinit.bli
There are 10 other files named scrinit.bli in the archive. Click here to see a list.
 %TITLE 'SCRINIT - initialize for screen mode'
MODULE SCRINIT (				! Initialize for screen mode
		IDENT = '3-001'			! File: SCRINIT.BLI Edit: GB3001
		) =
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 initializes the screen for change mode editingr
!
! ENVIRONMENT:	Runs at any access mode - AST reentrant
!
! AUTHOR: Bob Kushlis, CREATION DATE: September 8, 1979
!
! MODIFIED BY:
!
! 1-001	- Original.  DJS 12-Feb-1981.  This module was created by
!	extracting the routine EDT$$SC_INIT  from module SCREEN.
! 1-002	- Regularize headers.  JBS 13-Mar-1981
! 1-003 - Initialize for NOKEYPAD mode also.  SMB 1-Mar-1982
! 1-004	- Don't turn off autowrap.  JBS 02-Apr-1982
! 1-005	- Make sure we are in G0.  JBS 26-May-1982
! 1-006	- Remove edit 1-005.  Always sending an SI means we are
!	   sending a control O.  EDT's automatic test procedures
!	   cannot handle control O's.  JBS
! 1-007	- Send "exit hold-screen mode" to a VT52.  JBS 30-Aug-1982
! 1-008	- New screen update logic.  JBS 13-Sep-1982
! 1-009 - Do more initialization of screen update globals.  SMB 20-Sep-1982
! 1-010 - Set up an EOB screen pointer.  SMB 05-Oct-1982
! 1-011	- Remove an unreferenced external declaration.  JBS 09-Oct-1982
! 1-012	- Force the cursor to the upper left corner.  JBS 15-Oct-1982
! 1-013 - Fix the way memory is added to the free list.  SMB 17-Oct-1982
! 1-014	- Don't fool with the screen data base.  JBS 29-Oct-1982
! 1-015	- Make sure the scrolling region is really set.  JBS 18-Jan-1983
! 1-016 - Force a cursor positioning sequence to "home".  SMB 14-Feb-1983
! 1-017	- Do miscellaneous setups first, to be sure terminal will respond
!	   correctly to subsequent setups.  JBS 23-Feb-1983
! 1-018	- Set the width also, in case this is a VT100.  JBS 24-Feb-1983
! 3-001 - Add updates from V3 sources.  GB 03-May-1983
!--
%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!

REQUIRE 'EDTSRC:TRAROUNAM';

FORWARD ROUTINE
    EDT$$SC_INIT : NOVALUE;

!
! INCLUDE FILES:
!

REQUIRE 'EDTSRC:EDTREQ';

!
! MACROS:
!
!+
! The following macros specify the strings used to initialize the terminals.  After this
! initialization more characters are sent to the terminal to complete putting it in the
! state that EDT expects.
!-
!<BLF/NOFORMAT>

MACRO
    KEYPAD_MODE_STRING = %STRING (%CHAR (ASC_K_ESC), '=') %,		! Application keypad mode

    NOKEYPAD_MODE_STRING = %STRING (%CHAR (ASC_K_ESC), '>') %,		! Numeric keypad mode

    VT100_SETUP_STRING = %STRING (		! VT100 initialization
	    %CHAR (ASC_K_ESC), '\',		! String terminator, in case we are in a REGIS string
	    %CHAR (ASC_K_ESC), '<', 		! ANSI mode (in case we are in VT52 mode)
	    %CHAR (ASC_K_ESC), '[?6l', 		! origin mode off
	    %CHAR (ASC_K_ESC), '[m', 		! video attributes off
	    %CHAR (ASC_K_ESC), ')0'		! select special graphics for G1 (leave G0 as set up by user)
	) %,

    VT52_SETUP_STRING = %STRING (		! VT52 initialization
	    %CHAR (ASC_K_ESC), '\'		! Exit hold-screen mode
        ) %;

!<BLF/FORMAT>
!
! EQUATED SYMBOLS:
!

BIND
    KEYPAD_MODE = UPLIT  (KEYPAD_MODE_STRING),
    NOKEYPAD_MODE = UPLIT (NOKEYPAD_MODE_STRING),
    VT100_SETUP = UPLIT (VT100_SETUP_STRING),
    VT52_SETUP = UPLIT (VT52_SETUP_STRING);

LITERAL
    KEYPAD_MODE_LEN = %CHARCOUNT (KEYPAD_MODE_STRING),
    NOKEYPAD_MODE_LEN = %CHARCOUNT (NOKEYPAD_MODE_STRING),
    VT100_SETUP_LEN = %CHARCOUNT (VT100_SETUP_STRING),
    VT52_SETUP_LEN = %CHARCOUNT (VT52_SETUP_STRING);

!
! OWN STORAGE:
!
!	NONE
!
! EXTERNAL REFERENCES:
!
!	In the routine
%SBTTL 'EDT$$SC_INIT  - initialize for screen mode'

GLOBAL ROUTINE EDT$$SC_INIT 			! Initialize for screen mode
    : NOVALUE =

!++
! FUNCTIONAL DESCRIPTION:
!
!	Initialize for screen mode.  The scrolling region is set up for VT100's,
!	[no]keypad mode is set, and the globals pointing to the screen information
!	structure are initialized to zero.
!
! FORMAL PARAMETERS:
!
!	NONE
!
! IMPLICIT INPUTS:
!
!	SCR_LNS
!	REVID
!	KPAD
!	TI_TYP
!	TI_WID
!
! IMPLICIT OUTPUTS:
!
!	REVID
!	TOP_SCREG
!
! ROUTINE VALUE:
!
!	NONE
!
! SIDE EFFECTS:
!
!	NONE
!
!--

    BEGIN

    EXTERNAL ROUTINE
	EDT$$SC_POSABS,				! Position the cursor
	EDT$$SC_SETSCLLREG,			! Set the scrolling region
	EDT$$FMT_LIT : NOVALUE,			! Output a string without interpretation
	EDT$$TI_ENTERCHM : NOVALUE,		! Set up terminal for change mode
	EDT$$SC_SETWID;				! Set the width on a VT100

    EXTERNAL
	SCR_LNS,				! Number of screen lines
	KPAD,				! Keypad activated?
	TI_TYP,				! Terminal type.
	REVID,				! 1 = screen is in reverse video
	TOP_SCREG,			! Top of the scrolling region
	TI_WID;				! Terminal width

!+
! Inform the terminal I/O routines we are entering screen mode
! and set the scrolling region to text area.
!-
    EDT$$TI_ENTERCHM ();
!+
! Set the terminal's parameters properly for EDT.
!-

    IF (.TI_TYP EQL TERM_VT100)
    THEN
	EDT$$FMT_LIT (CH$PTR (VT100_SETUP), VT100_SETUP_LEN)
    ELSE
	EDT$$FMT_LIT (CH$PTR (VT52_SETUP), VT52_SETUP_LEN);

!+
! Set the terminal's width if it is a VT100.
!-
    EDT$$SC_SETWID (.TI_WID);
!+
! Set the scrolling region the way EDT wants it.
!-
    TOP_SCREG = 1;			! Make sure control sequence is issued
    EDT$$SC_SETSCLLREG (0, .SCR_LNS);
!+
! Force a cursor positioning sequence to "home".  This may already have
! been done for some terminals when the scrolling region or width was set.
!-
    EDT$$SC_POSABS (0, 0);
!+
! Either activate or deactivate the keypad.
!-

    IF (.KPAD)				!
    THEN
	EDT$$FMT_LIT (CH$PTR (KEYPAD_MODE), KEYPAD_MODE_LEN)
    ELSE
	EDT$$FMT_LIT (CH$PTR (NOKEYPAD_MODE), NOKEYPAD_MODE_LEN);

    REVID = 0;				! The terminal is not in reverse video
    END;					! of routine EDT$$SC_INIT

!<BLF/PAGE
END						! of module EDT$SCRINIT

ELUDOM