[comp.sys.atari.st] GNU-Emacs 18.55 Atari-ST

roeder@sbsvax.UUCP (Edgar Roeder) (01/09/90)

Hi!

Now it is ready! The new version of GNU-Emacs 18.55 is posted to the binaries
group. It is 22 parts. So if your machine has a small expiration time, you can
start looking out for this package. The program will run on machines with 1 MB,
but only if you are an absolute emacs fan. After a small patch you can get
200 kB free for editing on an otherwise empty 1040 ST (with gulam). I'll post
now temacs and the binaries needed to produce a running emacs (18.55). The
lisp sources and C-source diffs will be posted later. You may need more than
1 MB to dump emacs (i dumped it to a 500 kB RAM-disk on a Mega ST2) and the
dumped executable is then 520 kB. What you get is a full port of GNU-Emacs
enhanced with mouse-support minus processes (can't work without multitasking).
The editor will start up in 4 seconds from a hard-disk (packed executable in
11 sec).

	- Edgar

Here is the read_me file of the package and the contents of gnuemacs.zoo:

Archive gnuemacs.zoo:
doc-18.55       abbrev.elc      atari.elc       buff-men.elc    c-mode.elc
dumpfix         dumping.txt     files.elc       fill.elc        help.elc
indent.elc      isearch.elc     keypad.elc      lisp-mod.elc    lisp.elc
loaddefs.el     loadup.el       page.elc        paragrap.elc    paths.el
register.elc    replace.elc     simple.elc      site-ini.el     site-loa.el
st-mouse.elc    startup.elc     subr.elc        temacs          text-mod.elc
version.el      window.elc      bytecomp.el     dired.el        dumpfix.c
header.el       novice.el       read_me         shell.el        st-mouse.el

-------------------------------

			GNU Emacs 18.55 Atari ST

1. Filename Syntax

All filenames inside of emacs use the unix syntax ('/' as directory delimiter).
To specify a drive name you can either use '/dev/X' or '~X' where X is the
drive letter. In the path replace all occurences of '\' with '/' (no slashes
are allowed inside of filenames). As usual in unix '~/' means the directory
'$HOME/' (HOME is an environment var).
Alternatively you can use the 'st-mount-drive' command to specify a mounting
point for a specific st-drive. To access drive A: as /disk and drive C: as /
you can do the following: 'M-x st-mount-drive<Return>' 'A<Return>'
'/disk/<Return>' and the same for drive C. You can also write in your emacs.rc
file: (st-mount-drive "C" "/").

2. Termcap

Emacs uses the termcap library. You can specify a terminal name in the env-var
TERM (default is 'atari') and a termcap file or an entry in TERMCAP (default is
'/etc/termcap'). The termcap entry (or the entry in the file corresponding to
TERM) has the same syntax as in unix. A sample file is included. If you have
some enhanced terminal emulator for the ST (for example the X_VT52.PRG) you can
use its features (underline, colors). If you are using emacs over a serial
line from another machine and you get a hangup (carrier high -> low) the
program is finished (after an auto-save). The only problem with using emacs
over a serial line is the number of lines and columns. They don't come from the
termcap-entry but are read from negative line-A variables.

3. Environment Variables

You can set the environment vars with the 'setenv' command in your favourite
shell or you can initialize it for the desktop with GEMBOOT.PRG. The lisp code
of emacs is loaded from $EMACSLOADPATH (default is '/usr/lib/GNUemacs/lisp').
The documentation and info dirs are: '/usr/lib/GNUemacs/etc' and
'/usr/lib/GNUemacs/info'.
The variable EMACSLIB overwrites the default value for the lisp-library-dir,
EMACSDOC is the same for the documentation.
To support 'add-log.el', you can set some variables to identify your machine
and yourself:
	USER or LOGNAME is your user-name (as on unix)
	FULLNAME it's you full name (of course :-)
	SYSNAME is the name of your machine (default: st-tos)
Environment variables are expected in unix-format. In gulam you get this with
'set env_style=mw', in master 'setenv UNIX [n]' with [n] > 0.

4. Special Files

At startup time emacs loads $EMACSLOADPATH/loadup.el and this loads
$EMACSLOADPATH/site-ini.el, then ~/emacs.rc or $EMACSLOADPATH/default are
loaded. To inhibit the last step, you can use 'emacs -q'.

5. Functions ommited in this Version

