Google
 

Trailing-Edge - PDP-10 Archives - tops20-v7-ft-dist1-clock - 7-sources/data.bli
There are 12 other files named data.bli in the archive. Click here to see a list.
!GREEN:<ZBRAD.20808>DATA.BLI.2 20-Nov-85 13:34:38, Edit by MERRILL
!Edit 36 Add the global CR_FLAG for eating the LF of CRLF pair
%TITLE 'DATA - Common Data Definitions'
MODULE DATA (				! Common Data Definitions
		IDENT = '3-013'			! File: DATA.BLI Edit: CJG3013
		) =
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 contains common data definitions used throughout
!	the editor.
!
! ENVIRONMENT:	Used in all EDT configurations.
!
! AUTHOR: Bob Kushlis, CREATION DATE:  6-AUG-1979
!
! MODIFIED BY:
!
! Dan Szymanski,  21-JUL-80,  01
!	As part of the expanded key definition facilities, the default
!	definitions for VT52 and VT100 keypads have been moved to KEYPAD.
!	The table TRN_TBL  now contains (relative) pointers to the strings
!	of nokeypad commands defining the keys.  The variable TRN_TBLINIT  was
!	added to indicate the initialization of the translation table.
!
! Dan Szymanski,  15-JAN-81,  02
!	Variable DEL_CHLEN  added to keep track of length of the deleted
!	character buffer.
!
! Dan Szymanski,  28-JAN-81,  03
!	Variable CAS_TYP  added to indicate type of changecase.
!
! 2-004	- Regularized the header and removed some symbols not being used.
!	   JBS 13-Feb-1981
! 2-005	- Added IOFI_NFND .  JBS 19-Feb-1981
! 2-006	- Fixed file name and module name.  JBS 04-Mar-1981
! 2-007	- Change EOB_LINE to EOB_LN .  JBS 30-Mar-1981
! 2-008	- Add REQUIRE for TRAROUNAM.REQ.  JBS 17-Apr-1981
! 2-009	- Correct a typo in a comment.  JBS 01-MAY-1981
! 2-010	- Make the journal buffer 256 bytes long.  JBS 18-Jun-1981
! 2-011	- Add more control C variables.  JBS 22-Jun-1981
! 2-012 - add REF_USER_ENTITIES vector  TMV 3-Aug-81
! 2-013	- Remove MAC_LST , no longer used.  JBS 07-Aug-1981
! 2-014	- Add PA_NOQUO .  JBS 26-Aug-1981
! 2-015 - Add RPT . STS 26-Aug-1981
! 2-016 - Add FNF_MSGFLG  TMV 10-Sep-1981
! 2-017 - Add DFLT_VERB for changecase mode.  STS 21-Sep-1981
! 2-018 - Add G_SUMRY to type out summary or not. STS 01-Oct-1981
! 2-019 - Add new variables for text strings. STS 06-Oct-1981
! 2-020	- Add strings for prompting.  JBS 20-Oct-1981
! 2-021 - Add variables for para and word types.  STS 21-Oct-1981
! 2-022	- Add four more prompts, amd make max length 31 chars.  JBS 23-Oct-1981
! 2-023	- Remove RNG_ALLRNG.  JBS 02-NOV-1981
! 2-024 - Remove all references to addresses to make sharable, and move
!	   all initialization out to EDT$INIT.  STS 05-Nov-1981
! 2-025	- Add a cell for /VAR and /STREAM.  JBS 28-Nov-1981
! 2-026 - Add variables for file i/o routine and environment. STS 11-Dec-1981
! 2-027	- Revise control C variables and add one more.  JBS 29-DEC-1981
! 2-028	- Add a flag and a counter for the 'working' message.  JBS 12-Jan-1982
! 2-029 - Add IO_VFCHD, (this was in IOMOD) STS 20-Jan-1982
! 2-030 - Line numbers declarations moved here from system specific routines.
!	  New line number globals added.  SMB 29-Jan-1982
! 2-031 - Change definition of maximum line number.  SMB 1-Feb-1982
! 2-032 - Add more line number globals.  SMB 3-Feb-1982
! 2-033 - Add a global for actual count of lines resequenced.  SMB 7-Feb-1982
! 2-034	- Add a global for enabling autorepeat manipulation.  JBS 09-Feb-1982
! 2-035 - Add globals for EDT$WORKIO address and environment. STS 10-Feb-1982
! 2-036 - Add global for workfile record descriptor.  STS 15-Feb-1982
! 2-037 - Add global to flag entering and leaving EXT command mode.  SMB 26-Feb-1982
! 2-038 - Add callable literals. STS 08-Mar-1982
! 2-039 - Change definition of EOB marker.  SMB 08-Mar-1982
! 2-040 - Add flag for re-entry. STS 11-Mar-1982
! 2-041	- Add OPTIONS.  This will replace CMD and JOU.  JBS 18-Mar-1982
! 2-042	- Remove the EDT$K_ symbols to EDT$FILEIO, and remove CMD and JOU.
!	   JBS 23-Mar-1982
! 2-043 - Add flags to indicate input file and/or command file open. STS 07-Apr-1982
! 2-044 - Add global to indicate quotes around key. STS 08-Apr-1982
! 2-045	- Add JOU_VALID.  JBS 09-Apr-1982
! 2-046	- Add COM_NAM.  JBS 04-May-1982
! 2-047	- Add CHAIN_INFO and CC_DONE.  JBS 24-May-1982
! 2-048 - Add MESSAGE_LINE for change mode messages. SMB 15-Jun-1982
! 2-049 - Add CHM_FRST_ENTERED for callable edt.   SMB 1-Jul-1982
! 2-050	- Add FMT_BOT, FMT_LCNT and LASTMSG, remove
!	   CHM_FRST_ENTRY.  JBS 05-Jul-1982
! 2-051 - Remove PMT_PRTC. STS 07-Jul-1982
! 2-052 - Add SAV_TIWID to save terminal width. STS 08-Jul-1982
! 2-053	- Remove EDT$$A_STR_CMP, add EDT$$B_CHAR_INFO.  JBS 19-Jul-1982
! 2-054 - Add descriptor for signalled filename.  STS 10-Jul-1982
! 2-055 - Initialize EDT$$G_PST_CNT to zero.  SMB 22-Jul-1982
! 2-056 - Add some new globals for terminal characteristics.  SMB 30-Jul-1982
! 2-057 - Add a flag to abort a write. STS 05-Aug-1982
! 2-058	- Revise key translation data base.  JBS 12-Aug-1982
! 2-058 - Add globals for xlate routine address and environment word. STS 13-Aug-1982
! 2-059	- Revise key translation data base.  JBS 12-Aug-1982
! 2-060 - Add global literals for options word masks. STS 17-Aug-1982
! 2-061	- Add EDT$$G_TI_SCROLL and EDT$$G_TI_EDIT.  JBS 01-Sep-1982
! 2-062	- Remove reference to EDT$$TI_WRLN, no longer used.  JBS 02-Sep-1982
! 2-063 - Add new screen package globals.  SMB 11-Sep-1982
! 2-064 - Change the definition of EDT$$Z_EOB_LN again.  SMB 20-Sep-1982
! 2-065 - Add a screen pointer global for EOB.  SMB 05-Oct-1982
! 2-066 - Add a flag to indicate we must! do a put to journal file. STS 06-Oct-1982
! 2-067	- Add EDT$$G_SCR_REBUILD.  JBS 09-Oct-1982
! 2-068 - Add new select buffer global.  SMB 11-Oct-1982
! 2-069	- Add EDT$$G_TI_DUMB.  JBS 16-Oct-1982
! 2-070 - Add memory allocation maximum global.  SMB 18-Oct-1982
! 2-071	- Add a counter for records inserted.  JBS 21-Oct-1982
! 2-072	- Make the counter also count records deleted.  JBS 27-Oct-1982
! 2-073	- Add EDT$$G_BOT_LINE.  JBS 02-Dec-1982
! 2-074	- Remove cells which appear to be unused.  JBS 14-Dec-1982
! 2-075	- Add EDT$$G_CS_OLDCHNO.  JBS 27-Dec-1982
! 2-076 - Add scrolling region globals.  SMB 11-Jan-1983
! 2-077	- Add EDT$$G_RECSCRUPD.  JBS 21-Jan-1983
! 2-078	- Add conditionals for WPS and VT220 support.  JBS 10-Feb-1983
! 2-079	- Add new value for EDT$$G_SCR_CHGD.  JBS 02-Mar-1983
! 2-080	- Add character names table.  JBS 04-Mar-1983
!
! 3-001 - Modify for LCG operation. CJG 08-Oct-1982
! 3-002 - Remove XLATE_?? locations because we don't use them. CJG 2-Jun-1983
! 3-003 - Change control-C counters. CJG 17-Jun-1983
! 3-004 - Change the way that filespecs are handled. CJG 22-Jun-1983
! 3-005 - Add new labels AAAAAA and ZZZZZZ so that everything can be zeroed
!	  in one go by INIT. CJG 22-Jun-1983
! 3-006 - Add EDT$M_NEWFILE flag to OPTION for CREATE command. CJG 12-Jul-1983
! 3-007 - Add CTRL_T for SET/SHOW CONTROL-T command. CJG 25-Sep-1983
! 3-008 - Add PROMPT_LENGTH for correct positioning of errors. CJG 7-Oct-1983
! 3-009 - Add IGN_LEN and IGN_PTR for SET SEARCH IGNORE. CJG 2-Nov-1983
! 3-010 - Add a flag for use with the PUSH command - PUSH_FLAG. CJG 22-Nov-1983
! 3-011 - Add CC_WAIT so that ^C can be seen during terminal I/O. CJG 5-Jan-1984
! 3-012 - Add FMT_FREE to improve speed of format routines. CJG 11-Jan-1984
! 3-013 - Add ERR_NUMBER for last TOPS20 error. GB 6-Aug-1984
!--

