home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 2 BBS
/
02-BBS.zip
/
o9democ.zip
/
SYSOPMAN.DOC
< prev
next >
Wrap
Text File
|
1995-11-07
|
1MB
|
20,500 lines
TABLE OF CONTENTS
Program Features 1
SYSTEM CAPACITIES 1
MESSAGING FEATURES 1
FILES 2
OUTSIDE FEATURES (DOORS) 3
CHAT FEATURES 3
NETWORKING FEATURES 4
DATABASE FEATURES 4
MAINTENANCE FEATURES 5
SUBSCRIBER BILLING FEATURES 5
SECURITY FEATURES 6
Running a Successful BBS 8
Program License Agreement 12
License 12
Copyright 12
Restrictions 12
Limited Warranty 12
General Terms 13
U.S. Government Restricted Rights 13
Hardware Requirements 14
Basic Hardware Requirements 14
LAN Hardware Requirements 15
Installation 16
Hardware Setup 16
Serial Ports Setup 16
Modems Setup 17
Direct Connection via Null Modem 18
Software Setup 19
Selecting a Disk Partition 19
Files List 19
Executable Programs - Standard Version 20
Executable Files - Client/Server Version 20
BBS Database Files 20
Documentation Files 21
Menus, Prompts and Help Messages 21
Other Support Files 22
Program Start-up 22
Customizing your System 25
Defining Access Levels 27
Assigning Serial Ports 28
Modem Control Strings 32
Setting up Sub-Boards 37
Basic System Parameters 43
Extended System Parameters 55
Setting Time Limits 64
Subscriber Parameters 65
User Classes and Special Interest Groups 71
Customizing Menus, Help Messages and Prompts 73
ANSI Graphic Colors 84
Foreign Language Considerations 87
Creating and Maintaining Shareware Libraries 88
Defining Paths 88
Assigning Directories to Sub-boards 90
The Download Database 93
Importing File Descriptions from ASCII Text Files 94
Importing Text Files into Bulletron Messages 95
Private Files 95
File Attachments 97
FAXback Feature Setup 99
Matchmaker Questionnaires 103
Multiple Choice Questionnaires 103
Essay Questionnaires 105
Combined Questionnaires 106
Order Entry and Verify Questionnaires 106
Verify Questionnaires 109
Order and VERIFYQU Export Database 110
Outside Features (Doors) 111
Direct Connect Features 111
Telephone Dialout Features 112
DOS Program Features 113
DORINFOx.DEF Interface 114
DOOR.SYS Interface 115
DOS Program with FOSSIL Support Features 118
OS/2 Program Features 119
DOS Prompt Feature 120
Setting up Outside Features 121
Setting up Direct Connect Outside Features 123
Setting up Telephone Dialout Outside Features 127
Setting up DOS Program Outside Features 127
Setting up DOS Program with FOSSIL Support Features 131
Setting up OS/2 Program Outside Features 131
Setting up a DOS Shell 132
Setting up Midnight Maintenance 133
Application Specific Database Setup 133
Artificial Intelligence Features 139
LAN Operation 146
Logging in over the LAN 146
Distributing Processing over a LAN 148
Starting up the Client/Server Version 149
Stopping the Client/Server Version 151
Running Client/Server without a LAN 152
Wide Area Networking 152
Bulletnet 152
Adding, Deleting and Changing Nodes 154
Setting Retry Count and Time Between Retries 161
Sample Network Installation 161
Echo Conferences 162
Network Chat 163
Sending Files over the Network 164
FIDOnet 164
FIDO User Names 164
Setting up Your FIDO Address 166
Designating FIDO Echo Conferences 166
FIDO Networking Account(s) 167
Network Node Table Setup (Dialing and Routing) 167
FIDO NOVELIST Processing 170
Dialing and Receiving FIDO Calls (Mailer Function) 171
Compressing and Decompressing FIDO Packets 172
Sample FIDO Setup 174
Internet 176
Installation of TCPIP/2 Drivers 176
PING Service 179
HOST Service 179
FINGER Service 180
Outgoing FINGER Service 180
Incoming FINGER Service 180
TELNET Service 181
Outgoing TELNET Service 181
Incoming TELNET Service 181
Using Terminal Servers 181
Internet Mail 182
Usenet News 182
FTP Service 182
Internet Relay Chat 182
Worldwide Web Service 182
E-Mail Gateway 182
Exporting to and Importing from Other Networks 182
FROMORA File Creation Utility 183
TOORA Message Insertion Utility 184
Daily Operation 186
The Control Window 186
Special Control Window Hot-Keys 190
Line Usage Statistics 191
The System Log File 191
User and File Management 192
Bulletins 198
Automatic Callback Validation 199
Special SYSOP Main Commands 201
"WC DELETE" 201
"T" - Tutorial Command 201
"DD filename" (Download to a diskette) 202
"UD filename" (Upload from a diskette) 202
"E MASSMAIL" 203
"E NEWUSERS" 203
"%" - Purge messages/accounts 203
"PXR" - Refresh Vdisk and Prompts 203
"Y" - Display Control Window Remotely 204
"PXC" - Changing the System Counters 204
Special SYSOP Subcommands 205
"E@" - Make Message from Disk File 205
Special Post-Read Commands 205
Assistant SYSOP Privileges 208
SIG-op Privileges 214
Feature Operators 214
Backing up Your Data 214
On-line Automatic Backup 215
Restoring a Backup 216
Off-line Full Backup 217
Utility Programs 218
BBUTIL2 - Miscellaneous Utility Functions and Reports 218
Subscriber Report 219
Create a File of User Info 220
Report of Downloaded Files 220
Unload BBSMSGS.DAT to Individual Files/Message 220
Load BBSMSGS.DAT from Individual Message Files 220
Load Messages/Accounts from XXyymmdd.BAK 220
Mass Access Level Change 221
Tally System Passwords 221
Text Branching Utilities 222
Analyze Log Data 222
Reset Fields in User Records 222
Create File of User Names and Addresses 223
Delete all messages from a specific board 223
Load Users/Messages from Text Files 223
Move Messages to a New Board 224
Tally Matchmaker Responses 224
Load *.UTL to Help Files 224
Preload PathID-Filename-Description 225
View Parameter File Keys and Delete Records 225
Delete Messages by brdnnnnn 225
Delete Users Sequentially 225
Delete Messages Sequentially 226
Move All Files in a Path 226
Set Access Level for All Files 226
Delete File Descrs. by Path 226
Delete Individual User 226
Save *.UTL Messages 226
Export File Descriptions 227
REBUILD2 - Index File Creation 227
COMPACT2 - Data File Compaction 227
Repairing Damaged Data Files by Hand 228
Fixed Record Length Format 230
Variable Record Length Format 230
SCANLINX - File Structure Analysis 231
SEDIT Example 231
Technical Support 234
Problem Reporting 234
Common Questions New SYSOPs Ask 235
Common Ways Users Try to Hack the System 240
Phony Subscriber Status 240
Forged Message Signature 240
Appendix A - Modem Setup 217
Fundamental Concepts 217
Automatic Speed Buffering and Flow Control 217
Delay After Connection 218
Hayes Smartmodem 2400 Setup 219
Hayes V Series 9600 Baud Modem Settings 219
Hayes Optima Modem Settings 220
Logicode Quicktel Modem Settings 221
U.S. Robotics Courier Modem Settings 223
U.S. Robotics Sportster Modem Settings 225
Intel SatisFAXtion Modem Settings 227
Zoom 14.4 VFX Modem Settings 228
Zoom 28.8 VFX Modem Settings 229
Prometheus Linelink 144 Modem Settings 231
Practical Peripherals 14400FXMT and PM144MT II Modem Settings 232
Appendix B - National Bureau of Standards Time Setting 235
Appendix C - Bulletron Errors and Messages 236
Appendix D - Operating System Errors 245
C-Tree Error Codes 245
C Runtime Error Codes 251
Serial Port Driver Error Codes 253
OS/2 System Error Codes 256
Appendix E - Command Summary 277
Appendix F - Improving Performance using a RAM Drive 289
Appendix G - Recommended Extended Serial Card Setups 291
Digiboard PC/8 Recommended Installation 291
Digiboard PC/xi Recommended Installation 294
Digiboard COM/xi Recommended Installation 295
Digiboard C/X Recommended Installation 295
Digiboard PC/Xem Recommended Installation 296
1. Program Features
Bulletron contains some unique features not found in other BBS software systems, and it has
capacities beyond most microcomputer based systems. Here is just a few of the features:
SYSTEM CAPACITIES
No limit to the number of user accounts.
No limit to the number of personal and public messages.
No limit to the number of files that can be placed on-line in on-line libraries in as many as
34,965 distinct file directories.
Can service 2,000 phone lines with one PC; 446,000 phone lines per installation using LAN
technology.
Can operate up to 4 GBaud; limited only by hardware capabilities.
Provides menuing for up to 35,000 "door" programs; no limit to the number of concurrent users
per "door".
Extremely rapid access to any information in the system is provided through a balanced binary
tree filing system; no more than three disk operations required to access any information in
the system.
Up to 999 sub-boards can be defined each having its own messages, file directories, "doors",
access levels and rules.
Up to 999 Special Interest Group (SIGs) sub-boards can be defined, with private access to
messages and files for only members of the SIG.
Over 32,000 access levels for each account or command.
Full support for ANSI and RIP color graphics, with auto-sensing is provided.
LAN connections supporting the "named pipes" interface can be used for logging on to allow
BULLETRON to be used as an intra-office electronic mail and news service with no modems,
serial ports or phone lines.
MESSAGING FEATURES
Individual messages are free-form text, up to 9,000 characters long, no line limit, and can have
blank lines embedded.
All personal mail is automatically placed in one section so that it can be found and reread
quickly; no need to go to different message areas looking for mail.
A single, two-letter command displays all new messages and files since last logon in all
message areas, eliminating the need for off-line mail reader programs.
Comments (conferencing) on all messages encourages discussion and keeps similar subjects
joined. When a 9000 character message is filled with comments, the system automatically
starts a new message and links the messages together so they appear to be a continuous
message. No more annoying "message threads" to follow.
Only the disk space required for the message is used, not the full 9,000 characters, so that disk
space and I/O overhead are optimized.
Personal mail messages can be marked to notify the sender when the receiver has read the
message.
Users can automatically generate "carbon copies" to groups of users. The size of the groups can
be limited by the system operator, with no limit on carbon copies for the system operator.
The system operator can "massmail" large groups of users, selected by access level or special
interest group.
Public messages and private mail can be made anonymous.
Automatic poll taker messages can tally users' responses.
Order entry facility processes order forms to have a "mail order" store by computer, with
built-in VISA, Mastercard, American Express and Discover card validity checking.
No limit on the number of private messages per user.
Access to messages can be restricted by access level or Special Interest Group (SIG).
FILES
XMODEM, XMODEM-CRC, XMODEM-1K, YMODEM, YMODEM-G, ZMODEM-16,
ZMODEM-32, MODEM7, TELINK, SEALINK and ASCII file transfers.
A single, two-letter command displays all new files since last logon in all directories,
eliminating the need for off-line mail reader programs.
On-line viewing of ASCII files, GIF pictures and ZIP file contents by users; on-line string
searching of ASCII text files.
FAXback feature allows users to have graphic documents sent to any FAX machine or FAX
modem.
Wildcards can be used with batch file transfer protocols, as in "DZ *.*"; tagging is provided
with wildcard batches to allow more restrictive selection.
File Descriptions are free-form text, up to 9,000 characters long, and can contain embedded
blank lines.
Uploads can automatically update the download database and send a message notifying the
system operator of the uploaded file.
DOS batch and OS/2 REXX procedures can be set up to perform automatic virus scanning for
all uploaded files, including files received through networking.
Access to file directories can be restricted by access level and/or Special Interest Group (SIG).
Access to individual files can be restricted by access level, and password protection, and files
can be made "private" to specific user accounts.
Funds can be automatically deducted from subscriber accounts each time that certain files are
downloaded to facilitate licensing for distribution of commercial software.
Separate access levels can be defined for uploading, downloading and FAXback, per sub-board
or SIG.
Files can be "attached" to other files to force downloading complete sets, without having to ZIP
them into redundant packages. File attachments can be nested recursively.
A downloads per upload quota can be enforced for the entire system, and disabled for specific
file directories.
Time billing can be disabled for specific file directories to allow "free trial" downloads.
OUTSIDE FEATURES (DOORS)
Six different "door" interfaces are provided, including: OS/2 programs, DOS programs with
and without FOSSIL drivers, DORINFOx.DEF, DOOR.SYS, dial out to another computer, and
direct connection to another computer using a null modem cable.
Single character menu selection allow up to 35 different "doors" for each sub-board, with up to
999 sub-boards for the entire system.
35 "doors" can be made global to all sub-boards.
Access to each "door" can be restricted by access level or Special Interest Group (SIG).
Per minute surcharges can be automatically billed to subscriber accounts for certain "doors".
CHAT FEATURES
Public chat allows any number of users to converse online in line by line mode.
Private chat allows two users to converse in character by character mode.
"Group" and "channel" commands allow groups of people to be in a chat conference without
being "heard" by other users who are also online.
"Secret" chat channels can be set up for users for special private conversations.
Network chat allows multiple systems to network together in public chat; users in chat on one
system can chat with users on a remote system simultaneously.
"Chat macros" can be defined by the system operator to allow users to generate complex
messages with just a few keystrokes.
Users can access biographical data about other users from within private or public chat.
Users can make themselves "invisible" to one another to avoid chat solicitations while reading
mail and messages.
Users can be separated into 223 different classes which are invisible to one another.
NETWORKING FEATURES
Proprietary BULLETNET(R) technology provides for high efficiency wide area networking
between BULLETRON(R) systems.
BULLETNET allows messages and files to be sent between other BULLETRON systems
automatically.
Echo conferencing allows users on many systems to read, and comment on, the same message
at the same time, with automatic message quoting to preserve continuity of thought.
Networking can occur at any time, even while other users are online. With BULLETRON, the
system does not have to "come down" to transmit or receive network messages and files, as
with most BBS products.
Integrated interfaces to Internet, FIDOnet (FTS-1 through FTS-7) and ORAnet are provided.
DATABASE FEATURES
The system can maintain a 3 line personal description or real name and address of each user.
Built-in high speed database searching over user accounts, messages and file descriptions.
Matchmaker database can attach questionnaires to user accounts and messages. Questionnaires
can be attached to user accounts to implement a technical support human resource database, or
an on-line dating service. Questionnaires can be attached to messages to implement a real estate
or auto finder database.
Different questionnaires can be used for each of up to 999 sub-boards - multiple choice, essay
and combined.
Users can search the matchmaker database to display specific records based on specified criteria
or list all entries by percentage match to specified criteria.
An operator definable random access database is provided for any application. Six keys may be
defined. Import and export facilities for data from dBase, SQL, etc. using CDF (comma
delimited fields) format. Fast random accesses on direct keys using balanced binary trees.
Built-in artificial intelligence programming language for implementing on-line "expert" systems
or an "adventure" game.
Access to the matchmaker database can be restricted by access level or Special Interest Group
(SIG).
MAINTENANCE FEATURES
All menus, help messages, and prompts are changeable by the system operator for complete
customization or for foreign language systems.
Multiple system operator accounts or assistant operator accounts with less access can be used to
manage the system.
Automatic deletion of inactive accounts, messages and personal files.
Installation commands let the system operator change parameters to customize the software to
their users and needs while the system is ONLINE. All setup functions can be performed
remotely.
System operator can easily add, delete, rename, move, or copy files between directories with the
file management functions remotely, on-line!
System operator commands to modify or delete accounts or messages can be done remotely,
on-line.
Mini-terminal mode facilitates setup of modems' nonvolatile RAM, and allows the system
operator to dial out to another BBS or back in to his own BBS to test the phone line or modem
while Bulletron continues to run and answer the other lines.
Multiple initial logon system passwords can be defined to preset access levels and SIGs, and to
tally the number of callers from a specific marketing source.
SUBSCRIBER BILLING FEATURES
Subscriber facility allows charging by cents, minutes, or date, and provides for both prime and
nonprime rates.
Access levels are automatically adjusted for each user during logon based on whether or not the
account has funds remaining, and based on an expiration date set for the account.
Combined billing methods can be used to allow a high access level if an account has funds
remaining, an intermediate access level if no funds remain but an expiration date has not been
reached, or a low access level if no funds remain and the account has expired.
Surcharges can be applied per minute to doors, or per download to individual files, with
automatic account billing.
Warning messages are automatically generated to users during logon if funds are low or
expiration date is approaching.
Different time limits per session and per day can be set up for access to the system, access to
download features, or access to chat features.
Multiple "visitor" accounts can be set up to allow new users a free trial of the system without
setting up an account.
Time billing is automatically disabled during uploading, and can be disabled for downloading
from certain file directories.
Different billing rates can be assigned to different phone lines to help pay for special, high
performance modem equipment.
Access to certain phone lines can be restricted to subscribers only or users having a certain
minimum access level.
SECURITY FEATURES
Access to individual files and entire file directories can be automatically restricted to certain
individuals or groups of individuals by password.
A remote system operator can view current activity in any session.
An operator at the local console can monitor up to ten sessions simultaneously, using windows.
Fifteen character secondary passwords are provided for system operator accounts provide extra
security.
Remote new account setup can be disabled and accounts can be preloaded from an external file
such as registration numbers.
Built-in callback validation allows users to increase their access level by verifying their phone
number.
Built-in callback validation of new accounts can be restricted to allow only local calls on certain
phone lines.
Remote new user account setup can be blocked on certain phone lines, such as those connected
to real modems rather than local terminals in the office, at the system operator's discretion.
2. Running a Successful BBS
A "successful BBS" is one that has a significant number of participating users. Quantitative ways
to measure activity would be to count the number of different callers, the number of new messages and
uploads, and the amount of time used every day. A count of calls is not useful since callers frequently
log on several times per day to check for private mail then log off without entering public messages,
uploading files, or participating. A BBS can have a large number of users and NOT be successful if
they are mostly onetime callers or "voyeurs". (A "voyeur" is one that logs on only for private mail or to
see what is happening, but does not participate.)
Most non-business BBS' are started by a BBS caller who feels that he can do a better job at
running a BBS than the board he is calling. So the new system operator, or SYSOP, gets some
software (usually the software he first called and is therefore most familiar with the commands), shares
his only computer with the BBS, sets up 999 message areas and 10 telephone lines, then waits for 500
callers per day to dial in. A BBS, even a free one, is a business and requires the same kind of
preplanning.
Before you even bring a BBS online, first decide what your main emphasis will be on it. Is it
going to be mostly an upload/download board, a chat board, message exchange, adult/social board, or
technical forum? Next, determine what subject matter you want to specialize. Some SYSOPs try to be
all things to all people. They set up the maximum number of sub-boards and have boards for
everything from auto repair to zebra raising. A new user logs on, is overwhelmed by the number of
possible sub-boards/conferences, and logs off without participating. A better way would be to define
only 5 or 6 general public boards and set the other sub-boards as SIGs (Special Interest Groups) giving
users only access to those SIGs which they request. This can be done manually by putting up a public
message telling users that other SIGs are available if they are interested, or using an automatic SIG
method. Bulletron software, for example, will allow an initial system password for new users setting
up an account. This password then predefines what SIGs a user gets. If you put an advertisement in
Cooking Magazine with the system password COOK, then when a new user sets up an account and
uses COOK, he would automatically get the FOOD SIG. What subject matter you emphasize may also
depend on the size of the area you live in and the number of other BBS' in your area. If you are in a
small town of 3,000 people, it is unlikely that you will get much activity on even 25 sub-boards. If you
are in an area with a dozen BBS' emphasizing IBM download files, you may want to start a BBS for
MAC users.
You should have a dedicated computer for the BBS, not one shared with your other work. If
callers get ring-noanswer more than a couple of times, they will stop calling. The price of computers
has come down enough to allow almost anyone to afford an additional inexpensive PC. It is important
to be dependable. If you need to take the BBS down for maintenance for a short time, take the phones
offhook. That way callers know you are up and running but temporarily unavailable.
Start with only one or two telephone lines, and add telephone lines as usage increases. A store
that has 20 customers walking around would probably appear popular and attract even more customers.
Put those same 20 customers into a large mall, however, and the mall would appear empty. Likewise if
you have 20 active users with one or two telephone lines, the BBS would probably appear busy. But 20
users on 6 to 10 telephone lines would not attract additional users. A good rule-of-thumb is that you
should add a telephone line when you get 50 calls per line. If you are getting 50 to 100 calls per day on
a regular basis, you should have two telephone lines. When you regularly have more than 100 calls per
day, it is time to add a third telephone line. An occasional busy signal is OK. It means your system is
popular and other callers are going to want to be online. If users can always get online and they seldom
find other users online also, they will think the board is dull and stop calling. If it is always busy, they
may stop trying to call. It is not uncommon to find a board busy during prime time (usually 6 PM to
midnight), so don't plan the number of lines for the maximum possible callers unless you are a large
business charging for time that users are online.
Now that you have your system set up, how do you get callers? Start by putting messages on
other BBS' in your area announcing your new system. Most SYSOPs do not object to such
announcements unless they feel you are taking their users. If the subject matter of your board is
different, then there should be no competition. Next, run small advertisements or submit press release
announcements to the free throw away newspapers or student newspapers. It is best to track where you
are getting most of your new callers so you can adjust any future advertising. The initial system
password facility of Bulletron will tally how many callers use a particular password. This way you can
tally how many new users have called from your ad in Cooking Magazine.
The time of year that you do your promotion is important. BBS activity will be highest in
October, November, February, and march. Users are usually too busy with the holidays during
December, and they are outside, away from their computer or on vacation during the summer.
To get activity on a BBS, it may be necessary to "prime the pump". This means that the SYSOP
must place messages on the system that will encourage other messages. It is sometimes helpful to have
friends or synonym accounts put on messages so that it and does not appear that only the SYSOP can
enter messages. Most users want to read private messages, "chat" with other users, and download files.
If a system has 1000 user accounts and 30 to 50 of those actively participate, that would be a busy
system. So do not be surprised if few users enter public messages or upload new files. You may
have to "put on a show" for a while. Bulletron software provides a feature called "comments" which
allows users to put a comment directly on to a message rather than running down a thread of messages.
This makes discussion and activity easier. Adult-oriented bulletin boards may have another problem to
overcome. Since normally 80%-90% of the callers will be males, the women will be deluged with
private messages or men may be disappointed that there are so few women on a system. Since it is
common for new callers to log on, look around, and not call back, a "visitor" feature is available on
Bulletron to allow a prospective new user to check out the board without wasting the time to set up a
new account. A "visitor" can then set up an account later if he decides to become active. This keeps
the board free from a number of onetime callers. Bulletron shows the number of calls, callers, visitors,
new users, time online, new messages, and new uploads for the convenient system management. It
is strongly recommended that SYSOPs verify new callers. Even if you are not running an
adult-oriented BBS, you should know your callers. Call their telephone number and verify the name,
determine whether the caller is male or female, or a minor. Many systems have anonymous accounts or
callers may use phoney names. If a system verifies the users, it is less likely to have illegal or
inappropriate material in messages and copyrighted files as uploads. Problem users or "hackers" are
not uncommon. A problem user may be one that uses foul language or enters abusive messages.
Hackers try to break into subscribers' accounts, crash the software, tie up the telephone lines, or in other
ways disable the system, if possible. Verifying accounts minimizes these problems. Rather than
deleting the account of a problem user, it is sometimes more effective to change the user's password and
force them to set up multiple accounts. The extra time required to set up accounts usually discourages
most hackers after a while. Although BULLETRON does provide callback validation that can give
users access on their first call, keep in mind that this can not prevent children from accessing an
adult-only service.
It is possible to have too many of the wrong type of users. For example, a board that is dedicated
to camera enthusiasts may find the telephone lines frequently tied up with "hacker kids". To prevent
that, the initial system password may be used to only allow new accounts from those that know a
specific password and not allow all callers to get online.
Unless you are independently wealthy and have the altruism of a saint, you will eventually want
the system to at least pay for the telephone lines if not the hardware also. Start by running a free system
until you have an adequate number of callers. Get your callers "hooked" on your system, then suggest
that you can add more telephone lines or features if the system paid for itself. Decide whether you want
to charge by date, by minutes online, or by dollars per hour. Which method you use will be determined
by what billing methods your software offers, how many subscriber BBS' are in your area, and how
popular your system has become. If there are many subscriber based systems in your area charging by
date, you may need to charge by date to be competitive. Expiration date systems commonly charge
about $10 per month or $25 for 6 months. If you charge by minutes or dollars, $1 or $2 per hour is
common. Most of the successful BULLETRON subscriber systems charge by minutes online at a rate
of about $1 per hour online, double during evening prime time hours.
Once you decide to charge users, do not expect all users to rush sending in their checks. You
may lose some users, and some users may choose to remain as nonsubscribers. Start by limiting certain
features, telephone lines, or times of day to subscribers only. With BULLETRON, for example, putting
time or money or a future expiration date into a user's account automatically raises their access level.
This access level then allows only them on certain telephone lines or gives them access to certain
popular features such as chat or matchmaking. A system may have 9 telephone lines, for example, 3 of
which would be for subscribers or nonsubscribers, while the other 6 lines are for subscribers only. If a
caller wants easy access to the system, he will need to subscribe. Some systems will restrict
nonsubscribers to nonprime time if there are enough subscribers to keep all lines busy during prime
time. You can also change the amount of time they can be in chat, in downloading, or total time online
depending on their access level, and their access level can be determined by how much they pay. If you
have some lines dedicated to 28,800 baud modems, you may want to charge an additional surcharge for
use of those lines to pay for the expensive modems. Bulletron provides a "billing factor" per line to
charge more per hour for the use of certain lines. New users normally get a free trial period of a couple
of hours to a week to see if they want to subscribe. Verifying new users' telephone numbers
discourages people from setting up multiple accounts to get the free trial period without subscribing. If
it is possible for you to process Mastercharge or VISA cards, new users who like the system can
provide charge information to join immediately rather than waiting to write and mail in a check.
Systems that accept credit cards usually get more subscribers.
Users tend to spend a lot of time (and money) in the chat feature. This allows users online to
communicate in real time. BULLETRON has a feature which allows subscribers to "bring"
nonsubscribers into chat who could not normally use that command. This gives subscribers a feeling of
privilege and teases nonsubscribers into joining. Adult-oriented systems may want to give free
accounts to female users who encourage male nonsubscribers by inviting them into chat. To promote
message entry and uploads, BULLETRON does not charge minutes or dollars for time spent in those
commands.
When a user's account is about to expire, BULLETRON sends a user reminders starting at two
weeks before the expiration date and when two hours of money or time remain in his account. This
allows the user plenty of time to send in another check. After his account expires, the access level of a
user may be reduced or the system may prevent access to the system completely.
As your system becomes popular, you will need to know how many telephone lines are actually
being used, how often all the lines are busy, and what hours are the busiest. BULLETRON provides
line usage statistics. It tells how many minutes of each line is in use so you can differentiate time used
on subscriber-only lines versus the nonsubscriber-also lines. It shows how many minutes one line is in
use, two lines are in use, etc., so that you know how many minutes all lines are in use. If you find that
all lines were in use 240 minutes per day, you know that the potential for a busy signal is up to 4 hours
and you may decide to add another telephone line. The minutes of usage per hour for every hour per
day will tell you what the busiest hours are so you can avoid taking the system down for maintenance
then or to limit nonsubscribers during those hours.
3. Program License Agreement
3.1.License
IDK Computer Systems, Inc. ("IDK") grants a license to the individual and/or corporate licensee
to use the program product (the set of computer programs and machine readable and printed materials
supplied with this package) for a term beginning on the day you accept this Agreement and continuing
until termination. This agreement is automatically terminated if you violate any of the terms and
conditions of this Agreement. You may terminate this agreement at any time by destroying all copies,
modifications, updates, and original materials supplied with the Program Product. IDK grants to you
the right to use one copy of the enclosed software program on a single terminal connected to a single
computer (i.e., with a single CPU). You may not network this software on a Network other than an
approved BULLETRON Network or otherwise use it on more than one (1) computer or computer
terminal at the same time.
3.2.Copyright
The software is owned by IDK and is protected by United States copyright laws and international
treaty provisions. Therefore, you must treat the software like any other copyrighted material (e.g., a
book or musical recording) except that you may either (a) make a copy of the software solely for
backup or archival purposes, or (b) transfer the software to a single hard disk provided you keep the
original solely for backup or archival purposes. You may not copy the written materials accompanying
the software. The copyright notice must be maintained and displayed as provided in the program.
3.3.Restrictions
You may not use, copy, modify, merge, rent, lease, or transfer the program product or any portion
or modification thereof in whole or in part, except as expressly provided in this agreement. You may
not reverse engineer, decompile, or disassemble the software. You may not use this Software, in any
manner, in violation of applicable Federal, State or Local Laws.
3.4.Limited Warranty
IDK warrants the distribution diskette(s) upon which the program(s) are provided are free from
defects, in materials and workmanship, under normal use, for a period of thirty (30) days from the
original date of purchase, to the original purchaser. IDK will issue NO refunds once the diskette
envelope is opened. Returns, if authorized by IDK, will be subject to a 10% restocking fee. For breach
of any written or implied warranty on this product, the consumer is limited to the replacement of the
defective diskette(s).
NOTE: SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF
INCIDENTAL OR CONSEQUENTIAL DAMAGES SO THE ABOVE LIMITATION OR
EXCLUSION MAY NOT APPLY TO YOU.
IDK MAKES NO OTHER WARRANTY OF ANY KIND, EITHER EXPRESSED OR
IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND NO WARRANTY
THAT THE PROGRAM PRODUCT IS FREE OF ERRORS. IDK, its agents or employees shall not
be liable or responsible for the manner in which the Software is used by the end user, or be liable for
the cost of any repair or correction required for defective IDK program product material except as
stated in this paragraph.
NO LIABILITY FOR CONSEQUENTIAL DAMAGES. In no event shall IDK or its suppliers
be liable for any damages whatsoever (including, without limitation, damages for loss of business
profits, business interruption, loss of business information, or other pecuniary loss) arising out of the
use of or inability to use this product, even if IDK has been advised of the possibility of such damages.
3.5.General Terms
This is the only agreement between user and IDK regarding this program product and it may be
modified only by a written agreement between those parties. This agreement cannot be modified by
purchase orders, advertising, or other representation by any person. If any provision of this agreement
shall be held invalid, illegal, or unenforceable, then the validity, legality, and enforceability of the
remaining provisions shall not be affected or impaired thereby. This agreement shall be governed by
the laws of the State of New York. By opening or keeping the diskette package, you acknowledge that
you have read this agreement, understand it, and agree to be bound by its terms and conditions.
3.6.U.S. Government Restricted Rights
The software and documentation are provided with restricted rights. Use, duplication, or
disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(l)(ii) of The
Rights in Technical Data and Computer Software clause at 52.227-7013. Contractor/manufacturer is
IDK Computer Systems, Inc., 129 Cambridge Street, Syracuse, New York 13210-2205.
4. Hardware Requirements
4.1.Basic Hardware Requirements
The minimum hardware configuration that can run Bulletron for OS/2 is largely determined by
the minimum hardware required to run OS/2 at all. A small system, having one phone line and a local
console session would require:
an IBM PC compatible 80386, 80486 or Pentium based computer, with
at least 8 Mbytes of memory;
at least 60 Mbytes of hard disk;
a color or black and white VGA display system; and
a pointing device such as a mouse or trackball.
In addition to these basic requirements for running the OS/2 operating system, a single phone line
BBS would also require:
a serial I/O port (a second serial I/O port if the mouse or trackball is connected to a serial I/O
port); and
a Hayes compatible modem.
The program and the data structures that BULLETRON builds during its initialization occupy
about 3 Mbytes of RAM. OS/2 version 2.1 can run a single phone line BULLETRON in 8 Mbytes of
RAM by swapping its graphical user interface out to disk. If you want to use the BBS' computer for
other programs while BULLETRON is running, then you should install 16 Mbytes of RAM. Each
additional phone line requires about 128 Kbytes of RAM. A large system, with 100 phone lines, would
require about 20 Mbytes of RAM. If your system grows beyond 16 Mbytes of RAM, remember that an
ISA bus only supports 16 Mbytes of RAM. To access memory beyond 16 Mbytes, you must be using
MicroChannel, EISA or PCI.
The basic files required to run BULLETRON occupy about 5 Mbytes of hard disk space. This
disk space requirement grows slowly as the number of user accounts, messages, and downloadable files
for your BBS increases. Each user account adds 1 Kbyte. Each message will add an average of about 3
Kbytes. A large system, with 10,000 user accounts and 20,000 messages would increase the disk space
requirement from about 5 Mbytes to about 70 Mbytes. Each downloadable file that you put on-line
with your BBS requires, obviously, enough disk space to hold the file, and about 256 bytes, average, to
hold a description of the file.
Each phone line that you connect to the BBS requires one modem and one serial port. Beyond
the "COM2" device, it is necessary to use a multi-port card, like a Digiboard product. Non-intelligent
multi-port cards work well to about 16 phone lines. For systems supporting more that 16 telephone
lines, it is strongly recommended that intelligent serial cards be used for all modem ports. To estimate
the number of phone lines needed, practice has shown that a BBS that is oriented towards messaging or
file transfers can support about 200 active users per phone line, and a BBS that specializes in chat
services can support about 75 active users per phone line. For a technical support BBS, the number of
users per phone line can be much greater, perhaps as many as 10,000, because most users will place
only a few calls during their lifetime.
Based on the above facts, and some practical experience, the table below gives some rough
estimates of the amount of memory and disk space that would typically be used by various sized
systems. These figures do not include disk space occupied by downloadable files.
Phone LinesUser AccountsRAM Disk Space
1 200 8 Mb 60 Mb
2 400 8 Mb 60 Mb
4 800 8 Mb 80 Mb
8 1600 8 Mb 80 Mb
16 3200 16 Mb 100 Mb
32 6400 16 Mb 100 Mb
64 12,800 16 Mb 175 Mb
4.2.LAN Hardware Requirements
A Local Area Network (LAN) is not required to run BULLETRON, but BULLETRON can take
advantage of many LAN features if one is present.
BULLETRON interfaces to LAN systems through an interface known as "named pipes". Named
pipes service is provided by IBM Lan Server, Microsoft Lan Manager, Novell Netware and some other
brands of LAN systems.
Two services are provided by BULLETRON that require a LAN that supports named pipes. The
first is called "LAN Logon". LAN Logon allows user on workstations of the LAN to log on to a
BULLETRON that is installed on one of the LAN's servers by connecting through the LAN, without
the use of modems, serial ports or serial cables.
The second service requiring a LAN is called "distributed processing". Though BULLETRON is
written to allow up to 2,000 concurrent users to log on to a single computer without the use of a LAN,
the processing load imposed by that many users may be more than any available hardware
configuration can handle. Through distributed processing, a single BBS can be divided up among
several computers so that each handles processing for 100 to 200 phone lines, with all of the computers
accessing a common set of user accounts, messages and downloadable files.
5. Installation
5.1.Hardware Setup
Install the OS/2 operating system on your computer according to the instructions provided by
IBM and make sure that it works reliably. If you are not well acquainted with the OS/2 operating
system, it is best to install ALL features. Later, you can decide which features of the operating system
are not important to you and you can delete them. You must install "Serial Device Support" if you plan
to use devices "COM1", "COM2", "COM3" or "COM4". If you have the OS/2 operating system
installed and working, and can access all disk drives and CD-ROMs, then that much of your hardware
is set up properly.
Although BULLETRON can run correctly on a FAT (DOS compatible) format drive, its
performance may be impaired by the long disk operations required to open and close files on FAT
format drives. In most cases, performance is noticeably enhanced by the use of HPFS.
5.1.1. Serial Ports Setup
If you plan to use more than the two serial devices that are supported by OS/2's "Serial Device
Support" option (or 3 or 4 for certain models of PS/2 and EISA bus systems), then you must purchase
and install an extended serial port card. Manufacturers of extended serial port cards include, but are not
limited to, Digiboard, Stargate and Arnet. Not all products from all of these manufacturers have device
drivers for OS/2. Check with the manufacturer before purchasing your card to be sure that an OS/2
device driver is available. Follow the manufacturer's instructions for installing the card that you select
and for installing its OS/2 device driver.
The "Serial Device Support" that IBM ships with OS/2 supports up to four devices on a MCA
(Microchannel Architecture) or EISA (Extended Industry Standard Architecture) system. For ISA
(Industry Standard Architecture) systems, the OS/2 "Serial Device Support" option will only support
"COM1" and "COM2". If you install a serial mouse on "COM2" with an ISA machine, the OS/2
mouse driver may create a phantom "COM3" device that can never be accessed. If your manufacturer
gives you the option, it is best to name the first port on your extended serial port card as "COM5", the
second port as "COM6", and so forth. Appendix G of this manual gives details of recommended
settings for several popular brands of extended serial port cards.
When you have finished installing OS/2 and any extended serial port card(s), a simple diagnostic
program is provided with Bulletron that you can run to verify that the device drivers are responding
correctly. With your installation kit for Bulletron, you should have received a file named
"SPTEST.ZIP". Unpack this file onto your hard disk and you will find a file named "SPTEST.DOC"
that contains a descriptive write-up of the test, and an executable file named "SPTEST.EXE". You can
run the test from an OS/2 command prompt by entering
SPTEST
The SPTEST program will perform a few simple calls to the serial device drivers, reporting back
any errors that occur. It begins by looking for a device named "COM1", then "COM2", and so forth
until you tell it to stop. SPTEST is, by no means, an exhaustive test of the serial port hardware. It
executes all of the device driver functions that the BBS uses during initialization, then moves on to the
next port. However, it will tell you if a driver for some port is not responding. If all of the devices that
you plan to use for the BBS pass this test, then the chances are better than not that the BBS program
will be able to use those devices properly. If SPTEST encounters an error trying to initialize one of the
ports, then you can be certain that the BBS program will not be able to access that port. SPTEST may
also report that a port is "slow". Usually, if one port tests "slow", then all the ports on that card will
also test "slow". The BBS program will probably work, but users may complain about poor response
from the system, and file transfers may occasionally time out. If all ports test "slow", then you should
look into purchasing a faster motherboard or more memory for your computer. A computer with a
386SX, 486SX, 'SL, 'SLC, etc. processor or less than 8 Mbytes of RAM is not really fast enough to run
OS/2 and a BBS program in real time.
In the most typical installation, you will use the "COM1" device for a serial pointing device such
as a mouse or trackball, reserve the "COM2" device for a modem that you can use to dial out, send or
receive FAXes, and use devices "COM5", "COM6", and so forth, which are on your extended serial
port card, for the BBS. Small systems, not using an extended serial port card, will typically use the
"COM1" device for a serial pointing device and use the "COM2" device for the BBS.
5.1.2. Modems Setup
Unless you plan to limit communications with the BBS to in-house operations only, using LAN
connections or null modems, you will need to install one or more Hayes compatible modem(s) on your
computer. External modems are preferred, because internal modems can usually only be configured as
a "COM1", "COM2", "COM3" or "COM4" device, and lack the status indicator lights that are used for
troubleshooting. Before connecting the modem(s) to your BBS, connect them off-line to a terminal, or
a computer running a terminal emulator program and enter the command
AT &F &W
to reset the modem to factory default settings. Then enter the command
AT E0 M0 V0 &C1 &D2 &W
This tells the modem 1) do not echo data in the command state; 2) turn off the speaker; 3) use
numeric result strings rather than verbal; 4) report the carrier detect signal accurately; and 5)
disconnect any call in progress when the computer turns off the DTR signal. This modem
configuration will work in the vast majority of situations. US Robotics modems are notably different
because some of these settings are in DIP switches. For more details concerning specific modems, see
Appendix A of this manual.
5.1.3. Direct Connection via Null Modem
Some offices may require terminals to be directly connected or "hardwired" without the use of a
modem. This can be done by setting the modem type (see "Assigning Serial Ports") to type "D". The
initial baud rate should be set to the Baud rate of the terminal, normally 9600 Baud, (see "Modem
Control Strings"). Figure 5.1.3-1 shows the wiring diagram for the cable that is normally used to
connect a computer directly to a terminal or another computer running a terminal emulator program.
The most important feature of this cable is that the Transmit Data (TxD) and Receive Data (RxD)
signals are crossed inside the cable. This is done so that data (keystrokes) sent by the terminal are
received by the computer, and data sent by the computer are received by the terminal for display.
Crossing the Request to Send (RTS) and Clear to Send (CTS) signals in the cable implements hardware
flow control. If the terminal is too busy to accept data from the computer, then it turns off its RTS
signal, the computer "sees" CTS go off, and stops sending until it sees CTS come back on. Conversely,
when the computer is too busy to accept data from the terminal, it turns off RTS, the terminal sees CTS
go off, and buffers keystrokes internally until it sees CTS come back on. The Data Terminal Ready
(DTR) and Data Set Ready (DSR) signals are also crossed inside the null modem cable. DTR is a
signal that the computer or terminal must turn on whenever it is operational. Modems interpret DTR
turning off as a signal to break the connection; that is, hang up the phone. Connecting the terminal's
DTR to the computer's DSR signal lets the computer sense whether or not the terminal is turned on.
Likewise, when the terminal sees its DSR signal on, it "knows" that the computer is turned on. The null
modem cable also connects the Data Carrier Detect (DCD) signal at each end to the DTR signal at the
other end. Doing this causes Bulletron to terminate any session in progress if the terminal is turned off,
or the cable becomes unplugged. Bulletron interprets the DCD signal going off as a loss of carrier
signal from the modem. Figure 5.1.3-2 shows the alternate pin assignments that are used if the
computer, or the terminal has a nine-pin serial connector.
In some situations a variant of the null modem cable will need to be used. If you know that your
terminal or terminal emulator program does not support hardware (RTS/CTS) flow control, then you
should connect the CTS signal to the RTS signal at the BBS end of the null modem cable. Bulletron
will not send out any data if it does not see the CTS signal turned on. You can "fool" it by connecting
its CTS signal to its own RTS. If you do this, however, be warned, that results will be unreliable and
unpredictable above 2400 Baud. Bulletron does not support the concept of software (XON/XOFF)
flow control.
If you purchase null modem cables or adapters pre-made, be sure to check or specify the internal
wiring carefully. Manufacturers of null modem adapters will frequently not implement all of the
required signals.
5.2.Software Setup
Assuming that you have a computer that is running OS/2 version 2.0 or greater, configured with
at least one free serial port, with a Hayes compatible modem attached, installation of Bulletron is fairly
simple. The following list of steps will guide you through it:
1. Make a new file directory on your hard disk. We recommend that you name this directory
"\BBS", because that's what we named it. The actual name of this directory is not really
important, though different parts of this manual may refer to files in the "BBS directory". In
general, we will refer to it as the "BBS Default Directory. You can place this directory on any
disk drive having 10 Mbytes or more of free space. Section 5.2.1 gives some guidelines on
selecting a disk partition based on your needs.
2. Copy (or unZIP) all of the files on you release diskette(s) into your BBS Default Directory.
3. Your BBS is now ready to run! At an OS/2 command line prompt, enter "BBS2 ALL
NOMODEM" to start the program.
4. If you want to log on using your local console and keyboard, press your F1 key to select phone
line 1, then press your "Esc" key to initiate the logon sequence. Your account code is
"SYSOP" and your password is "TEST".
Actually, there's a little more to it than that, if you want your BBS to look different from every
other Bulletron when users start to call, but every Bulletron is shipped pre-configured for a Hayes
Smartmodem 2400 on the COM1 port, with all of the required menus and command prompts installed
and a system operator account for you to use. Of course, you will want to customize the system for
your own particular needs, so the remainder of this chapter discusses the thousands of various ways that
you can customize the system.
5.2.1. Selecting a Disk Partition
A BBS that uses one or two phone lines will run quite acceptably from a FAT (DOS compatible)
disk partition. Beyond two phone lines, an HPFS (OS/2 High Performance File System) partition is
strongly recommended for performance reasons. Beyond 20 phone lines, the HPSF386 file system
drivers (shipped with IBM LAN Server - Advanced) are strongly recommended, to optimize disk
access for multiple concurrent users. If you create an HPFS partition on your hard disk drive, it is
strongly recommended that you NOT make the disk partition from which the system boots an HPFS
partition. It is best to make a FAT partition of about 100 Mbytes for holding the OS/2 operating system
files required to boot the system, then use the rest of the disk as an HPFS partition. This allows you to
edit the CONFIG.SYS file after booting from a DOS system on a floppy disk, in the event that you
should make a mistake editing the CONFIG.SYS file, making it impossible to boot OS/2.
5.2.2. Files List
After unZIPping the files on your release diskette(s), you should have the following files in your
BBS Default Directory. This list is provided as a reference to tell you what each of the files contains, in
case you inadvertently delete one of them. IT IS VERY IMPORTANT THAT ALL OF THESE FILES
BE IN THE BBS DEFAULT DIRECTORY, AND THAT THE BBS DEFAULT DIRECTORY BE
THE CURRENT DIRECTORY WHENEVER YOU START THE SYSTEM. To minimize disk
accesses in the multi-user environment, Bulletron does not search file paths to find the files it needs
while running.
5.2.2.1. Executable Programs - Standard Version
Bulletron is available in two basic forms: a standard version, which most people prefer because
of its simplicity; and a client/server version, which distributes processing over several computers for
accessibility to greater numbers of phone lines. The standard version provides better real-time
performance and easier installation and maintenance for systems requiring less than two thousand
telephone lines. The client/server version is a bit more complicated, but allows up to 223 computers to
be used as "front-end" processors, handling up to 2,000 phone lines each. As a side effect of
distributing the processing, the client/server version also allows you to write your own, third party,
programs to manipulate information in the BBS' internal database without going off-line. The
executable program files for the standard version are:
BBS2.EXE the main BBS program
BBUTIL2.EXE off-line support utilities
BBUTLDB2.EXE application specific database utilities
NODECOMP.EXE FIDO node list compiler
REBUILD2.EXE rebuild the index files
5.2.2.2. Executable Files - Client/Server Version
The executable programs for the client/server version of Bulletron are:
BBSRVR.EXE the BBS database server
BBS2L.EXE the main BBS program client
BBUTIL2L.EXE off-line support utilities client
BBUTLDBL.EXE application specific database utilities client
NODCOMPL.EXE FIDO node list compiler client
REBUILD2.EXE rebuild the index files
5.2.2.3. BBS Database Files
The heart of Bulletron is a high performance relational database engine that uses balanced binary
tree (B-Tree) indexing. The files that make up the BBS database are:
BBSFILE9.DAT defines the BBS database
BBLOCKS.DAT record locks
BBPARMS.DAT setup parameters
BBPARMS.IDX index file for BBPARMS.DAT
BBSMSGS.DAT BBS message file
BBSMSGS.IDX index file for BBSMSGS.DAT
BBUSERS.DAT user account records
BBUSERS.IDX index file for BBUSERS.DAT
BBMMANS.DAT multiple choice matchmaker responses
BBMMANS.IDX index file for BBMMANS.DAT
BBSUBQU.DAT essay questionnaire responses
BBSUBQU.IDX index file for BBSUBQU.DAT
BBADBPL.DAT adventure game / expert system records
BBADBPL.IDX index file for BBADBPL.DAT
BBDATBAS.DAT application specific database
BBDATBAS.IDX index file for BBDATBAS.DAT
BBDOWNLD.DAT descriptions of downloadable files
BBDOWNLD.IDX index file for BBDOWNLD.DAT
BBFNODES.DAT FIDO node list database
BBFNODES.IDX index file for BBFNODES.DAT
BBFREF.DAT FIDO area code/country/state reference
BBFREF.IDX index file for BBFREF.DAT
5.2.2.4. Documentation Files
The documentation files included with Bulletron are:
SYSOPMAN.PRN System Operator's Manual
5.2.2.5. Menus, Prompts and Help Messages
These files are actually optional because they are loaded into the BBS' message file. Though they
are never accessed while the BBS program is running, it is a good idea to keep them in the BBS Default
Directory to facilitate rapid reloading of the menus, prompts and help messages, should you ever make
changes to them. The specific usage of each is discussed in section 5.4.10 of this manual.
PROMPT0.UTL - PROMPT19.UTL These files contain all of the prompt and literal strings
displayed by the BBS. You can edit these to customize your system or adapt it for
a language other than English. Care must be taken not to change any character
strings beginning with the "%" character. The BBS program uses these to
substitute data items being displayed and changing them can result in memory
access violations.
MENU*.UTL These are the menus displayed to callers who select straight ASCII - no
graphics.
AMENU*.UTL These are the menus displayed to callers who select ANSI graphics.
RMENU*.UTL These are the menus displayed to callers who select RIP graphics.
*.UTL Any ".UTL" files not covered by the above four categories are special
messages that the BBS program displays to callers for special purposes. Details
are in section 5.4.10.
5.2.2.6. Other Support Files
DOOR.ICO is an icon that is placed in your OS/2 Minimized Icon Viewer folder
when a user spawns a sub-session by opening a "door". You can double click on
one of these to display what the user is seeing from the "door" program. Closing
one of them forces the user out of the "door" program and back to the BBS
program.
5.3.Program Start-up
It's easy to run Bulletron. To run Bulletron from an OS/2 command prompt, simply enter
BBS2
There are several command line parameters which can be used when starting Bulletron:
ALLAllows you to start all phone lines right away. This is useful if you are starting up
from a batch file. If you do not put "ALL" on the command line when you start
the program, then you will use menu option "A" from the Control Window to start
the phone lines once the BBS program is running.
BLIMnnnn This parameter allows you to control the amount of output data that Bulletron will
buffer internally before sending it to the OS/2 serial device drivers. In general,
OS/2 will work most efficiently if write requests to the serial device driver send
data blocks as large as possible. The maximum value for "nnnn" is 2048. The
minimum value is 8. The default value is 118. The reason why the default is set
at 118 is because buffering more data than that has been experimentally
determined to give a "jerky" feel to the system, as perceived by the users.
BOOSTnn Use this parameter to specify the priority boost given to serial port output threads.
The main BBS program runs at regular class priority level 0. By default, the serial
port output threads run at regular class priority level 1. Systems using an 80386
CPU usually get optimum performance with the output threads running at regular
class priority level 6, whereas 80486 systems seem to achieve optimum
performance at regular class priority level 1. The number, "nn", in this parameter
specifies the priority level, within regular class, for the output threads. Allowable
values are 0 through 31. On systems with intelligent multiport serial cards, like a
Digiboard PC/xem, you may find local console sessions to be intolerably slow
unless you start your system with "BOOST0".
CHATStarts the system in "SYSOP available for chat" mode. When a user calls the
system operator to chat with either the "C" or "/SYSOP" command, the system
will normally inform the user that the "SYSOP is not available to chat at this
time". If the SYSOP logs on to the system, then he is normally invisible to all the
other users. By including this keyword option on the command line, the operator
makes it available for the users on line to call for his attention by ringing the
beeper on the computer. It can be most annoying, but really helps to get new
users to spend lots of money and get hooked on the system.
DATEFor the sake of maintaining accurate system usage records, Bulletron records the
date each time when it is shut down in its parameters file. If the system is
restarted with a date less than the recorded value, then an error message is
displayed and the system aborts start-up. In the event that the date in your
computer was set incorrectly into the future the last time that Bulletron was run,
you can use the "DATE" parameter when the system is started to cause this error
check to be ignored.
DOWNhhmm This parameter will automatically shut Bulletron down at the time
specified by hhmm. The purpose of this is to run Bulletron from a batch file
which can automatically do a backup or other function when Bulletron terminates,
then restart Bulletron when the backup is finished. You can also add seven "Y"s
or "N"s to indicate whether Bulletron should shut down at that time on that DAY.
For example, "DOWN0530YNNYNNY" will shut Bulletron down at 5:30 AM on
Sunday, Wednesday, and Saturday.
NOERRIf any warnings or errors occur during initialization, then messages will be
displayed and the BBS will wait for you to press [ENTER]. If you are starting the
BBS from a batch file and do not want it to pause, include NOERR on the
command line. Notice, however, that if any critical errors did occur, the system
will prevent remote callers from logging on and only allow the SYSOP to log on
locally to correct the situation.
NOMODEM Allows starting the system without sending modem commands. This
allows you to change the modem commands or port assignments if the system can
not be started because the modem commands or port assignments are wrong. You
will need to use this when upgrading your system to a greater number of phone
lines. 16-line/17-user, or 32-line/33-user version. Starting with this option also
allows you to log on locally and make changes to the system while preventing
users from calling in.
NOWINDOWS This prevents the static allocation of windows. When you press an "F"
key to view a user's session, you will only see what the user has just typed, not the
past 20 lines of his session. This can make your system more responsive by
eliminating the overhead needed to continuously maintain an image of each active
session.
PC This alters the time slicing to accommodate slower CPU speeds, like
80386SX systems and systems running less than 40 MHz.. It forces a task switch
each time a carriage return is sent, as well as each time that the serial output buffer
is full.
PURGEnn This parameter allows you to specify the hour at which the system will perform its
daily automatic purge of dead accounts, messages, matchmaker responses, and so
forth. The "nn" specified an hour or the day, in military time; that is, "00 means
midnight, "05" means 5:00 AM, "19" means 7:00 PM, and so forth. If this
parameter is omitted, then the system will begin its purge each day at 3:00 AM.
OFFLINE This parameter will cause Bulletron to display the "OFFLINE" message whenever
anyone calls. After displaying the message, it will disconnect the user. The
purpose of this is to allow the system to answer the phone but not let anyone while
the sysop is on vacation, performing customizations or if the system is off-line for
any reason.
SSnScreen Saver wait time. To prevent burnin on the monitor, Bulletron will return
to the Control Window and blank the screen after a period of time. Press any key
to return to the control window. If Bulletron does not get a keystroke from the
console keyboard in "n" minutes, it will automatically blank the screen. "n"
defaults to 15 minutes, but can be set to any number with the SS parameter. If "n"
is zero, no automatic blanking will be done but the screen can still be manually
blanked with the Z command from the Control Window. For example,"SS60"
waits 60 minutes before blanking.
SYSnThis parameter is only used in the client/server version of the software, when
running multiple copies of Bulletron on a local area network. It is used to
distinguish between "PL", "PM" and "PXO" parameters used on each workstation.
For example, one workstation may be started with SYSA, the next SYSB,
SYSC...SYSZ and a different set of "PL", "PM", "PXO" command features will
be selected for each workstation. Actually, any character code greater than 20H
can be used for "n", allowing a theoretical maximum of 223 workstations, though
the OS/2 command line interpreter may choke on some characters.
SRVRxxxxxxxx This parameter is only used in the client/server version of the software..
It declares the name of the file server that is running the database engine,
BBSRVR, where "xxxxxxxx" is the network name of the server. You can use the
special string "$LOCAL" for the server name to run BBSRVR and BBS2L on the
same computer with no networking software installed.
USERSnIf your system is configured for more phone lines and users than you wish to use,
set "n" to the number of telephone lines that you want to use plus one (for your
local console logons). For example, if your system is configured for 10 users, but
you only have a 4 port Digiboard, you may want to enter USERS6: 4 ports on the
Digiboard, plus COM1, plus the local console.
VDISKnIf you have a ram drive or VDISK, you can improve the performance of Bulletron
by copying the messages located in your "utilities" sub-board to the ram drive for
faster access. The "n" is the RAM disk drive letter. If your RAM drive is drive
E:, the parameter would be VDISKE. Running the BBS program in this way will
show little or no improvement if you have OS/2 disk caching enabled in your
CONFIG.SYS file. This start-up option is not available with the client/server
adaptation because it could result in the generation of more C-Tree file handles
that the server module is compiled to handle.
The very first time you start up your system, you must start it with
BBS2 ALL NOMODEM
This allows you to log on as the system operator, through a local console session, to set up the port
assignments and modem parameters.
5.4.Customizing your System
After starting Bulletron, select a line number, using one of the F-keys on your console keyboard,
and enter CTRL/K or ESC to start a local session. Log on with the system operator account SYSOP
(the default password when the disk was shipped is TEST). Now enter command "P" to change the
installation parameters and customize the BBS.
After entering "P", you will see the system Installation/Customization Menu:
This menu allows you to change all of the essential features of Bulletron. At the Bulletron main
command prompt ("What next?"), you can enter "P" to get the Installation/Customization Menu or "Px"
to access subcommand "x" on the "P" menu directly. The Installation/Customization Menu allows you
to change the essential features of the system. A secondary menu, the Extended Features Menu, allows
you to modify nonessential features:
5.4.1. Defining Access Levels
The first thing that you need to do to begin customization of your Bulletron system is define your
access levels. Access levels define, for each user, which features of the system he is able to use and
what time limits will be imposed on his sessions. We suggest the following as a good place to start.
You can add more access levels later on, as you see the need to further refine individuals' access rights
and privileges.
10 - Unverified New User. Access level 10 is granted by the system the first time someone
calls. You have to be careful about these people because children will call your
system and try to "hack" it. They may attempt to use your system to sell drugs,
stolen merchandise, stolen credit card numbers, prostitution, gambling, and so
forth. Given the chance, they may also post obscene messages and death threats
to your callers. Level 10 users are not given privilege to write any messages of
any kind.
20 - Verified New User. Each time a person sets up an account on your system, the
system will ask them to fill out a "New Account Application" screen. You should
call them back by voice telephone, usually within one week to ten days, to verify
that they are who they say they are. People from competing companies may sign
up using the name of someone you know, hoping to steal trade secrets. It is
important that you verify every new account. Some people will carry on the
masquerade for years. Verifying the new users prevents children from playing
pranks on you, also. As SYSOP, you can manually raise the access level of a new
account to 20 when you verify them, using the "+" command from the main menu.
100 - Paid Subscriber. At some time in the future, you may wish to grant additional
privileges to people who purchase connect time on your system. One suggestion
might be "entertainment" oriented services, such as public forums on politics,
sports, religion, environmental issues, etc. Another common subscriber service is
the matchmaking and dating service. Another is multi-user interactive games.
500 - Company Employees. This privilege level is granted to give access to files and
messages that might be considered trade secrets. It also allows the holder to post
public messages that would be treated as read-only for the general public.
1000 - Systems Management. This privilege level allows the holder to modify any menus,
prompts, screens, and any other part of your system remotely.
In a subscriber based system, Bulletron automatically raises and lowers the access levels of
accounts when their subscription money runs out and when they renew their subscription. You will
typically let unverified callers have some very low default access level so that they are invisible to the
other callers. You raise them to a slightly higher access level when you verify that they are not prank
callers, so that other users can see them, but do not give them access to most of the features of the
system. The other callers will usually send them private mail and call them into chats. If you set the
nonsubscriber session time limits fairly short, then nonsubscribers will have an incentive to pay the
subscription fee so that they will not be subject to having their session terminated in the middle of a
chat or reading mail messages. The other callers will usually tell them about all the wonderful features
that they are missing out on by not subscribing.
During system setup, you specify to Bulletron what the default access levels should be for
subscribers. When a caller has money or time remaining in his account, Bulletron automatically raise
his access level from "verified nonsubscriber" to "full subscriber" for the session. Conversely, if you
have subscriber logic enabled, and a person logs on whose subscription has expired, but whose access
level is greater than your specified maximum nonsubscriber level, then Bulletron will automatically
lower his access level to the maximum nonsubscriber level. Thus, you get two options with Bulletron
for automatically controlling subscriber access:
1. Leave everyone at a low access level and let Bulletron automatically raise their access level at
logon time for the duration of the session, or
2. Set verified users at a high access level and let Bulletron restrict them when their subscription
runs out.
The second method provides more flexibility than the first, because you can differentiate different
groups of subscribers by access level with the second method.
Bulletron also lets you set up subscription by a combination of cumulative connect time and
expiration date. To utilize this feature, you leave the users at the low, "verified" access level, as in
method 1, above, then specify a medium access level for Bulletron to raise them to if their account has
not reached its expiration date, and a higher access level to set them to if their account has connect time
credit remaining. This lets you limit "flat rate" customers to perhaps an hour a day, while giving
premium customers unlimited time per day at a certain charge per minute until their funds run out.
5.4.2. Assigning Serial Ports
From the main system prompt ("What next?"), enter "P" to bring up the
Installation/Configuration Menu, then enter "L" to assign serial ports. You can also enter "PL" directly
at the main system prompt to save time.
When you execute the "PL" command, Bulletron displays a table that shows you the current
serial port assignments. Figure 5.4.2-1 shows an example of this for a 9-line/10-user system:
You read this table as follows: The "Line" column tells you the "task number". In most cases,
there will be one Bulletron "task" for each serial port, modem and phone line in your system, plus one
extra task for you local console logons. If you configure your system to allow users to log on via LAN
(local area network) or incoming TELNET (Internet access), then you will assign some of the tasks for
those purposes. The Bulletron Control Window displays one line of status for each task. Because of
the correspondence between Bulletron tasks and installed phone lines, and the single line status display,
it is intuitive to refer to Bulletron tasks in the documentation as "lines". When a user logs onto a "line",
his activity from logon to disconnection is called a "session".
The "Port" column tells which serial port is assigned to each BBS user task. The number "1" in
this column represents "COM1", the number "2" represents "COM2", and so forth. A "-1" in the "Port"
column represents "none", as in the case of a local console session (see line 10, above).
The "Net" column tells which port is used for outgoing calls for wide area networking (Bulletnet,
FIDOnet, etc.). There should only be one "Y" value in the "Net" column. The line in the table that
contains the "Y" in the "Net" column indicates which session, which serial port, and thereby which
phone line will be tied up during a network call. You can put a "C" in the "net" column if you want to
connect the public chat functions of two or more Bulletron systems together, using null modem cables,
for a permanent network chat. If the modem type for a line is "H", "A", "C" or "B", then an "F" may be
placed in the "Net" column to cause the modem NOT to enter auto-answer mode. Instead of entering
auto-answer mode, the BBS program watches the line for the modem to report a RING signal, then
sends "ATA" to the modem to make it answer the phone. This feature is provided for compatibility
with FIDOnet protocols, which require that the modem not answer if the BBS program stops running
for some reason.
The "Modem" column tells which type of modem is connected to the serial port. The values for
the modem type are:
H Hayes Modem, no Automatic Speed Buffering. The modem must be capable of
accepting commands with DTR signal off; the BBS program turns off DTR to
prevent the modem from recognizing the RING signal while sending commands
to place the modem into auto-answer mode. The BBS program also adjusts the
Baud Rate of the computer to modem connection to match the reported line speed
when a connection is made. The most common example of this type modem is
the Hayes Smartmodem 2400. Data compression and error correction can not be
used with type "H" setting.
A Hayes Modem with Automatic Speed Buffering. The modem must be capable of
accepting commands with the DTR signal off; the BBS program turns off DTR to
prevent the modem from recognizing the RING signal while sending commands
to place the modem into auto-answer mode. The BBS program does not adjust
the Baud rate of the computer to modem connection to match the reported line
speed when a connection is made. The modem should be initialized at a Baud
Rate greater than twice the highest possible line speed to allow data compression
and error correction to occur.
C US Robotics Modem, no Automatic Speed Buffering. The BBS leaves the DTR
signal turned on while sending commands to place the modem into auto-answer
mode, because the modem does not accept commands if the DTR signal is off.
The BBS program also adjusts the Baud Rate of the computer to modem
connection to match the reported line speed when a connection is made. Data
compression and error correction can not be used with type "H" setting.
B US Robotics Modem with Automatic Speed Buffering. The BBS leaves the DTR
signal turned on while sending commands to place the modem into auto-answer
mode, because the modem does not accept commands if the DTR signal is off.
The BBS program does not adjust the Baud rate of the computer to modem
connection to match the reported line speed when a connection is made. The
modem should be initialized at a Baud Rate greater than twice the highest possible
line speed to allow data compression and error correction to occur.
D Direct Connection. This setting is used for a port that is connected to a terminal,
another computer, an X.25 pad, or a terminal server, using a null modem cable
(see wiring diagram in Figure 5.1.3-1). The BBS program initiates the logon
sequence when a carriage return character is received and the carrier detect signal
is turned on. The BBS program turns off the DTR signal to break the connection
and ends the session if the carrier detect signal goes off.
E Special Direct Connection. This setting is the same as type "D", above, but the
initial carriage return is not required to initiate the logon sequence. The logon
sequence is initiated as soon as the Carrier Detect signal comes on. You may find
this more convenient for connection to internet terminal servers because users are
not in the habit of having to type an initial carriage return to begin logon.
L LAN Connection. The BBS program creates a named pipe, named
"\\servername\PIPE\BULLETRON\LOGON" for the line and allows any program
on the LAN to initiate logon by opening this pipe. A modem type of "L" must be
assigned to as many lines as are desired for concurrent LAN users. Each LAN
line must have a number in the "port" column which is greater than zero, and not
used by any other line in the table. Even though BULLETRON does not use a
real serial port for the line, it will not initialize the line if this condition is not met.
T TELNET Connection. The BBS program opens a TCP/IP socket for port 23, in
server mode, and listens for connection requests from the internet. A modem type
of "T" must be assigned to as many lines as are desired for concurrent internet
users. Each TELNET line must have a number in the "port" column which is
greater than zero, and not used by any other line in the table. Even though
BULLETRON does not use a real serial port for the line, it will not initialize the
line if this condition is not met.
N No Modem. The BBS program allows logon only via the local console/keyboard.
The port column for a line with this setting will usually contain "-1".
The "Acc-Lvl" column specifies the minimum access level that the BBS will require for a user to
log on via that line. Keeping with the suggested access levels described above, in section 5.4.1, our
sample table has restricted lines 1 through 4 for subscribers only. Line 5 has the phone number that we
advertise for new users to call and set up accounts. Bulletron will allow NEW users to set up accounts
even if their access level is too low to log on this line normally. The purpose of this if to get them
online, then get them to subscribe by sending them a message that they can only get on the
nonsubscriber lines unless they subscribe. If you do not want to allow new users to even be allowed to
set up an account on a certain line, then set the access level of that line to the negative of the access
level and new users will not be allowed on.
Your phone system may use "hunting", a phone company term meaning a group of phone
numbers, where, if one number is busy, they automatically reroute calls to another number in the set
and the caller only gets a busy signal when all the lines are busy. If you do have your phone company
set up a hunt group for you, then you may want to set the access level for the all the lines but the last
one high enough that only subscribers can log on. In this way, subscribers get to use all the phone
lines, but nonsubscribers get a busy signal if the last line in the hunt group (which is the only one they
can use) is busy.
The "Tm-Limit" column tells the maximum number of minutes that a user can be logged on for a
single call for each phone line. If this is set to zero, then the user's time access level is used to
determine how long he can be online. If this is a nonzero value and the user's time access level would
allow him MORE time than this, this time limit will take precedence. This allows you to devote a
telephone line as an "express line" for users to pick up their mail, but use the other telephone lines for
longer sessions. The time limit does not apply to operator accounts.
The values in the "BF1" and "BF2" columns specify special billing rates for any of the phone
lines. Some systems may want to charge more for use of certain lines such as 28,800 baud lines, or
lines with "800" phone numbers. Use these two values to adjust the billing on a line by line basis.
Bulletron will calculate the normal charge, either cents or minutes, when a user logs off based on the
prime/nonprime rates. It then multiples the charge by BF1 and divides by BF2. If you wanted to
double the cost for use of a certain line, then BF1 would be 2 and BF2 would be 1. If it was a 50%
surcharge, BF1 would be 3 and BF2 would be 2. If it was a 20% DISCOUNT, BF1 would be 4 and
BF2 would be 5. Be sure that BF2 is never zero. More details on setting up billing rates are given later
in this section of the manual.
The "CB" column specifies, for each phone line, whether or not a user will be allowed to make
the BBS hang up and call him back on that line. Callback can be used for two purposes. Companies
can use callback to allow employees to reverse the charges on their calls. It can also be used as a
method of accurately recording a new user's telephone number for the purpose of eliminating prank
calls. Other BULLETRON setup parameters allow you to specify whether callback is prohibited,
allowed, or used for validation on a system-wide basis. If callback is allowed, then you can set a
minimum access level that a user must have in order to use the callback feature. If callback is used for
validation then you can specify a higher access level, special flags and special interest group (SIG)
sub-boards to be automatically assigned to accounts having successfully completed callback validation.
For validation, you can also set a maximum level above which callback is prohibited, to prevent
validated accounts from using callback validation more than once. You can also place a limit to the
number of accounts that can be validated at the same phone number to prevent a single user from
setting up a large number of accounts for his own use. The value in the "CB" column can be:
N to strictly prohibit callback on that line;
Y to allow callback;
L to allow callback only if the phone number that the user enters is not a long
distance call; or
M to allow callback for the purpose of validating accounts, but then disconnect and
make the user call back once his telephone number has been validated.
The value in the "PAGE" column indicates whether or not the phone line may be used to dial the
SYSOP's pager. In some cases, it may be desirable to have the system operator wear a "beeper", by
which he can be paged if he is out on call and some user needs urgent attention. Option "9" of the
"PXP" menu allow you to specify a telephone number which may be dialed to ring the SYSOP's pager.
If this phone number is not blank, and the Control Window option has been set to indicate that the
operator is not in, then Bulletron will search the phone lines for one that is not in use and has a "Y" in
the "PAGE" column. When it finds one, it will use that line to dial the SYSOP's pager number.
To change a serial port assignment, respond to
Enter line to change or Q to quit:
by entering a line number. When you are finished altering the table, enter "Q" to return to the
Installation/Customization Menu. Any time that you change the port assignments on one or more
lines, then you MUST shut BULLETRON down and restart it for the new line assignments to take
effect. This is the only time when BULLETRON must be shut down and restarted before an
installation parameter can go into effect. Usually, however, you will also be making changes to the
modem control strings at the same time, so don't shut anything down until you read the next section of
this manual.
5.4.3. Modem Control Strings
From the main system prompt ("What next?"), enter "P" to bring up the
Installation/Customization Menu, then enter "M" to modify modem control strings. You can also enter
"PM" directly at the main system prompt to save time. It is best to have the BBS running with modem
I/O disabled when you modify the modem control strings, though it is not necessary. Bulletron makes
the modifications in a buffer and writes the modifications for each line to disk when they are complete.
The new settings go into effect the next time that Bulletron resets the phone line; that is, the next time
that a user logs off, or you stop the line and restart it from the Control Window. You can do the whole
process remotely, accessing the Control Window to stop and start each line using the "Y" command.
Making changes to the modem control strings locally, with the BBS started with "NOMODEM" helps
keep YOU from getting confused.
Before discussing the specifics of entering the modem command strings, it is important that we
make clear how BULLETRON expects the modem to operate. When BULLETRON sends a command
to a modem, it expects the modem to return nothing except a string of ASCII digits, as result code, and
a carriage return. This means that you must have the following settings (or their equivalents for your
particular brand of modem) stored in nonvolatile RAM or DIP switches in effect at all times:
E0 Do not echo characters from the keyboard to the screen in command mode. If the
modem echoes the commands sent to it, Bulletron will attempt to interpret these
as result codes and will display messages like
illegal modem result code < ... text ... >
where "... text ..." is the command string.
Q0 Return result codes. If the modem does not return a result code after every
command string, then Bulletron will retry the command five times and then mark
the line as down because the modem is broken. This is a factory default for most
modems.
V0 Display result codes as numbers. Do not have result codes returned as verbal
strings.
&C1Track the status of carrier detect signal. Bulletron checks the state of the carrier
detect signal before each character is transmitted, and before attempting to read
each incoming character. If the modem does not report loss of carrier, then
Bulletron will not reset the line when a user disconnects, and the line will be
"stuck".
&D2Monitor DTR signal. When an on-to-off transition of DTR signal occurs, the
modem hangs up, returns to the command state, and disregards incoming calls
until the DTR signal is turned back on. Bulletron depends on this feature to
terminate calls.
Modems that support 14,400 Baud, or error correction, or data compression, should always be set
up as type "A" or type "B" with the "PL" command. Set the initial Baud rate for these modems higher
than twice the highest real Baud rate at which the modem can connect. V.32bis modems connect at
14,400 Baud maximum, so you should set the initial Baud rate for 38,400 Baud. V.32 modems connect
at 9,600 Baud maximum. You can set the modem type to "H" or type "C" with the "PL" command and
set the initial Baud rate to 9,600 Baud if your V.32 modem does not support V.42, V.42bis, or any form
of MNP. If you plan to use error correction (V.42 or MNP 1 - 4), or data compression (V.42bis or
MNP 5 - 10), then you should set the modem type for "A" or "B" with the "PL" command and set the
initial Baud rate for 38,400. Some 2,400 Baud modems also support error correction and data
compression. If your 2,400 Baud modem does not support error correction or data compression, then
you should set the modem type for "H" or "C" with the "PL" command and set the initial Baud rate for
2,400 Baud. If you plan to use error correction or data compression with your 2,400 Baud modem, then
you should set the modem type to "A" or "B" and set the initial Baud rate to 9,600 Baud.
The delay after connection is important if your modem supports error correction or data
compression and people might call some times with modems that do not support these features.
Modems that support these features negotiate features using 7-E-1. If you do not allow enough time for
feature negotiation to time out after connection, then callers with modems that do not support these
features may be erroneously told to reset their software for 8-N-1. Appendix A of this manual lists the
modem setups that we have found to work for modems that we have tested with in our lab.
When you execute the "PM" command, Bulletron asks you which line you want to change. You
can change modem control strings for any line, even the ones that do not have modems or serial ports,
such as the local console session. You may do this when upgrading to a larger number of phone lines,
as you will be using a different session for the local console than before. After you select the line
number, Bulletron prompts you with the series of questions as defined below. The current values are
shown in brackets []. Pressing ENTER without entering a value will retain the current value.
The first parameter that you are prompted for is;
INITIAL BAUD RATE [38400]:
This is the Baud rate to which the serial I/O port will be set when the first commands are sent to the
modem. If you do not plan to use automatic speed buffering (essential to all forms of error correction
and data compression), then set this value to the maximum speed that the modem allows - 14400 for a
V.32bis modem, 9600 for a V.32 modem, 2400 for a V.22bis modem, 1200 for a V.22 modem or 300
for a Bell 103 type modem. For a null modem connection, set it to the speed of the terminal. If you
DO plan to use automatic speed buffering (as in MNP, V.42 or V.42bis operation), then you must set
this value at least 2 times the maximum speed of the modem. The upper limit imposed by Bulletron for
OS/2 is 4,294,967,295 Baud, though device driver programs may refuse anything above 57,600 Baud
for ports with 16450 type UARTs, or 345,600 Baud for 16550 type UARTs and intelligent multi-port
cards. Keep in mind that, with non-intelligent ports, 19,200 Baud implies an interrupt to the CPU every
500 microseconds. The fastest CPU chips available today will be pretty much swamped if you get two
or three of these going at once. Intelligent multi-port cards provide a second CPU to handle the
interrupts and, hence, can get much more throughput. If you set the serial port Baud rate greater than 2
times the maximum possible actual line speed, some types of modems may buffer data internally in a
way that gives your BBS a "jerky" feel.
You can also enter "*" at this prompt, which will allow you to copy all the modem control strings
from some other line that you have already set up.
The second modem parameter that you are prompted for is:
ESCAPE SEQUENCE [+++]:
These characters are sent to the modem to force it into a mode to receive commands. You should
never need to change this since this seems to be a universal standard among modem manufacturers at
this time.
DELAY BEFORE AND AFTER ESCAPE SEQ IN TICKS
(18 TICKS = 1 SECOND) [27]:
For the escape sequence to be recognized, the modem needs a period of "silence" before and after
the sequence. "Silence" means that no other characters are sent for a period before or after the escape
sequence. The time period is usually about 1 to 1.5 seconds. The computer measures time in TICKS,
where 1 tick is 1/18th of a second. A 1.5 second silence period would, therefore, be a delay of 27 ticks.
RESET MODEM [ATZ]:
This command resets the modem back to its default state when preparing for the next call.
NEVER use "AT&F" here, or in any other Bulletron modem control strings, as this will usually cause
the modem to echo commands, return verbal result strings, ignore the DTR signal, and report carrier
detect as always true.
BEGIN ANSWER SEQUENCE [ATH0S0=1]:
This command tells the modem to begin answering the telephone on the next call. This
command is actually two different modem commands strung together. These commands are:
H0 Hang up. You can't receive a call if the phone is off the hook.
S0=1The "S0" register specifies the number of times to let the phone ring before
answering the call.
If you are having problems with the modem not resetting properly or not detecting loss of carrier, then
take the modem off-line, connect it to a terminal or a PC running a terminal emulator, enter
AT &F &W
to reset the modem's nonvolatile RAM to factory default settings, and enter
AT E0 M0 V0 &C1 &D2 &W
The next parameter prompted for is:
OFF HOOK FOR LOCAL SESSION [ATH1]:
When the system operator enters CTRL/K or ESC to log on to the system locally, the BBS "takes the
phone off the hook" so that an outside caller gets a busy signal rather than the phone simply ringing. If
the phone simply rang, the outside caller might think the system had crashed and not try calling again.
If the outside caller gets a busy signal, he knows to try again later since the system is up but in use. If
your modem speaker sounds line the phone is off the hook, then this means that your modem is
defective (as in the Aceex 2400s, which were all that way right from the factory), and not responding to
the "M0" command properly.
The next parameter prompted for is:
DO NOT ANSWER PHONE [ATS0=0]:
When you shut the BBS down, this command is sent to the modem so that the modem will not answer
the phone while you are running other programs on your computer. This is the command that the BBS
issues to the modem when you don't want to leave the phone off-hook.
The next parameter prompted for is:
DELAY AFTER EACH COMMAND IN TICKS
(18 TICKS = 1 SECOND) [18]:
It may take some time for your modem to process a command, particularly the "reset" command. This
provides a time delay after each command to allow your modem to process it. Normally about 1/2
second should be sufficient. Since there are 18 ticks in 1 second, 18 ticks would be the 1 second, which
should be more enough time.
The next parameter prompted for is:
DELAY AFTER CONNECTION IN TICKS [126]:
After the modem returns a code to Bulletron indicating that it has connected at a particular speed,
Bulletron will wait this number of ticks before proceeding. The purpose of this is to allow some time
for the line to settle or for error correcting modems to establish a reliable connection. Particularly with
error correcting modems, if you set this delay too short, then protocol negotiations, which are always
exchanged at 7-E-1, will be interpreted by Bulletron as user keystrokes, resulting in faulty detection of
8-N-1 communications parameters. If your users complain that Bulletron tells them to set their modem
for 8-N-1, but it already is set for that, then make this delay longer and the problem will go away.
The next parameter prompted for is:
ORIGINATE DIALING PREFIX [ATM1DT]:
This is the command that is sent before the phone number when the system dials out to initiate network
transfer. The network phone number will be appended to this command to cause the modem to dial the
number. Including the "M1" command in the string lets you listen to the call when you manually dial
so you can tell quickly if the number you are dialing is busy, out of service, just ringing, etc. You will
want to change "DT" to "DP" if the phone line you use for dialing does not support touch tome.
Following this, you are allowed to specify up to 20 modem result codes that the modem can
return to indicate that a call has arrived.
RETURN CODE (1 OF 20) [1]
BAUD RATE (1 OF 20) [300]
RETURN CODE (2 OF 20) [5]:
BAUD RATE (2 OF 20) [1200]:
.
.
.
RETURN CODE (20 OF 20) [1]
BAUD RATE (20 OF 20) [300]
When the modem receives a call, it returns a code which indicates what Baud rate the caller is
connected at. Usually there will be at least five return codes: 1 indicates 300 Baud, 5 indicates 1200
Baud, 10 indicates 2400 Baud, 12 indicates 9600 Baud and 14 indicates 19,200 Baud. See the
Appendix A for this manual for some details and consult the user manual that came with your modem.
Bulletron allows up to twenty return codes to be specified. You must tell Bulletron what the return
code will be and what Baud rate this will correspond to for each modem result code that you want
Bulletron to recognize. If the modem type for a particular line is set to "A" or "B", then the Baud rates
are not used, except to calculate the estimated time to download a file, but all of the result codes that the
modem can generate to indicate connection must be present.
If you enter CTRL/K or ESC at any point while answering these prompts, you will be returned to
the main menu and your answers will NOT be saved. So if you think you made a mistake and want to
start over without altering the original values, just press CTRL/K to abort and return to the main system
prompt.
When the BBS is sending out the commands to the modem, they will display over the line
information in the Control Window. You can also press one of your F-keys to view the window for
that line. This will show you, in detail every command sent to the modem and every result code
returned by the modem.
The result codes should usually be 0 (zero) to indicate that the modem processed the command
correctly. Exceptions to this are the "+++" string, which does not return a result code, and dial-out
commands, which do not return a result code until the modem connects. If Bulletron is sending the
begin answer sequence and it does not get a 0, it will try to resend the commands. This could be due to
a slight timing problem, in which case the resend should result in a 0 return code, or it could be that you
have an invalid command in the sequence. If you have an invalid command, then you may need to shut
the BBS down and log on from a local console session to change modem commands. This can be done
by starting the BBS program with "NOMODEM" on the OS/2 command line.
5.4.4. Setting up Sub-Boards
From the main system prompt ("What next?"), enter "P" to bring up the
Installation/Customization Menu, then enter "B" to modify sub-board definitions. You can also enter
"PB" directly at the main system prompt to save time. It is best to have the BBS running with modem
I/O disabled when you modify the sub-board definitions, though it is not necessary. Be aware,
however, that, if there are users logged on to the system when you change the sub-board definitions,
they may accidentally receive access to ALL sub-boards, including special interest groups for the
remainder of their current call!
The maximum number of sub-boards that the system can handle is 999. The sub-boards are
sorted by sequence number so that you can determine the order in which boards will appear to the user.
Only the sub-boards that the user can access will be displayed to him.
Figure 5.4.4-1 shows a typical example of a Bulletron sub-board table:
At the post-menu prompt, enter "A" to create a new board, "C" to change the information about
an existing board, "D" to delete a board, or "Q" to save your changes and return to the Installation
Menu. If you enter "A" or "C", then you are prompted for the following information:
Board abbrev:
Enter a 3 character abbreviation for the new sub-board. The abbreviation is shown under ABR in
the table.
Board name []:
Enter the name of the sub-board, twenty (63) characters in upper/lower case. You do not need to
add the word "board" since that word will be added in the prompt. If this is a "change" instead of an
"add", then the current sub-board name appears in the brackets ([]). The sub-board name appears in the
table underneath the row of N's (for Name).
Is this board a SIG (Y/N) []:
You may want to limit the access of a sub-board to only specific users or users in a Special
Interest Group (SIG). If a sub-board is marked as a SIG, then you will have to put the 3-letter
abbreviation of the sub-board into the user's SIG list for any user to be able to access this sub-board. If
you want this sub-board to be a SIG, then enter "Y" to the question, otherwise enter "N". There may be
times when the same users get the same set of SIGs. If the sub-board abbreviations begin with the same
characters, then wild cards could be used to give a user access to all of them at once. For example,
putting E?? into a user's SIG list would give that user access to all sub-boards beginning with "E". If
the SIGs do not begin with the same character, you can form "groups" of SIGs. When you enter "Y" to
indicate that a sub-board is a SIG, Bulletron prompts for the group. The group is any letter A to Z and
0 to 9. In the user's SIG-list, enter "**n" where "n" is the group (such as "**S") and the user will have
access to all the SIGs with that group letter (group "S" in the example).
Note that Bulletron checks a user's access level before checking the SIG access. If a user has
access to a SIG sub-board because the sub-board abbreviation is in his SIGlist or group, but the user has
an access level lower than that of the sub-board, as in the case of someone who let his subscription run
out, then he will NOT be able to access the SIG. If you want users to access SIGs based totally on their
SIGlist, be sure the access level for the SIG sub-board is zero.
Questionnaire Type []:
Each sub-board may have a locator or match questionnaire associated with it. Enter one of the
following:
A means there is a multiple choice questionnaire matching accounts or users such as
would be used in a dating service, a job placement service, or a directory of
consultants. See section 5.4.12.1 for details on preparing multiple choice
questionnaires.
M means there is a multiple choice questionnaire matching messages such as would
be used in a real estate locating service, a restaurant guide, or a personal ads
column. See section 5.4.12.1 for details on preparing multiple choice
questionnaires.
T means there is a match questionnaire for accounts but the questionnaire is a TEXT
or ESSAY question-type. Matchmaking is done by text string searches, rather
than by matching specific answers. The user fills in the blanks and other users can
read his responses with the "MA" command on that board. See section 5.4.12.2
for details on preparing essay questionnaires.
C means there is a COMBINED multiple choice/essay questionnaire matching users
or accounts. See section 5.4.12.3 for details on preparing combined
questionnaires.
- (DASH) means take the questionnaire from the next accessible (default)
sub-board.
* means that sub-board will take the questionnaire from another board. This is
called REDIRECTION. You will be prompted for the sequence number of the
sub-board from which it will take the questionnaire. Be sure it is NOT another
redirected sub-board. The sub-board it is redirected to must be an "A", "M", "C",
or "T" type sub-board.
O means the sub-board is an order entry sub-board and the questionnaire is really an
order form to allow users to purchase merchandise or pay their subscription fees.
See section 5.4.12.4 for details on preparing order entry questionnaires.
F means the sub-board is a "form message" sub-board. Messages posted on a "form
message" sub-board follow an essay questionnaire format similar to order entry
sub-boards, but the completed forms are posted as public messages rather than
sent to the system operator in private mail. You can use this feature to force users
to answer specific questions when requesting tech support, then keep the
responses in public messages that can be quickly searched using the "SS" and
"RS" commands. See section 5.4.12.4 for details on preparing order entry
questionnaires.
Special Feature []:
This prompt allows you to designate a special role that the sub-board plays in wide area
networking (Bulletnet, FIDOnet, Internet, etc.). The possible options are:
S means this sub-board is the SOURCE for private messages being sent over
Bulletnet. There can be only one network source sub-board in a system at a time.
It is used as a holding area for outgoing messages. If you deny access to this
sub-board to any user, then they will not be able to originate Bulletnet mail
messages.
D means this sub-board is the DESTINATION for public messages received over
Bulletnet or FIDOnet. This sub-board acts as a "dead letter box" for private mail
that arrives for accounts that no longer exist, or public echo messages for SIGs
that no longer exist. You may want to read these messages periodically and
manually move the ones of interest to other sub-boards, deleting the rest. You
will probably want to set the access level for this sub-board high enough so that
only you can read the messages, as some may have content which your users may
find objectionable.
E means the sub-board is an Bulletnet or FIDOnet echo conference, or USEnet
newsgroup. These are sub-boards on which messages can be posted at the same
time in many different cities. See the section about Network Echo Conferences
for more details.
? means that the sub-board is a header only for the multilevel sub-board menu
selection function. See "MENUB" under "Customizing Menus, Help Messages
and Prompts" for more details.
N means this sub-board is not used in wide area networking, or as a board menu
header
Hold messages until release by sysop (Y/N) []:
The system operator may desire to review all messages for inappropriate information before
allowing other users to view them. If you set this to "Y", then any new messages or messages with new
comments added will be marked as being "HELD" until the SYSOP can read and approve them.
Assistant SYSOPs, but not SIG-ops, can also release a message. An "H" will appear next to the
summary and "**HOLD**" will appear in the heading of a held message when a SYSOP reads it. At
the end of the message, a reminder "Reminder: this message is being HELD" will display to SYSOPs.
The SYSOP then enters "H" at the end of the message to change the "HOLD" status. If a message is
being held, then "N" or [enter] will remove the hold and update the message date/time; "Y" will retain
the hold or hold a nonheld message. "D" will delete the message if the SYSOP thinks it is
objectionable. Messages that are "HELD" are not visible to users, and are sent out over the network.
As a side note, if a user has flag "H" in his account record, then any new messages or messages
that he adds comments to, regardless of the sub-board hold flag, will be marked as held. So, if you
have a problem user, you can hold only messages which he affects in case he is putting profanity in a
message.
Is this board Read Only (Y/N/P/Q/S/U) []:
Some sub-boards may be read-only sub-boards. The system operator can always enter a message
on this sub-board, but users cannot enter messages or comment on messages entered here. An example
of this type of sub-board might be your "utilities" sub-board which holds all the menus, prompts, help
messages and questionnaires. You may want the users to be able to read that sub-board to download
the help files, but you would not want them posting messages there. Enter "Y" if this is a read-only
sub-board. A sub-board can also be "Partial Read Only"; that is, a user can enter messages on the
sub-board but no comments can be added to the message. The settings that you can use for this
parameter are:
N Anyone can post messages and add comments
Y Only system operators and assistant system operators can post messages and
add comments. If a message created on this sub-board is transferred to a
different sub-board, it becomes commentable.
P Anyone can post messages, but only system operators and assistant system
operators can add comments. If a message created on this sub-board is
transferred to a different sub-board, it remains non-commentable.
Q Anyone can post messages, but only system operators and assistant system
operators can add comments. If a message created on this sub-board is
transferred to a different sub-board, it remains non-commentable. The
message is deleted during the daily automatic purge if the original author
does not have subscriber status.
S The only account that can post new messages is "SIGbbb", where "bbb" is the
three character sub-board abbreviation. Anyone can add comments.
U Anyone can post messages, but only system operators and assistant system
operators can add comments. If a message created on this sub-board is
transferred to a different sub-board, it becomes commentable.
Anonymous messages only (Y/N) []:
Some newspapers have a personals or classified section where advertisers can post text
anonymously. The newspaper just shows a box number, people respond to the box number, and the
newspaper forwards the response to the advertiser. This prompt allows a sub-board to be set up with
the same facility. The messages are always anonymous, but the system knows who posted the message.
Other users can "forward" a message to the originator whereby the system will send the message to the
originator but not reveal the account of the originator or responder. Answer this prompt with "Y" if you
want all the messages on this sub-board to be anonymous.
Note: users can still enter anonymous messages using the "E ANON" or "EY" commands even
if you answer "N" to this question. The system operator can always see who posted a message even
though it is anonymous to the other users. You can also enter "C" which is like "Y", except comments
will be allowed on the messages.
Summary type (M/L/B/C/X/N) []:
When a user selects a sub-board, the system automatically generates an initial command to show
him the messages on that sub-board. This command is either an "R" (read) or, by default, an "S"
(summary) command. The subcommand can be one of the following:
M Summary of My personal mail. You will generally only use this on one sub-board
- your personal mail sub-board.
L Summary of new messages since my Last logon. Use this on popular sub-boards,
where users post and update messages frequently.
B Summary of this sub-board's messages Backward by date. Use this on order entry
sub-boards and tech support sections where the messages might constitute a
catalog of goods and services or product upgrade notices. The messages seldom
change, but you want people to constantly be aware of their presence.
C Summary Complete new messages for the entire BBS. You might use this on the
first sub-board that a user sees when he logs on to your system.
X similar to "L" except messages will not show with the "RC" command unless the
user has selected the specific sub-board. In other words, if you put "C" for the
first sub-board that the user sees, you can put "X" on some of the busiest
sub-boards so he doesn't get "War and Peace" every time he logs on.
N for no summary.
Minimum access level []:
Each user has an "feature access level" which determines which sub-boards he is able to see. For
a user to even be aware that a certain sub-board exists, the user's feature access level must be at least as
high as the sub-board's access level. The minimum access level, being prompted for here, is the lowest
level which a user can have and still be able to read the messages on the sub-board. This is a number
from 0 to 32767. Sub-boards which only the system operator can access should be set very high, such
as 30000. The combination of feature access level and SIG (special interest group) should be used
carefully to determine which sub-boards users can read. If a sub-board may be accessed by users who
may each have different access levels (such as subscribers and nonsubscribers), then make the
sub-board a SIG. If the sub-board will be accessed by users with the same access level, then control
read access by adjusting the minimum access level of the board.
Days to Autopurge Messages or 0 No purge:
Bulletron will automatically purge messages which have not had any activity for the time period
specified here in days. Some messages, such as read-only stories or helpfiles, will never have
comments added, but should not be deleted. On those sub-boards where you do NOT want the system
to purge messages, enter 0 for this prompt. The maximum purge days is 255.
Sequence number []:
This sequence number determines the order in which the sub-boards are shown to the user. You
should increment the sequence numbers by 5 or 10 so that you can insert other sub-boards later. The
sequence number can be any number between 1 and 32000. NOTE: if you change the sequence of any
boards, do it when no other users are online. This includes inserting new boards among previously
existing boards.
Access Level for E M W, D, U and X Commands
Bulletron allows you to have a different access level for the Enter, Match, Who, Download,
Upload and FAXback commands on each sub-board. You will be prompted for each access level here.
If a user's feature access level is less than the download access level specified here but greater than the
default access level for the upload/download command as specified in the system parameters, then the
user can list the directory of files for that sub-board but cannot download them. Assume that the access
level on a particular directory is 10, and the user's feature access level is 20, but the "D" access level on
this board is 30. The user will be able to use an "F" command to list the files in the directory since his
access level is higher than the directory access level, but he will not actually be able to download the
any files since his access level is less than the "D" access level on the sub-board. He may still be able
to download files on other sub-boards, just not this sub-board. This provides a way to letting the user
know what he could have if his access level was higher. Bulletron also lets you assign access levels to
directories and even individual files (a sub-board can have up to 35 file directories and a directory can
have an infinite number of files). Beware, if you try to use this feature, that, if you allow
nonsubscribers to have download access anywhere in the system, and a nonsubscriber knows the exact
file name of a file that you have locked out in this manner, the system will still let him download it if he
goes to a different sub-board, where he does have download access.
The Enter Command Access Level that you set for your "personal mail" sub-board controls
whether or not people can enter personal mail regardless of their current sub-board selection. For
example, suppose that a user with a feature access level of 10 selects a sub-board which has an Enter
Command Access Level of 100, but the Enter Command Access level of the "personal mail" sub-board
is 10. That user would be able to initiate personal mail on the high access level sub-board, but not post
public messages.
After prompting with the above questions, Bulletron will again show you the new sub-board table
including your latest addition or change.
If you wanted to change an entry, enter "C" to signify a change. You will then be asked for the
abbreviation of the sub-board that you want to change. You are allowed to change all the information
except the abbreviation itself. If you want to change the abbreviation, you must delete the sub-board
and then add it again. When changing a sub-board, the current values for each of the prompts will be
shown in brackets ([]). Pressing ENTER without entering any data causes the old value to be retained.
To delete a sub-board, enter "D". You will then be asked for the abbreviation of the sub-board
that you want to delete. You cannot delete a sub-board if there are any messages on the sub-board. In
that case, you should select that sub-board, read the messages forward and delete each one, then try to
delete the sub-board again. If the sub-board that you want to delete has a large number of messages,
then you will find if faster to shut down the BBS and use the BBUTIL2 program to delete all the
messages on the sub-board.
When you are finished adding, deleting, and changing all the sub-boards, enter "Q" to return to
the Installation Menu. You can come back to this menu and change the sub-boards at any time.
Adding a new sub-board or deleting an unused sub-board is a quick and simple process which will be
done frequently as the needs and interests of the users change.
5.4.5. Basic System Parameters
One of the first things you, as a new SYSOP, will want to change is the basic system parameters.
From the main system prompt ("What next?"), enter "P" to bring up the Installation/Customization
Menu, then enter "P" to modify basic system parameters. You can also enter "PP" directly at the main
system prompt to save time. Figure 5.4.5-1 shows an example of the System Parameters Menu:
The information in brackets [] is the current value of each field. The information in parenthesis
are values which are acceptable. To change any parameter, enter the letter or number corresponding to
the parameter that you want to modify. This is what each of the parameters does:
A - Sign on message
When a user first connects his modem to your system, the first lines that he sees will be
something like this:
Bulletron#1 619/346-1608 BULLETRON#1 Rel 999
This text will print on the second line during logon The phrase "Bulletron#1 619/346-1608" is called
the Site ID and cannot be changed. "Bulletron#1" is the node, and "Rel 999" is the release of the
program that is running. The second line, the one beginning with "This text will print...", is called the
Sign-on Message. Use it to display your BBS name or to tell your users something such as "New BBS
is running so answer NEW to setup an account". This line can also be blank in case you do not wish to
use this feature. If you have a message which is longer than one line which you need to tell your users,
you can also setup a "LOGO" message on your "utilities" sub-board (see "Customizing Menus and
Prompts"). After the sign on message is displayed and before the system prompts the user for his
account code, the system will display the "LOGO" message.
B - Printer On
Is there a printer attached and turned on? Diagnostic messages, log messages, CTRL/N printing
will come out on the printer if this is set to "Y". Valid values are "Y", "N" or "X". If you enter "N", the
log will go to a disk file named BBSLOGmm.DAT ("mm" is the current month). If the log does go to
disk, be sure check and delete the log files periodically so your disk drive doesn't get full. You can
delete the file with the OS/2 "DEL" command and the system will start a new file the next time the
program begins. If you enter "X", for this option, then neither a printer log nor a disk log will be
maintained. This is not recommended since you would not know about any system errors if they
occurred. If you enter CTRL/N to get a printer log of your session but you have the log going to a disk
file, then the text from the screen will go to the disk log file. This can be useful if you want to capture a
session, list of users, list of messages, etc. to include in a document with your word processor later.
C - Printer log
This parameter determines how much information will be displayed on the printer or log file.
Valid values are 0 through 3:
0 No log of users should be printed, only error messages and diagnostics will be
written.
1 Print the date and time when a user logs on or off (Normal Setting).
2 Record what command the user is using also.
3 Record everything that every user types in the system log/
It is a good practice to have this set to 1 when you first start your BBS and change it to 0 when you feel
comfortable with operating the system. If you are having strange problems or a user is entering
something which is causing the system to not function properly, set this option to 2 so that you can
trace what command is causing the difficulty. If you are running a subscriber system, then you can use
option 1 to maintain an audit trail of time/money in users accounts. Option 3 is something that you can
use to help diagnose a specific problem, but you will quickly find if you use it that the system log will
fill your entire disk before long.
D - # of carbon copies
After a private message is entered, Bulletron will allow the system operator to send the same
message to another account. This is called a "carbon copy". Sometimes only the system operator will
have this feature since some users could fill up the disk by sending the same message to many users.
Bulletron allows the system operator to determine whether or not the users can have this feature, and if
so, how many copies that they can make. If the number of carbon copies is zero, then the user cannot
use this feature and it will not display. If the SYSOP sets this to a number from 1 to 254, the user can
make up to that many carbon copy messages. The SYSOP will always have this feature even if the
number is set to zero. A carbon copy limit of 25 usually works well.
E - Visitor logic
Some systems may get a lot of onetime callers -- users who log on, read the public messages, then
never call back. They waste system time and disk space by setting up an account which will never be
accessed again. If you have this problem, you can activate the "Visitor Logic". Valid values are "Y" or
"N". If set to "Y", the system will ask a new user if "they want to set up a new account or just look
around". If they just want to look around, it will assign them account code "VISITOR", and give them
read-only access on those sub-boards whose access level is less than or equal to the access level that
you have set account "VISITOR". Bulletron treats account "VISITOR" like any other account, so you
must assign its access level depending on what features and boards that you want it to use. The "N"
command is blocked for the "VISITOR" account and multiple "VISITOR" accounts can be logged on
simultaneously.
F - Backup level
All of the data files in the BBS database (BB*.DAT) should be backed up to floppy disks or tape
at least once per week. In addition, Bulletron can create additional files to assist in the situation where
the files are destroyed and need to be recreated using the last backup plus any changes made since the
last backup. See Section 6.12.1 (BBUTIL2 program) to see how this procedure is accomplished. The
backup level parameter determines if or how any additional data is saved. Valid numbers are 0 thru 4:
0 Do not save any record of changes made to the system. This will allows the
fastest operation but provides no way to recover any information added since your
last physical backup. (Normal Setting).
1 Copy any DELETED messages or accounts (regardless of whether they were
deleted by the system, sysop, or user) to a file named "XXyymmdd.BAK". A new
file would be created every day. Since the same file is opened and closed with
each addition, there is a chance that this file could be destroyed in a system crash
also, but it does provide some additional protection while slowing the system
down the least. It also gives you a way to recover messages or accounts that were
deleted accidentally.
2 Copy any ADDED, CHANGED, or DELETED messages or accounts to a file
named "XXyymmdd.BAK". This provides additional protection, but causes more
overhead.
3 Copy any DELETED messages (not accounts) to separate files called
"XXXnnnnn.bbb", where "nnnnn" is the message number and "bbb" is the board
abbreviation. This provides even more protection than 1 or 2 above since the file
is never open during a possible crash, but as more files are added to the directory,
the system will become progressively slower. If you use this option, be sure to
copy the files off the hard disk and delete them every day to avoid degrading the
system.
4 Copy any ADDED, CHANGED, or DELETED messages (not accounts) to
separate files called "XXXnnnnn.bbb". This is similar to 3, above, but includes
more files.
Use utility program, BBUTIL2, to restore deleted messages or accounts back into your database.
After prompting for the backup level, Bulletron will also ask you for an OS/2 directory path that
it can use for automatic backup. If you specify a valid OS/2 directory here, then at the beginning of the
daily purge, the system will make compacted and cleaned copies of the BB*.DAT and BB*.IDX files in
this directory. This will occur transparently to the users, so that the system need never go off-line for
backups. You can disable this function by leaving this blank or entering spaces.
G - Default access levels
This prompts for the feature, time limit, download command time limit, and chat command time
limit access levels. The default feature access level is the access level that a new user is assigned when
he first logs on. It is recommended that this be set to 10 and that the access level for the "enter"
command for all sub-boards be higher than 10. This way, a new user cannot leave any messages until
the system operator raises his feature access level. The purpose of this is to prevent "hackers" from
posting illegal or inappropriate material on the BBS. The default time limit access level is the time
limit access level that a new user is assigned when he first logs on. It determines how many minutes
will be allowed per session, and per day, for unverified users. The default chat time limit access level
determines how many minutes an unverified user can be using the chat command, per session and per
day. The download time limit access level determines how many minutes an unverified user can be
downloading, per session and per day. The purpose of these last two access levels is to prevent unpaid
users from spending all their time in chat or downloading.
H - Max inactivity by USER before disconnecting:
A user may log on to the system then go to answer the door or another phone and forget that he is
logged on, keeping other users from logging on. This parameter determines how long the system
should wait for the user to enter a character before automatically logging him off. The usual value
would be 10 minutes. If the system is waiting for input for more than 10 minutes, it disconnects the
user so that others can call. A warning is displayed one minute before cancelling his session.
When you select option "H", the system also asks you to specify the maximum inactivity by
network chat before disconnecting. If two systems are connected in chat by network chat, there must be
some activity (even if that activity is limited to users logging on and off) on either system to keep them
connected. This parameter indicates how long Bulletron should wait without any activity on either
system before disconnecting. You may have defined network chat to be connected for two hours, but if
no one logs on or off either system for this defined amount of time, then network chat will terminate
before the end of the two hour period. A normal value would be 15 minutes.
I - Minimum access level to delete
If a user has not logged on for a period (that period defined in option "J" below) and his access
level is less than or equal to this value, then his account will be deleted. If you want users to not be
deleted for inactivity, set their feature access level above this value. Subscribers with time or money in
their account are never deleted automatically.
J - Days to autodelete acct
Bulletron allows the system operator to specify when to automatically delete accounts rather than
restricting it to only 30 days. The number must be between 0 and 254 days where 0 means do not purge
accounts automatically.
K - Days to autopurge msgs
The number of days to autopurge public messages is changeable for each sub-board with the
"PB" command. This parameter is used, however, to autopurge private files and to purge mail to/from
deleted accounts. The number of days must be in the range of 1 to 254. If the number of days is zero,
then the system will not purge files or orphaned mail. Bulletron will purge personal upload files (files
on the personal mail download directory with a file name of the form "account.@nn") if the time
between the upload date (not the date the user downloaded it) and the current date exceeds the days
defined here.
L - Description lines
This parameter enables or disables the 3-line description for each user. Enter "Y" if you want
your system to prompt for and display the user description, or "N" if you do not want to use this
facility.
M - System Password
Some systems are very popular and get many calls from people with various interests. If your
BBS is designed for specific interests, such as a camera club for instance, you may want to limit the
system to only those people interested in cameras. In this example, set the system password to
"camera". If you specify a system password, then when a new user logs on, the system will prompt him
with the following message: "If you know what this bbs is about, then you also know the password.
Enter the system password:" If the user enters the password you specify, then he will be allowed to set
up an account; otherwise, the system will disconnect him. The purpose of this is to limit the number of
new users when the system becomes too busy. By forcing people to know what the system is about to
get on, you reduce the number of "one time callers". If the system password is blank, the prompt will
not be asked and anyone can set up an account.
You can also enter "*" for the password. Bulletron will prompt the user for a password, but will
accept any password. It will then save that password in the user's record. The SYSOP can view the
user's record with the "WA" command and see what password was used to log on. This can be useful to
give certain users access to special boards or to trace where users heard about the system. If you use
different passwords in various advertisements, then you can find out which ads are bringing in the most
users. You can also create a "BADPSWRD" message (see "Customizing Menus and Prompts") to
present a menu of system passwords to the user if he does not know any system password, then let the
system automatically assign his access levels and SIGs based on the system password he selects.
The "PXS" system operator command allows the SYSOP to define multiple system passwords
with a separate access level and preset SIGs for each. For instance, you may have defined a system
password as "CAR" so that if a new user uses "CAR" for the system password, then his default access
level would be 15 instead of 10 and he would automatically have access to the "CAR" SIG.
You can also specify "#" as the system password. This will make Bulletron check the system
password file, as with "*", but unlike "*", will not let him set up an account if he does not enter a
recognized password. You would not likely create a "BADPSWRD" message if you specify "#" for the
system password.
N - BBS Name
This is the name that will appear in the salutation and on menus periodically. It can be at most 20
characters in length.
P - Place to prompt MMQ
Some system operators want to prompt their users to answer the questionnaire when they select a
sub-board that has the questionnaire, while others want to prompt the user only when the user enters a
command that checks someone else's questionnaire. Enter "B" if you want the user prompted to
answer the questionnaire, or "M" if you want the user to be prompted only when he enters an "M"
(Matching) command.
R - SS/RS command access level
This is the feature minimum access level that a user must have to access the searching functions
of the "S" and "R" commands. String searches can consume a lot of system resources, making other
users wait. You may want to restrict access to this feature to subscribers only.
S - MS/MP command access level
This is the minimum feature access level that a user must have to access the matching or locator
functions of the "M" command. It controls the MS/MP command even if a user can access the rest of
the "M" commands due to the access level of the "M" command on the board level. Like string
searches, matchmaker searches can be time consuming, and you may want to restrict the use of these
commands to subscribers only.
T - WS command access level
This is the minimum feature access level that a user must have to perform string searches of
people's personal descriptions, using the "WS" function of the Who command.
U - C command access level
This is the minimum feature access level that a user must have to access the chat commands.
This command is only applicable on multi-user systems. There is no one else to chat with if you only
have one phone line!
V - Database access level
This is the minimum feature access level that a user must have to be able to access the application
specific database feature. If you are not using the database feature, set this access level to -1 and the
files will not even be opened.
W - /BRING access level
This is the minimum feature access level that a user must have to be able to access the "/BRING"
command in chat. Some users can be really annoying, calling others into chat with the "/BRING"
command, particularly if you have any users in the 12 to 15 year old age group.
X - Utility/help board
This parameter is the 3 character abbreviation for the sub-board that will contain your menus,
help messages, questionnaires and prompts.
Y - Allow anonymous messages
This allows the SYSOP to disable the "EY" and "E ANON" commands which allows users to
enter anonymous messages (and anonymous comments). The SYSOP is always shown the originator,
even on anonymous messages. Anonymous boards will still function even with this parameter set to
"N". Anonymous private mail can be particularly annoying when it is of a sexual or threatening nature.
Z - Disable Bell
Bulletron rings the bell (beeper) on your computer when a call is received, rings the bell on the
user's computer when he successfully logs on, and can make a special ring when a new user logs on.
This option allows you to disable both logon bells, or enable the new user bell. Enter "Y" to the first
prompt to disable the bell when a call is received or "N" to allow the bell to ring. Enter "Y" to the
second prompt to disable the bell when logon is successful, or "N" to enable it. Enter "Y" to the third
prompt to enable the new user bell. The new user bell is a very distinguishable sound that will ring
twice for the user's first call, three times for his second call, or four times for his third call. The purpose
of this is to call attention if there is a system operator on duty, to monitor that user and offer assistance
if he seems lost at first. Even if these bell tones are enabled, the "sysop available to chat" command
must be selected in the Control Window before the bell will ring. Therefore, you can turn the bell on or
off from the Control Window rather than changing this parameter.
1 - Default Session Controls
"Session controls" are operating parameters for Bulletron sessions that each user can set
according to his own preferences. To spare the user a lot of confusing questions when he first sets up
an account, Bulletron lets the SYSOP define a set of default session controls that he feel will be right
for each new user logging onto his system for the first time. As the user becomes more knowledgeable
about the system, he eventually finds the "N" command and modifies his session controls to suit his
own style. Here, Bulletron prompts you with the same questions that it would ask a user if the user
selected the session controls option of the "N" command. The parameters that you can specify are:
Pause after every 22 lines - Answering "Y" makes the user press [ENTER] to continue each
time that his screen gets full; answering "N" lets the user's screen scroll freely.
The "N" answer is generally selected by users who capture their session to a
buffer for off-line reading later.
Initial command "R" instead of "S" - This determines whether Bulletron displays the full text
of the new messages when a sub-board is selected, or just shows the message
titles. See "Summary Commands", in the section above on "Setting up
sub-boards".
Show menus and headings - Once the user knows the Bulletron commands, he can save time
by turning the menus off. He can still enter "?" at any time to display a menu if he
forgets something.
Show board introductions when entering a board - After a new user knows the subject matter
on each sub-board, turning off these introductions saves a lot of time.
Prompt for next sub-board if no new messages - Some users get lost and assume that if there is
no new messages on the first sub-board, that there is no new messages anywhere.
This prompts them to select other sub-boards and look for messages there.
Experienced users will turn this off and use the "SB" and "RB" commands.
Enable chat shell for novice users - Novice users sometimes have trouble getting into chat.
This bypasses the chat command and gives them a simple way of getting into chat
but prevents them from using the other powerful features available while in chat.
Confirm message deletion - Asks the user "are you sure?" before deleting a message.
Block "/C ALL" commands - If someone logs on and sees that no one is in public chat, then he
can use the "/C ALL" command to broadcast a message to all the other users to
entice them into public chat. Some users may find this irritating and this option
allows them to block those solicitations.
Do a WO LONG rather than a short WO during logon - This shows the name, location, and
3-line description of users online at logon, rather than just the account codes.
Disable entering commands while menu displays - This disables the HOT KEY function.
Prevent line blanking during screen pause - This prevents Bulletron from sending a series of
backspaces to blank out the pause message and saves transmission time.
Disable Random Messages - You can create special messages on your "utilities" sub-board
that the system will display to users randomly just prior to a main system prompt.
If the user chooses to save time by not receiving these, then he can answer "Y" to
this option. However, you, as the system operator can override this, forcing users
to receive some or all of these messages, using option "4" of the "PXP" command.
Do a FC During Logon - The "FC" command presents the user with a listing of files that are
new to your system since his last logon. In most cases, you will set this to "Y"
and let the user disable it later if he wishes, as it entices people to spend time
downloading files.
Disable All Graphics Permanently - If you have set your system to auto-sense ANSI and/or
RIP graphics (see option "9", below), then some long distance users may prefer to
always use straight ASCII to cut down on long distance phone time. Usually, you
will set the default for this to "N" and allow users to change it to "Y" if they
desire.
These values become the defaults for new users. After each question will be a (Y/[N]) where the
number in [] such as [N] is the current default value which will be selected if the user presses enter
without entering a "Y" or "N".
2 - Files Access Level
This is the minimum feature access level that a user must have to execute the "D", "U" and "V"
commands. You may want to occasionally set this very high to block access to your file areas while
you are doing maintenance on your file libraries. You may also find this necessary if the disk drive
containing your files fails, or if your files are on another computer on a LAN, and the connection to that
server is broken.
When you set this option, a second question is asked , whether or not you wish the system to
delete descriptions of files that no longer exist during the daily purge. In most cases, it is convenient to
have these purged so that users are not presented with descriptions of files that no longer exist.
However, should your files be on a remote server on a LAN, and that server is not accessible when the
purge time comes, then you do not want the system to automatically delete all of your file descriptions.
3 - Activate message read counter
This activates a counter each time a message is read so the user knows how often a particular
message has been read. It will be slightly inaccurate if two users are reading the same message at the
same time, or the reader exits the message with "Y". It also slows Bulletron down since every message
must be rewritten even if no comments were added. Consequently, this option is NOT recommended on
those large systems with a lot of message reading activity due to performance degradation.
4 - Show status of ALL lines
If a user logs on with "/Invisible", if a user is invisible due to board separation, or if lines are in
use with outside features, it is possible for the system to appear empty to a caller when actually it is
quite busy. This parameter provides the SYSOP with the option of leaving "invisible" lines truly
invisible, or showing "in use" on lines that are being used when someone does a "WO" command. If
the SYSOP decides to show the true status of lines being "in use", then a caller will see that the system
is busy but he will not know who is online.
5 - Allow account change (Y/N)
Once a user has set up an account, he cannot normally change his account code. The reason for
this is that 1) the user would not get mail addressed to old account, and 2) the user could send some
undesirable mail or illegal information and change his account again so that the SYSOP would not
know who actually entered the message. There are some circumstances when the SYSOP may want to
allow users to change their codes. This option allows the SYSOP to turn on or off that capability. If it
is turned on, the user can use the "N" command to change his account code. If it is turned off, the user
cannot change his account code REMOTELY, but it can still be done LOCALLY. A SYSOP may not
want to allow all his users to be able to change their codes, but the sysop could change a specific user's
code by logging on locally as the user and change it. Remember, a user will NOT get mail addressed to
his old account if he changes his account code. The "MENUN" message on your "utilities" sub-board
should be modified to add the entry for "option 0 - Account Change" if you enable this feature.
6 - Personal Mail board
This parameter is the 3 character abbreviation for the personal mail sub-board that you set up
with Installation/Customization Menu function "B". Bulletron routes personal mail to that sub-board
no matter what sub-board the user has selected when he enters the message. The Enter Command
Access Level that you set for your "personal mail" sub-board ("PB" command) controls whether or not
people can enter personal mail regardless of their current sub-board selection. For example, suppose
that a user with a feature access level of 10 selects a sub-board which has an Enter Command Access
Level of 100, but the Enter Command Access level of the "personal mail" sub-board is 10. That user
would be able to initiate personal mail on the high access level sub-board, but not post public messages.
7 - Alternate disk drive [*]
The default directory on this disk drive will receive the "BBSLOGmm.DAT",
"DELETEME.TMP", and any ".BAK" files which Bulletron creates. This must be set to a valid HARD
DISK drive, not a RAMdisk and not a floppy drive. Put a "*" here if you want Bulletron to use the
drive that was current when the BBS was last started.
8 - O (Outside Features) command access level
This is the minimum feature access level that a user must have before the Outside Features
(doors) Menu will display to him. Each feature on the Outside Features Menu has a separate access
level also. This feature is used to disable all Outside Features to all users.
9 - ANSI Graphics
You have three choices for this option; "N" for straight ASCII, "Y" to enable support for ANSI
graphics, or "R" to enable support for both ANSI and RIP graphics. The ANSI standard is a proper
subset of the RIP standard, so you cannot enable RIP without ANSI. If you answer "Y" or "R" to this
question, then the BBS will prompt you with additional questions:
Simulate ANSI locally (Y/N)
If you are using a color monitor and want to see what the user is seeing on your own screen,
answer "Y". This makes the BBS run a little slower when you are monitoring some user's session.
Bulletron does not attempt to simulate RIP graphics on the local console because the CPU time
required to draw the complex graphics would be prohibitive.
Auto-Sense ANSI Capability
If you answer "Y" to this question, the Bulletron will send the sequence "ESC[6n", which is an
ANSI cursor position query. It the user's terminal or terminal emulator program responds with a cursor
position report within two seconds, then the system will automatically enable ANSI graphics for the
session. If you answer "N" to this question, then the system will ask the user whether or not he wants
ANSI graphics for the session.
Auto-Sense RIP Capability
If you answer "Y" to this question, the Bulletron will send the sequence "ESC[0!", which is an
RIP revision level query. It the user's terminal or terminal emulator program responds with a RIP
revision level report within two seconds, then the system will automatically enable RIP graphics for
the session. If you answer "N" to this question, then the system will ask the user whether or not he
wants RIP graphics for the session. Auto-sensing of RIP capability occurs before auto-sensing of ANSI
capability because RIP is a superset of ANSI. Anyone who has RIP capability has ANSI capability, but
not vice versa.
Allowing Bulletron to auto-sense graphics modes can make your system easier to figure out for
novice users, but it can greatly annoy experienced users who know that the overhead imposed by
graphics controls adds to their long distance phone bill. For those users, there is an option in the "N5"
command that allows them to disable all graphics for their account, regardless of what the system
auto-sensed. If a user selects this option, then he will see only your logo screen in graphics mode,
because the logo screen is displayed before he enters his account code.
For a user to be able to see the ANSI graphics, he must be using a terminal program that will
recognize and process the ANSI graphic escape sequences. Three such terminal programs are
Qmodem, Telix and Procomm, though there are many others. The Microsoft Windows terminal
emulator program is one notable exception that is not capable of displaying ANSI graphics properly. If
a user is not calling with a computer that supports ANSI graphics and he answers "Y" to the question,
then he will probably get a lot of strange characters on his screen. RIP graphics can only be viewed
with a program named RIPterm, a product of TeleGrafix Communications, Inc.
0 - # of Downloads/uploads
Bulletron maintains a count, for each user, of the number of kilobytes downloaded and the
number of kilobytes uploaded. The ratio of the number of kilobytes downloaded to those uploaded is
defined here. If the user's ratio exceeds this value, then he will not be permitted to download more. If
the user uploads a garbage file just to allow more downloading, then the SYSOP can adjust the
download/upload counts for that user with the "+8" command. The calculation is always rounded
upward to the next highest increment of 1024 bytes, i.e., downloading a 3,500 byte file will be treated
as 4,096 bytes downloaded. Bulletron maintains the counts of Kbytes downloaded and uploaded as
16-bit integers. If a user uploads more than 65 Mbytes, and his count of Kbytes uploaded overflows,
then it is set to the number of Kbytes in the current file and his count of Kbytes downloaded is cleared
to zero so that the user is not inhibited from downloading. If a user downloads 65 Mbytes, and his
count of Kbytes downloaded overflows, then 65,636 is divided by the current download/upload ratio
and that amount is subtracted from the user's Kbytes uploaded.
5.4.6. Extended System Parameters
From the main system prompt ("What next?"), enter "P" to access the Installation/Customization
Menu, then enter "X" to access the Extended Features Menu, then enter "P" to access the Extended
System Parameters Menu, or simply enter "PXP" from the main system prompt to save time. This
menu allows you to change the following features:
A - Verify Questionnaire
If you set this option to "Y", then all new users will be required to answer a questionnaire when
they first set up an account. The questionnaire itself is located on your "utilities" sub-board as a
message to account "VERIFYQU". The message that is formed from the questionnaire and the answers
is sent to the SYSOP account in private mail. Once a user answers this questionnaire, an indication is
set in his account record. If the SYSOP wants the user to reanswer the questionnaire because the user
did not answer some of the questions, then the SYSOP can reset that indicator using the "+9"
command and the user will be required to answer the questionnaire again the next time that he logs on.
There are three possible responses to this question. "N" means that there is not a verify questionnaire
so none will be prompted. "B" means prompt both new and existing users if the indicator is not set, and
"Y" means only prompt new users.
There are two common uses for the verify questionnaire. In a dating service type system, where
three line personal descriptions are used and anonymity is fairly important, the system operator may
use the verify questionnaire to obtain confidential registration information from his applicants, such as
real name, address, phone number, etc.. Voice callback verification of new applicants is crucial to the
success of any system that supports a degree of anonymity. It is the only proven method of avoiding
prank calls.
In a tech support system, a mail order sales system or a real estate matchmaker system, where
anonymity is a liability because the users are trying to advertise, it is common to use the verify
questionnaire to collect marketing information on users' needs so that the system can adapt to meet
them.
An alternative to the verify questionnaire, which may be more useful for some SYSOPs, is to set
up a matchmaker questionnaire for the first sub-board that the user sees, either multiple choice, essay,
or combined matchmaker, and force all users to answer the questionnaire the first time that they select
that sub-board ("PP" command, option "P"). Then set the access level for the "M" commands on that
sub-board very high. This will force the user to answer the questionnaire and the user can use "MI" to
re-answer the questionnaire, but he cannot use the "MA", "MS", or other search and view commands.
The SYSOP can use the "MA", "MS", and "MP" commands, however, to perform demographic studies
on his user base. The disadvantage of using the matchmaker questionnaire for verification is that the
sysop is not notified automatically in private mail. That makes it difficult to call new users and voice
verify them. It is possible to use both the verify questionnaire and the matchmaker at the same time.
B - Default File Name Extension
As a convenience to your users, if most of the files on your BBS have the same file name
extension, such as ".ZIP", ".GIF", etc.., then you can enter that here and they don't have to type it when
they specify the name of a file to download or upload. Enter all space characters to not assume any
default file name extension. This file name extension is given to every new user account. Each user
can later change his own default file name extension using the "N" command. Be sure to enter the
leading period when you specify the default file name extension.
C - 3-line description or name/address
An alternative to having a verify questionnaire to have the BBS keep the users' name, address,
and telephone information in its internal database for rapid retrieval. This allows the user to update the
information with the "N" command. The address and telephone numbers are only seen by the SYSOP,
not by users or assistant SYSOPs. Users can see the name and city/state, but not the address or
telephone numbers of other users. This information is maintained in the area which normally holds the
second and third description line of a user. This information can be extracted with a function in the
BBUTIL2 program to create a file to be used for mailing labels. There are two possible prompts for
this parameter: "3" means use the 3-line description, or "N" means use the name/address/telephone
facility. There is also a facility in BBUTIL2 to allow you to reset these areas if the sysop decides to
switch from 3-line to name/address while there are users already on file. Bulletron will prompt for
either the description or the name/address if these fields are cleared.
D - Allow BBS to call back users
In some instances, it is desirable for the SYSOP to assume the charge for the telephone call. In
this case, the user logs on, uses the "N" command, option "T", to have the system call him back, and
gives the system the telephone number which to call. Bulletron will then disconnect the user, wait 6
seconds, dial the number which the user gave him, and attempt to reconnect with the user. The user
will be prompted for his password before allowing him to reconnect. If you want to allow Bulletron to
call users back, enter "Y" for this parameter, otherwise, enter "N". Note: if you do allow callback,
change "MENUN" on your "utilities" sub-board to show option "T".
You can also use this feature to allow new users to validate their own accounts on their first call.
If you set this option to "V", then, when a user successfully executes the "NT" command, the system
automatically assigns new access levels, SIGs and flags to his account. The system also records the
phone number that he dialed in his account record, in a field that the full SYSOPs can view using the
"W" commands. The dial-out event is recorded in the system log file (BBSLOGmm.DAT) in case you
want to bill charges for the call. Individual phone lines can be set to not allow callback, or only allow
callback to local phone numbers, using the "PL" command. The access levels, SIGs and flags assigned
by this function are set by options "U", "V" and "W" of the "PX$" command, respectively. Keep in
mind, if you use this function, that it is not as foolproof as genuine voice validation; that is, it can not
prevent children from accessing adult materials if your system carries such materials. Therefore, you
will want to set the assigned access level, SIGs and flags in such a way that users do not gain access to
restricted materials in this manner. If you allow long distance calls, then you will also want to restrict
the time limits for access levels assigned by this function. Option "E", below, lets you set a maximum
access level for this function, as well as a minimum access level, so that users can not execute the "NT"
command again, after they have done it once. If you use the "V" setting for this option, the system will
send you a message in private mail each time that a user validates his account in this manner, telling
you the account code and the number that he dialed, o that you can decide whether or not you want to
assign higher access level, or delete the account.
E - Call back access level
If you DO want the system to call users back, you may restrict it to only those users who have a
specific access level or higher -- such as SYSOPs or assistant SYSOPs only. Enter the feature access
level required to use the call back feature here.
If you select the validation option for callback, setting "V" for option "D", above, then you will
also be prompted for a maximum access level here. Only users with an access level greater than or
equal to the minimum, and less than the maximum will be allowed to use the "NT" command. If, for
example, you set the default feature access level for new accounts to 10, set the minimum access level
here to 10, set the maximum access level here to 15, and assign access level 20 on successful callback,
then new users will only be able to use the callback function once.
F - Limit 300 baud
With most users calling in at 9600 Baud or above, some systems prefer to limit 300 Baud callers
to certain hours to prevent them from using a lot of time downloading at the slower speed. You can set
the hours during which 300 Baud callers will be allowed on. If they call outside these hours, they will
be sent a message, at 300 Baud, telling them what hours they may call back. Enter the begin time and
end time that 300 Baud callers are allowed online. If they can be on during any hour, enter 0 for the
begin time and 2400 for the end time. If you want to restrict them to the time between 1:00 AM and
5:00 AM, then enter 0100 for the begin time, and 0500 for the end time.
G - Enable Bulletins
See the section titled "Bulletins" for a complete discussion of this feature. Because this feature
requires a great deal of disk overhead, it is best to disable this feature here unless absolutely necessary.
Using Bulletron's Message-of-the-Day feature will accomplish the same functions without the disk
overhead. The value entered here will be "Y" to enable bulletins, or "N" to disable the bulletin feature.
H - Time between retries
If the system tries to dial another system in the network to transmit messages and the other
system does not answer, then Bulletron needs to wait for a period before redialing. This parameter
determines how long it should wait before redialing. Normally this would be 10 minutes. If this time
is zero, then no automatic network dialing will occur.
I - Max retries
This parameter determines how many times Bulletron will redial a system in one day before
giving up. A normal value would be 3 tries. Note that, if this value is zero, no automatic network
dialing will occur and networking must be done manually from the Control Window with the "="
command.
J - Allow remote new accounts
Some corporate BBS operators may not want remote callers to be able to set up an account.
Enter "N" at this prompt and Bulletron will not accept new accounts remotely. It will allow setting up
new accounts from the local console, however.
L - Power fail minutes
If your computer is connected to an uninterruptable power supply that can signal the computer
when it switches to battery power, and you have software installed to shut down the computer when
this signal occurs, then set Bulletron to enter a controlled power-down sequence when this occurs. To
trigger the shutdown, your power fail software must execute a utility program named PWRFAIL, which
is provided with Bulletron. The PWRFAIL program sends a signal to Bulletron that initiates the
power-down sequence. Once initiated, the system will shut down after the number of minutes specified
by this setup option. During those minutes, each minute, the system automatically broadcasts a
message to all users on-line warning them how many minutes remain until shutdown. If power is
regained before the system shuts down, then you can execute another utility program named PWROK
to abort the power-down sequence. The PWROK program returns a completion code of zero if the
system was not down already, or 1 if the system was down and needs to be restarted, or 2 if it could not
execute due to some system error.
M - SS/RS Search (S)ummary only or (M)essage text also
The "SS" and "RS" commands normally search the 32-character message summary for a string,
and show the summary line or display the entire message if that string is found in the summary. Some
SYSOPs would prefer that the entire message text, not just the summary be searched for the string.
Since it takes a lot more time and disk activity to search the entire message, this is a SYSOP
configurable option. If the SYSOP is able to keep an adequate summary of the message in the
32-character summary field, then it is fastest to use "S" to search only the summary. If a more thorough
search of the entire message is desired at the expense of system performance, then enter "M" for this
option. If the messages are well divided among sub-boards so that there are only a limited number of
messages to be searched, then searching the entire message may not impose a significant delay.
N - Board abbreviation for separation
Sometimes it may be desirable to run a single BBS for two purposes such as a camera club and a
stamp club and the SYSOP may not want the camera club members to know that the stamp club
members are also on the system. This can be accomplished by setting up one of the clubs as a SIG,
such as CAM for camera. Use CAM as the board abbreviation for separation. If you do this, then those
users who have CAM in their SIG list will not see those without CAM, and those without CAM will
not see those with CAM in their SIG list.
"Class" code on each user is an expanded form of "board separation". It allows up to 36 classes,
A-Z and 0-9. The "+D" command allows the SYSOP to change a user's class. The "PXS" command
for system passwords sets the class for new users. If a class is present in the user's account record, then
the user will not be visible to users of a different class. This provides even more separation than the
board separation logic which still exists for ease of use and compatibility with prior versions. You can
use function "B" of the BBUTIL2 program to reset the class indicator in all account records to null.
O - Invisible access level
Users can logon with the "/INVISI" option whereby they cannot be seen by other users doing a
"WO" command. This can be useful for users who are frequently called into chat and do not have time
to answer their mail. This feature can also be abused by some users. To control who can and cannot
use this feature, the SYSOP can set the minimum feature access level required to use the "/INVISI"
command.
P - Limit scope of "FG" command
A user can use the "FG" command to perform string searches on your Download Database. If the
database is large, it can take several hours to perform a complete search. If you set this parameter to
"N", then Bulletron automatically limits global file searches to just the current sub-board if you have
more than 2,000 records in your Download Database. If you set it for "F", then Bulletron will search
the full database, regardless of how many files you have. If you set it to "B", then Bulletron will search
only the current sub-board's directories, regardless of how many files you have.
R - Days before passwords expire
If you set this value to zero, the Bulletron will never force a user to change his password. If you
set it to some nonzero value, then, if a user logs on, who has not changed his password for that many
days, the asks him to select a new password. The new password that the user chooses must be different
from the old password. Each user is also given a warning when his password is within seven days of
expiration.
S - Path ID for private files
If you place a valid path ID in this field (as set up with the "IL" command, then whenever a user
uploads a file to this path, Bulletron forces it to become a private file. If the file's name does not have
an extension of the form ".@nn", then Bulletron prompts the user for the account code of the recipient
as the upload finishes. If you make a directory on your "personal mail" sub-board such that the upload
path and the download path are the same, so that individuals can send files to other individuals without
your having to validate the files and move them from the upload directory to the download directory,
this feature prevents users from abusing this directory by uploading non-private files.
T - Upload credit (cents/Kbyte)
If your system bills by cents or minutes, you may want to have your BBS automatically credit
user accounts as an incentive to encourage uploading files. The downside of this is that some people
may upload "junk" files to avoid paying for service. Setting this parameter to zero disables automatic
upload credit.
U - FIDO Address [0:0/0.0]
If you plan to use FIDOnet for wide area networking, then you will need to set this field. This is
the address by which your BBS will be known on the worldwide FIDO network. Your FIDO address is
assigned to you by your local FIDO coordinator. In general, if you don't know who your local FIDO
coordinator is, you can find out by asking the operators of other BBS systems in your area. If that does
not work, call our tech support BBS and use the "L" command to browse the FIDO node list to find
nodes in your area. The same node list database is also distributed with demo copies of Bulletron for
OS/2, and you can perform the search locally if your demo includes the "BBFNODES.DAT" and
"BBFNODES.IDX" files. These files can be more than twenty megabytes in size, so some people
remove them before redistributing the demo.
V - FIDO Password []
This is the password that your BBS will require to be present in mail packets received from other
FIDO systems. This password is NOT used during the logon procedure for remote FIDO nodes. The
purpose of this password is to validate packets that may have been forwarded from a third party, not
originated at a remote node with which you are communicating directly. Nevertheless, whether the
packets originate at a system which you contact directly, or are forwarded from some other source, they
must have this password or your system will throw them away. This prevents hackers from networking
to you with an FTS-0001 mailer, which does not support password checking during logon, and sending
your users counterfeit mail. You can disable this checking by entering spaces in this field.
W - Maximum Accounts per Phone Number [3]
If you have enabled the "NT" command for callback account validation (see "PXP" command
functions "D" and "E", and the "PX$" command for more details), then this parameter controls the
number of accounts that can obtain access to your system using the "NT" command. A value of 3
might be a good choice if you anticipate that individual households might, for example, want to register
accounts used by a husband, a wife, and one child. You may set the value higher or lower depending
on the specific situation for your BBS. A value of zero means "no limit".
X - Default FIDO Compression Procedure []
Primitive FIDOnet compatible systems, which adhere strictly to the FTS-0001 specification do
not identify themselves to each other when they exchange mail packets. This makes it impractical to
determine the type of data compression (ARC, ZIP, ARJ, etc..) that may be in use for mail packets. If
you plan to exchange FIDO mail packets with such a system, then you can talk with the operator of the
system and determine the compression method he is using, if any. Then write a batch procedure (a
".BAT" file if it executes in DOS mode or a ".CMD" file if it executes in OS/2 mode), and enter the
name of that procedure file here. Enter the file name and file name extension. Bulletron will attempt to
execute your procedure in DOS mode if the file name extension is ".BAT", or in OS/2 mode if it is
".CMD". Do not enter any path information. Bulletron will expect to find that file in the directory
from which the BBS was started. The section, later, entitled "Compressing and Decompressing FIDO
Packets" explains what commands you should put in this batch procedure. That section also explains
how you can override the default for this parameter for specific FIDO nodes.
Y - Default FIDO Decompression Procedure []
This parameter is similar to option "X", above, except that it specifies the batch procedure used
for decompressing mail packets when the identity of the node is unknown.
Z - Maximum Tries for Callback [3]
If you use the "NT" command for callback account validation, then this parameter specifies the
number of times that the phone number given by the user is re-dialed if re-connection is not achieved
on the first attempt. This retry count is also used by the "NT" command when it is used to reverse the
charges on a call rather than for account validation.
0 - File Notification Sysop []
If this parameter is not blank, it can be used to specify an account code that receives system
generated messages notifying of file uploads and downloads. Several other setup options can also
affect the account that receives these messages. The complete order of precedence, when a file is
uploaded to, or downloaded from, sub-board "xxx" is:
"SIGxxx"
if that account does not exist, then
"ASYSxxx"
if that account does not exist, then
"SYSxxx"
if that account does not exist, then the account specified in "PXP", "0" (this parameter). If that account
does not exist, then "SYSOP"
1 - VERIFYQU Response SYSOP []
If this parameter is not blank, it can be used to specify an account code that receives responses to
VERIFYQU questionnaires. Several other setup options can also affect the account that receives these
messages. The complete order of precedence, when a new user sets up an account depends on the first
sub-board that the new user can access, by sub-board number. Assuming that a new user sees
sub-board "xxx" as the first one that he can access after setting up his account, the complete order of
precedence is:
"SIGxxx"
if that account does not exist, then
"ASYSxxx"
if that account does not exist, then
"SYSxxx"
if that account does not exist, then the account specified in "PXP", "1" (this parameter). If that account
does not exist, then "SYSOP"
If you are using system passwords to automatically classify new callers into special interest
groups, then you can set up your system so that the first (default) sub-board for each class of users is a
SIG sub-board, and create "SIGxxx", "ASYSxxx" or "SYSxxx" accounts for each class, so that people
helping you manage these classes receive the new account applications directly in their private mail.
2 - Wrap File Descriptions (Y/N)
The default is "Y", which means that the text in file descriptions will be automatically line
wrapped whenever a user executes an "F" command. In some cases, you may want to disable this line
wrap so that your system can display graphically formatted file descriptions. Remember that,
whichever mode you select will be used for all file descriptions in your system.
3 - Virus Scanning Procedure []
If you leave this field blank, then the system performs no automatic virus checking for newly
uploaded files. You can place the name of a command procedure (batch) file in this field. If the file
name extension is ".BAT" then the system will try to execute it in a DOS session. If it is ".CMD" or
anything else, then the system will try to execute it in an OS/2 session. You can put any valid DOS
batch file commands or OS/2 REXX commands in this procedure that you wish.
The BBS program will pass the following four parameters to your command procedure:
%1 - the fully qualified drive and path of the file to be tested;
%2 - the file name, with no extension, of the file to be tested;
%3 - the file name extension of the file to be tested;
%4 - the account code of the person that uploaded the file.
%5 - the task (line) number that the user is on.
The file name extension is delivered as a separate parameter from the file name for the benefit of
DOS batch procedures. With the OS/2 REXX command language, it is fairly simple to extract the file
name extension to distinguish between ".ARC", ".ZIP", ".LZH", etc.., files. In the event that you wish
to execute an unpacking or virus checking program that is not yet available in an OS/2 protect mode
version, this makes it easier for a DOS batch procedure to determine the unpacking method. You can
easily reassemble the full file specification in a batch procedure using a syntax like
PKUNZIP %1\%2.%3 \TEMP\*.*
The user account code is delivered so that you can record the account code of the person that
uploaded the file, if you wish. The line number is delivered as the fifth parameter so that your batch
procedure can be written to distinguish files when two or more uploads happen simultaneously.
If the file fails the virus scan, or your procedure decides to reject the file for any other reason,
then your batch procedure should simply delete the file. When your batch procedure terminates, the
BBS program will check to see if the file is still there. If it is not, then the BBS will warn the user that
he uploaded a virus infected file and not give him credit for the upload. The BBS program records a
message in the system log every time that the virus checker deletes a file, recording the name of the file,
the account code of the person that uploaded it, and the date and time of the event.
The ".CMD" or ".BAT" procedure that you write to perform virus checking can include
commands to unpack archives, execute several virus checking programs, check for duplicate files, and
repack archives with your BBS logo in the archive comments. Be most certain that it does not change
the name of the file, however, or the BBS program will think that you deleted the file because it had a
virus in it. In other words, you can not change ".ZIP" files to ".ARJ" files using this procedure.
4 - Force random messages below
If you leave a space here, then users can disable all random messages, "RANDOM0" through
"RANDOMZ" (see section 5.4.10). If you want to prevent users from disabling some of the random
messages, such as if you are selling advertising in those messages, you can place a numeral or a letter in
this field. A setting of "5" would force users to see "RANDOM0" through "RANDOM4". A setting of
"F" would force users to see "RANDOM0" through "RANDOME", and so forth. A setting of "[" (left
square bracket) would force users to see all the random messages.
5.4.7. Setting Time Limits
Bulletron provides four access levels for each user account:
1. A feature access level which determines which sub-boards, commands, and features he can
access;
2. A session time limit access level which determine how many minutes he can be online per
session and per day;
3. A chat time limit access level which determines how many minutes he can spend chatting per
session and per day; and
4. A download time limit access level which determines how many minutes he can spend
downloading per session and per day.
Bulletron also counts time spent during prime time separately from non-prime time. The hours
that determine prime and nonprime time are defined in the subscriber parameters.
You specify the time limits for the various access levels using the "PXT" command. You can
enter "P" at the main system prompt, select "X" from the Installation/Customization Menu, then select
"T" on the Extended Features Menu, or save some time by just entering "PXT" at the main system
prompt. Figure 5.4.7-1 shows a typical example of an Bulletron time limits table:.
In this situation, we have set up six basic access levels. We let unverified new users come on at
10, verified nonsubscribers at 20, people who subscribe by expiration date at 100, people who subscribe
by cents per minute at 200, company employees at 500, and system management at 1000. To
nonsubscribers (levels 10 and 20) we give a maximum session of 30 minutes (just enough to fill out the
verify questionnaire and read the subscription rate notice). For people who pay a flat monthly rate, we
allow an hour of prime time and three hours non-prime time, but limit their prime time sessions to more
than 45 minutes and their non-prime time sessions to no more that an hour and a half. To premium
subscribers, who pay by the minute, we let them stay on as long as they like. Company employees and
systems management staff also get unlimited time per day and per session. People are only placed
below level 10 as a punitive measure, whereby they are deemed "troublemakers" and not allowed to log
on at all.
You may put extra, "in between", entries in the table to be used for chat time limits or download
time limits, as well as the regular session time limits. For instance, everyone in our table above whose
access level is between 100 and 199 gets four hours total per day. You could make graduations of 109
and 119 in the table that have total daily limits of 1 hour and two hours, and assign the values 110 and
120 for chat time limit access levels. A person with a session time limit access level of 100 and a chat
time limit access level of 100 would have four hours total time per day, but only one hour of it could be
spent chatting. A person with a session time limit access level of 100 and a chat time limit access level
of 110 would have two hours of chat per day.
To set or change any of the entries, enter the "entry number" that you want to change - 1 to 12.
You will be prompted for the access level and times. The "combined minutes/day" is the total time the
user will be allowed online during the day regardless of how much time was spent in primetime or
nonprime time. It may be the sum of the prime and nonprime values, or it may be less. The access
levels must be in ascending sequence. Each access level entry in the table includes all users greater
than the prior entry, but less than or equal to the current entry. An entry with zero in the access level
field marks the end of the table if there are less than 12 entries used. The system operator is always
given 999 minutes per session and per day regardless of his access level.
To list the table, enter "L" when prompted for the entry to change. To delete an entry, just change
the other entries so that they are ascending access levels. When you are finished changing the table,
enter "Q" to quit.
Note: If a user is performing an "E", "MI", "U" or "G" command and his session times out, then
he will not be disconnected until he finishes that command.
5.4.8. Subscriber Parameters
Most system operators will charge their users for accessing the BBS. You can charge based on
minutes connected, or by expiration date, or a combination of both. At the main system prompt, enter
"PX" and then enter "$", or just enter "PX$" to get to the Subscriber Parameters Menu. This menu
allows you to change those parameters relating to the time and financial aspects of a subscriber-based
system.
Subscriber Parameter Menu
A - Subscriber logic (Y/N) [Y]
B - Method of timing (D)ate, (T)ime$, (M)inutes [D]
C - Activate billing logic (Y/N) [Y]
D - Prime time begins (HHMM) [1800]
E - Prime time ends (HHMM) [2359]
F - Prime time rate (in cents) [200]
G - Non-prime time rate (in cents) [100]
I - Cents/Minutes subscriber access levels [100/100/100/100]
J - Date subscriber access levels [100/100/100/100]
K - Expired subscriber access level [10/10/10/10]
L - Max total time for nonsubs [180]
M - Sat/Sun prime/nonprime [P]
N - Nonsub Phone# [(619) 346-1608]
O - Subscribers only begin time (HHMM) [1800]
P - Subscribers only end time (HHMM) [2000]
U - Access Levels Assigned at Callback [20/20/20/20]
V - SIGs Assigned at Callback []
W - Flags Assigned at Callback []
X - Additional Minutes for First Call [60]
Y - Build ALLUSERS.TXT [N]
Z - Free Trial Days [7]
0 - Verify Access Level [100]
Q - Finished, update file
The value in brackets ([]) is the current setting of the parameter. The value in parentheses is the
acceptable value or format of the parameter - HHMM means enter the hour and minute in 24-hour time.
Enter the letter corresponding to the parameter that you want to change.
A - Subscriber logic
This parameter enables or disables the subscriber logic. Enter "Y" if you want your system to be
a subscriber-based system or "N" if you are not charging users to use your system. If you enable
subscriber logic, then you do not need to update account records when a user's subscription runs out or
when he renews his subscription. Bulletron automatically raises and lowers the access level of an
account for each individual session according to the parameters described below.
B - Method of timing (D)ate, (T)ime$, (M)inutes
Enter "D" if you will be charging your subscribers based on an expiration date, or enter "T" if you
will be charging by time (cents per hour). When you charge by date, you will usually want to limit
each user to some maximum number of minutes per day, to avoid letting people "hog" the phone lines.
In a single user system, it is best to charge by date since users may find it difficult to get on to a busy
system during prime time. On a multi-user system, however, it is best to charge by connect time since
that method will discourage users from getting on in chat for long hours. You set and update the
expiration date or amount of money received into the user's record with the "+" command which is
discussed later.
Bulletron also provides an additional method for billing: "M" for minutes. With this option, the
system operator can put the number of MINUTES that a user can be online into the "cents remaining"
field of the user's record. When the time falls below 2 hours, the system automatically sends the user a
warning. It sends a different warning when his remaining connect time goes below one hour. You
write the warning messages in messages posted to pseudo-account codes of "2HOUR" and "1HOUR"
on your "utilities" sub-board. The "2HOUR" and "1HOUR" messages are also sent for the "T" method
of billing.
Bulletron also supports DUAL billing. This means that some subscribers can be billed by date
while others are billed by cents or minutes. If the user's date has expired but his cents/minutes
remaining are nonzero, then Bulletron assumes this subscriber will be billed based on cents/time, and
the minimum cents/minutes subscriber access levels (see option "I", below) are applied to his account
when he logs on. If the user's cents/minutes is zero, but his expiration date is still in the future, then
Bulletron assumes he is a subscriber by date, and the minimum date subscriber access levels (see
option "J", below) are applied to his account when he logs on. If a user's cents/minutes is nonzero AND
his expiration date is still in the future, then the minimum cents/minutes subscriber access levels are
applied to his account when he logs on. Once a user has expired, however, Bulletron does not know
whether he has expired based on time/cents or by date, so therefore there is only one "expired access
level", defined in option "K", below.
To use this DUAL billing facility, set the method of billing to "S" to have a mixture of cents and
date, or set the method of billing to "L" to have a mixture of minutes and date. "S" would be combining
the "D" and "T" options, "L" would be combining the "D" and "M" options.
C - Activate billing logic (Y/N)
This option allows you to temporarily suspend the deducting of money or minutes from account
balances. If you are a subscriber system charging by minutes or cents (as opposed to by date), you
would normally want this parameter set to "Y" so that the time or cents would be deducted from the
user's account when he logs off. You may want to have a subscriber-based system but still want to turn
off the billing logic as a promotion (if you wanted to not charge subscribers on Christmas, for
example). If you do not want Bulletron to deduct from a subscribers account, set this parameter to "N".
D - Prime time begins (HHMM)
You can separate the day into prime and non-prime time to charge different rates and encourage
users to call during less busy periods. Define the start of the prime time period here (in 24 hour time).
Most BBS's are busy from 6:00 PM to midnight so you would enter 1800 for 6:00 PM.
E - Prime time ends (HHMM)
Enter the time when the prime time period is to end. If it ends at midnight, you can either enter 0
or 2359 here. Entering zero means that prime time will begin at the prime time above and last for the
remainder of the day. There is no problem with making the prime time period go through midnight, as
in 7:00 PM to 1:30 AM, for instance.
F - Prime time rate (in cents)
This is the rate, in cents per hour, that will be charged to the user during prime time. The BBS
will calculate to the nearest penny when calculating the charge. The number should be an integer in
cents -- if you are charging $2.00 per hour, enter 200 here. At the change point between non-prime and
prime, or vice versa (see options "D" and "E", above), Bulletron automatically recomputes account
balances and updates the disk records for all users currently logged on when prime time begins or ends.
G - Non-prime time rate (in cents)
This is the rate, in cents per hour, that will be charged to the user during non-prime time. The
BBS will calculate to the nearest penny when calculating the charge. The number should be an integer
in cents -- if you are charging $1.25 per hour, enter 125 here.
I - Cents/Minutes Minimum subscriber access level
If a subscriber logs on and his access level is less than this value, then his level will
TEMPORARILY be set to this value for the session. This means you don't have to set and reset every
user's access level if they change from being a subscriber to nonsubscriber. The four values controlled
are the feature access level, the session time limit access level, the chat time limit access level, and the
download time limit access level. These values apply to users who have a nonzero cents/minutes
remaining value in their record. See billing methods "T", "M", "S" and "L" for option "B", above.
J - Date Minimum subscriber access level
If a subscriber logs on and his access level is less than this value, then his level will
TEMPORARILY be set to this value for the session. This means that you don't have to set and reset
every user's access level if they change from being a subscriber to nonsubscriber. The four values
controlled are feature access level, the session time limit access level, the chat time limit access level,
and the download time limit access level. These values apply to users who have a future expiration
date in their record. See billing methods "D", "S" and "L" for option "B", above.
K - Expired subscriber access level
If a subscriber's account expires, regardless of whether he was a subscriber by date or
cents/minutes, then Bulletron will set his access levels to these values. This provides a way for verified
accounts to have an access level above the default but less than that of a full subscriber.
L - Max total time for nonsubs
This is the total number of minutes (for systems that bill by cents/minutes) or the total number of
days (for systems that bill by expiration date) that a nonsubscriber is allowed online before either
becoming a subscriber. If his total time exceeds this value, then the "FREELOAD" message will be
displayed during logon. The "FREELOAD" message will only display to users with an access level
less than the minimum subscriber feature access level (see options "I" and "J", above).
M - Sat/Sun prime/nonprime
If you want Saturday and Sunday to always be considered "prime" time for billing purposes, then
enter "P". If you want the weekends to always be "nonprime" time regardless of the hour, then enter
"N". If you want prime/nonprime to depend on the actual hour even though it is a weekend, then enter
"X". In subscriber-based systems, set the log option (command "PP" option "C") to 1 to maintain an
audit trail of time/money in user accounts. This will allow you to list all activity on a particular account
with BBUTIL2 if the user questions his account balance.
N - Nonsubscriber phone#
If you are running a subscriber system and a nonsubscriber calls one of the phone lines which you
have marked as being for subscribers only (with the "IL" command), then the nonsubscriber will be
directed to call this telephone number. In some instances, you may want to put the number of a rival
BBS here!
O - Subscribers only begin time (HHMM)
If you want to limit the system during certain periods (such as the busy hours of 6pm to 10pm),
set the starting time for that period here (in 24 hour time). Therefore if you wanted only subscribers to
get on between 6:00 PM and 10:00 PM, then set this value to 1800.
P - Subscribers only end time (HHMM)
This is the end of the subscribers only period. If the period ends at 10:00 PM, then enter 2200
here.
U - Access Levels Assigned at Callback [20/20/20/20]
The four numbers specified for this option are the feature access level, time limit access level,
download time limit access level and chat time limit access level, respectively, that are assigned to a
user's account when he successfully completes callback validation using the "NT" command. You will
usually set the feature access level here higher than the default feature access level ("PP" command,
option "G"), to give the user additional privileges as an incentive to register his phone number using the
"NT" command. At the same time, you will set the feature access level for this option lower than the
feature access level for paid subscribers ("PX$" command option "I" or "J"). By setting the maximum
access level for the "NT" command ("PXP" command, option "E") higher than the feature access level
specified here, you can prevent users from using the "NT" command to validate their account more than
once.
V - SIGs Assigned at Callback []
This setup option allows you to specify up to ten SIGs that your system will automatically assign
to a new user when he successfully completes callback validation using the "NT" command. You
specify these by simply typing three letter sub-board abbreviation codes one after the other. For
instance, if you want to automatically give access to the "CAM" and "STM" special interest group
sub-boards, then you would enter "CAMSTM" here. In normal operation, the "+3" command is used
for modifying a user's SIG access list.
W - Flags Assigned at Callback []
This setup option allows you to specify up to ten flags that your system will automatically assign
to a new user when he successfully completes callback validation using the "NT" command. The
meanings of these special one letter flags are defined under the "+4" command, which is normally used
for setting and changing them.
X - Additional Minutes for First Call [60]
This value is added to a user's session time limit for his very first call. You can use this to give
first time users extra time to become familiar with your system. You can set it to zero if you do not
wish to give extra time on the first call. Occasionally, users make abuse this feature by setting up
multiple new accounts to take advantage of the free bonus, but in most cases, this bonus time will be
important to all first time users to fill out the new account application questionnaire.
Y - Build ALLUSERS.TXT [N]
If you use option "6" of the "PXP" command to make the system automatically build an ASCII
text file containing descriptions of all the files that your system has available for download, then you
can set this option to "Y" to make it also build a file of all the user accounts in the same directory.
Setting this option to "N" will prevent the "ALLUSERS.TXT" file from being built each day. If you
place spaces in option "6" of the "PXP" command, instead of a four character path-id, then the
automatic building of the "ALLFILES.TXT" and "ALLUSERS.TXT" files will both be disabled.
Z - Free Trial Days [7]
If you are using the "NT" command for callback validation, to allow new users to increase their
access level by registering their phone number, then you can also give the user a specified number of
days of full subscriber access using this option. This function can only be used if your system bills by
date, or by some combination of date and cents or minutes. It has the same effect as using the "+B"
command to set the user's expiration date the specified number of days in the future.
0 - Verify Access Level [100]
Accounts with a feature access level less than this access level are invisible to everyone except
the system operator. This prevents jokers from setting up accounts with a personal description like, "Hi!
I'm Joe Smith and I work at a day camp and LOVE to play with little boys!", etc.., which tends to bring
law suits from Joe Smith when he sees your system publishing it. If the default feature access level for
new users is below this level, then no one except the SYSOP knows that a user is on the system unless
the user has been verified by the SYSOP. If the new user's access level is less than the verified access
level, he will not display to other users in any "W" or "WO" command, he cannot receive mail or chat
calls from other users, and is generally "invisible" to anyone except the SYSOP. Raising his access
level to the verified access level or higher will allow him to function like all the other users.
5.4.9. User Classes and Special Interest Groups
A single installation of Bulletron Professional BBS Software for OS/2 can be subdivided into
user "classes"; that is separate, disjoint sets of users which are not aware of each others' presence on the
system. A single character code is used to identify each user class. This character may be a letter ("A"
- "Z") or a numeral ("0" - 9"), providing 36 distinct classes in all.
You, as the system operator, designate the class to which each user belongs by setting the class
code in his user account record, using the "+D" command. If you do not use the "+D" command to
deliberately set a class code for any user, then the system defaults to a class code of " " (space
character). Users with a class code of " " can not see, exchange mail with, or chat with users which
have a non-space class code. You can also assign a class code of "?" (question mark). Users which
have a question mark class code can see, exchange mail with, and chat with, users in any class.
Using the system passwords feature, you can have the system automatically assign classes to
users when they set up their accounts. To enable this feature, you must use function "S" of the
Extended Features Menu to define the system passwords that you wish to recognize. You can access
this function by entering "PX" from the main system prompt ("What next?"), then entering "S" when
the Extended Features Menu appears, or you can save time by entering "PXS" directly from the main
system prompt.
Each system password carries ten pieces of information:
Password Sequence Number - is a two digit code that identifies the system password record. You
can define up to 100 different system passwords for various combinations of access levels, SIG
sub-boards and class.
System Password - is the string of characters that the new user must enter to automatically
become a member of the group associated with that system password.
Access Level - is the default feature access level assigned to a user who enters that system
password. This access level controls access to sub-boards, file directories, and various commands.
Session Time A/L - is the default time limit access level assigned to a user who enters that system
password. This access level is compared to time limits defined by the "PXT" command to set limits on
the number of minutes per session and per day that a user can be on-line.
Chat Time A/L - is the default chat time limit access level assigned to a user who enters that
system password. This access level is compared to time limits defined by the "PXT" command to set
limits on the number of minutes that a user can use the chat functions per session and per day.
Download Time A/L - is the default download time limit access level assigned to a user who
enters that system password. This access level is compared to time limits defined by the "PXT"
command to set limits on the number of minutes that a user can use the download functions per session
and per day.
SIGs Accessible - Whatever you put in this field is placed in the SIG list of a user account when
he enters that system password, just as if you had updated his account record using the "+3" command.
Class - is automatically placed in the user's class field when he enters that system password, just
as if you had updated his account using the "+D" command.
VERIFYQU Name - is a pseudo account code that you plan to use to identify a message on your
"Utilities" sub-board that will be used in place of the "VERIFYQU" message as a new account
application when a user enters that system password. This allows you to ask questions pertinent only to
that special set of users when they set up their accounts.
WELCOME Name - is a pseudo account code that you plan to use to identify a message on your
"Utilities" sub-board that will be used in place of the "WELCOME" message when a user enters that
system password. This allows you to give special instructions to different groups of users to help them
find the services that interest them most quickly.
NEWUMSG Name - is a "pseudo account code that you plan to use to identify a message on your
"Utilities" sub-board that will be used in place of the "NEWUMSG" when a user enters that system
password. This allows you to generate special welcoming mail to different groups of users.
You enable the system passwords feature of Bulletron by executing the "PP" command and
placing something in option "M". If you place "*" in field "M", then the system will allow a new user
to enter anything at all as a system password, and the system will only assign special privileges to a
new user account if what he enters matches one of your defined system passwords.
If you enter "#" in field "M" of the "PP" command, then the system will only accept passwords
that you have defined using the "PXS" command. If a user enters something other than a system
password that you have defined, then the system displays the "BADPSWRD" message from your
"Utilities" sub-board as a menu of system passwords from which he can choose. If you wish to prevent
new users from setting up accounts if they do not know one of your system passwords, then you can
place some kind of an error message in the "BADPSWRD" message instead of a menu.
If you place something other than "*" or "#" in field "M" of the "PP" command, then the system
will require new users to enter that string before they can set up an account on your system, and it will
not automatically assign anything. The "BADPSWRD" message should be used as an error message in
this case.
If you wish to have helpers to process new account applications ("VERIFYQU" responses) for
different groups of new users, when using the "*" or "#" options, above, then should set up your
sub-boards (using the "PB" command) so that each different group of new users sees a different
sub-board when they first enter your system. You can control this by making SIG sub-boards with low
sequence numbers, so that the first sub-board seen by each group of new users is a SIG sub-board
determined by the system password that they entered. Then you can set up accounts of the form
"SIGxxx", where "xxx" is the three character abbreviation for the first sub-board seen by each group.
The "VERIFYQU" responses for each sub-board, "xxx" will be routed to private mail for the "SIGxxx"
account, automatically.
If you wish your SIG operators to have more privilege than average users, then you can set up
their accounts as "ASYSxxx", or "SYSxxx" to give them assistant system operator privileges, or full
system operator privileges, respectively. When a new user completes a "VERIFYQU" questionnaire,
the resulting message will be sent to the "SIGxxx" account, where "xxx" is the three character
abbreviation for the sub-board that the user has selected at the time. If a "SIGxxx" account can not be
found, then the system tries to send it to "ASYSxxx". If an "ASYSxxx" account can not be found, then
the system tries to send it to "SYSxxx". If a "SYSxxx" account can not be found, then the system tries
to send it to a special account that you can designate using the "PXP" command, option "1". If option
"1" of the "PXP" command is blank, or the account specified there does not exist, then the system
sends it to "SYSOP". This scheme was implemented to parallel a corporate chain of command
paradigm, where "SYSOP" would be the company president, "PXP" option "1" would be the vice
president, the "SYSxxx" accounts would be the executive vice presidents, the "ASYSxxx" accounts
would be the department managers, and the "SIGxxx" accounts would be the unit managers.
As a side effect of using system passwords for new accounts, Bulletron keeps a tally of the
number of times that each system password is successfully used, and you can use the BBUTIL2
program to print out a report of these tallies. This allows you, if you place different system passwords
in different advertisements for your system, but give them all the same privilege, to evaluate the
effectiveness of different ads.
Another method of separating users into different classes, independent of the class codes on
accounts, is to enter one of your sub-board abbreviations into option "N" of the "PXP" menu. Users
that have this sub-board abbreviation in their account record's SIG list will be kept separate from those
that do not. This can be useful in a matchmaking or dating service bulletin board where separating gay
and straight users makes the system work better.
5.4.10. Customizing Menus, Help Messages and Prompts
Almost all of the menus, help messages, and user-visible prompts in Bulletron can be changed by
the SYSOP. In addition, there are separate menus displayed when the user selects ANSI graphics or
RIP graphics. The menus are stored in messages on your "utilities" sub-board. The ANSI equivalents
are named just like the ASCII versions except that the names are prefixed with the letter "A", and the
RIP equivalents are named just like the ASCII versions except that the names are prefixed with the
letter "R". For example, the menu for the "W" command is called "MENUW", the ANSI menu for the
"W" command is called "AMENUW", and the RIP menu for the "W" command is called "RMENUW".
This section gives you detailed list of all the special messages and menus.
The main command menu has an ASCII name, "MENU", an ANSI name of "AMENU", and a
RIP name of "RMENU", like the submenus. Unlike the submenus, however, if "MENU", "AMENU"
or "RMENU" is not present, then Bulletron will construct the main menu based on what commands the
user has access to on that particular sub-board. For this reason, it is common to let Bulletron display
the main command menu rather than being SYSOP supplied. If Bulletron constructs the menu, it will
only show the features that the user can access or the features which are available on a particular
sub-board. If "MENU", "AMENU" or "RMENU" is used, then all features will show and the selective
display will not occur.
The special messages on your "utilities" sub-board are identified by a key word in the "TO"
account field. For example, assume you wanted a message to display every time a user logs on. There
is a special message for this called the Message-of-the-Day. It has a key word of "MOTD". To create
such a message, you can.
Select the "utilities" sub-board and enter "E MOTD". Then, enter the message online as you
would any message. If there is already an "MOTD", then use "RA MOTD" to read the old one, then
delete it, before entering the new one. You can delete a message by simply reading it and using the "D"
command at the end of the message., or
Create the message off line with your word processor, select the "utilities" sub-board, and enter
"E@ MOTD". The "@" in the "E@" will cause the system to ask you for a file name. Enter the name
of the text file which you created off line. The file must not be larger than a standard message and must
not contain any embedded word processor commands. NOTE: be sure the text file is in the same
drive/directory as Bulletron. Be sure you enter "E@ MOTD", not "E@ MOTD.UTL" -- enter the
special message name, not the file name; Bulletron will prompt for the file name in a later question, or
Create the message off line with your text editor, but name the file "MOTD.UTL". Now use the
BBUTIL2 utility program, menu function "H", to load all files with extension ".UTL" into your
"utilities" sub-board, replacing those that are already there. The BBUTIL2 program deletes any
existing copies of the special messages from the "utilities" sub-board, and saves them in files with file
name extensions of ".001". If ".001" files already exist in the BBS directory, then the BBUTIL2
program uses ".002", then ".003", and so forth. You must use this method if the PROMPTn messages
get deleted, because you will not receive a logon prompt if these are gone. This method is preferred to
the former two because the BBUTIL2 program will automatically generate additional messages and
link them to the main message if you load a file that is longer than 9,000 bytes. The BBUTIL2
program also concatenates linked messages back into single files when it saves the old messages.
The easiest way to create ANSI menus, logos, and screens is with shareware programs like
THEDRAW or ANSIDRAW. You can generally find both of these on hobby BBS's in your local area
or download them from our tech support BBS. You can either start with the "*.UTL" files that we
supply in the PROMPTV9.ZIP file and edit those, or read the messages on your "utilities" sub-board,
using a command such as such as "RA MOTD", and at the end of each message enter "%" to create a
disk file from the message. Be sure that you remove the header lines at the top if you use the latter
method.
Once you have the message off-line in a file, use THEDRAW or ANSIDRAW to edit or
completely redraw the logo or menu. When you save the file, save it twice, first as an ANSI file, and
then as an ASCII file. If the screen you are changing is the Message-of-the-Day, then you would name
the ANSI file "AMOTD.UTL", and name the ASCII version "MOTD.UTL". Use a text editor on both
files to remove any trailing blank lines at the end of the file. You want to limit your screens to 20 lines
or less to keep the top lines from scrolling off the top of the user's screen. Using names like
"MOTD.UTL" and "AMOTD.UTL" allows you to use the BBUTIL2 program to quickly replace the
old messages.
RIP graphic screens should be prepared off-line using the "RIPPAINT" program from
TeleGrafix Communications Inc.
Here is a list of Bulletron's special messages explaining how they are used by the system:
1HOUR For subscribers being billed by cents or minutes, Bulletron displays this
message to the user during logon when his account balance has fallen below
60 minutes remaining. "A1HOUR" is the ANSI equivalent. "R1HOUR" is
the RIP equivalent. "1HOUR" is used for ANSI or RIP sessions if you don't
make an "A1HOUR" or "R1HOUR" message. No warning is given to
subscribers with less than one hour remaining if you don't make either
message.
2HOUR For subscribers being billed by cents or minutes, Bulletron displays this
message to the user during logon when his account balance has fallen below
120 minutes remaining, but has more than 60 minutes remaining. "A2HOUR"
is the ANSI equivalent. "R2HOUR" is the RIP equivalent. "2HOUR" is used
for ANSI or RIP sessions if you don't make an "A2HOUR" message. No
warning is given to subscribers with less than two hours, but more than one
hour, remaining if you don't make either message.
1WEEK For subscribers being billed by date, Bulletron displays this message to the
user during logon when he has less than one week remaining. "A1WEEK" is
the ANSI equivalent. "R1WEEK" is the RIP equivalent. "1WEEK" is used
for ANSI or RIP sessions if you don't make an "A1WEEK" message. No
warning is given to subscribers with less than one week remaining if you
don't make either message.
2WEEK For subscribers being billed by date, Bulletron displays this message to the
user during logon when he has less than two weeks, but more than one week,
remaining. "A2WEEK" is the ANSI equivalent. "R2WEEK" is the RIP
equivalent. "2WEEK" is used for ANSI or RIP sessions if you don't make an
"A2WEEK" message. No warning is given to subscribers with less than two
weeks, but more than one week, remaining if you don't make either message.
ATHOME This message will display to the user during logon if you have enabled
SYSOP chat in the Control Window. It is used to tell the user that the
SYSOP is there and available to provide assistance.
BADWORDS This message, if present, contains a list of words or phrases which you do
NOT want used in user's accounts, name/handles, city, 3-line personal
descriptions or public chat. Public and private messages are not checked for
these words. The format of the message is one word per line. The list could
fill an entire message, but it would take some time to compare each word in
the user information with such a large glossary. You may find it necessary to
begin some words with a space character, as in "ASS", which could be part of
many legitimate words like "class" or "Massachusetts".
BADPSWRD If a system password is required for new user logon and an incorrect
password is entered, then this message is displayed if present. If you are
using the system password facility to automatically set SIGs and access levels
for new users, you can use this message to present the new user with a menu
of system passwords.
BINTxxx Board introduction for sub-board "xxx". If this message is present for a
particular sub-board, it will be displayed every time that a user selects that
sub-board. It is used to give the user an introduction to the board and to
notify him of the contents, purpose, or rules of each sub-board. The ANSI
equivalent message is "ABINTxxx". The RIP equivalent message is
"RBINTxxx". The "BINTxxx" message is used for ANSI or RIP sessions if it
is present, but the "ABINTxxx" or "RBINTxxx" message is not.
CHATMACS This is a special message that defines macros that people can use in public
chat. The format of this message is a series of short message definitions
separated by asterisks ("*"). Begin each definition with an asterisk, followed
immediately by a one word macro name. After the one word macro name,
put one or more spaces, then the body of the message. The body of the
message can contain the following special substitution codes:
%M inserts the account code of the user sending the macro message at
that point.
%T inserts the current time at that point.
%D inserts the current date at that point.
%S inserts the account code of the person to whom the macro message
is being sent if it is being sent to just one user, or "ALL" if it is
being broadcast to everyone in that chat channel.
%1 inserts an argument that the user can supply after the macro
message name , which will usually be the account code of another
user in that chat channel.
%2 inserts a second argument at that point if the user provides one..
%3 inserts a third argument at that point if the user provides one.
An example of a "CHATMACS" message might be:
*KISS %M gives %1 a big, wet kiss right on the lips!
*SLAP %M slaps %1 smartly across the left cheek.
*CAT This "%1%2%3" is a concatenation of the three arguments.
*LONG This is a
really long macro. It
shows the time and date %T, like that
and my account code, %M!
As you can see from the example, chat macro messages can be arbitrarily
long and can span lines. The asterisk character is what separates one macro
message from another. The entire collection of macro message definitions,
however, must fit within a single Bulletron 9,000 character message. Users
invoke chat macros in public chat by entering "//name" on a blank line, where
"name" is the name of the macro. For example, user "JOCELYN" might
enter:
//KISS BERNIE
and everyone in that chat channel would see
JOCELYN gives BERNIE a big, wet kiss right on the lips!
JOCELYN could also send this message to BERNIE privately by invoking the macro with "/\"
instead of "//", then placing BERNIE's account code right after the macro name, as in:
/\KISS BERNIE BERNIE
Note that "BERNIE" is specified twice - the first time to indicate who is to receive the message,
and the second time to be used as the substitution for the "%1" in the macro definition.
The chat macros can also be very helpful for a technical support system for providing a
mechanism to quickly answer commonly asked questions when a live operator is on duty for a chat
channel to provide answers for questions about a specific product or service.
DIRLxxx This message is displayed in place of the listing of files for sub-board "xxx" if
present. You can use this if you want to only present users with certain files, or
present the listing in a different format than that generated automatically by the
system.
DISCLAIM f this message is present, it will display a "disclaimer" to the user when
he logs on to set up an account. The user must enter "Y" or "YES" after this
message is displayed. If he enters anything else, then he is disconnected.
FAXLxxx This message is displayed in place of the listing of FAX documents for sub-board
"xxx" if present. You can use this if you want to only present users with certain
documents, or present the listing in a different format than that generated
automatically by the system.
FREELOAD For subscriber systems charging by cents or minutes, if a nonsubscriber
exceeds the number of minutes a free user is allowed before subscribing (defined
by option "L" of the "PX$" command), then this message is displayed. This only
applies to users with an access level less than the default subscriber feature access
level (defined by option "I" or "J" of the "PX$" command). For subscriber
systems charging strictly by date, Bulletron computes the days from first logon to
present and displays this message if the user has been on more days than specified
for the "L" option of the "PX$" command.
HELPbbb This is the help menu for the main command prompt on the sub-board with
abbreviation "bbb". This describes all the commands in general. This supersedes
any "HELPI" message for the system when that sub-board is selected. NOTE:
For all the help messages; that is, messages with names beginning with "HELP",
there can also be an ANSI equivalent and a RIP equivalent. Precede the help
message name with the letter "A", such as "AHELPDB", for ANSI sessions or
with the letter "R", as in "RHELPDB", for RIP sessions. These ANSI and RIP
equivalent help messages are sent to users who answer "Y" or "R" to the graphics
rendition prompt during logon.
HELPAHelp for the built-in adventure game/expert system.
HELPBHelp for the sub-board selection menu.
HELPC Help for the Chat ("C" and "/") commands.
HELPCHHelp for chat channels. You can create this message to tell your users what
subject matter is appropriate for each chat channel that you define using the "PC"
command. Users can view this message by entering "H" from the chat channel
menu, "MENUCH", described below in this section.
HELPDBHelp for the application specific database feature.
HELPE1Help for the Enter command when the sub-board is not an order-entry sub-board
or a networking sub-board.
HELPE2Help for the Enter command when the sub-board is an order entry board and a
user is entering an order.
HELPE3Help for the Enter command when the sub-board is the Bulletnet network source
for private messages.
HELPE4Help for the Enter ("E") command when the current sub-board is a form message
sub-board.
HELPFCHelp for the Files List ("F") commands.
HELPFTP Help for the FTP internet ("IF") subcommands.
HELPFXHelp for the FAXback ("X") Commands.
HELPIIf the user enters "H" or "HELP" from the main system prompt ("What's Next"),
Bulletron will display help message HELPI (or AHELPI for ANSI). This is
normally a short message containing additional options such as
R - Help on Read command
W - Help on Who command
or just general bulletin-type information such as
1 - Information about this hardware
2 - User meeting coming soon
Whatever character the user enters, it is added to the string HELPI to produce a
new help message which is then displayed. This is called "Indexed Help". In the
above example, if the user entered "2" for information about the next user
meeting, then Bulletron would read the message to account HELPI2 and display
that message to the user next. If the user has selected a sub-board for which a
"HELPbbb" message exists, where "bbb" is the abbreviation for that sub-board,
then the "HELPbbb" message takes priority and the help index is not shown. This
is done on the assumption that you will only make a few "HELPbbb" messages
for sub-board with very specific purposes. The user can enter a subcommand with
the "H" command to bypass the first level menu; as in "HR", which would display
the "HELPIR" message directly. Bulletron recognizes the word "HELP" at the
main system prompt and treats this as if the user entered "H", and not "HE", which
would display an "HELPIE" message.
HELPIn The next level of information for item "n" as displayed from message
"HELPI". "AHELPIn" is the ANSI equivalent.
HELPL instructions for using the "L" command to search or browse the remote
network nodes database.
HELPM1 Help with the match command when matching to accounts.
HELPM2 Help with the match command when matching to messages.
HELPMAC Help with chat macros. You may use this message to tell your users what
macros are available if you create the "CHATMACS" message (above).
Users can invoke this message from public chat by entering "//HELP" on a
blank line.
HELPN1 Help with the "N" command for systems with 3-line personal descriptions.
HELPN2 Help with the "N" command for systems with name & address personal
descriptions.
HELPP Help for the internet ("I") commands.
HELPR Help for the Summary and Read command at the beginning of the command
as to what subcommands are available.
HELPU Help file for the upload/download/file directory commands.
HELPV Help with the "V" command.
HELPW Help with the "W" command.
LOGO Displays when a user first gets a connection and before he has entered his
account code. "ALOGO" is the ANSI equivalent. "RLOGO" is the RIP
equivalent.
LOGOFF ASCII logo displayed when a user logs off with the "G" command.
"ALOGOFF" is the ANSI equivalent. "RLOGOFF" is the RIP equivalent.
MENU Menu for the main command menu. If this is not present then Bulletron will
display the main commands based on what commands are available on the
selected sub-board and based on the user's access level. If "MENUbbb" (see
below) is present, "MENUbbb" will display rather than MENU.
NOTE: For all the menu files, messages beginning with "MENU", there can also be an ANSI
and a RIP equivalent. Prefix the menu name with the letter "A", such as "AMENUbbb", for ANSI
sessions, or the letter "R", as in "RMENUbbb", for RIP sessions. These ANSI and RIP equivalent
menu files will be sent to users who answer "Y" or "R" to the graphic rendition prompt during logon.
MENUB Sub-board selection menu, "B" command. The sub-board selection menu can
also be split into submenus. To use this sub-menu feature, you must arrange
your sub-boards into no more than nine groups, each containing no more than
ten sub-boards. When the user enters the "B" command, Bulletron displays
the "MENUB" (or "AMENUB" for ANSI sessions) message. Your
"MENUB" message should show only choices 1 through 9. When you set up
sub-boards 1 through 9, you will give some or all of them the type "?" as
their special feature. If the user selects a sub-board that does not have a type
of "?" as its special feature, then he gets the main system prompt with that
sub-board selected. If the user selects one of the sub-boards that has a special
feature of "?", then Bulletron presents him with another sub-board menu.
Sub-board 1 will give him a menu for sub-boards 10 through 19; sub-board 2
would give him a menu for sub-boards 20 through 29, and so forth. If you
make a "MNU1" message ("AMNU1" for ANSI sessions), then Bulletron
shows this message as a menu for sub-boards 10 through 19. A "MNU2"
message is shown for sub-boards 20 through 29, and so forth. If "MENUB"
or any of the sub-menus, "MNU1" through "MNU9" are missing, then
Bulletron displays the appropriate information from its board table. Pay
careful attention to the fact that the letter "E" is missing from the message
name for sub-board selection submenus. This is done to allow four digits to
be used in the menu names, as in "AMNU9999". This gives you four layers
of nested grouping for message and file areas.
MENUbbb Main menu for sub-board "bbb" where "bbb" is the sub-board abbreviation.
This menu will display in place of "MENU" if present. If neither of these are
present, then Bulletron will display the commands that the user can access
from the prompt. System operators and assistant system operators always see
the true sub-board menu, so that they can see sub-boards that they don't want
to list in a custom menu message.
MENUC Menu for Chat ("C" and "/") commands.
MENUCH Chat Channel menu - displayed when the "/L" command is used without a
channel number specified, and each time that public chat is entered. If this
menu is not present, then Bulletron produces a menu "on the fly" that
displays the chat channels that the current user can see based on his feature
access level and SIGs.
MENUE1 Menu for Enter Message ("E") commands.
MENUF Menu for the SYSOP File Management ("+F ") commands.
MENUFC Menu for the File Listing ("F") commands.
MENUFTP Menu for the internet FTP ("IF") subcommands.
MENUFX Menu for the FAXback ("X") commands.
MENUI Menu for the Installation Parameters ("P") commands.
MENUL Menu for the network node listing ("L") commands.
MENUM1 Menu for Match ("M") commands by account.
MENUM2 Menu for Match ("M") commands by message.
MENUN1 Menu for the "N" command with 3-line description.
MENUN2 Menu for the "N" command with name/address/city.
MENUO Menu for the "O" command (Outside Features). This menu is optional. If it
is not present, then Bulletron will generate one automatically based on the
outside features that the current user can access based on his feature access
level and SIGs.
MENUP Menu for the internet features ("I") commands.
MENUR Menu for Read ("R") and Summary ("S") commands.
MENUS Menu for system management command, "+".
MENUS2 Main menu like "MENU", but showing SYSOP commands also.
MENUU Menu for file upload/download protocols.
MENUV Menu for file View ("V") command.
MENUW Menu for the Who ("W") command.
MENUX Menu for the Extended Features Setup ("PX" command).
MNUnnnn These are sub-board selection sub-menus. The number "nnnn" represents a
sub-board sequence number. For example, if the "MENUB" message
presents the user with the choices "1", "2" and "3", then you can specify a
networking feature of "?" for sub-board 1, using the "PB" command, and then
provide a "MNU1" message which can present options of "1", "2" and "3"
for sub-boards 11, 12 and 13. In like manner, you can specify a networking
feature of "?" for any of boards 11, 12 or 13, and make menu messages like
"MNU111", "MNU112", "MNU131" and so forth. You can build this
hierarchy to four levels deep. The ANSI equivalents for these menu
messages are "AMNUnnnn", and the RIP equivalents are "RMNUnnnn".
MOTD Message of the day, displayed at logon. "AMOTD" is the ANSI equivalent.
"RMOTD" is the RIP equivalent. After the "MOTD" has been entered, you
can go back and read it (by entering "RA MOTD") and select option "V" to
set the "No Interrupt" flag for that message to "L" (Last logon). This will
cause the message of the day to only display once to users whose message
last logon date/time are less than the updated date/time of the "MOTD". This
ability to show only once applies to "MOTDxxx", "MOTDn", and their ANSI
or RIP equivalent messages but must be set with the "V" option on each
message.
MOTD$S This is a special message of the day, like the "MOTD" message, that is shown
only to subscriber accounts.
MOTD$N This is a special message of the day; like the "MOTD" message that is shown
only to nonsubscriber accounts.
MOTDV Message of the day for VISITORs. This is displayed to the "VISITOR"
account right after the MOTD message. "AMOTDV" is the ANSI equivalent.
You can use this to tell VISITORs what they're missing out on by not setting
up a real account and getting validated.
MOTDxxx Message of the day for sub-board "xxx". "AMOTDxxx" is the ANSI
equivalent.
MOTDn Message of the day displayed when the caller logs on telephone line "n".
"AMOTDn" is the ANSI equivalent.
NEWUSER New user setup instructions. "ANEWUSER" is the ANSI equivalent.
"RNEWUSER" is the RIP equivalent.
NEWUMSG Message sent to new users after their first logon as a personalized "welcome".
A copy of this message is placed in the user's private mail the first time that
he logs off.
NEWUMSGS Message sent to new users after their first logon as a personalized "welcome"
to those users who are SEPARATED (whose SIG list contains the SIG listed
in the board separation parameter "PXP" command, option "N").
NEWUMSGn You can cause your Bulletron system to continue sending automatically
generated mail to users, each time they log off, up to their tenth call. If you
make a message on your "utilities" sub-board to the pseudo-account
"NEWUMSG2", then a copy of this message will be sent to a user after the
second time that he logs off. If you make a utility message to
"NEWUMSG3", then this will be sent to him after the end of his third call.
You can make messages "NEWUMSG2" through "NEWUMSG9". Inside
these messages, you can embed special codes that can personalize these
message for each individual user. These special codes include:
^x is replaced by a control character that corresponds to letter "x". For
example, "^M" would produce a carriage return, "^J" would
produce a line feed, and "^I" would produce a tab character.
$^$ is replaced by the account code that logged onto the system prior to
the current user.
$+$ inserts the user's account code at that point
$A$ is replaced by "Y" if the current session has ANSI or RIP graphics,
or "N" if not.
$B$ is replaced by the short name of your BBS, which you specify using
option "N" of the "PP" command.
$I$ is replaced by the task (line ) number of the line on which the user
is logged on.
$N$ inserts the user's name or handle at that point
$S$ is replaced by the descriptive name of the current sub-board.
$T$ is replaced by the number of minutes remaining in the user's current
session.
$L$ inserts the user's location (city and state) at that point
$$$ inserts another account code chosen at random at that point.
$O$ inserts the ordinal call number at that point; that is, "1st" for his
first call, "2nd" for his second call, and so forth.
$P$ is replaced by the main system prompt (usually "What next?")
$TS$ is replaced by the minutes already used in the current session
$TD$ is replaced by the minutes already used in the current day.
$TL$ inserts the number of total minutes that the user has logged on the
system at that point.
All of these special substitution calls can, of course, also be used in the
"NEWUMSG" and "NEWUMSGS" messages. ANSI and RIP variants of
these messages are not available.
QUESTxxx Matchmaker questionnaire for sub-board "xxx". This includes multiple
choice questionnaires, essay questionnaires, and order entry forms.
OFF-LINE This message is displayed to a caller if the BBS is started with the
"OFF-LINE" parameter.
PROMPTnn Most of the user-visible prompts are contained in the messages PROMPT0
thru PROMPT19. You may change the wording of some of the prompts
within certain restrictions. There is not a much free space in the prompt
buffer. If you make any prompt longer than the existing prompt, you may
have to shorten another prompt to keep the prompts within the buffer. Do
not use any percent signs ("%") in your prompts. Do not remove any percent
signs or percent/letter combinations (such as "%s", "%d", "%c") in any
existing prompts. Do not change the numbers that precede the prompts. The
prompts cannot span more than one line and cannot be more than 140
characters long. The "\n" in the prompts signify a new line (carriage return
and line feed). Changing the prompts is not really recommended since the
user documentation will not be accurate and a typographical error could cause
the system to not function at all. The facility is made available for foreign
language systems and places where only minor wording (such as changing
"Board" or "BBS") is necessary.
RANDOMn Every time that the user reaches the main system prompt, the system
generates a random number between 0 and 35. This number is appended to
the characters "RANDOM" to create a "to" name of "RANDOM0" thru
RANDOM9 and "RANDOMA" thru "RANDOMZ". If the message does
exist and has not already been displayed to that user in that session, it will be
displayed at that point. You can use this to display random announcements to
users during their sessions, or remind them of tips and techniques for getting
more efficient use out of the system, or for selling advertising to businesses in
your area. There can also be ANSI and RIP equivalents to these message by
prefixing the message name with the letter "A", such as "ARANDOM0", or
the letter "R" as in "RRANDOM0".
RCPTbbb This message is sent to a user in private mail whenever he completes the
matchmaker questionnaire for sub-board "bbb". Its purpose is to
automatically generate a receipt for order-entry boards, but it will also be sent
for multiple choice questionnaires as well, if defined for a sub-board set up
for multiple choice matchmaking.
SUBINFO Subscription rate information and payment instructions that is displayed
when a user enters "$" on the main menu.
TUTOR1 through TUTOR6 Messages used for the user tutorial. These messages must be
linked together to have them all displayed when the user enters the "T"
command. See the section "Additional Sysop Commands" for details about
special characters active within these messages.
VERIFYQU This message holds the verification questionnaire. This is sometimes also
referred to as the "new account application form"
WELCOME This message is displayed to the user after sets up a new account.
"AWELCOME" is the ANSI equivalent. "RWELCOME" is the RIP
equivalent. Note that if a message exceeds 9000 characters, you can create a
second message with a DIFFERENT to-account name and link the first part
to the second part. This will not work for questionnaires, but will work for
help messages, menus, and most other messages. You will find this feature
extremely useful if you make animated ANSI graphic screens. "Linking" is
done as follows: Assume you are linking TUTOR1, TUTOR2, TUTOR3,
TUTOR4, TUTOR5, and TUTOR6 together. Also assume that when you
entered "E@ TUTOR1", you noticed that it was message number 1201,
"TUTOR2" was message 1202, "TUTOR3" was message 1205, "TUTOR4"
was message 1207, "TUTOR5" was message 1210, and "TUTOR6" was
message 1215. Enter "RA TUTOR1". At the post-read prompt, enter "L" to
link the message, then enter 1202 (the message number of "TUTOR2") to
link to next. Now enter "RA TUTOR2", enter "L" to link the message, then
enter 1205 to link "TUTOR2" to "TUTOR3". Next enter "RA "TUTOR3",
then "L", then 1207 to link "TUTOR3" to "TUTOR4". Next enter "RA
"TUTOR4", then "L", then 1210 to link "TUTOR4" to "TUTOR5". Finally
enter "RA TUTOR5", then "L", then 1215 to link "TUTOR5" to "TUTOR6".
Since "TUTOR6" is the last message, it does not get linked to any others. If
you load all the menus and help messages from "*.UTL" files, using the
BBUTIL2 program, then the BBUTIL2 program will automatically generate
the links for you.
5.4.10.1. ANSI Graphic Colors
This section is not intended to be a primer on ANSI graphics. It is intended to summarize some
of the common codes and explain how Bulletron handles these codes so that you understand how to
setup the codes in the command discussions that follow. Because of its built-in windowing system,
Bulletron does not use ANSI.SYS, but simulates a limited set of ANSI commands locally. Therefore
some screens will not display properly locally although they will appear properly when transmitted to
the user.
ANSI graphics codes are strings of characters, preceded with an escape character (1BH), which
causes certain things to happen on systems that are setup to handle those codes. The most common
things include changing colors, clearing the screen, and positioning the cursor. The remote system
which receives the codes must have the ANSI.SYS driver loaded by the CONFIG.SYS file and must be
using a modem program such as Qmodem or Telix which recognizes the codes.
Bulletron handles graphics in two ways: it can send out special messages which contain
embedded graphics codes in place of the normal messages (such as the "AMENUB" message), and it
can use ANSI escape sequences to set the user's screen colors based on the significance of what he is
seeing. For example, the main system prompt could be made bold white, while other text is dull grey to
help him distinguish the prompt from the rest of the stuff that may be going on.
To define graphics for specific places defined within the program, enter "I" from the main system
prompt to bring up the Installation Menu, then enter "G", or, to save time, just enter "PG" from the
main system prompt. You will be shown the following list of specific places for which you can set
colors:
Enter the number of the area to add or change,
enter -number to delete it, or enter cntl-c
while list is displaying to exit to prompt quickly.
Graphic areas that can be changed:
1 Board Selection Menu
2 Main Menu Prompt
3 Default
4 Control Window
5 Line Usage Stats
6 Waiting Window
7 Chat Default
8 Received Chat Text
9 Chat Account Codes
10 System Generated Chat Text
11 Sent Private Chat Text
12 Received Private Chat Text
13 Null Modem Lines
14 - TELNET Lines
15 LAN Lines
Which area (0 or [RETURN] to quit) ?
Enter the number of the area, 1 through 15 that you wish to change, enter the negative of the
number to delete it, or enter zero to return to the Installation Menu. After entering the area number, you
will be prompted for colors:
1 - Black
2 - Red
3 - Green
4 - Yellow
5 - Blue
6 - Magenta (purple)
7 - Cyan (light blue)
8 - White
Foreground:
At this point, you are selecting the color of the text (foreground). Enter a number from 1 to 8 to
select the color of the text. You will then be prompted for the background color:
Background:
Again, enter a number from 1 to 8 to select the background color.
Next you will be asked if you want the text (foreground) to be in high intensity or low intensity.
The background is always in low intensity. Enter "H" for high intensity or anything else for low
intensity. The default is low intensity if you just press [ENTER]. As a side note, brown is the low
intensity form of yellow, so yellow is only available as a foreground color. High intensity magenta is
pink. High intensity black is a dark grey and low intensity white is a light grey.
Intensity (High/Low):
You can have the screen cleared after changing the colors. Enter "Y" for the question:
Clear Screen (Y/N):
You can also set specific colors for the default text on each sub-board. It is recommended that
you not use any background for this except black, as the background color on each line will only
extend as far as the text for the line, leaving a ragged black right margin on the user's screen. Also, low
intensity blue on black is almost invisible on most monitors.
To change the default text colors for sub-boards, enter "P" from the main system prompt to bring
up the Installation Parameters Menu, then select option "A", or, to save time, just enter "PA" from the
main system prompt. You will then be prompted with a list of your sub-boards, for example:
Enter the number of the area to add or change,
enter -number to delete it, or enter cntl-c
while list is displaying to exit to prompt quickly.
Board colors that can be changed:
1 Personal Mail
2 System Operator's
3 Technical Info
4 Network Source
Which board (0 or [RETURN] to quit) ?
Enter the sub-board number (note that these are not the sub-board sequence numbers defined with
the "PB" command) to define the colors for that particular sub-board, the negative of the sub-board
number to delete their colors, or zero to return to the Installation menu. You will be prompted for the
colors as discussed previously.
5.4.10.2. Foreign Language Considerations
The dates that display in Bulletron are normally shown in month/day/year format or
MM/DD/YY. A version can be compiled, on special request, which will display them in
day/month/year format for use in those countries more familiar with DD/MM/YY.
The words that are hard coded within the program and not part of the prompt messages have been
isolated and translated into French, Spanish, Italian, and German. Foreign systems can request that
their systems be compiled with any of those prompts. Prompts for other languages are also possible if
requested. The sysop-changable prompts, menus, and help files are still in English but can be translated
and changed. We leave that to you, as you are obviously capable of doing it if you are reading this
manual!
It is also possible to get a version compiled which will allow all 8 bits input from the console
keyboard for those countries that use graphics characters such as the umlaut in German. Note,
however, that if a user calls with 7-E-1 rather than 8-N-1, file transfers will not work.
Although the prompt files allow almost all of the prompts to be changed to a foreign language,
the commands cannot be changed. "R" must be entered for "Read" even though "read" many not begin
with an "R" in the different language. One alternative is to use the ANSI equivalent feature to present
an alternate set of menus and help messages. Change the prompt "Do you want ANSI graphics" to "Do
you want German", for example. Then have a set of "AMENU" and "AHELP" messages with the text
in German. This way the BBS can be read in either English or German. The prompts would still be in
English, but at least most of the menus and help files would be in the foreign language. The post-read
menu (Comment, Delete, etc. after reading a message) comes from the prompt file rather than a menu
file because the message buffer that contains the message is the same as that used to retrieve "MENU"
messages. These post-read and post-enter prompts have already been translated to Spanish language
and can be compiled as such upon special request. For other languages, we will gladly provide a list of
words and phrases used and make the substitutions if you supply us with whatever words are
appropriate for your language.
Bulletron is shipped with English prompts and all "yes" parameters set to "Y". Those foreign
systems may receive another file containing just the prompts translated to their language, such as
PRPTSPAN.ZIP contain the prompts in Spanish. You will need to unzip this file and run BBUTIL2,
option "H", to replace the English prompts with the Spanish prompts before starting Bulletron. The
first time that you log on to Bulletron as SYSOP, you ill need to change all "yes" prompts in the
parameters to the letter corresponding to "yes" in your language.
5.4.11. Creating and Maintaining Shareware Libraries
Assume that a Bulletron installation has the following sub-boards:
Personal Mail
Apple Computers
IBM Computers
Computer Communications
Utility/Helpfiles
Also assume that the Apple Computers sub-board is to contain separate areas for utilities, games
and communications programs, and the IBM Computers sub-board is to contain separate areas for
utilities, games, and communications programs. The areas might be divided into subdirectories as
follows:
C:\BBS\PSLUPDN (personal mail - upload/download)
D:\BBS\APPLE\UTIL (downloadable Apple Utility files)
E:\BBS\APPLE\GAMES (for downloadable Apple Games)
C:\BBS\APPLE\UPLOADS (for Apple uploads)
C:\BBS\APPLE\COMM (for Apple communications programs)
D:\IBM\UTIL (for IBM Utilities files)
C:\IBM\GAMES (for IBM Game files)
E:\IBM\COMM (for downloadable IBM communication files)
E:\IBM\UPLOADS (for Upload to IBM)
D:\HAM (for HAM radio communications programs)
You would like to make all of the Apple programs available to the Apple SIG and make the IBM
programs available to the IBM SIG, but also make both the Apple and IBM communications programs
available to the Communications SIG. For processing speed and storage efficiency, Bulletron uses a
two-tiered file directory definition system that separates physical path definitions from sub-board file
menu offerings. This elimination of redundancy is a characteristic of a normalized relational database
such as the one that is at the heart of the Bulletron system.
5.4.11.1. Defining Paths
The "PF" command is used to define physical file directories to Bulletron. You can access this
command by entering "P" at the main system prompt, then selecting "F", or, to save time, you can just
enter "PF" at the main system prompt. The key to Bulletron's path definition records is a four character
"path-id". The path-id is used in place of writing out the entire path description each time a path to a
subdirectory is referenced. It also allows the same directory to be used on several sub-boards and have
the same directory message updated regardless of which board a user has selected when the directory is
updated. In terms of our example, when a person uploads a file to the Apple Communications files, it
will simultaneously appear there and on the Communications SIG sub-board. The path-id can be any 4
letters, but for ease of use, it is recommended that it be the sub-board abbreviation and possibly the
option selection letter. This helps you to remember the path-id codes when you have several hundred
of them.
When you begin a "PF" command, you are prompted to add, change, delete, or list the path
definitions. Because lists of path-id definitions tend to go on for several hundred lines, you don't
automatically get a list of path-id definitions when you begin the command; you have to enter "L" and
ask for it. A list of path-id definitions for our example above might be:
PATH-ID PATH
PSLA C:\BBS\PSLUPDN
APLA D:\BBS\APPLE\UTIL
APLB E:\BBS\APPLE\GAMES
APLC C:\BBS\APPLE\UPLOADS
APLD C:\BBS\APPLE\COMM
IBMA D:\IBM\UTIL
IBMB C:\IBM\GAMES
IBMC E:\IBM\COMM
IBMD E:\IBM\UPLOADS
COMA D:\HAM
A-Add, C-Change, D-Delete, L-List, Q-Quit:
If you enter "A", "C", or "D" at this point, you are prompted with:
Path-id:
To create a new path definition (option "A"), you should enter a four character path-id that is not
already in the list. To change an existing path-id (option "C"), or delete an existing path definition
(option "D"), you should enter a four character path-id that is already in the list. Conveniently,
Bulletron's built-in b-tree database engine always stores records in alphabetical order, so it is fairly
easy to find a specific path-id in the list, even if the list is fairly long.
After you enter an acceptable path-id, options "A" and "C" will prompt you for the physical
directory path. For the "C" option, the previous definition is shown in brackets. You can leave the
previous definition unchanged by simply pressing [ENTER]. For option "A", the brackets will be
empty. For example, you might see::
Subdirectory Path [D:\IBM\UPLOADS ]:
Enter your new path string making sure to begin with the drive letter. Do not include a trailing
backslash ("\"). The longest string you can enter is 31 characters. It behooves you to use short
directory names if you like to nest them deeply. After you enter the path definition string, Bulletron
brings you back to:
A-Add, C-Change, D-Delete, L-List, Q-Quit:
When you are done, enter "Q" to get back to the Installation menu.
5.4.11.2. Assigning Directories to Sub-boards
The "PD" command is used to assign path-ids to sub-boards for Bulletron. You can access this
command by entering "P" at the main system prompt, then selecting "D", or, to save time, you can just
enter "PD" at the main system prompt. As with the "PF" command, directory assignment lists tend to
get very long, so you are prompted for an action before a list is displayed. A list of directory
assignments for our example above might be:
A-Add, C-Change, D-Delete, L-List, Q-Quit: L
BRD SEL DESCRIPTION DOWN UPLD ACC-LVL R C
PSL A Private, Personal Files PSLA PSLA 10 Y
APL A Apple Utilities APLA APLC 100
APL B Apple Games APLB APLC 100
APL C New Apple Files APLC APLC 1000
APL D Apple Terminal Programs APLD APLC 100
IBM A IBM Utilities IBMA IBMD 100
IBM B IBM PC Games IBMB IBMD 100
IBM C IBM Terminal Programs IBMC IBMD 100
IBM D New IBM Files IBMD IBMD 1000
COM A HAM Radio Programs COMA COMA 120
COM B Apple Terminal Programs APLD APLC 100
COM C IBM Terminal Programs IBMC IBMD 100
A-Add, C-Change, D-Delete, L-List, Q-Quit:
There are a couple of things you will want to take note of in our example list. Note, first, that we
assigned different directories for downloading, but only used one directory for uploading on all four
directories of the Apple sub-board, then another directory for uploading for all four directories of the
IBM sub-board. You never know what people will upload, especially if you enforce a
download/upload ratio; some files won't work, others may contain copyrighted material, and if you're
real unlucky, some may contain stolen information like credit card numbers or government secrets.
You may want to check each out each file before allowing anyone to download it. You can do this with
Bulletron by assigning all upload paths to a path or a set of paths that users can not access. You can do
that by assigning a very high access level to list entry that allows downloading from the upload path, or
by just not entering the upload path in any of the download path selections at all. Here we have chosen
to assign a high access level to the entries that allow downloading from the upload path so that our staff
can access the new uploads remotely. In the case of our HAM radio group, we have allowed them to
download files as soon as they are uploaded, because we know that the HAM radio operators are
generally a pretty stable bunch. Also of note, we have made the path-id codes the same as the
sub-board abbreviations and menu selection letters, whenever possible to help us remember them. In
the case of our Communications sub-board this was not possible for two of the directories.
If you assign the same path-ID for downloading as uploading, then users will be able to download
files as soon as they are uploaded. This is a convenient for systems where the users are well-behaved,
as in a closed, corporate system or a tech support BBS. Tighter control of uploads is generally
mandated which may permit minors to call. This is especially true if the system caters to material
which restricted because of its adult nature. In such a system, you may want to set up the directory for
the "personal mail" sub-board such that files can be downloaded as soon as they are uploaded, but
restrict that directory path to private files only, using option "S" of the "PXP" command.
You may also, as an enticement to subscribe, choose to set the access levels of all directories low
enough that nonsubscribers can see the file directories, but set the download access level for all
sub-board high enough so that nonsubscribers can not download what they see. If you do this, keep in
mind that the download access level for ALL sub-boards must be set to the subscriber access level,
because the BBS program does not require the specific board containing the file to be selected before
downloading it, if the user can specify the exact name of the file.
When prompted for "Add, Change, Delete, List or Quit", if you enter "A", "C" or "D", then
Bulletron will prompt you for a sub-board abbreviation and a menu selection letter. For "A", you must
enter a combination that does not yet exist. For "C" or "D", you must enter a combination that already
exists:
Section Abbreviation: IBM
Selection letter: A
After you enter the sub-board abbreviation and menu selection letter, Bulletron shows you the
name of the sub-board and prompts you for the description of the directory that the user will see on his
menu of file directories:
Up/Download subdistrict path for IBM Compat. Hardware selection A
Description of subdistrict [IBM Utilities ]:
The old description is shown to you in brackets. You can just press [ENTER] if you don't want
to change it. After that you are prompted for the path-id codes for the upload path and the download
path, and finally the minimum feature access level that will be required of a user to see the directory:
Path ID to send downloads [IBMA]:
Path ID to receive uploads [UPLD]:
Access level required for this subdistrict [100]:
The next prompt for the subdistrict assignment asks you:
Inhibit download/upload ratios (Y/N) [N]:
If you have some directories that you would like new users to be able to download from, without
having to upload, then you can specify a "Y" for this. You may have company promotional software
such as demos or product specifications that you want everyone to have, while still enforcing
download/upload ratios for most of your system. You can also tell Bulletron to ignore
download/upload ratios for certain individuals by setting a "D" flag on their accounts. See the section
on "User Account and File Maintenance" for details. If a user does not select the sub-board and
directory containing the file before attempting to download it, then the download/upload ratio will still
be enforced.
The final prompt for the directory assignment asks you:
No charge for downloads (Y/N) [N]:
If your system bills user accounts by time, as opposed to expiration date, you can enter a "Y" here
to inhibit time billing while a user downloads from this directory. You may want to do this to make
certain promotional files available completely free of charge. If your system does not bill by time, then
this field is ignored. If a user does not select the sub-board and directory containing the file before
downloading it, then he will be charged, as usual.
NOTE: You can have the same directory accessible from many different sub-boards, if you
choose. You can set different access levels for it, inhibit ratios, or disable billing differently in different
places. The system checks the directory restrictions when a user selects the sub-board and directory, an
event that usually happens just prior to download. These characteristics are assigned to file directories,
not individual files.
After these prompts, you are again prompted to "Add, Change, Delete, List or Quit". Enter "Q"
to return to the Installation/Parameters menu when you are done making changes.
If a user selects the personal mail sub-board and enters "F", "D", or "U", then Bulletron does
NOT prompt him to select a directory since there is only one. If he selects the Apple sub-board,
however, and tries to list files, download or upload, then Bulletron shows him a menu like::
Which subdistrict:
A Apple Utilities
B Apple Games
D Apple Terminal Programs
K Return to main menu
Note that there is no "C" option in the menu. That is because we set its access level so high that
only our SYSOPs can access it. Nevertheless, all files uploaded on the Apple sub-board will be stored
in it.
If the user does an "F", "V" or "D" command and he selects subdistrict "B" at this prompt, then
Bulletron reads a directory definition for board "APL" selection "B" and finds it refers to path-id
"APLA". Bulletron then reads the path definition record for "APLA" and gets the subdistrict path
"E:\BBS\APPLE\GAMES".
There can be at most 35 subdirectories within each board, because hot-keys must be one
keystroke and there are only 26 letters in the English alphabet and ten numerals, and one letter, "K" is
reserved for an escape code. Multiple subdistrict descriptions can refer to the same subdistrict. This
may happen if the same upload directory is used for multiple descriptions.
The upload and download path-id may be the same so that an uploaded file can be downloaded
immediately.
For a user to be able to see (and subsequently access) a subdistrict description, his access level
must be at least as high as the access level defined for that description.
The selection letters do not have to be sequential, but "K" is reserved for returning to the main
menu. "U" could have been selected for utilities, "G" for games, "C" for communications programs,
and so forth. That way, if a user does not have access to an area, it will not be as obvious as it would if
the areas were numbered or lettered sequentially. It is also easier to remember your path-is codes if the
menu selection letter somehow indicates the subject matter for the directory.
5.4.11.3. The Download Database
Creating directories to allow users to download requires just three steps:
1. Use the "PF" command to define a 4-letter abbreviation (path id) and the OS/2 path that it is to
reference. This way you only have to remember 4-letters, and not a 64-letter disk directory.
2. Use the "PD" command to tell Bulletron what directories are going to be available on each
sub-board. You may want the same directory accessible from several sub-boards, or you may
have some directories accessible only on a specific sub-board which requires a high access
level to gain access. The "PD" command lets you define up to 35 upload and download
directories for each sub-board.
3. If you have any files already in those OS/2 directories, then you must use the "+F" command,
option "5", to cause Bulletron to load its database with the file names and descriptions of files
already on the disk. To add new files from a floppy disk to an existing directory later, you can
use the "+F" command, option "9", which will copy the file from the floppy to the hard disk
and prompt you for a description.
All this can be done while the BBS is online and users are actively downloading and uploading.
To add, delete, rename, move, any of the files, use the SYSOP "+F" command. Remember, you
do NOT have to bring Bulletron down to do file management. It is all done while other users are online
and uses can access the files immediately when you make them available. Figure 5.4.11.3-1 shows the
file management commands that are available to system operator accounts using the "+F" command.
Bulletron maintains a database on the files that users can download. The database contains the
path-id, file name, date of last modification, file size, minimum access level required to see the file, a
flag defining whether the file is private ("V)" to a specific user or password protected ("P"), the account
of the private file or the password if password protected, a description of the file contents up to 9000
characters in length, and a charge, in cents times ten, that a user's account is billed for downloading the
file ($0 to $6,553.50). Any of these fields may be modified by the SYSOP. If the file is private (not
TO the user attempting to download it) or the user's access level is too low to download it, then the file
will not display to the user and he cannot download it even if he guesses that it is there. If the file is
password protected, then the file will display, but Bulletron will prompt for the password before the
user is allowed to download it.
Also, you can make a file downloadable only by a specific user, by naming that file
"account.@nn" where "account" is the user's 8-character account code, and "nn" is a decimal number
between "00" and "99". The "@" in the first character of the file name extension tells Bulletron to not
show this private file to other users even if they use the "FT" (Files True) command.
5.4.11.4. Importing File Descriptions from ASCII Text Files
When converting from another BBS software to Bulletron, or when adding a large number of
new files to the Bulletron Download Database, it is sometimes inconvenient to retype the file
descriptions. You can create a text file containing the descriptions, then use function "I" in the
BBUTIL2 program to preload these descriptions.
The Bulletron download database can be preloaded with descriptions and dummy entries so that
you will not be prompted for the file descriptions when he uses the "+F" command, option "5", to
verify the directory against the actual files on the disk.
Input to this function is a "flat" ASCII text file containing records up to 9,000 bytes long. Each
line of the text file represents one file description. The path-id is in columns 1 thru 4 of each line.
The file name, left justified and blank filled on the right, with a "." separating the file name and
extension, is in columns 5 thru 16 of each line. The description of the file's contents is in columns 17 to
the end of the line. The record is terminated by a carriage return and line feed (control-M control-J).
The description can be divided into multiple lines separated by a line feed (control-J) character without
a preceding carriage return, and each line should be no more than 64 characters in length. Inserting the
line feed breaks, however, is not critical as Bulletron will automatically produce line breaks when the
text is displayed to the user. This allows each file description to have approximately 140 70-character
lines (over six screen-fulls of text).
Shown below is an example of a file description import file for a few entries that we used on the
"OS2" sub-board of our tech support system:
OS2A32PMCHES.ZIP OS/2 2.0 Version of PmChess 1.02 (w/src).
OS2AADVENTP.ARC The original Colossal Cave adventure game.
OS2AADVNTURE.ARCAdventure game. Runs in DOS and OS/2.
OS2AAMFLAG.ZIP American flag, music.
OS2CDUPCHK10.LZH Maximus dupe file checker.
OS2CMAIL1042.ZIP Mailer for Simplex BBS.
OS2FALPM11.ZIP Active-Life 1.1 for OS/2 PM!
OS2FALPM12.ZIP Active Life for OS/2 PM version 1.2.
OS2FALPM15.ZIP Active Life Time Planner v1.5 for PM.
OS2FAPPT.ZIP OS/2 appointment calendar program.
OS2GIBMBLT17.ZIP OS/2 image support; from IBM.
OS2GJPEG2OS2.ZIP JPEG image compression/decompression.
OS2I3COM_MAC.COM 3Com Etherlink driver.
OS2I4019DRVR.ZIP IBM Printer Driver for 4019 Laser.
OS2I4216AES.ZIP OS/2 IBM printer support.
OS2JMS-ANN.ZIP Microsoft announces Compilers for OS/2.
OS2JMSJV3-3.ZIP Microsoft Journal OS/2 stuff.
OS2JMSJV46.ZIP MicroSoft Systems Journal vol. 4 number 6.
OS2JMSJV5-1.ARC PMBASIC Examples and others from MSJ
OS2JMSJV5-1.ZIP PMBASIC Examples and others from MSJ
OS2LDMAKE35X.ZIP DMAKE ported to OS/2.
OS2LDMAKE38A.ZIP MAKE utility ,DMAKE, v3.8 w/source.
OS2LDMAKE38B.ZIP DMAKE v3.8 - file 2 of 3
OS2LDMAKE38C.ZIP DMAKE v3.8 - file 3 of 3
OS2MPIANO.EXE IBM PM Demo of piano keyboard.
OS2MPMMIDDMP.ZIP PM MIDI Dump Utility (IOPL-Based).
5.4.11.5. Importing Text Files into Bulletron Messages
There are three ways to get text such as menus, help messages, or long stories into Bulletron:
1. The most obvious way is to just type it in using the Enter ("E") command to put the file into a
message. If files are going to be short, less than 9,000 bytes, it is most efficient to make them
messages rather than separate disk files.
2. The SYSOP can also make a message from a disk file by using "E@", or copy a message to a
disk file by using the "%" command after reading the message. The SYSOP can also add a
comment to the message where the comment is a disk file by entering "@" rather than C after
reading a message. Be sure that the file which you create with your word processor is an
ASCII non-document text file. It should not contain any special characters intended to
provide formatting information for your particular word processor. The SYSOP can read files
from the floppy drive by prefixing the file name with A:, but the user cannot use the ":", "\" or
"/" in a filename.
3. The third way is the BBUTIL2 program. BBUTIL2 contains several functions for importing
and exporting Bulletron messages.
5.4.11.6. Private Files
Bulletron provides several methods of making specific files and groups of files accessible only to
a certain user or group of users. If you want a file to only be accessible by a specific user, then you can
name the file "account.@nn" where "account" is the account code of the user that you want to
download the file, and "nn" is a two digit decimal number between "00" and "99". The "@" sign in the
first character of the file name extension tells Bulletron that only the user whose account code is the
same as the file name can see the file in the directory or download it, If any user other than "account"
does a directory or tries to download it, the file will "not be found". If a user uploads a file with
filename "account.@nn", and that exact file name is already present in the directory to which he is
uploading, then Bulletron adjusts "nn" to be the next decimal number higher than any present in the
directory. When the upload is complete, Bulletron creates mail messages to SYSOP and to "account",
notifying them of the upload. At 3:00 AM, when Bulletron purges messages, it also checks for files in
the personal mail download directory which also exceed the day limit and deletes them. If a file is
purged, a message will be put into the system log indicating that the system deleted it.
You can also make a file private to a specific user, without giving it a funny file name, by setting
the "V" flag for it in the Download Database. Use the "+F" command, option "3" to modify the
Download Database entry for the file. When Bulletron prompts you with:
'From' account [SYSOP ]:
Enter the account code of the person to who you want to give exclusive access to the file. The
value in brackets is the former contents of the field. If you just press [ENTER} then it will remain
unchanged. The default value is YOUR account code. You don't want that unless you plan to make the
file private to yourself. At the next prompt,
Flag V or P [ ]:
Enter "V" to make the file viewable only by the specified account code. Then at the prompt:
Access level [1000]:
assign an access level that is less than or equal to that of the intended recipient. Once again, the
value in brackets is the current value, which will be retained if you just press [ENTER].
At the next prompt,
Bulletin N/Y/F/P [N]:
enter "N" because the file is not a bulletin (bulletins are discussed in a later section of this
manual). In this case, the former setting is correct.
Notify sysop [N]:
If you enter "Y" here, you will receive a system generated message in your private mail when the
user downloads the file. Finally, Bulletron asks,
Change description (Y/[N]):
You can change the 9,000 character description of the file here if you want. If you want a file to
be private to a certain group of people, then use the above method, but set the file's flag to "P" instead
of "V". The file will be password protected and the value that you placed in the "from account" will be
its password. You can then make the file accessible to anyone by telling them the password.
You can also make a file private to a group of people, such as "subscribers only", or "company
employees only" by setting the access level for the file high enough that only that group of people can
see it.
Note that, when Bulletron selects files for display to a user backwards by date, or new since last
logon, Bulletron selects the files by the date and time that you last updated the Download Database for
that file. It then shows the true date and time of the file to the user. If you add a large batch of files to
your system all at once, as in the addition of a CD-ROM, the system displays all the files with the "FL"
command, even though some of them may actually be many years old. If you want your users to notice
some files that they have been overlooking, you can use "+F", function "5", on that directory and
answer "Y" when the system asks you if you want to change the upload dates for the files to today.
Bulletron will then tell users that all those files are new since their last logon. If someone uploads a
file that is several months old, but new to your system, then the system will present it as a new file
because it is new to your system.
5.4.11.7. File Attachments
At times, there are files that must be downloaded together to be usable. This might occur in the
case of a software vendor, who produces several different versions of his software, all of which share
various subsets of common utility files. For example, in the case of a producer of accounting software,
there might be an Accounts Payable module, an Accounts Receivable module, an Inventory Tracking
module and a Job Costing module, each of which requires a General Ledger module and a collection of
data entry and printer support utilities and some data files. One solution would be to pack up the
General Ledger, the utilities and the data files in each of the separate packages. This, however, not only
wastes disk space, but also wastes human effort because each of the packages would have to be
updated each time that one of the common files is changed. This approach can also lead to costly errors
and irritated customers, if one of the packages is missed during the update.
A better approach to solving the above problem is to have one copy of each the General Ledger
module, the utilities, and data files, in separate files, and somehow attach them to each of the main
software packages. Bulletron provides for subsidiary files to be attached to a main file by a
mechanism called "file attachments". To attach one file to another, modify the description of the main
file by adding a line to it, stating the path-id and name of the attached file. File attachment lines are
fairly simple. The first character of the line must be an "@" sign. Immediately after the "@" sign, type
the four character Bulletron path-id for the path where the file resides. Immediately after that, type the
name of the file, up to 12 characters. The file name can be terminated by a space character, and
comments can be placed on the rest of the line. File attachment lines do not necessarily have to be at
the end of the file description, but they can not be at the beginning. The BBS program searches for the
sequence "linefeed-@" to locate file attachment lines, so if the first character of the file is an "@" sign,
then that line will not be recognized as a file attachment line. File attachment lines can be interspersed
throughout the file description, with paragraphs of text in between describing the attachments.
As an example, suppose that "FILE1.ZIP", "FILE2.ZIP" and "FILE3.ZIP" are main files, and
"FILEA.ZIP", "FILEB.ZIP", "FILEC.ZIP", and "FILED.ZIP" are common attachments. "FILEA.ZIP"
and "FILEB.ZIP" are in a directory known to the BBS by the path-id "SYSA". "FILEC.ZIP" and
"FILED.ZIP" are in a directory known to the BBS by the path-id "UTIL". The other files are in a
directory known to the system by the path-id "MAIN". The descriptions for the files read:
FILE1.ZIP
This is the main file for the first program.
@SYSAFILEA.ZIP - data entry utility
@SYSAFILEB.ZIP - printer utility
@UTILFILEC.ZIP - database utility
@UTILFILED.ZIP - display utility
FILE2.ZIP
This is the main file for the second program.
@SYSAFILEA.ZIP - data entry utility
@UTILFILEC.ZIP - display utility
FILE3.ZIP
This third program requires the first and second programs
and FILEC.ZIP. FILEC.ZIP is attached here to make sure it
is not omitted if it becomes no longer required by FILE1.ZIP
or FILE2.ZIP.
@MAINFILE1.ZIP
@MAINFILE2.ZIP
@UTILFILEC.ZIP
If a user requests to download FILE1.ZIP, he will automatically receive FILEA.ZIP, FILEB.ZIP,
FILEC.ZIP and FILED.ZIP. If he requests to download FILE2.ZIP, he will also receive FILEA.ZIP
and FILEC.ZIP. If he requests to download FILE3.ZIP, then he will receive FILE1.ZIP, FILEA.ZIP,
FILEB.ZIP, FILEC.ZIP, FILED.ZIP, and FILE2.ZIP as well. The BBS program is smart enough to
know that the FILEA.ZIP and FILEC.ZIP attachments to FILE1.ZIP, as well as the FILEC.ZIP
attachment to FILE3.ZIP, are redundant, and will not send them twice.
If you attach files recursively, that is, File A is attached to File B, which is attached to File C,
which is attached to File A, the BBS program will ignore file attachments that it has already queued,
thus eliminating the possibility of an endless loop. File attachments can be nested arbitrarily deep with
no impact on the performance of the system. Bulletron's internal file batch table has a capacity of
10,000 entries, which should be sufficient for most individual transfers.
When assembling a batch with file attachments, the BBS program verifies that the user has
sufficient privilege to download the main file and each attached file. If the user does not have sufficient
privilege, or session time remaining, to download any of the attachments, then he will be prohibited
from downloading the entire set.
To make the file attachments more visible, you may want to use the "PXP" command, function
"2" to disable automatic line wrap for file descriptions. Line wrap happens at the time when the file
description is displayed, and file descriptions are stored exactly as you type them, so file attachments
will not be lost if you enable line wrap for file descriptions, but they may look messy.
5.4.11.8. FAXback Feature Setup
If you configure your computer with a modem that is capable of transmitting FAX documents
and install software for transmitting FAX documents, then you can configure Bulletron so that users
can have the BBS transmit FAX documents that you have stored on disk to their FAX machines. This
feature becomes particularly useful if you are running a technical support BBS, because your FAX
document files can contain diagrams or illustrations that would be impossible to represent in a plain
ASCII text file. The way that this feature works is by identifying for Bulletron a special printer device,
which is actually the driver for your FAX transmission software. A good example of this kind of FAX
transmission software is FaxWorks, which is a product of SofNet, Inc. (telephone 404-984-8088). One
component of FaxWorks is a device driver that looks like a line printer device to OS/2 programs, but in
actuality transmits the files that it "prints" over a FAX modem connected to your computer's COM1 or
COM2 port. Note here, that installation of FaxWorks makes the serial port and modem that it uses
unavailable for use by the BBS. If you plan to use this feature, then you should plan on another serial
port, modem and telephone line, in addition to those that you plan to use for the BBS.
The files in which you store FAX documents will usually be special ASCII text files, in which
you have embedded special codes for controlling type size, positioning, embedded illustrations, and so
forth. They may also be TIFF format image files that were received by a FAX modem or prepared
using a document scanner. The exact nature of these files will depend on the FAX transmission
program that you select. All that is relevant to Bulletron is that the FAX documents be stored in files
on your disk, that the FAX transmission software appear like a printer device, and that the simulated
printer device be able to transmit those document files if given their directory paths and file names.
Once you have installed your FAX modem and FAX transmission software, and verified that it is
working properly and not interfering with your BBS, you begin the setup for the FAXback feature by
using the "PF" command to establish the four character path-IDs for the file directories in which you
will place the FAX document files. Section 5.4.11.1 gives detailed instructions on the use of the "PF"
command for defining directory path-IDs. Once you have established the four character path-IDs for
the file directories that contain your FAX documents, you must log onto your BBS as the system
operator and use the "+F" command, function "5" to create file descriptions for those files and records
for them in your Download Database. You can also preload the Download Database using function "I"
of the BBUTIL2 program, which is discussed later, in section 6.12.1.18. Once you have established
records for the FAX document file in your BBS' Download Database, you then use the "PXX"
command to assign those file directory path-IDs to sub-boards in your system, thus making them
available to your callers.
The "PXX" command is very similar to the "PD" command that you use for assigning file
directory path-IDs to sub-boards for downloadable files. The difference is that the directory/sub-board
associations established with the "PXX" command are visible to the users by way of the "X"
commands, whereas those that you create using the "PD" command are visible to users by way of the
"F" commands. Also, your users can not use the "D" and "U" commands on directory/sub-board
associations that you create using the "PXX" command for downloading and uploading files. Note,
however, that because the records for your FAX document files are stored in the Download Database,
you can use all the same access level, account code and password protections on FAX documents that
you can apply to downloadable files. You can make a FAX document private to a specific account by
giving it a file name of the form "account.@nn", as with a downloadable private file. You can also use
file attachments in the descriptions for FAX documents to cause certain documents to be automatically
included with others, as with downloadable files.
The dialogue for defining a FAX document directory begins with:
Board Abbreviation:
At this point, you enter the three character abbreviation for the sub-board upon which you want the
FAX document directory to appear. After entering the sub-board abbreviation, Bulletron asks you for:
Selection Letter:
You can choose any letter , A - Z, or numeral, 0 - 9, except "K", which is used as an escape back to the
main system prompt. Each Bulletron sub-board can have up to 35 different FAX document directories.
Once you enter the sub-board abbreviation and menu selection character, Bulletron confirms this with:
FAX document subdistrict path for bbb selection x
Bulletron then asks you for a verbal description of the files in that directory, which it can use for
building the menu of directories that the user sees with the "X" command. The prompt for this verbal
description is:
Description of subdistrict [ ]:
You can enter up to 31 characters of verbal description. Then the program asks you for the four
character path-ID for the directory, or one of the directories, in which you placed the FAX document
files:
Path ID [ ]:
Had this been a downloadable file directory setup ("PD" command), you would have been asked for a
directory for uploads and a directory for downloads at this point, but FAX document directories only
require one path-ID. After you enter the path-ID, Bulletron prompts you for the feature access level
required to see this directory:
Access level required for this subdistrict [0]:
After entering the access level required, Bulletron asks you for the name of the simulated line
printer driver provided by your FAX transmission software.
Device name of FAX printer driver [ ]:
This might typically be a code like "LPT3", or "LPT4", though you are allowed to enter up to fifteen
characters. The name of the simulated printer is something that you will have selected while installing
the FAX transmission software. After entering the device name, Bulletron asks you for some
information that you can have appear on the cover sheet for your FAX transmissions. The first item
that it asks for is:
Name to appear on cover sheet, "*" for default [*]:
For this, you might want to put the name of a service representative in the department which handles
matters related to the FAX documents in that specific directory. The "default" for this item, and those
that follow, are values that you can define in the setup screens for FaxWorks, or other FAX
transmission software. The second cover sheet item is:
Company name to appear on cover sheet, "*" for default [*]:
In most cases, you will let the company name default, though, if you are a service bureau or a vendor
for others' products, you may want to assign a different company name for the cover sheet of FAX
documents in a specific directory. After the company name, Bulletron prompts you for:
Company voice phone to appear on cover sheet, "*" for default [*]:
For this, you would want to specify a phone number that corresponds with the company name given in
the prior item. After the company voice phone number, Bulletron prompts you for the corresponding
company FAX phone number:
Company FAX phone to appear on cover sheet, "*" for default [*]:
After the company FAX phone number, Bulletron allow you to specify comments that can appear on
the cover sheet and in the page headings of each FAX, and a comment that will be placed in the FAX
Log each time that the document is transmitted:
Comment to appear on cover sheet, "*" for default [*]:
Comment to appear in page headings, "*" for default [*]:
Comment to appear in FAX Log, "*" for default [*]:
For each of these, you can specify up to 31 characters. Next, Bulletron asks you for a file specification
to allow you to specify a bitmap (.BMP) file that contains your company logo or trademark, to appear
on the cover sheet:
File spec for cover sheet bitmap, "*" for default [*]:
This file specification can be up to 31 characters. After the cover sheet artwork, you get to specify
whether you want documents in the directory to be sent with a full cover sheet, a short cover sheet, or
no cover sheet:
Cover sheet size (0=short, 1=full, 2=none) [0]:
After specifying the cover sheet size, you can specify the font for documents in that directory:
Font name, "*" for default [*]:
In most cases, you will let the font name default, having the font specified by special control codes
within the FAX document file itself. Along with the font name for documents in that directory,
Bulletron allows you to specify the point size for that font:
Point size, "*" for default [*]:
Again, you will probably allow the point size to default, having specified it for each document using
special control codes within each document file. Along with the font name and size, you can also
specify special tab spacing for documents in that directory, when appropriate:
Tab spacing, "*" for default [*]:
Finally, after the tab spacing, Bulletron allows you to specify a page length and orientation for
documents in that directory:
Page length in inches, "*" for default [*]:
Page orientation (0=portrait, 1=landscape) [0]:
The default page length, which you can specify with the setup screens for FaxWorks or other FAX
transmission software, will probably be 11 inches.
When you complete this dialogue, Bulletron saves the setup for the FAX document file directory,
and allows you to add, change or delete other FAX directories. Enter "Q" to quit back to the Extended
Features Menu when done.
5.4.12. Matchmaker Questionnaires
Every Bulletron sub-board can have a n optional feature called its "matchmaker questionnaire.
An obvious connotation of "matchmaking" would be a computer dating service. Many people use
Bulletron for this. It could also mean matching people with job offerings in an employment database,
matching home buyers with properties in a real estate database, or any number of applications.
Bulletron provides three basic types of matchmaker questionnaires: multiple choice, essay, and
combined. Then a variant of the essay questionnaire is the order-entry form, which has special features
for instant, on-line validation of VISA, MASTERCARD, American Express and Discover Card
charges.
5.4.12.1. Multiple Choice Questionnaires
After you set up a sub-board, using the "PB" command, for a special feature type indicating a
matchmaker (types "A", "M", "T", "C", "O" or "F"), you must create a matchmaker questionnaire form
as a message to a special account on your "utilities" sub-board.
The account code for the questionnaire message is "QUESTxxx", where "xxx" is the 3-character
abbreviation for the sub-board. Multiple choice questionnaires can have up to 30 questions and each
question can have up to 16 replies. There can be fewer than 16 replies, but they must be lettered
sequentially, beginning with "A". If there are only 3 replies, they must be "A", "B", "C", not "A", "E",
"H". Except for the first column, there cannot be an asterisk (*) or "#" used in the text of the
questionnaire. The questionnaire can be free form within certain bounds. Examine the following
questionnaire:
*181. Area I live in:
A) Los Angeles area (all of LA. & Orange counties)
B) Southern Calif. (other than Los Angeles area)
C) Northern Calif.
D) East Coast-New England
E) The Southeastern United States
F) The Midwest
G) Rocky Mountain-Southwest
H) Pacific Northwest
*182. My age:
A) under 18
B) 18-20
C) 21-25
D) 26-29
E) 30-34
F) 35-39
G) 40-49
H) 50 and over
*183. My profession:
A) student
B) blue collar
C) clerical
D) professional
E) technical
F) entertainment
G) medical
H) unemployed
*184. I am interested in:
A) sports cars
B) racing cars
C) vintage cars
D) 4x4 trucks
E) pickup trucks
F) motorcycles
G) dirt bikes
H) ATVs
************
Notice the "*181." on the first line of the questionnaire. The "*" signals the beginning of a
question. The first "1" means that there can be at most 1 response. This can be any number from "1" to
"9", then "A" through" G" depending on the question. The "8" means there are 8 responses possible.
This can also vary from "1" to "G". The "1." is the question number. THE QUESTION IS
TERMINATED BY A COLON, AND EACH RESPONSE IS SEPARATED BY A RIGHT
PARENTHESIS ")". These key points must be present or the matching routine will not work.
There should be no blank lines within the questionnaire. The match questionnaire must be no
more than 9,000 characters in length to fit within a message. The format is the same for both match to
accounts and to messages. The questions can span multiple lines and must be terminated by a colon,
the responses must fit on one line and are terminated by a carriage return. The row of "***" at the end
signals the end of all the questions.
The question can begin with "*" or "#". If the question begins with "#" and the user uses the
quick match feature ("MS QUICK" or "MP" commands), it will EXCLUDE any account or message
whose response matches the user doing the search. If question 3, for example, is
#123. My sex is:
A) male
B) female
then any males doing an "MS Q" will only match to females and females will only match to
males.
To create or change a questionnaire, construct the questionnaire off line with your text editor, log
on to Bulletron, select your "utilities" sub-board, and enter "E@ QUESTxxx" where "xxx" is the board
abbreviation where the questionnaire is to be used. The "E@" will cause Bulletron to get the
questionnaire from a disk file. Be sure to remove the old questionnaire by entering "RA QUESTxxx"
and respond with "D" to delete it. You will also want to delete all the users old responses so they will
re-answer the questionnaire again. Use the "+" command, option "7", to delete the match
questionnaires for that board. Be sure that the file containing the questionnaire is in the same directory
as the BBS program itself. You can also prepare all your matchmaker questionnaires off-line and use
the BBUTIL2 program to load all your "*.UTL" files into messages on your "utilities" sub-board.
When you create a new questionnaire, be sure to log onto your BBS and test it by answering the
questions yourself. If you get the error message:
ERROR IN QUESTIONNAIRE. DO A MQ
it means there is an error in your definition of the questionnaire. Enter command, "MQ", and the
system will give you more information about which line contains the error. It will stop displaying at
the point of the error. Be sure not to use any "*" (asterisks), "#", or ")" in the responses or questions
except where Bulletron expects them as delimiters, and make sure that there are no blank lines at the
beginning of the message.
Note also that Bulletron will only prompt the user for one questionnaire per logon including the
verify questionnaire. So if you are using the verify questionnaire and have 7 questionnaires on 7
separate sub-boards, the user will have to log on 8 times
before he will be prompted to answer all the questionnaires. This prevents the user from
spending all his session time answering questionnaires and not getting to see the rest of the BBS.
5.4.12.2. Essay Questionnaires
The essay (fill-in-the-blank) questionnaire allows users to enter anything they please rather than
being limited to just those responses you provide. The example below shows the form of a typical
essay questionnaire:
*Name:
*Address:
*Occupation:
*If an omnipotent genie granted you three wishes,
what would you ask for:
********
Each question begins with an asterisk ("*") and ends with a colon (":"). The last line should
contain nothing but asterisks, at least three of them, to tell Bulletron where the questionnaire ends.
Place the questionnaire message on your "utilities" sub-board as a message to account "QUESTxxx"
where "xxx" is the three character sub-board abbreviation. When a user fills out the questionnaire,
Bulletron merges the questions and his responses into a standard Bulletron message. The form plus the
users responses must fit within a 9,000 byte message.
5.4.12.3. Combined Questionnaires
The "combined" questionnaire contains a multiple choice questionnaire which is useful in doing a
match search along with an essay questionnaire which allows the user to express himself in his own
words. Create a multiple choice questionnaire as described previously including the string of asterisks
(******) at the end. Follow that with the essay questionnaire described above. Both parts must fit
within the same message. For example:
#121. My sex is:
A) male
B) female
********
*If you and I were shipwrecked on a desert island, I would:
5.4.12.4. Order Entry and Verify Questionnaires
If you plan to use one or more of your sub-boards as a "mail order store", then you have already
set the Special Feature code for that board to an "O" (for Order entry). You now need a form that the
user fills in with his name, address, credit card information, etc.. to complete the order. The order entry
form is free form like an essay questionnaire, but the form plus the user's responses must be able to fit
within a 9,000 byte message. Examine the following form:
*Name:
*Street Address:
*City, State Zipcode:
*Telephone #:
*[CC#]:
*Item or message number:
*Quantity:
*Description:
*Price:
*Tax and shipping will be added
acknowledge by entering YES:
********************
The asterisk ("*") signals the beginning of a question and the colon (":") signals the end of a
question. Except for the first column, there cannot be an asterisk used in the text of the questionnaire.
A question can span more than one line such as the last line in the example.
Certain "Macros" can be entered in brackets ([]) to perform special functions:
[NAME]will use the user's name from the account record as the default if he presses return
so he does not have to reenter it unless he used a handle or nickname, in which
case he should enter his real name.
[+] means that this field is required, and one or more characters must be entered.
[@(999)/999-9999] Accept format EXACTLY, where "9" means accept any decimal digit.
Other characters, such as "(", ")", [@99] "/" and "-" must be entered exactly.
[@ ] means that the number of characters must be the same as the number of blanks
after the "@" sign.
[CC#]means prompt and validate a credit card number and expiration date. This
verifies that the credit card number an expiration date conform to the checks
imposed by VISA, MASTERCARD or American Express. You will still need to
phone in the charge to your credit card agency to verify that the card is not
reported lost or stolen.
[SYSINFO] inserts a line with the user's password to check for duplicate accounts, and the
system password used by the user for marketing.
All user entered responses, including null responses, will begin on a new line preceded by "> " so
that the data can be scanned by a program and entered into another database if necessary. Everything
in [] must be upper case. NOTE: be sure you do not use the string "[enter]" to tell the user to press the
enter key since Bulletron will try to interpret a special command when it encounters the brackets.
Here is an example of an order entry form that you might use to let people charge subscriptions
for your BBS:
*If you used a nickname or "handle" when logging on,
enter your REAL NAME, otherwise just press enter [NAME]:
*What is your area code and telephone number[@999/999-9999]:
*What is your mailing street address[+]:
*What is your mailing city, state[+]:
*What is your ZIPCODE (5 digits US, 7 digits Canada)[@ ]:
*Master Card or Visa numbers[CC#]:
*Amount you want to charge (@ $2.40/hour, $25.00 minimum):
The response message that Bulletron would prepare and send to you in private mail would look
like:
*If you used a nickname or "handle" when logging on,
enter your REAL NAME, otherwise just press enter [NAME]:
> Gary O. Young
*What is your area code and telephone number[@999/999-9999]:
> 612/894-5580
*What is your mailing street address[+]:
> 1103 East Cliff Road
*What is your mailing city, state[+]:
> Minneapolis, MN
*What is your ZIPCODE (5 digits US, 7 digits Canada)[@ ]
> 55337
*Master Card or Visa numbers[CC#]:
> Visa: 1234-2345-3456-4567 Exp 12/99
*Amount you want to charge (@ $2.40/hour, $25.00 minimum):
> $25.00
Note the [CC#] line. When Bulletron encounters the special characters [CC#] (upper case), it
will prompt and check both the card number and expiration date. The program understands
Mastercard, Visa, American Express and Discover cards. It checks for the proper number of digits and
computes and compares the check digit to minimize entry errors. The expiration date is checked for
being a valid date (MM/YY) and later than the current date. It can not check whether or not the card
has been reported lost or stolen. Automatic methods of doing that are different for every bank. Check
with your bank for information on how to get credit card charges fully validated and make deposits.
An order-entry form, like a matchmaker questionnaire is placed in a message on your "utilities"
sub-board. The "TO" account must be "QUESTnnn" where "nnn" is the sub-board abbreviation.
Normally, the system operator, or an assistant logs on and selects an order-entry sub-board to
post messages containing items to buy. Therefore, when you, as SYSOP, enter a message on an
order-entry sub-board you get the normal Enter command menu. You must log on as an account other
than SYSOP to test out the order entry form as a user would see it.
You should set the summary type for order-entry sub-boards (using the "PB") command to "B".
This will show a user the titles of all the messages on that sub-board every time the user selects that
sub-board. Because the messages do not change very often, if you set the summary type for "L" for
"new messages since last logon", then users will seldom see your catalogs messages.
5.4.12.5. Verify Questionnaires
The verify questionnaire is a special case of an order entry form that you send to account code
"VERIFYQU" on your "utilities" sub-board. If you create this message, then each new user will be
required to fill it out when they set up their account. You use this form to get the new user's real name,
address, phone number and so forth so that you can verify their identity. Experience has shown that
calling a new user back by voice to verify his application for a new account virtually eliminates people
who use obscene language, try to sell stolen goods, drugs and other contraband. It is generally a good
idea to begin the form with a statement that the information the user enters on it will be kept in strict
confidentiality. If you run a matchmaking dating service that caters to adult fetishes, you may also be
required by the laws in your state or community to verify proof of age before granting access to your
BBS, as some of your messages and files might be considered pornographic. For your own marketing,
you may also choose to include some questions about the user's profession or hobby interests. An
example of a typical verify questionnaire would be:
*This is your "NEW ACCOUNT APPLICATION".
The information you provide here will be kept strictly
confidential. You must answer truthfully and accurately
or you will not be granted access to this system
Please enter your real name here [NAME]:
*Street Address, or P.O. Box [+]:
*City, State, Zip [+]:
*Voice phone number [(999)999-9999]:
*Date of birth [99/99/99]:
*Best time to call for verification:
*How were you referred to our service:
*Access on this service is a privilege, not a right.
It is granted providing you do not post any illegal or
objectionable information in public messages.
Do you agree with the terms and conditions of this
service? [SYSINFO]:
For the final question of this verify questionnaire, the response that you would receive in private
mail would look like:
> SYSINFO DATSUN CAMERA Y
When you read the response to the verify questionnaire in your private E-mail it is a good idea to
use the "%" post-read function to save them to disk files. You can name then with the user's account
code as the file name and ".APP' as the file name extension (for APPlication form"). After saving them
to disk, you can delete them so they don't clutter up your mail.
Some operators find it convenient to make a special sub-board that only the SYSOP can access.
When they receive a response to a verify questionnaire in private mail, they move it to that sub-board,
using the "T" post-read function. Then, at a more appropriate time, they can use the "RB" command on
that special sub-board to read back the applications from latest to oldest, calling back the people to
verify them.
If a user responds with information that is obviously false (as when a user enters today's date as
his date of birth) you can use the "+9" command, from the main system prompt, to reset the user's
account so that he will have to fill out the application again the next time he logs on.
5.4.12.6. Order and VERIFYQU Export Database
Option "5" of the "PXP" menu allows you to define a file in which all responses to order entry
forms and verify questionnaires will be stored as they are filled out by the users. This file is a
comma-delimited file which can be directly imported to programs such as dBase or Lotus 1-2-3. Each
record; that is, each line, in the file contains all the user responses to one questionnaire. The user
response to each question is a string of characters enclosed on quotation marks, and fields are separated
by commas. Because the file is only opened for less than a second when the user closes the
questionnaire using the save ("S") option, it may be read, renamed, or deleted at almost any time by an
external program. In each record of the file, the first field always contains the name of the
questionnaire, which will be "VERIFYQU" or "QUESTxxx". The second field of each record contains
the account code of the user who filled out the questionnaire. The third field contains the date and time
that the questionnaire was filled out. The remaining fields contain the responses as typed by the user.
Figure 5.4.12.6-1 shows a sample of an Order and VERIFYQU Export Database File.
5.4.13. Outside Features (Doors)
A feature which is sometimes found on single user BBS software, called "doors", allows the BBS
to shut down temporarily to run another program and then restart the BBS when the other program
finishes, or if the BBS does not use much memory, to run the other program in memory that is not
being used by the BBS software. Bulletron Professional BBS Software for OS/2 provides the
following five types of outside features:
D Direct Connect
T Telephone Dialout
R DOS Program
F DOS Program with FOSSIL Support
O OS/2 Program
Each of these has special characteristics, features and limitations which are described in the
following sections.
5.4.13.1. Direct Connect Features
A direct connect type outside feature requires an external computer that is running a program that
communicates via a serial port, such as a mainframe system, a minicomputer running an operating
system such as UNIX or VMS, a slave BBS in another PC, or a door program running in another PC.
The serial port of the external computer is connected one of Bulletron's serial ports with a null modem
cable. The wiring of the null modem cable are shown in Figure 5.4.13.1-1.
When a user opens an outside feature of this type, Bulletron acts like a terminal to the external
computer. It simply passes data, without any translation or interpretation, between the serial port on
which the user called in, and the serial port to which the outside feature is connected. The connection
persists until Bulletron detects loss of carrier from the external computer; that is, until the external
computer turns off its DTR signal.
The transmitted data (TxD) and received data (RxD) signals are crossed in the cable so that each
computer receives what the other transmits. The Request to Send (RTS) and Clear to Send (CTS)
provide flow control. When one side turns off RTS, the other side sees CTS go off and stops
transmitting data until CTS comes back on. Similarly, the Data Terminal Ready (DTR) and Data Set
Ready (DSR) signals are crossed in the cable, so that if either computer is turned off, then the other can
detect it and reset. The carrier detect (CD) signal at each end of the cable is connected to DSR so that
the other computer can disconnect by deliberately turning off DTR.
When a user opens a direct connect outside feature, Bulletron sends a start-up sting, that you
specify, over the port to the external computer. Then it waits for a start-up time-out period for the
external computer to respond with any kind of data coming back over the serial line. Once the first
character is received from the external computer, a different time-out is applied to detect failure of the
program in the external computer. When the program in the external computer finishes, Bulletron can
send a closing command that you specify to the external computer.
The advantages of running a direct connect outside feature in an external computer are:
Files in your main BBS computer are safe in the event that the "door" program has a "back
door" that lets users shell to the operating system and, thereby, delete files.
Very little processing time is required by the main BBS computer for passing data back and
forth, so both the BBS and the door program can run at full speed.
Extra phone lines are not needed for the external computer(s).
The door program does not need to be able to run in a PC under DOS or OS/2, nor be able to
drive the serial port hardware that Bulletron is using.
Programs that do not use FOSSIL drivers can be used.
Bulletron can time out the door program if it gets stuck in an internal loop or disconnects the
caller without terminating.
The disadvantages of running a direct connect outside feature in an external computer are:
One, or more, extra computers must be purchased and maintained.
You need extra serial ports in your Bulletron system that can not be used for incoming calls.
The external computer must be physically located within about a hundred feet of the main BBS
computer.
5.4.13.2. Telephone Dialout Features
Telephone dialout outside features are similar to direct connect outside features in that Bulletron
acts as a pass-through for serial ports. Unlike direct connect outside features, however, telephone dial
outside features do not require dedicated serial ports, so Bulletron can connect to the external program
using the same serial ports that receive incoming calls. For this type of outside feature, you specify a
telephone number for the outside feature, and Bulletron searches out a serial port that is not in use and
dials out on that port's phone line. This is most useful for situations where your outside feature
computer is physically remote from the BBS computer, as in a corporate environment where an
application running on a mainframe system in another building must be accessed.
The advantages of running a telephone dialout outside feature in an external computer are:
Files in your main BBS computer are safe in the event that the "door" program has a "back
door" that lets users shell to the operating system and, thereby, delete files.
Very little processing time is required by the main BBS computer for passing data back and
forth, so both the BBS and the door program can run at full speed.
Dedicated extra serial ports are not needed.
The external program can be physically very distant from the main BBS.
The door program does not need to be able to run in a PC under DOS or OS/2, nor be able to
drive the serial port hardware that Bulletron is using.
Programs that do not use FOSSIL drivers can be used.
Bulletron can time out the door program if it gets stuck in an internal loop or disconnects the
caller without terminating.
The disadvantages of running a direct connect outside feature in an external computer are:
One, or more, extra computers must be purchased and maintained.
Each external computer needs to have at least one telephone line for its own use.
5.4.13.3. DOS Program Features
A DOS program outside feature executes a program written for DOS in the same computer as the
main BBS, by creating an OS/2 DOS full screen session. This type of outside feature lets you take
advantage of the large assortment of "door" programs that have been written for DOS based BBS
programs like RBBS and PC-Board.
When you select a program to use with this feature, you must make sure that it is compatible with
the type of serial port hardware that your Bulletron system uses. When Bulletron opens the DOS
session for the door, it will completely relinquish control of the serial port on which the call came in,
and expect the door program to control the serial port directly until it finishes. If you BBS uses an
intelligent multi-port card, then the DOS program must be able to drive that multi-port card directly,
with no assistance from the BBS. There, also, is no way to time out the DOS program if it gets stuck
internally in an infinite loop or hangs up on the caller without exiting.
Other disadvantages to this type of outside feature are that some door programs have "back
doors" that allow the user to shell to DOS and delete your files, and that DOS sessions running in the
same computer as the BBS will take CPU time away from the BBS, making the BBS run slower. Each
external DOS session also takes up about 512 Kbytes of RAM, so you will need to have extra memory
installed in your computer to prevent OS/2 from swapping memory to disk. The amount of RAM
needed by Bulletron for OS/2 is 8 Mbytes, plus 128 Kbytes for each phone line. 16 Mbytes of RAM
will let you run about 12 DOS program doors concurrently on a fast 486 or Pentium processor.
The advantages of running a DOS Program outside feature in the same computer as the BBS are:
No external computer needs to be purchased or maintained.
Dedicated extra serial ports are not needed.
No extra phone lines are needed.
Programs that do not use FOSSIL drivers can be used.
The disadvantages of running a DOS Program outside feature in the same computer as the BBS
are:
Files in your main BBS computer are at risk in the event that the "door" program has a "back
door" that lets users shell to the operating system and, thereby, delete files.
Extra processing time and RAM are required in the main BBS computer for executing the
program.
The door program must be able to run in the PC under DOS, and be able to drive the serial port
hardware that Bulletron is using.
Bulletron can not detect if the door program gets stuck in an internal loop or disconnects the
caller without terminating.
The interface to the DOS session that provides information about the user, the port, and your
BBS consists of two files that are written to your BBS default directory just before the DOS session is
created. These files are named "DORINFOx.DEF" and "DOOR.SYS". Door programs written for
RBBS usually use the DORINFOx.DEF file. Door programs written for PC-Board usually use the
DOOR.SYS file. A few programs can use either, but no programs require both.
5.4.13.3.1. DORINFOx.DEF Interface
The DORINFOx.DEF interface can support lines 1 through 35 of your BBS. The actual name of
the file will be "DORINFO1.DEF" for a call that came in on line 1, "DORINFO2.DEF" for a call that
came in on line 2, and so forth. For a call on line 10, it would be DORINFOA.DEF, and for a call on
line 35 it would be DORINFOZ.DEF. There is no defined convention for naming a file beyond
"DORINFOZ.DEF". When you define a DOS program outside feature, you can restrict the serial ports
for which the outside feature will be allowed to execute. The DORINFOx.DEF file is a plain ASCII
text file, thirteen lines long, containing the following information:
Demo BBS name of your BBS
Patrick first name of your system operator
Gleason last name of your system operator
COM1 serial port, "COM0" = local console
2400 BAUD,N,8,1 communication parameters in effect
0 RBBS network type - always zero
SYSOP first name of the caller
last name of the caller
Syracuse caller's city and state
0 0 = straight ASCII, 2 = ANSI color
1000 caller's feature access level
999 minutes remaining in this session
0 -1=FOSSIL driver present, 0=not present
When Bulletron creates a DORINFOx.DEF file, it takes the name of the BBS from what you
entered using the "PP" command, function "N". The first and last names of the system operator are
fields that you can specify when you define the outside feature. Some door programs will compare
these fields to the user name fields and give special privileges to that user. Bulletron lets you designate
an arbitrary person to have those privileges, without giving that person any other privileges, by
specifying his account code as the system operator name. To make sure that callers are uniquely
identified, Bulletron places the caller's account code in the user first name field and leaves the user last
name field blank. Bulletron users can always change their name or handle using the "N2" command,
but you can prevent users from changing their account codes using the "PP" command, function "5".
When Bulletron creates the DOS session for a DOS program door, it invokes the program
specified in the "SHELL=" statement of your OS/2 CONFIG.SYS file, which is usually
COMMAND.COM, with the following parameters:
/C filespec port line
where "filespec" is the name of a batch procedure (".BAT" file) that you specify when you define
the outside feature, "port" is "1" if the caller is on COM1, "2" if the caller is on "COM2", and so forth,
and "line" is the line number that the caller is on. This allows you to write your own programs that
ignore the DORINFOx.DEF file and access any port in your computer. You access the port number in
your batch procedure by the variable name, "%1", and the line number by the variable name, "%2".
*** IMPORTANT NOTE ***
For type "F" (FOSSIL Support) doors, Bulletron always writes "COM1" as the port in the
DORINFOx.DEF file, regardless of what the port really is. Configure all of the nodes of your door
program to be accessing COM1 with FOSSIL support. The FOSSIL support routines will
automatically reroute serial I/O to the correct port, and video I/O to the correct task window. This is
done because FOSSIL driver specifications only allow port numbers from 0 to 254 and Bulletron might
have a port beyond "COM255".
DORINFOx.DEF files produced for type "R" doors reflect the true serial port. The "%1"
parameter always reflects the true serial port.
5.4.13.3.2. DOOR.SYS Interface
A secondary interface file that is provided by Bulletron for DOS door programs that are not
written to understand the DORINFOx.DEF file, or that you want to run on lines 36 and higher. The
convention is to name this file "DOOR.SYS" for all lines. To allow multiple copies of this file to be
written concurrently by users on different lines, Bulletron named the file "DOORnnnn.SYS", here
"nnnn" is the line number of the caller. Your batch procedure that starts the door program must use the
line number argument to identify the correct file and copy it into an appropriate directory, renaming it
to "DOOR.SYS".
Like the DORINFOx.DEF file, the DOOR.SYS file is a plain, ASCII text file, though it is much
longer than DORINFOx.DEF. The fields defined in the DOOR.SYS file are:
COM1 <-- Comm Port - COM0: = LOCAL MODE
2400 <-- Baud Rate - 300 to 38400
8 <-- Parity - 7 or 8
1 <-- Line Number
19200 <-- DTE Rate. Actual BPS rate to use
Y <-- Screen Display - Y=On N=Off
Y <-- Printer Toggle - Y=On N=Off
Y <-- Page Bell - Y=On N=Off
Y <-- Caller Alarm - Y=On N=Off
Rick Greer <-- User Full Name
Lewisville, Tx. <-- Calling From
214 221-7814 <-- Home Phone
214 221-7814 <-- Work/Data Phone
PASSWORD <-- Password
110 <-- Feature Access Level
1456 <-- Total Times On
03/14/88 <-- Last Date Called
7560 <-- Seconds Remaining THIS call
126 <-- Minutes Remaining THIS call
GR <-- GR=Graphics, NG=Non-Graph, 7E=7,E Caller
23 <-- Page Length
Y <-- User Mode - Y = Expert, N = Novice
1,2,3,4,5,6,7 <-- Conferences/Forums Registered In
7 <-- Conference Exited To DOOR From
01/01/99 <-- User Expiration Date
1 <-- User File's Record Number
Y <-- Default Protocol - X, C, Y, G, I, N, Etc..
0 <-- Total Uploads
0 <-- Total Downloads
0 <-- Daily Download "K" Total
999999 <-- Daily Download Max. "K" Limit
10/22/88 <-- Caller's Birthdate
G:\GAP\MAIN <-- Path to the directory where User File is
G:\GAP\GEN <-- Path to the GEN directory
Michael <-- Sysop's Name
Stud <-- Alias name
00:05 <-- Event time
Y <-- If its an error correcting connection (Y/N)
N <-- ANSI supported & caller using NG mode (Y/N)
Y <-- Use Record Locking (Y/N)
14 <-- BBS Default Color (1-15)
10 <-- Time Credits In Minutes (positive/negative)
07/07/90 <-- Last New Files Scan Date
14:32 <-- Time of This Call
07:30 <-- Time of Last Call
6 <-- Maximum daily files available
3 <-- Files d/led so far today
23456 <-- Total "K" Bytes Uploaded
76329 <-- Total "K" Bytes Downloaded
A File Sucker <-- User Comment
10 <-- Total Doors Opened
10283 <-- Total Messages Left
The DOOR.SYS interface standard was originally designed for use with Gap BBS software.
Because of this, some of the fields are not meaningful with Bulletron. Special accommodations made
by Bulletron are:
"comm port" will be accurate for type "R" (DOS Program) type doors, but will always be
"COM1:" for type "F" (DOS Program with FOSSIL Support) doors.
Configure all of the nodes of your door program to be accessing COM1 with
FOSSIL support. The FOSSIL support routines will automatically reroute
serial I/O to the correct port, and video I/O to the correct task window. This
is done because FOSSIL driver specifications only allow port numbers from
0 to 254 and Bulletron might have a port beyond "COM255".
"screen display" will be "N" only if Bulletron is started with the "NOWINDOWS" option.
"printer log" will be "N" only if you specify zero for "PP" command, function "C".
"page bell" will be "Y" if you start Bulletron with the "ATHOME" option or log on as
"SYSOP" and enter public chat.
"caller alarm" will be "Y" if you specify "N" for the second part of "PP" command,
function "Z".
"user name" will contain the account code of the caller.
"home phone" will contain the "voice phone number" specified by the user if you specify
"N" for "PXP" command, function "C"; otherwise it will be blank.
"work phone" will contain the "fax or BBS phone number" specified by the user if you
specify "N" for "PXP" command, function "C"; otherwise it will be blank.
"user mode" will be "N" (for novice) if the user has enabled menus or sub-board
introductions using the "N5" command.
"conferences/forums"will always be blank.
"conference exited"will be the board sequence number of the last sub-board selected.
"user expiration date" will be blank if your billing method ("PX$" command, function "B") is
"D", "S" or "L".
"user record no."will always be blank.
"default protocol"will always be blank.
"total uploads" will always be 32,767.
"total downloads"will always be zero.
"daily dnld K limit"will always be 32,767.
"caller's birthdate"will always be blank.
"GAP user file path"will always be blank.
"GAP GEN file path"will always be blank.
"SYSOP name" will always be "SYSOP".
"alias name" will be the user's name/handle, as set by him using the "N2" command.
"error corr modem"will always be blank.
"ANSI + NG mode"will always be "N".
"record locking" will always be "Y".
"default BBS color"will always be "7" (grey).
"time credits" will always be zero.
"max daily files"will always be 99,999.
"files d/l today" will always be zero.
"user comment" will be the first line of personal description, or blank if you specify "N" for
"IP" command, function "L".
"doors opened" will always be zero.
5.4.13.4. DOS Program with FOSSIL Support Features
In the absence of good support for serial port hardware by BIOS ROMs and BIOS ROM
extensions, a standard was developed for DOS serial device drivers called the FOSSIL
(Fido/Opus/Seadog Standard Interface Layer). For DOS door programs that are written to interface
through a FOSSIL driver, serial I/O can be redirected to use Bulletron's internal serial I/O, video and
keyboard functions. Using the Bulletron's FOSSIL support, a DOS program is not dependent on any
particular type of serial port hardware, and Bulletron can time out the program if it gets stuck internally
in an infinite loop, and can detect loss of carrier if the door program disconnects the caller, but only
programs written for FOSSIL drivers can be used with this interface.
The interfaces to the door program provided for FOSSIL support doors are the same as for other
DOS program doors; that is, the DORINFOx.DEF file and the DOOR.SYS file. The same parameters
are passed to the batch procedure that executes the door program. The only difference is that the batch
procedure must execute a TSR (terminate and stay resident) program named NPFOSSIL.EXE before
starting the door program.
The advantages of running a DOS Program with FOSSIL support outside feature in the same
computer as the BBS are:
No external computer needs to be purchased or maintained.
Dedicated extra serial ports are not needed.
No extra phone lines are needed.
The door program does not need to be written to drive the type of serial port hardware that the
BBS uses.
Bulletron can detect if the door program gets stuck in an internal loop or disconnects the caller
without terminating.
The disadvantages of running a DOS Program with FOSSIL support outside feature in the same
computer as the BBS are:
Files in your main BBS computer are at risk in the event that the "door" program has a "back
door" that lets users shell to the operating system and, thereby, delete files.
Extra processing time and RAM are required in the main BBS computer for executing the
program. Additional overhead is incurred by redirecting the serial I/O calls.
The door program must be able to run in the PC under DOS and be able to interact with a
FOSSIL driver.
5.4.13.5. OS/2 Program Features
Bulletron provides a door interface that permits any OS/2 program to be executed in a session
spawned by the BBS. Using a third party support utility named "OS2YOU", any character based OS/2
or DOS program can be executed an I/O for the keyboard and console are redirected by OS2YOU to the
serial port. The makers of OS2YOU also produce another utility named "PMYOU" that allows any
OS/2 GUI (graphical user interface) program to be executed remotely. PMYOU requires a special
terminal program at the user's end to implement the graphical display.
A shareware version of OS2YOU can be obtained from our Bulletron for OS/2 Development
BBS (315 471-2970), or from most public access BBS's that carry OS/2 shareware, or directly from the
author at:
M Wahlgren Software Dev.
Kransen 4E
S-416 72 Gothenburg
Sweden
Fax: +46 31 196417
Phone: +46 31 196074
The only really negative aspect of running programs remotely this way is that the redirection of
standard video and keyboard I/O requires a considerable amount of CPU time, so this option may be
limited to only systems with very fast processors or small numbers of phone lines.
The advantages of running Program remotely via the OS2YOU/PMYOU interface are:
No external computer needs to be purchased or maintained.
Dedicated extra serial ports are not needed.
No extra phone lines are needed.
Special "door" programs are not needed; any program that runs under OS/2 or DOS can be
executed remotely.
Bulletron can detect if the door program gets stuck in an internal loop or disconnects the caller
without terminating.
The disadvantages of running programs remotely via the OS2YOU/PMYOU interface are:
Files in your main BBS computer are at risk in the event that the program lets users shell to the
operating system and, thereby, delete files.
Considerable extra processing time and RAM are required in the main BBS computer for
executing the program.
The program must be able to run in the PC under OS/2 or DOS.
5.4.13.6. DOS Prompt Feature
This type of door is Bulletron's "back door". Only system operators and assistant system
operators are allowed to access this type of door. It literally gives you an operating system prompt in a
DOS session on the BBS computer. From it, you can execute any commands recognized by
COMMAND.COM, such as "DIR", "DEL", "TYPE", etc.. You can also execute any character based
DOS programs; that is, ones that do not use function keys, or keypad keys, and do not do any direct
video I/O (this eliminates almost every program ever written for IBM PC compatible computers except
COMMAND.COM). With special terminal programs, you can even get access to the function keys and
the keypad keys. Despite its limitations, though, this feature gives you a very quick way to access a
DOS prompt for a simple operation like listing a file directory, or using TECO to edit a file.
5.4.13.7. Setting up Outside Features
To define an outside feature, enter "PX" to bring up the Extended Features Menu and select
option "O" (Outside Features definition), or, to save time, just enter "PXO" from the main system
prompt. Bulletron then prompts you with:
A-add, C-change, D-delete, L-list, Q-quit:
If you select option "L", then Bulletron shows you a listing of the currently defined outside
features that looks something like this:
BRD: MENUOPT: A - Trade Wars 1000 A/L: 100 Type: R
Batch File: D:\BBS\TWARS.BAT
Start-up Time-out (sec): 30 Run Time-out (sec): 300
Feature Operator First Name: Patrick
Feature Operator Last Name: Gleason
Baud Rate: 9600 Flow Control: B Cost (cents/hr): 500
BRD: UTL MENUOPT: B - Tradewars Editor A/L: 1000 Type: D
Begin Command: "@OFB "
End Command: " "
Start-up Time-out (sec): 30 Run Time-out (sec): 300
Baud Rate: 9600 Flow Control: B Cost (cents/hr): 0
Serial Ports: 4
BRD: MENUOPT: C - Galactic Warzone A/L: 100 Type: T
Phone# to dial: 471-2970
Begin Command: "@OFC "
End Command: " "
Start-up Time-out (sec): 30 Run Time-out (sec): 300
Baud Rate: 9600 Flow Control: B Cost (cents/hr): 0
Serial Ports: 5 6
BRD: MENUOPT: D - OS/2 Command Prompt A/L: 100 Type: O
Batch File:
Run Time-out (sec): 300 Cost (cents/hr): 0
BRD: MENUOPT: H - BBS Chess A/L: 0 Type: D
Begin Command: "@OFBEGCMD "
End Command: " "
Start-up Time-out (sec): 30 Run Time-out (sec): 300
Baud Rate: 9600 Flow Control: H Cost (cents/hr): 0
Serial Ports:
8
In this example, we have defined door "A" to be a game named "Trade Wars 1000", requiring
access level 100, which is our minimum subscriber feature access level, to run in a DOS session on the
same computer as the BBS, being executed by a DOS batch file named "D:\BBS\TWARS.BAT". The
remaining parameters in entry "A", the start-up time-out, the run time-out, the SYSOP's name, the Baud
Rate, and flow control are passed to the door program through the DORINFOx.DEF file, which is
created by Bulletron when the door is opened. The "BRD" field is left blank so that this feature is
accessible from and sub-board. If you have a door program that is pertinent to only one particular SIG,
then you can place the sub-board abbreviation for that SIG in this field so that program is visible only
when that sub-board is selected.
The next entry is a "Trade Wars Editor", which we are running in a different computer, connected
through Bulletron's COM4 with a null modem cable. In this case, we have placed "UTL" in the "BRD"
field so that only system operators can access this feature; that is, only system operators are allowed
access to the "UTL" sub-board.
The third entry in our example is a game named "Galactic Warzone" which Bulletron can dial up
through COM5 or COM6, whichever line happens to not be in use by an incoming call at the time.
Each type of outside feature has somewhat different type of setup parameters, so we will explain
each separately in the sections that follow.
5.4.13.7.1. Setting up Direct Connect Outside Features
Bulletron begins its setup dialog for a direct connect outside feature with:
Board Abbreviation (ENTER for all):
At this point, you can simply press ENTER if you want the outside feature to be accessible from
any sub-board, or enter a three character sub-board abbreviation if you want it to be only visible from
one specific sub-board. If you are changing an outside feature definition and want to change the feature
from being specific to one sub-board to general accessibility, then you can enter three spaces here.
The next question asked for an outside feature setup is:
MENU OPTION:
This is the menu selection letter that the user will enter to select the outside feature. It can be any
letter from "A" to "Z" and numbers from "0" thru "9", except "K", which is reserved for an escape to
the main system prompt. You can use the same menu selection letter or number several times if you
have outside features set up to be specific to certain sub-boards. In these cases, the outside feature
specific to the current sub-board will take precedence over the general one when the menu of outside
features is displayed to the user. For example, if you make outside feature "A" be the adventure game
for your games sub-board, but also have a menu selection of "A" defined as a credit card validation
system for the rest of the system, then a user will see the credit card validation program as outside
feature "A" on every sub-board except your games sub-board. On your games sub-board, he will see
the adventure game program as outside feature "A".
After the menu selection letter, Bulletron next asks for:
Feature Description:
This is the 30-character description that will display to the user to describe the feature in the
menu shown to the user.
Direct(D), Dial(T), DOS(R), FOSSIL(F), DOS Prmt(P), or OS/2 prog(O)
Here is where you enter "D" to define the feature as a direct connect feature. This is where the
prompts for the different types of features begin to differentiate.
Beginning command []:
After a connection is established with the slave computer, this command will be transmitted, if
present. This parameter is optional since the slave computer may not need an initial command. The
beginning command may be up to 30 characters long. Bulletron provides several escape sequences that
can be used to dynamically modify the beginning command string:
$^$ is replaced by the account code that logged onto the system prior to the
current user.
^x is replaced by a control character that corresponds to letter "x". For example,
"^M" would produce a carriage return, "^J" would produce a line feed, and
"^I" would produce a tab character.
$+$ is replaced by the user's account code.
$N$ is replaced by the user's name/handle.
$L$ is replaced by the user's city and state.
$A$ is replaced by "Y" if the current session has ANSI or RIP graphics, or "N" if
not.
$T$ is replaced by the number of minutes remaining in the user's current session.
$$$ is replaced by an account code chosen at random.
$O$ is replaced by the user's ordinal call number; that is, "1st", "2nd", etc..
$B$ is replaced by the short name of your BBS, which you specify using option
"N" of the "PP" command.
$S$ is replaced by the descriptive name of the current sub-board.
$P$ is replaced by the main system prompt (usually "What next?")
$I$ is replaced by the task (line ) number of the line on which the user is logged
on.
$TS$ is replaced by the minutes already used in the current session
$TD$ is replaced by the minutes already used in the current day.
$TL$ is replaced by the the total minutes used in the user's lifetime.
% makes Bulletron pause for one second.
~ makes Bulletron pause for one half second.
If you need more than 30 characters for the beginning command, then you can put an "@" sign
followed by an eight character code. The eight characters that you choose will be interpreted as the
name of a special message on your "utilities" sub-board. For example, if the beginning command field
contains the string "@OFBEGCMD", then Bulletron will go to your "utilities" sub-board and look for a
message addressed to account "OFBEGCMD". Bulletron will transmit the contents of that message as
the beginning commands. This allows an entire string of beginning commands to be sent rather than
just 30 characters.
Ending command:
This command is sent to the slave computer when the user terminates the command with
CTRL/K twice, if the user times out or loses carrier, or if the remote computer terminates the feature by
dropping carrier detect signal. CTRL/K from the remote will not terminate the connection because of
binary data that may be transmitted. Two control-K characters consecutively must be entered to
terminate the outside feature from the user end. This parameter is also optional. It may be up to 30
characters long. The ending command can also contain a message "to account" name beginning with an
"@" sign, and contain all the same escape sequences as the beginning command.
1 - Line number or 0 when done [4]:
2 - Line number or 0 when done [0]:
When a user enters an "O" command Bulletron looks for ports that are not being used AT THAT
MOMENT by another outside feature. Certain lines must be dedicated for the outside feature. It does
not make sense to have more than half the lines dedicated. For example, a 9-line/10-user system may
have 7 telephone lines (plus the local console) for incoming calls and two lines dedicated to direct
connect to a slave computer. The two lines do not have to be any specific ports on the multi-port card.
To mark the lines as dedicated to direct connection, use the "PL" command (assigning serial ports) and
set the modem type to "D" to indicate that the line has a null modem connected to it. The lines must
also be indicated in the "PXO" command here as being valid lines to use for the outside feature. If lines
5 and 9 are to be direct connected, enter 5 here at this prompt. You will then be prompted again, and
enter 9. You will then be prompted again, and enter zero to indicate you are finished entering valid line
numbers. Enter -1 for a line number to remove it from the list. The order that you enter the numbers is
the order that Bulletron will attempt to allocate them when users access outside features. If one line is
in use, Bulletron will check the next one. If all the lines are in use, Bulletron will send a message
notifying the user of that condition.
Flow Control (Hardware, Xon/xoff, or Both):
Bulletron provides for hardware flow control using RTS/CTS signals (enter "H" for this setting),
or software flow control using XON/XOFF characters (enter "X" for this setting), or both hardware and
software flow control (enter "B" for this setting). If Bulletron is connected to the outside feature at
9600 Baud and the caller is connected at 300 Baud, Bulletron will use the RTS signal or send XOFF to
the outside feature to halt transmission when caller's buffer is full. A cable with RTS and CTS signals
should be used to connect the outside features ports to the remote computers.
Initial Baud rate:
This is the Baud rate that the port on the local computer will be set before establishing connection
to the remote computer. The Baud rate can be up to 38,400 Baud. Setting it to 9,600 Baud, however,
will generate less CPU processing load, making the rest of your BBS run more smoothly, while still
giving adequate response time for the user of the outside feature.
Access level:
This is the minimum feature access level which the user must have before he can access this
feature. Note that this changes for each entry within outside features. To change the access level for
the outside features menu, use the "PP" command option "8". "PP", option "8" can be used to disable
all outside features if your outside computer breaks down for some reason.
Time-out (seconds) initially:
After a connection is established, the remote computer must send a character back with this
number of seconds. If no characters are received during this initial period, Bulletron will terminate this
outside feature. This is a safeguard in the event that the remote computer is not online or has "crashed".
Time-out (seconds) during feature:
After some characters have been transmitted from the remote computer so Bulletron knows that
the remote computer was online at the time of connection, Bulletron will terminate the feature if no
characters are then received for this period. This is a safeguard in the event that the remote computer
"crashes" after the feature has started.
Surcharge (cents per hour) [0]:
If you provide an outside feature such as Westlaw, Dow Jones News Service, or Compuserve, as
a sub-task under Bulletron, then you will probably want to pass the connect time charge on to the
customer. For most direct connect features however, you will probably set this surcharge to zero. This
surcharge can only be applied if you bill by cents or minutes. It is ignored if you bill strictly by date.
5.4.13.7.2. Setting up Telephone Dialout Outside Features
Set up dial-up outside features in the same way as direct connect features, except for the
following changes. When Bulletron prompts you with
Direct(D), Dial(T), DOS(R), FOSSIL(F), DOS Prmt(P), or OS/2 prog(O)
enter "T" for "telephone dial-up". Bulletron will then prompt you with
Phone# to dial []:
You can enter any phone number, long distance or local. For dial-up outside features, you will
usually allow the feature dial out on all of your phone lines. With direct connect, you must dedicate
some ports for outside features. For dial-up, users can call in on the outside feature lines.
5.4.13.7.3. Setting up DOS Program Outside Features
You begin the setup for DOS Program Outside Features in the same way as Direct Connect
Outside Features (see section 5.4.13.7.1) until you get to the point where Bulletron asks:
Direct(D), Dial(T), DOS(R), FOSSIL(F), DOS Prmt(P), or OS/2 prog(O)
Here is where you enter "R" to define the feature as an DOS Program type door.
Bulletron will then ask you for some information necessary for building the DORINFOx.DEF
and DOORnnnn.SYS files:
Feature Operator First Name [SYSOP]:
Feature Operator Last Name []:
Enter the account code for the person that you want to be in control of the outside feature. This
may be the SYSOP of the main BBS, or possibly a different person on larger systems. Bulletron puts
this name into the DORINFOx.DEF file. Many door programs give special privileges to the person
who logs onto the door with this name. The username that Bulletron passes to the door consists of the
Bulletron account code fir a "first name" and a blank for the "last name".
Then, instead of asking for a start-up command string, Bulletron asks for the name of the batch
file that will execute the program:
Batch file [TWARS.BAT]:
Bulletron creates a virtual DOS machine in a separate OS/2 session to execute the door program.
All the commands needed to execute the door program should be placed in a DOS batch file. Do not
specify and drive or path information for this batch file; the BBS will look for the batch file in the BBS
default directory. When Bulletron executes this batch file, it passes the following parameters:
%1 the port number, 1 for "COM1", 2 for "COM2", etc..;
%2 the line (task) number, as a string of decimal digits;
%3 the character "x" in the "DORINFOx.DEF" file name.
You can use "%1" inside the batch file if you need to identify the serial port that should be used
by this door. Bulletron does not attempt to pass hot handles; this port will be fully closed when the
batch file executes, though the modem will still be connected with the remote user. Bulletron sends the
commands "+++", "AT&D0" and "ATO" to the modem before closing the port so that the modem will
not disconnect if the serial device driver turns off the DTR signal while closing the port. Because the
VCOM.SYS driver (the virtual device driver that gives access to serial ports for OS/2 DOS sessions)
does not support file sharing, it is necessary for Bulletron to close the port before the DOS program is
initiated. At the same time, the COM.SYS driver (the device driver that gives OS/2 programs access to
serial ports) always turns off the DTR signal when the port is closed. Thus, to avoid dropping carrier
when the DTR signal is turned off, these commands are sent to the modem before closing the port.
When the door program finishes, Bulletron sends the commands "+++", "AT&D2" and "ATO" to the
modem to restore the modem to normal handling of the DTR signal.
The %2" parameter can be used to distinguish Bulletron sessions for identifying the
"DOOR.SYS" file or the "node" number. The "%2" parameter will have the task (line) number of the
user session that opened the door. Because it is possible for two or more Bulletron tasks (lines) can be
opening a door at the same time, Bulletron appends the task (line) number to the file name, as in
"DOOR1.SYS" for line 1, "DOOR2.SYS" for line 2, and so forth. Inside the batch file you would
identify this file by using a string substitution like "DOOR%2.SYS". If the door program also required
a command line parameter to distinguish "nodes" for the door, then you could use the %2 parameter
there as well.
The %3 parameter can be used to identify the "DORINFOx.DEF" file. The "x" in
"DORINFOx.DEF" will be 1 2 3 4 5 6 7 8 9 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y
Z, for "nodes" 1 through 36, respectively. The %3 parameter will be the same as the %2 parameter for
lines 1 through 9, but different for lines 10 through 36. If a user on line 37 or above attempts to open a
DOS program type door, then Bulletron will send an error message indicating that the
"DORINFOx.DEF" file can not be created and will abort the command before the batch file is initiated.
If you have a door program that is a native OS/2 program rather than a DOS program, then you
should use a file name extension of ".CMD" instead of ".BAT" for the batch procedure. Bulletron will
detect this and open the child session for the door as an OS/2 session instead of a DOS session.
The child session, when opened, will place an icon in your OS/2 Minimized Icon Viewer
Window. You can double click on this icon to view what is happening in the door session. The name
of the file for this icon, provided with Bulletron, is "DOOR.ICO".
When the batch file is initiated, it will be given the environment for the standard OS/2 shell; that
is, "COMMAND.COM" for DOS programs, or "CMD.EXE" for OS/2 programs, as initiated directly
from the desktop. This means that, if your door program is not on the "C:" drive, then you will need to
place a command like "D:", "E:", etc.. in the batch file. Also, the default directory will be the root
directory, not the directory from which the BBS was started, so you will need to include a "CD"
command to select the file directory containing the door program.
Some examples of batch files might be:
E:
CD\BBS\TW2
TW2 /N%2 /OCOM%1 /P:..\DOOR%2.SYS
CD ..
and
E:
CD\BBS\TW2
COPY ..\DORINFO%3.DEF
TW2 /N%2 /OCOM%1
CD ..
In the first example, the BBS is installed in the "\BBS" directory on the "E:" drive, and the
"TW2" door is installed in the "\BBS\TW2" directory. The "TW2" door is configured to use the
"DOOR.SYS" interface, so a parameter is passed to "TW2.EXE" on the command line to tell it what to
use for the "DOOR.SYS" file. The second example has the "TW2" door installed in the same directory,
but configured to use the "DORINFOx.DEF" interface. Thus, in the second example, the
"DORINFO%3.DEF" file is copied into the "\BBS\TW2" directory before executing the "TW2.EXE"
program. In both examples, the "TW2.EXE" program requires that the "node" number (equivalent to
the Bulletron "line" number) be stated in the first parameter for the program, and that the name of the
serial device ("COM1", COM2", etc..) be specified using a special "/O" parameter. Note that, because
the batch file begins execution with the root directory of the "C:" drive as the default, both examples
show commands to switch the current drive to "E:", then select the correct directory for the "TW2"
program.
Because many DOS based door programs have a limitation to only being able to communicate
through a conventional "COM1" or "COM2" port, Bulletron will then prompt you to specify which
lines in your system should be permitted to execute this door program. If your system uses intelligent
multi-port serial card(s) and a user calling in on one of those ports tries to execute a DOS program that
can only support a conventional "COM1" or "COM2", the n there is a good chance that OS/2 will report
an "access violation" and halt your entire system.
1 - Line number or 0 when done [1]:
2 - Line number or 0 when done [0]:
For an DOS program door, this is a list of phone lines that can be permitted to open the door
program. If a particular door program is only able to use COM1 and COM2, then you would enter the
line that uses "COM1" the first time that this prompt comes up, the line that uses "COM2" the second
time, and zero the third time, to terminate the list. (Remember that the "PL" command is what you use
to assign serial ports to lines.) Most door programs written for DOS systems communicate directly
with the serial port hardware; that is, they are not capable of communicating through an extended serial
port card, such as an intelligent Digiboard product. If the BBS receives a call on an extended port,
chances are that your DOS based door program will not be able to communicate through that port. This
phone line information prevents a call that came in on, say, COM25 from accessing a door program that
only understands COM1 and COM2.
Access level:
This is the minimum feature access level which the user must have before he can access this
feature. Note that this changes for each entry within outside features. To change the access level for
the outside features menu, use the "PP" command option "8". "PP", option "8" can be used to disable
all outside features if your outside computer breaks down for some reason.
Time-out (seconds) initially:
This time-out is not presently used for DOS program type doors because these door programs
generally do all their own serial I/O right on the metal. The BBS program has to completely relinquish
control of the serial port before the DOS session can use it, so it has no way of knowing whether the
door program started successfully or not.
Time-out (seconds) during feature:
This time-out is not presently used for DOS program type doors because these door programs
generally do all their own serial I/O right on the metal. The BBS program has to completely relinquish
control of the serial port before the DOS session can use it, so it has no way of knowing whether the
door program is still running. It is quite conceivable that a door program could get stuck in an infinite
loop due to a bug in the door program, retain control of the serial port, and Bulletron would never know
that the user had disconnected and that phone line would just ring with no answer until the SYSOP kills
its DOS session.
Surcharge (cents per hour) [0]:
If you enter a nonzero value here, when the user returns to the main BBS, the system computes
the number of minutes that he was using the door, multiplies it by this factor, and deducts that number
of cents from his account balance. This surcharge can only be applied if you bill by cents or minutes.
It is ignored if you bill strictly by date.
5.4.13.7.4. Setting up DOS Program with FOSSIL Support Features
Setup for DOS Program doors with FOSSIL support is very similar to conventional DOS
Program type doors, described above. When Bulletron prompts you with
Direct(D), Dial(T), DOS(R), FOSSIL(F), DOS Prmt(P), or OS/2 prog(O)
Enter "F" to define the feature as an DOS Program with FOSSIL support type door.
The significant difference between this type of outside feature and the conventional DOS
program type is that, with FOSSIL support, the BBS program never relinquishes control of the serial
port. Instead, it uses a small TSR (terminate and stay resident) program to hook the INT 14H vector
inside the DOS session to make it appear to the DOS program as if a FOSSIL driver is running in the
virtual DOS machine. All I/O requests that the DOS program makes to the serial ports, video display
and keyboard, are then serviced by Bulletron directly. Line number restrictions are meaningless for
FOSSIL type doors. Even if the line requesting the door has no serial port hardware, or is a LAN
connection made via named pipe, the BBS can execute service the door's I/O requests correctly. The
setup operation, therefore, does not prompt for line number restrictions for FOSSIL support doors, and
both the start-up and operational time-outs are handled properly.
Within the batch procedure, for a FOSSIL support door, you must execute a program supplied
with Bulletron, named NPFOSSIL.EXE, before any I/O can be done using the FOSSIL driver.
NPFOSSIL is a small TSR program that traps INT 14H requests and passes them to Bulletron for
execution.
The published specifications for FOSSIL drivers only allow port numbers of 0 through 254
("COM1" through "COM255"). To circumvent this limitation, Bulletron always builds drop files
(DORINFOx.DEF and DOOR.SYS) for type "F" doors that indicate "COM1", regardless of the port
that is actually being used. Set up all the "nodes" of your FOSSIL type door programs to access
"COM1". NPFOSSIL.EXE will ignore the port number that the door program specifies in its calls and
automatically route serial I/O to the correct port. Video I/O will be routed to the correct task window if
the door program does video I/O through the FOSSIL driver. If the door program bypasses the FOSSIL
driver and does any serial I/O "right on the metal", then the program will bomb.
5.4.13.7.5. Setting up OS/2 Program Outside Features
This feature requires the use of a shareware program named "OS2YOU". You can obtain this
program from our Bulletron for OS/2 Development BBS (315 471-2970), or from most public access
BBS's that carry OS/2 shareware, or directly from the author at:
M Wahlgren Software Dev.
Kransen 4E
S-416 72 Gothenburg
Sweden
Fax: +46 31 196417
Phone: +46 31 196074
You begin the setup for OS/2 Program Outside Features in the same way as Direct Connect
Outside Features (see section 5.4.13.7.1) until you get to the point where Bulletron asks:
Direct(D), Dial(T), DOS(R), FOSSIL(F), DOS Prmt(P), or OS/2 prog(O)
Here is where you enter "O" to define the feature as an OS/2 program.
Batch file [ ]:
You can specify the name of any OS/2 .CMD file or REXX program. If you leave this field
blank, then the user will get a command prompt in your BBS default directory when he executes this
feature. Use this feature carefully.
Access level:
This is the minimum feature access level which the user must have before he can access this
feature. Note that this changes for each entry within outside features. To change the access level for
the outside features menu, use the "PP" command option "8". "PP", option "8" can be used to disable
all outside features if your outside computer break down for some reason.
Time-out (seconds) during feature:
You can set this time-out to force termination of the program if the user's keyboard is idle for the
specified number of seconds.
Surcharge (cents per hour) [0]:
This charge is billed to the user's account if you set up the BBS to bill by time ($) or minutes.
When you obtain the OS2YOU program, unpack all of its files into the BBS default directory.
No setup or configuration is required.
5.4.13.7.6. Setting up a DOS Shell
You begin the setup for DOS Shell Outside Features in the same way as Direct Connect Outside
Features (see section 5.4.13.7.1) until you get to the point where Bulletron asks:
Direct(D), Dial(T), DOS(R), FOSSIL(F), DOS Prmt(P), or OS/2 prog(O)
Here is where you enter "P" to define the feature as a DOS prompt. This is the end of the setup
for a DOS prompt door. This type of door is inaccessible to users who are not SYSOPs or assistant
SYSOPs.
5.4.13.7.7. Setting up Midnight Maintenance
Many door programs require daily maintenance procedures to be run at midnight each day. If
you make a file named "MIDNIGHT.BAT" in your BBS directory, then Bulletron for OS/2 will
execute this batch file as soon as possible after midnight each day. Bulletron sets an internal flag at
midnight each day that locks all users from opening new doors until the batch file is run. It runs the
file as soon as it detects that all the doors are closed. For daily maintenance programs which must be
executed in OS/2 protect mode, you can also make a "MIDNIGHT.CMD" file, which will be executed
right after "MIDNIGHT.BAT", if it exists. "MIDNIGHT.CMD" will, of course, also be executed by
itself if there is no "MIDNIGHT.BAT".
5.4.14. Application Specific Database Setup
Many bulletin board applications require the ability to search for, retrieve, and display a small
subset of data from a larger collection of data. The SYSOP's first comment is usually "I need a
database". The term "database" has become a broad term and has lost much of its meaning in today's
quickly changing computer jargon. To some users, "database" refers to a sophisticated indexed
hierarchical record structure such as b-tree so that given an account code, for example, an entire user
record could be retrieved. To other users, "database" simply means a collection of data searched
sequentially, if necessary, such as searching for the city in a user's record. The city would not be a key,
so each record would have to be searched to look for the character string of the city name. This could
get more confusing since one user may say he lives in LA. while another says he lives in Los Angeles
and a string search would not match on both. A key search is quicker, but there are practical limits to
the number of possible keys and the spelling of the keys must be consistent: LA, Los Angeles,
LosAngls, would be considered different entities. A string search is more flexible, but requires
searching the entire file which could take a significant amount of time.
Bulletron provides several means of maintaining, searching, and accessing a group of data items.
The means that you choose depends on the amount of data you have, how it is organized, and how it
will be used. The BBS files are actually themselves a database. The user database is accessed by
account code with a "indexed sequential b-tree access method". This means that given the account
code, Bulletron goes directly to the record, it does not search the entire file. If your application requires
maintaining a list of registered owners and the registration number is their account code, then to ask the
question "who is M123754" you would enter "WA M123754". If, instead, you wanted to know all the
users who lived in Beverly Hills, you would enter "WS Beverly Hills" and Bulletron would do a
sequential search through all the city fields (since the city is not a key) looking for that string. If a user
misspelled or abbreviated the city, however, he would not be found in that match. Each Bulletron user
can answer a multiple choice questionnaire. Bulletron can search through the answers of those
questionnaires very rapidly searching for certain replies. The "WA", "WS", and "MS" commands are
actually powerful data searching commands for accessing information about people.
If your collection of data is about "things" such as book subjects, titles, and authors, each "thing"
could be put into a message. The book subject could be put into the message summary. The boards
could be split by subject matter so that one sub-board was science fiction, one sub-board about
technical subjects, and another about romance novels. The user would go to the sub-board containing
the subject matter of interest and search through summary only or the summary and message content
for specific key words, author's name, or book title. If the summary was "IBM software bugs and
fixes", the user could find the information by entering either "IBM", "software", "bug", or "fix". If this
was a keyed field, such as the account name in the user database, he would have to spell the summary
exactly and therefore would probably not find the information he was looking for. Bulletron may take
some time to read through the summary or message to look for the string containing the information
that the user requests, but if the subject matter is separated into individual sub-boards, that time would
not be too great. You can also define a matchmaker questionnaire which points to a particular message.
Then quickly searching the questionnaires would locate the message with the required information.
The "MS", "RS", and "SS" commands then become powerful data search commands.
If your data is organized into a large file of repeating information where all the data for one
occurrence is on one line such as football player's name, age, height, weight, speed, scores, etc.., then a
simple sequential file search could be done. You could request a list of all players with a particular age.
This is done with a simple "download search". The "DS" command, which is a subset of the download
command, will only list those lines in the file containing the search string.
Bulletron also has an "application specific database". It allows keyed searches for ranges on a
limited number of fields. If each of the items in the football player's file above was defined with a key,
it would be possible to select all football players within a certain age range (rather than a specific age)
and with a score greater than a set standard. This would be done by having the data from another file
(such as dBase) converted to a "flat delineated" file, and loaded into an Bulletron organized file. This
section tells how to set up that database feature of Bulletron.
The important thing to remember is that one person's solution to "database" may not work for
someone else. It all depends on the type of data, how it is to be searched, how much data has to be
online at one time. One of the above mentioned techniques may work faster or provide more flexibility
than another.
The Bulletron database feature is intended to take data from a dBase-like file, convert the keys to
the b-tree structure used with the other Bulletron files, and make the data available online for very fast
search and access. This feature consists of additional logic within the BBS program itself plus a utility
program called BBUTLDB2 (BBUTLDBL for the client/server version).
Installation of this feature requires three steps:
1. Create a delineated "flat" file from the existing database.
2. Set the parameters for the Bulletron database using BBUTLDB2.
3. Load the Bulletron database from the delineated file using BBUTLDB2.
A delineated "flat" file is a sequential file where each field of data is separated by quotes and
commas, and each record is terminated by a carriage return/line feed. A sample file provided is a list
of companies which supply public domain/shareware software. A dBase program was used to maintain
the data, and the "copy" function was used to create the delineated flat file. A few records of the file
would look like this:
"", "", "", "", "", "", "", , "Shareware Express", "", "32302Camino Capistrano, Suite 204", "Box
219", "San Juan Capistrano", "CA","92693-0219", "714", "240-0729", "", "", "", "", "", T, F,
F
"", "gave disk at computer show", "", "", "", "", "", , "ComputerWorks", "", "", "PO Box 732-3",
"Redlands", "CA", "92374", "","", "", "", "", "", "", T, F, F
"", "", "", "", "", "", "", , "Lone Star Software", "", "", "2100Hwy 360, Suite 1204", "Grand
Prairie", "TX", "75050", "2- 14","647-1010", "", "", "", "", "", T, F, F
"", "", "", "", "", "", "", , "California Freeware", "", "", "1466Springline Dr", "Palmdale", "CA",
"93550", "805", "273-03-00","", "", "", "", "", T, F, F
"", "", "", "", "", "", "", , "Public Domain User Group", "", "","PO Box 2538", "Ormond Beach",
"FL", "32075", "904", "441-4560","", "", "", "", "", T, F, F
The exact contents and description of each field depends on the particular database in use. In this
example, note that the 9th field is the company name and the 15th field is the zipcode. It is known
from the original dBase program that the company name can be up to 30 characters long (the
maximum key length for Bulletron is 28 characters, however) and the maximum length of the zipcode
is 10 characters.
The Bulletron database can have up to 6 keys of 28 characters each. The keys should be defined
so that the most significant key is first and the least significant key is last. If it is a real estate database
containing location, cost of house, area of house, number of bedrooms, and number of baths, the
location will be the most significant and most frequently used, while the number of baths may
probably be the least significant key.
Each key can be either numeric or alphanumeric (character) format. If it is numeric, there will be
a number of decimal places to the right of the decimal point defined for the field. A number such as
1234.567 will have a maximum field width of 8 characters (including the decimal point) with 3 decimal
places to the right of the decimal point.
Most fields will be searched directly while others may be searched by "strings". For example, a
zipcode would be searched directly. Entering either the entire zipcode or the first few digits of the
zipcode would access those records with the zipcodes directly. If the key is the subject of a book,
similar to message summaries, then the user may want to search for a key word which would not
necessarily be the first part of the key. In the example with the company name, if the field is searched
directly and the user wants a company name with the word "soft" in it, then Bulletron will only find
those companies whose name began with "soft" such as "Software Unlimited". If the field was
searched by "string", then a company name such as "ABC Software" would be found also. Searching
by string takes longer than searching directly since all entries must be checked. Whether a key is
searched directly or by string depends on the content of the key field.
Although the access level required to use the database can be changed online, all the parameters
to define the database and load the database must be done off-line. Bulletron does not update the
database online, it only searches, reads, and displays information to the users.
After creating a delineated flat file with your database program, run BBUTLDB2. Enter:
BBUTLDB2
The following menu will display:
1 - Change parameters
2 - Import a delineated file
3 - Search the database
4 - Rebuild indices
First use function 1 to define the parameters of the database. You will be prompted with a series
of questions which Bulletron uses to create and access "BBDATBAS.DAT" and "BBDATBAS.IDX".
Path for the database files:
Enter the path for the directory which will contain the BBDATBAS.DAT file and index. The
path can be up to 32 characters long. For example, "\BBS" or "D:\BBS". NOTE: if you later decide to
delete the database, blank out this path field and Bulletron will not look for the file. This will avoid the
error 101 on file 25.
Menu title:
This will be the title on the main command menu for the "J" command if the user has access to
the database.
The following warning message will then display:
Changing the keys may force the existing database to be deleted. Do you want to change
the keys (Y/[N]):
The first time you set up the database, you must answer "Y" to continue to define the database. If
the database already existed and you just wanted to change the drive that the file was on, or the wording
of the menu title, enter "N" or [enter] and the actual database parameters or the database file would not
be altered. If you do change the parameters, the next question would be:
Number of keys (1 to 6):
Enter the number of keys that will be used. There can be at most six keys of 28 characters per
key.
For each key, the screen will clear and a number of questions will be prompted for that particular
key. The first question is
Key # n; Description:
Enter the description of the key, up to 30 characters. When the summary of keys is displayed to
the user, a heading line will be displayed composed of the first n characters of this description field
where n is the length of the actual data field.
(C)haracter or (N)umeric data:
All data should be considered character data at this time, so enter C.
Search type (S)tring or (D)irect:
Enter "S" if you want the key entered to be used as a search string within the database record.
Enter "D" if you want that field to be accessed directly. In the example, the zipcode would be a "D"
and the company name would be an "S" for a more thorough search.
Field number within flat file:
This identifies the data within the flat file to be used as the key. In the example with the public
domain/shareware companies, the zipcode would be field 15 and the company name would be field 9.
Note that, if the flat field number is -1, Bulletron will generate the record number: 5-digit numeric
direct search. By adding this key, the user can then access a single record directly after getting a list of
all possible entries. By making this a key which the SYSOP can change rather than having Bulletron
always add this key, the SYSOP can change the description (from RECD, Entry, House number, etc.)
and can change the sequence that this key is prompted for among the other keys.
Maximum length of field:
This is the maximum size of the flat file field. The largest key length is 28 characters. After all
the keys have been defined, all the parameter information will be displayed for confirmation:
Drive: C; Title: PD Database; # of keys: 2
Chr Dec Srch Inp Max
Key Description Num pts type fld len
1 Zipcode C 0 D 15 10
2 Company Name C 0 S 9 28
Do you want to change this (Y/[N]):
The "Dec pts" is the number of decimal places to the right of the decimal point for numeric data.
After the parameters have been defined, run BBUTLDB2 to load the delineated flat file into an
Bulletron file. Select option "2" to import the data. BBUTLDB2 then prompts you for the file name of
the delineated file. If no file name is entered, the program will terminate without changing any data. A
warning message will then display asking if you want to erase the existing data, if any, and replace the
data with the new data, or whether you want to add the new data to the existing data.
Although each field in the delineated flat file will become a line of text in the detailed database
entry, it may be difficult for some users to differentiate one field from another. This is especially true if
the field contains just a "Y" or "N", for example. To provide a way of labeling each field, Bulletron
will next ask if you wish to add field definitions to the data in the resulting message. The labels are not
retained separately, but are merged with the data to be part of the full database record.
If you enter "Y", you can enter up to thirty (30) fields of up to thirty (30) characters per field. As
the data is extracted from the delineated file and placed in a message, each field will be preceded by
the field definition that you entered. Trailing blanks are NOT stripped, so you can align the data by
padding the field definitions, or just put in one space as a separator if you want to reduce the amount of
data transmitted.
A note about performance: if a key is a "direct" key and the user searches with this as the first
key, Bulletron positions the file at that key so it does not read through the entire file. For example, if
the user selects the zipcode key beginning with those zipcodes which start with 9, then Bulletron will
start reading the file at zipcode 90000 and will not read 00000 thru 89999 which makes the access very
fast. If, however, the user selects a key which requires a "string" search, then Bulletron must read every
key beginning with the first and look for that string of characters within each and every key. This will
slow down the access. Therefore, performance is best when all the keys are "direct" and not "string"
keys. If all of the keys are "string search" keys, then much of the advantage of a random access
database is lost. Even if the keys are "string searched", Bulletron reads only the keys and not the entire
record, so it is still faster than doing an "SS" or "RS" command on the message database.
The data will then be loaded into BBDATBAS in the directory that you specified.
BBSFILE9.DAT must be present in that directory also. The delineated file can then be deleted after it
has been imported. If you have several delineated files, each can be added separately by not erasing the
existing database and adding additional data to it.
All the data from the delineated flat file, not just the key fields, is stored as a message WHERE
EACH FIELD IS A SEPARATE LINE. If the user selects a summary only, then only a list of all the
keys for those records which match the user's selection specifications will be displayed. This is useful
to determine how many matches will occur before displaying them all. If the user selects the full text to
be displayed, then the entire message with each field on a separate line will be displayed also.
Option 3, Search the Database, is provided to allow testing the database off-line just as a user
would if the database was online. The "help" function is a dummy and does not access HELPDB as it
does online.
Option 4, Rebuild Indices, is provided to do the same function as REBUILD2.EXE. It should
never be necessary since the file is never updated by Bulletron after it is created, but the function is
available in case the index file is deleted and needs to be recreated without reloading the delineated flat
file. The rebuild function can also be executed by entering
BBUTLDB2 REBUILD
from an OS/2 full screen command prompt. If a batch file is being used which executes
REBUILD2.EXE and you want to rebuild the database also, be sure to execute REBUILD2 first:
REBUILD2
BBUTLDB2 REBUILD
Usually, you will not need to rebuild the index file for the application specific database, however,
because it is never written to during normal BBS operation, and therefore, can not be corrupted in the
event of a power failure.
The help message for the database is located in "HELPDB" on your "utilities" sub-board.
The access level used to determine whether a user can access the database is determined by
option "V" in the "PP" command.
5.4.15. Artificial Intelligence Features
Bulletron has a unique feature called "Text-Branching". In its simplest form, text-branching will
display some text (a message) to a user, prompt the user for a word or sentence, search that sentence
for certain key words, then branch to the next message based on the key word that the user entered.
This can be used in such applications as a data search, programmed learning, or a simple game.
Consider the following possible messages.
"It's Saturday night and you are thinking of something to do.
Your choices include going to a movie, going to a restaurant, or
visiting friends. What do you want to do?"
The user then types in "movie" which causes a branch to the next message which may be
something like
"What part of town are you in?".
The user may then type in "valley" which causes a branch to a message which lists all the movies
currently playing in "the valley". Had the user typed in "restaurant" or "food" or "dinner", a different
message would have been displayed next such as
"What kind of food do you want to eat?"
If the user typed in "spaghetti", but that was not one of the key words predefined, the user could
then type in "HINT". He would then get a list of valid key words, one of which might be "Italian" food.
He then enters "Italian" and gets a listing of Italian restaurants.
A school may construct entire courses composed of messages which lead students to more
complex subjects or re-explain the subject in a different way if the student answers incorrectly.
Plants make food by photosynthesis. A by-product of the process is chlorophyll which is a
green substance... If a plant is healthy and making food, what color would you expect
the leaves to be?
If the student types in "green", he would go to the next part of the lesson. If he types in "brown",
he would be shown another message that tries to explain the concept in a different way.
The simple Adventure game could also be written.
You are in a small clearing and there are
four paths leading away, north, south, east,
and west. Which path do you want?"
The user may enter "north" which causes the next message to be displayed such as
The north path takes you to an old castle.
You stop at the door. Should you go thru the door or walk around
the castle?
If the user entered "thru" or "door", it would take him to one message while "walk" or "around"
might take him to different message. There could be hundreds or even thousands of messages which
would inform, teach, or entertain users. Each message linked to any number of messages until the last
message has a key called "END".
After you have defined the database, lessons, or game that you want for your BBS, there are three
steps which must be done to implement it
1. Create a text file containing the messages, keys, and key words in a predefined format,
2. Run the functions in BBUTIL2 to create a database from the text file, and
3. Use the "PXN" command within Bulletron to define the parameters of the text--branching to
the BBS.
Here is a trivial sample of how the text file might look:
START
This is the FIRST message. The NEXT message
would be the SECOND message. If $$$ was
really clever, he could enter the THIRD
message. Which message?
************** separates the text from the keys
first*start
next/second*REC2
[GNL]{100}third*REC3
----------------------- dashes separate messages.
REC2
This is the 2nd message, and the next message
would be the THIRD. If $$$ entered word
FINAL, the game would end. What do you want
to do next?
**************************
final*End
third*rec3
-----------------------------------
rec3
This is the 3rd and last message of the demo.
If you enter ANYTHING, it will start over, and
OVER would end it all. What do you want to
do?
*******************************
OVER*end
anything*start
-----------------------------------
This file has just three messages while real applications usually have hundreds. Each message
begins with the key to the message and ends with a row of eight (8) or more dashes (-). The first key of
the first message must be the word "START". The key to each message after that must be from 1 to 8
characters in length and must be unique. You can put numbers as part of the key to make it unique if
necessary. In the above example, "START" is the key to the first message, "REC2" is the key to the
second message, and "REC3" is the key to the last message. It is not important whether the keys are
upper or lower case.
Following the key is the text that will be displayed to the user. The length of the message text is
not important except that the message and key words (everything from the key to the dashes) must fit
within 9,000 bytes. It is not important whether the message is upper or lower case. The upper case
words in the example only illustrate what key words are listed below the asterisks, they do not have to
be upper case in your file nor do the key words have to be included in the message text. Your message
text should end with a sentence that will prompt the user with what he should enter.
The three dollar signs ($$$) will be replaced by an account code of a user. For example, assume
you are writing a game and you want to make the game more personal by making the other characters
in the game the other users of the BBS. Every time the program encounters $$$, it will replace that
with the account code of a user where that user is picked by going backwards through the lastlogon date
key and who has access to the board that the game is played on. If ACCT1 logged on at 1:00 PM,
ACCT2 logged on at 2:00 PM, ACCT3 logged on at 3:00 PM, and ACCT4 is now playing the game at
4:00 PM, the first substitution of $$$ will be ACCT3, the next will be ACCT2, and the next will be
ACCT1. Therefore the accounts put into the story will change each time the game is played depending
on who logged on recently. Bulletron provides the following escape sequences that can be used to
dynamically modify text in your script:
$^$ is replaced by the account code that logged onto the system prior to the
current user.
^x is replaced by a control character that corresponds to letter "x". For example,
"^M" would produce a carriage return, "^J" would produce a line feed, and
"^I" would produce a tab character.
$+$ is replaced by the user's account code.
$N$ is replaced by the user's name/handle.
$L$ is replaced by the user's city and state.
$A$ is replaced by "Y" if the current session has ANSI or RIP graphics, or "N" if
not.
$T$ is replaced by the number of minutes remaining in the user's current session.
$$$ is replaced by an account code chosen at random.
$O$ is replaced by the user's ordinal call number; that is, "1st", "2nd", etc..
$B$ is replaced by the short name of your BBS, which you specify using option
"N" of the "PP" command.
$S$ is replaced by the descriptive name of the current sub-board.
$P$ is replaced by the main system prompt (usually "What next?")
$I$ is replaced by the task (line ) number of the line on which the user is logged
on.
$TS$ is replaced by the minutes already used in the current session
$TD$ is replaced by the minutes already used in the current day.
$TL$ is replaced by the total minutes used in the user's lifetime.
A row of eight or more asterisks (*) separates the text of the message from the list of key words
and their associated keys. Do not use a string of asterisks or dashes as the first eight characters on a
line within your message.
The next line or lines are the key words and their associated keys. There can be any number of
these lines. The key words are listed first (separated by slash if more than one) and followed by the key
with an asterisk (*) separating the last key word and the key. The key words and keys must be from 1
to 8 characters. If the key word is longer than 8 characters, just enter the first eight. In the first line of
the example, the key word is "first" and the key is "start". If the user enters the word "first" or that
word is in a sentence that he enters such as "Go to first message.", the message with key "START" will
be displayed next.
The second key word line in the example shows how two key words can point to the same key. If
the user enters a word or sentence with either "next" or "second", then the message with key REC2 will
be displayed next. If there are many key words which point to the same key and they will not fit on the
same line, create multiple lines each with the same key at the end. BE SURE THERE ARE NO
EMBEDDED OR TRAILING SPACES IN THE LINE.
Assume that there are certain paths through the messages that you want to restrict to users with a
specific access level or to users who have access to a particular SIG. The third key word line in the
example is
[GNL]{100}third*REC3
This means that key word "third" is valid only if the user has access to sub-board "GNL" in his
SIG list OR has an access level of at least 100. To restrict a key word to a user with a particular SIG,
put the SIG in brackets ([]). To restrict a key word to a user with a particular access level, put the
access level in braces ({}). There can be only a SIG restriction (in which case there would be no braces
on that line), or only an access level (in which case there would be no brackets on that line). If you
have both, however, the SIGs must come first as shown in the example. Assuming a user who does not
have "GNL" in his SIG list or whose access level is less than 100 enters "third", Bulletron will ignore
that word as if it were not a valid key word. If a user has access to "GNL", but it is not in his SIG list,
he will NOT have access to "third".
The row of eight (8) or more dashes (--------) marks the end of the message. Remember,
everything from the key in the first line of the message to the dashes must be less than 9,000 characters
including the row of asterisks.
Note that each key at the end of a keyword/key line must have a corresponding message. The
only exception to that rule is a special word "END" which means that there are no more messages to
branch to and the "game" is over.
The text file that you create should be a "nondocument" file similar to the help messages. There
should be no embedded word processor control characters in it. After you have the text file composed
and edited, the text file must be input into the BBUTIL2 program to create the actual database which
users will access. File "SAMPLE.TXT" is a file of the previous trivial example to show you exactly
how it should look.
From a command line prompt, run BBUTIL2:
BBUTIL2
BBUTIL2 function "9" displays the following menu:
1 - Create database
2 - Test the database
Q - Quit
To make the database from the text file that you just created, enter "1". The program will then
prompt you for the file name of the text file. The database will be created, then checked to make sure
that there are messages for all the keys that you have referenced. Error messages, if any, will display on
the printer. Some of the common errors are:
CANNOT ADD KEY X, ERROR Y, LINE Z - On or about line Z in your text file is a key
which cannot be added to the file. Most likely you have already defined that key
on another message. Check for duplicate key definitions.
RECORD X KEY Y NOT FOUND - The message which is defined with key X has a key
word/key combination with key Y, but key Y is not defined in another message.
RECORD X LINE TOO LONG OR MESSAGE FULL - The message defined by key X has a
line in it that is more than 120 characters.
RECORD X HAS 0 LENGTH KEY - The message defined with key X is missing a key in the
key word/key line.
To test the database the way it would work when it is online within the BBS, select option "2".
You will be displayed messages and prompted for key words just like you would if you were running
online.
There are several key words which are reserved and should not be used as key words in your data:
HINT - will display a list of key words to the user.
REPEAT and WHAT will redisplay the message.
HELP and ? will display the "HELPA" help message.
DONE, EXIT, QUIT, END, and STOP will end the game.
ANYTHING - will go to the message regardless of what the user enters.
Do not use words with key words in them such as "ENDURE", which contains "END". One way
to define the keys would be to use letters and numbers such as "G123" which might refer to page "G",
box "123" in your game design flowchart.
CTRL/K will also end the game and return the user to the main command prompt. If some of
your key words are subsets of other key words, place the smaller key word first. For example, if north
and northwest are both key words, put the line containing "north" ahead of "northwest". When the user
enters "north", it will match to "north" and not to the substring "north" in "northwest".
The next step in implementing text-branching is to define the parameters within Bulletron. This
is done with the installation command, "PX", subcommand "N". The following questions will be asked
on the "PXN" command:
Main menu heading:
The command that the user enters to access this feature has been predefined to be "A". The
explanation as to what this command does has not been defined since it could be "Adventure", "Data
Search", "Learning", or anything else. Enter the heading that you want displayed on the main
command menu (31 characters maximum) for the "A" command.
Submenu START prompt with prompt character:
When the user enters "A", at the main system prompt, Bulletron displays a submenu containing
three or four options. The first option is the prompt to begin with the message that has key "START".
Unlike other places in the Bulletron program, you are also permitted to define the prompt character as
the first character in this text. Some examples of valid entries for this would be:
1 - Start a new game
P - Play
N - New game
D - Display data
Be sure the first character is upper case, since that is the character that will be checked against the
user's input.
Allow restarting (Y/N):
If this feature is used as a game or programmed learning function, it is possible for the user to
terminate in the middle of the game and continue where he left off at a later time. If this feature is
used as a database search function, starting in the middle may not be logical. If the user terminates the
game before it is done, whether by CTRL/K, loss of carrier, or entering END, STOP, QUIT, or EXIT,
Bulletron will "remember" what message the user was on and allow him to restart at that message if
you answer "Y" to this prompt.
Submenu RESTART prompt with prompt character:
If you answer "Y" to "Allow restarting", you will be asked for the menu description of the second
line in the submenu, the restart prompt. Include the prompt character as you did with the start prompt.
Some examples of valid entries for this would be:
2 - Restart the last game
C - Continue with the last lesson
Be sure that the first letter is upper case. The maximum length of this prompt is 31 characters.
# of retries before automatic HINT:
If a user enters a word or sentence and it does not match any of the predefined key words, he will
get the message "I don't understand that, try again." If he gets this too many times, he may get
frustrated. Of course, he can always enter "HINT", but if he fails to do that, the system will
automatically give him "HINT" when he gets this error too frequently. The "# of retries" is the number
of times it will allow him to attempt to guess the key word before it automatically gives him HINTs.
This can be any number from 0 to 120, but a suggested number would be 5. A 0 would imply NO
HINT and would disable the HINT command.
Access level required:
This is the access level that the user must have before the "A" command will display on his main
menu. If a user's access level is below this value and he enters "A", he will get the "invalid command"
message. If you want to disable this feature to all users while you develop a new set of messages, just
set the access level very high, such as 32,700 and it will not display to anyone.
5.5.LAN Operation
5.5.1. Logging in over the LAN
Many large companies, and quite a few smaller ones at this point in time, have moved away from
the mainframe-terminal paradigm of corporate computing, and set up local area networks. Where
desktop terminals with little or no intelligence used to access a large database program running in a
centralized mainframe over serial data lines, intelligent LAN workstations now run database programs
right on the desktop, accessing a collection of distributed database servers. As explained in previous
sections of this manual, Bulletron fully supports connection via null modem cable from a terminal
running on a desktop terminal to any of its serial ports. Bulletron version 1 for OS/2 also supports
logging in directly from a LAN workstation without a serial port connection.
The facility used for LAN logon is called "named pipes". When you use the "PL" command to
perform serial port assignments, set the modem type for any port to "L", then Bulletron for OS/2 will
create a pipe named "BBS" for that session. You must assign a port number for the line that is different
from any other port number in the port assignment table. For example, suppose that you have real
serial devices named "COM1", "COM2", "COM3", "COM4" and "COM5". You want to use "COM1"
for a mouse, and want to allow up to three users at a time to log in over the LAN. Using the "PL"
command, you could set up your port assignment table as follows:
Line Port Net Modem Acc-Lvl Tm-Limit BF1 BF2 CB PAGE
1 2 N A 0 0 1 1 N Y
2 3 N A 0 0 1 1 N Y
3 4 N H 0 0 1 1 N Y
4 5 Y C 0 0 1 1 N Y
5 6 N D 0 0 1 1 N Y
6 7 N L 0 0 1 1 N N
7 8 N L 0 0 1 1 N N
8 9 N L 0 0 1 1 N N
9 -1 N N 0 0 1 1 N N
10 -1 N N 0 0 1 1 N N
In this example, session 1 uses "COM2" and has a Hayes compatible modem with automatic
speed buffering. Session 2 uses "COM3" and also has a Hayes compatible modem with automatic
speed buffering. Session 3 uses "COM4" and has a Hayes modem for which the computer to modem
Baud rate must be adjusted to match the modem to modem speed - probably a Hayes Smartmodem
2400. Session 4 uses "COM5" and has a Hayes compatible modem without automatic speed buffering.
Session 5 uses a null modem cable to connect to a terminal or another computer for outside features
("doors"). Sessions 6, 7 and 8 use the LAN as their modems. Sessions 9 and 10 have no serial port
hardware, but may be used for local console logon. Session 10 is set up for local console sessions only.
The name of the pipe that Bulletron creates is
"\PIPE\BULLETRON\LOGON"
If you run a communications program on one of your LAN workstations, such TE/2, which is
LAN-aware, you can tell it to communicate via that pipe. TE/2 is a shareware program produced by
Oberon Software of Mankato, Minnesota, which we make available on our tech support BBS. When
you set up TE/2, in the TE2.INI file, specify the communications device as follows:
\\server\PIPE\BULLETRON\LOGON
where "server" is the name of LAN file server on which Bulletron is running. Remember to tell
your users that, when they log off from the BBS using TE/2, they must exit from the program, and
restart TE/2 to get it to open the pipe again.
The client/server version of Bulletron, described in the next section is not required for this
feature.
5.5.2. Distributing Processing over a LAN
The theoretical limit to the capacity of Bulletron for OS/2 is the number of serial ports that can be
physically installed in a PC compatible system. Six 16-port boards provide 96 serial ports, plus a
COM1 and COM2 could be present on an IDE disk controller card. That totals to 98 ports on seven
adapter boards, leaving the one remaining slot in the bus for the video card. If hardware were available
with more than expansion slots in the bus, or more than sixteen ports per card, there is no logical
reason why the phone line capacity could not be expanded indefinitely. Physical limitations of the
processing power of a single PC, however, may impose other restrictions. It has been established, by
actual operating installations of Bulletron for OS/2, that 98 phone lines can be supported by a single 66
MHz 486 computer, with no observable performance degradation. Based on measurements at these
sites, it is estimated that the maximum number of phone lines that a single PC can support is about 512.
The basic Bulletron program is designed with internal tables to support a maximum of 2,000
phone lines per PC. These might be a mixture of real serial ports, LAN connections, TELNET
connections and sessions available for local console logon. The technology used to extend Bulletron
beyond 2,000 phone lines is distributed parallel processing. Because Bulletron maintains its user and
message bases as a normalized relational database in a balanced binary tree structure, and caches most
of the b-tree in RAM, real disk accesses are few and far between, even on a heavily loaded system. If
we share the database across a LAN, then several CPUs can be working on the same set of user and
message files at the same time. The standard version of Bulletron, however, opens its files in a strictly
non-sharing mode, which is necessary because of the fact that most of the data is cached in memory.
To solve this problem, we have produced a special version of Bulletron which isolates the
database engine from the rest of the BBS serial communications functions. The database engine can
then be run on a central a file server on a LAN and satellite workstations can run multiple copies of the
BBS, all making requests to the server for database accesses and updates. Each satellite system
handles the processing load for the serial I/O and menu logic for 16, 32, or possibly 48 users, and the
server handles only the database accesses for the satellite systems.
Bulletron version 1 has the capability to run multiple copies of Bulletron on different
workstations in a Local Area Network all accessing a common database of users and messages on the
LAN server. It was developed on IBM LAN Server Version 3.0 Enhanced, but should work on any
LAN that supports the "named pipes" facility. The advantages of running the LAN version are:
If you are running a 9 or 16 line version already and want to try running 32 or 64 lines, you can
run multiple copies of Bulletron on separate workstations all accessing the same messages,
users, and most features. The speed of one system will not slow the speed of another system.
If you do not have enough memory to bring up 32 lines on one system due to large device or
network drivers, you can possibly run 24 lines on one system and 24 on another.
If you have hardware failure of one workstation, the other workstations will continue to
function giving added protection for larger systems.
Maintenance utilities such as BBUTIL2, and BBUTLDB2 can be run while the BBS is still
on-line and operational. If you buy the Bulletron Professional Developer's Kit, you can write
your own applications that access the Bulletron database engine while the BBS is running.
The disadvantages of running the LAN version are:
At present, private chat is limited to those on the same workstation, but multiple workstations
can be linked with network chat to allow large public chat sessions. This also applies to the
"WO" (Who is online), "/BRING", and other chat-associated functions. They only apply to
users on the same workstation.
Outside features are specific to the workstation on which they are running. This means that
someone on line 5, which is on workstation 1, is not able to dial out on line 24 if it is on
workstation 2. The user would have to be on workstation 2 to dial out on line 24. Most existing
door programs are written to be strictly single-user, but if you find one that supports multiple
concurrent users, there is no reason why you can not distribute that across your LAN also.
For these reasons although you can technically run four 9-line systems rather than purchasing
one 32-line system, the features to the users would be better with one 32-line system. Also the
hardware expense of four computers to run each of 9 lines would be higher than buying one
faster 32-line system.
LAN or no LAN, there are two Bulletron support utilities which must always have strictly
exclusive access to the BBS database. These programs are COMPACT2 and REBUILD2. These
programs have been specifically designed so that they cannot operate while the BBS or BBS server is
running.
5.5.2.1. Starting up the Client/Server Version
On your OS/2 based file server, run the program BBSRVR. You start this program with two
parameters. The first parameter indicates the number of concurrent satellite systems that will be
accessing the server. Normally, this would be the number of computers running the BBS, plus one
extra session for running BBUTIL2 or BBUTLDB2. If you write custom applications that will also be
accessing the server, you should account for these also. The second parameter specifies the number of
hours between backups. The BBSRVR program automatically copies its data files, BB*.DAT, to
backup files, BB*.BAK, at regular intervals. You will usually set this to happen at 24 hour intervals,
but you may want to make the interval shorter on a busy system. The backup process typically takes
about three to five seconds. You can copy the "BB*.BAK" files to tape at any other time without
stopping the BBS.
For example, suppose you want to run five copies of the BBS, plus BBUTIL2, plus one custom
application that you wrote yourself, and you want to back up the system every 24 hours. At the OS/2
command prompt, you would enter:
BBSRVR 7 24
You could also enter:
START BBSRVR 7 24
to start BBSRVR as a detached process.
BBSRVR will start running, making seven instances of a pipe named "BBSRVR" available for
connections with satellite BBS systems and other programs. You must run BBSRVR in a directory that
contains the BBSFILE9.DAT file. Make sure that every file mentioned in BBSFILE9.DAT is in the
directory indicated. If there are no specific drives or paths mentioned in BBSFILE9.DAT, then these
files must be in the same directory as BBSFILE9.DAT.
When you are running multiple copies of Bulletron, most likely the line setup ("PL" command),
modem commands setup ("PM" command), and outside features setup ("PXO" command) will be
different for each satellite system on your LAN. Make sure that you select a phone line for outgoing
network calls on only one system, so that your BBS doesn't network out from multiple systems.
Outside features lines may also be different. Two special parameters for LAN use must be applied to
the command line when starting each satellite system. The parameter, "SRVRxxxxxxxx" specifies the
network name of the computer that is running the BBSRVR program, and the parameter is "SYSy"
where "y" is any letter "A", "B", "C", and so forth. Actually, "y" may be the ASCII character for any
code between 33 and 255, though many of these are difficult to enter from a keyboard. For example,
you could use:
BBS2L ALL SRVRELIJAH SYSA
to start satellite system "A", referencing a BBS database on a server named "ELIJAH". For
another, more elaborate example, suppose you have five servers named "ADAM", "EVE", "CAIN",
"ABEL", and "SETH". You want "ADAM" to serve two 99-user BBS programs, performing a backup
every two hours and "EVE" to serve one BBS, performing a backup every 3 hours. On "ADAM" you
execute:
START BBSRVR 2 2
and on "EVE" you execute:
START BBSRVR 1 3
Then on "CAIN", "ABEL" and "SETH", respectively, you could execute:
BBS2L ALL SRVREVE SYSA
BBS2L ALL SRVRADAM SYSA
BBS2L ALL SRVRADAM SYSB
You could also run the BBS2L program on "ADAM" and "EVE" as well, if you choose.
The first time that you start each satellite system, you must to start it with the "NOMODEM"
parameter because the "PL", "PM" and "PXO" setups for that system will not exist in the BBS
parameters file (BBPARMS.DAT). You will get a warning message about this on the first start-up of
each satellite system, blank records will be created in the BBS parameters file, and you should
immediately log on to the satellite system as "SYSOP" and use the "PL", "PM" and "PXO" commands
to set them up.
Some of the BBS support utility programs also must be informed of the network name of the
server that is running BBSRVR so that they can access the database. These are BBUTIL2L and
BBUTLDBL. For these, specify the server name as a parameter on the start-up line, as in:
BBUTIL2L SRVRELIJAH
or
BBUTDB2L SRVRELIJAH
to access a BBSRVR program running on a server named "ELIJAH". Other parameters that you
might place on the command line for BBUTIL2 or BBUTLDB2 can be placed on the command line
after the server name parameter, as in:
BBUTIL2L SRVRELIJAH H Q
or
BBUTLDBL SRVRELIJAH REBUILD
5.5.2.2. Stopping the Client/Server Version
Unlike the non-client/server version of Bulletron, crashing any of the satellite systems does not
damage the BBS database in the slightest. The caching of data is done by the BBSRVR program,
which only runs in the server. It is generally polite to let all your users log off a particular satellite
system before you shut it down, but the database is not affected if you just turn them off.
The proper method, however, of stopping a LAN based Bulletron is:
1. Use the "G", "Q" or "E" command from the Control Window of each satellite system to stop
the program and make all of its phone lines busy.
2. Type CTRL/ESC on the server to bring up the OS/2 Window List.
3. Use your mouse or trackball to point to the line in the Window List that says "BBSRVR",
and press your LEFT mouse button twice to open its window.
4. The detached session that is running BBSRVR will now have keyboard focus, meaning that
you can type commands to it. Type "Q" for "quit".
5. A few seconds later, BBSRVR will display messages in its window indicating that all server
threads have stopped and that the database is closed. If you do not get that "database closed"
message, then you will probably have to run REBUILD later on to repair the damages
resulting from the fact that BBSRVR's cache buffers were not saved to disk.
6. Enter the "EXIT" command at the OS/2 command prompt to close the server's window.
5.5.2.3. Running Client/Server without a LAN
With the "SRVRxxxxxxxx" parameter, you can use a special server name of "$LOCAL". This
means that the BBS2L program is running in the same computer as the BBSRVR program. When you
operate in this mode, no LAN needs to be installed at all. This can be useful if you simply want to be
able to run programs like BBUTIL2L and BBUTLDBL without shutting down the BBS. This is your
"hook" to writing your own programs that can read and write the BBS database. Be warned, however,
that during certain serial I/O intensive operations, such as file transfers, the BBS2L program and the
serial device drivers will often keep the CPU sufficiently occupied that external programs may run very
slowly. For this reason, it is best to configure the client/server version such that the BBS2L program
has its own dedicated computer, and the BBSRVR program and other programs run in a different server
on the LAN.
5.6.Wide Area Networking
5.6.1. Bulletnet
The term "networking" in the context of bulletin board systems and in this manual refers to the
"store and forward" of messages. This means that messages are placed on one system and at a later
time that system dials another system (called a node) via telephone line, transmits and receives
messages, then disconnects. "Networking" in this context does NOT refer to Local Area Networks
(LAN) in which two or more computers are permanently wired together with hardware adapters and
using some special purpose software such as Netware, Lan Server, or some similar product. At those
places in this manual which do reference Local Area Networks, the term LAN and not NETWORK are
used. This section discusses how the networking features work and what information the system needs
to function within the network.
The SYSOP must establish two special sub-boards on the BBS to implement networking. The
first sub-board is the "network source". This is the source of private messages transmitted to a remote
node. The access level of this sub-board should be low enough to allow users to access it. You may
want to restrict access to that sub-board to subscribers only, though, because the volume of message
traffic generated there may directly affect your long distance telephone bill. For a user to send a
message to a node, he must enter the message on the "network source" sub-board.
When a user enters a message, public or private, on the "network source" sub-board, the system
prompts for a node ID. A Bulletnet node ID is a five digit number. For Bulletnet nodes, the node ID is
always the serial number of the system. For FIDOnet nodes, it is a set of four numbers: a zone
number, a net number, a node number and a point number. The point number in a FIDOnet address
applies only if the recipient is a single individual; i.e. a private message. The zone number is
sometimes omitted if the recipient is in the same zone as the sender. The net number may also be
omitted if the recipient is in the same net as the sender. The node number is always required in a
FIDOnet address. When a user on an Bulletron system responds to a private mail message that came in
over the network, or uses the "F" post-read command to forward a new message to the originator of a
public message, the node ID need not be specified. Bulletron "knows" where the message came from,
and automatically sends the response there. It will also automatically put the response on the "network
source" sub-board, even if the user reads the message on the "personal mail" sub-board or one of the
public "echo" conference sub-boards.
The second special sub-board that is required is the "network destination" sub-board. If your
system receives a message that it can not figure out how to place, it places the message on this
sub-board. Such messages might be private mail for accounts that have dropped off of your system, or
messages for "echo" conferences that you do not wish to carry. You should make the access level of
the "network destination" sub-board should be high enough so that only the system operator can read
this sub-board, as other systems in the network may choose to carry "echo" conferences that your users
might find objectionable. You can periodically review the messages on your "network destination"
sub-board and or move them to other sub-boards in your system, or just delete them. You can also set
the automatic message purge for the "network destination" sub-board to just a few days so that these
messages don't accumulate and waste disk space. If there are certain "echo" conferences that you do
not wish to carry, you can also arrange with the operators of systems with whom you network to not
have them sent, thus saving long distance phone expense.
A Bulletron system can have at most one "network source" and one "network destination"
sub-board. The sub-board is defined as either "network source" or "network destination" by placing an
"S" or a "D", respectively, into the matchmaker/order-entry indicator field of the board definition ("PB"
command). You can also set up some sub-boards as "echo" conferences by placing an "E" in the
matchmaker/order-entry indicator. An "echo" conference is a public message sub-board, on which all
messages that are new, each time a network call is placed, are transmitted to all other systems in the
network. If you set up "echo" conference sub-boards in your system, it is important to understand that
comments can not be appended to messages on "echo" conference sub-boards in the same way as for
other sub-boards. When your network call is placed, a message on an "echo" conference sub-board will
be sent to hundreds of other systems all over the world, where thousands of people will be reading it at
the same time. If a message is kept local to your own system, and only one person reads it at a time,
then comments can be appended to it in an order that usually flows as a continuous train of thought.
This can not be done when thousands or millions of people read the same message simultaneously.
Thus, comments to messages on "echo" conference sub-boards become new messages.
To set up networking features on your system, you must begin by contacting another system
operator, perhaps by mail, by voice phone, or visiting him in person if there is someone nearby. The
two of you decide which system is going to dial the calls (which implies paying the tolls if the calls are
long distance), which is going to receive the calls, and the time of day at which the calls will be placed.
A Bulletnet call typically takes about ten to fifteen minutes at 9600 Baud. If your system is going to do
the dialing, you can set up the system to dial automatically in the middle of the night when long
distance phone rates are lowest. You can also set up your system to not dial automatically, and initiate
every call manually from the Control Window, using the "=" command. When calls are placed
automatically, they sometimes might not get through. Perhaps all the phone lines on the other system
might be busy, or a bad connection occurs in the phone system. When setting up automatic dialing,
you specify a "window" of time, usually 1/2 hour, during which the call can be placed, a delay, in
minutes, before retrying if the call fails, and a maximum number of retries.
Once you have spoken with another system operator, and decided who is going to dial the calls,
and the time at which the called should be dialed, the next step is for each system operator to go to the
local console of his system and set up an account code and password that the other system can use to
log on. Special account codes are reserved for this purpose. These account codes have the form,
"ORAnnnnn", where "nnnnn" is the serial number of the system calling in. As the system operator,
you must log on at your local console as a new user, using the "ORAnnnnn" account code. Bulletron
does not allow these accounts to be set up remotely. The password that you select for the "ORAnnnnn"
account is arbitrary, as long as you be sure to tell the other system operator what it is. The other system
operator must set up a similar account with your system's serial number on his system, and tell you the
password.
For example, assume Bulletron #23 wants to network to Bulletron #41. The two SYSOPs get
together and agree to network. The SYSOP of Bulletron #23 logs onto his system locally, and enters
"NEW" to create a new account. For an account code, he uses "ORA41", and for a password he uses
"ABCDEF". The SYSOP at Bulletron #41 logs on to his system as a new user, and creates an account
named "ORA23", with a password of "123456". The use of a special account for network calls is
important, not only for security reasons, but also because the SIGs and access levels on the networking
account determine which "echo" conferences will be transmitted. Bulletron #23 will only transmit
messages on those "echo" conference sub-boards the "ORA41" account can access. Likewise,
Bulletron #41 will only transmit messages on those "echo" conference sub-boards that the "ORA23"
account can access. The last logon date and time of the networking account is used to determine which
messages are new for each call. Networking accounts are special, in that they have no time limit per
session or per day, and are never purged by the system. They are protected against break-in by hackers
by special timing interactions that occur much too rapidly for a human typist to imitate. Networking
accounts are used by the FIDOnet interface as well as the Bulletnet interface to determine the "echo"
conferences to be transmitted, and which messages are new, but the account code used for a FIDOnet
interaction can be arbitrary. FIDOnet systems do not use an account code and password when logging
on, but another mechanism is provided for associating the networking account with the remote node.
Once you have created the networking account for a remote node, and you have logged back on
as the system operator to assign SIGs and access levels, you must also enter information about the
remote node in your system's Network Node Table.
5.6.1.1. Adding, Deleting and Changing Nodes
To alter the Network Node Table, enter an "L" at the Extended Features Menu or enter "PXL" at
the main command prompt. This lets you edit your Network Node Table. When you execute the
"PXL" command, you will be prompted with the following line:
A-add, C-change, D-delete, L-list, Q-quit:
If you enter "Q", you will simply return to the Extended Features Menu.
If you enter "L", you get a list of the existing nodes. The screen will pause after 20 lines and you
can then press [ENTER] to display the next 20 lines. The table will look something like this:
A-add, C-change, D-delete, L-list, Q-quit: L
Node No: 00006 Name: Resource-BBS Local Acct: ORA6
City/State/Country: Garden Grove, CA
BULLENET/FIDO: O Protocol: 1
Manl Dial: Y Phone No: /507 Remote Pswd: /FORWARD
Baud Rate: 19200 Start Time: 0000 Stop Time: 0000 Days: NNNNNNN
Node No: 00021 Name: InterLace Local Acct: ORA21
City/State/Country: Falls Church, VA
BULLENET/FIDO: O Protocol: 1
Manl Dial: Y Phone No: /507 Remote Pswd: /FORWARD
Baud Rate: 19200 Start Time: 0000 Stop Time: 0000 Days: NNNNNNN
Node No: 00031 Name: The S&M Board Local Acct: ORA31
City/State/Country: Santa Monica, CA
BULLENET/FIDO: O Protocol: 1
Manl Dial: Y Phone No: /507 Remote Pswd: /FORWARD
Baud Rate: 19200 Start Time: 0000 Stop Time: 0000 Days: NNNNNNN
Node No: 00068 Name: N.A.S.I.X. Local Acct: ORA68
City/State/Country: Syracuse, New York
BULLENET/FIDO: O Protocol: Z
Manl Dial: Y Phone No: 471-2970 Remote Pswd: 68ORA
Baud Rate: 19200 Start Time: 0100 Stop Time: 0130 Days: YYYYYYY
The first line of each listing contains the node number, the node name and the node's local
account code. For Bulletnet nodes, the node number is the serial number of the BBS2.EXE file for the
remote system. Every BBS2.EXE file that we produce is compiled individually, and "stamped"
internally in thousands of places with its serial number in an encrypted format so that they can be
identified in the event that a bootleg copy should ever get out. For FIDOnet nodes, the node number is
arbitrary, as long as it is unique to the table. The node number is the key value used for storing,
retrieving and updating node records. The node name is any arbitrary text up to 30 characters. This is
used to generate a menu of remote nodes that users can list with the "L" command. The local account
code of Bulletnet nodes must be "ORAnnnnn", where "nnnnn" is the serial number of the remote
system; that is, the same number as the node number. Don't worry about getting this wrong, because
the system sets this field automatically when you create or change an entry for an Bulletnet node. For
FIDOnet nodes, the local account code can be any account that you make up on your system. The
system uses the SIGs and access levels of that account to determine which "echo" conference
sub-boards are sent to that FIDOnet node. It also uses the last logon date of that account to determine
which messages are "new" and, therefore, must be sent. Nobody ever actually logs on with these
accounts for FIDO, because FIDO systems do not process account codes and passwords during logon,
so just set some arbitrary password on your FIDO networking accounts that nobody knows, and give
them appropriate subscriber access so that the system doesn't automatically purge them.
The second line, containing the city/state/country information is used only for display to users
with the "L" command. This can be any ASCII text up to 30 characters.
The third line contains an "ORA/FIDO" flag, which will contain the letter "O" if the node is an
Bulletnet node, or the letter "F" if it is a FIDOnet node. If the node is an Bulletnet node, then this line
will also contain a "Protocol" flag. There are three settings for the "Protocol" flag:
"O" (the letter) means to use XMODEM-CRC with 128-byte blocks to transmit messages
and files;
"1" (the numeral)means to use XMODEM-1K with 1024-byte blocks to transmit messages
longer than 2 Kbytes and files, but use XMODEM-CRC with 128-byte
blocks for short messages;
"Z" (the letter) means use a modified form of ZMODEM to transmit messages and
XMODEM-1K to transmit files. This modified form of ZMODEM sends
each message as one, variable length block, with a 32-bit CRC.
If the node is a FIDOnet node, then it's FIDOnet address will appear on the third line.
The fourth line of each listing contains a "manual dial" flag, the node's phone number, and the
password to use on the remote system. The "manual dial" flag may be:
"N"Use automatic dialing. Your system will dial the remote node during the specified
time window, on the specified days of the week, as long as there is private mail
on your "network source" board for someone at that node.
"Y"Use manual dialing. Your system will never dial this node automatically, but will
wait for you to manually initiate dialing, using the "=" command from the
Control Window.
"A"Always dial. Your system will dial the remote node during the specified time
window, on the specified days of the week, even if there is no mail for anyone at
that node. You will use this feature if you want to make sure you exchange
"echo" conferences every day, or are routing mail for other nodes through that
node.
"C"Always dial and chat. This is the same as option "A", except that your system will
enter network chat with the remote system when they finish exchanging mail and
"echo" conferences. This feature is not available with FIDOnet, so this option is
the same as "A" for nodes that are not Bulletnet nodes.
Note: with options "N", "A" and "C", above, if you use the "=" command from the Control
Window to manually place a network call, your system will not try to place an automatic call until the
next day.
The "phone number" field shown on the fourth line of each listing is the phone number of the
remote system. If it is long distance, then be sure to include "1" and the area code, or "011" and the
country code if it is overseas. Do not include any modem commands such as "ATDT" or "ATDP". The
system will obtain the basic dialing command from the modem configuration record that you set up
with the "PM" command. You may, in some cases, put special characters, like comma, or "W" in the
phone number string to create pauses while dialing. The phone number field can also contain a slash
("/") character and a five digit node number. This signifies that the node will never be dialed directly,
but all mail for it is routed through the node specified after the slash. For instance, if Bulletron #68
calls Bulletron #976, and Bulletron #179 also calls Bulletron #976, then the operator at Bulletron #68
can put "/976" as the phone number for Bulletron #179, and mail for Bulletron #179 will be sent to
Bulletron #976, where Bulletron #179 can pick it up on their next call. Bulletnet lets you reroute
messages indefinitely. Each system "knows" only where the next node in the route is. Bulletron #152,
for example, might have a message for someone at Bulletron #179, and at Bulletron #152, the phone
number for Bulletron #179 is "/68". Bulletron #152 sends the message to Bulletron #68. At Bulletron
#68, the phone number for Bulletron #179 is "/976", so it sends the message to Bulletron #976. At
Bulletron #976, the phone number for Bulletron #179 is "/482", so it sends the message to Bulletron
#482. Bulletron #179 calls Bulletron #482 every day, and picks up the message. This is much faster,
simpler, and more reliable than Internet or FIDOnet routing schemes, but it is not automatic. If the
routing changes at any time, as, say, when a system operator decides to not run his system any more,
then a few voice phone calls must be made to set up a different route.
The "Remote Password" field on the is the password that your system will use when it calls the
remote system. If the node is an Bulletnet node, then this is the password for your network account on
the remote system. For FIDOnet nodes, this password is placed in the packets that are sent to that
FIDO hub. The password is entirely arbitrary if your system does not call the node directly.
The fifth line of each listing shows the Baud rate that your system will use to dial the remote
system, the start time of the dialing window, the stop time of the dialing window, and the days on
which dialing is permitted. The start time and stop time are displayed as a four digit decimal number,
hours times one hundred plus minutes. The days of the week are displayed as seven letters, "Y" and
"N", beginning with Sunday. A "Y" means attempt to call on that day, and a "N" means do not attempt
to call. If your system just transfers messages, then it generally does not make sense to not call every
day. The same volume of messages, and, hence, the same number of minutes of long distance time,
will be the same whether you send the messages every day, or let them pile up for a few days. It might
make a difference in your long distance bill if your dialing window is during daytime hours and you tell
it to only dial on Saturdays. If you have your system enter network chat with the remote system after
exchanging messages, then you might want to restrict these calls to only two or three days a week.
When you get back to the prompt,
A-add, C-change, D-delete, L-list, Q-quit:
To delete a node, enter "D" and you will be prompted for the sequence number of the node you
wish to delete. Enter that sequence number and the record will be deleted. The system will NOT delete
the account record in the user file for that node, only the entry in the Network Node Table.
To add a node, enter "A". To change a node, enter "C". You will then be prompted with the
following questions.
Remote network node ID:
This is the node ID, or serial number, of the remote system.
Node name:
Node name is the name of the remote BBS. This can be any string of 30 characters or less. It is
only used in generating a listing of network nodes that users can display with the "L" command.
Node phone number:
This is what will be sent to your modem to dial the number. Do not include the initial "ATDT"
or "ATDP"; the system will pull this information from the modem configuration record that you set up
with the "PM" command. If the node is a "forwarded" node, then enter the node ID of the node which
messages will be forwarded through, preceded by a "/", for example, "/976".
For some systems, it is advantageous to use a service like PC-Pursuit, Tymnet, or other
networking facility to cut the high cost of phone charges. Since the commands and phone numbers
necessary for communicating are complicated, there is the facility to have the system operator intervene
when the BBS does the dialing so that the system operator can enter the proper network codes. The
Node Phone Number should be a "#" or "@" sign which may be followed by the name of a message on
your "utilities" sub-board. If the "#" or "@" is found, without being followed by message name, then
the console will be put into terminal mode so that the SYSOP can enter any commands necessary to
connect with the remote system. If the "#" or "@" is followed by a message name, then Bulletron goes
to your "utilities" sub-board and finds the message and transmits that message, which contains the
commands necessary to connect to the remote system. Bulletron provides several escape sequences
that can be used within this script message to dynamically modify the dialing process:
$^$ is replaced by the account code that logged onto the system prior to the
current user.
^x is replaced by a control character that corresponds to letter "x". For example,
"^M" would produce a carriage return, "^J" would produce a line feed, and
"^I" would produce a tab character.
$+$ is replaced by the user's account code.
$N$ is replaced by the user's name/handle.
$L$ is replaced by the user's city and state .
$A$ is replaced by "Y" if the current session has ANSI or RIP graphics, or "N" if
not.
$T$ is replaced by the number of minutes remaining in the user's current session.
$$$ is replaced by an account code chosen at random.
$O$ is replaced by the user's ordinal call number; that is, "1st", "2nd", etc..
$B$ is replaced by the short name of your BBS, which you specify using option
"N" of the "PP" command.
$S$ is replaced by the descriptive name of the current sub-board.
$P$ is replaced by the main system prompt (usually "What next?")
$I$ is replaced by the task (line ) number of the line on which the user is logged
on.
$TS$ is replaced by the minutes already used in the current session
$TD$ is replaced by the minutes already used in the current day.
$TL$ is replaced by the total minutes used in the user's lifetime.
% makes Bulletron pause for one second.
~ makes Bulletron pause for one half second.
The difference between "#" and "@" is that "@" will not automatically logon -- it will not send
the account and password to the remote network node. The "#" causes the calling system to send the
account and password and begin the network transmission.
For example, assume that a system operator in Florida wants to network to a system in Los
Angeles. The SYSOP of the Florida BBS puts "@" as the phone number of the Los Angeles system.
The Florida SYSOP then initiates manual network transmission with the "=" command. The BBS goes
through the normal manual networking procedure. When it goes to dial the remote system's phone
number, it recognizes the "@" and puts the SYSOP into terminal mode rather than dialing the number.
The SYSOP, now in terminal mode, enters all the modem commands to cause the modem to dial the
network account codes and passwords, etc.. When a connection has been established with the remote
system, the SYSOP enters CTRL/K to exit terminal mode and let Bulletron log on to the remote
system and proceed with networking. If the SYSOP had used "#nnnnnnnn" for the phone number,
where "nnnnnnnn" is the "to" account of a message on the "utilities" sub-board, then the network
commands and logon would be done automatically.
The logon account is verified and if an invalid character is received, the session is disconnected
rather than retried. In areas where noisy telephone lines are a problem, you may want to try networking
with manual logon. Manual networking is also a good way to test a new network account on a remote
system.
Password on remote system:
This is the password that your system uses to log on to the remote system, for an Bulletnet node,
or the password to be placed in message packets for a FIDOnet node.
Protocol:
You have three choices here: "O", "1" and "Z". The "O" (that is the letter "OH", not zero)
protocol is based on XMODEM-CRC, with 128-byte blocks and 16-bit CRCs. This is the most reliable
method of communication, but also the slowest. The "1" protocol is based XMODEM-1K, which uses
1,024-byte blocks and 16-bit CRCs. This protocol is more susceptible to errors than the "O" protocol,
but usually gets the job done in 1/2 to 1/4 the time, depending on the average length of your messages.
The "Z" protocol is based on ZMODEM-32, but uses variable packet sizes up to 9 Kbytes and 32-bit
CRCs. This is the fastest of all, but also the least forgiving. The "Z" protocol is only recommended for
use with modems that support V.32bis with V.42bis error correction. Bear in mind, when selecting a
protocol, that all Bulletnet protocols utilize CRC error detection to prevent corruption of message text.
A noisy phone connection will cause the call to be aborted and retried, but will not result in "garbage"
data appearing in the messages. No matter which protocol is selected, when a call has to be retried,
messages already received successfully will not be duplicated at the receiving end. If your system
tends to be fairly busy with callers when your network calls occur, data may be lost because the system
can not respond to incoming data fast enough. You can solve this problem by selecting lower Baud
rate, a less busy time, or a slower protocol. Keep in mind, also, that the "Z" protocol was not available
on Oracomm systems prior to version 8.4, so your choices will be limited to "O" or "1" if you network
with an older system.
Manual Dial Only:
This determines whether the system automatically dials the remote system each day, or whether it
dials only when you manually tell it to dial. If you want it to dial only when you manually tell it to
dial, enter "Y". Otherwise, enter "N". This is most useful to prevent long distance dialing except when
many messages are waiting to be sent. If this is set to "Y", then the system operator must use the "="
command to initiate network dialing. If you do not want to network every day, but rather only once a
week or on specific days, enter "Y" on this prompt. Then set the start time, stop time (even just 1
minute later), and days to network in the prompts below.
The Manual Dial Only indicator can also be "A" for "Always Network". This means it will
always attempt to network, even if there is no mail waiting to be sent on your system, on the days and
times indicated for calling. The purpose of this is to pick up any messages on the other system if the
other system is set to manual only and is not calling your system. It will NOT drop into network chat.
To force networking on specific days AND go into network chat, enter "C" for Manual Only.
Baud rate:
Enter either 300, 1200, 2400, 9600, 19,200 or 38,400 depending on what speed you want to dial
the remote system. Be sure the remote system has the capability to accept calls at that speed.
Network Start time:
This is the time, 0 to 2359, when the system is to attempt calling to that node. If the time is 0,
then your system will not call. Do not place a colon between the hours and minutes.
Network Stop time:
This is the time, 0 to 2359, when calling is to terminate. If your system connects to the other
system, it will remain in public chat and disconnect at this time. If this time is 0, then your system will
NOT network chat. Do not place a colon between the hours and the minutes.
Enter Y to call on a day, or N to not call.
Starting on Sunday and ending on Saturday.
To call on Saturday and Sunday only, enter YNNNNNY
Enter 7 Y's or N's for the days of the week [YNYNYNY]:
This indicates which days of the week on which your system will call that node. Note that there
can only be 12 nodes with which you can call per day. You may call different nodes on different days,
but only 12 nodes on any particular day.
5.6.1.2. Setting Retry Count and Time Between Retries
On the Extended Parameters Menu ("PXP" command), function "H" lets you set the number of
minutes between retries for network calls, and function "I" lets you set the maximum number of retries.
Bulletron will not attempt to dial out when there is a user call in progress on the line that you have
designated for networking ("PL" command). Each time that a call completes, whether inside a
networking window or not, Bulletron waits 30 seconds for another call to come in before considering
whether or not to dial. If, at the end of that 30 seconds, the time of day is within the networking
window for some dial, the system attempts to dial out. If the call fails, it will wait for the number of
minutes specified by function "H" of the Extended Parameters Menu, then attempt to dial again. This
repeats for the number of times specified by function "I" of the Extended Parameters Menu, or until the
dialing window closes, which ever comes first.
Situations can occur which can prevent calling or networking. Obviously, if a user calls in on
your networking line before the start of the dialing window, and stays on until after the window is
closed, the system will not be able to dial that day. Similarly, if you let your networking line be used to
dial outside features, and a user on another line ties up the networking line through the entire window,
then the system will not be able to dial out. If your system is so busy during the networking window
that, each time a user call finishes, another call comes in before 30 seconds elapses, then the system will
not be able to dial out. If a call finishes 31 seconds before the start of a dialing window, then the
system will not try to dial until the time between retries elapses. For these reasons, it is best to keep the
time between retries fairly short. In practice, we have found that a window of 30 minutes, with 4
minutes between retries and 7 retries maximum works best.
5.6.1.3. Sample Network Installation
This is an example of all that you would do to set up Bulletron #68 as a node to your own
network. To add additional nodes, simply repeat steps 3, 4 and 5 for each node that you wish to add.
1. In the board setup menu ("PB" command), set up two new boards as follows:
Abbreviation SRC DST
Name Network source Network Destination
SIG N N
Special Features S D
PRSL N N
R/O N N
ANON N N
SMRY N L
A/L 100 1000
PRG 30 30
2. In the Extended Parameters menu ("PXP" command), set item "H" to 4 minutes between
retries and set item "I" to 7 retries maximum
3. In the network setup menu, set up Bulletron #68.
Node ID 68
Node Name N.A.S.I.X.
Node City/State Syracuse, NY
Phone 13154712970
Password nORA (where n is your own node ID)
Protocol Z (for modified ZMODEM)
Manual A
Baud Rate 38400
Start Time 130
Stop Time 200
Days YYYYYYY
Log on to your system locally, enter NEW, and set up a new account with account code
"ORA68", password "68ARO".
Place a modem call to N.A.S.I.X., at the phone number shown above, and leave a message for the
system operator requesting a networking account for your node. The system operator will respond in a
few days, giving you a different time for your dialing window, as not everyone can call in at the same
time.
5.6.1.4. Echo Conferences
A Network Echo Conference (AKA Echo Boards) is a slight variation of the general network.
There can be only one "network source" sub-board and one "network destination" sub-board. When a
user enters a message on your "network source" sub-board he is prompted for a specific node that his
message is sent to.
Messages posted on echo conference sub-boards, however, are sent to ALL nodes in the
network. There can be many network echo conference boards. Each one is defined with an "E"
(instead of S or D) in the Special Features field of the sub-board setup ("PB" command).
Each networking account on your system, "ORAnnnnn" where "nnnnn" is the node number, has
an associated feature access level and SIG list. This access level and SIG list determine which
sub-boards that node can access on your system. After a node has called in and transmitted any
messages it may have from it's own "network source" sub-board and your system has transmitted any
messages it may have from it's own "network source" sub-board, Bulletron goes through the list of all
sub-boards looking for type "E" (echo conference) sub-boards. If it finds one, it then checks the SIG
list of the calling node. For a node to have access to an "echo conference" sub-board, the sub-board
abbreviation must be in the calling node's SIG list, even if the sub-board is not a SIG to other users. If
the calling node can access that sub-board, your system does an effective "RL" on that sub-board and
sends any new messages or comments to the calling node. As the calling node reads those messages,
it checks to see if it has a sub-board defined with type "E" and having the same sub-board abbreviation.
If so, it puts the received message on that sub-board. If not, it puts the message on its "network
destination" sub-board for the SYSOP to forward or delete.
Comments added by users on a "echo conference" sub-board always become new messages rather
than being added on the end of the original message. This is because the comment only, not the
original message or prior comments, are transmitted to any and all nodes accessing that sub-board. It is
not possible to append comments to messages on echo conferences like messages on other Bulletron
sub-boards. The reason for this is that the same message is being updated simultaneously by users on
hundreds of nodes around the world every day. If people in St. Louis, Minneapolis, Detroit and Los
Angeles all add comments on the same message, and then the message is merged back together with the
comments in chronological order, then the comments won't make any sense. For the comments to
make sense, the message can only exist on one node at any given time. In spite of this handicap, echo
conferences, like FIDOnet, make an excellent medium for distribution of commercial advertising and
news releases.
5.6.1.5. Network Chat
You, as the system operator can force Bulletron to dial another system to send messages that are
on your "network source" sub-board at any time using the "=" command from the Control Window.
After its messages are sent, your system receives any messages waiting for it at the remote system.
When this operation is manually initiated by the SYSOP (not at automatically at night), you can enter
the negative of the node number if you DON'T want to start a network chat after exchanging messages.
The default, by entering the node number as a positive value, is to start a network chat.
If you let the systems network chat, then after exchanging messages, both the calling and the
called systems go into public chat. If another user also goes into public chat, then any messages
entered by that user are transmitted to other users in public chat at both systems. This allows users on
multiple systems to communicate in public chat. If a user does a "/WO" command while the two
systems are in network chat, then he will see a message indicating that the systems are linked. "#WO"
(not "/WO") will list who is online on the remote system. A single Bulletron system can be called by
more than one remote system at the same time, so there can be multiple systems in network chat
simultaneously. Once network chat is established, it must be terminated by either the calling or the
called SYSOP, or it self-terminates if initiated automatically. Network chat terminates due to inactivity
if you set the time limit for inactivity in the "PP" command.
With Bulletron, two or more nodes (up to 2,000 nodes for 3,998,000 users) can be connected in
permanent network chat. This is useful if you are running two systems, each with different subject
matter, but want the users on either system to be able to chat with users on the other system at any time.
Set the "PL" command for the line to be permanently connected to modem type "D" (direct connect)
and the network call to "C" (Continuous). The Baud rate is normally 9600. Connect the two systems
with a null modem cable, as defined by section 5.1.6 of this manual. If it is necessary to terminate this
network chat, use the "X" command on the Control Window to shut down that line.
5.6.1.6. Sending Files over the Network
Sometimes it may be necessary to transmit information from one network node to another where
the information is larger than will fit in a message. A file, such as a program or a game might need to
be sent. An example would be if you wanted to transmit the new User Manual. To do this you must
transmit a combined message which causes both the file to be transferred, and also serves to tell the
SYSOP on the destination system that a file has been transmitted and to look for it on hard disk in the
upload directory.
For Bulletron, a message that has a file attached must be from account "SYSOP" and to account
"SYSOP" on the destination system. The first line of the message must begin with "@" followed
immediately (with no space in between) by the file name and extension as it exists on the source
system. From the second line onwards would be the message to the destination SYSOP. The message
entered on source system may look something like this:
MSG# 1460 09/11/86 09:30
FROM: SYSOP SYSTEM OPERATOR
TO: SYSOP SYSTEM OPERATOR
FROM NODE: ORA10 TO NODE: ORA15
SMRY: NEW USER MANUAL
@USERMANL.DOC
Hi Tom, here is a copy of the user manual that you wanted.
NOTE: THE FILES YOU ARE TRANSMITTING MUST BE LOCATED IN THE
DIRECTORY DEFINED AS THE "DOWNLOAD DIRECTORY" OF YOUR "NETWORK
SOURCE" BOARD. AN INCOMING FILE WILL BE RECEIVED IN THE DIRECTORY NAMED
IN THE "UPLOAD DIRECTORY" OF YOUR "NETWORK SOURCE" BOARD.
5.6.2. FIDOnet
5.6.2.1. FIDO User Names
There is a critical difference between the way that Bulletron identifies user accounts vs. the way
that many FIDO systems do. Many FIDO BBS's identify a user by first and last name. In Bulletron,
this information is optional, and may be changed arbitrarily by the user. Many Bulletron systems do
not even carry the user's name in his account information, but, instead, use handles for the sake of
anonymity.
Because the recipient's name may be required by a remote FIDO system, instead of an account
code, Bulletron prompts the user for the name of the recipient when originating a private mail message
for FIDOnet. When the message is sent, the system ignores the "to" account for the message and sends
it to the specified name.
When a user originates a message for FIDOnet, and the system prompts him for
To:
he should enter "FIDO" so that the system knows to handle the message in a special way. For
example, if a user wants to send a message to "Gary O. Young" at FIDO address 5:10/15.20, he should
enter
E FIDO
and the system will prompt him for a FIDO destination and "to" name. The FIDO destination can
be entered as a single decimal number, for FIDO nodes in the same zone and network as your system,
as net/node for FIDO addresses in your zone, but outside your network, or as zone:net/node for
destinations in other zones. Bulletron uses the information in your Network Node Table ("PXL"
command) to determine routing. If, at the time of a network call, Bulletron determines that any given
message can be routed via the node being called, then it will send that message. If the user enters a
message to a FIDO destination for which you have no route, then that message will remain on your
Network Source sub-board forever, or until the date you set for auto-purge for your Network Source
sub-board.
The "from" name placed in outgoing FIDO messages is formed from the local user's account code
and handle, separated by a single space character. This conveys the account code information to the
remote FIDO system, so that a reply with the exact same name will go to the right Bulletron account
code. Users at remote FIDO nodes should be told to place the eight character Bulletron account code
of the recipient at the beginning of the destination name for their mail. Because Bulletron users are
always permitted to change their name or handle arbitrarily, incoming mail can not be routed to the
right account unless it has the account code at the beginning of the destination name. Optionally, the
name or handle, may also be placed in the destination name, after the account code, with a space
character in between.
The importance of the user name, or handle, for FIDO messages necessitates a slight change to
the display format of "S" (Summary) commands. When the system detects a FIDO address as the
source or destination for a networked message, wherever it appears, whether it be on your Network
Source sub-board, your Personal Mail sub-board, your Network Destination sub-board, or any echo
board, it uses two additional lines on the screen to display the "to" and "from" information. This allows
room to display the account code, the full name or handle, and the full FIDO address. The "to" account
code will always be "FIDO" for outbound messages, and the "from" account code will always be
"FIDO" for inbound messages. The "from" account code for outbound messages will always be the
account code of the person that originated the message on your system. The "to" account code for
inbound messages will be the first word found in the message header, converted to all upper case, up to
8 characters, as described above.
5.6.2.2. Setting up Your FIDO Address
From the main system prompt ("What next?"), enter "PX" to invoke the Extended Features menu,
then enter "P" for Extended Parameters, or just enter "PXP" at the main system prompt to save time.
Function "U" allows you to enter the FIDOnet address of your system. You obtain this address by
contacting your local FIDOnet coordinator. You will have to hunt around on other BBS's in your local
area to find out who he is. When you execute function "U", the system will prompt you for four
numbers:
Zone:
Net:
Node:
Point:
Most systems need only specify the zone, net and node. Many FIDO systems consider the point
information to be optional, and do not support it. You should enter a zero for your point number if it
does not apply.
Function "V" of the Extended Parameters menu allows you to enter a FIDO password for your
system. If you leave this blank, or enter spaces, then no password checking will be done on incoming
packets. If you put a non-blank value in this field, then your system will ignore any incoming message
packets that do not match the password that you specify.
5.6.2.3. Designating FIDO Echo Conferences
Bulletron uses a three character code to identify its sub-boards. FIDO systems do not have
sub-boards, but their closest equivalent is "message areas". Message areas are identified by their title,
which may be any string of, up to, 64 characters. These titles are called "conference names". You can
establish a correlation between Bulletron sub-boards and FIDO conference names by using the "PXF"
command.
From the main system prompt ("What next?"), enter "PX" to invoke the Extended Features menu,
then enter "F" for Conference Names, or just enter "PXF" at the main system prompt to save time. The
system will prompt you with
A-add, C-change, D-delete, L-list, or Q-quit:
To create a new correlation, enter "A", for "add". The system will then ask you for a three
character sub-board abbreviation and a 64 character conference name. You can create as many as you
want; there is no limit. For any particular sub-board, there can only be one conference name. The
system will use this information to convert the sub-board abbreviations for your echo boards to FIDO
conference names when exporting messages. Likewise, you should only assign a particular FIDO
conference name to one sub-board. The system will search the conference names that you have
defined and place a message on the sub-board identified if a match occurs. Incoming messages that do
not have conference names ("AREA:" lines), and those that do not match anything you have set up,
are placed on your "network destination" sub-board. Messages marked "private" by the originator, or
not addressed to "ALL" are marked as "private" when received by Bulletron. "Private" messages are
placed on your Personal Mail sub-board if the destination node is your system, or on your Network
Source sub-board, for forwarding during another network call, if the destination node is not your
system. Users can respond to FIDO messages on your "personal mail" sub-board like any other private
mail, and the system automatically swaps the "to" and "from" information and places the message,
with comment added, back on your Network Source sub-board for export.
You can change the conference name string for any sub-board abbreviation by entering "C" at the
above prompt, delete the conference name for any sub-board by entering "D", or list them by entering
"L".
5.6.2.4. FIDO Networking Account(s)
Bulletnet nodes must have an active account, with subscriber privileges, on your system before
they can log on for networking. FIDO systems do not use account codes and passwords when logging
on, but you still must make an account for each FIDO node that you wish to call out to. The account
record for this account keeps track of the last logon time and date for selecting messages to be sent from
your echo boards. It also allows you to restrict access to certain echo boards for different FIDO
systems that you call. As with Bulletnet, you must place the sub-board abbreviations of all echo
boards that you want that FIDO system to have in its account's SIG list. See the section above, entitled
"Echo Conferences" for details.
5.6.2.5. Network Node Table Setup (Dialing and Routing)
You must use the "PXL" command to set up node records for FIDO systems in your Network
Node Table, as you would for Bulletnet Nodes. This gives the system the information that it needs to
automatically dial outgoing calls to your FIDOnet host(s), and tells the system how to route mail for
systems that it does not dial.
From the main system prompt ("What next?"), enter "PX" to invoke the Extended Features menu,
then enter "L" for the Network Node Table, or just enter "PXL" at the main system prompt to save time.
The system will prompt you with
A-add, C-change, D-delete, L-list, or Q-quit:
When you add, change or delete a node, the system first prompts you for the node number. For
Bulletnet nodes, this node number must be the serial number of the remote system, but for FIDOnet, it
can be any number between 1 and 99999 that you are not using for some other node. This is the key
value by which the node record is identified. You use this node number for manually dialing the node,
using the "=" command, from the Control Window.
After you enter the node number, Bulletron prompts you for the node type, with:
Node Type (O or F):
Enter "F" for FIDOnet.
The dialog proceeds the same as for setting up an Bulletnet node (see "Adding, Deleting and
Changing Nodes", above), until you come to the prompt,
Account Code on Local System []:
This is where you specify the account that you set up to keep track of the last logon date and SIGs
for the FIDO node. For Bulletnet systems, the account code on your local system is always
"ORAnnnnn", where "nnnnn" is the remote system's serial number, and the system does not prompt you
for it. For FIDOnet nodes, the account code can be anything you like, as long as the account exists.
The next piece of information that the system prompts for is the
Password on Remote System []:
FIDO systems do not require a password for logging on when using FTS-0001 protocol, but this
password will be placed in your outgoing mail packets. Other FIDO systems may reject your mail
packets if you do not use the password they want to see, just as your system can be set to reject
incoming mail packets, using function "V" of the "PXP" command. If your system dials the remote
system, and connects using Yahoo (FTS-0006) then this password will be presented to the remote
system during the logon process.
After the remote password, Bulletron prompts you for the FIDOnet address of the remote system.
It asks you for
Zone:
Net:
Node:
Point:
Usually, you can leave "zone" blank, or just enter a zero. This makes Bulletron use the zone
number of this node the same as the zone number of your system. The same is true for the net number.
You MUST enter the node number. A basic concept of FIDOnet is that there can not be more than one
system with the same node number in the same zone and net. The point number is considered optional
by many FIDO systems and you will usually enter zero for this value.
From this point, on, the rest of the node record setup for a FIDOnet node is the same as that for an
Bulletnet node. The network start time and network stop time define the mail window for the FIDO
node, and FIDOnet calls use the same mechanism as Bulletnet calls for scheduling and dialing. As with
Bulletnet, if you have nodes to which you send mail, but do not dial them directly, then set "Manual
Dial" to "Y" and put "/nnnnn" in the phone number, where "nnnnn" is a reference to another entry in
the Network Node Table (one which does have a real phone number). Bulletron does not use
information from the NOVELIST file to automatically dial calls or route mail. YOU must read the
NOVELIST file using the provided database search and retrieval functions (described below), then
YOU decide how your long distance money is going to be spent. Also, as a matter of common
courtesy, it is best to ask the operator of the remote system if you can route mail through his system
before you attempt to run up HIS long distance bill. If you set "Manual Dial" to "Y" for any FIDO
node, but place nonzero values in the network start time, network start time, and days of the week field,
the Bulletron will build a mail packet for that node at the time specified, even though it does not dial.
This allows you to have mail packets ready and waiting for remote nodes that only dial you.
Finally, two additional fields are provided for each FIDO node to allow you to specify DOS batch
procedures for compressing and decompressing mail packets for that node. At the prompt,
Batch Procedure for Compressing Packets []:
you can enter the file name of a ".BAT" file that Bulletron will execute right after an outgoing
mail packet is built. Do not include any path information; Bulletron will look for the batch file in your
BBS default directory (the directory that is current when the BBS program is started). After that, you
are prompted for
Batch Procedure for Decompressing Packets []:
Here, you can enter the name of a ".BAT" file that will be executed immediately after an
incoming packet has been received. Details of what parameters Bulletron passes to these batch
procedures, and what you should place inside them, are given below, under "Compressing and
Decompressing FIDO Packets".
5.6.2.6. FIDO NOVELIST Processing
A listing of all the nodes in the worldwide FIDO network is published every Friday and
distributed via FIDOnet. FIDO systems use this list to assist in the routing of mail messages, and as a
reference source for prospective FIDO operators to use in locating their local network coordinator. The
name of the ASCII text file containing the FIDO node list is "NODELIST.nnn", where "nnn" is the day
of the year on which the list was published. You can download a copy of this file from most systems in
the FIDO network. Frequently, it will be stored in a compressed form, compatible with System
Enhancement Associates ".ARC" format, as a file named "NODELIST.ann", where "nn" is the last two
digits of the day of the year.
Bulletron provides a facility for creating an on-line database from a "NODELIST.nnn" file that it
can use for determining which messages to place in different message packets when packets are
prepared for several destinations, as in the case of a network hub. The name of the utility program that
compiles the Node List Database is "NODECOMP.EXE". You run this program from an OS/2
command line prompt with the command,
NODECOMP filename
where "filename" is the name of the ASCII "NODELIST.nnn" file.
For client/server systems, the name of the node list compiler program is changed to
"NODCOMPL.EXE". When you run the client/server version, you must specify the name of the server
that is running the BBSRVR program, also, as in:
NODCOMPL SRVRxxxxxxx filename
where "xxxxxxxx" is the LAN name of the server and "filename" is the name of the ASCII
"NODELIST.nnn" file.
When you run the NODECOMP utility, it produces two files named "BBFNODES.DAT", and
"BBFNODES.IDX", which the BBS2 program will open as supplemental database files when they are
needed. To run the NODECOMP utility, you need to have two other supplemental database files
named "BBFREF.DAT" and "BBFREF.IDX". These files contain a reference table that
cross-references information about country names, state/province/territory names, telephone country
codes and telephone area codes and FIDO addresses to build the indices present in "BBFNODES.IDX".
Bulletron makes it available for users to query and browse this database using the "L" command
from the main system prompt. Users can search the Node List Database by FIDO address, FIDO
network, FIDO region, FIDO zone, country, state/province/territory, city/town/village/county,
telephone country code, telephone area code, or telephone city code. The "HELPL.UTL" file gives
detailed user instructions.
Because the four files used to support the FIDO Node List Database are opened as read-only by
the BBS program, no provision is made for rebuilding their indices. The "BBFREF.DAT" and
"BBFREF.IDX" files were created, record by record, by considerable meticulous hand-editing, using
library reference materials, so you can not create these at your site. If they are lost or damaged, you can
download new copies from out technical support BBS at (315) 471-2970. The "BBFNODES.DAT"
and "BBFNODES.IDX" files are deleted and completely rebuilt each time that the NODECOMP
program is executed.
Because of the intricacy of the links and cross references used in the Node List Database, it takes
far longer to process a NODEDIFF file than to merge the NODEDIFF file into an existing NODELIST
file and re-create "BBFNODES.DAT" and "BBFNODES.IDX". For this reason, we do not provide any
program for processing NODEDIFF files directly.
5.6.2.7. Dialing and Receiving FIDO Calls (Mailer Function)
Outgoing calls to FIDO systems are scheduled in Bulletron by the same mechanism that
schedules Bulletnet calls. You set the hours to attempt dialing, and the days on which to call, for each
node in Bulletron's Network Node Table ("PXL" command). You may set this time to your zone mail
hour, but Bulletron imposes no restrictions requiring you to do so. Although it can receive networking
calls on all phone lines simultaneously, Bulletron can only dial out for networking to one system at a
time, so, if you plan to dial out to more than one system, you will want to allocate non-overlapping
windows of 30 minutes for each system that you attempt to dial.
When a call is placed, Bulletron will begin by building the mail packet for the node to be dialed.
Internally, it names this file "FOnnnnn.PKT", where "nnnnn" is the node number you used for the
system in your Network Node Table. This file is stored in your BBS default directory; that is, the
directory that was current when the system was started up. This file remains in the default directory
until you explicitly delete it, or it is overwritten by another call to the same node.
After sending the mail packet for a dialed node, and attached files, if any, Bulletron attempts to
pick up a mail packet from that node and attached files. If the dialed node has nothing to pick up, or
after the pickup is complete, Bulletron disconnects and updates the last logon date and time for that
node's networking account so that it can determine which messages are new at the time of the next call.
The incoming mail packet is stored in a file named "FInnnnn.PKT", in the default directory, where
"nnnnn" is the node number that you used for the remote system in your Network Node Table. The
mail messages in this packet are unpacked and distributed to your Bulletron sub-boards when the call is
disconnected. As with Bulletnet, files received during a FIDOnet call are placed in the upload directory
of your Network Source sub-board. Files to be sent can be in any directory; Bulletron will use the
Download Database to find them. If you define more than one set of file directories for your Network
Source sub-board, then the first set of directories appearing on the menu are used.
For receiving calls, any phone line of an Bulletron system can receive a FIDO networking call at
any time. When an incoming call uses the FTS-0001 protocol, there is no way of knowing who called
without opening the received mail packet and examining its header. This could take considerable time
if the mail packet is large and has been compressed by ARC or some other method. Rather than
running up the long distance phone bill for the calling system, and run the risk of timing out the
protocol, Bulletron does not attempt to turn around and send after receiving for FTS-0001 sessions.
However, if file requests are found in the received packet when it is distributed to the Bulletron
sub-boards, Bulletron will generate messages on the Network Source sub-board that will cause the files
to be sent the next time that system is called. With FTS-0001 protocol, you MUST call the remote
system to send anything to them. Even if outgoing mail packets are pre-built and waiting to go, there is
no practical way of knowing who called until after the call is over. Even if you think that there is only
one system calling yours, You can't guarantee that some yingyang that you never even heard of won't
get ahold of your phone number and try to pick up your mail. This security issue is resolved by the
YooHoo protocol. As a convenience to systems that call yours, to avoid having them pay for an
aborted telephone call if your system should crash for some reason, you can set the networking flag in
the "PL" command for the phone line(s) that receive FIDOnet calls to "F". This setting causes
Bulletron to not place the modem in auto-answer mode, but rather, poll the line for a "ring" signal every
half second, and send an "ATA" command to the modem if it finds the phone ringing. That way, if
your BBS goes down unexpectedly, the phone line will just ring. Using this setting will not interfere
with incoming calls from BBS users, as the overhead of polling for the "ring" is very small.
5.6.2.8. Compressing and Decompressing FIDO Packets
When you set up your Network Node Table entry for a FIDO node, you can specify the name of a
DOS batch procedure that compresses packet files for that node, and another DOS batch procedure that
decompresses incoming packets. Each FIDO node can have a different pair of batch procedures, if you
like, or some, or all of them can be the same. When you specify the names of these batch files, you
should not include any drive of path information; Bulletron assumes that the batch files are in your
BBS default directory; that is, the drive and directory that is current when the BBS2 program is started.
When your batch file is started, Bulletron passes two parameters to it. The first parameter is the
fully specified file name (drive, directory, file name and file name extension) of the input file to the
procedure. The second parameter is the fully specified file name for the output from the procedure. For
the compression procedure, the input is the "FOnnnnn.PKT" file in your BBS default directory, and the
output is a whose name is an eight digit hexadecimal number, computed by a magic formula, in your
Network Download Directory. For the decompression procedure, the input is the name of the first file
received during the call, in your Network Upload Directory, and the output is the "FInnnnn.PKT" file in
your BBS default directory. If you do not use compression or decompression for mail packets, then
your procedures reduce to a single command:
COPY %1 %2
in both cases.
For a less trivial example, if you were to use ZIP compression for mail packets, then your
compression procedure might be:
PKZIP %2 %1
Your decompression procedure, however, is complicated by the fact that you don't know what the
name of the file is going to be that comes out of the compressed packet. You might resolve this by
using the following procedure:
MD TEMP
FOR %%X IN (TEMP\*.*) DO DEL %%X
PKUNZIP %1 TEMP
FOR %%X IN (TEMP\*.*) DO COPY %%X %2
To explain this procedure, the first line creates a subdistrict named "\TEMP" under the BBS
default directory. If the procedure is run twice, this line will result in an error message, that will be
ignored. The second line is there in case the "\TEMP" directory already existed and was not empty. It
says, "for each file in the temporary directory, delete that file". This avoids a prompt that comes up if
you just do a "DEL *.*". The third line decompresses the input file, placing any files that come out in
the temporary directory. Only one file should come out. Then the fourth line copies each file in the
temporary directory (there should be only one) back into the BBS default directory, giving it the proper
name. The "%%X" in the above procedures is a local character string variable used in the batch
procedure.
Later, when file compression programs for native 32-bit OS/2 become fully developed, you can
change the file name extensions of your packet compression and decompression batch procedures from
".BAT" to ".CMD", and Bulletron will automatically execute them in OS/2 sessions instead of DOS
sessions. The above examples were prepared and tested using PC-DOS 2.1, the September 1983
release and will work with every version of DOS through the current version of OS/2
For receiving calls from FIDO connections that use straight FTS-0001 protocol, a pair of
system-wide default packet compression and decompression procedures are provided. You specify
these with Extended Parameters ("PXP") command, functions "X" and "Y". When a call is received
using straight FTS-0001, the most primitive form of FIDO connection, the mail packet is transmitted
using an XMODEM file transfer, and no information regarding the type of compression, if any, is
provided. Furthermore, no information about who is calling is provided, so that the packet compression
method can be taken from the node definition record. Bulletron will attempt to decompress a packet
received this way using the procedure that you specify for function "Y" of the "PXP" command. If you
leave function "Y" of the "PXP" command blank, or put blanks in that field, then Bulletron will not
attempt any form of decompression. The default packet compression and decompression procedures
will also be attempted for calls that your system originates if you leave the names of the packet
compression and decompression procedures blank in the node record for that node.
5.6.2.9. Sample FIDO Setup
There are quite a few details that need to be defined to set up FIDOnet for your Bulletron system.
In this section, we will list the steps needed, assuming that your FIDO address is 1:267/0 and you are
exchanging mail and files with FIDO address 1:267/112.
1. Use the "PXP" command, function "U" to enter your system's FIDOnet address:
Zone: 1
Net: 267
Node: 0
Point: 0
2. Use the "PXP" command, function "V" to enter the password that you want to use for
incoming mail packets. Enter spaces to inhibit password checking.
3. Use the "PXP" command, function "X" to specify the name of the default batch procedure for
compressing outgoing mail packets. For this example, we will call it "TEST1.BAT".
4. Use the "PXP" command, function "Y" to specify the name of the default batch procedure for
decompressing incoming mail packets. For this example, we will call it "TEST2.BAT".
5. Off-line, or in another session, using a text editing program like OS/2's "E.EXE", create a file
named "TEST1.BAT" in your BBS default directory, containing the following line:
COPY %1 %2
We are assuming that no compression will be used for outgoing mail packets.
6. Off-line, or in another session, using a text editing program like OS/2's "E.EXE", create a file
named "TEST2.BAT" in your BBS default directory, containing the following line:
COPY %1 %2
We are assuming that no decompression will be used for incoming mail packets.
Back on-line, use the "PXL" command to create an entry in your Network Node Table. We will
assume that no other node is using number 69 for its reference number, so we create the Network Node
Table entry using:
Node No.: 69
Name: FIDO Test System
Local Acct: FIDOTEST
City/State/Country: Syracuse, NY
ORA/FIDO: F
FIDO Address: 1:267/112
Manl Dial: A
Phone No,: 555-1212
Remote PSWD: JUNK
Baud Rate: 2400
Start Time: 1700
Stop Time: 1730
Days: YYYYYYY
Batch Procedure for Compressing Packets: TEST1.BAT
Batch Procedure for Decompressing Packets: TEST2.BAT
This says that the name of the remote BBS (at FIDO address 1:267/112) is "FIDO Test System",
that it is located in "Syracuse, NY", that it is a FIDO call, as opposed to an Bulletnet call, that its
FIDOnet address is 1:267/112, that we want to automatically dial it, regardless of whether or not we
have mail waiting for it, that the phone number to dial is 555-1212, that the maximum Baud rate it can
connect at is 2400, that we want to start calling at 5:00 PM, and stop trying at 5:30 PM, on all days of
the week, and that the mail packet compression and decompression procedures are the same as our
defaults. The password, "JUNK", will presented to the FIDO Test System if Bulletron logs on using
YooHoo, and will be placed in outgoing mail packets for FTS-0001.
7. Log off your system and log back on as a new user, to create an account named "FIDOTEST".
Log off and log back on as the system operator so that you can assign access levels and SIGs
to the new "FIDOTEST" account. Any "echo" sub-boards that you wish to exchange with
FIDOnet address 1:267/112 must appear in FIDOTEST's SIGs. See sections documenting the
"+" command and the "PB" command if you need help assigning more than ten SIG
sub-boards. The password for account "FIDOTEST" will be required of FIDO Test System,
if it calls your system and tries to log on using YooHoo.
8. Use the "PXF" command to assign FIDO conference names to your Bulletron sub-boards, for
any "echo" boards that you plan to exchange.
9. Use the "PB" command to see if you have sub-boards with a special feature type of "S", for
Network Source, and "D" for Network Destination. If you do not have them, then create them.
You want to make the access level for your Network Source sub-board low enough that paid
subscribers have write access, so that they can initiate network mail. You want to make the
access level of you Network Destination sub-board high enough so that only system operators
can read it. You never know what kind of junk might come in. You should not make either of
these sub-boards SIGs.
10. Use the "PF" command to define path-ids for the directories that you plan to use for
network uploads (incoming mail packets) and network downloads (outgoing mail packets).
Incoming files will always be placed in the Network Upload directory until you review them
and make them available to your users.
11. Use the "PD" command to assign the path-ids that you created in step 11 to menu
selection zero of your Network Source sub-board.
12. If you want to allow your users to search the FIDOnet NODELIST, then take your
system off-line and execute
NODECOMP NODELIST.nnn
Users that have read access to your Network Source sub-board will be allowed to search the
NODELIST database using the "L" command. Users that have write access to your Network Source
sub-board will be allowed to use the "E FIDO" command.
5.6.3. Internet
5.6.3.1. Installation of TCPIP/2 Drivers
Bulletron interfaces with and relies upon the "sockets" interface of the IBM TCPIP/2 package for
its internet connectivity. Because the OS/2 program loader checks for the presence of the TCPIP/2
drivers before allowing the program to load, a special version of the BBS2.EXE file must be prepared
for use with internet connectivity. OS/2 will refuse to load the internet version if the TCPIP/2 package
is not installed. The standard version of the BBS2.EXE file is compiled without the code that requires
these drivers to be present.
The hardware that brings internet connectivity into your computer is a LAN (Local Area
Network) adapter. This hardware adapter will usually be an Ethernet type of adapter, such as the 3Com
3C503 or the Standard Microsystems Ethercard Plus. These are, by no means, the only LAN adapters
that you can use. The installations provided by IBM with your TCPIP/2 Base Kit will list all those for
which device drivers are provided. Outside your computer, your LAN adapter will connect to a piece
of equipment called a "router" via the LAN connection; usually thinwire, twisted pair or AUI. Your
router will then connect to a special type of modem known as a "DSU". The DSU will connect to a
special high performance telephone line which might be an ISDN, a leased line, a fractional T1, a full
T1 or a T3 line. Your Internet Service Provider; that is, the company with which you will be
connecting at the other end of the special phone line, will usually provide assistance in selecting,
installing and setting up the DSU and router that will best suit your needs. In essence, though, the DSU
provides the modem function for connecting to the special phone line, and the router performs that
function of converting the information received from the DSU into something that is compatible with
your LAN adapter. The router will also filter out internet traffic that is not destined for your system,
and keep information that is destined for another location on your LAN from being transmitted to the
outside world.
In the instructions below, we will describe the steps required to install Version 2.0 of the IBM
TCPIP/2 base kit. These steps are provided only as an example, to be superseded by any manufacturer
provided instructions if you have a later version of TCPIP/2.
The installation of TCPIP/2 begins by installing the LAN adapter card in your computer. Most
LAN adapters will require the use of an interrupt line (IRQ) and possibly some shared memory. You
will want to select an IRQ which is not already in use by another hardware adapter in your system. In
most cases, you will have very few choices. Most motherboards will have IRQ 0 permanently
connected to the Timer 0 interrupt, IRQ 1 permanently connected to the Keyboard Interrupt, and IRQ 2
connected to the interrupt cascade controller. IRQ 6 will be in use by the floppy disk controller or hard
disk controller. IRQ 3 and IRQ 4 will be in use by serial port adapters, one of which may be connected
to your mouse or trackball, and the other to a modem in use by your BBS, or possibly a multiport serial
card. If you have a printer connected to the LPT1 port on your computer, then it will be using IRQ 7.
This leaves only IRQ5, which is sometimes used for an LPT2 port, if your LAN adapter is an 8-bit
adapter. If your LAN adapter has a 16-bit adapter; that is, it has two sets of gold fingers for plugging
into your bus slot, then you will have a wider variety of choices. For 16-bit LAN adapters, IRQ 9, 10,
11 or 12 are usually good choices. The only conflicts that usually occur in the upper range of IRQs are
video cards that sometimes use IRQ 9, SCSI adapters that sometimes use IRQ 11.
Once you have physically installed the LAN adapter card, the next step is to install the LAN
Adapter Protocol Support (LAPS) programs provided with your TCPIP/2 Base Kit. Place the LAPS
diskette in diskette drive A and, from and OS/2 command prompt, enter
LAPS
The LAPS installation program will display a screen with the choice "INSTALL" highlighted.
Click on this with your mouse, and the installation program will copy the LAPS drivers to your hard
disk. When it is finished copying the driver files to your hard disk, the installation program will return
to the original screen with the "CONFIGURE" option highlighted. Click on the "CONFIGURE option
with your mouse and the installation program will display another screen that allows you to select LAN
adapter hardware and protocols. From the upper left column, select the LAN adapter which you have
installed and from the upper right column select the "IBM TCPIP" protocol. When you have made
these selections, they will appear in a box in the lower left of the screen. Click with your mouse on the
"OK" button to confirm your choices and complete the configuration process.
When the LAPS installation program returns you to the initial screen, you can click on "EXIT" to
exit from the LAPS installation program. The program will tell you that you must shut down your
computer and reboot before proceeding. Before you do this, however, you may want to use the OS/2
editor to inspect and edit a file named "PROTOCOL.INI", which is found in a directory named
"IBMCOM" on the hard drive on which you installed LAPS. Near the bottom of the file, if there is an
"interrupt = " line and the IRQ is one that you know will conflict with other cards in your system, then
you will want to change this. Also, if there is a "transceiver = 'ONBOARD'" line in the file and you
know that you will be connecting to the card with the AUI port, then you may want to change the word
"ONBOARD" to "EXTERNAL". Usually, however, you will just leave the "transceiver = " line alone.
After closing the "PROTOCOL.INI" file, you must shut down OS/2 and reboot your computer before
proceeding to install the rest of TCPIP/2. The installation process for the rest of TCPIP/2 will check to
be sure that the LAPS drivers are installed and running before it will install.
After rebooting your computer, get back to an OS/2 command line prompt and insert Base Kit
Diskette 1 into diskette drive A, then enter the command,
TCPINST
When the installation program for Tipped presents its initial screen, in the upper area, you will
want to select:
Base TCP/IP for OS/2
Pubs for Base TCP/IP for OS/2, and
IBM Library Reader
The "Base TCP/IP for OS/2" is the set of "sockets" drivers that the BBS2.EXE program will
require. The "Pubs for Base TCP/IP for OS/2" is your online reference manual. The "IBM Library
Reader" is the program that allows you to read the online reference material. The other components are
irrelevant for this propose, and most are extra cost add-on kits. In the mid-lower part of the screen is a
check box labeled:
Install/run LAN Adapter Protocol Support
You will want to make sure that this box is NOT checked because you have already performed
this step. Below that box is another box labeled:
Configure network connection
You will want to have this box checked, so that you can enter information about your LAN
adapter.
At the bottom of the Tipped installation screen are four more boxes into which you can enter
data. In the "Host name" box, you can enter anything up to eight letters. This is the name by which
your BBS will be known to the entire world. For example, if someone were to send electronic mail to a
user at internet address "ELIJAH.IBM.COM", then "ELIJAH" is what would be entered in this box.
The full e-mail address of the system operator on this BBS would be:
SYSOP@ELIJAH.IBM.COM
The name of your BBS computer that you enter here will usually have to be agreed upon in
advance by you and your internet service provider, as he must also enter this name in his domain name
server, and it will have to be a name that is unique throughout the world.
Below the "Host name" box is a box titled "IP Address:". This address will be given to you by
your internet service provider. It will consist of four numbers separated by periods, as in
"121.97.40.31". This number must be unique throughout the world in order for your internet traffic to
reach your computer.
To the right of thee "Host name" box, is a box labeled "Subnet Mask:". This will usually be
"255.255.255.0", though you should verify this with your internet service provider.
Below the "Subnet Mask:" box is a box labeled "Router IP Address:". This address will consist
of four numbers separated by periods, as in "121.97.40.30". Your internet service provider and you will
decide this address when you install the router.
In the upper right part of the screen will be a box labeled "Update CONFIG.SYS". You will want
to make sure that this box is checked so that the installation program will add the necessary commands
to your CONFIG.SYS file to load and start up the TCP/IP drivers when you boot your computer.
When installation of Tipped is complete, you will have to reboot your computer to have the
changes take effect.
5.6.3.2. PING Service
"PING" is a simple diagnostic program that you can use to verify your connectivity to various
points in the Internet. After you have installed Tipped on your computer, and rebooted it, you should
test it by PINGing your router or another computer on your network. Suppose, for example, you set up
your BBS computer to be internet address 121.97.40.31, your router as 121.97.40.30, and your internet
service provider tells you that there is a computer in his office having internet address 121.97.41.10.
From an OS/2 command prompt, you could enter
PING 121.97.40.30
or
PING 121.97.41.10
OS/2 will execute the "PING" program provided with Tipped and report back whether or not it was able
to get a response from either of these addresses.
You can also "PING" a remote computer directly from a Bulletron session. At the Bulletron
command prompt ("What next?"), you can enter "I" to bring up the Internet Services Menu, then enter
"P" to execute the PING function. Bulletron then asks you for the address or name of the computer to
PING. You can enter the address of the remote computer in dotted decimal notation, as in
"121.97.41.10", or by name, as in "SERVER1.VNET.NET". If you enter the name rather that the
specific internet address, then the PING function will utilize a special computer, called the "Domain
Name Server" which will be located in the office of your internet service provider, to look up the
address associated with that name. To save time, you can also enter "IP" at the Bulletron main system
prompt, or enter "IP" and the address or name, as in:
IP 121.97.41.10
or
IP SERVER1.VNET.NET
The Bulletron PING function will display a message telling you how many milliseconds it took
to get an acknowledgment from the other computer, or an error message if the other computer was not
reachable at that time.
5.6.3.3. HOST Service
The HOST program that is provided with Tipped can be used to look up the internet address of a
remote computer given its name, or to look up its name, given its internet address. For example, from
an OS/2 command prompt, you might enter
HOST SERVER1.VNET.NET
and get back a dotted decimal internet address for that computer.
You can also perform the "HOST" function directly from a Bulletron session. At the Bulletron
command prompt ("What next?"), you can enter "I" to bring up the Internet Services Menu, then enter
"L" to execute the "List Network Nodes" function. Bulletron then asks you for the address or name of
the computer . You can enter the address of the remote computer in dotted decimal notation, as in
"121.97.41.10", or by name, as in "SERVER1.VNET.NET". The "HOST" function will utilize a
special computer, called the "Domain Name Server" which will be located in the office of your internet
service provider, to look up the address associated with that name. To save time, you can also enter
"IL" at the Bulletron main system prompt, or enter "IL" and the address or name, as in:
IL 121.97.41.10
or
IL SERVER1.VNET.NET
If you enter the internet address, as in the first example, then Bulletron will respond with a list of
all names associated with that address. If you enter a name, as in the second example, then Bulletron
will respond with a list of all addresses associated with that name.
5.6.3.4. FINGER Service
Bulletron provides a "FINGER" function that your callers can use to look up biographical data
about someone on another computer. It also has, built into it, a server daemon that will respond to
FINGER requests coming from other points on the internet.
5.6.3.4.1. Outgoing FINGER Service
To "FINGER" someone on a remote computer, from the Bulletron main system prompt, you can
enter "I" to bring up the Internet Services Menu, then enter "W" to select the "who is" function, and
Bulletron will then prompt you for the name of the remote computer and user. You should enter this
information as an account code, followed by an "@" sign, and the name of the computer, as in:
SYSOP@ELIJAH.IBM.NET
In this example, the user is trying to get information about an account named "SYSOP" on an
internet host named "ELIJAH.IBM.NET". The user could also omit the account code and just enter
"@ELIJAH.IBM.NET", or "ELIJAH.IBM.NET", to get general information about that computer. To
save time, the entire command can also be entered at the main system prompt without having to display
the menu, as in:
IW SYSOP@ELIJAH.IBM.NET
or
IW ELIJAH.IBM.NET
5.6.3.4.2. Incoming FINGER Service
When Bulletron accepts a FINGER request from a remote computer, if the account is specified,
then it returns the information that would be displayed by an on-line user executing a "WA" command.
If no account code is specified, then it returns the information that would be displayed by an on-line
user executing a "WO" command. All incoming FINGER requests are recorded in the system log
(BBSLOGnn.DAT), with information about the time and date of the request, the user account and host
computer which originated the request, and the account on your system about which the information
was requested.
NOTE: You do not need to perform and setup or install or execute any special programs for the
FINGER service to work; it is all self-contained with Bulletron. If you install another FINGER server
program, like "FINGERD", then the results will be unpredictable.
5.6.3.5. TELNET Service
Bulletron provides both incoming TELNET services that allow people at other internet sites to
log on to your BBS, and also an outgoing TELNET service that allow users on your BBS to log onto
other internet hosts. As with the FINGER service, all components for both incoming and outgoing
TELNET services are built into the BBS program, so you must make sure that your computer does
NOT automatically start the TELNET server program that is provided with Tipped; that is, the
TELNETD program.
5.6.3.5.1. Outgoing TELNET Service
Users can access the outgoing TELNET service by entering "I" at the main system prompt, then
selecting "T" from the Internet Services Menu. Bulletron will then prompt the user for the name or
address of the remote host to which he wishes to log on. The user can also save time by entering all
this information at the main system prompt, as in:
IT ELIJAH.IBM.COM
or
IT 121.97.41.10
5.6.3.5.2. Incoming TELNET Service
The incoming TELNET service allow users at remote sites on the internet to log onto your BBS.
To set up incoming TELNET service, you must execute the "PL" command and designate some of your
"lines" as TELNET sessions. You do this by placing a "T" in the "modem type" for each line that you
want to use for incoming TELNET calls. If you want to allow five concurrent TELNET calls, then you
must specify a modem type of "T" for five different lines. In the "port" for each of the TELNET lines,
you can place any number between 1 and 2000 that is not already in use by another line.
5.6.3.5.3. Using Terminal Servers
An alternative method of providing incoming TELNET service is to connect the serial ports of
the BBS to terminal servers using null modem cables. The connections that must be made in the
null-modem cable are shown in Figure 5.1.3-1. For these lines, using the "PL" command, you should
set the modem type to "E", and set the port number as you would for any other serial ports. Modem
type "E" is the same as modem type "D", except that it does not wait for the initial carriage return, but
instead, initiates the logon process whenever carrier is detected. You may find this method preferable
when your system has a large number of incoming TELNET sessions, because it takes some of the
processing load away from your BBS computer placing it in the terminal server(s).
5.6.3.6. Internet Mail
This feature has not yet been implemented.
5.6.3.7. Usenet News
This feature has not yet been implemented.
5.6.3.8. FTP Service
This feature has not yet been implemented.
5.6.3.9. Internet Relay Chat
This feature has not yet been implemented.
5.6.3.10. Worldwide Web Service
This feature has not yet been implemented.
5.6.4. E-Mail Gateway
This feature has not yet been implemented.
5.6.5. Exporting to and Importing from Other Networks
Networking in Bulletron has been designed to send and receive messages at any time of the day
while other users are online. In a multi-user environment, particularly with paying subscribers, it may
be unacceptable to have the BBS terminate to allow networking. Some systems, however, may want to
network to non-Bulletron systems and are willing to terminate BBS operation briefly to do this. It is
possible to have Bulletron shut down at a specific time, run an external utility to extract messages from
Bulletron and make individual files, run a "mailing" program to send those messages as files to another
network, run another utility to load Bulletron messages received from the network, then restart
Bulletron. The following is a simple ".BAT" file which would do this:
:TOP
BBS ALL DOWN0400
IF ERRORLEVEL 25 GOTO MAILER
GOTO END
:MAILER
FROMORA \BBS\FIDO E11 'all echo msgs for E11
FROMORA \BBS\FIDO */* */ORA333 SRC 'all netmsgs for Ora333
DB 'external mailer program
TOORA \FIDO\NET*.MSG- SYSOP/FIDO1 ALL TCH
TOORA \NET\TOME.TXT SYSOP GUYY PSL "Network mail"
GOTO TOP
:END
EXIT
Bulletron currently provides two programs, FROMORA and TOORA, to create export and
import messages. Additional programs may be available from time to time to accom- modate other
networks as required. The following is a description of these programs so you can determine if they
will work in your network.
5.6.5.1. FROMORA File Creation Utility
FROMORA is intended to take messages from Bulletron and create disk files from them which
can then be transmitted to other networks. The file which is created from FROMORA has the message
heading information similar to the heading seen when a message is read, followed by the body of the
message.
FROMORA is controlled by parameters on the command line such as the following:
FROMORA PATHFILENAME FROMACCT TOACCT BOARDABRV
PATHFILENAME is the directory where the new files are placed. Some examples of
PATHFILENAMEs might be:
\OUTMAIL to put all files in directory "OUTMAIL"
\NET- to put all files in directory "NET"; the "-" would cause each of the
messages to be deleted after its file is created.
FROMACCT is the 4 to 8 character account code that the messages are from. It can be
followed by /"node" to select only messages from a certain Bulletron node. The
account code is checked against your user file and, if the account code is found,
the person's name is placed in the output. A "*" means get messages "from" all
accounts. A "*" in the node means ignore the node when selecting messages.
Some examples of FROMACCT might be::
SYSOP/* get all messages from "SYSOP" and any node.
GUYY/ORA1 to get all messages from account "GUYY" and node
"ORA1".
*/* gets all messages, regardless of "from" account and node.
TOACCT is the 4 to 8 character account code that this message is to. It can be
followed by /"node" to select only messages to a certain Bulletron node. The
account code is checked against your user file and, if the account code is found,
the person's name is placed in the output. A "*" means get messages "to" all
accounts. A "*" in the node means ignore the node when selecting messages.
Some examples of TOACCT might be::
SYSOP/* to get all messages to "SYSOP" and any node.
GUYY/ORA1 to get all messages to account "GUYY" and node "ORA1".
*/* gets all messages, regardless of "to" account and node.
BOARDABRV is the 3 character sub-board abbreviation for the sub-board where the
messages are to be found. TOFIDO verifies that such a sub-board does exist.
Because this program is intended to be run in a batch file and not attended, messages are added to
the "BBSLOGnn.DAT" file (numbers 5010) to indicate which files have been created and which
messages have been deleted.
Some examples might be:
FROMORA \TEMP */* */* GNL
FROMORA \NETTMP- */* */ORA62 SRC
FROMORA \BBS- SYSOP/* */* TCH
FROMORA \TEMP */* GUYY/* PSL
The first example will get all messages from the "GNL" (General Discussion) sub-board,
regardless of who they are to, or from, and put them into files in the "\TEMP" directory. The second
example will get all messages to anyone on node ORA62, from the "SRC" (Network Source)
sub-board, regardless of who they are from, put them on the "\NETTMP" directory, and delete them
from Bulletron after the files are created. The third example will get all messages from "SYSOP" on
the "TCH" (Technical Discussion) sub-board, regardless of who they are to, or what node they are
from, put them in the "\BBS" directory, deleting them from Bulletron as the files are created. The last
example will get all of the messages to "GUYY" from the "PSL" (Personal Mail) sub-board, regardless
of who they are from, and place them in files in the "\TEMP" directory.
The file names produced by FROMORA have the format "ORAnnnnn.bbb" where "nnnnn" is the
message number replacing blanks with "X"s for small numbers, and "bbb" is the board abbreviation for
the board that the message came from. Header information is included in the file. If the file already
exists, it is deleted and overwritten with the new information.
5.6.5.2. TOORA Message Insertion Utility
This program is the counterpart to FROMORA. It is intended to take files which have been
received over another network, and to create a message in the Bulletron message database. It is
assumed that the file only contains the message, not header information, so the header information is
supplied in the TOORA command line. There may be several executions of this utility for each board
or type of message that is received. The mailer program may also produce a batch file with the
TOORA command lines, one for each message received.
TOORA is controlled by parameters on the command line such as the following:
TOORA PATHFILENAME FROMACCT TOACCT ABRV SUMMARY
PATHFILENAME is the path and filename which can contain "wild card" characters and
may be followed by a dash to cause the file to be deleted after it has been loaded
into Bulletron. Some examples of PATHFILENAMEs might be:
\BBS\*.TXT to load all .TXT files from \BBS directory
NETLIST.DOC to load only file NETLIST.DOC from the default
D:\NET\*.LST load from another drive
NEWMAIL.NET- to load file NEWMAIL.NET and delete the file.
FROMACCT is the 4 to 8 character account code that originated this message. It can
also be followed by /node to include node information also. The account code
will be checked against the user file and if it exists, the name will be supplied.
Some examples FROMACCT might be::
SYSOP to indicate it is from the "SYSOP"
GUYY/ORA1 to indicate it is from "GUYY" on ORA1
TOACCTis the 4 to 8 character account code that this message is to, or it can be "ALL". If
it is to a specific account, be sure that the sub-board abbreviation which is entered
next is your "private mail" sub-board. The account code can be followed by /node
just like the FROMACCT. If the TOACCT is found in your user file, then the
name will be obtained from your user file, and the message will be marked as
PRIVATE. If it is a general message to all users, use "ALL" here.
BOARDABRV is the 3 character sub-board abbreviation where the message is to be
placed. TOORA verifies that such a sub-board does exist in your system. It will
not load messages to a nonexistent sub-board.
SUMMARY is the message summary which will be placed on the Bulletron
message. This field is optional. It can be up to 32 characters, if present, and
MUST BE ENCLOSED IN QUOTES ("Such as this"). If more than one message
is loaded via wild cards, then the same summary will appear on all the messages.
Since this program is intended to be run in a batch file and not attended, messages are added to
the "BBSLOGnn.DAT" file (numbers 5010) indicating what messages have been added, what files
have been deleted. Error messages are logged if the file is too big to fit into a single Bulletron message.
Some examples might be::
TOORA \TEMP\BB*.H SYSOP ALL GNL "Sample header files"
TOORA \FIDO\NET*.MSG- SYSOP/FIDO1 ALL TCH
TOORA \NET\TONE.TXT SYSOP GUYY PSL "Network mail"
6. Daily Operation
6.1.The Control Window
When Bulletron starts, you are presented with the "Control Window", as illustrated in Figure
6.1-1.
The first line describes which release of the software you are using and your node number. The
next two lines tell you statistics about system usage:
"Calls" is the total number of calls that the system received today.
"Time"is the total minutes that the system was being used by users. Since there are 1440
minutes in a day, the 3-user system shown above could be used 3 * 1440 or 4320
minutes total. The number of calls that the SYSOP logs on and the amount of
time that the SYSOP is logged on are NOT included in these figures.
"Callers" is the number of DIFFERENT users who have called today. This may differ from
"Calls" if the same user has called in more than once in that day.
"Nuser" is the number of new users who have set up accounts.
"Vis"is the number of users logging on with the "visitor" feature.
"Msgs"is the number of new messages entered, and
"Uplds" is the number of new files uploaded.
On the second line:
"Messages" is the total number of messages in the message file including help messages etc..
"Accounts" shows you two numbers. The first number is the total number of accounts in the
user file including system operator accounts. The second number is the number of
paid subscriber accounts on your system. These numbers are recomputed once
each day when the system purges dead accounts and messages.
"CPS"is the average characters per second that the system transmitted or received over
the last ten seconds.
"TPS"is the average number of task switches per second that the BBS program did over
the last ten seconds. If there is no one logged onto your system or all the logged
on users are waiting at a prompt for the last ten seconds, then this figure will be a
little more than twice the number of phone lines for which your system is
configured. If the system is actively being used, however, this number should be
above 2000. If it is less than 2000 when two or more users are active, then this
may be an indication that you need to upgrade to a faster computer.
"In Use" is the number of users that are currently logged on. This may seem obvious from
looking at the lower part of the screen, for systems with ten phone lines or less,
but for systems with hundreds of phone lines, the number of lines in use at any
moment is difficult to determine without this number.
timeThe final number on the second line is the current time of day. If you look at this
and see it is grossly in error, this may be an indication that your system has
crashed and must be rebooted.
The middle part of the Control Window shows each line, who IS on, who WAS on, or the system
status. When a user is online, the Control Window shows what his account, what board he is on, what
command he is performing, if any, part of his name and location, when he logged on, the flags set in his
account, and his access level. If a user calls the SYSOP with the /SYSOP command in chat, his line
will display in reverse video until he logs off or the SYSOP goes into SYSOP chat with him. If a
modem is not started, the line will be in high intensity. If a modem error occurs, the line will blink in
high intensity.
A partial menu of functions that can be performed from the Control Window is displayed. For a
complete list of functions, enter a question mark (?) at the prompt. These are the functions that can be
performed from the Control Window:
A (unlisted option) Start all phone lines. This is also performed by entering
"ALL" as a parameter when the system is started.
B Broadcast a message to all users. This allows you to send a message to all
users similar to the "CA ALL" command in chat. It is useful to announce that
the system will be shut down for backup or other reasons that the SYSOP
wants to broadcast to those users who are online. After entering "B",
Bulletron prompts you for the message to broadcast. It also prompts you for
the account code of the user to whom you want to send the message. If you
just press ENTER at the second prompt, then the message will be sent to
every user that us currently logged on.
C SYSOP available to chat. When a user calls the system operator to chat with
either the "C" or "/SYSOP" command, the system will normally inform the
user that the "SYSOP is not available to chat at this time". This does not
happen if "C" is entered or the system is started with the "CHAT" parameter
to tell the system that the SYSOP is available. The "C" command here
toggles "sysop available" mode. The third line of the Control Window will
display "SYSOP CHAT" if SYSOP available mode is active. If the SYSOP
is available, then when he logs on (unless he logs on with /invisi option) he
will be visible to other users. If this option is OFF, the SYSOP will default to
INVISIBLE when he logs on.
D Disconnect user on 1 line. This is a quick way to terminate a user session for
any reason.
E (unlisted option) Emergency, another earthquake! Forget about the modems
and logging off users, close the files and shut down right now! *** NOTE:
NEVER, EVER use CTRL/ALT/DEL, press a hardware reset button or turn
off power to the computer while Bulletron is running. Bulletron caches most
of its disk writes and does not flush its buffers until you shut down the
system. Turning off power without using a proper shutdown from the
Control Window will always corrupt your disk files. Although the files can
usually be rebuilt using utility programs that we provide to you, sometimes
they can not. Be careful, if the operating system gives you an "ABORT,
RETRY, IGNORE, FAIL?" prompt while Bulletron is running, that you
NEVER select "ABORT".
F (unlisted option) Fast page select - if you are running a BBS with a large
number of phone lines, say 200 or more, it can be an inconvenience to be
continually typing PgUp or PgDn to get to the page where the status of a
particular phone line is displayed. Using this function, you can move quickly
to any group of ten phone lines in the Control Window status display. Page
zero shows status for lines 1 through 10. Page one shows status for lines 11
through 20, and so forth.
G (unlisted option) Shut down the lines like the "L" function as users log off,
but take the phone off hook rather than just not answering.
I (unlisted option) SYSOP chat entry message - If you are monitoring a user's
session, and want to interrupt the user and enter a private chat with him, then
you can type CTRL/O and you will immediately enter private chat with the
user. As the user enters private chat, he sees a message saying, "You are
speaking to the SYSTEM OPERATOR." This function allow you to replace
"the SYSTEM OPERATOR" with your name.
J (unlisted option) Jump to last new user - Many system operators find it really
helps first time callers if a live operator monitors their first session and jumps
in with private chat using CTRL/O when the user seems to be lost. On a
system with hundreds of phone lines, receiving five or six new users each
hour, it can be difficult to find the first time callers. This function
immediately brings the session of the last first time caller to the foreground
so you can monitor his session.
L (unlisted option) Shut down those lines that are not already in use. This will
not terminate a user, but will shut the line down as soon as the user logs off.
Pressing any key will cancel the shut down so that you can use "B" to
broadcast another message to users still online if necessary. When all users
have logged off, the system will shut down with no answer, not off hook.
M (unlisted option) SYSOP mail status - This function allows you to quickly see
whether or not you have private mail waiting without taking the time to log
on.
N (unlisted option) Shut down system w/no answer. This will shut the BBS
down and log off any user who is still online. If a user calls in after the
system is shut down, the phone will ring with no answer.
O (unlisted option) Shut down one line only with no answer. This is used to
prevent the modem from responding while you use that telephone line for
another purpose.
P (unlisted option) Show Line/Port Status and reset the line. Used only for
diagnostics.
Q Shut down system w/busy. This will shut the BBS down just like the "N"
function, but if a user calls in after the system is shut down, then the phone
will still be off hook and the user will get a busy signal.
R (unlisted option) Repaint the Control Window.
S (unlisted option) Start one line only. Use this if you only want to start one
particular phone line.
T (unlisted option) Test the computer speed. This will run a test of raw
compute power of the computer. After pressing T, wait about ten seconds
and notice the tasks/second on line 2 of the Control Window. The
tasks/second is some measure of system capacity relative to other computers.
Pressing any key will terminate the test.
U Display line usage statistics. See section 6.1.2, "Line Usage Statistics" for a
detailed description.
V Reset idle lines. This will remove the right half of the status lines, which
shows the last user and time of last call. This can help you quickly see which
lines are not being used often.
W (unlisted option) This function prompts you for an account code, then opens a
window showing you what you would see if you were logged on and did a
"WA" command for that account.
X Stop and busy out 1 line only. Use this if you need to disable one specific
line for some reason. Bulletron will prompt you for the line number to stop.
Y (unlisted option) If someone has executed a command to page the system
operator, this function will bring that user's session to the foreground and
initiate a private chat as if you had typed CTRL/O.
Z (unlisted option) Manually blank the screen to prevent monitor burnin.
Manual screen saver.
? Display the that do not have the space to display while showing all the users.
= Allow the SYSOP to manually force networking to a specific node.
Bulletron will prompt for the phone line to dial out on and the node number
to dial. Forcing manual networking always goes into network chat, so the
sysop must control-K to abort network chat if desired. Once a network
connection has been established, Bulletron will NOT dial out automatically to
that system again on the same day. Multiple manual networking attempts can
be done, but automatic will be inhibited that day for that specific node to
avoid multiple calls when the messages have already been picked up.
You can monitor a specific user's session, by using the F-keys on your computer's console
keyboard. F1 displays line 1, F2 shows line 2, and so forth. You can split the screen to show monitor
multiple sessions at the same time by, pressing Fn to show line n, then Alt-Fy to ADD the window for
line y to the one(s) already displaying. Up to ten sessions can be displayed at one time. To return to the
Control Window, press your HOME key. Holding down the CTRL key while you type an F-key brings
the user's session into the foreground in the lower part of the screen so that you can still watch the status
of the other nine lines for that page, while watching detailed activity on one particular line.
If you, the system operator, want to log on locally, then press the function key for the line that
you want to use (usually the last line, the one without a modem), and then type CTRL/K or ESC to
actually log on just as a user would by way of the modem.
As the SYSOP, you can also access the Control Window commands remotely using the "Y"
command. If you shut the system down remotely using the L, N, or Q commands, then you will have to
physically go to the computer and restart it.
As the SYSOP, you can monitor any session remotely. Use the "Y" command to display the
Control Window remotely, then enter "F" and the line number that you want to view. Pressing
CTRL/K returns the SYSOP to his own window.
6.1.1. Special Control Window Hot-Keys
Control keys are entered by holding down the key marked [Ctrl] on your keyboard while typing
an alphabetic key. Thus, CTRL/K is entered by holding down the [Ctrl] key and pressing "K".
Similarly, Alternate keys are entered by holding down the key marked [Alt] and typing the associated
key.
[CTRL/O] Breaks into the middle of a user's session for SYSOP chat mode. "SYSOP
chat mode" is the condition when the user and the SYSOP are in direct
communication typing to each other. If you enable SYSOP chat mode, then
users can ring you by issuing a "C" command. You respond by pressing the
appropriate "Fn" key to bring the calling user's window to the foreground on
your console, then typing CTRL/O to break into the user's session. You can
also break in without being called, but you should use this judiciously, as it
can be an unnerving experience for new users. [CTRL/K] exits sysop chat
mode back into normal user mode. This only functions after the user has
finished logging on. You cannot break into chat mode while a new user is
setting up an account.
[CTRL/Y] To cause carrier loss and immediately disconnect whoever is logged on.
[HOME] Returns the Control Window to the foreground on your console.
[F1 - Fn] Allows you to view the activity on a particular line. If your system has more
than 10 phone lines, then you can use PgDn to move 10 lines down, and
PgUp to move 10 lines up.
[Alt-F1 - Alt-Fn]Allows you to split your console screen so that you can monitor two or more
users simultaneously. A user window, not the Control Window, must be
displaying before you can add another window to the display. If you wanted
to watch lines 1, 2, and 3, for example, press F1 then Alt-F2 then Alt-F3 to
show all three windows simultaneously. To go back to only one window,
press HOME or Fn.
[Ctrl-F1 - Ctrl-Fn]Allows you to split your console screen so that you can see the ten status
lines of the Control Window, while monitoring the detailed activity on one
specific line. A partial window opens for the specific line that covers the
Control Window function menu on the bottom ten lines of the screen. To go
back to the Control Window, press HOME.
[Z] Screen saver activation key. This will turn off the screen saver or turn on the
screen saver, depending on its current state. This can be overridden by the
"SSn" parameter when starting Bulletron. The value "n" indicates how long,
in minutes, before the screen saver activates and blanks the screen. A value
of zero disables the Screen Saver option.
6.1.2. Line Usage Statistics
The "U" subcommand, either from local Control Window or the remote display of the Control
Window using the "Y" command, displays statistics about the usage of your phone lines. The display
looks similar to this:
Lines 1 2 3 4 5 6 7 8 9 10
Min/line 20 150 79 68 26 53 0 0 0 0
Min in use 214 117 73 30 5 0 0 0 0 0
HOUR: 12 1 2 3 4 5 6 7 8 9 10 11 12
AM 134 100 0 0 0 0 60 75 150 180 240 350 375
PM 400 450 500 525 600 650 700 640 610 525 400 310 200
The first line shows the number of phone lines in your configuration. The "Min/line" line shows
the number of minutes a user was on each line. If your phone lines are in "hunt group" and users
always call the "pilot" number on line 1, then the numbers will be in decreasing order since line 1 will
get the most usage. If users do not call the pilot number such as when you have a 2400 Baud line
separate, the time will not be in any particular order, but you can determine how much time is spent on
the 2400 Baud line. The "Min in use" line tells you how many minutes at least one line was in use, two
lines, and so forth. In the above example, at least one line was in use for 214 minutes during the day,
two lines were in use 117 minutes during that day, etc.. The "Min/line" and "Min-in-use" counters are
reset at midnight or can be reset manually by using the "PXC" command. The three lower lines contain
counts of the number of online minutes spent in each hour of the day. The first of these three is just a
set of headings to help you see which hour is represented by each column. The first value of the second
line is a count of the number of online minutes used between midnight and 1:00 AM. The last value of
the third line is a count from 11:00 PM to midnight. These numbers are reset at each new hour, so at
5:00 PM the 6:00 PM value is from the prior date. The entire 6 lines are written to your system log file
every night at midnight also. The purpose of these statistics is to give you management information
about when the system is the busiest and when to add additional phone lines.
The maximum number for any hour is number of phone lines multiplied by 60 (minutes/hour). If
you find that your usage is close to the maximum during certain hours, you may want to consider
getting an additional line. Experience has shown, however, that the best time to add a phone line to
your system is when your total minutes used per day exceeds one third of the total minutes available
per day. For example, if you have four telephone lines, the maximum number of minutes your system
can be in use per day is 5,760. When a review of your system log shows that your total daily usage has
averaged more than 1,920 minutes per day, then you should add another phone line, because you will
be losing customers on account of busy signals.
6.2.The System Log File
The log file, "BBSLOGmm.DAT" (where "mm" is the month), contains a record of when each
user logs on, the counts of the number of calls and time used on each line for each day, and a record of
any errors that the system encounters. The format of the file is a printable ASCII file. You should
look at it periodically to see if there are any system errors or messages that you need to know about.
The format is fixed so that the date/time, message number, user account code, etc.., are always in the
same positions on the line. This allows you to write some of your own utility programs in BASIC,
dBase, or whatever language you like, to manipulate the data. Since this file is constantly having
information appended to it, it can grow to be very large. You should copy it on to a floppy disk and
delete it from the hard disk (using the DOS "DEL" command) when you do your normal weekly
backup.
The log contains many different types of records. An option within the BBUTIL2 program will
produce a series of reports from the log data, or you can write your own analysis program. The user
record contains some fields that need to be explained. A user record may look like this:
12/24/87 08:50 0021 SESSION ABCDEFGH 12/24/87 08:23 650 12 27 623 A 1
This means that account "ABCDEFGH" logged on at 8:23 on 12/24, logged off at 08:50, had 650
minutes in his subscriber account when he logged on, called in at 1200 Baud, was online 27 minutes,
had 623 minutes in his subscriber account when he logged off, and he was using ANSI graphics. The 1
indicates his call came in on telephone line 1. This provides an audit trail of subscriber time.
6.3.User and File Management
The system operator can modify or delete accounts remotely as well as locally. This is done with
a special command available only to SYSOPs and assistant SYSOPs. From the main system prompt,
simply enter "+" and the system will prompt you for an account to modify, or enter
"+ ACCT" where "ACCT" is the account code to modify,
"+ ALL" or those commands that affect all accounts, or
"+n ACCT" where "n" is one of the options listed below.
The "+" command can also be entered at the end of reading a message to alter the account of the
user listed in the FROM account of that message. This allows the SYSOP to change a user's account
without exiting the read command and doing a separate "+" command. Figure 6.3-1 shows the System
Management Command Menu, with detailed descriptions of each command listed below.
0 Change account code. This allows you to change the account code of any
user (except yourself), without logging on as that user. A warning is given if
personal mail to or from the account you are changing exists. If you change
an account code without first deleting all its mail, and some new user happens
to select that account code when he logs on, then he will receive all of the
orphaned mail. This function will not be executed if the account you want to
change is currently logged onto the system. If you are executing this function
remotely, you can use the "Y" command to disconnect a user before changing
his account code.
1 Delete the account. You will be asked to verify that you do want to delete the
account before proceeding. Once an account is deleted, it cannot be restored
(unless you had the appropriate backup option, but that is a time consuming
process). Note: you will not need to return to the menu and select "S" to
save changes after executing this function.
2 Set the access level. This allows you to set the access level on any account.
BE SURE THAT YOU DO NOT SET THE ACCESS LEVEL BELOW THE
ACCESS LEVEL OF ALL BOARDS. If you set the access level greater than
or equal to that of a subscriber and there is no time in the user's account,
Bulletron will assume that he is a subscriber who has let his account expire
and will automatically reduce his access level temporarily (it will not alter his
record, just the session limit) to the default. Therefore, do not set a
nonsubscriber to an access level as high as a subscriber. If the user's access
level is ZERO, Bulletron will send the user the FREELOAD message and
disconnect him, regardless of how much time is left in his subscription.
3 Set the SIGs. This allows you to change the list of SIGs (Special Interest
Group sub-boards) available to that user. Note that this is a 30 character
string: 10 SIGs and each SIG is identified by its 3-character sub-board
abbreviation. To add, change, or delete a SIG, you must type in all the
characters again. You can use the wild card character "?" as part of the SIG.
For example, "AB?" gives the user access to any SIG sub-board whose
abbreviation begins with "AB". "A??" gives the user access to any SIG
beginning with "A". "???" gives the user access to any SIG. Entering two
asterisks and a group number (such as "**S") gives the use access to all the
SIGs in that group. (See the discussion about groups in the "PB" command).
Note that Bulletron checks the access level BEFORE checking the SIG level.
So even if a user has a SIG listed in his SIGlist, he cannot access that
sub-board unless his access level is also high enough to access that sub-board.
If you want users to have access to SIGs REGARDLESS of access level, just
set the access level for that sub-board to zero.
4 Set user flags. Each user record contains 10 characters for flags. Only the
letters listed below are currently used by the system. The other letters and
numbers are not currently used by the system so they can be set to anything
by the SYSOP. For example, you may want to set a flag to "N" if you
received a bad check from a user to warn you not to take checks from him
again. Like the SIGs above, this is a 10 character string so adding, changing,
or deleting a flag requires you to enter all the characters again. The following
flag characters are reserved for specific purposes:
A Turn off billing. Do not charge the subscriber or deduct anything
from his account (only applicable if he subscribes by cents or
minutes.
B Bulletron will play a high pitch beep for 1/10 second to tell the
SYSOP when this user logs on.
C The account is a company account. Multiple instances of this
account may be logged on simultaneously and users of this account
are not permitted to use the "N" command to change any of the
account's settings.
D Suspend download/upload ratio checking for this account.
H Mark any messages added by this user or any messages with
comments added by this user as HOLD until the sysop can review
and release them.
I Make this account invisible when it logs on. This is most useful for
networking accounts.
M Bulletron will NOT prompt the account for any matchmaking
questionnaires.
S Give the account full system operator privileges. Note that, though
assistant SYSOPs (ASYSxxxx accounts) are allowed to use the "+"
command and change flags on accounts, the system will NOT allow
them to put an "S" flag on any account.
O If you place this flag on an account whose account code is of the
form "nnnnnORA", where "nnnnn" is a network node number, then
this account will be allowed to use the "+C" command to change
the last logon date and time for account "ORAnnnnn". This option
is provided to allow the system operator of a remote node to reset
the networking account for his system without giving him full
system operator privileges.
P, Y reserved for custom versions.
V The account has been "verified" and shows a "V" next to the user's
description.
Z Prevent the account from executing the "/CALL ALL" command.
Other characters may have meaning in the future. Numbers, however, will
never be used so you may use those for your own purposes.
5 Change the password. At times, you may need to lock a user off the system.
If you delete the account, he could log back on and setup the account again.
By changing the password on his account, you can prevent him from logging
on under that account. If you have the account purge logic turned on, the
account may be deleted after one month anyway. This could also be used if
the user forgets his password and you want to set up a new password for him
rather than tell him the old password.
6 Change minutes-on-today. The system records how much time a user was on
per day over several logon sessions. If the time exceeds the maximum
defined in the system parameters, then the user will not be able to log on until
the next day. The SYSOP can change the amount of time on today for a user
thereby allowing the user to be on longer or be on less depending on the value
set by the system operator. Bulletron will prompt for prime and nonprime
minutes.
7 Remove a questionnaire. This can function for a specific account or all
accounts. If you want to force a user to reanswer a questionnaire, delete it
here and he will be prompted to answer it again the next time he logs on. If
you change the questionnaire, you will want to delete all the questionnaires
for that board to force all users to reanswer it. The system will prompt you
for the sub-board abbreviation so that it knows which one you want deleted.
To delete all user replies after changing the questionnaire, enter ALL rather
than a specific account code. Note: you will not need to return to the menu
and select "S" to save changes after executing this function.
8 Change upload/download counts. If a SYSOP is using a download/upload
quota and the user uploads a garbage file to be able to download more, the
sysop can reduce his upload count or increase his download count to correct
the situation. Note that the upload count is used in the calculation of the
status index on the users "WI" line. (Status index is the sum of the number of
public message, public comments, and two times the number of uploaded
files.) The count is the number of kilobytes of data transferred, not the
number of files.
9 New verify quest flag: Set to "N" if you want the user to reanswer the verify
questionnaire, or set to "Y" if you do not want the user to have to answer it.
Bulletron sets this field to "Y" when the questionnaire has been answered.
A Set cents-remaining. If you are using subscriber logic by cents or minutes,
then enter the amount of money that the user advances you here in cents. If
the user gives you $25.00, enter 2500 and the money will be deducted from
here when he logs off. NOTE: THE SYSTEM DEDUCTS MONEY FROM
HIS ACCOUNT ONLY WHEN HE LOGS OFF OR HANGS UP. IF THE
SYSTEM CRASHES, IT WILL NOT CHARGE HIS ACCOUNT. This field
can also be used to define MINUTES if the subscribers are being charged by
minutes rather than cents.
B Set paid-to-date. If you are using subscriber logic by date, enter the date that
the user's account will expire, in the format "YYMMDD". If he logs on after
that date, the system will not recognize him as a subscriber.
C Set MSG Lastlogon date/time. The message lastlogon date/time
(YYMMDDHHMM format) determines what messages will display to the
user with an "RL" or "SL" command. It is sometimes useful for a network
node account to reset the message lastlogon date/time to a different date and
time to force prior echo messages to be retransmitted.
D Set the user's "class" code. "Class" code on each user is an expanded "board
separation". It allows up to 36 classes, "A" - "Z" and "0" - "9". If a user's
class is not a space character, the user will not show to users of a different
class. This provides even more separation than the board separation logic,
which still exists for ease of use and compatibility with older versions. Use
BBUTIL2 option "B" to reset all classes to nulls. Enter any invalid character,
such as a character less than "0" or greater than "Z", like "*" for example, to
delete the user's class code. A class of "?" will allow any user to see the user
with "?", and will allow the user with "?" to see any user. The "SYSOP"
account should be set for this class.
E Change the user's city and state. If you happen to notice that the user
misspelled the name of his city and/or state, you can fix them without having
to log on as the user.
F File management by path-id allows the system operator or an assistant
SYSOP to use the following functions.
1 List subdirectories for each sub-board
2 List path-id codes
3 Modify the download database entry
4 Show true directory for a path-id
5 Update the database from actual files in directory
6 Copy a file from one path to another (or across drives)
7 Move/rename a file within a path on the same drive
8 Delete a file within a path
9 Add a new file into a subdistrict. This will copy from one directory
(or from the floppy disk) to another directory and update the
download database of the destination with the size and description
as well. The source and destination directory must not be on the
same path.
See the section on "Creating and Maintaining Shareware Libraries" for
further details on the "+F" command. Note: you will not need to return to
the menu and select "S" to save changes after executing this function. The
"+F" functions can not be used to operate on any files in the directory from
which the BBS is started.
G Change a user's session controls. This is useful if the user accidentally sets
his session controls (with the "N" command, option "5" ) to add nulls and his
session is running very slowly. The SYSOP can then change the user's
session controls without having to log on with the user's account. When
changing the session controls, the way it is currently set is listed as the
default. ([Y]/N means that question is currently set to Y and pressing enter
will keep that setting at Y). The actual bits in this flags word are:
0x0001 enable screen pauses
0x0002 initial command R instead of S
0x0004 show menus before main command prompt
0x0008 show board introductions
0x0010 prompt for "next sub-board" if no msgs
0x0020 chat shell for novices
0x0040 confirm delete of messages
0x0080 block "/C ALL" commands
0x0100 do WO LONG during logon
0x0200 disable hotkeys
0x0400 do not erase pause line
0x0800 disable random messages
0x1000 do an "FC" command during logon
0x2000 disable all graphics
0x8000 help flags have been set
Use this table when trying to interpret the help flags displayed by the "WA"
command.
H reserved for a possible "help" option.
I This option sets the user's Kbytes uploaded, Kbytes downloaded, public
message count, private message count, and public message count to zero.
This clears the user's "status index".
J Change the user's name. If the user misspells his name, or puts something
for his name or handle that you find objectionable, then you can correct it
without having to log on as the user. "Manuel Noriega" logged onto our tech
support system once. It was obvious that whoever he was, the poor soul
apparently misspelled his name because Noriega was holed up in a church at
the time.
K Return to the main system prompt. Changes made to user accounts will NOT
be saved if you exit by this method.
L Change the user's personal description. If the user has misspelled some word
in his personal description, or used some word that you find objectionable,
then you can change his personal description without having to log on using
his account.
N Read through all the message keys and show the number of messages on
each sub-board. Note: you will not need to return to the menu and select "S"
to save changes after executing this function.
O Add cents or minutes to user's account. This option is similar to "+A", except
that it is a little easier to use if you don't have a calculator handy; you just
enter the amount of the subscriber's purchase and Bulletron adds it to his
cents/minutes remaining.
Z Display directory. If the "Z" is not followed by a parameter, then a directory
of all files in the default directory are displayed. If the "Z" is followed by a
parameter, then all those files in the parameter directory are displayed. For
example: "Z *.NEW" or "+Z *.DAT" from the main system prompt. You can
get a list of the files in any directory by prefixing the path such as "Z
\BBS\DOWNLOAD\*.*". After listing the files, this function shows the
remaining free disk space on drive. Note: you will not need to return to the
menu and select "S" to save changes after executing this function.
Y Delete a file. If the "Y" is not followed by a parameter, you will be prompted
for a file name. You will then be asked to verify that you are sure you want it
deleted. You can also enter the file name on the command such as "Y
BADFILE.DAT" or "+Y BADFILE.DAT" from the command prompt. Be
sure to enter the file extension as well as the file name. You can delete a file
in other directories by prefixing that path to the filename. The "+F"
command, function "8" is a better was of doing this because it updates the
Download Database as well as the DOS directory. Note: you will not need
to return to the menu and select "S" to save changes after executing this
function.
X Rename a file. You will be prompted for the old file name then the new file
name. This command will not accept a file name on the command line. Be
sure to enter the file name extension as well as the file name. You can also
"rename" a file from an upload to a download directory which causes it to be
"moved" and makes it downloadable. Both the path and filename must be
entered. The "+F" command, function "7" is a better way of renaming a file
because it updates the Download Database as well as the disk directory.
Note: you will not need to return to the menu and select "S" to save changes
after executing this function.
W Display any file. If the "W" is not followed by a parameter, then you will be
asked for a file name. Be sure to include the file name extension along with
the file name. The purpose of this command is to allow the system operator
to view verify questionnaires that have been save to disk. Note: you will not
need to return to the menu and select "S" to save changes after executing this
function.
V Copy a file. This option allows the SYSOP to copy files between the hard
disk and the floppy disk while the system is online. Be sure to give the drive,
complete path, and full file name to BOTH the "from" and "to" prompt. "To"
does NOT default to the "from" file name. While the file is being copied,
Bulletron displays the count of 9,000 byte blocks copied. The "+F"
command, function "6" is a better way of copying files from one hard disk to
another because it updates the Download Database as well as the disk
directories. Note: you will not need to return to the menu and select "S" to
save changes after executing this function.
6.4.Bulletins
"Bulletins" in the context of an Bulletron system are ASCII text files that are stored in disk files,
as opposed to being stored as messages in the BBS database, and are displayed to a user each time that
he selects a particular sub-board. They are similar in concept to the "MOTDxxx" messages that you
can post on your system's "utilities" sub-board. One of the reasons for using a bulletin, as opposed to a
"MOTDxxx" message would be if your system runs a DOS based door program, such as Trade Wars,
that creates a daily bulletin file of high scores for the previous day. Another situation might be a
company newsletter that gets edited by someone on a LAN workstation periodically. Bulletins may be
arbitrarily long, compared to the 9,000 byte limit for a "MOTDxxx" message, and there many be an
arbitrary number of them for each sub-board, compared to the single "MOTDxxx" message per
sub-board. The disadvantage to using bulletins over "MOTDxxx" messages is that they impose extra
processing overhead for disk I/O, because they do not take advantage of the BBS database' b-tree
indexing. Use them judiciously on systems with large numbers of users, because interactive users may
see hesitation in the system while the disk I/O is being performed.
Every Bulletron sub-board can have bulletins. You store them in directory "A" of each
sub-board. This is the file directory that would be accessed if a user executes a "F", "D", "V" or "U"
command and selects menu letter "A" when presented with the menu of file directories. If you want to
put bulletins on a particular sub-board and do not have a directory selection "A", you can create one
using the "PF" and "PD" commands. If a sub-board already has a directory selection "A", then you can
use it to store the bulletins, along with regular files. You designate certain files as bulletin files by
setting a flag on those files in the Download Database entries for those files.
The first step to setting up bulletins is to make sure that all of the sub-boards on which you want
bulletins to display have a directory selection "A". Use the "PF" and "PD" commands to create a
directory selection "A" for each sub-board that does not have one. Make sure that the access level for
directory selection "A" is low enough so that everyone who is supposed to see the bulletins can access
that directory. You can prevent certain users from seeing certain bulletins by setting access levels on
the individual bulletin files.
The next step is to place the ASCII text files that you want to display as bulletins in the disk
directories associated with directory selection "A" on each sub-board. Then log on to the system as
SYSOP, and execute "+F", function "5", to correlate the Download Database to the actual disk
directories. Each time that the system comes to a file that does not have a Download Database entry it
prompts you for the information in the database entry. When you come to the prompt,
Bulletin File (Y/N/F/P/G/H) [N]:
you can select one of the following:
"N" The file is not a bulletin.
"Y" The file is a regular bulletin. It will be displayed to every user having
sufficient access level to see the file, every time he selects that sub-board.
The user will be allowed to cancel the bulletin with CTRL/K, selecting "N"
for nonstop at a screen pause, or selecting "K" at a screen pause.
"F" The file is a forced bulletin. It will be displayed to each user only if it is new
since his last logon, but he will not be allowed to use "N" for nonstop or "K"
to exit the bulletin.
"P" The file is a regular bulletin, as in option "Y", but the file description from
the Download Database will be displayed instead of the file itself. This lets
you display a directory of bulletin files, which your users can view with the
"VA" command, if they are interested.
"G" The file is a regular bulletin, as in option "Y", but it is only displayed to users
who have selected ANSI or RIP graphics.
"H" The file is a regular bulletin, as in option "Y", but it is only displayed to users
who have not selected ANSI or RIP graphics.
The final step to setting up your bulletins is to enable bulletin logic for your BBS. On the
Extended Parameters Menu ("PXP" command), function "G", enter a "Y" to enable bulletin logic.
Displaying bulletins imposes the overhead of doing the equivalent of an "FB" or "FL" command each
time that a user selects a sub-board, even if there are no bulletins for that sub-board. Function "G" of
the Extended Parameters Menu gives you the option of eliminating this overhead if you wish.
6.5.Automatic Callback Validation
Bulletron provides a feature that lets you assign privileges to first time callers, if they are willing
to have their phone number validated by automatic callback. In many cases, people are less eager to
make prank calls to your system if they know that you have some positive identification on them.
Automatic callback validation can provide you with a certain degree of positive identification for a new
caller.
Automatic callback validation works by requesting the user to enter his phone number, after
which the system hangs up the phone, dials his number and validates his password to continue the call.
The phone number dialed is recorded permanently in the user's account record, and a message is sent in
private mail to the system operator, notifying him of the event. The call is also recorded in the system
log file. You can set up the callback feature to automatically assign new feature, time limit, chat time
limit, and download time limit access levels to the account upon successful callback. You can also
automatically assign new SIGs and flags to the account. You can set an upper access level, above
which, users are blocked from using automatic callback validation. This can ensure that no account can
use automatic callback validation more than once, unless you manually put his access back to first-time
caller levels. You can set a limit to the number of accounts that can use the same phone number for
callback validation, thus preventing someone with lots of time on their hands from staying on-line all
night by setting up fifty different accounts. You can restrict calls to non-toll calls on a per phone line
basis, or mark certain lines to block callback altogether.
There are three commands that you must use to set up automatic callback validation. First, with
the "PL" command, you designate which lines will allow callback. As you set up each phone line with
the "PL" command, the callback option gives you three choices:
"N" Prevent callback on that phone line completely.
"Y" Allow callback on that phone line.
"L" Allow local calls only; that is, callback on the phone line only if the first digit
of the phone number is not a "1" or a "0". Non-numeric characters are
stripped from the phone number before checking so that users can not fool the
system with leading blanks.
"M" Allow minimum long distance calls. With this option, the line will allow
phone numbers beginning with "0" or "1" to be dialed, but if the call is a
validation call, then, as soon as the account is updated, the system tells the
caller to call back using his own dime and hangs up the phone. If the "NT"
command is not being used for validation then long distance calls are allowed
to proceed uninterrupted.
The next step to setting up automatic callback validation is the Extended Parameters Menu
("PXP" command). Function "D" of the Extended Parameters Menu allows you to specify the function
of the "NT" command, as follows:
"N" Disable the "NT" command.
"Y" Allow users with a feature access level above a certain value to use the "NT"
command, but do not perform automatic validation when the command
succeeds.
"V" Use the "NT" command for automatic callback validation, adjusting access
levels, SIGs and flags on the account upon successful execution.
Function "E" of the Extended Parameters Menu sets the access level(s) for the "NT" command.
If you selected option "Y" for function "D" of the Extended Parameters Menu, then function "E" sets
the minimum feature access level required to use the "NT" command. If you selected option "V" of
function "D" of the Extended Parameters Menu, then function "E" sets both the minimum feature
access level required, and the maximum feature access level allowed.
Function "W" of the Extended Parameters Menu sets the maximum number of accounts that can
use the same phone number for validation. You can set this to zero if you want the number to be
unlimited, or set it to any value from 1 to 255 to impose a limit.
Finally, on the Subscriber Parameters Menu ("PX$" command), you use function "U" to specify
the access levels to be assigned upon successful callback, use function "V" to specify the SIGs to be
assigned, and function "W" to specify the flags to be assigned. In general, though you may raise a user's
feature access level upon callback to give him access to more sub-boards, or more files, you generally
want to keep his time limit access level lower if you are permitting long distance calls. One approach
that seems to work well is to let new accounts default to chat and download time limits of zero minutes
per day, and keep them invisible so that subscribers can not "/BRING" them into chat, (see function "2"
of the "PP" menu), then on successful callback, raise the chat and download time limit access levels to
allow 15 minutes of each of these activities and the total time limit access level to allow 45 minutes
(remember that most users will have used up 20-30 minutes of their first call finding the callback
validation feature, so your average long distance call will be 15-20 minutes per new account. If you
allow more than one account on the same phone number, as can be common for husband/wife pairs that
each want their own account, the system tells you all the accounts already using a phone number when
it notifies you, in private mail, of a new account using the number. The maximum number of accounts
it can report is about 1,100, because that is where the 9,000 character message size limit is approached.
It is important to keep in mind, especially if your system carries material of an adult nature, that
automatic callback validation is not foolproof. It will tell you the phone number that the person called
from, but it can not tell you if the person at the other end of the line is less than 18 years old. Voice
callback validation is still the best way of determining this.
6.6.Special SYSOP Main Commands
6.6.1. "WC DELETE"
An option on the "WC" command, "DELETE", is only accessible to the SYSOP. If you enter
"WC DELETE", at the main system prompt, Bulletron displays each user's account record from oldest
(oldest last logon date/time) through the most current. It shows complete information such as the
SYSOP sees with the "WI" command. It then prompts you with the message "Delete Y/N?". If you
answer "Y", the account will be deleted, and copied to the backup file if automatic backup ("PP"
command, option "F") is active. This allows you to review and delete any old accounts which are not
automatically purged due to their access level. It is generally a good idea to drop subscriber accounts
that have been inactive for more than a year so that your user file does not become cluttered with
account records of people who died, moved out of state, sold their computer, and so forth. If you do
this, you should also make that policy publicly known in your subscriber information message (to
account "SUBINFO" on your "utilities" sub-board).
6.6.2. "T" - Tutorial Command
The "T" command is the Tutorial/Teach/Demonstration command available to all users. The
purpose of it is to teach users, by demonstration, how to use your system. When a user enters the "T"
command, Bulletron displays messages "TUTOR1" through "TUTORn" from your "utilities"
sub-board. These messages must be linked together to have them all displayed.
There are several special codes that you can use in the tutorial messages to customize the tutorial
for each user:
XXXXXXXXXXXXXXXX (16 X's) is replaced with the date and time that would normally
show on the main system prompt.
YYYY (4 Y's) is replaced by the execution of the "WO" command
ZZZZ (4 Z's) is replaced with the "WM" command.
The purpose of this is to make the tutorial more pertinent to the user showing his own
information. Although we provide sample TUTOR1 through TUTOR6 messages with the software, it
is recommended that you create your own tutorial messages that reflect your own sub-boards, files,
optional database, doors, etc..
6.6.3. "DD filename" (Download to a diskette)
SYSOPs have an additional download command which automatically copies a file to a floppy
diskette in drive "A:". This avoids having to use the "+V" to copy a file to floppy, using the "+Y" to
delete the file, then the "+F", function "5" to update the download database. If you use this command
from a remote session, but don't have a floppy disk in the "A:" drive, your BBS will halt dead, with the
following message on the console screen:
Not ready reading drive A
Abort, Retry, Fail?
You will then have to physically go to your system, and press "R" (after putting a diskette in the
drive), or "F" (to cancel the operation), to resume operation of the BBS. If you press "A", instead of
"R" or "F", you will trash your BBS index files and have to run REBUILD2 to re-create them.
The advantage of using this command over "+V" or "+F" function "6" is that the "DD" command
is easier to use because it does not prompt you for a source path or a destination path. This command
also updates your Download Database to reflect the correct number of times that the file has been
downloaded and the last download date, whereas the former two commands do not. You can also copy
an entire directory by entering "DD *.*".
The "D%" Command is an alias for the "DD" command.
6.6.4. "UD filename" (Upload from a diskette)
SYSOPs have an additional upload command which automatically copies a file from a floppy
diskette in drive "A:". This is just the opposite of the "DD" command. As with the "DD" command, if
you use this command from a remote session, but don't have a floppy disk in the "A:" drive, your BBS
will halt dead, with the following message on the console screen:
Not ready reading drive A
Abort, Retry, Fail?
You will then have to physically go to your system, and press "R" (after putting a diskette in the
drive), or "F" (to cancel the operation), to resume operation of the BBS. If you press "A", instead of
"R" or "F", you will trash your BBS index files and have to run REBUILD2 to re-create them.
The advantage of using this command over "+V" or "+F" option "6" is that the "UD" command is
easier to use because it does not prompt you for a source path or a destination path. This command also
prompts you to enter a file description for every file you copy, and updates your Download Database.
whereas the former two commands do not. You can also copy an entire directory by entering "UD *.*".
The "U@" command is an alias for the "UD" command.
6.6.5. "E MASSMAIL"
The SYSOP can send the same private message to all users who have access to a particular
sub-board and who have logged on within a certain period. This is called MASSMAIL for "mass
mailing". Enter "E MASSMAIL" and the system will prompt for the number of days during which a
user must have logged on to get a copy of the message. The system will then prompt for the minimum
access level a user must have to receive the message. This allows sending messages to subscribers
only. It will then prompt you for the message as usual. However, it will create a copy of that message
to every user who has access to the sub-board you have currently selected (even though the message
itself will be placed on your "personal mail" sub-board) and who have logged in during the specified
period.
Caution: this feature could fill up a disk very quickly with an excessive number of messages as
well as slow down the performance of the system. This feature is available only to the SYSOP, not an
assistant SYSOP or users.
6.6.6. "E NEWUSERS"
This feature is similar to "E MASSMAIL" except that it only sends mail to new users. A new
user is defined as one that has logged on 5 times or less. This command will prompt for the number of
days during which a user must have logged on just as MASSMAIL does, and will check for the user's
access to the sub-board on which the message is placed. This command is only available to the
SYSOP.
An alternative to sending mail to all NEW users is to set up help file messages NEWUMSG and
NEWUMSGS. If these messages are present, they are automatically sent to new users AFTER their
first logon. Although they are system generated messages, the header information reflects the header
information of the message as it appears on your "utilities" sub-board (usually from SYSOP) and will
not be listed as a "system generated message". This feature provides a friendly personal message to
new users on their next logon. The difference between NEWUMSG and NEWUMSGS is that
NEWUMSGS is sent to users who are SEPARATED (who contain a SIG in their SIGlist matching the
board separation SIG defined with option "N" of the "PXP" command).
6.6.7. "%" - Purge messages/accounts
Bulletron normally purges messages and accounts each day at 3:00 AM. On those systems
running on an local area network, or to manually force purging at times other than 3:00 AM, simply
enter "%" to initiate the purge cycle. The purge cycle occurs on the highest line number. This is
normally the line which has no modem and is used by the SYSOP only. The purge then occurs at night
when the SYSOP is asleep and when it is not likely to interfere with users who call in at the same time.
If the top line is connected to a modem and is not a SYSOP-only local line, the purge may not be run if
a user logs in or the network dials out around 3:00 AM.
6.6.8. "PXR" - Refresh Vdisk and Prompts
The "R" option on the eXtended menu ("PXR" command) allows the SYSOP to manually refresh
the RAM drive copy of your "utilities" sub-board if the BBS was started with the VDISK parameter. It
also reloads the prompts (messages to account PROMPT0 thru PROMPT9) in case any of the prompts
have changed also. This refreshing activity is automatically done after the 3:00 AM system purge
process. It is only necessary to use this command if prompts or menus are changed and you want the
new ones to take effect immediately.
6.6.9. "Y" - Display Control Window Remotely
The Control Window, which normally displays on the local console, can be viewed remotely as
well. If an assistant SYSOP (accounts beginning with ASYS) enters "Y", he will also see the list of
lines, who is on them, and the status. This can be useful to check on a line to see if it is down, not
started, or stopped due to modem error. If the SYSOP uses the "Y" command remotely, he will also see
the menu at the bottom of the Control Window and will be able to use some of the Control Window
functions.
The SYSOP can enter "S" to start one line, "X" to stop one line, or "D" to disconnect a user on
another line. You can disconnect and shut down your own line, so be careful. Although you cannot use
the "L", "N", "Q", or "E" commands to shut down all lines, you can shut down each one individually
and, in effect, shut down the entire system making remote restarting impossible.
The SYSOP can also use the "B" command to broadcast a message to all users (same effect as
entering "/CALL ALL") and the "U" command to list the line statistics. To view another telephone line
remotely, enter "F" while in the "Y" command. You will be prompted for the line number to monitor.
To revert back to your own line, enter CTRL/K. A remote line cannot monitor the local console, and
the local console cannot monitor a remote line using the "Y" command. The local console should use
the "Fn" keys to monitor a remote line.
6.6.10. "PXC" - Changing the System Counters
The system counter menu allows you to reset the last message number and the total call count.
The only time you may need to reset either of these counters is when you are starting a new BBS, or
restarting a BBS after being "down" for a long period, and you want the counters to begin from zero.
Enter "PX" at the main system prompt then "C" on the Extended Features Menu, or, to save time, enter
"PXC" at the main system prompt. You will see the System Counter Menu. The only counters that can
be changed are the last message number and the total calls. The other counters are shown for
informational purposes only and will be reset by the system automatically.
System Counters
A - Last message# 11233
B - Total calls 65434
Total New users 340
Today's date 851201
L - Manually reset line statistics
R - Manually reset daily statistics
Q - Finished, update file
What option:
A Last message# - The message number can be from 101 to 99000. It will automatically reset to
101 when it exceeds 99000. The system also checks for duplicate message numbers on the current
sub-board before saving any message. NOTE: IF YOU RESTORE AN OLDER BACKUP COPY OF
THE BBPARMS FILE, THEN BE SURE TO INCREMENT THE LAST MESSAGE NUMBER TO
BE GREATER THAN THE HIGHEST MESSAGE NUMBER ON YOUR BOARD. Otherwise, you
could get two messages with the same message number on the same board which will create an error
and make the second message inaccessible.
B Total calls - This allows you to reset the total call count and the total new user count.
L Manually reset line statistics - This allows you to reset the line statistics if they were not
automatically reset at midnight. The line statistics are those numbers which show when you enter "U"
from the Control Window. Most of the fields in the system counters record cannot be changed and are
displayed for informational purposes only. The calls today and time today (minutes the system was in
use) are reset when the date, as read from the system clock, changes from "Today's date" as shown in
the record. "Total New Users" and "Today's Date" are not changeable. The "Total New Users" field is
used to tell the sysop how many accounts have been established in the lifetime of the board.
R Manually reset daily statistics - This resets the number of calls, callers, minutes online today,
and other daily counts that display on the top lines of the Control Window.
6.7.Special SYSOP Subcommands
6.7.1. "E@" - Make Message from Disk File
There are several subcommands that only the SYSOP can access. "@" is a subcommand of the
Enter command. It allows you to create a message, or a comment on a message, from a disk file. Be
sure that the disk file is not larger than the remaining message size. If you create the file off line using
a word processor, be sure that the file is an ASCII, or non-document file, not a word processor file or a
document file. If you use WordStar, for example, do not try to use the "E@" command to load from a
document file. Print the file to disk and load the print file.
6.7.2. Special Post-Read Commands
After you read a message, you are prompted with a number of options:
D Delete the message...
F Forward a message to the author of the message
C Add a comment to the message...
etc..
These are called post-read commands since they are commands that you can perform after
reading a message. The system operator has several post-read commands available that are not
available to users:
G Sometimes there may be two copies of a message on a sub-board, one
containing ANSI graphic escape sequences for users that answer "Y" to the
initial prompt "Do you want ANSI graphics" and one without ANSI
sequences. To avoid showing the non-ANSI message to the ANSI user and
showing the ANSI message to the non-ANSI user, the SYSOP can flag the
message as being an ANSI graphic message. The SYSOP would read the
message and at the post-read menu, enter "G". Bulletron will prompt you
with "ANSI Graphic Y/N/B". Enter "Y" if the message will only be
displayed to the users who are receiving ANSI message and do not show it to
non-ANSI users, enter "N" to show it non-ANSI users and not show it to
ANSI users, or enter "B" (the normal default) to show it to Both ANSI and
nonANSI users.
H As the system operator, you may desire to review all messages on certain
sub-boards for inappropriate information before allowing other users to view
them. If a "hold" flag is set on any sub-board ("see the "PB" command"),
then every new message, or message with new comments, on that sub-board
will be "held" until you read and approve it. An "H" will appear next to the
summary on a "held" message and "**HOLD**" will appear in the heading
of the message. At the end of the message, a reminder "Reminder: this
message is being HELD" will display to SYSOPs. You can enter "H" at the
end of the message to change its "hold" status. If the message is already
being held, then "N" or [enter] will remove the "hold" and update the
message date/time. Entering "Y" will retain the "hold" on a held message, or
put a "hold" on a non-held message. Entering "D" will delete the message if
you find it objectionable. Messages that are "held" are not visible to your
users, and will not be sent out over the network. This allows you to monitor
messages before the public sees them and before they can be sent out from
your system. Assistant SYSOPs, but not SIG-ops, can also release a "held"
message. Also, if a user has flag "H" in his account record (see the "+4"
command), then any new messages or messages that he adds comments to,
regardless of the sub-board "hold" flag, will be marked as "held". If you have
a problem user, then you can hold only messages which he affects.
I Make the message "read only". Bulletron prompts for a "Y" or "N" to make
the message read only or allow comments. There must be at least 500 bytes
remaining in the message to make it "commentable".
J Make the message anonymous. Bulletron prompts you to determine whether
this message is to be an anonymous or not.
L Force the message to link to another message. If a user posts several stories
in messages and you want to be sure that they are read in the proper sequence,
you can set the first one to link to the second one, link the second to the third,
and so forth, to force them to be read in order. You are prompted for the
message number to link TO. This means that you will probably have to read
the messages twice; once to jot down the message numbers on a piece of
paper, and the second time to set the links. The messages must be on the
same sub-board. Linking messages also be used to make a help message or
ANSI screen on your "utilities" sub-board that is longer than 9,000 bytes. To
break a link between messages, enter minus one instead of a message number.
M Modify the entire message. This allows the SYSOP to edit a message and its
comments after it has been sent.
N No-delete. Bulletron prompts to determine whether the system or the
originator can delete this message, or if it should only be deleted by the
SYSOP. Setting this flag on a message prevents it from ever being purged.
P Make a message public or private. Bulletron prompts for whether the
message is to be public or private.
R Reroute the message to a different account. This allows the SYSOP to route
a message to a different user to be answered. The TO account is changed, but
not the TO name so that the new receiver can determine that it was not
intended originally to him. This command also allows additional text to be
added as a comment to the message before it is rerouted, and whether a copy
of the message is to be retained in the original account. You can reroute a
message to a user on another network node by entering / and the node
number: for example, "SYSOP/ORA976" or just "SYSOP/976" to reroute
the message to the SYSOP of Bulletnet node 976.
S Swap the "TO" and "FROM" accounts just like adding a comment. If you
have two system operators and someone leaves a message to SYSOP1 but
SYSOP2 answers the message, then the "to" and "from" accounts are not
swapped because it was addressed to SYSOP1, not SYSOP2. SYSOP2 can
then use the "S" command to reverse the to/from so that the user will get the
message when he logs on again.
T Transfer to a different sub-board. This allows you to change the sub-board on
which a message is shown. You are prompted for the 3-character
abbreviation of the new sub-board that the message is to be transferred to.
You will then be prompted for "M" to move the message or "C" to copy the
message to the other board. Pressing Enter defaults to "Move".
V Set the message's "no Interruption" flag. Four values are recognized:
Y makes the message pause every 22 lines, regardless of whether or
not the user has screen pause enabled in his preferences. CTRL/K
is disabled so that the user can not escape until the message is
finished. If you put this flag on a private mail message, then
Bulletron will force the user to read that private mail message right
after the MOTD messages. Use this feature for urgent private mail
that the user must read, such as notification that his check bounced.
N makes the message normal again, allowing the user's preferences to
control screen pause and allowing the user to abort the message
with CTRL/K.
G inhibits screen pauses, even if the user has screen pauses in his
session preferences. This is exactly the opposite of the "Y" option.
You use it for animated ANSI graphic messages, in which there
tend to be a lot more than 22 lines of text to draw one 22-line
screen.
L applicable only to MOTD type messages (includes AMOTD,
MOTD1, MOTDbbb, etc..). This option makes the MOTD
message display to the user only it it has changed since his last
logon date and time.
X Delete the last comment. If there is a message on the system that has some
good dialogue going, but an inappropriate comment was added, the last
comment can be deleted. You can also use the "M" command (modify) to
delete a comment in the middle of the message.
% Create a disk file from a message. Just as "E@" allows you to create a
message from a disk file, the "%" command, here, allows you to create a disk
file from the message that you just read. The header information will be
included. The message is NOT deleted when a disk file is created from it.
This allows you to download a message to a file, modify it with your word
processor, then use the "E@" command to upload it again. Note: the header
of the message is also put into the file. If you upload it with "E@", you will
probably want to delete the first four lines, which are the message header,
telling when the message was entered and by whom. You can use this when
reading verify questionnaires, to archive them to disk files.
@ Add a comment to a message, but take that comment from a disk file. This is
similar to the "E@" command.
+ This allows the SYSOP to perform all the functions normally done with the
"+" command from the main system prompt, on the account marked as the
FROM account on the message. For example, if a user sends you a message
asking to have his access level raised, then you can press "+" at the end of the
message and raise the user's access level immediately. It is not necessary to
exit the Read command to do a "+" command. The new access level will take
effect immediately, even if the user is logged on.
NOTE: Most of the special SYSOP post-read commands loop back to the post-read prompt to
allow you to perform several operations on the same message.
6.8.Assistant SYSOP Privileges
Some installations may require additional personnel to manage a BBS. There may be a different
individual responsible for each sub-board, for example. Although there can be any number of system
operators (account codes beginning with "SYS"), an installation should only have one or two full
SYSOPs for management and security reasons. The other personnel should be ASSISTANT SYSOPs
(account codes beginning with "ASYS") or SIG-ops (account codes beginning with "SIG").
Assistant SYSOPs have most of the capabilities of full SYSOPs on the sub-board having a three
character abbreviation that matches the last three characters of their account code. For example,
ASYSORD would have nearly full system operator privileges on the "ORD" sub-board.
ASYS accounts:
can send "/TO" messages to invisible users
can send "/TO" messages to unverified users
can receive system generated "/TO" messages while invisible or nochat in effect
can include invisible and unverified users in chat groups
can use "DD" and "D%" commands
are shown file protections in "F" commands
can use "E@" commands
can post on order-entry sub-boards
can post non-form messages on form message sub-boards
can post public messages on read-only sub-boards
are permitted 999 carbon copies
can specify "from" user with "E@" commands
can use "SR" function for file descriptions to set the notify flag
can penetrate board separation and classes when sending private mail, and can send mail to
unverified users
are immune to users' accounts to ignore.
can access all outside features, regardless of access level
can access type "P" features
are not counted in the total users logged on during a day
see invisible users in the count of users on line during logon
see users in all classes and both sides of the board separation in the count of users on line during
logon
always have subscriber privileges
are not counted in the total calls or the calls today
are allowed to use "G&", "Q&" and "Z&", no matter how busy the system is
are allowed to use the "Z+" commands, which prevents the last logon date/time as well as the
message last logon date/time from being updated
can execute the "Y" command
can use the "+" commands
are shown "MENUS2" instead of "MENU"
are shown "+" and "%" in the system generated menu
are shown the true sub-board list, rather than "MENUB", to bypass hierarchical sub-board
menus in case the hierarchy is incorrectly set up and a group of sub-boards is not accessible
see additional information on "W" commands
can see unverified users
are the only accounts that can use the "RC" command on ORA122
are allowed to use wildcard searches ("RA xxx?" and "SA xxx?") on "RM", "RZ", "RA", "SM",
"SZ" and "SA" commands
are shown full account information on the "A" post-read function
can see details on anonymous messages
are shown whether or not a message is deletable
are shown whether or not a message is held
are shown the graphics restriction on a message
are shown the non-graphics restriction on a message
are shown whether or not a message is private if it is anonymous
are shown whether a message is read-only if a message is private or anonymous
can see held messages
get the held message reminder
can reroute messages
get special post-read prompts
can use the "Y" post-read function
get a special post-read menu
can modify messages on their own sub-board
can add comments to read-only messages
are shown an "H" to indicate that a message is on hold in the message summary
are shown a "P" to indicate that a message is private in the message summary
are shown message times of anonymous messages in message summaries
can do "RC" on personal mail board; for unprivileged users others this becomes "RM"
when logged in on the local console can include drive and directory information in file
specifications
never time out for inactivity on the local console
can pull up the Control Window menu using the "Y" command
can use the "U" and "B" functions of the Control Window menu, using the "Y" command
can see files that are private to other users using "F" commands
can see files with no Download Database record using "FT", "FQ" and "FD" commands
see last download date in place of upload date for "F" commands
see the account that uploaded the file, the access level, flags, bulletin status, notify flag for "F"
commands
can use the "UD" and "U@" commands
can upload ASCII files with more than ten consecutive blank lines
can use "WO" while invisible on ORA62 and ORA137
see full account info with "WA" and "WI" commands
can see their own initial logon date/time, password used at initial logon, and help flags
can see accounts below the verified access level
can see user accounts in all classes and on both sides of the board separation
Full system operators can, but ASYS accounts can not:
send "/TO" messages to users in any class
download files with missing or corrupt Download Database entries
download any file, regardless of file access level, account & password restrictions
download any file, regardless of sub-board and directory access restrictions
send MASSMAIL and NEWUSERS massmail
execute "L" commands regardless of access level and SIG restrictions of the "network source
sub-board
use "E" commands to enter messages on any sub-board, regardless of sub-board "E" access
level
use "E" commands to generate private mail from any sub-board, regardless of the "E" access
level of the private mail sub-board
force ALLFILES.TXT to be generated at odd times
be logged in on multiple lines at the same time
be immune to the time limits per phone line
be automatically always assigned a feature access level of 32001, and 999 minutes for all
session time limits for each logon
execute the "%" command to force a system message and account purge at any arbitrary time
see message details on anonymous sub-boards
see "ANON" instead of "FROM" in a message header, and shown the message link, if present
see "TO" information in a message header, whether or not the message is an autopoll, whether
or not the message is read-only, and whether or not the message is anonymous, for private or
anonymous messages.
accounts see account codes on anonymous message comments
see anonymous messages with "SA" and "RA" commands
see all messages
delete any arbitrary messages
modify messages on any sub-board
change anonymous state of messages
swap to/from accounts
use the "+0" command to change account codes
use the "+1" command to delete accounts
use the "+5" command to change users' passwords
use the "+Z" command
use the "+Y" command
use the "+X" command
use the "+W" command
use the "+V" command
use the "+A" command
use the "+B" command
use the "+O" command
set a "S" flag on another account
change SYS and ASYS accounts
use "G", "L", "N", "Q" and "E" functions of the Control Window menu using the "Y" command.
always search all sub-boards using "FG" commands
always search all sub-boards with "XG" commands
download files that are private to other users.
use "WC DELETE"
see account passwords
see anyone's address information when name/address is used instead of 3-line description
unconditionally see all sub-boards
Special assistant system operator accounts are formed by appending the three character sub-board
abbreviation for one of the sub-boards in your system to "ASYS". On the sub-board that matches his
account code, one of these special ASYS accounts can:
see special information in message summaries indicating whether or not the message is
anonymous, private, linked to another message, autopoll, or read-only
see any message on their sub-board; public or private
delete any message on their sub-board
see the author(s) of anonymous messages on their sub-board
see whether or not a message on their sub-board is on-hold
reroute any message on their sub-board to a different account
open and modify any message on their sub-board
use the "V", "H", "@", "%", "I", "T", "P", "N", "J", "G", "S", "R" and "M" post-read functions
Remember that all transactions with the "+" command, including deleting accounts, are noted in
the log file to indicate who altered an account. "SYS" and "ASYS" accounts can only be set up locally.
If a SYSOP receives a message which is to be answered by an assistant, the SYSOP can reroute it to the
assistant with the "R" post-read command.
6.9.SIG-op Privileges
A "SIG-op" is an person having an account code formed from the letters "SIG", and the three
character sub-board abbreviation of some sub-board in your system. The sub-board does not have to be
designated as a SIG in its setup (see "PB" command). The verify questionnaire, order entry messages,
and any system generated messages notifying the operator about uploaded files go, in private mail, to
an account code which is determined as follows:
Bulletron first looks for account "SIGnnn" where "nnn" is the sub-board abbreviation of the
sub-board where the questionnaire, order entry message, or upload was entered. If "SIGnnn" is not
found, Bulletron looks for an assistant SYSOP account "ASYSnnn". If that account is found, then that
is the account used as the receiver of the message. If "ASYSnnn" is not found, then Bulletron looks
for "SYSnnn" and uses that account instead. If "SYSnnn" is also not found, then Bulletron sends the
message to account "SYSOP".
"SIGnnn" -> "ASYSnnn" -> "SYSnnn" -> "SYSOP" in that order.
A SIG-op also has one special privilege, which is the ability to delete any message on the
sub-board matching his account code.
6.10. Feature Operators
Many outside feature programs ("doors") require a person to be designated as moderator of the
game or other activity that takes place. They identify the person who has operator privileges by a first
name and last name, and sometimes a password. In order to make the names used in outside features
unique, and guarantee that no single Bulletron account can have more than one player or character in
the game, Bulletron generates the first name for a player in an outside feature game from a user's
Bulletron account code, and generates the last name for the outside feature from the account's handle.
If the handle contains any space characters, then only the characters up to the first space character are
used. You designate the account that will act as the game moderator when you install the outside
feature ("PXO" command). Be sure to tell the person you designate that he may lose his special
privileges in the game if he changes his name or handle. Special privileges are limited to the execution
of the outside feature; they have no special privileges as far as Bulletron is concerned. This feature
only applies to "doors" that operate inside the same computer as Bulletron.
6.11. Backing up Your Data
As a system operator, you have a responsibility to your users to protect their data as much as
possible. You, therefore, have an obligation to perform periodic backups of the data. Bulletron files
should be backed up at least weekly, or even daily if there is a lot of activity on your system. You
should keep three generations of your backup diskettes or tapes. A "generation" is one complete set of
all of the files. For example: assume that you are using the operating system's "BACKUP" utility to
back up your data and that it currently takes four (4) diskettes to hold a complete set of your files. On
4/1 you backup to diskettes "A", "B", "C", and "D". On 4/8 you backup to diskettes "E", "F", "G", and
"H", and on 4/15 you backup to diskettes "I", "J", "K", and "L". On 4/22 you can reuse "A", "B", "C",
and "D" again. Do not copy over your last backup with the current backup, in the event that the diskette
becomes unreadable.
When your files are small enough to fit on one diskette, you can back up using COPY. Insert a
formatted diskette into drive "A", the floppy disk drive, and enter
COPY BB*.DAT A:
COPY BB*.IDX A:
When your message and user files have grown so that they will no longer fit on one floppy, you
must use a backup utility. If your system is quite large, you may want to consider installing two similar
hard disk drives and copying the BBS database on the primary drive to the secondary drive on a regular
basis. If you maintain a full working copy of your system on the secondary drive, then, when your
primary drive fails, you can simply switch the cables so that the backup drive becomes the primary
drive while you are getting the failed drive repaired or replaced.
NOTE: IF YOUR MOST RECENT BACKUP IS MORE THAN A WEEK OLD AND YOU
HAVE A SYSTEM FAILURE, IDK COMPUTER SYSTEMS WILL NOT BE ABLE TO GIVE YOU
SUPPORT. BACK UP YOUR FILES AT LEAST ONCE EVERY WEEK FOR YOUR OWN
PROTECTION AS WELL AS YOUR USERS.
6.11.1. On-line Automatic Backup
All of your Bulletron data files (BB*.DAT) should be backed up to floppy disks, tape, or some
other media at least once per week. In addition to this, Bulletron can create files to assist in the
situation where the files are destroyed and need to be recreated using the last backup plus any changes
made since the last backup. The backup level parameter of the "PP" command determines if, and how,
any additional data is saved. Valid options are 0 thru 4:
0 Do not save any record of changes made to the system. This allows the
fastest operation but provides no way to recover any information added since
your last physical backup.
1 Copy any DELETED messages or accounts (regardless of whether they were
deleted by the system, a SYSOP, or a user) to a file named
"XXyymmdd.BAK", where "yymmdd" are the year, month and day for the
file. A new file is created every day. Since the same file is opened and
closed with each addition, there is still a slight a chance that this file could be
destroyed in a system crash also, but it does provide some additional
protection while slowing the system down the least. It also gives you a way
to recover messages or accounts that were deleted accidentally.
2 Copy any ADDED, CHANGED, or DELETED messages or accounts to a file
named "XXyymmdd.BAK". This provides additional protection, but causes
more overhead. You MUST have this option, or option 4, below, in effect to
be able to completely recover from a hardware failure with no loss of data.
3 Copy any DELETED messages (not accounts) to separate files named
"XXXnnnnn.bbb", where "nnnnn" is the message number and "bbb" is the
sub-board abbreviation. This provides even more protection than options 1 or
2 above since the file is never open during a possible crash, but as more files
are added to the directory, the system will become progressively slower. A
FAT (DOS compatible) directory severely degrades in access speed when it
reaches a threshold of about 200 files. You can eliminate this problem by
using an HPFS directory under OS/2, but be aware that you should NEVER
format your boot partition as an HPFS drive. If you use this option, be sure
to copy the files off the hard disk and delete them every day to avoid
degrading the system.
4 Copy any ADDED, CHANGED, or DELETED messages (not accounts) to
separate files called "XXXnnnnn.bbb". This is similar to option 3, above, but
creates even more files.
After you enter the number to select the backup level that you desire, Bulletron asks you for a
"Path for full backup". If you enter a directory path here, then each time that the BBS program
performs its daily purge of dead accounts and messages, it will make clean, compacted copies of
BB*.DAT and BB*.IDX in that directory. If you leave this blank or enter spaces, then these copies of
the files will not be made. The copy process is done by the BBS2.EXE program at a low priority so
that users on line do not notice any impact on performance. Using this feature, you can keep your data
safe with backups and still stay online 24 hours a day, 7 days a week.
In addition to the usual hardware failures, another reason you may need to use the automatic
backup facility is is your system is accidentally started with a date way off in the future and a message
and account purge takes place. If you boot your computer but accidentally enter the wrong date, then
Bulletron will "think" that all of your messages and accounts are expired and, therefore, need to be
deleted. It will go through and delete all of your users and messages. What you would do in this case
(after screaming and tearing your remaining hair out) is to restore a prior backup copy of your
BBUSERS.* and BBSMSGS.* files and restore the rest from incremental backups, as described below.
Don't forget to correct the date on your computer before restoring your data.
6.11.2. Restoring a Backup
If your hardware does fail and you need to restore your system from a backup, you must first
restore your latest full system backup from floppy disks, tape, or wherever you put it. Then use
BBUTIL2 utility program to restore messages or accounts that were added or changed between the
backup and the time of your hardware failure.
When you select function "6" of the BBUTIL2 program, you are prompted for additional
information as follows:
Backup file name (XXyymmdd.BAK):
You are first prompted for which backup file to use as input. A new file is created every day, so
enter the complete name which includes the date. The program then asks you which operation to
perform using that file:
A Print contents of backup on printer
B Restore a specific account
C Restore all accounts
D Restore a specific message
E Restore all messages
F Open another backup file
Q Quit, finished.
Function "A" lists the contents of the backup file on your printer. This will be a mixture of
accounts and messages and allows you to see if the account or message of interest is in that particular
file.
Function "B" lets you restore a specific account if it wasaccidentally deleted.
Function "C" lets you restore all accounts in case you are trying to recover data that was
accidentally deleted or to update an old BBUSERS file with current information.
Function "D" lets you restore a specific message that may have been accidentally deleted.
Function "E" restores all messages in case you are trying to recover data that was accidentally
deleted or to update an old BBSMSGS file with current information.
Function "F" allows you to look at a backup file from a different date without "quitting" and
restarting the utility program.
To bring the restored copy of your system, which may be as much as a week old, up to the current
date, use functions "C" and "E" for each of the "XXyymmdd.BAK" files made since the last backup.
Start with the one that has the same date as your backup, and then work forward to the latest on you
have.
6.11.3. Off-line Full Backup
The most important files to save are "BB*.DAT". Saving the "BB*.IDX" files is also nice, but
you can completely rebuild these using the REBUILD2 program, with no loss of data. If your system
backs up to a tape backup system or a secondary hard disk, you can prepare a simple batch file to
automatically shut down your system at 4:00 AM each day and perform a full backup. An example of
such a batch procedure might be:
:AGAIN
BBS2 ALL DOWN0400
COPY C:\BBS\*.DAT D:\BACKUP
COPY C:\BBS\*.IDX D:\BACKUP
IF ERRORLEVEL 25 GOTO AGAIN
The BBS2.EXE program returns an exit code of 25 if it terminates because of the
"DOWNhhmm" parameter. If it exits for any other reason, then it returns an exit code of zero.
If you want to only perform a full backup on certain days, you can add a string of "Y"s and "N"s
to the "DOWN0400" parameter, such as:
:AGAIN
BBS ALL DOWN0400YNNNNNN
COPY C:\BBS\*.DAT D:\BACKUP
COPY C:\BBS\*.IDX D:\BACKUP
IF ERRORLEVEL 25 GOTO AGAIN
For client/server systems, you should not use the "DOWNhhmm" parameter. No BBS data is
contained on the workstations. Just let them run 24 hours a day! The data is stored in the server, and
the server automatically makes complete copies of the BBS data files at regular intervals. You can tell
the server to make backup copies as frequently as once each hour. The backup process takes about
three to five seconds. You can save the backup copies to tape at any time.
6.12. Utility Programs
6.12.1. BBUTIL2 - Miscellaneous Utility Functions and Reports
In the operation of a BBS, it is frequently necessary to have various utility programs to perform
some specific function. If there is a separate program for each function, then the code required to do
file handling is duplicated in each program. To minimize the number of utility programs, utility
functions have been combined into one program -- BBUTIL2. In the future, as needs require more
functions, they will be added to this same program rather than create new programs.
Normally, you start BBUTIL2 from an OS/2 command line prompt, then execute functions from
a menu. You can also include the utility function on the command line to run in batch mode such as:
BBUTIL2 H Q
to automatically run function "H". Entering the characters "(CR)" on the command line is the same as
just pressing ENTER during manual prompting.
For client/server systems, you run BBUTIL2L in an OS/2 protect mode session. The standard
version of the program (without the "L" at the end of its name) requires that you shut down the BBS
before running it. The client/server version can be used while the BBS is still on-line. When you start
BBUTIL2L, you must tell it the name of the server that is running the BBSRVR program. You specify
this as a parameter on the start-up line, as in:
BBUTIL2L SRVRELIJAH
to access a BBSRVR session running on a server named "ELIJAH".
BBUTIL2 displays the following menu:
1 Subscriber Report
2 Create Data File of User Info
3 Report of Downloaded Files
4 Unload BBSMSGS.DAT to Individual Files/Messages
5 Load BBSMSGS.DAT from Individual Message Files
6 Load Messages/Accounts from XXyymmdd.BAK Files
7 Mass Access Level Change
8 Tally System Passwords
9 Text Branching Utilities
A Analyze Log Data
B Reset Fields in User Records
C Create File of User Names and Addresses
D Delete all the Messages on a Board
E Load Users/Messages from Text Files
F Copy Messages to Another Board
G Tally all Responses on Matchmaker Questionnaire
H Load *.UTL to Help fFles
I Preload PathID-Filename-Description
J View Parameter File Keys and Delete Records
K Delete Messages by brdnnnnn
L Delete Users Sequentially
M Delete Messages Sequentially
N Move All Files in a Path
O Set Access Level for All Files
P Delete File Descrs. by Path
R Delete Individual User
S Save *.UTL Messages
T Export File Descriptions
Q Quit
6.12.1.1. Subscriber Report
This function creates a report of subscribers, how much time or money remains in their account,
and when their account expires. The report can be written to a file that you specify, or can be typed or
printed on your printer.
6.12.1.2. Create a File of User Info
Some system operators, who know how to program in dBase or some other language, frequently
want to be able to manipulate the user data with their own programs. This function will create a file
named USERS.DAT which is a simple sequential file containing user information. Each user's
information is contained on a single line (or record). The first record in the file is a heading which
shows what information is in each field. The data is "comma separated" for those programs that require
a comma between each data field.
6.12.1.3. Report of Downloaded Files
This function lists all the downloadable files first in order of how often the file was downloaded,
then in order by date of last download. This allows you to delete files which are not being downloaded.
6.12.1.4. Unload BBSMSGS.DAT to Individual Files/Message
This function creates a separate file from every message in your system. On rare occasions, when
your message file, BBSMSGS.DAT is severely damaged, you may need to do this, then delete the
message file, and reload it using function 5, below. Beyond about 200 files in a single directory, it
takes a FAT filing system a fairly long time to open a file, approaching five seconds as you get to 1,000
files. If your message file contains 5,000 messages, it will take about seven hours to execute this
function on a fast 486 system. The OS/2 HPFS (High Performance File System) can reduce this time to
about twenty minutes, but you should NEVER make your boot drive an HPFS drive because it easily
becomes impossible to boot your system or read the data if you don't shut down the HPFS drive
properly.
6.12.1.5. Load BBSMSGS.DAT from Individual Message Files
This function will read the current directory for any files with names beginning with "XXX" (to
retrieve all the "XXXnnnnn.bbb" files created by function 4, above) and will make them into messages
on your BBS. If you have the backup level ("PP" command, option "F") set to 3 or 4 so the system
creates a file for each message added, changed, or deleted, then you can load the messages back in with
this function. This function is the reverse of function 4, above. Like function 4, it can execute for
seven hours if you try to load 5,000 messages from a FAT (DOS compatible) directory.
Another use for this function is to load your message database with a set of messages prepared
off-line by a text editing program or, perhaps, another database tool, like dBase. Name your files
"XXXnnnnn.bbb", where "nnnnn" is the message number and "bbb" is the three character sub-board
abbreviation where you want the message to appear. See function "E", below, for an alternative method
of loading user accounts and messages from text files.
6.12.1.6. Load Messages/Accounts from XXyymmdd.BAK
This function is used to restore files made by automatic incremental backups, as in settings 1 and
2 for option "F" of the "PP" setup command. When you select function 6, you are prompted with an
additional submenu, as follows:
Backup file name (XXyymmdd.BAK):
A - Print contents of backup on printer
B - Restore specific account
C - Restore all accounts
D - Restore specific message
E - Restore all messages
F - Open another backup file
Q - Quit, finished.
You are first prompted for which backup file to use as input. A new file is created every day, so
enter the complete name which includes the date. Start with the file that was created on the date of the
full backup which you just restored, and then use each file sequentially into you finish the current file.
Function "A" lists the contents of the backup file on your printer. This will be a mixture of
accounts and messages and allows you to see if the account or message of interest is in that particular
file.
Function "B" lets you restore a specific account if it was accidentally deleted.
Function "C" lets you restore all accounts in case you are trying to recover data that was
accidentally deleted or to update an old BBUSERS file with current information.
Function "D" lets you restore a specific message that may have been accidentally deleted.
Function "E" restores all messages in case you are trying to recover data that was accidentally
deleted or to update an old BBSMSGS file with current information. Another reason you may need to
use this option is because of a bad date. If you run Bulletron with a date well into the future, then
Bulletron will "think" that the messages and accounts are over expired and therefore need to be deleted.
It will then go through and delete all of your users and messages. What you would do in this case (after
you set the correct date) is to restore to a prior backup copy of your BBUSERS and BBSMSGS files
and run this option to restore all the data that was deleted.
Function "F" allows you to look at a backup file from a different date without "quitting" and
restarting the utility program.
6.12.1.7. Mass Access Level Change
This function allows you to quickly change the access levels of all of your users on an individual
basis. The procedure is somewhat complex, so when you enter 7 to use this function, you will receive
help information explaining how to use this utility function in more detail. This is used when you want
to totally change the access level and SIG structure at an installation which already has an established
user base. You can also change some things and leave other access levels or SIGs unchanged by using
-1 for numeric fields or "*" in the SIG list of those fields that you want to remain unchanged.
6.12.1.8. Tally System Passwords
When a new user logs on, the system may (depending on whether you have the option activated)
prompt for a system password with the prompt "If you know what the system is about, enter the system
password." The system password that a user enters is retained in his record. This function reads the
entire user file and creates a report listing how many users have logged on with each password and how
many have become subscribers. It reports on all passwords that users entered, not just passwords that
you may have defined with the "PXS" command. It also lists the account code of the first person using
that password. This is useful if only one user entered a particular word and you want to know who
entered that word for a password.
6.12.1.9. Text Branching Utilities
This function performs those commands that build and test the data for the text branching feature.
Details of the functions are described in the chapter on text branching.
6.12.1.10. Analyze Log Data
This function analyzes one or more log files and selects certain records. It prompts you whether
to send the output, to a printer or a file, and the input log file name. Because there is a different log file
for each month, you must manually enter the name of the log file that you want to use. After reading
through one log file, you will be prompted for additional files. Pressing [ENTER] ends the search and
begin the reporting phase. The following reports are available:
Report on ALL users
Report on specific users (up to 10)
List all downloads
List SYSOP account changes (anything done with the "+" command on user accounts).
Serious error report
System usage report
Other log messages not contained in the above reports.
6.12.1.11. Reset Fields in User Records
This function allows you to switch from 3-line personal descriptions to name/address and back.
It also lets you clear certain numeric fields, for those sites switching from an older version of Bulletron
to the new versions. You will be prompted for:
1 - Numeric fieldsUse this option if you find large numbers in the users upload, download,
comments, messages, and access level fields.
2 - Description/Name/Address Use this option if you are switching from 3-line personal
descriptions to name/address or name/address to 3-line descriptions.
3 - Chat and Download Access Levels Use this option to set the chat time access level and
the download time access level.
4 - "Class" Code Use this option to clear the class code fields.
5 - Lines/screen to 23 Use this option when upgrading from Oracomm version 6 or less to
Bulletron.
6.12.1.12. Create File of User Names and Addresses
Those sites using the name/address functions (instead of the 3-line description) can use this
feature to create a simple ASCII text file of user's name, address, and telephone numbers. This text file
can then be input into your own database program to produce labels or other reports.
6.12.1.13. Delete all messages from a specific board
If you want to delete all the messages on a specific sub-board, this function can do it quicker than
reading and deleting each message individually. This function can save you some time when you want
to delete a sub-board with a lot of messages on it.
6.12.1.14. Load Users/Messages from Text Files
This function can take a simple ASCII text file of users or messages, and load it into your
Bulletron BBS data files.
To create accounts, create a plain ASCII text file in which each line, or record, contains the
account information for one user, in the following format:
Starting Number of
Column Columns Contents
-------------------------------------------------------------
1 8 account code
9 8 password
17 20 name or handle
37 20 city and state
57 30 SIGs
To load the BBS files from your text file of users, simply select option "1". You will be
prompted for the access level to assign to each of the users that it adds. You will then be prompted for
the file name of the text file which BBUTIL2 should read to get the data. If an account in your text file
already exists in the BBS files, it will NOT be added or updated.
To load messages from a text file, make a plain ASCII text file with records separated by a line of
eight dashes (-). It takes a minimum of three lines in your text file to define one message. The first line
contains the sub-board abbreviation, message date, "from" account and "to" account, in the following
format:
Starting Number of
Column Columns Contents
-------------------------------------------------------------
1 3 sub-board abbreviation
4 10 date and time in YYMMDDHHMM format
14 8 "from" account code
22 8 "to" account code
The second line of each message record contains the message summary, up to 32 characters. The
third line begins the message text. Use as many lines as you like, but be sure that the total length of the
message text does not exceed 9,000 characters and that each line is 72 characters or less. End each
message record with a line of eight dashes. To put messages on your system, select option "2". You
will be prompted for the starting message number you wish to use. The number must be larger than
999 and less than 99999. The message number should also be larger than the last message number
which displays with the "PXC" command. You should use the "PXC" command to update the next
message number after loading the messages also. You can mix messages for several sub-boards within
the text file. If you were loading messages about cameras, cars, and stamps for instance, you would
want three sub-boards probably with abbreviations "CAM", "CAR", and "STP". You could then load
all your messages into a single text file starting each message with "CAM", "CAR", or "STP", or you
can make three text files and run BBUTIL2 three times. Whatever the highest message number is when
you are finished loading, it is advisable to use the "PXC" command on-line to update the message
counter with the next available message number. You may want to have a skeleton file containing only
help files, and reload the messages and users every week.
6.12.1.15. Move Messages to a New Board
This function is useful to rename a sub-board, change the sub-board abbreviation, or move all the
messages from one sub-board to another. Use the "PB" command when the system is on-line to create
the new sub-board, then go off-line and use this function of BBUTIL2 to move the messages over, then
go back on-line again and use the "PB" command to delete the old sub-board.
6.12.1.16. Tally Matchmaker Responses
This will read through all the matchmaker responses for a specific sub-board and create a table of
entries, 30 X 16, showing the counts of that response in the questionnaire.
6.12.1.17. Load *.UTL to Help Files
If all of your help messages, menus, and prompts are on disk in separate files and all the files
have the extension ".UTL" (which probably matches the sub-board abbreviation for your "utilities"
sub-board), then you can use this function automatically load all of these files into your "utilities"
sub-board. When it places the new messages on your "utilities" sub-board, it also removes the old
copies of the messages and creates a file on disk for each one. These files have the same names as the
"to" account codes for the messages and extensions of ".001". If your disk directory already has ".001"
messages, then it uses a file name extension of ".002", then ".003, and so forth. This saves having to
enter "E@" filename, etc.., then "RA", delete, etc.., for every file. If you make an ANSI or RIP graphic
screen that is longer than the 9,000 byte message size limitation, don't give it a second thought.
BBUTIL2 will automatically create as many additional messages as are needed to hold your file and
link them together. When you look at your "utilities" sub-board, you may see messages addressed to a
pseudo-account named "AUTOLINK". These are the extra messages generated automatically by
BBUTIL2. Conversely, when BBUTIL2 saves the old messages to disk it links them back together into
single files.
6.12.1.18. Preload PathID-Filename-Description
This function loads the file desctiptions in Bulletron's download database from an ASCII text file
that you can prepare off-line using a text editor. Each line of the text file creates a description record
for one file in the Download Database. Put the four character path-id for path where you put the file in
columns 1 through 4 of each record. Put the file name and extension in columns 5 through 16. If the
file name and extension are less than twelve characters, including the separating period, then space fill
the file name and extension on the right. Begin the description of the file in column 17. The
description can be as long as you like, to a maximum of 9,000 characters. Your text editing program
will probably limit you to 254 characters per line. The record ends and BBUTIL2 expects a new record
to start, at each carriage return in the input file. If you want to indicate where line breaks should be in
your description, put line feed characters (CTRL/J), without carriage returns in the text.
You can also use this function to automatically load in file descriptions stored in "FILES.BBS"
files on your hard disk or CD-ROM. When these description files are present, there will be one in each
directory of the disk or CD. BBUTIL2 will search all of the paths that you have defined for your
system, using the "PF" command, and whenever it finds a file named "FILES.BBS" in one of them, it
will create or update the entries in the Download Database using the information found in the
"FILES.BBS" file. Only files that actually exist in that directory are updated; if "FILES.BBS" contains
descriptions for files that are not really there, then they are ignored.
This function updates the date and time of upload for Download Database entries, so that, the
next time that your users log on, the files will appear as new using the "FC" and "FL" commands,
because the files are new to your system, even though they may be several years old.
6.12.1.19. View Parameter File Keys and Delete Records
This command should never be needed, but it is provided to allow direct deletion of records from
the BBS parameters file. The key to each record is displayed in ASCII and hexadecimal format, in the
first six bytes of each record, and Bulletron asks you whether or not to delete the record. The Bulletron
Professional Developers' Kit, which is sold separately, explains the format and contents of each of these
records.
6.12.1.20. Delete Messages by brdnnnnn
This command should never be needed, but it is provided to allow viewing and deleting records
in the BBS message file when the board (brd) and message number (nnnnn) are known. Occasionally,
after a power failure, when you run REBUILD2, it will display error messages or just fail trying to
rebuild the data file. The primary key for the message file is the 3-character sub-board abbreviation
and the message number (the first eight bytes of each record). REBUILD2 should display the primary
record key when it encounters an error, or just before it fails. Delete the problematic message using this
function.
6.12.1.21. Delete Users Sequentially
This command should never be needed, but it is provided to allow viewing and deleting records
in the BBS user file sequentially. The user account code will be displayed in ASCII and hexadecimal
format, in the first eight bytes of each record, and BBUTIL2 will prompt to delete the record or display
the next record.
6.12.1.22. Delete Messages Sequentially
This command should never be needed, but it is provided to allow viewing and deleting records
in the message file sequentially.
6.12.1.23. Move All Files in a Path
This function scans through the Download Database and changes all occurrences of one path-id
to a different path-id. It does not move or copy any of the actual files.
6.12.1.24. Set Access Level for All Files
Although you may have certain files hidden from some users by placing them in directories
which are only visible from sub-boards which those users can not access, if a user knows the exact
name of a file, he may be able to download it by virtue of the fact that Bulletron does search out files
automatically if they are not found on the currently selected sub-board. If you have enabled the system
to automatically produce an ALLFILES.TXT file which users can download, then unprivileged users
will have the exact file names. This function can be used to quickly set the access level for all files in
your system so that only users above a certain access level can actually download them. Then, if there
are some files that you do want to make available to non-priveleged users, you can log on to your BBS
and use the "+F 3" command to set the access level for those files lower.
6.12.1.25. Delete File Descrs. by Path
This function allows you to quickly remove all of the records in the Download Database
referencing a certain path-id. You can use this to recover disk space in the BBDOWNLD.DAT file
after deleting a path-id from your system. If provides an option to allow you to view each file
description and selectively delete those that you do not want. You might want to use this after loading
up your Download Database from FILES.BBS files on a CD-ROM, using function "I" to hide certain
files that your users might find objectionable .
6.12.1.26. Delete Individual User
This function can be used while the system is off-line to delete the account record for a user, all
mail from or to that user, and all matchmaker response records for that user.
6.12.1.27. Save *.UTL Messages
This function performs the inverse of BBUTIL2 Function "H". It reads through your "utilities"
sub-board and creates a file from each message it finds there. The files will be named with the name of
the "to" account for the message, and a file name extension of ".001". If a ".001" file for that message
already exists, then it will try to make a ".002" file, and so forth. You can use this function to quickly
create a complete set of "*.UTL" files that reflect your BBS. Of course, before doing this, you should
be careful to delete any "*.001" messages, then afterwards use
RENAME *.001 *.UTL
from a n OS/2 command line prompt to prepare the files to be used by BBUTIL2 Function "H".
6.12.1.28. Export File Descriptions
This function performs the inverse of BBUTIL2 function "I". It creates a flat ASCII text file
from your Download Database, in which each record consists of the path-id in the first four columns,
the file name in the next 12 columns, and the file description beginning at column 17. If you plan to do
massive editing of file descriptions, then you may find it convenient to export the Download Database
with this function, edit it with your favorite text editor or word processor, then reload the finished result
using function "I".
6.12.2. REBUILD2 - Index File Creation
If you lose power to the computer or some other tragedy occurs which causes the BBS files to
become corrupted, run this utility and the index files will be reconstructed. Any time that Bulletron
terminates abnormally, the index files, which are cached in RAM until the BBS shuts down, are not
written back to the disk and the files are not closed properly. If you get any of the C-Tree errors while
the BBS is running, then run REBUILD2 to see if that fixes the problem. To run REBUILD2, simply
enter
REBUILD2
at an OS/2 command prompt.
For the client/server version, you must stop BBSRVR before running REBUILD2.
6.12.3. COMPACT2 - Data File Compaction
The b-tree (balanced binary tree) database engine used in Bulletron does use space vacated by
deleted messages. However, space can still be wasted. Consider the following scenario. A 200-byte
message has a comment added making it a 250-byte message. Since the database engine cannot put the
record back into the same location, it deletes the 200-byte message and adds the 250-byte message to
the end of the file. A new 150-byte message is later added and is placed in the area vacated by the
200-byte message. Since it is unlikely that there will ever be a 50-byte message, those 50 bytes are
wasted. If this process occurs hundreds of times every week, then a significant amount of wasted space
can accumulate in the message file. The COMPACT2 utility should be used periodically to compress
the file and remove the wasted space. Before running COMPACT2, be sure to back up the files. It is
recommended that COMPACT2 be run after doing your normal weekly backup. If there are bad record
headers in your message file, indicating that free spaces exist where they, in fact, do not, the
COMPACT2 program can magnify this damage, making your message file unusable. Make sure that
you do not delete the old message file before you are sure that the new one is free from errors. If your
message file does become corrupt in such a way that you can not compact it, you have three
alternatives:
1. Use BBUTIL2, function "4" to take the message file apart into individual files for each
message, delete the old message file, and load your messages back into a virgin copy of the
message file (from your release diskettes). This process can take twenty hours or more if you
have a large number of messages.
2. Send a copy of your message file to IDK Computer Systems, and for $95 we will patch it
manually to fix the record pointers. Turnaround time can be a little as one hour for this
process if you transmit the file to us by modem.
3. If you feel comfortable working with hexadecimal (base 16) arithmetic, then you can probably
patch the files yourself. Full instructions are given in section 6.13.
In most cases, however, running the COMPACT2 program will remove any inconsistencies in
the internal record headers, making working files from ones that did not work before. You can compact
each file by entering the following:
COMPACT2 BBPARMS
COMPACT2 BBSMSGS
COMPACT2 BBUSERS
COMPACT2 BBMMANS
COMPACT2 BBSUBQU
COMPACT2 BBADBPL
COMPACT2 BBDOWNLD
REBUILD2
at an OS/2 command prompt.
Note that REBUILD2 must be run after running COMPACT2 to recreate the index files. Backup
files (files named with the data file name and extension ".BAK") are created for each of the files
compacted and may be deleted with the OS/2 delete command when you are certain that the files are
intact.
6.13. Repairing Damaged Data Files by Hand
In certain catastrophic situations, BBS data files may become damaged in such a way that the
REBUILD2 program is unable to reconstruct them. The primary purpose of the REBUILD2 program is
to construct the index (".IDX") files, but it will also repair some types of minor damage to the data files
as well. In some cases, however, damage to the data files is so severe, that human intelligence is
required for their reconstruction. In the event that one of your BBS data files should become damaged
in such a way that the REBUILD2 program ends in a fatal error trying to reconstruct the data file, this
information should be sufficient to allow you to manually reconstruct the file to the point where
REBUILD2 can run to completion.
The most common cause of file corruption of this sort is a power failure during the middle of a
write operation. Every update to a data file involves several disk writes to different parts of the file to
maintain linked lists and pointers required for rapid file access. If power is lost when some of those
write operations are incomplete, then subsequent use of the file will result in data being written to the
wrong locations, compounding the problem.
The second most common cause of file corruption is having data files and index files out of sync
with each other. The BBS programs use the index files to locate records in the data files. If you restore
a data file from backup, or copy in a data file, without copying in the corredponding index, then the
BBS programs will write records to the wrong locations and destroy your data. When in doubt, the
index files should always be considered expendable. They can be deleted and rebuilt by the
REBUILD2 program at any time.
There are two types of data files used by Bulletron: those with fixed length records and those
with variable length records. They are quite different in structure. To manually reconstruct the file(s),
you must have a sector editor program that lets you modify the contents of binary data files on the disk.
We recommend a sector editor program named SEDIT, which is part of GammaTech Utilities (TM).
GammaTech Utilities can be purchased for about $150 from:
SofTouch Systems, Inc.
Workstation Division
1300 South Meridian, Suite 600
Oklahoma City, Oklahoma 73108
The fixed record length data files used by Bulletron are:
BBUSERS.DAT
BBMMANS.DAT
BBFREF.DAT
BBFNODES.DAT
The variable record length data files are:
BBPARMS.DAT
BBSMSGS.DAT
BBSUBQU.DAT
BBADBPL.DAT
BBDATBAS.DAT
BBDOWNLD.DAT
*** IMPORTANT NOTE ***
*** IMPORTANT NOTE ***
*** IMPORTANT NOTE ***
It can not be overstressed that, if you make any changes to any of the BBS data files by hand,
then YOU MUST DELETE THE CORRESPONDING ".IDX" FILE(S) AND RUN REBUILD2. The
BBS programs rely on the integrity of the index files to locate the records in the data files. If the index
files and data files get out of sync, then read operations will return garbage and write operations will
permanently destroy your data.
6.13.1. Fixed Record Length Format
Each fixed record length file begins with a header record of known size, then data records placed
one right after the other in the rest of the file. There will usually be some unused space at the end of the
file that has been pre-allocated by the database engine for adding new records. The length of the initial
header record for each of the data files with fixed length records is given in the table below:
File Name Record Length Header Length
------------------------------------------------------------------------------------------------
BBUSERS.DAT 1024 2048
BBMMANS.DAT 128 2304
BBFREF.DAT 68 204
BBFNODES.DAT 337 674
Within the header record, the 32-bit number that indicates the last byte used for file data is at
offset zero. The 32-bit number that indicates the offset of the last record deleted is at offset 4. The
32-bit number that indicates the offset of the last byte written in the file is at offset 8, and the 32-bit
number that indicates the total number of active records is at offset 28.
6.13.2. Variable Record Length Format
As in the fixed record length data files, variable record length data files have a space reserved at
the beginning for control information. This reserved area is, however, always 287 bytes long. The first
data record always starts at an offset of 287 bytes into the file. Each record in a variable record length
file is prefixed by ten bytes of control information. This ten byte record header is::
Offset Length Contents
-------------------------------------------------
0 2 Record Mark
2 4 Offset to Next Record
6 4 Length of this Record
The number stored in the "record mark" field can have one of the following four hexadecimal
values:
Value Meaning
-----------------------------------------------
FAFA Active Record
FBFB Empty Block
FDFD Deleted Record
FFFF End of File
Knowing the byte offset into the file of any record header, the byte offset of the next record
header is computed by adding the "offset to next record" word to the byte offset of the current record
header. Any time that the "offset to next record" word and the "bytes in this record" word differ, that
indicates that there is an empty block between the records that may be used for writing another record,
or squeezed out using the COMPACT2 utility program.
One common error that can occur is when an "offset to next record" word is less than the "bytes
in this record" word. Another common error is when the word that is supposed to begin a record header
is not one of the four acceptable values for a record mark. In general, it is not possible to completely
automate the recalculation of record headers because human intelligence is required to determine the
location of the next record by interpreting the data.
6.13.3. SCANLINX - File Structure Analysis
SCANLINX is an analysis tool that we provide with Bulletron, that you can use to study the links
between records in the variable record length data files used by your BBS. It may become necessary
for you to manually reconstruct these links in the event of a catastrophic failure, like a power failure, or
a BBS program started with one or more index file(s) out of sync with the corresponding data file(s).
SCANLINX will read through any variable record length data file and generate a report that will
show you if, and where, bad links exist. The report is stored in a file named "SCANLINX.LOG". This
is a plain, ASCII, text file which you can print or review using your favorite text editing program. In
the report, it will show you, in decimal and hexadecimal, the offsets of all the record headers that it
finds, the values in the record marks, the indicated byte offset of the next record, the length of the
current record, and the first few bytes of the record. Using this information, you can then use a disk
editing program like SEDIT to go directly to the problem area and correct the bad record links.
You execute SCANLINX form an OS/2 command prompt by entering:
SCANLINX file
where "file" can be "BBPARMS", "BBSMSGS", "BBSUBQU", "BBADBPL", "BBDOWNLD" or
"BBDATBAS". The meaning of the information reported in SCANLINX.LOG will be obvious after
reading section 6.13.2, above.
6.13.4. SEDIT Example
SEDIT, as mentioned above, is part of a package named "GammaTech Utilities", from SofTouch
Systems, Inc. SEDIT is a simple program that displays the contents of any disk file in hexadecimal
numbers, and lets you modify them. There are many other programs that perform the same function,
most of them written for the DOS operating system, including DEBUG, but we are most familiar with
SEDIT, so we will illustrate disk file repair in terms of a program with which we are familiar.
You start SEDIT from a command line prompt by entering the following command:
SEDIT file
where "file" is the full file name, including the ".DAT" file name extension, of the file that you wish to
inspect or modify. SEDIT will them display the first half of the first sector, sector 0, of the file. To
view the second half of the sector, press the END key. To go back to the first half of the sector, press
HOME. You can move the cursor around any displayed sector data using the cursor arrow keys.
If you press the PGDN key, SEDIT moves one sector ahead in the file. If you press the PGUP
key, it moves back one sector. The current sector number is displayed in hexadecimal in the upper right
corner of the screen. Be careful not to confuse a full screen of data with a sector. A disk sector is 512
bytes. A full screen of data for SEDIT is 256 bytes. You must use the END key to get to the second
half of a sector, as PGDN skips over the second half, taking you to the next sector.
Along the left margin of the screen, SEDIT displays the offset into the sector of the first byte
displayed on each line. To compute the actual offset of any displayed byte in the file, you must
multiply the current sector number (shown in the upper, right corner of the screen) by 512 (200
hexadecimal) and add the offset within the sector. If you compute a new byte offset into the file, you
must divide that offset by 512 to compute the sector number for the sector in which that byte is found.
As an example, consider the following excerpt from an actual SCANLINX.LOG file produced from a
BBSMSGS.DAT file.
Examining offset 357463(57457)
Record mark found = FAFA
Offset to next record = 4175(104F)
Record length = 4056(FD8)
Key value = UTL45197
Examining offset 361648(584B0)
Record mark found = FDFD
Offset to next record = 11374(2C6E)
Record length = 0(0)
Key value = UTL45107
Examining offset 373032(5B128)
Record mark found = FAFA
Offset to next record = 209(D1)
Record length = 209(D1)
Key value = DYM41264
In this example, we found an active record at byte offset 357463. Dividing 357463 by 512 tells
us that we would find the beginning of this record at offset 87 in sector 698. By adding the offset to the
next record, 4175, and 10 (the length of the record header) to 357463, we know that the next record
header should be at offset 361648. This would be at offset 176 (hexadecimal) in sector 706. Because
the record length for the first record shown in the example , 4056, is less than the offset to the next
record, 4175, we know that there are 119 unused bytes at offset 351519. These unused bytes will be
combined with the 11374 bytes in the deleted record that follows if one of the BBS programs needs to
write a record of 11493 bytes or less in that file.
In some situations, the REBUILD2 program will report the hexadecimal offset of an
inconsistency when it finds one. In other cases it will not, but careful study of a SCANLINX report
will reveal it. Either way, once you identify the location of the damage, you can compute the sector
containing the damage and PGDN to it in SEDIT. To modify file data using SEDIT, you must use
ALT-E to enter edit mode. After making your changes, before moving on to another sector, you must
use ALT-W to write the changes back to the file, making them permanent. SEDIT also provides a
search function that can help you locate record headers and other data that you know to exist in the file.
SEDIT is a fairly simple program. Learning can happen quickly during use, by way of its built-in help
function.
As always, whenever you finish modifying a BBS data file using SEDIT, be sure to delete the
corresponding index file and run REBUILD2 to rebuild it, or you will probably end up with a worse
mess than you started with as soon as you start up one of the BBS programs.
7. Technical Support
For sales and technical support for Bulletron of OS/2, contact:
IDK Computer Systems, Inc.
129 Cambridge Street
Syracuse, New York 13210-2205
Modem # (315) 471-2970
On-site service is available for OS/2 users @ $495.00 per day plus travel and living expenses. A
minimum retainer to cover five days will be required for all new accounts. Voice support is available
to for $5,000 per year, flat fee. Modem support is available via NASIX BBS, (315/471-2970) free of
charge. Expect 2 - 3 weeks turnaround.
7.1.Problem Reporting
Most of the situations which system operators report cannot be duplicated in a test environment.
That is not to say that they did not happen or are a figment of someone's imagination. Strange things
happen under specific conditions and unless those conditions are duplicated exactly, the situation will
not reoccur. If a problem can be duplicated in a test environment, it can almost always be fixed
immediately. If it cannot be duplicated, the problem will be printed on hard copy and will go into a file
called "unsolved mysteries" in case anyone else reports a similar situation which can be duplicated
later.
Please follow these steps when reporting a problem and include this information:
1. What version of OS/2, what serial port hardware, what serial device drivers, and what make
and model of modems are you running?
2. Describe the result or situation which you found. EXAMPLE: Empty message gets sent to a
user when cntl-K is used.
3. Were there any messages at the bottom of your Control Window, when the problem occurred,
or any error messages in your system log within the past 24 hours?
4. MOST IMPORTANT: List specific steps exactly, step by step, character by character, to
reproduce the result.
EXAMPLE 1:
Step 1, Enter E
Step 2, Enter the account code. Only seems to happen when to an account and not to ALL.
Step 3, When it asks for the summary, enter cntl-K.
Step 4, Go to the private mail board and look for the msgs to that account and you will find an
empty msg from you just entered.
EXAMPLE 2:
Step 1, A user logs on and is forced off for excessive time.
Step 2, The user logs back on immediately and gets the message that he is denied access to the
system. This is critical. If he does not log on until the next day so he is not DENIED then his account is
correct.
Step 3, The date/time in his record is now blank.
Step 4, The 3:00 AM purge now deletes him.
EXAMPLE 3:
Step 1, Sysop chat (C on control window) must be ON.
Step 2, Sysop notify must be on so the bell rings when a user comes on.
Step 3, Only 1 user must be online. It doesn't occur when more than one are online.
Step 4, The only user online logs off with Z& so it does not disconnect but logs on with a
different account. At the at the logon when it rings the bell, the system locks up.
These examples illustrate how obscure a bug can be without all the specific steps to reproduce it.
If you can not provide exact steps that cause the problem every time, then don't waste your time
reporting it.
5. Additional questions which may help:
How many users were online, how many is your system set for (the USERS parm may change the
maximum it was compiled to have)?
Does it happen only locally, only remotely, or both?
Does it happen only for a sysop account or any account?
Does a certain number of users have to be online for it to happen?
Are there any other conditions which appear to be required to make it occur?
6. Using the steps that you wrote down in #4, recreate it on your system at least twice.
7. Now go to a DIFFERENT computer (just as would be done in a test environment) with
different set of data (maybe a backup of a week or so ago), enter the steps from #4 and see if
you can recreate it. If the same thing happens, then it should be recreatable. If not, double
check your steps, copy the data from your first computer to this computer and see if it happens
again. If it does, it is data dependent and you will need to send a copy of your files to recreate
it here. If you cannot recreate it now, then it probably should go to the "unsolved mysteries"
file.
Some common problems which you could check:
Modem or multiport board malfunction. (If you are running a commercial multi-user line system,
you should keep spare modems and multiport cards on-hand.)
7.2.Common Questions New SYSOPs Ask
Q. "How can I create a message from a text file?"
A. Prepare the message off line with your word processor. Be sure to use non-document mode or
route the printed output to a disk file and use that output file. Do not use the word processor text file
which contains special characters and commands for the word processor. Then enter "E@" on the
sub-board you want the message posted. You will be prompted for the account. If it is a help file, enter
the appropriate help file name and the system will display "Account not found, assuming category" and
continue. Type in the message summary. Then you will be prompted for the file name. Be sure to put
in the file extension such as TESTFILE.TXT
Q. "How do I create a text file from a message?"
A. Read the message that you want to have copied to a text file. Then use the "%" command at
the end of the message to copy it to disk. The message will not be deleted from the BBS. Be sure to
enter the file extension if you want one on the file name.
Q. "How do I delete a comment?"
A. Read the message that you want to change. At the end of the message when the system
prompts for the post-retrieve menu, you will see the subcommand "X". Entering "X" will delete the last
comment on the message. If you want to delete a comment other than the last one, you can read the
message and use the "M" command to Modify the existing message. After entering "M", you will get a
prompt the same as you get after entering a message. Enter "L" to list the line numbers, then use the
"D" command to delete those lines containing the comment which you want removed.
Q. "I don't want to leave my printer on all the time to display the log. How can I stop the
logging?"
A. Use the "PP" command, system parameters menu, option "B" and set printer on to "N". This
will cause the information which was going to the printer to be put into a disk file named
BBSLOGmm.DAT, where "mm" is the current month.
Q. "How do I chat with a user?"
A. After the user has logged on, NOT DURING NEW ACCOUNT SETUP, you can press
CTRL/O to break into SYSOP chat mode with the user. You should also do this if the user enters "C"
to call the SYSOP into chat. No matter where in the user's session he is at, just enter CTRL/O to
interrupt it. To break out of SYSOP chat and let the user continue his session or log off, either the user
or the SYSOP can enter CTRL/K (the universal command for returning to the main menu).
Q. "If a user is entering obscene messages, how can I disconnect him quickly?"
A. Press CTRL/Y and you will disconnect him immediately.
Q. "How do I get a printed copy of one of the messages or of a user list?"
A. Pressing CTRL/N while at a prompt will toggle the printer on and off just as CTRL/P does
under CP/M or MS-DOS. Note, however, that you must have told the system that the printer was on
using option "B" of the parameters menu in the "PP" command. If you have that set to "N" to route the
log to a disk file, the CTRL/N function will write to disk, not to the printer.
Q. "I have the computer in my office and the bell from the users calling me into chat is annoying.
How can I turn off the bell?"
A. Use the "PP" command to set option "Z" in the system parameters menu to "Y" to disable the
bell. The screen will still display the call, but the bell will not sound.
Q. "I am using the BBS in my business and the personal description line is not relevant. How can
I suppress it?"
A. In the system parameters, "PP" command, option "L" controls the description lines. If you set
that option to "N",then Bulletron will not prompt users for the description and it will not show the
description to users when they do a "W" command. If you want to suppress the "M" and "W"
commands as well, simply set the access level for those commands very high FOR EACH
SUB-BOARD (using the "PB" command).
Q. "How do I change the LOGO or Message of the day?"
A. The LOGO displays to the user before he enters his account code during logon. The
Message-of-the-day or MOTD will display after he has logged on and before he has selected any
sub-boards. To change these messages, select your "utilities" sub-board and enter "RA LOGO" or "RA
MOTD" for the message of the day. After reading, it if it existed, delete it with the "D" post-read
command. Now load the new one which you created off line with your word processor by entering
"E@ LOGO" or "E@ MOTD".
Q. "How do I change the help messages?"
A. Prepare the help message off line using your word processor. Determine the name of the help
message as specified in the section entitled "Special Messages" in this manual. Select your "utilities"
sub-board and move the old help file by reading it and answering "D" on the post-read menu. Now
load the new one which you created off line by entering "E@" followed by the special message name.
The system will display the message "Account not found, assuming category" and then prompt for the
summary and file name of the text file containing the new help message. This also applies to the
messages used as introductions to each sub-board and to the match questionnaires.
Q. "How do I force the user to get a Summary when he enters a sub-board?"
A. Use the "PB" command to set the initial command on any or all sub-boards to an "L" or "M".
The "M" is used only on sub-boards which can have personal mail. The "L" should be used on all
sub-boards where there will frequently be new messages added. The "N" option is used if there will be
very little activity on the sub-board such as the "utilities" sub-board. This will only determine whether
the user gets a summary, and if so is it an "SM" or "SL". To force the user to read the message rather
than just get a summary, each user would individually have to change their own option with the "N"
command. There is no way for the sysop to automatically force an "ARM" or "RL" to all users.
Q. "A message was entered on the wrong board. How do I move it to the proper sub-board?"
A. First, be sure you know the three character sub-board abbreviations for all of your sub-boards
as you define them with the "PB" command. Then read the message. On the post-read menu prompt,
enter "T" to transfer the message. You will be prompted for the board abbreviation of the new board
that you want the message to be posted on. This will automatically remove it from the current
sub-board.
Q. "How do I delete an account?"
A. The system will automatically delete any account who has not logged on within the last month
and whose feature access level is below that of a subscriber. If you want to delete someone anyway,
use the SYSOP "+" command, option 1. The information about the user will be displayed and you will
be asked to verify that you do want to delete him.
Q. "How do I just delete the match questionnaire for an account?"
A. The match responses are maintained separately for each sub-board. Use the "+" command,
option 7 to delete the questionnaire for a specific user. You will be prompted for the users account
code and the three character abbreviation for the sub-board on which the questionnaire is active. If you
change the questionnaire and need to delete those responses for all users, you can enter ALL for the
user account code when you are prompted for it. If you change your questionnaire and want everyone
to reanswer it, use the "+7" command again, but enter ALL instead of an individual account code.
Q. "Must I have networking installed?"
A. No. Use the "PXL" command to set all your network nodes for manual dial only and
networking will not occur.
Q. "When I start the BBS, it sends out some modem commands, then it shuts itself down. I can't
log on to change the modem commands."
A. Your modem is not returning a valid return code so the modem commands may be wrong.
Your modem must return a zero after the command is sent. Start Bulletron using the NOMODEM
override:
EXAMPLE: C>BBS NOMODEM
This tells Bulletron there is no modem port, then you can log on to fix the modem commands.
Q. "A user drops off and the system does not detect loss of carrier".
A. Store "&C2" in the modem's nonvolatile RAM.
Q. "My modem does not answer the phone or shuts down after several attempts"
A. Although many modem manufacturers claim to be "Hayes compatible", some are not. The
commands that are supplied with the system do work on Hayes modems, but yours may be slightly
different. If you are not using a true Hayes modem, check your manual for any different commands.
Also check that the initial Baud rate is supported by the modem you are using and that the cables are
properly connected. Bulletron sends the modem the commands and expects a zero return code back
from the modem. If the modem does not return a zero within five attempts, Bulletron will shut down
that line. Check with your Bulletron Tech Support BBS for messages from other SYSOPs with similar
modems to see what they had to do. As specific info about each modem obtained, it will be posted on
Bulletron Tech Support. The phone number for your Bulletron Tech Support BBS is: (315) 471-2970.
Q. "When the modem attempts to dial out to network, I can hear the dial tone and I hear the tones
from the modem dialing the number, but the tones to NOT break dial tone and the number is not
dialed."
A. Some telephone companies charge separately for touch tone service. If you have not paid for
touch tone service and your dialing code is "ATDT" (where the second "T" tells the modem to use
touch tones rather than pulses), the tones will be ignored. Change your dialing prefix code to "ATD" or
"ATDP" to dial with pulses rather than tones, and it will dial correctly.
Q. "I try to load a new questionnaire using "E@" but it can't find the file."
A. The text file that you are loading is probably not in the same directory as the BBS program, or
you are not specifying the correct file name extension. Some word processors append a default
extension to a filename if you do not enter one. Be sure you are on the Utility/Helpfile board when
issuing the "E@" command.
Q. "I get the message ERROR IN QUESTIONNAIRE. DO A MQ every time someone uses the
M command."
A. There is an error in the way that your questionnaire is formatted. Be sure there are no
extraneous asterisks (*), parentheses ()), or colons (:) in the message. Check your format with the
sample shown in "How to write a match questionnaire". Be sure there are no blank lines at the
beginning of the questionnaire.
Q. "I have a subscriber system but when I raise a subscriber's access level, the system changes it
back to the default access level."
A. A subscriber must have a positive value in the cents/time remaining field if you are charging
by cents or minutes, or he must have a paid-to-date greater than today's date if you are charging by date.
If the value is zero or less, or if the paid-to-date is zero or less than today, the system assumes that the
subscriber has allowed his account to expire and will change the access level back to the default. In a
subscriber system, you cannot have a user with an access level equal to or greater than that of a
subscriber unless there is time in his account or has a future paid-to-date.
Q. "I want to monitor users on lines 1, 3 and 5 at the same time. How do I do that?"
A. Press function key F1 to monitor line 1, then hold down the ALT key while pressing F3, then
hold down the ALT key again while pressing F5. To display the control window again, press HOME
or to display a single line, press the function key for that line. You can display the Control Window
while monitoring lines using the CTRL function keys.
Q."I am running a dating board and I want to separate the gay users from the straight users. How
can I do that?"
A.Create a SIG such as GAY and give your gay users access to that SIG. Use the "PXP"
command, option "N", to define that SIG as the separation board. A user with access to SIG GAY will
only display to other users with that access, and users without access to that SIG will only show up to
other users without that SIG.
Q. "I am running a technical support sub-board and do not want the matchmaker command to
show. How do I suppress any reference to it in the menu?"
A. Set the special feature option (SF) in the board definitions ("PB" command) to "N" on ALL
sub-boards. If there are no matching questionnaires anywhere, the command will not display on the
menu.
Q. "When someone calls in, they get the message - Due to technical difficulties, the system is
temporarily down. Please call back later. Why can't callers get on?"
A. During the initialization phase of starting Bulletron, some error messages were displayed and
you pressed [ENTER] to continue. Bulletron will let the SYSOP on to correct the problems, but it will
not let any users online. A common situation on 3-user systems is that there is only one modem
attached to the computer, but Bulletron thinks there should be two modems (COM1 and COM2). Use
the "PL" command to set the unused line to a port value of -1.
7.3.Common Ways Users Try to Hack the System
Since it's appearance on the commercial market in 1985, no one has ever successfully gained
unauthorized access to a Bulletron BBS. Sure, there have been instances where assistant SYSOPs who
proved to be not as trustworthy as they ought to be, gave out passwords to their friends, but the integrity
of the software stands firm. Here are a couple of the more clever things that people have tried along the
way to make it look as though they had hacked the software.
7.3.1. Phony Subscriber Status
When Bulletron displays user information using "W" commands, it places a currency symbol ($)
to the left of the first line of personal description. By placing a space in the first character of his
name/handle, starting each of the last two lines with a space character, and placing a currency symbol in
the first character of the first line of personal description, a nonsubscriber can make himself look like a
paid subscriber. As system operator, it will be obvious to you that the account balance is zero and the
paid-to-date is not set or expired.. You can eliminate this kind of deception by using the "verified
access level" feature, "PP" command, option 2.
7.3.2. Forged Message Signature
When a user adds a comment to a public message, Bulletron prefixes the comment with two
blank lines, then a header line that indicates the date, time, and author of the new comment. Because
messages are free-form, there is nothing to stop a user from placing two blank lines and text that looks
like a comment header in the middle of his comment text. As SYSOP, you can still sort out the true
author, by use of the "X" post-read command. If you start removing comments from the end of a
public message, and find that two of the comments disappear together, then this is what has happened.
A. Appendix A - Modem Setup
Most modems in current production are modeled after the Hayes Optima. If your brand of
modem is not listed here, that does not mean it won't work. It just means we haven't gotten around to
testing it yet. Study the setup for the Hayes Optima and study your own modem manual to figure out
how to set up other makes and models not listed in this appendix.
A.1.Fundamental Concepts
It is important that we make clear how Bulletron wants the modem to operate. When Bulletron
sends a command to a modem, it expects the modem to return nothing except one or two ASCII digits
of result code and a carriage return. This means that you must have the following settings (or their
equivalents for your particular brand of modem) stored in nonvolatile RAM inside the modem and in
effect at all times:
E0 Do not echo characters from the keyboard to the screen in command mode.
If the modem echoes the commands sent to it, Bulletron will attempt to
interpret these as result codes and will display messages like
Illegal modem result code < ... text ... >
where "... text ..." is the command string.
V0 Display result codes as numbers. Do not have result codes returned as verbal
strings.
&C1 Track the status of carrier detect signal. Bulletron checks the state of the
carrier detect signal before each character is transmitted, and before
attempting to read each incoming character. If the modem does not report
loss of carrier, then Bulletron will not reset the line when a user disconnects.
&D2 Monitor DTR signal. When an on-to-off transition of DTR signal occurs, the
modem hangs up, enters the command state, and ignores incoming calls.
A.1.1. Automatic Speed Buffering and Flow Control
In the most traditional method of receiving a modem call, commands are sent to the modem at a
default Baud rate, the modem returns a result code indicating the Baud rate of an incoming call, and the
modem and the BBS adjust their Baud rates to match the line speed of the connection. For example, a
2400 Baud modem would be set up to receive a call by sending "+++", "ATZ", then "ATS0=1" at 2400
Baud. An incoming call at 1200 Baud would cause the modem to send a result code of "5" to the BBS,
and the BBS would adjust the speed of the serial port to 1200 Baud.
Modems that support error correction (MNP 1 through 4 or V.42), or data compression (MNP 5
through 10 or V.42bis) change this. To perform error correction, the modem must accumulate data
flowing in both directions in internal buffers, assemble the data into packets, attach CRCs to the
packets, and retransmit the packets if CRCs do not compare correctly. A mechanism must be provided
by which the modem can tell the BBS to hold data if a packet needs to be retransmitted. This
mechanism is an electrical signal named CTS (Clear to Send). When the modem needs to make the
BBS wait, it turns off CTS; otherwise, CTS is always turned on. In the other direction, when the BBS
needs to make the modem stop sending data, it turns off a signal named RTS (Request to Send).
When a modem supports data compression (MNP 5 through 10 or V.42bis), it may receive data
from the BBS at a much faster rate than the phone line will support. For instance, if the line rate is
2400 Baud, and the modem is achieving 4:1 compression on the data packets it builds, then the
modem can accept data from the BBS at 9600 Baud. In the other direction, if the modem is receiving
compressed packets that are expanding to 4 times their transmitted size, then the modem will be able to
send data to the BBS at 9600 Baud. To support data compression, Bulletron provides modem type "A"
(set with the "PL" command). For an "A" type modem, Bulletron will not adjust the Baud rate of the
connection between the computer and the modem to the speed reported by the modem at connection,
but will leave it at the initial Baud rate set by the "PM" command. If, for example, you have a 2400
Baud modem that supports data compression and you set up the modem to enable that feature, then you
would set the modem type to "A" with the "PL" command and set the initial Baud rate for the modem
to 9600 Baud. Your modem will receive packets across the phone line at 2400 Baud, expand them in
its internal buffers, and send the data to the computer at 9600 Baud.
When the Baud rate of the connection between the computer and the modem remains fixed at
some high value, while the modem connects at various lower line speeds, this is called "automatic
speed buffering". Automatic speed buffering is required for line speeds of 14,400 Baud, even when
error correction and data compression are not used, because most serial port hardware can not be set to
14,400 Baud. With V.32bis modems, which normally connect at 14,400 Baud, it is necessary to use
automatic speed buffering and set the initial Baud rate for the modem to 19,200 Baud. Bulletron
provides the modem type of "A" (with the "PL" command), for Hayes compatible modems that are
operated with automatic speed buffering. Modem types "C" and "H" are for modems that adjust the
speed of the computer to modem connection to match the line speed at the time of connection. The
difference between type "H" and type "C" is that type "C" modems that will not accept commands
while the DTR signal is off. Type "H" is for most Hayes compatible modems, that will accept
commands while DTR is off. Type "P" is for Hayes compatible modems that do not support hardware
(RTS/CTS) flow control, and, hence, have only a slight prayer of doing error correction or data
compression without losing data.
A.1.2. Delay After Connection
Modems that support error correction or data compression negotiate with each other immediately
after connection to determine which features both modems have in common. This negotiation takes
place using 7 data bits, even parity and one stop bit (7-E-1). Bulletron normally communicates with
the user using 8 data bits, no parity and one stop bit (8-N-1). Using 8 data bits is necessary to support
IBM extended graphics characters and also to perform file transfers using XMODEM, YMODEM or
ZMODEM. The only common file transfer protocol that can work with 7 data bits is KERMIT. If
your BBS has a modem that does not support error correction or data compression, and a user calls in
using a modem that does support these features, then the BBS may interpret the remote modem's
attempts at feature negotiation as user keystrokes. Your BBS will tell the user to reset his
communications software for 8-N-1. Increasing the delay after connection eliminates this problem.
This problem can also occur when your modem supports error correction or data compression and the
user's modem does not. Generally, we find that a delay after connection of about 7 seconds always
eliminates this problem, though you may find that your modem works with less delay, by
experimenting with different amounts of delay.
A.2.Hayes Smartmodem 2400 Setup
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then enter
AT E0 M0 V0 &C1 &D2 &W
Then, for the "PL" command, specify modem type "H", and for the "PM" command, specify:
Initial Baud Rate = 2400
Escape Sequence = +++
Delay Before and After Escape Sequence = 36 (2 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 18 (1 second)
Delay After Connection = 126 (7 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 10
Baud Rate 3 = 2400
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
A.3.Hayes V Series 9600 Baud Modem Settings
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then enter
AT E0 M0 V0 &C1 &D2 &W
Then, for the "PL" command, specify modem type "H", and for the "PM" command, specify:
Initial Baud Rate = 9600
Escape Sequence = +++
Delay Before and After Escape Sequence = 36 (2 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 18 (1 second)
Delay After Connection = 126 (7 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 10
Baud Rate 3 = 2400
Result Code 4 = 12
Baud Rate 4 = 9600
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
A.4.Hayes Optima Modem Settings
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then enter
AT E0 M0 V0 &C1 &D2 S38=0 S46=138 &W
Then, for the "PL" command, specify modem type "A", and for the "PM" command, specify:
Initial Baud Rate = 19200
Escape Sequence = +++
Delay Before and After Escape Sequence = 36 (2 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 18 (1 second)
Delay After Connection = 126 (7 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 10
Baud Rate 3 = 2400
Result Code 4 = 11
Baud Rate 4 = 4800
Result Code 5 = 12
Baud Rate 5 = 9600
Result Code 6 = 13
Baud Rate 6 = 14400
Result Code 7 = 14
Baud Rate 7 = 19200
Result Code 8 = 18
Baud Rate 8 = 57600
Result Code 9 = 28
Baud Rate 9 = 38400
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
Common Problems:
A caller with MNP or V.42 calls Bulletron on a phone line with an old 2400 Baud modem.
Bulletron tells him to reset his communications parameters to 8-N-1, but they are already set for that.
The problem is that, after carrier has been established, a modem with V.42 or MNP will attempt to
negotiate error-control with the other modem. The negotiation for V.42 or MNP is always done with 7
data bits and even parity. If the BBS looks at the line too soon after carrier is established, it will see this
negotiation and interpret it as keystrokes from the user and complain. The solution is to set the "delay
after connecting" to seven seconds (126 clock ticks). This makes Bulletron ignore input from the
remote modem that might be V.42 or MNP error-control feature negotiation. Having an eight bit
character size is critical to some download protocols (everything except KERMIT), and to IBM PC
extended graphics characters.
A.5.Logicode Quicktel Modem Settings
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then enter
AT E0 M0 V0 &C1 &D2 S38=0 &W
Then, for the "PL" command, specify modem type "A", and for the "PM" command, specify:
Initial Baud Rate = 19200
Escape Sequence = +++
Delay Before and After Escape Sequence = 36 (2 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 18 (1 second)
Delay After Connection = 126 (7 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 9
Baud Rate 3 = 600
Result Code 4 = 10
Baud Rate 4 = 2400
Result Code 5 = 11
Baud Rate 5 = 4800
Result Code 6 = 12
Baud Rate 6 = 9600
Result Code 7 = 13
Baud Rate 7 = 7200
Result Code 8 = 14
Baud Rate 8 = 12000
Result Code 9 = 15
Baud Rate 9 = 14400
Result Code 10 = 16
Baud Rate 10 = 19200
Result Code 11 = 17
Baud Rate 11 = 38400
Result Code 12 = 18
Baud Rate 12 = 57600
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
Common Problems:
A caller with MNP or V.42 calls Bulletron on a phone line with an old 2400 Baud modem.
Bulletron tells him to reset his communications parameters to 8-N-1, but they are already set for that.
The problem is that, after carrier has been established, a modem with V.42 or MNP will attempt to
negotiate error-control with the other modem. The negotiation for V.42 or MNP is always done with 7
data bits and even parity. If the BBS looks at the line too soon after carrier is established, it will see this
negotiation and interpret it as keystrokes from the user and complain. The solution is to set the "delay
after connecting" to seven seconds (126 clock ticks). This makes Bulletron ignore input from the
remote modem that might be V.42 or MNP error-control feature negotiation. Having an eight bit
character size is critical to some download protocols (everything except KERMIT), and to IBM PC
extended graphics characters.
A.6.U.S. Robotics Courier Modem Settings
It should be noted that the US Robotics HST Dual Standard Modem, does *NOT* operate in an
automatic detection mode when used in the answering mode. This modem, when used in the
ORIGINATE Mode will determine what type of modem is on the answering end and subsequently
accommodate either HST or V.32bis protocol. This is a function of the *ORIGINATING* modem
only.
In order to properly use the Dual Standard Modem, the system operator must first determine
whether he wants to use the HST mode or the V.32bis mode when answering incoming calls.
Depending on which mode you select, certain preset parameters must be changed. US Robotics default
softsets are for HST Mode. If you desire to operate in the V.32bis mode, then you will have to change
certain settings to accommodate the V.32bis protocol.
The following information, pertains to the switch settings on the bottom of the modem. Please
note that ON is DOWN.
SwitchDefaultBulletro nFunction
#
1 DOWN UP UP = DTR Normal Operation
2 UP DOWN DOWN = Numeric Result
Codes
3 DOWN DOWN DOWN = Enable Result
Codes
4 UP DOWN DOWN = No Command Echo
5 DOWN UP UP = Enable Auto-Answer
6 DOWN UP UP = Carrier Detect Normal
Operation
7 UP UP UP = Enable Result Codes
for both Answer and
Originate
8 DOWN DOWN DOWN = Enable "AT" Command
Set Recognition
9 DOWN DOWN Escape Sequence Response
DOWN = Hang Up and Return
to Command Mode
10 UP UP Power On and ATZ Settings
UP = Load from NVRAM
QUAD UP UP Modem-Terminal Interface
UP = Standard RS232C
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then, if you have a Dual Standard modem, and want to enable
V.32bis for your high speed callers, enter
AT B0 M0 X4 &A0 &B1 &H1 &R2 &W
If you would rather provide HST with the Dual Standard modem, which yields slightly higher
Baud rates, at the expense of becoming incompatible with the rest of the world, enter
AT M0 X4 &B1 &H1 &R2 &W
If you have an HST only modem, then enter
AT M0 X4 &B1 &H1 &R2 &W
If you have a V.32bis only modem, then enter
AT M0 X4 &A0 &B1 &H1 &R2 &W
For the "PL" command, specify modem type "B", and for the "PM" command, specify:
Initial Baud Rate = 19200
Escape Sequence = +++
Delay Before and After Escape Sequence = 27 (1.5 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 36 (2 seconds)
Delay After Connection = 72 (4 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 10
Baud Rate 3 = 2400
Result Code 4 = 13
Baud Rate 4 = 9600
Result Code 5 = 18
Baud Rate 5 = 4800
Result Code 6 = 20
Baud Rate 6 = 7200
Result Code 7 = 21
Baud Rate 7 = 12000
Result Code 8 = 25
Baud Rate 8 = 14400
Result Code 9 = 43
Baud Rate 9 = 16800
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
For a more detailed discussion of these various parameters and their specific effects on how the
modem reacts, consult the applicable sections of the US Robotics Users Manual which you received
with your modem. Pay particular attention to the special addendums that have to do with the
differences between HST and V.32 operations.
Having made these changes, the US Robotics modem should now function in the selected mode
without difficulties. If you have further questions about any particulars of the US Robotics modem,
feel free to contact US Robotics, at their toll free support number, 1-800-982-5151.
A.7.U.S. Robotics Sportster Modem Settings
The following information, pertains to the switch settings on the bottom of the modem. Please
note that ON is DOWN.
SwitchDefaultBulletro nFunction
#
1 DOWN UP UP = DTR Normal Operation
2 UP DOWN DOWN = Numeric Result
Codes
3 DOWN DOWN DOWN = Enable Result
Codes
4 UP DOWN DOWN = No Command Echo
5 DOWN UP UP = Enable Auto-Answer
6 DOWN UP UP = Carrier Detect Normal
Operation
7 UP UP Power On and ATZ Settings
UP = Load from NVRAM
8 DOWN DOWN DOWN = Enable "AT" Command
Set Recognition
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then, enter
AT M0 X4 &A0 &B1 &H1 &R2 &W
For the "PL" command, specify modem type "B", and for the "PM" command, specify:
Initial Baud Rate = 19200
Escape Sequence = +++
Delay Before and After Escape Sequence = 27 (1.5 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 36 (2 seconds)
Delay After Connection = 72 (4 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 10
Baud Rate 3 = 2400
Result Code 4 = 13
Baud Rate 4 = 9600
Result Code 5 = 18
Baud Rate 5 = 4800
Result Code 6 = 20
Baud Rate 6 = 7200
Result Code 7 = 21
Baud Rate 7 = 12000
Result Code 8 = 25
Baud Rate 8 = 14400
Result Code 9 = 43
Baud Rate 9 = 16800
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
A.8.Intel SatisFAXtion Modem Settings
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then enter
AT E0 M0 V0 \V0 &W
Then, for the "PL" command, specify modem type "A", and for the "PM" command, specify:
Initial Baud Rate = 19200
Escape Sequence = +++
Delay Before and After Escape Sequence = 36 (2 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 18 (1 second)
Delay After Connection = 126 (7 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 9
Baud Rate 3 = 300
Result Code 4 = 10
Baud Rate 4 = 2400
Result Code 5 = 11
Baud Rate 5 = 4800
Result Code 6 = 12
Baud Rate 6 = 9600
Result Code 7 = 15
Baud Rate 7 = 7200
Result Code 8 = 16
Baud Rate 8 = 12000
Result Code 9 = 17
Baud Rate 9 = 14400
Result Code 10 = 18
Baud Rate 10 = 19200
Result Code 11 = 19
Baud Rate 11 = 38400
Result Code 12 = 20
Baud Rate 12 = 57600
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
A.9.Zoom 14.4 VFX Modem Settings
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then enter
AT E0 M0 V0 W2 &C1 &D2 S38=0 &W
Then, for the "PL" command, specify modem type "A", and for the "PM" command, specify:
Initial Baud Rate = 19200
Escape Sequence = +++
Delay Before and After Escape Sequence = 36 (2 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 36 (2 seconds)
Delay After Connection = 126 (7 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 10
Baud Rate 3 = 2400
Result Code 4 = 11
Baud Rate 4 = 4800
Result Code 5 = 12
Baud Rate 5 = 9600
Result Code 6 = 13
Baud Rate 6 = 14400
Result Code 7 = 14
Baud Rate 7 = 19200
Result Code 8 = 18
Baud Rate 8 = 57600
Result Code 9 = 28
Baud Rate 9 = 38400
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
Common Problems:
A caller with MNP or V.42 calls Bulletron on a phone line with an old 2400 Baud modem.
Bulletron tells him to reset his communications parameters to 8-N-1, but they are already set for that.
The problem is that, after carrier has been established, a modem with V.42 or MNP will attempt to
negotiate error-control with the other modem. The negotiation for V.42 or MNP is always done with 7
data bits and even parity. If the BBS looks at the line too soon after carrier is established, it will see this
negotiation and interpret it as keystrokes from the user and complain. The solution is to set the "delay
after connecting" to seven seconds (126 clock ticks). This makes Bulletron ignore input from the
remote modem that might be V.42 or MNP error-control feature negotiation. Having an eight bit
character size is critical to some download protocols (everything except KERMIT), and to IBM PC
extended graphics characters.
A.10. Zoom 28.8 VFX Modem Settings
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then enter
AT E0 M0 V0 W2 &C1 &D2 -K0 S38=0 &W
Then, for the "PL" command, specify modem type "A", and for the "PM" command, specify:
Initial Baud Rate = 57600
Escape Sequence = +++
Delay Before and After Escape Sequence = 48 (2.75 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 48 (2.75 seconds)
Delay After Connection = 76 (4.25 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 10
Baud Rate 3 = 2400
Result Code 4 = 11
Baud Rate 4 = 4800
Result Code 5 = 12
Baud Rate 5 = 9600
Result Code 6 = 13
Baud Rate 6 = 7200
Result Code 7 = 14
Baud Rate 7 = 12000
Result Code 8 = 15
Baud Rate 8 = 14400
Result Code 9 = 16
Baud Rate 9 = 19200
Result Code 10 = 17
Baud Rate 10 = 38400
Result Code 11 = 18
Baud Rate 11 = 57600
Result Code 12 = 59
Baud Rate 12 = 16800
Result Code 13 = 61
Baud Rate 13 = 21600
Result Code 14 = 62
Baud Rate 14 = 24000
Result Code 15 = 63
Baud Rate 15 = 26400
Result Code 16 = 64
Baud Rate 16 = 28800
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
Common Problems:
A caller with MNP or V.42 calls Bulletron on a phone line with an old 2400 Baud modem.
Bulletron tells him to reset his communications parameters to 8-N-1, but they are already set for that.
The problem is that, after carrier has been established, a modem with V.42 or MNP will attempt to
negotiate error-control with the other modem. The negotiation for V.42 or MNP is always done with 7
data bits and even parity. If the BBS looks at the line too soon after carrier is established, it will see this
negotiation and interpret it as keystrokes from the user and complain. The solution is to set the "delay
after connecting" to seven seconds (126 clock ticks). This makes Bulletron ignore input from the
remote modem that might be V.42 or MNP error-control feature negotiation. Having an eight bit
character size is critical to some download protocols (everything except KERMIT), and to IBM PC
extended graphics characters.
A.11. Prometheus Linelink 144 Modem Settings
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F &W
to set the modem to factory defaults. Then enter
AT E0 M0 V0 &C1 &D2 S38=1 &W
Then, for the "PL" command, specify modem type "A", and for the "PM" command, specify:
Initial Baud Rate = 19200
Escape Sequence = +++
Delay Before and After Escape Sequence = 27 (1.5 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 18 (1 second)
Delay After Connection = 126 (7 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 10
Baud Rate 3 = 2400
Result Code 4 = 12
Baud Rate 4 = 9600
Result Code 5 = 13
Baud Rate 5 = 14400
Result Code 6 = 14
Baud Rate 6 = 19200
Result Code 7 = 16
Baud Rate 7 = 300
Result Code 8 = 18
Baud Rate 8 = 1200
Result Code 9 = 19
Baud Rate 9 = 2400
Result Code 10 = 20
Baud Rate 10 = 9600
Result Code 11 = 21
Baud Rate 11 = 19200
Result Code 12 = 26
Baud Rate 12 = 38400
Result Code 13 = 27
Baud Rate 13 = 57600
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
Common Problems:
A caller with MNP or V.42 calls Bulletron on a phone line with an old 2400 Baud modem.
Bulletron tells him to reset his communications parameters to 8-N-1, but they are already set for that.
The problem is that, after carrier has been established, a modem with V.42 or MNP will attempt to
negotiate error-control with the other modem. The negotiation for V.42 or MNP is always done with 7
data bits and even parity. If the BBS looks at the line too soon after carrier is established, it will see this
negotiation and interpret it as keystrokes from the user and complain. The solution is to set the "delay
after connecting" to seven seconds (126 clock ticks). This makes Bulletron ignore input from the
remote modem that might be V.42 or MNP error-control feature negotiation. Having an eight bit
character size is critical to some download protocols (everything except KERMIT), and to IBM PC
extended graphics characters.
A.12. Practical Peripherals 14400FXMT and PM144MT II Modem
Settings
Connect the modem off-line to a terminal or terminal emulator program, and enter
AT &F1 &W0
to set the modem to factory defaults. Then enter
AT E0 M0 V0 W2 &W0
Then, for the "PL" command, specify modem type "A", and for the "PM" command, specify:
Initial Baud Rate = 19200
Escape Sequence = +++
Delay Before and After Escape Sequence = 36 (2 seconds)
Reset Modem String = ATZ
Begin Answer String = ATH0S0=1
Modem Off-hook String = ATM0H1
No Answer String = ATS0=0
Delay Between Commands = 36 (2 seconds)
Delay After Connection = 126 (7 seconds)
Dial String = ATM1DP (ATM1DT if your line has touchtone)
Result Code 1 = 1
Baud Rate 1 = 300
Result Code 2 = 5
Baud Rate 2 = 1200
Result Code 3 = 10
Baud Rate 3 = 2400
Result Code 4 = 11
Baud Rate 4 = 4800
Result Code 5 = 12
Baud Rate 5 = 9600
Result Code 6 = 13
Baud Rate 6 = 14400
Result Code 7 = 14
Baud Rate 7 = 19200
Result Code 8 = 18
Baud Rate 8 = 57600
Result Code 9 = 24
Baud Rate 9 = 7200
Result Code 10 = 25
Baud Rate 10 = 12000
Result Code 11 = 28
Baud Rate 11 = 38400
Result Code 12 = 31
Baud Rate 12 = 115200
Set the unused result code/Baud rate sets the same as set 1 to avoid false connection on a result
code of zero.
Common Problems:
A caller with MNP or V.42 calls Bulletron on a phone line with an old 2400 Baud modem.
Bulletron tells him to reset his communications parameters to 8-N-1, but they are already set for that.
The problem is that, after carrier has been established, a modem with V.42 or MNP will attempt to
negotiate error-control with the other modem. The negotiation for V.42 or MNP is always done with 7
data bits and even parity. If the BBS looks at the line too soon after carrier is established, it will see this
negotiation and interpret it as keystrokes from the user and complain. The solution is to set the "delay
after connecting" to seven seconds (126 clock ticks). This makes Bulletron ignore input from the
remote modem that might be V.42 or MNP error-control feature negotiation. Having an eight bit
character size is critical to some download protocols (everything except KERMIT), and to IBM PC
extended graphics characters.
B. Appendix B - National Bureau of Standards Time Setting
A branch of the United States Government, called the National Bureau of Standards, maintains a
highly accurate real-time clock in Fort Collins, Colorado. This clock is the standard used for all
national defense work, space flight, aircraft and most commercial broadcasting. A small public domain
utility program named "NBSCOM" can be executed on your computer to call the National Bureau of
Standards via modem and synchronize your clock with the standard. For OS/2 users, we have prepared
an adaptation of this program that runs in OS/2 protect mode. The name of the OS/2 adaptation is
"NBSCOM2". Operating instructions for both programs are included in a file named
"NBSCOM.DOC". Copies of both executable programs, documentation, and initialization parameter
files are available on our technical support BBS in a file named "NBSCOM.ZIP". It is a good idea to
include NBSCOM in your AUTOEXEC.BAT file, or NBSCOM2 in your STARTUP.CMD file, so
that message and file creation times will remain consistent across the wide area network.
C. Appendix C - Bulletron Errors and Messages
Bulletron puts out informational, warning, and error messages to either the printer or to the disk
file log. Messages that are not preceded by a number will only display on the monitor. Messages
beginning with 0 or 1 are informational only. Messages beginning with 9 are errors and a further
description is listed under Error Codes. The disk file is a simple ASCII text file which can be easily
read with a word processor or a BASIC program. Since the error messages are in a fixed format, the
SYSOP can write a program to extract information about the operation of his system based on the
message numbers listed below if he chooses:
0021 SESSION
This message in the log tells various information about a user logon session. See the section
"The System Log File" for the format of the message.
0022 OUTFEAT account menuopt time baudrate
This message in the log files is created any time a user accesses outside features. It can be used to
provide additional billing based on the length of time the user was in the feature indicated by
"menuopt".
0023 LINE-ERR COMn CS:XX TS:XX MS:XX CR:XX CV:XX
Some hardware condition occurred such as parity error, framing error, break, overrun error, CTS
conflict, or other condition which could halt transmission on a line. Normally Bulletron detects these
line errors and resets the flags so that processing continues. This message is a warning and would be of
interest only if it is a frequent occurrence. Details of fir five numbers displayed is given below, under
"Serial Port Driver Errors".
* 1010 Purged questionnaire for aaa xxxxxx
Informational message noting that the questionnaire on sub-board "aaa" for account "xxxxxx"
was deleted.
1030 Deleting account "xxxx" by acct
Informational message saying that account "acct" deleted SYSOP whose account code is "xxxx".
1040 File xxxxxx uploaded by yyyy
During a network connection, a file named "xxxxxx" was ploaded during the connection to node
"yyyy". This message is in the log file for informational purposes to explain the source of any
uploaded files.
1100 Attempted to dial xxx at yyy
This tells that Bulletron attempted to dial node "xxx" at telephone number "yyy", but was NOT
successful in connecting. It could be that the line was busy. If the message shows up repeatedly, check
that the telephone number is correct. This message appears in the log file and is for informational
purposes only.
1110 Logged on to xxx
This informational message warns you that Bulletron successfully connected to node "xxx" to
network messages. The purpose of this message is to explain any long distance telephone calls that
were dialed.
1115 RCVD
This message appears in the log file and is for informational purposes only. It provides an audit
trail of messages received over the network.
1116 SENT
This message appears in the log file and is for informational purposes only. It provides an audit
trail of messages sent over the network.
1118 NOSAVE
This is an informational message written to the log file to as an audit trail for any messages that
were transmitted over the network but were not saved. Normally this would indicate an echo board
message that has already been received, or an echo board message for a board which does not exist on
the receiving system.
1119 Network aborted
The network transmission was aborted prematurely. This could be caused by telephone
disconnection and is for informational purposes only.
1130 No carrier xxx yyy
No carrier was received while calling node "xxx" at telephone number "yyy". This is an
informational message written to the log file. If it occurs frequently, check that you have the correct
telephone number for that node.
1131 Connected and logging on xxx
This is an informational message written to the log file to explain any long distance telephone
calls initiated by Bulletron. It indicates that it did connect, but if the account or password on the remote
system are not correct, a successful network connection may still not have been made.
1300 xxxxxx downloaded ffffffff
Informational message indicating that account "xxxxxx" downloaded file "ffffffff".
1301 aaaaaa deleted ffffffff
User "aaaaaa" deleted file "ffffffff".
9000 Error in xxxxxx err cte on file ctf
These are C-Tree file errors. The function that it was performing was "xxxxxx" on file "ctf"
when C-Tree returned error "cte". The file, "ctf", can be identified by files listed in BBSFILE9.DAT.
See Appendix D.1 for details on C-Tree errors.
9010 xxxx
This is a general message. "xxxx" will be the text of the message which should be self
explanatory. The message goes to the log file.
ABORT - Cannot create xxxxx eee
During an xmodem upload, Bulletron could not create file named "xxxxx" because of C runtime
error "eee". See Appendix D.2 for details on C runtime errors.
Bad hdr toacct xxxx. Bad header, msg deleted
The "to account" header information was bad and displaying it could cause Bulletron to
terminate. To protect the system from terminating, any message containing bad header information is
deleted.
Can't setup COMn, status e
COMM port "n" cannot be setup. The status error return is "e". Check that the multiport board is
configured and installed correctly.
Cannot add temp record cte ctf
While copying the "utilities" sub-board to the temporary file on the RAM drive, a record could
not be added. Probably the RAM drive is not large enough to hold all of the messages on the utility
board. If you cannot increase the size of the RAM drive or remove some files on it, then do not use the
VDISK parameter. "cte" is the C-Tree error and "ctf" is the C-Tree file number.
Cannot create file ffffffff error nn
C runtime error nn was detected trying to create an uploaded file named ffffffff. See Appendix
D.2 for details on C runtime errors.
Cannot find node xxx key yyy
The network node "xxx" is not defined in the network node table. "yyy" is for diagnostic
purposes. Use the "PXL" command to setup that node.
Cannot init port d at xxx because yyy
While trying to dial out for the network, Bulletron could not initialize COMM port "d" at
Baudrate "xxx" because of serial driver error code "yyy". Check that the Baudrate is a valid Baudrate
and correct the calling Baudrate with the "PXL" command for the node you are calling. See Appendix
D.3 for serial driver error codes.
Cannot init port d at bb because xx task tt
This error occurs when Bulletron attempts to connect with Outside Features on COM port "d" at
Baudrate "bb". The serial driver error code is "xx" and the originating user task is "tt". (This
information is provided because port "d" will not be on the line that created the message which is
line/task "tt".) Check that the Baudrate as defined in Outside Features Definition, "PXO", is a valid
baudrate. See Appendix D.3 for serial driver error codes.
Cannot open file error nn
"nn" is a C runtime error message. See Appendix D.2 for details on C runtime errors.
Cannot open file xxxxx error nn
XMODEM error sending file "xxxxxx" and C runtime error "nn". See Appendix D.2 for details
on C runtime errors.
Cannot open printer/log because n
The printer or log file could not be opened. The C runtime error is "n". See the list of C runtime
errors for the possible reason why the log could not be opened. The log will go to the drive listed in the
"PP" command for the alternate drive. "*" is the default drive. Check that the alternate drive is a valid
drive for your system. See Appendix D.2 for details on C runtime errors.
Cannot open BBSFILE9.DAT to start database
Either file BBSFILE9.DAT is not in the default directory, or one of the files referenced in
BBSFILE9.DAT is not found in the default directory.
Could not create TEMPHELP.DAT cte ctf
The "VDISKn" parameter was used to create a temporary file of the utility/help file board on a
RAM drive, but the file could not be created. Check that you selected the proper drive (the "n" on
VDISKn) in the parameter. The C-Tree file in error is "ctf" and the error code is "cte". See Appendix
D.1 for details on C-Tree errors.
Counter record not found
The parameter file may be corrupted. Delete BBPARMS.IDX and run REBUILD2. Use the
"PXC" command check or reset the counters.
Data error nnn with key xxx, notify sysop
The text branching data is incorrect.
Drive xxx has only nnn bytes free
This message will display when the drive, specified by "xxx" or DFLT for default, has less than
64K of space remaining. "nnn" is the amount of space remaining.
Due to technical difficulties, the system is temporarily down.
Please call back later
This message will display to users calling remotely if any errors occurred during initialization.
Bulletron will allow the SYSOP to log on locally to correct the errors, but itwill not users on remotely.
This most commonly happens when an error is detected on another port or modem command. The
error will be displayed to the SYSOP locally during start-up, and the SYSOP must "press return" past
the errors.
Error n on file nn
"n" is a C-Tree error and "nn" is the file number. The file number corresponds to the files listed
in BBSFILE9.DAT. Check to see that the file exists in the default directory. See Appendix D.1 for
details on C-Tree errors.
Error n on port d
Could not initialize COMM port "d" for reason "n". This is an error not reported with the other
more specific error messages. Contact IDK Computer Systems regarding this error.
Exceeded retry call count
If an attempt is made to dial a node automatically but the retry count (as defined in the "PP"
command) has been exceeded, Bulletron will NOT attempt to dial it again. Check that you have the
correct telephone number, password, and Baud rate for that node. It could be that Bulletron is
repeatedly calling but not getting through because of one of these parameters is incorrect.
Extended Memory error xx user n
An error occurred trying to allocate extended memory. There is probably insufficient extended
memory. The HeapExpander error code "xx" will help IDK Computer Systems uncover your problem
if more assistance is necessary.
Files are corrupted. Run REBUILD2
The system was stopped abnormally and the files were not closed properly. This will occur if
there is a power failure. Run the REBUILD2 program to recreate the index files.
Header error stat = nnn
XMODEM error on header record. "nnn" is the C runtime error. See Appendix D.2 for details
on C runtime errors.
HELP file xxxxxxxx missing
One of the required messages on your "utilities" sub-board is missing. The name of that message
is listed as "xxxxxxxx".
Invalid parameter:
The parameter on the command line is incorrect.
Literal # nn exceeds array xx in record yy
While loading "PROMPTyy", the size of buffer was exceeded. It was loading literal number nn
at the time that the buffer was full. The maximum size of the literals is "xx". The literal number is the
number at the beginning each line in the PROMPT message. Check that a number was incorrectly
modified.
Literal buffer size exceeded at prompt yy
While loading "PROMPTyy", the size of buffer was exceeded. This will occur if you modify the
PROMPT messages and the result of all the literals from the modified PROMPTs exceed the maximum
allowed. Reduce the size of some of your messages so that they will fit in the buffer. There are
approximately 70 Kbytes of slack space over the size needed for the default prompts.
Literal Missing
One of the lines from the PROMPTn messages in the utility/help file board is missing. Restore
the default prompts supplied when you received Bulletron.
Logic fault detected
Contact IDK Computer Systems.
Message deletion forced
A message was found which was too big to fit in the Bulletron buffer. Since it was too big to
read, no diagnostics could be displayed, so the message was deleted.
Modem commands missing for line n
The modem commands are not defined for line "n". Use the "PM" command to define the
modem commands. You can enter "*" for the initial Baud rate to copy modem commands from
another line.
Multiuser stat rec not found
The status record, as defined with "PL" command, was not defined. This usually occurs only
when upgrading to a new version with more telephone lines. Use the "PL" command to define the
telephone lines.
No 8250 UART installed on port d
There is no port hardware installed on the port referenced as port "d". Use the "PL" command to
correct the port definitions.
Node not in node table
A node attempted to network into your system, but a definition for that node was not found in the
node definitions. Use the "PXL" command to define that node to your system.
Not enough memory for windows
Bulletron could not get enough memory to open a window. Start Bulletron with the
"NOWINDOWS" parameter.
Port d out of range
The COMM port "d" is not a valid port. Use the "PL" command to correct the comm port
definitions.
Port d invalid baud rate
The Baud rate defined for COM port "d" is incorrect. Use the "PM" command to correct the
initial Baud rate for the line accessed with COM port "d".
Port d is already set up
COMM port "d" is already defined. Use the "PL" command to correct the comm port definitions.
Record for nn is missing
While trying to load the PROMPT messages, "PROMPTnn" could not be found.
Sent xx rcvd yy
During networking, Bulletron synchronizes with the remote system by sending out "xx" and
expecting to get "xx" back. If the remote system is saving a message or retrieving a message, there will
be a delay sending it back hence the requirement for synchronization. This message will occur if it
sends out "xx" but receives back "yy" instead of "xx". It will then retry for 45 seconds. This
frequently happens if it finds telephone line noise.
Shared interrupt error on port d
The multiport board is not installed or configured correctly.
System calling itself
Bulletron will not network to another system with the same node number.
System date yymm less than last date yymm
The current system date is more than a month from the last date the system was started. Check
that the OS/2 date is correct. If the current OS/2 date is correct but the OS/2 date the last time Bulletron
was run is incorrect, start Bulletron with the DATE parameter to override the date checking logic.
Running with an incorrect date can cause messages to be purged prematurely.
System expired
Contact IDK Computer Systems, Inc.
System parameter record not found
The parameter file, BBPARMS.DAT may be corrupted. Delete BBPARMS.IDX and run
REBUILD2. Also use the "PP" command to check or reset system parameters.
Time/acclvl not defined. Use the PXT command
The parameter file may be corrupted or you may be upgrading with a newer version of Bulletron
which now supports the "PXT" command. If you are upgrading from an older version of Oracomm
which does not support the "PXT" command to Bulletron, log on a sysop and use the "PXT" command
to define the access levels. If you are running a version which does support time access levels, delete
"BBPARMS.IDX" and run REBUILD2.
Time-out sndrecv sending xx
During networking while trying to synchronize with the remote system, Bulletron sent an "xx"
but did not receive the "xx" back in sufficient time.
Write error nn
This error may occur during uploads. "nn" is the C runtime error number. Check that there is
enough space on the disk.
D. Appendix D - Operating System Errors
D.1.C-Tree Error Codes
2 - KDUP_ERR Key value already exists in index.
3 - KMAT_ERRCould not delete target key value since "recbyt" does not match associated
data record position in index.
4 - KDEL_ERR Could not find target key value in index. No deletion performed. May
indicate improper use of buffers during RWTREC() or RWTVREC().
5 - KBLD_ERR Cannot call DELBLD() with an index which supports duplicate keys.
10 - SPAC_ERRINTREE() parameters require too much space.
11 - SPRM_ERRBad INTREE parameter(s): either "bufs" < 3, "idxs" < 0, "sect" < 1, or
"dats" < 0.
12 - FNOP_ERRCould not open file. Either file does not exist, "filnam" points to incorrect
file name, or file is locked by another process.
13 - FUNK_ERROPNFIL cannot determine the type of file. C-Tree version 3.3 files must be
rebuilt before using OPNFIL.
14 - FCRP_ERRFile appears corrupt at open. This occurs if a file is updated, and the disk
protocol is set at "NOTFORCE", and CLSFIL() is not executed. Rebuild the
file.
15 - FCMP_ERRData file has been compacted, but not cleared through REBUILD2. Rebuild
the data file.
16 - KCRAT_ERR Could not create index file. Either no space is available on disk or
"filnam" points to improper name.
17 - DCRAT_ERR Could not create data file. Either no space is available on disk or
"filnam" points to improper name.
18 - KOPN_ERRTried to create existing index file.
19 - DOPN_ERRTried to create existing data file.
20 - KMIN_ERRKey length too large for node size. There must be room for at least 3 key
values per node. The node size is given by "sect" * 128, where "sect" is 3rd
INTREE() parameter.
21 - DREC_ERRCannot create data file with record length smaller than 5.
22 - FNUM_ERR "filno" out of range. 0 <= "filno" < "fils", where "fils" is the 2nd
INTREE() parameter. This error may occur if BBSERVER has not been
initialized (via INTISAM(), OPNISAM(), CREISAM() or INTREE()).
23 - KMEM_ERR Illegal index member number.
24 - FCLS_ERRCould not close file. Usually indicates that memory is clobbered.
25 - Bad link in deleted node list. Delete associated index file and rebuild.
26 - FACS_ERRFile number ("datno", "filno" or "keyno") is not in use.
27 - LBOF_ERRData record position before 1st actual data record.
28 - ZDRN_ERRADDKEY() called with "recbyt" = 0.
29 - ZREC_ERRData file routine called with "recbyt" = 0.
30 - LEOF_ERR"recbyt" exceeds the logical end of file. If "recbyt" is correct, then the data
file header record may be incorrect. If so, then rebuild the data file.
31 - DELFLG_ERR Next record in delete chain of a fixed record length data file does not
have the 1st byte set to 0xFF. Data file header record may be corrupt or the
C255 constant is incorrect in CTCMPL.H.
32 - DDRN_ERRAttempt to delete data record twice in a row.
33 - DNUL_ERR"recptr" is NULL in REDREC(), RRDREC(), REDVREC(), WRTREC() or
WRTVREC().
34 - PRDS_ERRCould not find predecessor node. Indicates that that an index insertion was
interrupted before completion. Rebuild index.
35 - SEEK_ERRlseek() failed in function ctio(). Possible causes are: out of disk space,
corrupted record position in file, or corrupted file descriptor.
36 - READ_ERRRead failed in function ctio(). Possible cause: corrupted data record
position in file.
37 - WRITE_ERR Write failed in function ctio(). Possible causes are: out of disk space,
corrupted record position in file, or corrupted file descriptor.
38 - VRTO_ERRCould not convert virtually opened file to actually opened file. Might occur
if your application uses up some file descriptors after a virtual file has been
automatically closed. Protect against this by lowering "MAXVFIL".
39 - FULL_ERRThe four byte data record position (or node position) address space has been
exhausted.
40 - KSIZ_ERR "sect" * 128 (where "sect" is 3rc INTREE() parameter) was larger when the
index was created. Buffers are too small for nodes.
41 - UDLK_ERRCould not unlock data record. If dummy lock file is in use, be sure it has a
file mode of 3.
42 - DLOK_ERRCould not obtain data record lock. In a DOS 3.1 system, be sure that the
network is up, or SHARE.EXE has been installed.
43 - FVER_ERRCurrent configuration parameters are inconsistent with the configuration
parameters at the time of file creation.
44 - OSRL_ERRData file serial number overflow.
45 - KLEN_ERRKey length exceeds "MAXLEN" parameter. Change "MAXLEN" in
CTOPTN.H and recompile BBSRVR.
46 - FUSE_ERRFile number already in use.
47 - FINT_ERR BBSRVR has not been initialized.
48 - FMOD_ERR A function has been called for the wrong type of file: e.g., a variable
record length function is called for a fixed record length file.
49 - FSAV_ERRCould not write file directory updates to disk during file extension.
50 - LNOD_ERRCould not lock index file node.
51 - UNOD_ERRCould not unlock index file node. If a dummy lock file is in use, be sure it
has a file mode of 3.
52 - KTYP_ERRVariable length and/or floating point keys disabled in CTOPTN.H.
53 - FTYP_ERRVariable length records disabled in CTOPTN.H.
54 - REDF_ERRAttempt to write a read only file.
55 - File deletion failed.
56 - File must be opened EXCLUSIVE for delete.
57 - Attempt to write or delete w/o proper lock, or with a conflicting lock (server
only); see CHECK_LOCK/MUST_LOCK in CTSRVR.C.
58 - LOADKEY() called with incorrect key number. You cannot continue.
59 - LOADKEY() called with key out of order. You may skip this key and
continue.
60 - Fractal out of range: should be 0 to 100.
100 - No current record for ISAM datno.
101 - Could not find isam keyno request.
102 - Could not open ISAM parameter file.
103 - Could not read first 5 parameters in ISAM parameter file.
104 - Too many files in ISAM parameter file.
105 - Could not undo ISAM update. Rebuild files.
106 - Could not read data file record in ISAM parameter file.
107 - Too many keys for data file in ISAM parameter file.
108 - Incorrect keyno for index member in parameter file.
109 - Too many key segments defined in ISAM parameter file.
110 - Could not read segment record in ISAM parameter file.
111 - Could not read index file record in ISAM parameter file.
112 - LKISAM(ENABLE) found pending locks.
113 - No space left in internal lock table.
114 - 1st byte of data record equals delete flag.
115 - Key segments do not match key length.
116 - Bad isamod parmeter (isam_fil=isamod).
117 - Could not read index member record.
118 - NXTSET called before FRSSET for keyno.
119 - FRSSET called for index with wrong keytyp.
120 - Data record length exceeds rebuild max.
121 - Not enough space for sort area.
122 - Attempt to change fixed vs variable len.
123 - var length header has bad record mark.
124 - # of indices does not match (OPNIFIL).
125 - C-Tree server already initialized.
126 - Bad directory path get.
127 - Could not send request.
128 - Could not receive answer.
129 - Redo call to server.
130 - Null file name pointer in OPNFIL.
131 - File name length exceeds message size.
132 - No room for application message buffer.
133 - Could not identify server.
134 - Could not get server's Message ID.
135 - Could not allocate Application ID.
136 - Could not get application message status.
137 - Could not set message appl message size.
138 - Could not get rid of application message.
139 - Badly formed file name.
140 - Variable record length too long.
141 - Required message size exceeds maximum.
142 - Application MAXLEN > server's MAXLEN.
143 - Communications handler not installed.
144 - Application could not ID output queue.
145 - No message space. Was login ok?
146 - Could not update free space info.
147 - Space to be reused is not marked deleted.
148 - WRTVREC cannot fit record at recbyt.
149 - Varlen less than minimum in ADDVREC.
150 - Server is shutting down.
151 - Could not shut down; transactions pending.
152 - Error code 152 undefined.
153 - Buffer too small in REDVREC.
154 - Zero length record in REDVREC.
155 - Error code 155 undefined.
156 - Error code 156 undefined.
157 - Error code 157 undefined.
158 - REDVREC record not marked active.
159 - Zero recbyt value.
160 - Multi-user interference: index information updated by the time user got to
actual data record.
161 - User appears inactive.
162 - Retry request: file contention.
163 - No more room in server lock table.
164 - File number out of range.
165 - No ct_file control block.
166 - No more ct_file control blocks in server.
167 - Could not read request.
168 - Could not send answer.
169 - Server could not allocate user ctl blks.
170 - Bad function number at server.
171 - Application message size exceeds server size.
172 - Could not allocate server msg buffer.
173 - Could not identify server.
174 - Could not get server Message ID.
175 - Server could not allocate user message area.
176 - Could not get server message status.
177 - Could not set message server message size.
178 - Could not get rid of server message.
179 - Server is at full user capacity.
180 - Could not read symbolic key name.
181 - Could not get memory for key symbol name.
182 - No room for sort key. increase MAXFIL.
183 - Could not read file field number values.
184 - Attempt to reallocate set space.
185 - Not enough memory for multiple sets.
186 - Set number out of range.
187 - Null buffer in RTREAD.C.
188 - Null target buffer in RTREAD.C.
189 - Join_to skip.
190 - Join_to error.
191 - Join_to null fill.
192 - Detail_for skip.
193 - Detail_for error.
194 - Detail_for null fill.
195 - Could not get memory for dat symbol name.
196 - Exceeded RETRY_LIMIT in RTREAD.C.
D.2.C Runtime Error Codes
1 (EDOM) Domain Error. A parameter used is beyond the allowable domain of the
function.
2 (ERANGE) Range Error. The value computed is outside the allowable range of the
function.
3 (EBADMODE)Bad File Mode. The file type parameter is not correct.
4 (EBADNAME)Bad File Name. The file name is "", a null pointer, or an invalid DDNAME.
5 (EISTEMPMEM) Temporary Memory File Error. Temporary memory files cannot be
reopened.
6 (EBADSHARE) Bad Share Mode. Valid sharing modes are NONE, ALL, and READ.
7 (EBUFMODE)Bad Buffer Mode. The buffer mode was not correct. Valid buffering modes
are IOLBF, IOFBF, and IONBF.
8 (EERRSET) Bad File Stream. A previous fatal error occurred on the stream and this is the
first opportunity to report it.
9 (EISOPEN) File Already Open. The operation is not permitted on the file because a
process has the file open in an incorrect sharing mode.
10 (ENOTEXIST)File Not Found. The file specified cannot be found. Either the file name
was not correctly specified, or the file has not been created.
11 (ENOTINIT) Not Initial Operation. This operation must be done before any reads, writes
or repositions.
12 (ENULLFCB)Null FCB. The stream pointer must point to a valid stream.
13 (EOUTOFMEM) Out of Memory. Not enough memory is available to complete the
operation.
14 (ESMALLBF)Small Buffer. The specified buffer size is too small.
16 (EEXIST) File Already Exists. An attempt was made to rename a file to an already
existing file name.
17 (ENOGEN) Cannot Generate File Name. A call to tmpnam or _tempnam failed because
all unique file names have been used.
19 (ENOSEEK) Cannot Seek. The stream is connected to a device that does not permit the
seek operation.
20 (EBADPOS) Bad Position. The file position is not valid for a file positioning function.
22 (EBADSEEK)Bad Seek. The combination of starting point and offset values specified for
the fseek() function is not valid for the file, or an attempt was made to seek
beyond the beginning of a binary or text file.
23 (ENOENT) Bad File Path. The file or directory specified cannot be found.
24 (EACCESS) Access Violation. The path name specifies a file or directory that cannot be
written to.
25 (EMFILE) Too Many Files. The file specified cannot be opened to change its
modification time because too many files are open.
26 (ENOCMD) No Command Processor. The command processor specified by the
COMSPEC environment variable cannot be found, and CMD.EXE cannot be
found in any of the directories specified by the PATH environment variable.
28 (EGETANDPUT) Read After Write. A read operation cannot immediately follow a write
operation.
29 (EPASTEOF)Past End of File. Attempted to read past end-of-file.
30 (ENOTREAD)Not Read Mode. The file is not open for reading.
31 (ETOOMANYUNGETC) Too Many Ungets. The ungetc() function is not guaranteed to
work for consecutive calls.
32 (EUNGETEOF) Cannot Unget EOF. The EOF character is not a valid parameter to
ungetc or ungetch.
33 (EPUTUNGET) Cannot Unget after Writing. The ungetc or ungetch function cannot be
used immediately following a write operation.
34 (ECHILD) Bad Child Process. The child process does not exist, or the process identifier
is not correct.
35 (EINTR) Child Process Ended Abnormally. A trap, an unintercepted DosKill call or
exception, or a hardware error occurred.
36 (EINVAL) Invalid Action Code. Valid action codes for _cwait are WAIT_CHILD and
WAIT_GRANDCHILD.
37 (ENOEXEC) Cannot Run Specified File. The executable format of the file is not valid, or
the file is not an executable file.
38 (EAGAIN) Cannot Start Process. Another process cannot be created because it will
exceed the maximum number of processes allowed by OS/2.
39 (EBADTYPE)Bad Stream Type. The stream specified is the wrong type for the operation.
40 (ENOTWRITE) Not Write Mode. The file is not opened for writing.
41 (EPUTANDGET) Write after Read. A write operation cannot immediately follow a read
operation.
42 (ELARGEBF)Buffer Too Large. The size of the buffer must be in the range of a long
integer.
43 (EBADF) Bad File Handle. The file handle passed to _fstat() must be recognized by the
OS/2 system.
44 (EXDEV) Rename Error. A file cannot be renamed to a different drive or device.
45 (ENOSPC) Drive Full. There is not enough free space on the device to complete the
requested operation.
46 (EMATH) Floating Point Exception. An unrecognized exception occurred in a math
routine. The control word has probably been changed.
47 (EMODNAME) Dynamic Link Library Not Found. The DLL may not exist, or may not
be specified in the LIBPATH environment variable.
49 (EMAXATTR) Bad Block Size. The value specified for BLKSIZE or LRECL is too
large. See fopen for the range of valid values for BLKSIZE and LRECL.
50 (EREADERROR) Bad CLD File. Error in reading the C Locale Description (.CLD) file.
The .CLD file specified in your DPATH variable may be damaged or have an
incorrect format.
51 (EBADATTR)Bad File Attributes. The value specified for blksize or lrecl conflicts with a
previously set value. The values for blksize and lrecl may have been set by
both a ddname and by fopen.
60 (EOS2ERR) Operating System Error. OS/2 returned error code &1. An operating system
call returned the error code given.
D.3.Serial Port Driver Error Codes
-1 General Operating System Error
-2 Port number out of range
-3 Port already in use
-4 Invalid buffer size requested
-5 No memory available for buffers
-6 Port driver not initialized
-7 Invalid parameter in driver call
-8 Buffer is empty
-9 Buffer is full
-10 Function timed out
-11 Clear to send was not active
-12 Carrier detect was not active
-13 Data set ready was not active
-14 No 8250 UART installed at I/O address
-15 Xmodem error
-16 User abort
-17 Error on file open, close, read, or write
-18 Xmodem protocol error
-20 Shared interrupt parameter problem
The most common error you will get from the serial port driver is "-1", which usually means that
the port is already allocated for exclusive use by some other program such as a FAX server or a mouse.
You may occasionally get a "LINE-ERR" message displaying five values: "CS", "TS", "MS",
"CR" and "CV".
"CS" is the device driver COM Status:
Bit 0The driver can not transmit because the modem has the CTS signal turned off.
Bit 1The driver can not transmit because the modem has the DSR signal turned off.
Bit 2The driver can not transmit because the modem has the DCD signal turned off
(Bulletron disables this mode of operation).
Bit 3The driver can not transmit because it received an XOFF character from the
modem (Bulletron only enables this mode of operation for outside features).
Bit 4The driver can not transmit because it sent an XOFF character to the modem
(Bulletron disables this mode of operation).
Bit 5The driver can not transmit because it is transmitting a line break.
Bit 6The driver can not transmit because it has a character to transmit immediately
(Bulletron does not use this mode of operation).
Bit 7The driver can not recieve because the modem has the DSR signal turned off.
"TS" is the device driver Transmit Data Status:
Bit 0The driver has WRITE requests in progress or queued.
Bit 1The driver has data in its transmit queue.
Bit 2The transmit hardware is currently transmitting data.
Bit 3The driver has a character waiting to transmit immediately (Bulletron does not use
this mode of operation).
Bit 4The driver is waiting to transmit an automaticaaly generated XON character
(Bulletron only enables this mode of operation for outside features).
Bit 5The driver is waiting to transmit an automatically generated XOFF character
(Bulletron only enables this mode of operation for outside features).
Bit 6undefined
Bit 7undefined
"MS" is the device driver Modem Input Signals
Bit 0undefined
Bit 1undefined
Bit 2undefined
Bit 3undefined
Bit 4Current state of the CTS signal coming from the modem. The device driver will
not transmit data to the modem if this is off.
Bit 5Current state of the DSR signal coming from the modem. This signal tells the
BBS that the modem is turned on. The device driver will not transmit data to, or
receive data from, the modem if this signal isoff.
Bit 6Current state of the RI (ring indicator) signal coming from the modem.
Bit 7Current state of the DCD (carrier detect) signal coming from the modem.
Bulletron ignores this when there is no call in progress, and logs out the call if this
goes off during a session.
"CR" is the device driver COM Error word:
Bit 0Receive queue overrun. This can only happen during an upload at a high Baud
rate. Use a slower Baud rate or a faster CPU if this happens. It means that the
program can not write the data to disk as fast as it's coming in.
Bit 1Receive hardware overrun. This happens when the driver does not read the
UART before the next character arrives. Starting the BBS with a "BOOSTn"
parameter, where "n" is greater than zero should eliminate this.
Bit 2Parity Error. This should never happen because Bulletron always communicates
with 8 data bits and no parity.
Bit 3Framing Error. This means that the Baud rates for the modem and the computer
are not the same. You may have the modem set for type "A" or "B" and the
modem is not set up for automatic speed buffering, or the modem is set up for
automatic speed buffering and the BBS is not set for modem type "A" or "B".
Bits 4 through 15 are undefined.
"CV" is the device driver COM Event Information:
Bit 0is set whenever a character is read from the UART and placed in the driver's
receive queue.
Bit 1is set whenever the UART times out a read operation (Bulletron disables this
mode of operation).
Bit 2is set whenever the device driver empties its transmit queue. This does not mean
that the driver is idle, however, because there may be other write requests in the
driver's work queue.
Bit 3is set whenever the state of the CTS signal from the modem changes.
Bit 4is set whenever the state of the DSR signal from the modem changes.
Bit 5is set whenever the state of the DCD signal from the modem changes.
Bit 6is set whenever a line break is received.
Bit 7is set whenever an error bit is set in the device driver COM Error word (see
above).
Bit 8is set whenever the trailing edge of a ring signal occurs.
Bits 9 through 15 are undefined.
D.4.OS/2 System Error Codes
The following shows the numerical value of an error, its symbolic name, and a brief description
of the error.
0 NO_ERROR No error occurred.
1 ERROR_INVALID_FUNCTION Invalid function number.
2 ERROR_FILE_NOT_FOUND File not found.
3 ERROR_PATH_NOT_FOUND Path not found.
4 ERROR_TOO_MANY_OPEN_FILES Too many open files (no handles left).
5 ERROR_ACCESS_DENIED Access denied.
6 ERROR_INVALID_HANDLE Invalid handle.
7 ERROR_ARENA_TRASHED Memory control blocks destroyed.
8 ERROR_NOT_ENOUGH_MEMORY Insufficient memory.
9 ERROR_INVALID_BLOCK Invalid memory-block address.
10 ERROR_BAD_ENVIRONMENT Invalid environment.
11 ERROR_BAD_FORMAT Invalid format.
12 ERROR_INVALID_ACCESS Invalid access code.
13 ERROR_INVALID_DATA Invalid data.
14 Reserved.
15 ERROR_INVALID_DRIVE Invalid drive specified.
16 ERROR_CURRENT_DIRECTORY Attempting to remove current directory.
17 ERROR_NOT_SAME_DEVICE Not same device.
18 ERROR_NO_MORE_FILES No more files.
19 ERROR_WRITE_PROTECT Attempt to write on write-protected diskette.
20 ERROR_BAD_UNIT Unknown unit.
21 ERROR_NOT_READY Drive not ready.
22 ERROR_BAD_COMMAND Unknown command.
23 ERROR_CRC Data error - cyclic redundancy check.
24 ERROR_BAD_LENGTH Invalid request structure length.
25 ERROR_SEEK Seek error.
26 ERROR_NOT_DOS_DISK Unknown media type.
27 ERROR_SECTOR_NOT_FOUND Sector not found.
28 ERROR_OUT_OF_PAPER Printer is out of paper.
29 ERROR_WRITE FAULT Write fault.
30 ERROR_READ_FAULT Read fault.
31 ERROR_GEN_FAILURE General failure.
32 ERROR_SHARING_VIOLATION Sharing violation.
33 ERROR_LOCK_VIOLATION Lock violation.
34 ERROR_WRONG_DISK Invalid disk change.
35 ERROR_FCB_UNAVAILABLE FCB unavailable.
36 ERROR_SHARING_BUFFER_EXCEEDED Sharing buffer overflow.
37 ERROR_CODE_PAGE_MISMATCHED Code page does not match.
38 ERROR_HANDLE_EOF End of file reached.
39 ERROR_HANDLE_DISK_FULL Disk is full.
40-49 Reserved.
50 ERROR_NOT_SUPPORTED Network request not supported.
51 ERROR_REM_NOT_LIST Remote network node is not online.
52 ERROR_DUP_NAME Duplicate file name in network.
53 ERROR_BAD_NETPATH Network path not found.
54 ERROR_NETWORK_BUSY Network is busy.
55 ERROR_DEV_NOT_EXIST Device is not installed in network.
56 ERROR_TOO_MANY_CMDS Network command limit reached.
57 ERROR_ADAP_HDW_ERR Network adapter hardware error.
58 ERROR_BAD_NET_RESP Incorrect response in network.
59 ERROR_UNEXP_NET_ERR Unexpected error in network.
60 ERROR_BAD_REM_ADAP Remote network adapter error.
61 ERROR_PRINTQ_FULL Network printer queue is full.
62 ERROR_NO_SPOOL_SPACE No space in print spool file.
63 ERROR_PRINT_CANCELLED Print spool file deleted.
64 ERROR_NETNAME_DELETED Network name deleted.
65 ERROR_NETWORK_ACCESS_DENIED Access to network denied.
66 ERROR_BAD_DEV_TYPE Device type invalid for network.
67 ERROR_BAD_NET_NAME Network name not found.
68 ERROR_TOO_MANY_NAMES Network name limit exceeded.
69 ERROR_TOO_MANY_SESS Network session limit exceeded.
70 ERROR_SHARING_PAUSED Temporary pause in network.
71 ERROR_REQ_NOT_ACCEP Network request denied.
72 ERROR_REDIR_PAUSED Pause in network print disk redirection.
73 ERROR_SBCS_ATT_WRITE_PROT Attempted write on protected disk.
74 ERROR_SBCS_GENERAL_FAILURE General failure, single-byte character set.
75-79 Reserved.
80 ERROR_FILE_EXISTS File exists.
81 ERROR_DUP_FCB Reserved.
82 ERROR_CANNOT_MAKE Cannot make directory entry.
83 ERROR_FAIL_I24 Failure on INT 24.
84 ERROR_OUT_OF_STRUCTURES Too many redirections.
85 ERROR_ALREADY_ASSIGNED Duplicate redirection.
86 ERROR_INVALID_PASSWORD Invalid password.
87 ERROR_INVALID_PARAMETER Invalid parameter.
88 ERROR_NET_WRITE_FAULT Network device fault.
89 ERROR_NO_PROC_SLOTS No process slots available.
90 ERROR_NOT_FROZEN System error.
91 ERR_TSTOVFL Timer service table overflow.
92 ERR_TSTDUP Timer service table duplicate.
93 ERROR_NO_ITEMS No items to work on.
95 ERROR_INTERRUPT Interrupted system call.
99 ERROR_DEVICE_IN_USE Device in use.
100 ERROR_TOO_MANY_SEMAPHORES User/system open semaphore limit reached.
101 ERROR_EXCL_SEM_ALREADY_OWNED Exclusive semaphore already owned.
102 ERROR_SEM_IS_SET DosCloseSem found semaphore set.
103 ERROR_TOO_MANY_SEM_REQUESTS Too many exclusive semaphore
requests.
104 ERROR_INVALID_AT_INTERRUPT_TIME Operation invalid at interrupt time.
105 ERROR_SEM_OWNER_DIED Previous semaphore owner terminated without freeing
semaphore.
106 ERROR_SEM_USER_LIMIT Semaphore limit exceeded.
107 ERROR_DISK_CHANGE Insert drive B disk into drive A.
108 ERROR_DRIVE_LOCKED Drive locked by another process.
109 ERROR_BROKEN_PIPE Write on pipe with no reader.
110 ERROR_OPEN_FAILED Open/create failed due to explicit fail command.
111 ERROR_BUFFER_OVERFLOW Buffer passed to system call too small to hold
return data.
112 ERROR_DISK_FULL Not enough space on the disk.
113 ERROR_NO_MORE_SEARCH_HANDLES Cannot allocate another search
structure and handle.
114 ERROR_INVALID_TARGET_HANDLE Target handle in DosDupHandle invalid.
115 ERROR_PROTECTION_VIOLATION Invalid user virtual address.
116 ERROR_VIOKBD_REQUEST Error on display write or keyboard read.
117 ERROR_INVALID_CATEGORY Category for DevIOCtl not defined.
118 ERROR_INVALID_VERIFY_SWITCH Invalid value passed for verify flag.
119 ERROR_BAD_DRIVER_LEVEL Level four driver not found.
120 ERROR_CALL_NOT_IMPLEMENTED Invalid function called.
121 ERROR_SEM_TIMEOUT Time-out occurred from semaphore API function.
122 ERROR_INSUFFICIENT_BUFFER Data buffer too small.
123 ERROR_INVALID_NAME Illegal character or invalid file-system name.
124 ERROR_INVALID_LEVEL Non-implemented level for information retrieval or
setting.
125 ERROR_NO_VOLUME_LABEL No volume label found with DosQueryFSInfo
function.
126 ERROR_MOD_NOT_FOUND Module handle not found with DosQueryProcAddr(),
DosQueryModAddr().
127 ERROR_PROC_NOT_FOUND Procedure address not found with DosQueryProcAddr().
128 ERROR_WAIT_NO_CHILDREN DosWaitChild finds no children.
129 ERROR_CHILD_NOT_COMPLETE DosWaitChild children not terminated.
130 ERROR_DIRECT_ACCESS_HANDLE Handle operation invalid for direct disk-access
handles.
131 ERROR_NEGATIVE_SEEK Attempting seek to negative offset.
132 ERROR_SEEK_ON_DEVICE Application trying to seek on device or pipe.
133 ERROR_IS_JOIN_TARGET Drive has previously joined drives.
134 ERROR_IS_JOINED Drive is already joined.
135 ERROR_IS_SUBSTED Drive is already substituted.
136 ERROR_NOT_JOINED Cannot delete drive that is not joined.
137 ERROR_NOT_SUBSTED Cannot delete drive that is not substituted.
138 ERROR_JOIN_TO_JOIN Cannot join to a joined drive.
139 ERROR_SUBST_TO_SUBST Cannot substitute to a substituted drive.
140 ERROR_JOIN_TO_SUBST Cannot join to a substituted drive.
141 ERROR_SUBST_TO_JOIN Cannot substitute to a joined drive.
142 ERROR_BUSY_DRIVE Specified drive is busy.
143 ERROR_SAME_DRIVE Cannot join or substitute a drive to a directory on the
same drive.
144 ERROR_DIR_NOT_ROOT Directory must be a subdistrict of the root.
145 ERROR_DIR_NOT_EMPTY Directory must be empty to use join command.
146 ERROR_IS_SUBST_PATH Path specified is being used in a substitute.
147 ERROR_IS_JOIN_PATH Path specified is being used in a join.
148 ERROR_PATH_BUSY Path specified is being used by another process.
149 ERROR_IS_SUBST_TARGET Cannot join or substitute a drive that has a directory that
is the target of a previous substitute.
150 ERROR_SYSTEM_TRACE System trace error.
151 ERROR_INVALID_EVENT_COUNT DosWaitMuxWaitSem errors.
152 ERROR_TOO_MANY_MUXWAITERS System limit of 100 entries reached.
153 ERROR_INVALID_LIST_FORMAT Invalid list format.
154 ERROR_LABEL_TOO_LONG Volume label too big.
155 ERROR_TOO_MANY_TCBS Cannot create another TCB.
156 ERROR_SIGNAL_REFUSED Signal refused.
157 ERROR_DISCARDED Segment is discarded.
158 ERROR_NOT_LOCKED Segment is not locked.
159 ERROR_BAD_THREADID_ADDR Invalid thread-identity address.
160 ERROR_BAD_ARGUMENTS Invalid environment pointer.
161 ERROR_BAD_PATHNAME Invalid path name passed to exec.
162 ERROR_SIGNAL_PENDING Signal already pending.
163 ERROR_UNCERTAIN_MEDIA Error with INT 24 mapping.
164 ERROR_MAX_THRDS_REACHED No more process slots.
165 ERROR_MONITORS_NOT_SUPPORTED Error with INT 24 mapping.
166 ERROR_UNC_DRIVER_NOT_INSTALLED Default redirection return code.
167 ERROR_LOCK_FAILED Locking failed.
168 ERROR_SWAPIO_FAILED Swap I/O failed.
169 ERROR_SWAPIN_FAILED Swap in failed.
170 ERROR_BUSY Segment is busy.
171-172 Reserved.
173 ERROR_CANCEL_VIOLATION A lock request is not outstanding for the
specified file range, or the range length is zero.
174 ERROR_ATOMIC_LOCK_NOT_SUPPORTED The file-system driver (FSD) does not
support atomic lock operations. Versions of OS/2* prior to version 2.00 do not support atomic lock
operations.
175 ERROR_READ_LOCKS_NOT_SUPPORTED The file system driver (FSD) does not
support shared read locks.
176-179 Reserved.
180 ERROR_INVALID_SEGMENT_NUMBER Invalid segment number.
181 ERROR_INVALID_CALLGATE Invalid call gate.
182 ERROR_INVALID_ORDINAL Invalid ordinal.
183 ERROR_ALREADY_EXISTS Shared segment already exists.
184 ERROR_NO_CHILD_PROCESS No child process to wait for.
185 ERROR_CHILD_ALIVE_NOWAIT NoWait specified and child alive.
186 ERROR_INVALID_FLAG_NUMBER Invalid flag number.
187 ERROR_SEM_NOT_FOUND Semaphore does not exist.
188 ERROR_INVALID_STARTING_CODESEG Invalid starting code segment, incorrect
END (label) directive.
189 ERROR_INVALID_STACKSEG Invalid stack segment.
190 ERROR_INVALID_MODULETYPE Invalid module type - dynamic-link library file
cannot be used as an application. Application cannot be used as a dynamic-link library.
191 ERROR_INVALID_EXE_SIGNATURE Invalid EXE signature - file is a DOS mode
program or an improper program.
192 ERROR_EXE_MARKED_INVALID EXE marked invalid - link detected errors when
the application was created.
193 ERROR_BAD_EXE_FORMAT Invalid EXE format - file is a DOS mode program or an
improper program.
194 ERROR_ITERATED_DATA_EXCEEDS_64k Iterated data exceeds 64KB - there is
more than 64KB of data in one of the segments of the file.
195 ERROR_INVALID_MINALLOCSIZE Invalid minimum allocation size - the size is
specified to be less than the size of the segment data in the file.
196 ERROR_DYNLINK_FROM_INVALID_RING Dynamic link from invalid privilege
level - privilege level 2 routine cannot link to dynamic-link libraries.
197 ERROR_IOPL_NOT_ENABLED IOPL not enabled - IOPL set to NO in
CONFIG.SYS.
198 ERROR_INVALID_SEGDPL Invalid segment descripton privilege level - can only have
privilege levels of 2 and 3.
199 ERROR_AUTODATASEG_EXCEEDS_64k Automatic data segment exceeds 64KB.
200 ERROR_RING2SEG_MUST_BE_MOVABLE Privilege level 2 segment must be
movable.
201 ERROR_RELOC_CHAIN_XEEDS_SEGLIM Relocation chain exceeds segment
limit.
202 ERROR_INFLOOP_IN_RELOC_CHAIN Infinite loop in relocation chain segment.
203 ERROR_ENVVAR_NOT_FOUND Environment variable not found.
204 ERROR_NOT_CURRENT_CTRY Not current country.
205 ERROR_NO_SIGNAL_SENT No signal sent - no process in the command subtree has a
signal handler.
206 ERROR_FILENAME_EXCED_RANGE File name or extension is greater than 8.3
characters.
207 ERROR_RING2_STACK_IN_USE Privilege level 2 stack is in use.
208 ERROR_META_EXPANSION_TOO_LONG Meta (global) expansion is too long.
209 ERROR_INVALID_SIGNAL_NUMBER Invalid signal number.
210 ERROR_THREAD_1_INACTIVE Inactive thread.
211 ERROR_INFO_NOT_AVAIL File system information is not available for this file.
212 ERROR_LOCKED Locked error.
213 ERROR_BAD_DYNALINK Attempted to execute a non-family API in DOS mode.
214 ERROR_TOO_MANY_MODULES Too many modules.
215 ERROR_NESTING_NOT_ALLOWED Nesting is not allowed.
217 ERROR_ZOMBIE_PROCESS Zombie process.
218 ERROR_STACK_IN_HIGH_MEMORY Stack is in high memory.
219 ERROR_INVALID_EXITROUTINE_RING Invalid exit routine ring.
220 ERROR_GETBUF_FAILED Get buffer failed.
221 ERROR_FLUSHBUF_FAILED Flush buffer failed.
222 ERROR_TRANSFER_TOO_LONG Transfer is too long.
224 ERROR_SMG_NO_TARGET_WINDOW The application window was created
without the FCF_TASKLIST style, or the application window not yet been created or has already been
destroyed.
228 ERROR_NO_CHILDREN No child process.
229 ERROR_INVALID_SCREEN_GROUP Invalid session.
230 ERROR_BAD_PIPE Non-existent pipe or invalid operation.
231 ERROR_PIPE_BUSY Pipe is busy.
232 ERROR_NO_DATA No data available on non-blocking read.
233 ERROR_PIPE_NOT_CONNECTED Pipe was disconnected by server.
234 ERROR_MORE_DATA More data is available.
240 ERROR_VC_DISCONNECTED Session was dropped due to errors.
250 ERROR_CIRCULARITY_REQUESTED Renaming a directory that would cause a
circularity problem.
251 ERROR_DIRECTORY_IN_CDS Renaming a directory that is in use.
252 ERROR_INVALID_FSD_NAME Trying to access nonexistent FSD.
253 ERROR_INVALID_PATH Invalid pseudo device.
254 ERROR_INVALID_EA_NAME Invalid character in name, or invalid cbName.
255 ERROR_EA_LIST_INCONSISTENT List does not match its size, or there are invalid
EAs in the list.
256 ERROR_EA_LIST_TOO_LONG FEAList is longer than 64K-1 bytes.
257 ERROR_NO_META_MATCH String does not match expression.
259 ERROR_NO_MORE_ITEMS DosQueryFSAttach ordinal query.
260 ERROR_SEARCH_STRUC_REUSED DOS mode findfirst/next search structure reused.
261 ERROR_CHAR_NOT_FOUND Character not found.
262 ERROR_TOO_MUCH_STACK Stack request exceeds system limit.
263 ERROR_INVALID_ATTR Invalid attribute.
264 ERROR_INVALID_STARTING_RING Invalid starting ring.
265 ERROR_INVALID_DLL_INIT_RING Invalid DLL INIT ring.
266 ERROR_CANNOT_COPY Cannot copy.
267 ERROR_DIRECTORY Used by DOSCOPY in doscall1.
268 ERROR_OPLOCKED_FILE Oplocked file.
269 ERROR_OPLOCK_THREAD_EXISTS Oplock thread exists.
270 ERROR_VOLUME_CHANGED Volume changed.
271-273 Reserved.
274 ERROR_ALREADY_SHUTDOWN System is already shut down.
275 ERROR_EAS_DIDNT_FIT Buffer is not big enough to hold the EAs.
276 ERROR_EA_FILE_CORRUPT EA file has been damaged.
277 ERROR_EA_TABLE_FULL EA table is full.
278 ERROR_INVALID_EA_HANDLE EA handle is invalid.
279 ERROR_NO_CLUSTER No cluster.
280 ERROR_CREATE_EA_FILE Cannot create the EA file.
281 ERROR_CANNOT_OPEN_EA_FILE Cannot open the EA file.
282 ERROR_EAS_NOT_SUPPORTED Destination file system does not support EAs.
283 ERROR_NEED_EAS_FOUND Destination file system does not support EAs, and the
source file's EAs contain a need EA.
284 ERROR_DUPLICATE_HANDLE The handle already exists.
285 ERROR_DUPLICATE_NAME The name already exists.
286 ERROR_EMPTY_MUXWAIT The list of semaphores in a muxwait semaphore is empty.
287 ERROR_MUTEX_OWNED The calling thread owns one or more of the mutex
semaphores in the list.
288 ERROR_NOT_OWNER Caller does not own the semaphore.
289 ERROR_PARAM_TOO_SMALL Parameter is not large enough to contain all of
the semaphore records in the muxwait semaphore.
290 ERROR_TOO_MANY_HANDLES Limit reached for number of handles.
291 ERROR_TOO_MANY_OPENS There are too many files or semaphores open.
292 ERROR_WRONG_TYPE Attempted to create wrong type of semaphore.
293 ERROR_UNUSED_CODE Code is not used.
294 ERROR_THREAD_NOT_TERMINATED Thread has not terminated.
295 ERROR_INIT_ROUTINE_FAILED Initialization routine failed.
296 ERROR_MODULE_IN_USE Module is in use.
297 ERROR_NOT_ENOUGH_WATCHPOINTS There are not enough watchpoints.
298 ERROR_TOO_MANY_POSTS Post count limit was reached for an event semaphore.
299 ERROR_ALREADY_POSTED Event semaphore is already posted.
300 ERROR_ALREADY_RESET Event semaphore is already reset.
301 ERROR_SEM_BUSY Semaphore is busy.
302 Reserved
303 ERROR_INVALID_PROCID Invalid process identity.
304 ERROR_INVALID_PDELTA Invalid priority delta.
305 ERROR_NOT_DESCENDANT Not descendant.
306 ERROR_NOT_SESSION_MANAGER Requestor not session manager.
307 ERROR_INVALID_PCLASS Invalid P class.
308 ERROR_INVALID_SCOPE Invalid scope.
309 ERROR_INVALID_THREADID Invalid thread identity.
310 ERROR_DOSSUB_SHRINK Cannot shrink segment - DosSubSetMem.
311 ERROR_DOSSUB_NOMEM No memory to satisfy request - DosSubAllocMem.
312 ERROR_DOSSUB_OVERLAP Overlap of the specified block with a block of allocated
memory - DosSubFreeMem.
313 ERROR_DOSSUB_BADSIZE Invalid size parameter - DosSubAllocMem or
DosSubFreeMem.
314 ERROR_DOSSUB_BADFLAG Invalid flag parameter - DosSubSetMem.
315 ERROR_DOSSUB_BADSELECTOR Invalid segment selector.
316 ERROR_MR_MSG_TOO_LONG Message too long for buffer.
317 ERROR_MR_MID_NOT_FOUND Message identity number not found.
318 ERROR_MR_UN_ACC_MSGF Unable to access message file.
319 ERROR_MR_INV_MSGF_FORMAT Invalid message file format.
320 ERROR_MR_INV_IVCOUNT Invalid insertion variable count.
321 ERROR_MR_UN_PERFORM Unable to perform function.
322 ERROR_TS_WAKEUP Unable to wake up.
323 ERROR_TS_SEMHANDLE Invalid system semaphore.
324 ERROR_TS_NOTIMER No timers available.
326 ERROR_TS_HANDLE Invalid timer handle.
327 ERROR_TS_DATETIME Date or time invalid.
328 ERROR_SYS_INTERNAL Internal system error.
329 ERROR_QUE_CURRENT_NAME Current queue name does not exist.
330 ERROR_QUE_PROC_NOT_OWNED Current process does not own queue.
331 ERROR_QUE_PROC_OWNED Current process owns queue.
332 ERROR_QUE_DUPLICATE Duplicate queue name.
333 ERROR_QUE_ELEMENT_NOT_EXIST Queue element does not exist.
334 ERROR_QUE_NO_MEMORY Inadequate queue memory.
335 ERROR_QUE_INVALID_NAME Invalid queue name.
336 ERROR_QUE_INVALID_PRIORITY Invalid queue priority parameter.
337 ERROR_QUE_INVALID_HANDLE Invalid queue handle.
338 ERROR_QUE_LINK_NOT_FOUND Queue link not found.
339 ERROR_QUE_MEMORY_ERROR Queue memory error.
340 ERROR_QUE_PREV_AT_END Previous queue element was at end of queue.
341 ERROR_QUE_PROC_NO_ACCESS Process does not have access to queues.
342 ERROR_QUE_EMPTY Queue is empty.
343 ERROR_QUE_NAME_NOT_EXIST Queue name does not exist.
344 ERROR_QUE_NOT_INITIALIZED Queues not initialized.
345 ERROR_QUE_UNABLE_TO_ACCESS Unable to access queues.
346 ERROR_QUE_UNABLE_TO_ADD Unable to add new queue.
347 ERROR_QUE_UNABLE_TO_INIT Unable to initialize queues.
349 ERROR_VIO_INVALID_MASK Invalid function replaced.
350 ERROR_VIO_PTR Invalid pointer to parameter.
351 ERROR_VIO_APTR Invalid pointer to attribute.
352 ERROR_VIO_RPTR Invalid pointer to row.
353 ERROR_VIO_CPTR Invalid pointer to column.
354 ERROR_VIO_LPTR Invalid pointer to length.
355 ERROR_VIO_MODE Unsupported screen mode.
356 ERROR_VIO_WIDTH Invalid cursor width value.
357 ERROR_VIO_ATTR Invalid cursor attribute value.
358 ERROR_VIO_ROW Invalid row value.
359 ERROR_VIO_COL Invalid column value.
360 ERROR_VIO_TOPROW Invalid TopRow value.
361 ERROR_VIO_BOTROW Invalid BotRow value.
362 ERROR_VIO_RIGHTCOL Invalid right column value.
363 ERROR_VIO_LEFTCOL Invalid left column value.
364 ERROR_SCS_CALL Call issued by other than session manager.
365 ERROR_SCS_VALUE Value is not for save or restore.
366 ERROR_VIO_WAIT_FLAG Invalid wait flag setting.
367 ERROR_VIO_UNLOCK Screen not previously locked.
368 ERROR_SGS_NOT_SESSION_MGR Caller not session manager.
369 ERROR_SMG_INVALID_SGID Invalid session identity.
369 ERROR_SMG_INVALID_SESSION_ID Invalid session ID.
370 ERROR_SMG_NOSG No sessions available.
370 ERROR_SMG_NO_SESSIONS No sessions available.
371 ERROR_SMG_GRP_NOT_FOUND Session not found.
371 ERROR_SMG_SESSION_NOT_FOUND Session not found.
372 ERROR_SMG_SET_TITLE Title sent by shell or parent cannot be changed.
373 ERROR_KBD_PARAMETER Invalid parameter to keyboard.
374 ERROR_KBD_NO_DEVICE No device.
375 ERROR_KBD_INVALID_IOWAIT Invalid I/O wait specified.
376 ERROR_KBD_INVALID_LENGTH Invalid length for keyboard.
377 ERROR_KBD_INVALID_ECHO_MASK Invalid echo mode mask.
378 ERROR_KBD_INVALID_INPUT_MASK Invalid input mode mask.
379 ERROR_MON_INVALID_PARMS Invalid parameters to DosMon.
380 ERROR_MON_INVALID_DEVNAME Invalid device name string.
381 ERROR_MON_INVALID_HANDLE Invalid device handle.
382 ERROR_MON_BUFFER_TOO_SMALL Buffer too small.
383 ERROR_MON_BUFFER_EMPTY Buffer is empty.
384 ERROR_MON_DATA_TOO_LARGE Data record is too large.
385 ERROR_MOUSE_NO_DEVICE Mouse device closed (invalid device handle).
386 ERROR_MOUSE_INV_HANDLE Mouse device closed (invalid device handle).
387 ERROR_MOUSE_INV_PARMS Parameters invalid for display mode.
388 ERROR_MOUSE_CANT_RESET Function assigned and cannot be reset.
389 ERROR_MOUSE_DISPLAY_PARMS Parameters invalid for display mode.
390 ERROR_MOUSE_INV_MODULE Module not valid.
391 ERROR_MOUSE_INV_ENTRY_PT Entry point not valid.
392 ERROR_MOUSE_INV_MASK Function mask invalid.
393 NO_ERROR_MOUSE_NO_DATA No valid data.
394 NO_ERROR_MOUSE_PTR_DRAWN Pointer drawn.
395 ERROR_INVALID_FREQUENCY Invalid frequency for beep.
396 ERROR_NLS_NO_COUNTRY_FILE Cannot find COUNTRY.SYS file.
397 ERROR_NLS_OPEN_FAILED Cannot open COUNTRY.SYS file.
398 ERROR_NLS_NO_CTRY_CODE Country code not found.
398 ERROR_NO_COUNTRY_OR_CODEPAGE Country code not found.
399 ERROR_NLS_TABLE_TRUNCATED Table returned information truncated, buffer is
too small.
400 ERROR_NLS_BAD_TYPE Selected type does not exist.
401 ERROR_NLS_TYPE_NOT_FOUND Selected type is not in file.
402 ERROR_VIO_SMG_ONLY Valid from session manager only.
403 ERROR_VIO_INVALID_ASCIIZ Invalid ASCIIZ length.
404 ERROR_VIO_DEREGISTER VioDeRegister not allowed.
405 ERROR_VIO_NO_POPUP Pop-up window not allocated.
406 ERROR_VIO_EXISTING_POPUP Pop-up window on screen (NoWait).
407 ERROR_KBD_SMG_ONLY Valid from session manager only.
408 ERROR_KBD_INVALID_ASCIIZ Invalid ASCIIZ length.
409 ERROR_KBD_INVALID_MASK Invalid replacement mask.
410 ERROR_KBD_REGISTER KbdRegister not allowed.
411 ERROR_KBD_DEREGISTER KbdDeRegister not allowed.
412 ERROR_MOUSE_SMG_ONLY Valid from session manager only.
413 ERROR_MOUSE_INVALID_ASCIIZ Invalid ASCIIZ length.
414 ERROR_MOUSE_INVALID_MASK Invalid replacement mask.
415 ERROR_MOUSE_REGISTER Mouse register not allowed.
416 ERROR_MOUSE_DEREGISTER Mouse deregister not allowed.
417 ERROR_SMG_BAD_ACTION Invalid action specified.
418 ERROR_SMG_INVALID_CALL INIT called more than once, or invalid session
identity.
419 ERROR_SCS_SG_NOTFOUND New session number.
420 ERROR_SCS_NOT_SHELL Caller is not shell.
421 ERROR_VIO_INVALID_PARMS Invalid parameters passed.
422 ERROR_VIO_FUNCTION_OWNED Save/restore already owned.
423 ERROR_VIO_RETURN Non-destruct return (undo).
424 ERROR_SCS_INVALID_FUNCTION Caller invalid function.
425 ERROR_SCS_NOT_SESSION_MGR Caller not session manager.
426 ERROR_VIO_REGISTER Vio register not allowed.
427 ERROR_VIO_NO_MODE_THREAD No mode restore thread in SG.
428 ERROR_VIO_NO_SAVE_RESTORE_THD No save/restore thread in SG.
429 ERROR_VIO_IN_BG Function invalid in background.
430 ERROR_VIO_ILLEGAL_DURING_POPUP Function not allowed during pop-up
window.
431 ERROR_SMG_NOT_BASESHELL Caller is not the base shell.
432 ERROR_SMG_BAD_STATUSREQ Invalid status requested.
433 ERROR_QUE_INVALID_WAIT NoWait parameter out of bounds.
434 ERROR_VIO_LOCK Error returned from Scroll Lock.
435 ERROR_MOUSE_INVALID_IOWAIT Invalid parameters for IOWait.
436 ERROR_VIO_INVALID_HANDLE Invalid VIO handle.
437 ERROR_VIO_ILLEGAL_DURING_LOCK Function not allowed during screen
lock.
438 ERROR_VIO_INVALID_LENGTH Invalid VIO length.
439 ERROR_KBD_INVALID_HANDLE Invalid KBD handle.
440 ERROR_KBD_NO_MORE_HANDLE Ran out of handles.
441 ERROR_KBD_CANNOT_CREATE_KCB Unable to create kcb.
442 ERROR_KBD_CODEPAGE_LOAD_INCOMPL Unsuccessful code-page load.
443 ERROR_KBD_INVALID_CODEPAGE_ID Invalid code-page identity.
444 ERROR_KBD_NO_CODEPAGE_SUPPORT No code page support.
445 ERROR_KBD_FOCUS_REQUIRED Keyboard focus required.
446 ERROR_KBD_FOCUS_ALREADY_ACTIVE Calling thread has an outstanding
focus.
447 ERROR_KBD_KEYBOARD_BUSY Keyboard is busy.
448 ERROR_KBD_INVALID_CODEPAGE Invalid code page.
449 ERROR_KBD_UNABLE_TO_FOCUS Focus attempt failed.
450 ERROR_SMG_SESSION_NON_SELECT Session is not selectable.
451 ERROR_SMG_SESSION_NOT_FOREGRND Parent/child session is not foreground.
452 ERROR_SMG_SESSION_NOT_PARENT Not parent of requested child.
453 ERROR_SMG_INVALID_START_MODE Invalid session start mode.
454 ERROR_SMG_INVALID_RELATED_OPT Invalid session start related option.
455 ERROR_SMG_INVALID_BOND_OPTION Invalid session bond option.
456 ERROR_SMG_INVALID_SELECT_OPT Invalid session select option.
457 ERROR_SMG_START_IN_BACKGROUND Session started in background.
458 ERROR_SMG_INVALID_STOP_OPTION Invalid session stop option.
459 ERROR_SMG_BAD_RESERVE Reserved parameters are not zero.
460 ERROR_SMG_PROCESS_NOT_PARENT Session parent process already exists.
461 ERROR_SMG_INVALID_DATA_LENGTH Invalid data length.
462 ERROR_SMG_NOT_BOUND Parent is not bound.
463 ERROR_SMG_RETRY_SUB_ALLOC Retry request block allocation.
464 ERROR_KBD_DETACHED This call is not allowed for a detached PID.
465 ERROR_VIO_DETACHED This call is not allowed for a detached PID.
466 ERROR_MOU_DETACHED This call is not allowed for a detached PID.
467 ERROR_VIO_FONT No font is available to support the mode.
468 ERROR_VIO_USER_FONT User font is active.
469 ERROR_VIO_BAD_CP Invalid code page specified.
470 ERROR_VIO_NO_CP System displays do not support code page.
471 ERROR_VIO_NA_CP Current display does not support code page.
472 ERROR_INVALID_CODE_PAGE Invalid code page.
473 ERROR_CPLIST_TOO_SMALL Code page list is too small.
474 ERROR_CP_NOT_MOVED Code page was not moved.
475 ERROR_MODE_SWITCH_INIT Mode switch initialization error.
476 ERROR_CODE_PAGE_NOT_FOUND Code page was not found.
477 ERROR_UNEXPECTED_SLOT_RETURNED Internal error.
478 ERROR_SMG_INVALID_TRACE_OPTION Invalid start session trace indicator.
479 ERROR_VIO_INTERNAL_RESOURCE VIO internal resource error.
480 ERROR_VIO_SHELL_INIT VIO shell initialization error.
481 ERROR_SMG_NO_HARD_ERRORS No session manager hard errors.
482 ERROR_CP_SWITCH_INCOMPLETE DosSetProcessCp is unable to set a KBD or VIO
code page.
483 ERROR_VIO_TRANSPARENT_POPUP Error during VIO pop-up window.
484 ERROR_CRITSEC_OVERFLOW Critical section overflow.
485 ERROR_CRITSEC_UNDERFLOW Critical section underflow.
486 ERROR_VIO_BAD_RESERVE Reserved parameter is not zero.
487 ERROR_INVALID_ADDRESS Invalid physical address.
488 ERROR_ZERO_SELECTORS_REQUESTED At least one selector must be requested.
489 ERROR_NOT_ENOUGH_SELECTORS_AVA Not enough GDT selectors to satisfy
request.
490 ERROR_INVALID_SELECTOR Not a GDT selector.
491 ERROR_SMG_INVALID_PROGRAM_TYPE Invalid program type.
492 ERROR_SMG_INVALID_PGM_CONTROL Invalid program control.
493 ERROR_SMG_INVALID_INHERIT_OPT Invalid inherit option.
494 ERROR_VIO_EXTENDED_SG
495 ERROR_VIO_NOT_PRES_MGR_SG
496 ERROR_VIO_SHIELD_OWNED
497 ERROR_VIO_NO_MORE_HANDLES
498 ERROR_VIO_SEE_ERROR_LOG
499 ERROR_VIO_ASSOCIATED_DC
500 ERROR_KBD_NO_CONSOLE
501 ERROR_MOUSE_NO_CONSOLE
502 ERROR_MOUSE_INVALID_HANDLE
503 ERROR_SMG_INVALID_DEBUG_PARMS
504 ERROR_KBD_EXTENDED_SG
505 ERROR_MOU_EXTENDED_SG
506 ERROR_SMG_INVALID_ICON_FILE
507 ERROR_TRC_PID_NON_EXISTENT
508 ERROR_TRC_COUNT_ACTIVE
509 ERROR_TRC_SUSPENDED_BY_COUNT
510 ERROR_TRC_COUNT_INACTIVE
511 ERROR_TRC_COUNT_REACHED
512 ERROR_NO_MC_TRACE
513 ERROR_MC_TRACE
514 ERROR_TRC_COUNT_ZERO
515 ERROR_SMG_TOO_MANY_DDS
516 ERROR_SMG_INVALID_NOTIFICATION
517 ERROR_LF_INVALID_FUNCTION
518 ERROR_LF_NOT_AVAIL
519 ERROR_LF_SUSPENDED
520 ERROR_LF_BUF_TOO_SMALL
521 ERROR_LF_BUFFER_CORRUPTED
521 ERROR_LF_BUFFER_FULL
522 ERROR_LF_INVALID_DAEMON
522 ERROR_LF_INVALID_RECORD
523 ERROR_LF_INVALID_TEMPL
523 ERROR_LF_INVALID_SERVICE
524 ERROR_LF_GENERAL_FAILURE
525 ERROR_LF_INVALID_ID
526 ERROR_LF_INVALID_HANDLE
527 ERROR_LF_NO_ID_AVAIL
528 ERROR_LF_TEMPLATE_AREA_FULL
529 ERROR_LF_ID_IN_USE
530 ERROR_MOU_NOT_INITIALIZED
531 ERROR_MOUINITREAL_DONE
532 ERROR_DOSSUB_CORRUPTED
533 ERROR_MOUSE_CALLER_NOT_SUBSYS
534 ERROR_ARITHMETIC_OVERFLOW
535 ERROR_TMR_NO_DEVICE
536 ERROR_TMR_INVALID_TIME
537 ERROR_PVW_INVALID_ENTITY
538 ERROR_PVW_INVALID_ENTITY_TYPE
539 ERROR_PVW_INVALID_SPEC
540 ERROR_PVW_INVALID_RANGE_TYPE
541 ERROR_PVW_INVALID_COUNTER_BLK
542 ERROR_PVW_INVALID_TEXT_BLK
543 ERROR_PRF_NOT_INITIALIZED
544 ERROR_PRF_ALREADY_INITIALIZED
545 ERROR_PRF_NOT_STARTED
546 ERROR_PRF_ALREADY_STARTED
547 ERROR_PRF_TIMER_OUT_OF_RANGE
548 ERROR_PRF_TIMER_RESET
639 ERROR_VDD_LOCK_USEAGE_DENIED
640 ERROR_TIMEOUT
641 ERROR_VDM_DOWN
642 ERROR_VDM_LIMIT
643 ERROR_VDD_NOT_FOUND
644 ERROR_INVALID_CALLER
645 ERROR_PID_MISMATCH
646 ERROR_INVALID_VDD_HANDLE
647 ERROR_VLPT_NO_SPOOLER
648 ERROR_VCOM_DEVICE_BUSY
649 ERROR_VLPT_DEVICE_BUSY
650 ERROR_NESTING_TOO_DEEP
651 ERROR_VDD_MISSING
691 ERROR_IMP_INVALID_PARM
692 ERROR_IMP_INVALID_LENGTH
693 MSG_HPFS_DISK_ERROR_WARN
730 ERROR_MON_BAD_BUFFER
731 ERROR_MODULE_CORRUPTED
2055 ERROR_LF_TIMEOUT
2057 ERROR_LF_SUSPEND_SUCCESS
2058 ERROR_LF_RESUME_SUCCESS
2059 ERROR_LF_REDIRECT_SUCCESS
2060 ERROR_LF_REDIRECT_FAILURE
32768 ERROR_SWAPPER_NOT_ACTIVE
32769 ERROR_INVALID_SWAPID
32770 ERROR_IOERR_SWAP_FILE
32771 ERROR_SWAP_TABLE_FULL
32772 ERROR_SWAP_FILE_FULL
32773 ERROR_CANT_INIT_SWAPPER
32774 ERROR_SWAPPER_ALREADY_INIT
32775 ERROR_PMM_INSUFFICIENT_MEMORY
32776 ERROR_PMM_INVALID_FLAGS
32777 ERROR_PMM_INVALID_ADDRESS
32778 ERROR_PMM_LOCK_FAILED
32779 ERROR_PMM_UNLOCK_FAILED
32780 ERROR_PMM_MOVE_INCOMPLETE
32781 ERROR_UCOM_DRIVE_RENAMED
32782 ERROR_UCOM_FILENAME_TRUNCATED
32783 ERROR_UCOM_BUFFER_LENGTH
32784 ERROR_MON_CHAIN_HANDLE
32785 ERROR_MON_NOT_REGISTERED
32786 ERROR_SMG_ALREADY_TOP
32787 ERROR_PMM_ARENA_MODIFIED
32788 ERROR_SMG_PRINTER_OPEN
32789 ERROR_PMM_SET_FLAGS_FAILED
32790 ERROR_INVALID_DOS_DD
32791 ERROR_BLOCKED
32792 ERROR_NOBLOCK
32793 ERROR_INSTANCE_SHARED
32794 ERROR_NO_OBJECT
32795 ERROR_PARTIAL_ATTACH
32796 ERROR_INCACHE
32797 ERROR_SWAP_IO_PROBLEMS
32798 ERROR_CROSSES_OBJECT_BOUNDARY
32799 ERROR_LONGLOCK
32800 ERROR_SHORTLOCK
32801 ERROR_UVIRTLOCK
32802 ERROR_ALIASLOCK
32803 ERROR_ALIAS
32804 ERROR_NO_MORE_HANDLES
32805 ERROR_SCAN_TERMINATED
32806 ERROR_TERMINATOR_NOT_FOUND
32807 ERROR_NOT_DIRECT_CHILD
32808 ERROR_DELAY_FREE
32809 ERROR_GUARDPAGE
32900 ERROR_SWAPERROR
32901 ERROR_LDRERROR
32902 ERROR_NOMEMORY
32903 ERROR_NOACCESS
32904 ERROR_NO_DLL_TERM
65026 ERROR_CPSIO_CODE_PAGE_INVALID
65027 ERROR_CPSIO_NO_SPOOLER
65028 ERROR_CPSIO_FONT_ID_INVALID
65033 ERROR_CPSIO_INTERNAL_ERROR
65034 ERROR_CPSIO_INVALID_PTR_NAME
65037 ERROR_CPSIO_NOT_ACTIVE
65039 ERROR_CPSIO_PID_FULL
65040 ERROR_CPSIO_PID_NOT_FOUND
65043 ERROR_CPSIO_READ_CTL_SEQ
65045 ERROR_CPSIO_READ_FNT_DEF
65047 ERROR_CPSIO_WRITE_ERROR
65048 ERROR_CPSIO_WRITE_FULL_ERROR
65049 ERROR_CPSIO_WRITE_HANDLE_BAD
65074 ERROR_CPSIO_SWIT_LOAD
65077 ERROR_CPSIO_INV_COMMAND
65078 ERROR_CPSIO_NO_FONT_SWIT
65079 ERROR_ENTRY_IS_CALLGATE
E. Appendix E - Command Summary
* Commands marked with asterisk are available only to system operators and assistant
system operators
** Commands marked with two asterisks are available only to full system operators
MAIN MENU
A = Artificial Intelligence (Text Branching Adventure)
B = Sub-Board Selection Menu
C = Chat with Other Callers
Cnnnn = Enter Public Chat Channel nnnn
D = Download Files
E = Enter a Message
F = File (Directory) Listing
G = Good-bye (Normal Logoff)
H = HELP!!!
I = Internet Features
J = Application Specific Database
K = Kill Process (Return to Main Prompt)
L = List Network Nodes
M = Matchmaker
N = Change Name and Personal Configuration Options
O = Outside Features (Doors)
** P = Installation/Configuration (SYSOPs only)
Q = Quick Logoff
R = Read Messages
S = Summary of Message Titles
T = Tutorial
U = Upload Files
V = View Files
W = Who are the Users
X = FAXback Service
* Y = Remote Control Window (just displays copyright notice to unprivileged accounts
Z = Quick Logoff, no LLO reset
$ = Subscription Information
** % = Purge Messages & Users
999 = Select Sub-board #999
99999 = Read Message #99999
- or * = Select Next Sub-board
* + = System Management (accounts with "O" flag are permitted to use "+C" on one the one
network account corresponding to their serial number)
? = Display Menu
# = Read Message by Message Number
! = Custom Feature on ORA190
/x or \x = Execute Chat Command "x" from Main Prompt
READ SUBCOMMANDS
RA xxxx= Read Messages TO and FROM Account xxxx
RB = Read Messages Backward by Date
RB YYMMDDhhmm = Read Messages Bkwd Starting at Date/Time
RC = Read New Messages on Complete System
RC RESTART = Restart an RC Command
RF = Read Forward by Date
RF YYMMDDhhmm = Read Messages Forward Starting at Date/Time
RH = Help for Read Commands
RL = Read Messages Changed Since Last Logon
RM = Read My Mail Messages
RR = Read Restart
RS string = Read Messages Containing string
RZ xxxx = Read Messages TO Account xxxx
R# 99999 or R! 99999= Read Message #99999
SUMMARY SUBCOMMANDS
SA xxxx= Summary of Messages TO and FROM Account xxxx
SB = Summary of Messages Backward by Date
SB YYMMDDhhmm = Summary of Messages Backward Starting at Date/Time
SC = Summary ofNew Messages on Complete System
SC RESTART = Restart an SC Command
SF = Summary of Messages Forward by Date
SF YYMMDDhhmm = Summary of Messages Forward Starting at Date/Time
SH = Help for Summary Commands
SL = Summary of Messages Changed Since Last Logon
SM = Summary of My Mail Messages
SR = Summary Restart
SS string = Summary of Messages Containing string
SZ xxxx = Summary of Messages TO Account xxxx
S# 99999 or S! 99999= Summary of Message #99999
COMMANDS AT END OF MESSAGE READ
A xxxx = Account, View Profile of Account xxxx
B = Begin Reading Again
C = Add Comment to Message
D = Delete the Message
E = Enter a New Message
F = Forward Message to Originator
* G = Change Graphic Status
* H = Change Held Message Status
* I = Change Readonly Message Status
** J = Change Anonymous Message Status
K = Return to Main Menu
* L = Link to Another Message
* M = Modify Message
* N = Change No Delete Message Status
* P = Change Private Message Status
* R = Reroute to a Different Account
** S = Swap TO and FROM Accounts
* T = Transfer to a Different Sub-board
* V = Change No Interrupt Message Status
W = Who, View Profile of Original Author
* X = Remove Last Comment
* Y = Move on to Next Message without Recording Having Read this Message
* @ = Append Comment fro Disk File
* + = Modify Account of Original Author
* % = Make a Disk File from the Message
/ = Interrupt Another Account On-Line with a Message
# 99999 = Read Message #99999
COMMANDS DURING MESSAGE READ (with or without CTRL key)
SPACE BAR = Pause or Resume
CONTROL B = Jump Back One Comment
CONTROL C = Skip to End of Message
CONTROL Q = Resume from Pause
CONTROL S = Pause
CONTROL V = Skip 1000 Characters
CONTROL X = Skip to Next Comment
CONTROL Z = Skip to Comments Last Logon
ENTER SUBCOMMANDS
EA account or E account= Send Private Message to account
EH = Help for Enter Commands
EX account = Upload Message to account Using XMODEM
EC account = Upload Message to account Using XMODEM-CRC
E1 account = Upload Message to account Using XMODEM-1K
EY account= Send Anonymous Mail to account
* E@ account = Create Message from Disk File to account
SPECIAL ENTER COMMAND PSEUDO-ACCOUNT CODES (where "Ex" can be one of the
above)
Ex ALL = Create a Public Message
Ex ALLS = Create Message to Subscribers
Ex ANON = Create Anonymous Public Message
Ex FIDO = Create Message to Someone on FIDOnet
Ex HELP = Read Help Message
** Ex MASSMAIL = Create Private Mail to Everyone on current Sub-board
** Ex NEWUSERS = Create Private Mail to Everyone on current Sub-board with Less Than
Five Lifetime Calls
Ex POLL or Ex AUTO = Create an Autopoll Message
Ex READONLY = Create Public Message with No Comments Allowed
Ex SEX = Create an Anonymous, Readonly Public Message
Ex SYSOP = Send Private Mail to Sysop
EDIT OPTIONS AFTER ENTERING A MESSAGE
C = Continue (Append New Lines)
D999 = Delete Line 999
E = Edit Individual Line of Msg
I999 = Insert a Line Before 999
L = List the Message
L999 = List from Line 999
R999 = Replace Line 999
Q = Quit (Abandon Message)
S = Save Message and Exit
SR = Send msg to ACCT with Receipt
? = Message Editor Menu
WHO SUBCOMMANDS - Shows Users' Profile (ID and Description Lines)
WA accountor WI account = List Entry for an Account
WB = Who Backwards by Account
WB xxx = Who Backwards by Account, only those accounts beginning with the string "xxx"
WC = Who by Date (oldest to newest)
WC YYMMDDhhmm = Who by Date, Oldest to Newest, Beginning with Specified
Date/Time
** WC DELETE = Who by Date (oldest to newest) and prompt for deletion as each account is
displayed
WD = Who by Date (newest to oldest)
WD YYMMDDhhmm = Who by Date, Newest to Oldest, Beginning with Specified
Date/Time
WF = List Users Forward by Acct
WF xxx= List Users Forward by Acct, only those accounts beginning with the string "xxx"
WG = List Users Forward by Geographic Location
WG xx = List users living in state "xx"
WH = Help for Who Commands
WL = List Users Since Last Logon
WL YYMMDDhhmm = Who by Date, Oldest to Newest, Beginning with Specified Date/Time
WM = List My own Information
WN = List New Users Since Last Logon
WN YYMMDDhhmm = Who by Date, Oldest to Newest, Beginning with Specified
Date/Time
WO = Who is Online Now?
WOL = Who is Online Now, Long Display
WOR = Who is Online Now, Repeat Every 3 Seconds
WR nnnnn = Who is on Remote Network Node nnnnn
WS xxxx = Search for Character String xxxx
WT = List Users on Today
MATCH COMMANDS -
Shows Users' Profile and Answers to Matchmaker Questionnaires
MA account = List Answers for account
MB = Who Backwards by Account
MB xxx = Who Backwards by Account, only those accounts beginning with the string "xxx"
MC = Who by Date (oldest to newest)
MC YYMMDDhhmm = Who by Date, Oldest to Newest, Beginning with Specified Date/Time
MD = Who by Date (newest to oldest)
MD YYMMDDhhmm = Who by Date, Newest to Oldest, Beginning with Specified Date/Time
MF = List Users Forward by Acct
MF xxx= List Users Forward by Acct, only those accounts beginning with the string "xxx"
MH = Help for Matchmaker Commands
MI = ("I Am") Reanswer Quest.
MI n = Reanswer Question# n Only
ML = List Users Since Last Logon
ML YYMMDDhhmm = Who by Date, Oldest to Newest, Beginning with Specified Date/Time
MN = List New Users Since Last Logon
MN YYMMDDhhmm = Who by Date, Oldest to Newest, Beginning with Specified Date/Time
MP = Match by Percentage
MQ = List Questionnaire w/o Answer
MS = Search User Questionnaires
MS QUICK = Match by Percentage, same as MP
MT = List Users on Today
CHAT COMMANDS
/CALL account text = Send text to account asking him to enter public chat.
/CALL ALL text = Broadcast text to all users asking them to enter public chat.
/BRING account text= Send text to account asking him to enter private chat.
/HELP = Display help for chat commands.
/PRIVATE account text = Used only from public chat; send text to account telling him that you
are going into private chat.
/UNPRIVATE = Used only from private chat; go back to public chat.
/WHO = List users online now.
/ANNOUNCE text = Change message displayed by your name when others list who is online
now.
/MATCH account = View the matchmaker questionnaire responses for account.
/L nnnn = Change to chat channel nnnn.
/NOCHAT = Exit chat and block "/CALL" messages.
/EXIT = Exit chat.
/TO account text = Interrupt account by sending text to him.
/GROUP line1 ilne2... = Form a private public chat group including the phone lines listed.
/INVISIBLE = Exit chat and become invisible to other users online.
//macro arg1 arg2 arg3 = Broadcast a message in public chat using SYSOP defined macro
and up to three arguments.
/\macro account arg1 arg2 arg3 = Interrupt account by sending SYSOP defined macro to him,
using up to three arguments.
/ /? = List SYSOP defined chat macros.
/ /HELP = Display help message for SYSOP defined macros.
' text (apostrophe) = Possessive emote - sends your account code, followed by apostrophe,
"s", and text to everyone in public chat.
` text (backwards apostrophe) = N0n-possessive emote - sends your account code, followed
by text to everyone in public chat.
"N" MENU OPTIONS (three line description option) -
(To change your personal information and system operating parameters)
0 = Account Code (if enabled)
1 = Password
2 = Name/Handle
3 = Location (City/State)
4 = Three-Line Description
5 = Session Controls
6 = Set Lines per Screen
7 = Set Restrictions for RC Command
8 = Set Default File Name Extension
9 = Turn ANSI/RIP Graphics On/Off
H = Help for "N" commands
I = Accounts to Ingore
S = Save Changes and Exit
T = Telephone Callback Feature
"N" MENU OPTIONS (name and address option) -
(To change your personal information and system operating parameters)
0 = Account Code (if enabled)
1 = Password
2 = Name/Handle
4 = Three-Line Description
5 = Session Controls
6 = Set Lines per Screen
7 = Set Restrictions for RC Command
8 = Set Default File Name Extension
9 = Turn ANSI/RIP Graphics On/Off
A = Company Name
B = Business Address
C = City
D = State
E = Zip or Postal Code
F = Voice Telephone Number
G = FAX Telephone Number
H = Help for "N" commands
I = Accounts to Ignore
S = Save Changes and Exit
T = Telephone Callback Feature
FILES/DIRECTORY COMMANDS
FB = Show Files Backward by Date Uploaded, Latest to Oldest
FC = Show Complete New Files Since Last Logon Across all Sub-Boards
FC YYMMDDhhmm = Show Complete New Files Since Date/Time
FD = Delete Private Files
FF = Show Files Forward in Alphabetical Order
FG string = Search File Descriptions for string Across All Directories
FL = Show New Files on the Current Sub-Board added Since Last Logon
FL YYMMDDhhmm = New Files on Current Board Since Date/Time
FQ = Quick Directory of Filenames Only
FS string = Search File Descriptions for string in Current Directory
FT = True Disk Directory (not Download Database)
DOWNLOAD PROTOCOL SUBCOMMANDS
DA = ASCII (XON, XOFF) Protocol
DR = Search Contents of File(s) for a string.
DX = XMODEM Checksum Protocol
DC = XMODEM CRC Protocol
D1 = XMODEM 1K Protocol
DY = YMODEM Batch Protocol
DG = YMODEM-G Batch Protocol
DZ = ZMODEM Batch Protocol
D7 = MODEM7 Batch Protocol
DT = TeLink Batch Protocol
DS = SEAlink Batch Protocol
* DD or D% = Copy Files to Floppy Disk Drive A
"Tagging", or selecting files by having the system list all can be done by entering a file "mask"
followed by /T (Tag) such as:
DZ *.* /T
To terminate the session when the batch download is complete, follow the command with /Q
(Quit) such as
DY /Q
UPLOAD PROTOCOL SUBCOMMANDS
UA = ASCII (XON/XOFF) Protocol
UX = XMODEM Checksum Protocol
UC = XMODEM CRC Protocol
U1 = XMODEM 1K Protocol
UY = YMODEM Batch Protocol
UG = YMODEM-G Batch Protocol
UZ = ZMODEM Batch Protocol
U7 = MODEM7 Batch Protocol
UT = TeLink Batch Protocol
US = SEAlink Batch Protocol
* UD or U@ = Copy Files from Floppy Disk Drive A
FAXBACK COMMANDS
XB = Show Documents Backward by Date Uploaded, Latest to Oldest
XC = Show Complete New Documents Since Last Logon Across all Sub-Boards
XC YYMMDDhhmm = Show Complete New Documents Since Date/Time
XD = Delete Private Documents
XF = Show Documents Forward in Alphabetical Order
XG string = Search Document Descriptions for string Across All Directories
XL = Show New Documents on the Current Sub-Board added Since Last Logon
XL YYMMDDhhmm = New Documents on Current Board Since Date/Time
XQ = Quick Directory of Document Filenames Only
XS string = Search Document Descriptions for string in Current Directory
XT = True Disk Directory (not Download Database)
XZ = Select Documents and Transmit
NETWORK NODE LISTING SUBCOMMANDS
LO = List Bulletnet Nodes
LF = List All FIDOnet Nodes by Address
LF i:j/k = List FIDOnet Nodes by Address, Starting at i:j/k
LC = List All FIDOnet Nodes by Country
LC xxxx = Search FIDOnet Nodes for Country "xxxx"
LS = List All FIDOnet Nodes by State
LS xxxx = Search FIDOnet Nodes for State "xxxx"
LL = List All FIDOnet Nodes by Location (city)
LL xxxx = Search FIDOnet Nodes for Location (City) "xxxx"
LA = List All FIDOnet Nodes by Phone Country and City Code
LA 1-nnn = Search FIDOnet Nodes for Area Code "nnn" (USA & Canada)
LA nnn- = Search FIDOnet Nodes for Country Code "nnn"
LA nnn-mmm = Search FIDOnet Nodes for Country Code "nnn" and City Code "mmm"
LH = Help for Node Listing Commands
INTERNET COMMANDS
ILaddress = Look Up Name for Host address
IL name = Look Up Address for Host name
IPaddress = PING Host address
IPname = PING Host name
IW address = FINGER Host address
IW name = FINGER Host name
IW user@address = FINGER user at Host address
IW user@name = FINGER user at Host name
IC user@address = TALK with user at Host address
IC user@name = TALK with user at Host name
IFaddress = Open FTP Session with Host address
IFname = Open FTP Session with Host name
IK = Return to Main Menu
IT address = TELNET into Host address
IT name = TELNET into Host name
FILE VIEWING COMMANDS
VA = View ASCII. Same as DA filename.TXT where the .TXT is automatically added.
Download time and download/upload ratio are NOT checked. No entry is made in the log
for files Viewed as Bulletron does when files are DA, but the download count and date
are updated.
VZ = View ZIP. Display the contents of a .ZIP file.
VG = View JPEG. Sends a .JPG file across the line, raw, with no file transfer protocol
overhead, for the benefit of terminal programs that can recognize and display such.
INSTALLATION PARAMETER SUBCOMMANDS
** PP = Set System Parameters
** PL = Set Line Characteristics
** PM = Set Modem Parameters
** PB = Set Up Sub-boards
** PF = Set up File Paths
** PD = Set up Sub-Board Directories
** PG = Set ANSI Graphic Colors
** PA = Set ANSI Colors for Sub-boards
** PC = Set up Chat Channels
** PX = Extended Features Setup
** PZ = Set ANSI Colors for Commands (special compile option)
** PQ or PK = Return to Main Menu
EXTENDED FEATURES PARAMETERS SUBCOMMANDS
** PXA = Create Secondary SYSOP Password
** PXS = Set up System Passwords
** PXL = Set up Network Nodes
** PXN = Set up Text Branching Adventure Feature
** PXR = Refresh Prompts and Network Call Table
** PXF = Assign FIDOnet Conference Names to Sub-boards
** PXP = Set up Extended System Parameters
** PXI = Set up Internet Parameters
** PX$ = Set up Subscriber Parameters
** PXO = Set up Outside Features
** PXT = Assign Time Limits to Access Levels
** PXC = Set System Counters
** PXX = Set up FAX Document Directories
SYSTEM MANAGEMENT SUBCOMMANDS
** +0 account = Change Account Code of account
** +1 account = Delete account
* +2 account = Change Access Levels of account
+3 account = Change SIGs for account
* +4 account = Change Flags for account
** +5 account = Change Password for account
* +6 account = Change Minutes Used Today for account
* +7 account = Delete Matchmaker Responses for account
* +7 ALL = Delete Matchmaker Responses for All Accounts
* +8 account = Change Download and Upload Counts for account
* +9 account = Change VERIFYQU Flag for account
** +A account = Change Cents or Minutes Remaining for account
** +B account = Change Expiration Date for account
+C account = Change Last Logon Date/Time for account
* +D account = Change Class for account
* +E account = Change Location (City/State) for account
* +F = File Management Subcommands
* +G account = Change Session Controls for account
* +I account = Clear Status Index for account
* +J account = Change Name/Handle for account
+K = Exit without Saving Changes
* + L account = Change Personal Description for account
* +M account = Change City for account
* +N = Display Number of Messages per Sub-board
* +O account = Add to Cents or Minutes Remaining for account
+S = Save Changes to Account and Exit
** +V = Copy File
** +W = Diaplay File
** +X = Rename File
** +Y = Delete File
** +Z = Display Disk Directory
FILE MANAGEMENT SUBCOMMANDS
* +F 1 = Display Sub-board Directory Assignments
* +F 2 = Display Path-IDs
* +F 3 = Modify Download Database Record
* +F 4 = Display True DIskj Directory for Path-ID
* +F 5 = Verify Download Database Records Against Disk Directory
* +F 6 = Copy File and Adjust Download Database
* +F 7 = Rename or Move File and Adjust Download Database
* +F 8 = Delete File and Download Database Record
* +F 9 = Copy File and Create Download Database Record
** +F A = Build ALLFILES.TXT and ALLUSERS.TXT
* +F Q or +F K = Return to Main Menu
F. Appendix F - Improving Performance using a RAM Drive
If you have enough memory to create a RAM drive or virtual disk (VDISK), you can use this to
improve the performance of Bulletron. Be aware that this improvement may not be significant enough
to be worth the effort if you are already using HPFS386 with lazy writeback cache. Add the following
to your CONFIG.SYS file and reboot your computer:
DEVICE=C:\OS2\VDISK.SYS i j k
where,
i = the total Kbytes of memory for the RAM drive
j = the sector size for the RAM drive (usually 512)
k = the number of root directory entries (usually 256)
Once you have the RAM drive configured, there are three ways that you can use it to improve
performance.
The first technique is to use the "VDISKn" parameter on the command line when you start the
BBS. The "n" refers to the RAM disk drive letter. If your RAM drive is drive D:, then your system
start-up command line might look like:
BBS2 ALL VDISKD
When Bulletron initializes, it copies all the messages from your "utilities" sub-board to a
temporary file called TEMPHELP.DAT on the RAM drive. All references to menus, help files,
questionnaires, logos, ansi graphics, board introductions, prompts, message-of-the-day, and anything
else from the help file will be read from the RAM drive at memory speed. This will reduce the amount
of hard disk activity and improve performance, but there is one drawback. The help files are copied
when the system is initialized, right after the 3:00 AM system purge, and when the sysop forces the
RAM drive to be refreshed with the "PXR" command ("PXR" is also discussed under the "Extended
System Parameters" installation). If you change a questionnaire, menu, or any of the messages on the
"utilities" sub-board, you are actually changing the copy of the message on the hard disk, NOT THE
COPY ON THE RAM DRIVE. This means that, after changing the menu, the new menu will not
display since the new menu is on the hard disk, not the RAM drive.
When Bulletron is brought down, TEMPHELP.DAT and TEMPHELP.IDX remain on the RAM
drive. Doing a DIR on the RAM drive shows you how much additional space is remaining on that
drive. You can also do a DIR BB*.IDX to see how much space all the index files require. If there is
enough space on the RAM drive to hold the index files as well as the temporary help files, then the
index files can also be put on the RAM drive to improve performance even more. YOU SHOULD
NOT PUT ANY BB*.DAT FILES ON THE RAM DRIVE SINCE YOU WILL LOSE DATA IF YOU
HAVE A POWER FAILURE OR IF THE SYSTEM CRASHES. If you have a power failure or the
system crashes, however, you will have to rebuild the index files anyway. So if they are lost because
they were on the RAM drive, then you have not lost any data or time. Note, however, that you MUST
delete the hard disk copies of the index files so there is no way to use an old index file with an updated
data file. Rebuilding as a precaution is a good idea and will not take much time if no rebuild is
necessary. A .CMD file to do this correctly for a RAM disk on drive D: might be as follows:
COPY BBSFILE9.HD BBSFILE9.DAT
REBUILD2
COPY BB*.IDX D:
DEL BB*.IDX
COPY D:BBDATBAS.IDX C:
COPY BBSFILE9.RAM BBSFILE9.DAT
BBS2 ALL VDISKD
COPY D:BB*.IDX C:
COPY BBSFILE9.HD BBSFILE9.DAT
IMPORTANT: to notify Bulletron that index files are on a different drive, you must modify
BBSFILE9.DAT. This file is a simple ASCII file which can be modified with any text editor. Change
the file names on all those files with extension .IDX to be preceded by the drive letter of the ram drive.
First, type out the file and take a look at it by entering:
TYPE BBSFILE9.DAT
Make two copies of BBSFILE9.DAT. Copy BBSFILE9.DAT to BBSFILE9.HD and
BBSFILE9.RAM. Modify BBSFILE9.RAM so that the file names of the index files include the RAM
disk drive letter. Change the file names such as BBUSERS.IDX to D:BBUSERS.IDX if D: is the
RAM drive. Do not change BBSFILE9.HD so that the file names of the index files will include the
hard disk drive letter.
G. Appendix G - Recommended Extended Serial Card Setups
G.1.Digiboard PC/8 Recommended Installation
The Digiboard PC/8 card provides the system with eight non-intelligent serial ports. With a
minimal CPU (40 MHz 386DX), this card can be expected to support eight modems at 2400 Baud, or
about 4 - 5 modems at 9600 Baud with no performance degradation. The default settings, as shipped
from the factory can be used, provided that you do not have a standard "COM2" device, or any other
device that uses IRQ3 installed. To permit a standard "COM2" device to be used in the same PC as the
PC/8 card, we recommend setting the card to use IRQ5 rather than IRQ3. The jumpers and DIP
switches should be set as follows:
J1 - pins 1,2 (1st port uses odd IRQ set)
J2 - pins 1,2 (2nd port uses odd IRQ set)
J3 - pins 1,2 (3rd port uses odd IRQ set)
J4 - pins 1,2 (4th port uses odd IRQ set)
J5 - pins 1,2 (5th port uses odd IRQ set)
J6 - pins 1,2 (6th port uses odd IRQ set)
J7 - pins 1,2 (7th port uses odd IRQ set)
J8 - pins 1,2 (8th port uses odd IRQ set)
J9 - pins 2,3 (card address is 00)
J10 - pins 2,3
J85 - open (IRQ3 disabled)
J86 - shorted (IRQ5 enabled)
J87 - open (IRQ7 disabled)
J88 - open (IRQ6 disabled)
J89 - open (IRQ4 disabled)
J90 - open (IRQ2 disabled)
P2 - short middle 2 pins (odd IRQ chain terminated)
P3 - short middle 2 pins (even IRQ chain terminated)
DS1 - 1010 1111 11 (status port enabled at 140H)
DS2 - 1011 1111 (1st port enabled at 100H)
DS3 - 1011 1101 (2nd port enabled at 108H)
DS4 - 1011 1011 (3rd port enabled at 110H)
DS5 - 1011 1001 (4th port enabled at 118H)
DS6 - 1011 0111 (5th port enabled at 120H)
DS7 - 1011 0101 (6th port enabled at 128H)
DS8 - 1011 0011 (7th port enabled at 130H)
DS9 - 1011 0001 (8th port enabled at 138H)
The driver installation line in your CONFIG.SYS file (assuming that you placed the driver in the
"C:\DIGI\" directory) should be:
DEVICE=C:\DIGI\DGX.SYS /N:5 /P:140 /I:5
You should place this line right after the line that installs the COM.SYS driver, or at the end of
the CONFIG.SYS file if you are not using COM.SYS.
Installing a second PC/8 card gets a little more tricky, since you will be just about of free IRQs at
this point. Because the PC/8 card lacks the second foot of the ISA bus, which contains the signals for
IRQ9 through IRQ15, you must select an IRQ between IRQ0 and IRQ7. The standard usages for
IRQ0 through IRQ7 on an ISA bus are:
IRQ0 - Timer 0 Output (This is what makes the speaker beep, and is built into your motherboard
and you can't disable it.)
IRQ1 - Keyboard (This, also, is built into your motherboard and you can't disable it.)
IRQ2 - Cascade from IRQ9 through IRQ15 (This, also, is built into your motherboard and you
can't disable it.)
IRQ3 - COM2 (You can free up this IRQ by taking out your standard COM2 port.)
IRQ4 - COM1 (You can free up this IRQ by taking out your standard COM1 port.)
IRQ5 - LPT2 (This is seldom used, but we already used it for the first PC/8 card, above.)
IRQ6 - Floppy Disk Controller (You can't free this one up because you can't boot your computer
if you take out the floppy disk controller.)
IRQ7 - LPT1 (You can free up this IRQ by taking out your LPT1 port.)
Assuming that you will want to keep a printer on your computer, and a standard COM1 port to
support a serial mouse, the most logical choice is to remove, or completely disable, the COM2 port
and use IRQ3 for the second PC/8 card. The DIP switches and jumpers on the second PC/8 card
should be set as follows:
J1 - pins 1,2 (1st port uses odd IRQ set)
J2 - pins 1,2 (2nd port uses odd IRQ set)
J3 - pins 1,2 (3rd port uses odd IRQ set)
J4 - pins 1,2 (4th port uses odd IRQ set)
J5 - pins 1,2 (5th port uses odd IRQ set)
J6 - pins 1,2 (6th port uses odd IRQ set)
J7 - pins 1,2 (7th port uses odd IRQ set)
J8 - pins 1,2 (8th port uses odd IRQ set)
J9 - pins 2,3 (card address is 00)
J10 - pins 2,3
J85 - shorted (IRQ3 enabled)
J86 - open (IRQ5 disabled)
J87 - open (IRQ7 disabled)
J88 - open (IRQ6 disabled)
J89 - open (IRQ4 disabled)
J90 - open (IRQ2 disabled)
P2 - short middle 2 pins (odd IRQ chain terminated)
P3 - short middle 2 pins (even IRQ chain terminated)
DS1 - 1001 1101 11 (status port enabled at 188H)
DS2 - 1010 1101 (1st port enabled at 148H)
DS3 - 1010 1011 (2nd port enabled at 150H)
DS4 - 1010 1001 (3rd port enabled at 158H)
DS5 - 1010 0111 (4th port enabled at 160H)
DS6 - 1010 0101 (5th port enabled at 168H)
DS7 - 1010 0011 (6th port enabled at 170H)
DS8 - 1010 0001 (7th port enabled at 178H)
DS9 - 1001 1111 (8th port enabled at 180H)
The driver installation line for two PC/8 cards in this configuration would be:
DEVICE=C:\DIGI\DGX.SYS /N:5 /P:140 /I:5, /P:188 /I:3
If you plan to operate above 2400 Baud, attempting to use more that 16 non-intelligent ports will
probably not work because your computer will be "swamped" with interrupts. If you do desire to
install three or more PC/8 cards, you must find different IRQ numbers between 0 and 7 for them,
because the DGX.SYS driver does not support the chaining of interrupts using the P2 and P3 jumpers.
Some IRQ numbers can never be used, because they are reserved for system functions. These are:
IRQ 0 - Timer Zero Output. This is the "timer tick" interrupt that the operating system uses for
its real-time clock function and time-slicing.
IRQ 1 - Keyboard Input. This interrupt tells the computer when you type a key at the console
keyboard.
IRQ 2 - Interrupt Controller 2 Cascade. This interrupt is used to daisy-chain to IRQs 8 through
15.
IRQ 6 - Diskette Controller. This interrupt tells the computer when your floppy disk controller
finishes an operation.
Thus, the only IRQs available for use with PC/8 cards are 3, 4, 5 and 7. If you install four PC/8
cards you must give up your standard COM1, standard COM2, LPT1 and LPT2 devices. You, most
likely, will not be able to use a mouse or trackball, as most of these devices require an IRQ between 0
and 7 and there will be none available.
G.2.Digiboard PC/xi Recommended Installation
The recommended setup for a Digiboard PC/xi card will vary, depending on how much RAM
you have installed in your system. This card uses a dual-ported RAM, whose size may be 64 Kbytes,
128 Kbytes, 256 Kbytes or 512 Kbytes. An ISA bus can only access 16 Mbytes of RAM. If you have
16 Mbytes of RAM installed, then you will have to fit the dual-ported RAM into the space between
640K and 1 Mbyte. If you have 15 Mbytes of RAM, or less, then it is easiest to put the dual-ported
RAM between 15 Mbytes and 16 Mbytes.
In the first case, let us assume that you have 8 mbytes of RAM installed. You will want to put
the dual-ported RAM at an address that is 512K shy of 16 Mbytes, at F80000H. This allows you to
expand the size of the dual-ported RAM to the full 512K later on, if you desire. The DIP switches and
jumpers for the PC/xi card should be set as follows:
J1 - pins 2,3 (If you upgrade the card's local program memory from 16K to 64K, then you will
move J1 to pins 1,2.)
J2 and J3 - pins 2,3 (If you upgrade the size of the dual-ported RAM from 64K to 128K, 256K or
512K, then you will change these.)
DS1 - 1110 0000 001 (This sets the address of the dual-ported RAM to F80000H, and the I/O
port to 200H. 200H is normally the address of the second joystick adapter, which is seldom installed.)
DS2 - 0000 0000 (The OS/2 device driver for the PC/xi uses no IRQ.)
The driver installation line in your CONFIG.SYS file (assuming that you placed the driver in the
"C:\DIGI\" directory) should be:
DEVICE=C:\DIGI\XALL.SYS /N:5 /P:200 /M:F80000
You should place this line right after the line that installs the COM.SYS driver, or at the end of
the CONFIG.SYS file if you are not using COM.SYS.
If you DO have 16 Mbytes of RAM installed, then you MUST put the dual-ported RAM for the
PC/xi card between 640K and 1 Mbyte. You will never be able to expand the dual-ported RAM
beyond 128 Kbytes. In many cases, you will be limited to no more than 64 Kbytes of dual-ported
RAM because there will be other devices occupying memory between 640K and 1 Mbyte in your
computer. For systems having 16 Mbytes of RAM, the recommended configuration for the PC/xi card
is:
J1 - pins 2,3 (If you upgrade the card's local program memory from 16K to 64K, then you will
move J1 to pins 1,2.)
J2 - pins 2,3
J3 - pins 2,3 (If you upgrade the size of the dual-ported RAM from 64K to 128K, then you will
move this jumper to pins 1,2.)
DS1 - 0100 1111 001 (This sets the address of the dual-ported RAM to 0D0000H, and the I/O
port to 200H. 200H is normally the address of the second joystick adapter, which is seldom installed.
If you upgrade the dual-ported RAM to 128K, then you will change the RAM address to 0C0000H,
and change your VGA card to a CGA or monochrome card.)
DS2 - 0000 0000 (The OS/2 device driver for the PC/xi uses no IRQ.)
The driver installation line for the PC/xi card in this configuration would be:
DEVICE=C:\DIGI\XALL.SYS /N:5 /P:200 /M:D0000
or
DEVICE=C:\DIGI\XALL.SYS /N:5 /P:200 /M:C0000
if you take out your VGA card and upgrade the dual-ported RAM to 128 Kbytes.
G.3.Digiboard COM/xi Recommended Installation
The Digiboard COM/xi card has 256 Kbytes of on-board RAM, which is accessed through a
32K window that must be located between 640K and 1 Mbyte. The recommended installation for
OS/2 is:
J2 - pins 1,2 (This sets the I/O port address to 200H,
J3 - pins 2,3 which is normally reserved for the second
J4 - pins 2,3 joystick adapter.)
J5 through J14 - all open (The OS/2 device driver for the COM/xi card does not use an IRQ.)
J15 - pins 1,2 (This sets the dual-ported RAM address toJ16 - pins 2,3 0D0000H.)
J17 - pins 2,3
The driver installation line in your CONFIG.SYS file (assuming that you placed the driver in the
"C:\DIGI\" directory) should be:
DEVICE=C:\DIGI\XALL.SYS /N:5 /T:x /P:200 /M:F80000
You should place this line right after the line that installs the COM.SYS driver, or at the end of
the CONFIG.SYS file if you are not using COM.SYS.
G.4.Digiboard C/X Recommended Installation
A Digiboard C/X card may be configured in many ways, to provide an OS/2 system with, from
16, to 128 serial ports. The OS/2 device driver configures most of the operating parameters for the C/X
card(s) in your system. The only DIP switches and jumpers that you need to set up are those for
defining the card's I/O port address. Because you will most likely have 16 Mbytes of RAM installed
before you consider using this card, you will want to put its dual-ported RAM at address 0D0000H.
The following DIP switch and jumper settings should work in most systems:
J1 - pins 1,2 (This jumper is reserved for use by Digiboard. Do not change it.)
J2 - pins 2,3 (Change this to pins 1,2 if you want to use the RAM at 8 MHz instead of 10 MHz.)
J3 - pins 1,2 (This disables memory refresh for the C/X card.)
DS1 - 1111 (Use I/O port address 328H and 16-bit mode.)
The driver installation line for a C/X card, in its minimum onfiguration, with one 16-port
concentrator on RS-422 line 1,would be:
DEVICE=C:\DIGI\XALL.SYS /N:5 /T:I10 /P:328 /M:D0000
In the maximum configuration, with four 16-port concentrators, on each of the two RS-422 lines,
for a total of 128 serial ports, the device driver installation line would be:
DEVICE=C:\DIGI\XALL.SYS /N:5 /T:I44 /P:328 /M:D0000
G.5.Digiboard PC/Xem Recommended Installation
The Digiboard PC/Xem system is currently the highest performance serial port subsystem that
Digiboard makes. The OS/2 device driver configures most of the operating parameters for the PC/Xem
card(s) in your system. The only DIP switches and jumpers that you need to set up are those for
defining the card's I/O port address. Because you will most likely have 16 Mbytes of RAM installed
before you consider using this card, you will want to put its dual-ported RAM at address 0D0000H.
The following DIP switch and jumper settings should work in most systems:
DS1 - 1111 (Use I/O port address 328H and 16-bit mode.)
The driver installation line for a PC/Xem card would be:
DEVICE=C:\DIGI\XALL.SYS /N:5 /T:p /P:328 /M:D000