[mod.sources] v09i033: MicroEMACS, version 3.8b, Part01/14

sources-request@mirror.UUCP (03/13/87)

Submitted by: ihnp4!itivax!duncan!lawrence (Daniel Lawrence)
Mod.sources: Volume 9, Issue 33
Archive-name: uemacs3.8b/Part01

#! /bin/sh
# This is a shell archive.  Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
# If this archive is complete, you will see the message:
#		"End of archive 1 (of 14)."
# Contents:  MANIFEST Makefile ansi.c azmap.cmd bdata.cmd dg10.c
#   emacs.rc epath.h esearch.h evar.h fileio.c hp110.c ibmfn.lst
#   lock.c magic.doc me110.rc me150.rc tcap.c vt52.c
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo shar: Extracting \"MANIFEST\" \(1764 characters\)
if test -f MANIFEST ; then 
  echo shar: Will not over-write existing file \"MANIFEST\"
else
sed "s/^X//" >MANIFEST <<'END_OF_MANIFEST'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X MANIFEST                  1	This shipping list
X Makefile                  1	
X ansi.c                    1	
X azmap.cmd                 1	
X basic.c                   5	
X bdata.cmd                 1	
X bind.c                    6	
X buffer.c                  6	
X crypt.c                   2	
X dg10.c                    1	
X display.c                11	
X ebind.h                   4	
X edef.h                    3	
X efunc.h                   5	
X egapc.c                   2	
X emacs.hlp                 3	
X emacs.key                 2	
X emacs.rc                  1	
X emacs.tut                11	
X emacs1.mss               14	
X epath.h                   1	
X esearch.h                 1	
X estruct.h                 8	
X eval.c                    4	
X evar.h                    1	
X exec.c                    7	
X file.c                    9	
X fileio.c                  1	
X hp110.c                   1	
X hp150.c                   3	
X ibmfn.lst                 1	
X ibmpc.c                   2	
X input.c                   3	
X isearch.c                 9	
X line.c                   10	
X lock.c                    1	
X magic.doc                 1	
X main.c                   13	
X me110.rc                  1	
X me150.rc                  1	
X menu.cmd                  4	
X menu1                     3	
X random.c                 10	
X readme                    8	
X region.c                  2	
X search.c                 12	
X spawn.c                   7	
X st520.c                   4	
X tcap.c                    1	
X termio.c                  5	
X tipc.c                    2	
X vmsvt.c                   2	
X vt52.c                    1	
X window.c                  7	
X word.c                    6	
END_OF_MANIFEST
if test 1764 -ne `wc -c <MANIFEST`; then
    echo shar: \"MANIFEST\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"Makefile\" \(585 characters\)
if test -f Makefile ; then 
  echo shar: Will not over-write existing file \"Makefile\"
else
sed "s/^X//" >Makefile <<'END_OF_Makefile'
XCFLAGS=		-O
X
XOFILES=		ansi.o basic.o bind.o buffer.o display.o file.o \
X		fileio.o hp150.o line.o lock.c main.o random.o region.o \
X		search.o spawn.o tcap.o termio.o vt52.o window.o word.o \
X		exec.o eval.o isearch.o
X
XCFILES=		ansi.c basic.c bind.c buffer.c display.c  file.c \
X		fileio.c hp150.c line.c lock.c main.c random.c region.c \
X		search.c spawn.c tcap.c termio.c vt52.c window.c word.c \
X		exec.c eval.c isearch.c
X
XHFILES=		estruct.h edef.h efunc.h epath.h ebind.h evar.h esearch.h
X
Xemacs:		$(OFILES)
X		$(CC) $(CFLAGS) $(OFILES) -ltermcap -lc -o emacs
X
X$(OFILES):	$(HFILES)
END_OF_Makefile
if test 585 -ne `wc -c <Makefile`; then
    echo shar: \"Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"ansi.c\" \(4419 characters\)
if test -f ansi.c ; then 
  echo shar: Will not over-write existing file \"ansi.c\"
else
sed "s/^X//" >ansi.c <<'END_OF_ansi.c'
X/*
X * The routines in this file provide support for ANSI style terminals
X * over a serial line. The serial I/O services are provided by routines in
X * "termio.c". It compiles into nothing if not an ANSI device.
X */
X
X#define	termdef	1			/* don't define "term" external */
X
X#include        <stdio.h>
X#include	"estruct.h"
X#include        "edef.h"
X
X#if     ANSI
X
X#if	AMIGA
X#define NROW    23                      /* Screen size.                 */
X#define NCOL    77                      /* Edit if you want to.         */
X#else
X#define NROW    25                      /* Screen size.                 */
X#define NCOL    80                      /* Edit if you want to.         */
X#endif
X#define	NPAUSE	100			/* # times thru update to pause */
X#define	MARGIN	8			/* size of minimim margin and	*/
X#define	SCRSIZ	64			/* scroll size for extended lines */
X#define BEL     0x07                    /* BEL character.               */
X#define ESC     0x1B                    /* ESC character.               */
X
Xextern  int     ttopen();               /* Forward references.          */
Xextern  int     ttgetc();
Xextern  int     ttputc();
Xextern  int     ttflush();
Xextern  int     ttclose();
Xextern  int     ansimove();
Xextern  int     ansieeol();
Xextern  int     ansieeop();
Xextern  int     ansibeep();
Xextern  int     ansiopen();
Xextern	int	ansirev();
Xextern	int	ansiclose();
Xextern	int	ansikopen();
Xextern	int	ansikclose();
Xextern	int	ansicres();
X
X#if	COLOR
Xextern	int	ansifcol();
Xextern	int	ansibcol();
X
Xint	cfcolor = -1;		/* current forground color */
Xint	cbcolor = -1;		/* current background color */
X#endif
X
X/*
X * Standard terminal interface dispatch table. Most of the fields point into
X * "termio" code.
X */
XTERM    term    = {
X	NROW-1,
X        NROW-1,
X        NCOL,
X        NCOL,
X	MARGIN,
X	SCRSIZ,
X	NPAUSE,
X        ansiopen,
X        ansiclose,
X	ansikopen,
X	ansikclose,
X        ttgetc,
X        ttputc,
X        ttflush,
X        ansimove,
X        ansieeol,
X        ansieeop,
X        ansibeep,
X	ansirev,
X	ansicres
X#if	COLOR
X	, ansifcol,
X	ansibcol
X#endif
X};
X
X#if	COLOR
Xansifcol(color)		/* set the current output color */
X
Xint color;	/* color to set */
X
X{
X	if (color == cfcolor)
X		return;
X	ttputc(ESC);
X	ttputc('[');
X	ansiparm(color+30);
X	ttputc('m');
X	cfcolor = color;
X}
X
Xansibcol(color)		/* set the current background color */
X
Xint color;	/* color to set */
X
X{
X	if (color == cbcolor)
X		return;
X	ttputc(ESC);
X	ttputc('[');
X	ansiparm(color+40);
X	ttputc('m');
X        cbcolor = color;
X}
X#endif
X
Xansimove(row, col)
X{
X        ttputc(ESC);
X        ttputc('[');
X        ansiparm(row+1);
X        ttputc(';');
X        ansiparm(col+1);
X        ttputc('H');
X}
X
Xansieeol()
X{
X        ttputc(ESC);
X        ttputc('[');
X        ttputc('K');
X}
X
Xansieeop()
X{
X#if	COLOR
X	ansifcol(gfcolor);
X	ansibcol(gbcolor);
X#endif
X        ttputc(ESC);
X        ttputc('[');
X        ttputc('J');
X}
X
Xansirev(state)		/* change reverse video state */
X
Xint state;	/* TRUE = reverse, FALSE = normal */
X
X{
X#if	COLOR
X	int ftmp, btmp;		/* temporaries for colors */
X#endif
X
X	ttputc(ESC);
X	ttputc('[');
X	ttputc(state ? '7': '0');
X	ttputc('m');
X#if	COLOR
X	if (state == FALSE) {
X		ftmp = cfcolor;
X		btmp = cbcolor;
X		cfcolor = -1;
X		cbcolor = -1;
X		ansifcol(ftmp);
X		ansibcol(btmp);
X	}
X#endif
X}
X
Xansicres()	/* change screen resolution */
X
X{
X	return(TRUE);
X}
X
Xansibeep()
X{
X        ttputc(BEL);
X        ttflush();
X}
X
Xansiparm(n)
Xregister int    n;
X{
X        register int q,r;
X
X        q = n/10;
X        if (q != 0) {
X		r = q/10;
X		if (r != 0) {
X			ttputc((r%10)+'0');
X		}
X		ttputc((q%10) + '0');
X        }
X        ttputc((n%10) + '0');
X}
X
Xansiopen()
X{
X#if     V7 | USG | BSD
X        register char *cp;
X        char *getenv();
X
X        if ((cp = getenv("TERM")) == NULL) {
X                puts("Shell variable TERM not defined!");
X                exit(1);
X        }
X        if (strcmp(cp, "vt100") != 0) {
X                puts("Terminal type not 'vt100'!");
X                exit(1);
X        }
X#endif
X	strcpy(sres, "NORMAL");
X	revexist = TRUE;
X        ttopen();
X}
X
Xansiclose()
X
X{
X#if	COLOR
X	ansifcol(7);
X	ansibcol(0);
X#endif
X	ttclose();
X}
X
Xansikopen()	/* open the keyboard (a noop here) */
X
X{
X}
X
Xansikclose()	/* close the keyboard (a noop here) */
X
X{
X}
X
X#if	FLABEL
Xfnclabel(f, n)		/* label a function key */
X
Xint f,n;	/* default flag, numeric argument [unused] */
X
X{
X	/* on machines with no function keys...don't bother */
X	return(TRUE);
X}
X#endif
X#else
Xansihello()
X{
X}
X#endif
END_OF_ansi.c
if test 4419 -ne `wc -c <ansi.c`; then
    echo shar: \"ansi.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"azmap.cmd\" \(521 characters\)