%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!
!	NONE
!
! INCLUDE FILES:
!

REQUIRE 'EDTSRC:TRAROUNAM';

REQUIRE 'EDTSRC:EDTREQ';

LIBRARY 'EDTSRC:SUPPORTS';

LIBRARY 'EDTSRC:TRANSLATE';

LIBRARY 'EDTSRC:KEYPADDEF';

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

LITERAL
    NO_SELECT = -1;

!
! OWN STORAGE:
!
!	NONE
!
! EXTERNAL REFERENCES:
!
!	NONE
!<BLF/PAGE>
!+
! The remainder of this module defines storage used throughout the editor.
!-

!+
!************************************************************
!
! The following label must not be moved. All data beetween AAAAAA and
! ZZZZZZ will be set to zero by INIT. Any data which must retain its
! preset value should be placed after ZZZZZZ.
!
!************************************************************
!-

GLOBAL
    AAAAAA;

GLOBAL
!+
! Command buffer and pointers
!-
    CMD_BUF : BLOCK [CH$ALLOCATION (256, BYTE_SIZE)],	! Command line buffer
    CMD_PTR,				! Pointer into command buffer
    CMD_END,				! Pointer to end of command
    CMD_LEN,				! Length of command buffer
    TEMP_BUFFER : BLOCK [CH$ALLOCATION (260, BYTE_SIZE)],	! Temporary string buffer
    PROMPT_LENGTH,			! Length of prompt string
