    ==== WARNING = WARNING = WARNING = WARNING = WARNING = WARNING ====

     This is beta software.  It is not currently known to have bugs or
     incompatibilities with existing STiK apps; nevertheless, use this
     software at your own risk.

    ==== WARNING = WARNING = WARNING = WARNING = WARNING = WARNING ====

                             GlueSTiK v0.02b4
                      Scott Bigham   dsb@cs.duke.edu

INSTALLATION AND USE

Copy GSDRIVER.EXE and GSDAEMON.PRG to pretty much wherever you want
them.  Add the following line to your MINT.CNF file:

    exec c:\path\to\gsdaemon.prg
    exec c:\path\to\gsdriver.exe

If you don't already have a STiK config file, you will need to create
one.  Create a subdirectory STIK_CFG in the root directory of your boot
drive, and create in it a file called DEFAULT.CFG (if you want to put it
somewhere else or name it something else, consult the STiK docs for the
use of the STIK_DIR.DAT file).  This file should contain at least the
line:

    ALLOCMEM = 50000

Other STiK apps may require additional entries.

Reboot your computer.  You should see two new programs installing
themselves:  GSDaemon and GSDriver.  Now connect to your ISP in the
usual way and run your STiK apps.

COMPATIBILITY

I have done preliminary testing with the following STiK apps and found
no compatibility problems:

   - CAB v1.31
   - FINGER v1.00
   - FORECAST v0.4
   - TELNET v1.00

TECHNICAL STUFF

Unless you're interested in how GlueSTiK works, you can stop reading
now; just note the e-mail address at the bottom to report problems.

Version 0.02 of GlueSTiK comes in two pieces.  GSDaemon runs as a
background process and is responsible for actually interacting with the
network.  GSDriver is a TSR that sets up the STiK function table and
hands off STiK network commands to the network daemon.  This is
primarily to eliminate the library-level collisions that caused some
STiK apps to crash with earlier versions.

Note that the daemon and the STiK app communicate with each other by
writing into each other's memory space.  If you run MiNT without memory
protection (by renaming MINT.PRG to MINTNP.PRG), this is not a problem;
otherwise, you may need to use a program-flag setting utility to set the
memory flags of your STiK apps to global.

There are some places where I was unable to reproduce STiK's exact
functionality; you can find these places by searching transtub.c and
transdmn.c for the word `Incompatibility'.  Otherwise, comments are
fairly sparse, mostly notes to myself.

There are three main #define's for selecting compile-time functionality:

    DEBUG
      Activates the debugging log.  Not likely to be of interest unless
      you're debugging GlueSTiK itself.
    RT_DEBUG
      Similar to DEBUG (in fact, it #define's DEBUG itself), but the log
      is only enabled if the GLUESTIK_TRACE variable is set in the
      config file.  There should be no noticeable speed degradation if
      the log is not enabled; if it is, of course, there will be some
      slowdown, since every network operation will generate a log entry.
    BLOCK_OPEN
      Selects between blocking and non-blocking opens.  In the Berkeley
      sockets package, connect() is blocking by default; that is,
      control does not return to the program until the connection is
      completely established and the socket is ready to receive data.
      In STiK, TCP_open() is non-blocking; that is, control returns to
      the program immediately, while the connection is still in
      progress, and the program must do its own waiting until the
      connection is established.  Since handling non-blocking
      connections is conceptually hairy, this compile-time option allows
      GlueSTiK to be switched between blocking and non-blocking.  This
      distribution is compiled with blocking opens; to date, I have not
      had reports of any problems caused by this.

testit.c is a quick-n-dirty program I threw together to do basic testing
of GlueSTiK.  It should not be used as a guideline for STiK application
programming. ;)  You can build it with `make test'.

BUGS

None that I know of; presumably a few that I don't.  Report any problems
you may have to me at dsb@cs.duke.edu.

That's pretty much it.  Remember, it's just a beta.

						-sbigham