if test -f azmap.cmd ; then 
  echo shar: Will not over-write existing file \"azmap.cmd\"
else
sed "s/^X//" >azmap.cmd <<'END_OF_azmap.cmd'
X;	AZMAP.CMD:	MicroEMACS Macro file
X;			to translate an AZTEC C .SYM map file into
X;			the form needed to read it into ADDSYMS
X;			to be used with Pheonix's PFIX plus (C) debugger
X;
X;			written 6/5/86 by Daniel Lawrence
X
Xbeginning-of-file
Xnewline
Xprevious-line
Xreplace-string "~n" "~n 0000:"
Xbeginning-of-line
Xkill-to-end-of-line
Xnewline
Xnewline
Xnewline
Xbeginning-of-file
Xnewline
Xinsert-string "  Address         Publics by Name"
Xnewline
Xset-mark
Xend-of-file
Xcase-region-upper
Xbeginning-of-file
Xreplace-string "_~n" "~n"
X
END_OF_azmap.cmd
if test 521 -ne `wc -c <azmap.cmd`; then
    echo shar: \"azmap.cmd\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"bdata.cmd\" \(502 characters\)
if test -f bdata.cmd ; then 
  echo shar: Will not over-write existing file \"bdata.cmd\"
else
sed "s/^X//" >bdata.cmd <<'END_OF_bdata.cmd'
X;Create a block of DATA statements for a BASIC program
X; within MicroEMACS 3.8
X
X	insert-string "1000 DATA "
X	set %linenum 1000
X
X*nxtin
X	update-screen		;make sure we see the changes
X	set %data @"Next number[0 to end]: "
X	!if &equal %data 0
X		!goto finish
X	!endif
X
X	!if &greater $curcol 60
X		2 delete-previous-character
X		newline
X		set %linenum &add %linenum 10
X		insert-string &cat %linenum " DATA "
X	!endif
X
X	insert-string &cat %data ", "
X	!goto nxtin
X
X*finish
X
X	2 delete-previous-character
X	newline
X
X
END_OF_bdata.cmd
if test 502 -ne `wc -c <bdata.cmd`; then
    echo shar: \"bdata.cmd\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"dg10.c\" \(3266 characters\)
if test -f dg10.c ; then 
  echo shar: Will not over-write existing file \"dg10.c\"
else
sed "s/^X//" >dg10.c <<'END_OF_dg10.c'
X/*
X * The routines in this file provide support for the Data General Model 10
X * Microcomputer.
X */
X
X#define	termdef	1			/* don't define "term" external */
X
X#include        <stdio.h>
X#include	"estruct.h"
X#include        "edef.h"
X
X#if     DG10
X
X#define NROW    24                      /* Screen size.                 */
X#define NCOL    80                      /* Edit if you want to.         */
X#define	NPAUSE	100			/* # times thru update to pause */
X#define	MARGIN	8			/* size of minimim margin and	*/
X#define	SCRSIZ	64			/* scroll size for extended lines */
X#define BEL     0x07                    /* BEL character.               */
X#define ESC     30                      /* DG10 ESC character.          */
X
Xextern  int     ttopen();               /* Forward references.          */
Xextern  int     ttgetc();
Xextern  int     ttputc();
Xextern  int     ttflush();
Xextern  int     ttclose();
Xextern	int	dg10kopen();
Xextern	int	dg10kclose();
Xextern  int     dg10move();
Xextern  int     dg10eeol();
Xextern  int     dg10eeop();
Xextern  int     dg10beep();
Xextern  int     dg10open();
Xextern	int	dg10rev();
Xextern	int	dg10close();
Xextern	int	dg10cres();
X
X#if	COLOR
Xextern	int	dg10fcol();
Xextern	int	dg10bcol();
X
Xint	cfcolor = -1;		/* current forground color */
Xint	cbcolor = -1;		/* current background color */
Xint	ctrans[] = {		/* emacs -> DG10 color translation table */
X	0, 4, 2, 6, 1, 5, 3, 7};
X#endif
X
X/*
X * Standard terminal interface dispatch table. Most of the fields point into
X * "termio" code.
X */
XTERM    term    = {
X	NROW-1,
X        NROW-1,
X        NCOL,
X        NCOL,
X	MARGIN,
X	SCRSIZ,
X	NPAUSE,
X        dg10open,
X        dg10close,
X	dg10kopen,
X	dg10kclose,
X        ttgetc,
X        ttputc,
X        ttflush,
X        dg10move,
X        dg10eeol,
X        dg10eeop,
X        dg10beep,
X	dg10rev,
X	dg10cres
X#if	COLOR
X	, dg10fcol,
X	dg10bcol
X#endif
X};
X
X#if	COLOR
Xdg10fcol(color)		/* set the current output color */
X
Xint color;	/* color to set */
X
X{
X	if (color == cfcolor)
X		return;
X	ttputc(ESC);
X	ttputc(0101);
X	ttputc(ctrans[color]);
X	cfcolor = color;
X}
X
Xdg10bcol(color)		/* set the current background color */
X
Xint color;	/* color to set */
X
X{
X	if (color == cbcolor)
X		return;
X	ttputc(ESC);
X	ttputc(0102);
X	ttputc(ctrans[color]);
X        cbcolor = color;
X}
X#endif
X
Xdg10move(row, col)
X{
X	ttputc(16);
X        ttputc(col);
X	ttputc(row);
X}
X
Xdg10eeol()
X{
X        ttputc(11);
X}
X
Xdg10eeop()
X{
X#if	COLOR
X	dg10fcol(gfcolor);
X	dg10bcol(gbcolor);
X#endif
X        ttputc(ESC);
X        ttputc(0106);
X        ttputc(0106);
X}
X
Xdg10rev(state)		/* change reverse video state */
X
Xint state;	/* TRUE = reverse, FALSE = normal */
X
X{
X#if	COLOR
X	if (state == TRUE) {
X		dg10fcol(0);
X		dg10bcol(7);
X	}
X#else
X	ttputc(ESC);
X	ttputc(state ? 0104: 0105);
X#endif
X}
X
Xdg10cres()	/* change screen resolution */
X
X{
X	return(TRUE);
X}
X
Xdg10beep()
X{
X        ttputc(BEL);
X        ttflush();
X}
X
Xdg10open()
X{
X	strcpy(sres, "NORMAL");
X	revexist = TRUE;
X        ttopen();
X}
X
Xdg10close()
X
X{
X#if	COLOR
X	dg10fcol(7);
X	dg10bcol(0);
X#endif
X	ttclose();
X}
X
Xdg10kopen()
X
X{
X}
X
Xdg10kclose()
X
X{
X}
X
X#if	FLABEL
Xfnclabel(f, n)		/* label a function key */
X
Xint f,n;	/* default flag, numeric argument [unused] */
X
X{
X	/* on machines with no function keys...don't bother */
X	return(TRUE);
X}
X#endif
X#else
Xdg10hello()
X{
X}
X#endif
END_OF_dg10.c
if test 3266 -ne `wc -c <dg10.c`; then
    echo shar: \"dg10.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"emacs.rc\" \(4818 characters\)