!+
! Line buffer and pointers
!-
    LN_BUF : BLOCK [CH$ALLOCATION (256, BYTE_SIZE)],	! Current line buffer
    LN_PTR,				! Pointer to char in current line
    LN_END,				! Pointer to end of line
    LN_LEN,				! Length of current line
!+
! Filespec descriptor blocks
!-
    INP_NAM : BLOCK [DSC$K_SIZE],	! Input file descriptor
    OUT_NAM : BLOCK [DSC$K_SIZE],	! Output file descriptor
    CMD_NAM : BLOCK [DSC$K_SIZE],	! Command file descriptor
    JOU_NAM : BLOCK [DSC$K_SIZE],	! Journal file descriptor
    WRT_NAM : BLOCK [DSC$K_SIZE],	! Write file descriptor
    INC_NAM : BLOCK [DSC$K_SIZE],	! Include file descriptor
    HELP_NAM : BLOCK [CH$ALLOCATION (80, BYTE_SIZE)],
    HELP_NAMLEN,			! Help file storage
    GETJFN_BLOCK : BLOCK [16],		! GTJFN block for everyone

!+
! Control-C and control-T handling
!-

    CC : VOLATILE,			! Set when control C is typed.
    CC_CNT1,				! Times tested since last journal record
    CC_CNT2,				! Second control C counter
    CC_FLAG,				! Second control C flag
    CC_DONE,				! Set if control C has been acted upon
    CC_WAIT,				! Set when ^C may occur in terminal I/O
    SECOND : VOLATILE,			! Set once a second (using an AST) for the 'working' message
    WORKCOUNT,				! Counter to support the 'working' message
    CTRL_T,				! Set if CTRL/T = Tab function

