@DATABASE "Cydal Filedoor Documentation"
@NODE MAIN "Table of Contents"
@FONT times.font 18
                 S H A R E W A R E

       Cydal Filedoor - CD-ROM filedoor for MAX's BBS V1.54
       Another Kickstart 2.04+ only program
       Edited, makefiled, compiled and debugged with SAC/C Development System
       ( @{i}I  @{ui}bought the original! )

  @{"Terms of use" LINK terms}    @{"Features" LINK features}    @{"Installation" LINK install}    @{"Usage" LINK use}

        @{"Addresses" LINK reach}    @{"The future" LINK future}    @{"Tech notes" LINK tech}
@ENDNODE

@NODE terms "Terms of use"
@{FG FILL}Fuck them
and their law!
    - The Prodigy

(What kind of sh*tty lyrics is that anyway??)
@{FG TEXT}
----

This distribution is @{FG SHINE}Copyright © 1995 Claus Dyring Jensen@{FG TEXT}
This text defines the terms of use and redistribution.

The filedoor program is shareware. The only reasons why I ask anything for
the program are:

@{FG SHINE} * Nisse and I have spent a neat amount of money discussing this porgram
   over telephone and on Nisse's MiCrO BBS.

 * I've spent @{i}TIME + EFFORD @{ui}on programming this.@{FG TEXT}

@{i}The money@{ui}

I have no experience with shareware programs, and so I don't really know
what directions to give you. Just make sure I get >50 DKR (danish
currency) or a similar amount in any major currency. If you send cash in
the mail know this: 1. It is probably illegal. 2. The danish mail service
is very reliable. 3. I won't take responsibility for anything lost in the
mail. Make sure the money isn't visible when the envelope is held up to
the light. Other ways of making the money available to me are all ok.

@{i}The disk@{ui}

When you send the money also enclose a disk. If you are a nice guy,
put something cute from your harddisk on it too..:-) I will return this
disk to you with a bugfixed/enhanced program later. (The filedoor is not
crippled or unfinished, I'm just still nursing my "baby"..:-)

Also put a BBS logo on the disk and you won't have to look at the Nisse's
MiCrO logo every time someone uses the door or get at filelist.

Note: I will only return the disk if you send enough money to pay for the
postage. Keep in mind that the banks charge hideous prices for exchange!

Note 2: I will put the needed packages mentioned in the installation
instructions on the disk for you. Yup..

@{i}The boring standard disclaimer@{ui}



  THERE  IS  NO  WARRANTY  FOR  THE  PROGRAM,  TO  THE  EXTENT  PERMITTED BY
 APPLICABLE  LAW.   EXCEPT  WHEN  OTHERWISE  STATED IN WRITING THE COPYRIGHT
 HOLDER AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF
 ANY  KIND,  EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 THE  ENTIRE  RISK  AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
 YOU.   SHOULD  THE  PROGRAM  PROVE  DEFECTIVE,  YOU  ASSUME THE COST OF ALL
 NECESSARY SERVICING, REPAIR OR CORRECTION.
 
  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
 ANY  COPYRIGHT  HOLDER, OR ANY OTHER PARTY WHO MAY REDISTRIBUTE THE PROGRAM
 AS  PERMITTED  ABOVE,  BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
 SPECIAL,  INCIDENTAL  OR  CONSEQUENTIAL  DAMAGES  ARISING OUT OF THE USE OR
 INABILITY  TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
 DATA  BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
 OR  A  FAILURE  OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
 SUCH  HOLDER  OR  OTHER  PARTY  HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 DAMAGES.

@ENDNODE

@NODE features "Why use this product?"
@{FG FILL}Commerce is our goal here at Tyrell,
More human than human is our motto
    - Eldon Tyrell
@{FG TEXT}
----

A short list of features:

 * Very @{FG SHINE}nice interface design@{FG TEXT}, easy to use and understand

 * Easy to use @{FG SHINE}file tagger@{FG TEXT}

 * Use @{FG SHINE}XPR libraries@{FG TEXT} for download

 * Let users @{FG SHINE}evaluate quality@{FG TEXT} of files

 * @{FG SHINE}Checks@{FG TEXT} if CD-ROM is actually on-line

 * Can be used with @{FG SHINE}one or more@{FG TEXT} CD-ROMS and CD-ROM drives

 * @{FG SHINE}Never@{FG TEXT} pops up nasty requesters

 * Amiga-style @{FG SHINE}wildcard search@{FG TEXT} for filenames/descriptions

 * One-line @{FG SHINE}short@{FG TEXT} descriptions supported

 * @{FG SHINE}Long@{FG TEXT} descriptions in FILE_ID.DIZ and .README supported

 * Viewing @{FG SHINE}contents@{FG TEXT} of lzx lha lzh & arj archives supported

 * Allows users to @{FG SHINE}enter@{FG TEXT} dms and lha @{FG SHINE}archives@{FG TEXT} and DL single
   files from inside them

 * @{FG SHINE}Twit@{FG TEXT} proof

A few drawbacks:

 * @{FG SHINE}Ratio@{FG TEXT} is ignored because MAX isn't aware of XPR downloads taking place
   The XPR support is really a hack

 * @{FG SHINE}Untested@{FG TEXT} with multinode systems

 * Your users will @{FG SHINE}never@{FG TEXT} want to use anything else :-)