if test -f emacs.rc ; then 
  echo shar: Will not over-write existing file \"emacs.rc\"
else
sed "s/^X//" >emacs.rc <<'END_OF_emacs.rc'
X;	EMACS.RC:	Startup file for MicroEMACS 3.8
X;
X;			This file is executed everytime the
X;			editor is entered
X
X; If you screen "SNOWS", uncomment this line
X;	set $flicker "TRUE"
X
X;	***** Rebind the Function key group
X
Xbind-to-key search-forward		FN;
Xbind-to-key search-reverse		FN<
Xbind-to-key hunt-forward		FN=
Xbind-to-key hunt-backward		FN>
Xbind-to-key next-window			FN?
Xbind-to-key execute-macro		FN@
Xbind-to-key find-file			FNA
Xbind-to-key execute-file		FNB
Xbind-to-key save-file			FNC
Xbind-to-key exit-emacs			FND
X
Xbind-to-key apropos			FNV
Xbind-to-key describe-key		FNW
Xbind-to-key fill-paragraph		FNX
Xbind-to-key shell-command		FN\
Xbind-to-key i-shell			FN]
X
X;	set screen colors
Xadd-global-mode "blue"
X
X;	toggle function key window off
X1 store-macro
X	save-window
X	1 next-window
X	!if &sequal "Function Keys" $cbufname
X		delete-window
X	!endif
X	bind-to-key execute-macro-14 FNT
X!force	restore-window
X	write-message "[Function key window OFF]"
X!endm
X
X;	toggle function key window back on
X14 store-macro
X	1 next-window
X	!if &sequal $cbufname "emacs.hlp"
X		execute-macro-11
X	!endif
X	!if &not &sequal $cbufname "Function Keys"
X		1 split-current-window
X		select-buffer "Function Keys"
X		add-mode "red"
X!force		5 resize-window
X		beginning-of-file
X	!endif
X	bind-to-key execute-macro-1 FNT
X	2 next-window
X	write-message "[Function key window ON]"
X!endm
X
X;	Enter Help
X2 store-macro
X	1 next-window		;Make sure the function key window isn't up!
X	!if &sequal $cbufname "Function Keys"
X		delete-window
X		bind-to-key execute-macro-14 FNT
X	!endif
X	help
X	8 resize-window
X	bind-to-key execute-macro-12 FNI
X	bind-to-key execute-macro-13 FNQ
X	bind-to-key execute-macro-11 FNU
X	bind-to-key execute-macro-15 ^XO
X	bind-to-key execute-macro-15 ^XP
X	bind-to-key execute-macro-15 FN?
X	add-mode "red"
X	beginning-of-file
X	2 forward-character
X	clear-message-line
X!endm
X
X;	Exit Help
X11 store-macro
X	bind-to-key previous-page FNI
X	bind-to-key next-page FNQ
X	bind-to-key execute-macro-2 FNU
X	bind-to-key next-window ^XO
X	bind-to-key previous-window ^XP
X	bind-to-key next-window FN?
X	delete-window
X	clear-message-line
X!endm
X
X;	don't allow these commands from within the HELP screen
X15	store-macro
X	write-message "[Use F2 to exit HELP]!!"
X!endm
X
X;	last help page
X12 store-macro
X	beginning-of-line
X	search-reverse "=>"
X	1 redraw-display
X!endm
X
X;	next help page
X13 store-macro
X	beginning-of-line
X	2 forward-character
X	search-forward "=>"
X	1 redraw-display
X!endm
X
X;	reformat indented paragraph
X
X6 store-macro
X	write-message "                    [Fixing paragraph]"
X	kill-region
X	2 split-current-window
X	select-buffer "[temp]"
X	yank
X	beginning-of-file
X	replace-string "~n	" "~n"
X	write-message "                    [Fixing paragraph]"
X	66 set-fill-column
X	write-message "                    [Fixing paragraph]"
X	fill-paragraph
X	77 set-fill-column
X	beginning-of-file
X	handle-tab
X	replace-string ~n "~n	"
X	write-message "                    [Fixing paragraph]"
X	end-of-file
X	2 delete-previous-character
X	beginning-of-file
X	set-mark
X	write-message "                    [Fixing paragraph]"
X	end-of-file
X	kill-region
X	unmark-buffer
X	delete-window
X	yank
X	delete-buffer "[temp]"
X	write-message "                    [Fixed paragraph]"
X!endm
X
X;	indent region
X
X7 store-macro
X	write-message "                    [Indenting region]"
X	kill-region
X	2 split-current-window
X	select-buffer "[temp]"
X	yank
X	beginning-of-file
X	handle-tab
X	replace-string "~n" "~n	"
X	end-of-file
X	4 delete-previous-character
X	beginning-of-file
X	set-mark
X	write-message "                    [Indenting region]"
X	end-of-file
X	kill-region
X	unmark-buffer
X	delete-window
X	yank
X	delete-buffer "[temp]"
X	write-message "                    [Region Indented]"
X!endm
X
X;	undent region
X
X8 store-macro
X	write-message "                    [Undenting region]"
X	kill-region
X	2 split-current-window
X	select-buffer "[temp]"
X	yank
X	beginning-of-file
X	delete-next-character
X	replace-string "~n	" "~n"
X	end-of-file
X	2 delete-previous-character
X	beginning-of-file
X	set-mark
X	write-message "                    [Undenting region]"
X	end-of-file
X	kill-region
X	unmark-buffer
X	delete-window
X	yank
X	delete-buffer "[temp]"
X	write-message "                    [Region undented]"
X!endm
X
X;	bring up the function key window
X
X	1 split-current-window
X	select-buffer "Function Keys"
X	add-mode "red"
X	5 resize-window
X	insert-string "f1 search      f2 search back | F1 toggle function list F2 toggle help file~n"
X	insert-string "f3 hunt        f4 hunt back   | F3 find command/apropos F4 describe key~n"
X	insert-string "f5 next window f6 exec macro  | F5 reformat paragraph   F6 ref undented region~n"
X	insert-string "f7 find file   f8 exec file   | F7 indent region        F8 undent region~n"
X	insert-string "f9 save file  f10 exit emacs  | F9 execute DOS command F10 shell up~n"
X	beginning-of-file
X	unmark-buffer
X	next-window
END_OF_emacs.rc
if test 4818 -ne `wc -c <emacs.rc`; then
    echo shar: \"emacs.rc\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"epath.h\" \(780 characters\)
if test -f epath.h ; then 
  echo shar: Will not over-write existing file \"epath.h\"
else
sed "s/^X//" >epath.h <<'END_OF_epath.h'
X/*	PATH:	This file contains certain info needed to locate the
X		MicroEMACS files on a system dependant basis.
X
X									*/
X
X/*	possible names and paths of help files under different OSs	*/
X
Xchar *pathname[] =
X
X#if	AMIGA
X{
X	".emacsrc",
X	"emacs.hlp",
X	"",
X	":c/",
X	":t/"
X};
X#endif
X
X#if	ST520
X{
X	"emacs.rc",
X	"emacs.hlp",
X	"\\",
X	"\\bin\\",
X	"\\util\\",
X	""
X};
X#endif
X
X#if	FINDER
X{
X	"emacs.rc",
X	"emacs.hlp",
X	"/bin",
X	"/sys/public",
X	""
X};
X#endif
X
X#if	MSDOS
X{
X	"emacs.rc",
X	"emacs.hlp",
X	"\\sys\\public\\",
X	"\\usr\\bin\\",
X	"\\bin\\",
X	"\\",
X	""
X};
X#endif
X
X#if	V7 | BSD | USG
X{
X	".emacsrc",
X	"emacs.hlp",
X	"/usr/local/",
X	"/usr/lib/",
X	""
X};
X#endif
X
X#if	VMS
X{
X	"emacs.rc",
X	"emacs.hlp",
X	"",
X	"sys$sysdevice:[vmstools]"
X};
X#endif
X
X#define	NPNAMES	(sizeof(pathname)/sizeof(char *))
END_OF_epath.h
if test 780 -ne `wc -c <epath.h`; then
    echo shar: \"epath.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"esearch.h\" \(2286 characters\)
if test -f esearch.h ; then 
  echo shar: Will not over-write existing file \"esearch.h\"
