DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T t

⟦7b733177c⟧ TextFile

    Length: 11866 (0x2e5a)
    Types: TextFile
    Names: »te_defs.h«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/teco/te_defs.h« 

TextFile

/* 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 */