DLX MULTI-LINE BULLETIN BOARD SYSTEM
Version 7.0

INTRODUCTION

Welcome to the DLX community!  DLX is a multi-line, easily customized
BBS (bulletin board system) for the advanced SysOp (system operator -
that's you!).  It can be used for a social BBS or a business BBS or
for wherever your imagination leads you.  And if your board is a
success, you're not limited to a single telephone line.

DLX is most often used to run a social BBS.  On a social BBS, the
main activity is not file uploading and downloading, as on most
BBSes, but rather interacting with other callers by exchanging email
or chatting.  DLX supports two kinds of email: public and private,
and two kinds of chatting: one-on-one chatting and Open Forum (group
chat).

The DLX system requires an IBM PC compatible microcomputer, 1
megabyte or more of RAM, a hard disk with at least 10M free space
left and MS-DOS 5.0 or later.  You can support up to 2 telephone
lines with the normal PC serial ports and up to 32 lines by using
DigiBoard expansion cards.  And of course you'll need one modem for
each of your telephone lines.

DLX is designed to be easy for callers to use.  It is also fairly
easy for the system operator to manage, but to run DLX you first need
to become familiar with your PC and with MS-DOS.  You need to know
how to list a file, create and change directories and edit a file.
This manual won't teach you MS-DOS, so learn that first.

How to Setup Your New DLX System

Begin the setup process by making a backup copy of your original DLX
disk.  Work only from the backup.  Put the original disk in a safe
place (you'll need your original disk to get the update price on any
future updates to DLX).  If you're installing this version of DLX
over an earlier version, first make a backup copy of all the files in
the DLX directory on your hard disk.

Create a new directory on your hard disk for DLX with the command:

	MD C:\DLX

Copy the file DLX70BBS.ZIP into C:\DLX and unzip it.  Then create an
initial configuration of DLX with the command:

	SETUP

You'll be given a choice of whether you want to have a social system,
or a business system.  The social system asks things like age, weight
and sexual orientation; the business system does not.  When the setup
batch file finishes, it exits back to MS-DOS.

Now bootup DLX by typing DLX at the MS-DOS prompt.  You will be asked if
you want to check memory - say yes this first time (you won't need to
check memory again unless you change the amount of memory available
to the program).  Bootup DLX a second time and say no to the memory
check.  You will then be asked which lines you wish to activate.  At
this point, we only want to activate the keyboard, so, for this
bootup, just type N (for no) for each line.  DLX takes awhile to boot
because it reads a great deal of text into memory, so it won't have
to do a lot of disk access while running.

When the screen clears, hit a carriage return.  Log yourself in as a
new caller, and go through the new user questionnaire - thus making
yourself user number one.  Most SysOps like to be user number one.
User number one automatically gets the highest user level Ð level 9.
When you're done, type off to logoff.  Then type Ctrl-Break to shut
down the system.

Congratulations!  You have just completed the installation of a
generic DLX bulletin board system.  Of course, you'll want to
customize and personalize your BBS to make it your own.

Basic Customizing

DLX can easily be customized by editing various files, depending on
what you want your system to do, and how you want it to look.  In the
following pages, we will discuss each of these files and how they
effect the behavior of DLX.

All system prompts are stored in the file called PROMPTS.  A "prompt"
is a sentence or group of sentences that the system displays to the
caller .  A sample PROMPTS file is installed along with the program.
Feel free to edit this as you wish, using a text editor.  This file
is free form, although lines are limited to 80 characters in length.
A PROMPTS file consists of text interspersed with ampersand codes.
The ampersand codes are used to represent the variable parts of the
system prompts.  A detailed description of how these ampersand codes
work can be found later in this document (page 11).  You may edit all
this text however you want, but don't remove any of the &X codes used
to separate prompts.  You can even translate the prompts into a
foreign language.  Most text editors will work fine for this a word
processor will also work if you save the file as an ASCII text file.
The EDIT program that comes with MS-DOS 5.0 or later will work just
fine as your text editor.

Now edit the file PARAMS.  "Params" is short for parameters, which
are various numbers and such that control the behanviour of the BBS.
You can set the parameters however you wish.  More details about
these parameters are provided later in this manual, in the reference
section.

There are (up to) five multiple choice questionnaires available and
one essay questionnaire.  The multiple choice questionnaires are
given the filenames MULTIPLE.1, MULTIPLE.2, MULTIPLE.3, MULTIPLE.4
and MULTIPLE.5.  Sample files are included as examples.  MULTIPLE.1
is answered by all new callers.  MULTIPLE.2,3,4,5 are optional
questionnaires that you can associate with various public mail
categories by entering the questionnaire number in the appropriate
PUBMAIL entry.  If a questionnaire is associated with a public mail
category, then the caller will be prompted to answer it when first
accessing that category.  You can make answering it optional or
mandatory to see the mail.

The number at the beginning of multiple choice questions indicates
how many answers are allowed.  The indenting of answers on the
multiple choice must be followed exactly. Each multiple choice
questionnaire is limited to a total of 30 answers.  The essay
questions are in the file ESSAY.  Feel free to edit these files as
you wish - just follow the example format given in each of the files
(MULTIPLE.1, MULTIPLE.2 and ESSAY).  Note: you can include any number
of essay questions - more, or less, than the example provided.  There
is no fixed limit.  Once you've started your BBS, it's hard to change
the MULTIPLE questions, because it would make nonsense of the answers
people have already given, but it's easy to change the essay
questions because the questions themselves are stored along with the
answers.

Next, edit the file PUBMAIL.  PUBMAIL is the setup file for public
mail categories.  Each category of public mail has a block of
parameters separated by a blank line.  The file supplied is just an
example - you may add, delete or modify categories by adding,
deleting or modifying blocks of parameters with your editor.  For
each category, you may specify the name of the category, an
identifying letter, the file number of the moderator (if any),
whether to hold new messages for the moderator or not, multiple
choice questionnaire number (if any), whether the questionnaire is
required, whether the category is anonymous or not, an optional
restriction by gender, an optional restriction by sexual orientation,
the minimum user level for read/write access, and the minimum/maximum
age for access.  You may define up to fifty categories.  The public
mail identifying character for each category may be a letter, a
digit, or any of the following punctuation marks:

	# & @ ! % ( ) - { } ` _ ' $.

The file NEWS is displayed to each caller immediately after they log
in.  Put whatever you want in it.  It is conventional to put the date
the file was last updated at the beginning, so those who have already
read it can ctrl-C - remember that some callers may have slow modems.
Many sysops edits the news each day to list whose birthday it is.  A
program "BDAY" is provided in this package that helps with this.
This requires that you use a specific birthday question as the first
question of MULTIPLE.3.

The file HELP contains detailed information for callers on how to use
DLX.  The file EXPLAIN explains the various user levels and their
privileges.  The file ORDER contains a sample order form.  You can
edit these files as you wish.

The library is used to hold files for uploading and downloading.
Callers can transfer files from the library to their computer
(download) or transfer files from their computer to the library
(upload).  To set up a library, copy any files you want to make
available into an appropriate subdirectory of the LIBRARY directory.
Edit the MENU file as you wish - this is the file callers see when
they ask to list the library.  When callers upload files, DLX will
add short descriptions of them to the end of the MENU file for the
category.  It does this my taking the information provided by callers
when uploading a file.  You may create as many library categories as
you like using the MS-DOS 'md' command.

You may also define one or more databases.  The details on how to do
this are found later in this document.
 
The system is now ready - just start it up as before and off you go!

Main Menu Commands

?	Short list of commands
	This gives a short list of the commands that are available
	from the Main Menu.

A	Answer questionnaire again
	This command allows the caller to change the answers on their
	questionnaires.  The caller is given the choice of which
	questionnaire to re-answer.

B	Browse questionnaires
	This command allows the caller to peruse the answers that
	others gave to the questionnaires.

C	Chat Lounge
	In the Chat Lounge, the caller can initiate interactive chats
	with other online callers.  The Available command changes the
	caller's status to ChatOK.  The NoChat command prevents others from
	initiating chats.  The LoginsOff command is like NoChat but also
	blocks those bulletins that come in for each log in.  The PageOff
	command is like NoChat, but also suppresses chat request notices.
	Chat status remains in effect until changed, even over logoffs.  A
	minimum user level is required to initiate a chat.  The Who command
	allows the caller to see who's online.  The T command allows the
	caller to request a Chat with the SysOp.

	The O command allows the caller to enter the Open Forum.  All
	callers in an Open Forum channel are in one group chat, sometimes
	known as "CB Mode".  In Open Forum, any line typed is sent to
	everyone in the forum (on that channel).  There are special "/"
	commands that allow the caller to browse other callers, get a Who
	listing, send a private note, or squelch (suppress all lines from)
	another caller.

D	Database
	The database subsystem allows the caller to search for
	information in one or more databases setup for this system.  This is
	a free form text database, accessed by scanning for key words.

E	Explanation of user levels
	This command displays the list and explanation of user levels
	found in the file EXPLAIN.

F	Facts about this system
	This command lists the computer hardware and software used by
	this bulletin board system (or whatever you choose to display).

G	Goodbye
	This command allows the caller to logoff the system with the
	option of leaving comments or suggestions to the SysOp.

L	Library subsystem
	The library contains a collection of ASCII text files and
	binary program files.  These may be downloaded using ASCII, XMODEM or
	XMODEM-1K protocols.  Callers may also wish to contribute to the
	library by uploading text or programs.

M	Matchmaker or Master List of Users
	This command allows the caller to match with other people on
	the system.  The caller can select the age range, days since last
	call, minimum times called, gender and sexual orientation to match
	to.  In business mode, a list of all active users is presented
	instead.

N	New essay answers
	This command allows the caller to answer or re-answer the
	essay questions.

O	Order Entry
	This command allows callers to enter an order.  The system
	prompts the caller with a series of questions.  The answers are made
	up into a message and sent to a special account.  You can use this
	mechanism to allow callers to order subscriptions online.

P	Public message board
	The public message board is where items of general interest
	are posted (as opposed to private mail).  A variety of different
	categories can be arranged.  Categories can be limited by age,
	gender, sexual orientation or user level.  Also, some categories may
	have a moderator who will approve messages before they are generally
	available.  The "N" command may be used to advance from one category
	to the next.

R	Read private mail
	This command allows the caller to read private email that
	other users have sent.  The equivalent of an R command is
	automatically executed at logon.  Deleted messages can be un-deleted
	until logoff.

S	Send private mail
	This command allows the caller to send private mail to other
	users.  There is a hold function available. A held message is left in
	memory so the caller may go back and re-read mail or a public
	message, browse a questionnaire or whatever, and go back to the same
	spot in the letter and continue entering the message.

U	User log display
	This command displays the last 200 users in reverse
	chronological sequence.  An asterisk (*) following the user's name
	indicates a new user.

W	Who's online now
	This command shows a list of who's on each line right now,
	and whether or not they're available for chatting, and whatever else
	you choose to display.

X	Exit and logon again
	This command restarts the program at the opening greeting
	message and allows callers to logon without having to re-dial the
	system.  This will not give a caller additional time.

DATE or TIME gives the current date and time.

HELP displays the help file.

NEWPASSWORD allows the caller to change passwords.

NEWS prints the sign-on message again.  This message is contained in
the file NEWS.  You can use ampersand codes in this file, if you
like.

WRAP enables word wrap (the default)
NOWRAP disables word wrap (for uploading messages)

VERSION displays the DLX version of the BBS.

BYE or OFF or EXIT at the Main Menu or any prompt logs off immediately.

SysOp Commands

There are special commands available only to SysOps (user level 9).
They are available from the main menu.  These commands are equally
valid whether you access the system locally or over a modem line.

Command	Meaning
!C	Send canned message or reply with canned message - asks for
	prepared file to send.  Use this instead of R(eply) when responding to
	private mail, or at the Main Menu instead of S(end).  The
	prepared file should be in your DLX directory.  It should be a plain
	text file which will appear as the body of the letter.  You can use
	ampersand codes in the canned letter to personalize it.  The easiest
	way to prepare one of these is with the MS-DOS EDIT program.
!D	Delete user.  The user can be online or offline.
!J	Send junk mail (private mail to all users).
!K	Kill a phone line.  Anyone on there is kicked off.  Resets the modem. 
	If once doesn't work, do it twice.
!L	Change level of user.
!M	Change mailbox size.
!N	New callers allowed/not allowed.  Does not affect keyboard, where a
	new user can always log in - just blocks modem callers.
!O	Delete old users who haven't called in specified  number of days.
!R	Reset next new user number.  DLX will recycle unused user numbers
	starting at the one you give.  It will skip over any numbers that
	are assigned to undeleted users.
!T	Reset time limit for any user, giving them a new full day's worth.
!UA	Unanswer a user's multiple choice questionnaire.
!UD	Undelete a user.
!X	Crossover to another account.  Like X but next logon bypasses the
	password and leaves user at level 9.
!DOWN	Shut down the system in an orderly fashion, make modems not
	answer, give users a warning message before shutdown.
!BYE	Immediate shutdown of all lines.
!DOS	Execute next line typed as a MS-DOS command  The system freezes until
	the command is completed.

The !C, !D, !L, !M and !T commands are also available in the read
private mail menu.  This is useful when verifying new users.

In addition to these commands, SysOps have other special privileges.
They can chat with anyone, browse the sender of anonymous mail, send
mail to a user with a full mailbox, and receive up to 150 messages.
The SysOp may upload and download at any time, using any subdirectory
on any disk.  All SysOp commands can be issued from a telephone line,
not just the console, so you can maintain the system remotely.

Private Mail - How It Works

Private mail is email sent directly from one user to another.  Only
the person addressed can see the mail, or will even know the message
exists.  Private mail is kept in the MAILBOX subdirectory, one file
per user.  Filenames are of the form USRxxxxx, where xxxxx is the
file number of the user to whom the mail is addressed, padded out
with leading zeroes.  Each file contains all the messages addressed
to that user, in sequence by date and time sent.  Within the file,
each message starts with a line showing the number of lines in the
message, including the header lines and blank lines.  The message
itself follows, beginning with the To, From, Subject and Date fields
(in that order), followed by an empty line, followed by the body of
the message.  The intention is to follow the standard RFC 822 email
format.

When a user logs in, her private mail file is read into main memory.
If new mail is sent to her while she is online, that mail is also
kept in main memory.  Deleted messages are simply marked as deleted,
so that they may be undeleted if desired.  While a caller is online
both deleted and undeleted messages both take up mail slots.  When
she logs off, her old mail file is deleted and a new one written.
Only the undeleted messages are saved to the file.

Because private mail is kept in main memory while the caller is
online, care must be taken that it doesn't overflow the capacity of
main memory.  If the system runs out of memory, a loss of online
users' mail may occur, not to mention other disasters.  The PARAMS
file contains parameters limiting the number of lines allowed per
message and limiting the number of messages that each mailbox can
contain.  The !M command can be used to adjust the size of individual
mailboxes.

Public Mail - How It Works

Public mail is divided into categories and anyone with access to that
category of public mail can read it, no matter who it is addressed
to.  Public mail is stored in the PUB-BOX subdirectory.  For each
category x, there are two files: INDEXx and DATAx.  These files have
a fixed format and should not be edited by the SysOp.  If you must do
it, you'll find that it's easier if you put your editor in overwrite
mode.  Most editors switch back and forth from insert mode to
overwrite mode under control of the "Ins" key.

The public mail categories and their parameters are defined in the
file PUBMAIL.  You can edit this file to change parameters or add new
categories or remove unwanted categories.  One of the things you can
designate for a category is a moderator.  A moderator is a user who
is designated to watch over that category.  The moderator has special
privileges to hold and unhold messages.

Public mail can be deleted by the SysOp, the caller who sent the mail
or the caller to whom the mail is addressed (if addressed to a
specific user).  Deleted public mail is not actually removed from the
file, it is simply marked as deleted and can be un-deleted by
repeating the D command on it.  To truly remove deleted messages, the
program PACK must be run while DLX is shut down.

To remove an entire category of public mail, two things are
necessary.  First edit out the parameter block for the category in
the PUBMAIL mail.  Secondly, delete the corresponding INDEXx and
DATAx files.

Junk mail - How It Works

When you (the SysOp) send junk mail, it is not sent in the ordinary
manner.  Instead, it is placed in the file MAILBOX\USR-JUNK and each
user in the MEMBERS file who is to receive it gets a little "J" mark
on their MEMBERS file record.

When a person with the "J" mark calls in, the message in USR-JUNK is
copied into their mailbox and the "J" mark is turned off.  From then
on, the junk message is just like any other message.  The caller can
delete it or keep it, as they choose.

If another junk mail is sent out, it replaces the message in
USR-JUNK.  All callers who did not call in after the first junk mail,
but before the second one, will never see the first junk mail.
(Think about that last sentence, it's tricky.)

Junk mail is done this way because sending junk mail as ordinary mail
would take too much time and disk space.  If you send a lot of junk
mail and keep users around who don't call very often, this prevents
junk mail build-up (no relation to waxy yellow build-up).

Junk mail can also be sent to all new users, actually those new users
yet to come.  This junk mail is placed in a file USR-NEW, and it
works in much the same way as the regular junk mail.  A letter "N" is
used in their MEMBERS file record.

Chatting - How It Works

The term "chatting" refers to live interaction between users who are
logged into the system.  Chatting comes in two flavors: private
chatting and group chatting (Open Forum).

Private chats are initiated from the Chat Lounge by issuing a C
command to chat with a specific user online.  In a private chat, each
character you type is sent immediately to the other person.  If you
make a mistake and have to backspace, the backspace too is seen by
the other person.  The chatters type back and forth and can even
interrupt each other.  The chat ends when one of them types a Ctrl-C
or gets bumped.

On the console display, when you're watching a chat, the person
typing will have a little bar appear at the end of each line typed,
so you can tell which of the two people chatting is doing the typing.

Group chat allows any number of people to participate at once.  Group
chat happens a line at a time.  You enter an entire line and when you
hit Enter, the line is sent to everyone on the same Open Forum
channel.  When you're not typing a line, you can watch the lines sent
by others scroll by.  You can use the /W command to see who's online,
the /B command to browse and the /P command to send a private line to
a particular person.

Automatic Startup in a Batch File

When DLX starts up, it asks a series of questions (memory check,
activate line).  These answers can be typed in at the keyboard.
However, you may wish to start DLX from a batch file. This is how you
do automatic startup.

Prepare a file with the answers to the startup questions in it, one
answer per line.  For example, the normal startup for a two line
system would be the following three line file:

n
y
y

Call this file STARTUP (for example).  You can now start DLX
automatically with the MS-DOS command:

DLX <STARTUP

This command could also be placed in a .BAT file.

This technique is known as input file redirection and is a standard
feature of MS-DOS.  You can read about it in your MS-DOS manual.  The same
technique can be applied to many programs and MS-DOS commands.  It's
telling MS-DOS to take its input from the file STARTUP rather than
standard input (the keyboard).

Now you might ask, can't I use this to not only startup DLX, but also
to log on and do something on the BBS?  Good question!  The answer
is, you can't, and the reason is that as soon as the screen clears
and the BBS starts running, DLX no longer gets input from the
keyboard in the normal way.  When DLX is running it bypasses MS-DOS and
gets its keystrokes directly from the keyboard hardware.


CUSTOMIZING YOUR SYSTEM

To operate a DLX system, you need to know how to edit files, and you
need an editor program.  The EDIT program, that comes with recent
versions of MS-DOS works just fine for this, and is recommended.
Many word processors can also be used just make sure to save your
file as an ASCII text file.

Some DLX files are meant to be edited by the SysOp: PROMPTS, PARAMS,
GLOBALS, NEWS, HELP, EXPLAIN, PUBMAIL, MULTIPLE.*, ESSAY, ORDER,
MENU, DATA and HEADER.  These files have a flexible format.

The two limitations on editing the PROMPTS file are (1) lines are
limited to 80 characters, and (2) you must not delete or insert &X
codes (these are used to separate prompts).  

Do not edit the MEMBERS files or the public mail files.  They have a
strict format and can easily be damaged.  Note: If you elect to open
these files and simply save them in your favorite word processing
program, you may damage them.

If you must edit these files (assuming you are an expert user), use a
screen editor in overwrite mode (or DEBUG).  Make a backup copy
first, and check out the BBS soon after you do the edit.  You must
never delete or insert a line in these files.  The MEMBERS file and
the public mail files are especially rigid in format - in these, you
must not insert or delete even a single character.

Ampersand Codes

The PROMPTS file contains the text seen by callers.  You can use the
file as is, or you can edit it to suit your application.  Within the
PROMPTS file, DLX uses special ampersand codes (an ampersand followed
by one or two characters) to represent variable strings to be filled
in as needed.  For example, the code &DA will be replaced by the
current date each time it is used.  Below you will find the available
codes you can use to customize your PROMPTS file. 

Code	Meaning
&A1..A5	Actual answer string, e.g. &5&A2 gives answer 5 on questionnaire 2
&AC	Number of characters allowed in answer, on a MULTIPLE.* question that
	allows a string of characters or a number.
&AG	Age
&AN	Allow New Users (N if true, else blank)
&AS	Multiple choice answer
&B1	Number of callers bumped because of max time
&B2	Number of callers bumped because of lines full
&B3	Nunber of callers bumped due to prime time
&BA	Baud Rate
&BP	Beep the console.  Arg, if given, sets frequency in tens of Hertz.
	For example, &44&bp gives a 440 Hz tone.
&BT	Bytes Transferred So Far in File Transfer.  Also, the number of
	matches found so far in a database search.
&BX	XMODEM or XMODEM-1K Blocks in Download
&CA	Library or Database Category Name
&CC	The equivalent of a Ctrl-C at the start of the prompt in which
	it occurs
&CH	Open Forum channel number
&CI	City
&CN	Call number
&CO	Connect Time this call
&CR	Connect Time Remaining
&CS	Chat Status (ChatOK etc.)
&CT	Count
&CU	Connect Time today (monthly), this call (hourly)
&DA	Date
&DF	Download file size in bytes
&DM	Download Time in Minutes
&DS	Days Since Last Call
&DW	Day of the week (0=Monday, 1=Tuesday, etc.)
&ED	Error - MS-DOS file system
&ES	Plural (es)
&FD	Library File Description
&FM	Free Space (bytes) - smallest ever this bootup
&FN	File Number
&FS	Free Space in far heap
&GE	Gender - M/F
&GO	Number of new orders.  Goes back to zero when the order account
	is used or the system is rebooted.
&HT	Height, e.g. 5'10"
&IN	Index / Line Number
&JD	Julian day number
&JK	Junk mail pending
&LC	Library or Database Category (full pathname)
&LD	Last Logon Date
&LF	Library Filename
&LI	Max number of lines allowed per message
&LJ	Julian day number of last logon
&LL	Last Line Typed
&LM	Largest Member Number Ever Used
&LN	Message Line
&LO	Force logoff
&LT	Last Logon Time
&LV	User Level
&LX	X Logon (X if so, else blank)
&MC	Match Last Called Date
&MD	Message Date
&MF	Message From
&MG	Match Gender
&MH	Match Highest age
&ML	Match Lowest Age
&MM	Maximum message number used in private mail, including deleted.
&MN	Message Number
&MO	Match orientation - single letter
&MQ	Match Least Times Called
&MS	Message Subject
&MT	Message To
&MU	Memory space in Use (bytes)
&NA	Name
&NC	Number of Callers
&NG	Number of callers in Open Forum.  Optional argument for specific
	channel.
&NH	Number of callers here in this Open Forum channel.
&NM	Number of Messages
&NO	Number of callers online now on a modem line
&NU	Number of Users
&NW	New User (* if so, else blank)
&OD	Last Logoff Date (Userlog only)
&OF	Open Forum line
&OT	Last Logoff Time (Userlog only)
&PC	Match Percentage
&PD	Pubmail Category Date of latest posting
&PF	Sexual orientation (single letter)
&PG	Page size for pausing
&PH	Phone Line
&PJ	Julian day number of latest posting to current pubmail category
&PL	Pubmail Category Letter
&PM	Pubmail Category Moderator
&PN	Pubmail Category Name
&PP	Prevent page pause until next prompt
&PQ	Pubmail Number of Messages
&PT	Pubmail Category Time.  If the category is anonymous, this will
	be blank (default), or 00:00:00 if given an argument of 1, or
	the actual time, if given an argument of 2.
&PX	Password (scrambled form, as stored in the MEMBERS file)
&Q1..Q5	Multiple choice answers
&QR	Questionnaire number
&RH	Room in (near) Heap (bytes)
&RM	Room in (near) Heap (bytes) - smallest ever this bootup
&RN	Random number between 0 and 32767
&RP	Reset page pause count
&SF	Slots Free in Mailbox
&SL	Status line
&SM	Slots (max) in Mailbox
&SQ	Who's Squelched
&SS	Plural (s)
&ST	State (2 letters)
&T0..T9	Time Limit for each level in minutes
&TC	Times Called
&TI	Time
&TM	Total Memory space (bytes)
&WT	Weight
&X	End of Prompt
&YM	ASCII, XMODEM or XMODEM-1K
&ZS	Internal state number
	
&0-99	Argument
&- -	Comment - all text following is ignored.  Comments use no memory.
&@	Tab
&<	Display following ampersand codes fixed width, left justified
&>	Display following ampersand codes fixed width, right justified
&~	Display following ampersand codes variable width (this is the default)
&.	Display following ampersand codes variable width, truncated
&[	My data (the caller herself - this is the default)
&]	Your data (person being browsed, etc.)
&{	Indexed My Data (person on another line)
&}	Indexed Your Data (person being browsed on another line, etc.)
&:	Userlog Data
&'	Elapsed time displayed in minutes (default)
&"	Elapsed time displayed in HH:MM:SS format
&+	24 hour clock (default)
&-	12 hour clock

If you use an ampersand code that is not in this table, it is ignored
(it will appear as itself).

The &X code serves to separate prompts and must occur entirely by
itself on a separate line.  The &ss and &es codes are used for
plurals.  If the last ampersand code was a number, &ss turns into
nothing if the number was one, and into "s" otherwise.  Similarly,
&es turns into "es" or nothing, for plurals such as "boxes."

The numeric codes &1 through &99 are used for arguments.  An argument
is a number that modifies the behavior of the ampersand code that
follows it.  For example, &20&@ tabs to column twenty.  &3&<&CI gives
the first three characters of the city.  &3&Q2 gives the third answer
to questionnaire two.  Only constant arguments are allowed.

By default, all codes refer to the caller herself ("my" codes).  This
can be changed to refer to the person being browsed, chatted, etc. by
using the &] code ("your" codes).  The &{ code causes codes to refer
to online users, indexed by line, as in a Who listing.  The &} code
refers to the "your" code of the person in the Who listing.  The &:
code makes subsequent codes refer to userlog data.  These codes
continue in effect until the end of line or until overridden by
another one.

All codes return variable length results by default.  You can change
this to fixed width, left justified (&<) or fixed width, right
justified (&>).  Or you can change it to variable width, truncated to
a maximum length specified by an argument (&.).  These codes continue
in effect until the end of line or until overridden by another one.
To make columns of tables line up, you will want to use fixed width
fields (using &< or &>), usually with each code preceded by an
argument for field width.

The strings returned are capitalized in the same manner as the
ampersand codes.  Thus &NA will give the name all capitalized, but
&Na will just capitalize the first letter, while &na leaves the
capitalization of the name unchanged.  The pattern &nA forces the
name to lower case.

Conditional Expressions

The ampersand "if" codes allow you to conditionally display a
character string.  For example, you might want to display the time as
"Noon" if it's 12:00:00.  Logically what we want is something like
this:

	if &ti = "12:00:00" then "Noon" else &ti endif

Here "&ti" is the ampersand code for the current time.  As another
example, we might wish to display a New Years greeting every January
1.  Logically, what we want is this:

	if &5&<&da = "01-01" then "Happy New Year!" endif

Here "&5&<&da" are the ampersand codes meaning the first five
characters of the date.  Note that in this case there is no "else
clause" because we don't want to do anything unless it's New Years.

An ampersand "if" statement is very much like the previous examples,
except that you must use ampersand codes for the keywords if, =,
then, else and endif.  The ampersand codes for "if" statements are as
follows:

Code	Meaning
&?(	if
&?t	then
&?e	else
&?)	endif
&?=	= (equal to)
&?>	> (greater than)
&?<	< (less than)
&?#	# (not equal to)
&?:	contains string

The Noon example, in ampersand codes, is:

	&?(  &ti  &?=  12:00:00  &?t  Noon  &?e  &ti  &?)

The New Years example is:

	&?(  &5&<&da  &?=  01-01  &?t  Happy New Year!  &?)

The general form for a DLX "if" expression is one of these two forms:
 
	&?(  condition  &?t  do-this  &?e  do-that  &?)
	&?(  condition  &?t  do-this  &?)

The condition  part is normally a comparison, one of these three:

	string1  &?=  string2
	string1  &?<  string2
	string1  &?>  string2
	string1  &?:  string2

If both string1 and string2 are numbers, the comparison is numeric,
otherwise the comparison is alphabetic.  Any string of ampersand
codes and regular characters can be compared (alphabetic order is
used).  In addition to these comparisons, a condition can be any
string of ampersand codes - if the string is nonblank, it is
considered "true."

"If" statements cannot exceed one line in length.  You can nest "if"
statements by using macros.

Macros

DLX macros allow you to define your own ampersand codes for
frequently used phrases.  A macro definition is quite simple.  It
consists of a line with the name of your new code, and equal sign
followed by the desired phrase.  For example, here is a definition
for a macro which will display name and file number:

&nf= &na &fn

The line must begin with an ampersand immediately followed by the two
characters that will be the name of the new ampersand code (&nf in
the previous example).  This is then followed by an equal sign.
Everything following the equal sign is the body of the macro
definition.

All macro definitions are located in the file MACROS.  Reading that
file will give you several examples of useful macros.  A macro
definition is limited to one line in length.

If you define a macro with the same name as a predefined ampersand
code, your definition will take precedence.  Also, beware of circular
macro definitions like:

&ab=&cd
&cd=&ab

A typical macro would have an "if" expression for a body.  For
example, you could have a macro which expanded to the ANSI escape
sequence for red color, but only if the user had specified ANSI
terminal control on her questionnaire.

Macros can refer to other macros and in this way quite elaborate
structures can be created.  Be careful not to nest macros more than
about six deep, however.  Of course, circular definitions will lead
to errors if used.  Macros are a powerful tool for customization.
You may define as many macros as you like, but be aware that heavy
use of them uses memory and may slow your system.

With the exception of &CC and &LO, ampersand codes and macros do not
affect the operation of the system or the number of lines displayed,
they just affect the appearance of those lines.

Sample Macros

Here are some sample macros that you may find useful:
	
Day of the week.  The &kf macro will give the name of the current day
of the week.  These macros use a kind of divide and conquer technique
called binary search.

&ka= &?( &dw &?< 1 &?t Monday &?e Tuesday &?)
&kb= &?( &dw &?< 3 &?t Wednesday &?e Thursday &?)
&kc= &?( &dw &?< 5 &?t Friday &?e Saturday &?)
&kd= &?( &dw &?< 2 &?t &ka &?e &kb &?)
&ke= &?( &dw &?< 6 &?t &kc &?e Sunday &?)
&kf= &?( &dw &?< 4 &?t &kd &?e &ke &?)
	
SysOp-only library category. Create a library category called
SYSOPLIB and don't mention it in your main library MENU file.  Add
&kh to the library category menu prompt - the one that starts &CA
(&cr minutes left).  Only level 9 users will be able to enter this
category.

&kg= &?( &lv &?< 9 &?t &cc &?)
&kh= &?( &CA &?= SYSOPLIB &?t &kg &?)
	
New public messages Put this macro in your display of the public mail
categories.  It will show which categories have new mail since you
last called.

&ki= &?( &lj&lt &?< &pj&2&pt &?t *NEW* &?)

Women only Open Forum channel.  Insert the &kj macro in the greeting
you get when you first go into Open Forum.

&kj= &?( &ch &?= 5 &?t &kl &?)
&kl= &?( &ge &?= m &?t &cc &?)

Hideaway Open Forum Channels.  Makes channels 10 and above
hidden and available only to user level 4 and higher.  Use &km to
display channel on the Who line. Use &kn in the Open Forum greeting.

&km= &?( &ch &?< 10 &?t &ch &?)
&kn= &?( &ch &?> 9 &?t &ko &?)
&ko= &?( &lv &?< 4 &?t &cc &?)
	
Show Unverified Callers only as NEW CALLER.  Use &kp on the Who line
to avoid displaying the epithets of pranksters.

&kp= &?( &lv &?< 2 &?t NEW CALLER &?e &na &?)

STRINGS and MENUS Files

The STRINGS file contains all the keywords used by DLX.  The MENUS
file contains the characters comprising the various menus used by
DLX.  You may edit these to suit your application.  The characters in
the MENUS file are all upper case.  If you wish to disable a certain
command entirely, one easy way is to just change it to lower case.
Since commands from callers are capitalized before matching, this
will prevent a match.

Questionnaires

There are three kinds of questionnaires in DLX: built-in, multiple
choice and essay.  The built-in questionnaire asks for name, city,
state and lines per terminal page.  If you have your DLX set to the
social (non-business) mode, it will also ask for gender, sexual
orientation, age, height and weight.  The sexual orientation question
can be turned off by setting a param.  The built-in questionnaire can
only be modified by editing the PROMPTS file, but the ordering of
questions and the number of characters allowed for each reply are
fixed.  The DLX program varies the order that it asks some questions.
By default, the height and weight questions use the English system of
measure, but this can be changed by setting metric mode in the PARAMS
file.  Metric mode uses centimeters for height and kilograms for
weight.

You can have up to five multiple choice questionnaires.  These are
stored in the files MULTIPLE.1 thru MULTIPLE.5.  MULTIPLE.1 is
mandatory and is asked of all new users.  The others are optional and
are tied to specific public mail categories.  When a new user first
accesses such a category, she is asked to fill out the questionnaire.
Once a questionnaire is answered, it can be re- answered by using the
A command from the Main Menu.  When a user (below level 9) browses
another caller, they only see the answers to questionnaires that they
also have answered.

A typical multiple choice question look like this in the MULTIPLE file:

1
What kind of computer are you calling on?
   A.  IBM PC or compatible
   B.  Apple Macintosh
   C.  Other microcomputer
   D.  ASCII terminal
=>
&X

The number that begins the entry indicates the number of responses
allowed.  Here we are allowing only one, but you could allow two or
more.  Each multiple choice category is limited to a total of 30
answers.  After the number comes the question itself.  This can be
any number of lines.  Next come the answers.  They have a rigid
format: three spaces, a letter, a period and a space, followed by the
text of the answer, which must fit on one line.  Finally at the end
there is a prompt for the response and &X indicating the end of this
entry.

You can have questions that are answered with a number or a string of
characters.  A typical number question would look like this:

4N
What year were you born?
=>
&X

Here the 4N means we want a numeric answer and are allowing an answer
of up to 4 digits.  A question needing an alphanumeric answer would
look like this:

16A
What county do you live in?
=>
&X

Here the 16A means we will allow up to 16 characters of answer.  The
characters can be either digits, letters or punctuation characters.
These 16 characters count towards the total of 30 for the
questionnaire, so obviously we can't have too many of these.

The essay questionnaire allows callers to enter long replies worded
as they choose.  Each answer is limited to the same number of lines
as private mail.  There is only one essay questionnaire, which is
kept in the file ESSAY.  The essay questionnaire can be made
mandatory by setting the appropriate param, or it can be left to the
user to answer it at a convenient time using the "N" command at the
main menu.  When the essay is mandatory, it is asked of all new users
right after they answer MULTIPLE.1.  DLX stores the essay questions
with the answers, so the SysOp can change the essay questions at any
time and previously answered questionnaires will still make sense.

ANSI Graphics

The term "ANSI graphics" refers to a combination of two things: the
IBM PC graphics character set and the ANSI screen control "escape
sequences".  This combination can be used to add simple color
pictures to your PROMPTS file.

How to get DLX to do ANSI graphics

In order to get the full effect of ANSI graphics, a caller must have
three things:

        1.  a color display
        2.  the IBM PC graphics character set
        3.  support for ANSI escape sequences

It's quite possible to have some but not all of these.  The first two
are fairly obvious.  A color display adapter and color monitor are
required to see color.  The IBM PC graphics characters are usually
found only on PCs and rarely on other kinds of microcomputers.

The ANSI commands are called "escape sequences" because they always
start with the "Esc" character.  The ANSI escape sequences control
things like cursor position, clearing the screen, setting text color,
etc.  Historically, they are very similar to the control codes for
the DEC VT-100 terminal.  Many microcomputers (including the
Macintosh) can emulate ANSI escape sequences.  To enable them on a
PC, the line DEVICE=ANSI.SYS must be included in your CONFIG.SYS
file.  This assumes that the file ANSI.SYS is in your root directory.

Most editors treat the "escape" character specially and you will have
to read the manual to find out how to insert one.  Some editors
indicate an escape with a dollar sign $, some show ^[ and some use
the IBM PC graphic equivalent (a left-pointing arrow).

The ANSI escape sequences are documented in the MS-DOS manual under
ANSI.SYS.  A short list can be found at the end of this section.  The
IBM PC graphics character set is tabulated in many books on the PC.

You can put ANSI escape sequences anywhere in your PROMPTS file.
Callers without the proper setup may get garbage.  To prevent this,
you can ask callers whether they want ANSI graphics, in a
questionnaire.  Then you can use "if" statements and macros to make
the display of ANSI sequences depend on them having the right setup.
Note that the ANSI effects are only visible to callers on remote
lines at the console you will only see the graphical character
equivalents to the ANSI codes.  The reason for this is that DLX
directly controls the screen and does not go through ANSI.SYS, which
would be too slow.

You can be even more sophisticated and ask each of the three
questions, and then make your macros generate appropriate codes.
This can get pretty complicated!

There are a number of programs which help to create nice ANSI
graphics files.  Two of the more popular are ANSIDRAW and THEDRAW.
When using these programs to make ANSI graphics for DLX, be careful
to limit the length of all lines to 80 characters (70 if you're going
to upload it).  A line is terminated by a carriage return - linefeed
sequence, which most editors insert when you press the Enter key.

A separate issue is whether you want to permit callers to include
ANSI graphics in their messages and chats.  In the PARAMS file, you
can allow ESC (the escape character) and suppress parity stripping in
incoming text.  Doing so will allow callers to send each other ANSI
graphics and to post ANSI graphics messages on the pub boards, etc.
This is a lot of fun but it has two dangers:

1.  The ESC character lets malicious callers do mischief to other
callers.  For example, they can use the ANSI escape codes to set the
recipient screen to black on black(!).  Nothing sent will damage the
DLX system itself, fortunately.

2.  This is a subtle one: Allowing the ESC character in messages may
deceive some callers into thinking they have a full screen editor for
their messages!  Some terminal programs will send, for example, the
ANSI sequence for "cursor up" if you press the up arrow key.  DLX
will echo this as usual and the cursor will indeed go up.  But this
is a dangerous illusion: the caller may see a typo on an earlier
line, use the arrow keys to get up to it, type over it, then use the
arrow keys to get back down.  All these cursor movements go into the
message as ANSI commands.  At some point, the line will pass 80
characters and then the "editor" won't work right.  And the recipient
of the message must have ANSI installed or the message won't play
back right.  Usually the originator has no idea of what is going on
and just gets very confused.

If you're not prepared to deal with the trouble ESC in messages can
cause, you should not enable it.

Some ANSI escape codes

In the following, # represents an integer parameter that must either
be filled in or omitted to get the default value.  A $ (dollar sign)
is used to represent the ESC (escape) character.  Please note that
not all implementations of ANSI support all these escape sequences
also others may be supported and different implementations may
implement the same sequence in different ways.

ANSI escape sequence to set character attributes:

$[# ... #m

#   Meaning
0   Normal white on black
1   High intensity
4   Underscore (monochrome only)
5   Blink
7   Black on white
30  Black letters
31  Red letters
32  Green letters
33  Yellow letters
34  Blue letters
35  Magenta letters
36  Cyan letters
37  White letters
40  Black background
42  Red background
43  Yellow background
44  Blue background
45  Magenta background
46  Cyan background
47  White background

$[##H	Cursor Position to ##
$[#A	Cursor Up # lines
$[#B	Cursor Down # lines
$[#C	Cursor Forward # columns
$[#D	Cursor Backward # columns
$[##1	Horizontal and Vertical Position to ##
$[s	Save Cursor Position
$[u	Restore Cursor Position
$[2J	Erase display and home cursor
$[k	Erase line


SERIAL PORTS AND MODEMS

DLX is fully interrupt driven, and requires that all serial
communication ports be set up properly.  If the ports are not setup
correctly, some or all of the modem lines will be totally dead.  Each
port must be connected to a Hayes compatible modem, or else it is
treated as directly connected terminal.  Any brand of modem can be
used, internal or external but it must be a Hayes compatible
full-duplex modem.

DLX is compatible with any speed your modem can support.  If your
modem comes back with CONNECT 4800, for example, the connection will
be at 4800 baud.  If no response is received to AT commands at
bootup, DLX will assume a hard wired line at 9600 baud.  If you wish,
you may specify a default speed for each line when booting DLX.  Just
answer with a number (e.g. 2400) instead of a Y or N.
 
You can use either external modems connected to serial ports, or
internal modems which combine a modem and serial port in one PC card,
or you can mix the two kinds.  The external modems are the more
flexible choice and are required to run 10 lines or more.  You must
have no more than two normal serial ports on your PC - three or more
will hang one of your ports.  The program TEST232 is included on this
disk.  Run it to reveal the number of serial ports installed and the
interrupt level each is connected to.  It should show no more than
two ports, with COM1 at interrupt level 4 and COM2 at interrupt level
3.  If you use external modems, be sure your cables include lines 2,
3, 7, 8 and 20.  Note that the COM3 and COM4 device names provided by
some internal modems cannot be used by DLX.  DLX uses DigiBoards to
go beyond 2 lines.  There are other kinds of cards that two or more
extra serial ports, but DLX only with DigiBoards or exact clones.

The number of active users possible on your BBS is limited by the
number of lines.  Experience has shown that one phone line can
support about 75 calls per day.  About 150 active users can be
supported per line, figuring that the average user calls every other
day.  Your phone lines can be connected in a rotary or hunt system so
that only one number needs be given out - the caller will be
connected to whichever line is free.

DLX can support up to 32 telephone lines.  This is done with a
DigiBoard 8 port serial cards that have non-standard serial ports
that go beyond the normal PC limit of 2 ports.  These cards require
external modems, so if you're buying new modems, be sure to get
external ones.  The nine line version of DLX can run with one
internal modem and eight external modems, or with nine external
modems.  The 16+ line versions run with all external modems.  You can
run with fewer lines, if you wish.

Always set your modems to monitor DTR (Data Terminal Ready) and to
sense DCD (Data Carrier Detect).  Normal word result codes should be
sent.  You can force autoanswer mode on at all times, or leave it
under program control - DLX will work either way.

The time a modem takes to reset will vary from brand to brand.  The
modem timing delay parameters in the PARAMS file may be adjusted to
compensate for this.  The meaning of the six parameters are as
follows:
 
 1. Time to hold down DTR to hang up the phone
 2. Time to wait after DTR back on to send ATZ reset
 3. Time to wait after ATZ reset before checking for OK
 4. Time to wait after modem setting command before checking for OK
 5. Time to wait before clearing the screen
 6. Time to wait after CONNECT before sending characters

Each time unit represents about 50 msec, or 1/20th of a second.

Configuring for Different Numbers of Lines

The DLX program comes in different versions, according to how many
lines it supports.  The basic version supports 2 lines, and there are
other versions supporting up to 32 lines.  With any version, you can
always have any number of lines up to the maximum for that version.

2 Line Setup

The 2 line version of DLX can be used with either one or two
telephone lines.  Set the following lines in your PARAMS file:

16#3F8               {base address of (first) COM1 communication chip}
16#2F8               {base address of (first) COM2 communication chip}
16#140               {status port pair for DigiBoard - IRQ4}
16#240               {status port pair for DigiBoard - IRQ3}

To activate COM1, answer yes to the activate-line-1 question that DLX
asks when it starts up.  To activate COM2, answer yes to the
activate-line-2 question.  Either or both lines can be activated - or
neither if you just wish to use the BBS from the console.

9 Line Setup

To go beyond two lines requires special hardware.  The normal IBM PC
standard allows for only two serial lines.  The special hardware that
DLX works with is an expansion card that plugs into your PC and
supplies serial ports and cables for eight additional external
modems.  The cards required by DLX are the DigiBoard DigiCHANNEL PC/8
boards.  They are made by DigiBoard, Inc. (telephone (612) 922-8055).
The DigiBoard card is used to share a single interrupt level among
many serial ports.  These cards can be bought directly from the
manufacturer or from dealers.

There are many ways to get an IBM PC to support more than two serial
ports.  We chose the DigiBoard setup because it is reliable and
relatively inexpensive.  The DigiBoard company themselves actually
sell quite a variety of different boards, including intelligent
boards that come with their own memory and CPU.  These cannot be used
with DLX.  DLX uses the simpler "dumb" DigiBoards.  Be sure the board
you get uses the 16450 UART chip.  The older 8250 is not fast enough
for current model computers.  The newer 16550 chip can be installed,
but DLX will not take advantage of its extra features.

The 9-line DLX setup uses a normal COM1 plus a DigiBoard to share the
COM2 interrupt (IRQ3) among 8 lines.  Before installing the DigiBoard
card, you must first remove or disable anything using COM2 on your
PC.  If you have another serial port on your system, e.g. on a
multi-function card, disable the serial port entirely.  Verify this
with the TEST232 program included on the DLX diskette.  It should
show COM2 not installed.  Next, remove the J89 jumper from your
DigiCHANNEL PC/8 card (this keeps it from interfering with COM1).
Set the microswitches in the "PC/AT" configuration tabulated below.

Edit the PARAMS file as follows:

16#3F8               {base address of (first) COM1 communication chip}
16#100               {base address of (first) COM2 communication chip}
16#140               {status port pair for DigiBoard - IRQ4}
16#140               {status port pair for DigiBoard - IRQ3}

If the modems fail to reset, it may be due to a conflict between the
ports used by the DigiBoard card and other devices on your system.
The documentation for the various expansion cards in your computer
should be consulted to find what port addresses they use.  All
conflicts must be resolved.  Frankly, the fewer devices you have
installed the easier it will be.  Get rid of extraneous things like
mice that DLX doesn't use anyway.  One way to do this is to
experiment with different base addresses on your DigiBoard card.  Try
the PC/AT configuration for starters - see "I/O Port conflict later
in this doc for more information.  When you boot up DLX, each line
should show an "OK" in response to the ATZs.  If instead you get a
blank line, that means that the DigiCHANNEL PC/8 card is not
installed correctly.

DLX operates the DigiBoard hardware directly it does not use any of
the driver software supplied by DigiBoard.  Therefore, do not install
any of the DigiBoard software drivers on your computer.  The cables
coming out of the back of the DigiCHANNEL PC/8 card are labelled 1
through 8.  These correspond to DLX lines 2 through 9.  DLX line 1
corresponds to the modem on COM1.  Also note, the TEST232 program
only works with the normal IBM serial ports and it won't report the
status of a DigiCHANNEL PC/8 card.

First DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off)

DLX	PORT	BASE	DIP SW.	SWITCH SETTINGS
LINE	NUMBER	ADDRESS	NUMBER	1 2 3 4 5 6 7 8 9 10
N/A	STATUS	16#140	DS1	1010111111
2	PORT 1	16#100	DS2	10111111
3	PORT 2	16#108	DS3	10111101
4	PORT 3	16#110	DS4	10111011
5	PORT 4	16#118	DS5	10111001
6	PORT 5	16#120	DS6	10110111
7	PORT 6	16#128	DS7	10110101
8	PORT 7	16#130	DS8	10110011
9	PORT 8	16#138	DS9	10110001

J85 - On     J89 - Off (remove)
P2,P3 - On middle pair
J1-J8 - On pins 1&2
J9,J10 - On pins 2&3

16 Line Setup

To run more than nine lines, you need to install two DigiCHANNEL PC/8
cards, and connect each to eight external Hayes-compatible modems.
Note that a single DigiCHANNEL PC/16 card cannot be used in place of
two DigiCHANNEL PC/8s.  All serial communication is thru the
DigiCHANNEL PC/8 cards, and you must remove or disable any normal
serial ports.

First DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off) Lines 9-16

PORT	BASE	DIP SW.	SWITCH SETTINGS
NUMBER	ADDRESS	NUMBER	1 2 3 4 5 6 7 8 9 10
STATUS	16#140	DS1	1010111111
PORT 1	16#100	DS2	10111111
PORT 2	16#108	DS3	10111101
PORT 3	16#110	DS4	10111011
PORT 4	16#118	DS5	10111001
PORT 5	16#120	DS6	10110111
PORT 6	16#128	DS7	10110101
PORT 7	16#130	DS8	10110011
PORT 8	16#138	DS9	10110001

J85 - On     J89 - Off (remove)
P2,P3 - On middle pair
J1-J8 - On pins 1&2
J9,J10 - On pins 2&3

Second DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off) Lines 1-8

PORT	BASE	DIP SW.	SWITCH SETTINGS
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#140	DS1	1010111111
PORT 1	16#148	DS2	10101101
PORT 2	16#150	DS3	10101011
PORT 3	16#158	DS4	10101001
PORT 4	16#160	DS5	10100111
PORT 5	16#168	DS6	10100101
PORT 6	16#170	DS7	10100011
PORT 7	16#178	DS8	10100001
PORT 8	16#180	DS9	10011111

J85 - Off (remove)     J89 - On
P2,P3 - On middle pair
J1-J9 - On pins 2&3
J10 - On pins 1&2

Edit the PARAMS file as follows:

16#148               {base address of (first) COM1 communication chip}
16#100               {base address of (first) COM2 communication chip}
16#140               {status port pair for DigiCHANNEL PC/8 - IRQ4}
16#140               {status port pair for DigiCHANNEL PC/8 - IRQ3}

24 Line Setup

The 24 line setup requires three DigiCHANNEL PC/8 cards in your
computer, and one DigiBoard DC2 jumper cable.  The setup of the three
boards is as follows:

First DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off) (lines 9-16)
	(Board 0, Com2, IRQ3)

PORT	BASE	DIP SW.	SWITCH SETTINGS
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#240	DS1	0110111111
PORT 1	16#100	DS2	10111111
PORT 2	16#108	DS3	10111101
PORT 3	16#110	DS4	10111011
PORT 4	16#118	DS5	10111001
PORT 5	16#120	DS6	10110111
PORT 6	16#128	DS7	10110101
PORT 7	16#130	DS8	10110011
PORT 8	16#138	DS9	10110001

J85 - On     	J89 - Off (remove)
P2,P3 - On middle pair 
J1-J8 - On pins 1&2 
J9,J10 - On pins 2&3

Second DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off) (lines 1-8)
	(Board 1, Com1, IRQ4)

PORT	BASE	DIP SW.	SWITCH SETTINGS
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#140	DS1	1010111111
PORT 1	16#148	DS2	10101101
PORT 2	16#150	DS3	10101011
PORT 3	16#158	DS4	10101001
PORT 4	16#160	DS5	10100111
PORT 5	16#168	DS6	10100101
PORT 6	16#170	DS7	10100011
PORT 7	16#178	DS8	10100001
PORT 8	16#180	DS9	10011111

J85 - Off (remove)	J89 - On
P2 - On middle pair
P3 - Connect DC2 jumper cable to P3 of Third DigiBoard (lines 17-24)
J1-J9 - On pins 2&3
J10 - On pins 1&2

Third DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off) (lines 17-24)
	(Board 2, Com1, IRQ4)

PORT	BASE	DIP SW.	SWITCH SETTING
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#140	DS1	1010111111
PORT 1	16#188	DS2	10011101
PORT 2	16#190	DS3	10011011
PORT 3	16#198	DS4	10011001
PORT 4	16#1A0	DS5	10010111
PORT 5	16#1A8	DS6	10010101
PORT 6	16#1B0	DS7	10010011
PORT 7	16#1B8	DS8	10010001
PORT 8	16#1C0	DS9	10001111

J85 - Off (remove)	J89 - On
P2 - On middle pair
P3 - Connect DC2 jumper cable to P3 of Second DigiBoard (lines 1-8)
J1-J8 - On pins 2&3
J9 - On pins 1&2	J10 - On pins 2&3

Edit the PARAMS file as follows:

16#148               {base address of (first) COM1 communication chip}
16#100               {base address of (first) COM2 communication chip}
16#140               {status port pair for DigiBoard - IRQ4}
16#240               {status port pair for DigiBoard - IRQ3}

32 Line Setup

The 32 line setup requires four DigiCHANNEL PC/8 cards in your
computer, and two DigiBoard DC2 jumper cables.  DigiBoard makes 16
port cards, but DLX does not support these - you have to use the four
8 port cards.  The setup of the four boards is as follows:

First DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off) (lines 9-16)
	(Board 0, Com2, IRQ3)

PORT	BASE	DIP SW.	SWITCH SETTINGS
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#200	DS1	0111111111
PORT 1	16#208	DS2	01111101
PORT 2	16#210	DS3	01111011
PORT 3	16#218	DS4	01111001
PORT 4	16#220	DS5	01110111
PORT 5	16#228	DS6	01110101
PORT 6	16#230	DS7	01110011
PORT 7	16#238	DS8	01110001
PORT 8	16#240	DS9	01101111

J85 - On
J89 - Off (remove)
P2 - Connect DC2 jumper cable to P2 of Fourth DigiBoard (lines 25-32)
P3 - On middle pair 
J1-J8 - On pins 1&2 
J9,J10 - On pins 2&3

Second DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off) (lines 1-8)
	(Board 1, Com1, IRQ4)

PORT	BASE	DIP SW.	SWITCH SETTINGS
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#100	DS1	1011111111
PORT 1	16#108	DS2	10111101
PORT 2	16#110	DS3	10111011
PORT 3	16#118	DS4	10111001
PORT 4	16#120	DS5	10110111
PORT 5	16#128	DS6	10110101
PORT 6	16#130	DS7	10110011
PORT 7	16#138	DS8	10110001
PORT 8	16#140	DS9	10101111

J85 - Off (remove)
J89 - On
P2 - On middle pair
P3 - Connect DC2 jumper cable to P3 of Third DigiBoard (lines 17-24)
J1-J9 - On pins 2&3
J10 - On pins 1&2

Third DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off) (lines 17-24)
	(Board 2, Com1, IRQ4)

PORT	BASE	DIP SW.	SWITCH SETTING
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#100	DS1	1011111111
PORT 1	16#148	DS2	10101101
PORT 2	16#150	DS3	10101011
PORT 3	16#158	DS4	10101001
PORT 4	16#160	DS5	10100111
PORT 5	16#168	DS6	10100101
PORT 6	16#170	DS7	10100011
PORT 7	16#178	DS8	10100001
PORT 8	16#180	DS9	10011111

J85 - Off (remove)
J89 - On
P2 - On middle pair
P3 - Connect DC2 jumper cable to P3 of Second DigiBoard (lines 1-8)
J1-J8 - On pins 2&3
J9 - On pins 1&2
J10 - On pins 2&3

Fourth DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off) (lines 25-32)
	(Board 3, Com2, IRQ3)

PORT	BASE	DIP SW.	SWITCH SETTING
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#200	DS1	0111111111
PORT 1	16#248	DS2	01101101
PORT 2	16#250	DS3	01101011
PORT 3	16#258	DS4	01101001
PORT 4	16#260	DS5	01100111
PORT 5	16#268	DS6	01100101
PORT 6	16#270	DS7	01100011
PORT 7	16#278	DS8	01100001
PORT 8	16#280	DS9	01011111

J85 - On
J89 - Off (remove)
P2 - Connect DC2 jumper cable to P2 of first DigiBoard (lines 9-16)
P3 - On middle pair
J1-J10 - On pins 1&2

Edit the PARAMS file as follows:

16#108               {base address of (first) COM1 communication chip}
16#208               {base address of (first) COM2 communication chip}
16#100               {status port pair for DigiBoard - IRQ4}
16#200               {status port pair for DigiBoard - IRQ3}

I/O Port Conflict on a Multi-Line System

The DigiBoard DigiCHANNEL PC/8 cards use a number of your computer's
I/O port addresses.  The normal DigiCHANNEL PC/8 settings listed
above do not conflict with any I/O ports used by a standard IBM PC or
AT.  However, it may happen that the normal DigiCHANNEL PC/8 setting
conflicts with other devices on your computer.

The symptoms of this are that accessing certain lines causes the
system to hang or crash.  Another symptom is that the DLX DATE
command gives garbage.

One way around this problem is to remove the offending devices or
cause them to use other I/O port addresses.  Another workaround is to
setup your DigiCHANNEL PC/8 cards to use other ports.

One easy way to do the latter is to reverse the settings of the first
two microswitches on each block of microswitches on each DigiCHANNEL
PC/8 in your computer.  This has the effect of changing the port
addresses used from 16#1xx to 16#2xx and vice versa.  The PARAMS file
must be edited to reflect this change also.

For example, here is the alternate setting for a 16 line system.

Alternate First DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off)

PORT	BASE	DIP SW	SWITCH SETTINGS
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#240	DS1	0110111111
PORT 1	16#200	DS2	01111111
PORT 2	16#208	DS3	01111101
PORT 3	16#210	DS4	01111011
PORT 4	16#218	DS5	01111001
PORT 5	16#220	DS6	01110111
PORT 6	16#228	DS7	01110101
PORT 7	16#230	DS8	01110011
PORT 8	16#238	DS9	01110001

J85 - On J89 - Off (remove)
P2,P3 - On middle pair
J1-J8 - On pins 1&2
J9,J10 - On pins 2&3


Alternate Second DigiBoard DigiCHANNEL PC/8 "PC/AT" Setting (1=On, 0=Off)

PORT	BASE	DIP SW	SWITCH SETTING
NUMBER	ADDRESS	NUMBER	1  2  3  4  5  6  7  8  9  10
STATUS	16#240	DS1	0110111111
PORT 1	16#248	DS2	01101101
PORT 2	16#250	DS3	01101011
PORT 3	16#258	DS4	01101001
PORT 4	16#260	DS5	01100111
PORT 5	16#268	DS6	01100101
PORT 6	16#270	DS7	01100011
PORT 7	16#278	DS8	01100001
PORT 8	16#280	DS9	01011111

J85 - Off (remove)
J89 - On
P2,P3 - On middle pair
J1-J9 - On pins 2&3
J10 - On pins 1&2

Edit the PARAMS file as follows:

16#248               {base address of (first) COM1 communication chip}
16#200               {base address of (first) COM2 communication chip}
16#240               {status port pair for DigiBoard - IRQ4}
16#240               {status port pair for DigiBoard - IRQ3}

IBM PS/2 Setup - MC/8 Cards

For a one or two line system, setup your IBM PS/2 as described above.
For more lines, you will need to use DigiBoard MC/8 (or MC/4) cards.
The IBM PS/2 uses a different bus architecture than the IBM AT used.
This bus scheme is called Micro Channel Architecture or MCA for
short.  Because it is different, a different card must be used: the
DigiBoard MC/8.  A DigiCHANNEL PC/8 will not fit.  Because of the
different ways in which MC/8 cards work, a maximum of 16 lines (two
cards) can be used.

The DigiBoard MC/8 does not have any dip switches on it.  Instead,
you configure it using your IBM PS/2 reference diskette.  Follow the
instructions for hardware installation in your MC/8 manual.

For a 9 line system, install your MC/8 on IRQ3.  Select the DB80 UART
address when you configure the board with the reference diskette.

Edit the PARAMS file as follows:

16#3F8               {base address of (first) COM1 communication chip}
16#DB80              {base address of (first) COM2 communication chip}
16#DBC0              {status port pair for DigiBoard - IRQ4}
16#DBC0              {status port pair for DigiBoard - IRQ3}

For a 16-line system, install your second MC/8 on IRQ4.  Select the CB80 UART address for this 
board.

Edit the PARAMS file as follows:

16#CB80              {base address of (first) COM1 communication chip}
16#DB80              {base address of (first) COM2 communication chip}
16#CBC0              {status port pair for DigiBoard - IRQ4}
16#DBC0              {status port pair for DigiBoard - IRQ3}

Configuring Modems

>>>300 Baud Modems

These slow modems are now obsolete, but they can still be used to run
a DLX if you wish.  Set the configuration switches on the modem (if
any) to detect carrier (DCD), to respond to data terminal ready
(DTR), and to return normal "word" result codes.

Edit the params file as follows:

ATXS0=1S2=0          {modem setting command}

Notice that X1 is not used, just plain X.

>>>1200 Baud Modems

Set your modem's microswitches (if any) to monitor DTR (Data Terminal
Ready) and to sense DCD (Data Carrier Detect).  Normal word result
codes should be sent.  You can force autoanswer mode on at all times,
or leave it under program control - DLX will work either way.

Hayes 300/1200 baud external modems require the following
configuration switch setting:

SW	State	Meaning
--	-----	-------
 1	UP	Monitor DTR
 2	UP	Result codes sent as words
 3	DOWN	Result codes sent
 4	UP	Modem echoes characters
 5	DOWN	Autoanswer under program control
 6	UP	Follow carrier detect
 7	UP	Single line
 8	DOWN	Command recognition enabled

Hayes 300/1200 baud internal modems with 3 configuration switches
require the following switch setting:

SW	State	Meaning
--	-----	-------
1	ON/OFF	ON for COM1, OFF for COM2
2	OFF	Single line
3	ON	Follow DCD

Hayes 300/1200 baud internal modems with 6 configuration switches
require the following switch setting:

SW	State	Meaning
--	-----	-------
1	UP/DOWN	DOWN for COM1, UP for COM2
2	UP	Single line
3	DOWN	Follow DCD
4	UP	Follow DTR
5	UP	Bell standard
6	UP	Dial pulse rate

>>>2400 Baud Modems

2400 baud modems use software configuration commands instead of
hardware dip switches.  The configuration setting is stored in
non-volatile memory which is remembered even over power shutdowns.
The Hayes Smartmodem 2400 baud commands are typical, and work as
follows: Use any terminal program to talk to the modem.  Type ATZ to
make sure you are connected.  The modem will reply OK.  Enter the
command AT&F which restores the factory default settings.  The modem
will reply OK.  Then give the command AT&C1&D2.  This command
instructs the modem to detect carrier (&C1) and to follow DTR (&D2).
The modem will again reply OK.  Then give the command AT&W to make
the changes permanent.  The modem will again reply OK.  Modems may
differ from brand to brand, so read your modem manual carefully.

Here in detail is how to reprogram a 2400 baud modem for use with DLX:

Hook your modem to your computer through a regular serial port, NOT a
DigiBoard.  If you're already installed two DigiBoards, then either
remove them and put back a serial port, or do this on another
computer.  It doesn't matter if the modem is hooked to a phone line
or not.  At this point, we just want to program the modem itself.

Activate a terminal program, such as Procomm, Telix, Windows
Terminal, etc.  Almost any such program will work fine.  Type the
command ATZ.  You should see "OK" come back.  If not, you don't have
the modem hooked up right.

Next type AT&F - this sets the modem back to the factory default
setup.  You should see an OK come back.

Next type AT&C1 - this tells the modem to detect carrier.  Again, you
should get OK.

Next type AT&D2 - this tells the modem to follow DTR.  Again, an OK
will come back to you.

Next type AT&T5 - some modems require this to prevent callers from
putting your modem in a test state.  The modem will either reply OK
or ERROR depending on whether it supports this feature.  Either reply
is acceptable.

Finally, type AT&W - this writes your new setup to the non-volatile
memory.

Repeat this process for each of your modems.  You only have to do
this once.  The setting is preserved even if you remove power from
the modem.

>>>9600 Baud and Other High Speed Modems

DLX will work fine with modems of any speed, so long as they are
fully compatible with the Hayes AT command set and responses.
Always begin by programming them as described for 2400 baud modems.

There are many different kinds of 9600 baud modems (and faster) on
the market.  The best kind for DLX are V.32 and V.42bis modems.  The
V.32 standard provides secure 9600 baud and supports true full duplex
operation, which an interactive program like DLX needs.  The MNP
protocols that some modems support are not useful with a program such
as DLX, because the error checking and compression that they do in
hardware is already done in software (XMODEM and ZIP).

Older types of high speed modems, such as HST, will also work, but
you may find that using them gives a kind of herky-jerky interaction
with DLX.  This is because these modems are basically half-duplex and
they pause when changing from sending to receiving.

For example, take the US Robotics Dual Standard (V.32 and HST) modem.
Here are some tips for it: Set it up as you would a regular 2400 baud
modem.  Also initialize it with AT&A0&W -- this command causes it to
connect with a regular Hayes-style message of CONNECT followed by the
baud rate.  Add B0 to the modem initialization string in your PARAMS
file -- this enables the V.32 mode.  The modem will work fine with
9600 baud callers and also 300/1200/2400 baud callers.

You may find that callers with 9600 baud modems have trouble
connecting reliably with your slower 2400 baud modems, or vice versa.
The reason for this is that the high speed modem is trying to
establish a high speed connection, trying first one protocol and then
another.  This is all futile, of course, so the best way to deal with
it it for the caller to command her modem to just try plain 2400.
The command need for this depends on the particular high speed modem.
Some commands that have worked for various callers are: ATQ0,
ATN0S37=6&Q6 and AT&Q6&K0.

Modem Troubleshooting

Modems are troublesome devices because they are part analog and have
to interact with the telephone network.  The telephone network itself
is not uniform from place to place and from time to time.  Here are
some tips for dealing with common problems:

Callers can't connect or dropped immediately after connect

Modems communicate with each other by sending tones at standard
frequencies and phases.  The receiving modem filters the incoming
sounds to remove all noise, leaving just the standard tones,
hopefully without phase distortion.  Problems occur if (1) the
sending modem is off frequency or phase, or (2) the receiving modem
has poor filters (poor frequency or phase response and linearity).
Generally, the cheaper the modem the worse it is (obviously).  Real
cheap modems may not be able to connect to your board.  To some
extent you can make up for this by using top quality modems with good
filters.  Noisy phone lines aggravate the problem.  You can change
your PARAMS to make your system somewhat more tolerant if you like:
Append S10=12 to your modem initialization string and increase the
sixth modem timing parameter to 10 or so.

Another cause of this is trying to use high-speed modems to talk to
plain 2400 baud modems, or vice versa.  This works fine in 95% of the
cases, but that 5% is enough to be a recurring headache for sysops.
When high-speed modems try to make a connection, they first try one
protocol, then another, then a third and so on.  The fancier the
modem the longer the list .  The computer on the other end may lose
patience and hang up.  To counter this, the person with the high
speed modem should set it to not try so many protocols, perhaps only
the right one!  On many high speed modems, the following will work to
set it to just 2400 baud: ATN0S37=6&Q6.  The S37=< > portion
determines the data rate.  Use S37=3 for 300 baud, S37=5 for 1200
baud and S37=6 for 2400 baud.

BBS Modems don't always answer

DLX normally resets the modem after each call and programs it to
autoanswer each time.  You may find that it works better to put your
modems in permanent auto-answer mode instead.  (This does have one
disadvantage: when your system is down, the modems will still
answer.)  You can put 2400 baud modems in autoanswer mode by
programming them.  Here's how: Connect the modem to a terminal
program like Procomm.  Type ATZ (in caps) and you should get "OK"
back if you're connected right.  Then type the command ATS0=1&W which
sets permanent auto-answer mode.  You will get "OK" back if it worked
right.  The modem will remember this programming, even if you unplug
it.

Callers being dropped in the middle of a call

This can certainly be a distressing problem.  There are many possible
causes.  Here's a list of some which we've identified:

Call Waiting on BBS line
Surely you don't have call waiting on your BBS line?  Yet sometimes
the phone company will have it on there even without telling you
about it.  Best to run a check.  If you have call waiting, the little
beep or click that comes with another call will drop the connection.

Call Waiting on CALLER line
Same problem if your caller has call waiting.  Many phone companies
have a special way to turn off call waiting for the next call, for
example typing *70 or 1170 before the call.

Incompatible modems
Unfortunately, not all modems can talk to each other.  The problem is
that some cheap modems are pretty far out of "spec", in terms of the
tones they put out.  The more expensive modems tend to not only have
accurate tones, but also to have better filters so they can to some
extent compensate for poor modems on the other end.  Which modems are
"best" is something that changes all the time, but it's a good bet
that the very cheapest modems aren't the best.

Everyone who's been a SysOp has gotten the message "I can't connect
to your system and I know my equipment is OK because I can connect to
all the other boards."  Telephone lines and modems are analog devices
they cannot be made 100% reliable.

Modems not hanging up at the end of a call

DLX orders modems to hang up by sending a signal on the "DTR" (data
terminal ready) line.  This line is one of the wires in the cable
that connects the modem to your computer.

A standard serial cable has between 3 and 25 wires in it.  These
wires are named according to the RS-232 standard.  For purposes of
hanging up, DLX needs to use line 20 (DTR).  Almost all cables have
this line, but a few really cheap ones don't.  If you suspect this,
test the cable with an ohm-meter or RS-232 breakout box.

In the case of internal modems, an RS-232 cable is not used and won't
be a problem.

Your modems must also be setup to obey DTR, i.e. to hang up when DLX
tells them to.  Many modems come standard from the factory configured
to ignore DTR.  The reason for this is that most modems are used to
call BBSes, not be on the other side.  To change the modem
configuration, you must either change the dip switches on the modem
(if it has any) or send special AT& configuration codes to the modem.

Most 2400 baud modems use soft configuration (AT& commands).  A
typical command would be AT&C1&D2&W, which tells the modem to detect
carrier on/off, to obey DTR, and to make this state permanent.
Connect to the modem with a terminal program (e.g. Procomm) and type
the command.  Procomm doesn't know about Digiboards, so connect your
modem to a normal serial port.

If you're still having trouble, try increasing the first modem timing
parameter (in the PARAMS file).  Or try changing the modem reset
command ATZ (in the STRINGS file) to ATH0 (which means hang up the
phone).

Particular line is not reliable

Here's the scenario: You're running a DLX with many lines.  All your
lines but one are working just fine.  But this one particular line
keeps giving trouble.  It will work for awhile, then refuse to reset.
Sometimes !K resets it, sometimes not.

It takes detective work and time to ferret this one out.  What we
must do is isolate the problem.  The DLX software treats all lines
alike, so the problem is likely to be in the phone line connection,
the modem, the serial port or the computer motherboard.  We want to
isolate the problem step by step.

Step 1.  If your system hangs or crashes when a certain line is
accessed, you have a different problem, probably an I/O port address
conflict.

Step 2.  Make sure you are using 16450 UARTs, not old 8250 UARTs.
The 8250s are too slow even for a 286, much less a more modern CPU.
These parts are marked in various ways, like 164C50 but it's usually
obvious.  A 16550 is fine too.

Step 3.  Swap the telephone line (only) coming in to the problem line
with another one.  Continue testing for a few days, writing down what
happens.  Did the problem switch to another line? If so, you have a
problem with this particular telephone line, probably line noise.  If
the problem remains on the same line, continue to the next stp.

Step 4.  Swap the modem on the offending line with another modem.
Swap JUST THE MODEM.  Be careful to unplug the phone line and replug
it in the new modem.  We don't want to switch phone lines too.
Continue testing for a few days more.  Did the problem switch to
another line?  If so, you have a bad modem.  Contact the manufacturer
or dealer for service.  If the problem remains on the same line as
always, proceed to the next step.

Step 5.  Swap serial ports or Digiboards.  Either change in a whole
new one, or on a multi-line system, remove the DigiBoards and
interchange their switch settings.  Then interchange all the modems
so that all lines now go into a different Digiboard or serial port.
Does the problem move to another line?  Then you have a bad DigiBoard
or serial port.  If not, proceed to the next step.

Step 6.  If your computer has a speed (turbo) switch, try the slower
speed.  Does this cure the problem?  If so, you have a poorly
designed computer.  Does your computer have built-in serial ports?
These will interfere with a 16+ line DLX unless disabled.  Usually
this can be accomplished by setting dip switches on your motherboard,
or by physically removing the ports.

Line Noise

Line noise is a very common problem and it affects everyone at one
time or another.  Telephone lines are highly variable.  Usually, the
further you are from the the nearest switching center, the worse.
You can ask to have "data lines" put in, but this will cost money.
Even the weather can affect things -- you will notice more complaints
of line noise and inability to connect after a rainfall.  You can
append S10=12 to your modem initialization param to make your system
more tolerant of line noise, but slower to connect.

You can take some steps to alleviate line noise at your end.  First
off, be careful to not bundle your phone line cards with power cords.
The phone cords can pick up 60 Hz hum from the power line and this
can cause problems.  Another factor to consider is the quality of the
modem itself.  The better modems are more resistant to noise.

Believe it or not, you can get a certain amount of noise suppression
by tying knots in the telephone cable between your modem and the
telephone wall connection.  The knots act as inductors and become a
simple kind of low-pass filter that acts to suppress noise.  The
knots also help some as a lightning protector.  And the price is
right!

You can do more to improve your modem's resistance to noise with a
toroid.  Go to Radio Shack and get a snap on choke, aka toroid. Cat.
No. 273-104.  It is a ferrous core that snaps apart and snaps
together again.  Snap it open.  Wind your telephone cord around it,
up to seven times.  Snap it closed.  Place it close to the modem.
The plastic blister pack comes with two cores.  If you need more
suppression, use both.

Finally, you can buy a commercial filter for your modular phone
cable. A good general purpose filter is available from Hello Direct
1-800-444-3556. Ask for item # 3187U Noise Filter for RJ11. The price
is $9.95. If you are experiencing interference from a nearby radio
transmitter, a filter for this problem is available from K-COM
1-216-325-2110. Ask for Model RF-1. The price for this is $14.95.

How to "Busy Out" A Telephone Line

Sometimes a modem will get hung so bad that the !K command cannot
reset it and power cycling the modem doesn't help either.  You'll be
able to fix it by shutting down the BBS, turning off all the modems
and the computer, then restarting everything.  But if the BBS is
busy, you may want to wait until things quiet down.  While you're
waiting, you can "busy out" the affected telephone line.  If your
lines are in a rotary or hunt system, incoming calls will just skip
over the affected line.

To busy out a line, you need to make a little gizmo.  Start with a
telephone cable with modular connectors at both ends.  You need just
the regular kind with RJ11 four-wire plugs.  If you look into the
transparent modular connector you'll see four wires, colored black,
red, green and yellow.

Cut the cable off about 4 inches from the end.  Use a sharp knife and
scissors to cut away about 1 inch of the outer insulation.  This will
expose four little wires.  Cut the black and yellow wires short (they
won't be connected to anything).  Using a wire stripper, strip off
half an inch of the insulation on both the red and green wires
(they're 24 gauge).  Twist the bare wire ends together so that they
make electrical contact.  Finally, tape up the bare wires with
electrical tape.

To busy out a line, just plug this little gizmo into the telephone
wall socket (or your modem).  This should only be done temporarily,
and only on rotary/hunt systems where calls will be automatically
directed to the next line.  On a single line or non-rotary system,
the shorted line may show up as a problem at the telephone company
switching center.

Connecting Hard Wired Terminals

DLX can be used with hard wired terminals which are directly
connected without modems.  Terminals are connected using a little
device called a "null modem."  These can be purchased inexpensively
(for example, Radio Shack part no. 26-1496, $4.95), or you can make
your own by interchanging wires on an RS-232 cable.  Make sure you
get one that supports the DTR and DCD signals.  DLX does flow control
with XON/XOFF it does not support the RTS/CTS protocol, so you don't
need to worry about those lines.

Answer the "activate line" question with the specific baud rate you
want the hard wired line to use.  DLX will support any rate, but of
course your hardware may not be up to it if the rate is extremely
high.

How to Run DLX Through a Multiplexer or Data-Switch

A multiplexer is a device which takes a group of serial lines and
concentrates them into a single serial line of higher speed. This is
used so that a group of lines can be combined into one and the data
sent over a high-speed leased line.  This is normally only done by
universities or companies, because they're expensive.

A data-switch is a device used by large corporations and universities
to manage all their incoming telephone data lines.  Typically what
happens is that you dial the main data number and you get a prompt
which asks you which system you want.  Then you enter the name of the
system you want to be connected to.  So maybe there are several
minicomputers, a mainframe or two, and now you want to hook a DLX
system in there.

Here's some general guidelines on how to hook up your DLX to the
these things:

1.  When DLX starts up, instead of responding y to the lines you want
to activate, instead type the baud rate for that line.  Each line
will have to have a fixed speed.  A typical multiplexer will have an
incoming number for 300 baud, one for 1200 baud and one for 2400
baud.  Divide your lines up appropriately.

2.  In the PARAMS file, set the "maximum number of retries when
resetting modem" line to 0.  Since you have to modems directly
connected, DLX should not issue any modem commands.

3.  Ideally, each RS-232 line will support carrier detect (DCD).  In
this way, DLX will know when a line has been called.  If this is not
possible, edit your PARAMS file to disable DCD detection, like this:

FALSE                {sense modem carrier using DCD/RLSD line}

You may find that users have to type a carriage return when they are
first connected to DLX in order to get it started.

4.  Be cautious about enabling 9600 baud lines (as to a terminal
room).  A very fast machine indeed will be needed to handle 32 of
these.


REFERENCE SECTION

Automatic Shutdown

You can set DLX to automatically shut down at a pre-defined time.
This is done by placing the time you want it to shut down on the
command line when you start DLX.  For example, to automatically shut
down at five in the morning, you would use: DLX 5:00 for a command
line.  At the appointed time DLX does the equivalent of a !DOWN
command, giving callers 10 minutes warning of the impending shutdown.

This feature is useful for automatic backup.  You can have a .BAT
file which starts DLX, then does the backup when DLX shuts down, then
loops back and restarts DLX.

Business Mode 

DLX may be used either as a social system, or for business uses.  You
can activate business mode by changing that parameter in the PARAMS
file.  This has the following effect: users are not asked their
gender, sexual orientation, age, height or weight.  The match command
simply lists all active users.  You will need to edit the PROMPTS
file to make it fit your business application.  You will also want to
revamp the PUBMAIL file to include categories of public messages
appropriate to your business.  You will also need to change the
questionnaire files to fit your particular needs.

Database Subsystem

You can have one or more databases of searchable text information.
The different databases are organized by making subdirectories of the
DATABASE subdirectory, one for each database.  Edit the MENU file in
the DATABASE subdirectory, describing the database choices.  Popular
databases are descriptions of all the files in the library, or brief
descriptions of all callers.

Each database consists of a set of files.  The MENU file describes
the database and what sort of choices are available.  The DATA file
contains the basic database itself.  This file consists of plain
ASCII text, divided into lines.  Each line of the file corresponds to
one entry in the database.  The lines in this file do not have to be
the same length.  The maximum length of a line is 80 characters.  The
HEADER file precedes the listing of lines from the DATA file and
labels the fields.

You may provide additional information on any line in the DATA file.
To do this, make the first field of each DATA line a record number
(these don't have to be in order).  Provide additional information
about, for example, record 12 in a file called 12.TXT -- this is just
a plain ASCII text file.  It is not strictly necessary to use numbers
here, any string of characters up to 8 that are allowed as part of a
MS-DOS filename will work OK.

The following is an example database of Los Angeles restaurants.  The
menu file, used to describe the database, looks like this:

The DINING database contains information on Los Angeles area
restaurants.  You may search on any combination of key words.  As an
example, to find all Chinese restaurants in Hollywood, use CHINESE
HOLLYWOOD as your search key.  You may abbreviate -- IT is the same
as ITALIAN, etc.

The header file, used to label fields, looks like this:
                                                                   More
Number Name            Cuisine    City              Phone #        info?
========================================================================

And the data file itself looks like this:

   1   Aegean Isles    Greek       Marina del Rey   213-822-6221    NO
   2   Akbar           Indian      Marina del Rey   213-822-4116    YES
   3   Anna Maria's    Italian     Santa Monica     213-394-5945    NO
   4   Arsenal         American    West Los Angeles 213-479-9782    NO
   5   Benihana        Japanese    Beverly Hills    213-655-7311    NO
   6   Benihana        Japanese    Encino           818-788-7121    NO
   7   Benihana        Japanese    Marina del Rey   213-821-0888    NO
   8   Cafe Casino     French      Santa Monica     213-394-3717    NO
   9   Cafe Casino     French      Westwood         213-208-1010    NO
  10   Szechwan        Chinese     Marina del Rey   213-821-6256    NO
  11   Cyrano's        Continental Marina del Rey   213-823-5305    NO
  12   Fiasco          Californian Marina del Rey   213-823-6395    NO
  13   Great Wall      Chinese     Marina del Rey   213-827-1414    NO
  14   Gulliver's      English     Marina del Rey   213-821-8866    NO
  15   Joe Petrelli's  American    Culver City      213-398-9777    NO
  16   Three Flames    Mongolian   Westchester      213-641-6868    YES
  17   Pizza Man       Italian     Marina del Rey   213-301-0069    YES
  18   Barneys Beanery American    West Hollywood   213-656-0433    NO
  19   Los Gringos     Mexican     Encino           818-906-2255    NO
  20   Good Earth      Natural     Encino           818-986-9990    NO
  21   Good Earth      Natural     Woodland Hills   818-888-6300    NO
  22   Lucky           Chinese     Hollywood        213-463-0464    NO
  23   Golden Hunan    Chinese     Northridge       818-363-5511    NO
  24   Maison Gerard   French      North Hollywood  818-766-3841    NO

You can search this on any combination of key words.  If you give
ITALIAN MARINA as the search key (capitalization is ignored), then
you would get back a listing of all Italian restaurants in Marina del
Rey.  You would get the same answer if you used MARINA ITALIAN as the
search key.  Abbreviations such as IT for ITALIAN are allowed, too.
As it happens, there is only one matching entry in the database,
namely number seventeen "Pizza Man."  You can then ask for more info
about number 17, which causes the file 17.TXT to be displayed:

PIZZA MAN

FRESH, HOT, FAST AND FREE DELIVERY

We make our dough fresh
and we use 100% real mozzarella cheese

213-301-0069

Call for take-out or free delivery
Minimum order $5.00
OPEN: Every Day 12 Noon 'til 12 Midnight

13352 Washington Blvd, Marina del Rey

Error codes - What they mean

The &ED ampersand code is used to display certain file system errors.
These error codes are normally the result of a disk error.

Code	Message		Meaning
----	-------		-------
-1	File in use	Another user online is using this file right
			now.  An example of when this might
			happen is attempting to send a message to a
			user who is in the process of logging on
			and has half their mail read in so far.  The
			proper response to this error is simply to try
			again later.
0	Disk		General I/O error - amy indicate a problem
			with the hard disk itself.
2	File not found	Requested file does not exist.
3	Path not found	Requested subdirectory does not exist.
4	Too many open files Try increasing the FILES= parameter in
			your CONFIG.SYS file.
5	Access denied	MS-DOS refuses permission.  For example,
			trying to write to a read-only file.
7,8,9	Corrupt memory	See section of this manual on memory
			errors.
Other	Unknown		All other errors.

Errorlevel when DLX Exits

When DLX exits to MS-DOS, it sets the MS-DOS errorlevel depending on how
DLX was terminated.  This can be sensed by an "if errorlevel" command
in a .BAT file.

Reason for Exit	Errorlevel
---------------	----------
Time out	0
!DOWN		1
!BYE		2
Ctrl-Break	3

File Library

This library is the part of DLX where files are stored.  These files
can be downloaded by callers using the XMODEM or XMODEM-1K protocols.
Callers may also upload files to add to your library.  Time used to
upload files is not counted in a caller's connect time.

To set up your library, CD to your LIBRARY directory and make
subdirectories for each of the categories you want.  Prepare a file
LIBRARY\MENU listing the categories you have chosen.  Also create
MENU files within each category (subdirectory).  A simple way to
prepare a MENU file is to connect to the relevant subdirectory and
issue the MS-DOS command DIR >MENU.  If you do not provide a MENU file,
DLX will show a simplified DIR listing in response to the "L"
command.

If you wish, you may restrict uploads to categories starting with the
letter 'U' (set this option in the PARAMS file).  The idea is that
there will be a special category, for example UPLOADS, for newly
uploaded programs.  After the new programs have been checked out by
the SysOp, they can be moved to other categories.  Programs can be
downloaded directly from the UPLOADS category, but users will know
that the contents there have not yet been screened by the SysOp.
Every upload category needs a MENU file too.  This can just be a
title to start with.  As each file is uploaded, a one line
description is appended to the MENU file.

You may have a library that consists of multiple pathnames or
volumes.  You can do this by specifiying several paths in the PARAMS
file entry for library pathname, separated by semicolons.  For
example, you could use LIBRARYD: to allow your "D" drive to contain
library categories off the root directory.  This can also be used to
add CD-ROM drives to your library.  The first path you list must
contain your main library MENU file.  If you are connected to a
library category that has subdirectories, then you can connect to
them by typing their name.  This allows unlimited nesting of library
categories.

File Transfer Protocols

Files can be transferred using plain ASCII, XMODEM or XMODEM-1K
protocols.  ASCII is suitable only for text files, but it will work
with any terminal or communications program.  XMODEM and XMODEM-1K
are best used for binary files, such as programs or archives.  Both
protocols provide error detection and recovery.  They can transmit a
file correctly even in the prescence of noise and line errors.  They
differ in that XMODEM uses a 128 byte block size and XMODEM-1K uses a
1024 byte block size.  XMODEM is usually preferred if line noise is a
problem, whereas XMODEM-1K is better when the connection is more
solid.

The XMODEM-1K-G protocol is useful when you are communicating over a
reliable link, i.e. one which already has error correction on it, for
example a packet switched network.  On a reliable link, XMODEM-1K-G
can be faster than XMODEM-1K.

How to set up a big library on multiple disks.

A DLX structured library allows you to have as many library
categories and files as your disk will hold.  But what if that's not
enough?  You can set up a library which spans several disk drives.
You can mix actual disk drives and CD-ROM drives, too.  Here is an
example of how to do this:

If we assume you started out with the DLX default setup, then your
library path would have been in C:\DLX\LIBRARY.  The various
categories you setup would be subdirectories of C:\DLX\LIBRARY.  Now
it's full and you want to expand to the D: drive.  Setup your new
library categories as subdirectories of D: -- for example D:\UPLOADS.
Edit your file C:\DLX\LIBRARY\MENU to list both the old and new
categories.  Edit your PARAMS file, so that LIBRARYD: is your library
path.  That means that DLX will look first under LIBRARY to find
categories, and under D: next.  The semicolon is a separator between
paths.

Upload and Download Logs

DLX maintains an upload log file and a download log file.  These log
files record all uploads and downloads performed while the system is
running.  You can copy these files to a floppy even while the system
is running (using !DOS) and analyse them on another computer.  The
files used are specified in the PARAMS file by the lines:

DLOG                 {log file for downloads}
ULOG                 {log file for uploads}

Each time a file is uploaded or downloaded, a line of information
about the transfer (filename, category, time and date, name and file
number, etc) is appended to the appropriate log file (ULOG or DLOG,
if you use the names above).  This file is cleared everytime DLX
starts up.  If you want a permanent record, do the following MS-DOS
commands before restarting DLX:

type dlog >>old_dlog
type ulog >>old_ulog

The files old_dlog and old_ulog will contain the permanent record.

Mail

How to Print Mail 

You can print out the mail file of any user.  For example, to print
the mail file of user 1, enter the following command from the DLX
directory: print mailbox\usr00001.  The user number must be padded
with leading zeros to make a five digit number. 

I'm the SysOp but my mailbox is full

Use the !M command to give yourself more mailslots.  The default is
10.  You can make it any number.  DLX will run out of main memory
around 200 messages, though.

How RS (read since) and SS (scan since) work

RS (read since) and SS (scan since) read or scan the public messages
that are new since the last time the user logged in.  Note that this
is NOT the same as "read/scan all unread messages."  All logins count
the same, even if the user did not read any public mail.

International Concerns

DLX can be used anywhere in the world.  It will work with either
American or CCITT modems.  DLX normally works in a full duplex mode,
but you can suppress "host echo" by setting the appropriate entry in
the PARAMS file.  If you need special characters above the 128
provided in the ASCII standard, enable "8 bit mode."  This will allow
any 8 bit byte to be entered by callers.  The normal "7 bit mode"
automatically ignores and strips the 8th "parity" bit.  In "8 bit
mode" it will not be ignored, and so callers must have their
terminals set to 8 bits, no parity.

In the social mode, you may choose either the English or metric
system of measure for height and weight.  In the English system,
height is measured in feet and inches, and weight is measured in
pounds.  In the metric system, height is measured in centimeters and
weight (mass) in kilograms.  These affect the matchmaking percentage
as well as the input format allowed.

DLX will use whatever date format is selected for MS-DOS by the COUNTRY=
setting in the CONFIG.SYS file.  Therefore, it's important to set the
COUNTRY= parameter correctly for your country code.

The STRINGS file keywords To/From/Subject/Date, used in the headers
of messages, can be changed, but it must be done carefully if it is
to work correctly.  The reason that care is needed is that DLX uses
these words both to generate messages and also to decode them when it
reads them back in from the disk.

Edit the entries for these words in the STRINGS file.  You must use a
left justified string of characters, with no embedded blanks. Also
change all occurences of these words in the PROMPTS file.

After making these changes, all existing mail, both public and
private, must be deleted.  In other words, all files in the MAILBOX
and PUB-BOX subdirectories must be deleted.  The reason for this is
that DLX will no longer be able to read these in properly, since they
were written with the old keywords.  The STRINGS file and the actual
mail must match exactly in all cases.

Memory Management

Memory Usage

If you answer yes to the Check Memory prompt when booting DLX, it
will allocate all available memory, thus verifying that the main
memory area is functioning correctly and also determining its size.
The estimate of free memory depends on this size, which is remembered
between bootups.  If you change the amount of memory available to
DLX, you should run the memory check again.

When someone calls in, their mail is read into your main RAM memory.
Each line of a messages takes about 40 bytes.  So, for example, a
caller with 10 25 line messages will use up 10 x 25 x 40 = 10K bytes
of free space.  Keep this in mind when setting the limits on mailbox
size and length of messages.  While it's unlikely that all callers
would have their mailboxes full of maximum length messages, on the
other hand you should not be excessively generous in granting mailbox
space, or the system will run out of memory.  If this happens, the
system may crash, or your users may lose mail.

The !DOS Command

The !DOS SysOp command allows you to execute a single MS-DOS command,
such as DIR or COPY.  This facility should be used with great care.
If you try to use any MS-DOS command that changes the connected
directory or that requires keyboard input, it will seriously disrupt
DLX.  The main use of the !DOS command is to copy files to and from a
floppy diskette so that they can be processed on another computer.
However, be careful not to copy any files that DLX currently has open
(the MEMBERS file is always open).

The warnings about !DOS bear repeating: if you use !DOS to do
anything other than a DIR or to COPY a file that DLX is not using,
you run the risk of crashing DLX, losing data or damaging the file
system on your hard disk.  This may not happen right away, but later
while DLX is running.

The !DOS command needs the transient portion of COMMAND.COM to run.
DLX will use this memory if it needs it, so you may find that !DOS
doesn't work after the system has been running awhile.

During the operation of the command given to !DOS, the system is
frozen.  So if you run a program that takes five minutes, to your
callers it looks like your BBS froze up for five minutes.  If you get
one of those "abort, retry, fail" messages, don't panic: a single
ctrl-Break (not Ctrl-C) will get the board going again.

Memory Errors - Symptoms:  System Freezes, Run Time Errors

Your BBS is running fine and then suddenly for no apparent reason it
freezes.  No key works, not even function keys or control-Break or
even Control-Alt-Del.  You have to power cycle the machine.  What's
wrong?

-OR-

You receive a message something like this:

run-time error R6003
- integer divide by 0
*** LINE:3, STATE:51
*** DEPTH:3, INPUT:
run-time error R6001
- null pointer assignment

-OR-

Your DLX crashes with the message:

Pointer Damage

What do these things mean?

These errors usually indicate a memory problem (your system's RAM
memory, not hard disk memory). The memory problem can occur in
several ways.

(1) Not enough memory installed on your computer.  DLX needs at least
1 megabyte of memory.

(2) Available memory being used up by device drivers, TSR programs,
etc.  Run MEM at the MS-DOS prompt.  It should show over 500K bytes
free.

(3) DLX is using up too much memory.  To get an accurate count, run
DLX and say yes to the memory check question.  Edit your prompts so
that &FS and &RH show on the sytem status line.  &FS is the amount of
room free in the far heap (should be >100K).  &RH is the amount of
room free in the near heap (should be >5K).  If you're using too much
memory, there are several remedies: reduce the size of your prompts
file, cut down the number of public boards, reduce the limit on the
size of a message, reduce the size of mailboxes, etc.

(4) Memory not setup right.  This can be because dip switches on the
motherboard aren't set right, or an add-on memory board isn't setup
right.

(5) Memory device driver setup wrong.  For example, 386MAX or QEMM or
a disk cache not setup right.  All of these are fine if installed
correctly.  Consult your manual if you use one of these programs.
Don't use the line STACKS=0,0 in your CONFIG.SYS.file.  Either use
STACKS =9,256 or leave the line out entirely.

(6) Memory hardware errors.  Run a memory diagnostic and see if
errors are found.  You can use one of the many shareware ones.

(7) I/O port conflicts.  Remove any unusued hardware devices from
your computer, such as a mouse or printer port.

Low memory situations

DLX uses your PC's RAM memory not only for the DLX program, but also
for a variety of data.  Here's some things you can do to alleviate a
low memory situation:

1.  Use the MS-DOS command MEM (at the MS-DOS prompt) to see how much free
memory you have.  It should be over 500K.  If not, here's some things
to try.  In your CONFIG.SYS file, reduce the BUFFERS= parameter to
something like 10 or 20.  Also in CONFIG.SYS, remove any unneeded
device drivers, such as DRIVER=ANSI.SYS.  If you have any TSR
programs, don't install them (remove them from your AUTOEXEC.BAT
file).

2.  Reduce the size of your PROMPTS file.  Each non-blank line uses
up memory.  One prime candidate for reduction is the SysOp commands.
Only you will see these, so you can make them as short as possible.
Reduce the verbosity of other prompts as well.

3.  Cut down on the maximum size of messages and on the size of
mailboxes.  Each private message uses up memory when the caller is
online.  A limit of 10 messages per mailbox and 60 lines per message
is good.  These things are controlled by the PARAMS file.

4.  If you have a 386 or 486 computer, you can use programs like
386MAX or QEMM to get more usable memory.  Consult your MS-DOS manual
for tips on how to use the EMM386 program that comes with MS-DOS to
get more memory.

Order Entry System

DLX includes an order entry system that callers can use to send in
orders.  This subsystem is accessed from the main menu by using the O
command.

The order form is kept on disk in the file ORDER.  This is a text
file with a series of questions which the user is asked to provide
one-line answers.  Each question must be followed by &X on a separate
line.  You can have as many questions as you like.

The completed order is sent as a message to the user specified in the
PARAMS file by this line:

1                    {who processes orders}

Page Pause

DLX asks each caller for the number of rows of characters displayed
on their terminal screen.  It will pause the output when this number
is reached.  If the user enters a page size of zero, that will
suppress page pause, for those who don't like it.  In any case,
Ctrl-S/Ctrl-Q can always be used to stop and restart output.

When end of page is reached, the user is given the choice of
continuing the list (Y), stopping it (N or Q), or going to a
continuous listing (C).  If the choice is to stop, the equivalent of
a Ctrl-C happens.  If the choice is continuous listing, the rest of
the output appears without further pauses.  Page pause resumes with
the next output sequence.

When a user first calls, before she logs in, DLX doesn't know what
page size she has set.  This also applies to new users before they
answer the page size question.  In these situations, DLX uses the
default page size set in the PARAMS file.  Normally, a value of zero
or 24 would be used.  If this number is negative, page pausing is
suppressed everywhere and the page size question is not asked.

Special ampersand controls are provided to give you additional
control over the occurence of page pauses.  &PP prevents page pause
on the current output sequence.  &RP resets the page pause count, so
that the current line is considered a page boundary.

Prime Time

You have the choice of limiting prime time access or not.  You may
also select which hours are to be "prime time".  If you change them,
don't forget to change the corresponding lines in the PROMPTS file.
You also have the option in the PARAMS file of allowing new users
during prime time, or not. 

Running a Social BBS

How to change a user's gender

Callers cannot change their gender (or sexual orientation) by
re-answering the questionnaire.  This is to prevent people from
changing their gender, then reading a public mail category reserved
for the opposite sex, then changing back.

Of course, every now and then there is a legitimate reason to change
someone's sex.  This is how you, the SysOp, can do it.

Use the !X command to cross over to their account.  Then re-answer
their main questionnaire all the way through to the "filing
questionnaire" at the end.  Then logout.  Their gender will be as you
set it.  If you didn't get the rest of their answers right, it won't
matter.  They can easily change the other answers themselves.

How the match percentage (&PC) is computed

First off, the match percentage is a pretty whimsical concept.  No
one should take it seriously.  The match percentage is just there for
fun.  Of course, it's not defined in the business mode.

The intent of the match percent is to measure the likelihood of
romantic interest between two available adults.  It doesn't measure
the likelihood of non-romantic interest, say between straight people
of the same sex.

The match percentage is computed by a complex formula.  It takes into
account the user's sex, sexual orientation, age, height, weight,
city, state and how well the questionnaire answers match up.

Gender and sexual orientation count heavily.  A straight and a gay
(no matter what the sex) will always match 0% to each other because
presumably at least one of them would have no interest.

By convention, callers always match 100% to themselves.

Propinquity counts, too.  A match with a person in another state has
a strike against it from the start.  Age is a factor: a great age
difference is a disadvantage.  Height and weight differences are also
considered in male/female matches.  Many people are uncomfortable if
the woman is larger than the man.  And most people are turned off is
someone is terribly fat.

How to put the match percentage on the "who" status line.

You can add the match percentage to your "who" command status
listing.  It is a little tricky, tho.  Remember that the match
percentage is relative to who is doing the matching.  Someone who
matches high to one person may match low to another.

What you DON'T want to do is add &pc to the status line that shows up
on the sysops console.  This will look the same to everyone.
Instead, add the &pc to the "who" status line.  That's the one which
in the default PROMPTS file has the code "&sl" in it.

The original line is:

	&{&sl &cs

Try this instead:

	&{&3&>&pc&~ &sl &cs

System Security

Backup

Back up all data files frequently.  Hard disks are not perfectly
reliable, and there will eventually be a need for the backup. The
most important file to back up is the MEMBERS file.  Copy this to a
floppy disk periodically.  If MEMBERS becomes larger than one floppy
can hold, it can still be saved on more than one floppy disk by using
the MS-DOS backup command.  As a bare minimum, copy MEMBERS to
MEMBERS.BAK on the hard disk to provide some protection.

Passwords and their weaknesses

Passwords are the main means of security in DLX.  Be careful not to
let anyone find out your password.  Use a meaningless combination of
letters, numbers and punctuation marks.  Never use the same password
on other BBSes.  For extra safety, change it from time to time.  If a
user forgets her password, you can use the !X command to login as
that user, and then use the NEWPASSWORD command to enter a new
password.  It is especially important for level 9 (SysOp) users to be
careful about their passwords.  Level 9 passwords should never be the
same as passwords used on other systems.  DLX does not allow users to
use their name or file number as a password, since it's too easily
guessed.  Passwords are stored in a scrambled form in the MEMBERS
file, so even if someone gets access to your computer, they won't get
the passwords.

Password security can be penetrated.  You should be aware of the
three most common ways that this can happen:

1.  Same handle and password on several BBSes.  It's quite common for
callers to use the same password on several systems.  In this case,
if you know their password on one system, you know it on all of them.
This method is sometimes used by unscrupulous sysops, and sometimes
by knowledgable users on BBSes that store passwords in a plain text
file which can be downloaded.

2.  Storing password in login script.  Most terminal or communication
programs allow you to record a login script, so that you can just
select the entry for a particular BBS and the program will call it
and login for you.  It's poor security practice to include your
password in such a script, since anyone with access to your computer
can use it, and can also find out the password itself since the
scripts are often kept in plain text form.  Unless you are a hermit,
you should stop the login script just before entering your password,
and then always enter your password by hand.

3.  Easily guessed password.  This is all too common.  An example
would be a handle of Pepper using a password of "salt."  One user
chose the password "password."  It's best to choose a random
combination of letters, numbers and punctuation marks.  A typical
speaking vocabulary for English is 10,000 words.  It would be
feasible for someone to write a program to call your BBS repeatedly
and try them all.  Choosing a random password makes it harder to
guess.

Other methods for obtaining passwords, such as Trojan Horse programs,
are also possible but rarer.  Keep your eyes open and don't be
overconfident of password protection.  Change your own password from
time to time, too.

Verification

You have the choice of requiring verification data or not.  If you do
require it, then new users will be asked their real name, address,
and phone number.  This information will be recorded to the REALNAME
file and also sent to the SysOp as a message.  We recommend that you
verify all users to protect your system from pranksters.

It's generally a good idea to take action to verify the phone number
and address of new users.  Experience has proven that this
discourages pranksters from abusing your system.  The most common
method of verification is to call up each new user at the phone
number they've given, calling out-of-town numbers collect.  You will
find a side P.R. benefit in that people like getting these calls, and
they will usually be on the system within 20 minutes after receiving
such a call.  Alternatively, you can ask new users to send you a
self-addressed, stamped envelope.  Foreign users can send you an
International Reply Coupon.  When you receive this, increase their
user level and change their password (using !L, !X and NEWPASSWORD).
Use their envelope to mail them their new password.  In this way, you
have verified their mailing address.  You can also include a flyer
about your BBS.  Telephone verification is more work, but you will
get more users that way.

User Levels 

User levels can range from 0 to 9.  Sysop-only features are limited
to level 9 users.  By editing the PARAMS file, you may set the
privileges granted to users with levels below 9.  Each level has a
time limit and a set of privileges.  If you change the default setup
be sure to edit the PROMPTS file also.

DLX provides ten user levels (0-9), whose privileges you may assign
as you wish.  One way to set it up would be: level 0 is for
unverified new users, level 3 for verified but non-paying users,
level 6 for subscribers, and level 9 for the SysOp.  Many variations
and refinements of this are possible.

Charging for Access

DLX has a time accounting system based on charging by the month.  You
charge callers for each month, and give each user a daily time limit.
The purpose for this system, instead of charging by the number of
minutes or hours of connect time (like CompuServe etc), is to
encourage people to call.  For a social BBS to work, people need to
do more than just log in, check their mail, and log out.  They need
to hang around, browse people, maybe chat or read the pubs.  With the
monthly system, each day is a fresh allotment of time and it's "use
it or lose it".

Each user gets a daily time limit which she can use in one call or
any number of calls.  Each day begins anew.  The &cu code displays
the cumulative time used today.

The Bump System

In addition to usual system of daily time allotments, DLX gives you
the option of using the "bump system."  The idea behind this is that
an unused line doesn't do anyone any good, so why not let callers
stay on until the lines fill up and then "bump" one of them off.  If
the lines get busy, the system will always try to leave one or more
lines open for other callers (the number of lines that it tries to
keep open is in the PARAMS). It does this by bumping callers off the
system, but only callers who are "bumpable," (over their "Priority
Access" time) can get bumped. Everyone gets Priority Access time
(UNbumpable time) but the higher user levels get more.  The line in
the PARAMS file that gives the time limit for each level gives the
amount of Priority Access time in the bump system.  There is another
PARAM "bump max" which sets an absolute max time limit (per day) for
below a certain level (set by another param).

For example, you might want to setup your system this way.
Non-subscribers get 20 minutes a day of Priority Access time
(UNbumpable time). They also get 40 minutes a day of BUMPable time.
So, for the first 20 minutes each day (midnight to midnight), they
can't get bumped if the lines are full or not full. For the next up
to 40 minutes a day, they can get bumped if the lines get busy (but
are welcome to call back and try to find the lines not all busy). Once
they've used up their 60 minutes (20 minutes of UNbumpable time plus
40 minutes BUMPable time), they'll be bumped off the system whether
the lines are busy or not.  In contrast, all subscribers get more
Priority Access time and no limit to BUMPable time.

One thing to think about is that non-subscribers are essential to the
success of a social BBS. People only call because there are other
people online. An unused line is just a waste and doesn't do anyone
any good. If you give too much to subscribers, the non-subscribers
will be driven away and the board will die for lack of activity. If
you give too much to non-subscribers, then we'll have plenty of
activity but no subscribers. The bump system is self-regulating and
keeps the system busy. It encourages people to call during off hours
when the system isn't as busy, rather than only during the evenings.

Here's some details on how the bump system chooses exactly who to
bump.  First off, if the caller has priority access time left, she
won't be bumped. All callers who are over their priority access time
are considered bumpable. The system will not bump a caller in the
middle of certain actions, such as writing a letter, uploading or
downloading a File, answering a questionnaire, placing an order, or so
on. Because of this, at any instant in time, usually no one is
bumpable (everyone is in the middle of doing something). If the lines
Fill up, then the first person to become bumpable gets bumped. It
doesn't matter how much or how little time over their priority access
time has been used.

What the 123456789 mean when booting DLX.

The numbers 123456789 that are displayed as DLX is booting show how
far along in the process it has gotten.

1.	Loading STRINGS and MENUS
2.	Loading MACROS
3.	Loading PROMPTS, MULTIPLE.*, ESSAY, ORDER
4.	Loading PARAMS
5.	Scanning MEMBERS
6.	Computing MEMBERS index
7.	Loading PUBMAIL
8.	Scanning USERLOG
9.	Loading GLOBALS

Which computers will run DLX and which ones won't.

DLX runs on IBM PC compatible micro-computers.  In the past, hardware
compatibility was sometimes a problem, but today's PCs are more
standardized.  Almost any PC currently made will work fine.

The IBM PS/2 series uses a different kind of expansion card bus (the
MCA bus), so if you've got one of these, be sure any expansion cards
you get, like a Digiboard card, are MCA compatible.  The DigiBoard to
get for a PS/2 is the MC/8 (or an MC/4 for four lines).  Because of
the different design used by the MC/8 cards, DLX on a PS/2 can run
only a maximum of 16 lines, using two MC/8 cards.

Any PC running at 10 MHz or faster should be using the 16450 UART
chip in all its serial ports.  The 16550 chip can also be used, but
DLX does not make use of its advanced features.  Beware of serial
ports that use the old 8250 chip they won't keep up reliably.  This
applies to internal modems, too.

Your PC should have an FCC Class A or Class B certification indicated
on the back cover.  This indicates that it is properly shielded and
won't emit RF (radio frequency) radiation which will goof up other
equipment.  It also indicates that it won't be goofed up by nearby
sources of RF energy.  The Class B certification is the stricter one.
Class A machines are meant for industrial use and can cause TV
interference when used in the home.  Beware of the PC with no FCC
sticker!  These are not only illegal, but may be poorly made.

"Who" Command Status Codes

These codes indicate what a caller is doing that prevents them from
being chatted.  Only a user with "ChatOK" can be chatted.  Here are
the who status codes in the default STRINGS file.

Logging On	Just entering the system
Chatting	Engaged in a chat
NoRepeat	The same person cannot be chatted twice in a row
NotVerif	Userlevel is too low to be chatted
Q-aire		Answering a questionnaire
Library		Transferring a file
Mail		Reading private mail
Ordering	Entering an order
NoChat		NoChat selected.  User cannot be chatted, except by SysOp
LoginsOff	LoginsOff selected = NoChat + no login bulletins
PageOff		PageOff selected = NoChat + no bulletins of any kind
ChatOK		Available for chatting

Windowing 

DLX normally displays one window for each active line plus one for
the user at the keyboard.  When actually using the keyboard window,
you may find it to be too small.  The F10 key will give the keyboard
window the whole screen and continue to run the other lines invisibly
in the background.  The F9 key will return the display to its normal
mode.  The other function keys F1..F8 show a few lines at a time, so
you can see more detail.

DLX will use as many display lines as your display supports.  If you
have an EGA display, you can put your display in 43-line mode and DLX
will take advantage of this.  If you have a VGA, you can use 50-line
mode also.


UTILITY PROGRAMS

Programs Included with DLX

A number of utility programs are included with DLX.  Except as noted,
these should all be run from the DLX directory.  The programs that
generate reports to the console can have their output redirected to a
file in the usual MS-DOS fashion.  For example, ULSTATS >UL.TXT will put
the user log report into the file UL.TXT.  Reports can also be
redirected to a printer.  For example, ULSTATS >LPT1:.

ASKYN.COM is used by the DLX INSTALL batch file to ask yes or no
questions.  This program can be run from any directory.

BDAY.EXE is a program which tabulates whose birthday it is today or
this month.  For BDAY to work correctly, you must ask callers for
their birthday as the first question of MULTIPLE.3, and get the
answer in a 5 character alpanumeric field.  The form of the answer
must be the month and day, seperated by a slash or hyphen.  Suggested
wording in MULTIPLE.3 is:

5A
Please enter your birthday in the form MM/DD (month/day), 
with a slash and no year.  For example, a January 28th 
birthday would be entered as 1/28.
=>
&X

BDAY 12 will generate a listing of birthdays this month, and BDAY 30
will generate a listing of birthdays today.  You can incorporate the
birthday listing into your NEWS file, and that way everyone will know
whose birthday it is and can send greetings.

MQSTATS.EXE will total all the responses your users have made to the
multiple choice questionnaires.  MQSTATS /2 will generate a report
broken down by gender.

PACK.EXE is a utility program that packs public mail files, i.e.
eliminates deleted messages and renumbers.  To use it, type PACK and
follow directions.  PACK can also do mass deletion of old messages.
If you want to delete all the mail in a public mail category, don't
use PACK.  Instead, go into the PUB-BOX subdirectory and delete the
INDEXj and DATAj files, where "j" is the category letter.  Because
PACK renumbers the messages, you should not run it too often, lest it
confuse the users.

PMSTATS.EXE generates a report about all the postings in the various
public mail categories, including top ten lists for things like posts
per month, average age of posters, etc.

RNDB.EXE turns a REALNAME file into a form suitable for use as a DLX
database (one line per entry).  If you want to protect the anonymity
of your callers, then you'll want to keep the name of this database a
secret, and protect access to it by means of a macro.

RNTABS.EXE turns a REALNAME file into a tab-delimited form that most
spreadsheets and integrated packages (like Microsoft Works) can read.

TEST232.COM tests for serial ports and tells which interrupt levels
they are connected to.  COM1 should be on level 4 and COM2 on level
3.  COM2 is different if you're using a DigiBoard board, so this
program is only useful when a DigiBoard card is NOT installed.  This
program can be run from any directory.

ULSTATS.EXE is a program that shows the number of calls and total
minutes in use for each of your telephone lines.  It prepares this
report from your USERLOG file.  It works best if you maintain a large
enough user log to cover several days of activity.  ULSTATS also
gives a number for total erlangs for each day.  An erlang is the
number of full line equivalents.  For example, if you have a two line
system and both lines are busy half the time, this is one erlang
altogether.  If you increase the size of the userlog file by
modifying the limit in the PARAMS file, you must also delete the
current userlog file and start over, or else it will be garbled and
give an incorrect ULSTATS report.

USERLIST.EXE generates a one line per member listing of the MEMBERS file.

Using EMM386, QEMM or 386MAX with DLX

EMM386 is a Microsoft program that comes with recent version of MS-DOS
and Windows.  386MAX and QEMM are similar programs available from
Qualitas and QuarterDeck, respectively.  All these LIMulator programs
use the capabilities of the 386, 486 and Pentium chips to provide
additional MS-DOS memory beyond the usual 640K limit.  They provide EMS
(expanded memory), XMS (extended memory) and UMBs (upper memory
blocks).  DLX cannot make use of EMS or XMS memory, but it can use
UMBs and this gives you more memory.  You can see how much memory is
available to DLX by typing the MS-DOS command MEM /C.


FILE FORMATS

MEMBERS File Format

The MEMBERS file consists of a series of fixed length records.  The
length of each record is 256 bytes, including the last two bytes
(which are always carriage return and linefeed).  All the bytes are
printable ASCII characters.  Each record is numbered sequentially by
userid, and no gaps are permitted.  Deleted users are simply marked
as not active, and the rest of their information is left unchanged,
to facilitate restoring them if they were deleted by mistake.

Field		Type	Width	Description
-----		----	-----	-----------
Name		String	20	Name or handle
Userid		Number	5	File number
Filler		Blank	1	Not used
City		String	15	Name of user's city
Filler		Blank	1	Not used
State		String	2	P.O. abbreviation for state
PW		String	4	Password (scrambled)
Pagesize	Number	4	Page pause after this many lines
Gender		String	1	M or F
Orientation	String	1	Sexual orientation: S, B or G
Active		String	1	T if active, blank if deleted
Junk		String	1	J if junk mail pending, else blank
Age		Number	3	Age in years
Filler		Blank	1	Not used
Height		String	5	Height, e.g. 5'10"
Filler		Blank	1	Not used
Weight		Number	3	Weight in pounds
Filler		Blank	1	Not used
Userlevel	Number	1	Userlevel 0 to 9
Chat_OK		String	1	N for NoChat, P for PageOff
Times_Called	Number	4	Number of times called
Last_Called_Date String	8	MM-DD-YY
Last_Called_Time String	8	HH:MM:SS, 24 hour clock
Minutes_Today	Number	3	Minutes used today or last time
Filler		Blank	1	Not used
Mbx_Count	Number	3	Number of messages in mailbox
Filler		Blank	1	Not used
Mbx_Max		Number	3	Size of mailbox
Filler		Blank	1	Not used
Mult_Answer1	String	30	Answers to Multiple.1
Mult_Answer2	String	30	Answers to Multiple.2
Mult_Answer3	String	30	Answers to Multiple.3
Mult_Answer4	String	30	Answers to Multiple.4
Mult_Answer5	String	30	Answers to Multiple.5
CRLF			2	Carriage return, linefeed
Total Length		256	Bytes per record

Control-Z (EOF) characters must not be added to the end of the
MEMBERS file (as is done by some editors).  If this happens, new
users will be garbled.

A WORD TO THE WISE: ALWAYS MAKE A BACKUP BEFORE EDITING THE MEMBERS
FILE!

USERLOG File Format

The format of the USERLOG file is very similar to the MEMBERS file
format.  DLX creates each USERLOG record by writing out the MEMBERS
file record as it was when the user logged out, with some log fields
replacing some of the MEMBERS file fields.  Most of the MULTIPLE.5
answers are replaced.

Field		Type	Width	Description
-----		----	-----	-----------
Name		String	20	Name or handle
Userid		Number	5	File number
Filler		Blank	1	Not used
City		String	15	Name of user's city
Filler		Blank	1	Not used
State		String	2	P.O. abbreviation for state
Callno		String	8	Call number
Gender		String	1	M or F
Orientation	String	1	Sexual orientation: S, B or G
Crossover	String	1	X if X login, blank otherwise
Junk		String	1	J if junk mail pending, else blank
Age		Number	3	Age in years
Filler		Blank	1	Not used
Height		String	5	Height, e.g. 5'10"
Filler		Blank	1	Not used
Weight		Number	3	Weight in pounds
Filler		Blank	1	Not used
Userlevel	Number	1	Userlevel 0 to 9
Chat_OK		String	1	N for NoChat, P for PageOff
Times_Called	Number	4	Number of times called
Start Date	String	8	Date the call began
Start Time	String	8	Time the call began
Minutes_Today	Number	3	Minutes used today or last time
Filler		Blank	1	Not used
Mbx_Count	Number	3	Number of messages in mailbox
Filler		Blank	1	Not used
Line Number	Number	3	Telephone line
Filler		Blank	1	Not used
Mult_Answer1	String	30	Answers to Multiple.1
Mult_Answer2	String	30	Answers to Multiple.2
Mult_Answer3	String	30	Answers to Multiple.3
Mult_Answer4	String	30	Answers to Multiple.4
End Date	String	8	Date the call ended
End Time	String	8	Time the call ended
Baud		Number	5	Bits/second of the connection
Filler		String	9	The last nine answers of Multiple.5
CRLF			2	Carriage return, linefeed
Total Length		256	Bytes per record

Public Mail File Format

Each public mail category is stored in a pair of files: a DATA file
and an INDEX file.  The DATA file contains the messages themselves,
with each line padded with blanks (if necessary) to a fixed length of
78 characters, plus carriage return/linefeed for a total of 80
character per record.  The first four lines of each message are the
From:, To:, Date: and Subject: fields.  A blank line follows, then
the body of the message.

The INDEX file contains one line per message.  Each line of the index
file has a fixed length of 88 bytes and is formatted as follows.

Field		Type	Width	Description
-----		----	-----	-----------
File pointer	Number	10	First line of message in DATA file
Message length	Number	5	Number of lines in message
Filler		Blank	1	Not used
Deleted		String	1	D if deleted, H if held, else blank
Filler		Blank	1	Not used
Message from	String	26	Name and file number of sender
Message to	String	26	To: field
Date		String	8	Date message sent
Time		String	8	Time message sent
CRLF			2	Carriage return, linefeed
Total Length		88	Bytes per record

Control-Z (EOF) characters must not be added to the end of the DATA
and INDEX files (as is done by some editors).  If this happens, new
messages will be garbled.

ALWAYS MAKE A BACKUP BEFORE EDITING THESE FILES!

Explanation of PARAMS File

>>> New user level (0 to 9)
	The user level to be assigned to new users.  When you first
start DLX, the first user is assigned level 9 (SysOp).  All
subsequent new users get the user level set here. 

>>> Shortest password allowed
	This parameter allows you to specify the fewest number of
characters allowed for passwords.  The longer the password, the
greater the security, but on the other hand you have to type more
characters.  DLX 7.0 always requires passwords to have at least one digit
or punctuation mark in them (spaces count as punctuation).

>>> Minimum age allowed
	Does not apply in business mode.  New users below this age
are not allowed.  Also affects users re-answering their
questionnaire.

>>> Lowest line to appear in Who listing
	If you set this to one, Line 0 (the console) will not appear
in Who listings.  If you set this to zero, all lines, including Line
0, will appear in Who listings.

>>> Match default: days since last call
	Does not apply in business mode.  When doing a match, this is
the initial value for days since last call.

>>> Match default: times called
	Does not apply in business mode.  When doing a match, this is
the initial value for number of times called.  A value greater than
one is suggested because many people call once and never call back.

>>> Max entries allowed for userlog
	The userlog is the list of recent callers as shown by the U
command.  This number controls the length of that list.

>>> Normal max lines per message
	Messages are limited to this many lines.  This limit does not
apply to the SysOp or other level nine users.  This should not exceed
50 on a 32-line system.

>>> Normal max messages per mailbox
	This specifies the default size of mailboxes.  Mailbox size
limits do not apply to verification messages.  The size of a user's
mailbox can be adjusted by the SysOp with the !M command.  This
parameter should not exceed 10 on a 32-line system.

>>> Caller goes to "Expert Mode" after this many calls
	After this number of calls by a user is reached, public mail
catgegories are no longer listed automatically.

>>> Who gets closing comments
	The "closing comments" generated by the G command go to this
user.  Ordinarily it would be the SysOp, number 1, but can be
redirected to any number.

>>> Prime and non-prime hours, starting at midnight
	Access to the system can be restricted by user level during
certain hours of the day.  (There is no provision for varying this on
the weekends.)  The 24 hours of the day are divided into "prime time"
and "non-prime time".  This entry consists of 24 characters, each a P
or an N.  P stands for prime time and N stands for non-prime time.
The first character applies to midnight to one a.m. and so on thru
the last entry which applies to 11 p.m. to midnight.  Any sequence of
24 N's and P's can entered, thus defining what you consider to be
prime time.  The idea is to allow users with a high userlevel to call
at any time, but only allow low userlevel users to call during
non-prime time.

>>> Time limit for each user level in minutes
	There are ten user levels, numbered from zero to nine.  A
separate daily time limit applies to each level.  The ten numbers
here define that time limit in minutes per day.  The maximum limit
allowed is 32767, which is longer than a day and gives unlimited
time.  If the bump system is active, then these numbers are instead
the amount of Priority Access time for each level.

>>> Chat time limit in minutes
	Individual "chats" are limited to this many minutes duration.
If you don't want a separate time limit on chatting, enter 32767
here.  When a chat times out because of this limit, the users
chatting drop back to whatever they were doing before the chat - they
are not logged out unless their overall time limit has also expired.

>>> Prime time restrictions enforced
	Access can be limited during prime time.  If you wish to do
this, set this entry to TRUE otherwise set it to FALSE.

>>> Minimum user level to reply to mail
	Users with a user level less than this are not allowed to
reply to private mail sent to them.  You may wish to have a class of
users who can reply to mail but cannot originate mail.

>>> Minimum user level for prime time access
	If prime time restrictions are in effect, this will prevent
users with a user level below this number from accessing the system
during prime time.

>>> Minimum user level to re-answer questionnaire
	Users below this level cannot re-answer their questionnaire.
Mainly useful for guest accounts.

>>> Minimum user level to answer essay
	Users must be this user level or above to use the N command
to answer the essay questionnaire.

>>> Minimum user level to place an order
	Users at this level and above can use the O command to fill
out an order form.

>>> Minumum user level to originate private mail
	Users at this level and above can send private mail.  You may
want to restrict this privilege to prevent pranksters from sending
obnoxious mail.

>>> Minimum user level to originate public mail
	Users at this level and above can post public messages.  You
may wish to allow some users to post public mail only, or to post
private mail only.

>>> Minimum user level to initiate a chat
	This level is required to initiate a chat, but is not
required to be chatted.  Actually, it's a little more liberal than
this: if both parties can be chatted, and either one has a high
enough level to initiate a chat, then the chat will go through
regardless of who initiates it.

>>> Minimum user level to be chatted
	Users below this user level cannot be chatted, except by the
SysOp or other level nine users.  If someone tries to chat with them,
they will not be notified either.  Unverified new users may not be
good candidates for chatting.

>>> Minimum user level to enter Open Forum
	Users below this user level cannot enter the Open Forum group
chat ("CB") area of the Chat Lounge.

>>> Minimum user level to download an ASCII file
	Users below this level cannot download a file using ASCII
protocol.

>>> Minimum user level to download a file with XMODEM or XMODEM-1K
	Users below this level cannot download a binary file using
XMODEM or XMODEM-1K protocol.

>>> Minimum user level to upload a file
	This user level is required to upload a file, and applies to
all protocols.

>>> Minimum user level to use the X command
	The X command can be restricted by user level.  This is
useful in situations where multiple logins on the same call are not
desired.

>>> Minimum user level to appear in match or master list of users
	Users below this level do not appear in match listings, or in
business mode, in the master list of users.

>>> Minimum user level to browse
	Users below this level cannot use the B(rowse) command.

>>> Minimum user level to match or request a master list of users
	Users below this level cannot use the M command.

>>> Minimum user level to request a userlog
	Users below this level cannot use the U(serlog) command.

>>> Minimum user level to leave closing comments
	Users below this level cannot leave a closing comment,

>>> Minimum user level to search database
	Users below this level cannot search the database subsystem,
but they can see what categories are available.

>>> Verification required for new users
	If TRUE, new users are asked for their real name, address and
phone number before being allowed to do anything else.  Setting this
to FALSE allows anyone to become a new user anonymously.

>>> Who get verification requests
	If verification is in force, a message with new users' real
name and address will be sent as private mail to this user.
Ordinarily, it would be the SysOp, number 1, but it can be diverted.

>>> Who processes orders
	When a user completes an ordert form with the O command, it
is sent as mail to the user designated here.

>>> Filename for verification records
	If verification is in force, a message with new users' real
name and address is appended to this file, in addition to being sent
online to the SysOp or designated verifier.

>>> Seconds until timeout
	If nothing is received from a caller in this many seconds,
she will be logged out.  A warning is sent when only 30 seconds are
left.  This parameter should never be less than 60 seconds.

>>> Paging beep duration in deciseconds
	When callers use the T command to page the SysOp, the beep
lasts this many deciseconds (tenths of a second).  Make it longer for
a more noticeable beep set it to zero and no beeps will be heard.

>>> Allow new users during prime time
	If prime time access restrictions are in force, and this
entry is FALSE, new users will not be allowed during prime time.

>>> Is-that-correct on multiple choice questions
	If this is TRUE, after answering a multiple choice question,
the user is asked "Is that correct?" and thus can go back and redo
her answer if it's wrong.  Otherwise, there is no second chance,
which is quicker.

>>> Is-that-correct on essay questions
	If this is TRUE, after answering an essay question, the user
is asked "Is that correct?" and thus can go back and redo her answer
if it's wrong.  Otherwise, there is no second chance, which is
quicker.

>>> Lowest user number to appear in userlog
	This entry allows you to keep low numbered users out of the
userlog, if they are logging in very frequently, as the SysOp, for
example, is likely to do.  Also, users below this number are not
announced when entering or leaving Open Forum.

>>> Minimum user level to appear in userlog.
	Users below this level do not appear in the userlog.

>>> Essay questions mandatory for new users
	If this is TRUE, new users will be asked the essay questions
after they have answered the multiple choice questions in the
MULTIPLE.1 file.

>>> Automatically delete messages after reply
	If this is TRUE, when a user replies to a private message,
the original message will be deleted automatically when the reply is
sent.

>>> Modem setting command
	This is the Hayes AT command sent to the modem to prepare it
for the next call.  The default command is ATX1S0=1S2=0M0, which
means ATtention, X1 (send extended result codes), S0=1 (answer on the
first ring), S2=0 (ignore modem escape codes from the user), M0
(silence modem).  You may need to modify this for your particular
brand of modem.  Consult your modem documentation for details.

>>> Business mode
	If this is TRUE, the system will operate in business mode.
If this is FALSE, it will operate in social mode.  The difference is
that in business mode the program does not ask about age, gender,
weight, etc. and the M command simply lists all active users.

>>> Modem timing delays, in 50 msec units
	This is a sequence of six numbers, in units of 1/20th of a
second. The time a modem takes to reset will vary from brand to
brand.  The meaning of the five parameters are as follows: (1) Time
to hold down DTR to hang up the phone, (2) Time to wait after DTR
back on to send ATZ reset, (3) Time to wait after ATZ reset before
checking for OK, (4) Time to wait after modem setting command before
checking for OK, (5) Time to wait before clearing the window, and (6)
Time to wait after CONNECT before sending characters.

>>> Allow new users on modem lines
	New users are allowed to log in from a modem line only if
this parameter is TRUE.  You can toggle this parameter with the !N
command while DLX is running.  Doing so does not affect the PARAMS
file, so when DLX is rebooted, whatever it says in the PARAMS file
will take effect.

>>> Maximum number of retries when resetting modem
	DLX will try to reset a modem this many times.  After that,
it gives up.  If a call should come in on the affected line anyway,
it will be handled in the normal way.  A value of at least three is
recommended.

>>> Base address of (first) COM1 communication chip
	This is the I/O port address of the COM1 Intel 16450 or
equivalent serial communication chip, normally 16#3F8 in hexadecimal.
If you are using a DigiBoard DigiCHANNEL PC/8 board, this should be
reset to the I/O port address of the first DigiCHANNEL PC/8 port.

>>> Base address of (first) COM2 communication chip
	This is the I/O port address of the COM2 Intel 16450 or
equivalent serial communication chip, normally 16#2F8 in hexadecimal.
If you are using a DigiBoard DigiCHANNEL PC/8 board, this should be
reset to the I/O port address of the first DigiCHANNEL PC/8 port.

>>> Status port pair for DigiCHANNEL - IRQ4
	This parameter is the I/O port address of the DigiBoard
status port pair.  It actually represents the address given plus the
next higer address.  This status port pair will be used for all
interrupts chained on interrupt level 4.  If you're not using a
DigiBoard card, the value of this parameter does not matter.  If you
use the "AT" setting recommended, this number should be 16#140 in
hexadecimal.

>>> Status port pair for DigiCHANNEL - IRQ3
	This parameter is the I/O port address of the DigiBoard
status port pair.  It actually represents the address given plus the
next higer address.  This status port pair will be used for all
interrupts chained on interrupt level 3.  If you're not using a
DigiBoard card, the value of this parameter does not matter.  If you
use the "AT" setting recommended, this number should be 16#140 in
hexadecimal.

>>> Sense modem carrier using DCD/RLSD line
	If this is TRUE, DLX will pay attention to the Data Carrier
Detect line coming from each modem.  If carrier is lost, DLX will
terminate the call.  Set this to FALSE is you want DLX to ignore DCD,
for example if your BBS is not directly connected to modems but goes
through a data switch.

>>> Bump so as to keep this many lines free
	The system will try to keep this many lines open at all
times.  If this many lines are not free, the system will bump the
next person to become bumpable.  A caller is bumpable if they have
used up their priority access time, and if they are not in the middle
of an uninterruptable operation, such as writing a message or
downloading a file.  Setting this parameter to zero disables the bump
system.

>>> Upload forbidden unless this many megabytes free
	Uploads will only be allowed when there are this many free
megabytes on the library hard disk.  Does not apply to level nine
users.

>>> Download allowed only in categories that start with D
	If this is TRUE and a structured library is in use, download
will be restricted to categories that start with the letter "D".
This restriction does not apply to level nine users.

>>> Upload allowed only in categories that start with U
	If this is TRUE and a structured library is in use, uploads
will be restricted to categories that start with the letter "U".
This restriction does not apply to level nine users.

>>> Maximum characters in upload file description
	When uploading a file, the user is asked to supply a brief
description.  This description is appended as a DLX formatted line to
the MENU file.  The formatted line will normally include the name of
the file, description, size, who uploaded it and when (it is a line
in the PROMPTS file).  All this must fit on one line, so there must
be a limit to the length of the "brief description" and that limit is
defined by this line of the PARAMS file.

>>> Prime time/time limit refusals get closing comments
	When a caller is denied access either because of prime time
restrictions, or because he's used up her time limit for the day,
this parameter controls whether or not she is allowed to leave a
closing comment to the SysOp before being kicked off.

>>> Library path(s)
	This is the MS-DOS pathname at which DLX looks for the library.
You may specify an absolute or relative path name, and you may
specify a device name as well.  You may have multiple paths separated
by semicolons.  The MENU file must be in the first path.

>>> Consecutive chats between the same users allowed
	If this is FALSE, a chat may not be repeated in the same
sesssion by the same two users.  One of them must either log off or
chat with someone else before the chat can be repeated.

>>> W list of online users shown automatically at logon
	If this parameter is TRUE, the W (Who) list of users online
will be displayed automatically as part of the logon sequence.

>>> Online users are notified of logons
	If this parameter is TRUE, all online users will receive a
bulletin whenever someone logs onto the sytem.  Otherwise, these
bulletins are suppressed.

>>> Max pending bulletins/Open Forum lines per user
	Consider the situation where a caller at 300 baud is in Open
Forum with callers at 2400 baud.  The higher speed callers could get
way ahead of the slower speed caller and DLX would have to buffer up
all the messages, eventually running out of memory.  This parameter
limits the number of lines DLX will buffer for each caller.  Also,
the number of lines that an Open Forum caller can enter before the
group of lines is sent, is equal to one third of this parameter.

>>> Screen attributes: monochrome 7 112 7, color 30 110 78
	These three numbers are the IBM PC display attributes used
for normal lines, status lines and the global status line,
respectively.  The numbers 7 112 and 7 are suggested for monochrome
displays and 30 110 and 78 for color displays.  The meaning of the
IBM PC display attributes depends on what type of display adaptor
your computer has and is documented in the IBM Technical Reference
Manuals.

>>> Database path
	This is the MS-DOS pathname at which DLX looks for the database.
You may specify an absolute or relative path name, and you may
specify a device name as well.

>>> Bumpmax in minutes
	If the bump system is enabled, this is maximum length of time
that callers subject to bumpax will be able to stay on each day,
regardless of whether lines are free or not.  When this time limit is
reached, such callers are bumped off and are not allowed to log back
in until the next day.

>>> Minimum user level to be exempt from bumpmax
	Users at this level and higher have no limit to bumpable
time, if the bump system is enabled.

>>> Shortest search key allowed in database
	The minimum number of characters accepted for a database
search key.  By setting this parameter to a number greater than one,
you can make it difficult for callers to download your entire
database.

>>> Default sexual orientation (S, B or G), A = no default
	Does not apply in business mode.  If you wish to run a social
board without asking callers their sexual orientation, you may
specify a default sexual orientation here.  It will be assigned to
all callers without asking.  An A here will cause DLX to ask callers
for their sexual orientation.

>>> Chat status for new users: C=ChatOK, N=NoChat, L=LoginsOff, P=PageOff
	When a new user finishes the questionnaire, she is given this
inital chat status.  N means they must be paged before chatting, L is
like N but also suppresses login bulletins, P means they cannot be
chatted and anything else means that chats are enabled.

>>> Default number of rows per user screen (0=continuous)
	This controls page pausing intervals when the system does not
yet know the number of rows of characters on the user's terminal.
Applies to new users who havn't finished answering the questionnaire,
and to all users before they log in.  If this parameter is set to -1
then page pausing is suppressed everywhere in the BBS.

>>> Required number of characters for each verification line
	When DLX asks new users for their real name, address and
phone number, it will require a response of at least this many
characters for each line.  Prevents users from skipping it by hitting
carriage return.

>>> Use the metric system.
	Does not apply in business mode.  If TRUE, the metric system
is used for height and weight.  Height is in centimeters and weight
is in kilograms.  If FALSE, the English system is used.  Height is in
feet and inches, and weight is in pounds.

>>> Strip the parity bit from incoming text.
	If this is TRUE, the parity bit is automatically stripped
(and ignored) on incoming characters.  In this mode, DLX will work
fine no matter what parity the caller has set.  If this parameter is
FALSE, DLX will not strip parity, so the caller must have her
communication program set to 8 bits, no parity -- or she will get
nothing but garbage on her display.  The advantage of setting this
FALSE is that callers will be able to include IBM PC graphics
characters in their messages.

>>> Allow ESC in messages
	If this is FALSE, users cannot send an Escape character in
their messages, and thus cannot send messages with ANSI control
sequences in them.  If this is TRUE, then callers are allowed to send
Escape.  Some escape sequences can be used maliciously by callers
against other callers, but they cannot harm DLX itself.

>>> Host echoes incoming text
	If TRUE, DLX echoes incoming characters full-duplex style.
If FALSE, DLX does not echo incoming characters.  Generally, the
full-duplex style is preferred.  No matter how this is set,
full-duplex modems must be used.

>>> Word wrap begins at this column
	DLX does "pseudo" word-wrap.  This parameter controls the
column after which a space or tab is interpreted as a carriage
return.

>>> Number of Open Forum channels
	You can divide Open Forum into as many as 32767 channels.
This parameter controls the number of channels.

>>> Maximum number of login attempts allowed
	This controls how many failed login attempts are allowed
before DLX hangs up.  The best number is a compromise between the
need to allow for typos and line noise by legitimate users, and the
need to protect against someone breaking into the system by guessing
a password.

>>> Level 9s on line 0 only
	If this is TRUE, level 9 users users can only login from the
keyboard.  If they call in remotely, they will be logged in at level
8.  This is not a permanent change, it's just for that call.  If this
parameter is FALSE, remote logins by level 9 users is allowed.

>>> Log file for downloads
	Each time a file is downloaded, a line of information about
the download is written to this file.  The format of the line is
taken from the PROMPTS file.  If the log filename is blank, no log
file is written.  The log file is cleared each time DLX starts up.

>>> Log file for uploads
	Each time a file is uploaded, a line of information about the
upload is written to this file.  The format of the line is taken from
the PROMPTS file.  If the log filename is blank, no log file is
written.  The log file is cleared each time DLX starts up.  Log file
for Open Forum
	Each line typed in Open Forum is logged to this file, which
>>> is kept open all the time DLX is running.  If the log filename is
blank, no log file is written.  The log file is cleared each time DLX
starts up.

>>> Display unused lines in Who listing
	If this is TRUE, the W(ho) command will list all lines,
whether in user or not.  If it is FALSE, only the lines actually in
use are shown.

>>> Running on an IBM PS/2
	Set this to TRUE if the BBS is runing on an IBM PS/2 or other
MCA bus computer.  For all other computers, this should be set to
FALSE.

>>> /P messages allowed to NoChat users
	When this is TRUE, users who are not in Open Forum and who
have set their chat status to NoChat, can receive /P messages from
users in Open Forum.

>>> Minimum user level to receive junk mail
	Callers whose user level is below this will not receive junk
mail messages.

>>> Moderators can delete mail and browse anonymous callers
	Some SysOps want to give these privileges to moderators (for
their own pubs), and some want to reserve them for Level 9s.  This
parameter lets you choose.

Explanation of PUBMAIL File

>>> Name of category
	Public mail can be divided into categories (up to fifty
altogether).  This field gives the name of the category.  It can be
up to 24 characters long.

>>> Letter
	Each category is accessed by a single letter.  This letter
can be any alphabetic or numeric character or any of the special
characters # & @ ! % ( ) - { } ` _ ' or $.

>>> File number of moderator or 0 for none
	Each category can have one user designated as moderator.
This field contains either the file number of the moderator for this
category or 0 for no moderator.  Moderators have special privileges
in their category, one of which is the ability to delete any message.

>>> Hold new messages for moderator
	If this field is TRUE, all new messages entered in this
category will be marked as held and will not be viewable by ordinary
users.  Either the SysOp or the moderator must unhold the message
before it can be seen.  If this field is FALSE, messages are visible
as soon as they are sent.

>>> Questionnaire or 0 for none
	A multiple choice questionnaire can be attached to a public
mail category.  This field either contains the number of the
questionnaire (2 thru 5) or 0 for if no questionnaire is desired.
The coressponding MULTIPLE.2,3,4 or 5 questionnaire will be asked of
callers who access this category.

>>> Questionnaire must be answered to read board
	If a questionnaire is attached to the board and this field is
TRUE, then callers refusing to answer the questionnaire will not be
allowed to read the board.  If the field is FALSE, then they will be
asked, but not required, to answer the questionnaire.

>>> Anonymous
	If the field is TRUE, an anonymous category will be created.
In an anonymous category, the From: and Date: fields are not shown in
messages and browsing and direct replies are not permitted when
reading the public mail.

>>> Gender M/F or B for both
	Access may be limited to either just men or just women by
specifying a gender.  B will allow both.

>>> Sexual orientation S/B/G or A for any
	Access may be limited by sexual orientation.  A allows any
sexual orientation.

>>> Minimum user level for read access
	A caller below this user level cannot access this board, and
in fact will not even know that it's there.

>>> Minimum user level for write access
	A caller below this level can read the messages here, but
cannot enter a new one.

>>> Maximum user level for access
	A caller above this level cannot access this board, except
level 9s.

>>> Minimum age for access
	Callers younger than this age cannot access or see this
category.

>>> Maximum age for access
	Callers older than this age cannot access or see this
category 
