              User manual for Jekyll version 1.38
                    3rd rewrite, 4nd revision.

         Written & revised by Pascal Haakmat, 22/11/1992

     Jekyll was developed and written by Vincent Partington
                       Copyright (C) 1992

  Jekyll, the protocol, is public domain. However, Jekyll as in
   the ST-implementation is shareware, and should be paid for.

                  Vincent Partington
                  Lindenlaan 637
                  1185 LZ Amstelveen
                  Holland

                  FidoNet   : 2:281/202.15
                  NeST      : 90:500/202.15
                  NeST-echo : N_JEKYLL
                  Usenet    : vincent@nextjk.wlink.nl


                  Pascal Haakmat
                  Geerdinkhof 130
                  1103 PT Amsterdam
                  Holland

                  FidoNet   : 2:281/202.13
                  NeST      : 90:500/202.13
                  NeST-echo : N_JEKYLL

TABLE OF CONTENTS:
------------------

     Titlepage ...................................... 1
     Table of contents .............................. 2

    I   : Introduction .............................. 4

          I.I  : What is Jekyll? .................... 4
          I.II : Why was Jekyll called Jekyll? ...... 4
          I.III: System requirements ................ 4
          I.IV : Functional overview ................ 4
          I.V  : Installation ....................... 4

    II  : Getting started ........................... 6

          I.I : Making a private Jekyll connection .. 6
          I.II: Making a BBS Jekyll connection ...... 7

    III : Using Jekyll .............................. 8

          III.I  : Getting to know Jekyll ........... 8
          III.II : The statuswindow ................. 8
          III.III: Configuring Jekyll ............... 9

    IV  : The configuration files .................. 10

          IV.I  : JEKYLL.CFG ....................... 10
          IV.II : JEKYLL.MAG ....................... 10
          IV.III: JEKYLL.FKS ....................... 11
          IV.IV : JEKYLL.BAN ....................... 11
          IV.V  : JEKYLL.LOK ....................... 12
          IV.VI : JEKYLL.FLO ....................... 13

    V   : Jekyll's switches ........................ 14

          V.I   : Toggle switches .................. 14
          V.II  : Resume switches .................. 15
          V.III : Special switches ................. 16

    VI  : More Jekyll functions .................... 19

         VI.I  : The fileselector .................. 19
         VI.II : The send queue .................... 20
         VI.III: The fileviewer .................... 21
         VI.IV : The host mode ..................... 21
         VI.V  : The terminal ...................... 21
         VI.VI : Special features .................. 22

    VII : Shareware message ........................ 24

    VIII: Copyright notice ......................... 25

    IX  : Disclaimer ............................... 26

    X   : Credits .................................. 27

    XI  : Greetings ................................ 28

    XII : Which BBSes use Jekyll?................... 29

    Appendix A: Key overview ....................... 30
    Appendix B: Troubleshooting guide .............. 31
    Appendix C: Examples ........................... 32
    Appendix D: Update history ..................... 35
    Appendix E: Jargon guide ....................... 39

I: Introduction
===============

I.I: What is Jekyll?
--------------------

Jekyll,  like  Zmodem  and Xmodem,  is a transfer  protocol  that
allows errorfree filetransfer. However, Jekyll is far more power~
ful,  since  it  was written for,  and on,  the  powerful  micro-
computers of today.

I.II: Why was Jekyll called Jekyll?
-----------------------------------

Jekyll was named after the well-known character in the book  "The
strange case of dr. Jekyll & mr. Hyde" by Robert Louis Stevenson.
The  book tells about the split personality of  dr.  Jekyll,  and
since   Jekyll   (the  protocol)  is   capable   of   full-duplex
transmission, it was thought to be a good and logical name.

I.III: System requirements
--------------------------

Jekyll should run on any ST/STE/TT with TOS in ROM,  and at least
half  a megabyte of memory,  though when using it in  conjunction
with  Hyde 1 megabyte is required.  Jekyll will run  from  floppy
disks, but a hard disk is strongly recommended.

I.IV: Functional overview
-------------------------

It is pretty hard to give a full functional overview,  due to the
large number of functions Jekyll sports.  However,  a few of  the
most interesting features are ...

     - Full-duplex (both way) transmission of files.
     - Split screen full-duplex chat.
     - Host-mode, making it possible to scan the other drive.
     - Fileviewer, to prevent boredom.
     - Highly  configurable,   using  both  the  commandline  and
       seperate configuration files.
     - Little terminal, for private use of Jekyll.
     - Lots of BBS-related switches.
     - Data  compression  'on  the  fly',  increasing  throughput
       efficiency.
     - Up to 20 function keys may be defined.
     - Magics supported.

I.V: Installation
-----------------

Installation  is very simple:  copy JEKYLL.TTP onto  your  comms.
drive/directory, and run it whenever you want to transfer a file.

However,  this  way  you will use little of Jekyll's  very  large
potential!  It's best you read this whole document,  and  perhaps
you could print the part about the switches.  Then you can easily
set up Jekyll using Hyde.

If  you are a sysop and want to install Jekyll on your BBS as  an
external protocol, refer to Appendix D: Examples.

II: Getting started
===================

II.I: Making a private Jekyll connection
----------------------------------------

Jekyll  boasts a lot of functions especially designed for a  user
<-> user filetransfer, i.e. between you and a friend.

To  make a private connection,  follow the steps mentioned  below
(NOTE:   this   step-by-step-guide  assumes  you've  linked   the
telephone via the modem!):

     - Run  Jekyll,  with an empty commandline.  After the  title
       screen has been displayed,  Jekyll will throw you into the
       Jekyll terminal.

     - Call a friend that owns a copy of Jekyll,  and tell him to
       run Jekyll just like you did.

     -  Now make  sure both modems are on,  and both  modems  are
        Hayes-compatible.  You  should  also  check  the  current
        bpsrate, and adjust it as required using F4 to F9.

     - Tell your friend to press F2,  which will cause Jekyll  to
       send  'ATA' to the modem.  A sharp,  high-pitched tone  is
       heard.  When  you hear  this tone,  you should  press  F1,
       which  will cause Jekyll to send 'ATD' to the modem.

     -  When  you  hear the high-pitched whistles change  into  a
        sort   of crackling sound,  you can safely  hang  up  the
        telephone,  since the modems have made a connection (it's
        even better to leave the phone off-hook,  so that you can
        easily   pick  it  up  later  to   go   back   to   voice
        communication).

     - The terminal will notice the connection,  and  will  enter
       Jekyll automatically. You will see the title  screen again
       and on the bottom line it says: "Connecting ...".

     - After  a few seconds (2 to 3,  usually) the  two  Jekyll's
       will  have connected,  and you will have  entered  Jekyll.
       The  screen  is  divided in three parts:  the  upper  part
       shows  everything   you  type,   the  middle   part  shows
       everything  your friend types,  and the lower  part  shows
       how far the transfer is progressing.

Having done this, it is time to explore Jekyll. If you need help,
press the [HELP] key.  You can scroll through the helptext  using
cursor  keys  UP and DOWN.  You may also jump to  section  III.I:
"Getting to know Jekyll".

II.II: Making a BBS Jekyll connection
-------------------------------------

This  is somewhat simpler than a private  connection,  since  the
modems have already connected; this part assumes you are inside a
BBS, and have given the BBS the command to send you some files.

     - Select  a Jekyll  transfer  in the BBS.  How  to  do  this
       depends  totally  on what BBS program is being  used.  Ask
       your sysop for details.

     - Run Jekyll, using the 'Execute program ...' option in your
       terminal  program  (if it has one),  or  by  quitting  the
       terminal program and running Jekyll from the desktop.

     - Jekyll  will  show it's title screen,  with on the  bottom
       line the message: "Connecting ...".

     - Once  connected,  you will receive the requested  file(s),
       and,  depending on whether the sysop is available, you can
       chat  with the sysop (if the "page" function  is  enabled,
       you can even call him to the console using CTRL-J).

III: Using Jekyll
=================

III.I: Getting to know Jekyll
-----------------------------

Once inside Jekyll,  the screen is divided into three parts:  the
upper part (henceforth called 'window'), the middle part, and the
lowest part.

The upper window shows you everything you type during a transfer.
It will be sent towards the other side,  which will receive it in
the lower window.

The middle window shows you everything the other side types.

