[net.emacs] microEMACS 3.7i for VMS Question!

SPIROS%RCSMST%gmr.com@RELAY.CS.NET ("Spiros Triantafyllopoulos @ 386RANB) (11/06/86)

Hello!

I got the sources for microEMACS 3.7i, and I am trying to compile
it for VMS 4.4 on a VAX 750. I am having trouble getting it to
run, as it always dies on the "vtinit( )" routine, module DISPLAY.C

I am pretty sure I have the wrong #define's on estruct.h. I have ANSI
and VT100 defined on an earlier version of microEMACS, and it works
fine. It does not work with 3.7i. I also tried #define'ing VMSVT
and setting ANSI to 0, and lots more combinations. It produces a couple
of LINK messages for doubly-defined modules (getline and pipe in 
VAX CRTL), and when I try to run it produces an access violation.

Would any kind soul that has 3.7i running on VMS offer some hints
on the #define's and/or LINK problems?

Thanks in advance...

Spiros Triantafyllopoulos, GM Research Labs
                           Warren, MI. 48090
                           Spiros@GMR.COM

PS: Also on the same subject, does anyone have the VT100/VT200 arrow
    keys working?

earleh@dartvax.UUCP (Earle R. Horton) (11/09/86)

> Hello!
> 
> I got the sources for microEMACS 3.7i, and I am trying to compile
> it for VMS 4.4 on a VAX 750. I am having trouble getting it to
> run, as it always dies on the "vtinit( )" routine, module DISPLAY.C
> 
>...
>PS: Also on the same subject, does anyone have the VT100/VT200 arrow
>    keys working?

Hello!

     I, too, got the sources for microEMACS 3.7(not 3.7i, unfortunately)
and compiled them on a VAX (system 4.3, I believe, but I don't pay much
attention to sign-on messages, so I don't really know).  After making a
few changes to: termio.c, input.c, estruct.h, ebind.h, I have the thing
working quite well.  If this message gets to you, and you want, I could
mail you the required source files to get it working (maybe 30k worth
of stuff).  I will summarize below (I did this a few months ago, so I
might not remember everything, but this is most of it)

     vmsvt.c is the one you want, it allows for vt52, vt100 series,and
     adm3a(!) to be used.  (I love it, 'cause I can use my adm3a now)
     
     In termio.c, there was an int declaration before a struct
     declaration that made the compiler go bonkers until I 
     reversed the order of the int and struct.  I don't remember
     the particulars, but this is probably minor.  It sounds like
     a compiler bug, and maybe it's been fixed by now.
     
     the program does not support the VT100 keypad or cursor keys at
     ALL, unless you have a DEC RAINBOW (whatever that is).   you 
     have to change the getcmd() or get1key() routines in input.c
     to recognize the VT100 escape sequences (these are three-
     character sequences, which is the problem)  then you just put
     in the bindings you want for them in ebind.h
     
     dammit! I mailed a copy of this to the original poster, but 
     the editor mangled the backup copy I was going to post to the
     net!
     
     getname() and pipe() are routines in the VAX C RTL, and any
     attempt to use these names (they are also microEMACS names)
     results in linker confusion.  I assume that you are using the
     VAX C RTL as a shared image (this is the most efficient way to
     do it).  What happens when you do this, and come to execution
     time, is that the program tries to call pipe() or getname(),
     but the run time system doesn't know which one you want!
     
     the program will work if you link the VAX C RTL directly into
     your program, since the linker will use the program's routines
     before those of the RTL, but this is a kludge, and results in
     an executable which is twice as big as necessary.  The correct
     thing to do is to change the spellings of pipe() and getname()
     EVERY place they appear in the microEMACS source code.  I know,
     I know, they appear a lot of places, but it has to be done.

     I have been using the program for months now, from my adm3a which I dug
out of the basement, and love it.  The only thing it doesn't do is read and
write mail, but the mailer on VMS is brain-damaged anyway, which is why I am
posting this from a UNIX machine.

Disclaimer:  I don't know anything about VMS really, my employer forces me
             to use it.