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

         Written & revised by Pascal Haakmat, 18/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

    Appendix A: Key overview ....................... 29
    Appendix B: Troubleshooting guide .............. 25
    Appendix C: Examples ........................... 26
    Appendix D: Update history ..................... 29
    Appendix E: Jargon guide ....................... 32

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.37 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.137

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.

======================== 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.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.

