Trailing-Edge
-
PDP-10 Archives
-
bb-h138f-bm
-
7-sources/scrzapsin.bli
There are 10 other files named scrzapsin.bli in the archive. Click here to see a list.
%TITLE 'SCRZAPSIN - Mark lines to be repainted'
MODULE SCRZAPSIN ( ! Mark lines to be repainted
IDENT = '3-002' ! File: SCRZAPSIN.BLI Edit: CJG3002
) =
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 marks screen lines for repaint
!
! ENVIRONMENT: Runs at any access mode - AST reentrant
!
! AUTHOR: Bob Kushlis, CREATION DATE: September 8, 1979
!
! MODIFIED BY:
!
! 2-001 - Original. SMB 20-Sep-1982. This module is a complete
! rewrite of the old SCRZAPSIN module.
! 2-002 - Modify to use new 48 bit macro. STS 01-Oct-1982
! 2-003 - Modify to mark screen pointers for repaint. SMB 08-Oct-1982
! 2-004 - Fix up the format a little. SMB 10-Oct-1982
! 2-005 - Put deleted lines on the free list. JBS 24-Oct-1982
! 2-006 - Maintain the various screen pointers. JBS 24-Oct-1982
! 2-007 - Don't check on CUR_SCRPTR. JBS 25-Oct-1982
! 2-008 - Call SC_LNDEL instead of hard coding delete lines. SMB 26-Oct-1982
! 2-009 - Maintain SCR_EDIT_MINPOS. JBS 27-Oct-1982
! 2-010 - Add the third parameter. JBS 09-Nov-1982
! 2-011 - Remove the edit buffer. JBS 27-Dec-1982
! 2-012 - Add two more parameters. JBS 27-Dec-1982
! 3-001 - Modify for Tops10/20. GB 03-May-1983
! 3-002 - Modify ASSERT macro to include error code. CJG 30-Jan-1984
!--
%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!
REQUIRE 'EDTSRC:TRAROUNAM';
FORWARD ROUTINE
EDT$$SC_REPAINT : NOVALUE;
!
! INCLUDE FILES:
!
REQUIRE 'EDTSRC:EDTREQ';
!
! MACROS:
!
! NONE
!
! EQUATED SYMBOLS:
!
! NONE
!
! OWN STORAGE:
!
! NONE
!
! EXTERNAL REFERENCES:
!
! In the routine
%SBTTL 'EDT$$SC_REPAINT - mark screen lines for repaint'
GLOBAL ROUTINE EDT$$SC_REPAINT ( ! Mark screen lines for repaint
FIRST, ! First line to clear
LAST, ! Last line to clear
MINPOS, ! First position modified
MAXPOS, ! Last position modified
INSDEL_FLAG ! Flag for handling of inserted and deleted lines
) : NOVALUE =
!++
! FUNCTIONAL DESCRIPTION:
!
! This routine marks specified lines in the screen data structure for
! repaint, indicating that those lines must be completely updated.
!
! FORMAL PARAMETERS:
!
! FIRST The first line to repaint
!
! LAST The last line to repaint
!
! MINPOS First position modified, in first line
!
! MAXPOS Last position modified, in last line (if < 0, don't repaint the last line)
!
! INSDEL_FLAG 0 = skip deleted and inserted lines,
! 1 = free deleted lines, repaint inserted lines,
! -1 = should be no deleted or inserted lines
!
! IMPLICIT INPUTS:
!
! NONE
!
! IMPLICIT OUTPUTS:
!
! FST_SCRPTR
! LST_SCRPTR
!
! ROUTINE VALUE:
!
! NONE
!
! SIDE EFFECTS:
!
! Marks the specified lines as modified.
!
!--
BEGIN
MAP
FIRST : REF SCREEN_LINE,
LAST : REF SCREEN_LINE;
EXTERNAL ROUTINE
EDT$$SC_LNDEL; ! Delete a line from the structure
EXTERNAL
FST_SCRPTR : REF SCREEN_LINE, ! First screen pointer in the data base
LST_SCRPTR : REF SCREEN_LINE; ! Last screen pointer in the data base
LOCAL
NXT_SCRPTR : REF SCREEN_LINE,
SCRPTR : REF SCREEN_LINE,
REPAINT_DONE;
SCRPTR = .FIRST;
REPAINT_DONE = 0;
!+
! Update the lines for repaint until the last line is seen.
! Deleted lines, however, are put on the free list if so requested.
!-
WHILE (( NOT .REPAINT_DONE) AND (.SCRPTR NEQA 0)) DO
BEGIN
IF ((.SCRPTR [SCR_EDIT_FLAGS] AND (SCR_EDIT_INSLN OR SCR_EDIT_DELLN)) NEQ 0)
THEN
BEGIN
CASE .INSDEL_FLAG FROM 0 TO 1 OF
SET
[0] : ! Skip over deleted and inserted lines
BEGIN
NXT_SCRPTR = .SCRPTR [SCR_NXT_LINE];
IF (.SCRPTR EQLA .LAST) THEN REPAINT_DONE = 1 ELSE SCRPTR = .NXT_SCRPTR;
END;
[1] : ! Free deleted lines, mark inserted lines for repaint
BEGIN
NXT_SCRPTR = .SCRPTR [SCR_NXT_LINE];
IF ((.SCRPTR [SCR_EDIT_FLAGS] AND SCR_EDIT_DELLN) NEQ 0)
THEN
BEGIN
EDT$$SC_LNDEL (.SCRPTR); ! Free the deleted line
!+
! The first and last cells had better not have been set to zero.
!-
ASSERT (23, .LST_SCRPTR NEQA 0);
ASSERT (23, .FST_SCRPTR NEQA 0);
END
ELSE
BEGIN ! Mark the inserted line for repaint
SCRPTR [SCR_EDIT_FLAGS] = .SCRPTR [SCR_EDIT_FLAGS] AND ( NOT SCR_EDIT_INSLN);
SCRPTR [SCR_EDIT_FLAGS] = .SCRPTR [SCR_EDIT_FLAGS] OR SCR_EDIT_MODIFY;
END;
IF (.SCRPTR EQLA .LAST) THEN REPAINT_DONE = 1 ELSE SCRPTR = .NXT_SCRPTR;
END;
[OUTRANGE] :
ASSERT (23, 0);
TES;
END
ELSE
BEGIN
IF (.SCRPTR EQLA .FIRST)
THEN
SCRPTR [SCR_EDIT_MINPOS] = MINU (.SCRPTR [SCR_EDIT_MINPOS], .MINPOS)
ELSE
SCRPTR [SCR_EDIT_MINPOS] = 0;
IF ((.SCRPTR EQLA .LAST) AND (.MAXPOS GEQ 0))
THEN
SCRPTR [SCR_EDIT_MAXPOS] = MAXU (.SCRPTR [SCR_EDIT_MAXPOS], .MAXPOS)
ELSE
SCRPTR [SCR_EDIT_MAXPOS] = 255;
IF ((.SCRPTR NEQA .LAST) OR (.MAXPOS GEQ 0))
THEN
SCRPTR [SCR_EDIT_FLAGS] = .SCRPTR [SCR_EDIT_FLAGS] OR SCR_EDIT_MODIFY;
IF (.SCRPTR EQLA .LAST) THEN REPAINT_DONE = 1 ELSE SCRPTR = .SCRPTR [SCR_NXT_LINE];
END;
END;
END; ! of routine EDT$$SC_REPAINT
!<BLF/PAGE>
END ! of module EDT$SCRZAPSIN
ELUDOM