else
sed "s/^X//" >esearch.h <<'END_OF_esearch.h'
X/*
X * ESEARCH.H
X *
X * Defines, typdefs, and global variables that are of use for the
X * routines in search.c and isearch.c.
X *
X */
X
X/*
X * PTBEG, PTEND, FORWARD, and REVERSE are all toggle-able values for
X * the scan routines.
X */
X#define	PTBEG	0	/* Leave the point at the beginning on search.*/
X#define	PTEND	1	/* Leave the point at the end on search.*/
X
X#if	MAGIC
X
X/*
X * Defines for the metacharacters in the regular expressions.
X */
X
X#define	MCNIL		0	/* Like the '\0' for strings.*/
X#define	LITCHAR		1
X#define	ANY		2
X#define	CCL		3
X#define	NCCL		4
X#define	BOL		5
X#define	EOL		6
X#define	CLOSURE		256	/* An or-able value.*/
X#define	MASKCL		CLOSURE - 1
X
X#define	MC_ANY		'.'	/* 'Any' character (except newline).*/
X#define	MC_CCL		'['	/* Character class.*/
X#define	MC_NCCL		'^'	/* Negate character class.*/
X#define	MC_RCCL		'-'	/* Range in character class.*/
X#define	MC_ECCL		']'	/* End of character class.*/
X#define	MC_BOL		'^'	/* Beginning of line.*/
X#define	MC_EOL		'$'	/* End of line.*/
X#define	MC_CLOSURE	'*'	/* Closure - does not extend past newline.*/
X
X#define	MC_ESC		'\\'	/* Escape - suppress meta-meaning.*/
X
X#define	BIT(n)		(1 << (n))	/* An integer with one bit set.*/
X#define	CHCASE(c)	((c) ^ DIFCASE)	/* Toggle the case of a letter.*/
X
X/* HICHAR - 1 is the largest character we will deal with.
X * HIBYTE represents the number of bytes in the bitmap.
X */
X
X#define	HICHAR		256
X#define	HIBYTE		HICHAR >> 3
X
Xtypedef char	*BITMAP;
X
Xtypedef	struct {
X	short int	mc_type;
X	union {
X		int	lchar;
X		BITMAP	cclmap;
X	} u;
X} MC;
X#endif
X
X/* Incremental search defines.
X */
X#if	ISRCH
X#define	CMDBUFLEN	256	/* Length of our command buffer */
X
X#define	IS_ABORT	0x07	/* Abort the isearch */
X#define IS_BACKSP	0x08	/* Delete previous char */
X#define	IS_TAB		0x09	/* Tab character (allowed search char) */
X#define IS_NEWLINE	0x0D	/* New line from keyboard (Carriage return) */
X#define	IS_QUOTE	0x11	/* Quote next character */
X#define IS_REVERSE	0x12	/* Search backward */
X#define	IS_FORWARD	0x13	/* Search forward */
X#define	IS_VMSQUOTE	0x16	/* VMS quote character */
X#define	IS_VMSFORW	0x18	/* Search forward for VMS */
X#define	IS_QUIT		0x1B	/* Exit the search */
X#define	IS_RUBOUT	0x7F	/* Delete previous character */
X
X/* IS_QUIT is no longer used, the variable metac is used instead */
X
X#endif
END_OF_esearch.h
if test 2286 -ne `wc -c <esearch.h`; then
    echo shar: \"esearch.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"evar.h\" \(2763 characters\)
if test -f evar.h ; then 
  echo shar: Will not over-write existing file \"evar.h\"
else
sed "s/^X//" >evar.h <<'END_OF_evar.h'
X/*	EVAR.H:	Environment and user variable definitions
X		for MicroEMACS
X
X		written 1986 by Daniel Lawrence
X*/
X
X/*	structure to hold user variables and their definitions	*/
X
Xtypedef struct UVAR {
X	char u_name[NVSIZE + 1];		/* name of user variable */
X	char *u_value;				/* value (string) */
X} UVAR;
X
X/*	current user variables (This structure will probably change)	*/
X
X#define	MAXVARS		100
X
XUVAR uv[MAXVARS];	/* user variables */
X
X/*	list of recognized environment variables	*/
X
Xchar *envars[] = {
X	"fillcol",		/* current fill column */
X	"pagelen",		/* number of lines used by editor */
X	"curcol",		/* current column pos of cursor */
X	"curline",		/* current line in file */
X	"ram",			/* ram in use by malloc */
X	"flicker",		/* flicker supression */
X	"curwidth",		/* current screen width */
X	"cbufname",		/* current buffer name */
X	"cfname",		/* current file name */
X	"sres",			/* current screen resolution */
X	"debug",		/* macro debugging */
X	"status",		/* returns the status of the last command */
X};
X
X#define	NEVARS	sizeof(envars) / sizeof(char *)
X
X/* 	and its preprocesor definitions		*/
X
X#define	EVFILLCOL	0
X#define	EVPAGELEN	1
X#define	EVCURCOL	2
X#define	EVCURLINE	3
X#define	EVRAM		4
X#define	EVFLICKER	5
X#define	EVCURWIDTH	6
X#define	EVCBUFNAME	7
X#define	EVCFNAME	8
X#define	EVSRES		9
X#define	EVDEBUG		10
X#define	EVSTATUS	11
X
X/*	list of recognized user functions	*/
X
Xtypedef struct UFUNC {
X	char *f_name;	/* name of function */
X	int f_type;	/* 1 = monamic, 2 = dynamic */
X} UFUNC;
X
X#define	MONAMIC		1
X#define	DYNAMIC		2
X#define	TRINAMIC	3
X
XUFUNC funcs[] = {
X	"add", DYNAMIC,		/* add two numbers together */
X	"sub", DYNAMIC,		/* subtraction */
X	"tim", DYNAMIC,		/* multiplication */
X	"div", DYNAMIC,		/* division */
X	"mod", DYNAMIC,		/* mod */
X	"neg", MONAMIC,		/* negate */
X	"cat", DYNAMIC,		/* concatinate string */
X	"lef", DYNAMIC,		/* left string(string, len) */
X	"rig", DYNAMIC,		/* right string(string, pos) */
X	"mid", TRINAMIC,	/* mid string(string, pos, len) */
X	"not", MONAMIC,		/* logical not */
X	"equ", DYNAMIC,		/* logical equality check */
X	"les", DYNAMIC,		/* logical less than */
X	"gre", DYNAMIC,		/* logical greater than */
X	"seq", DYNAMIC,		/* string logical equality check */
X	"sle", DYNAMIC,		/* string logical less than */
X	"sgr", DYNAMIC,		/* string logical greater than */
X	"ind", MONAMIC,		/* evaluate indirect value */
X};
X
X#define	NFUNCS	sizeof(funcs) / sizeof(char *)
X
X/* 	and its preprocesor definitions		*/
X
X#define	UFADD		0
X#define	UFSUB		1
X#define	UFTIMES		2
X#define	UFDIV		3
X#define	UFMOD		4
X#define	UFNEG		5
X#define	UFCAT		6
X#define	UFLEFT		7
X#define	UFRIGHT		8
X#define	UFMID		9
X#define	UFNOT		10
X#define	UFEQUAL		11
X#define	UFLESS		12
X#define	UFGREATER	13
X#define	UFSEQUAL	14
X#define	UFSLESS		15
X#define	UFSGREAT	16
X#define	UFIND		17
END_OF_evar.h
if test 2763 -ne `wc -c <evar.h`; then
    echo shar: \"evar.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"fileio.c\" \(3492 characters\)
if test -f fileio.c ; then 
  echo shar: Will not over-write existing file \"fileio.c\"