!+
! Text buffers
!-

    CUR_BUF : REF TBCB_BLOCK,		! The current text buffer control block
    PRV_BUF : REF TBCB_BLOCK,		! Previous tbcb address.
    MAC_BUF : REF TBCB_BLOCK,		! Pointer to current macro tbcb
    PST_BUF : REF TBCB_BLOCK,		! The paste text buffer control block
    BUF_LST,				! List of active text buffers.

!+
! Other flags etc.
!-

    CR_FLAG,				! CRLF pair flag, set on CR clear on LF
					! or other chars
    INPUT_OPN,				! indicates main input file open
    CMD_OPN,				! indicates command file open
    EXT_MOD : INITIAL (0),		! 1 = in EXT command mode
    EDIT_MOD,				! Current editting mode
    EDIT_DFLTMOD,			! The mode to enter after startup.
    SAV_CNT,				! Flush count for audit trail.
    ABT_WRITE,				! abort any write being done
    EXITD,				! Set to indicate the editor has exited
    HELP_SET,				! Help-file JFN
    PUT_JOU,
    OPTIONS,				! Options bits
    NOS,				! Line numbers enabled flag
    CAS_FLG,				! Flag case (upper, lower none)
    EXCT_MATCH,				! Exact matches required?
    SEA_BEG,				! End searches at beginning?
    SEA_BNDD,				! Search bounded?
    IGN_LEN,				! Length of IGNORE string
    IGN_PTR,				! Pointer to IGNORE string
    QUIET,				! Quiet mode
    RPT,				! Allow repeat counts?
    FNF_MSGFLG,				! Print file not found message
    EIGHT_BIT,				! Eightbit mode
    VFY,				! Do we verify command files?
    JOU_VALID,				! 1 = journal record is valid, 0 = it isn't, don't write.
    ALT_BUF,				! Alternate buffer for copy etc.
    TI_TYP,				! Terminal type.
    TT_OPEN,				! Terminal status, 1 = open
    TI_PLEN,				! Terminal page length
    TI_RESET : INITIAL (0),		! Terminal char have been reset
    SAV_TIWID,				! original terminal width
    KPAD,				! Use the keypad?
    WD_WRAP,				! word wrap?
    US_ENT : VECTOR [4],		! Pointers to user defined entities.
    US_TXT : VECTOR [2],		! Address of user defined texts
    TAB_SIZ,				! Structured tab size.
    TAB_LVL,				! Structured tab level.
    TADJ,				! Tabs adjust level.
    INP_SRC,				! Source of command input.
    INP_CNT,				! Count since last flush.
    RCOV_MOD,				! Are we in recovery mode.
    PUSH_FLAG,				! Non-zero if PUSH was last command
    FORK_HANDLE,			! Fork handle for sub-fork
    RECSCRUPD;				! Counter for updating the screen in recovery mode

!+
! Change mode data declarations.
!+

