home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 2 BBS
/
02-BBS.zip
/
bsys098b.zip
/
B&BSYSOP.DOC
< prev
next >
Wrap
Text File
|
1993-11-19
|
18KB
|
613 lines
-=-
The Bits & Bytes Bulletin Board System
B&BSYS
-=-
This documentation is for v0.98ß
-=-
All included material is copyright 1991-93 by:
Terje Flaar¢nning
Boks 455 Sentrum
N-7001 Trondheim
Norway
Voice: +47-PRIVATE
BBS: +47-DOWNNOW
-=-
Please note, the BITS0001 bulletin should also be read, it may include
important changes to the information in this file.
-=-
INDEX
-=====-
1 Introduction to B&BSYS
1.1 The history behind B&BSYS
1.2 B&BSYS vs. other BBS-systems
1.3 First time B&BSYS setup
2 Configuration of B&BSYS
2.1 CONFIGURATION WITH THE U(til) Co(nfig) COMMAND
2.1.1 General
2.1.2 Path names
2.1.3 File protocols
2.1.4 Archive programs
2.1.5 Nodes (Comms)
2.1.6 Timed events
2.1.7 Net-links
2.1.8 Areas
2.2 DOOR.BAT
3 Menu by menu in the B&BSYS interface
3.1 GLOBAL MENU FUNCTIONS
3.2 MAIN MENU
3.3 MESSAGE MENU
3.4 FILE MENU
3.5 BULLETIN MENU
3.6 CHAT MENU
8 Script language
8.1 Scripts called
8.2 Script variables
8.3 Script commands
9 Technical info
9.1 File structures
9.2 B&B |API
=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=I=
1 INTRODUCTION TO B&BSYS
══════════════════════
1.1 THE HISTORY BEHIND B&BSYS
─────────────────────────
My first meeting with modem-communications was in the summer of 1989 when
I realiced there was telephone connectors at the back of my PC (a old ITT
XTRA from 1984). I managed to connect to a local BBS and became a frequent
user there. But, my local BBS had to close down and I had to start calling
long distance which was not cheap. After a short while I got the idea to
start my own BBS. My first BBS was using the MBBS ((C) Mike Robertson) BBS-
system and was online from early 1990. I connected to national networks and
when I got more and more conferences the MBBS system became to small, it
only supported 75 conferences. Therefore I started to make my own BBS-system
which is known as "The Bits & Bytes Bulletin Board System" or B&BSYS for
short.
1.2 B&BSYS VS. OTHER BBS-SYSTEMS
────────────────────────────
B&BSYS is in many way like other BBS-systems. The main difference that it is
almost unlimited how big your system may grow. B&BSYS consist of a database-
structure so advanced that much bigger systems just can dream about it. This
system is not just another program but it is following major software
development rules.
B&BSYS has a user friendly interface and it is almost impossible to "break"
the system by doing bad commands or such.
1.3 FIRST TIME B&BSYS SETUP
───────────────────────
B&BSYS is easy to setup, and if you follow the following steps it should
be up and running in minutes.
[1] Unpack you archives, at current version there is a ZIP archive
with directories in it so you should use the "-d" parameter to
PKUNZIP.
[2] Run your serial number installation program. This program is the
one you got directly from me, it is named with your first name and
it is a small .EXE file.
[3] Start up B&BSYS with the "/INIT" parameter. Do not use the B&B.BAT
file to start, simply type B&BSYS /INIT.
[4] Type B&BSYS to make the B&B.BAT file.
[5] Now, start B&BSYS by typing B&B 0 (0 is your local SysOp node) and
register with the name "SYSOP SYSOP".
[6] When you are on B&BSYS command line, type $ to enter the SysOp menu
where you execute the Co(nfig) command and change the SysOpname under
the General section of the config. Then, leave the config editor.
[7] Now, go to the utility menu with the U(til) command and change your
name there also, use the N(ame) command.
[8] But before you do all this, print out this instruction or write it
down.
That is all, now you should configure your B&BSYS BBS as you wish by using
the Co(nfig) command in the SysOp menu. Good luck.
=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=2=
2 CONFIGURATION OF B&BSYS
═══════════════════════
2.1 CONFIGURATION WITH THE U(til) Co(nfig) COMMAND
──────────────────────────────────────────────
2.1.1 General
───────
Choose this option to edit the name of your BBS, the name of the current
SysOp, time-limit to give to new users, max inactivity time before automatic
logoff, access level given to new users, smallest normal access level.
2.1.2 Path names
──────────
Here you may edit information about a RAM-Disk (swap disk) just the drive-
letter followed by a colon should be entered. At the scratchpad field you
should give a complete path without a extension (place it on you RAM-Disk
if it is big) but with the ".".
CD-ROM Drive letters represent your CD-ROM players.
2.1.3 File protocols
──────────────
Some examples:
Letter: Z Name: ZModem OkErr: 0 Type: B_A
Path: C:\UTIL\DSZ.COM
Upload: port &p speed &s ha both rz &u
Download: port &p speed &s ha both sz &l
AutoRec: "**"#24
Letter: Y Name: YModem OkErr: 0 Type: B__
Path: C:\UTIL\DSZ.COM
Upload: -k port &p speed &s ha both rb &u
Download: -k port &p speed &s ha both sb &l
AutoRec:
Letter: S Name: HS/Link 1.20 OkErr: 0 Type: BBA
Path: C:\TELIX\HSLINK\FHSLINK.EXE
Upload: -P&p -B&s -U&u
Download: -P&p -B&s -U&u &l
AutoRec: "HS*"#2
2.1.4 Archive programs
────────────────
2.1.5 Nodes (Comms)
─────────────
2.1.6 Timed events
────────────
As I think you already have notified B&BSYS can run timed events. A event
consist of a entry in your system setup including when to run and such
information, you must also make a DOS batch file for the event.
The event batch files is to be placed in your B&BSYS root directory and
should be named EVENTxxx.ee (xxx is your prepadded node number and ee is
a prepadded event number which range from 01 to 10).
If you will make this batch files start other batch files, you MUST use the
CALL statment so the control is returned the the main batch file after
executing of a secondary batch.
2.1.7 Net-links
─────────
2.1.8 Areas
─────
2.2 DOOR.BAT
────────
B&BSYS has the ability to run doors (external program, games ... ) all
doors is executed via the DOOR.BAT file in your B&BSYS-root directory.
DOOR.BAT is called with these parameters:
DOOR.BAT [Node#1] [Node#2] [ComPort] [PortSpeed] [BaseAddr] [IrqVector]
[DoorName] [DoorCode]
Node#1 is the number of the node, this is not prefilled.
Node#2 is the number of the node, this is prefilled with zero's to a
length of three characters.
ComPort is current comport
PortSpeed is current comport speed
BaseAddr These are the base/irq data in the node setup (PS! Be sure to
IrqVector set these to the same values as your fossil driver)
DoorName The name or number of the door to be executed
DoorCode The B&BSYS DoorCode for current area
Expamles:
DOOR.BAT 3 003 1 19200 02e8 3 1 MAIN
DOOR.BAT 2 002 3 9600 03f8 4 TheGame GAME
=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=
3 MENU BY MENU IN THE B&BSYS INTERFACE
════════════════════════════════════
3.1 GLOBAL MENU FUNCTIONS
3.2 MAIN MENU
3.3 MESSAGE MENU
3.4 FILE MENU
3.5 BULLETIN MENU
3.6 CHAT MENU
=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=8=
8 SCRIPT LANGUAGE
═══════════════
B&BSYS offers a small script language to allow you to make you own look
of you BBS. The scripts are called before or after important internal
functions of B&BSYS. All scripts should be placed in the SCRIPTS sub-
directory.
8.1 SCRIPTS CALLED
──────────────
The following script files will be executed if they are present in the
SCRIPT sub-directory:
GOODBYE.* This script is executed when a user use the G(oodbye) command
to exit B&BSYS or just drop the line. The script does also
function as a goodbye bulletin.
LOGIN.* This script is executed just before the user gets his command
prompt (after display of users stats).
PREDOWN.* These scripts is executed before and after downloads, the scripts
POSTDOWN.* can be used to control download rules and so on, the scripts also
function as file transfer bulletins, but only with normal file
transfers.
PREUP.* Same as the *DOWN.* scripts but for uploads.
POSTUP.*
PREOPEN.* Same as the *DOWN.* scripts but for door usage. Be aware these
POSTOPEN.* scripts function in all areas.
PREREG.* These scripts is executed before and after a new users register.
POSTREG.*
U-[com].* Called from Utility menu if unknown command.
B-[com].* Called from Bulletin menu if unknown command.
C-[com].* Called from Chat/Node menu if unknown command.
$-[com].* Called from $ysOp menu if unknown command.
F-[com].* Called from File menu if unknown command.
R-[com].* Called from Read menu if unknown command.
G-[com].* Called from all menus if none of the above exits and unknown
command.
The astrix is a language key or just nothing for multilangual scripts.
8.2 SCRIPT VARIABLES
────────────────
In scripts you have several variables for you usage, these are:
&[1-9] User variables.
&ac Current area code.
&ad Current area door-code.
&af Current area file-code.
&an Current area name.
&td Current date.
&th Current time (hour).
&tm Current time (minute).
&tu Time used so far this logon, in minutes.
&u - - - USER RECORD VARIABLES
&ua1 First line of address
&ua2 Second line of address
&ual Accesslevel
&uc City
&ud# Number of downloads
&udk KB downloaded
&uf First name
&ul Last name
&umw Messages written
&umr Messages read (Not counted in B&BSYS yet)
&un Name
&uph Home phone
&upw Work phone
&uu# Number of uploads
&uuk KB uploaded
&uta Time allowed each 24 hours
&utl Time left when logging on (&utl - &tu = time left)
&utt Time totally used
&$ - - - SYSTEM DATA VARIABLES
&$v Display current B&BSYS version.
&$m Current menu level: M(ain), R(ead), F(ile) and so on.
&! - - - DISPLAY SETUP/MANIPULATION PROCEDURES
&!l Do linefeeds until cursor resides at the bottom screen line.
&!m Do more prompt.
&!w Wait for keypress before continue.
The variables can be used everywhere in your scripts.
8.3 SCRIPT COMMANDS
───────────────
A script language without commands is nothing so here they come to, these
commands are available for script programming:
@+ [uservar] [firstnumber] [secondnumber]
""
@- [uservar] [firstnumber] [secondnumber]
""
@* [uservar] [firstnumber] [secondnumber]
""
@/ [uservar] [firstnumber] [secondnumber]
""
@assign [uservar] [textstring]
"""""""
Assigns a textstring to a uservariable
"@assign 1 This is a string"
@command [commandline]
""""""""
Execute standard B&BSYS command from a script.
"@command Read Enter Sysop"
@delfile [filename] {filename} {filename} ...
""""""""
Delete one or more files on the harddisk.
"@delfile B&BSYS.EXE" (not try this)
@exit
"""""
End script execution and return to B&BSYS.
"@exit"
@file [filename]
"""""
Open a file for output, the file is created if it do not exist.
"@file scripts\tempfile.lst"
@goto [label]
"""""
Go to @[label].
"@goto firstlabel"
@if [firststring] [secondstring] [label]
"""
Compare two strings, if equal the goto [label] of not then continue.
"@if String String ThisLabel"
@if [firstnumber] [<|=|>] [secondnumber] [label]
"""
Compare two numbers, if condition is TRUE the goto [label] if not then
continue.
"@if 1 = 2 OneLabel"
@iffile [filename] [label]
"""""""
If file [filename] exist the goto [label] if not then continue.
"@iffile scripts\tempfile.lst"
@input [uservar] [prompt]
""""""
Let the user input a text string into the given uservar.
"@input 1 Type a command:"
@log [text]
""""
Write a line to node log file. If [text] start with "$" the text go to
the .SYS log instead of the normal node log.
"@log $User has failed"
@mod [uservar] [firstnumber] [secondnumber]
""""
@run [program] [parameters]
""""
Runs an external program.
"@run b&bsys.exe"
@rundos [program] [parameters]
"""""""
Same as @run, but this loads a new command interpreter before running
your program.
"@rundos b&b.bat"
@select [words] [prompt]
"""""""
Wait for user input.
"@select YesNo Delete message?" (this go to first @Y or @N after present
line)
@set [sysvar] [value]
""""
Set a specific system variable to given value.
[sysvar] [value]
menu M,R,B,F,C,$,U
@show [filename]
"""""
Type a textfile.
"@show scripts\tempfile.lst"
@write [text]
""""""
Write a text to open file, no CRLF included.
"@write This is a text"
@writeln [text]
""""""""
Write a text to open file, CRLF included.
"@writeln This is a text line"
=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=9=
9 TECHNICAL INFO
══════════════
9.1 FILE STRUCTURES
───────────────
B&BSYS.CFG - Main configuration file
~~~~~~~~~~
1 Version Str19 B&BSYS version which created file,
do never change this.
21 BoardName Str30 Your BBS's name
52 Country Str4 Net country code
57 Region Word Country region number
59 Node Word Region Board number
61 Board Str10 Board shortname
72 SysOpName Str30 SysOp's name
103 n/d
120 NewUserTimeLimit Word Time limit given to new users (min)
122 NewUserLevel Byte User level given to new users (0-15)
123 NormalUserLevel Byte Lowest normal user level (0-15)
124 ScratchPadPath Str79
204 PKUNZIPPath Str79
284 PKZIPPath Str79
364 JModemPath Str79
444 BiModemPath Str79
524 RAMDiskDir Str67
592 InactivityTime Word
594 n/u
779 n/d
793 n/d
853 HyperPPath Str79
933 PkArcPath Str79
1013 PkXArcPath Str79
1093 LHAPath Str79
1173 LYNXPath Str79
1253 CDROMDriveLetters Chars (1-10)
1263 n/u
Total file size is 4096 Bytes.
AREA*.DIR - Area file database main file
~~~~~~~~~
1 FileName Str12
14 Description Str46
61 Date.Year Word
Month Byte
Day Byte
65 Time.Hour Byte
Min Byte
67 UploadedBy LongInt
71 Size LongInt
75 Downloads Word
77 DirNo Word
79 Password Str8
88 UploadedTo LongInt
92 CDROM Byte
93 CDPath Str30
124 Flags
125 n/d
Total record size is 128 Bytes. Be sure to run complete file sort after
modifications to this file. Index files will be documented later.
9.2 B&B API
───────
B&BSYS has unlike other BBS-software products it's own Advanced Programmers
Interface (API), this API is active when the system shells to DOS in any
way (running doors, script @run and @rundos commands ... ). The API resides
on interrupt $63. AH register is command selector.
$00 INSTALLATION CHECK
Par: AL $00 - Just check
Ret: AX $1041 - B&BAPI installed
$01 PRINT STRING
Par: AL $00 - Normal output
$01 - Normal output with CR+LF
$02 - Same as $00 with access to system variables
$03 - Same as $02 with CR+LF
ES:DI - Address of TP-String
Ret: AH $F0 - Carrier lost
$02 READ STRING
Par: AL $00 - Normal input (Mixed case, no limitations)
ES:DI - Address of TP-String used as default string
Ret: AH $F0 - Carrier lost
$03 READ CHAR
Par: AL $00 - Return first char in buffer if any
$01 - Return first char in buffer or wait for key to return
Ret: AH $00 - Ok, normal AscII char received
$01 - Ok, control char received
$10 - No characters received
$F0 - Carrier lost
AL - Character
$04 MODEM DIRECT
Par: AL $00 - Put string in modem output buffer
AL $10 - Read string from modem input buffer
ES:DI - Address of TP-String
Ret: AH $00 - Ok, string sent/received