else
sed "s/^X//" >fileio.c <<'END_OF_fileio.c'
X/*
X * The routines in this file read and write ASCII files from the disk. All of
X * the knowledge about files are here. A better message writing scheme should
X * be used.
X */
X#include        <stdio.h>
X#include	"estruct.h"
X#include        "edef.h"
X
X#if	MEGAMAX
Xoverlay "fileio"
X#endif
X
XFILE    *ffp;                           /* File pointer, all functions. */
X
X/*
X * Open a file for reading.
X */
Xffropen(fn)
Xchar    *fn;
X{
X        if ((ffp=fopen(fn, "r")) == NULL)
X                return (FIOFNF);
X        return (FIOSUC);
X}
X
X/*
X * Open a file for writing. Return TRUE if all is well, and FALSE on error
X * (cannot create).
X */
Xffwopen(fn)
Xchar    *fn;
X{
X#if     VMS
X        register int    fd;
X
X        if ((fd=creat(fn, 0666, "rfm=var", "rat=cr")) < 0
X        || (ffp=fdopen(fd, "w")) == NULL) {
X#else
X        if ((ffp=fopen(fn, "w")) == NULL) {
X#endif
X                mlwrite("Cannot open file for writing");
X                return (FIOERR);
X        }
X        return (FIOSUC);
X}
X
X/*
X * Close a file. Should look at the status in all systems.
X */
Xffclose()
X{
X#if	MSDOS & CTRLZ
X	fputc(26, ffp);		/* add a ^Z at the end of the file */
X#endif
X	
X#if     V7 | USG | BSD | (MSDOS & (LATTICE | MSC))
X        if (fclose(ffp) != FALSE) {
X                mlwrite("Error closing file");
X                return(FIOERR);
X        }
X        return(FIOSUC);
X#else
X        fclose(ffp);
X        return (FIOSUC);
X#endif
X}
X
X/*
X * Write a line to the already opened file. The "buf" points to the buffer,
X * and the "nbuf" is its length, less the free newline. Return the status.
X * Check only at the newline.
X */
Xffputline(buf, nbuf)
Xchar    buf[];
X{
X        register int    i;
X#if	CRYPT
X	char c;		/* character to translate */
X
X	if (cryptflag) {
X	        for (i = 0; i < nbuf; ++i) {
X			c = buf[i] & 0xff;
X			crypt(&c, 1);
X			fputc(c, ffp);
X		}
X	} else
X	        for (i = 0; i < nbuf; ++i)
X        	        fputc(buf[i]&0xFF, ffp);
X#else
X        for (i = 0; i < nbuf; ++i)
X                fputc(buf[i]&0xFF, ffp);
X#endif
X
X#if	ST520
X        fputc('\r', ffp);
X#endif        
X        fputc('\n', ffp);
X
X        if (ferror(ffp)) {
X                mlwrite("Write I/O error");
X                return (FIOERR);
X        }
X
X        return (FIOSUC);
X}
X
X/*
X * Read a line from a file, and store the bytes in the supplied buffer. The
X * "nbuf" is the length of the buffer. Complain about long lines and lines
X * at the end of the file that don't have a newline present. Check for I/O
X * errors too. Return status.
X */
Xffgetline(buf, nbuf)
Xregister char   buf[];
X{
X        register int    c;
X        register int    i;
X
X        i = 0;
X
X        while ((c = fgetc(ffp)) != EOF && c != '\n') {
X                if (i >= nbuf-2) {
X			buf[nbuf - 2] = c;	/* store last char read */
X			buf[nbuf - 1] = 0;	/* and terminate it */
X                        mlwrite("File has long line");
X#if	CRYPT
X			if (cryptflag)
X				crypt(buf, strlen(buf));
X#endif
X                        return (FIOLNG);
X                }
X                buf[i++] = c;
X        }
X
X#if	ST520
X	if(buf[i-1] == '\r')
X		i--;
X#endif
X        if (c == EOF) {
X                if (ferror(ffp)) {
X                        mlwrite("File read error");
X                        return (FIOERR);
X                }
X
X                if (i != 0) {
X                	buf[i] = 0;
X                        return(FIOFUN);
X                }
X
X                return (FIOEOF);
X        }
X
X        buf[i] = 0;
X#if	CRYPT
X	if (cryptflag)
X		crypt(buf, strlen(buf));
X#endif
X        return (FIOSUC);
X}
END_OF_fileio.c
if test 3492 -ne `wc -c <fileio.c`; then
    echo shar: \"fileio.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"hp110.c\" \(3687 characters\)
if test -f hp110.c ; then 
  echo shar: Will not over-write existing file \"hp110.c\"
else
sed "s/^X//" >hp110.c <<'END_OF_hp110.c'
X/*
X *	HP110:	Hewlett Packard 110 Screen Driver
X */
X
X#define	termdef	1			/* don't define "term" external */
X
X#include        <stdio.h>
X#include	"estruct.h"
X#include        "edef.h"
X
X#if     HP110
X
X#define NROW    16                      /* Screen size.                 */
X#define NCOL    80                      /* Edit if you want to.         */
X#define	NPAUSE	100			/* # times thru update to pause */
X#define	MARGIN	8			/* size of minimim margin and	*/
X#define	SCRSIZ	64			/* scroll size for extended lines */
X#define BEL     0x07                    /* BEL character.               */
X#define ESC     0x1B                    /* ESC character.               */
X
Xextern  int     ttopen();               /* Forward references.          */
Xextern  int     ttgetc();
Xextern  int     ttputc();
Xextern  int     ttflush();
Xextern  int     ttclose();
Xextern  int     h110move();
Xextern  int     h110eeol();
Xextern  int     h110eeop();
Xextern  int     h110beep();
Xextern  int     h110open();
Xextern	int	h110rev();
Xextern	int	h110cres();
Xextern	int	h110close();
Xextern	int	h110kopen();
Xextern	int	h110kclose();
X
X#if	COLOR
Xextern	int	h110fcol();
Xextern	int	h110bcol();
X
Xint	cfcolor = -1;		/* current forground color */
Xint	cbcolor = -1;		/* current background color */
X#endif
X
X/*
X * Standard terminal interface dispatch table. Most of the fields point into
X * "termio" code.
X */
XTERM    term    = {
X	NROW-1,
X        NROW-1,
X        NCOL,
X        NCOL,
X	MARGIN,
X	SCRSIZ,
X	NPAUSE,
X        h110open,
X        h110close,
X	h110kopen,
X	h110kclose,
X        ttgetc,
X        ttputc,
X        ttflush,
X        h110move,
X        h110eeol,
X        h110eeop,
X        h110beep,
X	h110rev,
X	h110cres
X#if	COLOR
X	, h110fcol,
X	h110bcol
X#endif
X};
X
X#if	COLOR
Xh110fcol(color)		/* set the current output color */
X
Xint color;	/* color to set */
X
X{
X	if (color == cfcolor)
X		return;
X	ttputc(ESC);
X	ttputc('[');
X	h110parm(color+30);
X	ttputc('m');
X	cfcolor = color;
X}
X
Xh110bcol(color)		/* set the current background color */
X
Xint color;	/* color to set */
X
X{
X	if (color == cbcolor)
X		return;
X	ttputc(ESC);
X	ttputc('[');
X	h110parm(color+40);
X	ttputc('m');
X        cbcolor = color;
X}
X#endif
X
Xh110move(row, col)
X{
X        ttputc(ESC);
X        ttputc('[');
X        h110parm(row+1);
X        ttputc(';');
X        h110parm(col+1);
X        ttputc('H');
X}
X
Xh110eeol()
X{
X        ttputc(ESC);
X        ttputc('[');
X	ttputc('0');
X        ttputc('K');
X}
X
Xh110eeop()
X{
X#if	COLOR
X	h110fcol(gfcolor);
X	h110bcol(gbcolor);
X#endif
X        ttputc(ESC);
X        ttputc('[');
X	ttputc('0');
X        ttputc('J');
X}
X
Xh110rev(state)		/* change reverse video state */
X
Xint state;	/* TRUE = reverse, FALSE = normal */
X
X{
X#if	COLOR
X	int ftmp, btmp;		/* temporaries for colors */
X#endif
X
X	ttputc(ESC);
X	ttputc('[');
X	ttputc(state ? '7': '0');
X	ttputc('m');
X#if	COLOR
X	if (state == FALSE) {
X		ftmp = cfcolor;
X		btmp = cbcolor;
X		cfcolor = -1;
X		cbcolor = -1;
X		h110fcol(ftmp);
X		h110bcol(btmp);
X	}
X#endif
X}
X
Xh110cres()	/* change screen resolution */
X
X{
X	return(TRUE);
X}
X
Xh110beep()
X{
X        ttputc(BEL);
X        ttflush();
X}
X
Xh110parm(n)
Xregister int    n;
X{
X        register int q,r;
X
X        q = n/10;
X        if (q != 0) {
X		r = q/10;
X		if (r != 0) {
X			ttputc((r%10)+'0');
X		}
X		ttputc((q%10) + '0');
X        }
X        ttputc((n%10) + '0');
X}
X
Xh110open()
X{
X	strcpy(sres, "15LINE");
X	revexist = TRUE;
X        ttopen();
X}
X
Xh110close()
X
X{
X#if	COLOR
X	h110fcol(7);
X	h110bcol(0);
X#endif
X	ttclose();
X}
X
Xh110kopen()
X
X{
X}
X
Xh110kclose()
X
X{
X}
X
X#if	FLABEL
Xfnclabel(f, n)		/* label a function key */
X
Xint f,n;	/* default flag, numeric argument [unused] */
X
X{
X	/* on machines with no function keys...don't bother */
X	return(TRUE);
X}
X#endif
X#else
Xh110hello()
X{
X}
X#endif
END_OF_hp110.c
if test 3687 -ne `wc -c <hp110.c`; then
    echo shar: \"hp110.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"ibmfn.lst\" \(593 characters\)
if test -f ibmfn.lst ; then 
  echo shar: Will not over-write existing file \"ibmfn.lst\"
else
sed "s/^X//" >ibmfn.lst <<'END_OF_ibmfn.lst'
X			IBM PC function keys in MicroEmacs
X
X	function	Function	^function	Alt-function
X f1)	  FN;		  FNT		  FN^		  FNh
X f2)	  FN<		  FNU		  FN_		  FNi
X f3)	  FN=		  FNV		  FN`		  FNj
X f4)	  FN>		  FNW		  FNa		  FNk
X f5)	  FN?		  FNX		  FNb		  FNl
X f6)	  FN@		  FNY		  FNc		  FNm
X f7)	  FNA		  FNZ		  FNd		  FNn
X f8)	  FNB		  FN[		  FNe		  FNo
X f9)	  FNC		  FN\		  FNf		  FNp
Xf10)	  FND		  FN]		  FNg		  FNq
X
Xhome)	  FNG				  FNw
XCuUp)	  FNH
XPgUp)	  FNI				  FN^D {Alt 132}
XCuLf)	  FNK				  FNs
X 5  )
XCuRt)	  FNM				  FNt
X End)	  FNO				  FNu
XCuDn)	  FNP
XPgDn)	  FNQ				  FNv
X Ins)	  FNR
X Del)	  FNS
END_OF_ibmfn.lst
if test 593 -ne `wc -c <ibmfn.lst`; then
    echo shar: \"ibmfn.lst\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"lock.c\" \(3565 characters\)
if test -f lock.c ; then 
  echo shar: Will not over-write existing file \"lock.c\"
else
sed "s/^X//" >lock.c <<'END_OF_lock.c'
X/*	LOCK:	File locking command routines for MicroEMACS
X		written by Daniel Lawrence
X								*/
X
X#include <stdio.h>
X#include "estruct.h"
X#include "edef.h"
X
X#if	FILOCK
X#if	BSD
X#include <sys/errno.h>
X
Xextern int sys_nerr;		/* number of system error messages defined */
Xextern char *sys_errlist[];	/* list of message texts */
Xextern int errno;		/* current error */
X
Xchar *lname[NLOCKS];	/* names of all locked files */
Xint numlocks;		/* # of current locks active */
X
X/* lockchk:	check a file for locking and add it to the list */
X
Xlockchk(fname)
X
Xchar *fname;	/* file to check for a lock */
X
X{
X	register int i;		/* loop indexes */
X	register int status;	/* return status */
X	char *undolock();
X
X	/* check to see if that file is already locked here */
X	if (numlocks > 0)
X		for (i=0; i < numlocks; ++i)
X			if (strcmp(fname, lname[i]) == 0)
X				return(TRUE);
X
X	/* if we have a full locking table, bitch and leave */
X	if (numlocks == NLOCKS) {
X		mlwrite("LOCK ERROR: Lock table full");
X		return(ABORT);
X	}
X
X	/* next, try to lock it */
X	status = lock(fname);
X	if (status == ABORT)	/* file is locked, no override */
X		return(ABORT);
X	if (status == FALSE)	/* locked, overriden, dont add to table */
X		return(TRUE);
X
X	/* we have now locked it, add it to our table */
X	lname[++numlocks - 1] = (char *)malloc(strlen(fname) + 1);
X	if (lname[numlocks - 1] == NULL) {	/* malloc failure */
X		undolock(fname);		/* free the lock */
X		mlwrite("Cannot lock, out of memory");
X		--numlocks;
X		return(ABORT);
X	}
X
X	/* everthing is cool, add it to the table */
X	strcpy(lname[numlocks-1], fname);
X	return(TRUE);
X}
X
X/*	lockrel:	release all the file locks so others may edit */
X
Xlockrel()
X
X{
X	register int i;		/* loop index */
X	register int status;	/* status of locks */
X	register int s;		/* status of one unlock */
X
X	status = TRUE;
X	if (numlocks > 0)
X		for (i=0; i < numlocks; ++i) {
X			if ((s = unlock(lname[i])) != TRUE)
X				status = s;
X			free(lname[i]);
X		}
X	numlocks = 0;
X	return(status);
X}
X
X/* lock:	Check and lock a file from access by others
X		returns	TRUE = files was not locked and now is
X			FALSE = file was locked and overridden
X			ABORT = file was locked, abort command
X*/
X
Xlock(fname)
X
Xchar *fname;	/* file name to lock */
X
X{
X	register char *locker;	/* lock error message */
X	register int status;	/* return status */
X	char msg[NSTRING];	/* message string */
X	char *dolock();
X
X	/* attempt to lock the file */
X	locker = dolock(fname);
X	if (locker == NULL)	/* we win */
X		return(TRUE);
X
X	/* file failed...abort */
X	if (strncmp(locker, "LOCK", 4) == 0) {
X		lckerror(locker);
X		return(ABORT);
X	}
X
X	/* someone else has it....override? */
X	strcpy(msg, "File in use by ");
X	strcat(msg, locker);
X	strcat(msg, ", overide?");
X	status = mlyesno(msg);		/* ask them */
X	if (status == TRUE)
X		return(FALSE);
X	else
X		return(ABORT);
X}
X
X/*	unlock:	Unlock a file
X		this only warns the user if it fails
X							*/
X
Xunlock(fname)
X
Xchar *fname;	/* file to unlock */
X
X{
X	register char *locker;	/* undolock return string */
X	char *undolock();
X
X	/* unclock and return */
X	locker = undolock(fname);
X	if (locker == NULL)
X		return(TRUE);
X
X	/* report the error and come back */
X	lckerror(locker);
X	return(FALSE);
X}
X
Xlckerror(errstr)	/* report a lock error */
X
Xchar *errstr;		/* lock error string to print out */
X
X{
X	char obuf[NSTRING];	/* output buffer for error message */
X
X	strcpy(obuf, errstr);
X	strcat(obuf, " - ");
X	if (errno < sys_nerr)
X		strcat(obuf, sys_errlist[errno]);
X	else
X		strcat(obuf, "[can not get system error message]");
X	mlwrite(obuf);
X}
X#endif
X#else
Xlckhello()	/* dummy function */
X{
X}
X#endif
END_OF_lock.c
if test 3565 -ne `wc -c <lock.c`; then
    echo shar: \"lock.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"magic.doc\" \(3923 characters\)
if test -f magic.doc ; then 
  echo shar: Will not over-write existing file \"magic.doc\"
else
sed "s/^X//" >magic.doc <<'END_OF_magic.doc'
X
X		Some notes on the MAGIC mode.
X
X     In the MAGIC mode of MicroEmacs (versions 3.8 and up),
Xcertain characters gain special meanings when used in a search
Xpattern.  Collectively they are know as regular expressions,
Xand a limited number of them are supported in MicroEmacs.
XThey grant greater flexability when using the search command.
XHowever, they do not affect the incremental search command.
X
X     The symbols that have special meaning in MAGIC mode are
X^, $, ., *, [ (and ], used with it), and \.
X
X     The characters ^ and $ fix the search pattern to the
Xbeginning and end of line, respectively.  The ^ character
Xmust appear at the beginning of the search string, and the
X$ must appear at the end, otherwise they loose their
Xmeaning and are treated just like any other character.
XFor example, in MAGIC mode, searching for the pattern
X"t$" would put the cursor at the end of any line that ended
Xwith the letter 't'.  Note that this is different than
Xsearching for "t<NL>", that is, 't' followed by a newline
Xcharacter.  The character $ (and ^, for that matter) matches
Xa position, not a character, so the cursor remains at the end
Xof the line.  But a newline is a character that must be matched,
Xjust like any other character, which means that the cursor is
Xplaced just after it - on the beginning of the next line.
X
X     The character . has a very simple meaning - it matches
Xany single character, except the newline.  Thus a search for
X"bad.er" could match "badger", "badder" (slang), or up to the
X'r' of "bad error".
X
X     The character * is known as closure, and means that zero
Xor more of the preceding character will match.  If there is
Xno character preceding, * has no special meaning, and since
Xit will not match with a newline, * will have no special
Xmeaning if preceded by the beginning of line symbol ^ or
Xthe literal newline character <NL>.
X     The notion of zero or more characters is important.
XIf, for example, your cursor was on the line
X
X	This line is missing two vowels.
X
Xand a search was made for "a*", the cursor would not move,
Xbecause it is guarenteed to match no letter 'a' , which
Xsatifies the search conditions.  If you wanted to search
Xfor one or more of the letter 'a', you would search for
X"aa*", which would match the letter a, then zero or more of
Xthem.
X
X     The character [ indicates the beginning of a character
Xclass.  It is similar to the 'any' character ., but you get
Xto choose which characters you want to match.  The character
Xclass is ended with the character ].  So, while a search for
X"ba.e" will match "bane", "bade", "bale", "bate", et cetera,
Xyou can limit it to matching "babe" and "bake" by searching
Xfor "ba[bk]e".  Only one of the characters inside the [ and ]
Xwill match a character.  If in fact you want to match any
Xcharacter except those in the character class, you can put
Xa ^ as the first character.  It must be the first character
Xof the class, or else it has no special meaning.  So, a
Xsearch for [^aeiou] will match any character except a vowel,
Xbut a search for [aeiou^] will match any vowel or a ^.
XIf you have a lot of characters in order that you want to
Xput in the character class, you may use a dash (-) as a
Xrange character.  So, [a-z] will match any letter (or any
Xlower case letter if EXACT mode is on), and [0-9a-f] will
Xmatch any digit or any letter 'a' through 'f', which happen
Xto be the characters for hexadecimal numbers.  If the dash is
Xat the beginning or end of a character class, it is taken to
Xbe just a dash.
X
X     The escape character \ is for those times when you want to be in
XMAGIC mode, but also want to use a regular expression character
Xto be just a character.  It turns off the special meaning of the
Xcharacter.  So a search for "it\." will search for a line with "it.",
Xand not "it" followed by any other character.  The escape character
Xwill also let you put ^, -, or ] inside a character class with no
Xspecial side effects.
X
END_OF_magic.doc
if test 3923 -ne `wc -c <magic.doc`; then
    echo shar: \"magic.doc\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"me110.rc\" \(1627 characters\)
if test -f me110.rc ; then 
  echo shar: Will not over-write existing file \"me110.rc\"
else
sed "s/^X//" >me110.rc <<'END_OF_me110.rc'
X;	EMACS.RC:	Startup file for MicroEMACS 3.8 (HP 110) 
X;
X;			This file is executed everytime the
X;			editor is entered
X
X;	***** Rebind the Function key group
X
Xbind-to-key search-forward		FN;
Xbind-to-key search-reverse		FN<
Xbind-to-key next-window			FN=
Xbind-to-key execute-macro		FN>
Xbind-to-key find-file			FN?
Xbind-to-key view-file			FN@
Xbind-to-key save-file			FNA
Xbind-to-key exit-emacs			FNB
Xbind-to-key describe-key		FND
Xbind-to-key meta-prefix			`
Xbind-to-key beginning-of-file		FNs
Xbind-to-key end-of-file			FNt
X
X;	Enter Help
X1 store-macro
X	delete-other-windows
X	help
X	8 resize-window
X	bind-to-key execute-macro-12 FNH
X	bind-to-key execute-macro-13 FNP
X	bind-to-key execute-macro-11 FNT
X	beginning-of-file
X	2 forward-character
X	clear-message-line
X!endm
X
X;	consult file
X2 store-macro
X	2 split-current-window
X	previous-window
X	view-file @"File to Consult: "
X	8 resize-window
X	next-window
X!endm
X
X;	Exit Help
X11 store-macro
X	bind-to-key previous-line FNH
X	bind-to-key next-line FNP
X	bind-to-key execute-macro-1 FNT
X	delete-window
X	clear-message-line
X!endm
X
X;	last help page
X12 store-macro
X	beginning-of-line
X	search-reverse "=>"
X	1 redraw-display
X!endm
X
X;	next help page
X13 store-macro
X	beginning-of-line
X	2 forward-character
X	search-forward "=>"
X	1 redraw-display
X!endm
X
X;	bring up the function key window
X
X	2 split-current-window
X	select-buffer "Function Keys"
X	2 resize-window
X	insert-string " F1 search     | F2 search back | F3 next wind   | F4 Exec Macro  | MENU Help"
X	newline
X	insert-string "SYS desc key   | F5 Find file   | F6 view file   | F7 save file   | F8 exit"
X	beginning-of-file
X	unmark-buffer
X	next-window
END_OF_me110.rc
if test 1627 -ne `wc -c <me110.rc`; then
    echo shar: \"me110.rc\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"me150.rc\" \(1491 characters\)
