Category : Dbase (Clipper, FoxBase, etc) Languages Source Code
Archive   : TURBBS-1.ZIP
Filename : TURBO.DOC

Output of file : TURBO.DOC contained in archive : TURBBS-1.ZIP
Far from complete, but here it is...

Turbo Plus Bulletin Board System
Version 1.0

(August 87)
James Nickel

Table of Contents

System Design and Philosophy

If you want to skip the introductions and quickly setup the system,
then don't read all of the following. It is given only so the sysop,
or programmer may understand the design structure of the system. DO

Turbo Plus was designed with the concept that a BBS should be quick and
easy for both the user and the sysop to use. It was also designed to be
very flexible and adaptable. It can be made to look like a different board
depending on how you set it up. Future versions will allow you to choose
what letters select what commands, and which commands should be active and
non-active. Future versions will also allow scheduled events to happen.
Since the program is written in Clipper(compiled Dbase III +, with some
assembly language routines), most files are in Dbase format, and as such
are easily looked at, or editable.
As the program now sits, there are three main area's.

1. Main menu - all functions are accessed through here.
2. Message system - all messaging is done here, except sysop feedback.
3. File system - all upload/downloads/file listings are done here.

All menu's are text files that are editable with a word-processor such
as SideKick. All text files should be saved in ASCII format with no
extra control codes in them. This allows the menus for each board to
look very different.

There are 9 Dbase format database files. These are:

IDFILE.DBF - The user id's are stored in here.
LOG.DBF - Caller's log, should be cleaned out every couple days.
USRSTORY.DBF - Used for storing the last spot read.
COMMENTS.DBF - Comments left to the sysop are stored here...should also be
cleaned out every couple days.
CLMNLIST.DBF - This is where the list of columns is stored.
MSGHEAD.DBF - This is where the headers of the messages are stored.
MSGTEXT.DBF - This is where the text of the messages is stored.
MESSLAST.DBF - This is where information about the last message read by each
user in a particular message area is stored.
FILES.DBF - This is where all the file names of uploads/downloads is stored.

There are also related indexes to all the above files. The program
automatically creates them if they do not exist and maintains them.
However, as all indexes eventually do, they get corrupted and should
be re-created every so often.(Once a week is a good suggestion.) This is
currently done by simply deleting the .NTX files and then running the BBS
again. It will then re-create the indexes.

Clipper indexes and Dbase indexes are NOT compatible(as of the August 86
version of Clipper), therefore, if any changes in the DBF files are made
while inside Dbase, then the associated indexes should be deleted so they
may be re-created by the BBS, as the indexes will not be updated by Dbase.
If this is not done, there is a large possibility of all your data being
corrupted past the point of recovery! MAKE SURE TO DELETE YOUR INDEX

Commands and features

Since this is a quick release, I have not as yet finished this manual or
the program. In future versions I intend to
1) allow for event happenings, both internal and external,
2) allow re-definition of each letter so that the sysop may set up his/her
board the way he/she likes,
3) allow many more features definable by the sysop, including prompts
and message line lengths etc.
4) have functions to allow lookups in the file area based on file name, date,
and similar functions in the message areas to allow lookups on a topic,
date, person, and a on going conversation. I.E. a series of messages
where the people involved kept reply back to one another and you wish to
follow that one single conversation.

Currently, as the program stands, there are some functions missing that
would be useful.

Miscellaneous info because the manual isn't finished...neither is the

COMM_IO.ASM has been modified to accept Control-S and Control-C, from both
the serial port and the keyboard. Actually, the Control-S function from
the keyboard is supported by DOS itself, not by COMM_IO, so if a person
on the keyboard hits control-s and then control-c, it will not break out of
the output, cause his control-c is used by dos to restart output.
Control-C's are buffered into the input buffer so that one can check for
them from within the dbase program. This allows for faster output.
Before, you would have to concatenate your string into one long one before
output, so that the user would be able to break it if he/she felt like it.
But now that these control-c's are put into the buffer, (modem control-c's
into the COMM_IO buffer, and keyboard control-c's into the keyboard buffer,
the latter automatically), you can output a line at a time, check for the
control-c (both in the COMM_IO buffer, and the inkey function), and abort
if necessary, or continue. Since the COMM_IO routine stops output of
the string as soon as a control-c is input, (from either the keyboard or
serial port(as it does a non-destructive read of the keyboard)), program
control will then fall to your control-c checks. To the user, it will then
appear that the output was halted on the very character he pressed the
control-c on. Realistically, there is a very small pause between output
of each line when it does the control-c check. this delay would increase
if the user typed characters in (from the serial port only) as they are
checked and buffered.


There is now a reply feature in the
E-Mail areas.

1. You only need to hit Control-C
once to get a response. If you
hit it more than once, it will
be used on the next outputed
function. Eg. The next thing
to be output will be stopped.

2. Input is buffered. You can
type while the board is
outputing, and your typing
will appear at the next prompt.
Even if you hit Control-C or

3. You may chain commands together
by using a semi-colon between
commands. Just put a semi-
colon (;) anywhere you would
normally hit return. Eg. To
get to the E-Mail section and
begin reading new mail in
section 1:

4. To turn off the menu's(not get
them output all the time),
simply use the e[X]pert toggle

First off, there are a bunch of
new functions now. Especially in the
message areas. There is a mail check,
to allow you to look for your mail.
A [N]ew mail feature so you only have
to read the new mail. It also marks
mail as "Rec'vd" when it has been


