Commit 76eebffc authored by Gerd Moellmann's avatar Gerd Moellmann
Browse files

*** empty log message ***

parent 7de5b421
Date: Mon, 16 Feb 87 15:04:41 EST
From: katinsky@gauss.rutgers.edu (David Katinsky)
To: rms@prep.ai.mit.edu
Subject: 3b2 procedure to raise MAXMEM
Below is the procedure I followed to allow enough memory for GnuEmacs to run
on my 3b2/400. The end result of this is that a process can snarf up to 2Mb
of memory. This can be a bit dangerous on a 2Mb machine, but I tried it and
it worked ok.
-------------------------------------------------------------------------------
In the simplest case, these are the procedures to reconfigure a 3bx kernel.
1] cd /etc/master.d
`ls` shows the files to be:
README ctc* hdelog idisk ipc iuart kernel mau
mem msg ports* prf sem shm stubs sxt
sys xt
2] Edit the file which contains the parameter[s] you wish to change.
In the following excerpt from /etc/master.d/kernel the value MAXMEM
was raised from 256 to 1024.
In V.3.0 and later releases, the parameter in question is MAXUMEM
instead of MAXMEM.
*
* The following entries form the tunable parameter table.
*
NCALL = 30
NPROC = 60
NTEXT = 58
NCLIST = 188
* maxmem is number of pages (2K) was 256 --dmk
MAXMEM = 1024
MAXUP = 25
* hashbuf must be a power of 2
NHBUF = 128
NPBUF = 8
3] cd /boot
4] mkboot -k KERNEL
5] shutdown -i5 -g0 -y
This will take the machine down and bring it back up into firmware
mode. When you see that the machine has reached this state, type the
firmware password (default=mcp). The machine will ask for the name of
a program to execute. At this prompt enter /etc/system . The machine
should start to boot and display its configuration data.
8701271222 dmk
[katinsky@topaz.rutgers.edu]
-------------------------------------------------------------------------------
I do not feel that having the default firmware password is a
problem... but if you wish to edit it out, feel free.
dmk

