home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Otherware
/
Otherware_1_SB_Development.iso
/
amiga
/
comms
/
bbs
/
falcon1.lzh
/
Falcon.doc
next >
Wrap
Text File
|
1991-10-01
|
215KB
|
4,968 lines
Anarchy Road Software Presents:
Falcon CBCS - An Amiga Opus Clone
"Bob's Favourite CBCS"
"The CBCS with Fahrvergnⁿgen"
Copyright ⌐ 1988-91, by Brian Fehdrau.
All rights reserved.
Operator's Manual, First Draft
01-Oct-91
IMPORTANT
=========
As you might have inferred from the title, this is a *first draft*. It
should contain all information required to use all aspects of the program,
because it was created by walking through the source code and making
generous notes, and then converting that into real English text. However,
chances are that some parts will be unclear, especially since the month it
took me to work all this out introduced no shortage of inconsistent writing
styles and formats. Also, most information will occur only once, and either
some redundancy or a See-Also note here and there is required in order to
make it easier to find certain information. Therefore I would appreciate
notification of sections which are difficult to find or understand.
Sections might also be in an weird order, meaning that they should, but may
not, follow each other in a logical fashion. So if you've got a better
order for them, let me know.
Some Quick Information About DemoWare, Distribution and Me
==========================================================
What the zark is DemoWare?
--------------------------
It's obvious, really. It's a lot like ShareWare. You can use what you've
got for as long as you want, but if you use it for long enough, then you
really ought to consider the effort required to create this program and
register it. The difference with DemoWare is that there's another incentive
besides guilt. In Falcon's case, this incentive to send in your fee and
register your copy is a 50K limit on file transfers. Meaning, a person
cannot transfer a single file larger than 50K, or a batch of files which
total more than 50K. The first file could not be downloaded at all unless
it can be broken up, and the second group would have to be done in two or
more downloads. Similarly so for uploads. Note that the limit is per
*transfer*, not per call.
Some people would call this CrippleWare, but I see a difference. Generally,
CrippleWare is designed so that it cannot be used easily in a normal
situation, and it often has certain key features disabled completely. My
variety of DemoWare allows normal operation and includes all features, with
one key feature limited but not disabled, so that a person may demo the
program and that feature to see if they want to register. Hell, if they can
get along without full-sized transfers, they can run the unregistered
version and forget all about a certain starving programmer.
If you do wish to register, there should be a file called "Registration.txt"
in your archive which contains information on how to register a form to fill
out, and an address to send it to.
Distribution
------------
The two archives Falcon comes in are freely distributable, with the
exception that nobody may make any profit from them (short, perhaps, of a
small disk copying fee). The archives may be placed on any BBS or other
online service that does not claim any rights over them, as Compu$erve has
been known to do. They may be placed in disk collections (such as the Fred
Fish disks) or users' group disks, subject to the non-profit limitation
mentioned above. The archives themselves are not to be altered, meaning that
no files are to be removed or added. I would prefer that the archiving
method not be changed, but I see no point in prohibiting it. Distribution
of the unaltered contents of the archives on a disk collection would be
okay.
If the form of distribution you wish to use does not not fall within the
above guideline, or falls on the wrong side of them, talk to me and we might
work something out. I'm not totally unreasonable.
Where to Find Me
----------------
I can be reached through FidoNet technology at either 1:140/22@FidoNet or
1:140/22.2@FidoNet. The first is my boss and the second is me, and either
will get to me. I can also be reached through the Internet address
bf@weyr.fidonet.org. Also, if you're going to use an Internet address, it
may be quicker to use fehdr460@skdad.usask.ca. That will only be available
until some time in December 1991, which is when my CMPT 460 class ends. I
will probably have a new account in January, as fehdr398@skdad.usask.ca.
Blame this on the brain-dead system of handing out undergrad accounts at the
University of Saskatchewan. Snail-Mail me at P.O. Box 7635 / Saskatoon, SK /
Canada / S7K 4R4.
Table of Contents
=================
1. Setting Up
What You Will Need
2. Running the Program
3. Waiting For a Call
4. Logging In
New Users
5. General BBS Usage
"More [Y,n?]" Prompts
Local Menus
Line Editing and Command History
Other (Non-Prompt) Key Commands
Command Stacking
Yelling with the Sysop
6. BBS Menus
Main Menu
Message Menu
Reading a Message
The Prompt
File Menu
Change Menu
Edit Menu
Subop Menu
Librarian Menu
Sysop Menu
User Edit Menu
7. Entering and Editing a Message
Starting a Message
Entering a FidoNet Address
Saving a Message
The Editors Themselves
LORE ("Line ORiented Editor")
FRED ("Falcon's Rapid EDitor")
8. The Goodbye (Logoff) Sequence
9. XPR (eXternal PRotocol) File Transfers
10. FTerm
Special Keys
Transfers
In Case of Problems with Display Positioning
The Review Buffer
File Requester
Dial Directory
Dialer
11. Configuration Files
falcon.cfg
msgareas.bbs
fileareas.bbs
menus.bbs
sched.bbs
term.bbs
12. Configurable Menus
How to Make a New Menu
Customizing Menus
GOTO
NIL, CON, and RAW
BATCH
GOODBYE
MACRO
Arguments
Note on Help Files
What Kinds of Programs to Use and What Kinds Not to Use
Warnings
Suggestion
Notes About DLG Doors
Sample External Menu
13. Batch File
14. Suggestions and Hints
15. Miscellaneous/Technical Information
Workbench/KickStart 2.0
Overlaid vs. Pure Executables
bf.library
Using a Nodelist
Refreshing the Display
Editing File Lists
The Quote File
The Log File
Text Files
Help Files
The Numeric Keypad
Remote VT100 Keys
ANSI Used in Output
Those "stat.dat" Files and the "systemstat.dat" File
16. FidoNet-Specific Technical Information
Quoting
Netmail/Echomail Kludge/Control Lines
Notes on Kludges
Datestamps
17. Yet to Come
18. ICK! BUGS! (And other caveats)
1. Setting Up
==============
First, you want to get the files you are provided with into the proper
places. Therefore, change to the directory you want your BBS in, and
unarchive the files. This will provide you, after a few more DOS commands,
with a bare-bones BBS which should be ready-to-run. You will make changes
later.
Here's a rough idea of what you should be doing in your shell. Note that
you should replace "BBS:" with the directory you want to put the BBS in, and
"ARCHIVES:" with wherever you put the Falcon archives. Also, where you see
"lhunarc", use your favourite unarchive, but be sure it extracts with
extended filenames and paths.
1> cd BBS:
1> lhunarc ARCHIVES:Falconxxx-2 ; extract Falcon, bf.library,
; support files and paths
1> makedir msgs ; \
1> makedir msgs/gen ; |_ Make the directories for
1> makedir files ; | mail and files (for now)
1> makedir files/gen ; /
1> makedir logs ; optional, for storing old log files
1> makedir FONTS:IBM
1> copy IBM.font FONTS: ; you should probably use my IBM.font
1> copy IBM FONTS:IBM ; no one says you CAN'T use another's
1> delete IBM.font
1> delete IBM all
1> copy bf.library LIBS:
1> delete bf.library
1> list LIBS:diskfont.library ; and if it's not there, put it there
You must also be sure that "T:" is assigned somewhere. Falcon occasionally
keeps some files in "T:". Notice that that is "T:" and not "T/". You must
use the DOS Assign command to assign the volume "T:" to where you want your
temporary directory. There is one exception: if the root directory of your
boot disk had a "T" directory in it, "T:" will have been assigned there
automatically, although you may still want to move it. I suggest a "T"
directory on the RAM disk. At any rate, it should be on a reasonably quick
device, since it is used, among other things, to store the cut & paste
buffer in FRED.
You can run the program as it is now, but I strongly suggest you make a few
important changes to the configuration right now, before you run it:
In Falcon.cfg:
NAME "your BBS's name"
SYSOP "your name"
MAXBAUD your_modem's_maximum_baudrate
You may also have to change some modem strings, depending on your
modem. Consult Falcon.cfg documentation for more information.
Text files you will want to personalize, sooner or later:
welcome1.bbs
welcome2.bbs
bulletin.bbs
newuser.bbs
editorial.bbs
yell.bbs
warning.bbs
logoff.bbs
To create the userlist, just log in with the name you put in the SYSOP field
of Falcon.cfg. Falcon will consider that to be a special case and give you
SYSOP access (you'll know if this works, since Falcon will tell you), so
make sure you do this before some other user thinks of it! You should be
able to get by with that. The Sysop Menu is available as "!" from the Main
Menu, and the User Edit Menu is "E" from there. When you finished looking
around, you'll probably want to come back to this document. Meanwhile,
I'm going to go get a glass of Coke Classic.
What You Will Need
------------------
This is a short but hopefully complete list of the files you should have.
Files with an asterisk are what I figure you'll need for a FidoNet system if
you should go that far (thinking in terms of a point, as I've never run a
node myself). Files in square brackets are optional.
FONTS:
IBM.font
IBM/8
IBM/12
LIBS:
bf.library
diskfont.library
[xpr#?.library]
*[traplist.library]
DEVS:
serial.device
Anywhere in your command paths, including the current directory:
Falcon
*(an archiver compatible with your boss' archiver)
*FExport/FImport or CM (ConfMail) and possibly oMMM
*TrapDoor or Welmat
*The Roof A special shell for (FidoNet) BBSs, which I have little
experience with but which looks like a promising
replacement for the ARP shell I used in my doomed fbatch.
The current directory:
Falcon.cfg Or in S: or Falcon: or user-specified path/name
*TrapDoor.cfg Or in user-specified path/name
*FastPoint.cfg Or in user-specified path/name
Could instead be a ConfMail and/or oMMM config file
CONFIGDIR ???DIRs are set in Falcon.cfg
english.bbs
msgareas.bbs
fileareas.bbs
term.bbs
[sched.bbs]
USERDIR
user.bbs Actually, this will be created by Falcon)
(Note: .?bs means either .bbs and/or .gbs)
TEXTDIR
welcome1.bbs Intro file, shown before name prompt
welcome2.?bs First file shown after password prompt
[bulletin*.?bs] Shown after welcome2.bbs. may be numbered, starting
with 1, in unbroken ascending order--Falcon stops
looking after it doesn't find one.
newuser.bbs Shown to new users when they sign up
quotes.bbs Quote file
[editorial.?bs] file for E)ditorial command)
[yell.?bs] Shown if yell not available (if file not present,
prg says "Yell is turned off right now.")
[msgarealist.?bs] Shown in lieu of msg A)rea list
[filearealist.?bs] Shown in lieu of file A)rea list
warning.?bs File shown before asking for area passwords
[logoff.?bs] Shown at logoff (bbs/gbs)
HELPDIR
changehelp.bbs These are not normal text files. See the section
edithelp.bbs on help files for more information.
filehelp.bbs
mainhelp.bbs
msghelp.bbs
useredithelp.bbs
sysophelp.bbs
subophelp.bbs
librarianhelp.bbs
lorehelp.bbs These are normal text files.
keyhelp.bbs
longhelp.bbs
KEYDIR
[falcon.key] Only registered users will have/need this
2. Running the Program
=======================
Normally, to run falcon, you'd do just that: "run falcon". However, there
are some command line options:
-t ........ Tiny mode toggle. Useful if you have Falcon configured to
start up in tiny mode
-l ........ Interlace toggle. Not all that useful, really.
-f ........ Go straight to FTerm
-b <baud>.. Spawn at this baud rate
-h ........ Hang up in spawned session, instead of letting calling
program do it.
-? ........ Help (a list of options similar to this one)
Otherwise, if the argument is not an option, it will be used as the filename
for falcon.cfg instead of the one used by default, ie.:
"run falcon CONFIG:falcon.cfg"
When Falcon exits, normally the DOS errorlevel will be set to 0. However,
if messages have been entered in an echo or matrix area, appropriate error-
levels will be returned, and an error will return yet another number. See
the documentation for Falcon.cfg for more information on errorlevels.
On top of the DOS errorlevels, Falcon returns codes in an environment
variable, which we'll call "fret" for convenience (since that's the default
name for it). This will be set to "error" if the program couldn't run
successfully for some reason. Otherwise, it could be set to "exit" when the
program exits on request, an event name if it exits due to one, or "return"
if it was spawned.
Falcon does not need a special stack size. It does not use much. However,
to be safe, I call the stack-checking routine whenever the user switches BBS
menus. This will catch any overflows, since Manx looks at the lower bound
of the stack to see if a special value it puts there at run-time has been
overwritten.
3. Waiting for a call
======================
When the system has finished initializing the modem, it will start waiting for
the phone to ring. At this point, there will also be a prompt, which will
accept commands to go to the T)erm, to Q)uit, to C)onnect locally, or to
Connect as the S)ysop (which pre-enters the sysop's name). There is also an
invisible R)ing command, which will make the program think the phone has rung,
and therefore it will pick up the phone. It could be useful. There are
equivalent menu items for all commands except R)ing.
(Note that if the Online Menu's "Sysop Next" item was selected during the last
call, the prompt will be skipped and the session will be started as if the
S)ysop Connect key was hit.)
While waiting, events will also be checked. If it happens that the current
time is within the bounds of an event, the program will exit with the name of
that event in the usual return environment variable. Note that this
scheduling is simplistic and can cause problems with repeated events if
Falcon starts up again before the event ends. Make sure events take at least
as long as their duration.
If the phone has rung, then the program will send a code to the modem
indicating that it should answer. It will then wait for 30 seconds. If an
appropriate connect message is received, the session will begin. Should the
program receive another ring code while waiting for a connect, it will assume
that maybe the connect or no-carrier code for the last ring got munged and
simply try to pick the phone up again. If no connect is made or broken during
the 30 seconds, the program will hang up and resume waiting for a call.
Typing A)bort will do the same thing.
4. Logging In
==============
Once a user has connected to the system with a sufficient baud rate (if
applicable) and gone through the Escape-Escape sequence (if applicable),
they will be greeted with a brief tag noting that they are connecting to
a Falcon CBCS, which was written by Brian Fehdrau. Then the first welcome
file will be sent, and they will end up in the name prompt.
To enter a name, they simply enter the first name and the last name at the
appropriate prompts. These can be stacked and entered as the entire name
all at once (ie. instead of "Brian<return>Fehdrau<return>", I would enter
"Brian Fehdrau<return>" at the first name prompt. Then Falcon will display
the name and ask if it is correct. To avoid this, they can simply append the
confirmation to the stacked name ("Brian Fehdrau y").
(I am aware that this method of asking for the name causes problems with
certain names, such as the "Somebody van der Whoever" variety. I suggest
using periods, like "Somebody van.der.Whoever". I think I'm going to have to
change this.)
Then Falcon asks for the user's password, which they get three chances to get
right before being booted. Simple enough. Note that the prompt only shows
periods where the letters should be, in order to keep people from reading
passwords over other peoples' shoulders. This is one reason not to add the
password to the stack mentioned above, as entering it there leaves it visible.
Once the correct password has been entered, Falcon does a little user
housekeeping, such as zeroing limits if it's a new day, and the like. At this
point the time limit for this call is determined, based on time remaining
for this day, absolute call limits, and scheduled events. Then it displays
the second welcome file and any bulletins, and drops the user into the Main
Menu.
New Users
---------
A new user logs on simply by entering their name. Since it will not be in the
user file, the program will obviously assume they are new.
If the program is configured to accept new users, it will prompt the user to
enter the name of their city. It is at this point that they are advised that
they can hit enter to return to the name prompt, which is useful for people
who have entered their name incorrectly. Otherwise they enter their city's
name. Then they are prompted for a password, and then prompted to enter it
again to be sure it was correct. After that they answer a few prompts
regarding IBM characters, ANSI and the like.
The user's name is checked. If it's the sysop logging on for the first time,
which is done by entering the name specified for the sysop in the
configuration, then the user will be given SYSOP level. On the other hand,
if they try to sign on as "Sysop" or "All", the program will assume they are
a jerk and turf 'em. On the other ...foot?... they may be advised about
the Change Menu's capitalization-changer if their name is the sort that
is not supposed to be capitalized normally (presently only Mc and Mac names).
The new user is dropped into the first unused record or appended to the end
of the user file if their are no empty slots. They will have the new user
level and limits which were specified in the configuration file, novice-level
help, and any area/write keys they were supposed to get automatically.
If the sysop has configured the program to keep an application file, a few
more questions will be asked of the user. The data will not be used by
the program, but it might be useful to the sysop. Each entry in the file
will include the user's name and city, as entered already, along with their
address, phone number, age, and computer type.
5. General BBS Information
===========================
Once you're into the BBS itself, some of this information may be of use
to you...
"More [Y,n?]" Prompts
---------------------
If you have "More [Y,n?]" prompts turned on in the Change Menu, and the
amount of text sent out since the last prompt or screen-clear would fill up
your screen (based on the Screen Length field in the Change Menu), you will
get a More prompt. This prompt is simply to prevent text from scrolling off
your screen before you have read it.
Once you're in one of these prompts, your actions are obvious. You can type
'N' (or ^C) to break the current text, which will happen in exactly the same
way as typing ^C normally would. Hitting 'Y' (or any other key, for that
matter) erases the prompt and resumes text output.
Note that the way the prompt is erased is based on your display as
configured in the Change Menu. If you have told the Change Menu something
about your display that is not true, this is one place where it may show up.
If the prompt is not erased, you should checked your settings.
If you're interested, the erasing is done by first dropping back to the
start of the line, which is done with a carriage return if you have
linefeeds turned on, otherwise with a number of backspaces. If you have
ANSI on, the clear-to-end-of-line code is sent and that's that. Otherwise,
the program sends out enough spaces to clear out the prompt, and drops back
to the start of the line again in the same way it did before.
Local Menus
-----------
While online, you can use several menu (Amiga, not BBS) items. Here they
are, listed by their keyboard shortcuts:
O Sysop on next Does a sysop logon immediately after
current user hangs up.
L Inactive logoff toggle Decides whether inactivity is a reason to
log someone off.
T Transfer toggle If transfers are off due to insufficient
baud rates, this can allow them anyway.
U User yelling toggle If Y)ell has not been scheduled for this
time period, this can allow it.
R Remote input toggle Decides whether or not the remote user can
enter text. Good for mouthy jerks.
Y Yell at user Obvious. Chat with the user.
B Boot user Also obvious. They're outta here.
These menus should work everywhere, including during normal text output and
doors.
Line Editing and Command History
--------------------------------
When typing at a prompt (be it a menu or in a line-edited message), you have
some extended commands to edit the line. You may not be able to see
everything you're doing if you have a destructive backspace. If you do, you
should set Destructive BSp to YES in the Change Menu, or the BBS will send
out a lot of unnecessary text when you're editing the middle of a line. If
your backspace is non-destructive, set Destr.BS to NO and you should be able
to see the entire line, no matter which part of it the cursor is on. Just
remember that you are editing the entire line and that when you hit return,
the entire line will be entered, no matter where your cursor is on it.
If you are entering a password, all features of the prompt will still be
available, but all output will be replaced with periods so that someone
watching over your shoulder will not be able to see your passwords.
Note: Prompts have length limits. If you insert into the middle of a full
line, you will lose a character at the end of the line.
Here are the commands you can use (NOTE: "^X" would mean Control-X):
Simple VT100 Local Function
------- -------- -------- --------
^S Left Left Move left one character on the line
^D Right Right Move right one character on the line
^A Sh-Left Sh-Left Move left one word on the line
^F Sh-Right Sh-Right Move right one word on the line
^Q Home Home Move to start of line
^I = Tab,End Tab,End Move to end of line
^W Up Up Retrieves previous line (remembers the last 5
^Z Down Down Retrieves next line lines > 1 char long)
^H = BackSp. BackSp. Delete character behind cursor
(127) = Del Del Delete character under cursor
^Y Erase to end of line
^X,^C Erase entire line
^[^[ Esc-Esc Esc-Esc For line editor, exit to Edit Menu
^W Up Up For line editor, move up one line in message
^Z Down Down For line editor, move down one line in message
^H = BackSp. BackSp. For line editor, delete character behind the
cursor, or, if at start of line and line is
not first line, move to previous line and make
it wrap. Delete line if blank.
F1 User level +1
Sh-F1 User level -1
F2 User time +10 minutes
Sh-F2 User time -10 minutes
F6 Toggle inactive logoffs
F7 Toggle transfer availability for this session
F8 Toggle Y)ell availability for this session
F9 Toggle remote text lockout
F10 Validate user (if level<NORMAL, level=NORMAL)
Sh-F10 Boot user
Help Function key command list
Otherwise, the prompt accepts ASCII characters in the ranges of 32..126 and
160..254 as regular text.
Other (Non-Prompt) Key Commands
-------------------------------
These commands are available during text output:
Basic Key VT100 Local Function
--------- ------ -------- --------
^C Break text output, wipe out type-ahead buffer
In some cases this may not be permitted
^S Pause text output
^Q (^C) Unpause text output (or break)
^Z Wipe out type-ahead
Otherwise characters are stored in a type-ahead buffer for later usage.
Command Stacking
----------------
It is possible to string several to-be-executed-consecutively commands
together at the same prompt. A quick example would be a common way of
logging off:
[4] Highest: 9
Msg.area 10 ... What I hate about Barry Manilow
Select: a1gyn
...which would, without any large amounts of unnecessary text being spewed
out (that normally would if the commands were to be typed one at a time),
change the user's current area to 1, start the goodbye/logoff sequence,
reply "yes" to the "Do you really want to log off?" prompt, and reply "no"
to the "Leave a private message to the sysop?" prompt, thus saving the user
about 10 lines of extra text being sent.
Stacking should work at any prompt, except the line-based message entry
prompt, and the stack will be automatically cleared if an erroneous command
is encountered, thus avoiding any subsequent errors.
The types of commands that can be placed on the stack are as follow:
Type Example Terminator
--------------- ----------------------- --------------------------
White-Space " ", "," or ";" non-White-Space
Single Letter "a", "A", "?" auto-terminates
Word "password" White-Space
Sentence "A message Subject..." "|" (must be used and also
terminated as a Word)
Number "-123" non-numeric character
Stack "Blah Blah | more blah" bottom of stack
The bottom of the stack terminates anything, of course.
A "-" is a Single Letter only if not followed by a numeric character.
One sort-of-exception to these rules is the initial first/last name prompt.
A user with only one name (such as "Sysop") can insert a carriage return for
the second name (if blank, none, non-existent, etc) by using a pipeline
("|") for the second name, despite the names being fetched as words. Also,
some systems, such as Fido v12 which uses three names and not two,
necessitate the pipeline at the end of the name(s) (ie. "Joe User | y
password" for the same reason as "Sysop" would in Falcon. I've kludged the
"Joe User, right? [Y,n]" prompt so that it will just keep grabbing Single
Letters until it sees a non-pipeline, and thus a Fido key-macro will work on
Falcon as well. As it happens, Fido no longer does this, but I figure this
point ought to be explained and I don't feel like re-wording it.
A good overall example of these is the basic message entry process, starting
from the main menu and an unspecified message area for fun. We'd want to go
to the Message Menu (single letter), the area menu (single letter), pick an
area (number), pick the enter command (single letter), answer the "Private?
[y,N,a]" prompt (single letter), enter a "To:" name (sentence), and a
"Subject:" (stack):
MAIN MENU
Select: ma10eyJoe Sysop | What have you got against Barry Manilow?
Voila. You should be in the editor. Get the idea? Good.
Yelling with the Sysop
----------------------
If you are chatting, either through the Y)ell command at the Main menu, or
through an impromptu yell-at-the-user, and you have ANSI color on, you'll
notice that the color changes depending on who is typing. Text the sysop
enters comes up yellow, and text the user enters comes up cyan. This is to
help make clear who typed what.
You can exit a chat session by typing "/e" by itself on a blank line.
6. BBS Menus
=============
Falcon has eight built-in menus: the Main Menu, the Message Menu, the File
Menu, the Change Menu, the User Edit Menu, the Edit Menu, the Subop Menu,
the Librarian Menu, and the Sysop Menu.
There should always be two levels of help available to the user. Entering
"?" should show the help that a NOVICE user sees at every prompt. Entering
"??" should show a more verbose list of commands, with a line of information
about each one. Wherever the help comes from, though, including anything
displayed automatically at the prompt, only the commands available to the
online user's level are displayed.
Another command which should always be available is the "_" command. This
is useful in long stacks (especially the automatic login stacks), because it
stops and asks the user to hit return before continuing. For instance, a
login stack of "FLM* Q_MAF" would list all new files in marked areas, wait
for a return, and then move to the message area (which usually clears the
screen) and start reading the new messages.
Main Menu
---------
B)ulletin Redisplays the login bulletin.
C)hange Menu Simply moves to the Change Menu.
E)ditorial Display an editorial. This is normally some moralistic
trash the sysop actually believes in. I'm beginning to
think I should take out this command. :-)
F)ile Menu Simply moves to the File Menu. J also works, because I kept
typing the Message Menu's J)ump To File Menu command at the
Main Menu.
G)oodbye Starts the logoff sequence.
I)System Info Display some system information, including the number of
calls to date, the previous caller to the system, the date
the system was "born", and the number of messages entered to
date.
M)essage Menu Simply moves to the Message Menu.
Q)uote Displays a quote from the quote file, just like during the
login sequence.
S)tatus Display some user information, including time on line, time
left, time online today, time left today, time online to
date, kilobytes downloaded, kilobytes uploaded, efficiency
of last transfer, number of calls to date, number of
messages entered to date, matrix mail credit, and the last
call. Also shows the current time and date.
U)ser List Either display the entire user list or search it for a
string. Shows full name, city, and last call.
V)ersion Displays the version of the program, my name, and
copyrights. Also displays brief information about
registration if the program is (still!) unregistered.
Y)ell Yell for Sysop to come and chat. This may not be possible,
depending on whether or not the Sysop has scheduled Yell
availability for this time of the day. Users with SYSOP
level can Yell either way, if they want to. If it is
possible, the screen will beep once a second for ten seconds
and either the Sysop will answer or they won't and a message
to try again later will be displayed.
!)Sysop Menu Simply moves to the Sysop Menu.
Message Menu
------------
About reading: A SYSOP-level user can read any message. Users with lower
levels can read any message except private messages not to or from them.
About updating/re-editing: A SYSOP-level user can update any message.
Users with lower levels can update any message they wrote.
About hurling/forwarding/killing: A SYSOP-level user can do these to any
message. An ASSIST-level user can do this to any message they can read.
Users with lower levels can do this to any message to or from them.
About writing: A SYSOP-level user can write in any area. Users with lower
levels can not write if do not have the write key to writelocked area or if
the area is a read-only area.
Reading a Message
~~~~~~~~~~~~~~~~~
First, if neither Zoom not Continuous modes are on, the screen will be
cleared (or the equivalent for users with screen clears turned off).
Otherwise a few blank lines will be output.
Next, the header will be displayed. It will be in the following format,
where descriptions in square braces indicate something that will be present
only if applicable:
Sender
| [Sender's
| Address] [Netmail cost]
| | Addressee | [Flags (see below)]
| | | [Destination | |
| | | address] | |
| | | | | .------'------.
From: Barry M. | | | $1.23 Pvt Rec'd Crash
Orig: (see below) | |
To: Brian Fehdrau -' | #34/56 [4] Fri 9 Aug 91 16:08
Dest: (see below) -------------' | | | `--------.--------'
Subject: Re: Barry Manilow is a fink | | | |
| | | | |
| | | | Date & time sent
Topic | | Times read
| Highest message
Message number
Addresses may look like one of the following:
Nodes: 1:140/22
1:140/22@FidoNet
Benden Weyr (1:140/22@FidoNet) Saskatoon SK
The latter is only if the Sysop has a traplist.library-format
nodelist in which Falcon can look up node information.
Points: 1:140/22.2
1:140/22.2@FidoNet
1:140/22.2@FidoNet, a point of Benden Weyr (1:140/22@FidoNet)
...Saskatoon SK
The latter is only if the Sysop has a traplist.library-format
nodelist in which Falcon can look up node information.
External (non-FidoNet technologies):
zeebie.uucp
zeebie.uucp via <a fidonet address, as above>
Flags:
Flag Means
------- ------------------------------------------------------------
Pvt The message is private between sender, addressee, and Sysop
Crash CrashMail is NetMail which goes out immediately and directly
Rec'd The addressee has read the message
Sent Usually means matrix mail has been processed, may have other
meanings for some echo/matrix mail processors.
File The Subject field contains the name of a file to be sent with
the matrix message. Called "File-attach".
InTrans This message is between its sending node and its destination
Orphan This message is InTrans but couldn't go anywhere from here
Kill This message is to be deleted after it is Sent
Local Shows if a matrix or echo message was entered on this system,
actually on for ANY message entered on this system
* This flag ("*") should not be on. It is an unused flag.
Freq This matrix message contains a file request, I think.
I've never used file requests.
RcptReq An automatic receipt reply message is supposed to be sent
back to the sender when this matrix message gets to its
destination (often not supported)
Rcpt This matrix message IS a receipt reply to a RcptReq message
AudReq This matrix message should cause an audit reply message from
each system it goes through, ideally meant to test routing
(often not supported)
Aud This matrix message IS an audit reply to a AudReq message
After the header is done, the message body will be displayed. If it was
entered as it was supposed to be, using line-wrapping, paragraphs should be
formatted for the user's screen width. Text will be scrolled as it has been
configured to in the Change Menu's "Scroll Type" command.
There are four kinds of message lines:
- Hidden control lines which start with ^A (called Kludge lines). These
can be shown if the Change Menu's "Show Kludge Lines" is set to YES--
they will show up in green if the user has ANSI color turned on.
- Hidden echo SEEN-BY: lines. These can be shown if the Change menu's
"Show SEEN-BY Lines" is set to YES--they will show up in green if the
user has ANSI color turned on.
- Quoted lines: those with a ">" character in the first six characters of
the line which are not preceded by a "<" character (which allows for
"<grin>"). These may be highlighted in white if the Change Menu's
"Highlight Quote" is set to YES and the user has ANSI color turned on.
- Normal text, which will be shown as cyan if the user has ANSI color
turned on.
- A pseudo-fifth kind of line is a blank line, one which has absolutely
nothing on it. Lines like this will actually be displayed as a single
space, which is all but invisible when reading, but handy for capturing
and re-uploading to a line editor.
Then, if message is reply, it will say at the bottom, in white:
"*** Reply to #<original>."
If the message has a reply, it will say at the bottom (on the same line as
the Reply line, if it is there), in white:
"*** See also #<reply>."
The Prompt
~~~~~~~~~~
The message area prompt is a little different from the others. When you
first enter the menu or a new area, it will show the following:
- The number of messages in this area and the highest one.
- If the number of messages is 0,
"NO messages"
Else if the user's last-read pointer is 0,
"You haven't read any of these messages"
Else if the user's last-read pointer points to the highest message,
"NO NEW messages have been posted"
Else if the user's last-read pointer is greater than the highest msg,
"POSSIBLE ERROR: Your lastread pointer was higher than n."
Else if the user's last-read pointer is between 0 and the highest msg,
"The last message you read was N."
- Then the prompt:
[<current msg #>] Highest: <highest msg #> <notice>
(ECHO|MATRIX|Msg.) area <area #> ... <description>
Where <notice> may say "Press enter for <direction> msg" if any more
messages are available in the current direction (<direction> is either
"NEXT" or "PRIOR").
- In Zoom Read mode it will skip all of the above when it goes to the next
area, saying "ZOOMing to <area description>" and starting up a
continuous read for this area. Once the read is done, it will ask the
user if they want to enter a message in this area. If they say yes,
they are allowed to do so, then asked again, and so on, until they say
no. When they say no, the program looks for the next area.
Finally, to the command list:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<msg>)Go To Msg If <msg> is in range, this will move to that message number
and read it or the next available message from there (in the
current direction).
<cr>)Read Next Hitting carriage return reads the next message in the
current direction, which defaults to forward and can be set
with the P)revious and N)ext commands. If the direction is
forward and there are no messages left and change menu's
Auto-Next-Area is set to YES, the program will skip to the
next marked area with new messages, like typing "/" (or
"AN"), or reset the area to 1 if none are left.
A)rea Lists all available areas and asks which, if any, to switch
to. Normally, this will not show areas you cannot access,
but if the sysop has supplied a special text file for this
list, it may contain inaccessible areas.
Hitting <cr> returns the user to the current area.
There are a few commands that can be entered as well as an
area number:
M - Next marked area
N - Next marked area with new messages (see "/", below)
C - Next marked area with new messages, checking current
area first
F - First marked area with new messages
? - Describes above four commands
If the Change Menu's "Verbose Scan" is set to YES, the above
commands show each area's number as it is being checked.
If the program runs out of areas for the above commands, it
sets the user's area back to 1 and says so (and waits for
the user to hit return if they have screen clears on, so
that they won't miss the no-more-areas notice).
B)ody Search Works like hitting return to read the next message, but
skips over all messages that do not contain a given string
in the header or the message text.
C)urrent Msg This reads the current message, if it exists. Good for
times when a burst of line noise mangles a message and you
want to read it again without typing in its number.
E)nter a Msg Obvious enough. See "About writing", above.
F)orward Msg Forwards a message to someone else. What is done is the
message is copied into a new message From: <you> and To: All
with a note about the original sender/receiver/date. The
message can then be U)pdated if necessary.
G)oodbye Starts the logoff sequence.
H)url Message "Hurls" a message into another area. Useful for putting an
inappropriately-placed message in the proper area.
I)nquire/Index Looks for a string in message headers, starting with
highest, going downwards to the lowest, and showing all
message headers that contain that string.
J)ump to File "Jumps" over the Main Menu to the File Menu. Use this
instead of the usual "MF".
K)ill Message Deletes a message and re-links any reply/see-also chains it
may have been involved in. See above, under "About hurling/
forwarding/killing".
L)ist Messages Lists messages from a starting point upwards, in the
following format: "<#> <date> <flags> From: <from> To:
<to>", where <flags> contains two characters, the first '-'
if the message is public and 'P' if it is private, and the
second '-' if the message has not yet been received and 'R'
if it has been.
LV)List Verbose Just like L)ist Messages, except it adds another line to
each entry which contains the Subject.
M)ain Menu Simply moves to the Main Menu. You can also Q)uit to the
Main Menu.
N)ext Message This reads the next message, if there is one, and sets the
current reading direction to forwards. This command, unlike
P)revious, may have the same side effects as hitting
<return> while in forward mode. See the section on hitting
<return>.
P)revious Msg This reads the previous message, if there is one, and sets
the current reading direction to reverse.
R)eply to a Msg Replies to the current message, if it exists. The
appropriate strings will be copied into the new message's
header, although they may be replaced at need. It should be
pointed out that, unlike some programs, it is okay to reply
to a message you haven't just read. If the message your
pointer points to is accessible, you can reply to it and the
right information will be put into the prompt defaults.
S)tatus Display some user information, including time on line, time
left, time online today, time left today, time online to
date, kilobytes downloaded, kilobytes uploaded, efficiency
of last transfer, number of calls to date, number of
messages entered to date, matrix mail credit, and the last
call. Also shows the current time and date.
U)pdate Message Loads an already-saved message back into the message editor
for re-editing. Note that, because of problems with
preserving control line information, it is not permitted to
U)pdate echo or matrix messages. See above, under "About
updating".
X)press Search Works like hitting return to read the next message, but
skips over all messages that do not contain a given string
in the header.
Z)oom Read This is much the same as =)Continuous Read but does so in
all marked areas with new messages, and prompts the user to
see if they want to enter a message after each area has
finished. See above, under "The Prompt" for more
information.
.)(Un)Mark Area Toggle the mark on the current area. Used for A)rea
commands.
/)Same as "AN" Skips to the next marked area with new messages, just like
typing "AN", except a little less text is output and it's
only one character to type.
!)Subop Menu Simply moves to the Subop Menu.
+)Move to Reply Moves to the message number in the "*** See also #x." part
of the current message, if applicable.
-)Move to Orig. Moves to the message number in the "*** Reply to #x." part
of the current message, if applicable.
=)Cont. Read Turns on continuous mode, which reads all messages from the
next on to the end of available messages in current
direction, without prompts or screen clears between
individual messages. It can be stopped by typing ^C. The
user is asked if they want to leave ANSI (and if so, ANSI
color) and "More [Y,n]" prompts on during the read.
File Menu
---------
About New Files: A file is considered "new" if its date is later than that
of the last call the user made during which they did a file listing. Note
that that refers to a listing of *any* area and not just the one in
question. Because listing any area sets the "last call with a listing" date
for subsequent calls, it is suggested that you look for all new files with
the L)ocate command, either "LM*" for marked areas or "LG*" for all areas.
Otherwise, if you list one area and then get logged off, your "last listing"
date will be set and you will have a harder time finding the new files in
the areas you did not list. A login stack starting with "FLM* Q_" or
"FLG* Q_" would be a good idea. See the Change Menu's X)ecute command for
more information on login stacks.
<cr>)New Files The first time <return> is hit (with nothing else on the
line), the program lists new files as if the "N)ew Files"
command had been executed. If the files have already been
listed in this area and the Change Menu's "Auto-Next-Area"
is set to YES, it will execute the "/)Next Marked Area With
New Files command". This can be used in a manner similar to
hitting return to find all new messages in the Message Menu.
A)rea Lists all available areas and asks which, if any, to switch
to. Normally, this will not show areas you cannot access,
but if the sysop has supplied a special text file for this
list, it may contain inaccessible areas.
Hitting <cr> returns the user to the current area.
There are a few commands that can be entered as well as an
area number:
M - Next marked area
N - Next marked area with new files (see "/", below)
C - Next marked area with new files, checking current
area first
F - First marked area with new files
? - Describes above four commands
If the Change Menu's "Verbose Scan" is set to YES, the above
commands show each area's number as it is being checked.
If the program runs out of areas for the above commands, it
sets the user's area back to 1 and says so.
C)ontents Either views the contents of an archive it recognizes, or
tells the user what the file may be (if it knows).
Otherwise it will say it doesn't know what the file is.
D)ownload File Used to transfer a file from the BBS, if file transfer
protocols have been set up by the sysop. First the user
selects the protocol, and then they will be asked for one or
more filenames. If the protocol allows for it, all files
requested may be sent in a batch, but otherwise only the
first will be sent. Use "|" as a filename to indicate the
end of the file list so that other commands can be stacked
for after the transfer, ie. "DZ FalconXXX-1.LZH
FalconXXX-2.LZH FalconXXX-3.LZH | GYN" to download all of
the Falcon files and then automatically log off. If any
files are not present, the user is prompted to enter the
list again (Remember the line history! One can use ^W to
bring up the last line for re-editing.).
The total file size and time required is then shown. If
this copy of Falcon is unregistered and the files total more
than 50K, the transfer will be aborted with a notice about
the 50K limit. If there is not sufficient time to complete
the transfer (in the BBS's estimation), the user will be
warned that they should abort, but allowed to continue if
they want because the estimate may be off or they may be
able to resume the download during the next call if the
protocol allows for it.
F)ile Listing Shows all files, or new files if the user enters "F*", or
searches for a string if the user enters "F<string>". You
must use whitespace to stack commands after a F)ile Listing,
ie. "F <more commands>" or "F.wrp <more commands>".
The file listing will consist of individual files which may
be accompanied by comment lines. The file entries are in
this format:
<name> <size> <date>* <description>
The size and date are derived from the actual file and not
from the list, so they may say "MISSING" and "??-???-??" if
the file can not be found (some Sysops use this feature to
store very large files offline which can then be
requested). The (blinking) asterisk after the date, if
present, indicates a new file.
G)oodbye Starts the logoff sequence.
H)url File "Hurls" a file, along with its description (if it has one)
into another area. Useful for putting an inappropriately-
placed file in the proper area.
Technical note: This tries to simply rename the file from
one directory to another, but if that is impossible
(normally because the two directories are on different
devices or partitions), the user is given the option to
physically copy it over and delete the original. This will
show progress, in percent, at most once a second.
I)mport File Used to put file(s) into the F)ile Listing. Asks for file
name(s), and then when done it asks for a description of
each file imported. This is mostly used for local
"uploading".
J)ump to Msgs "Jumps" over the Main Menu to the Message Menu. Use this
instead of the usual "MM".
K)ill File Deletes a file and takes it out of F)ile Listing if it is in
it.
L)ocate Files This acts much like using the F)ile Listing to search for a
string, but looks in all areas (a G)lobal search) or all
marked areas (a M)arked search) for either a given string or
"*" for new files. As is mentioned above, using LM* or LG*
is a very good way to quickly find all new files.
M)ain Menu Simply moves to the Main Menu. You can also Q)uit to the
Main Menu.
N)ew Files Shows new files in this area, just like typing "F*", but
shorter.
R)Zmodem Upload Because Zmodem always starts a send (upload) by sending the
string "RZ<return>", this command was added to automatically
start receiving should someone start a Zmodem upload without
entering "UZ" first. Note that there must be a Z)modem
protocol available. See U)pload for more information. The
only difference is that this command does not bother with
the space/time-available information, as the other end
should not be able to see it if it is already sending.
S)tatus Display some user information, including time on line, time
left, time online today, time left today, time online to
date, kilobytes downloaded, kilobytes uploaded, efficiency
of last transfer, number of calls to date, number of
messages entered to date, matrix mail credit, and the last
call. Also shows the current time and date.
T)ype File Types a file. This leaves things like "More [Y,n]" prompts
on, and that is how it differs from an ASCII transfer.
U)pload File Used to transfer a file to the BBS, if file transfer
protocols have been set up by the sysop. First the user
selects the protocol, and then they may be asked for a
filename, but only if the protocol does not send it
automatically. Then it will warn the user about time and
space available. If this copy of Falcon is unregistered, it
will warn the user about the 50k transfer limit. Then it
starts waiting for the transfer to start.
A file whose upload was aborted for some reason (ie.
insufficient time) may be resumed if the user is the one who
started it (or is a SYSOP-level user) and the protocol
allows for it. Simply start an upload with the same name.
As a side effect, a protocol that does not resume can be
used to replace a file in the same fashion.
After the upload, the program asks for the description(s) of
file(s) uploaded. If the user has disconnected, files are
given blank descriptions.
Z)ippy Listing This does a zippy (meaning "quick" - okay, so I was running
out of good letters) AmigaDOS "List"-command-style listing
of the directory which contains the current area's files.
This may show files which are not in the F)ile Listing, such
as the "files.bbs" file the F)ile Listing is derived from.
Unless the user is of SYSOP level, this will only show files.
.)(Un)Mark Area Toggle the mark on the current area. Used for A)rea
commands and L)ocate M)arked commands.
!)Libr. Menu Simply moves to the Librarian Menu.
/)Same as "AN" Skips to the next marked area which has new files. This is
just like typing "AN", except a little less text is output
and it's only one character to type.
Change Menu
-----------
This menu always shows the status of all available options. This is the
format at the time of writing:
U)ser Name.......<name>
C)ity............<city>
H)elp Level......<n/r/e> S)creen Clears...<y/n> T)ab Expansion...<y/n>
E)ditor Type.....<l/s> ANSI G)raphics...<y/n> LineF)eeds.......<y/n>
Screen W)idth....<width> R)emove Color....<y/n> N)ulls...........<num>
Screen L)ength...<length> I)BM.Characters..<y/n> See Seen-B)y's...<y/n>
M)ore Prompts....<y/n> >)Highlite quote.<y/n> See K)ludges.....<y/n>
+)Auto-Next-Area.<y/n> D)estructive BSp.<y/n> V)erbose Scan....<y/n>
Msg Z)Scrolling..<s/p/w> X)ecute At Login.<stack>
Marked A)reas:
Message: <area list>
File: <area list>
A)rea Marks Toggle marks on file or message areas. Enter M or F to
select which type (defaults to M), or a number to toggle an
area. Hit return or enter Q to quit back to the Change Menu.
B)SEEN-BY Lines SEEN-BY: lines usually follow the Origin: line of an echo
message. Since they aren't the least bit interesting,
they're normally detected and hidden. They can be shown if
this option is toggled to YES.
C)ity Obvious. Change the city the user lives in.
D)estr. BackSp. If, when your terminal displays a Backspace (ASCII 8)
character, it erases the character under the cursor's new
position, you have a destructive backspace. If there is no
effect other than moving the cursor, you have a non-
destructive backspace. Falcon will give you a brief test to
see which you have. Making sure this is set correctly is
important because it is used in prompt editing and in
erasing "More [Y,n?]" prompts.
E)ditor Type Toggle between the the LINE-oriented editor (called LORE)
and the SCREEN-oriented editor (called FRED, after Falcon's
Rapid EDitor). If you have a large enough display (60x10 or
more), are calling at 1200 baud or more, and you are running
with a terminal that supports ANSI (with Insert/Delete Line/
Character codes), you should set this to SCREEN.
F)Linefeeds Toggle linefeeds on or off. Do NOT turn this off if you
need them! Everything will suddenly be displayed on one
line if you do. Local console users must be especially
careful because the local screen always gets linefeeds and
the effects may not be seen until they log in from remote.
If you happen to get that effect without realizing how you
did it, then this is the toggle for you.
G)ANSI Graphics Toggle ANSI positioning and color codes on and off. If you
have them on and you see a lot of things like "[0;36m", then
your terminal does not support ANSI and you should turn it
off here. See also R)emove Color.
H)elp Level Sets the help level. There are three levels, and they give
the following format to most menus:
NOVICE:
<menu name> MENU: Type "??" by itself for help
<brief help, as when "?" is typed>
Select:
REGULAR:
<menu name> MENU: <command letters available>
Select:
EXPERT:
<menu name> MENU:
Select:
Variations exist in the Message, File, and User Edit menus.
It is suggested to users on floppy-based systems that they
not use NOVICE, as the brief help is read from a text file
every time. Letter help is also read from the same help
file, but it is cached at run-time to avoid noticeable
pauses for such a small amount of text.
I)BM Characters Toggle whether or not Falcon sends out IBM (ASCII 128-255)
characters on purpose. Off the top of my head, I can only
think of the dividing lines in the screen editor, which are
either dashes or horizontal IBM graphic bars, depending on
this setting. Note that they are not actually filtered out
if they come up in unexpected places. Maybe later.
K)ludge Lines Kludge lines are message lines, usually in echoes or netmail
areas, which contain control information and are usually
hidden because the line starts with Control-A (called an
IFNA Kludge, for reasons I don't care to explain). They can
be shown if this option is toggled to YES.
L)Screen Length Change screen length, in the range of 2-100. There will be
a test if the length is not stacked (ie. "L25").
M)"More? [Y,n]" Toggle "More? [y,n]" prompts at the end of each page of text.
N)ulls Determine the number of "filler nulls", or ASCII 0
characters, to be sent out after each carriage return. I
think it's meant for systems with small receive buffers and
slow scrolling. Note that this has never actually been
implemented in the BBS, but it's there for doors. I suspect
nobody actually needs them anymore, but we'll see if anyone
complains.
P)assword This changes the user's password. It first asks for the old
password, to be sure nobody has walked in while the real
user was, say, answering the call of nature. Then it asks
for a new one and asks again to confirm that it got it right.
Q)uit to Main Simply moves to the Main Menu. Hitting <return> also does
this.
R)emove Color Toggle suppression of color when ANSI is on. If your term
supports ANSI, but you don't want the colorful display, you
can use this to turn it off. This is also useful if your
terminal is monochrome anyway, as it cuts down on the amount
of escape codes transmitted. You still get the advantage of
screen positioning codes and the full-screen editor if you
use it.
S)creen Clears If this is set to YES, the screen will be cleared in various
places, such as the beginning of each message, or the entry
to the message menu, or the change menu, etc. If it is set
to NO, a blank line will be sent instead of a screen clear.
This does not affect the screen editor, of course.
T)ab Expansion Toggles whether or not Tab characters are expanded to
spaces. This is not actually used in Falcon itself, but it
is available for doors to use.
U)ser Name Obvious enough. Allows the user to change their name.
Normally this will not be available to the average user.
Note that it is not permissible to change the name to
"Sysop" or "All".
V)erbose Scan If this is toggled to YES, using the special area-scanning
commands will display the area numbers as they are scanned.
Most useful, I imagine, for floppy systems. On a hard drive
the pause is negligible.
W)Screen Width Change the screen width, in the range of 16-160 columns.
X)ecute @ Login Change the command stack to be executed automatically at
login. Use " " to clear it. There is a maximum of 25
characters. I personally recommend "FLM* Q_MAF", which
locates and displays all new files in all marked areas,
stops and waits for the user to hit return, then finds the
first marked message area with new messages. This of course
assumes that the user has marked their favourite areas.
Note that the starting place is (obviously) the Main Menu.
Z)Scroll Mode This affects the way a message scrolls. This does not
affect Zoom or Continuous read modes.
S ... Normal scrolling.
P ... Display one page at a time under the message
header. This requires ANSI and More prompts.
W ... Scrolls a window of text under the message
header. This requires ANSI with Delete-Line
codes.
+)Auto-Next If this is set to YES, and all available material has been
seen in the current area, hitting return will either skip to
the next marked area with new material or return to area 1.
Applies to both file and message areas.
>)Quote H.Light Toggles highlighting of quote lines in messages. Meaning, if
ANSI color is on, will turn ">"-style quotes white while the
the main text is cyan.
^)Capitalizing Presently this only toggles Mcname or Macname with McName or
MacName. However, I'm going to have to change that sooner
or later because there are other oddly-capitalized names out
there.
Edit Menu
---------
Note that this menu is somewhat different, as it is accessed from the line-
based message editor. See the section on that editor for more information.
If you are logged off while in this menu, your message will be saved with a
note at the bottom saying that it was done automatically due to a
disconnection.
C)ontinue Continue message where you last left off (or set the
cursor). This may drop you into the middle of the message
if you have put the cursor there.
N)ew Message This simply reinitializes the message buffer (to a blank
message). Good if you give up on your current text but
still want to say something.
A)bort Message Obvious. Exit the message editor without saving the
message. There will be a y/n prompt to see if this was done
on purpose. Note that there is an invisible Q)uit Message
command that does the same thing.
F)Change Flags Use this to toggle the following message flags (if
applicable): Pvt, Crash, Kill (after sending), File
(as in file-attach).
T)o Change the "To:" field of the message. If "Sysop" is
entered, it may be redirected to a real name if the sysop
has set up the program to do so.
J)Subject Change the Subject: field of the message.
D)Delete Line Delete one line of the message. Note that this deletes one
physical editor line, and not any lines which is may wrap
to.
W)rap toggle Toggle whether or not a certain line wraps around to the
next. Meaning whether the next line continues the paragraph
that this line was part of.
I)nsert At Select the new position to insert text at - note that it is
perfectly fine to pick a place in the middle of the
message. There will be a notice about which line to pick
for the end of the message, which will normally be the
highest line + 1.
E)dit Line Perform a search & replace function on one line. Note that
the search string is not case-sensitive.
L)ist Message List message, including header - except for line numbers,
this will look very similar to what a user would see when
they read the message.
S)ave Message Clear enough. Save the message and exit the editor.
H)elp Transmits an extended help file with information on for
using the line editor itself.
Subop Menu
----------
A)ll Keys/Marks Give out or take away all area keys, write keys, or marks.
C)ode/Tag Change the area's mail code/tag, ie. "AMY_POINT".
D)irectory Change the area's regular directory/path. If the path for
the area does not exist, there is an option to create it.
Use "." for the current directory, since hitting return
aborts.
F)Toggle Flag Toggle one of the area flags: INVISIBLE, LOCKED, READONLY,
PRIVATEONLY, PUBLICONLY, WRITELOCKED, AUTOKEY, or
AUTOWRITEKEY.
I)nformation Display information about current area: name, code,
directory, level, password, type, flags.
R)eload Stats Rereads the area's directory to determine the number of
messages and the highest message. This can be used if the
cached statistics appear to be wrong.
K)Toggle Key Toggle one user's area key.
L)evel Change the area's minimum entry level, ie. PRIVIL.
M)Toggle Mark Toggle one user's area mark.
N)ame Change the area's verbose name, ie. "General Messages".
P)assword Change the area's password. Use "-" to turn it off, since
hitting return aborts.
Q)uit Moves/quits to the Message Menu. Also saves message area
configuration file if necessary.
T)Area type Change the area's type: NORMAL, ECHO, or MATRIX.
V)iew Users List users: A)ll users, users I)n the area, users O)ut of
the area, users who can W)rite, M)ute users, and users
S)earched for.
W)Toggle Write Toggle one user's write key.
#)Renumber Renumber the area's messages. When it asks for the "first",
it means the lowest message that could be deleted - note
that all messages below the first must exist. This is used
mainly to preserve echo highwater messages (1.msg) by
starting with message 2 (note - it will still adjust reply
links for messages below this, as it should). When it asks
how many should be left, it wants to know the number of
messages that can remain at or above the first after
renumber is done. Use a very large number to just renumber
and not reduce (ie. # 1 5000). Note that is is perfectly
fine to ask for zero messages to be at or above the starting
point.
Librarian Menu
--------------
A)ll Keys/Marks Give out or take away all area keys or marks.
C)ode/Tag Change the area's mail code, ie. "GENERAL".
D)irectory Change the area's regular directory/path. If the path for
the area does not exist, there is an option to create it.
Use "." for the current directory, since hitting return
aborts.
F)Toggle Flag Toggle one of the area flags: INVISIBLE, LOCKED, READONLY,
or AUTOKEY.
I)nformation Display information about current area: name, code,
directory, upload directory, level, password, type, flags.
K)Toggle Key Toggle one user's area key.
L)evel Change the area's minimum entry level, ie. PRIVIL.
M)Toggle Mark Toggle one user's area mark.
N)ame Change the area's verbose name, ie. "General Files".
P)assword Change the area's password. Use "-" to turn it off, since
hitting return aborts.
Q)uit Moves/quits to the File Menu. Also saves file area
configuration file if necessary.
T)Area Type Change the area's type: NORMAL, or MATRIX.
U)pload Dir. Change the area's upload directory/path. If the path for
the upload area does not exist, there is an option to create
it. Use "." for the current directory, since hitting return
aborts.
V)iew Users List users: A)ll users, users I)n the area, users O)ut of
the area, and users S)earched for.
Sysop Menu
----------
A)dd Area Use this to create a new message or file area, to be
customized with the Subop or Librarian menus, respectively.
If the path for the area does not exist, there is an option
to create it. Use "." for the current directory, since
merely hitting return aborts.
D)irectory Displays a DOS "List" command-style list of files in a given
directory.
E)UserEdit Menu Simply moves to the User Edit Menu.
F)ile Areas Displays all file areas, in this format: "<area> <type>
<level> <Lock,PW,Inv. flags> <description>".
K)ill Log If the Sysop has a LOGFILE, it can be deleted with this.
L)System Log If the Sysop has a LOGFILE, it can be displayed with this.
M)essage Areas Displays all message areas, in this format: "<area> <type>
<level> <Lock,PW,Inv. flags> <description>".
Q)uit Moves/Quits to the Sysop Menu. Also saves message area
and/or file area configuration files if necessary.
S)wap Areas Allows one to exchange two message or two file areas. This
is used for rearranging areas. Use this instead of editing
the area files because it also swaps all area information,
user pointers, keys, etc. It is permissible to swap a real
area for an empty one, except that area 1 must be a real
area.
T)ype File Display a given file. Only sysop can type *.msg, user.bbs,
user.bak.
User Edit Menu
--------------
The prompt for this menu also shows the currently selected user (or
"<none>").
A)dd User Creates a blank user in the user.bbs file. They are given
the default new user level, or NORMAL if the system is
configured not to take new users. This new user should next
be edited with other commands to personalize it.
C)ity Simply changes the City for the currently selected user.
D)elete User Deletes the current user (if it's not the user doing the
editing), but prompts first to be sure it was intended.
Note that this sets the record to "unused" (designated by a
blank name) for later use. It does not actually shorted the
user log.
E)dit User Select a user to edit. Gives option to save current user,
if necessary. When selecting, it is possible to search for
a user name (or number). Use "*" to search through all
names. When searching, the user will be prompted about
whether this is the user they want or not, and to see if
they want to abort this search. Use "?" to list all names
without prompts.
H)Toggle Hidden Hides (or unhides) selected user from users lower than SYSOP
in various user lists.
I)User Info Shows the following user stats: name, number, status of
"hidden" flag, city, password (if in local mode and user
looking is of SYSOP level), last time on, level, netmail
credit, time on & time limits, downloads & download limits,
calls, messages entered, and the various keys they have
(message, message write, file, subop, librarian).
K)Toggle A Key Toggles any key (message, message write, file, subop,
librarian). Note that only a SYSOP-level user can grant
subop and/or librarian keys.
L)User Level Set the currently selected user's level. A level higher
than the giver's cannot be granted. Note that this
modifies time/transfer limits if necessary.
User levels are as follow: TWIT, DISGRACE, NORMAL, PRIVIL,
ASSIST, and SYSOP, in ascending order. TWIT is normally
punishment. DISGRACE is normally used for new users
awaiting verification. NORMAL should be what the general
rabble have. PRIVIL is for preferred users. ASSIST is
obviously for assistants. And, of course, SYSOP is the
biggie and needs no explanation.
N)ame Simply changes the Name the currently selected user.
P)assword Change the currently selected user's password. This is only
available to SYSOP-level users at the local console.
Q)uit Moves/quits to the Sysop Menu. Also gives option to save
user or abort the exit if a user is currently selected.
T)ime/Transfer Set time and/or transfer limits. If there is no user
selected, this affects all users of given level. Asks for
time per day, time per call, download per day, download per
call, and whether or not to clear the user's accumulated
downloads.
V)alidate User "Validate" the currently selected user. If their level is
less than NORMAL, it is set to NORMAL and the time/transfer
limits are adjusted.
$)Net Credit Set netmail credit in cents. (Yes, folks, I know not all of
you use dollars and cents. Sorry. Maybe it'll be
configurable later.)
7. Entering and Editing a Message
==================================
Starting a message
------------------
Starting a message is a matter of either E)ntering one or R)eplying to one
in the Message Menu (also, you could leave a logoff message to the sysop).
The very first thing that may be asked, assuming the message is a reply, is
whether or not you want to quote the message into the message buffer. If you
do, it will be quoted in the (de facto) standard " initials> some quoted
text" style, with a header line that says, "In a message dated <datestamp>,
<sender> wrote:"). If you do this, please make sure you delete all the text
you do not want, or else you'll be wasting disk space and the reader's time.
The next thing you will be asked, unless you are a user with a level lower
than sysop in a public-only or private-only area, is whether or not you want
the message you are about to enter to be private. A private message cannot
be read by normal users. Only the sender, the recipient, and users with
a user level of SYSOP can read it.
Next, if this is a netmail message and your level is SYSOP, you will be asked
if you want to send the message as CrashMail. The reason this is restricted
to SYSOP is because CrashMail goes out immediately after the call, and
DIRECTLY to the destination without routing. In other words, we can't have
Joe Jerk sending a "HI! I'M JOE, WHO ARE YOU?" message to Tokyo (or
Saskatoon, if you happen to be reading this in Tokyo). Note that the actual
sending of CrashMail is up to the mail tosser and mailer. Falcon just flags
it as being such mail.
Next, if this is a netmail message, you will be asked if you want this
message to be killed after it is sent. If you cannot figure out what this
results in, you are a stupid festering hunk of goo and do not deserve to
send netmail.
Again, if this is a netmail message, you will then be asked to enter a
destination address. If this is a reply, the default address will be the
sender's address in the message you replied to, and if not it will be the
address of the system you are on. See "Entering a FidoNet Address", below,
for more information on doing so.
Next, a simple "To:" prompt. This is, obviously, the name of the person
you want to send this message to. If the message is a reply, the original
sender's name will be the default. If you're sending a private message,
this name will be checked against the user list, and if it's not in there,
you will be warned that there is nobody by that name to receive it, and
asked if you want to try again. You can use "?" for a name if you want to
look through the user list to, say, find the proper spelling of a name (you
can search for a string or list all users by hitting return). Note that if
you send to "Sysop", your message will probably be re-directed to the
sysop's real name.
Next, if this is a netmail message, you will be asked if you want this
message to have a file or files attached to it. The file(s) will then be
named in what is normally the Subject line. See your mail tosser
documentation to be sure that it supports this, and to see what the syntax
is supposed to be for the Subject line, because I've never used this and do
not know anything about it except that Falcon sets the File-Attach bit.
Finally the Subject: prompt, which is obvious enough. If this is a reply,
the default for this prompt is the subject of the original message, with a
"Re: " prepended if one is not already there. Just for your information,
"Re" is apparently an originally-Latin word ("res") which means "Concerning"
or "In the matter of" (or "Regarding" if you need a "re" word in order to
remember). It doesn't stand for "Reply".
Note that the Subject: prompt will say "File(s):" instead if this is a file-
attach message.
Entering a FidoNet address
--------------------------
The simplest thing to do is to hit return, which will enter the default
address. This may be the desired address if, for instance, the address
being prompted for is the destination for a reply.
The syntax rules for entering an address are as follows:
1) Entering a number preceded by a "." changes the point
2) Entering a number preceded by a ":" changes the net
3) Entering a number followed by a ":" changes the zone
4) Entering a number followed by a "/" changes the net
5) Entering a number followed by a "." changes the node
6) Entering a number followed by nothing and preceded by nothing or
a '/' changes the node, and sets the point to 0
Several rules may apply in a string, ie. "123/45" uses the fourth and sixth
rules, in that order. Since it's not necessarily clear from the rules what
to do, here are some useful forms which show that the rules really just
describe the format you'd probably want to use anyway:
node to send to a node in your net, implies .0
net/node to send to a net/node in your zone, implies .0
zone:net/node to send to zone:net/node, implies .0
.point to sent to a point off of your node or your boss
node.point to send to point in your net
net/node.point to send to a net/node.point in your zone
zone:net/node.point to send to zone:net/node.point
zone: to set the current zone without exiting the prompt
net/ to set the current net without exiting the prompt
node. to set the current node without exiting the prompt
Obviously "zone", "net", "node", and "point" would be replaced by numbers.
Other stuff you can enter at the address prompt, if the program has access
to a nodelist:
Z or : by itself gives a listing of zones (quite slow)
N or / by itself gives a listing of nets in current zone (slow)
O or # by itself gives a listing of nodes in current net
P by itself gives a listing of points off of current node
Once an address has been entered, it will be checked for existence. If
there is a nodelist, only SYSOP-level users will be allowed to send to non-
listed destinations (with a warning). If there is no nodelist, the user
will be warned that the destination may not exist.
If a message is not local, its cost will be obtained from the address'
listing in the nodelist, or from the default cost set up in the
configuration if there is no nodelist. Users with insufficient credit will
not be allowed to send to that node.
Saving a Message
----------------
First, the program opens the disk file and writes out the header. Then it
writes out any applicable control lines. The comes the actual message
body. Finally, for echo messages, tear/origin lines (if not already
present) and blank SEEN-BY and PATH lines if the program has been configured
to do so.
Then, if the message is a new reply, Falcon tries to link it onto the end of
the reply chain, noting any other replies as it does so.
Finally, it subtracts netmail credit if this is a netmail message and the
user has a level lower than SYSOP.
If Falcon can't save the message, it returns to the editor, telling the user
to either abort or wait and try again later. The exception to this is if
the message is being saved due to a disconnection, of course.
The Editors Themselves
======================
LORE ("Line ORiented Editor")
-----------------------------
This is for people who either have an insufficient display size or an
insufficient/non-existent ANSI driver in their terminal program. It's
an amalgamation of the best parts of every line editor I've ever used,
spliced together as well as possible.
Text entry in the line editor can be as simple as the average line editor:
enter text continuously, hit return only at the end of paragraphs, and use
backspace to erase & correct errors. Words will automatically be wrapped
to the next line if the line nears your screen's width, so you need not hit
return anywhere except the ends of paragraphs. (If you hit return at the
end of each line, the message may not be formatted correctly for someone
with a different screen width from yours.)
However, this editor also allows full usage of Falcon's fairly versatile
prompt-editing commands. Please refer to the Line Editing and Command
History section for more information on general line editing features.
The notable differences between the prompt and the line editor which are
described there but which bear repeating here are as follows: using the
up/down commands normally used to move through the line history will
instead move through the message, and using the backspace command at the
start of a non-first line will delete the current line if it is empty,
then move to the previous line and make it wrap (think of it as deleting
the carriage return if there is one).
When you are finished entering text, or you want to do something like
listing the message, you can either hit return on a blank line, or use
ESC-ESC if that would be inconvenient (ie. editing the middle of a
paragraph). That will take you to the Edit Menu (where you should be right
now), which has its own documentation and therefore won't be discussed here.
However, I will note that using I)nsert Text to move the cursor to a
certain line may put you on the line before it if that line wraps. It
makes sense if you think about it.
Use "<space><return>" if you want to enter an actual blank line into your
message.
About entering text in the middle of the message: If you have moved the
cursor into the middle of your message, remember that you are _inserting_
the text, not overwriting. So you can add a paragraph to the middle of
a message or text to the middle of a paragraph.
Finally, you might note that the line number is followed by either a ":" or
a ">". If it's followed by a ">", this is the start of a new paragraph
(ie. you hit return on the last line), and if it's a ":", then this is a
continuation of the previous line. Simple, huh?
Note that if you are logged off for some reason, the message will be saved
with a note to that effect at the bottom.
FRED ("Falcon's Rapid EDitor")
------------------------------
(To avoid redundancy, only the important or local-user-relevant information
will be highlighted here. Please refer to the online help by typing "^Kh"
for more comprehensive documentation. Obviously, the sysop can just type
the help/longhelp.bbs file.)
Suggestion: As is noted elsewhere, the cut/paste buffer is a temporary file
in "T:". Putting "T:" on a RAM disk or on a reasonably fast hard drive is a
good idea.
A local user can click in various bits of the screen. If the click is
between the two dividing lines around the main text, the cursor will simply
be moved as close to the click as possible. If the cursor is already there,
the mark will be set at that position. If the click is on one of the
dividing lines, the result will be a page-up or -down, with the exception
that clicking on the INSERT/OVSTRK indicator on the bottom line will toggle
it instead of paging down. Finally, clicking on the header edits it.
Also available to the local user are the usual online menus (meaning Amiga
menus, not BBS menus), plus two new ones that are normally ghosted. Here
they are, listed by their menu shortcuts:
Fred
----
S Save Simply saves the message.
A Abort Abort the message, but only after a
confirmation prompt
N New (clear) Erase message and start again, but only after
a confirmation prompt
Fred-Edit
---------
M Set Mark Set the mark to the current cursor position
X Cut Cut the marked area of text out of the
message into the cut/paste buffer
C Copy Cut the marked area of text into the
cut/paste buffer
V Paste Insert the contents of the cut/paste buffer
into the message at the cursor position
F Import File Load a textfile into the cut/paste buffer for
pasting into the message. Local mode only.
K Kill Line Cut the line under the cursor out of the
message and put it in the cut/paste buffer.
E Kill to EOL Cut the line under and to the right of the
cursor out of the message and put it in the
cut/paste buffer.
I Toggle Insert Toggle insert/overstrike mode.
Requirements:
FRED will only work for a user with a screen of minimum dimensions 60x10.
Further, they must be calling at no less than 1200 baud, and they must have
ANSI turned on. It should also be pointed out that their ANSI emulation
must be sufficient. Terminals which work so far are: Any Amiga term which
uses the console.device for screen output (95% of them do), and Telix for
MS-DOS. Amiga's JRComm lower than v1.01 does NOT work, but v1.01+
apparently does in IBM ANSI mode. MS-DOS's ProComm does not seem to emulate
the codes, though I've only tried testing it with echo-back from the modem.
I'm told the MacIntosh terminal ZTerm works. Anything else is a big
question mark, and should be tried out. Refer to "ANSI Used in Output",
elsewhere in this document, for more information. Please report any
findings so they can be included in this list.
8. The Goodbye (Logoff) Sequence
=================================
This first asks the user if they are sure they want to log off. This avoids
accidental logoffs. If they say no, they are returned to the Main Menu (note
that it is ALWAYS the Main Menu, no matter which menu they were in when they
tried logging off).
If they are sure they want to log off, and if there is a logoff message area,
they will be asked if they wish to leave a private message to the sysop.
If they say yes, they will be dropped into their selected editor to leave
such a message. Whether they save or abort, they will then be logged off
when they exit the editor.
When they are logged off, they may see a logoff text file if one has been
created by the sysop, and then a brief message saying something to the effect
of "Disconnecting <name> on <datestamp>." Then it will either hang up or
perhaps return to a program which ran the BBS and let that program hang up.
9. XPR (eXternal PRotocol) File Transfers
==========================================
The XPR transfer display shows the following information, if applicable:
.----------------------------------------------------------------------.
| Transfer type: <protocol name, ie. "Zmodem"> |
| |
| Last message: <last message, ie. "Sending File"> |
| Last error: <last error, ie. "CRC error"> |
| |
| File name: <file name> |
| File size: <size in bytes> |
| |
| Est. xfer time: <protocol's estimate> Errors: <# errors> |
| Elapsed time: <varies> Timeouts: <# timeouts> |
| |
| Block size: <size in bytes> Packet type: <descr.> |
| Blocks sent: <number of blocks> Packet delay: <not sure> |
| Bytes sent: <amount transferred> Char. delay: <not sure> |
| Bytes/sec: <protocol's estimate> Checksum type: <ie. CRC-16> |
`----------------------------------------------------------------------'
Note that this display loses some information, like the filename, if the
screen is toggled because I am only allowed to display strings when I am
told to by the protocol. The numbers are generally updated quite often, so
they will be refreshed. Note that if you really want to see the filename
after it's been erased by toggling the screen, the Status window will
contain a copy of it in the Where: slot. I can remedy this loss of
information by allocating some memory to hold the information I was last
told about, but is it really that important?
The CPS rate may be off for file sends. This is because output is buffered
to avoid pauses while data is read from the disk, and the XPR library does
not know that. The final CPS rate may be near correct, but the rate Falcon
calculates after the transfer is more accurate, especially since it counts
from the first time the two sides shake hands, instead of the time this
side starts looking for the other side. Some people like to be thorough in
their estimates, but I like to know how fast the transfer was going *only when
it was actually going*.
The transfer may be aborted by typing Escape, ^C, or ^X. Typing '.' toggles
the screen mode, because there isn't a menu for it. If there was and you
typed the Right-Amiga-'.' menu shortcut, you'd end up with a regular '.'
anyway, thus this command. Similarly, if the transfer is taking place in the
BBS, entering '/' or '?' will toggle the status window.
The transfer will also be aborted on loss of carrier, and also by a time-up
if it is taking place in the BBS.
Note that if you have configured the program to turn off the third plane during
transfers, to retrieve the DMA time a 3+ bitplane hires screen steals, the
window will come up in yellow on red instead of white on blue, because the
latter two colors are not available in the now-four-color screen. No big deal,
but I thought I'd mention it.
If a file is being received in the BBS, it will have the user's name put
into the filenote of the file, starting at the fortieth column (which makes
it line up neatly for the DOS List command). This is used for continuing
or replacing files. If a user uploads to a file that already exists, their
name is checked against the one on the file. If it matches (or, for that
matter, if they are of SYSOP-level), they are allowed to continue the upload
or replace the file, depending on whether or not the protocol is configured
to resume a receive.
10. FTerm
==========
To save the bother of exiting the BBS and loading up a terminal program,
Falcon comes with a small terminal program that can lean on the main
program's code to save space. It also has a timeout option, which means if
you walk away from the terminal and forget about it, the BBS will be brought
back up automatically after a while. It saves wear and tear on your users.
Anyway, first, FTerm will load up term.bbs, and exit back to the BBS with an
error string if something was wrong.
Otherwise, if there is no carrier present, it'll display a little header with
its name, version, copyrights, and the like, then send the term.bbs INIT
string to the modem and drop into the terminal mode. If there IS a carrier,
it'll just drop straight into the terminal mode without any of the intro/init
business (note that the baud rate will be set to the maximum, which may or
may not be correct for the current connection).
There's nothing really special about the terminal itself. About all it does
is filter out shift-in/shift-out characters, because these can put you into
a weird mode where all characters have 128 added to them before they are
displayed. Messy.
The term menus:
Menu Item Shortcut Action
-----------------------------------------------------------------------
Term
Re-Load Config L Re-reads term.bbs, reinits if no carrier
Phone dir F Enters "F"one directory, if possible
Redial R Either continue dialing or enter phone dir
View Buffer V Enter review buffer
Save Buffer B Save entire review buffer to disk
Hang up H Send term.bbs HANGUP string
Modem re-init M Send term.bbs INIT string
Screen Toggle . Flip between WorkBench window and full screen
About FTerm Shows a submenu with brief information on FTerm
Config
Baud Select baud rate from submenu:
110 1 Change to 110 baud
300 2 Change to 300 baud
1200 3 Change to 1200 baud
2400 4 Change to 2400 baud
4800 5 Change to 4800 baud
9600 6 Change to 9600 baud
12000 7 Change to 12000 baud
14400 8 Change to 14400 baud
19200 9 Change to 19200 baud
38400 0 Change to 38400 baud
Word Length Select word length from submenu (not implemented):
8 Change to world length 8
9 Change to world length 9
Parity Select parity from submenu (not implemented):
None Change to no parity checking
Even Change to Even parity
Odd Change to Odd parity
Mark Change to Mark parity
Stop bits Select stop bits from submenu (not implemented):
1 Change to 1 stop bit
2 Change to 2 stop bits
Misc Miscellaneous settings
Incoming... I Do or don't convert incoming CR's to CR/LF's
Outgoing... O Do or don't convert outgoing CR's to CR/LF's
Local Echo E Do or don't echo outgoing chars to the screen
Protocol Select an XPR protocol if there are any
None (means there aren't any)
<protocol> <?> Change current protocol to <protocol>
Transfer
Toggle Send S Start or stop an ASCII send
Toggle Capture C Start or stop capturing text to disk
Upload U Upload file with the current protocol
Download D Download file(s) with the current protocol
Special Keys
------------
The cursor keys, keypad, and function keys can all send configurable strings.
See term.bbs documentation.
The Help starts review buffer. Since it also exits the review buffer, one
could think of it as a toggle, really.
Transfers
---------
The ASCII send just sends the data in a file straight to the modem, with
the pauses set up in term.bbs, and possibly CR->CR/LF translation depending
on whether or not it's been turned on.
The ASCII capture writes incoming data to a file. Note that it captures ALL
characters, including ANSI sequences.
Downloading may ask for both a directory and a filename, or just a directory.
This is based on whether or not the program has been told that the current
protocol will be told the filenames by the sender.
Uploading will ask for both a directory and a filename. Sorry, I haven't
gotten around to batch sends.
Both downloading and uploading will finish by showing the total transfer time,
the return code from the protocol (which may not be a reliable indicator of
the transfer's success, by the way), and a chars/sec rating for the entire
transfer. Note that this CPS rate will be more accurate for uploads, because
the output buffering the program does often confuses the library.
In Case of Problems with Display Positioning
--------------------------------------------
As it happens, bringing up the review buffer or the dialing directory also
resets the positioning of the display. You see, certain ANSI codes can move
the location (in pixels) of the upper left corner of the character display.
If your text seems out-of-place, try doing something to clear the screen (to
make sure the code that caused it isn't displayed again when the display is
refreshed), then enter and exit the review buffer or the dial directory.
The Review Buffer
-----------------
The review buffer is used to look back through text that may have scrolled off
of the screen. It holds the last N bytes (where N is the number from
falcon.cfg's REVBUFSIZE command) of text displayed to the screen, including
both the text displayed in the term AND any text displayed while in the BBS,
since the review buffer doubles as a sort of memory of what's been on the
screen even when the program is in tiny mode.
The review buffer will take your screen size and font into account, and put
as many lines of review text into your screen as it can, except for the
top and bottom lines, which are used for a title bar and a gadget bar.
This review text will have the color stripped out, which allows for much,
much faster scrolling when moving about. It does, however, understand
the ANSI cursor-movement codes, and backspaces, and the like, so everything
should come out in the right place... just in monochrome. Actually, I
should note that it can't work with move-to-row,col commands, so full-screen
editing sessions tend to end up all on one line, which is just as well.
The gadget bar contains seven gadgets:
DONE Exits review buffer
TOP Moves to earliest part of buffer
END Moves to most recent part of buffer
PGUP Moves back one page in buffer
PGDN Moves forward one page in buffer
/\ Moves back one line in buffer
\/ Moves forward one page in buffer
There are also key commands:
Up Moves back one line in buffer
Down Moves forward one line in buffer
PgUp Moves back one page in buffer (also Shift-Up)
PgDn Moves forward one page in buffer (also Shift-down)
Home Moves to earliest part of buffer
End Moves to most recent part of buffer
. Toggles screen mode, because there isn't a menu for it. If
there was and you typed the Right-Amiga-'.' menu shortcut,
you'd end up with a regular '.' anyway, thus this command.
Left, Right, Help, Space, Q, Escape, Return all exit the Review Buffer
On exit, the text that was on the screen before will be refreshed to the best
of the buffer's ability, for you to continue your session.
File Requester
--------------
I'm not using any special file requester at the moment. It's just two
prompts. This is because I've foolishly been expecting Commodore to release
2.0 for the last year and a half, at which point I would use the built-in
requester. (Note: CBM finally announced that 2.0 will be released next
month (October), so I've removed the very nasty remark that used to be in
this spot.)
At any rate, it simply asks for a directory, with a path already filled in
based on the defaults set in term.bbs. Use ^X to kill it and enter another.
Then it may ask for a filename, which should be easy enough for a genius like
you to figure out without instructions.
Dial Directory
--------------
First, it should be noted that one cannot bring up the dialer if there is
a carrier present, or if there are no entries in the directory.
The dial directory will take your screen size and font into account, and put
as many directory entries into your screen as it can, except for the top and
bottom lines, which are used for a title bar and a gadget bar.
Each entry in the directory will contain the name of a BBS (or person, or
whatever), the number, the baud rate, and a comment. The entry which is
inverted is the entry the cursor is currently on, although in some cases it
may not be inverted (see below). An entry with a purple background is
selected.
The gadget bar contains four gadgets, along with the entries:
OKAY Start dialing the currently-selected entries, in order
CANCEL Return to term without dialing
/\ Scroll window back one line, if possible
\/ Scroll window forward one line, if possible
<entry> Each entry can be toggled by clicking on it. Note that this
moves the cursor to that entry and makes it (the cursor)
invisible.
There are also key commands:
Up, Left
Move cursor back one entry if possible, and make it visible
if it isn't. Scrolls window if necessary.
Down,Right
Move cursor forward one entry if possible, and make it visible
if it isn't. Scrolls window if necessary.
Home, Shift-Up, Shift-Left
Move cursor to top entry in window, and make it visible if it
isn't.
End, Shift-Down, Shift-Right
Move cursor to top entry in window, and make it visible if it
isn't.
Q, Esc Return to term without dialing
Return Start dialing the currently-selected entries, in order
Space Selects/deselect entry under cursor, and make it (the cursor)
visible if it isn't.
. Toggles screen mode, because there isn't a menu for it. If
there was and you typed the Right-Amiga-'.' menu shortcut,
you'd end up with a regular '.' anyway, thus this command.
Dialer
------
The dialer will dial all selected entries, starting with the ones nearest the
top of the directory, going down, and starting again at the top when it hits
the end. If there are no entries selected (due to deletions or none to begin
with), it will return to the directory.
The display takes up the top 8 lines of the display, top and bottom being the
title and gadget bars. The ones between show the current name and number,
number of attempts, the time left for the current attempt or pause between
attempts, and the last string received from the modem.
To dial, the program sends the term.bbs DIAL string to the modem, the phone
number, and the falcon.cfg ENDOFLINE string. It then waits for DIALTIME
seconds. If it receives a CONNECT_* string, it will return to the term
with the baud rate after deselecting the current entry. It may also connect
at the current baud rate if it receives no string but sees a carrier.
If it doesn't connect within the time limit, it sends the STOPDIAL string
and waits BETWEENTIME seconds before starting again with the next entry.
Note that if someone attempts to phone you between attempts, the term may
detect it, and if set to in term.bbs, will exit and let it continue to
ring so that you can answer it.
The gadget bar contains four gadgets:
OKAY Connect without waiting. Meaning, return to the term at the
current entry's baud rate after deselecting the current entry.
CANCEL Hang up, stop dialing, and return to the directory.
SKIP Hang up and skip to the next selected entry.
DELETE Hang up, deselect the current entry, and skip to the next
selected entry.
There are also key commands:
Tab, Space
Hang up and skip to the next selected entry.
C Connect without waiting. Meaning, return to the term at the
current entry's baud rate after deselecting the current entry.
Esc, Q Hang up, stop dialing, and return to the directory.
Del, Backspace
Hang up, deselect the current entry, and skip to the next
selected entry.
. Toggles screen mode, because there isn't a menu for it. If
there was and you typed the Right-Amiga-'.' menu shortcut,
you'd end up with a regular '.' anyway, thus this command.
11. Configuration Files
========================
Falcon's config files all follow the same basic syntax:
word is a non-quoted whitespace-terminated series of chars
ie. 'Main' in the menus.bbs command 'MENU Main'
num is a word that only contains digits, possibly preceded
by a '-', ie. the arguments in 'DEF_DAY_TIME 1 2 3 4 5 -1'
str is a quote terminated series of chars
ie. '"ATZ\r"' in the Falcon.cfg command 'RESET "ATZ\r"'
if a str can fit into a word, it is permissible to omit
the quotation marks, ie. 'ADDRESS 1:140/22.2@FidoNet'
instead of 'ADDRESS "1:140/22.2@FidoNet"'
Whitespace is one or more of the following: tab, space, or carriage return.
Commands are generally words. Arguments may be any combination of words
and strings.
Strings have special escape chars that are interpreted when they are read
into memory:
\n newline (linefeed, ASCII 10, ^J)
\r carriage return (ASCII 13, ^M)
\t tab (ASCII 9, ^I)
\b backspace (ASCII 8, ^H)
\f formfeed/screen-clear (ASCII 12, ^L)
\e escape (ASCII 27, ^[)
\nnn ASCII character with octal value nnn (may be \n or \nn)
\xnn ASCII character with hex value nn (may be \xn)
\innn ASCII character with integer value nnn (may be \in or \inn)
\<c> character <c> (used for backslash, for instance: "\\" -> "\")
^<c> Control character, <c> in "A..Z[\]^_", such as ^C, ^[, or ^^.
Use "\^" for an actual caret character.
And for modem strings only:
\w pause for ~1/3 sec
\d drop DTR for the time given in falcon.cfg's DTR_DOWNTIME
NOTE: Dropping DTR may not work on some multi-serial cards.
It will if the modem has DTR ignored or forced on. Also, it will
not work if another program still has the serial device open,
because the only way to drop DTR is to completely close the
device. Use the usual "\w\w\w+++\w\w\w\rATH0\r"-style string if
so.
Note that configuration files are not normally order-dependant regarding
the various control commands. Meaning, it doesn't matter if you say:
BEGINTINY TINY_POS 123 45
or
TINY_POS 123 45
BEGINTINY
or
BEGINTINY
<rest of file>
TINY_POS 123 45
Exceptions to this rule are pointed out, like where the msgareas.bbs AREA
command picks current area (for all subsequent commands to act on), or
where the term.bbs DIRECTORY command indicates that the phone directory is
from here to the end of the file. Get the idea?
Commands which define a path will have a "/" appended to the name if
necessary. Unnecessary cases are blank paths (current directory) and
paths which end in ":".
Comments are the same as in most config/batch files: A ';' means that the
rest of the line is a comment. Note that you may have to put at least one
space before the ";", or it may be considered a part of the last item on
the line. A ";" may not come in the middle of a command. For instance,
a command with four arguments:
CMD arg1 arg2 arg3 arg4 ; parser will ignore this comment
CMD arg1 arg2 arg3 arg4; parser will think the ";" is part of "arg4"
; and not realize the rest was a comment
CMD arg1 arg2 ; parser will think this comment is arguments
arg3 arg4 ; and then barf on these two
The reason comments are only allowed between commands is because the ';'
may be needed as an argument somewhere, somewhen.
Falcon.cfg
----------
Falcon looks for Falcon.cfg in the current directory, in S:, and in FALCON:.
It is also possible to pass a path/name on the command line. This file is
for general configuration of the BBS, ie. bbs/sysop name, modem strings,
address, protocols, etc.
7WIRE
Usage: 7WIRE
Default: not 7-wire
Determines whether or not to use 7-wire serial handshaking. This
is usually used for high-speed modems.
ACKNOWLEDGE
Usage: ACKNOWLEDGE str
Default: "OK"
This is the modem return string that would normally be returned after
a successful command. However, I never did get around to actually
using it. <meek grin>
ADD_BLANK_SEENBY
Usage: ADD_BLANK_SEENBY
Default: don't add it
Using this flag causes echo messages to be saved with blank SEEN-BY:
and PATH: control lines. This can solve problems if echo message
processors (I'm thinking of ConfMail specifically) add extra, unwanted
blank lines around the SEEN-BY lines. I seem to recall another reason
that this may be necessary, but what I can't recall is what is was.
Oh well, it's here if you need it.
ADDRESS
Usage: ADDRESS fidonet_address.str
Default: 0:0/0.0
This sets the BBS's FidoNet-style address. It can be in several forms:
zone:net/node (no domain)
zone:net/node.point (no domain)
zone:net/node@domain
zone:net/node.point@domain
It is suggested that you use a domain, usually "FidoNet". This address
can be entered without any quotes, but since it is technically a string,
you can put quotes around it if you need them.
See also: POINTNET
APPFILE
Usage: APPFILE filename.str
Default: (no application file)
The name of the new user application file, if you want one.
ATTENTION
Usage: ATTENTION str
Default: "AT"
This string is the modem command prefix. It starts off a command,
but if an ENDOFLINE is send immediately, it a no-operation. It
should not have an ENDOFLINE in it, since that is what ENDOFLINE is
for.
See also: ENDOFLINE
AVOID
Default: AVOID str
See also: "+"
If user types the first character of this string (later, if
circumstances require, I may change it so that you can check a whole
bunch of characters, but not now), then when the character is sent to
the modem, a NUL (ASCII 0) character is also sent. This is to prevent a
user from putting your modem into command mode, for all the good it
would do them anyway.
See also: ESCAPE, HANGUP
BEGINSTATUS
Usage: BEGINSTATUS
Default: begin without status
Determines whether status window is opened when the program is started.
See also: STATUS_POS
BEGINTINY
Usage: BEGINTINY
Default: begin large
Determines which screen mode to begin with: The WorkBench "idiot bar"
or the large display. You should always keep the BBS in tiny mode when
you are not actively watching it for some reason, because not only is
it a waste of chip memory, but the large display also scrolls slowly
and therefore slows down output.
See also: TINY_POS
BUSY
Usage: BUSY str
Default: "BUSY"
If the dialer gets this from the modem instead of a CONNECT message
or a NOGOOD message, it skips to the next number.
See also: NOGOOD1, NOGOOD2, CONNECT
BYTEFILEOK
Usage: BYTEFILEOK
Default: cannot send 1 byte files
The recent implementation of XPRZmodem falls prey to a division by zero
software error if it tries to send a one byte file. I think this is
because Falcon buffers the output and therefore seems to send the file
in zero seconds. When XPRZ tries to calculate the characters/second
value, *poof*, division by zero, software error, down goes the system.
At any rate, this is here in case you need to send one byte files for
some insane reason.
CBMENV
Usage: CBMENV
Default ARP/Manx/Rokicki environment variables
Setting this flag causes Falcon to use CBM ENV:-style environment
variables instead of the ARP/Manx/Rokicki style.
CHAT_EXEC
Usage: CHAT_EXEC dos_command.str
Default: none
This AmigaDOS command is called when a user Y)ells for the Sysop.
It must be run and the output must be redirected to NIL:.
Example: "run >NIL: playsound wantchat.sound"
Naturally, "run >NIL:" may be replaced with your preferred command.
CMDPAUSE
Usage: CMDPAUSE pause.num
Default: 50
Wait this many 50ths (or maybe it's 60ths?) of a second after each
modem command.
CONFIGDIR
Usage: CONFIGDIR path.str
Default: "" (current dir)
Where to find the following files: english.bbs, msgareas.bbs,
fileareas.bbs, sched.bbs, menus.bbs, term.bbs, systemstat.dat, and
possibly some I forgot.
See also: HELPDIR, TEXTDIR, NODELISTDIR, USERDIR, KEYDIR
CONNECT
Usage: CONNECT baud.num flags.word connect.str or
CONNECT FIND flags.word connect_template.str
Defaults: 300 - "CONNECT"
300 A "CONNECT/ARQ"
FIND - "CONNECT %lu"
FIND A "CONNECT %lu/ARQ"
This command adds a connect string to the list of default strings that
Falcon understands to mean that a modem connection has been made.
Using a combination of set-baud-rate and dynamic-baud-rate strings,
accommodating pretty much any modem's crazy connect strings should be
possible.
The four defaults should cover most modems, including HSTs. Note that
the version which FINDs the speed dynamically from the string it gets
from the modem MUST have the "%lu" (in lowercase) where the baud rate
should be in order to work.
The flags argument currently only recognizes one flag, which is the
'A' ARQ flag. If there are others that should be included (note that
their only real use at this point is more descriptive logging of a
connect mode), let me know.
Note that the term cannot set the baud rate to anything other than 300,
1200, 2400, 4800, 9600, 12000, 14400, 19200, and 38400 baud, but the BBS
should be able to handle any number. I'll see if I can work out a way
to get the term to use odd rates too, the problem being mostly in the
rigid Baud submenu.
CONNECT_MINBAUD
Usage: CONNECT_MINBAUD minbaud.num
Default: 0 (no minimum)
Users cannot log on if their baudrate is below this number.
See also: TRANSFER_MINBAUD, sched.bbs/EVENT
CONNECTTIME
Usage: CONNECTTIME seconds.num
Default: 1 second
This is the number of seconds to pause after BBS connects and before
either starting up the ESCESC sequence or starting the session.
The reason for this dead time is that even slower modems may take a
little too long to recognize the connect (at the calling end) and
therefore may miss some text if there is no short pause.
See also: ESCTIME, ESCESC
CONTENTS
Usage: CONTENTS extension.str do.str
Default: no content viewers
These are used by the C)ontents command in the File Menu. If you have
a program to view the contents of a certain kind of file (usually
identified by the "extension" field), include it in the "do" field.
Then the "do" string will be executed as a DOS command, and its output
will be printed. This version of the "do" string must have three "%s"'s
in it, in this order: The first %s in the string will be where file
output is redirected, and should normally be immediately after a ">".
The second %s is the pathname, and is guaranteed to end with ":" or "/",
unless it is blank, in which case it will stay blank. The third %s is
the filename. The full command will usually look like:
CONTENTS ".EXT" "program >%s view_options \"%s%s\""
ie. CONTENTS ".ARC" "arc >%s -vw \"%s%s\""
(results in 'arc >T:tempfile -vw "FILES:gen/zeebie.arc"')
Make sure you use the \" escape codes to put quotation marks around the
path/name, or a space in the path or name might screw things up. Also,
disable any prompts that may come up during program execution if you
can.
Note: an extension of "" will match any file; use it if you have some
sort of all-purpose viewer like PolyXArc.
Alternative:
If you know the file contents cannot be viewed, put a "*" at the start
of the "do" string, and the rest of it will be shown as "That is
<str>". For instance,
CONTENTS ".MAC" "*probably a Macintosh picture"
will come back as "That is probably a Macintosh picture." for any file
ending in ".MAC".
DATESTAMP_11W
Usage: DATESTAMP_11W
Default: SEAdog datestamps
This determines what format the datestamp will take in new messages.
Some processors have trouble with the default (prettier) SEAdog
format.
The look like: SEAdog: "Tue 1 Jan 91 01:23"
Fido 11w: "01 Jan 91 01:23:45"
DEF_CALL_DL
Usage: DEF_CALL_DL twit.num disgrace.num normal.num privil.num
assist.num sysop.num
Default: 150 450 900 1350 1800 -1
Sets the default call download limits for all user levels. This is used
for new users and for changing a user's level. A limit of -1 means
unlimited (within time limits, of course).
These are roughly equivalent to a 2400 baud transfer during the user's
available time for the call.
See also: DEF_CALL_TIME, DEF_DAY_TIME, DEF_DAY_DL
DEF_CALL_TIME
Usage: DEF_CALL_TIME twit.num disgrace.num normal.num privil.num
assist.num sysop.num
Default: 10 30 60 90 120 -1
Sets the default call time limits for all user levels. This is used
for new users and for changing a user's level. A limit of -1 means
unlimited, except for events.
See also: DEF_CALL_DL, DEF_DAY_TIME, DEF_DAY_DL
DEF_COST
Usage: DEF_COST cents.num
Default: 25 cents
This is used for non-local netmail if there is no nodelist available
to determine the cost.
Apologies to those in countries that do not use dollars and cents.
That may be a little more flexible in the future.
DEF_DAY_DL
Usage: DEF_DAY_DL twit.num disgrace.num normal.num privil.num
assist.num sysop.num
Default: 300 900 1800 2700 3600 -1
Sets the default daily download limits for all user levels. This is
used for new users and for changing a user's level. A limit of -1 means
unlimited (within time limits, of course).
These are roughly equivalent to a 2400 baud transfer during the user's
available time for the day.
See also: DEF_CALL_TIME, DEF_CALL_DL, DEF_DAY_TIME
DEF_DAY_TIME
Usage: DEF_DAY_TIME twit.num disgrace.num normal.num privil.num
assist.num sysop.num
Default: 20 60 120 180 240 -1
Sets the default daily time limits for all user levels. This is used
for new users and for changing a user's level. A limit of -1 means
unlimited, except for events.
See also: DEF_CALL_TIME, DEF_CALL_DL, DEF_DAY_DL
DEPTH
Usage: DEPTH depth.num
Default: 3 bitplanes
Depth of large display's screen in bitplanes), 1-4 in hires, and
1-5 in lores.
See also: WIDTH, HEIGHT, INTERLACE, LORES, PALETTE
DEVICE
Usage: DEVICE library_name.str unit.num flags.num
Default: "serial.device" 0 0
Selects the device driver for serial IO. Use a name of "" for a local-
only operation.
DIAL
Usage: DIAL str
Default: "ATDT"
This string is the modem dialing command prefix. It should not have an
ENDOFLINE string in it, since that string is automatically appended.
See also: ENDOFLINE
DIALTIME
Usage: DIALTIME seconds.num
Default: 30 seconds
This is the amount of time the program will wait for carrier after
dialing.
See also: WAITTIME
DOWNLOAD_NOLOG
Default: DOWNLOAD_NOLOG
Default: log downloads
This flag merely tells the program not to log downloads. Useful in
a system with a large volume of downloads.
DTR_DOWNTIME
Usage: DTR_DOWNTIME pause.num
Default: 50
Wait this many 50ths (or maybe it's 60ths?) of a second between
dropping DTR and raising it again (to hang up).
EDITOR_LINES
Usage: EDITOR_LINES lines.num
Default: 1024
Maximum number of lines in the message editors.
ENDOFLINE
Usage: ENDOFLINE str
Default: "\r"
This string is the modem command suffix. It ends and enters a modem
command string.
See also: ATTENTION
ENV_VAR_NAME
Usage: ENV_VAR_NAME var_name.str
Default: "fret"
This is the name of the environment variable to be send for returning
strings to DOS when the program exits. It is also read in certain
parts of the program.
ERRL_NONE
ERRL_MATRIX
ERRL_ECHO
ERRL_BOTH
ERRL_FAILED
Usage: ERRL_???? errorlevel.num
Default: 0, 1, 2, 3, 20, respectively
If the BBS failed, ERRL_FAILED is returned to DOS.
If the BBS worked, ERRL_NONE is returned if no echo or matrix messages
were entered, ERRL_MATRIX if matrix messages were entered, ERRL_ECHO
echo messages were entered, and ERRL_BOTH if both matrix and echo
messages were entered.
ESCAPE
Usage: ESCAPE str
Default: "\w\w\w+++\w\w\w"
This modem string is intended to get the modem out of online mode into
command mode.
See also: HANGUP, AVOID
ESCESC
Usage: ESCESC
Default: no Esc-Esc sequence
If this flag is set, the BBS will not start up until two ESCs have
been typed. This is useful if HST callers are having problems with
long handshake (MNP, I think) times after connect and missing some or
all of the intro text. If the handshaking goes on long enough, garbage
may even be entered at the name prompt if there is nothing to prevent
it.
This wait for two escapes goes on for thirty seconds, then the BBS
automatically starts up the session as if two escapes had been typed.
See also: ESCTIME, CONNECTTIME
ESCTIME
Usage: ESCTIME seconds.num
Default: 5 seconds
If ESCESC has been specified, this is the number of seconds to look
for a carriage return. If a carriage return is received during this
time, the BBS jumps straight to the ESCESC sequence. Otherwise
the ESCESC sequence is started after the time runs out.
Try to arrange it so that this command plus the CONNECTTIME command
are long enough that all HST (or other high speed modem) handshaking
is over just before the time is up. That way HST users see the
"Hit ESC twice..." message just after connect, and other users can
hit return to get there sooner. I suggest either CONNECTTIME 1
ESCTIME 6 or CONNECTTIME 0 ESCTIME 7.
See also: ESCESC, CONNECTTIME
EXIT
Usage: EXIT str
Default: whatever RESET was set to
This modem command is sent when Falcon exits. It can do whatever you
want, but normally that's nothing more than a simple reset.
See also: RESET
EXPORTFILE
Usage: EXPORTFILE filename.str
Default: (no export file)
Given this filename, Falcon will create, on exit, a ConfMail-style list
of area labels needing exporting.
See also: msgareas.bbs/LABEL
FONT
Usage: FONT fontname.str height.num
Default: "topaz.font" 8
This is the font used in the large/full-screen display.
See also: FONTWIDTH
FONTWIDTH
Usage: FONTWIDTH width.num
Default: font's real width
You can set a font's width with this command. If you're fiddling about
with a proportional large display font, you might want to try setting
this to 8. However, this actually changes the font for ALL applications
that may be using it, so it is only to be used for experimentation. Do
not use it regularly.
FRONTDOOR
Usage: FRONTDOOR dos_command.str
Default: no front door
If given, this DOS command will be called after connect. The
environment variable given in ENV_VAR_NAME will be set to the connecting
baud rate, and if it's set to "nospawn" on return, Falcon will hang up
and return to the waiting state, else it will start up the BBS.
Normally you will not use this for front door programs, because the
front door usually calls YOUR program, and not vice-versa. However, I
was messing around with something that worked this way and did not see
any reason to take it out afterward. It might be useful.
See also: ENV_VAR_NAME
HANGUP
Usage: HANGUP str
Default: "\w\w\w+++\w\w\wATH0\r"
This modem command should hang up the modem from any mode. If your
modem will hang up on DTR being dropped, and you are not forcing DTR
to stay on, and there is no other program using your unit of the serial
device (because the only way to drop DTR is to completely close out the
device), you can substitute "\d" here to drop DTR. It is a much cleaner
disconnect that way.
Note: If you are running with a modem that does internal buffering,
as some HSTs do, and you wish to hang up with DTR, you should add
a few waits before you drop it so that the last bit of text can be
output. There IS a one-second pause before the HANGUP string is
sent, but you may need more, ie. "\w\w\w\d" to wait an additional
second.
HEIGHT
Usage: HEIGHT height.num
Default: normal height
Height of large display's screen in *** NON-INTERLACE *** pixels.
If you want an interlaced screen 420 pixels high, this should be
specified with "HEIGHT 210".
See also: WIDTH, DEPTH, INTERLACE, LORES, PALETTE
HELPDIR
Usage: HELPDIR path.str
Default: "" (current dir)
Where to find help files ("#?help.bbs").
See also: TEXTDIR, CONFIGDIR, NODELISTDIR, USERDIR, KEYDIR
INACTIVETIME
Usage: INACTIVETIME seconds.num
Default: 270 seconds
After this amount of time, the user will be logged off for inactivity.
See also: RESPONDTIME
INIT
Usage: INIT str
Default: "ATZ\r\w\w\wATE0M0\r" (no echo, speaker off)
This modem command is sent before the BBS starts to wait for a call.
It should do things like turn off the speaker so that your modem
doesn't wake you up in the middle of the night.
INTERLACE
Usage: INTERLACE
Default: non-interlaced
Turns on interlace for the large display's screen.
See also: WIDTH, HEIGHT, DEPTH, LORES, PALETTE
KEYDIR
Usage: KEYDIR path.str
Default: "" (current dir)
Where to find falcon.key.
See also: HELPDIR, TEXTDIR, CONFIGDIR, NODELISTDIR, USERDIR
LOCAL_OFFHOOK
Usage: LOCAL_OFFHOOK
Default: on hook
Using this flag makes your phone go off the hook when you log in
locally. Otherwise the phone can ring.
See also: MAKEBUSY, OFFLINE
LOCK_PORT
Usage: LOCK_PORT baud.num
Default: don't lock port
Lock the serial port at a certain baud rate, and pretend it's at
whatever other baud rate it connects at. This is a method used
by high-speed modems to cut down on overhead.
LOGFILE
Usage: LOGFILE filename.str
Default: (no log file)
The name of the system log file, if you want one.
LORES
Usage: LORES
Default: hires
Causes large display's screen to be in lores.
See also: WIDTH, HEIGHT, DEPTH, INTERLACE, PALETTE
MAKEBUSY
Usage: MAKEBUSY str
Default: "ATH1\r"
This modem command makes the phone busy for local logins if
LOCAL_OFFHOOK has been specified.
See also: OFFLINE, LOCAL_OFFHOOK
MAXBAUD
Usage: MAXBAUD baud.num
Default: 300
The best speed your modem can connect at.
See also: LOCK_PORT
NAME
Usage: NAME bbsname.str
Default: "Unnamed System"
This is, quite simply, the name of the BBS.
NEWUSERLEVEL
Usage: NEWUSERLEVEL level.word
NEWUSERLEVEL NOT
This sets the level that new users will be given. Using NOT instead
of a level will disallow new users.
NODELISTDIR
Usage: NODELISTDIR path.str
Default: "" (current dir)
Where to find a TrapList (traplist.library) format nodelist. Note that
at the time of writing, the version of TrapList needed by Falcon is
still unavailable to the general public.
See also: HELPDIR, TEXTDIR, CONFIGDIR, USERDIR, KEYDIR
NOGOOD1
Usage: NOGOOD1 str
Default: "NO CARRIER"
If the dialer gets this from the modem instead of a CONNECT message
or a BUSY message, it skips to the next number.
See also: NOGOOD2, CONNECT, BUSY
NOGOOD2
Usage: NOGOOD2 str
Default: "VOICE"
If the dialer gets this from the modem instead of a CONNECT message
or a BUSY message, it skips to the next number.
See also: NOGOOD1, CONNECT, BUSY
OFFLINE
Usage: OFFLINE str
Default: "ATH0\r"
This modem command is used to hang up the phone after the MAKEBUSY
string has been sent to tie up the phone during a local login. Note
that the difference between HANGUP and OFFLINE is that this command
is meant to be sent from command mode.
See also: MAKEBUSY, LOCAL_OFFHOOK
PALETTE
Usage: PALETTE color_0.num ... color_<palette_size>.num
Default: 000 B00 070 AA0 00A A0A 09C BBB
Large display's screen colors, set to an IBM-style set which doesn't
flicker too much in interlace. You can change them, but I suggest
keeping the general IBM configuration of black, red, green, yellow,
blue, purple, cyan, and white.
See also: WIDTH, HEIGHT, DEPTH, INTERLACE, LORES
PICKUP
Usage: PICKUP str
Default: "ATA\r"
This string is sent to the modem when the BBS receives a RING string.
It picks up the phone with an answer carrier, and starts looking for
the CONNECT strings.
See also: RING, CONNECT
POINTNET
Usage: POINTNET pointnet.num
Default: (no pointnet kludge)
This affects netmail addressing for points. If your boss issues you
a pointnet, include it here. The difference is invisible in the BBS,
where all addressing will appear to be normal, but will in fact be
zone:pointnet/point behind the scenes. However, you need not concern
yourself with the whys and hows of it.
See also: ADDRESS
RESET
Usage: RESET str
Default: "ATZ\r"
This command resets the modem.
RESPONDTIME
Usage: RESPONDTIME seconds.num
Default: 180 seconds
After this amount of time, there will be a message issued to the user
that they should respond soon (or else be logged off for inactivity).
See also: INACTIVETIME
REVBUFSIZE
Usage: REVBUFSIZE bytes.num
Default: 4096 bytes
Determines the size of the screen history buffer, which keeps track of
what was on the screen even when it was in tiny mode. This buffer is
also the terminal's review buffer. Minimum 1024 bytes
RING
Usage: RING str
Default: "RING"
If Falcon receives this from the modem, it sends the PICKUP string
to answer the phone. It is also used in the terminal to detect an
incoming call during dialing.
See also: PICKUP
STATUS_POS
Usage: STATUS_POS x.num y.num
Default: 0 0
Where to put status window.
See also: BEGINSTATUS
STOPDIAL
Usage: STOPDIAL str
Default: whatever HANGUP was set to
This is sent to the modem when aborting a dial that has taken too long.
It defaults to the full HANGUP string, but if you can just hit space or
return to abort when your modem is calling out, then use that. I do.
See also: HANGUP
SYSOP
Usage: SYSOP sysopname.str
Default: "Sysop"
This has two uses. First, you log into your BBS with this name and
the program will set you up as the Sysop. Second, this name is used
for redirecting mail sent to "Sysop".
TEXTDIR
Usage: TEXTDIR path.str
Default: "" (current dir)
Where to find the following text files: welcome1.bbs, welcome2.bbs,
bulletin#?.bbs, quotes.bbs, editorial.bbs, newuser.bbs, yell.bbs,
warning.bbs, logoff.bbs, and possibly some I forgot.
See also: HELPDIR, CONFIGDIR, NODELISTDIR, USERDIR, KEYDIR
TINY_POS
Usage: TINY_POS x.num y.num
Default: 0 0
Where to put Workbench "idiot bar" horizontally.
See also: BEGINTINY
TRANSFER_MINBAUD
Usage: TRANSFER_MINBAUD minbaud.num
Default: 0 (no minimum)
Users cannot transfer files if their baudrate is below this number.
See also: CONNECT_MINBAUD, sched.bbs/EVENT
TRANSFER_PRI
Usage: TRANSFER_PRI priority.num
Default: same as program
You can set the task priority of Falcon during transfers with this.
However, this is mostly meant for testing. Upping the priority can
bog down or lock out other tasks if you've got a CPU-intensive
protocol, and for that matter, lowering it could result in the
protocol itself being bogged down or locked out. You should not use
this.
TRANSFER_TWOPLANES
Usage: TRANSFER_TWOPLANES
Default: Normal number of planes
Since 3 planes in hires (which is the normal setting for the large
display) steals DMA time, it is suggested that this be used with
high-speed modems. As a matter of fact, it should be used with ALL
modems, since it'll always save CPU time, and there is no reason not
to do it.
USERDIR
Usage: USERDIR path.str
Default: "" (current dir)
Where to find user.bbs.
See also: HELPDIR, TEXTDIR, CONFIGDIR, NODELISTDIR, KEYDIR
WAITTIME
Usage: WAITTIME seconds.num
Default: 2 seconds
This is the amount of time the program will wait between hanging up
on a failed dial and dialing again.
See also: DIALTIME
WIDTH
Usage: WIDTH width.num>
Default: normal width
Width of large display's screen in pixels.
See also: HEIGHT, DEPTH, INTERLACE, LORES, PALETTE
XPR
Usage: XPR bbs_char.char menu_shortcut.char flags.word
300.num 1200.num 2400.num 4800.num 9600.num
name.str library.str config.str
Default: no protocols available
Each XPR command adds an XPR protocol with the given name. The bbs_char
field is the character used to select the transfer type (ie. the 'Z' in
"D Z file", to download with Zmodem). Use '-' if you don't want the
protocol available in the BBS. The menu_shortcut field is used in the
terminal, and is the letter shown in the right of a menu item. Make
sure no other menu items in the terminal have the same letter. The
300..2400 fields are approximate chars/sec estimates for each baud rate,
used for estimating download times. The library field is the name of
the XPR-format library, ie. "xprzmodem.library". The config string is
the library's config string, and should be described in each protocol's
documentation.
The flags are as follows:
R ... The protocol is capable of resuming a transfer
N ... The protocol sends the filename
- ... Blank, use for no flags, or possibly to show that a
flag is off, ie. "A-CDE-"
Note that there is presently a limit of 32 protocols. If you need
more room, say so and I'll modify the program. Later, there won't
be a limit.
msgareas.bbs
------------
Falcon looks for msgareas.bbs in the CONFIGDIR (set up in falcon.cfg).
This file obviously configures the message areas.
AREA
Usage: AREA num
Default: none
This command basically picks the current area. Other subsequent
commands will act on this area. Range 1-100.
AUTOKEY
Usage: AUTOKEY
Default: new users get no keys to this area
This command indicates that new users should be given keys to the
current area.
See also: LOCKED
AUTOWRITEKEY
Usage: AUTOWRITEKEY
Default: new users get no write keys to this area
This command indicates that new users should be given write keys for
the current area.
See also: WRITELOCKED
ECHO
Usage: ECHO
Default: not an echo area
This command makes the current area an ECHO area. Origin lines will
be added and SEEN-BY: lines will be hidden (if the user has them turned
off). This is mutually exclusive with MATRIX.
See also: MATRIX
INVISIBLE
Usage: INVISIBLE
Default: not invisible
This command makes the current area invisible to all users lower than
SYSOP level. No barriers to entry are actually put up.
LABEL
Usage: LABEL str
Default: ""
This command sets the current area's label, ie. "AMY_POINT". This is
normally the same as the tag used by Fidonet mail processors. LABEL is
currently used only for creating a list of areas needing export for mail
packers like ConfMail (and FastPoint, I think).
See also: falcon.cfg/EXPORTFILE
LEVEL
Usage: LEVEL level.word
Default: TWIT
This command sets the current area's minimum-entry level, ie. PRIVIL.
Users below this level can neither see or enter the area.
LOCKED
Usage: LOCKED
Default: not locked
This command locks the current area. Only SYSOP-level users and users
who have been given "keys" will be able to see and enter the area.
See also: AUTOKEY
LOGOFFMSGAREA
Usage: LOGOFFMSGAREA
Default: area 1 flagged
This command flags the current area as the one in which to put logoff
messages to the sysop.
MATRIX
Usage: MATRIX
Default: not a matrix area
This command makes the current area a MATRIX area. Source/destination
net addresses will be shown, and non-local net messages may be sent.
This is mutually exclusive with ECHO.
See also: ECHO
NAME
Usage: NAME str
Default: ""
This command sets the verbose name of the current area, ie.
"General msgs".
PASSWORD
Usage: PASSWORD str
Default: no password
This command gives the current area a password. Users cannot see this
area and must know the password to get in.
PATH
Usage: PATH str
Default: "" (current dir)
This command sets the path (directory) for the current area. This
path is where the BBS looks for #?.msg and stat.dat files (and also
where it writes them, obviously). Normally there is one directory
per area.
PRIVATEONLY
Usage: PRIVATEONLY
Default: writing public messages permitted
This command makes the current area private-only to all users lower than
SYSOP level. Meaning, they cannot write public messages.
See also: READONLY, PUBLICONLY
PUBLICONLY
Usage: PUBLICONLY
Default: writing private messages permitted
This command makes the current area public-only to all users lower than
SYSOP level. Meaning, they cannot write private messages.
See also: READONLY, PRIVATEONLY
READONLY
Usage: READONLY
Default: writing permitted
This command makes the current area read-only to all users lower than
SYSOP level. Meaning, they cannot write messages
This is useful for an announcements area.
See also: PUBLICONLY, PRIVATEONLY
WRITELOCKED
Usage: WRITELOCKED
Default: not write-locked
This command locks the current area's message-writing commands. Only
SYSOP-level users and users who have been given "write keys" will be
able to write messages in this area.
See also: AUTOWRITEKEY
fileareas.bbs
-------------
Falcon looks for fileareas.bbs in the CONFIGDIR (set up in falcon.cfg).
This file obviously configures the file areas.
AREA
Usage: AREA num
Default: none
This command basically picks the current area. Other subsequent
commands will act on this area. Range 1-100.
AUTOKEY
Usage: AUTOKEY
Default: new users get no keys to this area
This command indicates that new users should be given keys to the
current area.
See also: LOCKED
INVISIBLE
Usage: INVISIBLE
Default: not invisible
This command makes the current area invisible to all users lower than
SYSOP level. No barriers to entry are actually put up.
LABEL
Usage: LABEL str
Default: ""
This command sets the current area's label, ie. "GENERAL". This is
not presently used for anything.
LEVEL
Usage: LEVEL level.word
Default: TWIT
This command sets the current area's minimum-entry level, ie. PRIVIL.
Users below this level can neither see or enter the area.
LOCKED
Usage: LOCKED
Default: not locked
This command locks the current area. Only SYSOP-level users and users
who have been given "keys" will be able to see and enter the area.
See also: AUTOKEY
MATRIX
Usage: MATRIX
Default: not a matrix area
This command makes the current area a MATRIX file area. I'm sorry, but
I cannot for the life of me remember why I included this. There was a
reason. I'm sure there was...
NAME
Usage: NAME str
Default: ""
This command sets the verbose name of the current area, ie.
"General files".
PASSWORD
Usage: PASSWORD str
Default: no password
This command gives the current area a password. Users cannot see this
area and must know the password to get in.
PATH
Usage: PATH str
Default: "" (current dir)
This command sets the path (directory) for the current area. This
path is where the BBS looks for files and the files.bbs list.
Normally there is one directory per area.
See also: UPLOADPATH
READONLY
Usage: READONLY
Default: writing permitted
This command makes the current area read-only to all users lower than
SYSOP level. Meaning, they cannot upload files.
UPLOADPATH
Usage: UPLOADPATH str
Default: whatever PATH was set to
This command sets the upload path (directory) for the current area.
This optional path is where the BBS puts uploaded files, possibly for
verification and/or hurling into the correct area. Also good for
directing uploads from a dozen specific areas to a general New Uploads
area.
See also: PATH
menus.bbs
---------
Falcon looks for menus.bbs in the CONFIGDIR (set up in falcon.cfg). This
file sets up menu levels, additional menus, doors, and macros. See the
section on Configurable Menus for more information.
<command>
Usage: <command>
Default: n/a
Where command is one of the following letters:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
This sets the command's minimum level to the currently selected command
level. Users below that level will not be able to use this command.
This also selects the current command letter for certain other
commands to act on.
Note that commands "," and ";" can't be used because they're whitespace.
See also: <level>
<level>
Usage: <level>
Default: TWIT
Where <level> can be NOT, TWIT, DISGRACE, NORMAL, PRIVIL, ASSIST, SYSOP.
This command selects the level that subsequent commands will be given.
Think of it as "Set the following commands to <level>: ..."
Users below this level will not be able to use whatever commands
you specify. If the level is NOT, then no users will be able to use it,
effectively turning it off.
Default command levels (these are NOT menus.bbs commands!):
Main:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
A-----------------------------T-TTT-TDT-TD--T---D-T-DT--D-----T-
Message:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
A---------T-TTDTTTTTTTTTT---T-T-DDT-DNTNDDNDTT-TTDT-N----D----T-
File:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
A------------TD---------------T-D-NN-TTAATADTT--TPTDNT--------T-
Change:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
----------D------------------TT-DNDTTTTTTTNTTT-TTTTTSTTT-T---TT-
UserEdit:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
---A--------------------------T-S-SSA--SA-AA-S-ST-AA-A--------T-
Edit:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
------------------------------T-T-TTTT-TTT-T-T--T-TT--T-------T-
Subop:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
--T---------------------------T---TT-T--T-TTTT-TTT-T-TT-------T-
Librarian:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
------------------------------T---TT-T--T-TTTT-TTT-TTT--------T-
Sysop:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
------------------------------T-T--TTT----STT---T--T----------T-
NOTE: The '?' and '_' commands always default to TWIT in new user-
created menus. '?' is always a help key, and '_' always stops and asks
the user to hit enter.
See also: <command>
BATCH
Usage: BATCH falcon_batch_file.str
Default: n/a
The currently selected command will run this Falcon batch file command,
which is not a DOS batch file (which can be used through something like
'CON "execute dos_batch_file"'), but rather a file consisting of NIL,
CON, and/or RAW lines. Here's a hypothetical registration batch file:
NIL "copy BBS:reg_form.txt T:"
CON MC "echo \"Please fill out the registration form...\""
NIL "wait 2"
RAW - "raw_screen_edit \"T:reg_form.txt\""
NIL "copy T:reg_form.txt \"FORMS:½FULLNAME╗.txt\""
The reason for this alternative kind of batch file is so that several
kinds of commands can be combined in one sequence.
See also: <command>, NIL, RAW, CON
CON
Usage: CON flags.word dos_cmd.str
Default: n/a
The currently selected command will run this DOS command, which will
be treated as if it were running in a CON: window, except that all
I/O will be through the BBS instead.
Applicable flags:
M Allow "More [Y,n]" prompts
C Allow the user to break out of the program with ^C
A Force ANSI through even if user has it turned off
R Force ANSI color through even if user has it turned off
I Force IBM characters through even if user has them turned off
F Fix local screen after execution
- Nothing (use as filler)
The dos_cmd string may have "½...╗"-style arguments, which the BBS will
fill in. These are described elsewhere.
See also: <command>, NIL, RAW, BATCH
GOODBYE
Usage: GOODBYE
Default: n/a
The currently selected command goes to the logoff sequence.
Do not use GOODBYE in conjunction with the Edit, Sysop, UserEdit, Subop,
or Librarian menus, or any that you may have added to them, because
these menus have special exit conditions.
See also: MENU, GOTO, <command>
GOTO
Usage: GOTO menu_name.word
Default: n/a
The currently selected command goes to the specified menu. For
instance, the Main Menu "M" command could be specified like this:
MENU Main DISGRACE M GOTO Message
Do not use GOTO in conjunction with the Edit, Sysop, UserEdit, Subop,
or Librarian menus, because these menus have special entrance and
exit conditions. You might be okay if you add a menu to them which
cannot return to the main BBS without going back through the menu
it left, but I wouldn't do it if I were you.
See also: MENU, GOODBYE, <command>
HELPFILE
Usage: HELPFILE helpfile.str
Default: "<menu_name>help.bbs" (except for message -> msghelp.bbs)
This changes the name of the help file for the current menu. This
file is still looked for in the HELPDIR path set out in falcon.cfg.
See also: MENU, falcon.cfg/HELPDIR
MACRO
Usage: MACRO commands.str
Default: n/a
The currently selected command will insert the given commands into
the BBS command stack so that they are executed next. ie.:
Menu Message TWIT O MACRO "GYN" ; one-character logoff
Menu Main TWIT * MACRO "FLG* Q" ; all new files (from Main)
Note that doing something like 'X MACRO "X"' is a bad idea. Do not
include a macro's command inside it, nor any macros that call it.
Make sure your macro can be followed by other commands. If the last
thing in a macro is a "word", for instance, make sure it is followed
by a whitespace character to separate it from anything that follows.
If it is a sentence, append a "|" to end it. Etc. This is because
MACROs are merely inserted before the rest of the command stack.
See also: <command>
MENU
Usage: MENU menu_name.word
Default: Main
Where menu_name can be Main, Message, File, Change, Edit, Sysop,
UserEdit, Subop, Librarian, or a user-defined menu.
This command selects the menu for other subsequent commands to act on.
If the menu is built-in or has already been initialized, it will just
be selected. Otherwise, a new menu of this name will be created and
initialized.
NIL
Usage: NIL dos_cmd.str
Default: n/a
The currently selected command will run this DOS command with no
input or output.
The dos_cmd string may have "½...╗"-style arguments, which the BBS will
fill in. These are described elsewhere.
See also: <command>, CON, RAW, BATCH
RAW
Usage: RAW flags.word dos_cmd.str
Default: n/a
The currently selected command will run this DOS command, which will
be treated as if it were running in a RAW: window, except that all
I/O will be through the BBS instead.
Applicable flags:
C Allow the user to break out of the program with ^C
F Fix local screen after execution
- Nothing (use as filler)
The dos_cmd string may have "½...╗"-style arguments, which the BBS will
fill in. These are described elsewhere.
See also: <command>, NIL, CON, BATCH
sched.bbs
---------
Falcon looks for sched.bbs in the CONFIGDIR (set up in falcon.cfg). This
file sets up schedules and events.
EVENT
Usage: EVENT name.str
Default: no events
This initializes an event, which other subsequent commands will act on.
Most events cause the BBS to exit with the return environment variable
set to the event name. They also affect user time limits, since the
BBS must exit no matter what the user wants. Be careful! The BBS will
NOT exit on an event if it is in the terminal mode.
Some events start special schedules:
yell Y)ell command available
no300connect Callers <= 300 baud can't connect to BBS
no1200connect Callers <= 1200 baud can't connect to BBS
no2400connect Callers <= 2400 baud can't connect to BBS
no9600connect Callers <= 9600 baud can't connect to BBS
no300transfer Callers <= 300 baud can't up/download
no1200transfer Callers <= 1200 baud can't up/download
no2400transfer Callers <= 2400 baud can't up/download
no9600transfer Callers <= 9600 baud can't up/download
Any event name beginning with one of the above strings (ie. "yell",
"yell2", "no300connect_A", "no300connect_B") causes the thing the name
implies to be true for the duration of that event.
See also: falcon.cfg/ENV_VAR_NAME
<day>
Usage: <day>
Default: no days selected
Where <day> can be Sun, Mon, Tue, Wed, Thu, Fri, Sat, Everyday.
The currently selected event occurs on this (these) day(s) of the week.
START
Usage: START military_time.num
Default: I'm not sure. Don't try.
Set the currently selected event to start at this time of the day on a
24 hour military clock, which is in the format HHMM, with HH=0..23 and
MM=0..59. ie. 10:30pm = 2230.
See also: DURATION
DURATION
Usage: DURATION minutes.num
Default: I'm not sure. Don't try.
Set the currently selected event to last this many minutes. It should
be at least 1. The method I'm currently using to do events is not very
good. If an event is in progress, the BBS will exit, even if it has done
so once already for the current event. You must make sure that whatever
the event causes will last at least as long as this DURATION, or it
could occur twice.
See also: START
term.bbs
--------
FTerm looks for sched.bbs in the CONFIGDIR (set up in falcon.cfg). This
file is used to set up the modem strings, dial directory, and miscellaneous
other stuff for FTerm.
<cursor key>
Usage: <cursor key> macro.str
Default: ""
Where <cursor key> is CURUP, CURDOWN, CURLEFT, CURRIGHT, SHCURUP,
SHCURDOWN, SHCURLEFT, SHCURRIGHT.
These define the cursor key macros. Typing the specified key in the
terminal sends out macro.str. Simple.
See also: <function key>, <number pad key>
DIAL
Usage: DIAL str
Default: whatever falcon.cfg/DIAL was set to
This string is the modem dialing command prefix. It should not have an
ENDOFLINE string in it, since that string is automatically appended.
There is presently no real reason to have this, as the BBS never does
any dialing and you can just set that string to what you want. However,
it may do so in the future (for, say, callback validation or some such)
and therefore I provide two versions.
See also: ENDOFLINE, falcon.cfg/DIAL
DIRECTORY
Usage: DIRECTORY
Default: normal command mode
After this command, term.bbs turns into a phone directory, all the
way to the end of the file. The format of each directory entry is
as follows:
name.str phone_number.str baud.num comment.str
ie. "Dis BBS" "123-456-7890" 2400 "24 hours, Joe Sysop"
This command must come after all other commands.
DLDIR
Usage: DLDIR path.str
Default: "RAM:"
This is the default download path. It is put into the file requestor
to begin with (which, at this time, is either one or two prompts,
since I don't want to use ARP and CBM hasn't released 2.0 just yet),
where it can be changed.
See also: ULDIR
EOLPAUSE
Usage: EOLPAUSE pause.num
Default: 0
Wait this many 50ths (or maybe it's 60ths?) of a second after each
end-of-line in an ASCII send.
This is useful for uploading text to, say, a BBS that has unusually
long pauses when you hit carriage return, or simply does not have a
buffer
See also: SENDPAUSE
<function key>
Usage: <function key> macro.str
Default: ""
Where <function key> is F1, F2 ..., F10 or S1, S2, ..., S10.
These define the function key macros. Typing the specified key
in the terminal sends out macro.str. Simple.
See also: <number pad key>, <cursor key>
HANGUP
Usage: HANGUP str
Default: whatever falcon.cfg/HANGUP was set to
This modem command should hang up the modem from any mode. If your
modem will hang up on DTR being dropped, and you are not forcing DTR
to stay on, and there is no other program using your unit of the serial
device (because the only way to drop DTR is to completely close out the
device), you can substitute "\d" here to drop DTR. It is a much cleaner
disconnect that way.
This is given in case you do like I do and force DTR in the term, so
that if I crash the system while online, I won't get disconnected and
can reload the term. I don't force it in the BBS, though (my modem
can toggle forcing DTR with an AT command instead of a dip switch).
So my falcon.cfg HANGUP is "\d", and my term.bbs hangup is "\w\w\w
+++\w\w\wATH0\r". See?
See also: falcon.cfg/HANGUP
INIT
Usage: INIT str
Default: "ATZ\r"
This string initializes the modem for the terminal.
LOCAL_ECHO
Usage: LOCAL_ECHO
Default: no local echo
This command tells the term to echo outgoing text to the local screen
as well. This is mostly used in straight term-to-term chats.
See also: TRANSLATE_EOL_IN, TRANSLATE_EOL_OUT
<number pad key>
Usage: <number pad key> macro.str
Default: ""
Where <number pad key> is K. (kay-period) or K0, K1, ..., K9.
These define the number pad key macros. Typing the specified key
in the terminal sends out macro.str. Simple.
See also: <function key>, <cursor key>
SENDPAUSE
Usage: SENDPAUSE pause.num
Default: 0
Wait this many 50ths (or maybe it's 60ths?) of a second after each
character in an ASCII send. Note that using a nonzero number adds
a certain amount of overhead, so that 1 is a bit slower than you
might expect, compared to 0.
This is useful for uploading text to, say, a BBS that doesn't read
text very fast and might lose some input to a buffer overrun.
See also: EOLPAUSE
STOPDIAL
Usage: STOPDIAL str
Default: whatever HANGUP was set to
This is sent to the modem when aborting a dial that has taken too long.
It defaults to the full HANGUP string, but if you can just hit space or
return to abort when your modem is calling out, then use that. I do.
There is presently no real reason to have this, as the BBS never does
any dialing and you can just set that string to what you want. However,
it may do so in the future (for, say, callback validation or some such)
and therefore I provide two versions.
See also: HANGUP
TIMEOUT
Usage: TIMEOUT seconds.num
Default: 0 (no timeout)
If this number is nonzero, and there are so many seconds of dead
time (no input, no output, no carrier), the terminal will time out
and return to the BBS to wait for a call.
TRANSLATE_EOL_IN
Usage: TRANSLATE_EOL_IN
Default: leave incoming CR's alone
This command tells the term to translate incoming carriage returns to
carriage return/linefeed sequences. This is mostly used in straight
term-to-term chats.
See also: TRANSLATE_EOL_OUT, LOCAL_ECHO
TRANSLATE_EOL_OUT
Usage: TRANSLATE_EOL_OUT
Default: leave outgoing CR's alone
This command tells the term to translate outgoing carriage returns to
carriage return/linefeed sequences. This is mostly used in straight
term-to-term chats.
See also: TRANSLATE_EOL_IN, LOCAL_ECHO
ULDIR
Usage: ULDIR path.str
Default: "RAM:"
This is the default upload path. It is put into the file requestor
to begin with (which, at this time, is either one or two prompts,
since I don't want to use ARP and CBM refuses to release 2.0), where
it can be changed.
See also: DLDIR
12. Configurable Menus
=======================
Note: directories like CONFIG/ and HELP/ are actually references to the
directories you set up in your falcon.cfg file.
How to Make a New Menu
----------------------
Edit your CONFIG/menus.bbs file. Use the MENU keyword to select a menu
which does not exist. A new menu of that name will be created. Example:
MENU External
A new menu is created only on the first instance of an unfamiliar name.
If you should happen to reference it again with another "MENU External"
line, that will only select it again. The name here is the name which
will be displayed in the menu, as...
<label> MENU ie. EXTERNAL MENU
Select: Select:
Note that the version you see in the menu will be in allcaps, no matter
what you entered, just to match up with the word "MENU". The string
will, however, appear as entered in the "Where:" field of the status
window.
Anyway, you've created a new menu. Now you need to customize it...
Customizing Menus
-----------------
You can customize any menu, built-in or new. Built-in commands will,
however, take precedence. To do so, first select it:
MENU Utilities
Now select the level of the command(s) you wish to add:
SYSOP
Now the command letter, just as if you were only setting it's level, which
you are in fact doing, but you will follow it by command information.
B NIL "copy LOG:log.bbs LOGBACK:log.bak"
Now the Utilities menu has a new SYSOP-level 'B' command, which in this
case runs a program, quietly, to back up the log file. Refer to
the section on Help Files for information on adding an entry to the help
file.
The currently-available set of customizations for a command are:
GOTO <label>
NIL <dos command and arguments>
RAW <switches> <dos command and arguments>
CON <switches> <dos command and arguments>
BATCH <falcon batch file>
GOODBYE
MACRO
GOTO
~~~~
GOTO is simple. All it does it link the current menu to another through
the specified command letter. To link a Games menu to the main menu,
both ways, do this:
MENU Games
TWIT M GOTO Mmain
MENU Main
TWIT G GOTO Games
Note that Games must be declared before Main's GOTO points to it, or else
Falcon will cry foul because it has not yet heard of any Games menu. If
you have several custom menus which all reference each other, you must
declare them before linking them, like so:
MENU One
MENU Two
MENU Three
MENU One
TWIT 2 GOTO Two
3 GOTO Three
MENU Two
TWIT 1 GOTO One
3 GOTO Three
MENU Three
TWIT 1 GOTO One
2 GOTO Two
It is perfectly acceptable to reference a menu more than once, since it is
only created once. Technically, I did not need the first "MENU One" line,
because it would have been created before it was pointed to by the "GOTO
One" lines in MENUs Two and Three.
NIL, CON, and RAW
~~~~~~~~~~~~~~~~~
All three of these require the AmigaDOS "Run" command to be in your command
path. CON and RAW both require the "NewShell" command as well.
These three execute the given command with the given arguments. NIL
executes the command without any input or visible output. NIL is usually
used to perform a task that the user need not see or participate in. CON
and RAW execute the command, through the BBS, like a command executed in
a CON: or RAW: window. The user sees the output, and may type input.
In CON, the input is line-based, like in a CLI or Shell. In RAW, it is
character-based, where every character gets sent to the program with no
built-in editing, although the program may provide some if needed. Good
programs for CON and RAW would be a polling booth and a text editor,
respectively. Another difference is that CON programs are subject to
"More? [Y,n]" prompts.
Note that, for a CON or a RAW command, using "" means to open a full Amiga-
DOS shell. This is cute, but really quite dangerous for a BBS to have
because, except for the level required to start the shell, there is no
security. Now, if you're the only one with SYSOP, you can set the shell
to SYSOP level only and be safe, but many sysops have other users set to
SYSOP. It's also a problem if you run a program while in the shell that
opens its own window or screen, because of course you can't access that
from the BBS program.
Examples:
DISGRACE S CON MC "status full"
I CON MC "info"
A CON MC "avail"
NORMAL C RAW - "rawedit some text file"
SYSOP K NIL "delete LOG:log.bbs"
N CON MC "" ; "" means newshell
The switches are as follows (note that they are not used with NIL commands):
M Allow "More? [y,n]" prompts in CON commands. RAW commands do not
get these prompts.
C Allow user to type ^C to break out of the program.
A Force ANSI to be permitted in CON commands. RAW commands do not
have ANSI filtered out for them if the user has ANSI turned off.
R Force ANSI color not to be removed in CON commands. RAW commands
do not ANSI color filtered out for them if the user has ANSI
color turned off.
I Force IBM chars to be permitted. RAW commands do not have IBM
chars filtered out for them if the user has IBM chars turned off.
F Fix local screen after program is run. Some programs, Contris
for example, may send ANSI codes which change the settings in the
console.device, and this will reset them after the program is
done. Note that this involves clearing the screen.
- Nothing. Use this if you don't have any flags on. You could also
use it to make your flags look like the flags in the AmigaDOS
command "list", ie. "------" or "MC-R---" or "MCARIF".
Final note: It is permissible to run a batch file (ie. 'CON CM "execute
zeebie.bat"'), and it is also permissible for a program to run another
program (usually through the dos.library function Execute("command",NULL,
NULL), if there are any programmers wondering). All I/O will be properly
redirected.
BATCH
~~~~~
BATCH will read in and interpret the batch file you specify, when the
user types the command letter. Note that this is not a DOS batch file
but rather a custom file made up of NIL, CON, and RAW lines, like this:
RAW - "rawedit T:temp_file"
NIL "cuss_filter T:temp_file"
CON CM "echo \"*n*nThis is the file you entered, filtered:*n\""
CON CM "type T:temp_file"
NIL "delete "T:temp_file"
CON CM "echo \"*nDone.\""
If that file was called "cuss.bat", you'd use this to add it:
NORMAL N BATCH "cuss.bat"
The reason this is not a regular batch file is so that you can have both
RAW and CON commands in one sequence. If you just want a regular AmigaDOS
batch file, use something like 'CON CM "execute zeebie.bat"'.
The only drawback to BATCH files is that there is overhead for every
command to set up the door, usually amounting to a second or two pause
before each command. Naturally this would drop on a faster computer like
a 3000.
Most of the time you will not need BATCH files.
GOODBYE
~~~~~~~
Obvious. The user can log off with this. Example:
TWIT G GOODBYE
Ta da.
MACRO
~~~~~
Use this to execute a few BBS commands through one. For instance, to
create a one-character logoff sequence from the Message Menu:
TWIT O MACRO "GYN"
Do not call the macro you are in. It will be a bad thing. Don't call
a different macro that calls the macro you are in. It will be a bad thing.
Make sure your macro can stand having other commands stacked after it.
For instance a macro which did a global search for new files would work
as "LG*", but not if there were other commands following it. The "*", or
any other description, is read in as a "word" and therefore needs a white-
space character to separate it from anything that follows. It should
instead be "LG* ".
Arguments
---------
Arguments may have BBS information dynamically inserted into them. If,
for example, you wanted to pass the user's name to a game, you could say:
RAW - "playgame \"½FULLNAME╗\""
That would be an example of a straight copy. There are also conditionals,
which insert the first following ½╗-type string if the flag is on, and the
second if the flag is off, ie:
RAW - "playgame \"½FULLNAME╗\" ½ANSI╗½╗½NOANSI╗"
...which would give something like 'playgame "Brian Fehdrau"' for my
configuration, and 'playgame "Joe No-Ansi" NOANSI' for someone who doesn't
want ANSI graphics. As you can obviously see, it's permissible to put
nothing between the "½╗"'s in a conditional argument. It's easiest to
think of conditionals like this: "½if this flag is on╗½then insert this╗
½else insert this╗".
There are also prompt arguments, which ask the user for a certain kind
of command with a given prompt. The ½╗ string following the argument
contains the prompt. ie.:
V CON CM "ppdecrunch \"½FILEPATH╗½AGETWORD╗½View which file? ╗\""
(That would be used to V)iew a PowerPacked text file in the current file
area.)
All dynamic arguments come between a '½' and a '╗'. On my usa1 keymap,
these are typed with alt-'9' and alt-'0'. I picked these because they
weren't too likely to be needed on the command line. If, however, you do
need them, you can enter "½½" for a single '½', and '╗' is fine by itself.
Note that these arguments may also be used in MACROs.
Here is a list of dynamic arguments, without "½╗"'s (Note that these ARE
case-sensitive, and therefore MUST be entered in uppercase):
Argument types:
---------------
s = string
d = 16 bit signed integer
ld = 32 bit signed integer
u = 16 bit unsigned integer
lu = 32 bit unsigned integer)
Straight copy arguments
-----------------------
FIRSTNAME s The user's first name, ie. "Brian"
LASTNAME s The user's last name, ie. "Fehdrau"
FULLNAME s The user's full name, ie. "Brian Fehdrau"
CITY s User's city/area, ie. "Saskatoon, SK"
PASSWORD s The user's password (be careful!) ie. "(yeah, right!)"
TOTALTIME d User's total time on to date, in minutes
TODAYTIME d Time of previous calls today, in minutes
CALLTIME d Unmodified time allowed per call, -1 if unlimited
DAYTIME d Time allowed per day, -1 if unlimited
TOTALDOWN ld User's total downloads to date, in kilobytes
TODAYDOWN ld Total downloads today, in kilobytes
CALLDOWN ld Unmodified download allowed per call, -1 if unlimited
DAYDOWN ld Download allowed per day, -1 if unlimited
TOTALUP ld User's uploads on to date, in kilobytes
CALLS u Number of times user has called to date
MSGS u Number of messages user has entered to date
FILEAREA u The user's current file area
FILEPATH s The path to user's current message area
Note that this path is available from any menu.
MSGAREA u The user's current message area
MSGPATH s The path to user's current message area
Note that this path is available from any menu.
LASTCALL lu The user's last call, in seconds since 00:00 1 ??? ????
CREDIT lu Mail credit, presently in cents
WIDTH u Width of screen, in columns
HEIGHT u Length of screen, in rows
LEVEL u Userlevel, 0-5 (TWIT,DISGRACE,NORMAL,PRIVIL,ASSIST,SYSOP)
HELP u User help level, 0-2 (NOVICE,REGULAR,EXPERT)
USERNUM d User's number in user.bbs file, starting with 1, not 0
USERDIR s Path to directory containing user.bbs file
Conditional arguments
---------------------
IBMCHARS Does the user support the upper (128-255) IBM chars?
LINEEDIT Line editor vs. screen editor
DESTR_BS Are the user's backspaces destructive?
NOCOLOR Does the user want ANSI color filtered out?
CLEAR Does the user want screen clearing?
FEEDS Does the user need linefeeds?
ANSI Does the user want ANSI?
MORE Does the user want more prompts?
Prompt arguments
----------------
GETLETTER s Get a letter/command, same stacking as in BBS
GETNUMBER s Get a number, same stacking as in BBS
GETWORD s Get a word, same stacking as in BBS, ie. a filename
GETSENTENCE s Get a number, same stacking as in BBS
GETSTACK s Get entire stack or command line with no parsing
These prompts will not accept a blank answer. They will insert a blank
string if the user hits return. If you prepend an "A" to the string,
ie. "AGETWORD", it will take a blank string from the user as a signal
to abort the command. Remember that any error- or range-checking is up
to you (ie. look out for "#?"s or "*"s in filenames).
An unrecognized argument is just printed out verbatim, ie. "½ZOT╗" would
come out as "ZOT".
Note on help files
------------------
By default, a menu's helpfile will be looked for as HELP/<label>help.bbs,
which in this case of a Utilities Menu would be HELP/utilitieshelp.bbs.
However, you can set it up to look for a different name like this:
HELPFILE <filename>
Which would then be looked for as HELP/<filename>.
What Kinds of Programs to Use and What Kinds Not to Use
-------------------------------------------------------
When Falcon detects that a user is too inactive or has run out of time
altogether, it sends what is called a C break signal to the program,
which is exactly the same as if you had typed control-C when the program
was running in a normal CLI or shell. This is how Falcon regains control.
If a program will not exit cleanly and reasonably promptly (no more than
10-30 seconds at the outside) on a control-C signal, you should avoid
using it. Note that this break signal is only sent to the program which
most recently had some I/O.
Warnings
--------
Do not use ARun to run Falcon under 2.0. ARun disagrees with the system
call Execute(), which is used to run external programs. You'll probably
get an odd-address exception guru if you do.
Be careful when linking (with GOTO) into and out of built-in menus. You
should not, for instance, link out of the Sysop, UserEdit, Subop, or
Librarian menus, since they have special exits that can save changed
config files.
Suggestion
----------
I suggest making your Run and NewShell commands resident (automatic under
2.0). Run is used once for every NIL program, and twice in a RAW or CON
program along with NewShell: Run is used once by the system call
Execute(), and both are used in the command that is Execute()d. Actually,
come to think of it, Execute() may not know about resident commands under
1.2/1.3. I'm not sure. Maybe put it in RAM: if your drive (whatever
sort) is slow. This is to reduce overhead.
Notes About DLG Doors
---------------------
DLG Pro, another Amiga BBS, uses similar doors. If they do not access the
DLG userlog or data structures directly, you can use them with Falcon.
You will need to figure out the conversion from their arguments to mine,
since I don't currently know anything more than their %1 corresponds to
my ½FULLNAME╗. Shouldn't be too hard, though. You may need to set up a
directory or two, but nothing painstaking.
Apparently, DLG has a DF command that other programs can Execute() to type
a file. I understand that the DF command interprets their %x codes.
Just replace their DF program with Type. And, no, I do not interpret their
%x codes. You see, they don't seem to want to tell me what they are so
that we could, say, form a standard interface. Tom Conroy said something
to the effect of "We don't want to give away trade secrets." Unimpressed,
I replied with a comment about his evidently expanding hat size.
Sample External Menu
--------------------
MENU External
TWIT M GOTO MAIN
G GOODBYE
DISGRACE S CON CM "status full"
I CON CM "info"
A CON CM "avail"
NORMAL E RAW - "rawedit \"some text file\""
C BATCH "cuss.fbat"
P RAW - "execute SomeRawGame_Setup_Then_Run ½FULLNAME╗"
SYSOP B NIL "copy LOG:log.bbs LOGBACK:log.bak"
N CON C "" ; newshell
MENU Main
TWIT X GOTO EXTERNAL
Editing the HELPDIR's externalhelp.bbs file would be up to you.
13. Batch File
===============
You'll probably find a file called "fbatch" in your distribution archive.
Fbatch is the batch file I've used so far. However, fbatch is going to be a
problem. It really only works in the ARP Shell, and the Arp Shell doesn't
work under 2.0. I'm going to have to dump it. I think I'm just going to
distribute Falcon without an example batch file and let the user work it
out, since it's bound to end up very personalized when they're through
anyway. As I've suggested elsewhere, you should take a look at Robert
Williamson's Roof shell, which is meant for BBSs (FidoNet BBSs, to be
exact). However, I'm still going to include the documentation I wrote for
fbatch as long as I'm including it. Really, though, you'd be much better
off writing you own.
Falcon's Batch File
-------------------
"FBATCH" is the file that runs my point (if you don't interface with
FidoNet and you don't run any other schedules, you don't need fbatch or any
other batch file). It is written for the ARP shell. I'm not sure if it
could be made to work under the regular CBM shell (which the ARP shell is a
superset of).
The batch file and several of the example packer/mailer config files require
BBS: to be assigned to the directory Falcon is run from, LOG: where you want
the BBS's, the mailer's, and the batch file's log, MAIL: to the directory
which holds the message area directories, LOGBACK: to where ever you want to
keep backups of the log.bbs file, MAILIN: to the place where the mailer will
put incoming mail packets and archives, and MAILOUT: to your MATRIX
directory. So put something like the following in your startup-sequence,
(it's basically what I use with my 590HD):
assign BBS: DH0:bbs
assign LOG: BBS:
assign LOGBACK: BBS:logs
assign MAIL: BBS:msgs
assign MAILOUT: MAIL:matrix
makedir RAM:inbound ; you may want to use a MAIL:inbound
assign MAILIN: RAM:inbound ; dir instead, esp. with big echoes
Note that the environment variable "fret" is set by Falcon on exit, usually
based on schedules from sched.bbs. It may be set to "quit" on a manual
exit, or "exit" if it has been spawned from a front door (though in that
case it hardly matters). The type of environment variable is determined by
the presence (or absence) of the CBMENV keyword.
Note that at least one event (newlog) has an alternative (commented out)
that would make use of the ARP Shell's pipes. It is in the form of a
$(date) command in this case, which inserts the result of the 'date' command
into a filename. In order to use this, one must have not only the ARP
Shell, but must have PIP: mounted as well. PIP: is a pipe that comes with
ConMan that ARP also uses. Instructions on its installation should be found
in both the ARP and ConMan documentation. It is not required, but it is
useful.
The file can be run with an event name (ie. "run fbatch mail") and it should
act as if Falcon had signalled for that event to happen. Afterwards, it
will return to Falcon or exit if called with the THENQUIT switch (ie. "run
fbatch import thenquit"). Remember to set the S (script) protection bit.
If not, you'll have to change the command to "run execute fbatch ...".
14. Suggestions and Hints
==========================
o Run in "tiny" (WorkBench idiot bar) mode whenever you are not actively
watching or using the program. Scrolling a three bitplane hires screen,
especially if it is visible, is very slow, not only because of the
actual data-movement, but also because displaying a three+ bitplane
hires screen steals CPU time and bogs down the system. If you leave the
display open, the serial output will be slowed down visibly. I can't
help this. (For the same reason, you should always leave the
TRANSFER_TWOPLANES flag in your falcon.cfg file.)
o If you do have the full display going, do not keep the status window on.
It partitions the scrolling, which also slows things down horribly. Try
it: you'll see what I mean. I can't help this either.
o If you want to remove the file areas altogether or restrict them to
registered users, you must remove all links to the File Menu or set them
to the appropriate level. These links include, at present, the F and J
commands from the Main Menu, and the J command from the Message Menu.
You can do this like so in the menus.bbs configuration file:
; to remove
MENU Main NOT F J
MENU Message NOT J
; to restrict
MENU Main PRIVIL F J
MENU Message PRIVIL J
See the documentation on menus.bbs for more information.
Note that yanking up area 1's level is not sufficient to restrict access
to the file menu, because the user can always get into area 1. Even if
they try to change areas, they can still hit return to drop back into
their current area (usually 1) when they see that no areas are
available.
o Do not use external message renumbering programs. Unless they say they
will update Falcon's user pointers, chances are that they won't, and
your users will be left with inaccurate last-read pointers.
o Try using Robert Williamson's ROOF shell if you need scripts to do
something more complex than automatically running the BBS at startup.
My ARP-Shell-based scripts will be useless under 2.0, because the ARP
Shell does not work under 2.0, and 2.0 is due out in a few weeks at the
time I'm writing this. As Robert uses Falcon, among other things, you
should be able to work from his example scripts. (NOTE: At this time,
I don't think he's released a version (with samples) since receiving
Falcon. Ask him...?)
o If you're running on floppies, use a reasonable number of disk buffers.
This will help with loading commonly-used overlays and with reading the
brief-help portion of the prompt for users with a help level of NOVICE.
Getting FaccII would be a good idea. Another thing you should remember
when you're running on floppies is that LIBS: must be assigned to a disk
in a drive, or else the program will not be able to load the XPR
libraries.
o If you're running on any slow drive, most notably floppies (but some
hard drives too), you should increase your serial read buffer's size
(from Preferences). Ideally, it should be big enough so that it won't
overflow while the protocol stops to dump some data to disk. This
should also reduce or even prevent RTS/CTS pausing on high-speed modems,
which pause instead of letting the buffer overflow. How big the buffer
should be depends on how fast the transfer is and how slow the drive is.
Experiment.
o Try to avoid modifying files and/or paths in file areas more often than
you need to. Scanning areas for new files is done by looking at the
directory, and if it has been modified since the last call, then the
entire directory is scanned to see if there are any non-"files.bbs"
files that have been modified since the last call (it's weird, but it
works well enough and works within the files.bbs concept). Therefore,
if you modify the directory, the entire thing has to be scanned (like
the AmigaDOS List command would do) and that slows things down a bit.
Modifying a file will, obviously, make it "new" even though it
probably isn't.
15. Miscellaneous/Technical Information
========================================
Workbench/Kickstart 2.0
-----------------------
Falcon works under 2.0. It even works with wacky system fonts. The last
time I had someone run it under Enforcer in front of me, we could only find
one hit, and it was a safe and easily-fixed bug (basically a strcpy(NULL,
NULL), in case you're wondering). He's never reported any hits since then,
but I don't know how often he runs Enforcer.
Overlaid vs. Pure Executables
-----------------------------
The executable file is actually about 30% larger than the entire memory
required (data space included) during a waiting-for-call, tiny-WorkBench-
window situation because Falcon uses overlays for most sections (config file
reader, each menu, the editors, etc). They are loaded at need and unloaded
when not in use, which is sensible because most are mutually exclusive. On
a hard drive, the load time for each section should be practically nil.
Someone using a floppy shouldn't notice too much, especially if they usually
have a reasonable number of buffers. Most sections, if not all, are less
than 20K or even 10K.
However, if you are going to run Falcon several times at once, you will
probably want the re-entrant/pure/resident-able version. It takes up more
memory if you're only running it once, but on subsequent invocations it only
needs enough memory for the stack and variables/data. If you need this
version, please contact me and we'll see if we can get it to you. I did not
want to include it in the general distribution archive because it's a fairly
sizable file and most people will not want it.
bf.library
----------
"Why do we have to have another library?" you ask. Well, at the moment
Falcon is only really meant for a single-line system (although it can be
used for multi-line, albeit somewhat shakily). However, it is being adapted
for a secure multi-line environment, which will require the program to be
broken in two: first, a server program, which will read the configuration
files and control access to message areas and such, and a client program,
which will sign on with the server and actually run the system. In order to
avoid duplication of code between the two programs, a library with a single,
re-entrant copy of the code was created. Some of the functions are generic
enough (ie. a fully-featured, re-entrant printf()) that I may make the
library format public for doors to use.
Using a Nodelist
----------------
In order to access a nodelist from the BBS, you must have traplist.library,
version 4+, and the TrapList program that comes with it. Unfortunately,
neither has been released to the general public. *** Max has just announced
that TrapDoor 1.80 will be released on October 1st, which, coincidentally
enough, is the day I'm releaseing Falcon 1.00. That's a convenient
coincidence. At any rate, if you've got the necessary stuff, and you set up
the nodelist directory properly in Falcon.cfg, Falcon will start using the
nodelist.
Refreshing the Display
----------------------
When Falcon refreshes the display when returning to full-screen mode from
tiny mode, what it does is print the last (1.25*lines_in_screen) lines that
were displayed, or however many came after the last screen clear if that was
more recent. This can be problematical during a full-screen edit, since
there aren't many "lines". A "line" in this case is a string which ends
with an end-of-line character, and there just aren't many output in most
full-screen editors (including mine). It may take a bit of time to print
out what the BBS sees as a rather longish line which, will probably include
much of your editing, depending on how large the review buffer is.
Confused? Oh well.
Editing File Lists
------------------
In case you want to edit the files.bbs file lists in your file areas, this
is how they are interpreted:
- If line starts with illegal file start, or <space>, '=', or '-', it is
considered a comment. Note that if you want to use ANSI color in the
comment, you may need to reset it at the start of every line because all
comments are initially set to cyan.
- Otherwise, Falcon gets all characters up to the first whitespace and
uses them as the filename, then gets the file size and date from disk
and displays them (or "MISSING ??-???-??" if it could not find the
file), then a '*' if file is new since last time file area was listed,
then displays the rest of the line as comment. Note that the file
comment will be wrapped to fit a column underneath its normal position
if it is too long and the caller's screen is wide enough to accommodate
a decently-sized column (otherwise it'll just print the entire line all
at once).
Falcon considers the following to be illegal file starts: "\:/#*?[]()><|".
Naturally, there are others, like carriage returns or escapes, but those are
the ones that may not have been obvious. This is useful to know, since
the files.bbs listing decides whether or not a line is a comment or a file
based on whether or not the first character of that line is an illegal file
start (as well as space, '-', or '='). Therefore you can use those
characters in a comment without having to put a space at the start.
The Quote File
--------------
The quotes.bbs file is made up of a number of quotes, separated by lines
with nothing but "---" on them. It is found in the TEXTDIR.
If the quotes.bbs file can't be found, it says:
"A wise man knows when there is something wrong with his
quoting facility."
The quote is selected by dropping in at a random position and finding the
start of the quote it drops into. This results in larger quotes being
picked more often, but it's the simplest way to do it.
The Log File
------------
This file will not show up unless specified in Falcon.cfg.
It comes out in this format:
<char> <datestamp> <comment>
Where <char> describes the comment type:
"?" = Program error
"!" = User did something naughty
"*" = Noteworthy user action
" " = Nothing special
The datestamp is a message-style datestamp, with the date and time.
The comment is the actual reason the entry has been made. It may be
indented somewhat: 2 spaces for things that occur while Falcon is
running, 2 more for things that happen during a call, and a little
more yet for transfer file lists.
Text Files
----------
When transmitting a text file, if Falcon encounters a ^B (ASCII 2) character,
it will toggle ^C breaking on or off, depending on what it is at that time.
The default at the start of the file is to permit breaking. This is useful
if you want new users to sit through your entire warning/whatever to them,
but don't be a jerk and put one into the start of your 23K animated ANSI
sequence. If I get complaints about this sort of thing from users, I'll just
take it out, since I'm more a user than a sysop and will side with them.
It should also be pointed out that some .bbs text files have .gbs
counterparts. These are displayed, if available, to users with ANSI. If
they aren't available, the usual .bbs file is sent, as it would be to a non-
ANSI user.
Help Files
----------
Menu help files have a special format. Note that this only applies to help
files specifically for menus, and not to text files used for, say, the long
help in FRED. These help files are arranged in lines, as follow:
line 1: Regular level help. Each letter is checked to see if the
is available to the user. This text is read at program
startup and cached, to avoid pauses. For NOVICE level help
a pause seems negligible, but for one line, it's annoying.
line 2: Column width (note that this is only used for calculation
of current line width and that each command must have
spaces to pad to the column width). This is needed because
ANSI can make strings look longer to the computer than they
are when displayed.
line 3+: Groups of three, like so:
line A: First letter of command, used to figure availability
line B: Brief help, out put in columns of width from line 2
line C: Line-long help. Not used yet as of 0.27. Should be
less than about 70 characters
For example, to make a menu which would look like this in REGULAR level
help...
THE MENU: A B C D ?
Select:
...and like this is NOVICE level help...
THE MENU:
A)Go Here B)Go There C)Go Home D)Go Away
?)This Help
...you would have a help file (thehelp.bbs) that looked like this in the
HELPDIR specified in falcon.cfg:
A B C D ?
12
A
A)Go Here
Go to this place
B
B)Go There
Go to that place
C
C)Go Home
Go to your residence
D
D)Go Away
Go to hell
As you may have noticed, the name of the menu determines the name of its
help file. It's always HELPDIR/<menu_name>help.bbs, with the one exception
of the Message Menu's msghelp.bbs file.
The Numeric Keypad
------------------
In some parts of the program, the numeric keypad has special functions for
the following keys: '0..9', '.', '-', and their shifted versions. You
can use the number pad in the normal manner by typing control-NumL (the
left parenthesis on a 500/2000/3000 keypad, use control-'-' on a 1000) to
toggle modes. You can also toggle modes on the fly by using the control key
with one of the keys above, to get what the key would be if the current mode
was reversed. The pad defaults to "special" mode.
Remote VT100 Keys
-----------------
The following VT100 key strings are accepted by the BBS and used where
applicable:
Cursor-Up "<CSI>A"
Cursor-Down "<CSI>B"
Cursor-Right "<CSI>C"
Cursor-Left "<CSI>D"
Shifted-Cursor-Up "<CSI>T"
Shifted-Cursor-Down "<CSI>S"
Shifted-Cursor-Right "<CSI> @"
Shifted-Cursor-Left "<CSI> A"
End (Keypad 1) "<CSI>K"
Home (Keypad 7) "<CSI>H"
Where <CSI> is one of "<esc>[", "<esc>O", or ASCII $9b.
ANSI Used in Output
-------------------
Falcon, if the appropriate modes are on, uses the following set of ANSI
codes (where "<CSI>" is presently "<esc>["):
Basic ANSI FRED Msg General
----------------------------------------------------------
<CSI><n>C move right n chars * *
<CSI>H home * * *
<CSI><r>H move to column 1, row r * *
<CSI><r>;<c>H move to column c, row r *
<CSI>K clear from cursor to eol * * *
<CSI>J clear from cursor to eod * * *
<CSI><???>m color/style * * *
The <???> field in the color/style code can be zero or more of the
following, separated by ";"'s:
0 ...... Reset
1 ...... Bold on
5 ...... Blink on
30-37 .. Change foreground color to n-30
40-47 .. Change background color to n-40
(If anyone wants to know, the screen clear sequence I use is the following:
"<ASCII 12><esc>[H<esc>[J" which works out to "formfeed, ANSI cursor-to-home
code, ANSI clear-to-end-of-display code". That should clear ANY screen.)
The following ANSI controls are not supported by all terminals. They are by
any Amiga term which uses the console.device. Also JRComm (IBM-ANSI mode)
for the Amiga, Telix for MS-DOS, and apparently ZTerm for the Macintosh.
They are not required to use Falcon, but enhance its operation if you use
certain modes.
Special ANSI FRED Msg General
----------------------------------------------------------
<CSI>M delete one line * *
<CSI><n>M delete n lines *
<CSI>L insert one line *
<CSI><n>L insert n lines *
<CSI>P delete one char *
<CSI><n>P delete n chars *
<CSI>@ insert one char *
<CSI><n>@ insert n chars *
Those "stat.dat" Files and the "systemstat.dat" File
----------------------------------------------------
Each area/stat.dat file caches (saves) the values one sees upon entry to the
Message menu. These include the number of messages and the highest message
in that area. It also includes two highwater marks should an echomail
processor ever decide to use them, and a fair deal of expansion space for
later usage. The reason these values are cached is that is takes time to
scan a directory to figure them out, especially if the program is running on
floppies. Such a scan is only done if the directory has been modified since
the stat.dat file was last written out.
The systemstat.dat in the config directory holds the system's birthday,
number of calls, last-user and current-user information, the most recent
MSGID serial number and the number of messages entered to date. Don't
delete it if you can help it.
16. FidoNet-Specific Technical Information
==========================================
For people who care, and I imagine that excludes the majority of you, here
are the ways Falcon supports various mail-related items:
Quoting
-------
- New quotes are read in as lines a fair bit narrower than the usual
screen width of 80 (I know, a magic number, how hideous). Then each
line has a space, at most two initials, a '>', and another space added
to the start. Blank lines are left alone.
- Old quotes are left alone. As for identifying them, I look for a '>' in
the first 6 characters of each line. Simplistic, but it works
remarkably well. There is one exception: it is not a quote is there is
a '<' before the '>', because "<grin>" is a common thing to find at the
start of a line.
Quoting a message from me with quotes from somebody else's message might
look like this:
(Left edge)
|_______________________________________________________________
|
| > SE> So how do you quote?
| >
| > ^^^^^ Like this.
|
| SE> I hate your quoting style! You are such
| SE> a moron!
|
| BF> It looks better than yours.
|
|I agree.
|_______________________________________________________________
I currently prepend a header, like so:
"In a message dated Wed 12 Dec 90 04:49, Brian Fehdrau wrote:"
I think I shall change that to:
"On Wed 12 Dec 90 01:51, Brian Fehdrau wrote:"
^^^^^^ implies "to All"
"On Wed 12 Dec 90 04:49, Brian Fehdrau wrote to Maximilian Hantsch:"
^^^^^^^^ not a reply
"On 14 Dec 90 01:23:45, Maximilian Hantsch replied to Brian Fehdrau:"
^^^^^^^^^^ a reply
...and then again with a blank line, converting any original Fido two-space
style datestamps ("dd mmm yy hh:mm:ss") to one space to save a little room
(oh boy, one byte). ^^
I still haven't done this, though.
Netmail/Echomail Kludge/Control Lines
-------------------------------------
Falcon supports the following kludge lines:
N E KLUDGE <parameters>
- - ------------------------------------
* FMPT OrigPoint
* TOPT DestPoint
* INTL Dest.3D Orig.3D
* GATE: Dest.5D Orig.5D
* * MSGID: Orig.?? SerialNumber.Hex8
* * REPLY: Dest.?? SerialNumber.Hex8
* MSGTO: Dest.5D
* * PID: Falcon <version> <number>
Notes on Kludges
----------------
- .3D = Zone:Net/Node
.5D = [Zone:]Net/Node[.Point][@Domain]
.?? = Pretty much any kind of address. Usually a .5D address, but could
very well be something like a UUCP site, like "weyr.fidonet.org".
- Falcon can also read .5D as [Domain#][Zone:]Net/Node[.Point], but does
not write them that way.
- Falcon will write the minimum amount of a 5D address that it has to.
Meaning, if it doesn't know the domain, it won't include one, and if the
point is 0, it'll be omitted because that would be redundant (since
"zone:net/node" is equal to "zone:net/node.0").
- Falcon does not currently do its own packing. Therefore PATH lines
aren't my problem.
- Serial numbers generated by Falcon always increase. If you want to know
exactly how they are determined, they are the C time() value (seconds
since a certain date), and incremented by one if that value has already
been used.
- REPLY and MSGTO are mutually exclusive.
- INTL's, FMPT's and TOPT's can have colons (ie. "INTL:") in them and
Falcon can still read them. They will be written without, at least
until FTS-0001 says otherwise. As a side note, any other keyword can be
read without a colon, though this is probably not encouraged.
- INTL's can be .5D addressed (like GATE) and Falcon can still read them.
It will not, however, write them that way.
- GATE is only included when the domains are both non-blank and do not
match.
- Presence of a GATE or MSGID/REPLY/MSGTO combination does not exclude
INTL, FMPT, TOPT. And it won't until somebody declares them obsolete in
favor of GATE/etc. A little redundancy won't hurt too much, whereas a
message not getting to its destination might.
- At the moment, I don't read origins to help find the originating node.
This is due to laziness, not an actual decision, although I don't really
trust origins anyway.
- I do not intend to support EID and RID. MSGID and REPLY do the job
better and easier.
- I don't know if I'm doing GATE right. I don't know what the actual
message (binary header) should be addressed to.
Datestamps
----------
Falcon supports two styles, configurable at run-time by the sysop.
SEAdog: "Wkd dd Mmm yy hh:mm" ie. "Tue 1 Jan 91 01:23"
Fido 11w: "dd Mmm yy hh:mm:ss" ie. "01 Jan 91 01:23:45"
17. Yet to Come
================
o The setup needs to be modified into a server-program/client-program
arrangement. You can probably run a multi-line system with Falcon, but
there is no explicit support for it. I've tried to make message-saving
robust enough to work with a multi-line setup, but two users saving a
message at exactly the same time, give or take a quarter second, could
probably still mess things up. Also, the message area stats could be
obsolete occasionally for one line (actually, this is standard behaviour
for some programs, but I'd rather do it right when I get to it).
Therefore a server is required to track the number of messages and write-
access to areas, not to mention other stuff line linking the lines for
chats and so on. I've done some work on this, but none of it is actually
in the program you have.
o english.bbs is not complete. One time, when I was less busy, I started
exporting strings from the program into this language file, which could
then be replaced later with a different language. However, things came
up and I only got a small amount of the text transferred. I'll work
on it later. It's probably just as well, since the text came out of
what is probably the only source file which doesn't change much anymore.
o Aliases or Alias message areas. I'll either add an overall-alias to
the user record, or perhaps just have Opus-style alias areas, where the
user has the ability to enter the From: name of a message.
18. ICK! BUGS! (And other caveats)
=====================================
Some known bugs╣ and caveats as of 17 Sep 91:
- Don't ARun the program under 2.0. ARun, I think only with the NOIO
option set, messes up if the program tries to call the Execute()
function. Messes up, as in Gurus. This is an ARun thing, not a
Falcon thing, but I thought you should know.
- Because of the ^A kludge lines written out when an echo or matrix
message is saved, U)pdating such messages is currently not at all
safe to do. Regular users are banned from doing it, and you should
not do it either. I'm going to have to find some way to work
around this. For the time being, you can do this if you need to
edit an echo or matrix message: start a new message (enter or
reply), import (^Q^F) the ???.msg file of the message to be updated,
paste it in, kill the header and kludge lines (don't worry, the
unprintable bits of the binary header didn't get read in), make any
changes, save it, and delete the original. It's messy, but it has
the desired effect. If you're calling from remote, just ASCII
capture the message and re-upload it instead of importing it.
- The first mouse click on the Falcon screen is supposed to be absorbed
(as in MicroEmacs) so that the window can be activated without
messing anything up. Sometimes the first click doesn't need to be
absorbed, though, and that can lead to annoyance when your it-should-
be-noticed-damn-it click doesn't do anything. But no harm is done.
- Not really a bug, but the Bytes/sec field in an XPR _send_ can be
awfully high, at least at first. This is because the output is
buffered, and the entire first block _seems_ to XPR to have been
sent out in the blink of an eye. So we're talking about 1024
bytes/sec on a 2400 baud transfer in the first block. It'll smooth
out as more blocks are sent, but it'll always be high. The after-
transfer CPS rates shown underneath a terminal transfer and in the
S)tatus command for a BBS transfer are more accurate. Unless you
want clunky & chunky Zmodem transfers, this one won't be "fixed".
- For some reason I haven't figured out yet (obviously), FTerm sometimes
misses a short block of characters (like 5-10). Beats me why, but
then again, I'm not really here to write a terminal anyway.
- Download limits don't actually do anything (download capability is
instead based on time). I no longer like the way I was originally
going to do them, so they don't do anything just now.
- Falcon disables DOS requesters so that disk-full errors and the like
will simply return an error to Falcon without making it hang while it
waits for a gadget click from the user. This is good, because it means
your BBS will never lock up, but it's bad because a software error will
always go straight to the blinking red alert instead of possibly going
to the task-held-etc. requester. In other words, even a tame error like
a divide by zero will take the entire system down. Now, Falcon is
really quite clean, but it could die through no fault of its own, as
another program could be randomly trashing memory which happens to
belong to Falcon. Just so you know. There's nothing to be done,
really. It's a problem every BBS program has.
╣ Some bugs are mentioned because they may be a while in being fixed.
The rest are just to inform the new sysop of what I'm aware of.