The columns section was written with the idea that a board may have many
columns, both written by it's users, and gotten from elsewhere. Since past
experience has shown me that one columnist may have many columns out(some as
part of a series), it is a good idea to have those all on one menu.
However, if you have any amount of columns, it gets to be impossible to
fit all those columns all on one screen. Therefore, you have a list
of "column headings" which are like sub directories of a disk. Each of
these column headings can then have columns, or more column headings in them.
Those secondary column heading can have further column heading or columns.
For example:

1. Joe Blow's Columns.
1. Joe Blow's Useless Columns.
1. Joe Blow's Gumby Column.
2. Joe Blow's Stupid Column.
2. Joe Blow's Good Columns.
1. Joe Blow's Views on Nuclear Waste.
2. Joe Blow explain's Wood Working.
3. Joe Blow's Miscellaneous Columns.
1. Etc
2. John Smith's Columns.
3. Somebody's Columns.

This way each column can be catergorized and then sub-catergorized and further
sub-sub-catergorized to whatever extent you deem nescessary.
It works like this:
Each entry in the file has a column number. These are sequential in the
order they were entered starting from the top of the file. Then a filename.
(This may or may not be applicable..depending if the entry is a column
heading or not.) The filename may include a path. Then a logical variable
stating if the entry is a column heading or not. Then a column number that
the entry relates back to. Entries that are to be in the first menu should
relate back to column heading zero(0). For the above example, the file would
look approx. as follows:
(Depending on the order they were entered, but that would not affect the
processing of this program.)

1 No file name Joe Blow's Columns. T 0
2 No file name John Smith's Columns. T 0
3 No file name Somebody's Columns. T 0
4 No file name Joe Blow's Useless Columns. T 1
5 No file name Joe Blow's Good Columns. T 1
6 No file name Joe Blow's Miscellaneous Columns. T 1
7 C:\TURBO\COLUMNS\JOEGUMBY.TXT Joe Blow's Gumby Column. F 4
8 C:\TURBO\COLUMNS\JOESTUPD.TXT Joe Blow's Stupid Column. F 4
9 C:\TURBO\COLUMNS\JOENUCLR.TXT Joe Blow's Views on Nuclear Waste. F 5
10 C:\TURBO\COLUMNS\JOEWOOD.TXT Joe Blow explain's Wood Working. F 5

This process allows any number of layers of sub-catergorization.

Setting up
Setting up is easy...just type BBS S to use the setup routine. If you have
never run the program before, it will automatically take you into the setup
anyway. Just specify the paths for the questions asked. When typing in the
paths for the file areas, the field will scroll over to give you more room
for the path.
It is IMPERIATIVE that you have the MODE.COM program(DOS COMMAND) available
for the BBS to use. The next versions will not need it, but this one does
use it to set the modem speed. You must also be using COM1: with this
version, and you must have the settings for the serial port so that the
program can lower the DTR line(TR light on your modem, pin 20) and you must
not force the CARRIER detect to true.

Logging in
I have made one account called SYSOP with the password of SYSOP. It has
access level 5.(The highest). Normal users should get a 2. A access level
of 1 prevents a user from writing messages etc., and a access level 0
prevents the user from logging on at all, and gives him a nasty message.

Sysops commands.

In the columns area, the commands are @;A to add a column or column heading
and @;D to delete a column.

In the file area, the commands are:
K - kill a file
C - copy a file
R - run a DOS command.
To add a file to the listing, simply make sure the file is located in the
correct area, and [U]pload using [C]hecksum will bypass the
actual Xmodem routines for a local upload.

Other sysop commands are available from any prompt in the program. Simply
hit the F1 key for more help. The F10 key to quit the program only works
when you are sitting at the waiting for call prompt. To shell to DOS,
you must have the COMMAND.COM file available for the program to use.
Preferably, in the same directory as the data files.

From the main menu, there are two other commands.
@;C to look at the sysops comments.
@;N to view/browse the new users.

BROWSING files(F9)

When browsing files, there is a small bug in the program that is not yet
worked out. It does no damage, but it does not allow you to see all the
information on file. Normally, when browsing a file, to see information that
is further to the right(off screen), you press CTRL-CURSOR RIGHT and the
screen will shift....and the CTRL-CURSOR LEFT to get back to the start.
However, this bug will stop you from seeing all the fields that are to
the right of the screen. In order to see them, press CTRL-END, and it will
take you to the last field in the file, and then you can CTRL-CURSOR LEFT to
see them all.

Ending the program
It is important that you end or quit out of the program before you turn your
machine off. Otherwise the disk buffers do not get flushed and some
information will not get written. To end the program, when the program
is sitting at the waiting for call prompt, hit the F10 key.

That is it for now....good luck and I hope you enjoy it.
The real version should be out by December of '87. It will probably have
some file changes and field changes. For instance, I decided not to
incorporate many of the system setup functions, and they don't currently
do anything even though they are gotten from the user....I.E. the
MORE field in the IDFILE....or the Do you need linefeeds question...I have
decided to assume that all users will take linefeeds. Most terminal packages
can be set to need them etc. Fido does the same thing. Oh....and that
TEMP.DBF file is not really being used at the moment. It is necessary for
it to be there for the program to run, but the program doesn't really use

  3 Responses to “Category : Dbase (Clipper, FoxBase, etc) Languages Source Code
Archive   : TURBBS-1.ZIP
Filename : TURBO.DOC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: