|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T t
Length: 11866 (0x2e5a)
Types: TextFile
Names: »te_defs.h«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec1/teco/te_defs.h«
/* TECO for Ultrix Copyright 1986 Matt Fichtenbaum */
/* This program and its components belong to GenRad Inc, Concord MA 01742 */
/* They may be copied if this copyright notice is included */
/* te_defs.h definitions file 1/9/87 */
#include <stdio.h>
#include <ctype.h>
#include <sgtty.h>
#include <setjmp.h>
#define CTL(x) (('x') & 0x1f) /* for control chars */
#define ERROR(e) longjmp(xxx, (e))
#define BLOCKSIZE (0x10000 - 8) /* size of memory block to allocate */
#define CELLSIZE 256 /* number of characters per cell */
#define CSTACKSIZE 64 /* size of command stack */
#define MSTACKSIZE 64 /* size of macro stack */
#define QSTACKSIZE 64 /* size of q register stack */
#define ESTACKSIZE 64 /* size of expression stack */
#define TTIBUFSIZE 1024 /* size of type-ahead buffer */
#define BUFF_LIMIT 16384 /* text buffer soft limit for ED & 4 */
#define NQREGS 36 /* number of Q registers */
#define CBUFF 0 /* id for command buffer */
#define SERBUF NQREGS+1 /* and search string buffer */
#define FILBUF NQREGS+2 /* and file string buffer */
#define SYSBUF NQREGS+3 /* and system command buffer */
#define TIMBUF NQREGS+4 /* and time/date buffer */
#define cbuf qreg[CBUFF] /* shorthand for command-string header */
#define sbuf qreg[SERBUF] /* and for search-buffer header */
#define fbuf qreg[FILBUF] /* and for file-buffer header */
#define sysbuf qreg[SYSBUF] /* and for system command header */
#define timbuf qreg[TIMBUF] /* and for time/date header */
#define cptr (*msp) /* command string is top of macro stack */
#define cmdstr mstack[0] /* for entering command string */
#define TAB 011 /* define special chars */
#define LF 012
#define VT 013
#define FF 014
#define CR 015
#define ESC 033
#define DEL 0177
/* expression operators */
#define OP_START 1
#define OP_ADD 2
#define OP_SUB 3
#define OP_MULT 4
#define OP_DIV 5
#define OP_AND 6
#define OP_OR 7
/* macro flags */
#define F_ITER 1
/* bits in special-character table */
#define A_S 1 /* "skipto()" special character */
#define A_T 2 /* command with std text argument */
#define A_E 4 /* E<char> takes a text argument */
#define A_F 8 /* F<char> takes a text argument */
#define A_X 16 /* char causes "skipto()" to exit */
#define A_Q 32 /* command with q-register argument */
#define A_A 64 /* special char in search string */
#define A_L 128 /* character is a line separator */
\f
/* error codes */
#define E_BNI 1
#define E_CPQ 2
#define E_COF 3
#define E_FNF 4
#define E_IEC 5
#define E_IFC 6
#define E_IIA 7
#define E_ILL 8
#define E_ILN 9
#define E_IPA 10
#define E_IQC 11
#define E_IQN 12
#define E_IRA 13
#define E_ISA 14
#define E_ISS 15
#define E_IUC 16
#define E_MEM 17
#define E_MRP 18
#define E_NAB 19
#define E_NAC 20
#define E_NAE 21
#define E_NAP 22
#define E_NAQ 23
#define E_NAS 24
#define E_NAU 25
#define E_NFI 26
#define E_NFO 27
#define E_NYA 28
#define E_OFO 29
#define E_PDO 30
#define E_POP 31
#define E_SNI 32
#define E_SRH 33
#define E_STL 34
#define E_UTC 35
#define E_UTM 36
#define E_XAB 37
#define E_YCA 38
#define E_IWA 39
#define E_NFR 40
#define E_INT 41
#define E_EFI 42
#define E_IAA 43
#define E_AMB 44
#define E_SYS 45
\f
/* define names for window control registers */
#define WN_type win_data[0]
#define WN_width win_data[1]
#define WN_height win_data[2]
#define WN_seeall win_data[3]
#define WN_mark win_data[4]
#define WN_hold win_data[5]
#define WN_origin win_data[6]
#define WN_scroll win_data[7]
/* define display operations */
#define WIN_OFF 0 /* disable window */
#define WIN_SUSP 1 /* suspend window */
#define WIN_INIT 2 /* turn on window */
#define WIN_RESUME 3 /* re-enable window */
#define WIN_REFR 4 /* refresh window */
#define WIN_LINE 5 /* display one line */
#define WIN_REDRAW 6 /* force window absolute redraw on next refresh */
#define WIN_DISP 7 /* refresh window even if not enabled */
/* define scope special functions */
#define VT_CLEAR 0 /* clear screen */
#define VT_EEOL 1 /* erase to eol */
#define VT_SETSPEC1 2 /* set special (reverse) video */
#define VT_SETSPEC2 3 /* alternative special video */
#define VT_CLRSPEC 4 /* clear it */
#define VT_BS1 5 /* backspace and erase 1 */
#define VT_BS2 6 /* backspace and erase 2 */
#define VT_LINEUP 7 /* up one line */
#define VT_EBOL 8 /* erase from bol */
/* define keyboard modes */
#define TTY_OFF 0 /* final "off" */
#define TTY_SUSP 1 /* temporary suspend */
#define TTY_ON 2 /* initial "on" */
#define TTY_RESUME 3 /* resume after suspend */
/* define values for ED, ET, EZ flags */
#define ED_CARET 1
#define ED_YPROT 2
#define ED_EXPMEM 4
#define ED_SFAIL 16
#define ED_SMULT 64
#define ET_IMAGE 1
#define ET_NOECHO 8
#define ET_CTRLO 16
#define ET_NOWAIT 32
#define ET_QUIT 128
#define ET_TRUNC 256
#define ET_CTRLC 32768
#define EZ_CRLF 1
#define EZ_READFF 2
#define EZ_TAB4 4
#define EZ_NOTMPFIL 8
#define EZ_NOTABI 16
#define EZ_NOVTFF 32
#define EZ_MULT 64
\f
/* define buffer cell */
/* a buffer cell is a forward pointer, a backward pointer, */
/* and CELLSIZE characters */
struct buffcell
{
struct buffcell *f; /* forward pointer */
struct buffcell *b; /* backward pointer */
char ch[CELLSIZE]; /* char storage */
};
/* define structures for buffer header, q-register header, */
/* q-register pointer, macro stack entry, and macro iteration list */
/* these are really alternative ways of looking at the same cell */
struct qh /* q-register header */
{
struct buffcell *f; /* forward pointer */
struct buffcell *b; /* backward pointer */
int z; /* number of characters */
int v; /* q-register numeric value */
} ;
struct qp /* q-register pointer/macro stack entry */
{
struct qp *f; /* forward pointer */
struct buffcell *p; /* pointer to a buffer cell */
int c; /* character offset */
int z; /* number of characters in object pointed to */
int dot; /* current character position */
int flag; /* flags for "iteration in process," "ei macro," etc. */
struct is *il; /* iteration list pointer */
int *condsp; /* saved conditional stack pointer */
} ;
struct is /* macro iteration list entry */
{
struct is *f; /* forward pointer */
struct is *b; /* backward pointer */
struct buffcell *p; /* cell with start of iteration */
int c; /* char offset where iteration started */
int dot; /* char position where iteration started */
int count; /* iteration count */
int dflag; /* definite iteration flag */
} ;
struct ms /* macro stack entry */ /* not used at present */
{
struct ms *f; /* forward pointer */
struct ms *b; /* backward pointer */
struct buffcell *p; /* pointer to a buffer cell */
int c; /* character offset */
struct is *il; /* pointer to iteration list */
} ;
\f
struct bh /* buffer header list entry */
{
struct buffcell *f; /* pointer to buffer */
struct buffcell *b; /* null pointer */
int z; /* number of characters */
int v; /* not used */
struct bh *ff; /* forward pointer */
struct bh *bb; /* backward pointer */
} ;
/* define expression stack entry */
struct exp_entry
{
int val1; /* first value */
int flag1; /* nonzero if there is a first value */
int val2; /* second value (set by 'comma') */
int flag2; /* nonzero if there is one */
int exp; /* expression in process */
int op; /* operation to be applied */
} ;
/* define file data structures */
struct infiledata /* structure of input file info */
{
FILE *fd; /* file pointer */
int eofsw; /* end-of-file switch */
} ;
struct outfiledata /* structure of output file info */
{
FILE *fd; /* file pointer */
char f_name[CELLSIZE+5]; /* real name of output */
char t_name[CELLSIZE+5]; /* temporary output name */
int name_size; /* number of chars in name */
int bak; /* backup flag */
} ;
extern struct infiledata *infile; /* pointer to currently active intput file structure */
extern struct outfiledata *outfile; /* pointer to currently active output file structure */
extern struct outfiledata po_file, so_file; /* output file descriptors */
\f
/* define global variables, etc. */
extern int char_count; /* char count for tab typer */
extern char lastc; /* last char read */
extern int ttyerr; /* error return from ioctl */
extern int errno; /* system error code */
extern struct sgttyb ttybuf; /* local copy of tty control data */
extern int inp_noterm; /* nonzero if standard in is not a terminal */
extern int out_noterm; /* nonzero if standard out is not a term. */
extern jmp_buf xxx; /* preserved environment for error restart */
extern int err; /* local error code */
extern struct qp t_qp; /* temporary buffer pointer */
extern struct qp aa, bb, cc; /* more temporaries */
extern struct buffcell t_bcell; /* temporary bcell */
extern int tabmask; /* mask for selecting 4/8 char tabs */
extern int exitflag; /* flag for ending command str exec */
extern char term_char; /* terminator for insert, search, etc. */
extern char cmdc; /* current command character */
extern char skipc; /* char found by "skipto()" */
extern int dot, z, tdot; /* current, last, temp buffer position */
extern int ll, mm, nn; /* general temps */
extern int ins_count; /* count of chars inserted */
extern int ctrl_e; /* form feed flag */
extern int ctrl_r; /* current number radix (8, 10, 16) */
extern int ctrl_s; /* string length for S, I, G */
extern int ctrl_x; /* search case flag */
extern int ed_val; /* ED value */
extern int es_val; /* ES value */
extern int et_val; /* ET value */
extern int eu_val; /* EU value */
extern int ev_val; /* EV value */
extern int ez_val; /* EZ value */
extern int srch_result; /* result of last :S executed */
extern int atflag; /* flag for @ char typed */
extern int colonflag; /* flag for : char typed */
extern int trace_sw; /* nonzero if tracing command exec */
extern int win_data[]; /* window control parameters */
extern struct buffcell *insert_p; /* pointer to temp text buffer during insert */
extern int buff_mod; /* set to earliest buffer change */
extern int search_flag; /* set nonzero by search */
extern char *errors[]; /* error text */
extern char mapch[], mapch_l[]; /* char mapping tables */
extern char spec_chars[]; /* special character table */
extern char skipto(), find_endcond(), getcmdc(), getcmdc0(); /* routines that return chars */
extern FILE *eisw; /* indirect command file pointer */
extern FILE *fopen();
\f
extern struct buffcell *freebuff; /* buffcell free-list pointer */
extern struct buffcell *dly_freebuff; /* delayed free-list pointer */
extern struct qp *freedcell; /* cell free-list pointer */
extern struct buffcell *get_bcell(); /* get buffcell routine */
extern struct qp *get_dcell(); /* get data cell routine */
/* the text buffer header */
extern struct qh buff;
/* the q-register headers point to the start of the buffer and registers */
extern struct qh qreg[]; /* for q regs, command, search, file */
/* the q-register stack contains temporary copies of q-register contents */
extern struct qh qstack[]; /* q-reg stack */
extern struct qh *qsp; /* q-reg stack pointer */
/* the macro stack contains pointers to the currently active macros. */
/* the top of the stack is the command pointer */
extern struct qp mstack[]; /* macro stack */
extern struct qp *msp; /* macro stack pointer */
/* the expression stack */
extern struct exp_entry estack[]; /* expression stack */
extern struct exp_entry *esp; /* expression stack pointer */