This is a brief description of how to install LPmud 3.2(.1) on an Amiga.
See also README.Amiga for details.
Compiling the driver
--------------------
Unpack the driver source into a directory, keeping the subdirectory
structure.
Copy the files 'machine.h', 'config.h', and 'Makefile' from hosts/amiga
to the top directory.
Edit the Makefile, defining where the lib and bin is, and selecting
your compiler and your type of net communication.
Check definitions in config.h, most are probably good as they are.
The ones that are important wrt. which mudlibs can be run are COMPAT_MODE,
NATIVE_MODE, OLD_PREVIOUS_OBJECT_BEHAVIOUR, OLD_EXPLODE_BEHAVIOUR,
INITIALIZATION_BY___INIT You get the most 2.4.5 compatibility if you define
all of these but NATIVE_MODE . Likewise, you get the most 3.0 compatibility
when you define all but COMPAT_MODE. The most interesting and versatile
configuration is not to set any of these ('cross-compat mode').
Do 'dmake'. This leaves you after some time with the executable 'driver'
in the directory.
Do also 'dmake playmud' if you want the client program for local access.
Installing the driver
---------------------
Copy the driver executable and a client program (like PlayMud) into your
command search path.
The driver expects the assign MUDLIB: point to the top directory of the
mudlib, and SWAP: to a non-RAM-directory to put it's swap file there.
If erq is used, the assign MUDBIN: has to point to the directory with
the erq executables.
The driver needs at least 50k stack.
Make a directory 'mud', which contains a dir named 'src', 'bin' and 'lib'.
Move the game driver source (this code) to the src directory.
Running the driver
------------------
Given that all assigns and stacksize are set, the driver can be run
with 'driver' (see README.3.2 for command options).
If you see the message 'Setting up ipc', then you are up and running.
Test with 'letnet localhost 8888' (if you're running AmiTCP) or
with 'PlayMud' (if you're not running AmiTCP); that is, when you change
the port number in config.h , the changed number does apply.
When used for actual mud runs, the driver's output should be redirected
to a mudlib readable file, e.g. 'driver >>MUDLIB:parse.log'.
The '>>' are necessary to make the file both read- and writeable.
You might experience 'stack panic's if your mudlib uses large
savefiles. Reason is that restore_object() needs lots of local stack
for large savefiles. In such cases, truncate the savefile and/or
give the driver more stack.
Installing the Mudlib
---------------------
Mudlibs are available for anonymous ftp, e.g. from ftp.imaginary.com,
ftp.cd.chalmers.se or ftp.cs.tu-berlin.de . Most mudlibs are from actual
Muds and should be used for evaluation purposes only (Copyright issues
can hardly be enforced, but nevertheless are taken seriously -
infringements will give the offender a bad stand in the (mud) community).
To install a mudlib, simply unpack it. To use it, assign MUDLIB: to it's
top directory and start the driver. However, small modifications might
need to be done before.
If a mudlib is not written for use with Amylaar 3.2.1, modifications have
to be made: the include files erq.h and mudlib/sys/#?.h must be copied
into the mudlib's include directory, and the master and the simul_efun
object must be merged with the corresponding objects in the driver's
mudlib/ directory.
LPMud 2.4.5
-----------
This very traditional (read: old) mudlib is still popular as it's free
and very simple. Amylaar 3.2.1 supports it fully, one just has to copy
all the include files as described above, and to replace obj/master.c
and obj/simul_efun.c with the corresponding objects from the driver.
Compat mode driver required.
Nightfall
---------
Nightfall was written for Amylaar, thus only the driver include files
in a given mudlib release (located in secure/) might need update.
Nightfall uses a slightly patched driver which allows logins on multiple
ports, but provides compability code on its own.
Cross-compat mode plus (e)uids driver required.
One Step Beyond
---------------
One Step Beyond was written for Amylaar, thus only the driver include
files in a given mudlib release (located in sys/driver/) might need
update. One Step Beyond uses a slightly patched driver which allows
logins on multiple ports, but provides compability code on its own.
Cross-compat mode plus (e)uids driver required.
Morgengrauen
------------
Morgengrauen was written for Amylaar, thus only the driver include files
in a given mudlib release (located in secure/) might need update.
Some Mudlib releases come without ACCESS.ALLOW in the top directory, in
this case copy that file from mudlib/ACCESS.ALLOW or
hosts/amiga/ACCESS.ALLOW.
Morgengrauen uses a patched driver which allows logins on multiple ports
and offers an additional efun. If necessary, extend it's simul_efun.c
with:
#if !__EFUN_DEFINED__(query_comm_stat)
public int * query_comm_stat()
{
return ({ 0, 0 });
}
#endif
// The following only when using a single-ported driver.
public varargs int query_mud_port(mixed arg)
{
if (arg && !intp(arg) && !objectp(arg))
raise_error("* Illegal argument 1 to sefun query_mud_port\n");
if (!arg || !intp(arg) || arg == 1)
return efun::query_mud_port();
if (arg == -1)
return 1;
return 0;
}
Cross-compat mode plus (e)uids driver required.
TubMud
------
TubMud was over the time adapted for Amylaar, thus only the driver
include files in a given mudlib release (located in sys/) might need
update. Due to its complexity, a stack of at least 200k is necessary.
The master object is /kernel/master.c, to be specified on the driver
commandline with the -M-option.
Using the mudlib on Amiga will result in several errors which cause
is still unknown (sorry).
Compat mode driver required, start with option -M/Kernel/master.c .
Final Advice
------------
One does not need to be a hardcore mudder to install ones own mudlib, but
doing so is also not for the squeamish.
Persistance and a certain willingness to experiment are very recommended.