@ENDNODE

@NODE install "How do I install the door?"
@{FG FILL}I've got you
under my skin
    - Nat King Cole?
@{FG TEXT}
----

This is the only hard part. And in my humble opinion it isn't all that hard!
Currently the door needs a few assigns to work. Also you have to create an
amigados script to make some files needed by the door. The door uses its
own index files instead of the ones on the CD-ROM itself. And of course you
have to make some changes inside MAX too!

Let's go over it step by step:

                               *  *  *

First, the assigns. The filedoor needs some temp space. You may or may not
want to have this in RAM: or on harddisk depending on how much memory you
have. Insert something like this in your user-startup:

@{FG SHINE}  Assign CydalTemp: ram:t/@{FG TEXT}

Also you need an assign pointing to the place where you keep the bbs files.
(This assign will probably already be present. It is named "BBS:")
In this directory you need to make a directory named "CydalDoor". Inside
this directory subdirectories will be created later, one for each CD you
want to use with the door. Also you must create a subdir inside this
directory named "users". The files tagged by users will be remembered
in these files in case they loose carrier or just want to download them
some other time instead of immediately.

                               *  *  *

Next, you need to put some files in "ENVARC:". These will of course also be
copied to "ENV:" every time you boot. These files tell which device is used
with each node of the BBS. You would probably have a file named

@{FG SHINE}  CydalFileDoorSerial1@{FG TEXT}

containing the string