All functions dealing with the user-id, dumping of emacs (which would at least
be very difficult in TOS) and asynchronous processes.

6. New Functions

Not new but a different implementation has call-process. This is essentially a
system()-call (via _shell_p) to the running shell. The output (and input) for
shell-commands is redirected in (and from) files if the variable shell-tmpfile
is non-nil. If this is nil a feature of my favourite shell Master is used,
namely redirection of the output in the shell-variable SHELL_OUTPUT via '==>'.
In addition the new function getvar is used to get the value of such a shell
variable into the emacs environment. The function time-to-string converts a
time pair as given by file-attributes into a human readable string. If you
suspend emacs (either by pressing ^Z or using 'suspend-emacs') the running
shell is invoked with '-i' as single parameter (gulam is called with 'ue', the
craft-shell with 'sh'). You can go back to emacs with the 'exit'-command of
your shell (gulam: ^Z or ^X^C).
ST-specific functions start with 'st-'. You can switch on mouse-support with
'st-enable-mouse' (switch off with 'st-disable-mouse'). See also "st-mouse.el".
The file "shell.el" has implemented a shell-mode as a first try. In master you
should set 'varsize 50000' (or another large value) to get all output.
Sometimes if the shell sends escape-sequences you may need to redisplay the
screen with ^L. In gulam you should set 'st-shell-tmpfile' to a filename on a
RAM-disk to speed up execution. The command 'call-process-on-region' seems not
to work under gulam (it always wants to read from the console).

7. Keyboard

The Alternate-key is used as emacs' Meta-key. The function keys, the keys on
the cursor block and those on the numeric keypad have ESC-sequences assigned
which start with ESC-# and then follows either the ascii or the scan code
returned by the key. The escape sequences are different when you press
Alternate at the same time. The file 'atari.el' contains some sample key
bindings for those keys.
Alternate is only accepted if meta-flag is t or your termcap-entry has the xm
capability set. Instead of Esc-# the function keys start then with M-#
('#'|0x80). This is invaluable in incremental-search.

8. Memory requirements

Emacs was designed for computers with (nearly) unlimited virtual memory. Since
the program crashes very fast if you have no more memory, you should obey the
95% warning. The actual version uses the whole system-memory from the end of
BSS until it's own memory top for malloc and the stack (alloca). The warning is
only given by malloc. You can ask about your free memory with
'M-Esc data-bytes-free'. At file-offset 366828 is the variable system-heap
(default 00 01 90 00 = 100 kB), which tells the program how much space it
should leave for the operating system (and so the shell). On a Mega ST4 you can
enlarge this value. With 1 MB main memory, you can set this to a few kB. You
can do this with a disk monitor (hint: the above sequence of 4 hex bytes
appears 2 times in the whole file temacs).

9. Creating a dumped Version

You need two different memory dumps to get a new (relocatable) emacs. The dump
files will be ~500 kB large. The running emacs is 520 kB (380 kB packed).
Please see the file dumping.txt for instructions how to dump temacs and produce
xemacs (= emacs). And please: ask me if you have any problems (E-Mail address
is below)! This was the most tricky part for me too!

10. Misc

Emacs recognizes extended argument passing with the xArg protocoll of Dale
Schumacher. The modified system vectors (address error, VBL queue and etv_term)
are marked with "XBRA" & "GNUC". Because the routines for the keyboard interrupt
are very time critical, emacs shares the routine with other programs (if they
are started before emacs and the version number is the same). Emacs has been
crosscompiled for Atari ST on a Sun 3/60 with the GNU-C compiler version 1.35
and also compiled on a Mega ST2.

						Edgar Roeder

E-Mail: roeder@cs.uni-sb.de
-- 

Mail:  Edgar R\"oder			E-Mail: roeder@cs.uni-sb.de
       Liesbet-Dill-Stra\ss e 3
D-6602 Dudweiler                               -o-   -o-
       W-Germany                                   ^
Phone: 06897/74643                     	       	 '---'

buggs@cup.portal.com (William Edward JuneJr) (01/15/90)

WHERE is the latest version of GCC found?
Is there an ST port of G++?
I'd prefer a dial up BBS as I can't FTP here, or if they could be UL'd to
 the comp.sys.binaries, that be great too!


Ed June
71171, 1311 CI$
404-471-9230, Ground Control BBS, HST & Pursuitable
FoReM ST node 386 *AND* Fido node 1:133/403