if test -f me150.rc ; then 
  echo shar: Will not over-write existing file \"me150.rc\"
else
sed "s/^X//" >me150.rc <<'END_OF_me150.rc'
X;	EMACS.RC:	Startup file for MicroEMACS 3.4
X;
X;			This file is executed everytime the
X;			editor is entered
X
X;	***** Rebind the Function key group
X
Xbind-to-key hunt-forward		FN^@
X1 label-function-key "hunt     forward"
Xbind-to-key hunt-backward		FN^A
X2 label-function-key "hunt    backward"
Xbind-to-key next-window			FN^B
X3 label-function-key "next      window"
Xbind-to-key execute-macro		FN^C
X4 label-function-key "exec       macro"
Xbind-to-key find-file			FN^D
X5 label-function-key "find       file"
Xbind-to-key view-file			FN^E
X6 label-function-key "view       file"
Xbind-to-key save-file			FN^F
X7 label-function-key "save       file"
Xbind-to-key exit-emacs			FN^G
X8 label-function-key "exit      emacs"
X
X;	Enter Help
X1 store-macro
X	help
X	8 resize-window
X	bind-to-key execute-macro-12 FNI
X	bind-to-key execute-macro-13 FNQ
X	bind-to-key execute-macro-11 FNT
X	add-mode "red"
X	begining-of-file
X	2 forward-character
X	clear-message-line
X!endm
X
X;	consult file
X2 store-macro
X	2 split-current-window
X	previous-window
X	view-file "@File to Consult: "
X	8 resize-window
X	add-mode "green"
X	add-mode "Black"
X	next-window
X!endm
X
X;	Exit Help
X11 store-macro
X	bind-to-key previous-page FNI
X	bind-to-key next-page FNQ
X	bind-to-key execute-macro-1 FNT
X	delete-window
X	clear-message-line
X!endm
X
X;	last help page
X12 store-macro
X	begining-of-line
X	search-reverse "=>"
X	1 redraw-display
X!endm
X
X;	next help page
X13 store-macro
X	begining-of-line
X	2 forward-character
X	search-forward "=>"
X	1 redraw-display
X!endm
X
X
END_OF_me150.rc
if test 1491 -ne `wc -c <me150.rc`; then
    echo shar: \"me150.rc\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"tcap.c\" \(3889 characters\)