@{FG SHINE}  "serial.device 0"@{FG TEXT}  (Don't quote the string in the actual file!)

To indicate that node one of the BBS uses the serial.device and the default
serial port, which is usually the internal one. This will be needed for
downloads.

Also for each XPR library you must make a file containing the init-string.
The initstring should be named like this example for xprzmodem.library

@{FG SHINE}  xprzmodem.bbs@{FG TEXT}

This is to avoid trouble using different strings for ingoing/uotgoing calls.

                               *  *  *

Ohh. Let me think, there must be something more.. Each disc you want to use
with the door will have it's own subdirectory in "BBS:CydalDoor/" e.g.
BBS:CydalDoor/Aminet5". inside this directory will be a number of ".area"
files, prefixed with some areanames. (Not the names the users will see,
though. These will typically be making more sense than the ".area" files'.)

A shell command (CyMakeNewArea) comes with this package, which will perform
all tasks needed to make a new area. Its template looks like this:

@{FG SHINE}  Superareafilename=Super/K/A, @{FG TEXT}Name of the disc
@{FG SHINE}  Areafilename=File/K/A,       @{FG TEXT}Filename for the particular area on the disc
@{FG SHINE}  Areaname=Area/K/A,           @{FG TEXT}Explaining name for this area
@{FG SHINE}  Filepath=Path/K/A,           @{FG TEXT}Path to files in this area
@{FG SHINE}  Accesslevel=Axxs/K/A/N,      @{FG TEXT}Accesslevel required to DL these files
@{FG SHINE}  Includepattern=Patt/K/A,     @{FG TEXT}Files to include
@{FG SHINE}  Shortfile=Short/K/A:         @{FG TEXT}A file containing one-line descriptions

If you get the idea - just get cracking - else read on..

The superareafilename is the name of the volume the files are kept on. Don't
include the trailing colon. If you specify "Aminet5" you will get this in
"BBS:CydalDoor/":

@{FG SHINE}  Aminet5 (dir)
    Aminet5.superarea@{FG TEXT}

If the superarea already exists, don't worry. Information will be appended
to "Aminet5.superarea" and more files put in "BBS:CydalDoor/Aminet5/"

The filename is just for internal use. Just pick a short name. ".area" will
be appended to the string and a file created in the "Aminet5" subdirectory.
Currently you can't append more files to an existing area, so you will just
have to delete everything and start over if something goes wrong.

The areaname should be something meaningful to show the users. Don't forget
quotes around strings with spaces in them..

Filepath is the path to the downloadable files. Use full paths and do use
the volume name, not "CD0:" or something similar.

Accesslevel. Don't know why I implemented this. Suppose there aren't that
many top-secret files on any CD-ROMs out there, but i just might include
upload capabilities and dmodem support next time, who knows.

Includepattern. Typically most CD-ROMs contain a certain amount of junk
in addition to the useful files. Maybe you want to use something like
this:

@{FG SHINE}  Patt #?~(.info|.readme)@{FG TEXT}

or maybe

@{FG SHINE}  Patt #?(.jpg|.gif|.lha)@{FG TEXT}

Shortfile specifies a file containing short descriptions for the files
in this area. (And maybe other areas, that doesn't matter.) The files
will me matched with their description. The file is supposed to be
organized in such a way that the first "word" on each line is a filename.
No spaces are allowed in the filenames. Then comes some spaces, and then
a short description. The description must all be on the same line, and
must not exceed 80 characters in length.

A word on long descriptions. They must either be inside archives and named
FILE_ID.DIZ or be in the same directory as the actual files and have the
same name as the archive they are for. The suffix (e.g. ".lha") must be
stripped and replaced with ".readme". Like on the fabulous Aminet CDs.

                               *  *  *

Now all you have to do is to set up MAX to run the door. The tricky part
here is that you need to set up one seprate menu key for each superarea.
Which means having one menu key for each disc online. So you can't jump
between discs inside the door program itself.

Assign a key to menu function 34, the one that runs a door. Type
"CydalFileDoor" and then provide the superarea (volumename) as the only
argument. E.g. "CydalFileDoor aminet5" Voila!

                               *  *  *

Using the shell-command CyMakeNewArea may be a bit tiresome if you are
setting the door up for using a CD with a lot of areas on it. The solution
to this poblem is to write an amigados script to do the hard work. I have
made such a script myself to automatically prepare the door for for use with
the Aminet 5 CD. Using a good texteditor, a lot of keyboard macros and the
search/replace function, it is probably not very difficult to make such
a script for YOUR CD-ROM. After all, you @{b}are @{ub}an Amiga expert.. :-)

The script uses a smaller script (CyAuto) to make things easier:

@{FG SHINE}  .key FILE/A,NAME/A,PATH/A
  .bra {
  .ket }

  echo "{NAME}"
  cyMakeNewArea super AMINET5 file {FILE} area "{NAME}" path {PATH}
  axxs 2 patt #?(.lha|.lzh|.dms|.lzx|.exe|.txt|.jpg) short {PATH}/files.bbs@{FG TEXT}

Don't break the lines like i did with the last one here, it won't work then!
Then there is the main script, which just consists of a lot of lines looking
like these:

@{FG SHINE}  cyauto biz_dbase  "Business/Database"  aminet5:aminet/biz/dbase
  cyauto biz_demo   "Business/Demos"     aminet5:aminet/biz/demo
  cyauto biz_misc   "Business/Misc"      aminet5:aminet/biz/misc
  cyauto biz_patch  "Business/Patch"     aminet5:aminet/biz/patch
  cyauto comm_bbs   "Comm/BBS"           aminet5:aminet/comm/bbs
  cyauto comm_cnet  "Comm/CNET"          aminet5:aminet/comm/cnet@{FG TEXT}

Oh and don't forget to set the S (script) bit on the CyAuto script to be
able to run it like I do..

Oh-oh and by the way: I don't have a BBS or CD-ROM drive so I have never run
the script myself. BUT I know that there are a few empty areas on those
Aminet discs which will cause the script to abort. If anything like this
happens you should delete ALL files generated by the script and run it again
without the line that caused trouble.

                               *  *  *

A short note: If you are using a CD-ROM with extremely few files in each dir
you will unfortunately have to make an area for each dir. There is currently
no way of making an area with files from multiple directories in it. I
don't even think you can fake it using links. Mmm. I'll take that back, you
probably can!

If, however you have a CD-ROM with only one dir and one zillion files you
could always use the patt option to include only some of them in each area.
Don't forget to grab all the files using one run of CyMakeNewArea. You could
use this pattern to get all GIF files that begin with letters A to E.
(I think!)

@{FG SHINE}  [a-e]#?.gif@{FG TEXT}

Yup. That's it.

                               *  *  *

Nearly forgot! You need a few external programs as well!

(When you register I will send all of them to you..)

Naturally you need some version of xprzmodem.library. The initstring is
taken from env: as it is supposed to. (See the above though..)

Also to view the contents of archives you need the archivers in question.
For LZX I think you need the registered version. The unregistered version
doesn't have the 'p' command enabled.

Also you need a program named "UNARJ".

Needless to say you also need the LHA program. For LHA/LZH archives.

In order to use the "Enter archive" function, you also need some
more packages.

First you need the ObjArc14usr.lha archive. This is for LHA/LZH files.

Second you need the DMS command itself. It should be one that supports these
options:

  @{FG SHINE}DMS write ???.dms to ff0: noverify@{FG TEXT}

Furthermore you need FmsDisk.lha for the DMS files. Without FF0: my own DMS
command just ignores ff0: and writes to df0: instead, so watch out!
Always mount FF0:!

@ENDNODE

@NODE use "How do I use the door?"
@{FG FILL}Thats why I'm easy
I'm easy like sunday morning
    - Faith No More
@{FG TEXT}
----

Using the door is really easy. Use the cursor-keys to get around. Use the
numeric keypad if you are doing a local login. Tag/untag with return.
And just follow the directions given in the top window! Don't forget to
check out all the functions to make sure it all works ok. "Enter archive"
and "Generate filelist" can be a little slow. Just a few seconds. I don't
think you can generate filelists in a local login. I mean, the door will
try to send the file to your modem! Maybe, if you're fast you can grab
it from "CydalTemp:"..

One sysop note: after chat interrupting, press <space> to refresh the
screen completely.

@ENDNODE

@NODE reach "Who made this?"
@{FG FILL}Return to sender
address unknown
no such number
no such zone
    - Elvis Presley (I think!)
@{FG TEXT}
----

I can be reached at these addresses:

@{b}Claus Dyring Jensen
Kronborg Ladegaardsvej 47
DK-3000 Helsingor@{ub}
(In Denmark, that is.. Elsinore.. Hamlet, remember?)

on fidonet, if it works: @{b}2:236/112.1 Claus Dyring@{ub}

or just dial directly:

@{b}Nisse's MiCrO BBS
+45 4239-3184@{ub}
  
Drop a note to Claus Dyring.. I'm a cosys so you won't reach me on-line..

If I don't drop out you can also reach me on internet:

@{b}dyring\@diku.dk@{ub}

But hey - it may take me quite a while to get your note..

If you do write, I'd prefer if you would stick to english.. or danish!
Or maybe klingon..
@ENDNODE

@NODE future "Will there be future enhancements?"
@{FG FILL}I've seen the future baby
it is murder
    - Leonard Cohen
@{FG TEXT}
----

I have no idea about how many people out there are still using MAX's BBS.
With a lot of fancy software such as XENOLINK, DLG and more, I don't know
how many people are still interested in PD BBS software such as MAX's..

Also I don't know if Anthony Barrett is doing anything about improving MAX's
BBS. The guy lives in Australia and I don't have any address for him. If
YOU do I would like to know it too! If you have the source-code for MAX's
BBS I would VERY much like to hear from you..

With all this in mind, I will probably not enhance the filedoor unless I
get some feed-back.. So if you want @{i}this @{ui}you know what to do:

* Upload support

* Configurable menus

* Support for obsolete kickstarts. (Come on, you're a SYSOP! Upgrade!)

* Mirroring of MAX's fileareas = access MAX's fileareas from the door.

* More and more and more

@{"I don't know what to do..." LINK reach2}
@ENDNODE

@NODE reach2 ":-)"
@FONT times.font 48

 @{"Drop me a note! :-)" LINK reach}
@ENDNODE


@NODE tech "Technical information"
@{FG FILL}I wrote all of these
stupid little texts myself
    - Claus Dyring Jensen
@{FG TEXT}
----

Important note: The door bypasses menu function 24 for downloads. Instead
downloads are done using XPR libraries. I just open serial.device in
shared mode. MAX's doesn't seem to mind!

Requesters are disabled by setting the pr_Window field in the process
structure to -1L. This seems to work even better than using the
lowlevel.library, which is also V40+ only.. I think..

Most data is declared static and __far, since I don't know how much stack
MAX's gives to a door. And I don't want to ask for any trouble.

I can't really tell how this door would perform on a multi-node system.
There is no semaphore protection of the .area files, so I guess the download
count of one or more files could end up one too low. Also a read might fail
if a write is in progress at the same time. Writes are short though, so just
keep your fingers crossed!

IF you think you are having multinode-trouble either mail me or try to remedy
the problem yourself. Or both!

Also a diskcache on the CD device might be a good idea, if two or more are
doing downloads from the same disc at the same time!

About memory needs: Currently the executable is about 30Kb. When running it
will be using a minimum of 30Kb more memory. Furthermore it will load
areafiles (ending in ".area") in one at a time. Except for when downloading
where multiple area files will be loaded. Low memory situations occuring
at this time may be fatal. This might be improved in the future.
@ENDNODE