GLOBAL
    LN_CHGD,				! Indicates current line has changed.
    COL,				! The column we should be on.
    DIRN,				! The current direction.
    DEL_LN : BLOCK 			! Deleted line buffer.
	[CH$ALLOCATION (257, BYTE_SIZE)],
    DEL_LNLEN,				! Length of deleted line.
    DEL_WD : BLOCK 			! Deleted word buffer.
	[CH$ALLOCATION (81, BYTE_SIZE)],
    DEL_WDLEN,				! Length of deleted word.
    DEL_CH : BLOCK 			! Deleted character buffer.
	[CH$ALLOCATION (2, BYTE_SIZE)],
    DEL_CHLEN,				! Length of deleted character.
    DIR_MOD,				! The directional mode:
					! -1 for backup, 1 for advance.
    EXI,
    REVID,				! reverse video on?
    VERT,				! was last entity VERT?
    PST_CNT : INITIAL (0),		! No. of characters pasted.
    SEA_PTR,				! search string address.
    SEA_LEN,				! search string length
    RPL_STR,				! replace string address
    RPL_LEN,				! replace string length
    CAS_TYP,				! Type of changecase being performed
    DFLT_VERB,				! Default verb (move, chgu, or chgl)
    SUMRY,				! type out summary or not on exit
    WRDTYP,				! delimiter a word or not flag
    PARTYP,				! wps para or regular para flag
    TRN_TBLINIT;			! True if translation table has been initialized

GLOBAL
    TRN_TBL : VECTOR [K_KPAD_HASHSIZ];	! Hash table of key definitions
!+
! Globals for the new screen updater.
!-

GLOBAL
    MEM_CNT,				! Memory allocation count
    OLD_SEL,				! Address of old select buffer
    TRUN,				! Truncate or wrap long lines?
    TI_WID,				! Width of terminal line
    TI_SCROLL,				! 1 = terminal has scrolling regions
    TI_EDIT,				! 1 = terminal has 'edit' features (DL, IL, DCH, ICM)
    TI_DUMB,	! 1 = terminal driver does not track escape sequences (needs CR to avoid wrap)
    TOP_SCREG,				! Top of current scrolling region
    BOT_SCREG,				! Bottom of current scrolling region
    SCLL_TOP,				! top limit of cursor before scrolling
    SCLL_BOT,				! bottom limit of cursor before scrolling
    SCR_LNS,				! number of screen lines to use
    SCR_CHGD,				! see below
!+
! 0 = screen OK,
! 1 = screen must be cleared and repainted,
! 2 = terminal must be initialized, then screen cleared and repainted.
!-
    SCR_REBUILD,			! The text area of the screen must be rebuilt from the work file
    TXT_ONSCR,				! command put text on screen.
    RECS_INSERTED,			! Count of records inserted and deleted since last screen update
    SHF,				! The number of columns shifted.
    SEL_LN : LN_BLOCK,			! Relative line number of select.
    SEL_BUF : REF TBCB_BLOCK,		! select buffer.
    SCR_BUF : REF TBCB_BLOCK,		! Screen text buffer control block
    MESSAGE_LINE,			! Change mode message line
    MSGFLG,				! Indicates a message has been displayed
    LASTMSG,				! Number of the last message displayed
    LN_NO,				! current line number.
    CUR_COL,				! current column
    CS_LNO,				! cursor line number
    CS_CHNO,				! character position of cursor
    CS_OLDCHNO,				! Previous character position of cursor
    CS_LN : LN_BLOCK,			! relative line number of cursor line.
    PRV_LN,				! Previous line number.
    PRV_COL,				! Previous column number.
    TOP_LN : LN_BLOCK,			! Line number of enforced top line.
    SEL_POS,				! select position.
    CUR_SCRLN : LN_BLOCK,		! Current screen record
    EOB_SCRPTR,				! EOB sceen pointer
    CSR_SCRPTR,				! Pointer to cursor screen line info
    FST_SCRPTR,				! Pointer to first screen line info buffer
    LST_SCRPTR,				! Pointer to last screen line info buffer
    CUR_SCRPTR,				! Pointer to current screen line info buffer
    TOP_SCRPTR,				! Pointer to the top screen line
    BOT_SCRPTR,				! Pointer to the bottom screen line
    BOT_LINE,				! All screen lines below this one have been erased
    FST_AVLN;				! Number available screen line blocks


GLOBAL
    ENB_AUTRPT,				! 1 = enable autorepeat manipulation.
    K_AUTRPT,				! auto repeat indicator.
    RDAHEDBF : BLOCK [CH$ALLOCATION (K_RDAHED_LEN, BYTE_SIZE)],	! Read-ahead buffer
    RDAHED;				! number of characters in the buffer

!+
! Global data used by EDTWF
!-

