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.