[comp.emacs] Patches for MicroEmacs 3.10 under XENIX

usenet@cps3xx.UUCP (Usenet file owner) (07/10/89)

The following is a list of changes that I had to make to get 
MicroEmacs 3.10 working under SCO XENIX 386 v2.3.1.

These changes were made to source ftp'ed from midas.mgmt.purdue.edu
[128.210.1.3] about two weeks ago. 

Consult the comments at the beginning of tcap.c for necessary
additions to /etc/termcap.

The form is in the style of diffs, along with notes preceeded
by '#' as to why I made the change.

The preliminaries:

Here is the makefile I used:

===== cut here =====

CFLAGS=		-M3e -DM_TERMCAP -g

OFILES=		basic.o bind.o buffer.o char.o crypt.o display.o eval.o \
		exec.o file.o fileio.o input.o isearch.o line.o lock.o main.o \
		mouse.o random.o region.o search.o tcap.o unix.o window.o word.o

CFILES=		basic.c bind.c buffer.c char.c crypt.c display.c eval.c \
		exec.c file.c fileio.c input.c isearch.c line.c lock.c main.c \
		mouse.c random.c region.c search.c tcap.c unix.c window.c word.c

HFILES=		estruct.h edef.h efunc.h epath.h ebind.h evar.h etype.h

emacs:		$(OFILES)
		$(CC) $(CFLAGS) -o emacs $(OFILES) -ltcap -ltermlib -lx

$(OFILES):	$(HFILES)

===== cut here =====

Here is the pertinent section of estruct.h:
Note: under XENIX it is essential the TYPEAH be 0 (this prevents a serious
performance drop) COMPLET be 0 (the completion code doesn't work
under XENIX) and COLOR be 0. (the stat line came out in normal video on
a CGA, I hope to track down the color problem in the future)

===== cut here =====

/*	Machine/OS definitions			*/
/*	[Set one of these!!]			*/

#define AMIGA	0			/* AmigaDOS			*/
#define ST520	0			/* ST520, TOS			*/
#define MSDOS	0			/* MS-DOS			*/
#define OS2	0			/* Microsoft or IBM OS/2	*/
#define V7	0			/* V7 UNIX or Coherent or BSD4.2*/ 
#define BSD	0			/* UNIX BSD 4.2 and ULTRIX	*/
#define USG	0			/* UNIX system V		*/
#define	XENIX	1			/* IBM-PC SCO XENIX		*/
#define	SUN	0			/* SUN v4.0			*/
#define	HPUX	0			/* HPUX HP 9000 minicomputer	*/
#define VMS	0			/* VAX/VMS			*/
#define FINDER	0			/* Macintosh OS 		*/
#define WMCS	0			/* Wicat's MCS			*/
#define	AOSVS	0			/* Data General AOS/VS		*/

/*	Compiler definitions			*/
/*	[Set one of these!!]			*/
#define UNIX	1	/* a random UNIX compiler */
#define MWC	0	/* Mark Williams C */
#define	ALCYON	0	/* ALCYON Atari ST compiler */ 
#define LATTICE 0	/* Lattice 2.14 through 3.0 compilers */
#define AZTEC	0	/* Aztec C 3.20e */
#define MSC	0	/* MicroSoft C compile version 3 & 4 & 5.1 */
#define TURBO	0	/* Turbo C/MSDOS */
#define DTL	0	/* DataLight C v3.12 */
#define	DGC	0	/* Data General AOS/VS C... */

/*      Machine stack growth direction.                     */
/*  [Set this to 1 if your machine stack grows UP!!!]       */
/*      data general mv/eclipse series stack grows up.      */
/*      dec vax series stack grows down... got it???        */

#define STACK_GROWS_UP  0

/*	Debugging options	*/
#define	RAMSIZE	0	/* dynamic RAM memory usage tracking */
#define	RAMSHOW	0	/* auto dynamic RAM reporting */
#define	RAMTRCK	0	/* send debug info to MALLOC.DAT */

/*   Special keyboard/network definitions	     */

#define WANGPC	0		/* WangPC - mostly escape sequences	*/
#define VT100	0		/* Handle VT100 style keypad.	*/
#define XONDATA	0		/* VMS only - set to force /NOTTSYNC/NOHOSTSY */
#define	NOVELL	0		/* IBMPC Novell NetWare flag! */

/*	Terminal Output definitions		*/
/*	[Set one of these!!]			*/

#define ANSI	0			/* ANSI escape sequences	*/
#define	HP150	0			/* HP150 screen driver		*/
#define	HP110	0			/* HP110 screen driver		*/
#define	VMSVT	0			/* various VMS terminal entries	*/
#define VT52	0			/* VT52 terminal (Zenith).	*/
#define RAINBOW 0			/* Use Rainbow fast video.	*/
#define TERMCAP 1			/* Use TERMCAP			*/
#define	IBMPC	0			/* IBM-PC CGA/MONO/EGA/VGA drvr	*/
#define OS2NPM	0			/* OS/2 non-Presentation Mgr.	*/
#define	DG10	0			/* Data General system/10	*/
#define	TIPC	0			/* TI Profesional PC driver	*/
#define	Z309	0			/* Zenith 100 PC family	driver	*/
#define	MAC	0			/* Macintosh			*/
#define	ATARI	0			/* Atari 520/1040ST screen	*/
#define	DASHER	0			/* DG Dasher 2xx/4xx crts	*/

