Google
 

Trailing-Edge - PDP-10 Archives - bb-r775c-bm_tops20_ks_upd_3 - sources/ticlraud.bli
There are 10 other files named ticlraud.bli in the archive. Click here to see a list.
 %TITLE 'TICLRAUD - flush journal file'
MODULE TICLRAUD (				! Flush journal file
		IDENT = '3-002'			! File: TICLRAUD.BLI Edit: CJG3002
		) =
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:
!
!	Flush journal file.
!
! ENVIRONMENT:	Runs at any access mode - AST reentrant
!
! AUTHOR: Bob Kushlis, CREATION DATE: June 9, 1979
!
! MODIFIED BY:
!
! 1-001	- Original.  DJS 18-FEB-1981.  This module was created by
!	extracting routine EDT$$TI_FLUSHJOUFI  from module TINPUT.
! 1-002	- Regularize headers.  JBS 11-Mar-1981
! 1-003	- Add parameter to routine and flag to record.  JBS 18-Jun-1981
! 1-004	- Make record flag compatible with EDT V2.  JBS 07-Jul-1981
! 1-005	- Fix a bug in control C processing.  JBS 17-Dec-1981
! 1-006	- Continue to debug control C processing.  JBS 24-Dec-1981
! 1-007	- Revise control C data names.  JBS 29-Dec-1981
! 1-008	- Use two words for control C counters.  JBS 30-Dec-1981
! 1-009	- Decrease stack usage.  JBS 27-Jan-1982
! 1-010	- We must write 0-length journal records.  JBS 01-Apr-1982
! 1-011	- We must not write a record unless it has been marked valid.  JBS 09-Apr-1982
! 1-012	- Use symbols instead of magic numbers in control C journaling.  JBS 24-May-1982
! 3-001 - Fix journal file for TOPS-20 operation. CJG 15-Jun-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$$TI_FLUSHJOUFI : NOVALUE;

!
! INCLUDE FILES:
!

REQUIRE 'EDTSRC:EDTREQ';

REQUIRE 'SYS:JSYS';

!
! MACROS:
!
!	NONE
!
! EQUATED SYMBOLS:
!
!	NONE
!
! OWN STORAGE:
!
!	NONE
!
! EXTERNAL REFERENCES:
!
!	In the routine
%SBTTL 'EDT$$TI_FLUSHJOUFI  - flush journal file'

GLOBAL ROUTINE EDT$$TI_FLUSHJOUFI (		! Flush journal file
    RECORD_TYPE					! text or control C
    ) : NOVALUE =

!++
! FUNCTIONAL DESCRIPTION:
!
!	This routine writes either a text record or a control C record.
!	A text record is taken from the journal buffer.  A control C record
!	consists of the count of the number of times we tested for control C
!	and didn't find it.  Upon writing either record the control c counter
!	is cleared; thus it records the number of tests since the last journal
!	record.
!
! FORMAL PARAMETERS:
!
!	RECORD_TYPE	ASCII 'T' for a text record, ASCII 'C' for a control C record.
!
! IMPLICIT INPUTS:
!
!	TIN_OBUF
!	TIN_OBUFPOS
!	CC_CNT1
!	JOU_VALID
!
! IMPLICIT OUTPUTS:
!
!	TIN_OBUFPOS
!	JOU_VALID
!
! ROUTINE VALUE:
!
!	NONE
!
! SIDE EFFECTS:
!
!	NONE
!
!--

    BEGIN

    EXTERNAL ROUTINE
	EDT$$JOU_PUTREC;

    EXTERNAL
	TIN_OBUF : VECTOR [CH$ALLOCATION (256, BYTE_SIZE)],
					! The journal buffer
	TIN_OBUFPOS,			! Position in journal output buffer
	CC_CNT1,			! Number of control C tests
	JOU_VALID;			! 1 = journal record is valid

    LOCAL
	PTR,
	JOURNAL_RECORD : VECTOR [CH$ALLOCATION (CC_REC_SIZE, BYTE_SIZE)];
					! For building the control C record

!+
! Make sure the control C counter is reasonable.
!-
    ASSERT (4, .CC_CNT1 LEQ CC_CTR_MAX);

    SELECTONE .RECORD_TYPE OF
	SET

	[%C'T'] : 				! Output a text record
	    BEGIN
	    ASSERT (25, .TIN_OBUFPOS LEQ 256);
	    ASSERT (25, .TIN_OBUFPOS GEQ 0);

	    IF (.TIN_OBUFPOS GTR 0) THEN ASSERT (13, .JOU_VALID);

	    IF .JOU_VALID
	    THEN
		BEGIN
		EDT$$JOU_PUTREC (TIN_OBUF [0], .TIN_OBUFPOS);
		TIN_OBUFPOS = 0;
		JOU_VALID = 0;
		END;

	    END;

	[%C'C'] : 				! Output a control C record
	    BEGIN
!+
! A control-C record consists of a journal file escape character, a flag to
! indicate that this is a control-C record, and the CC_CNT1 value stored as
! 12 octal ascii bytes.
!-

	    PTR = CH$PTR (JOURNAL_RECORD,, BYTE_SIZE);
	    CH$WCHAR_A (JOU_REC_ESC, PTR);	 ! Flag as non-text record
	    CH$WCHAR_A (CC_REC_FLAG, PTR);	 ! Control-C record
	    _NOUT (.PTR, .CC_CNT1,
		NO_MAG + NO_LFL + NO_ZRO + FLD (12, NO_COL) + 10);
	    EDT$$JOU_PUTREC (JOURNAL_RECORD, CC_REC_SIZE);
	    END;

	[OTHERWISE] :
	    ASSERT (13, 0);
	TES;

    END;					! of routine EDT$$TI_FLUSHJOUFI


END
ELUDOM