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 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< &?< &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