[net.sources.d] MicroEMACS 3.6 and v30 for the Amiga

breuel@h-sc1.UUCP (thomas breuel) (05/13/86)

|I just finished getting MicroEMACS 3.6 (the one just posted to mod.sources
|from Daniel Lawrence) up on Amy ... works great ... thanks, Daniel!
|
|To get this version, as posted, to compile and link with Lattice 3.03,
|the following changes must be made in the file "estruct.h":

MicroEMACS 3.6 has some severe type problems that show up if you compile
it with Manx 'C' and 16 bit integers. Running the code through lint
gives pages and pages of output. I wish someone would fix it.
Anyhow, you can also compile it fine with Manx 'C' and 32 bit integers,
and it works.

|The object file ends up being 71K+ (Whew!) ... anyone have the size that
|the Manx compiler produces?

The Manx compiler produces a 43k object file. (In case you are
interested, the relevant figures for C-Kermit are 113k with
Lattice and 77k with Manx).

|I am still trying to get the v30 version of MicroEMACS (posted a few weeks
|ago to mod.sources) with Mic Kaczmarczik's Amiga code to work.  I've
|installed all the diffs that Fred Fish posted, and I get clean compiles,
|but when I try executing it, the MicroEMACS window opens for a split-
|second, then closes, and the program terminates ... no error messages or
|guru med's ... just a (seemingly) normal exit.  Anyone in net.land have
|any ideas?  (Fred ... are you using Manx or Lattice?)

Presumably you are using the intuition driver. It makes reference to
a few undefined functions. To get it to run, you have to comment out
two lines in the file ttykbd.c:
	
	#ifdef NEVER
		keydup(KSUP,	"goto-bop");
		keydup(KSDOWN,	"goto-eop");
	#endif
	
Now, a few remaks:

MicroEMACS 3.6 has modes (CMODE, WRAP, OVERWRITE, READONLY, ...).
Unfortunately, it has several type errors (i.e. it doesn't pass lint
and doesn't work when sizeof(int)!=sizeof(char *)), and it appears
to be a little bit buggy (I had problems with it writing out more
to a disk file than is contained in the buffer).

MicroEMACS v30 is very reliable and compiles and runs fine regardless
of what size integers are. This gives me the impression that the author
was a bit more careful about type-correct programming. Also, on
the Amiga, v30 supports the mouse and menus. In fact, you can even
re-size the EMACS window. MicroEMACS v30 also supports incremental search.
It does not support automatic word wrap or modes.

Personally, I feel more comfortable using v30 (but, then, I feel
most comfortable using /bin/ed :-), but I wish that some features
of 3.6 could be incorporated. Other items on the wishlist are
regular expression matching and substitution (using the public
domain regexp package?), and some increadibly useful goodies like
kill-some-buffers-interactively, automatic buffer-name and command
completion, &c.

							Thomas.

kim@mips.UUCP (05/21/86)

> |I am still trying to get the v30 version of MicroEMACS (posted a few weeks
> |ago to mod.sources) with Mic Kaczmarczik's Amiga code to work.
> 
> Presumably you are using the intuition driver. It makes reference to
> a few undefined functions.

Well, yes I was trying to use the Intuition driver (the AmigaDOS driver
worked fine), but I had already commented-out the undefined functions.
This past weekend, I was able to isolate the trouble.  For anyone who may
still be having trouble getting v30 to work using Lattice 3.03 and
V1.1 Intuition, these fixes (which are not in Fred Fish's v30.diffs) should
help:

The major problem is in file "console.c", and is the infamous "DoIO/SendIO
calls trash D7" bug that has been reported here on the net (supposedly
fixed in V1.2).  The workaround is to put something like the following
code at the beginning of each of the four functions in console.c that call
either DoIO or SendIO:

	#ifdef DOIOBUG
		register int DoIO_Bug; /* gets D7 assigned to a dummy */
		DoIO_Bug = 1; /* stops complaints about unused variables */
	#endif

A  #define DOIOBUG 1  is also needed at the top of the file until this bug
gets fixed.

Second bug is a typo in file "menu.c" that Mike Meyer told me about.  There
is one occurrence of "ItuiText" ... that should be "IntuiText".  I would
have expected Lattice (v3.03) to at least complain about there being an
undefined structure when compiling this file, but it does not ... hmmmmm!

With these fixes, everything *seems* to work fine ... at least so far!

/kim
-- 

UUCP:  {decvax,ucbvax,ihnp4}!decwrl!mips!kim
DDD:   408-720-1700 x231
USPS:  MIPS Computer Systems Inc,  930 E. Arques Av,  Sunnyvale, CA 94086
CIS:   76535,25