And  finally,  the  lower window shows you (most)  messages  from
Jekyll,  what file you are currently receiving/sending, etc. etc.
Jump to section III.II for information on this window.

Try  typing  something.  You  will see the  characters  you  type
appearing in the upper window.  When your friend types something,
those characters will appear in the middle window.

Now  we  will  send  a  file.   Press  Ctrl-F  to  call  on   the
fileselector  (see  section  VI.I:   "The   fileselector").   The
cursorkeys  up and down allow you to scroll through the  list  of
files,  whilst pressing RETURN sends the highlighted  file.  UNDO
takes you back to the chat window.

We  have made every function in Jekyll as intuitive as  possible,
and you shouldn't have any trouble using them.  It might be  wise
to print out Appendix A, "Key overview".

III.II: The statuswindow
------------------------

The statuswindow is used by Jekyll to show all errors,  messages,
and the status of the current filetransfer.  The statuswindow  is
built up like this:

<message line, where all messages arrive>
Send:  <name> <sent bytes> <size>b <CPS> <time to go> <pack rate>
Recv: <name> <recvd bytes> <size>b <CPS> <time to go> <pack rate>

The  <message  line>  contains all important  (and  certain  less
important) messages, keep a close eye on it. Many of the messages
displayed  here will also be put in the logfile.  See section  V:
Jekyll's switches.

<name>  is,  in  both cases,  the filename of the  file  you  are
sending/receiving.

<sent bytes/recvd bytes> respectively is the number of bytes  you
have sent/received already.

<size> is the size of the file you are sending/receiving.

<CPS>  is  the  number of characters  that  are  transmitted  per
second.

<time  to go> is the amount of time (in  minutes:seconds)  before
the  file is finished.  This is merely a rough estimate,  and  it
will give ridiculous results with very short files (smaller  than
3K).  However,  with  somewhat  larger  files  it  gives  a  good
impression.

<pack  rate>  is  the percentage that  Jekyll's  compression  has
shrunk  the file.  On already packed files (LZH,  ARC) this  will
probably be zero percent, this is normal.

These   two   bars  also  indicate  how  far  the   transfer   is
progressing: they slowly invert.

III.III: Configuring Jekyll
--------------------------

Jekyll  is  highly configurable to cater for  all  the  different
configurations,  setups and wishes of  people.  However,  because
Jekylls  configuration possibilities are so immense,  you  should
take some time to fully understand how it works.

There are two ways of configuring Jekyll:

1) The commandline.

The commandline can be used to put switches on,  and file(s)  you
want to send.  Switches that are put on the commandline  override
switches    contained   in   JEKYLL.CFG   (see   section    IV.I:
"JEKYLL.CFG").

2) The configuration files.

For  default settings,  you can create a file called  JEKYLL.CFG.
This  file  contains all settings you'd normally pass  using  the
commandline,  except for files; these still need to be put on the
commandline.