if test -f tcap.c ; then 
  echo shar: Will not over-write existing file \"tcap.c\"
else
sed "s/^X//" >tcap.c <<'END_OF_tcap.c'
X/*	tcap:	Unix V5, V7 and BS4.2 Termcap video driver
X		for MicroEMACS
X*/
X
X#define	termdef	1			/* don't define "term" external */
X
X#include <stdio.h>
X#include	"estruct.h"
X#include        "edef.h"
X
X#if TERMCAP
X
X#define	MARGIN	8
X#define	SCRSIZ	64
X#define	NPAUSE	10			/* # times thru update to pause */
X#define BEL     0x07
X#define ESC     0x1B
X
Xextern int      ttopen();
Xextern int      ttgetc();
Xextern int      ttputc();
Xextern int	tgetnum();
Xextern int      ttflush();
Xextern int      ttclose();
Xextern int	tcapkopen();
Xextern int	tcapkclose();
Xextern int      tcapmove();
Xextern int      tcapeeol();
Xextern int      tcapeeop();
Xextern int      tcapbeep();
Xextern int	tcaprev();
Xextern int	tcapcres();
Xextern int      tcapopen();
Xextern int      tput();
Xextern char     *tgoto();
X#if	COLOR
Xextern	int	tcapfcol();
Xextern	int	tcapbcol();
X#endif
X
X#define TCAPSLEN 315
Xchar tcapbuf[TCAPSLEN];
Xchar *UP, PC, *CM, *CE, *CL, *SO, *SE;
X
XTERM term = {
X	NULL,	/* these four values are set dynamically at open time */
X	NULL,
X	NULL,
X	NULL,
X	MARGIN,
X	SCRSIZ,
X	NPAUSE,
X        tcapopen,
X        ttclose,
X        tcapkopen,
X        tcapkclose,
X        ttgetc,
X        ttputc,
X        ttflush,
X        tcapmove,
X        tcapeeol,
X        tcapeeop,
X        tcapbeep,
X        tcaprev,
X        tcapcres
X#if	COLOR
X	, tcapfcol,
X	tcapbcol
X#endif
X};
X
Xtcapopen()
X
X{
X        char *getenv();
X        char *t, *p, *tgetstr();
X        char tcbuf[1024];
X        char *tv_stype;
X        char err_str[72];
X
X        if ((tv_stype = getenv("TERM")) == NULL)
X        {
X                puts("Environment variable TERM not defined!");
X                exit(1);
X        }
X
X        if ((tgetent(tcbuf, tv_stype)) != 1)
X        {
X                sprintf(err_str, "Unknown terminal type %s!", tv_stype);
X                puts(err_str);
X                exit(1);
X        }
X
X 
X       if ((term.t_nrow=(short)tgetnum("li")-1) == -1){
X               puts("termcap entry incomplete (lines)");
X               exit(1);
X       }
X	term.t_mrow =  term.t_nrow;
X
X       if ((term.t_ncol=(short)tgetnum("co")) == -1){
X               puts("Termcap entry incomplete (columns)");
X               exit(1);
X       }
X	term.t_mcol = term.t_ncol;
X
X        p = tcapbuf;
X        t = tgetstr("pc", &p);
X        if(t)
X                PC = *t;
X
X        CL = tgetstr("cl", &p);
X        CM = tgetstr("cm", &p);
X        CE = tgetstr("ce", &p);
X        UP = tgetstr("up", &p);
X	SE = tgetstr("se", &p);
X	SO = tgetstr("so", &p);
X	if (SO != NULL)
X		revexist = TRUE;
X
X        if(CL == NULL || CM == NULL || UP == NULL)
X        {
X                puts("Incomplete termcap entry\n");
X                exit(1);
X        }
X
X	if (CE == NULL)		/* will we be able to use clear to EOL? */
X		eolexist = FALSE;
X		
X        if (p >= &tcapbuf[TCAPSLEN])
X        {
X                puts("Terminal description too big!\n");
X                exit(1);
X        }
X        ttopen();
X}
X
Xtcapkopen()
X
X{
X	strcpy(sres, "NORMAL");
X}
X
Xtcapkclose()
X
X{
X}
X
Xtcapmove(row, col)
Xregister int row, col;
X{
X        putpad(tgoto(CM, col, row));
X}
X
Xtcapeeol()
X{
X        putpad(CE);
X}
X
Xtcapeeop()
X{
X        putpad(CL);
X}
X
Xtcaprev(state)		/* change reverse video status */
X
Xint state;		/* FALSE = normal video, TRUE = reverse video */
X
X{
X	static int revstate = FALSE;
X	if (state) {
X		if (SO != NULL)
X			putpad(SO);
X	} else
X		if (SE != NULL)
X			putpad(SE);
X}
X
Xtcapcres()	/* change screen resolution */
X
X{
X	return(TRUE);
X}
X
X#if	COLOR
Xtcapfcol()	/* no colors here, ignore this */
X{
X}
X
Xtcapbcol()	/* no colors here, ignore this */
X{
X}
X#endif
X
Xtcapbeep()
X{
X	ttputc(BEL);
X}
X
Xputpad(str)
Xchar    *str;
X{
X	tputs(str, 1, ttputc);
X}
X
Xputnpad(str, n)
Xchar    *str;
X{
X	tputs(str, n, ttputc);
X}
X
X
X#if	FLABEL
Xfnclabel(f, n)		/* label a function key */
X
Xint f,n;	/* default flag, numeric argument [unused] */
X
X{
X	/* on machines with no function keys...don't bother */
X	return(TRUE);
X}
X#endif
X#else
X
Xhello()
X{
X}
X
X#endif TERMCAP
END_OF_tcap.c
if test 3889 -ne `wc -c <tcap.c`; then
    echo shar: \"tcap.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: Extracting \"vt52.c\" \(3194 characters\)