GLOBAL
    WK_AVAIL,
    WK_CURBUK,
    WK_GRTSTBUK,
    WK_MODFD,
    WK_NXTLNO : LN_BLOCK,		! Line number following an insert
    WK_STARTNO : LN_BLOCK,		! Line number of line preceding an insert
    WK_INSCNT : LN_BLOCK,		! The count of inserted lines
    WK_RESCNT : LN_BLOCK,		! The count of resequenced lines
    WK_LN : REF LIN_BLOCK,
    WK_BUK : REF BLOCK [WF_BUKT_SIZE] FIELD (WFB_FIELDS);

!+
! Data used by FORMAT
!-

GLOBAL
    FMT_BUF : BLOCK [CH$ALLOCATION (FMT_BUFLEN, BYTE_SIZE)],
    FMT_CUR,				! Current pointer
    FMT_FREE,				! Space left in format buffer
    FMT_LNPOS,				! Position on formatted line (on screen)
    FMT_WRRUT,				! Current write routine
    FMT_BOT,				! 1 = formatted output printed on bottom of screen
    FMT_LCNT;				! Number of lines printed at the bottom of the screen

!+
! Data used by EXEC
!-

GLOBAL
    EXE_SUBCNT,
    EXE_QRYQUIT,
    EXE_SBITS,
    EXE_SBLK : REF NODE_BLOCK,
    EXE_CURCMD : REF NODE_BLOCK;

!+
! Data used by line mode parser
!-

GLOBAL
    PA_ABO,				! flag indicating to abort parse
    DEFKEY,				! flag indicating getting a key
    PA_CURRNG : REF NODE_BLOCK,		! the current range node
    PA_THRURNG : REF NODE_BLOCK,	! The currently being built thru type range
    PA_MORE,				! More data on command line
    PA_ERRNO,				! Error number of parsing error.
    PA_SP,
    PA_BUFRNG : REF NODE_BLOCK,
    PA_ANDLSTHD : REF NODE_BLOCK,
    PA_CURTOK,				! start of the current token
    PA_CURTOKLEN,			! length of current token
    PA_CURCMD,
    PA_NUMVAL : LIN_BLOCK,		! the value of a numeric literal
    PA_STK : BLOCKVECTOR [NUM_NODES, NODE_SIZE] FIELD (NODE_FIELDS);

!+
! Data used by RANGE
!-

GLOBAL
    RNG_MORELN,				! Used by EDT$$NXT_LNRNG  to indicate more lines.
    RNG_FRSTLN,				! Indicates first line in a range.
    RNG_NOOFLN,				! Count of number of lines in a range.
    RNG_EOL : LN_BLOCK,			! The line number at which this range ends
    RNG_CURRNG : REF NODE_BLOCK,		! The current range node
    RNG_ORIGPOS : POS_BLOCK,			! To save the position at start of command.
    RNG_SAVPOS : POS_BLOCK;			! To save the beginning of range

!+
! Data used by TINPUT
!-

GLOBAL
    TIN_ECHOFLG,
    TIN_ECHOPOS,
    TIN_OBUFPOS,				! Next byte to store in journal buffer
    TIN_OBUF : VECTOR [CH$ALLOCATION (256, BYTE_SIZE)],	! Journal file buffer
    TIN_IBUFPTR,
    TIN_IRECLEN,
    TIN_IRECEND,
    TIN_INREC : BLOCK [CH$ALLOCATION (255, BYTE_SIZE)];

!+
! Data used by UTIL
!-

GLOBAL
    SEA_STR : BLOCK [CH$ALLOCATION (64, BYTE_SIZE)],	! Last search string.
    SEA_STRLEN,				! Length of above.
    SUB_STR : BLOCK [CH$ALLOCATION (64, BYTE_SIZE)],	! Last SUBSTITUTE string.
    SUB_STRLEN;				! Length of above.

!+
! Data used by IOMOD
!-

GLOBAL
    IO_VFCHD : BLOCK [CH$ALLOCATION (255, BYTE_SIZE)],
    WF_DESC : BLOCK [8],		! descriptor for workfile
    IO_FNAM,				! filename in signal arguments
    ERR_NUMBER,				! Last system error number
    IOFI_NFND;				! 1 = the open error was 'file not found'


!+
! define literals for the bit masks of the options word.
! These are made global so that we can make them accessible
! outside of EDT.
!-