Furthermore  Jekyll  has  a JEKYLL.MAG file  for  the  magics,  a
JEKYLL.FKS file for the functions keys, a JEKYLL.BAN file for the
banner,  a JEKYLL.LOK for the locked paths, and a JEKYLL.FLO file
that contains all files to send (only for BBS'ses, really).

Section  V,   "Jekyll's  switches",   contains  all  of  Jekyll's
switches. For information on the configuration files, jump to the
next section, section IV: "The configuration files.".

IV: The configuration files
===========================

A  lot of Jekyll's power lies within these  configuration  files,
that  enable you to customize Jekyll to YOUR needs.  You can  use
Hyde to easily create (most) of these  files,  or,  alternatively
you can use a text-editor that produces plain ASCII.

IV.I: JEKYLL.CFG
----------------

JEKYLL.CFG is nothing more than a commandline in a file. The only
difference is that JEKYLL.CFG cannot contain files to send  (pass
these using the commandline or JEKYLL.FLO.  Or better yet,  using
the built-in fileselector).

Refer  to  section  V,   "Jekyll's  switches",   for  a  complete
description of all switches.

An  example JEKYLL.CFG might look like this (the arrows '->'  and
beyond are not a part of the configuration file,  and should  not
be included!):

[start of JEKYLL.CFG]
-auto0term1cheq0pack1oser1oscr1    -> switches
-bpsr2400                          -> bpsrate
-blok512                           -> block size
-cash16384                         -> cache size
-sendD:\                           -> upload path
-recvE:\DATA\DLOADS\               -> download path
-logfD:\COMMS\BINKLEY\LOGFILE.LOG  -> logfile
[end of JEKYLL.CFG]

Would  it have been put on the commandline,  it would  look  like
this:

-auto0term1cheq0pack1oser1oscr1 -bpsr2400   -blok512 -cash16384 -
sendD:\ -recvE:\DATA\DLOADS\ -logfD:\COMMS\BINKLEY\LOGFILE.LOG

Which leaves you no room for files to send ...  And it would have
to  be  typed  in  everytime you run Jekyll  which  is  not  very
convenient.

IV.II: JEKYLL.MAG
-----------------

JEKYLL.MAG contains all the magics you want to use.  It's  format
is  simple,  and consists of a number of two line  'blocks',  the
first line of every block containing the 'source'  sentence,  the
second  containing  the  'destination'  sentence.   The  'source'
sentence is case independant, meaning that 'CASE', 'case', 'CaSe'
and 'cASe' all mean the same to Jekyll.

Various control codes have been incorporated as well.

ASCII code 1 (arrow UP) or '\u' will cause the cursor to go up.
ASCII  code 2 (arrow DOWN)  or '\d' will cause the cursor  to  go
down.  If  the cursor  is on the lowest  line,  the  screen  will
scroll up.
ASCII  code 3 (arrow RIGHT) or '\r' will cause the cursor  to  go
right.
ASCII  code  4 (arrow LEFT) or '\l' will cause the cursor  to  go
left.
ASCII  code  5 (closebox) or '\c' will  cause  your  chat  window
to be cleared.
ASCII  code  13  (small  CR) or '\n'  moves  the  cursor  to  the
beginning of the line, and one line down. If the cursor is on the
last line, the screen will scroll up.

To  get  a  backslash into your JEKYLL.MAG  file,  it  should  be
doubled, i.e. use '\\'.

An example JEKYLL.MAG file:

[start of JEKYLL.MAG]
Pascal
//Pascal\\\\
Jekyll
=[! Jekyll !]=
[end of JEKYLL.MAG]

When  the  person  with  this  JEKYLL.MAG  file  types  'Pascal',
'pascal',  'PASCAL' or 'pAScaL' it is converted into  //Pascal\\.
'jekyll' will be converted into '=[! Jekyll !]='.

IV.III: JEKYLL.FKS
------------------

JEKYLL.FKS contains the definitions of the functionkeys. It is by
far  the simplest file of all,  and consists of a maximum  of  20
lines, each line defining a function key. For example:

An example JEKYLL.FKS file:

[start of JEKYLL.FKS]
This text will appear when you press F1
This will appear when you press F2


And this text will appear when you press F5
[end of JEKYLL.FKS]

IV.IV: JEKYLL.BAN
-----------------

JEKYLL.BAN  contains  the text you want the remote  to  see  upon
entering Jekyll. This may be anything you like, ranging from your
name to your favorite movie.  We recommend sysops to put the name
of their BBS over here,  together with some propaganda talk and their
FidoNet/NeST/Olympic ... addresses and the name of the sysop.

An example JEKYLL.BAN file:

[start of JEKYLL.BAN]
SuperBBS Amsterdam, phone number: +31 - 7654321
Online  24 hours a day,  300 - 19200 baud!  Over 10.000 files  on
download!

System Operator: Al Capone
FidoNet address: 2:281/201
[end of JEKYLL.BAN]

IV.V: JEKYLL.LOK
----------------

JEKYLL.LOK contains the paths you want to LOCK from the host mode
(see  section  V.IV:   "The  host  mode").  It  consists  of  the
paths/files  you want to lock,  AND/OR the paths/files you  DON'T
want to lock.  Paths/files you want to lock should be precede  by
'-' and those you want to unlock by '+'.

For  example,  let's say you've got drives A,  B and  C.  Now  if
you're JEKYLL.LOK would look like this:

[start of JEKYLL.LOK]
-A:\
-B:\
-C:\
[end of JEKYLL.LOK]

...  The  remote wouldn't be able to access any of  your  drives.
However, if you add the following line:

[start of JEKYLL.LOK]
-A:\
-B:\
-C:\
+C:\AUTO\*.PRG
[end of JEKYLL.LOK]

...  The  remote would ONLY have access to all files ending  with
'.PRG'  in  the AUTO folder of your drive C.  You  can  also  use
wildcards on paths & drives, like this:

[start of JEKYLL.LOK]
-A:\
-B:\
-C:\
+C:\C*.*\*.PRG
[end of JEKYLL.LOK]

The  remote now has access to all folders on your C:\ drive  that
start with a 'C' (Coding,  Comms,  ...)., and all files contained
in  those folders that have a '.PRG' extension.  A somewhat  more
complicated example (assumed drives are A:\, B:\, C:\ and D:\):

[start of JEKYLL.LOK]
-A:\
-B:\
-C:\
-D:\
+D:\UTILS\
-D:\UTILS\SECRET\
[end of JEKYLL.LOK]

This gives the user access to your D:\UTILS\ directory, but locks
out the D:\UTILS\SECRET\ folder inside it.

IV.VI: JEKYLL.FLO
-----------------

The  JEKYLL.FLO  file may contain filenames  that  Jekyll  should
send. It is a simple succession of filenames. If you put a '^' in
front of a file it will be deleted when it has been transmitted.

[start of JEKYLL.FLO]
D:\TEST.PRG
E:\DATA\MUSIC\STING.MOD
^D:\COMMS\MAIL.PKT
[end of JEKYLL.FLO]

V: Jekyll's switches
====================

The   switches  are  used  to  customize  Jekyll  to   your   own
environment,  and  can be passed using either the commandline  or
JEKYLL.CFG. Whichever way you choose to use, the switches must be
preceded by a '-'.

V.I: Toggle switches
--------------------

These switches cater for many different needs.  Most of them  can
be set to either on (1) or off (0).  -logl and -hand can take  on
four different values.

help or ?:     These are no toggle switches,  actually.  You  can
               use them to display the HELP screen.

test0/1:  Enable test mode. Default: 0/off. When you put this on,
          you  can  use Jekyll without connecting -  Jekyll  will
          connect with itself. This way, you can check your setup
          and  adjust it as required without logging in on  BBSes
          all the time.

auto0/1:  Terminate when done. Default: 0/off. This causes Jekyll
          to quit when all files have been sent and received.

cheq0/1:  Check diskspace. Default: 0/off. Putting this switch on
          will cause Jekyll to check whether there's enough  room
          left on the disk before receiving a file. BBSses should
          put this on (cheq1).

hand0/1/2/3:   Set handshake  method.  Default:  2/RTS/CTS.  This
              determines the kind of hardware handshaking Jekyll
          should use. 0 stands for nothing, 1 for XON/XOFF, 2 for
          RTS/CTS and 3 stands for both methods.

host0/1:  Allow host mode.  Default:  1/on.  The host mode allows
          the remote to request files from your drive(s).  If you
          don't want him to, turn it off.

hstm0/1:  HST mode.  Default:  0/off.  This switch should only be
          used  when you have a HST modem,  and are  transferring
          with another HST modem (NOTE:  if you put HST mode  on,
          and the other side doesn't,  HST mode will be activated
          anyway!).

iled0/1:  "Smart" LED's.  Default:  0/off.  This switch should be
          used  by diskbased users (iled1).  It's not  necessary,
          but will improve transfer-convenience.

logl0/1/2/3:   Set loglevel. Default: 3/everything. This sets the
               Level of Log (new spectacular  SF-book,  no,  just
               kidding)   ...   When   put   to   3,   everything
          gets  logged,  when  put to 0 only  severe  errors  are
          logged. 1 & 2 are in-between values.

port[port]:    Sets  the port Jekyll should  use.  Default:  1/ST
               serial.  You can use this switch to transfer along
               the  MIDI  port,  or you can make use  of  the  TT
          serial ports.  1 = ST serial,  3 = MIDI,  6 = Modem #1,
          7 = Modem #2, 8 = serial #1, 9 = serial #2.

nocd0/1:  Don't check carrier.  Default:  0/off.  Turning this on
          will  cause Jekyll not to watch the CD,  which in  most
          cases  means the modems have  a  connection.  Normally,
          Jekyll disconnects when the carrier is gone.

oscr0/1:  Use own screen routines.  Default:  1/on.  With the own
          screen  routines,  the  screen  scrolling  is  somewhat
          faster. If your screen messes up, turn it off.

oser0/1:  Use own RS232 routines.  Default: 1/on. This determines
          whether  Jekyll  should use it's  own,  built-in  RS232
          routines.  If it doesn't work on your machine,  turn it
          off.

pack0/1:  Compress   data.   Default:   1/on.   Turning   it   on
          consumes   as  much  as  60K  of   memory,   but   will
          increase throughput  efficiency  remarkably  on   files
          that  aren't already  packed.  If there is  not  enough
          memory,  data compression will automatically be  turned
          off.

page0/1:  Allow paging.  Default:  1/on.  If you don't want to be
          paged, turn this off.

part0/1:  Delete uncompleted files.  Default:  0/off.  When  this
          switch is on,  all files that haven't fully come across
          are deleted.

term0/1:  Enter  terminal.  Default:  1/on.  This  switch  causes
          Jekyll  to enter a simple (VERY SIMPLE!) terminal  when
          you execute Jekyll without a carrier (see section  V.V:
          "The terminal").

V.II: 'Exist' switches
----------------------

When you receive a file that has the same name as a file in  your
download folder,  Jekyll will ask you whether you want to resume,
delete,  skip or rename the file.  The 'exist' switches will cause
one answer to be the default. They are ...

askx:  Ask resume/delete/skip/rename. This is the default setting.

resx:  Always resume the file.  Jekyll will compare the  incoming
       and   the  already  existing  file.   When   they're   not
       identical,  Jekyll  will delete the existing file &  start
       receiving the incoming.  When they ARE  identical,  Jekyll
       assumes the existing file did not fully come across in  an
       earlier transfer,  and will to append the incoming file to
       the existing file.

delx:  Always  delete  the  existing  file.  Jekyll  will  simply
       delete the  existing  file  on  disk,   and  receive   the
       incoming file.

skpx:  Always  skip the incoming file.  Jekyll will  just  ignore
       the incoming file.

renx:  Always rename the existing file.  The file on disk will be
       renamed,  and the incoming file will be received. The file
       on  disk  (assuming  it's  called  "JEKYLL.LZH")  will  be
       renamed to "JEKYLL.LZ1", "JEKYLL.LZ2" and so forth.

V.III: Variable switches
------------------------

The variable switches are variable, because they require variable
input.  When used,  these switches should be followed by a  SPACE
and another switch denoter ('-'), like: "-blok512 -...".

appl[...]:     This  switch can be used by external  applications
               to write something in the JEKYLL.CFG file.  Jekyll
               simply  skips  this  switch.   Behind  "appl"  one
               should put a 4-char program ID,  like: "applHyde",
               and  behind  that you can put whatever  you  like,
               but make sure it DOES NOT include CR's or LF's!

               Hyde uses this switch to store the path + filename
               of Jekyll.

blok[block  size]:   This is used to set the default  block  size
                     Jekyll should use. it defaults to 512 bytes.

bpsl[baud  rate]:    This   sets  the  baudrate  Jekyll  uses  to
                     calculate whether  the  remote  has   enough
               time left to request a certain file.  This is only
               useful  for  BBSses, and should be passed  on  the
               commandline,   by  the BBS.   When  you  use  this
               switch,  you should also use the 'timl[x]' switch,
               described below.

bpsr[baud  rate]:   This sets the default baudrate.  [baud  rate]
                    may be any of the following numbers:

                         300 for   300 baud.
                        1200 for  1200 baud.
                        2400 for  2400 baud.
                        4800 for  4800 baud.
                        9600 for  9600 baud.
                       19200 for 19200 baud.

cash[cache size]:    This switch sets the cache size.  The  cache
                      size may  not be larger than  65536  bytes,
               and  not smaller than 1024 bytes.  If you set  the
               cache size  to 0,  they're turned off.  The  cache
               size defaults to 16KB (cash16384). If there is not
               enough  memory,  the caches will automatically  be
               turned off.

send[path]:    This  sets  the default path  for  uploading,  or:
               when first opened the fileselector will be  inside
               this path.

recv[path]:    This sets the path for downloads.  Everything  you
               download will be dropped over here.

cout[1st chatlog]:  This sets the path + filename of the outgoing
                    chatlog.  Everything you type gets stored  in
                    this file.

c_in[2nd chatlog]:  This sets the path + filename of the incoming
                    chatlog.  It  contains everything the  remote
                    types.

fill[no.  files]:    This   switch  sets the  maximum  number  of
                     files  that can be requested by the  remote.
                     Useful  for  BBSses.   By  default  one  can
               request an infinite amount of files (fill0).

kbsl[no.  KB's]:    This  sets  the  maximum number of  KB's  the
                    remote side can request.  Again,  only really
                    useful  for BBSses.  Defaults to an  infinite
               number of KB's (kbsl0).

logf[logfile]:    This   sets   the  path  +  filename   of   the
                  logfile,  to  which  Jekyll  will  write  every
                  notable  event  that has  happened  during  the
               transfer (received files,  sent files etc.).  This
               logfile  is  compatible  with  Binkley's   logfile
               format.

nact[no.  minutes]:  This  sets the  amount of time  after  which
                     Jekyll  should  disconnect when  there's  no
                     activity  (no files being sent,  no  chatting
               ...). Defaults to an infinite timeout (nact0).

pagb[HHMMHHMM]:   Set page times.  Default: 00000000/always. This
                  sets the time between  which you may be  paged.
                  The   format   should   ALWAYS   be   HHMMHHMM,
               like:  "pagb07302330".  This allows paging between
               7:30 AM and 11:30 PM.

pagl[length]:  Set page length.  Default: 60 seconds.  This  sets
               the number of seconds the paging should  continue.
               There's a maximum of 60 seconds.

timl[no.  minutes]:    This sets the number of minutes the remote
                       has left,  before Jekyll disconnects  him.
                       Again, should be passed by the BBS.

"user[username]":   This  tells  Jekyll the name  of  the  REMOTE
                    user.  It was meant to be used by BBSses. The
                    quote marks are absolutely  necessary!  Since
               Gemini   'pre-parses'  the  commandline,   it   is
               impossible  to  use  this  switch  correctly  from
               within it.

code[byte]:    This will DLE-encode byte [byte].  This means that
               it (the byte) will not be sent literally:  it will
               be  encoded  first.  This  might  be  useful  when
               working  with  other systems,  who  sometimes  get
               upset by certain bytes.

VI: More Jekyll functions
=========================

Jekyll  features a lot of sub-functions,  like the  fileselector,
the fileviewer,  and the send queue viewer.  If you want to leave
whatever  subfunction,  you can press UNDO,  which will take  you
back to the chat-window.

Also,  when you're inside (for example) the fileselector, you can
directly access the (for example) fileviewer,  you don't have  to
go back to the chat-window first.

Universal keys you can press in all subfunctions are:

Help              : Access help screen
Undo              : Back to chat screen
Cursor Up         : Scroll the window up one position.
Cursor Down       : Scroll the window down one position.
Shift-Cursor Up   : Scroll the window up one screen.
Shift-Cursor Down : Scroll the window down one screen.
ClrHome           : Go  to  top of window (clears screen when  in
                    chat-window).
Shift-ClrHome     : Goes to end of window.
Ctrl-Cursor Up    : Select next music
Ctrl-Cursor Down  : Select previous music
Esc               : Disable chatting, enable auto-disconnect
Ctrl-+            : Play  next  music (GMUS  protocol  should  be
                    available!).
Ctrl--            : Play  previous music (GMUS protocol should be
                    available!).
Ctrl-C            : Enable chatting, disable auto-disconnect
Ctrl-F            : Access local directory
Ctrl-H            : Access remote directory
Ctrl-I            : Abort incoming file
Ctrl-J            : Page remote
Ctrl-O            : Abort outgoing file
Ctrl-Q            : Disconnect
Ctrl-T            : Access send queue
Ctrl-V            : Access view buffer
Ctrl-Z            : Rotate handshake info/remote uses/user name

VI.I: The fileselector
----------------------

The fileselector can be called upon by pressing Ctrl-F.  Your own
chat-window  will  dissappear,  and it will be  replaced  by  the
fileselector.  The current directory will be displayed,  together
with  the size of every file,  it's creation date and  the  file-
attributes.  You can scroll through the list using the cursorkeys
UP and DOWN.

You can press a lot of keys in the fileselector,  to send  files,
to delete them, rename them or view them. A list:

Return    : Send highlighted file. When the highlighted file
            is a directory, Jekyll will enter that directory.
Ctrl-K    : Kill the   current   file.  Jekyll  does  ask  for
            confirmation first.
Ctrl-L    : Load file  into  view-buffer. A message "Loading ..."
            will appear  on the message line (see section  II.II,
            "The statuswindow"),    which   will   change    into
            "Loaded."  when  Jekyll is ready.  You can  now  view
            the file using Ctrl-V (see V.III: "The fileviewer").
Ctrl-M    : This will play the highlighted file, provided that a)
            you have installed the Ultraplayer 2.20 or  GigaMusic
            1.4, and b) the highlighted file IS a music file.
Ctrl-N    : Rename  file. You will be asked to enter the new name
            of the file.
Ctrl-P    : Set  receive directory. This will cause Jekyll to use
            the current directory as receive directory,  i.e. the
            place where all incoming files (as from now on)  will
            be placed.
Ctrl-W    : Enter filename  to  send.  Allows  you to enter  the
            filename  of  the  file that   Jekyll  should  send.
            Wildcards are accepted,  so when  you,   for example,
            enter  "*.*"  Jekyll  will  send  all  files  in  the
            current directory.
Ctrl-X    : Enter   wildcard  for  directory.  This  will  cause
            Jekyll  only to show files that  match  the  entered
            wildcard.

A-Z, 0-9 & '_': These 'normal' keys activate the autolocator. For
            example, when you're inside a 400 file directory, and
            you want to get to a file called "K_AIMB.ACC" you can
            scroll for quite some time,  but an easier way is  to
            press the 'K' key.  This will cause Jekyll to jump to
            the first file in the directory starting with a  'K'.
            Pressing  it again will cause Jekyll to jump  to  the
            next file with a 'K' (perhaps "K_BIMB.ACC").

Alt-(A-Z)  :  Pressing  Alternate  in conjunction  with  a  drive
letter, that drive will be accessed in the file selector.

VI.II: The send queue
---------------------

The  send queue contains those files that still need to be  sent.
It can be accessed by pressing Ctrl-T. The higher the file stands
in the queue,  the sooner it will get sent.  Files can end up  in
the send queue for the following reasons ...

- If  Jekyll  is currently sending a file,  and you want  to send
  another,  it  is added to the queue and sent when  the  current
  file is finished or aborted.

- If  the  remote side requests (see VI.IV:  "The  host  mode") a
  file and Jekyll is already sending a file.

In the send queue window,  on top of the standard keys (mentioned
above) you can press the following keys:

Ctrl-Y   : Kill highlighted file from send queue.  The file  will
           not  be deleted  from your drive,  it will  merely  be
           removed from the send queue,  and therefor it will
           not be sent.

Ctrl-U   : Kills  complete send queue,  so  none  of  the  files
           contained in it will be sent.

VI.III: The fileviewer
----------------------

The  fileviewer  allows  you  to take a  look  at  textfiles  and
documents while transferring, which prevents boredom when there's
nobody to chat with.  It is activated by pressing Ctrl-V, but you
should  first load a file using the fileselector (see  V.I:  "The
fileselector").

Inside  the  fileviewer the standard  keys  are  available,  plus
Ctrl-M,  which  dumps the page you are currently viewing  to  the
other  side.  Don't do this too often,  since the CPS  will  drop
quite considerably!

VI.IV: The host mode
--------------------

The host mode is one of the most fascinating features of  Jekyll.
It allows you to look at the drive of the host,  and request  the
files  you'd like to have.  Likewise,  Jekyll  includes  advanced
methods  of locking out specific parts on your drive  (see  IV.V:
"JEKYLL.LOK").

The host mode can be called upon by pressing Ctrl-H.  The message
line will display:  "<Drive Selector> requested".  After a while,
you  will  be thrown into the drive  selector,  showing  you  the
available drives of the host.  Using the cursor keys Up and  Down
you  can  scroll through the list,  and make  your  selection  by
pressing Return.  Again,  the status bar will  display:  "[drive]
requested", where [drive] is the drive you requested.

Using the cursor keys and Return you can request files,  like  in
the  fileselector.  All  files  that you request end  up  in  the
remote's send queue (see V.II: "The send queue").

Keys to press in the host mode:

Return  : Requests the highlighted file.  If the highlighted file
          is a directory, Jekyll will request that directory from
          the remote, and, after a short pause, enter it.

Ctrl-W  : Request using wildcards.  Jekyll will  ask  you  to
          enter the wildcard to request.

VI.V: The terminal
------------------

Jekyll  features  a  built-in terminal,  that  is  entered  when:
there's  no  carrier,  you execute Jekyll and you have  left  the
switch on (see section V.I: "General switches").

The  terminal  is not to be used as a  full-blown  communications
program like Flash,  Rufus or Trapido, it is merely there so that
you  can make a easy and fast connection with a  friend,  WITHOUT
having to execute one of these full-blown communication programs,
that eat memory and take a long time to load, while all you do is
connect and run Jekyll.

When  you execute Jekyll without a carrier,  and the terminal  is
on, you will see the Jekyll introscreen, and shortly after that:

Welcome to the Jekyll v1.38 Terminal
(c) by vincent Partington, xx/xx/1992
Press HELP for help.

Once inside this terminal, you can press the following keys:

F1     : Send ATD to your modem, which will (in case of a modem that
         understands the Hayes instruction set) pick up the phone.
F2     : Send ATA to your modem, which will then attempt to connect.
F3     : Toggle  autostart.  Normally,  when the terminal notices  a
         carrier,  it will enter Jekyll.  However, if  you  put  the
         autostart off, it won't (logical ... huh?!).
F4     : Set baudrate to 300 baud.
F5     : Set baudrate to 1200 baud.
F6     : Set baudrate to 2400 baud.
F7     : Set baudrate to 4800 baud.
F8     : Set baudrate to 9600 baud.
F9     : Set baudrate to 19200 baud.
F10    : Hang up the modem by dropping the DTR signal.
Alt-Fx : Same as Fx in chat mode, own function key definition
         from JEKYLL.FKS
Ctrl-D : Toggle half duplex/ful duplex
Ctrl-L : Toggle linefeeds
Ctrl-Q : Quit Jekyll
Help   : Display helptext.

VI.VI: Special features
-----------------------

GMUS music loading
------------------

Jekyll  supports the GMUS protocol:  this protocol allows you  to
access music players (like the Ultraplayer II/2.20 and  GigaMusic
1.4)  from within Jekyll.  Using the GMUS protocol you  can  load
music files from Jekyll without having to leave Jekyll!

A  musicfile is loaded in rather the same way as a file  for  the
fileviewer:  inside  the fileselector,  you highlight  the  music
file to load,  and press Ctrl-M. Using the keys Ctrl-+ and Ctrl--
you can check whether this music file houses more songs. Refer to
the documentation supplied with your musicplayer for more info.

JEKYLL environment variabele
----------------------------

Jekyll  uses the environment variable "JEKYLL" to  determine  the
path where it should look for it's configuration files. This way,
you  can  put Jekyll's configuration files in  directories  other
than Jekyll's home dir. There are several programs in the PD that
allow  you to use environment variables.  Gemini &  NeoDesk  also
allow  you  to  enter  environment  variables.   Refer  to  their
documentation for more info on that.

Return code
-----------

Since v1.32 Jekyll always returns a return code. This return code
is the total amount of kilobytes that have been transferred during
the last session. This includes files that were sent via the
command-line, the FLO-file or file-selector and those requested via
the host-mode. This value can be used by shell-programs in BBS's to
recalculate the access levels for a user. So please note that it is
NOT an error level!

VII: Shareware message
======================

Shareware  is  a concept that enables you,  the user,  to  try  a
program for free, see if you like it and only pay for it when you
do.  This does NOT mean you can use a program for weeks &  weeks,
and  afterwards throw it away without paying for  it,  since  you
"won't  be  needing  it any longer.",  or that you  can  enjoy  a
shareware  game for months,  but get stuck at the dwarf with  the
candle  and thus find the game frustrating enough not to pay  for
it!  See  it from the other side:  when you do pay  for  it,  the
author might send you the solution ...

Jekyll is the result of over 8 months coding,  listening to other
users,  writing  manuals and implementing new  features,  and  we
think 25 Dutch guilders is a very reasonable fee.  You should pay
that amount of money (or any amount you feel is appropriate) when
you  are making frequent use of Jekyll.  Transfer that  money  to
giro/postbank-account nr.  6347972.  If this is an  international
transfer  please use an electronic 'swift'-transfer as  the  bank
otherwise charges nearly half of it as a transfer fee.

Please do,  it's not just the money, it's the feedback that keeps
programmers going!

VIII: Copyright notice
======================

Jekyll  may be freely copied and spread as long as you  do  _NOT_
charge  anything for it,  and keep all the files in  the  archive
together! It should _ALWAYS_ contain:

JEKYLL.TTP
JEKYLL.DOC
HYDE.PRG
HYDE.RSC
README.138

If  you want to ask money for Jekyll in any way,  be it in  a  PD
library,  on  a  disk  magazine or on a disk  that  goes  with  a
magazine,  this  is  can  only be done  without  prior  _WRITTEN_
permission  of  the  author,  i.e.  Vincent  Partington.  If  you
refrain  from  doing so we will not hesitate to  undertake  legal
action! And believe me: we will.

For PD-libraries the following arrangement _CAN_ be made: You can
sell Jekyll for any price you like,  as long as the author,  i.e.
Vincent Partington,  gets at least 50% of the _PROFITS_, i.e. the
price minus your expenses.  Those expenses can be no more than  a
reasonable amount of money for the disk, package and postage.

We're  very sorry we have to be this harsh,  but if  PD-libraries
start  selling  Jekyll at the price of 10 pounds  (that's  about
the  shareware donation PLUS the disk it's on!)  without  sending
us any of the money we tend to get rather pissed-off!

IX: Disclaimer
==============

When you use this program, you do so at your own risk! Any damage
done  to either you hard- and/or software through the use  and/or
misuse of Jekyll is considered to be _YOUR_OWN_ fault!

However,  we both use Jekyll a lot,  and both find it a  reliable
and  solid  piece  of work.  And since we  didn't  encounter  any
serious  bugs  in any of the previous  releases,  we  think  it's
unlikely  we'll ever find one in this version,  or in any of  the
versions that is still to come.

If you don't agree with the given conditions,  refrain from using
Jekyll,  and  find  yourself another  full-duplex  file  transfer
protocol.

X: Credits (from Vincent)
==========

Credit  should  go  to  the following people  from  whom  I  have
learned things or borrowed pieces of code:

- Erno Meffert and Jon Webb for their sources and docs on CRC's.
- Chuck Forsberg for his docs about X-,  Y- and for Zmodem itself
  ofcourse!
- Jacob Ziv  and  Abraham  Lempel  for  their  great  compression
  alghorithms (LZ77 and LZ78).
- Terry Welch for his LZW-packing algorithm.
- Mark Nelson for his LZW-packing routine I use in Jekyll,  after
  having modified it a little bit.
- Jankowski, Reschke and Rabich for their great ProfiBuch.
- Ir. Ammeraal for his very clear books on C, ANSI C and C++.
- Whoever made the Xbios-music I use as paging-music.

XI: Greetings (from the both of us)
===================================

I,  Vincent Partington,  would like to greet the following people
who have supported me during the whole project,  who have  giving
useful suggestions:

- Pascal Haakmat for his suggestions,  help, support, hints, Hyde
  and these docs!
- Joop  Koopman  and Erno Meffert for showing so  much  trust  in
  Jekyll and using it in their BBSes.
- Theo  Runia  for  updating  QuickBBS  to  v1.08  -  and  hereby
  supporting Jekyll.
- Gijs  v/d  Hammen for his critical  remarks,  especially  those
  concerning screen layout. Frain lives on!!!
- Arjen Wagenaar, Folkert van Heusden, Diederik Hoogenboom, Mario
  van  den Heuvel,  Marco Dijkman and Koos Kuil for  beta-testing
  and suggestions.
- Steve Caple,  Mark Matts,  Keith Frisby,  Steve  Basford,  Jeff
  Seifert, Paul Baker and many, many more for their useful hints.

And,  although  I'm way out of line here,  I - Pascal  Haakmat  -
would like to greet some people as well:

- Vincent Partington for lot's of hints and tips.
- Olaf  Meisiek  for his  MyDial  routines,   and  his  brilliant
  resource editor Interface.
- Marike Simons.

XII : Which BBSes use Jekyll?
=============================

Following is a list of all the BBSes that I know support Jekyll.
If your BBS also supports Jekyll and you feel that your BBS should
be put in this list, drop me a netmail stating your name, the name
of your BBS and the international telephone number to your BBS and
I'll put your BBS in the list.

BBS                         SysOp                   Telephone number
--------------------------------------------------------------------
68000 Subsoft BBS           Harrie Beuvink          +31-53-777552
BearBoard QuickBBS ST       Ton Ketting             +31-10-4840224
CMS Spijkenisse             Ron de Reus             +31-1880-25521
Dutch Mountains QuickBBS ST Marcel Sacksen          +31-5723-1730
QuickBBS ST Arnhem          Erno Meffert            +31-85-644262
QuickBBS ST Leeuwarden      Theo Runia              +31-58-153849
QuickBBS ST Mergelland      John Nelissen           +31-43-251127
Star Communications         Jack Wilbers            +31-46-521353
ST QuickBBS Haarlem         Joop Koopman            +31-23-340077
Willie's BBS                Koos Kuil               +31-5978-18087

======================== Appendices follow ======================

Appendix A: Key overview
========================

This appendix contains a list of all keys used by Jekyll,  with a
short description.

Keys you can press anywhere
---------------------------

Help              : Access help screen.
Undo              : Back to chat screen.
Cursor Up         : Scroll the window up one position.
Cursor Down       : Scroll the window down one position.
Shift-Cursor Up   : Scroll the window up one screen.
Shift-Cursor Down : Scroll the window down one screen.
ClrHome           : Go to top of window (clears screen when in  chat-window).
Shift-ClrHome     : Goes to end of window.
Ctrl-Cursor Up    : Select next music.
Ctrl-Cursor Down  : Select previous music.
Esc               : Disable chatting, enable auto-disconnect.
Ctrl-C            : Enable chatting, disable auto-disconnect.
Ctrl-F            : Access local directory.
Ctrl-H            : Access remote directory.
Ctrl-I            : Abort incoming file.
Ctrl-J            : Page remote.
Ctrl-O            : Abort outgoing file.
Ctrl-Q            : Disconnect.
Ctrl-T            : Access send queue.
Ctrl-V            : Access view buffer.
Ctrl-Z            : Rotate handshake info/remote uses/user name.

Keys that only work in the fileselector
---------------------------------------

Return        : Send the highlighted file.
Ctrl-K        : Kill highlighted file.
Ctrl-L        : Load  a  file into the fileview buffer,  which can  be
                viewed by pressing Ctrl-V.
Ctrl-M        : Load music.
Ctrl-N        : Rename highlighted file.
Ctrl-P        : The current path will become the receive path.
Ctrl-W        : Enter a file to send, using wildcards.
Ctrl-X        : Enter an wildcard to use on the directory.
Alt-(A-Z)     : Go to drive (Alt-A takes you to drive A, etc ...).
A-Z & 0-9 & _ : Autolocator.

Keys that only work in the fileviewer
-------------------------------------

Ctrl-M        : Dump page you are currently viewing to the other side.

Keys that only work in the send queue
-------------------------------------

Ctrl-Y        : Kill highlighted file from send queue.
Ctrl-U        : Kill all files in send queue.

Keys that only work in the host mode
------------------------------------

Return        : Request highlighted file.
Ctrl-W        : Request file using wildcards.
A-Z & 0-9 & _ : Autolocator.

Appendix B: Troubleshooting guide
=================================

Problem:  Jekyll works fine from the desktop, but fails to launch
          when executed from a terminal program.

Solution: This  is  probably due to lack  of  sufficient  memory.
          When you call Jekyll from a terminal, you need at least
          1  megabyte  of memory,  depending on the size  of  the
          terminal  program.  You can also try to switch off  the
          caching  (using  cash0)  and  the  compression   (using
          pack0), which gives you some 60 KB's of extra memory.

Problem:  Jekyll's compression doesn't work.

Solution: Did  you  make  sure you turned  compression  on  using
          'pack1'? If  you did,  you probably only  send  already
          compressed files,  and these files can't be  compressed
          any further by Jekyll's compression algorithm.  Already
          compressed files can be recognized by their  extension,
          which mostly is .LZH, .ARC, .ZIP, .ZOO or .ARJ.

Problem:  Jekyll always quits after a transfer, but I didn't turn
          on terminate when done, 'auto1'.

Solution: The other side may have it turned on,  and it overrides
          your setting.

Problem:  The drive keeps whirring.

Solution: If you have turned on the smart LED's switch 'i1'  this
          is  normal:  it keeps TOS from constantly engaging  the
          drive motor,  which needs time. Jekyll simply keeps the
          motor on at all times.

Problem:  The screen gets messed up.

Solution: Turn off the own screen routines, using switch 'oscr0'.

Problem:  I've  set  the block size to [xx]  bytes,  but  I  keep
          receiving  with a block length of [yy]  bytes!  Sending
          does go okay, though.

Solution: This is normal.  When the remote sets his block size to
          2048 bytes,  he will send 2048 byte blocks, and receive
          with  the block size you specified,  whatever that  may
          be. In other words: the block size's on both sides work
          completely independant from eachother.

Problem:  Jekyll  doesn't work under MiNT or MultiTOS!  /  Jekyll
          does hardly work under MiNT or MultiTOS!

Solution: We have increased MiNT / MultiTOS compatibility in this
          new version,  yet it still doesn't work  100%.  Whether
          this is because of Jekyll,  TOSWIN or the speed of  the
          ST  we don't know.  BTW,  Jekyll _does_ transfer  under
          MiNT, however the display gets messed up. Also remember
          to put off the own screen routines (oscr0).

Appendix D: Examples
====================

Some examples might be useful to clear things up for you.  All of
these examples are seriously meant,  and can help you greatly  in
setting up your Jekyll. The arrows ('->') should not be included.

Example setup for HST users
---------------------------

Since   HST's   aren't   capable   of   sending   and   receiving
simulteaneously,  Jekyll includes a HST mode,  that allows you to
use  Jekyll  with HST's anyway.  Jekyll will then  send  a  file,
receive one, send one, etc.
[Example JEKYLL.CFG]
-hstm1
-recv[receive path]
-send[send path]
-logf[logfile]
[End of example]

Example setup for BBSses
------------------------

To  integrate  Jekyll  into  your BBS,  you do  need  to  have  a
reasonable amount of memory,  because Jekyll needs about 200K and
BBS programs tend to be rather big.

Jekyll  has  a lot of switches that enable you to  calculate  the
download time, and much more.

Firstly, you create a JEKYLL.CFG file looking like this:

[Example JEKYLL.CFG file]
-host1                 -> host mode on
-on5                   -> timeout after 5 minutes
-recv[receive path]    -> Jekyll inbound area; see below
-logf[logfile]
[End of example]

This JEKYLL.CFG file has the host mode enabled,  so that the user
can  request  files.   However,   if  your  BBS  program  is  not
sophisticated  enough to pass all the parameters required  for  a
good  usage of the host mode,  it might be better to turn it  off
(switch  'host1'  on  the  first  line  should  be  changed  into
'host0').  Also remember that when you put the host mode on,  the
user has access to all of your drives;  so you'd better create  a
good JEKYLL.LOK file.

Then  you create a JEKYLL.BAN file,  looking like this  (this  is
only a proposition;  but to keep things standard it might be best
to use this proposition):

[Example JEKYLL.BAN file]
You are connected to the Super BBS, online 24h a day!

-> some room for advertisement <-
System operator: John Smith
FidoNet address: 1:1/1
HaasNet address: 20:20/20
-> all your other addresses here <-[End of example]

This JEKYLL.BAN file is not necessary,  but it's nice to have it,
being a BBS.

Having  managed it so far,  you still have to pass the  following
parameters to Jekyll:

- the files to send
- the time the user has left
- the number of kilobytes the user can request
- the number of files the user can request
- the baudrate at which the user got a connection

The  last three parameters are only useful when you  have  turned
the host mode on.  The commandline that the BBS passes to  Jekyll
should thus be:

-timl[users  amount of time left] -kbsl[KB's  requestable   (ONLY
when host mode is on] -fill[no.  files] -bpsl[baudrate] [files to
send]

or:

-timl53 -kbsl900 -fill40 -bpsl9600 GEMINI12.LZH GEMUTLS.LZH

Which will let Jekyll send the files GEMINI12.LZH and GEMUTLS.LZH
from the current directory.  If you turn the host mode  off,  you
won't  be  needing  the '-kbsl900',  the  '-fill40'  and  the  '-
bpsl9600' switches.

Files can also be sent using the JEKYLL.FLO file:  this gives the
user  an unlimited amount of files to request(the maximum  length
for the command line is 124 characters). The BBS program should then write a
JEKYLL.FLO file,  containing all the files (with full path).  For
example:

[start of JEKYLL.FLO]
E:\BBS\AREAS\GEMINI\GEMINI12.LZH
E:\BBS\AREAS\GEMINI\GEMUTLS.LZH
[end of JEKYLL.FLO]

After the transfer, the BBS program should check whether the user
sent some files,  or not. If the user did indeed send some files,
there are two things you can do. Either you ...

1) ...  make a special Jekyll directory,  where all of the  files
   that are sent using Jekyll arrive (you move them to the  right
   areas later on), or ...

2) ...  make a program/get a program that allows the user to move
   the  sent file from the Jekyll inbound directory to a  certain
   file-area afterwards.

In either case the user should be asked for a description of  the
file he just uploaded.

Appendix D: Update history
==========================

Jekyll  has  evolved since version 0.91beta,  and  lot's  of  new
features have been added from version to version ...  The  update
history (in chronological order)!

***

Jekyll v1.38, released 22/11/1992, some bugs fixed.

-       Major RTS/CTS-bug in serial routines fixed
-       Some bugs in Hyde fixed
-       BBS-list started
-       Now works OK on TT (You may want to use -oscr0 and -oser0)

***

Jekyll v1.37,  released 18/11/1992, especially released for the
HCC-days at Utrecht, 20 & 21/11/1992. Just 1 bug fixed and a few changes
in v1.32 and v1.36 have finally been mentioned.

changes finally mentioned:
-       Cache size can now go up to 64K and caches are now
        dynamically allocated
-       4K-Caches for (chat)logfiles
-       Jekyll now returns a return-code, it is the amount of
        kilobytes sent this can be useful for access level-calculations
        if a BBS uses the host-mode

-       Host-mode now by default OFF, some sysops complained about
        it being by default on
-       Bug fixed that caused Freeze Dried to run Jekyll a few times
        when you installed it with an autostart-string and that
        caused QuickBBS to sometimes get incorrect descriptions
        like "Jekyll v1.32" etc.
bugfix:
-       A small bug in the (chat)log-caches fixed

***

Jekyll v1.36,  released 04/11/1992,  eighth release version.  Not
many new features, bugs fixed. Development is stabilising.

The new features in v1.36 are:

-       Progress bar
-       GMUS-protocol  support:  select music files for  GigaMusic  and
        Ultraplayer from within Jekyll! (Ctrl-M, Ctrl-Cursors)
-       Switches have been reassigned to four letters so their
        meaning is clearer
-       Now MiNT/MultiTOS compatible
-       Chatlog, saves everything you and the remote type in a file  (-
        cout, -c_in & -chat)
-       Environment variable for configuration (JEKYLL=)
-       Files can be automatically deleted when succesfully sent (^..)
-       Screen routines improved, now work a lot better when Jekyll's
        own routines have been turned off, no more juddery scrolling
-       TT-ports can be used (-port)
-       Many bugs fixed and other small features added....

***

Jekyll v1.32, released 29/06/1992.  Seventh release version,  now
with    host-mode ... Why is it, everytime we THINK Jekyll's done
with, it isn't? But it's really finished now ... :-/ ...

The new functions in Jekyll v1.32 are:

-       A host-mode: one side can view the directories  of  the
        other side and even request files from it!!! (Ctrl-H)

        This host-mode can be controlled in several ways:
               - path/file-locking (JEKYLL.LOK)
               - limit amount of time for requests (-ol and -ob)
               - limit amount of Kb's that can be requested (-ok)
               - limit amount of files  that  can  be  requested
                 (-ov)
-       A yell/page-function (CTRL  + J)  with  page-times  for
        BBSses (-ov).
-       Hyde  has been completely redesigned and re-written  in
        C. As a direct result it finally works.
-       The documentation  has been completely rewritten:  READ IT!
-       Some timeouts that can be useful for BBSes:

               - amount of time left to user (-ol)
               - disconnect after a certain period of no activity
                 (-on).
               - auto-locator in file selector
-       Deleting and renaming files is now possible from within
        the fileselector (CTRL + K and CTRL + N).
-       Connection info can be redisplayed any time (CTRL + Z).
-       Version number of Jekyll is now sent to the other  side
        (Remote uses ...).
-       The text in the file JEKYLL.BAN is  sent to  the  other
        side  via the chat window after   connection.  A   BBS
        can put some info in this file.
-       Auto-disconnect (-t) can be turned off (CTRL + C).
-       Jekyll prints the estimated time  left  for  the  files
        being sent/recvd.
-       Progress-counters for resume and view-buffer-loading.
-       View buffer is quicker with long files
-       You can now dump a screen of the view  buffer  to   the
        remote (CTRL + M).
-       A small clock in the upper black bar.
-       Duplex- and linefeed toggle in  terminal (CTRL + D  and
        CTRL + L).
-       Finally works OK on TT (I hope!!!!).
-       Bug fixed in calculation of free space on disk.
-       Switch -oq removed.
-       Switch -or and -op are now ON by default!
-       Switch -oh is set to 2 (RTS/CTS) by default!
-       A lot of little things and bugs fixed

***

Jekyll v1.20, released 25/04/1992. Sixth release   version,   now
with data compression!

-       Real-time data compression.
-       TT-bugs fixed.
-       Possibly better CPS-rates at high bps rates.
-       Jekyll v0.94beta, v0.95beta, v1.00  and  v1.20  are   all
        compatible!    Jekyll v0.91beta and v0.93beta   are   now
        considered obsolete.
-       Diskspace checking is now right.
-       Switches -e and -l removed because they were useless.
-       Source made easier to port (I think :-)

***

Jekyll v1.00, released 03/04/1992. Fifth release   version,    no
longer beta!

-       Own RS-232 routines that allow for a faster transfer   at
        high bps rates and have a built-in RTS/CTS patch.
-       Own screen routines that make the screen display a lot
        better.
-       Send and receive caches that will prevent the drive  from
        constantly reading and writing data. This way, the CPS at
        high bps rates may also increase and you won't be  nagged
        by the drive no longer.
-       Logfile  output has been improved (both in  quantity  and
        quality!)
-       All kinds of other bugs fixed and features updated.

***

Jekyll v0.95beta, released 15/03/1992. Fourth release    version,
some things changed:

-       Block size is now configurable.
-       Baud rate is configurable.
-       Fall-back in case of an error: when an    error    occurs
        Jekyll will switch to 128 byte blocks.
-       Default block size set to 512 bytes instead of 1024 bytes.
-       Setup tester added.

This version IS compatible with 0.94beta.

***

Jekyll v0.94beta, released 03/03/1992.  Third   release  version,
feedback  has  finally started! Lot's of things have changed   in
this version:

-       Fileviewer which enables you to view through files  (also
        through 1st Wordplus files!).
-       Some protocol updates.
-       Some rather major code cleanups.
-       Send queue viewer.
-       Intro screen has been changed.
-       This doc has been COMPLETELY  rewritten,   as  lot's   of
        peoples had trouble installing Jekyll.
-       It is now possible to abort Jekyll's handshake  procedure
        by pressing CTRL + X several times.
-       Simple terminal has been added.

And please note the fact that EVERYTHING you do is multitasking!
Viewing, loading of a file to view ... It's fully multitasking!

As version 0.93beta was incompatible with version 0.91beta, this
version is incompatible with 0.93beta ... Sorry guys!

***

Jekyll v0.93beta, released 15/02/1992. Second  release   version,
incorporating, as new stuff:

-       Fully multitasking item selector.
-       Smart resume added.
-       Some bugs fixed, protocol updated.
-       Name changed from Jeckyll to Jekyll (thanks to Bart   van
        Herk for this ...)

Version 0.93beta is NOT compatible with version 0.91beta!

***

Jeckyll v0.91beta, released 01/02/1992. The first beta version to
be released on QuickBBS ST Arnhem (2:281/801).

Appendix E: Jargon guide
========================

In no other field of computer-related activity jargon is used  so
much  as in the modem-world.  For those new to modeming  a  short
list with descriptions of possibly vague words is given ...

A
-
ASCII     ASCII   stands   for   American   Standard   Code   for
          Information  Interchange,  and is (as the name says)  a
          standard  way  of saving data.  On  every  computer,  a
          certain  letter  has a number.  The  capital  'A',  for
          instance,  has number 65 in ASCII.  And like that,  all
          numbers  between  32 and 128  have  been  standardized,
          allowing  for  a great compatibility (an ST  owner  can
          call a IBM BBS, for instance).

ATA       On  a  modem  using the  Hayes  commandset,  it  means:
          Answer  the phone.  Every Hayes command is preceded  by
          AT (ATtention).

ATD       Lets  the  modem dial,  or,  when no  number  has  been
          specified,  pick up the phone. This only works when the
          modem supports the Hayes instruction set!

Autolocator    The    autolocator   was   implemented   in    the
               fileselector to easily locate a file. If you press
          a key (for instance,  the 'J'), Jekyll will jump to the
          first  file  that starts with a 'J'.  If you  press  it
          again,  Jekyll will jump to the next file with a   name
that starts with a 'J'.



B
-
Banner    A text you want to display upon connection.

Bpsrate   The  number  of bits that are transferred  through  the
          line every second (Bits Per Second).

C
-
Cache     Jekyll's  caches  save and load everything into  memory  before
          saving/loading it to/from disk.  This causes the drive to work  only
          scarcely,   which  is  much  nicer  to  hear  than  the
          usual rattle and shake.

Chat      Chatting  is talking to eachother using  the  keyboard.
          You type something, the remote types something, etc.

Commandline    Inherited   from  MS-DOS,   the  ST   provides   a
               convenient  way of passing variables  and  strings
          (like filenames, switches ...). When, on the desktop,
you double-click on a program with the extension ".TTP"  (Tos Takes Parameters),  the desktop  comes  up
          with  a  box  asking you to fill  in  the  commandline.
          Depending  on the application,  this can  be  anything,
          ranging  from the name of the fourth vice-president  in
          America, to the number '8'.

Compression    Compression is used to shrink files,  without loss
          of   data.   Compression  is  done  through   a   very
          complicated mathematic algorithm,  and as the algorithm
          becomes  more complex the compression will get  better.
          However,  the  time  required  to  compress  will  also
          increase.  Jekyll uses LZW compression,  which has just
the right balance between speed and efficiency.

CTRL      Short form of CONTROL. Used to indicate the CONTROL key
          on your keyboard has to be pressed.

Cursorkeys     The  cursorkeys are the keys used to  control  the
               cursor.   They  are  the  second  block  on   your
          keyboard,  together with the HELP and UNDO keys. INSERT
          and CLR-HOME are also placed here.

D
-
Desktop   The  desktop  is a program that allows  you  to  easily
          delete,  copy and rename files.  It was,  together with
          the operating system (TOS and GEM) burned into your ST,
          and  is  ALWAYS  present (there's  no  system  disk  or
          whatever required).

Directory    Either  a  'folder' on a  disk,  or  just  the  main
             directory (contents).

DTR       Data Terminal Ready.  Most modems are set up to hang up
          when the DTR gets lost (in other words:  when you reset
          or  turn off the computer).  A keyboard reset will  not
          cause the DTR signal to get lost!

F
-
File-attributes     Another thing inherited from MS-DOS.  If  you
                    look at a file on the desktop,  you only  see
          it's name,  and whether or not it's a program. However,
          internally,  the operating system keeps some  invisible
          attributes,  like whether the file was copied,  hidden,
          read-only, etc ...

Fileselector   The  GEM  fileselector probably  is  a  well-known
               entity.  It would have been nice to incorporate it
          into  Jekyll,  but that's just  simply  impossible.  So
          Jekyll has it's own fileselector,  of which a  complete
          description   can  be  found  in  section   V.I:   "The
          fileselector".

Full-duplex    A  full-duplex  modem is capable  of  transferring
               both  ways  across  (simulteaneously  sending  and
          receiving).  Jekyll  is a protocol that supports  full-
          duplex transfers.

Functionkeys   The  top  row  of your  keyboard  consists  of  10
               function keys,  labeled F1 to F10.  Their function
          depends on the program you're using:  in First WordPlus
          they can be used to set certain text-styles,  in Jekyll
          the user can define his own function keys (see  section
          IV.III: "JEKYLL.FKS").

H
-
Handshake    Every  Jekyll  tranfer is preceded  by  a  handshake
             between  the two Jekyll's.  During  this  handshake,
          the  two  Jekyll's get to  'know'  eachother,  and  the
          functions  each Jekyll supports.  Handshaking  is  also
          used on hardware level,  to tell the other computer  it
          has  to  stop sending data until the current  flow  has
          been processed.

Hayes     A company that builds modems, and that came up with the
          idea  of  creating a little programming  language  that
          enabled easy access to your modem.

Hyde      This program is the graphical shell around Jekyll: it allows
          you to easily configure Jekyll without losing track and
          sanity. It's really tremendous, works quick and simple,
          and oh yeah, I wrote it ...

L
-
Locked paths   Since  Jekyll  features a host mode  (see  section
               V.IV:  "The host mode"), a good protection of your
          drives is necessary.  Therefore the file JEKYLL.LOK was
          invented (see section IV.V: "JEKYLL.LOK").

M
-
Magics    This name might be misleading,  but no other one was
          found. The 'magic' option in Jekyll allow you to define
          a  number  of words that are converted  into  something
          else  when you type them.  You might wish  you  convert
          "shit"  into  "***!*!J&$(&$!".   See  section   IV.II:
          "JEKYLL.MAG".

P
-
Page      "Paging" is often called "Yelling", and yells for/pages
          the  remote to come to the console,  so you can have  a
          chat with him.

R
-
Remote    "Remote"  refers  to 'the other  side',  whatever  'the
          other  side' may be (sysop,  your friend,  small  furry
          creature from Alpha Centauri B).