/*	Language text options	(pick one)				*/

#define ENGLISH 1
#define	FRENCH	0
#define	SPANISH	0
#define	GERMAN	0
#define	DUTCH	0
#define PLATIN	0

/*	Configuration options	*/

#define CVMVAS	1	/* arguments to page forward/back in pages	*/
#define	CLRMSG	0	/* space clears the message line with no insert	*/
#define	CFENCE	1	/* fench matching in CMODE			*/
#define	TYPEAH	0	/* type ahead causes update to be skipped	*/
#define DEBUGM	1	/* $debug triggers macro debugging		*/
#define	LOGFLG	0	/* send all executed commands to EMACS.LOG	*/
#define	VISMAC	0	/* update display during keyboard macros	*/
#define	CTRLZ	0	/* add a ^Z at end of files under MSDOS only	*/
#define	NBRACE	1	/* new style brace matching command		*/
#define	COMPLET	0	/* new completion code (as of 3.10)		*/
#define	CLEAN	1	/* de-alloc memory on exit			*/
#define	CALLED	0	/* is emacs a called subroutine? or stand alone */
#define ADDCR	0	/* ajout d'un CR en fin de chaque ligne (ST520) */
			/* [= add a CR at the end of each line (ST520)] */
#define	BINARY	1	/* using new binary searches?			*/

#define REVSTA	1	/* Status line appears in reverse video 	*/
#define	COLOR	0	/* color commands and windows			*/

#define FILOCK	0	/* file locking under unix BSD 4.2		*/
#define	ISRCH	1	/* Incremental searches like ITS EMACS		*/
#define	WORDPRO	1	/* Advanced word processing features		*/
#define	FLABEL	0	/* function key label code [HP150]		*/
#define	APROP	1	/* Add code for Apropos command			*/
#define	CRYPT	1	/* file encryption enabled?			*/
#define MAGIC	1	/* include regular expression matching?		*/
#define	AEDIT	1	/* advanced editing options: en/detabbing	*/
#define	PROC	1	/* named procedures				*/
#define MOUSE	0	/* Include routines for mouse actions		*/
#define	NOISY	1	/* Use a fancy BELL if it exists		*/
#define	DIACRIT	1	/* diacritical marks processed?			*/
#define	SPEECH	0	/* spoken EMACS, for the sight impared [not ready] */

/*	Character set options		*/
/*	[Set one of these!!]		*/
#define ASCII	1	/* always using ASCII char sequences for now	*/
#define EBCDIC	0	/* later IBM mainfraim versions will use EBCDIC	*/

===== cut here =====

Now for the file changes:

===== cut here =====
==========
ebind.h:
==========
328a329,331
> #if	XENIX
> 	{0x7F,			BINDFNC,	forwdel},
> #else
329a333
> #endif
# Without this the 'Delete' keypad key does a backdel. Under MSDOS
# the 'Delete' keypad key does a forwdel. As I use both MSDOS and
# XENIX I don't want to suffer from schizoid typing
==========
epath.h:
==========
57c57
< #if	V7 | BSD | USG | HPUX
---
> #if	V7 | BSD | USG | HPUX | XENIX
# Essential else a compile error occurs
==========
estruct.h:
==========
309c309
< #if	MSDOS | OS2 | V7 | USG | HPUX | BSD | (ST520 & MWC) | WMCS
---
> #if	MSDOS | OS2 | V7 | USG | HPUX | BSD | (ST520 & MWC) | WMCS | XENIX
420c420
< #if	V7 | USG | HPUX | BSD
---
> #if	V7 | USG | HPUX | BSD | XENIX
# Both of these are necessary
==========
tcap.c:
==========
69c69
<  	:kh=\E[H:kH=\E[F:kA=\E[L:kN=\E[G:kP=\E[I:
---
>  	:kh=\E[H:kH=\E[F:kI=\E[L:kN=\E[G:kP=\E[I:
# if kA is used in the termcap entry, the 'Insert' keypad key does
# a insert line. However, under MSDOS the 'Insert' keypad key does
# a insert character. To avoid schzoid typing, use kI instead.
442a443,445
> #if	XENIX
> 		nap(35);	/* under XENIX nap is in milliseconds */
> #else
443a447
> #endif
# This was nap(35000L), under XENIX nap() is in milliseconds. The 35000L
# caused a timeout period of 35 seconds while waiting to see if
# anything followed an ESC
==========
unix.c:
==========
17a18,21
> 
> #if	XENIX
> #include	<sys/ndir.h>
> #else
18a23,24
> #endif
> 
# Under XENIX ndir.h is in /usr/include/sys, not /usr/include

If you have any questions about these changes, contact me at my home
address as I'm more likely to compose a comprehensive answer there.

Hope this has been of use,

John H. Lawitzke           UUCP: Work: ...uunet!frith!dale1!jhl
Dale Computer Corp., R&D         Home  ...uunet!frith!ipecac!jhl
2367 Science Parkway       Internet:   jhl@frith.egr.msu.edu
Okemos, MI, 48864                             [35.8.8.108]