The following text was written by someone at IBM to describe an older
version of the code for dumping on AIX. It does NOT apply to
the current version of Emacs. It is included in case someone
is curious.
I (rms) couldn't understand the code, and I can't fully understand
this text either. I rewrote the code to use the same basic
principles, as far as I understood them, but more cleanly. This
rewritten code does not always work. In fact, the basic method
seems to be intrinsically flawed.
Since then, someone else implemented a different way of dumping on
the RS/6000, which does seem to work. None of the following
applies to the way Emacs now dumps on the 6000. However, the
current method fails to use shared libraries. Anyone who might be
interested in trying to resurrect the previous method might still
find the following information useful.
It seems that the IBM dumping code was simply set up to detect when
the dumped data cannot be used, and in that case to act approximately
as if CANNOT_DUMP had been defined all along. (This is buried in
paragraph 1.) It seems simpler just to define CANNOT_DUMP, since
Emacs is not set up to decide at run time whether there is dumping or
not, and doing so correctly would be a lot of work.
Note that much of the other information, such as the name and format
of the dumped data file, has been changed.
--rms
A different approach has been taken to implement the
"dump/load" feature of GNU Emacs for AIX 3.1. Traditionally the
unexec function creates a new a.out executable file which contains
preloaded Lisp code. Executing the new a.out file (normally called
xemacs) provides rapid startup since the standard suite of Lisp code
is preloaded as part of the executable file.
AIX 3.1 architecture precludes the use of this technique
because the dynamic loader cannot guarantee a fixed starting location
for the process data section. The loader loads all shared library
data BEFORE process data. When a shared library changes its data
space, the process initial data section address (_data) will change
and all global process variables are automatically relocated to new
addresses. This invalidates the "dumped" Emacs executable which has
data addresses which are not relocatable and now corrupt. Emacs would
fail to execute until rebuilt with the new libraries.
To circumvent the dynamic loader feature of AIX 3.1, the dump process
has been modified as follows:
1) A new executable file is NOT created. Instead, both pure and
impure data are saved by the dump function and automatically
reloaded during process initialization. If any of the saved data
is unavailable or invalid, loadup.el will be automatically loaded.
2) Pure data is defined as a shared memory segment and attached
automatically as read-only data during initialization. This
allows the pure data to be a shared resource among all Emacs
processes. The shared memory segment size is PURESIZE bytes.
If the shared memory segment is unavailable or invalid, a new
shared memory segment is created and the impure data save file
is destroyed, forcing loadup.el to be reloaded.
3) The ipc key used to create and access Emacs shared memory is
SHMKEY and can be overridden by the environment symbol EMACSSHMKEY.
Only one ipc key is allowed per system. The environment symbol
is provided in case the default ipc key has already been used.
4) Impure data is written to the ../bin/.emacs.data file by the
dump function. This file contains the process' impure data
at the moment of load completion. During Emacs initialization,
the process' data section is expanded and overwritten
with the .emacs.data file contents.
The following are software notes concerning the GNU Emacs dump function under AIX 3.1:
1) All of the new dump/load code is activated by the #ifdef SHMKEY
conditional.
2) The automatic loading of loadup.el does NOT cause the dump function
to be performed. Therefore once the pure/impure data is discarded,
someone must remake Emacs to create the saved data files. This
should only be necessary when Emacs is first installed or whenever
AIX is upgraded.
3) Emacs will exit with an error if executed in a non-X environment
and the dump function was performed within a X window. Therefore
the dump function should always be performed in a non-X
environment unless the X environment will ALWAYS be available.
4) Emacs only maintains the lower 24 bits of any data address. The
remaining upper 8 bits are reset by the XPNTR macro whenever any
Lisp object is referenced. This poses a serious problem because
pure data is stored in segment 3 (shared memory) and impure data
is stored in segment 2 (data). To reset the upper 8 address bits
correctly, XPNTR must guess as to which type of data is represented
by the lower 24 address bits. The technique chosen is based upon
the fact that pure data offsets in segment 3 range from
0 -> PURESIZE-1, which are relatively small offsets. Impure data
offsets in segment 2 are relatively large (> 0x40000) because they
must follow all shared library data. Therefore XPNTR adds segment
3 to each data offset which is small (below PURESIZE) and adds
segment 2 to all other offsets. This algorithm will remain valid
as long as a) pure data size remains relatively small and b) process
data is loaded after shared library data.
To eliminate this guessing game, Emacs must preserve the 32-bit
address and add additional data object overhead for the object type
and garbage collection mark bit.
5) The data section written to .emacs.data is divided into three
areas as shown below. The file header contains four character
pointers which are used during automatic data loading. The file's
contents will only be used if the first three addresses match
their counterparts in the current process. The fourth address is
the new data segment address required to hold all of the preloaded
data.
.emacs.data file format
+---------------------------------------+ \
| address of _data | \
+---------------------------------------+ \
| address of _end | \
+---------------------------------------+ file header
| address of initial sbrk(0) | /
+---------------------------------------+ /
| address of final sbrk(0) | /
+---------------------------------------+ /
\ \
\ \
all data to be loaded from
_data to _end
\ \
\ \
+---------------------------------------+
\ \
\ \
all data to be loaded from
initial to final sbrk(0)
\ \
+---------------------------------------+
Sections two and three contain the preloaded data which is
restored at locations _data and initial sbrk(0) respectively.
The reason two separate sections are needed is that process
initialization allocates data (via malloc) prior to main()
being called. Therefore _end is several kbytes lower than
the address returned by an initial sbrk(0). This creates a
hole in the process data space and malloc will abort if this
region is overwritten during the load function.
One further complication with the malloc'd space is that it
is partially empty and must be "consumed" so that data space
malloc'd in the future is not assigned to this region. The malloc
function distributed with Emacs anticipates this problem but the
AIX 3.1 version does not. Therefore, repeated malloc calls are
needed to exhaust this initial malloc space. How do you know
when malloc has exhausted its free memory? You don't! So the
code must repeatedly call malloc for each buffer size and
detect when a new memory page has been allocated. Once the new
memory page is allocated, you can calculate the number of free
buffers in that page and request exactly that many more. Future
malloc requests will now be added at the top of a new memory page.
One final point - the initial sbrk(0) is the value of sbrk(0)
after all of the above malloc hacking has been performed.
The following Emacs dump/load issues need to be addressed:
1) Loadup.el exits with an error message because the xemacs and
emacs-xxx files are not created during the dump function.
Loadup.el should be changed to check for the new .emacs.data
file.
2) Dump will only support one .emacs.data file for the entire
system. This precludes the ability to allow each user to
define his/her own "dumped" Emacs.
Add an environment symbol to override the default .emacs.data
path.
3) An error message "error in init file" is displayed out of
startup.el when the dumped Emacs is invoked by a non-root user.
Although all of the preloaded Lisp code is present, the important
purify-flag has not been set back to Qnil - precluding the
loading of any further Lisp code until the flag is manually
reset.
The problem appears to be an access violation which will go
away if the read-write access modes to all of the files are
changed to rw-.
4) In general, all file access modes should be changed from
rw-r--r-- to rw-rw-rw-. They are currently setup to match
standard AIX access modes.
5) The dump function is not invoked when the automatic load of
loadup.el is performed.
Perhaps the command arguments array should be expanded with
"dump" added to force an automatic dump.
6) The automatic initialization function alloc_shm will delete
the shared memory segment and .emacs.data file if the "dump"
command argument is found in ANY argument position. The
dump function will only take place in loadup.el if "dump"
is the third or fourth command argument.
Change alloc_shm to live by loadup.el rules.
......@@ -4,6 +4,8 @@
* tasks.texi: Updated to the version from /gd/gnuorg.
* FTP: Refer to the GNU web site.
2000-10-13 John Wiegley <johnw@gnu.org>
* NEWS: Added a note about Eshell.
......
-*- text -*-
How to get GNU Software by Internet FTP or by UUCP. Last updated 1999-01-20
* Please send improvements to this file to gnu@gnu.org.
* No Warranties
We distribute software in the hope that it will be useful, but without
any warranty. No author or distributor of this software accepts
responsibility to anyone for the consequences of using it or for
whether it serves any particular purpose or works at all, unless he
says so in writing. This is exactly the same warranty that the commercial
software companies offer: None. If the distribution is incomplete or the
media fails, you can always download a replacement from any of the GNU
mirrors, free of charge.
* Updates
A possibly more up-to-date list of GNU FTP sites is at
http://www.gnu.org/order/ftp.html
* How to FTP
Use the ftp program on your system (ask locally if you can't find it)
to connect to the host you are ftping from. Unless indicated
otherwise, login in as user "anonymous", with password: "your e-mail
address" and set "binary" mode (to transfer all eight bits in each
byte).
ALWAYS USE BINARY/IMAGE MODE TO TRANSFER THESE FILES!
Text mode does not work for tar files or compressed files.
* GNU Software and How To FTP It
GNU software is available on ftp.gnu.org under the directory /gnu.
diff files to convert between versions exist for some of these
programs. Some programs have misc support files as well. Have a look
on ftp.gnu.org to see which ones. In most cases, the tar or diff
files are compressed with the `gzip' program; this is indicated with
the .gz suffix.
Descriptions of GNU software are available at
http://www.gnu.org/software/software.html
* Alternative Internet FTP Sources
Please do NOT use a site outside your country, until you have checked
all sites inside your country, and then your continent. Trans-ocean
TCP/IP links are very expensive and usually very low speed.
The canonical GNU ftp site is located at ftp.gnu.org/gnu.
You should probably use one of the many mirrors of that site - the
mirrors will be less busy, and you can find one closer to your site.
* GNU FTP Site Mirror List
United States:
California - labrea.stanford.edu/pub/gnu, gatekeeper.dec.com/pub/GNU
Hawaii - ftp.hawaii.edu/mirrors/gnu
Illinois - uiarchive.cso.uiuc.edu/pub/gnu (Internet address 128.174.5.14)
Kentucky - ftp.ms.uky.edu/pub/gnu
Maryland - ftp.digex.net/pub/gnu (Internet address 164.109.10.23)
Massachusetts - aeneas.mit.edu/pub/gnu
Michigan - gnu.egr.msu.edu/pub/gnu
Missouri - wuarchive.wustl.edu/systems/gnu
New Mexico - ftp.cs.unm.edu/mirrors/gnu
New York - ftp.cs.columbia.edu/archives/gnu/prep
Ohio - ftp.cis.ohio-state.edu/mirror/gnu
Tennessee - ftp.skyfire.net/pub/gnu
Virginia - ftp.uu.net/archive/systems/gnu
Washington - ftp.nodomainname.net/pub/mirrors/gnu
Africa:
South Africa - ftp.sun.ac.za/gnu
The Americas:
Brazil - ftp.unicamp.br/pub/gnu
Brazil - master.softaplic.com.br/pub/gnu
Brazil - linuxlabs.lci.ufrj.br/gnu
Canada - ftp.cs.ubc.ca/mirror2/gnu
Chile - ftp.inf.utfsm.cl/pub/gnu (Internet address 146.83.198.3)
Costa Rica - sunsite.ulatina.ac.cr/GNU
Mexico - ftp.uaem.mx/pub/gnu
Australia:
Australia - archie.au/gnu (archie.oz or archie.oz.au for ACSnet)
Australia - ftp.progsoc.uts.edu.au/pub/gnu
Australia - mirror.aarnet.edu.au/pub/gnu
Asia:
Japan - tron.um.u-tokyo.ac.jp/pub/GNU/prep
Japan - ftp.cs.titech.ac.jp/pub/gnu
Korea - cair-archive.kaist.ac.kr/pub/gnu (Internet address 143.248.186.3)
Saudi Arabia - ftp.isu.net.sa/pub/mirrors/prep.ai.mit.edu/
Taiwan - ftp.edu.tw/UNIX/gnu/
Taiwan - ftp.nctu.edu.tw/UNIX/gnu/
Taiwan - ftp1.sinica.edu.tw/pub3/GNU/gnu/
Thailand - ftp.nectec.or.th/pub/mirrors/gnu (Internet address - 192.150.251.32)
Europe:
Austria - ftp.univie.ac.at/packages/gnu
Austria - gd.tuwien.ac.at/gnu/gnusrc
Belgium - ftp.be.gnu.org/
Austria - http://gd.tuwien.ac.at/gnu/gnusrc/
Czech Republic - ftp.fi.muni.cz/pub/gnu/
Denmark - ftp.denet.dk/mirror/ftp.gnu.org/pub/gnu
Denmark - ftp.dkuug.dk/pub/gnu/
Finland - ftp.funet.fi/pub/gnu
France - ftp.univ-lyon1.fr/pub/gnu
France - ftp.irisa.fr/pub/gnu
Germany - ftp.informatik.tu-muenchen.de/pub/comp/os/unix/gnu/
Germany - ftp.informatik.rwth-aachen.de/pub/gnu
Germany - ftp.de.uu.net/pub/gnu
Greece - ftp.forthnet.gr/pub/gnu
Greece - ftp.ntua.gr/pub/gnu
Greece - ftp.aua.gr/pub/mirrors/GNU (Internet address 143.233.187.61)
Hungary - ftp.kfki.hu/pub/gnu
Ireland - ftp.esat.net/pub/gnu (Internet address 193.120.14.241)
Italy - ftp.oasi.gpa.it/pub/gnu
Netherlands - ftp.eu.net/gnu (Internet address 192.16.202.1)
Netherlands - ftp.nluug.nl/pub/gnu
Netherlands - ftp.win.tue.nl/pub/gnu (Internet address 131.155.70.19)
Norway - ftp.ntnu.no/pub/gnu (Internet address 129.241.11.142)
Poland - ftp.task.gda.pl/pub/gnu
Portugal - ftp.ci.uminho.pt/pub/mirrors/gnu
Portugal - http://ciumix.ci.uminho.pt/mirrors/gnu/
Portugal - ftp.ist.utl.pt/pub/gnu
Russia - ftp.chg.ru/pub/gnu/
Slovenia - ftp.arnes.si/pub/software/gnu
Spain - ftp.etsimo.uniovi.es/pub/gnu
Sweden - ftp.isy.liu.se/pub/gnu
Sweden - ftp.stacken.kth.se
Sweden - ftp.luth.se/pub/unix/gnu
Sweden - ftp.sunet.se/pub/gnu (Internet address 130.238.127.3)
Also mirrors the Mailing List Archives.
Sweden - swamp.ios.chalmers.se/pub/gnu/
Switzerland - ftp.eunet.ch/mirrors4/gnu
Switzerland - sunsite.cnlab-switch.ch/mirror/gnu (Internet address 193.5.24.1)
United Kingdom - ftp.mcc.ac.uk/pub/gnu (Internet address 130.88.203.12)
United Kingdom - unix.hensa.ac.uk/mirrors/gnu
United Kingdom - ftp.warwick.ac.uk (Internet address 137.205.192.14)
United Kingdom - SunSITE.doc.ic.ac.uk/gnu (Internet address 193.63.255.4)
* How to FTP GNU Emacs
Emacs is in the directory /gnu/emacs on ftp.gnu.org. The emacs
distribution itself has a filename in the form emacs-M.N.tar.gz, where
M and N stand for the version numbers; the Emacs Lisp Reference Manual
is in a separate file, named elisp-manual-NN.tar.gz.
* Scheme and How to FTP It
The latest distribution version of C Scheme is available via anonymous FTP
from swiss-ftp.ai.mit.edu in /pub/scheme-X.X/ (where X.X is some version
number).
Read the files INSTALL and README in the top level C Scheme directory.
* TeX and How to Obtain It
We don't distribute TeX now, but it is free software.
TeX is a document formatter that is used, among other things, by the FSF
for all its documentation. You will need it if you want to make printed
manuals.
TeX is freely redistributable. You can get it by ftp, tape, or CD/ROM.
** For FTP instructions, retrieve the file
ftp.cs.umb.edu/pub/tex/unixtex.ftp. (We don't include it here because it
changes relatively frequently. Sorry.)
** A minimal TeX collection (enough to process Texinfo files, anyway)
is included on the GNU source CD-ROM. See the file ORDERS in this
directory for more information.
* VMS FTP sites with GNU Software
You can anonymously ftp a VMS version of GNU emacs from:
- ftp.vms.stacken.kth.se:[.GNU-VMS] - GNU Emacs and some other VMS
ports (and some VMS binaries) of GNU software
- mango.rsmas.miami.edu has a VMS version of the GCC/G++ compiler.
Contact angel@flipper.miami.edu (angel li) for details.
- RIGEL.EFD.LTH.SE [130.235.48.3] - GNU Emacs
* Getting GNU software in Great Britain
jpo@cs.nott.ac.uk is willing to distribute those GNU sources he has
available. The smaller items are available from the info-server (send
to info-server@cs.nott.ac.uk); the larger items by negotiation. Due to
communication costs this service is only available within the UK.
BattenIG@computer-science.birmingham.ac.uk (aka
I.G.Batten@fulcrum.bt.co.uk) is also willing to distribute those GNU
sources he has.
wizards@doc.ic.ac.uk is willing to distribute those GNU sources they have
along with most other freely distributable software. The SunSITE archive
on SunSITE.doc.ic.ac.uk (193.63.255.4) is available via ftp, http, fsp,
gopher, NFS and Lanmanger over IP (SMB), and telnet.
UK sites with just anonymous FTP access are in the above list.
* Getting GNU software via UUCP
OSU is distributing via UUCP: most GNU software, MIT C Scheme,
Compress, News, RN, NNTP, Patch, some Appletalk stuff, some of the
Internet Requests For Comment (RFC) et al.. See their periodic
postings on the Usenet newsgroup comp.sources.d for informational
updates. Current details from <staff@cis.ohio-state.edu> or
<...!osu-cis!staff>.
Information on how to uucp some GNU programs is available via
electronic mail from: uunet!hutch!barber, hqda-ai!merlin, acornrc!bob,
hao!scicom!qetzal!upba!ugn!nepa!denny, ncar!noao!asuvax!hrc!dan,
bigtex!james (aka james@bigtex.cactus.org), oli-stl!root,
src@contrib.de (Germany), toku@dit.co.jp (Japan) and info@ftp.uu.net.
* If You Like The Software
If you like the software developed and distributed by the Free
Software Foundation, please express your satisfaction with a donation.
Your donations will help to support the Foundation and make our future
efforts successful, including a complete development and operating
system, called GNU (Gnu's Not Unix), which will run Unix user
programs. For more information on GNU and the Foundation, contact us
at the above address, or see our web site at http://www.gnu.org.
Ordering a GNU Source Code CD-ROM or Source Code CD-ROM Subscription
is a good way for your organization to help support our work.
Please refer to <http://www.gnu.org/software/emacs/> for information
about obtaining Emacs.
NOTE: the Free Software Foundation agreed to put this file, and the
programs it describes, into the Emacs distribution ONLY on the
condition that we would not lift a finger to maintain them! We are
willing to *pass along* support for Sun windows, but we are not
willing to let it distract us from what we are trying to do. If you
have complaints or suggestions about Sun windows support, send them to
peck@sun.com, who is the maintainer.
The interface between GNU Emacs and Sun windows consists of the program
etc/emacstool, the Lisp programs lisp/sun-*.el and lisp/term/sun.el,
and the C source file src/sunfns.c. It is documented with a man page,
etc/emacstool.1.
To enable use of these files and programs, define the configuration
switch HAVE_SUN_WINDOWS in src/config.h before compiling Emacs.
The definition of HAVE_SUN_WINDOWS must precede the #include m-sun3.h
or #include m-sun4.h.
If you must change PURESIZE, do so after the #include m-sun3.h
This software is based on SunView for Sun UNIX 4.2 Release 3.2,
and will not work "as is" on previous releases, eg 3.0 or 3.1.
Using Emacstool with GNU Emacs:
The GNU Emacs files lisp/term/sun.el, lisp/sun-mouse.el,
lisp/sun-fns.el, and src/sunfns.c provide emacs support for the
Emacstool and function keys. If your terminal type is SUN (that is,
if your environment variable TERM is set to SUN), then Emacs will
automatically load the file lisp/term/sun.el. This, in turn, will
ensure that sun-mouse.el is autoloaded when any mouse events are
detected. It is suggested that sun-mouse and sun-fns be
included in your site-init.el file, so that they will always be loaded
when running on a Sun workstation. [Increase PURESIZE to 154000].
Support for the Sun function keys requires disconnecting the standard
Emacs command Meta-[. Therefore, the function keys are supported only
if you do (setq sun-esc-bracket t) in your .emacs file.
The file src/sunfns.c defines several useful functions for emacs on
the Sun. Among these are procedures to pop-up SunView menus, put and
get from the SunView selection [STUFF] buffer, and a procedure for
changing the cursor icon. If you want to define cursor icons, try
using the functions in lisp/sun-cursors.el.
The file lisp/sun-mouse.el includes a mass of software for defining
bindings for mouse events. Any function can be called or any form
evaluated as a result of a mouse event. If you want a pop-up menu,
your function can call sun-menu-evaluate. This will bring up a
SunView walking menu of your choice.
Use the macro (defmenu menu-name &rest menu-items) to define menu
objects. Each menu item is a cons of ("string" . VALUE), VALUE is
evaluated when the string item is picked. If VALUE is a menu, then a
pullright item is created.
This version also includes support for copying to and from the
sun-windows "stuff" selection. The keyboard bindings defined in
lisp/sun-fns.el let you move the current region to the "STUFF"
selection and vice versa. Just set point with the left button, set
mark with the middle button, (the region is automatically copied to
"STUFF") then switch to a shelltool, and "Stuff" will work. Going the
other way, the main right button menu contains a "Stuff Selection"
command that works just like in shelltool. [The Get and Put function
keys are also assigned to these functions, so you don't need the mouse
or even emacstool to make this work.]
Until someone write code to read the textsw "Selection Shelf", it is
not possible to copy directly from a textsw to emacs, you must go through
the textsw "STUFF" selection.
The Scroll-bar region is not a SunView scrollbar. It really should
be called the "Right-Margin" region. The scroll bar region is basically
the rightmost five columns (see documentation on variable scrollbar-width).
Mouse hits in this region can have special bindings, currently those binding
effect scrolling of the window, and so are referred to as the "Scroll-bar"
region.
For information on what mouse bindings are in effect, use the command
M-x Describe-mouse-bindings, or the quick pop-up menu item "Mouse-Help".
GNU Emacs EXAMPLES:
See definitions in lisp/sun-fns.el for examples.
You can redefine the cursor that is displayed in the emacs window.
On initialization, it is set to a right arrow. See lisp/sun-cursors.el
for additional cursors, how to define them, how to edit them.
BUGS:
It takes a few milliseconds to create a menu before it pops up.
Someone who understands the GNU Garbage Collector might see if it
is possible for defmenu to create a SunView menu struct that does
not get destroyed by Garbage Collection.
An outline of the files used to support Sun Windows and the mouse.
etc/SUN-SUPPORT.
This document.
etc/emacstool.1:
Added: an nroff'able man page for emacstool.
etc/emacstool.c:
Encodes all the function keys internally, and passes non-window
system arguments to emacs.
etc/emacs.icon:
The "Kitchen Sink" GNU Emacs icon.
src/sunfns.c:
This contains the auxiliary functions that allow elisp code to interact
with the sunwindows, selection, and menu functions.
lisp/sun-mouse.el:
Defines the lisp function which is called when a mouse hit is found
in the input queue. This handler decodes the mouse hit via a keymap-like