S
-
Shareware    Shareware is a kind of software that  is  completely
            free  to   try and use,  but if you use  the  program
          regulary,  you  are supposed to pay a small  amount  of
          money  to the author.  In Jekyll's case,  this  is  fl.
          25,- dutch guilders.

Switches  These are used to make Jekyll behave the way you'd like
          it to behave. Jekyll is HIGHLY configurable using these
          switches. Switches can be passed using the commandline,
          or  the  configuration  file  JEKYLL.CFG  (see  section
          IV.I: "JEKYLL.CFG").

W
-
Window    You  will probably know windows from the  GEM  desktop,
          and  various other programs.  When used in  conjunction
          with Jekyll every single part of the screen is called a
          window.

Wildcards     Wildcards, also  called   'jokers', are used when you want to send a lot  of
          files.   The  '*'  stands  for  zero  or  more   unknown
          characters,   and   a  '?'  stands  for   one   unknown
          character.   For   example, 'ME?AROID.*'   applies   to
          'MEGAROID.PRG',      'MEZAROID.PRX',     'MENAROID.BL',
'METAROID' etc.

X
-
Xmodem    An  archaic  and obsolete protocol,  which  only  still
          exists  because it works on EVERY machine.  It is  very
          slow and extremely userUNfriendly.

Z
-
Zmodem    Used  to  be one of the  best  protocols  around.  Used
          to be marveled at for it's speed and  efficiency.  Used
          to be _THE_ big thing in modem-industry. Used.