if test -f vt52.c ; then 
  echo shar: Will not over-write existing file \"vt52.c\"
else
sed "s/^X//" >vt52.c <<'END_OF_vt52.c'
X/*
X * The routines in this file
X * provide support for VT52 style terminals
X * over a serial line. The serial I/O services are
X * provided by routines in "termio.c". It compiles
X * into nothing if not a VT52 style device. The
X * bell on the VT52 is terrible, so the "beep"
X * routine is conditionalized on defining BEL.
X */
X#define	termdef	1			/* don't define "term" external */
X
X#include        <stdio.h>
X#include        "estruct.h"
X#include	"edef.h"
X
X#if     VT52
X
X#define NROW    24                      /* Screen size.                 */
X#define NCOL    80                      /* Edit if you want to.         */
X#define	MARGIN	8			/* size of minimim margin and	*/
X#define	SCRSIZ	64			/* scroll size for extended lines */
X#define	NPAUSE	100			/* # times thru update to pause */
X#define BIAS    0x20                    /* Origin 0 coordinate bias.    */
X#define ESC     0x1B                    /* ESC character.               */
X#define BEL     0x07                    /* ascii bell character         */
X
Xextern  int     ttopen();               /* Forward references.          */
Xextern  int     ttgetc();
Xextern  int     ttputc();
Xextern  int     ttflush();
Xextern  int     ttclose();
Xextern  int     vt52move();
Xextern  int     vt52eeol();
Xextern  int     vt52eeop();
Xextern  int     vt52beep();
Xextern  int     vt52open();
Xextern	int	vt52rev();
Xextern	int	vt52kopen();
Xextern	int	vt52kclose();
X
X#if	COLOR
Xextern	int	vt52fcol();
Xextern	int	vt52bcol();
X#endif
X
X/*
X * Dispatch table. All the
X * hard fields just point into the
X * terminal I/O code.
X */
XTERM    term    = {
X	NROW-1,
X        NROW-1,
X        NCOL,
X        NCOL,
X	MARGIN,
X	SCRSIZ,
X	NPAUSE,
X        &vt52open,
X        &ttclose,
X	&vt52kopen,
X	&vt52kclose,
X        &ttgetc,
X        &ttputc,
X        &ttflush,
X        &vt52move,
X        &vt52eeol,
X        &vt52eeop,
X        &vt52beep,
X        &vt52rev
X#if	COLOR
X	, &vt52fcol,
X	&vt52bcol
X#endif
X};
X
Xvt52move(row, col)
X{
X        ttputc(ESC);
X        ttputc('Y');
X        ttputc(row+BIAS);
X        ttputc(col+BIAS);
X}
X
Xvt52eeol()
X{
X        ttputc(ESC);
X        ttputc('K');
X}
X
Xvt52eeop()
X{
X        ttputc(ESC);
X        ttputc('J');
X}
X
Xvt52rev(status)	/* set the reverse video state */
X
Xint status;	/* TRUE = reverse video, FALSE = normal video */
X
X{
X	/* can't do this here, so we won't */
X}
X
X#if	COLOR
Xvt52fcol()	/* set the forground color [NOT IMPLIMENTED] */
X{
X}
X
Xvt52bcol()	/* set the background color [NOT IMPLIMENTED] */
X{
X}
X#endif
X
Xvt52beep()
X{
X#ifdef  BEL
X        ttputc(BEL);
X        ttflush();
X#endif
X}
X
Xvt52open()
X{
X#if     V7 | BSD
X        register char *cp;
X        char *getenv();
X
X        if ((cp = getenv("TERM")) == NULL) {
X                puts("Shell variable TERM not defined!");
X                exit(1);
X        }
X        if (strcmp(cp, "vt52") != 0 && strcmp(cp, "z19") != 0) {
X                puts("Terminal type not 'vt52'or 'z19' !");
X                exit(1);
X        }
X#endif
X        ttopen();
X}
X
Xvt52kopen()
X
X{
X}
X
Xvt52kclose()
X
X{
X}
X
X
X#if	FLABEL
Xfnclabel(f, n)		/* label a function key */
X
Xint f,n;	/* default flag, numeric argument [unused] */
X
X{
X	/* on machines with no function keys...don't bother */
X	return(TRUE);
X}
X#endif
X#else
X
Xvt52hello()
X
X{
X}
X
X#endif
END_OF_vt52.c
if test 3194 -ne `wc -c <vt52.c`; then
    echo shar: \"vt52.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 1 \(of 14\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 14 archives.
    echo "See the readme file"
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0