GLOBAL LITERAL
    EDT$M_RECOVER = 1,
    EDT$M_COMMAND = 2,
    EDT$M_NOJOURNAL = 4,
    EDT$M_NOOUTPUT = 8,
    EDT$M_NOCOMMAND = 16,
    EDT$M_NOCREATE = 32,
    EDT$M_NEWFILE = 64;

!+
! Prompt strings:
!-

GLOBAL
    PMT_LINE : VECTOR [32],		! Line-mode prompt
    PMT_KPD : VECTOR [32],		! Keypad change-mode prompt
    PMT_NOKPD : VECTOR [32],		! Nokeypad change-mode prompt
    PMT_HCCHG : VECTOR [32],		! Hardcopy change mode prompt
    PMT_INS : VECTOR [32],		! Line-mode insert prompt
    PMT_INSN : VECTOR [32],		! Line-mode insert nonumbers prompt
    PMT_QUERY : VECTOR [32];		! /QUERY prompt

!+
!************************************************************
!
! All preceding data is cleared by INIT.
!
!************************************************************
!-

GLOBAL
    ZZZZZZ;

!+
! BPWORD contains the number of bytes in a 36-bit word.
!-

GLOBAL
    BPWORD : INITIAL (BYTES_PER_WORD);

!+
! Define the powers of ten as longword constants, these are used both
! by name, and as a vector having the powers from 0 to 14.  Also define
! other line number related globals.
!-

!+
! In the LCG version, line numbers are stored in one word and one
! half-word. The following table leaves the spare half-word empty.
!-

GLOBAL BIND
    MAX_LINES = UPLIT(10676257905, 1) : VECTOR [2],		! 45035996273
    LNO_VFCMAX = UPLIT(6553500000, 0) : VECTOR [2],		! 6553500000
    LNO_ZERO = UPLIT(0, 0) : VECTOR [2],
    LNO_BIG = UPLIT(34359667872, 1310171) : VECTOR [2],	! 4503599627300000
    LNO_EMPTY = UPLIT (-1, -1, -1) : VECTOR [3],	! An initialization

    LNO0 = UPLIT(1, 0) : VECTOR [2],
    LNO1 = UPLIT(10, 0) : VECTOR [2],
    LNO2 = UPLIT(100, 0) : VECTOR [2],
    LNO3 = UPLIT(1000, 0) : VECTOR [2],
    LNO4 = UPLIT(10000, 0) : VECTOR [2],
    LNO5 = UPLIT(100000, 0) : VECTOR [2],
    LNO6 = UPLIT(1000000, 0) : VECTOR [2],
    LNO7 = UPLIT(10000000, 0) : VECTOR [2],
    LNO8 = UPLIT(100000000, 0) : VECTOR [2],
    LNO9 = UPLIT(1000000000, 0) : VECTOR [2],
    LNO10 = UPLIT(10000000000, 0) : VECTOR [2],
    LNO11 = UPLIT(31280523264, 2) : VECTOR [2],
    LNO12 = UPLIT(3567587328, 29) : VECTOR [2],
    LNO13 = UPLIT(1316134912, 291) : VECTOR [2],
    LNO14 = UPLIT(13161349120, 2910) : VECTOR [2],
    LNO15 = UPLIT(28534276096, 29103) : VECTOR [2];

GLOBAL
    LN_PREV : INITIAL (0),		! Previous VFC line number
    LN_INCR : VECTOR [2] INITIAL (0, 0);	! Current input increment

!+
! GLOBAL BINDS
!

GLOBAL BIND
    CHAR_INFO = UPLIT (CHAR_INFO_TAB);

GLOBAL BIND
    CHAR_NAMES = UPLIT (CHAR_NAMES_TAB);	! Names of some characters

MACRO
    LENGTH (LIST) =
	%LENGTH %;

GLOBAL LITERAL
    CHAR_NAMES_LEN = LENGTH (CHAR_NAMES_TAB);

UNDECLARE %QUOTE
    LENGTH;
!+
! This literal is pointed to when we are at an end of buffer.
!-

GLOBAL BIND
    EOB_LN = UPLIT(0, REP 2 OF (-1), REP 2 OF (0));


END

ELUDOM