You are on page 1of 354

░░ ▄▄▄ ▄

▀██▌ ▄▄▄▄▄▄▄ ▓█ ▄▄▄ ▓█▄▄▄▄ ▄▄▄▄


▐█▀█▄█▀█▌ ██ ██▒█▄▄▄▄█▌ ▄▄▐█ ▐▓░gj!
▄ ▄▄ ▄▄█▓ ▀ ▓█ ▀█▄██ ▄▄▄█▓▐▓ ▐█▓█▄▄▄▄ ▄▄▄ ▄
██

Mystic BBS Software - SysOp Documentation


Created and Compiled by: grymmjack (grymmjack@sector7bbs.com)

Document Date: 02/18/02

NOTE: This ASCII text file uses 79 columns to insure readability


in most circumstances. You may also print this document on
3 hole punch paper and bind it as an 8 character margin is
present on the left side.

.---------------------------------------------------------------.
| |
| TABLE OF CONTENTS |
| |
+---------------------------------------------------------------+
| Section Description |
+---------------------------------------------------------------+
| |
| 1.0 ....... About Mystic BBS Software |
| 2.0 ....... Mystic BBS SysOp Resources |
| 3.0 ....... Installation |
| 4.0 ....... Starting Mystic BBS |
| 5.0 ....... Waiting for Calls |
| 6.0 ....... System Configuration |
| 7.0 ....... Maintaining your System |
| 8.0 ....... Customizing your System |
| 8.A ....... - Language Files |
| 8.B ....... - Display Files |
| 8.C ....... - Menus |
| 8.D ....... - MPL (Mystic Programming Language) Scripts |
| 9.0 ....... Technical Reference |
| 10.0 ...... Advanced Tips and Techniques |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| INDEX |
| |
+---------------------------------------------------------------+
| Section Description |
+---------------------------------------------------------------+
| |
| 1.0 ** ABOOUT MYSTIC BBS SOFTWARE... |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 1.1 ....... About the Documentation |
| 1.2 ....... Disclaimer |
| 1.3 ....... Minimum System Requirements |
| 1.4 ....... Software Features |
| 1.5 ....... Obtaining Official Mystic BBS Support |
| 1.6 ....... Donating to the Mystic BBS Software Project |
| 1.7 ....... Credits and Greetings |
| |
+------------------- -- - |
| |
| 2.0 ** MYSTIC BBS SOFTWARE SYSOP RESOURCES... |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
+------------------- -- - |
| |
| 3.0 ** INSTALLATION... |
| ~~~~~~~~~~~~~~~~~~ |
| 3.1 ....... DOS |
| 3.2 ....... OS/2 |
| 3.3 ....... Windows |
| 3.4 ....... Linux (telnetd) |
| 3.5 ....... Configuring your Modem |
| 3.6 ....... Configuring the Mystic BBS Telnet Server (WIN) |
| 3.7 ....... Configuring a Fossil Driver (BNU/X00/ADF) |
| 3.8 ....... Configuring a Virtual Fossil (NETMODEM/COMIP) |
| |
+------------------- -- - |
| |
| 4.0 ** STARTING MYSTIC BBS... |
| ~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 4.1 ....... DOS |
| 4.2 ....... OS/2 |
| 4.3 ....... Windows |
| 4.4 ....... Linux |
| 4.5 ....... Command Line Switches |
| 4.6 ....... ERRORLEVELS returned by Mystic BBS |
| 4.7 ....... Mystic BBS Error Codes |
| |
+------------------- -- - |
| |
| 5.0 ** WAITING FOR CALLS... |
| ~~~~~~~~~~~~~~~~~~~~~~~ |
| 5.1 ....... Wait For Calls Mode (W.F.C.) |
| 5.2 ....... Mystic BBS Telnet Server (WIN32 Version ONLY!) |
| 5.3 ....... Linux (telnetd) |
| |
+------------------- -- - |
| |
| 6.0 ** SYSTEM CONFIGURATION... |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 6.1 ....... The External Mystic BBS Config Utility (MCFG) |
| 6.2 ....... The Internal Mystic BBS Config Utility (WFC/SOP)|
| 6.2.A ..... - System Paths |
| 6.2.B ..... - Modem/Node Settings |
| 6.2.C ..... - General Settings |
| 6.2.D ..... - File Base Settings |
| 6.2.E ..... - Message Base Settings |
| 6.2.F ..... - Network Settings (ECHOMAIL) |
| 6.2.G ..... - Language Definition Editor |
| 6.2.H ..... - New User Settings 1 |
| 6.2.I ..... - New User Settings 2 |
| 6.2.J ..... - User Editor |
| 6.2.K ..... - Group Editor |
| 6.2.L ..... - Security Levels Editor |
| 6.2.M ..... - Event Editor |
| 6.2.N ..... - Archive Editor |
| 6.2.O ..... - Protocol Editor |
| 6.2.P ..... - Voting Booth Editor |
| 6.2.Q ..... - Message Base Editor |
| 6.2.R ..... - File Base Editor |
| 6.2.S ..... - Menu Editor |
| |
+------------------- -- - |
| |
| 7.0 ** MAINTAINING YOUR SYSTEM... |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 7.1 ....... Purge the BBS List (MBBSUTIL) |
| 7.2 ....... Sort the BBS List (MBBSUTIL) |
| 7.3 ....... Move Unavailable Files Offline (MBBSUTIL) |
| 7.4 ....... Pack the File Areas (MBBSUTIL) |
| 7.5 ....... Sort the File Areas (MBBSUTIL) |
| 7.6 ....... Purge Inactive Users (MBBSUTIL) |
| 7.7 ....... Pack the Users File (MBBSUTIL) |
| 7.8 ....... Pack the JAM Format Message Bases (MYSTPACK) |
| 7.9 ....... Pack the SQUISH Format Message Bases (3RDPARTY) |
| 7.10 ...... Backup your BBS on a Schedule |
| |
+------------------- -- - |
| |
| 8.0 ** CUSTOMIZING YOUR SYSTEM... |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 8.1 ....... Why you SHOULD Customize YOUR BBS |
| |
| 8.A ....... Language Files (*.TXT/*.LNG) |
| 8.A.1 ..... - Using the Language Prompt Editor |
| 8.A.2 ..... - Compiling Language Files |
| 8.A.3 ..... - Replacing a Prompt with a Display File |
| 8.A.4 ..... - Replacing a Prompt with an MPL Script |
| |
| - -- -------------------+
| |
| 8.B ....... Display Files (*.ANS/*.ASC) |
| 8.B.1 ..... - The Location of Display Files (<BBSDIR>\TEXT)
|
| 8.B.2 ..... - Random Display Files |
| 8.B.3 ..... - Creating and Showing your Own Display Files |
| 8.B.4 ..... - Display File Creation Tips and Techniques |
| 8.B.5 ..... - The Mystic BBS Template System |
| |
| - -- -------------------+
| |
| T 8.B.6 ..... - ANSICHAT.xxx T |
| T 8.B.7 ..... - ANSIEDIT.xxx T |
| T 8.B.8 ..... - ANSIFINF.xxx T |
| T 8.B.9 ..... - ANSIFLST.xxx T |
| T 8.B.10 .... - ANSIMLST.xxx T |
| T 8.B.11 .... - ANSIMRD.xxx T |
| T 8.B.12 .... - ANSIQUOT.xxx T |
| T 8.B.13 .... - ANSITELE.xxx T |
| 8.B.14 .... - AMSGHLP1.xxx |
| 8.B.15 .... - AMSGHLP2.xxx |
| 8.B.16 .... - BIRTHDAY.xxx |
| 8.B.17 .... - BLINDUL.xxx |
| 8.B.18 .... - CLOSED.xxx |
| 8.B.19 .... - DOWNLOAD.xxx |
| 8.B.20 .... - EMAILHLP.xxx |
| 8.B.21 .... - FEEDBACK.xxx |
| 8.B.22 .... - FGROUPx.xxx |
| 8.B.23 .... - FLAG1x.xxx |
| 8.B.24 .... - FLAG2x.xxx |
| 8.B.25 .... - FLISTHLP.xxx |
| 8.B.26 .... - FSEARCH.xxx |
| 8.B.27 .... - FSHELP.xxx |
| 8.B.28 .... - GROUPx.xxx |
| 8.B.29 .... - LOGOFF.xxx |
| 8.B.30 .... - LOGON1-9.xxx |
| 8.B.31 .... - NEWUSER.xxx |
| 8.B.32 .... - NONEWUSR.xxx |
| 8.B.33 .... - PRELOGON.xxx |
| 8.B.34 .... - PROTO.xxx |
| 8.B.35 .... - PROTOB.xxx |
| 8.B.36 .... - READHLP.xxx |
| 8.B.37 .... - READSHLP.xxx |
| 8.B.38 .... - SLxxx.xxx |
| 8.B.39 .... - TELECONF.xxx |
| 8.B.40 .... - TELEHELP.xxx |
| 8.B.41 .... - UPLOAD.xxx |
| T 8.B.42 .... - WFCSCRN.xxx T (note: in <BBSDIR>\DATA) |
| |
| Note: T = File uses Mystic Template System |
| |
| - -- -------------------+
| |
| 8.C ....... Menus (*.MNU) |
| 8.C.1 ..... - The Location of Menu Files (<BBSDIR>\MENU) |
| 8.C.2 ..... - Using the Menu Editor |
| 8.C.3 ..... - Menu Editor Hotkey Reference |
| 8.C.4 ..... - Creating Normal Lightbar Menus |
| 8.C.5 ..... - Creating Grid Lightbar Menus |
| 8.C.6 ..... - Stacking Menu Commands |
| |
| - -- -------------------+
| |
| 8.C.7 ..... - AUTOSIGNATURE Menu Commands (Ax) |
| 8.C.8 ..... - BBS LIST Menu Commands (Bx) |
| 8.C.9 ..... - GENERAL Menu Commands (Gx) |
| 8.C.10 .... - VOTING BOOTH Menu Commands (Vx) |
| 8.C.11 .... - TIME BANK Menu Commands (Tx) |
| 8.C.12 .... - FILE BASE Menu Commands (Fx) |
| 8.C.13 .... - FILE BATCH QUEUE Menu Commands (Qx) |
| 8.C.14 .... - MESSAGE BASE Menu Commands (Mx) |
| 8.C.15 .... - MULTINODE Menu Commands (Nx) |
| 8.C.16 .... - OFFLINE MAIL (QWK) Menu Commands (Ox) |
| 8.C.17 .... - DOOR Menu Commands (Dx) |
| 8.C.18 .... - MATRIX Menu Commands (Xx) |
| 8.C.19 .... - SYSOP Menu Commands (*x) |
| 8.C.20 .... - MISCELLANEOUS Menu Commands (-x) |
| |
| - -- -------------------+
| |
| 8.D ....... MPL (Mystic Programming Language) (*.MPS/*.MPE) |
| 8.D.1 ..... - Using the MPL IDE (MIDE) |
| 8.D.2 ..... - Using the MPL COMPILER (MPLC) |
| 8.D.3 ..... - Introduction to MPL |
| 8.D.4 ..... - Sourcecode Comments |
| 8.D.5 ..... - Operation Types and Precedence |
| |
| - -- -------------------+
| |
| 8.D.6 ..... - Defining VARIABLES |
| 8.D.7 ..... - Defining CONSTANTS |
| 8.D.8 ..... - Defining PROCEDURES |
| 8.D.9 ..... - Defining FUNCTIONS |
| |
| - -- -------------------+
| |
| 8.D.10 .... - FOR Loops (FOR/FEND) |
| 8.D.11 .... - REPEAT Loops (REPEAT/UNTIL) |
| 8.D.12 .... - WHILE Loops (WHILE/WEND) |
| 8.D.13 .... - IF Statements (IF/ELSE/ENDIF) |
| |
| - -- -------------------+
| |
| 8.D.14 .... - USES Clause (INCLUDE Files) |
| |
| - -- -------------------+
| |
| 8.D.15 .... - String and Integer Functions |
| 8.D.16 .... - Disk Access Functions |
| 8.D.17 .... - Date and Time Functions |
| 8.D.18 .... - BBS Data Access Functions |
| 8.D.19 .... - Input Functions |
| 8.D.20 .... - Output Functions |
| 8.D.21 .... - Miscellaneous Functions |
| |
+------------------- -- - |
| |
| 9.0 ** TECHNICAL REFERENCE... |
| ~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 9.1 ....... ACS System |
| 9.2 ....... MCI Display Codes |
| 9.3 ....... MCI Control Codes |
| 9.4 ....... Color Codes |
| 9.5 ....... Menu Editor Hotkeys |
| 9.6 ....... Local SysOp Hotkeys |
| 9.7 ....... Door System MCI Codes |
| 9.8 ....... Archive System MCI Codes |
| 9.9 ....... Protocol System MCI Codes |
| 9.10 ...... ERRORLEVELS returned by Mystic BBS |
| 9.11 ...... Mystic BBS Error Codes |
| 9.12 ...... ANSI.SYS Codes |
| |
+------------------- -- - |
| |
| 10.0 ** ADVANCED TIPS AND TECHNIQUES... |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 10.1 ...... Using AR Flags |
| 10.2 ...... Using the OK Flag |
| 10.3 ...... Creating GLOBAL Menu Commands |
| 10.4 ...... Using Random Display Files |
| 10.5 ...... Configuring File/Message Groups |
| 10.6 ...... Creating a Mandatory Voting Question |
| 10.7 ...... Creating a Mandatory Message Base for Sys. News |
| 10.8 ...... File Upload Testing |
| 10.9 ...... Stuffing the Input Buffer using MPL Scripting |
| 10.10 ..... Removing Pauses from Continuous Display Files |
| 10.11 ..... Using Mass Mail |
| 10.12 ..... Exporting All-Files Listing to HTML |
| 10.13 ..... Importing FILES.BBS Descriptions from CD-ROMs |
| 10.14 ..... Setting up Doors under DOS/OS/2 |
| 10.15 ..... Setting up Doors under Windows |
| 10.16 ..... Setting up Doors under Linux |
| 10.17 ..... Setting up Networked Message Bases (ECHOMAIL) |
| |
`---------------------------------------------------------------'
.---------------------------------------------------------------.
| |
| 1.0 ABOUT MYSTIC BBS SOFTWARE |
| |
+---------------------------------------------------------------+
| Section Description |
+---------------------------------------------------------------+
| |
| 1.1 ....... About the Documentation |
| 1.2 ....... Disclaimer |
| 1.3 ....... Minimum System Requirements |
| 1.4 ....... Software Features |
| 1.5 ....... Obtaining Official Mystic BBS Support |
| 1.6 ....... Donating to the Mystic BBS Software Project |
| 1.7 ....... Credits and Greetings |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (1.1) ABOUT THE DOCUMENTATION |
| |
`---------------------------------------------------------------'

A brief note on the documentation of the past


---------------------------------------------

The Mystic BBS Software SysOp Documentation was originally


written by
James Coyle a/k/a g00r00. This existing documentation was then
taken
and organized and appended/edited by Rick Christy a/k/a
grymmjack.

Not long ago, one of the problems plaguing Mystic BBS Software
was a
lack of solid, organized, verbose documentation. SysOps used to
have to
rely on each other more than anything in order to get things
done. This
is great, to see a community pulled together in union over a
great BBS
package is something to behold. But now all of our lives are
becoming
easier.

Goals of this Documentation


---------------------------

Through this documentation we hope you will be enabled to:


- Learn more about the Mystic BBS Software Project and it's
creators
- Gather knowledge / assistance from several resources on the
'net
- Install Mystic BBS Software successfully on all supported OSs
- Configure, Maintain, and Customize your Mystic BBS
- Master the Mystic Programming Language
- Peruse Advanced Tips and Techniques written by expert SysOps
- Learn methods to obtain Official Support for your system

Jumping to Sections
-------------------

For your convenience, I've put all of the ACTUAL section segments
of
the docs in this format:

(a.b.c) TITLE

A = Section B = Section Part C = Sub-section

So if you're not using the HTML/Windows HTML Help versions of the


docs,
you can simply find the section in the TOC or INDEX, and search
for
the section explicitly:

(ex: I'm looking for AUTOSIGNATURE Menu Commands, so in


my
text editor, I search for "(8.C.7)" which is listed
in
the index as what I want.)

In most text editors, this will take you directly to that


section. Note
you will have 2 matches for the above example because I
illustrated it
in these docs, do a Find Next, and you should go to AUTOSIGNATRE
Menu
Commands =D

Document Conventions
--------------------

To assist everyone in illustrating certain parts of the


documentation,
I've opted to format it differently. Below is a guide you can use
to
translate what each format is intended to illustrate:

Text in Uppercase
-----------------
Example: C:\MYSTIC\MYSTIC -L

This implies that a command is to be issued. Note


on
linux platforms, you would want to issue the
commands
as ./<lowercase illustration>. Upon finishing
this
command, you would then press [ENTER] to invoke
it.

Text in Brackets and Uppercase


------------------------------
Example: [ENTER]

This implies that you are to press the key listed


in
between the brackets on your keyboard.

Text in Braces
--------------
Example: See section {1.0}

This implies that there may be other


documentation of
value to you in the cross-referenced section
specified
between the braces.

Text in Greater/Less-Than
-------------------------

Example: MYSTPACK -PACK <-SKIPFIRST>

This implies that a command is to be issued, and


the
part(s) of the command enclosed in < and > are
optional
and may be ommited. Upon finishing this command,
you
would then press [ENTER] to invoke it.

Section Headings
----------------

Section headings divide the main blocks of the


docs.
Where each section begins, I've listed the INDEX
for
that particular section. This makes it easier on
you
because you don't have to go back to the top to
find
something in the same section. The format for
sections
follows:

.------------------------------------------------
---.
|
|
| (A) SECTION TITLE
|
|
|
+------------------------------------------------
---+
|
|
| A.B ....... SUB-SECTION TITLE
|
| A.B.C .... SUB-SECTION PART 1
|
| A.B.D ..... SUB-SECTION PART 2
|
|
|
`------------------------------------------------
---'
A = Section B = Section Part C = Sub-
section

For ease of reading, each section is separated by


a
series of 10 blank lines.

Sub-Section Headings
--------------------

Sub section headings divide the sub-section


content
from the rest of the section proper, and follow
this
format:

=====================================================

(A.B.C) SUB-SECTION NAME

-------------------------------------------------
----
A = Section B = Section Part C = Sub-
section

For ease of reading each sub-section is separated


by
a series of 5 blank lines.

Sub-Section Part Headings


-------------------------

Sub-section part headings divide the sub-section


part
from the sub-section within the section proper
and
follow this format:

(A.B.C) SUB-SECTION PART TITLE

—————————————————————————————————————————————————————
A = Section B = Section Part C = Sub-
section

For ease of reading each sub-section part is


separated
by 3 blank lines.

Content Headings
----------------

Content headings separate the sub-section part


contents
from one another in block form. They follow the
format
below:

Content Heading
---------------

Contents here.

For ease of reading each content block is


separated by
2 blank lines.

Screen Captures
---------------

Screen captures are enclosed by a series of equal


signs
such as this:
=======================================================
Screen Capture

A. Option A: My Option A Setting


B. Option B: Option B

=======================================================

For the sake of formatting and readability each


screen
capture begins with two linefeeds, and is ended
with
two linefeeds to separate it from the rest of the
file.

Authors Pledge
--------------

I grymmjack, pledge to you that I have taken great effort and


much time
doing these doc's. If something is incorrect I apologize. Realize
however, that the existing documentation is quite disorganized
and
completely scattered through several different text files and
versions
of the software itself.

Reporting Errors and Bugs in the Documentation


----------------------------------------------

If you find any errors, inconsistencies, or omissions in this


documentation, it is your duty as a SysOp to report them
immediately.

You may email grymmjack@sector7bbs.com at once. Please set the


first
word of your subject line to MYSTICDOCS. This will insure that
prompt
corrective action will be taken on this matter.

Obtaining the Official Documentation


------------------------------------

This documentation is available to you in several formats:

- ASCII Text (this format)


http://www.sector7bbs.com/mysticdocs/mdocs_txt.zip

- HTML
http://www.sector7bbs.com/mysticdocs/mdocs_htm.zip
- LIVE HTML
http://www.sector7bbs.com/mysticdocs

- Windows HTML Help


http://www.sector7bbs.com/mysticdocs/mdocs_chm.zip

Thanks Alot
-----------

Thanks for using Mystic BBS Software. It is our pleasure to serve


you
with appropriate and valuable documentation.

.---------------------------------------------------------------.
| |
| (1.2) DISCLAIMER |
| |
`---------------------------------------------------------------'

READ THIS NOW


-------------

By attempting to install Mystic BBS, you understand and agree


that the
author of Mystic BBS makes no guarantees that this program will
do
anything other than take up space on your drive. The author will
not be
held responsible for any damage caused by the use, or misues, of
Mystic
BBS or any of it's included programs. By continuing to use this
program
you hereby agree that the author shall not be held liable for any
reason, under any circumstance, due to the use of this program.
If you
do not agree with this disclaimer, delete this program and do not
use
it until you are willing to abide.

.---------------------------------------------------------------.
| |
| (1.3) MINIMUM SYSTEM REQUIREMENTS |
| |
`---------------------------------------------------------------'
The computer system which you intend to run your Bulletin Board
System
on must meet or exceed the following requirements.

Minimum Requirements using DOS


------------------------------

Minimum System Requirements to run Mystic BBS Software on top


of DOS
based Operating Systems:

- IBM compatible with at least a 286 CPU


- DOS v3.0 or compatible OS with SHARE.EXE loaded
- 512kB RAM
- 1 mB of disk space
- 300 buad modem or higher
- Revision 5 FOSSIL driver (such as X00 or BNU)

Note: While it is probably possible to run Mystic BBS


Software on a
286/12 with only floppy drives and a 300 baud modem, it
is
definitely NOT suggested.

Minimum Requirements using Windows


----------------------------------

Minimum System Requirements to run Mystic BBS Software on top


of
Windows based Operating Systems:

- IBM compatible with at least a 486 CPU


- Win32-compatible operating system such as:
* Windows 95
* Windows 98
* Windows 98 SE
* Windows ME
* Windows NT
* Windows 2000
* Windows XP
- 1 mB of disk space
- Serial modem or a virtual modem driver

Note: Mystic may also run under Windows 3.1 with Win32
installed,
as well as OS/2 with Win32 support, but it has not been
tested.

Minimum Requirements using OS/2


-------------------------------
Minimum System Requirements to run Mystic BBS Software on top
of IBM
OS/2 operating systems:

- IBM compatible with at least a 486 CPU


- OS/2 compatible operating system such as:
* OS/2 v2.1
* OS/2 Warp v3.0
* OS/2 Warp v4.0
- 1 mB of disk space
- Serial modem or a virtual modem driver

Notes: Mystic may also run under other versions of OS/2 as


well.

Minimum Requirements using Linux


--------------------------------

Minimum System Requirements to run Mystic BBS Software on top


of
Linux operating systems:

- IBM compatible with at least a 486 CPU


- Linux/BSD compatible operating system such as:
* Slackware
* Red Hat
* FreeBSD
- 1 mB of disk space
- Serial modem or telnetd

Note: Mystic may also run under other versions of Linux as


well.
Slackware, Red Hat, and BSD have been used and tested
successfully.

.---------------------------------------------------------------.
| |
| (1.4) SOFTWARE FEATURES |
| |
`---------------------------------------------------------------'

About Mystic BBS Software


-------------------------

Mystic BBS Software is a full featured BBS package written from


the
ground up. It is not a hack of any existing BBS software - it has
been
developed from scratch in highly optimized Pascal and Assembler
code.
The project goal for Mystic BBS is to produce a fast and reliable
BBS
package which offers features not found in any other BBS package,
and
features previously only found in expensive commercial packages.
At
this time, Mystic BBS is donation ware. It is free for use, but
if you
do run Mystic, it's asked that you make a donation towards future
development of Mystic BBS.

Mystic BBS(tm) is Copyright (c) 1997-2002 by James Coyle.


All Rights Reserved.

Features
--------

Mystic BBS Software SysOps enjoy the following:

- 100% Freeware License


- Native versions for DOS, OS/2, Windows, and Linux Operating
Systems
- 99% Customizable in both Appearance and Function
- Integrated and Robust Menu System
- Extensive Scripting Language (MPL)
- Simple and Painless Configuration and Installation
- Extensive Configuration Utilities
- JAM and SQUISH Message Format Support
- Optional Full-Screen Lightbar Accessible
Editors/Readers/Listers
- Offline Mail Support (QWK)
- Lightbar Menu Engine (Traditional and Grid)
- File Archive Viewing and Upload Testing
- Batch File Transfer Support
- Long File Names (WIN32 only!)
- Integrated Telnet Server (WIN32 only!)
- DOOR.SYS, CHAIN.TXT, DORINFO1.DEF, DOOR32.SYS Door Support
- Integrated Voting Booth System
- Integrated Rumors System
- Integrated Graffitti Wall (oneliners) System
- Integrated BBS Listing
- Integrated Electronic Mail with Inbox and Outbox
- Mass Email Support
- Robust MCI Display and Control Code System
- Extensive ACS System with Logical Evaluation and Precedence
- ANSI, ASCII, and VT-100 Emulation Support
- Superior Documentation :)
- Software is supported by the Original Author
- Several Official Extensions and Modifications
- An Abundance of 3rd Party Extensions and Modifications
- Stable and Reliabie operation under all supported Operating
Systems
- Availability of Internal Data Structures for use in
Pascal/C++/etc.
- CD-ROM File Area Support
- Ability to import FILES.BBS from CD-ROMs to Mystic File Areas
- Download of All-Files Listing via BBS or to HTML
- It's Mystic BBS, man! ;)

.---------------------------------------------------------------.
| |
| (1.5) OBTAINING OFFICIAL SUPPORT |
| |
`---------------------------------------------------------------'

Official Support
----------------

Support for Mystic BBS can be found all over the internet! Below
is a
list of internet support sites:

- World Wide Web


* http://www.mysticbbs.com/mystic
*
http://www.geocities.com/SiliconValley/Horizon/9426

- Electronic Mail
* g00r00@ptd.net

- Usenet News Groups


* alt.bbs.mystic

- Internet Relay Chat


* #mysticbbs (EFnet)

- Electronic Mailing List

You can join the Official Mystic BBS Software


mailing
list by sending email to "listserv@darktech.org"
with
the message body of: "subscruibe mystic". You
will then
receive a welcome message for the mailling list.
.---------------------------------------------------------------.
| |
| (1.6) DONATING TO THE MYSTIC BBS SOFTWARE PROJECT |
| |
`---------------------------------------------------------------'

A Note on Donations
-------------------

The Mystic BBS project is funded from donations. Donations of


computer
hardware and money are accepted, and can be made by using an
online
donation system and a credit card.

Credit Card Donations


---------------------

Credit card donations can be made online via the PayPal service.
PayPal
offers secure transactions over the Internet and accepts both
Visa and
Mastercard. Please follow the link below to use this service:

https://secure.paypal.x.com/xclick/ (continued on next


line)
business=g00r00@ptd.net&item_name= (continued on next
line)
Mystic+Software+Donation&return=http%3A//www.mysticbbs.com/mystic

phew! The web needs a reality check, eh?

Hardware Donations
------------------

If you have any old hardware lying around, you can email us and
see if
we could use it. Thanks!

.---------------------------------------------------------------.
| |
| (1.7) CREDITS AND GREETINGS |
| |
`---------------------------------------------------------------'

About Mystic BBS Software


-------------------------
Mystic BBS Software is a full featured BBS package written from
the
ground up. It is not a hack of any existing BBS software - it has
been
developed from scratch in highly optimized Pascal and Assembler
code.
The project goal for Mystic BBS is to produce a fast and reliable
BBS
package which offers features not found in any other BBS package,
and
features previously only found in expensive commercial packages.
At
this time, Mystic BBS is donation ware. It is free for use, but
if you
do run Mystic, it's asked that you make a donation towards future
development of Mystic BBS.

Mystic BBS(tm) is Copyright (c) 1997-2002 by James Coyle.


All Rights Reserved.

Credits
-------

This section gives some credit to some of the people who have
helped
make Mystic BBS what it is today. So check it out...

- The authors of the JAM message base proposal


* JAM(mbp) - Copyright 1993 Joaquim Homrighausen, Andrew
Milner,
Mats Birch, Mats Wallin. ALL RIGHTS RESERVED.

- Mark May
* Wrote a Pascal message base library which I've modded and
used
within Mystic BBS, starting with v1.03. In the near
future I
will be doing a total rewrite from scratch, but for quick
Squish support, his library works fairly well. (so far)
:)

- The authors of SPAWNO


* A small DOS shell swapper for Turbo Pascal which is used
in the
DOS version of Mystic BBS.

- Sonic
* Donated so much to the developement of Mystic BBS. If it
wasn't
for him, we wouldn't have any 32-bit versions of Mystic.

- QueTwo
* Registered mysticbbs.com for the convience of all of us!
I
appreciate it GREATLY Que! Thank you!

- Rick Christy (grymmjack)


* Drew the Mystic BBS Logo used in the installer
* Compiled and Created the new Documentation
* Donated $200.00 U.S. which helped to fund the Linux
version
* Alpha testing

- And lets not forget


All of the people who have made valuable bug reports,
suggestions, and monetary and hardware donations

- And last but certainly not least


All the SysOps who run and support Mystic BBS Software.
Thanks everyone. You're help is appreciated.

Donators
--------

The following people have made a considerable donation towards


the
future of Mystic BBS. So far the donations received from these
people
have given us our native Win32, OS/2 and Linux versions of Mystic
BBS.
Without these donations, those 32-bit versions of Mystic BBS
would have
never become a reality.

If you would like to make a donation [see section 1.6]

- SysOp: Sonic (djdave@desupernet.net)


BBS: The HUB
(telnet://magrathea.desupernet.net)

- SysOp: Ne1 (no email address on file)


BBS: Distorted Utopia (telnet://distorted.darktech.org)

- SysOp: QueTwo (quetwo@earthlink.net)


BBS: Children of Technology (telnet://cot.darktech.org)

- SysOp: grymmjack (grymmjack@sector7bbs.com)


- BBS: sector7 BBS (telnet://sector7bbs.com)

* If your name is listed here and you want information


changed
or removed, please send e-mail to me at g00r00@ptd.net.
To everyone that has made a donation: Thank you! Your donations
and
support are greatly appreciated - and will aid in keeping Mystic
BBS
alive and thriving! I can't thank you all enough!!!

- James Coyle (a/k/a


g00r00)

.---------------------------------------------------------------.
| |
| 2.0 MYSTIC BBS SOFTWARE SYSOP RESOURCES |
| |
+---------------------------------------------------------------+
| |
| Note: This information is somewhat redundant, but has been |
| including for the sake of consistency with the other |
| formats of the documentation. Obviously you can't |
| follow any internet links from a text file, so I've |
| instead listed all of the appropriate URLs next to |
| each item as needed. |
| |
| My apologies for being anal retentive about this. |
| - grymmjack |
| |
`---------------------------------------------------------------'

Official Mystic BBS Software Web Sites


--------------------------------------

- Mystic Development
* http://www.mysticbbs.com

- Mystic BBS Software Homepage


* http://www.mysticbbs.com/mystic

General BBS Web Sites


---------------------

- SysOps Corner
* http://sysopscorner.thebbs.org

- BBS Central
* http://bbscentral.kracked.com

- PC Micro BBS Archives


* http://archives.thebbs.org

- Digital Avatars BBS Review


* http://sdf.lonestar.org/~davatar/bbslist.htm

- Hax0rs BBS Listing


* http://www.unknownrealm.org/thelist

- Liquids Mystic BBS Support Page


* http://members.darktech.org/mystic

Mystic BBS Related Usenet News Groups


-------------------------------------

- alt.bbs.mystic
- alt.bbs.sysop

Examples of some Mystic BBS Systems Online


------------------------------------------

- sector7 BBS :: SysOp: grymmjack // (login/password=MYSTIC)


* telnet://sector7bbs.com

- Tir Tairngire :: SysOp: Jinx and Gremlin


* telnet://tirtairngire.org

- Dreamland BBS :: SysOp: Dream Master [DORE]


* telnet://dreamland.darktech.org

.---------------------------------------------------------------.
| |
| 3.0 INSTALLATION |
| |
+---------------------------------------------------------------+
| |
| 3.1 ....... DOS |
| 3.2 ....... OS/2 |
| 3.3 ....... Windows |
| 3.4 ....... Linux (telnetd) |
| 3.5 ....... Configuring your Modem |
| 3.6 ....... Configuring the Mystic BBS Telnet Server (WIN) |
| 3.7 ....... Configuring a Fossil Driver (BNU/X00/ADF) |
| 3.8 ....... Configuring a Virtual Fossil (NETMODEM/COMIP) |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (3.1) DOS |
| |
`---------------------------------------------------------------'

Step by Step Installation


-------------------------

1. Create a temporary directory on your hard disk. (ex: MD


C:\TEMP)

2. Unzip the Mystic BBS archive using a PKZIP compatible


decompression
program to a temporary directory on your hard disk.
(ex: PKUNZIP MBBS107D.ZIP C:\TEMP)

3. Change the active directory to the temporary one. (ex: CD


C:\TEMP)

4. Execute the Mystic BBS Software installer by typing INSTALL,


and
then pressing [ENTER].

5. When the INSTALL program loads, the default selection is


already set
to "Install Mystic BBS vx.xx". At this point, press [ENTER] to
start
the installation process.

6. Next you will be presented with a screen which contains all of


the
default system paths where Mystic BBS is to be installed. You
can
either use the defaults, or enter your own.

To change a path item, select it using the [UP] or [DOWN]


arrow keys
and then erase the existing contents using the [BACKSPACE]
key. Or
if you wish you may press [CTRL]-Y which will Yank the entire
line.

* TIP: The [CTRL]-Y key combination may be used anywhere line


input
is requested by Mystic BBS Software.
* TIP: Change the first path and the rest will be updated like
magic!

7. Once you are satisfied with your path configuration, press


[F2] to
begin the file installation portion of INSTALL.

Post Installation
-----------------

Now that you've installed Mystic BBS to your hard disk, you can
start
using it. For further installation and configuration
documentation see
sections {3.5 - 3.8}.

.---------------------------------------------------------------.
| |
| (3.2) OS/2 |
| |
`---------------------------------------------------------------'

Step by Step Installation


-------------------------

1. Create a temporary directory on your hard disk. (ex: MD


C:\TEMP)

2. Unzip the Mystic BBS archive using a PKZIP compatible


decompression
program to a temporary directory on your hard disk.
(ex: PKUNZIP MBBS107D.ZIP C:\TEMP)

3. Change the active directory to the temporary one. (ex: CD


C:\TEMP)

4. Execute the Mystic BBS Software installer by typing INSTALL,


and
then pressing [ENTER].

5. When the INSTALL program loads, the default selection is


already set
to "Install Mystic BBS vx.xx". At this point, press [ENTER] to
start
the installation process.

6. Next you will be presented with a screen which contains all of


the
default system paths where Mystic BBS is to be installed. You
can
either use the defaults, or enter your own.

To change a path item, select it using the [UP] or [DOWN]


arrow keys
and then erase the existing contents using the [BACKSPACE]
key. Or
if you wish you may press [CTRL]-Y which will Yank the entire
line.

* TIP: The [CTRL]-Y key combination may be used anywhere line


input
is requested by Mystic BBS Software.

* TIP: Change the first path and the rest will be updated like
magic!

7. Once you are satisfied with your path configuration, press


[F2] to
begin the file installation portion of INSTALL.

Post Installation
-----------------

To make your life easier, you can create shortcuts to Mystic BBS
on
your OS/2 desktop. Consult the OS/2 documentation on how this is
done.

If you intend to run Mystic BBS and answer incoming telnet


connections,
you will need to setup SIO.

To obtain a copy of SIO, compliments of PC Micro BBS Archives:

ftp://archives.thebbs.org/fossil_drivers/sio160d.zip

The below settings should get you up and going with SIO:

- SIO_Idle_Sensitivity [100]
- _Mode_DTR [No change..]
- _Mode_FIFO_Load_Count [16]
- _Mode_IDSR [Ignore..]
- _Mode_OCTS [..RTS/CTS or Ignore/None]
- _Mode_ODSR [..DTR/DSR or Ignore/None]
- _Mode_RTS [No change..]
- _Mode_XON/XOFF [No XON/XOFF..]
- _Sync_Kludge [Off]
- _Share_Access_With_OS/2 [Off]
- _Virtual* [On]

For further documentation please check the SIO distribution.


Now that you've installed Mystic BBS to your hard disk, you can
start
using it. For further installation and configuration
documentation see
sections {3.5 - 3.8}.

.---------------------------------------------------------------.
| |
| (3.3) WINDOWS |
| |
`---------------------------------------------------------------'

Step by Step Installation


-------------------------

Note: On Windows NT/2000/XP systems make sure that you are logged
in
as a user that will have access to the directory you intend
to
install the software in.

1. Create a temporary directory on your hard disk. (ex: MD


C:\TEMP)

2. Unzip the Mystic BBS archive using a PKZIP compatible


decompression
program to a temporary directory on your hard disk.
(ex: PKUNZIP MBBS107D.ZIP C:\TEMP)

3. Change the active directory to the temporary one. (ex: CD


C:\TEMP)

4. Execute the Mystic BBS Software installer by typing INSTALL,


and
then pressing [ENTER].

5. When the INSTALL program loads, the default selection is


already set
to "Install Mystic BBS vx.xx". At this point, press [ENTER] to
start
the installation process.

6. Next you will be presented with a screen which contains all of


the
default system paths where Mystic BBS is to be installed. You
can
either use the defaults, or enter your own.
To change a path item, select it using the [UP] or [DOWN]
arrow keys
and then erase the existing contents using the [BACKSPACE]
key. Or
if you wish you may press [CTRL]-Y which will Yank the entire
line.

* TIP: The [CTRL]-Y key combination may be used anywhere line


input
is requested by Mystic BBS Software.

* TIP: Change the first path and the rest will be updated like
magic!

7. Once you are satisfied with your path configuration, press


[F2] to
begin the file installation portion of INSTALL.

8. If you are using an NT based operating system, make sure that


you
have permission to Read, Write, Change, and Execute all files
in the
Mystic BBS directory tree.

Post Installation
-----------------

Now that you've installed Mystic BBS to your hard disk, you can
start
using it. For further installation and configuration
documentation see
sections {3.5 - 3.8}.

.---------------------------------------------------------------.
| |
| (3.4) LINUX |
| |
`---------------------------------------------------------------'

Step by Step Installation


-------------------------

Note: DO NOT attempt to INSTALL Mystic from an x-term! You were


warned..

1. Log into your box as root.

2. Create a new directory where you want mystic to be installed.


(ex: cd /mystic)
3. Create a new user named bbs, and assign this users home
directory to
the same directory you plan to install Mystic in (ex:
/mystic). If
asked to choose a group for this user to belong to, enter bbs.
(ex: adduser bbs)

4. Create a temporary directory where you will decompress the


archive.
(ex: md ~/mysnix_install)

5. Decompress the Mystic BBS archive to the temporary directory.


(ex: unzip mysl_107.zip ~/mysnix_install)

6. Change the active directory to the temporary one.


(ex: cd ~/mysnix_install)

7. Type ./install then press [ENTER].

8. When the INSTALL program loads, the default selection is


already set
to "Install Mystic BBS vx.xx". At this point, press [ENTER] to
start
the installation process.

9. Next you will be presented with a screen which contains all of


the
default system paths where Mystic BBS is to be installed. You
can
either use the defaults, or enter your own.

To change a path item, select it using the [UP] or [DOWN]


arrow keys
and then erase the existing contents using the [BACKSPACE]
key. Or
if you wish you may press [CTRL]-Y which will Yank the entire
line.

* TIP: The [CTRL]-Y key combination may be used anywhere line


input
is requested by Mystic BBS Software.

* TIP: Change the first path and the rest will be updated like
magic!

10. Once you are satisfied with your path configuration, press
[F2] to
begin the file installation portion of INSTALL.

Post Installation
-----------------
Now that you've installed Mystic BBS to your hard disk, you need
to
work some other magic...

A. Many people will notice that their Linux box will not display
ANSI
and the ANSI character set correctly. The Mystic installation
program will automatically set Linux to use this character
set, but
after the system is rebooted or another program changes this
setting
it will be back to the way it was.

The easiest way to set Linux to use the USA/ANSI character set
is to
issue this command in the shell:

echo -e "\033(U"

You can add that to your bootup sequence if you wish, or just
manually issue it when you want it.

Note that Mystic sets Linux into RAW terminal mode while it's
running. This means that even if ANSI isn't displayed
correctly on
your local system, remote users can still see the ANSI as they
should - as long as their terminal supports ANSI emulation.

B. Assuming you followed Step 3 (you did follow it, right?),


you'll
want to setup Mystic BBS as the shell for the bbs user, and
also
disable the password. To do this, you'll need to edit the file
/etc/passwd with a text editor. To find the location of this
file,
refer to your Linux distributions documentation.

Once you're editing the /etc/passwd file, the line you're


looking
for should look something like this:

bbs:!%343t1a:1004:200:bbs:/users/bbs:/bin/sh

This fits the following format:

loginname:password:usernumber:usergroup:username:homedir:shell

The password, homedir, and shell fields need to be changed.


Remove
the password all together, then change the homedir to the
directory
you installed Mystic into. Finally, set the shell to run the
Mystic
binary in the Mystic directory. The result should look
something
like this:

bbs::1004:200:bbs:/mystic:/mystic

C. Now you need to set the security attributes on the Mystic


directory.
You need to make the bbs user OWN that directory and all files
that
reside within it. To do this, you can type:

chown -R bbs /mystic

The security attributes are the main cuase of weird actions


from
within Mystic. If one of the files Mystic needs to access is
owned
by someone other than the BBS user, Mystic will not be able to
access it. You can imagine that this can cause some problems!
=]

Also note that when Mass Uploading any files into the BBS, you
will
probably need to chown them so they belong to the BBS user. If
Mystic cannot access the file when a user tries to download
it, it
will not be sent.

Files that are uploaded via Z-Modem should be fine, because


they
were sent to your system by the BBS user.

As a general problem solving action, it's not always a bad


idea to
chown -R bbs /mystic whenever something isn't working or
you're
having a problem, just to make sure that everything is owned
by the
BBS user.

D. You can now optionally setup telnetd to forward all incoming


connections on port 23 to the BBS automatically -- which is
how a
BBS acts when used with a modem. With most Linux distributions
you
would simply telnet to the system and 'login' would take over
and
prompt the user for the login name (bbs is the suggested
name). With
this method the BBS login is seamless, the BBS will
automagically
appear for the user without any extra steps. This is a quick
and
dirty setup, we suggest you do a little more reading as this
may not
work on your system.

1. Log into your box as root.

2. Change directory to /etc

3. Edit inetd.conf with a text editor.

4. Add this line if it does not already exist:

telnet stream tcp nowait root /usr/sbin/tcpd


in.telnetsnoopd

This will define the parameters for the telnet login


which will
utilize the telnetsnoop feature in Linux. Why telnet
snoop is
required is still a mystery to the author... but, it
works!

5. Next, you need to create a back-door into your system


if you
want to be able to log into your box normally via
telnet
without accessing the bbs. To start this process,
insert the
following line into inetd.conf:

telnetbd stream tcp nowait root /usr/sbin/tcpd


in.telnetd

Note the telnetbd at the beginning, this is the name


of the
service. It doesn't have to be telnetbd, but it's good
to
keep it close to 'telnet'.

6. The next file we will edit is /etc/services. This is


where
you put the above definitions to work.

The first entry you need should already exist, so no


need to
change that:

telnet 23/tcp
telnet 23/udp

7. Next is your back door service, place this near the


end of
the file and put in the port number that you feel is
most
comfortable for you. For example below we are using
port
2000:

telnetbd 2000/tcp
telnetbd 2000/udp

8. Next we need to configure ttysnoop to start up the


bbs, we
do this by editing /etc/snooptab and putting the
following
line in. Note the last entry in this line, this
points to a
script in your main mystic directory.

* socket login /mbbs/runbbs

9. And finally we need to create the 'runbbs' script.


This
script will load mystic and run any other commands you
want
to run when you run the bbs. A simple example of this
script is below:

#!/bin/sh
echo -e "\033(U"
TERM=linux login -f bbs

Line 1: Tells the script to use sh as the shell.


Line 2: Enables 8 bit ansi display.
Line 3: Automatically logs the bbs user onto the system.

10. One final touch would be to create the .hushlogin


semiphore
file in the bbs users home directory (as defined in
the
/etc/passwd file) by running the following command:

touch .hushlogin

This file will force login to run quietly. Without it,


it
usually displays your kernel version and any other
important
and unsecure information to the user.

Now that you've installed Mystic BBS properly, you can start
using it.
For further installation and configuration documentation see
these
Linux specific sections, as well as the rest of the documentation
as
you need it :) (so what, favoritism never hurt anyone..)

Linux Specific Sections in this Documentation


---------------------------------------------

4.4 - Starting Mystic BBS


5.3 - Waiting For Calls
10.16 - Setting up Doors

In addition you may find the following sections useful


when
creating shell scripts:

4.5 - Command Line Switches


4.6 - ERRORLEVELS returned by Mystic BBS
4.7 - Mystic BBS Error Codes

.---------------------------------------------------------------.
| |
| (3.5) CONFIGURING YOUR MODEM |
| |
`---------------------------------------------------------------'

Begin System Configuration


--------------------------

Mystic BBS has two methods of configuration (and in the future


these
may be removed and centralized into one method);

- Internal Configuration
* This method involves invoking Mystic LOCALLY to
get
to the W.F.C. (Wait For Calls) screen, and can
be
achieved by using this command from the
directory
you installed Mystic in:

DOS/Windows/OS2: runbbs -L
Linux: ./mystic -l
Note: For a complete listing of Command Line
Switches
see section {4.5}

- External Configuration
* This method involves running the Mystic
configuration
utility bundled with the package (MCFG), and
can be
achieved by using this command from the
directory you
installed Mystic in:

DOS/Windows/OS2: mcfg [enter] (tough


huh? =] )
Linux: ./mcfg [enter]

Configure your Modem


--------------------

Depending on which method of configuration you employ, getting to


the
Modem Configuration is a little different...

From the WFC:

- Press S

- When presented with the System Configuration Menu,


Press B

From MCFG:

- Highlight Node Manager using your arrow keys.

- Press [ENTER]

- When prompted for a node #, enter your desired node #.


It's
generally a good idea to start with 1 and work upwards
:)

- Select Node Type using your arrow keys, and Press


[ENTER] to
assign this node to Dialup mode (which is necessary to
use
a modem within Mystic)

The Modem/Node setup is where all information about the modem


used on
the currently loaded node is defined. Mystic BBS requires the use
of a
FOSSIL driver in order to communicate with a modem. A FOSSIL
driver is
a program which is loaded before the BBS software and provides
the
software with an easy way to communicate with many different
types of
modem setups. Most FOSSIL drivers are free for non-commercial use
and
can be found on various BBSs and throughout the Internet. They
are
always available on the Mystic BBS web site and the Mystic BBS
support
BBS if they can not be found somewhere else.

Below is a screen capture of the Modem/Node Settings screen


followed by
an explanation of what each option does:

====================================================================

Node 1 Settings

A. Com Port : 4 B. Baud Rate :


38400
C. RTS/CTS Flow : Yes D. XON/XOFF Flow: No
E. Modem Init : ATZV1|
F. Modem Hangup : +++~~~~ATH0|~~~~
G. Modem Offhook: ATM0H1|
H. Modem "OK" : OK
I. Modem "RING" : RING
J. Modem "ATA" : ATA K. Telnet Node : Yes

1. 1200 : CONNECT 1200 2. 2400 : CONNECT 2400


3. 4800 : CONNECT 4800 4. 7200 : CONNECT 7200
5. 9600 : CONNECT 9600 6. 12000 : CONNECT 12000
7. 14400 : CONNECT 14400 8. 16800 : CONNECT 16800
9. 19200 : CONNECT 19200 10. 21600 : CONNECT 21600
11. 24000 : CONNECT 24000 12. 26400 : CONNECT 26400
13. 28800 : CONNECT 28800 14. 31200 : CONNECT 31200
15. 33600 : CONNECT 33600 16. 38400 : CONNECT 38400
17. 57600 : CONNECT 57600 18. 115200 : CONNECT 115200

Command (Q/Quit):

====================================================================

[A] Communication Port


----------------------
This defines the communication port that your modem is
setup on.
Valid communication ports are usually 1 through 4, but in
some
cases can be setup to use other ports. For more information
on
the Com Port, please refer to the instruction manual that
came
with your modem. If you are still having problems, try
reading
the documentation that came with the FOSSIL driver, or
possibly
the instruction manual for the operating system (ie
Windows, DOS,
OS/2) that is being used.

[B] Modem Baud Rate


-------------------
This option defines what modem speed to use with the FOSSIL
driver. Valid baud rates are currently 300 through 38400
although
some FOSSIL drivers allow baud rates up to 115200. For more
information on this setting, please refer to the
documentation
that came with your FOSSIL driver.

[C] RTS/CTS Flow Control


------------------------
This option defines whether or not Mystic BBS will open the
FOSSIL driver with RTS/CTS hardware flow control. Mystic
BBS has
this option toggled to Yes by default, and in most cases it
shouldn't need to be changed. For more information on
RTS/CTS
flow control, please refer to your modem or FOSSIL
documentation.

[D] XON/XOFF Flow Control


-------------------------
This option defines whether or not Mystic BBS will open the
FOSSIL driver with XON/XOFF software flow control. Mystic
BBS has
this option toggled to No by default, and in most cases it
shouldn't need to be changed. For more information on
XON/XOFF
flow control, please refer to your modem or FOSSIL
documentation.

[E] Modem Initialization Command


--------------------------------
This option defines the modem initialization command, which
is
sent to the modem upon the startup of Mystic BBS. This
command is
used to set the modem to work with Mystic BBS. By default,
Mystic
BBS expects your modem to NOT answer the phone when a ring
is
detected, and to return verbose connect strings such as
CONNECT x
(where x is the baud rate). With many modems these options
are
already on by factory default, but in some cases they are
not. If
Mystic BBS is having problems answering incoming calls,
please
refer to your modem manual for the proper modem commands.

[F] Modem Hangup Command


------------------------
This option defines the modem hangup command, which is sent
to
the modem after a user terminates the call to the BBS. This
command should tell your modem to hangup if it is connected
to
another modem. In many cases, the default hangup command
will
work, but in some cases it will not. If Mystic BBS is
having
problems hanging up the phone after each call, you may need
to
refer to your modem instruction manual for modem commands
that
will work.

[G] Modem Offhook Command


-------------------------
This option defines the modem offhook command, which is
sent to
the modem before a local login. This command is used to
take the
modem offhook so if someone dials the BBS, the phone line
reports
a BUSY signal. In most cases the default offhook command
will
work, but if the BBS phone is still ringing during a local
logon,
you will need to refer to your modem instruction manual for
the
command to take your modem offhook.

[H] Modem "OK" Result


---------------------
This option defines the result string that your modem
returns
when a modem command has been sent successfully. In almost
all
cases "OK" is returned by a modem when a successful command
has
been entered, but if Mystic is having problems
communicating with
your modem, you may need to check your modem instruction
manual
to make sure that it returns an OK.

[I] Modem "RING" Result


-----------------------
This option defines the result string that your modem
returns
when a RING is detected. In almost all cases, a modem will
return
the text "RING", but if Mystic is having problems answering
incoming phone calls, you may need to refer to your modem
instruction manual and adjust this command accordingly.

[J] Modem "ATA" Command


-----------------------
This option defines the command that is sent to the modem
to make
it answer an incoming phone call. In almost all cases the
default
"ATA" command will work, but if Mystic is having problems
answering incoming phone calls, you may need to refer to
your
modem instruction manual and adjust this command
accordingly.

[K] Telnet Node


---------------
This option should be toggled on if this node is setup to
receive
callers via Telnet. This option will cause Mystic to return
"TELNET" as the user's baud rate as well as list "TELNET"
in the
WFC screen's Node Status window.

[1 to 18] Modem Connection Strings


----------------------------------
These commands are used to define the result strings that
your
modem returns when a connection has been made, and the
connection
speed that goes along with each result string. In some
cases the
default connection strings will work with your modem. If
Mystic
is not taking the user into the BBS after a connection has
been
made, you may need to refer to your modem instruction
manual to
see what baud rates your modem supports and the result
strings
that go along with each baud rate.

.---------------------------------------------------------------.
| |
| (3.6) CONFIGURING THE MYSTIC BBS TELNET SERVER (TSERVER) |
| |
`---------------------------------------------------------------'

Note: TSERVER is ONLY available in the Windows version of Mystic


BBS.

TSERVER is the Mystic BBS Telnet Server. It will answer incoming


connections on a port that you specify (default: 23). Assuming
you have
no firewall, or you know how to open up the port on the firewall
that
you decide to run TSERVER on, you should have literally no
problems.

Before you configure the Telnet Server, first you should


create/change
a TELNET node.

Mystic BBS has two methods of configuration (and in the future


these
may be removed and centralized into one method);

- Internal Configuration
* This method involves invoking Mystic LOCALLY to
get
to the W.F.C. (Wait For Calls) screen, and can
be
achieved by using this command from the
directory
you installed Mystic in:

DOS/Windows/OS2: runbbs -L
Linux: ./mystic -l

Note: For a complete listing of Command Line


Switches
see section {4.5}

- External Configuration
* This method involves running the Mystic
configuration
utility bundled with the package (MCFG), and
can be
achieved by using this command from the
directory you
installed Mystic in:

DOS/Windows/OS2: mcfg [enter] (tough


huh? =] )
Linux: ./mcfg [enter]

Create a TELNET Node


--------------------

Depending on which method of configuration you employ, setting up


a
node is a little different...

From the WFC:

- Press S

- When presented with the System Configuration Menu,


Press B

- Use the ] and [ keys to cycle to the node you wish to


edit

- Press K to toggle the node between Dialup and Telnet

- Press Q to quit

From MCFG:

- Highlight Node Manager using your arrow keys.

- Press [ENTER]

- When prompted for a node #, enter your desired node #.


It's
generally a good idea to start with 1 and work upwards
:)

- Select Node Type using your arrow keys, and Press


[ENTER] to
assign this node to TELNET operation

- Press [ESC] and save the changes

Telnet Server Options


---------------------

The only way to configure TSERVER is through MCFG. So launch MCFG


and
navigate the lightbar to System Configuration using your arrow
keys.
Once selected, press [ENTER]. In the next menu, highlight the
option
Telnet Server Options, and press [ENTER] again.

Below is a diagram of what you will see:

+------ TSERVER Options -------+


| |
| Telnet listening port: 23 |
| Start windows minimized: Yes |
| |
+------------------------------+

Telnet Listening Port


---------------------
This configuration option lets you change what port
TSERVER
will listen on to accept incoming connections. The
default
telnet port is 23, and we recommend you keep it this way
if
possible because all telnet clients use this default and
it
will make it easier on everyone if you conform! SHUT UP
AND
CONFORM BITCH! :)

Note: Make sure that you have no other telnet servers


running
on the same port as TSERVER. Windows NT/2K/XP by
default
have a telnet server service running. Make sure you
disable this service using the control panel!

Note: If you are behind a firewall, you must open the


port you
decide to run TSERVER on for INCOMING connections.
To do
this consult your firewall documentation.

Start windows minimized


-----------------------
This option allows you to launch Mystic nodes minimized
to the
task bar. This will prevent loss of focus in whatever you
may
be doing when someone calls. By default this option is
enabled,
and we recommend you keep it enabled. When this option is
set
to No, anytime TSERVER spawns a copy of Mystic, the
windows
focus will automatically bring that node to the
foreground and
annoy the hell out of you in the process :)

Blocking Individual IPs (The Ultimate Blacklist)


------------------------------------------------

TSERVER has a feature which allows you to ignore connection


attempts
coming from individual IP masks. To set this up, create a new
ASCII
text file in your DATA directory named IPBLOCK.TXT. Edit this
file,
and include one IP mask per line that you wish to block:

Examples:

204.186.*.*
24.67.213.*
24.13.48.22

The format for the mask is:

<#><#><#|*>.<#><#><#|*>.<#><#><#|*>.<#><#><#|*>

More Examples:

*.*.*.* Blocks everything! Heh.


*.*.*.13 The-unlucky-4th-octet-bastard-
ban!

When you're done adding all your enemies and people you hate to
this
list, save the file. TSERVER will now ignore incoming connections
on
all of the IPs matching the masks and full entries in IPBLOCK.TXT

.---------------------------------------------------------------.
| |
| (3.7) CONFIGURING A FOSSIL DRIVER (X00/BNU/ADF/ETC) |
| |
`---------------------------------------------------------------'

General Notes on Fossil Drivers


-------------------------------

Fossil drivers do the dirty I/O work in between Mystic BBS and
your
modem. They allow Mystic to take advantage of a single set of
routines
for all modems instead of 4,000 routines one for each modem.
Basically
that's the purpose of fossil drivers. Fossil drivers are
necessary
components of running a BBS under Mystic using analog modems.

Features of Common Fossil Drivers


---------------------------------

Most fossil drivers allow you to specify the communications port


your
modem is installed as in the BIOS, as well as the IRQ, hardware
address
and the locked baud rate.

Learn your hardware


-------------------

First thing you want to do before installing a fossil driver is


to
figure out what communications port (comport) your modem is
using, and
what interrupt (IRQ) is assigned to that port in your BIOS.

On most motherboards, you can get to a BIOS setup utility by


pressing
the [DEL] key before the machine posts and boots. Some OEM mfg's
like
Dell, Gateway, Compaq, HP, etc, have proprietary methods of
getting in
to the BIOS. If all else fails, shut down and power up your
computer,
and press [ESC] to see if any messages are displayed about how to
get
into the BIOS setup. If you still can't figure it out, try all
your
function keys. [F1] is a common OEM BIOS shortcut, as is [F10].
Your
particular computer may not even have a BIOS setup in it's
firmware.
If this is the case, odds are the hardware is configured with
software
you run after you boot into an operating system. A common example
of
this is the Plug'n'Play software configuration that came with
early
versions of Soundblaster AWE 32 cards. Refer to your
documentation if
you cannot get into the BIOS, and if you still can't figure it
out,
call tech support.

Once you're in the BIOS setup, locate the communications port


section.
There you should find (on most Phoneix and AMI chips at any rate)
the
information you're seeking.

Write down all the comport IRQs, and the comports I/O addresses.
That's
all you need, assuming you know WHICH comport your modem is
using. To
figure this out, open the case or follow the cable. :)

BNU
---

BNU is a Revision 5 fossil driver that has been around a long


time,
and has proven very stable under DOS based operating systems. One
thing
to note is that BNU references comports starting from 0. This
means
that comport 1 is referenced as 0, comport 2 is 1, 3 is 2, etc.

The basic usage of BNU that you'll need is simple:

Add the following to your CONFIG.SYS file:

DEVICE=<PATH_TO_BNU>\BNU.SYS /P1 /L1:38400,8N1

/P = The number of ports you wish to use at once. For


most
basic dialup systems you only have one modem, so use
1.

/L = Lock the baud rate. This is necessary for the


stability
and operation of most doors. 38400 is a commonly
supported
locked baudrate in most of the doors I've ever
tried, but
you can lower it if you have a slower modem. The
highest
available locked baud rate in BNU is 38400 (it's old
=])

What this does is makes your computer talk to your


comport
as fast as your comport talks to the users comport.

In this example, we're locking comport 2 (remember,


BNU
references ports starting at 0!) and locking it at
38400.

For further BNU usage, run BNU /H from the directory it's
installed to.

You can obtain BNU compliments of PC Micro BBS Archives at this


URL:

ftp://archives.thebbs.org/fossil_drivers/bnu170.zip

X00
---

X00 is another fossil driver, that is also very stable. This


driver
also references the comports starting at 0 just like BNU. This
means
that comport 1 is referenced as 0, comport 2 as 1, 3 is 2, etc.

The basic usage of X00 that you'll need is also simple:

DEVICE=<PATH_TO_X00>\X00.SYS B,1,38400,8N1 R=4096 T=4096

B = This locks the baud rate on comport 2 at 38400 with


8N1
parity. Unlike BNU, X00 supports beyond 38400; 57600,
and
115200 locked baud rates.

R = Set the receive buffer size to 4kB. This can be any


power
of two up to 32768. 4kB is a decent medium, and has
worked
well for me in the past.

T = Set the transmit buffer size to 4kB. This sets the


outgoing
buffer. Again 4kB seems to work just fine.

Setting non-standard comports in X00:

DEVICE=<PATH_TO_X00>\X00.SYS 1=2F8,IRQ4 B,1,38400,8N1

1 = Sets comport 1 (really com2, remember!) to be


assigned
to X00 as I/O 2F8 on IRQ4.

B = Locks the baud rate on com2 at 38400 using 8N1


parity.
For more help on setting up X00, check X00.DOC in the X00 package
which
can be obtained compliments of PC Micro BBS Archives at this URL:

ftp://archives.thebbs.org/fossil_drivers/x00153a.zip

ADF
---

ADF is yet another fossil driver. I've not used this, but it
looks easy
and I've heard of many people having great success with this
fossil.

The basic usage of ADF that you'll need is simple:

ADF 1 3F8 115200 4096 4096

1 = Port (remember starts at 0 so 1 = 2) is com2


3F8 = Hardware I/O address
115200 = Locked baud rate
4096 = Send buffer
4096 = Recieve buffer

Note: ADF runs as a TSR (Terminate and Stay Resident) Program.


This
means that you would place it in the RUNBBS.BAT file before
mystic loads. And upon exiting of mystic you would add:

ADF unload

Which would unload the TSR program and allow you to reload
it
clean when another user calls.

Example:

[RUNBBS.BAT]
@echo off
cls
echo Loading ADF Fossil Driver...
CD\MYSTIC\ADF
ADF 1 3F8 115200 4096 4096
mystic %1 %2 %3 %4
ADF unload

ADF is available from the generous folks at PC Micro BBS Archives


from the following URL:

ftp://archives.thebbs.org/fossil_drivers/adf_150.zip

Most common comport configurations


----------------------------------

To make things easier, I've opted to include the most common


comport
hardware configurations that are usually setup as defaults by
most BIOS
manufacturers.

PORT I/O IRQ


---- --- ---
COM1 3F8 4
COM2 2F8 3
COM3 3E8 4
COM4 2E8 3

.---------------------------------------------------------------.
| |
| (3.8) CONFIGURING A VIRTUAL FOSSIL (NETMODEM/COMIP) |
| |
`---------------------------------------------------------------'

General Notes on Virtual Fossil Drivers


---------------------------------------

Virtual fossil drivers are a more evolved fossil driver than even
their
ancestors BNU/X00/ADF, etc. These fossil drivers go a step
further as
they use Windows VxDs (virtual device drivers) to capture and
process
hardware signals to and from emulated comports. These drivers are
so
efficient that the software treats the emulated virtual port just
as it
would a real hardware comport. Sick, eh?

There are several different virtual fossil drivers available, and


they
all have their ups and downs. I'll cover the two most popular
ones
here; NetModem/32 and COM/IP

Virtual Fossil Drivers and Mystic Distributions


-----------------------------------------------

The Windows version of Mystic BBS does not work with some virtual
fossil drivers. Obviously the Linux version does not work at all
with
any of them because it's an entirely different platform. OS/2 has
a
fossil driver written by the guy who makes x00 (Ray Gwinn) called
SIO,
that comes packaged with virtual fossil support. This file is
available
from the PC Micro BBS Archives at:

ftp://archives.thebbs.org/fossil_drivers/sio160d.zip

NetModem/32
-----------

NetModem/32 was one of the first virtual fossils around. VCOM


came
first if I recall, but that's not important. NetModem/32 started
out as
a very promising project. It worked pretty good (sometimes) and
with
each new version it seemed to get worse. Still, people use it all
the
time, even though it's inferior now that others are available.

Authors Note (FROM GRYMMJACK): Dederick Allen is a greedy pompous


prick

Okay, moving along. You can figure out how to set NetModem/32 up
for
yourself -- it's pretty easy, but it doesn't work half the time
and it
crashes incessantly. Aside from that, it's the bees knees kid!

Get your own copy of this garbage here:

http://www.allensoftware.com/download.html

And if you get stuck, there is this HOW-TO (thank


demonic/liquid):

http://members.darktech.org/mystic/netmodem.htm

It should be noted that his piece of shit software does not work
under
real operating systems like NT/2000/XP..

COM/IP
------

COM/IP is a great product, but it's slower than NetModem/32 --


but the
stability of COM/IP compared to NetModem/32 more than makes up
for it!
It is beyond the scope of this documentation to give detailed
info on
how to setup this software, as the existing documentation is
quite
verbose and there is a HOW-TO also by demonic and hosted by
liquid,
that will help you further.

Get the HOW-TO at:

http://members.darktech.org/mystic/comip.htm

SYNCFOSS
--------

Synchronet Fossil Driver for ELEBBS is a great program that will


allow
you to run most doors. This driver only works under Windows
NT/2K/XP,
however. To obtain a copy of SYNCFOS visit the below URL:

http://www.elebbs.com/files/fos_200.zip

The archive comes with sufficient documentation to get you


started.

.---------------------------------------------------------------.
| |
| 4.0 STARTING MYSTIC BBS |
| |
+---------------------------------------------------------------+
| |
| 4.1 ....... DOS |
| 4.2 ....... OS/2 |
| 4.3 ....... Windows |
| 4.4 ....... Linux |
| 4.5 ....... Command Line Switches |
| 4.6 ....... ERRORLEVELS returned by Mystic BBS |
| 4.7 ....... Mystic BBS Error Codes |
| |
`---------------------------------------------------------------'
.---------------------------------------------------------------.
| |
| (4.1) DOS |
| |
`---------------------------------------------------------------'

Starting Mystic under DOS


-------------------------

You can start mystic in a number of ways through DOS:

- Directly and manually


- Through a batch file (*.BAT)
- Through a Windows shortcut (see section 4.3)

Starting Directly and Manually


------------------------------

1. Change to the directory which you installed Mystic.


(ex: CD\MYSTIC)

2. Type MYSTIC and press [ENTER].

Note: You may want to read about the various command line
switches Mystic BBS supports. See section 4.5 for
more
details on this topic.

Starting through a Batch File (*.BAT)


-------------------------------------

Batch files are ASCII text files that allow extended


functionality and
control in DOS. They consist of a series of sequential command
lines
which instruct DOS to do different things. Mystic BBS comes with
a pre-
-fab batch file which you can edit and use at your discretion.

The contents of the RUNBBS.BAT file is listed here:

Line #1 @echo off


Line #2 rem load FOSSIL driver here
Line #3 :start
Line #4 cd C:\S7BBS\
Line #5 mystic.exe %1 %2 %3 %4 %5
Line #6 if errorlevel 255 goto quit
Line #7 if errorlevel 1 goto quit
Line #8 goto start

Line #9 :quit
I will walk you through what each line of this file does, for
those of
you who don't know much about batch files.

Line 1 : Disables echoing of batch file output as it's executed.

Line 2 : rem is a REMark it's simply a comment, and in this


case,
it's instructing you to remove this line and replace it
with one that loads your TSR FOSSIL driver.

Line 3 : Is a label. It allows you to return to this portion of


the
batch file later. It's akin to a line number in BASIC
programming where you have 10 PRINT "MYSTIC RULES":
GOTO 10

Line 4 : Changes the active directory to the BBS directory, in


this
example my BBS is installed in C:\S7BBS, and mystic
generated
this file during the installation process so it knew
where to
go on this line.

Line 5 : Executes Mystic BBS with optional paramaters 1,2,3,4,


and 5.
The format for optional parameters when referenced in
DOS is
%# where # is the parameter number. Up to 9 parameters
are
supported by DOS, and there are ways of getting more.
Here
is a little more help on this since it's important:

mystic.exe -n5 -b0 -l

%1 = -n5 %2 = -b0 %3 = -l

Line 6 : If you [Q]uit from the WFC Mystic will exit and return
an
ERRORLEVEL of 255. ERRORLEVELs are a way batchfiles and
other
executables can interface with programs. So when we
[Q]uit
from the WFC Screen, we want to exit and not keep
restarting
the BBS, so the "goto quit" part lets us do just that.
As you
can see the label :quit is the last line in the file,
and
thus when we "goto" it, execution stops and we are
returned
to the DOS prompt.

Line 7 : If Mystic crashes for any reason, we will also want to


exit
back to the DOS prompt. When Mystic generates an
ERRORLEVEL
of 1, this signals us that it has had a Critical
Failure and
we can then "goto quit" again.

Line 8 : If none of these ERRORLEVELS are found when we exit


Mystic,
execution returns to the beginning of the batch file at
the
":start" label when we "goto start".

Note: This is a very basic RUNBBS.BAT. My own RUNBBS.BAT,


when
I was using it, was over 10kB in size -- it handled
all
of the necessary stuff for message networking,
system
maintenance, etc,. For more information on learning
DOS Batch Programming, search google for:

"batch file programming tutorial" :)

.---------------------------------------------------------------.
| |
| (4.2) OS/2 |
| |
`---------------------------------------------------------------'

Starting Mystic under OS/2


--------------------------

Depending on how you choose to run Mystic BBS under OS/2 the
details on
starting Mystic BBS vary. Below is an example that uses the WFC
Screen
to answer incoming calls. The syntax follows:

MYSTIC -N<node>

You should refer to the DOS instructions for Starting Mystic BBS
in
section {4.1} to learn how to start Mystic from a BATCH file.
.---------------------------------------------------------------.
| |
| (4.3) Windows |
| |
`---------------------------------------------------------------'

Starting Mystic under Windows


-----------------------------

You can start Mystic BBS from Windows in several ways. They are
outlined below:

- Explicitly from the Command Prompt


- From a Windows Shortcut
- Triggered by TSERVER when answering an incoming call

Explicitly from the Command Prompt


----------------------------------

1. Press [CTRL]+[ESC] to bring up your Start Menu


2. Press [R] to bring up the Run dialog
3. If you are using NT based OS's like NT/2K/XP type
CMD.EXE
and press [ENTER] to start a Command Prompt.

If you are using 9X/ME, type COMMAND.COM and press


[ENTER]
to start a Command Prompt.

4. Type CD\<DIR_YOU_INSTALLED_MYSTIC_INTO> and press


[ENTER]
5. Type MYSTIC -N<node> where <node> is a valid pre-
configured
node of your BBS. See section (4.5) for a complete
listing
of all the MYSTIC.EXE command line switches.

From a Windows Shortcut


-----------------------

1. To create a shortcut on your Start Menu for Mystic


BBS, open
Windows Explorer and select the directory you
installed
Mystic into in the left (directory) pane. Locate
MYSTIC.EXE
and left-click-drag it onto the Start button, and wait
for
the Start Menu to raise. Drag upwards to wherever you
want
to put this shortcut on your Start Menu, and release
the
mouse button.

2. Now open the Start Menu again, and right click on the
short-
-cut you just created and choose Properties. Change
the
command line to be: MYSTIC.EXE -N<node> where <node>
is a
valid pre-configured Mystic node. Change the working
dir. to
the directory you installed Mystic BBS into.

Note: This only works if you are running an OS that


has IE4
or higher installed such as Win98/ME/NT/2K/XP, or
Win95 with
IE4 and Active Desktop enabled.

For further instruction on shortcuts check your


Windows
documentation.

Triggered by TSERVER when answering an incoming call


----------------------------------------------------

If you are using TSERVER, each node on your BBS will


spawn a
new process of Mystic automatically for you. You can
configure
TSERVER to launch these processes minimized, or to show
them.
See section {3.6} for more information on TSERVER.

.---------------------------------------------------------------.
| |
| (4.4) Linux |
| |
`---------------------------------------------------------------'

Starting Mystic under Linux


---------------------------

If you are using Linux telnet server, you will not be able to see
any
of the activity in the Mystic session without using ttysnoop.
However,
you can manually start Mystic yourself using the following
commands:

1. cd /mystic (or the directory you installed to)


2. ./mystic -n<node> where node is a valid pre-configured
node

Tip: Because the Linux version of Mystic has no method to


chat
online with users, you could run a local node and
just
use the Teleconference within Mystic.

Monitoring activity
-------------------

Mystic BBS for Linux has no way to see what the user is doing.
All the
Mystic processes are seen only by the connecting user. There is a
way
to spy on the user by employing ttysnoop, but personally, I've
never
had a need for it. Instead this is what I did:

1. Login to a new VC - I had 12 setup, and used 5-8 to


monitor
each of my four nodes. You can configure yours however
you
like.

2. cd /mystic (or the directory you installed to)


3. cd logs
4. tail -f sysop.<#> where <#> is the node number you
wish to
monitor activity on.

What will this do? It will employ a really nifty command


in
Linux called tail, to follow in real-time the changes
made to
the sysop logs on the nodes you specify. This allows you
to
have some idea of what's happening on the board without
going
through the motions of installing/setting up ttysnoop.

Tip: Set your screen font to something that displays 50


rows,
this way you can see a better overview of what's
happening
and not have to scroll the output yourself.
Tip: You can monitor ALL of the logs in one VC by issuing
this
command:

tail -f sysop.*

This will follow all the logs for all nodes as they
are
changed and updated, in real-time.

Note: I have not setup ttysnoop to work with Mystic, but


I know
that Mystic runs in RAW mode, if that's any help.
If you
get ttysnoop to work and you can monitor the board
as it
is seen by the user, please email us and give us
the
details and steps you took to achieve success.

.---------------------------------------------------------------.
| |
| (4.5) COMMAND LINE SWITCHES |
| |
`---------------------------------------------------------------'

There are many command line options which can be used when
executing
Mystic BBS. For example, when starting Mystic for the first time,
the
option "-L" should be added on the command line. This will tell
Mystic
to run in "local" mode, meaning it will not try to communicate
with the
modem. This will need to be done in order to enter the Modem
Configuration and set up your modem properly.

Listing of Command Line Switches


--------------------------------

-L This option will tell Mystic BBS to run in local mode,


meaning
that it will not try to send any commands to the modem.
If
Mystic is returning a modem initialization error, then
this
command should be ran so the modem can be properly
configured
for Mystic BBS. This command is also useful if running an
external mailer or any type of front door software.
-Nx This option is used to specify which node of Mystic BBS
to run.
The x is replaced with the node number that is to be
loaded.
For many SysOps, this can be ignored. It is only needed
if
multinode operation is being used.

-Bx This option is used to tell Mystic BBS that a user has
already
been connected through other software. When this command
is
passed, Mystic BBS will skip the Waiting For Call screen
and go
directly to the user login procedures. The x is replaced
with
the baud rate which the user is connected at. This
command line
is normally used if you are running a mailer frontend, or
running Mystic BBS as a door from some other software.

-Tx This option is used along with the -B command to specify


the
maximum number of minutes to give the user. The x is the
number
of minutes the user will be able to remain online. This
command
is normally used when you are running your BBS from a
frontend
and the frontend software has an upcoming event.

-Uname This option is used along with the -B and -P commands to


attempt to login directly to the BBS as a user. The
<name> is
the username of the user. When a username has spaces in
it, you
must replace the spaces with the underscore (_).

-Ppass This option is used along with the -B and -U commands to


attempt to login directly to the BBS as a user. The
<pass> is
the password of the user. When a password has spaces in
it, you
must replace the spaces with the underscore (_).

Example: MYSTIC -N1 -B38400 -Usysop -Psystem_password

.---------------------------------------------------------------.
| |
| (4.6) ERRORLEVELS RETURNED BY MYSTIC BBS |
| |
`---------------------------------------------------------------'

Mystic BBS communicates with external entities such as other


programs,
batch files, and shell scripts through ERRORLEVELS.

ERRORLEVELS Listing
-------------------

0 Normal Exit
1 Critical Error
5 New FidoNet mail has been entered
6 New UseNet (newsgroup) mail has been entered
7 Both FidoNet and UseNet mail have been entered
255 [Q]uit command was issued from the WFC Screen

For more information about how to use ERRORLEVELS check your


operating
system, or command shells documentation.

.---------------------------------------------------------------.
| |
| (4.7) MYSTIC BBS ERROR CODES |
| |
`---------------------------------------------------------------'

Mystic BBS has several run-time error codes which can assist you
in
figuring out why something went wrong. If an error happens while
Mystic
BBS is running, it will return one of these codes in an error
message
to the user and then terminate the call. In the sysop log file
the
error code will be logged. Below is a list of what each of those
error
codes mean.

RUNTIME ERROR CODES


-------------------

1 Invalid function number


2 File not found
3 Path not found
4 Too many open files
5 Access denied
6 Invalid handle
8 Not enough memory
10 Invalid environment
11 Invalid format
12 Invalid file access code
15 Invalid drive number
16 Cannot remove current directory
17 Cannot rename across drives
18 No more files
100 Disk read error
101 Disk write error
102 File not assigned
103 File not open
104 File not open for input
105 File not open for output
106 Invalid numeric format
150 Disk is write-protected
151 Bad drive request struct length
152 Drive not ready
154 CRC error in data
156 Disk seek error
157 Unknown media type
158 Sector Not Found
159 Printer out of paper
160 Device write fault
161 Device read fault
162 Hardware failure
200 Division by zero
201 Range check error
202 Stack overflow error
203 Heap overflow error
204 Invalid pointer operation
205 Floating point overflow
206 Floating point underflow
207 Invalid floating point operation
208 Overlay manager not installed
209 Overlay file read error
210 Object not initialized
211 Call to abstract method
212 Stream registration error
213 Collection index out of range
214 Collection overflow error

.---------------------------------------------------------------.
| |
| 5.0 WAITING FOR CALLS |
| |
+---------------------------------------------------------------+
| |
| 5.1 ....... Wait For Calls Mode (W.F.C.) |
| 5.2 ....... Mystic BBS Telnet Server (WIN32 Version ONLY!) |
| 5.3 ....... Linux (telnetd) |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (5.1) WAIT FOR CALLS MODE (W.F.C.) |
| |
`---------------------------------------------------------------'

When Mystic BBS is executed, the first thing you will see is the
Waiting for Call Screen (WFC Screen) This screen will give you
access
to all of the configuration options of your BBS, as well as
answer any
incoming phone calls to your BBS.

WFC Screen Options


------------------

[SPACE] Local Login


-------------------
This option will allow the SysOp to log into the
BBS
system locally.

[#] Menu Editor


---------------
This option will allow all the menus that callers
will
see to be edited in almost any way possible. The
menu
system is the backbone of the BBS. For more
information
see the Menu Editor section {6.2.S}

[A] Archive Editor


------------------
This option will allow archive software to be
configured into the BBS for use in compressing
messages
and files. For more information, see the Archive
Editor
section {6.2.N}
[E] Event Editor
----------------
This option will allow system events to be
configured.
A system event can be used to automatically shell
to
the operating system and run any number of
utilities or
functions that you might want to run. For more
info,
see the Event Editor section {6.2.M}

[F] File Base Editor


--------------------
This option will allow the SysOp to set up the
file
base section where software can be transferred to
and
from the system. For more information, see the
File
Base Editor section {6.2.R}

[G] Group Editor


----------------
This option will allow the setup of "groups",
which can
be used to categorize both file and message bases
together. For more information on this, see the
Group
Editor section {6.2.K}

[L] Security Level Editor


-------------------------
This option will allow security access levels to
be
configured. For more information, see the
Security
Level Editor section {6.2.L}

[M] Message Base Editor


-----------------------
This option will allow message conferences to be
setup
in the BBS. Mystic supports local message bases
as well
as networked message bases (such as FidoNet) with
extra
3rd party utilities. For more information on
this, see
the Message Base Editor section {6.2.Q}

[P] Protocol Editor


-------------------
This option will allow file transfer protocols to
be
setup with Mystic BBS. File transfer protocols
are used
to transfer files to and from the BBS system. For
more
information, see the Protocol Editor section
{6.2.O}

[S] System Configuration


------------------------
This option is where all the general information
about
your BBS is defined. For more information, see
the
System Configuration section {6.0}

[U] User Editor


---------------
This option will allow editing of the user
database.
All information stored about each system user can
be
edited in the User Editor. For more information
see the
User Editor section {6.2.J}

[V] Voting Booth Editor


-----------------------
This option will allow the editing of the voting
booth
questions. For more information, see the Voting
Booth
Editor section {6.2.P}

[PGUP and PGDN] Node Status Window


----------------------------------
This option will allow the "node status" window
to be
scrolled. Mystic BBS currently supports up to 255
simultaneous connections, all of which have their
status listed in the status window.

[D] Shell to DOS


----------------
This option will allow the sysop to invoke a DOS
shell.
To return to Mystic BBS WFC Screen type EXIT
[ENTER].

[X] Answer Modem


----------------
This option will attempt to answer the modem
using the
predefined answer commands in the Modem Setup
portion
of System Configuration.

Tip: You can customize the way the WFC Screen looks! See
the
WFC Screen Template section {8.B.42} for more
information.

.---------------------------------------------------------------.
| |
| (5.2) MYSTIC BBS TELNET SERVER |
| |
`---------------------------------------------------------------'

The Mystic BBS telnet server (TSERVER) will need to be running in


order
to accept incoming connections using telnet protocol. You must
also
assign atleast one node to use telnet. For more information about
this
consult section {3.6}

When an incoming connection is detected, TSERVER will


automatically
spawn a process of Mystic BBS. In multinode situations, where
more than
one telnet node is configured, Mystic BBS will automatically
start the
next available node if nodes are already tied up by existing
callers.

TSERVER can be configured to minimize the spawned nodes to the


task bar
or to show them in a normal window. If you start the windows
minimized,
you will have to restore them by clicking on the task bar item
first.
After this, you can interact with your users in real-time.

.---------------------------------------------------------------.
| |
| (5.3) LINUX |
| |
`---------------------------------------------------------------'
Linux is a special case. Linux uses telnetd to listen for
incoming
telnet connections. To set this up see section {3.4}.

Unlike the DOS/OS2/Windows versions of Mystic, the Linux version


will
not allow you to interact with the users in real-time. There are
some
work arounds for this, such as ttysnoop and my own method. For
more
information see section {4.4}

.---------------------------------------------------------------.
| |
| 6.0 SYSTEM CONFIGURATION |
| |
+---------------------------------------------------------------+
| |
| 6.1 ....... The External Mystic BBS Config Utility (MCFG) |
| 6.2 ....... The Internal Mystic BBS Config Utility (WFC/SOP)|
| 6.2.A ..... - System Paths |
| 6.2.B ..... - Modem/Node Settings |
| 6.2.C ..... - General Settings |
| 6.2.D ..... - File Base Settings |
| 6.2.E ..... - Message Base Settings |
| 6.2.F ..... - Network Settings (ECHOMAIL) |
| 6.2.G ..... - Language Definition Editor |
| 6.2.H ..... - New User Settings 1 |
| 6.2.I ..... - New User Settings 2 |
| 6.2.J ..... - User Editor |
| 6.2.K ..... - Group Editor |
| 6.2.L ..... - Security Levels Editor |
| 6.2.M ..... - Event Editor |
| 6.2.N ..... - Archive Editor |
| 6.2.O ..... - Protocol Editor |
| 6.2.P ..... - Voting Booth Editor |
| 6.2.Q ..... - Message Base Editor |
| 6.2.R ..... - File Base Editor |
| 6.2.S ..... - Menu Editor |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (6.1) THE EXTERNAL MYSTIC BBS CONFIG UTILITY (MCFG) |
| |
`---------------------------------------------------------------'

Mystic currently has two methods of configuration. One of them is


the
external method of configuration and uses a program called MCFG.
MCFG
comes in all the different versions of Mystic BBS Software. In
the near
future, configuration MAY be simplified to only use MCFG. Of
course,
MCFG would be accessible to remote sysops through the DOOR32
interface.
And thus, make everything much easier on the programmer and the
user
alike.

Starting MCFG
-------------

The instructions for starting MCFG assume that you at a command


prompt
and have already changed the active directory to be the directory
that
you intalled Mystic BBS Software in.

DOS/WIN/OS2 : MCFG [ENTER]


Linux : ./mcfg [ENTER]

MCFG Command Line Switches


--------------------------

MCFG has several command line switches that you can use to jump
to
specific portions of the program. They are not prefixed with any
"/"
or "-" character, and are case insensitive. They are:

HELP Display the MCFG command line switches


MENUEDIT Start MCFG in the Menu Editor
LANGEDIT Start MCFG in the Language Editor
USEREDIT Start MCFG in the User Editor
FILEMAN Start MCFG in the File Manager
NODEMAN Start MCFG in the Node Manager

Note: When starting MCFG with a command line switch, pressing


[ESC]
will NOT return you to the Main Menu. It will exit the
program.
The reason being is so that you could create shortcuts or
batch
files on your system that launch individual components of
MCFG
and save you time. Exiting to the Main Menu would be
annoying.

Example: MCFG MENUEDIT would start MCFG in the Menu Editor, and
upon
exiting would exit or return you to the shell.

Using MCFG
----------

MCFG is a friendly and clean interface for configuring your


Mystic BBS.
It uses lightbar navigation. The option which is selected is the
one
that is highlighted by the lightbar. Pressing [ENTER] while an
option
is highlighted will start that portion of MCFG. To move the
lightbar,
use your [UP], [DOWN], [HOME], [END], [PAGEUP], [PAGEDOWN] keys.
At any
time you can return to the previous portion of MCFG by pressing
[ESC].
To exit the program entirely press [ESC] from the MCFG main menu.

When using the different parts of MCFG itself, use [UP], [DOWN],
[LEFT]
[RIGHT], [HOME], [END], [PAGEUP], [PAGEDOWN], and [ENTER] to
navigate
between the different fields. Note the bottom row contains a
status bar
which may have more hotkeys available in any of the parts.

Here is a screen capture of the MCFG Main Menu:

====================================================================
╒ Main Menu ══════════════════════════════╕
│ System Configuration │
│ Message Base Editor │
│ Message Group Editor │
│ File Base Manager │
│ File Group Editor │
│ Node Configuration │
│ Security Level Editor │
│ User Editor │
│ Menu Editor │
│ Language Editor │
│ Event Editor │
│ Archive Editor │
│ Node Manager │
│ Exit │
│ │
╘═════════════════════════════════════════╛

====================================================================

Using the Configuration


-----------------------

For more information on configuring your system using these tools


and
options refer to sections {6.2.A - 6.2.S}

.---------------------------------------------------------------.
| |
| (6.2) THE INTERNAL MYSTIC BBS CONFIG UTILITY (WFC/SOP) |
| |
`---------------------------------------------------------------'

Mystic can be configured using the internal system configuration


part
of Mystic. To get to the Internal Configuration options you need
to
either:

- Start Mystic BBS in WFC Screen mode


* Run MYSTIC -L
* Press [S] to enter System Configuration

- Log in to Mystic as the SysOp


* Type /* to access the SysOp menu
* Press [S] to enter System Configuration
* Enter the SysOp password

Screen capture of Internal Configuration


----------------------------------------

System Configuration

A. System Paths
B. Modem/Node Settings
C. General Settings
D. File Area Settings
E. Message Area Settings
F. Network Settings
G. Language Editor
H. New User Settings 1
I. New User Settings 2

Command (Q/Quit):

Using the Configuration


-----------------------

For more information on configuring your system using these tools


and
options refer to sections {6.2.A - 6.2.S}

.---------------------------------------------------------------.
| |
| (6.2.A) SYSTEM PATHS |
| |
`---------------------------------------------------------------'

The system paths option will allow you to setup and change the
directories that Mystic BBS will use to store and process it's
data
files. These paths are setup initially by the installation
program and
in most cases they don't need to be changed. The following
options are
available in the System Paths setup:

====================================================================
System Paths

A. System Path : C:\MYSTIC\


B. Data Path : C:\MYSTIC\DATA\
C. Message Base Path: C:\MYSTIC\MSGS\
D. System Logs Path : C:\MYSTIC\LOGS\
E. Protocol Path : C:\MYSTIC\FILES\
F. Archive Path : C:\MYSTIC\ARCS\
G. Local QWK Path : C:\MYSTIC\
H. File Attach Path : C:\MYSTIC\ATTACH\
I. Script Path : C:\MYSTIC\SCRIPT\

Command (Q/Quit):

====================================================================

[A] System Path


---------------
The system path is the main BBS directory where
MYSTIC.EXE and
its supporting files are located. In most all cases, this
directory never needs to be changed.

[B] Data Path


-------------
The data path is the directory where Mystic BBS will
store all
of it's data files. In almost all cases, this directory
never
needs to be changed.

[C] Message Base Path


---------------------
The message base path is the default directory where
Mystic BBS
will store it's message base data files. Mystic BBS also
allows
the option of storing each message base in a different
directory, but in most cases this is not needed and will
just
clutter up your hard drive. For more information on
storing
message bases in different directories, see the Message
Base
Editor section {6.2.Q}

[D] System Logs Path


--------------------
The system logs path is the directory where Mystic BBS
will
keep an updated log file of BBS activity. The log files
can be
used to see what each caller was doing while they were
online.
These files are not used by Mystic BBS at all and exist
for
information purposes only. It is a good idea to delete
the
files in this directory every so often so they do not
become
large and waste drive space.

[E] Protocol Path


-----------------
The protocol path is the directory where all external
protocol
drivers are stored. For more information on file
transfer
protocols, see the Protocol Editor section {6.2.O}

[F] Archive Path


----------------
The archive path is the directory where all external
archive
utilities are stored (ie PKZIP.EXE, RAR.EXE, ARJ.EXE,
etc). For
more information on archives, see the Archive Editor
section
{6.2.N}

[G] Local QWK Path


------------------
The local QWK path is the directory where Mystic BBS will
create QWK offline mail packets if the user is logged
into the
BBS locally. This directory usually points to the same
directory of your offline mail reader, if you use one.

[H] File Attach Path


--------------------
The file attach path is the directory where Mystic BBS
will
store files that are attached to messages. Mystic BBS
allows
users to optionally include a file to any message posted
on the
BBS system.

[I] Script Path


---------------
The script path is the directory where all compiled
Mystic BBS
Programming files are found. Mystic BBS supports an
internal
programming language that can be used by SysOps to create
games, utilities, or BBS enhancements with ease. For more
information see the MPL section {8.D}

Using relative paths


--------------------

Mystic supports what is called relative pathing. Relative pathing


only
uses portions of a path explicitly and inherits the rest from
either
the current working directory or the [A] System Path.

Below are some examples of relative pathing:

A. System Path : C:\MYSTIC\


B. Data Path : DATA\
C. Message Base Path: MSGS\
D. System Logs Path : LOGS\
E. Protocol Path : FILES\
F. Archive Path : ARCS\
G. Local QWK Path :
H. File Attach Path : ATTACH\
I. Script Path : SCRIPT\

In this example, all the paths except the System Path are
relative.
The relative paths are relative to the System Path itself, so
they
translate to be:

A. System Path : C:\MYSTIC\


B. Data Path : C:\MYSTIC\DATA\
C. Message Base Path: C:\MYSTIC\MSGS\
etc.

Under linux, you will want to use something like this instead:

A. System Path : /mystic


B. Data Path : data/
C. Message Base Path: msgs/
etc.

Which then translates to:

A. System Path : /mystic


B. Data Path : /mystic/data/
C. Message Base Path: /mystic/msgs/
etc.

Why use relative paths?


-----------------------

The benefit of using relative paths means you only have to worry
about
a single path (the System Path) for your entire BBS. You could
then
easily create a working backup copy of your entire system by
copying
the install directory to C:\MYSTIC2, and change the System Path
to
C:\MYSTIC2, and everything else would work perfectly fine through
the
relative pathing inheritance. Explicit pathing is the default,
but for
advanced users, you will definitely appreciate relative paths. No
only
are the main path configuration items relative, but ALL of Mystic
BBS
can work in either explicit or relative pathing mode. Neat huh?
=]
.---------------------------------------------------------------.
| |
| (6.2.B) MODEM/NODE SETTINGS |
| |
`---------------------------------------------------------------'

The Modem/Node setup is where all information about the modem


used on
the currently loaded node is defined. Mystic BBS requires the use
of a
FOSSIL driver in order to communicate with a modem. A FOSSIL
driver is
a program which is loaded before the BBS software and provides
the
software with an easy way to communicate with many different
types of
modem setups. Most FOSSIL drivers are free for non-commercial use
and
can be found on various BBSs and throughout the Internet. They
are
always available on the Mystic BBS web site and the Mystic BBS
support
BBS if they can not be found somewhere else.

Below is a screen capture of the Modem/Node Settings screen


followed by
an explanation of what each option does:

====================================================================
Node 1 Settings

A. Com Port : 4 B. Baud Rate : 38400


C. RTS/CTS Flow : Yes D. XON/XOFF Flow: No
E. Modem Init : ATZV1|
F. Modem Hangup : +++~~~~ATH0|~~~~
G. Modem Offhook: ATM0H1|
H. Modem "OK" : OK
I. Modem "RING" : RING
J. Modem "ATA" : ATA K. Telnet Node : Yes

1. 1200 : CONNECT 1200 2. 2400 : CONNECT 2400


3. 4800 : CONNECT 4800 4. 7200 : CONNECT 7200
5. 9600 : CONNECT 9600 6. 12000 : CONNECT 12000
7. 14400 : CONNECT 14400 8. 16800 : CONNECT 16800
9. 19200 : CONNECT 19200 10. 21600 : CONNECT 21600
11. 24000 : CONNECT 24000 12. 26400 : CONNECT 26400
13. 28800 : CONNECT 28800 14. 31200 : CONNECT 31200
15. 33600 : CONNECT 33600 16. 38400 : CONNECT 38400
17. 57600 : CONNECT 57600 18. 115200 : CONNECT 115200

Command (Q/Quit):
====================================================================

[A] Communication Port


----------------------
This defines the communication port that your modem is
setup on.
Valid communication ports are usually 1 through 4, but in
some
cases can be setup to use other ports. For more information
on
the Com Port, please refer to the instruction manual that
came
with your modem. If you are still having problems, try
reading
the documentation that came with the FOSSIL driver, or
possibly
the instruction manual for the operating system (ie
Windows, DOS,
OS/2) that is being used.

[B] Modem Baud Rate


-------------------
This option defines what modem speed to use with the FOSSIL
driver. Valid baud rates are currently 300 through 38400
although
some FOSSIL drivers allow baud rates up to 115200. For more
information on this setting, please refer to the
documentation
that came with your FOSSIL driver.

[C] RTS/CTS Flow Control


------------------------
This option defines whether or not Mystic BBS will open the
FOSSIL driver with RTS/CTS hardware flow control. Mystic
BBS has
this option toggled to Yes by default, and in most cases it
shouldn't need to be changed. For more information on
RTS/CTS
flow control, please refer to your modem or FOSSIL
documentation.

[D] XON/XOFF Flow Control


-------------------------
This option defines whether or not Mystic BBS will open the
FOSSIL driver with XON/XOFF software flow control. Mystic
BBS has
this option toggled to No by default, and in most cases it
shouldn't need to be changed. For more information on
XON/XOFF
flow control, please refer to your modem or FOSSIL
documentation.
[E] Modem Initialization Command
--------------------------------
This option defines the modem initialization command, which
is
sent to the modem upon the startup of Mystic BBS. This
command is
used to set the modem to work with Mystic BBS. By default,
Mystic
BBS expects your modem to NOT answer the phone when a ring
is
detected, and to return verbose connect strings such as
CONNECT x
(where x is the baud rate). With many modems these options
are
already on by factory default, but in some cases they are
not. If
Mystic BBS is having problems answering incoming calls,
please
refer to your modem manual for the proper modem commands.

[F] Modem Hangup Command


------------------------
This option defines the modem hangup command, which is sent
to
the modem after a user terminates the call to the BBS. This
command should tell your modem to hangup if it is connected
to
another modem. In many cases, the default hangup command
will
work, but in some cases it will not. If Mystic BBS is
having
problems hanging up the phone after each call, you may need
to
refer to your modem instruction manual for modem commands
that
will work.

[G] Modem Offhook Command


-------------------------
This option defines the modem offhook command, which is
sent to
the modem before a local login. This command is used to
take the
modem offhook so if someone dials the BBS, the phone line
reports
a BUSY signal. In most cases the default offhook command
will
work, but if the BBS phone is still ringing during a local
logon,
you will need to refer to your modem instruction manual for
the
command to take your modem offhook.

[H] Modem "OK" Result


---------------------
This option defines the result string that your modem
returns
when a modem command has been sent successfully. In almost
all
cases "OK" is returned by a modem when a successful command
has
been entered, but if Mystic is having problems
communicating with
your modem, you may need to check your modem instruction
manual
to make sure that it returns an OK.

[I] Modem "RING" Result


-----------------------
This option defines the result string that your modem
returns
when a RING is detected. In almost all cases, a modem will
return
the text "RING", but if Mystic is having problems answering
incoming phone calls, you may need to refer to your modem
instruction manual and adjust this command accordingly.

[J] Modem "ATA" Command


-----------------------
This option defines the command that is sent to the modem
to make
it answer an incoming phone call. In almost all cases the
default
"ATA" command will work, but if Mystic is having problems
answering incoming phone calls, you may need to refer to
your
modem instruction manual and adjust this command
accordingly.

[K] Telnet Node


---------------
This option should be toggled on if this node is setup to
receive
callers via Telnet. This option will cause Mystic to return
"TELNET" as the user's baud rate as well as list "TELNET"
in the
WFC screen's Node Status window.

[1 to 18] Modem Connection Strings


----------------------------------
These commands are used to define the result strings that
your
modem returns when a connection has been made, and the
connection
speed that goes along with each result string. In some
cases the
default connection strings will work with your modem. If
Mystic
is not taking the user into the BBS after a connection has
been
made, you may need to refer to your modem instruction
manual to
see what baud rates your modem supports and the result
strings
that go along with each baud rate.

.---------------------------------------------------------------.
| |
| (6.2.C) GENERAL SETTINGS |
| |
`---------------------------------------------------------------'

The General Settings section is where all the general options of


the
BBS are defined. Below is a screen capture of the General
Settings
screen followed by an explanation as to what each option does:

====================================================================
General Settings

A. BBS Name : sector7 BBS


B. Sysop Name : grymmjack (gj!)
C. System PW :
D. Sysop PW : SYSOP

E. Default Start MNU : MAIN 1. F1 Macro: !mchat


F. Default Fallback : MAIN 2. F2 Macro:
G. Default Language : DEFAULT 3. F3 Macro:
H. Max # of Nodes : 1 4. F4 Macro:
I. Screen Saver : 5
J. Inactive Timeout : 180 V. User Multiple Login: No
K. Chat Hours Start : 00:00
L. Chat Hours End : 23:59
M. Allow Sysop E-mail : Yes N. Sysop Chat Logging : No
O. Login Terminal Mode: Detect/Ask T. Def. Screen Length : 24
P. BBS List Editor ACS: s255
R. Invisible Login ACS: s255
S. Status Line Type : 1 line U. See Invisible ACS : s255

Command (Q/Quit):

====================================================================

[A] BBS Name


------------
This option is used to define the name of your BBS.

[B] System Operator (SysOp) Name


--------------------------------
This option is used to define the name of the System
Operator
(SysOp).

[C] System Password


-------------------
This option is used to define a system password, which
can be
used if you wish to run a private BBS system which only
someone
who knows the password can access. If this option is left
blank, the system password option will be disabled. If a
system
password is set, Mystic BBS will prompt the caller for
the
system password IMMEDIATELY after connecting to the BBS -
before displaying anything else. If the user does not
correctly
enter the system password, the display file CLOSED.XXX
will be
displayed, and the call will be terminated.

[D] Sysop Password


------------------
This option is used to define the Sysop password. Any
time one
of the Sysop-related menu commands or functions is
selected,
the user will have to correctly input this password in
order to
access that Sysop function.

[E] Default Start Menu


----------------------
This option is used to define the default start menu. The
start
menu is the first menu that the user will see after
logging
into the BBS. It can be optionally defined by security
level,
or for each individual user. If a start menu is NOT
defined for
the user's security level or for that specific user,
Mystic BBS
uses the default start menu as the first menu that the
user
will see. For more information on the start menu, see the
Security Level Editor section {6.2.L} and/or the User
Editor
section {6.2.J}

[F] Default Fallback Menu


-------------------------
This option is used to define the default fallback menu.
The
fallback menu is the menu that is loaded if the menu the
user
is trying to access doesn't exist. The fallback menu can
be set
for each menu in the Menu Editor, but if a fallback menu
is not
defined for the menu the user is trying to access, Mystic
will
use the default fallback menu, specified here.

[G] Default Language File


-------------------------
This option is used to define the default language file.
Mystic
BBS supports the use of an unlimited number of language
definitions which can be used to customize the the
interface of
your BBS. The default language file MUST exist in the
data
directory, or Mystic BBS will return an error. For more
information on the Language system, see the Language
Editor
section {6.2.G}

[H] Maximum Number of Nodes


---------------------------
This option is used to define the maximum number of nodes
currently in use. Each copy of Mystic BBS is a node. If
you
have multiple phone lines and need to run multiple copies
of
Mystic BBS, then each copy of Mystic you are running is a
node.

[I] Screen Saver


----------------
This option is used to define the number of minutes of
inactivity to wait before activating the screen saver.
When
running a BBS, the software can sometimes sit idle
between
calls for quite a while. A screen saver has been
implemented to
prevent screen burn-in while waiting for calls.

[J] Inactivity Time Out


-----------------------
This option is used to set the number of seconds a user
can be
idle before Mystic BBS will hang up on them for
inactivity.
[K] Sysop Chat Hours - Start
----------------------------
This option is used to define when the Sysop will be
available
for chat. If a user tries to page the Sysop during off
hours,
Mystic will not activate the page bell, but instead
inform the
user that the SysOp is not available and optionally ask
the
user if they'd like to send e-mail to the Sysop.

[L] Sysop Chat Hours - End


--------------------------
This option goes along with the above option which
defines the
SysOp chat hours.

[M] Allow Sysop E-Mail


----------------------
If this option is set to Yes, the user will be asked if
they
would like to send e-mail to the SysOp if they try to
page
during off chat hours.

[N] SysOp Chat Logging


----------------------
If this option is set to Yes, Mystic BBS will record
SysOp chat
sessions to CHAT.LOG found in the logs directory.

[O] Login Terminal Mode


-----------------------
This option sets how Mystic handles getting the users
terminal
emulation. If set to Ask, Mystic will ask the user. If
set to
detect, Mystic will attempt to detect which terminal
emulation
to use. If set to Detect/Ask, Mystic BBS will attempt to
detect
and if ANSI isn't detected, the user will be asked.

[P] BBS List Editor ACS


-----------------------
This option defines the ACS string required to edit
entries in
the BBS list. Mystic will also allow the user who added
the
entry in the BBS list to edit it regardless of this ACS
string.

[R] Invisible Login ACS


-----------------------
This option defines the ACS string required for a user to
have
the option of logging onto the BBS as "invisible" mode.
When a
user is logged in as invisible, they will not appear in
any of
the Who's Online listings.

[S] Status Line Type


--------------------
This option defines the type of "status line" that Mystic
BBS
will use. The status line is at the bottom of the screen
where information on the logged in user is displayed.
Valid
options are 1 line, 2 lines, and none. This can also be
toggled
by pressing ALT-T while a user is online.

[1-4] Sysop Macro


-----------------
These options define the SysOp macros. A SysOp macro is
either
text that is displayed whenever a macro key is pressed,
or can
be set to run an MPL script. The syntax for making a
macro run
an MPL script is !<scriptname> (ex: !mchat). Mystic
supports
four macro keys: F1 through F4. The text defined for each
of
these keys will be pushed into the input buffer whenever
they
are pressed, just as if it was actually typed in.

[V] User Multiple Login


-----------------------
This option toggles the ability for users to login
multiple
times to the BBS. This happens when a user is already
logged in
and they call again while still online. If set to Yes,
then
Mystic BBS will let the user login more than one time. If
set
to No, Mystic BBS will not allow the user to login more
than
once and display a message that they are already logged
in on
another node.

[T] Default Screen Length


-------------------------
This option defines the default screen length in rows
which
Mystic will assign to users who choose to use the default
when
creating a new account or editing their account settings.
The
default 24 is recommended as it allows for a client-side
status
bar to be used without messing up displays from the BBS.
Valid
values are 1-99, but 24 is HIGHLY recommended!

[U] See Invisible ACS


---------------------
This option defines the ACS required to see users logged
in as
Invisible while on the BBS. By default this is set to
s255
which means that only users with SysOp access can see
invisible
users.

.---------------------------------------------------------------.
| |
| (6.2.D) FILE BASE SETTINGS |
| |
`---------------------------------------------------------------'

The file bases of Mystic BBS allow users to upload, download,


search,
and view file archives on your hard disk. Each file base has it's
own
unique and configurable settings and options which you define
using
the File Base Editor {6.2.R}. These file base SETTINGS are global
to
all file bases, however. Below you will find a screen capture of
the
file base settings dialog, and below the capture a description of
each
of the options.

====================================================================
File Settings

A. Compress area numbers : Yes


B. File area list columns: 2

C. Import FILE_ID.DIZ : Yes


D. Max File Desc. Lines : 99
E. Auto-validate ACS : s0
F. See unvalidated files : s255
G. DL unvalidated files : s255
H. See Failed Files : s255
I. DL Failed Files : s255
J. Min UL Space (kb) : 0
K. Min CD Copy Space (kb): 0
L. Redisplay File Header : No
M. Default Upload Base : 0
N. Upload Dupe Scan : None
O. Test uploaded files : No
P. Pass errorlevel : 0
R. Test command line :

Command (Q/Quit):

====================================================================

[A] Compress File Area Numbers


------------------------------
This option, if toggled on, will compress file area
numbers so
they are always sequential during a file area list. So in
a
file area list, if a user does not have access to area
number 2
then the next area that the user does have access to will
become area number 2.

[B] File Area List Columns


--------------------------
This option allows the number of columns used in the file
area
lists to be configured. Valid options are 1 or 2 columns.

Note: If you change this to 1 column listings, you will


have
to edit the file area list prompt to reflect a single
listing.

[C] Import FILE_ID.DIZ


----------------------
This option, if toggled on, will allow Mystic BBS to
search all
uploaded files for a FILE_ID.DIZ file. The FILE_ID.DIZ
file is
included in many archives and contains a description of
the
file. If this file is found, Mystic BBS will
automatically read
the description and use it as the file description in the
file
listing.

[D] Max File Description Lines


------------------------------
This option defines the maximum number of file
description
lines which can be used for each file entry. It must be
within
the range of 1 to 99.

[E] Auto Validate ACS


---------------------
This option defines the ACS string a user must pass in
order
for the files they upload to be marked as validated. If
they do
not pass this ACS string, the files will be marked as
unvalidated.

[F] See Unvalidated Files ACS


-----------------------------
This option defines the ACS string a user must pass in
order
for unvalidated files to appear in a file listing.

[G] Download Unvalidated Files ACS


----------------------------------
This option defines the ACS string a user must pass in
order to
download a file that is marked as unvalidated.

[H] See Failed Files ACS


------------------------
If upload testing is toggled on and a file fails the
upload
test, they will be marked as "failed". This option
defines the
ACS a user must have to see files which have failed the
upload
test in their file listing.

[I] Download Failed Files ACS


-----------------------------
This option defines the ACS a user must meet in order to
download a file which has been marked as "failed".

[J] Minimum UL Space (kb)


-------------------------
Mystic BBS has the option to refuse to accept uploaded
files
when drive space gets low. This option sets the number of
kilobytes that must exist in order for Mystic BBS to
accept
uploads. If this option is set to zero (0), it will be
disabled.

[K] Minimum CD Copy Space (kb)


------------------------------
This option specifies the number of kilobytes which must
be
available on the BBS drive for Mystic BBS to use it's CD-
ROM
copy feature.

When a file area is marked as a "CD-ROM" file area,


Mystic BBS
will attempt to copy files from the CD-ROM to the
temporary
directory before a user downloads it. This keeps the
access to
the CD-ROM drive minimal, since CD drives are usually
much
slower than a hard drive.

[L] Redisplay File Header


-------------------------
This option specifies whether Mystic BBS will redisplay
the
file header after a pause during standard file listings.

[M] Default Upload Base


-----------------------
This option defines the default upload base. When this is
set
to zero (disabled), all uploaded files will go into the
user's
currently selected file base. If set to a non-zero value,
all
uploads will be uploaded to the set file base number (as
listed
in the file base editor).

[N] Upload Dupe Scan


--------------------
This option specifies if the system scans new uploads for
any
existing files (duplicates) with the same name. If this
is set
to None, no dupe-scanning will take place. If it is set
to
Current Area, only the area the file was uploaded into
will be
scanned for duplicates. And lastly if it is set for All
Areas,
every file area will be scanned for duplicates. The
default is
none. It should be noted that if you have several hundred
file
areas with several hundred files in each area, it is
probably
not a very good idea to set this to All Areas as it would
take
quite a while to seach for duplicates and annoy the user.
This
operation takes place for every individual file that is
sent
to the BBS so if someone does a batch transfer of 10
files, and
you have All Areas scanning enabled, you can imagine how
bored
the user would become :)

[O] Test Uploaded Files


-----------------------
Mystic BBS optionally supports external upload testing.
An
upload processor is a program which will search a file
for
viruses and/or errors which may have occurred during the
file
transfer. Any upload processor should work with Mystic
but THD
Pro Scan is recommended. It's free and available on the
Mystic
BBS web page and support BBS.

Author Note: However if you are like me, THD Pro-scan is


more
than you need. Everything you need to do can
be
done using a simple batch file, or shell
script.
For details on doing it this way check
section
{10.8}

If this option is toggled to Yes, Mystic BBS will attempt


to
run the external processor after all uploaded files. For
more
information on upload testing see section {10.8}

[P] Pass Errorlevel


-------------------
This option defines the Errorlevel which is returned by
the
external file processor if the file has passed all
testing
successfully. For more information, see the section on
upload
testing {10.8}
[R] Test Command Line
---------------------
This option defines the command line which is used to run
the
external file processor. The following MCI codes can be
used
with this command line:

%1 = Modem ComPort
%2 = Modem Baud Rate
%3 = Path and File Name of file to be tested

For more information, see the file upload testing section


{10.8}

.---------------------------------------------------------------.
| |
| (6.2.E) MESSAGE BASE SETTINGS |
| |
`---------------------------------------------------------------'

The message bases are the heart and soul of any BBS. Mystic BBS
offers
a unique and elegant approach to system messaging. There are
several
options in the message base settings screen that are very similar
to
the file area settings {6.2.D}. This is no mistake, as the
interfaces
to use messages are very similar to the interface in the file
system.
This is a good way to do things, because the user feels enabled
to use
the system more quickly. The configuration for each message base
can be
set using the Message Base Editor {6.2.Q}, however the settings
in the
Message Base Settings screen govern all message bases on your
board.

Below is a screen capture of what the Message Base settings


screen
looks like, and below the capture a detailed guide on setting
them.

====================================================================
Message Base Settings
A. Compress Area Numbers: Yes
B. Message Area List Col: 2
C. Max Auto Sig Lines : 5
D. Redisplay msg header : Yes

F. QWK/REP filename : S7BBS


G. Welcome filename : S7HELLO
H. News filename : S7NEWS
I. Goodbye filename : S7BYE
J. Default Archive : ZIP
K. QWK Max Msgs/Base : 0
L. QWK Max Msgs/Packet : 0

M. Quote Color : XX> Quote


N. Text Color : Text
O. Tear Line Color : --- Tear
P. Origin Line Color: * Origin:

Command (Q/Quit):

====================================================================

[A] Compress Area Numbers


-------------------------
This option, if toggled on, will compress message area
numbers
so they are always sequential during a message area list.
So in
a message area list, if a user does not have access to
area
number 2, then the next area that the user does have
access to
will become area number 2.

[B] Message Area List Columns


-----------------------------
This option allows the number of columns used in message
base
listings to be configured. Valid options are 1 or 2
columns.

Note: If you change the message area list to 1 from 2,


you'll
have to edit your message base list prompt to reflect a
single
column listing.

[C] Max Auto Sig Lines


----------------------
This option defines the maximum number of lines a user
will
be allowed to use in their auto signature. An auto
signature is
a few lines of text which is automatically appended to
each
message a user posts. Many users will use their auto
signature
to add their handle and e-mail address to each message.

[D] Redisplay Message Header


----------------------------
When this option is set to "Yes", Mystic will redisplay
the
message header after a page full of message text has been
displayed.

[F] QWK/REP File Name


---------------------
Mystic BBS internally supports the QWK/REP offline
mailing
standard. The QWK offline mailing system allows users to
download messages from the BBS message base and read them
offline using a QWK mail reader. This allows the user to
read
and reply to mail offline when it's convenient to them,
and
also keeps the phone line free for other callers because
the
user will not be reading messages online.

The QWK/REP filename is the name of the packet that


Mystic BBS
will create for the user when they select to download a
QWK
packet. This file name should be unique to your BBS name
so it
doesn't get mixed up with packets downloaded from another
BBS.

[G] QWK Welcome File Name


-------------------------
Many QWK offline mail readers offer support to display
files
which are included with a QWK packet. This option defines
the
filename which the QWK reader will display when the user
first
opens the packet for reading.

[H] QWK News File Name


----------------------
This option is used to define the file that will be
displayed
by the QWK offline reader as BBS news.

[I] QWK Goodbye File Name


-------------------------
This option is used to define the file that will be
displayed
by the QWK offline reader when the user has finished
reading
the QWK packet.

[J] Default Archive Extension


-----------------------------
This option is used to define the default archive which
is used
to compress QWK packets. The extension should match the
extension of any archives which have been setup in the
Archive Editor {6.2.N}

[K] QWK Max Msgs/Base


---------------------
This option defines the maximum number of messages which
can be
packed into a QWK packet per message base. This option is
disabled if set to 0.

[L] QWK Max Msgs/Packet


-----------------------
This option defines the maximum number of messages which
can be
packed into a QWK packet. This option is disabled if set
to 0.

[M] Default Quote Color


-----------------------
This option is used to set the default display color for
Quoted
text while reading messages. This color can also be
configured
for each individual message base in the Message Base
Editor.
See section {6.2.Q} for more details.

[N] Default Text Color


----------------------
This option is used to set the default display color for
text
while reading messages. This color can also be configured
for
each individual message base in the Message Base Editor.
See
section {6.2.Q} for more details.

[O] Default Tear Line Color


---------------------------
This option is used to set the default display color for
the
Tear Line while reading messages. This color can also be
configured for each individual message base in the
Message Base
Editor. See section {6.2.Q} for more details.

Note: This option only applies to messages posted within


echo-
-mail, or networked Message Bases. A tear line
separates
the origin line from the message body. For more
information on Network Message Bases see section
{10.17},
and {6.2.F}

[P] Default Origin Line Color


-----------------------------
This option is used to set the default display color for
the
Origin line while reading messages. This color can also
be
configured for each individual message base in the
Message Base
Editor. See section {6.2.Q} for more details.

Note: This option only applies to messages posted within


echo-
-mail, or networked Message Bases. An origin line
lets
readers of the message know where the message came
from,
hence origin[ate]d from. For more information on
Network
Message Bases see section {10.17}, and {6.2.F}

.---------------------------------------------------------------.
| |
| (6.2.F) NETWORK SETTINGS (ECHOMAIL) |
| |
`---------------------------------------------------------------'

The Network Settings option is used to setup Mystic BBS with


message
base networks such as FidoNet, or ZeroNet. A Message Base network
is a
collection of BBSes that all share the same message bases,
allowing
users on a BBS in Europe (for example) to hold a discussion with
users
on a BBS in the United States. For more information, see the
section on
interfacing with message networks {10.17}
The following is a screen capture of the Network Settings screen
followed by an explanation of what each option does:

====================================================================
Network Settings

1. 0:0/0 2. 0:0/0
3. 0:0/0 4. 0:0/0
5. 0:0/0 6. 0:0/0
7. 0:0/0 8. 0:0/0
9. 0:0/0 10. 0:0/0
11. 0:0/0 12. 0:0/0
13. 0:0/0 14. 0:0/0
15. 0:0/0 16. 0:0/0
17. 0:0/0 18. 0:0/0
19. 0:0/0 20. 0:0/0

A. Origin : Mystic BBS * (000)000-0000

B. Netmail Crash : No
C. Netmail Hold : No
D. Netmail Kill : No

Command (Q/Quit):

====================================================================

[1 to 20] Network Addresses


---------------------------
These options are used to setup Network addresses. When a
BBS
joins a message network, it is assigned a network address
which
is used to identify the BBS. Mystic BBS allows up to 20
address
definitions, meaning that Mystic BBS can be interfaced
with up
to 20 different message networks at once.

[A] Default Origin Line


-----------------------
This option defines the default origin line which will be
used
for each message base. This option can also be set for
each
individual message base in the Message Base Editor.

An origin line is a line of text which is added at the


bottom
of each message posted into a networked message base. It
is
used to identify what BBS the message originated from as
well
as any other general information you wish to have
supplied
about your BBS (ie, phone number/address, modem speed,
etc).

[B] Netmail Crash


-----------------
When this option is set to "Yes", the CRASH flag will be
set
true on all outgoing Netmail messages.

[C] Netmail Hold


-----------------
When this option is set to "Yes", the HOLD flag will be
set
true on all outgoing Netmail messages.

[D] Netmail Kill


-----------------
When this option is set to "Yes", the KILL flag will be
set
true on all outgoing Netmail messages.

.---------------------------------------------------------------.
| |
| (6.2.G) LANGUAGE DEFINITION EDITOR |
| |
`---------------------------------------------------------------'

About the Language System


-------------------------

The language definition editor is where all available language


files
are defined. A language file is a file that contains all the text
that
is displayed to a user while they are online. These files can be
edited
with any text editor, or the language editor supplied with Mystic
BBS
(LANGEDIT.EXE). By editing the language file, the user interface
can be
totally customized to your liking. Almost 100% of the text
displayed to
the user can be customized using the MCI system and the display
file
system within the language files.

The following is a screen capture of the Language Editor screen


followed by an explanation of each available option:

====================================================================
Language Editor

## FileName Description
-- -------- ------------------------------
1 DEFAULT Default

(I)nsert, (D)elete, (E)dit, (Q)uit?

====================================================================

Note: Since you may have more than one language defined, Mystic
BBS
will ask you which language you wish to edit.

[I] Insert Language


-------------------
This option is used to insert a new language file into
the
Language database. Do not insert a new language file if
it has
not already been compiled. If a user selects a language
that
doesn't have a compiled language file, they will receive
an
error message and Mystic BBS will then attempt to load
the
default language file, as defined in the System
Configuration.

Tip: If you intend to modify your BBS, it's a great idea


to
leave the existing DEFAULT language and it's
associated
display files unmodified, and create a new language.
This
will then allow you to refer to the default language
when
you need explicit reference to how the language
system
works. Then when you are finished creating your new
language, you can set it as the default language
that the
users are forced to use.

[D] Delete Language


-------------------
This option is used to delete a language entry in the
language
editor.

[E] Edit Language


-----------------
This option is used to edit the settings for a language
entry.
When this option is selected, Mystic BBS will then allow
the
settings for the language file to be edited. The
following is a
screen capture of the Edit screen followed by an
explanation of
what each option does:

====================================================================
Language 1 of 2

A. Description: S7
B. Filename : S7
C. Text Path : C:\S7BBS\S7-TEXT\
D. Menu Path : C:\S7BBS\S7-MENU\
M. Allow ASCII: Yes
N. Allow ANSI : Yes

E. Use Lightbar Y/N : No


H. Input Field Color: Test
I. Quote Bar Color : Test
J. Echo Character : *
K. Input Character : .
L. File Tag Char : +
O. File Search Hi : Test
P. File Desc. Lo : Test
R. LB New Msg Char : *

Command (Q/Quit):

====================================================================

[A] Description
---------------
This option holds the description of the language file.
The
description is what the user will see when they are
prompted
to select a language file.

[B] File Name


-------------
This option sets the file name of the compiled language
file.
The compiled language file must exist in the DATA
directory
in order for Mystic BBS to use the language. Language
files can
be edited with MCFG or a standard text editor, and are
compiled
with MAKELANG.EXE. For more information, see the section
on
Language Files {8.A}

[C] Text Path


-------------
This option sets the directory where all display files
for this
language exist. It is possible for language files to
share the
same text directory as other language files. Display
files have
the extensions of *.ASC or *.ANS depending on the users
chosen
terminal emulation.

[D] Menu Path


-------------
This option sets the directory where all system menu
files for
this language exist. It is possible for language files to
share
the same menu directory as other language files. Menu
files
have the extension *.MNU. For more information on menus
see
section {8.2.C}

[M] Allow ASCII


---------------
This options specifies if ASCII emulation is allowed to
be used
by the user in this language file. When displaying a list
of
languages for the user to choose from, if the user is
using
ASCII emulation and Allow Ascii is set to "No" the
language
will be omitted from the list.

Note: The settings for the DEFAULT language file (as


defined in
System Configuration -> General Settings {6.2.C}
are used
to define which emulations your BBS will support.
For
example, setting Allow ASCII to "No" in the default
language file will force Mystic BBS to hangup on
any
callers using ASCII emulation. This is why we
recommend
that you leave the default language intact and
instead
create a new language and modify it.

[N] Allow ANSI


--------------
This option specifies if ANSI emulation is allowed to be
used
by the user in this language file. When displaying a list
of
languages for the user to choose from, if the user is
using
ANSI emulation and Allow Ansi is set to "No" the language
will be omitted from the list.

[E] Use Lightbar Y/N


--------------------
This option specifies if Mystic BBS will use lightbar Yes
and
No prompts for this language. The user must have ANSI
graphics
to use any lightbar options. If the user doesn't support
ANSI
and this option is turned on, Mystic BBS will ignore it
and use
standard prompts. To modify what these prompts look like
see
section {8.A}

[H] Input Field Color


---------------------
Throughout the BBS, Mystic will prompt the user using a
colored
input field. The color of these input fields can be set
here
using standard DOS color numbers:

Foreground colors:
0 - Black 6 - Brown 12 - Light Red
1 - Blue 7 - Light Grey 13 - Light
Magenta
2 - Green 8 - Dark Grey 14 - Yellow
3 - Cyan 9 - Light Blue 15 - White
4 - Red 10 - Light Green
5 - Magenta 11 - Light Cyan

Background colors:
0 - Black 4 - Red
1 - Blue 5 - Magenta
2 - Green 6 - Brown
3 - Cyan 7 - Gray

[I] Quote Bar Color


-------------------
This option defines the foreground and background colors
of the
lightbar used in the quote window of the full screen
editor.
See option [H] for a reference to valid colors.

[J] Echo Character


------------------
This option defines the character that will be echoed in
the
input field when a password is being entered.

[K] Input Character


-------------------
This option defines the character used to fill blank
spaces
during field input. Here are some recommended settings
for
this option:

Ascii 32 ( )
Ascii 250 (—)
Ascii 176 (░)

To enter any of these characters: Select option [K], hold


down
the [ALT] key, type the ASCII number on the numeric
keypad,
then release the [ALT] key.

[L] File Tag Character


----------------------
This option defines the character used to mark a file as
"tagged" in the lightbar file listings. The suggested
setting
for this field is ASCII 251 (the √ character). Other
lightbar
file list options are defined within the ANSIFLST.XXX
template
file {8.B.9}

[O] File Search Hi


------------------
This option defines the color of the highlighted text in
the
file description, when doing a file search. See option
[H] for
a reference of available color combinations.
[P] File Desc. Lo
-----------------
This option goes along with "File Search Hi". It
specifies the
color of normal file description text, when doing a
NON-LIGHTBAR file listing. See option [H] for a reference
of
available color combinations.

[R] LB New Msg Char


-------------------
This option defines the character used to mark a message
as
"new" when using the Message Index. The other options to
use
for this index can be found in the Display Template
ANSIMLST.XXX section {8.B.10}

.---------------------------------------------------------------.
| |
| (6.2.H) NEW USER SETTINGS 1 |
| |
`---------------------------------------------------------------'

The New User Settings 1 section is used to define how Mystic BBS
will
handle new callers who wish to create an account with the BBS.
The
following is a screen capture of the New User Settings 1 screen
followed by an explanation of what each option does:

====================================================================
New User Settings 1

A. Allow New Users Yes


B. New User Password ALLIGATORS
C. Security Level 1
D. Language File Use Default
E. User Name Format As typed
F. Use Matrix login No
G. Matrix Menu Name MATRIX
H. Matrix Password
I. Matrix PW ACS s50
J. Sysop Feedback Yes
K. Send Feedback To grymmjack
L. Date Format MM/DD/YY
M. Use USA Phone Yes
N. Start Msg Group 1
O. Start File Group 1

Command (Q/Quit):

====================================================================

[A] Allow New Users


-------------------
If this option is toggled off, Mystic BBS will not accept
new
user accounts. Instead, the display file CLOSED.XXX will
be
displayed and the call will be terminated.

[B] New User Password


---------------------
This option is used to define a new user password. If a
password has been defined, a caller who attempts to log
in as a
new user will be prompted for the new user password
before they
will be able to continue to log in as a new user. A
common way
to refer to the New User Password is through the accronym
NUP.

[C] New User Security Level


---------------------------
This option is used to set what security level a new user
will
be upgraded to after successfully completing the new user
login
procedure. For more information on the security system,
see the
Security Level Editor section {6.2.L}

[D] Language File


-----------------
This option is used to set which language file is used
for new
users. Valid options are Use Default and Ask. If set to
Use
Default, Mystic BBS will use the default language as
defined in
the General Settings section. If set to Ask, Mystic BBS
will
ask the user which language they'd like to use.

[E] User Name Format


--------------------
This option specifies the way Mystic will handle new
user's
handle. Valid options are:
As typed : Mystic will leave the user handle as they
typed it
Upper case : Mystic will convert the user's handle to
uppercase
Lower case : Mystic will convert the user's handle to
lowercase
Proper : Mystic will convert the first letter in each
word
of the user's handle to a capital letter,
while
forcing all other letters as lower case.

[F] Use Matrix Login


--------------------
This option defines whether Mystic BBS will use the
Matrix
login option. The Matrix login is an alternative to the
standard "Enter your name and password" login. The Matrix
system allows users to apply for an account and then when
(if)
they are validated, they receive a Matrix Password which
is
used to log into the BBS. For more information on using
the
Matrix System see section {8.C.18}

[G] Matrix Menu Name


--------------------
This option defines the menu file name which is used as
the
Matrix Login menu. This file must exist in the default
language
menu directory in order for the matrix login system to
work
properly.

[H] Matrix Password


-------------------
This option defines the password which is given to the
user
after their account has been validated. This is the
password
which the user will have to know in order to log into the
BBS
system from the Matrix Login menu. If this field is left
blank,
the matrix password option will be disabled and the XL
(Matrix Login) menu command will not require a password.
See
section {8.C.18} for more information on the various
Matrix
Menu commands.
[I] Matrix PW ACS
-----------------
This option defines the ACS level which the user must
meet in
order to be given the matrix login password from the
matrix
menu.

[J] Sysop FeedBack


------------------
This option defines if Mystic BBS will force new users to
send
an e-mail to the Sysop after creating a new user account.

[K] Send Feedback To


--------------------
This option defines which user the SysOp feedback is
directed
to when a new user creates an account. Set this to the
username
of the user you desire this feedback to be emailed to.
For most
systems, the SysOp account (user #1) is recommended.
an e-mail to the Sysop after creating a new user account.

[L] Date Format


---------------
This option sets the date format which will be used for
each
user. Valid options are MM/DD/YY, DD/MM/YY, YY/DD/MM, or
Ask.
If this option is set to Ask, Mystic BBS will ask each
new user
which date format they'd like to use.

[M] Use USA Phone


-----------------
If this option is set to Yes, Mystic BBS will use USA
format
phone numbers (XXX-XXX-XXXX).

[N] Start Msg Group


-------------------
This option defines which message group new users should
start
in. If this is set to 0, users will be asked to choose a
group
from a listing of available message groups. See section
{6.2.K}
and {10.5} for more information on using message groups.

[O] Start File Group


--------------------
This option defines which file group new users should
start in.
If this is set to 0, users will be asked to choose a
group from
a listing of available file groups. See section {6.2.K}
and
{10.5} for more information on using file groups.

.---------------------------------------------------------------.
| |
| (6.2.I) NEW USER SETTINGS 2 |
| |
`---------------------------------------------------------------'

The New User Settings 2 section is used to define how Mystic BBS
will
handle new callers who wish to create an account with the BBS.
The
following is a screen capture of the New User Settings 2 screen
followed by an explanation of what each option does:

====================================================================
New User Settings 2

A. Ask Alias Yes P. Message Editor Yes


B. Ask Real Name No R. Message Reader
Lightbar
C. Ask Street No S. Start at Msg Index No
D. Ask City/State No T. Email Msg Index No
E. Ask Zip Code No U. Use FSE Quote Window Yes
F. Ask Home Phone No V. File Listing Type
Lightbar
G. Ask Data Phone No W. Use Hot Keys Yes
H. Ask Birthdate Yes X. Node Chat Mode
Lightbar
I. Ask Gender No
J. Ask E-Mail Yes
K. Ask User Info No
L. Ask Screen Size No
M. Ask Option 1 Yes 1. Option 1 Name Affils
N. Ask Option 2 Yes 2. Option 2 Name BBS
O. Ask Option 3 Yes 3. Option 3 Name Homepage

Command (Q/Quit):

====================================================================
[A] Ask Alias
-------------
If this option is set to Yes, Mystic BBS will ask new
users for
an Alias.

[B] Ask Real Name


-----------------
If this option is set to Yes, Mystic BBS will ask new
users for
their real name.

[C] Ask Street


--------------
If this option is set to Yes, Mystic BBS will ask new
users for
their street address.

[D] Ask City/State


------------------
If this option is set to Yes, Mystic BBS will ask new
users for
their City and State.

[E] Ask Zip Code


----------------
If this option is set to Yes, Mystic BBS will ask new
users for
their Zip code.

[F] Ask Home Phone


------------------
If this option is set to Yes, Mystic BBS will ask new
users for
their home phone number.

[G] Ask Data Phone


------------------
If this option is set to Yes, Mystic BBS will ask new
users for
their data phone number.

[H] Ask Birthdate


-----------------
If this option is set to Yes, Mystic BBS will ask new
users for
their date of birth.

[I] Ask Gender


--------------
If this option is set to Yes, Mystic BBS will ask new
users for
their gender.
[J] Ask E-Mail
--------------
If this option is set to Yes, Mystic BBS will ask new
users for
their email address.

[K] Ask User Info


-----------------
If this option is set to Yes, Mystic BBS will ask new
users
to enter a User Info line. This is usually set to
something
like the affiliations they are members of or the BBS they
run,
for visitin SysOps.

[L] Ask Screen Size


-------------------
If this option is set to Yes, Mystic BBS will ask new
users for
their screen size in rows.

[M] Ask Option 1


----------------
If this option is set to Yes, Mystic BBS will ask new
users to
answer the system configured question option #1.

[N] Ask Option 2


----------------
If this option is set to Yes, Mystic BBS will ask new
users to
answer the system configured question option #2.

[O] Ask Option 3


----------------
If this option is set to Yes, Mystic BBS will ask new
users to
answer the system configured question option #3.

[1] Option 1 Name


-----------------
This is system configured question option #1. System
configured
questions are available to extend your user data without
doing
any modifications or using other existing user data
fields as
substitutes for what you need. A common use for such an
option
would be "Where did you hear about this BBS?".

This option defines the label for system configured


question
option #1 that will show up in the user editor.

[2] Option 2 Name


-----------------
This option defines the label for system configured
question
option #2 that will show up in the user editor.

[3] Option 3 Name


-----------------
This option defines the label for system configured
question
option #3 that will show up in the user editor.

[P] Message Editor


------------------
This option defines how the BBS will determine the new
users
message editor preference. Valid options are:

Yes : New users use the full screen message


editor.
No : New users use the line based message
editor.
Ask : Mystic BBS will ask the user to choose.

[R] Message Reader


------------------
This option defines how the BBS will determine the new
users
message reader preference. Valid options are:

Lightbar : New user's use the lightbar message


reader
Standard : New user's use the standard message
reader
Ask : Mystic BBS will ask the user to
choose.

[S] Start at Msg Index


----------------------
This option defines if the BBS will show the message
index when
reading messages. Valid options are:

Yes : New users will use the message index.


No : New users will begin reading messages
directly.
Ask : Mystic BBS will ask the user to choose.

[T] Email Msg Index


-------------------
This option defines if the BBS will show the message
index when
reading email. Valid options are:

Yes : New users will use the email index.


No : New users will begin reading email
directly.
Ask : Mystic BBS will ask the user to choose.

[U] Use FSE Quote Window


------------------------
The FSE (full screen editor) can be configured to use two
different methods of quoting. The first, Standard, is the
same
as traditional quoting since the dawn of time; the
original
message is listed with line numbers, and a range of lines
are
then selected to be quoted. The second method, is a
friendlier
way which involves showing a window which contains
portions of
the original message, and the user then uses the lightbar
to
highlight which lines to quote and then presses [ENTER]
to
insert the quoted lines.

This option defines how the BBS will quote messages when
in the
message editor. Valid options are:

Yes : New users will use the quote window.


No : New users will use standard quoting.
Ask : Mystic BBS will ask the user to choose.

[V] File List Type


------------------
This option defines how the BBS will determine the new
users
file listing type. Valid options are:

Standard : Normal file listing.


Lightbar : Lightbar file listing. This allows
users
with ANSI graphics to scroll through
the
list of files with arrow keys.
Ask : Mystic BBS will ask the user to
choose.

[W] Use Hot Keys


----------------
This option defines if the BBS will use hot keys for
issuing
menu commands. The valid options are:
Yes : New users will use hot keys.
No : New users will have to press [ENTER] after
entering a menu option to execute it.
Ask : Mystic BBS will ask the user to choose.

[X] Node Chat Mode


------------------
This option defines how the BBS will function in the
tele-
-conference. Valid options are:

Standard : New users will use standard


teleconference.
Lightbar : New users will use lightbar
teleconference.
Ask : Mystic BBS will ask the user to
choose.

.---------------------------------------------------------------.
| |
| (6.2.J) USER EDITOR |
| |
`---------------------------------------------------------------'

The Mystic BBS User Editor allows you to edit all of the user
accounts
on your system. There are three methods for entering the user
editor;

- From MCFG
* Select the User Editor option and press [ENTER]

- From the WFC Screen


* Press [U]

- From the SysOp menu on the BBS


* Type /*
* Type [U]
* Enter the SysOp password

Every option in the user account editor will be defined below.


But
first a screen capture of the user editor screen.

====================================================================
User Editor: 1 of 1 (Idx: 1)
A. Alias grymmjack V. Start Menu
PRELOGIN
B. Real Name W. Language S7
C. Address X. Hot Keys
Yes
D. City Y. Date Type
MM/DD/YY
E. Zip Code Z. FList Type
Lightbar
F. Birthdate 07/22/74 - Age 27 1. Msg Editor
Full
G. Gender M 2. Msg Quote
Lightbar
H. Home Phone 3. Msg Reader
Lightbar
I. Data Phone 4. Index No
J. E-mail grymmjack@sector7bbs.com 5. Mail Index No
K. Affils mystic/demonic/warlock 6. Time Left
1439
L. BBS sector7bbs.com 7. Time Bank
9999
N. Homepage http://www.sector7bbs.com/grymmj8. Screen Size 24
O. User Note ■ sysop !. Ignore LC
Yes
P. Security 255 Locked out No
R. Password GOOBER Deleted No
S. Flags #1 -------------------------- No Delete
Yes
T. Flags #2 -------------------------- No Ratios
Yes

([) Prev, (]) Next, (U)pgrade, (*) Search, (M)ore, (Q)uit:

====================================================================

User Editor Commands


--------------------

To navigate within the user editor, use the hotkeys on the bottom
line
of the screen. These options are defined below:

[[] Prev
--------
Will begin editing the previous user account. If you are
currently editing record #1, you will be taken to the
last
record in the user file.

[]] Next
--------
Will begin editing the next user account in sequence. If
you
are currently editing the last record, you will be taken
to the
first record in the user file.

[U] Upgrade
-----------
Invoking this option will allow you to upgrade a users
security
level. Valid security levels are 0-255. For more
information on
security levels see section {6.2.L}

[*] Search
----------
This option will allow you to search for a user by alias
or
real name. Enter the part of the user name that you
remember,
and press enter. If all goes well, you will be taken to
the
account you're looking for.

[M] More
--------
This will show you another page in the account editor.
Below is
a screen capture of what this looks like:

====================================================================
User Editor: 1 of 1 (Idx: 1)

Additional settings for grymmjack:

A. Full NodeChat Yes

(1) (2) (3)


Calls 4 First Call 02/04/02 Msg Posts
0
Calls Today 1 Last Call 02/14/02 Sent Email
1
Downloads 0 Download K 0 Uploads
0
DLs Today 0 DLk Today 0 Upload KB
0

(Q)uit:

====================================================================

[A] Full Node Chat


------------------

This allows you to change the way a user


interacts with
the teleconference system. The valid options are:

Yes : User uses full screen


teleconference.
No : User uses standard teleconference.

[1-3]
-----
Each part of the rest of the users account can
also be
edited. You see that under each (#) there are
several
fields. To begin editing parts of those fields,
press
the number above the corresponding fields. To get
to
different places in the same column of fields and
keep
the settings what they already are, press [ENTER]
until
you reach the desired field.

Calls : The number of times the user


has
called the BBS since their
account
was created.

Calls Today : The number of times the user


has
called the BBS today starting
from
12:00 am.

Downloads : The total number of files the


user
has downloaded from the file
areas
since their account was
created.
DLs Today : The number of files the user
has
downloaded today starting from
12:00
am.

First Call : The date the user first called


the
BBS and created their account.

Last Call : The date the last time the user


called the BBS and logged in
with
success.

Downloaded K : The count in kilobytes of


downloaded
files a user has downloaded
from the
file areas on the BBS since
their
account was created.

DLk Today : The count in kilobytes of


downloaded
files a user has downloaded
from the
file areas on the BBS today
starting
from 12:00 am.

Msg Posts : The total number of messages a


user
has posted to the BBS message
areas
since their account was
created.

Sent Email : The total number of e-mail


messages a
user has sent to other users
since
their account was created.

Uploads : The total number of files a


user has
uploaded to the BBS file areas
since
their account was created.

Uploads KB : The count in kilobytes of


uploaded
files a user has uploaded to
the BBS
since their account was
created.

[A] Alias
---------
This is the users alias. Aliases are used to maintain
anonymity
and are highly recommended. The maximum length a users
alias
can be is 30 characters. It can contain any valid ascii
character. Spaces in a user name are a special case, and
in
some sections of the BBS you will be required to replace
the
spaces with the underscore character.

[B] Real Name


-------------
This is the users real name. The maximum length a users
real
name can be is 30 characters. It can contain any valid
ascii
character. Spaces in a users real name are a special
case, and
in some sections of the BBS you will be required to
replace the
spaces with the underscore character.

[C] Address
-----------
This is the users street address. The maximum length of a
users
street address is 30 characters.

[D] City
--------
This is the users city. The maximum length of a users
city is
25 characters.

[E] Zip Code


------------
This is the users zip code. The maximum length of a users
zip
code is 9 characters.

[F] Birthdate
-------------
This is the users birthday. The format is ##/##/## and
the age
of the user is automatically calculated for you.

[G] Gender
----------
This is the users gender. Valid values are M and F.

[H] Home Phone


--------------
This is the users home phone number. The maximum length
of the
users home phone number is 15 characters.

[I] Data Phone


--------------
This is the users data phone number. The maximum length
of the
users data phone number is 15 characters.

[J] E-Mail
----------
This is the users e-mail address. The maximum length of
the
users email address is 35 characters.

[K] Option 1
------------
This is the users answer to system configured question
option
#1. The maximum length of this field is 35 characters.
You may
change the label of this field as it is shown in the user
editor using the New User Settings 2 configuration
{6.2.I}

[L] Option 2
------------
This is the users answer to system configured question
option
#2. The maximum length of this field is 35 characters.
You may
change the label of this field as it is shown in the user
editor using the New User Settings 2 configuration
{6.2.I}

[N] Option 3
------------
This is the users answer to system configured question
option
#3. The maximum length of this field is 35 characters.
You may
change the label of this field as it is shown in the user
editor using the New User Settings 2 configuration
{6.2.I}

[O] User Note


-------------
This is the users info-line or user note. The maximum
length a
user note can be is 30 characters.

[P] Security
------------
This is the users security level. You may define up to
255 user
security levels using the security level editor {6.2.L}

[R] Password
------------
This is the users password. The password is forced to be
all
uppercase, and can contain any readable ascii character
including spaces. The maximum length of the users
password is
15 characters.

[S] Flags #1
------------
These are the users AR Flags #1 set. The AR flags are
simple
binary switches (toggles) which can be used anywhere on
the BBS
through the ACS system. By default there are no flags
defined,
but you have the ability to do with them what you will.
There
are a total of 26 in set #1 and they are A-Z. To toggle a
flag
on or off, press the letter [A]-[Z]. When you are
finished
changing the flags, press [ENTER]. For more information
on
using AR flags see section {10.1}. For more information
on the
ACS system see section {9.1}.

[T] Flags #2
------------
These are the users AR Flags #2 set. The AR flags are
simple
binary switches (toggles) which can be used anywhere on
the BBS
through the ACS system. By default there are no flags
defined,
but you have the ability to do with them what you will.
There
are a total of 26 in set #1 and they are A-Z. To toggle a
flag
on or off, press the letter [A]-[Z]. When you are
finished
changing the flags, press [ENTER]. For more information
on
using AR flags see section {10.1}. For more information
on the
ACS system see section {9.1}.

[V] Start Menu


--------------
This option specifies the users starting menu after
logging
intothe BBS. This option is inherited through system
configuration, or the security level editor, but it can
be set
to whatever you like on a per-user basis.

[W] Language
------------
This option specifies the users language file. This
option is
inherited through system configuration of the new users
default
language file, but can be changed to any valid language.

[X] Hot Keys


------------
This option toggles whether a user account is setup to
use hot
keys or regular line input.

[Y] Date Type


-------------
This option cycles through the available date types a
user
account is configured for. The available date types are:

MM/DD/YY, DD/MM/YY, or YY/DD/MM


Where MM = month, DD = day, and YY = year.

[Z] FList Type


--------------
This option cycles through the available file listing
types a
user account is configured for. The available file
listing
types are:

Standard : Normal file listing.


Lightbar : Lightbar file listing. This allows
users
with ANSI graphics to scroll through
the
list of files with arrow keys.
(requires
ANSI)

[1] Msg Editor


--------------
This option cycles through the available message editor
types a
user account is configured for. The available message
editor
types are:

Full : Full screen message editor (requires ANSI)


Line : Line based message editor
Ask : Will ask the user before editing a message
which
editor they'd prefer to use.

[2] Msg Quote


-------------
This option cycles through the available message quoting
types
a user account is configured for. The available message
quoting
types are:

Standard : User uses traditional line number


quoting
Lightbar : User uses the quote window (requires
ANSI)

[3] Msg Reader


--------------
This option cycles through the available message reader
types a
user account is configured for. The available message
reader
types are:

Standard : User uses the standard message reader


Lightbar : User uses the full screen message
reader
(requires ANSI)

[4] Index
---------
This option determines if the user starts reading
messages at
the message index, or directly to the messages
themselves. The
available options are Yes and No. When this option is set
to
Yes, the user will start at the message index before
actually
reading any messages.

[5] Mail Index


--------------
This option determines if the user starts reading e-mail
at the
email message index, or directly to the e-mail messages
themselves. The available options are Yes and No. When
this
option is set to yes, the user will start e-mail at the
e-mail
index before actually reading any letters.

[6] Time Left


-------------
This is the time in minutes that a user has remaining
which
they can use online for today.

[7] Time Bank


-------------
This is the number of minutes that the user has saved in
the
Time Bank.

[8] Screen Size


---------------
This is the number of rows that a users screen is set
for. You
should change this only if the user asks you to, and for
no
other reason!

[!] User flags


--------------
Ignore LC : If this is set to Yes, the user will not be
added
to the last callers listing.

Locked Out : If this is set to Yes, the user will be


locked out
of the BBS and a message displaying that
they are
locked out will be sent whenever they
attempt to
login.

Deleted : If this is set to Yes, the user account is


marked
as ready to be deleted. The account will
remain in
the user file until you pack the user data
file.
For more information on this see section
{7.7}

No Delete : If this is set to Yes, then the user account


will
not be deleted when you purge the users data
file
for inactive users, and the account
qualifies as
inactive. The account will remain even after
the
purge. For more information on purging users
see
section {7.6}

No Ratios : If this is set to Yes, then the user account


will
bypass all configured ratios in the message
and
file systems of the BBS.

.---------------------------------------------------------------.
| |
| (6.2.K) GROUP EDITOR |
| |
`---------------------------------------------------------------'

Mystic BBS allows you to create groups of message and file areas
for
purposes of organization and separation. This is known commonly
in
other softwares like renegade as conferences. The group editor
will
allow you to edit groups for file and message areas on your
board. For
more information on setting up message and file groups see
section
{10.5}

Before you being editing groups, Mystic BBS prompts you which
type you
would like to edit, [M]essage, or [F]ile. Choose the
corresponding
hotkey for the type you wish to edit.

Below is a screen capture of the Group Editor and below it the


options
are defined in detail:

====================================================================
Message Group Editor

### Name
--- ------------------------------
1 local

(I)nsert, (D)elete, (E)dit, (Q)uit?

====================================================================

[I] Insert
----------
This will allow you to insert a group. Mystic will ask
prompt
you with where you would like to insert the group, and
list
valid responses to this question. Choose one of them, and
Mystic BBS creates a new blank group for you which you
can
then [E]dit.

[D] Delete
----------
This will delete a group. Choose the number you wish to
delete
and it's zapped out of the groups database.

[E] Edit
--------
This will allow you to edit a group. Choose the number
you wish
to edit after pressing [E] and you will be taken to the
screen
as shown below:

====================================================================
Group 1 of 1

A. Name : local
B. ACS :

Command (Q/Quit):

====================================================================

[A] Name
--------
This is the name of the group as it appears to the users
via
the MCI codes used for showing the group names. It can
contain
color codes. The maximum length a group name can be is 30
characters. For more information on MCI codes see section
{9.2}
[B] ACS
-------
This is the ACS required by users to join the group. It
can be
any ACS combination valid to the ACS system, but is
typically
a simple s### where ### is the security level required.
This is
a handy feature because you can then just setup the bases
to be
included in this group without worrying about ACS
settings for
each base individually. For more information on ACS see
section
{9.1} If this setting is left blank, then there will be
no ACS
requirements for the group.

.---------------------------------------------------------------.
| |
| (6.2.L) SECURITY LEVELS EDITOR |
| |
`---------------------------------------------------------------'

Security levels offer you an easy way of tracking and organizing


the
access users have to your BBS. You can setup up to 255 different
custom
security levels in total. Security levels can then be assigned to
each
of the users, and default security levels can be set for new
users who
apply to your BBS. Below you will find a screen capture of the
Security
Level Editor screen and below the capture the options for it
defined:

====================================================================
Security Level 1 of 255

A. Description : ■ blacklisted
B. Time allowed/day : 0
C. Max calls/day : 0
D. Max downloads/day : 0
E. Max download K/day : 0
F. Max mins in time bank: 0
G. UL/DL ratio : Disabled
H. UL/DL Kb ratio : Disabled
I. Post / Call Ratio : Disabled

K. Upgraded Flags Set 1 : --------------------------


L. Upgraded Flags Set 2 : --------------------------

M. Hard AF Upgrade : No
N. Start Menu : STARTBL

([) Previous, (]), Next, (J)ump, (Q)uit:

====================================================================

[A] Description
---------------
This is a reference so you can keep track of what this
level is
setup to be intended for. In the example above, I've set
mine
to "■ blacklisted" because SL1 on my system is for users
who I
no longer wish to be a part of my BBS and are hence
assigned to
this level and are blacklisted.

[B] Time allowed/day


--------------------
This sets the number of minutes a user with this security
level
is allowed on your BBS per day. The day starts at 00:00
and
ends at 24:00. If this limit is reached the BBS will tell
the
user that their time for the day has expired and instruct
them
to call back tommorow.

[C] Max calls/day


-----------------
This sets the maximum number of calls a user with this
security
level is allowed to have per day. If the maximum number
of
calls is reached, the BBS will tell the user that their
call
limit was reached and instruct them to call back
tommorow.

[D] Max downloads/day


---------------------
This sets the maximum number of downloads a user with
this
security level is allowed. If the user attempts to
download
more than this limit, they will be prompted that their
download
limit has been reached.

[E] Max download K/day


----------------------
This sets the maximum number of kilobytes a user with
this
security level is allowed to download. If the user
attempts to
download more than this limit, they will be prompted that
their
download k limit has been reached.

[F] Max mins in time bank


-------------------------
This sets the maximum number of minutes a user with this
security level is allowed to store in the time bank. If
the
user attempts to store more than this limit, they will be
prompted that their time bank limit has been reached.

[G] UL/DL ratio


---------------
This sets the ratio of uploads to downloads a user with
this
security level is assigned to. The ratio works by
specifying
how many uploads are required to earn one download. For
example
to make it so that users must upload 1 file to download 3
files
set this to 3. When a user then attempts to download and
their
ratio is out of balance, the BBS will prompt them of it.
To
disable this ratio entirely enter 0.

[H] UL/DL Kb ratio


------------------
This sets the ratio of uploads to downloads in kilobytes
a user
with this security level is assigned to. The ratio works
by
specifying how many kilobytes are allowed to be
downloaded when
earned by every 1 kilobyte uploaded. For example if you
wanted
to set your UL/DLk ratio to be 200% of whatever the user
has
uploaded set this to 2. This would tell Mystic that for
every
1kB uploaded a user is allowed to download 2kB. To
disable this
ratio entirely enter 0.

[I] Post / Call Ratio


---------------------
This sets the ratio of how many posts are required per
100
calls a user with this security level is assigned to. The
ratio
works by specifying how many posts a user must post in
order to
meet their PC/R (post/call ratio). For example if you
wanted
to set a PC/R where a user has to post atleast 1 time per
call,
you would set this to 100. This would require that in
order for
the user to meet the PC/R they would have to post EVERY
single
call they made to the BBS. This is a bit ridiculous, but
it's
just an example. PC/R can be used to determine if a user
is
contributing enough to the BBS via posting of messages.
You
could then control access and other parts of the board by
using
the PC/R ACS evaluation stuff. For more information on
ACS see
section {9.1}.

[K] Upgraded Flags Set 1


------------------------
This option specifies which AR flags in set #1 are
toggled for
a user assigned to this security level when they are
upgraded
from a lower security level. The flags are from A-Z and
can be
toggled individually on or off. For more information on
AR
flags see section {10.1}

[L] Upgraded Flags Set 2


------------------------
This option specifies which AR flags in set #2 are
toggled for
a user assigned to this security level when they are
upgraded
from a lower security level. The flags are from A-Z and
can be
toggled individually on or off. For more information on
AR
flags see section {10.1}

[M] Hard AF Upgrade


-------------------
This option specifies whether the AR flags set on an
upgrade
should toggle individually if changed, or set the entire
group
explicitly of flags explicitly when a upgrade is assigned
to a
user with this security level.

For example:

Here are some hypothetical Security Levels:

[SL10]
Flags1: A-C-----------------------
Hard AF Upgrade: No

[SL20]
Flags1: -B------------------------
Hard AF Upgrade: No

[SL30]
Flags1: ABCD----------------------
Hard AF Upgrade: Yes

[SL250]
Flags1: ---D----------------------
Hard AF Upgrade: Yes

Test User applies and is assigned to SL10 because


that
is how we set it up in system configuration so:

SL: 10
Flags1: A-C-----------------------

We then validate Test User to SL20 which we've


got
setup to be a regular user:

SL: 20
Flags1: ABC-----------------------

Notice that A and C are still set with


Hard
AF Upgrade disabled.

We then upgrade Test Users access to SL30 which


gives
him access to a special file group we made:
SL: 30
Flags: ABCD-----------------------

Test User uploads something we really wanted and


proves
himself to be a huge file god so we give him co-
sysop
access:

SL: 250
Flags: ---D-----------------------

Notice that his A B and C flags are reset


as
the Hard AF Upgrade to SL250 explicitly
unsets
them.

[N] Start Menu


--------------
This option specifies what menu the user assigned to this
security level starts with. This can be any valid menu
you have
created.

Tip: It's a great and powerful feature to assign


different SL's
different start menus. That way you could create
different
experiences for the different SL's and make people
feel
like they are actually contributing by giving them
special
display files or options or something. For more info
on
making special menus and display files see section
{8.0}

.---------------------------------------------------------------.
| |
| (6.2.M) EVENT EDITOR |
| |
`---------------------------------------------------------------'

The event editor is where all system events are setup. A system
event
is when Mystic BBS exits at a specified time so external programs
can
be ran to help maintain the BBS. The following is a screen
capture of
the Event Editor screen followed by an explanation of what each
option
does:

====================================================================
Event Editor

### Name
--- ------------------------------ -----
-1 New Event 00:00

(I)nsert, (D)elete, (E)dit, (Q)uit?

====================================================================

[I] Insert Event


----------------
The Insert option is used to add a new event into the
event
database. After an event has been added, it should be
setup to
run as you want it to.

[D] Delete Event


----------------
The delete option is used to remove an event from the
event
database.

[E] Edit Event


--------------
The edit option is used to edit an event already in the
event
database. When this option is selected, the following
screen
will be shown:

====================================================================
Event 1 of 1

!. Active : No
A. Description : New Event
B. Forced : No
C. Errorlevel : 0
D. Execution Time : 00:00
E. Busy Warning : 0
F. Last Ran on : 00/00/80
G. Offhook Modem : No
H. Node Number : All

Command (Q/Quit):

====================================================================

[!] Active Event


----------------
This option sets if the event is active. If the event is
not
set to active, Mystic BBS will ignore the event as if it
doesn't even exist in the event database.

[A] Description
---------------
This option sets the description of the event. This isn't
internally used by Mystic BBS but is added to help keep
track
of which event does what.

[B] Forced
----------
This option specifies if the event is a forced event. A
forced
event will run at the execution time no matter what the
circumstances are. If a user is online when a forced
event
approaches, they will be warned and then the call will be
terminated if they do not log off by the execution time.
If the
event is not a forced event, Mystic BBS will wait until
the
user terminates their call before running the event.

[C] Errorlevel
--------------
This option specifies the Errorlevel that Mystic BBS will
exit
at when this event is being ran. This is used by the
batch file
or shell script which runs the BBS to determine which
event is
running. For more information on Errorlevels and batch
files,
see the instruction manual for your operating system or
command
shell and section {9.10}

[D] Execution Time


------------------
This option is used to set what time Mystic BBS will run
the
event. The time format is in 24-hour format. For example,
12:00
is 12 noon, and 23:59 would be 11:59pm.

[E] Busy Warning


----------------
The busy warning option is used to set when Mystic BBS
will
warn the user of an upcoming event. So if this option is
set to
5, Mystic BBS will wait until 5 minutes before the event
to
warn the user. If the event is not a forced event then
Mystic
BBS does not run the event until the user logs off, and
this
option will be ignored.

[F] Last Ran On


---------------
This option is used to show the date when the event was
last
ran. In most cases, this option does not need to be
touched as
Mystic BBS keeps this field up-to-date each time the
event is
ran.

[G] Offhook Modem


-----------------
This option is used to take the modem offhook when
running the
event. If this option is set to "No" and Mystic happens
to be
running an event when a user calls, the phone line will
ring
and ring until the event finishes (not very
professional).

[H] Node Number


---------------
This option specifies which node number the event will
run on
and option [E] will only tell the user on that node when
it is
about to be run. This option is helpful for a BBS that
for
instance only runs a door game such as Lord on node 5,
and at
midnight every day an event is used to update a SCORES
file.
.---------------------------------------------------------------.
| |
| (6.2.N) ARCHIVE EDITOR |
| |
`---------------------------------------------------------------'

The archive editor is where all archive compression and


decompression
utilities are setup. Archive utilities are programs which take a
number
of files and compress them into one file, saving drive space and
in the
case of a BBS, file transfer time. Archive utilities are used
with
Mystic BBS in the file transfer functions, and in the QWK offline
mail
functions and are almost required if you want to use these
features.

Some popular archive programs are:

- PkWare's PKZIP utilities ARJ241A.EXE


- Robert Jung's ARJ utilities PKZ204G.EXE
- Eugene Roshal's RAR utilities RAR202.EXE
- Haruyasu Yoshizaki's LHA utilities LHA225.EXE

These utilities can be found on most BBSes and throughout the


Internet.
Many are free for non-commercial use.

Below is a screen capture of the Archive Editor followed by an


explanation of what each option does:

====================================================================
Archive Editor

### Ext Name


--- --- --------------------
1 ZIP PkWare's ZIP
2 LZH Yoshi's LHA
3 RAR Roshal's RAR
4 ARJ Jung's ARJ

(I)nsert, (D)elete, (E)dit, (Q)uit?

====================================================================

[I] Insert Archive


------------------
This option is used to insert a new archive definition
into the
archive editor.

[D] Delete Archive


------------------
This option is used to delete an archive definition from
the
archive editor.

[E] Edit Archive


----------------
This option is used to edit an archive definition in the
archive editor. Below is a screen capture of the Archive
Settings screen followed by an explanation of what each
option
does:

====================================================================
Archive 1 of 4

A. Name : PkWare's ZIP


B. Extension : ZIP
C. Pack Cmd : PKZIP -a -ex -o %1 %2
D. Unpack Cmd: PKUNZIP -o -ed %1 %2 %3
E. View Cmd : PKUNZIP -vb %1 >%3%2

Command (Q/Quit):

====================================================================

[A] Archive Name


----------------
This option defines the description of the archive as it
will
appear when listed by Mystic BBS.

[B] Archive Extension


---------------------
This option defines the archive extension as created by
the
archive utility which is currently being setup.

[C] Pack Command Line


---------------------
This option defines the command line that Mystic BBS uses
to
pack a group of files into one file. Archive MCI codes
must be
used for this command line and are listed below.
[D] Unpack Command Line
-----------------------
This option defines the command line that Mystic BBS uses
to
unpack an archive into the temporary directory. Archive
MCI
codes must be used for this command line and are listed
below.

[E] View Command Line


---------------------
This option defines the command line that Mystic BBS uses
to
view the contents of an archive. Mystic BBS internally
supports
the viewing of ZIP, LZH, ARJ, and RAR files. If an
archive is
not of one of the above types, Mystic BBS will look into
the
archive definitions and use the this command line to view
if
the extension of the file matches the extension of the
archive
definition.

Archive MCI Codes


-----------------
These codes work just like the MCI display codes, but only work
with
the archive definitions. The following MCI codes can be used in
the
Archive Editor:

%1 = File name being processed.


%2 = Files to pack/unpack.
%3 = Temporary file directory where Mystic BBS
packs/unpacks
archives.

.---------------------------------------------------------------.
| |
| (6.2.O) PROTOCOL EDITOR |
| |
`---------------------------------------------------------------'

Note: In the latest versions of Mystic BBS protocols have been


added
internally to the software itself, thus eliminating the
need of
using any external protocols at all, and hence the External
Protocol editor has been removed. However, for those of you
using older versions of Mystic this section of the
documentation
has been kept intact for your convenience.

The protocol editor is where all file transfer protocols are


setup and
maintained. A file transfer protocol is a program which is used
to
transfer files between computer systems. In almost all cases they
are
needed if you wish to run a BBS, unless you don't plan on using
the
entire file transfer section or any of the QWK offline mailing
functions.

By default, Mystic BBS comes pre-configured to use the CEXYZ


v1.00
protocol driver. This archive can be found on the Mystic BBS web
page
as well as on various BBS systems under the filename of
CEXYZ100.XXX
(where XXX is the archive type). In most cases, you should only
need to
copy the CEXYZ.EXE file into the protocol directory as defined in
the System Configuration -> System Paths in order to have a fully
working protocol setup. If you wish to use a protocol driver
other than
CEXYZ, you must make sure that it is capable of producing a
compatible
DSZ-style log file.

Below is a screen capture of the Protocol Editor screen followed


by an
explanation of what each option does:

====================================================================
Protocol Editor

## Key Description
-- --- --------------------
1 X (CEXYZ) Xmodem
2 Y (CEXYZ) Ymodem
3 Y (CEXYZ) Ymodem Batch
4 G (CEXYZ) Ymodem-G
5 G (CEXYZ) Ymodem-G Batch
6 Z (CEXYZ) Zmodem
7 Z (CEXYZ) Zmodem Batch

(I)nsert, (D)elete, (E)dit, (Q)uit?


====================================================================

[I] Insert Protocol


-------------------
This option will add a new protocol definition to the
protocol
editor.

[D] Delete Protocol


-------------------
This option will allow an existing protocol definition to
be
deleted from the protocol editor.

[E] Edit Protocol


-----------------
This option allows an existing protocol definition to be
edited

The following is a screen capture of the Protocol Editor


EDIT
screen followed by an explanation of each option:

====================================================================
Protocol 6 of 7

A. Key : Z
B. Description: (CEXYZ) Zmodem
C. Batch : No
D. UL Command : cexyz.exe /P%1 /B%2 /L%4 /Rz %3
E. DL Command : cexyz.exe /P%1 /B%2 /L%4 /Sz %3

Command (Q/Quit):

====================================================================

[A] Key
-------
This option specifies the hotkey which is used to select
this
protocol from the protocol list. It is important to make
sure
that a protocol definition does not use the same hotkey
as
another protocol definition, or problems may occur.

[B] Description
---------------
This option defines the name / description of the
protocol as
it will appear when a user is prompted to select a
protocol.

[C] Batch
---------
This option defines if this protocol is a batch protocol.
A
batch protocol is a protocol which allows a group of
files
to be sent at one time, consecutively. If a user has
flagged a
list of files to download at one time, Mystic BBS will
prompt
them to select a BATCH protocol. If a user has selected
only
one file to download, Mystic BBS will prompt the user to
select
a non-batch protocol. Note that some protocols allow both
single and batch file transfers, so there might be two
definitions on the protocol editor for one protocol. One
being
the setup for single file transfers, and one being the
setup
for batch file transfers.

[D] Upload Command Line


-----------------------
This option specifies the command line that is sent to
the
protocol driver in order to upload (receive) files from
another
connection. There is a specific set of MCI codes which
can be
used in the protocol editor only listed below.

[E] Download Command Line


-------------------------
This option specifies the command line that is sent to
the
protocol driver in order to download (send files FROM the
BBS)
to a connected user. The MCI codes available only to the
protocol editor are listed below:

Protocol MCI Codes


------------------

%0 = Comport handle (Win32 and OS/2 only)


%1 = Comport which the modem is using.
%2 = The baud rate the user is currently
connected at.
%3 = Name of the file being transferred.
%4 = Baud rate as setup in the Node settings
(locked).

.---------------------------------------------------------------.
| |
| (6.2.P) VOTING BOOTH EDITOR |
| |
`---------------------------------------------------------------'

The Voting Booth Editor is where all questions and answers for
the
built in Voting Booth are setup. The Voting Booth option can
allow up
to 20 voting questions, and 15 answers per question to be
defined. The
following is a screen capture of the Voting Booth screen followed
by an
explanation of what each option does:

====================================================================
Voting Booth Editor

## Question
-- ---------------------------------------
1 New Question

(A)dd, (D)elete, (E)dit, (Q)uit?

====================================================================

[A] Added New Question


----------------------
This option allows a new voting question to be defined.

[D] Delete Question


-------------------
This option allows an already defined voting question to
be
deleted from the Voting database.

[E] Edit Voting Question


------------------------
This option allows an already defined voting question to
be
configured. All available answers and options for each
question
are defined here. The following is a screen capture of
the
Voting Booth Question Editor followed by an explanation
of what
each option does:

====================================================================
Question 1 of 1

A. Question : New Question


B. Votes : 1
C. Vote ACS : s255
E. Add ACS : s255
F. Forced ACS : s999

## Answer ## Answer
-- --------------------------- -- ---------------------------
01 New Answer 02 Another New Answer

(I)nsert, (D)elete, (Q)uit):

====================================================================

[A] Question
------------
This option defines the question text as it will appear
to the
user who is voting on the question.

[B] Votes
---------
This option defines the total number of votes which have
been
placed for this question. Note: Mystic BBS internally
keeps
track of this and in most cases this options should not
be
changed by the SysOp. If this option is changed, it could
cause
an error in the percentage calculation in the voting
results
screen.

[C] Vote ACS


------------
This defines the ACS string which is required to vote on
this
question. If the user does not meet the ACS string, they
will
not be able to see the question.
[E] Add ACS
-----------
This defines the ACS string which is required to add an
answer
to the voting question. If the user meets this ACS string
they
will be able to add their own answer to the voting
question, as
long as the maximum of 15 answers hasn't been reached.

[F] Forced ACS


--------------
Mystic BBS can optionally force users to vote on certain
questions. This option defines the ACS string to force a
user
to vote on the question. If the user meets this ACS
string as
well as the ACS string for the question itself, they will
be
forced to vote on this question before getting into any
system
menus. For information on creating a mandatory voting
question
see section {10.6}

[1 to 15] Edit An Answer


------------------------
The answers for each question are listed in the question
editor
as 1) through 15). By entering the number of the answer
on the
command line, the answer text can be edited, as well as
the the
number of votes for each answer. Note: The number of
votes for
each answer is maintained by Mystic BBS and does not need
to be
edited by the Sysop. If these values are changed, it may
cause
an error in the percentage calculation in the voting
question
results.

[D] Delete Answer


-----------------
This option allows a defined answer to be deleted.

[I] Insert Answer


-----------------
This option allows a new answer for the question to be
defined.
.---------------------------------------------------------------.
| |
| (6.2.Q) MESSAGE BASE EDITOR |
| |
`---------------------------------------------------------------'

The message base system allows users to post messages which can
be
publicly read by anyone, or sent privately to an individual user.
Mystic also supports the option of having "networked" message
bases,
meaning, a message base which is shared with several other BBS
systems,
allowing all users from every system to send messages to each
other!
The following is a screen capture of the Message Base Editor
along with
a description of each available option:

====================================================================
Message Base Editor

### Name Type Format


--- ---------------------------------------- ------- ------
0 Electronic Mail Local JAM

(I)nsert, (D)elete, (E)dit, (M)ove, (Q)uit?

====================================================================

[I] Insert
----------
This option lets you create a new message base. Choose
where
you would like the base created, and whala!

[D] Delete
----------
This option will let you delete an existing message base.
Pick
the base you want to delete, and say goodbye to it.

[M] Move
--------
This option will let you reposition an existing message
base in
the order you want it.

[E] Edit
--------
This option will let you edit an existing message base.
The
editor screen is shown below and it's options are defined
under
it:

====================================================================
Message Base 0 of 0

A. Name : Electronic Mail


B. QWK Name : E-Mail
C. Filename : EMAIL
D. Storage Path : C:\S7BBS\MSGS\
E. Post Type : Private Y. Base Format :
JAM

F. List ACS : s999 O. Quote Color :


XX> Quote
G. Read ACS : s10 P. Text Color :
Text
H. Post ACS : s10 R. Tear Color :
--- Tear
I. Sysop ACS : s255 S. Origin Color :
* Origin:
J. Password : T. Header File :
K. Base Type : Local
L. Net Address : 0:0/0
M. Origin line : :: sector7 BBS (sector7bbs.com)
N. Use Realnames: No

U. Default New Scan: No W. Max Messages :


0
V. Default QWK Scan: No X. Max Msg Age :
365 days

([) Prev, (]) Next, (Q)uit:

====================================================================

[A] Name
--------
This option defines the message base name, as it will
appear in
the list of available message bases.

[B] QWK Name


------------
This option defines the QWK message base name. This name
will
be used as the message base name within a user's QWK
offline
mail packet.

[C] Filename
------------
This option defines the file name which Mystic will use
to
store the message base data in. This should be a unique
name,
up to 8 characters in length.

[D] Storage Path


----------------
This option is used to specify the path on your hard disk
that
Mystic BBS will use to store data files for this message
base.
Mystic will automatically assign the "default" message
base
path to this option, and in most cases it does not need
to be
changed.

[E] Post Type


-------------
This option sets the "type" of message that is allowed to
be
posted in this base. Available options are:

Public : All messages are posted as public and


can be
read by all users.

Private : All messages are posted as private and


can
ONLY be read by the user it is sent to.

[F] List ACS


------------
This option defines the Access String (ACS) which the
user must
meet in order for this base to appear in the message base
listing.

[G] Read ACS


------------
This option defines the ACS string which the user must
meet in
order to read messages in this base.

[H] Post ACS


------------
This option defines the ACS string which the user must
meet in
order to post a message into this base.

[I] SysOp ACS


-------------
This option defines the ACS string which the user must
meet in
order to access "SysOp" functions for this message base.
Functions such as editing the message header and text,
along
with (X)porting the message to a text file.

[J] Password
------------
This option defines the password required to access this
message base. If this option is left blank, no password
will be
required.

[K] Base Type


-------------
This option defines the "type" of message base that is
being
setup. Available options are:

Local : Sets the message base as a local base. This


means
that this base is NOT part of any message
network
where messages need to be exported, processed,
and
sent to another system.

EchoMail: Sets the message base as a EchoMail message


base.
Most message base networks available to BBS
SysOps
are "FidoNet" style echomail networks. This
option
causes Mystic to exit with an errorlevel of 5
when
new Echomail mail has been entered. This allows
for
your setup to execute the appropriate Echomail
mail
processors.

UseNet : Sets the message base as a UseNet message base.


This
option is for easier integration with the
Internet
UseNet newsgroups. This option works much like
a
Echomail base, except it causes Mystic to exit
with
errorlevel 6 when new messages have been
entered and
it automatically sets all messages "To: ALL".

NetMail : Sets the message base as an EchoMail / NetMail


base.
When a base is set as NetMail, Mystic will also
ask
for an echomail destination address along with
the
"To" field.

Note: When both Echomail and UseNet mail have been


entered,
Mystic will exit with an errorlevel of 7. When this
occurs, both Echomail and UseNet mail processors
should
be executed.

[L] Net Address


---------------
This option defines the FidoNet network address, which is
assigned to each BBS in a message base network. Put YOUR
nodes
address here.

[M] Origin Line


---------------
This option defines the Origin Line which is appended to
each
message posted in aa Echomail message base. The origin
line
usually contains the name or your BBS, the phone number,
location, telnet address, etc. This option is
automatically
inherited from the system configuration message settings,
but
can be set to whatever you like per base.

[N] Use Realnames


-----------------
This option defines whether Mystic will use the user's
REAL
name in the "From" field. Some message base networks
require
that all message posted use the user's real name.

[U] Default New Scan


--------------------
This option defines if the message base will be toggled
ON in
all users new message scan settings by default. The
available
options are:

Yes : This base is pre-configured to be


included
in all new-scans unless turned off
explicitly
by the user.

No : This base is not part of a default new-


scan.

Always : This base is pre-configured to be


included
in all new-scans and cannot be turned
off
by any users at all! This is a great
feature
and can be used to setup a system news
base.
For more information on setting up
mandatory
message base for system news see
section
{10.7}

[V] Default QWK Scan


--------------------
This option defines if the message base will be toggled
ON in
all users QWK message scan settings by default. The
available
options are:

Yes : This base is pre-configured to be


included
in all new-scans unless turned off
explicitly
by the user.

No : This base is not part of a default new-


scan.

Always : This base is pre-configured to be


included
in all new-scans and cannot be turned
off
by any users at all! This is a great
feature
and can be used to setup a system news
base.
For more information on setting up
mandatory
message base for system news see
section
{10.7}

[Y] Base Format


---------------
This option specifies the message base "format" to use.
This
can be set to either "JAM" or "Squish", the two most
popular
message base formats.

*NOTE: If you have an active message base in one format,


and
wish to change to another format, you will need to
d
one of two things:

1) Delete the message base data files, and lose the


current messages in the base, or...

2) Run a utility to convert from one format to the


other
THEN switch formats in the message base editor.

[O] Quote Color


---------------
This option specifies the color Mystic will use for
"quoted"
text when reading messages. Available colors options are:

Foreground colors:
0 - Black 6 - Brown 12 - Light
Red
1 - Blue 7 - Light Grey 13 - Light
Magnta
2 - Green 8 - Dark Grey 14 - Yellow
3 - Cyan 9 - Light Blue 15 - White
4 - Red 10 - Light Green
5 - Magenta 11 - Light Cyan

Background colors:
0 - Black 4 - Red
1 - Blue 5 - Magenta
2 - Green 6 - Brown
3 - Cyan 7 - Gray

[P] Text Color


--------------
This option defines the color Mystic will use to display
"regular" text while a user is reading a message.

[R] Tear Color


--------------
This option defines the color Mystic will use to display
the
tear line of the message. The tear line is a line of text
usually appended at the end of a networked message base.
For
example, at the end of each exported message, Mystic will
append the following tear and origin line:

--- Mystic BBS v1.08/WIN32


* Origin: <your configured origin here> (0:0/0)

[S] Origin Color


----------------
This option defines the color Mystic will use to display
the
origin line of the message.

[T] Message Header File


-----------------------
This option defines the optional external message header
which
can be used. The filename specified here should be found
in the
TEXT directory with all of the other display files. If
this
file does not exist, Mystic will generate it's own
message
header. The following PromptInfo MCI codes are available
in the
message header file:

|&1 From |&6 Total messages in base


|&2 To |&7 Reply to message number
|&3 Subject |&8 See also message number
|&4 Message Date |&9 Message status
|&5 Message number |&0 Message Time

[W] Max Messages


----------------
This option specifies the maximum number of messages
which this
base can contain before they will be purged. Mystic does
not
internally do anything with these values. They have been
added
to support the Squish message base standard and their
utilities.

[X] Max Message Age


-------------------
This option specifies the maximum days a message can be
posted
before they will be purged. Mystic does not internally do
anything with these values. They have been added to
support the
Squish message base standard and their utilities.

General notes on Message Bases


------------------------------

You can employ the use of color codes in the names of your
message
bases to make it easier for the user to see local or networked
areas.
You can also set message bases to belong to a message group. This
is a
great way to isolate networked message bases from local message
bases.

Never delete the electronic mail message base. You can rename it,
but
do not delete it or change the filename!

All of the colors assigned to the various parts of a message base


are
inherited through the system configuration message base settings,
but
can be configured individually to whatever you like.

.---------------------------------------------------------------.
| |
| (6.2.R) FILE BASE EDITOR |
| |
`---------------------------------------------------------------'

The file base system allows users to transfer files to and from
the
BBS system so they can be shared with other users of the BBS.
These
files can be categorized into different file bases, which are
setup
in the File Base Editor. The following is a screen capture of the
file base editor screen along with a description of each
available
option:

====================================================================
File Base Editor

### Name
--- --------------------------
1 New File Base

(I)nsert, (D)elete, (E)dit, (M)ove, (Q)uit?

====================================================================

[I] Insert File Base


--------------------
This option allows a new file base definition to be added
into
the database.

[D] Delete File Base


--------------------
This option allows an already defined file base to be
removed
from the file base database.

[M] Move File Base


------------------
This option allows already defined file bases to be moved
around within the database.

[E] Edit File Base


------------------
This option allows the settings for an already defined
file
base to be edited. The following is a screen capture of
the
file base modify screen along with an explanation of what
each
option does:

====================================================================
File Base 1 of 1

A. Name : uploads
B. Filename : UPLOADS
C. Display File :
D. List ACS : s10
E. Sysop ACS : s255
F. Upload ACS : s10
G. Download ACS : s10
H. Storage Path : C:\FTP\UPLOADS\
I. Password :
J. Show Uploader : Yes
K. Default New Scan : Always
L. CD-ROM Area : No
M. All Files Free : No
([) Prev, (]) Next, (Q)uit:

Command (Q/Quit):

====================================================================

[A] Name
--------
This option defines the file base name / description as
it will
appear to the user when they select a file base.

[B] Filename
------------
This option defines the data file name that is used to
store
information for this file base. This file should be a
unique
file name, different from all other data files.

[C] Display File


----------------
This option defines the display file that Mystic can
display
before the files in this base are listed. This field is
optional and should be left blank if you do not wish to
have
Mystic send a display file before each file list.

[D] List ACS


------------
This option defines the ACS string which the user must
pass in
order to gain access to this file base and list files.

[E] SysOp ACS


-------------
This option defines the ACS string which the user must
pass
in order to access SysOp functions such as the File
Directory
Editor.

[F] Upload ACS


--------------
This option defines the ACS string which the user must
pass in
order to upload (send) files from their computer to this
file
base.

[G] Download ACS


----------------
This option defines the ACS string which the user must
pass in
order to download (receive) files from this file base
onto
their computer.

[H] Storage Path


----------------
This option defines the directory where Mystic will store
the
files uploaded into this file base.

[I] Password
------------
This option defines the password which is required to
access
this file base. If you do not wish to require a password
to
access this base, leave this field blank.

[J] Show Uploader


-----------------
This option defines if Mystic BBS will show the
uploader's
name during the file list. If this option is set to yes,
Mystic
will show who uploaded each file into the file base at
the end
of the file description.

[K] Default New Scan


--------------------
This option defines the default new scan setting for this
file
base. When a new user logs into the system, their file
base new
scan setting for this base will be set to the default.
The
available options for this setting are:

Yes : This file base will be pre-configured


to be
included in a users new-scan, and can
be
turned off by the user at their
preference.

No : This file base will be pre-configured


to be
excluded in a users new-scan.

Always : This file base will be pre-configured


to be
included in a users new-scan and cannot
be
turned off at all!

[L] CD-ROM Area


---------------
This option specifies whether the files in this area are
being
stored on a CD-ROM drive. If this option is set to "Yes",
Mystic BBS will refuse uploads into the area, as well as
attempt to copy files from the CD-ROM drive to the hard
drive
before sending them to the user. This keeps the CD drive
access
to a minimum, which is important when multiple users are
downloading files from the same CD-ROM drive.

[M] All Files Free


------------------
This option tags the file base to be exempt from all
inherited
ratios from the system configuration file settings, and
the
users security level setting. This could be used for
example,
to support Mystic BBS by having all the official releases
in
this area and setting this flag to "Yes".

.---------------------------------------------------------------.
| |
| (6.2.S) MENU EDITOR |
| |
`---------------------------------------------------------------'

The BBS menus are the core of the BBS system. It is where all BBS
commands and functions available to the user are defined and
setup.
Mystic BBS supports an unlimited number of defined menus which
can be
setup in any way, allowing a totally customizable and unique
interface
to the user.

When first entering the menu editor, you will be prompted to


select
which language definition you'd like to edit. It is possible to
have
different sets of menus for each language!
After you've selected the language you'd like to edit, you will
be
shown the main menu selection screen:

====================================================================
Menu Editor (Language: Mystic Default)

Directory of C:\S7BBS\MENUS\*.MNU

ACCOUNT.MNU AUTOSIG.MNU BBSLIST.MNU DOORS.MNU


FILE.MNU FLIST.MNU FNEWSCAN.MNU FQUEUE.MNU
GOODBYE.MNU MAIN.MNU MESSAGE.MNU
MNEWSCAN.MNU
MSEARCH.MNU NEWINFO.MNU PRELOGIN.MNU QWK.MNU
SYSOP.MNU TIMEBANK.MNU VOTE.MNU

(E)dit, (I)nsert, (D)elete, (Q)uit?

====================================================================

[I] Insert
----------
This option will allow a new menu to be created.

[D] Delete
----------
This option will allow an existing menu to be deleted.

[E] Edit
--------
This option will allow an existing menu to be edited.
Upon
selecting a valid menu from the listing, you will be
taken to
the menu editor screen as shown below:

====================================================================
Menu Command List

## Hot-Key Cmd Text ## Hot-Key Cmd Text


-- -------- --- --------------------- -- -------- --- ----------
...
1 A GO |09(|10A|09) |03Accou 2 M GO
|09(|10M|0...
3 F GO |09(|10F|09) |03File 4 D GO
|09(|10D|0...
5 S GX |09(|10S|09) |03Syste 6 C MW
|09(|10C|0...
7 L GL |09(|10L|09) |03Last 8 O GN
|09(|10O|0...
9 V GO |09(|10V|09) |03Votin 10 U GU
|09(|10U|0...
11 B GO |09(|10B|09) |03BBS L 12 P GP
|09(|10P|0...
13 T GO |09(|10T|09) |03Time 14 G GO
|09(|10G|0...
15 ! GX |09(|10!|09) |03MPL D 16 /N NC
|09(|10/N|...
17 /W NW |09(|10/W|09) |03Who' 18 /S NS
|09(|10/S|...
19 /G GI |09(|10/G|09) |03Good 20 /* GO
|09(|12/*|...

(E)dit, (I)nsert, (D)elete, (F)lags, (V)iew, (Q)uit:

====================================================================
Note: This screen capture has been truncated for readability
purposes

[I] Insert
----------
This option will allow you to insert a new command in the
menu.
Choose a place for it in the range Mystic prompts you
with, and
it will be inserted.

[D] Delete
----------
This option will allow you to delete an existing menu
command
from the menu.

[V] View
--------
This option will simulate what the menu will look like to
the
user when it is ran/viewed. Press any key after the
preview to
return to the menu editor screen.

[F] Flags
---------
This option sets several flags which the Mystic BBS menu
system
employs for various functions. A screen capture of this
portion
is shown below and the options are explained below the
capture:
====================================================================
Menu Flags (MAIN)

A. Menu Header : |DFmainhdr


B. Menu Prompt : |CR|09Command |08-> |09
C. Display Cols : 3
D. ACS : s10
E. Password :
F. Display File : MAIN
G. Fallback Menu : MAIN
H. Menu Type : Standard
I. Finish X/Y : 0 0
J. Use Global MNU: Yes
K. Input Type : User setting

(V)iew or (Q)uit:

====================================================================

[A] Menu Header


---------------
The menu header is displayed before any of the commands
in the
menu. You can set this to standard text, using any MCI
codes,
or color codes that you like, or you can show a display
file
by using the |DF MCI code. In this example, we are
showing a
display file whose filename is "mainhdr". This file is
found
in the default languages TEXT directory. For more
information
on the Mystic BBS MCI Display codes, MCI Control Codes,
and
Color Codes see sections {9.3, 9.4, and 9.5}.

[B] Menu Prompt


---------------
The menu prompt is displayed after all of the menu
commands are
listed to the user. The menu prompt is the last thing to
be
drawn on screen and is intended to provide a prompt
asking the
user to enter a command from those available on the menu.
You
can use the same guidelines as the [A] Menu Header for
this
field.
Note: If you choose to use a display file for your
prompt, you
may have a problem where the cursor ends up in the
wrong
spot after drawing the display file. To correct
this see
Display File Tips and Techniques {8.B.4}

[C] Display Cols


----------------
This option specifies how many menu command columns
should be
output onto one row in the menu command listing. Valid
options
are 1, 2, and 3. The actual contents of the menu commands
that
are displayed are inherited from the menu commands
themselves.

[D] ACS
-------
This is the ACS required to access this menu. If the user
meets
the ACS requirement, the menu will be loaded. Otherwise
Mystic
will display a prompt telling the user they do not have
access
to this particular menu.

[E] Password
------------
This option sets a password required to use this menu. If
this
option is left blank, no password will be required at
all. When
a menu is protected by a password the user will be
prompted to
enter the password before any menu commands are listed.
Upon
entering the incorrect password the user will return to
the
menu that called the password protected menu after being
shown
a prompt that the password they entered was incorrect.

[F] Display File


----------------
This field sets the display file to be shown in place of
the
Mystic formatted menu command listing. If a display file
is set
in this field and it exists in the current languages TEXT
directory, it will be shown in place of the internal menu
list.
If this field is left blank, or the file specified does
not
exist, it will show the default Mystic generated menu
listing.

[G] Fallback Menu


-----------------
This field specifies the fallback menu for the CURRENT
menu. A
fallback menu is a contingency and part of the Mystic BBS
menu
system. Fallback menus are only executed when the current
menu
has a serious error for some reason. At which point the
user is
returned to the fallback menu as configured here.

[H] Menu Type


-------------
This field sets the menu type. The available options are:

Standard : Uses the internal Mystic menu


command
listing, or a display file and
then
the menu prompt.

Lightbar : Uses the display file, and then


arrow
key navigation with a lightbar
select
system. For more information on
this
topic see section {8.C.4}

Lightbar Grid : Uses an advanced lightbar menu


system
to allow horizontal movement in
a way
that can be configured to your
exact
desire. For more information on
this
topic see section {8.C.5}

[I] Finish X/Y


--------------
This field sets the horizontal and vertical coordinates
the
cursor ends on when the menu terminates. The format for
this is
X (horizontal) and Y (vertical). Valid values for X are
1-80,
and valid values for Y are 1-50 (24 would be the bottom
line on
a system configured to handle 25 line clients with status
bar)

[J] Use Global MNU


------------------
This option lets you toggle whether or not the GLOBAL.MNU
is
accessible while the user is using THIS menu. If this
option is
set to "Yes" Mystic will allow commands in GLOBAL.MNU to
be
used. If it is set to "No" Mystic will ignore any
commands that
are present in the GLOBAL.MNU.

[K] Input Type


--------------
This option specifies the type of input the menu uses.
This
setting overrides any pre-configured user, or otherwise,
setup
for input and hot keys. The available options are:

User Setting : The menu inherits the users


configured
hot key type, and does not specify
any
input type itself.

Hotkey : The menu uses hotkey input. This


allows
users to enter just the command
key to
execute a command.

Longkey : The menu uses longkey input, which


is
the opposite of hotkey, and
requires the
user to not only issue the command
key
for a desired option but also to
press
[ENTER] to invoke it.

[E] Edit
--------
This option will allow you to edit individual pre-
existing menu
commands. The menu command editor screen is shown below
with
all of it's options explained in further detail:

====================================================================
Menu command 1 of 20

A. Text : |09(|10A|09) |03Account Settings


B. Hot Key : A
C. Long Key: A
D. ACS :
E. Command : GO
F. Data : account

G. Lightbar X/Y : 0 0
H. Lightbar Text :
I. Lightbar High :

J. Lightbar Up : 0
K. Lightbar Down : 0
L. Lightbar Left : 0
M. Lightbar Right: 0

([) Previous, (]) Next, (Q)uit:

====================================================================

[A] Text
--------
This is the label for the menu command itself. You can
use all
of the MCI codes, and color codes that you wish. This is
most
commonly used to show a hotkey in brackets or parenthesis
with
a brighter character representing the hotkey in between
them,
followed by a label of what the hotkey does.

[B] Hot Key


-----------
This is the key the user must press in order for this
menu
command to run. It can be any combination of the
following:

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Z,
0,1,2,3,4,5,6,7,8,9
`,~,!,@,#,$,%,^,&,*,(,),-
,_,=,+,[,{,],},;,:,',",\,|,<,,,>,.,/,?

It can also be explicitly set to one of the below:


Note: These hotkeys do NOT work in lightbar menus!

ENTER : Use the ENTER key as the hot key


ESCAPE : Use the ESCAPE key as the hot key
TAB : Use the TAB key as the hot key
RIGHT : Use the RIGHT arrow as the hot key
LEFT : Use the LEFT arrow as the hot key
UP : Use the UP arrow as the hot key
DOWN : Use the DOWN arrow as the hot key

The following are SPECIAL key assignments and are


explained in
section {8.C.6} - stacking menu commands

FIRSTCMD : Automatically runs the command each time the


menu is
loaded, but does not automatically run it when
the
menu is used and no other menus are executed.

EVERY : Automatically runs the command each time the


menu is
redrawn (before its actually redrawn)

AFTER : Automatically run the command each time the


menu is
redrawn, just before the prompt is displayed.

[C] Long Key


------------
This is command a user must type and then follow it by
pressing
[ENTER] to invoke the command itself. It uses the same
format
as [B] Hot Key.

[D] ACS
-------
This is the ACS requirement for the menu command. If the
ACS
requirement is met, the user may issue this menu command.
For
more information on ACS see section {9.1}

[E] Command
-----------
This is the actual Mystic BBS Menu Command that is
executed
when the menu command item is invoked. For a complete
listing
of all the Mystic BBS Menu Commands see sections {8.C.7-
8.C.20}

[F] Data
--------
This is the parameters to be passed to the Mystic BBS
Menu
command. Not all Mystic BBS Menu Commands need
parameters. To
discover which do and do not see the section on Mystic
BBS
Menu Commands {8.C.7-8.C.20}

[G] Lightbar X/Y


----------------
This specifies where the [H] Lightbar Text is to be
displayed
when drawing the lightbar menu. The format is X
(horizontal or
column, and Y (vertical or row). For more information on
making
lightbar menus see section {8.C.4}

[H] Lightbar Text


-----------------
This option specifies the text to be displayed on the
lightbar
menu when the option is NOT selected. It uses the same
format
as the [A] Text option.

[I] Lightbar High


-----------------
This option specifies the text to be displayed on the
lightbar
menu when the option is HIGHLIGHTED with the ligthbar. It
uses
the same format as the [A] Text option.

[J] Lightbar Up
---------------
This option is specific to Lightbar Grid menu types only.
This
option specifies which MENU COMMAND # from the Menu
Command
List, to move the lightbar HIGHLIGHT TO when THIS menu
command
is already HIGHLIGHTED when the user presses the [UP]
arrow
key. The format for this field is the destination MENU
COMMAND
# from the Menu Command List. For more information on
creating
Grid Lightbar menus see section {8.C.5}

[K] Lightbar Down


-----------------
This option is specific to Lightbar Grid menu types only.
This
option specifies which MENU COMMAND # from the Menu
Command
List, to move the lightbar HIGHLIGHT TO when THIS menu
command
is already HIGHLIGHTED when the user presses the [DOWN]
arrow
key. The format for this field is the destination MENU
COMMAND
# from the Menu Command List. For more information on
creating
Grid Lightbar menus see section {8.C.5}

[L] Lightbar Left


-----------------
This option is specific to Lightbar Grid menu types only.
This
option specifies which MENU COMMAND # from the Menu
Command
List, to move the lightbar HIGHLIGHT TO when THIS menu
command
is already HIGHLIGHTED when the user presses the [LEFT]
arrow
key. The format for this field is the destination MENU
COMMAND
# from the Menu Command List. For more information on
creating
Grid Lightbar menus see section {8.C.5}

[M] Lightbar Right


------------------
This option is specific to Lightbar Grid menu types only.
This
option specifies which MENU COMMAND # from the Menu
Command
List, to move the lightbar HIGHLIGHT TO when THIS menu
command
is already HIGHLIGHTED when the user presses the [RIGHT]
arrow
key. The format for this field is the destination MENU
COMMAND
# from the Menu Command List. For more information on
creating
Grid Lightbar menus see section {8.C.5}

[[] Previous
------------
This will take you to the previous menu command. If you
are at
the first menu command, it will cycle to the last menu
command.

[]] Next
--------
This will take you to the next menu command. If youa re
at the
last menu command, it will cycle to the first menu
command.

.---------------------------------------------------------------.
| |
| 7.0 MAINTAINING YOUR SYSTEM |
| |
+---------------------------------------------------------------+
| |
| 7.1 ....... Purge the BBS List (MBBSUTIL) |
| 7.2 ....... Sort the BBS List (MBBSUTIL) |
| 7.3 ....... Move Unavailable Files Offline (MBBSUTIL) |
| 7.4 ....... Pack the File Areas (MBBSUTIL) |
| 7.5 ....... Sort the File Areas (MBBSUTIL) |
| 7.6 ....... Purge Inactive Users (MBBSUTIL) |
| 7.7 ....... Pack the Users File (MBBSUTIL) |
| 7.8 ....... Pack the JAM Format Message Bases (MYSTPACK) |
| 7.9 ....... Pack the SQUISH Format Message Bases (3RDPARTY) |
| 7.10 ...... Backup your BBS on a Schedule |
| |
`---------------------------------------------------------------'

It's a good idea to maintain your BBS as regularly as you


possibly can
to keep things nice and clean and organized. Mystic BBS comes
with an
external utility in all versions called MBBSUTIL. This section
will
tell you in detail how to use MBBSUTIL.

.---------------------------------------------------------------.
| |
| (7.1) PURGE THE BBS LIST (MBBSUTIL -BKILL <ID> <DAYS>) |
| |
`---------------------------------------------------------------'

The internal BBS List in Mystic BBS has a feature which lets the
sysop
verify the online status of a BBS in the listing. To access this
mode,
you view the extended list while you are logged in as the SysOp,
and
then [V]erify the entries you wish. This feature of MBBSUTIL
allows you
to purge all of the BBS entries in the BBS database which are
marked
unverified and have been in the database for the number of days
you
specify.

The format for issuing this command is:

MBBSUTIL -BKILL <ID> <DAYS>

Where:
<ID> is the data file for your BBS List
(the default is just BBSLIST)

<DAYS> are the number of days old an unverified


BBS
entry must be to remove it from the
listing.

Example: MBBSUTIL -BKILL BBSLIST 30

Note: If you set <ID> to "ALL", MBBSUTIL will check ALL


of the
existing BBS lists.

.---------------------------------------------------------------.
| |
| (7.2) SORT THE BBS LIST (MBBSUTIL -BSORT <ID> <TYPE>) |
| |
`---------------------------------------------------------------'

The internal BBS List in Mystic BBS can be sorted through an


external
program called MBBSUTIL which comes with all different versions
of the
software. Sorting your BBS list is a good idea. Here's how to do
it:

MBBSUTIL -BSORT <ID> <TYPE>

Where:
<ID> is the data file for your BBS List
(the default is just BBSLIST)

<TYPE> is one of the following:


BBSNAME, LOCATION, PHONE, TELNET

Note: If you set <ID> to "ALL", MBBSUTIL will check ALL


of the
existing BBS lists.
.---------------------------------------------------------------.
| |
| (7.3) MOVE UNAVAILABLE FILES OFFLINE (MBBSUTIL -FCHECK) |
| |
`---------------------------------------------------------------'

The file areas in Mystic BBS need be maintained regularly.


MBBSUTIL,
a program that comes with all distributions of Mystic will do it
for
you.

When you have several thousands of files online and you move or
delete
some of them, you don't want to have to go through every file and
try
to remember if it exists or not. That's why MBBSUTIL contains a
way to
move unavailable files offline, and this is done through the -
FCHECK
function illustrated here:

MBBSUTIL -FCHECK

This will go through every file in every area and mark files that
are
not physically on your disk anymore in the path of the file area,
as
OFFLINE. By the same token if a file is already OFFLINE and the
file
physically exists when MBBSUTIL checks for it, it will no longer
be
marked OFFLINE.

Offline files are a good way to offer a list of all of your files
when
you have little disk space. In this way your users can request
that
files be put online for them to download and then after
downloading the
file can be removed.

.---------------------------------------------------------------.
| |
| (7.4) PACK THE FILE AREAS (MBBSUTIL -FPACK) |
| |
`---------------------------------------------------------------'

When you delete a file from a file area in Mystic BBS, it does
not
delete the file data from the internal file area database. It
marks it
as deleted. You do have the option of removing the physical file
when
you delete a file in the file areas, but still the data stays
intact
for the deleted file until you run MBBSUTIL to pack the files
with
the following syntax:

MBBSUTIL -FPACK

This will go through all of your file areas and remove any files
which
are marked as being deleted. This is a good idea to do because it
can
really speed up new-scans and file lists when things get crazy!

.---------------------------------------------------------------.
| |
| (7.5) SORT THE FILE AREAS (MBBSUTIL -FSORT) |
| |
`---------------------------------------------------------------'

By default Mystic BBS does not sort files in any special order.
This
was why the FSORT function of MBBSUTIL was implemented. You can
sort
your entire file area collection in one pass using this command:

MBBSUTIL -FSORT

This will sort the file database in each file area and reorder
the list
of files in each area to be alphabetical by filename. It will
also
automatically pack the bases (just like -FPACK) while doing so.

.---------------------------------------------------------------.
| |
| (7.6) PURGE INACTIVE USERS (MBBSUTIL -UKILL <DAYS>) |
| |
`---------------------------------------------------------------'

Removing inactive users is a breeze with MBBSUTIL. You simply


specify
how many days a user must be idle to be included in the purge,
and let
it go through and do it's work. Users who are marked as No Delete
in
the user editor will automatically be exempt from the purge
process. It
is a good idea to mark your SysOp account in this way just in
case you
accidentally forget to call for a few months :)

To purge inactive users issue the following command:

MBBSUTIL -UKILL <DAYS>

Where:
<DAYS> Is the number of days a user account must
be
inactive (no calls at all) for MBBSUTIL
to
remove the account.

Note: The <DAYS> option must be 5 or higher. This


will
prevent accidentally having a 0 wipe out
the
entire user database.

.---------------------------------------------------------------.
| |
| (7.7) PACK THE USERS FILE (MBBSUTIL -UPACK) |
| |
`---------------------------------------------------------------'

When you delete a user account in the user editor, Mystic BBS
still
retains the user data just in case you change your mind or it was
a
mistake. In order to truly rid yourself of pesky deleted users,
you
need to run the UPACK feature of MBBSUTIL as such:

MBBSUTIL -UPACK

This will remove all the user accounts in the user file that are
marked
as being deleted.

.---------------------------------------------------------------.
| |
| (7.8) PACK THE JAM FORMAT MESSAGE BASES (MYSTPACK -PACK) |
| |
`---------------------------------------------------------------'

When you delete a message in a message base, Mystic BBS will


retain the
message data until you pack the message bases. Also when you
reach the
maximum number of messages allowed as specified by the message
base
configuration or you reach the maximum number of days for a
message
base, Mystic BBS itself will not perform any action. You need to
use
a MYSTPACK or another 3rd party JAM packer to pack the bases and
update
things. MYSTPACK is recommended for JAM format bases, and is
executed
thusly:

MYSTPACK -PACK <-SKIPFIRST>

The <-SKIPFIRST> option instructs MYSTPACK to skip the


first
message in every base it packs. This allows for a
beginning
intro message for each base posted by the SysOp to tell
the
users what the base is intended for to be retained even
after
packing the message bases.

There are several 3rd party JAM packers out there. But MYSTPACK
is the
official JAM packer of Mystic BBS Software, so you should use it
in
place of any 3rd party message base packers.

.---------------------------------------------------------------.
| |
| (7.9) PACK THE SQUISH FORMAT MESSAGE BASES (GECHO/FASTECHO) |
| |
`---------------------------------------------------------------'

When you delete a message in a message base, Mystic BBS will


retain the
message data until you pack the message bases. Also when you
reach the
maximum number of messages allowed as specified by the message
base
configuration or you reach the maximum number of days for a
message
base, Mystic BBS itself will not perform any action. You need to
use
a MYSTPACK or another 3rd party JAM packer to pack the bases and
update
things.

GECHO and FASTECHO can both be used to pack your SQUISH bases.
The down
side to using this format as well as these 3rd party utilities is
that
you must first add all of your bases local and otherwise into
their
configuration/setup programs. Otherwise it has no idea what is
where.

It is highly recommended that you do NOT use SQUISH. SQUISH


support may
be SQUASHED (pun intended) in the future versions of Mystic BBS
to make
things easier on the author.

For instructions on packing SQUISH bases, check the


GECHO/FASTECHO
documentation.

.---------------------------------------------------------------.
| |
| (7.10) BACKUP YOUR BBS ON A SCHEDULE |
| |
`---------------------------------------------------------------'

If you do no other maintenance on your BBS, PLEASE for YOUR SAKE,


back
it up regularly! Doing so will give both you and your users peace
of
mind. I personally back up my system every single day. It's
nothing
more than zipping up the directory the BBS is installed to with
full
paths and such and copying it to another partition or zipdrive
(in my
case). Here is a simple batchfile to do this:

@ECHO OFF
cls
echo Backing up the BBS...
pkzip25 -extract -overwrite -directories <TARGET_FILE>
<INSTAL_DIR>\*.*
echo.
echo BBS backed up!
pause
exit

You can create a system event to run this type of thing every
night.
I can't stress this enough. You should do this all the time!

If you don't like to use the Mystic Events, you can use Windows
Task
Scheduler, or Linux crontab to do it instead. Just please,
backup!

For help on using Linux crontab issue: man crontab

.---------------------------------------------------------------.
| |
| 8.0 CUSTOMIZING YOUR SYSTEM |
| |
+---------------------------------------------------------------+
| |
| 8.1 ....... Why you SHOULD Customize YOUR BBS |
| |
| 8.A ....... Language Files (*.TXT/*.LNG) |
| 8.A.1 ..... - Using the Language Prompt Editor |
| 8.A.2 ..... - Compiling Language Files |
| 8.A.3 ..... - Replacing a Prompt with a Display File |
| 8.A.4 ..... - Replacing a Prompt with an MPL Script |
| |
| - -- -------------------+
| |
| 8.B ....... Display Files (*.ANS/*.ASC) |
| 8.B.1 ..... - The Location of Display Files (<BBSDIR>\TEXT) |
| 8.B.2 ..... - Random Display Files |
| 8.B.3 ..... - Creating and Showing your Own Display Files |
| 8.B.4 ..... - Display File Creation Tips and Techniques |
| 8.B.5 ..... - The Mystic BBS Template System |
| |
| - -- -------------------+
| |
| T 8.B.6 ..... - ANSICHAT.xxx T |
| T 8.B.7 ..... - ANSIEDIT.xxx T |
| T 8.B.8 ..... - ANSIFINF.xxx T |
| T 8.B.9 ..... - ANSIFLST.xxx T |
| T 8.B.10 .... - ANSIMLST.xxx T |
| T 8.B.11 .... - ANSIMRD.xxx T |
| T 8.B.12 .... - ANSIQUOT.xxx T |
| T 8.B.13 .... - ANSITELE.xxx T |
| 8.B.14 .... - AMSGHLP1.xxx |
| 8.B.15 .... - AMSGHLP2.xxx |
| 8.B.16 .... - BIRTHDAY.xxx |
| 8.B.17 .... - BLINDUL.xxx |
| 8.B.18 .... - CLOSED.xxx |
| 8.B.19 .... - DOWNLOAD.xxx |
| 8.B.20 .... - EMAILHLP.xxx |
| 8.B.21 .... - FEEDBACK.xxx |
| 8.B.22 .... - FGROUPx.xxx |
| 8.B.23 .... - FLAG1x.xxx |
| 8.B.24 .... - FLAG2x.xxx |
| 8.B.25 .... - FLISTHLP.xxx |
| 8.B.26 .... - FSEARCH.xxx |
| 8.B.27 .... - FSHELP.xxx |
| 8.B.28 .... - GROUPx.xxx |
| 8.B.29 .... - LOGOFF.xxx |
| 8.B.30 .... - LOGON1-9.xxx |
| 8.B.31 .... - NEWUSER.xxx |
| 8.B.32 .... - NONEWUSR.xxx |
| 8.B.33 .... - PRELOGON.xxx |
| 8.B.34 .... - PROTO.xxx |
| 8.B.35 .... - PROTOB.xxx |
| 8.B.36 .... - READHLP.xxx |
| 8.B.37 .... - READSHLP.xxx |
| 8.B.38 .... - SLxxx.xxx |
| 8.B.39 .... - TELECONF.xxx |
| 8.B.40 .... - TELEHELP.xxx |
| 8.B.41 .... - UPLOAD.xxx |
| T 8.B.42 .... - WFCSCRN.xxxT (note: in <BBSDIR>\DATA) |
| 8.B.43 .... - QUOTES.DAT |
| 8.B.44 .... - NEWSUER.MPE |
| |
| Note: T = File uses Mystic Template System |
| |
| - -- -------------------+
| |
| 8.C ....... Menus (*.MNU) |
| 8.C.1 ..... - The Location of Menu Files (<BBSDIR>\MENUS) |
| 8.C.2 ..... - Using the Menu Editor |
| 8.C.3 ..... - Menu Editor Hotkey Reference |
| 8.C.4 ..... - Creating Normal Lightbar Menus |
| 8.C.5 ..... - Creating Grid Lightbar Menus |
| 8.C.6 ..... - Stacking Menu Commands |
| |
| - -- -------------------+
| |
| 8.C.7 ..... - AUTOSIGNATURE Menu Commands (Ax) |
| 8.C.8 ..... - BBS LIST Menu Commands (Bx) |
| 8.C.9 ..... - GENERAL Menu Commands (Gx) |
| 8.C.10 .... - VOTING BOOTH Menu Commands (Vx) |
| 8.C.11 .... - TIME BANK Menu Commands (Tx) |
| 8.C.12 .... - FILE BASE Menu Commands (Fx) |
| 8.C.13 .... - FILE BATCH QUEUE Menu Commands (Qx) |
| 8.C.14 .... - MESSAGE BASE Menu Commands (Mx) |
| 8.C.15 .... - MULTINODE Menu Commands (Nx) |
| 8.C.16 .... - OFFLINE MAIL (QWK) Menu Commands (Ox) |
| 8.C.17 .... - DOOR Menu Commands (Dx) |
| 8.C.18 .... - MATRIX Menu Commands (Xx) |
| 8.C.19 .... - SYSOP Menu Commands (*x) |
| 8.C.20 .... - MISCELLANEOUS Menu Commands (-x) |
| |
| - -- -------------------+
| |
| 8.D ....... MPL (Mystic Programming Language) (*.MPS/*.MPE) |
| 8.D.1 ..... - Using the MPL IDE (MIDE) |
| 8.D.2 ..... - Using the MPL COMPILER (MPLC) |
| 8.D.3 ..... - Introduction to MPL |
| 8.D.4 ..... - Sourcecode Comments |
| 8.D.5 ..... - Operation Types and Precedence |
| |
| - -- -------------------+
| |
| 8.D.6 ..... - Defining VARIABLES |
| 8.D.7 ..... - Defining CONSTANTS |
| 8.D.8 ..... - Defining PROCEDURES |
| 8.D.9 ..... - Defining FUNCTIONS |
| |
| - -- -------------------+
| |
| 8.D.10 .... - FOR Loops (FOR/FEND) |
| 8.D.11 .... - REPEAT Loops (REPEAT/UNTIL) |
| 8.D.12 .... - WHILE Loops (WHILE/WEND) |
| 8.D.13 .... - IF Statements (IF/ELSE/ENDIF) |
| 8.D.14 .... - #INCLUDE Directive |
| |
| - -- -------------------+
| |
| 8.D.15 .... - USES Statement (DATA ACCESS) |
| |
| - -- -------------------+
| |
| 8.D.16 .... - String and Integer Functions |
| 8.D.17 .... - Disk Access Functions |
| 8.D.18 .... - Date and Time Functions |
| 8.D.19 .... - BBS Data Access Functions |
| 8.D.20 .... - Input Functions |
| 8.D.21 .... - Output Functions |
| 8.D.22 .... - Miscellaneous Functions |
| |
`---------------------------------------------------------------'
.---------------------------------------------------------------.
| |
| (8.1) WHY YOU SHOULD CUSTOMIZE YOUR MYSTIC BBS |
| |
`---------------------------------------------------------------'

There are several reasons why you SHOULD customize your Mystic
BBS. The
first one is easy, because it's fun! It's really fun to sit there
and
customize everything for hours on end! Ask any existing SysOp =D
The
second reason is because default Mystic BBS is pretty ugly, and
it is
like this for a reason: to encourage SysOps to customize the damn
BBS!
The third reason is because REAL SysOps tweak their systems to
hell and
back before they put their boards online. Of course, there are
many
different types of SysOps. There are those who don't mind running
a
default stock setup, and customizing only so far as the messages
and
file bases and throwing a few door games online. Then there are
the
SysOps who are experienced and customize the language files and
the
rest of the BBS to their liking but with no heavy modification
going
on in the way of MPL scripts or external programs. And lastly
there are
the die-hard fanatical freaks who customize everything down to
the last
nook and cranny of the system and go out of their way making
their BBS
stand apart from the rest through innovation, style, and
elegance.

What kind of SysOp are you? What kind of SysOp would you like to
be? Do
you want respect for your efforts and results in the way of
activity
and scene-wide fame for doing something incredible? Or would you
rather
just be another brick in the wall, and have very little in the
way of
glory? It's up to you.

But remember these facts:


- The best users appreciate a nice looking board over a
default
stock setup. The easier and prettier a BBS is, the more
likely it is to gain respect and a loyal user base.

- By modifying your system you carve a niche into the BBS


scene
where you are represented with respect and you need not
try
to prove anything to anyone besides running a kick-ass
tweaked out system.

- Other SysOps will respect and admire your effort and


will
be sure to advertise your system on their boards in a
manner
that is repsectful and honorable.

- Garbage in, Garbage out.

- While it is possible to run a great BBS purely on a


stock
setup of Mystic, relying more on content than anything
else,
it is not possible to run a heroic and legendary system
using
stock default crap.

- The entire BBS scene benefits from your work when you
do it
the right way, and you keep doing it the right way.

- You do NOT need a shitload of art to make a heroic and


legendary system. What you DO need is patience, time,
and
some great innovative ideas.

- While art is good, it does NOT make the BBS good. I've
seen
plenty of default setups with a few great pieces of art
here
and there in the display file area, and was not the
least bit
impressed. I'm one of those die-hard fanatics though.

- When you do things like they used to be done in the


oldschool
when SysOps didn't have a chance to rise above the rest
of
the BBS's out there unless they truly showed what they
could
do and how knowledgeable they were, you pay homage to
the
roots of the entire legacy of the computer underground.
BBS's
started everything, and BBS's can continue everything.
You
just can't be lazy!

- Although you may feel overwhelmed by the ability to


customize
Mystic BBS, take everything in small chunks. Don't sit
down
and try to completely do the entire board in one night
like
you could with renegade for instance. It is NOT going
to
happen. There is too much to do! Think long term, more
like
several months of constant and total devotion.

- Artists are more apt to draw for a BBS that shows it is


worthy of recieving and displaying their artwork. In
general,
ansi artists are egoistic, and have the idea that any
BBS
featuring their art must meet their expectations.

- You have so much help that none of us had when we did


this
same thing. You've got a bad-ass set of documentation
that we
did NOT have at all! You've got a base of existing
SysOps who
are about the most experienced SysOps in the history of
the
BBS scene with years and years of dedication and
practice. If
you get stuck, we will help you. You just have to show
you
are really trying!

To close this small part of the docs, I must say one thing. A
BBS,
regardless of the software or the users or the posts or the files
or
the games, is only as good as the SysOp running it. Your BBS
should be
an extension of your persona. It should be a representation of
your
soul, your heart, your dreams and your fantasies. Don't be afraid
to
deviate from the norm. Don't be afraid to innovate, elaborate or
even
mutilate the way things are done!

And lastly, NEVER give up, and NEVER surrender!


- grymmjack [MYSTICDEV/DEMONIC/WARLOCK/SYSOP:
SECTOR7BBS.COM]

.---------------------------------------------------------------.
| |
| (8.A) LANGUAGE FILES (*.TXT/*.LNG) |
| |
`---------------------------------------------------------------'

One of the most powerful features of any BBS is it's ability to


let the
SysOp customize how the user sees things. In Mystic BBS, you have
full
control over every part of the software in this regard.

A Language File is an ASCII text file which contains all of the


prompts
and other display strings a Mystic BBS shows the user. It is a
very
simple format consisting of comments and numbers followed by the
content of the prompt. This is illustrated below:

====================================================================
# DEFAULT.TXT: Default language file for Mystic BBS.
# ---------------------------------------------------
# Lines which begin with a "#" character are considered comments.
# Lines which being with a ";" are language editor comments
# Prompts do *NOT* have to be in numerical order.
#
# Language text that begins with "!" will run an MPE program:
# Example: 000 !askname
# The above line would execute ASKNAME.MPE from the scripts
directory.
#
# Language text that begins with "@" will display a display file.
# Example: 001 @askname
# The above line would display ASKNAME.ASC/ANS from the text
directory.
# Note: the DF MCI code can also be used to display files in
place of
# prompts.

000 |DFpreuser |CR|01[|10■|01] |09Enter your user name:


; Log in as new user prompt
001 |CR|12Create an account with this BBS? |11
; User's password
002 |CR|01[|10■|01] |09Enter your password:
; User login: Invalid PW
003 |CR|12Invalid password.
; Displayed IMMEDATELY when a user connects if the password is
set
004 |CRSystem Password:

====================================================================

As you can see, the language file supports comments, blank lines,
etc.

This file can be edited with any ASCII text editor. After you
change a
language file, you need to compile it so that Mystic BBS can
optimize
it and place it into the language database. To compile a language
file
use the MAKELANG program. The syntax for this is simple:

MAKELANG DEFAULT.TXT

This will compile the file DEFAULT.TXT which is the language file
for
the DEFAULT language, into *.LNG format and copy it to the BBS
DATA
directory where all *.LNG files are to be placed.

You may also use the MCFG language file editor, which makes it
much
easier to use than a ASCII based editor. See section {8.A.1} for
more
information on this.

=================================================================

(8.A.1) USING THE LANGUAGE FILE EDITOR

-----------------------------------------------------------------

The MCFG program that comes with Mystic BBS has several features
that
are better and easier to use than their legacy internal
counterparts.
One of which is the Language File Editor.

With the language file editor, you can see exactly how prompts
will
look to the user right from within the editor itself. You can
also
simulate long prompts as well as lookup MCI codes and be afforded
the
Mystic BBS input functions for editing which are nicer than most
ASCII
text editors input routines.

You can also search for strings of text, go back and forth from
page to
page and jump to individual string numbers. Very very handy! Here
is
the documentation on the MCFG Language File Editor.

Below is a screenshot of the MCFG Language File Editor Screen:

====================================================================
╒══════════════════════════════════════════════╕
│ ## Language Description FileName │
│──────────────────────────────────────────────│
│ 1 S7 S7 ▓
│ 2 Mystic Default DEFAULT ░
│ ░
│ ░
│ ░
│ ░
│ ░
│ ░
╘══════════════════════════════════════════════╛

====================================================================

Because you are allowed more than one language, the language
editor
first prompts you to select the chosen language you wish to edit.
You
do this using the [UP] and [DOWN] arrow keys. When you've
selected the
language you want to edit, press [ENTER]. This will take you to
the
below screen:

====================================================================
╒═══════════════════════════════════════ Language: S7 ═╕
│ │
│ Description S7░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
│ File Name S7 │
│ Menus Path C:\S7BBS\S7-MENU\ │
│ Text Path C:\S7BBS\S7-TEXT\ │
│ │
│ Allow ANSI Yes │
│ Allow ASCII Yes │
│ │
│ (CTRL-P) Edit Language Prompts │
│ (CTRL-E) Edit Language Settings │
╘══════════════════════════════════════════════════════╛

====================================================================

Here you can edit your language properties. But we've already
discussed
how to do this in depth in section {6.2.G} Our concern now is
getting
at the meat of the language, the prompts themselves.

To begin editing the prompts press [CTRL]-P. This will take you
to the
following screen:

====================================================================

░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░╒═(001/461)═════════════════════════════════════(
S7.txt)═╕░░░
░│ |DFpreuser |CR[■] Enter your user name:
│░░░
░│ |CR|12Create an account with this BBS? |11░░░░░░░░░░░░░░░░░░
│░░░
░│ |CR[■] Enter your password:
│░░░
░│ |CRInvalid password.
│░░░
░│ |CRSystem Password:
│░░░
░│ |CRNew User Password:
│░░░
░│ [■] Enter your full REAL name ->
│░░░
░│ |CRPlease enter your first AND last name!|CR
│░░░
░│ |CRUser already exists.|CR
│░░░
░│ [■] Enter your alias/handle ->
│░░░
░│ |CREnter your street address.|CR:
│░░░
░│ |CREnter your city & state.|CR:
│░░░
░│ |CREnter your postal code: #####|CR:
│░░░
░│ |CREnter your home phone number:|CR:
│░░░
░│ |CREnter your data phone number:|CR:
│░░░

░│──────────────────────────────────────────────────────────────│░░░
░│
│░░░
░│
│░░░
░│ Log in as new user prompt
│░░░

░╘══════════════════════════════════════════════════════════════╛░░░

░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
CTRL+ (Q) Help (O) Search (A) Again (G) Goto (U) Undo
(Enter) View (Esc) Quit

====================================================================
Note: This screen capture has been shrunken and truncated to
provide
readability and printability.

This screen shows you an overview of the current page of prompts


that
you are able to edit. Note: in this screen capture colors have
been
stripped, but MCFG shows the colors as they are coded with the
color
codes.

There are two primary panes in the language editor.

- The main window : Displays the prompts themselves


- The comment window : Displays comments on the selected
prompt

Navigating in the Language Editor


---------------------------------

To get around in the MCFG Language editor is easy! Use


the
following guide to navigate:

[UP] : Move highlight/selection bar up


[DOWN] : Move highlight/selection bar
down
[LEFT] : Move cursor left while editing
[RIGHT] : Move cursor right while editing
[CTRL]-Y : Yank the entire line (CLEAR)
[CTRL]-[HOME] : Go to the first prompt in the
file
[CTRL]-[END] : Go to the last prompt in the
file
[HOME] : Put cursor at beginning of
string
[END] : Put cursor at ending of string
[PAGEUP] : Go to the previous page of
prompts
[PAGEDOWN] : Go to the next page of prompts
[DELETE] : Delete character to right of
cursor
[BACKSPACE] : Delete character to left of
cursor
[ESC] : Exit the Language Editor

[CTRL]-Q : Help
---------------
Issuing this command will launch the MCFG help system.
Here you
can cross reference all the necessary things you'd need
while
editing your language file.

[CTRL]-O : Search
-----------------
Issuing this command will bring up a search dialog where
you
can then enter keywords to search for in the language
file.
Upon finding a match, you will be taken to the prompt the
match
was found. To find more matches using the same search
criteria
simply press [CTRL]-O again, and press [ENTER]. The last
search
you performed will automatically be active in the search
dialog
prompt, or you can do it the fast way and press [CTRL]-A
which
is defined next.

[CTRL]-A : Again
----------------
This will perform the last search again, and if a match
is
found, will take you to the prompt with the matching
text. If
a match is not found, a message will appear saying "No
Match".

[CTRL]-G : Goto
---------------
This will allow you to jump to any prompt # within the
language
file. Enter the # you wish to goto and press [ENTER].

[CTRL]-U : Undo
---------------
This will undo the last change you made to any language
file
prompt you have just edited. Very handy!

[ENTER] : View
--------------
Pressing [ENTER] on a prompt will display it as the user
would
see it, with color codes, and MCI Display Codes
interpreted.

[ESC] : Quit
------------
Pressing [ESCAPE] will exit the language editor. If you
have
changed a language file, and you press [ESC] you will
then be
prompted to Save Changes. And if you choose to save the
changes
you made, you will again be prompted if you would like to
compile the new language file. Answering yes will compile
the
language file and put it right where you need it.

=================================================================

(8.A.2) COMPILING LANGUAGE FILES

-----------------------------------------------------------------

Compiling language files is quick and easy. Use the program that
comes
with Mystic BBS called MAKELANG to do so. The syntax is:

MAKELANG <LANGFILE.TXT>

Where <LANGFILE.TXT> is the name of the ASCII text file


for the
desired language you wish to compile which contains all
the
prompts and strings.
=================================================================

(8.A.3) REPLACING A PROMPT WITH A DISPLAY FILE

-----------------------------------------------------------------

A nifty feature of Mystic BBS is the ability to replace any


prompt in
the entire language file with a display file. This is achieved
through
the use of the |DF MCI Code as such:

|DFwelcome

That would display welcome.ans if the user was using ANSI


emulation, or
welcome.asc if the user was using ASCII emulation, and the file
exists
in the languages TEXT directory.

=================================================================

(8.A.4) REPLACING A PROMPT WITH AN MPL SCRIPT

-----------------------------------------------------------------

Another REALLY nifty feature of Mystic BBS is the ability to


replace
any prompt in the entire language file with a MPL Script! This is
achieved through the use of the ! prefix code as such:

!myscript
!C:\SCRIPTS\YOURSCRIPT

This really allows you to customize the hell out of your BBS
should you
decide to do so. For more information on MPL see section {8.D}

.---------------------------------------------------------------.
| |
| (8.B) DISPLAY FILES (*.ANS/*.ASC) |
| |
`---------------------------------------------------------------'
Display files offer an easy way to customize your BBS's
appearance. The
format for display files is either ASCII (*.ASC) or ANSI (*.ANS).
This
section attempts to describe in minute detail everything you need
to
know about Display Files in Mystic BBS Software.

=================================================================

(8.B.1) THE LOCATION OF DISPLAY FILES (<BBSDIR>\TEXT)

-----------------------------------------------------------------

The directory in which display files are configured to be placed


in by
default is <BBSDIR>\TEXT where <BBSDIR> is the directory which
you had
chosen to install Mystic BBS into. You can however change the
location
for your display files in the system configuration -> system
paths
options, or through the language editor itself. It is a common
practice
to keep the Mystic BBS default display files intact and create a
new
language file which you intend to modify. This way you can
reference
all the defaults when you need them. It is also a common practice
to
place the text directory from a custom language file beneath a
central
language file directory. This way you have two separate subdirs
in the
language directory one for menus, and one for display files.

=================================================================

(8.B.2) RANDOM DISPLAY FILES

-----------------------------------------------------------------

Mystic BBS has the ability to show random display files. This is
a very
elegant way to keep the content on your BBS looking fresh and
exciting.
To make any display file within Mystic BBS random, create the
display
files in a series, and name them something like this:

RANDOM.ANS
RANDOM.AN1
RANDOM.AN2

etc..

Put the files in your TEXT directory and now everytime Mystic
goes to
display these files, it will pick randomly which file to show.
The same
can be done with ASCII files:

RANDOM.ASC
RANDOM.AS1
RANDOM.AS2

You can have up to 9 (1-9) random display files per each file the
BBS
shows the user.

=================================================================

(8.B.3) CREATING AND SHOWING YOUR OWN DISPLAY FILES

-----------------------------------------------------------------

To create your own display files, you can either use a standard
ASCII
editor, like edit.com, vi, pico, whatever, or you can use a
program
that was specifically created for making display files for BBS's
like
The Draw, ITPDraw, or ACIDDRAW. When you save your file, save it
with
an extension and format recognized by mystic. I personally
recommend
ITPDraw because I've had great luck with it. ACIDDRAW has crashed
on me
several times, and TheDraw only supports up to 100 lines. To
create
animated display files, you will want to use The Draw and save
the file
as *.ANS. You can get these programs from the below addresses:
- The Draw
* ftp://archives.thebbs.org/ansi_utilities/tdraw463.zip

- ACIDDRAW
* ftp://archives.thebbs.org/ansi_utilities/adraw120.zip

- ITP Draw
* ftp://archives.thebbs.org/ansi_utilities/idw20b.zip

The editor that I prefer personally is ITPDraw. IPTDraw has


several
features that the others do not, and I just like the way it
works. I
have had ACIDDRAW crash entirely on me. And let me tell you being
an
ansi artist, there is nothing more frustrating than doing
something
cool in an ansi editor and having it bomb the fuck out on you.
TheDraw
was always good to me, but it's pretty bad interface and I just
prefer
ITPDraw for everything now.

=================================================================

(8.B.4) DISPLAY FILE CREATION TIPS AND TECHNIQUES

-----------------------------------------------------------------

There are several tips and techniques you can use when you create
your
own display files. I've been doing them for so long it's like
second
nature to me so I'm going to list them all right here so that you
to
can benefit. It's sort of a HOW-TO-FIX broken display files
section.

Cursor Placement Issues


-----------------------

Problem: "My cursor winds up at the wrong spot down a line or two
from
my prompt."

Example: Main Menu:


_ <- cursor here.
Cause : This happens because the editor you're using when you
save
the file is adding an extra line feed to the file. The
only
editor i've ever used that does not perform this way is
ITP
Draw. Also editing an ANSI after the fact to place MCI
codes with an editor such as EDIT.COM or even
NOTEPAD.EXE,
these will append extra lines to the bottom of your
file.

Fix : To fix this problem first you need a good ASCII editor.
I
highly recommend CMEditor. It's very small and very good
at
editing text files. You can show the linefeeds visually
and
it is the only editor i've ever used that could insert
escape
codes through doorway remotely. The URL to cmeditor is
this:

http://ourworld.compuserve.com/homepages/novasoft2/CE363.ZIP

Once you've installed this, copy it to a place in your


path
and rename it e.com (why type edit all the time?).

Then open your problem ansi with e. Now hit alt-= to


show the
linefeed delimeters. Scroll down to the end of your
file, and
you will probably see the problem. You will probably see
one
or two blank lines at the end of your display file. This
is
easy to fix. Arrow up to the last line in your display
file
that has text on it, and hit [DEL] until you have no
more
extra linefeeds. Do not have any at all! Here is an
example:

====================================================================
|16|07
Main Menu: [LF]
[LF]

====================================================================
[LF] shows up as a colored ░ in CMEditor. This symbol signifies a
line
feed is in place in this position of the file. make your file
look like
this to fix it:

====================================================================
|16|07
Main Menu: [LF]

====================================================================

Notice now how all extraneous linefeeds have been removed? Hit
[ESC] to
save your file and press [ENTER] when the save as screen is
showed. Now
hit [ESC] again to exit. Now test your prompt. You will see it is
now
fixed and the cursor ends up where you would like it to end up.

MCI Code Garbling Problems


--------------------------

Problem: Any screen that I design that uses MCI Codes gets messed
up.

Example: Time Left: [200 (there should be another bracket


after
the 200 but it's overwritten)

Cause : Your file is placing MCI Codes inline in the ansi. This
is not
a good idea as you run into situations like the one
above.
What is happening here is the output of the MCI code is
over
writing the rest of the display file.

Fix : Make a note of the X and Y position where your MCI code
is to
be placed from right within the ANSI editor. Jot down
all the
locations of all your MCI codes and their corresponding
code
like so:

Y X CODE
-- -- ----
02 13 |TL
Now that you've got that nailed. Remove the codes from
your
display file within the ansi editor. Now shell to DOS
and load
CMEditor with your display file. Your file may or may
not have
several lines of ansi coding. Go to the last line in
your file
that has text to be displayed on it. Below is an example
of
what this could look like:

====================================================================
 [1;30m( [37mTime Left [30m): [ ]
 [1;30m( [37m/s [30m)  [0msystem news[LF]
 [1;30m( [37mx [30m) [0m multi-node msg.[LF]
 [1;30m( [37mk [30m)  [0mconfiguration[LF]
 [1;30m( [37m/x [30m)  [0mtoggle expert[LF]

====================================================================

[LF] shows up as a colored ░ in CMEditor. This symbol signifies a


line
feed is in place in this position of the file. make your file
look like
this to fix the MCI placement problem:

====================================================================
 [1;30m( [37mTime Left [30m): [ ]
 [1;30m( [37m/s [30m)  [0msystem news[LF]
 [1;30m( [37mx [30m) [0m multi-node msg.[LF]
 [1;30m( [37mk [30m)  [0mconfiguration[LF]
 [1;30m( [37m/x [30m)  [0mtoggle expert[LF]|[Y02|[X13|TL

====================================================================

Now what happens? Your entire display file is drawn blank, and
then you
use the Mystic MCI Control codes which are described in more
detail in
section {9.3} to position the cursor in the right spot, and then
draw
the MCI Display code for time left at that exact location. Now
this
presents another problem that we will remedy right here and now.
The
problem is that when the MCI is drawn it is the last to be drawn,
and
guess where the cursor winds up after it's drawn? You guessed it!
On
the row right under the MCI code itself. Which would then fuck up
our
(/s) system news display. So lets fix that. After the |TL MCI
code,
lets put the cursor back where we got it before we placed it.
Doing so
is quite simple. Put |[Y07|[X01 right after the MCI code. This
will put
the cursor back on row 7 and at column 1.

Note: When using MCI Control codes you must make certain that the
code
values are two digits in length, padded by zeroes if less
than 10
otherwise Mystic will not be able to interpret them
correctly.

Text Wrapping Issues


--------------------

Problem: Your display file looks fine using telnet client A, but
when
using telnet client B it messes all up!

Cause : This happens because the telnet clients handle the 80th
column
of text differently. While one programmer decided that
his
telnet client would wrap automatically when the cursor
reached
column 80, another said I will explicitly add a linefeed
AND
wrap the text when the cursor reaches column 80.

Fix : Do NOT use column 80 at all! This is the only way to


stop this
from happening. It's a shame it has to be this way, but
it is
the only way you can guarantee your system will perform
and
act as you expect it to across all telnet clients and
terminal
programs.

It's easy to fix display screens that use column 80.


Load up
a copy of ITPDraw and load your display file. Now
position the
cursor at the starting column and row of your file. Now
press
[ALT]-B and press [END]. This will take you to column 80
while
in block mode. Now press [LEFT] one time, which puts the
block
select at 1-79 columns. Now press [PAGEDOWN] or [DOWN]
arrow
until you are at the end of your display file. Once
there,
press [S] to "block save" the contents of your selection
to
your display file overwriting the existing one. This
will now
work exactly how you expect it to.

Note: If you have MCI codes in your existing file that


you are
editing to be 79 columns, before you resave the
file in
block mode in your ANSI editor, jot down the
existing
MCI codes so you dont have to redo that part. Just
copy
the codes in edit.com or something, create a new
file,
and paste them as DISPFILE.MCI or whatever, then
resave
your file in the ansi editor, and re-append your
MCI
codes from the contents of the *.MCI file using
CMEditor
and you should be all set.

=================================================================

(8.B.5) THE MYSTIC BBS TEMPLATE SYSTEM

-----------------------------------------------------------------

The Mystic BBS Template system is an advanced display file system


that
uses template codes and requires ANSI emulation to function
properly.
All of the files marked with [TEMPLATE] in the following sections
use
the Mystic BBS template system. Each of the files is described in
gory
detail, so you should have no excuse to not edit them! :)
All of the files described here are located in your languages
TEXT
directory. If a file does not exist, mystic will use an internal
method
for displaying it.

(8.B.6) ANSICHAT.xxx
[TEMPLATE]

———————————————————————————————————————————————————————————————————————
The ANSICHAT.xxx template is used when the split screen chat mode
is
activated. Screen Info MCI codes are used in this template to
specify
the coordinates of both the sysop and user chat window. The
following
is a list of the MCI codes used in this template followed by an
explanation of where each one should be used:

|!1 Specifies the upper Y position of the user's window and the
text
color of the user's window.

|!2 Specifies the lower Y position of the user's window


|!3 Specifies the left X position of the user's window
|!4 Specifies the right X position of the user's window

|!5 Specifies the upper Y position of the sysop's window and the
text color of the user's window.

|!6 Specifies the lower Y position of the sysop's window


|!7 Specifies the left X position of the sysop's window
|!8 Specifies the right X position of the sysop's window

|!9 Specifies the color/location of time left update


|!0 Specifies the color/location of system time update

|&1 Replaced with the user's name.


|&2 Replaced with the sysop's name.

An example of a split screen chat template would be:

====================================================================
User: |&1
-----------------------------
|!1
|!3 |!4
|!2
Sysop: |&2
-----------------------------
|!5
|!7 |!8
|!6
-----------------------------

====================================================================

(8.B.7) ANSIEDIT.xxx
[TEMPLATE]

———————————————————————————————————————————————————————————————————————
The ANSIEDIT.xxx template is used when the full screen editor is
activated. Screen Info MCI codes are used in this file to define
the
coordinates of the text editing window. The following list of MCI
codes
which are used in the Full Screen Editor template:

|!1 Specifies the top line of the edit window, as well as the
color of the inputted text.

|!2 Specifies the bottom line of the edit window.


|!3 Specifies the location of the "INS/OVR" toggle, as well as
the color of the "INS/OVR" text.

|&1 Who the message is To


|&2 Subject of the message

An example of a full screen editor template:

====================================================================
Full Screen Editor [|!3] Ctrl-Z = Help
------------------------------------------
|!1

|!2
------------------------------------------

====================================================================

Note: The color which is set after the template is displayed


will be the color of the edited text.

See also: ANSIQUOT.xxx {8.B.12}


(8.B.8) ANSIFINF.xxx
[TEMPLATE]

———————————————————————————————————————————————————————————————————————
This template is used when displaying extended information on a
file
during the lightbar file listings. The following screen info and
prompt
info MCI codes are available:

|&1 File name of the file.


|&2 File size of the file.
|&3 Date the file was added into the database.
|&4 Time the file was added into the database.
|&5 Number of times the file was downloaded.
|&6 Estimated minutes it will take to transfer the file.
|&7 Estimated seconds it will take to transfer the file.
|&8 Name of the user who uploaded the file.

|!1 Specifies the color and top Y position of the file


description
window.

|!2 Specifies the bottom Y position of the file description


window.

(8.B.9) ANSIFLST.xxx
[TEMPLATE]

———————————————————————————————————————————————————————————————————————
The ANSIFLST.xxx template is used to define the coordinates and
colors
for the lightbar file listings. The color of each screen info MCI
code
for this template is saved, and will be used in the file listing.
The
following screen info MCI codes are used:

|!1 Specifies the top Y coordinate of the file list window.


The
color of this code is ignored.

|!2 Specifies the bottom Y coordinate of the file list window.


The color of this code is ignored.

|!3 Specifies the Y coordinate and default color for the


"prompt"
line. This is the line where general text is displayed,
such
as "Batch queue full", etc.

|!4 This code is optional, and if defined specifies the X/Y


coordinates AND the color of the total number of files in
the user's batch queue.

(8.B.10) ANSIMLST.xxx
[TEMPLATE]

———————————————————————————————————————————————————————————————————————
This is the template for the ANSI message index listing, where
users
can scroll through a list of messages with the arrow keys. The
following MCI codes are used:

!1 = Y position of the top line in the message index list window


!2 = Y position of the bottom line in the message index list
window
!3 = Bottom of template. When a user exists from the list,
Mystic
will move to this Y position in preparation for other text
when
the user selects to quit reading.

(8.B.11) ANSIMRD.xxx
[TEMPLATE]

———————————————————————————————————————————————————————————————————————
This is the template for the actual message reader, which allows
the
user to scroll through the message using the arrow keys / pgup,
pgdn
keys. The following MCI codes are used:

!1 = Y position of the top line of the message text window


!2 = Y position of the bottom line of the message text window
!3 = Y position of the bottom of the template.

!4 = The X/Y location and text attribute of the actual percentage


of the message read (ie a number between 0 and 100). If this
code is not in the template, it will be ignored.

!5 = The X/Y location of the percentage bar. If this code is not


in
the template file, it will also be ignored.

The message header information is the same as it for the standard


message reading mode:

|&1 From |&6 Total messages in base


|&2 To |&7 Reply to message number
|&3 Subject |&8 See also message number
|&4 Date / Time |&9 Message status
|&5 Message number

(8.B.12) ANSIQUOT.xxx
[TEMPLATE]

———————————————————————————————————————————————————————————————————————
The ANSIQUOT.xxx template file is used to define the quote window
used
in the full screen editor. The quote window is always six lines
in
size, so when creating the ANSIQUOT.xxx, you must make sure that
there
are at least 6 lines from the beginning of the quote window to
the end
of the screen. The following is a list of MCI codes which are
used for
this template:

|!1 This defines the position where text scroll at while


quoting. This
is usually the line before the quote window starts.

|!2 This is the line where the actual first line of the quote
window
is. The bottom line is not needed since the quote window is
always 6 lines long. The color of this code is saved and is
used
for non-highlighted text.

An example of the quote template:

====================================================================
<top of screen>

|!1
--Quote Window (ESC) Quit----------------
|!2

<bottom of screen>

====================================================================

The color for the Quote Window Lightbar can be defined in the
system
configuration -> language editor section of the BBS {6.2.G}
(8.B.13) ANSITELE.xxx
[TEMPLATE]

———————————————————————————————————————————————————————————————————————
This is the template for the full screen irc-ish teleconference
system.
This ssytem allows the user to have a permanent input line as
well as a
window where text will scroll, maybe similar to a text-based IRC
client
like BitchX. Each user also has a 200 line scrollback buffer! The
MCI
codes used in this template file are below:

|!1 This defines the starting position and color of the


scrolling text
|!2 This defines the ending position the scrolling text
|!3 This defines the position of the permanent user prompt
|!4 This defines the position where the channel number is placed
|!5 This defines the position and color for the channel topic

An example of the ANSITELE.xxx template:

====================================================================
<top of screen>
[Channel #: |!4 / Topic:
|!5]:::::::::::::::::::::::::::::::::::::::
|!1

|!2
-----------------------------------------------------------------
---
|!3
<bottom of screen>

====================================================================

Note: We will jump to section 8.B.42 for the sake


of consistency, as it is the last TEMLPATE
in alphabetical order, and indeed belongs in
this section.

(8.B.42) WFCSCRN.xxx
[TEMPLATE]

———————————————————————————————————————————————————————————————————————
This template, although it is not seen by the user, allows you to
tweak
your WFC Screen to your own desires. This file is placed in the
BBS
DATA directory (UNLIKE THE REST OF THE DISPLAY FILES!). The
random
display system works as well, allowing up to 10 randomly selected
WFC
Screens! You may also use any MCI Display and Control codes
available
to Mystic when creating this file. The MCI Codes specific to this
template are:

!1 Status line (40 characters in length)


!2 System Time
!3 System Date
!4 Next Event Time
!5 Top X/Y position and standard color of node window
!6 Bottom X/Y position and highlight color of node window
!7 Top X/Y position and color of modem window
!8 Bottom X/Y position of modem window

Note: The rest of the display files documented below,


do NOT use the Mystic BBS Template System. All
MCI Display codes and MCI Control codes as well
as color codes are free to be used. Each of the
display files below are included in the Mystic
BBS Random Display file engine, and thus you
can have up to 10 different display files for
each of the following files!

(8.B.14) AMSGHLP1.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown to the user when they request help
while
using the full screen message index (ANSIMLST.xxx {8.B.10}). Here
are
a list of available commands while in the message index so that
you can
customize your display file without trying to figure it out
yourself:

Up Arrow = Move up in the message list index


Down Arrow = Move down in the message list index
Right Arrow = Move to the next page
Left Arrow = Move to the previous page
CTRL-R = Move to the next page
CTRL-C = Move to the previous page
Enter = Read highlighted message
Escape = Quit Reading
G = Go to next base in scan
I = Ignore remaining
T = Toggle base in new-scan
? = Show AMSGHLP1.xxx

(8.B.15) AMSGHLP2.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown to the user when they request help
while
using the full screen message reader (ANSIMRD.xxx {8.B.11}). Here
are
a list of available commands while in the message reader so that
you
can customize your display file without trying to figure it out
for
yourself:

Up arrow = Up one line A = Redraw message again


Down arrow = Down one line D = Delete message
Ctrl-R = Up one page E = Edit message
Ctrl-C = Down one page G = Goto next message base in
scan
Page Up = Up one page I = Ignore remaining messages
in base
Page Down = Down one page J = Jump to a message number
Escape = Quit Reading N = Next message
Enter = Next message P = Previous message
R = Reply to message
(*) NOTE: Not all commands are T = Toggle base in new scan
available at all times. X = Download message text
L = Lightbar Message Index
[ = Goto previous message in
thread
] = Goto next message in thread
? = Help
H = Set message last read
pointer to current message.
Q = Quit Reading

(8.B.16) BIRTHDAY.xxx

———————————————————————————————————————————————————————————————————————
This display file is displayed during login if the user calls on
their
birthday.
(8.B.17) BLINDUL.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown when the user selects to blind upload
in the
file areas. Here you could list upload rules and regulations,
etc.

(8.B.18) CLOSED.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown if a System Password has been defined,
and
the caller did not enter the correct System Password when
prompted.

(8.B.19) DOWNLOAD.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown before the "Filename: " prompt when a
user
starts to download a file in the file areas.

(8.B.20) EMAILHLP.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown when the user request help from the e-
mail
message reading screen. The available commands for this help file
are
listed below:

Up arrow = Up one line


Down arrow = Down one line
Ctrl-R = Up one page
Ctrl-C = Down one page
Page Up = Up one page
Page Down = Down one page
Escape = Quit Reading
Enter = Next message
(A) Read Again (N) Next Message
(P) Previous Message (R) Reply to Message
(J) Jump to Message (X) Download Message
(L) List Messages (D) Delete Message
(Q) Quit (?) = Help
(8.B.21) FEEDBACK.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown before new users are forced to send
feedback
to the SysOp when creating a new account on the system. It's
usually
used for telling the user what kind of information you would them
to
give you in the new user feedback letter.

(8.B.22) FGROUPx.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown after joining File Group x where x is
the
number of the file group.

(8.B.23) FLAG1x.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown during login if the user has FLAG1x
set.
Where x is an AR flag from set 1 from A-Z. This is usually used
to show
special announcements to members of an affiliation whom you flag
using
an AR flag. But it can be used for whatever you like.

(8.B.24) FLAG2x.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown during login if the user has FLAG2x
set.
Where x is an AR flag from set 2 from A-Z. This is usually used
to show
special announcements to members of an affiliation whom you flag
using
an AR flag. But it can be used for whatever you like.

(8.B.25) FLISTLP.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown when a user requests help while in the
full
screen file lister (ANSIFLST.xxx {8.B.9}). The available commands
while
in this listing mode are shown below:

ENTER View extended information on highlighted file


SPACE Flag highlighted file for download
CTRL-E Previous file (or use up arrow key)
CTRL-X Next file (or use down arrow key)
CTRL-R Previous page (or use Page Up key)
CTRL-C Next page (or use Page Down key)
V View contents of an archive
N Scan next base (during new scan and search)
E Edit the selected file (requires sysop access)
ESC Quit file list (abort new scan and search)

(8.B.26) FSEARCH.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown before prompting the user with the
keywords
or partial filenames they wish to search for in the file areas.

(8.B.27) FSHELP.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown when the user requests help from the
full
screen message editor (ANSIEDIT.xxx {8.B.7}). The available
commands
while using the full screen message editor are listed below:

Up Arrow Move cursor up one line


Down Arrow Move cursor down one line
Left Arrow Move cursor left one character
Right Arrow Move cursor right one character
Page Down Go to next page
CTRL-C Go to next page
Page Up Go to previous page
CTRL-R Go to previous page
CTRL-I Insert line above cursor
CTRL-Y Remove current line (yank)
CTRL-V Toggle insert/overwrite mode
CTRL-B Redraw screen
CTRL-Q Quote message (reply only)
CTRL-Z Show help file FSHELP.xxx

Slash Commands:
/A Abort message
/S Save message
/C Continue editing
/Q Quote message
/U Upload a file
/? Slash Command help

(8.B.28) GROUPx.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown immediately after a user joins message
group
x where x is the group number. This could be used to show
disclaimers
and rules and regulations for message networks, and the like.

(8.B.29) LOGOFF.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown right before hanging up on the caller
when
they choose to logoff the BBS with the [G]oodbye command. This
file is
not shown when GI (hangup immediately) is used instead of (GH).

(8.B.30) LOGON1-9.xxx

———————————————————————————————————————————————————————————————————————
These display files LOGON1.xxx - LOGON9.xxx are displayed in
numerical
order after a user successfully logs onto the BBS.

(8.B.31) NEWUSER.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown before asking a potential new user if
they
would like to create an account on the BBS. It can be used to
show a
little bit of information about your system, and then let them
decide
if they want to create an account on your board. If the user
selects
yes to continue logging into the BBS the system then displays the
file
NEWUSER1.xxx
(8.B.32) NONEWUSR.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown if Allow New Users is toggled off in
the
system configuration. After the file is shown, the user is
immediately
disconnected from the system.

(8.B.33) PRELOGON.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown after the user selects their terminal
emulation or it is automatically detected, and before the "Login:
"
prompt or the matrix menu. This is the first display file a user
will
see when logging into your BBS, so a nice splash screen would be
great
for this display file. In the old days, SysOps would list the
phone
number, city, state, and zipcode of their BBS. But you could
update the
old way by putting in a web link to your BBS's homepage, your
telnet
address, and the email address of the SysOp.

(8.B.34) PROTO.xxx

———————————————————————————————————————————————————————————————————————
Note: In the latest versions of Mystic BBS protocols have been
added
internally to the software itself, thus eliminating the
need of
using any external protocols at all, and hence the External
Protocol editor has been removed. However, for those of you
using older versions of Mystic this section of the
documentation
has been kept intact for your convenience.

This display file is shown when a user is to select a file


transfer
protocol. If the display file does not exist, Mystic BBS will
create a
basic listing and prompt the user for their choice.
(8.B.35) PROTOB.xxx

———————————————————————————————————————————————————————————————————————
Note: In the latest versions of Mystic BBS protocols have been
added
internally to the software itself, thus eliminating the
need of
using any external protocols at all, and hence the External
Protocol editor has been removed. However, for those of you
using older versions of Mystic this section of the
documentation
has been kept intact for your convenience.

This display file is shown when a user starts to download and


files
exist in their batch queue. If the display file does not exist,
Mystic
BBS will create a basic listing and prompt the user for their
choice.

(8.B.36) READHLP.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown when the user requests help when
reading
messages using the Standard message reader. The available options
are
listed below:

(A) Read Again (N) Next Message


(P) Previous Message (R) Reply to Message
([) Back in Thread (]) Forward in Thread
(G) Goto Next Base (I) Ignore Remaining
(T) Toggle New Scan (J) Jump to Message
(X) Xport Message (E) Edit Message (must be
owner/sysop)
(L) List Messages (D) Delete Message (must be
owner/sysop)
(H) Set last read to current

(8.B.37) READSHLP.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown when the SysOp requests help when
reading
messages using the Standard message reader. The available options
are
listed below:

(A) Read Again (N) Next Message


(P) Previous Message (R) Reply to Message
([) Back in Thread (]) Forward in Thread
(G) Goto Next Base (I) Ignore Remaining
(T) Toggle New Scan (J) Jump to Message
(X) Xport Message (E) Edit Message
(L) List Messages (D) Delete Message
(M) Move Message to Base
(H) Set last read to current

(8.B.38) SLxxx.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown during login if the user has a
security
level of xxx or higher. Where xxx is the minimum users security
level
required to show the file. This could be used to show new users
that
they have not been validated fully or the like.

(8.B.39) TELECONF.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown before the user enters the standard
tele-
-conference, and shown again after the user requests help from
the
teleconference. It could be used as a header for the standard
tele-
-conference to brand it to your system.

(8.B.40) TELEHELP.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown when the user requests help while in
the
teleconferencing system. Note that this file is shown for both
the
standard and full screen teleconference (ANSITELE.xxx {8.B.13}).

(8.B.41) UPLOAD.xxx

———————————————————————————————————————————————————————————————————————
This display file is shown when a user starts to upload before
they are
presented with the "Filename: " prompt. You could use it to show
a list
of rules and regulations you have on your system about uploading
files.

(8.B.43) QUOTES.DAT

———————————————————————————————————————————————————————————————————————
This file is not a display file, but it displays things so I
figured it
should go here. Mystic BBS features a rumore system or user quote
system, which can be displayed in every menu, or somewhere else
if you
like. To use it, employ the |QO MCI Code in your display files.
Mystic
will automatically replace the |QO MCI code with a randomly
selected
quote from the QUOTES.DAT file which is in your DATA directory.
The
format for the QUOTES.DAT file is straight ASCII text which can
be
edited with any text editor. Each quote must START with a line
with
nothing else but an * as the first character of the line. After
that,
an unlimited number of text lines can be added as the quote.

For example:

*
This is a sample quote. It can be an unlimited number of text
lines and will be displayed whenever a "QO" MCI code is placed
in a text file.
*
This is the last quote in the file. Notice that there is NOT
an * at the bottom of this because it is the last quote and
the * is only placed at the BEGINNING of a quote block.

(8.B.44) NEWUSER.MPE

———————————————————————————————————————————————————————————————————————
This file is not a display file, but an MPL script and since it
has the
potential to display something to the user, I've opted to put it
here.

If the file NEWUSER.MPE exists in the SCRIPTS directory of the


BBS, it
will be executed after NEWINFO.MNU. This can be used to force a
user to
sign a disclaimer or whatever you like.
.---------------------------------------------------------------.
| |
| (8.C) MENUS (*.MNU) |
| |
`---------------------------------------------------------------'

The Mystic BBS Menu System is the heart and soul of your BBS.
Through
it you can completely customize the way someone uses your system.
Menu
files are created and edited using the internal and external
editors
which come with Mystic BBS Software. There can be up to 75
commands per
menu in Mystic BBS Software! WOW!

The default Mystic BBS menu setup contains the following menus:

ACCOUNT
-------
This menu allows users to change information regarding
their
account configuration settings.

AUTOSIG
-------
This menu allows users to edit their auto signature, and
toggle
it's functionality ON or OFF.

BBSLIST
-------
This menu allows users to view, add, and list BBS
Listings on
your system. You can have more than one BBS list!

DOORS
-----
This menu has a few examples of running doors from within
Mystic BBS. You can use it to run your doors, or create
your
own.

FILE
----
This menu contains all of the functionality for your
BBS's
file bases. Users can list, view, upload, download,
search,
new-scan, etc, for files in your file bases.
FLIST
-----
This menu contains commands for the [L]ist files command
from
the file menu. It allows your users to specify what kind
of
file listing they'd like to see.

FNEWSCAN
--------
This menu contains commands which prompt your users if
they
wish to scan for new files upon entering the file areas.

FQUEUE
------
This menu contains all the commands necessary for your
users to
maintain their batch download file queues.

GOODBYE
-------
This menu contains the options presented to a user when
they
issue the [G]oodbye command from anywhere in the BBS. The
user
then has a chance to back out, or leave feedback before
hanging
up.

MAIN
----
This is the main menu where all the other menus are
called from
It is the heart and soul of the default Mystic BBS setup.

MESSAGE
-------
This menu contains all of the functionality your users
need to
interact with the Mystic BBS Message Base System. This
includes
posting, reading, listing, sending email, reading email,
etc,.

MNEWSCAN
--------
This menu contains commands which prompt your users if
they
wish to scan for new messages upon entering the message
bases.

MSEARCH
-------
This menu contains all of the commands your users need to
do
a search on your message bases. They can search for text,
or
by author and subject, etc.

NEWINFO
-------
This menu is executed after a new user fills out all of
the new
user questions you have toggled on in system
configuration. It
allows them to change their answers after they have
initially
answered the questions.

PRELOGIN
--------
This menu handles all of the basic startup functions such
as
showing the One-Liners, and checking for email.

QWK
---
This menu contains all of the commands necessary for your
users
to upload and download offline mail packets (QWK).

SYSOP
-----
This menu contains all of the sysop commands you can use
while
directly on the BBS. You can change system configuration,
edit
message and file areas, and much much more! Make SURE you
have
this menu set for ACS of s255 or even s255&b0 to make
sure only
the local console can access this menu!

TIMEBANK
--------
This menu contains all of the commands a user needs to
store
time in the system timebank or withdraw time from their
account
and is a handy feature if you run a system that uses time
as
a method of crime and punishment :)

VOTE
----
This menu contains all of the commands necessary for your
users
to use the Voting Booth. They can add questions, vote on
the
current questions, and see the results of any questions
that
already exist.

GLOBAL
------
While this menu is NOT included in the default Mystic
setup, it
deserves to be mentioned here because any command that
you put
in the GLOBAL menu can be accessed from ANY other menu on
your
entire BBS as long as the menu flags are set to Allow
Global.

Types of Menus
--------------

There are technically 5 types of menus which you can use on your
BBS:

1. Blank menus which only run commands and do not prompt

2. Prompt ONLY menus (useful for modifications and


branching)

3. Regular menus which show a file or list of commands


and then
prompt the user for a selection at which point they
enter it
using hotkeys alone, or press [ENTER] to send the
command.

4. Lightbar menus which show a file and then populate a


lightbar menu listing where the user uses arrow keys
and
[ENTER] to engage individual commands.

5. Lightbar Grid menus which show a file and then


populate a
lightbar menu listing where the user uses arrow keys
and
[ENTER] to engage individual commands, but the options
can
be setup to have any order by the SysOp and can
therefore be
more professional and polished.
We will now go into gory detail about each menu type and how it
may be
employed on your system.

Blank Command Only Menus


------------------------
These menus are for internal function purposes only. All
of the
hotkeys for a command-only type of menu are set for
either
FIRSTCMD, or EVERY. FIRSTCMD will run the commands in
numerical
order as shown in the menu command listing one after
another,
the FIRST time a menu is loaded. EVERY will run the
commands
in numerical order as shown in the menu command listing
one
after another, EVERY time the menu is accessed. You could
then
use this type of menu layout as functions on your BBS,
which
could be referenced by other menus using the GO and GS
menu
commands which run the menu. For instance lets say our
scenario
is one that we want to display a file to users with a
certain
AR flag set when they enter ANY menu, not just at login
as can
be achieved with FLAGx.xxx. We could go into every single
menu
and add the below commands to the top:

# KEY CMD ACS PARMS DESCRIPTION


-- ------- ---- ----- ------------- -------------------
------
1 EVERY GD FZ flagz Display notice to
flag z
2 EVERY -N FZ agree? Display yes/no
question
3 EVERY GI FZ&!OK Hangup if they say
no

or, we could create a Blank Command Only menu with those


same
items up there called FLAGZSUB and then in the GLOBAL.MNU
or in
each of the menus we wish to have users with AR flag Z
asked to
confirm this question we could add only this one command:

# KEY CMD ACS PARMS DESCRIPTION


-- ------- ---- ----- ------------- -------------------
------
1 EVERY GS FZ FLAGZSUB Check if user is
narc

Prompt Only Menus


-----------------
Prompt only menus are useful when you wish to ask the
user a
question or present them with a prompt of commands to
choose
from. In the default Mystic BBS setup there are several
menus
which use this layout. One of which is the AUTOSIG.MNU
file
shown here:

# KEY CMD ACS PARMS TEXT/[DESC]


-- ------- ---- ----- ------------- -------------------
------
1 EVERY GT |CL|09Your current
(cont)
signature:
|CR|CR|07
2 EVERY AV [show users
autosig]
3 V GO AUTOSIG [redisplay menu
prompt]
4 E AE
5 T AT
6 Q GO MAIN

The menu flags for the AUTOSIG.MNU:

A. Menu Header :
B. Menu Prompt : AutoSig [|AS]:
(V)iew/(E)dit/(T)oggle/(Q)uit
C. Display Cols : 3
D. ACS : s10
E. Password :
F. Display File : AUTOSIG
G. Fallback Menu : message
H. Menu Type : Standard
I. Finish X/Y : 0 0
J. Use Global MNU: Yes
K. Input Type : User setting

And lastly the prompt as shown to the user when their


autosig
is on/off:

AutoSig [ON]: (V)iew/(E)dit/(T)oggle/(Q)uit


AutoSig [OFF]: (V)iew/(E)dit/(T)oggle/(Q)uit
Note: The status of the autosig is made possible by the
|AS MCI
Display code. For a complete listing of these
display
codes see section {9.2}

Here is what happens when this menu is entered.

1. Mystic BBS starts the menu from command #1

2. This menu command is set for Hotkey EVERY which means


it
gets run EVERY time the menu is accessed.

3. The command GT is issued which displays the string


"Your current signature: " and then outputs two
linefeeds
via the MCI Control codes |CR|CR and then changes the
color
of the foreground to white (|07) using color codes.

4. Mystic has finished processing this menu command and


moves
on to the next one in numerical order, which happens
to be
#2.

5. Menu command #2 is set for AV which is the menu


command that
displays the users current auto-signature. Which is
drawn
before the menu prompt, because the menu is not
finished
loading/running all of the 6 commands it consists of.

6. Mystic displays the users current auto-signature.

7. The rest of the menu commands in the menu do not have


any
text set to display for them, so they do not show up
in any
of the listings for menu commands, and thus Mystic
does not
draw any menu command listing even if a display file
is set
in the Display File flag for the menu and is not
available.

8. Mystic draws the menu prompt which is shown below.

9. Mystic has finished with the menu, and awaits for the
user
to press a hotkey from those we've defined. In this
case
the menu type is one that only has a prompt so we
defined
explicitly the available hotkeys manually in our
prompt.

10. When a user presses a key Mystic then checks the menu
for
the hotkey and if it finds a match, the corresponding
menu
commands assigned to be called by the hotkey the user
has
pressed are executed. There is a feature in Mystic
BBS that
is very powerful called Stacking Menu Commands. This
allows
one hotkey to trigger several menu commands at the
same
time. For more information on this see section
{8.C.6}

Regular Menus
-------------
Regular menus are the kinds of menus you will probably
wind up
using the most. They consist of a display file, or
internally
generated menu command list, and a menu prompt, which the
user
then presses the hotkey, and if required [ENTER] to send
the
command to Mystic BBS.

Below is the anatomy of a regular menu. In this case, it


is
the MAIN.MNU found in the default Mystic BBS setup:

====================================================================
Menu Command List

## Hot-Key Cmd Text


-- -------- --- ---------------------
1 A GO |09(|10A|09) |03Accou...
3 F GO |09(|10F|09) |03File...
5 S GX |09(|10S|09) |03Syste...
7 L GL |09(|10L|09) |03Last...
9 V GO |09(|10V|09) |03Votin...
11 B GO |09(|10B|09) |03BBS L...
13 T GO |09(|10T|09) |03Time...
15 ! GX |09(|10!|09) |03MPL D...
17 /W NW |09(|10/W|09) |03Who'...
19 /G GI |09(|10/G|09) |03Good...

(E)dit, (I)nsert, (D)elete, (F)lags, (V)iew, (Q)uit:

====================================================================
Note: This screen capture has been truncated for display
purposes.

====================================================================
Menu Flags (MAIN)

A. Menu Header : |DFmainhdr


B. Menu Prompt : |CR|09Command |08-> |09
C. Display Cols : 3
D. ACS : s10
E. Password :
F. Display File :
G. Fallback Menu : MAIN
H. Menu Type : Standard
I. Finish X/Y : 0 0
J. Use Global MNU: Yes
K. Input Type : Hotkey

(V)iew or (Q)uit:

====================================================================

What happens when this menu is loaded? Lets go into


detail:

1. Mystic sees that the menu has a header configured in


the
menu flags portion of the menu definition, and in this
case
the header is |DFmainhdr which shows the display file
"mainhdr.ans" or "mainhdr.asc" in the TEXT directory
for the
current language if it is available.

2. Mystic displays this file as it is instructed to.

3. Each of the commands in this menu have associated text


which
describe the option and the hotkey in different
colors. The
format used here is simple:

These color codes are used in the text fields of each


of the
menu options in the default MAIN.MNU:
|09 = Blue, |10 = Bright Green, |03 = Cyan

The options themselves use the format of:

|09(|10K|09) |03Key to launch command here.

This is show to the user as a bright blue ( then a


bright
green K then a bright blue ) then a space then a cyan
description of what the hotkey is used for in the
menu.

4. Mystic sees that the Display File is blank in this


menus
flags setup, so it knows to draw an internal list
itself
consisting of the Text fields of each of the menu
commands.

5. Mystic sees that the Display Cols field in the menu


flags is
set for 3, which means that Mystics internal menu
command
listing routine will draw 3 columns of commands and
keep
them nice and spaced out if possible so as not to be a
big
mess.

6. The menu is drawn in order from the first command to


the
last. Each of the fields for the text in the commands
is
drawn in it's appropriate column outputting the color
codes
which are then in turn interpreted by the Mystic ANSI
engine
and shown to the end user in the proper colors.

7. When the menu command listing has finished drawing,


Mystic
sees that a menu prompt exists in the flags setup for
this
menu and also draws it underneath the last menu
command
in the list, on column 1 including a blank line
inbetween it
and the entire menu command listing it just drew.

8. Mystic waits for the user to interact with the menu.

Lightbar Menus
--------------
Refer to section {8.C.4} for a complete guide on how to
create
lightbar menus!

Lightbar Grid Menus


-------------------
Refer to section {8.C.5} for a complete guide on how to
create
lightbar grid menus!

=================================================================

(8.C.1) THE LOCATION OF MENU FILES (<BBSDIR>\MENUS)

-----------------------------------------------------------------

The location for menu files (*.MNU) in the default Mystic BBS
setup is
<BBSDIR>\MENUS. You can change this location through the language
editor {6.2.G} Each language definition can have a different
location
for it's menu files, or it can share the menu files with other
language
definitions. It's all up to you.

=================================================================

(8.C.2) USING THE MENU EDITOR

-----------------------------------------------------------------

See section {6.2.S} for instructions on using th menu editor.

=================================================================

(8.C.3) MENU EDITOR HOTKEY REFERENCE

-----------------------------------------------------------------

When using the menu editor you assign each of the menu items in
your
menu a hotkey. This hotkey can be any ascii character A-Z, 0-9,
symbols
etc, whatever you like -- or a combination thereof. But the real
power
of Mystic BBS menuing lies in the special hotkeys and they are
defined
in detail below:
FIRSTCMD : Automatically runs the command each time the menu is
loaded,
but does not automatically run it when the menu is
used and
no other menus are executed.

EVERY : Automatically runs the command each time the menu is


redrawn
(before its actually redrawn)

AFTER : Automatically run the command each time the menu is


redrawn,
just before the prompt is displayed.

The other special hot keys are for user input keys:

ENTER : Use the ENTER key as the hot key


ESCAPE : Use the ESCAPE key as the hot key
TAB : Use the TAB key as the hot key
RIGHT : Use the RIGHT arrow as the hot key
LEFT : Use the LEFT arrow as the hot key
UP : Use the UP arrow as the hot key
DOWN : Use the DOWN arrow as the hot key

In addition to these hot keys, any combination of the standard


ASCII
characters is legal:

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Z,
0,1,2,3,4,5,6,7,8,9
`,~,!,@,#,$,%,^,&,*,(,),-,_,=,+,[,{,],},;,:,',",\,|,<,,,>,.,/,?

Examples of valid hot key combinations


--------------------------------------
/ALL_YOUR_BASE
.SECR3T>MENU

=================================================================

(8.C.4) CREATING NORMAL LIGHTBAR MENUS

-----------------------------------------------------------------

Lightbar menus are a prettier and more user friendly method of


using a
BBS system. Since the days of old, lightbars have been the
primary
method of navigation in software. Even to this day everywhere you
look
in a software package or operating system you can see a lightbar.
This
is because it is an elegant method to interface with the machine.
In
windows the start menu and context menus and pulldown menus all
use
lightbars. In linux pine and make menuconfig use lightbars, even
the
linux install programs use lightbars! In OS/2 the context-menus
and
pulldown menus are all using lightbars. And yes, even on
macintosh PCs,
lightbars lightbars lightbars!

So you can see why it would be advantageous to supply the user


with a method they are familiar with for navigating and using
your system. This was one of the reasons all of the Full Screen
and ANSI template systems were put into place. Not everyone is
as old school as everyone else, and the more accessible a BBS
software is to the user, the more the user will enjoy it!

Enough propaganda for the cult of lightbar, it's time to move on


and
learn how to make these babies!@%!@

1. To create a GOOD lightbar menus, you want to have a nice


display file used as it's background where the lightbar
options
will be drawn on top of. You don't necessarily need any
great
ANSI art work, but a nice organized list with a good
amount of
white space to separate like options is always a good
thing to
have.

2. Once you have your display file drawn, it's a good idea
to save
a copy of it as a backup and then work with the backup so
that
you will always have the original display file template
ready
when you are proceeding to the next few steps.

3. Now, place your lightbar options in unhighlighted mode


where
you would like them to be displayed to the user. It's a
nice
trick to add one or more spaces to either side of the
lightbar
options so that the lightbar actually LOOKS like a bar.
It is
also a nice trick to make the lightbar highlight the same
size
for all items on the menu. This tactic maintains
professional
and elegant interfacing with the user. What I do is I
leave
enough room for a however much lightbar padding I opt for
in
characters on either side when i draw the menu. Then I
draw
the normal options into this format so that when it comes
time
to actually create the menu for the light bar i'm all
set. I
make sure to color the lightbar options with a
highlighted hot
key as well so that if the user is old school, they can
just
enter that hotkey to emulate pressing [ENTER] while that
menu
command is highlighted with the lightbar.

4. Now that you have your options unhighlighted drawn into


your
menu template, highlight the first option as you desire.

5. Now save the file as your display file filename for the
menu
you wish to create it for. It's a good idea to maintain
back-
-end organization on a BBS to name all the display files
that
go with a menu file the same name. Example: AUTOSIG.MNU
uses
AUTOSIG.ANS, etc,.

Now we are going onto make the actual menu! Fun eh?!

6. Start MCFG (you can use the regular SysOp stuff if you
want,
but i personally prefer MCFG over that hokey old
interface :))

7. Enter the menu editor and choose the language which you
are
going to add your new lightbar menu into.

8. Insert a new menu, using CTRL-I or [I] if you're in the


sysop
stuff.

9. Now edit the menu you just created.

10. First thing you want to do is set the menu type to be


lightbar
in the menu flags. CTRL-F from MCFG, or F from sysop.
11. After that, set the display file to the display file
template
you just created in your ANSI editor WITHOUT the
extension.
Make sure you copied/saved that file in the proper
directory
for the language you're currently editing otherwise
you'll be
up shits creek without a paddle, boy-o :)

12. Now set the menu footer and the menu header to nothing.
Mystic
automatically creates a default for you, but we dont want
that
stuff, so delete it.

13. Set the input type to Hotkey.

14. Set the rest of the options you want in terms of ACS and
all
that hokey pokey.

15. Return to the menu command listing by pressing [ESC] from


MCFG
or [Q] from the internal menu editor.

16. Now press CTRL-V from MCFG to display your template. You
will
note that I instructed you to leave the unhighlighted
items and
the example highlighted item intact. This is because we
can now
use this information to help construct the rest of our
menu to
exacting standards! To view the emulated display of your
menu
from the internal menu editor choose [V].

17. Ok, so now we've got the display file template in place,
and we
got the menu setup to be a lightbar. Now we have to do
the
dirty work of entering all of our commands. I advise you
to
first position the lightbar items, and then worry about
the
functional commands which each hotkey will perform. More
on
this in a minute.

18. [E]dit the first command that mystic has supplied for you
when
you created a new menu. Get rid of the display text, or
text as
it's referred to in the internal editor.

19. Begin editing the Lightbar Low string. Enter this using
the
colors and format you used in your template. To view your
menu
template, remember press CTRL-V.

20. After you've edited the lightbar low string, move on to


the
Lightbar High string, and define the colors so that there
is a
bar selecting the option you're working on.

Example:

Low : This is a (t)est


High: [This is a (t)est]

21. Now preview your menu template again and eyeball where
the menu
option is going to be placed on it row/column wise.

22. Edit the X Position to be what you guess as the X column


where
the item BEGINS at.

23. Edit the Y Position to be what you guess as the Y column


where
the item BEGINS at.

24. Add another command using the same steps [18-23] but you
will
need to insert a new menu command before doing so with
CTRL-I
or [I]nsert.

25. Now that you have two of the lightbars placed, you can
test the
movement of the bar. Press CTRL-V to preview the lightbar
as it
is displayed to the user with the ability to preview the
move-
-ment of the bar. In the old editor press V to preview
it. Now
move the lightbar down and up and check to make sure
everything
lines up. If it doesn't, fix it in each of the items.

26. Since it's common to have columns of items in a lightbar


menu
once you have setup 2 of the menu items, the rest are
pretty
easy to do in terms of X/Y coordinates since they are
grouped
by column, only the row changes.

27. Once you have all of your items setup just how you like,
press
[ESC] and exit the menu editor and answer YES to save the
menu.
We do this to insure none of our hard work is lost..

28. Begin editing the lightbar menu you just created again,
and now
edit the menu item Menu Commands for the lightbar items
to do
whatever you want them to do. Make sure you define a
different
hotkey for each menu item, that way commands aren't
accidentaly
stacked and thus create strange and unexpected results.

29. See section {8.C.6} for information on stacking menu


commands
to take your lightbar menu modding skills to the next
level.

30. Now that you're done, editing your lightbar menu and
everything
is setup JUST how you like it. You need to remove the
existing
lightbar items you left in the template to assist you in
lining
things up. So open up your ANSI editor, and get rid of
em, all
of em including the one that you highlighted as a
reference for
drawing the highlight bar itself.

=================================================================

(8.C.5) CREATING GRID LIGHTBAR MENUS

-----------------------------------------------------------------

Lightbar grid menus are one of the features that can really set
your
system apart from the rest. It allows for a professionally setup
lightbar menu to actually act like a real menu. Meaning, if the
user
presses right on a 3 column lightbar setup, and is on column 1,
instead
of going down to the next option like a traditional lightbar
menu, the
lightbar highlights the next option horizontally neighboring it
which
is in column 2, and if they press the right again, the same
behaviour
only now they highlight column 3! Way more efficient and elegant
than
having to go through every single option with the highlight bar
down
down down down down over down down etc.!

To create Lightbar Grid Menus, follow the instructions for


creating
Lightbar menus found in section {8.C.4}. Once you have created
your
lightbar menu as you like it (all the way to step 30! phew!) you
can
then begin setting up the lightbar grid.

Each lightbar item option in a lightbar grid based menu has four
exit
coordinates which are set as the menu command # in the menu item
listing you want the bar to highlight when the user pressese
left,
right, up, and down. What this means is that when the user has
selected
the current menu option that you are definining exiting
coordinates
for, when they press up, left, right, down, etc, it will
highlight
whichever you specify from each individual option.

Lets say we have a menu like this:

1. (N)i! 3. Just a little (d)anger!


2. Burn (H)er! 4. I fart in your (g)eneral
direction

When the user has option number one selected with the
lightbar
and they press the left key, we can set the Left grid to
exit
to option 3. Then if they decide to press down, in option
3,
we can define the down grid exit to be option 4. This is
simplified by the below diagram:

1 <--> 3
/\ /\
|| || <- those are arrows, shutup bitch!
\/ \/
2 <--> 4

There is no reason you couldn't set up a lightbar grid to


act
totally different than what is expected however.

=================================================================

(8.C.6) STACKING MENU COMMANDS

-----------------------------------------------------------------

Stacking menu commands unleashes the true power of the Mystic BBS
menu
system. When you stack a menu command you assign the same hotkey
to
several different menu items. This allows a sort of high-level
programming to be performed using all of Mystic BBS's available
menu
commands where are defined in sections {8.C.7 - 8.C.20}

Here is an example of stacking menu commands:

# KEY CMD ACS PARMS DESCRIPTION


-- ------- ---- ----- ------------- -------------------
------
1 EVERY GD FZ flagz Display notice to
flag z
2 EVERY -N FZ agree? Display yes/no
question
3 EVERY GI FZ&!OK Hangup if they say
no

What happens when this menu is executed?

1. Mystic runs command number one because it is set for EVERY


which
means it runs EVERY time the BBS loads this menu. The command
for
menu item #1 is GD with parms of flagz. Menu command GD
displays a
file in the TEXT directory if it exists. The ACS required for
this
command is the user must have flag z set. So assuming the user
has
flag z set, and the file flagz exists in the current users
language
text directory, it displays the file.

2. Mystic runs the next command right after EVERY because it is


stacked
under the first and set to run EVERY time just like the
command
before it. This item is set to issue a -N menu command which
prompts
the user a question and use a default of "No" as an answer.
The
parms for this item are set to "agree?", and the ACS is the
same as
the command before it. So if the user has flag z set, the text
agree? Y/[N]: is output and mystic waits for a response. When
the
user responds, it continues execution to the next menu command
in
the list.

3. This menu command is stacked under the top two so it will


execute
ONLY after the top two commands are executed. This menu item
is set
for menu command GI which hangs up immediately on the user.
The ACS
for this option is FZ&!OK which translates to the user must
have
flag z set, but the OK flag must not be set. We inherit the OK
flag
value from the prior menu command (#2) if they answer no, then
the
OK flag is not set, and the ACS requirement is met for this
command.
At which point, if the user has flag z, and answered no,
mystic
drops carrier on the user immediately.

This is just one example. there are several other uses you could
use
stacked menu commands for. Use your imagination :)

(8.C.7) AUTOSIGNATURE MENU COMMANDS


(Ax)

———————————————————————————————————————————————————————————————————————

Section Jump Note: See? Didn't believe me?! Jeeeez...

---

Command : AE
Description : Edit the users auto signature.
Optional Data : None.

Note: This command takes the user into the frequently unused text
file
editor portion of Mystic. The display of this editor can be
configured from the language prompts in the language
editor, as
there are no display files associated with this mode of
editing
by default.

---

Command : AT
Description : Toggle users auto signature ON or OFF.
Optional Data : None.

Note: If this is set to OFF a user can still have a signature


defined,
it just will not be appended to any messages they post. If
this
is set to ON, it will obviously append the users auto-
signature
to the end of every message they post.

---

Command : AV
Description : View users current auto signature.
Optional data : None.

Note: This menu command will output the raw contents of the users
auto-
-signature with no pre-formatting MCI display codes used to
place
the text. So you will have to place the cursor where you
want it
before you use this command.

(8.C.8) BBS LIST MENU COMMANDS


(Bx)

———————————————————————————————————————————————————————————————————————

Command : BA
Description : Add a BBS to the BBS list.
Optional Data : None.

---
Command : BL
Description : Display the extended BBS list. The optional data
field
requires a LIST ID, which is up to an 8 character
long
unique name for the BBS list. This allows
multiple BBS
lists to be maintained. If ;SEARCH is appended
after
the LIST ID, Mystic will prompt the user for a
search
string to allow them to view only BBSes which
contain
the search string.
Optional Data : <LIST ID>;SEARCH

---

Command : BS
Description : Display the short BBS list. The optional data
field
requires a <LIST ID>, which is up to an 8
character long
unique name for the BBS list. This allows
multiple BBS
lists to be maintained. If ;SEARCH is appended
after
the LIST ID, Mystic will prompt the user for a
search
string to allow them to view only BBSes which
contain
the search string.
Optional Data : <LIST ID>;SEARCH

(8.C.9) GENERAL MENU COMMANDS


(Gx)

———————————————————————————————————————————————————————————————————————

Command : G1
Description : Show system daily history.
Optional Data : None.

---
Command : GD
Description : Display a text file. The optional data field is
required and holds the name of the file to
display.
If there is no file extension then the extension
of
.ANS or .ASC will be appended according to the
user's
terminal settings.
Optional Data : <FileName>

---

Command : GE
Description : Edit User Settings. This command can be used to
allow
users to edit their user profile. The optional
data is
required for this menu command, and will set
which
field in the user's profile to edit. The optional
data
must be set to one of the following:

1 - Street Address 2 - City/State


3 - Zip Code 4 - Home Phone Number
5 - Data Phone Number 6 - Birthdate
7 - Gender 8 - Date Format
9 - Terminal Emulation 10 - Screen Length
11 - Password *12 - Real Name
*13 - Alias 14 - Language
15 - Editor Type 16 - Toggle
Invisibility
17 - File List Type 18 - Toggle
Availability
19 - Toggle HotKeys 20 - Message Reader
Type
21 - Toggle LB Msg Idx 22 - Email Address
23 - User Note 24 - Optional Field 1
25 - Optional Field 2 26 - Optional Field 3
27 - Toggle LB Quote 28 - Toggle LB Email
Idx
29 - Toggle Node Chat Type 30 - Toggle QWK
FileList
31 - Select Archive Type

* NOTE: These commands should not be made available


to the user. They are added as an option
for use with the NEWINFO.MNU.
Optional Data : <Number of Field to Edit>
---

Command : GH
Description : Logoff user. This command will show the display
file
GOODBYE.xxx and then log the user offline. If the
user
has files in their download queue, they will be
prompted to download them before logoff.
Optional Data : None.

---

Command : GI
Description : Logoff user immediately. This command will not
show the
user the GOODBYE.xxx as in GH but instead log the
user
off the system immediately.
Optional Data : None.

---

Command : GL
Description : This command lists the last 10 users who called
into
the BBS system. Local logins are not included in
this
list, nor are any users marked as Ignore LC in
the user
editor.
Optional Data : None.

---

Command : GN
Description : One Liners. This option will allow the user to
view
and enter a one-liner if they choose. The
optional data
field allows the maximum number of lines and the
maximum line length (in characters) to be
configured.
If no optional data is supplied, the default used
is 10
lines and 75 characters.
Optional Data : <max lines>;<max line length>;<max input field
length>

---

Command : GO
Description : Go to a new menu. The optional data field for
this menu
command is required. It holds the name of the new
menu
that is to be loaded.
Optional Data : <Menu Name>

Note: When a GO command is issued, the menu stack is popped and


the GO
destination menu moves to the bottom of the menu stack. Use
GS
and GR to retain the menu stack order, instead.

---

Command : GP
Description : Page the System Operator for chat. This command
will
allow the user to page the System Operator for
chat.
If the optional data is set to /F, Mystic BBS
will
ignore the defined chat hours and page the SysOp.
Optional Data : /F

---

Command : GR
Description : Return from a gosub. This option will load the
last
menu which was saved onto the menu stack by the
GS
(Gosub Menu) command.
Optional Data : None.

---

Command : GS
Description : Gosub to a new menu. This option will save the
current
menu name on the menu stack and go to a new menu.
The
optional data field is required and holds the
name of
the new menu that is to be loaded.
Optional Data : <Menu Name>

---

Command : GT
Description : Display line of text. This command is used to
display a
line of text. The optional data field holds the
text
that is to be displayed.
Optional Data : <Text to Display>

Note: All Mystic BBS MCI Display Codes, MCI Control Codes, and
Color
Codes are available for use as the optional data.

---

Command : GU
Description : List all system users. This command will display
a list
of all user accounts on the system. If the
optional
data is set to SEARCH, the user will be able to
search
the list for a specific user.
Optional Data : SEARCH

---

Command : GX
Description : Execute MPE module. This command will execute a
Mystic
BBS programming executable. Mystic BBS has a
built in
programming language which allows the Sysop to
write
custom programs for their BBS. For more
information on
this, see the section on MPL {8.D}
Optional Data : <MPE_MODULE> <MPE_PARAMETERS>
Note: It is possible to pass parameters to an MPE module all you
have
to do is separate the module name from the rest of the
parameters
using spaces. You can then access these parameters through
the
MPL function ParamStr();

(8.C.10) VOTING BOOTH MENU COMMANDS


(Vx)

———————————————————————————————————————————————————————————————————————

Command : VA
Description : Add Question to Voting Booth. This command allows
users
to add questions into the voting booth.
Optional Data : None.

---

Command : VN
Description : Votes on all unvoted on (new) voting questions.
Optional Data : None.

---

Command : VR
Description : See results of a voting question. This command
allows
users to display the results of a voting
question.
If the question number is supplied in the option
data
field, the results for that question will be
displayed.
If the optional data field is left blank, the
user will
be asked to select which question they'd like to
see
the results of.
Optional Data : <Question Number>

---
Command : VV
Description : Voting Booth. This command will allow users
toaccess
and vote on the current voting questions in the
Voting
Booth database. The optional data field can be
used to
force a user to vote on a certain question by
supplying
the number of the question (as listed in the
voting
booth editor).
Optional Data : <Question Number>

(8.C.11) TIME BANK MENU COMMANDS


(Tx)

———————————————————————————————————————————————————————————————————————

Command : TA
Description : Deposit Kilobytes into Kilobyte bank.
Optional Data : None.

---

Command : TD
Description : Deposit time into the time bank.
Optional Data : None.

---

Command : TS
Description : Withdrawal Kilobytes from Kilobyte bank.
Optional Data : None.

---

Command : TW
Description : Withdrawal time from the time bank.
Optional Data : None.
(8.C.12) FILE BASE MENU COMMANDS
(Fx)

———————————————————————————————————————————————————————————————————————

Command : FA
Description : Allows the user to change their selected file
base. If
the file base number (as listed in the file base
editor) is supplied in the optional data field,
Mystic
will automatically change to that file base. If
the
data field is set to "+", Mystic will change to
the
next file base. If the field is set to "-",
Mystic will
change to the previous file base.
Optional Data : <File Base Number> or "+", "-", "nolist"

---

Command : FD
Description : Download a file. This command will prompt the
user for
a filename and allow them to download a file from
the
file database. If they have existing files in
their
file batch queue, they will be prompted to
download the
files in their queue instead.
Optional Data : None.

---

Command : FF
Description : Create a text files list. This command is used to
allow
the user to create and download a text file
containing
a list of files on the BBS system.
Optional Data : </NEW> </ALLGROUPS>

/NEW - Creates a list of only NEW files


rather
then a list of all files.
/ALLGROUPS - Creates a list from all file areas
in all
groups. If this option is not
specified,
Mystic will create a list of files
in the
user's currently selected file
group.

---

Command : FG
Description : Select file group. This command will allow the
user to
select which file group they are in. If the
optional
data field holds a file group number as listed in
the
File Group Editor, the user will be automatically
put
into that File Group if they meet the ACS
requirements.
If "+" is supplied on the field, Mystic will move
the
user into the next available file group. If "-"
is
supplied, Mystic will move the user into the
previous
available file group.
Optional Data : <File Group Number>, "+", "-"

---

Command : FL
Description : List files. This command will list files in the
currently selected file base. If the optional
data
field is left blank, all files will be listed. If
the
optional data file is set to "SEARCH", the user
will
be prompted for a file mask. If a <File Mask> is
supplied, files which match the supplied mask
will be
listed.
Optional Data : "SEARCH" or <File Mask>

Note: File searches can use boolean search strings.


(ie & = AND, | = OR) For example: where&what|how will find
any
file that has where AND what OR how in the filename or
description.

Tip: It could be very cool to setup a file base full of art


packs, and
then create a custom sub-file menu dedicated to art which
you
could then use this command to find for instance all of the
BLADE
packs by specifying BLD*.* etc. Use your imagination :)

---

Command : FN
Description : New file scan. This command will allow the user
to scan
for all files that have been added to the file
database
since the last time they preformed a new file
scan. If
the optional data field is set to "C", only files
in
the current file base will be scanned. If set to
"G",
all bases in the current group will be scanned.
If set
to "A", all files in all groups will be scanned.
If
left blank, the user will be asked if they'd like
to
scan all bases, or just the current base.
Optional Data : "A", "C", "G" or <BLANK>.

---

Command : FP
Description : Set file new scan pointer. This command will
allow the
user to set the date which Mystic will use to
search
for new files.
Optional Data : None.

---

Command : FS
Description : Search for files. This command will allow the
user to
search the file database for a matching search
string.
Optional Data : None.

Note: File searches can use boolean search strings.


(ie & = AND, | = OR) For example: where&what|how will find
any
file that has where AND what OR how in the filename or
description.

---

Command : FU
Description : Upload a file. This command will allow a user to
transfer a file from their computer into the BBS
system's file base.
Optional Data : None.

---

Command : FV
Description : View an archive. This command will allow a user
to view
the contents of any archive in the file base.
Optional Data : None.

---

Command : FZ
Description : Toggle New Scan File Bases. This command will
allow a
user to set which file bases will be scanned when
a
scan for new files is ran.
Optional Data : None.

---

Command : F1
Description : Mass file upload. This command will search the
current
file base's directory for files that haven't been
added
into the file database. When a new file is found,
the
BBS asks how to handle the file:
Upload BLAH.ZIP? (Y)es, (N)o, (A)uto, (S)kip,
(Q)uit:

(Y)es - Adds the file into the file base.


(N)o - Skips the file.
(A)uto - Upload all files in area without
prompting.
(G)lobal - Upload all files in all areas without
prompting.
(S)kip - Skip this base and move on to the next
one.
(Q)uit - Abort mass upload.

Mystic BBS will automatically search for


FILE_ID.DIZ
description files and import them if found. When
no
description file is found, Mystic will prompt for
a
file description unless in Auto mode. *NOTE* This
command should only be made accessible by a
SysOp!
Optional Data : None.

---

Command : F2
Description : File directory editor. This command will bring up
the
file directory editor for the current file base.
Here
each file listed in the directory can be edited
or
deleted. *NOTE* THIS COMMAND SHOULD BE MADE
AVAILABLE
ONLY TO A SYSOP.
Optional Data : None.

Below is a screen shot of the File Directory Editor and under it,
an
explanation of what each option does:

====================================================================
File DIR Editor : 2 of 2

────────────────────────────────────────────────────────────────────
1) hexcalibur01.jpg

────────────────────────────────────────────────────────────────────
2) File Size : 6,125 bytes 3) Uploader : grymmjack
4) File Date : 02/17/02 5) Downloads : 0
6) Status : Normal

────────────────────────────────────────────────────────────────────
!) Description : No Description

────────────────────────────────────────────────────────────────────
([) Previous (]) Next (D) Delete (I) Import DIZ
(U) Update DIZ (M) Move (V) View Archive (E) Email ULer (Q)
Quit:

====================================================================
Note: This screen capture has been truncated for display
purposes.

1) Filename
-----------
This specifies the name of the file in the file database.
On
Windows and linux platforms, this file can be very long.
On
OS/2 and DOS it is limited to 8.3 type filenames.

2) File Size
------------
This specifies the size of the file in the file database
in
bytes.

3) Uploader
-----------
This shows who uploaded the file and who gets credit for
it in
the file listings if Show Uploads is enabled in the file
base.

4) File Date
------------
This is the date the file was uploaded, or created
depending
on how you have your file base setup.
5) Downloads
------------
This tracks how many times the file has been downloaded.
This
is a nice feature so that you can perhaps create a top 10
of
downloaded files using an external programming language
like
c or pascal.

6) Status
---------
This specifies the files status in the file database it
can be
one or all of the following:

F(a)iled, (F)ree, (O)ffline, (U)nvalidated

!) Description
--------------
This is the description of the file. It is automatically
imported when the file is uploaded if the file contains a
FILE_ID.DIZ file within the archive and you have Import
File
ID enabled. You can edit this file manually. The standard
Mystic BBS input hotkeys and editing functions apply.

([) Previous
------------
This will take you to the previous file in the file base
list
for the current file area.

(]) Next
--------
This will take you to the next file in the file base list
for
the current file area.

(D) Delete
----------
This option will allow you to remove the file from the
file
database for this file base, and optionally remove the
file
physically from your hard disk.

(I) Import DIZ


--------------
This option will attempt to re-import the FILE_ID.DIZ
from the
file archive. This option is useful when you are editing
a DIZ
and you screw it up and can't remember what it was
originally.

(U) Update DIZ


--------------
This option will rewrite the FILE_ID.DIZ in the file
archive to
whatever the !) Description is currently set to.

(M) Move
--------
This option will let you move the file from the current
area to
a new area. You will be prompted for a file group if any
exist,
and then a new file area. You can then optionally also
move the
physical file to the new file areas pre-configured
directory.

(V) View Archive


----------------
This option will allow you to view the contents of the
file
archive. This is the exact same behaviour as the user
[V]iew
archive command.

(E) Email ULer


--------------
This option will allow you to send a message straight to
the
uploader of the current file. In this way you can thank
your
buddies for hooking you up with stuff, or yell at users
who
have uploaded virus infected files with ease.

---

Command : F3
Description : File download. This command will allow the SysOp
to
force a user into downloading a file. The
optional data
field is required and holds the full path and
file name
of the file to send. Note that the file specified
in
the optional data field does NOT have to be a
file
which exists in the file database. It can be any
file,
just as long as it exists somewhere on the drive.
Optional Data : <Full path and file name of file to Send>

(8.C.13) FILE BATCH QUEUE MENU COMMANDS


(Qx)

———————————————————————————————————————————————————————————————————————

Command : QA
Description : This command will allow a user to add a file to
their
batch queue.
Optional Data : None.

---

Command : QC
Description : Clear batch queue. This command will remove all
the
files in the user's batch queue.
Optional Data : None.

---

Command : QD
Description : Delete batch queue. This command will allow a
user to
remove a file from their batch queue.
Optional Data : None.

---

Command : QL
Description : List batch queue. This command will allow a user
to
list the files currently in their batch queue.
Optional Data : None.
(8.C.14) MESSAGE BASE MENU COMMANDS
(Mx)

———————————————————————————————————————————————————————————————————————

Command : MA
Description : Select the current message base from a list. If
the
message base number (as listed in the message
base
editor) is supplied in the optional data field,
Mystic
will automatically change to that message base.
If the
data field is set to "+", Mystic will change to
the
next message base. If the data field is "-",
Mystic
will change to the previous message base.
Optional Data : <Message Base Number>, "+", "-", "nolist"

---

Command : MC
Description : Checks for any new electronic mail.
Optional Data : None.

---

Command : MG
Description : Select a message group. This command will allow
the
user to select what group they are in. The
optional
data field can be used to force the user to join
a
certain group if the number of the group (as
listed in
the Message Group Editor) is supplied. If "+" is
supplied, Mystic will change to the next message
group.
If "-" is supplied, Mystic will change to the
previous
message group.
Optional Data : <Group Number>, "+", "-"

---
Command : MD
Description : Set the last read pointers for all message bases
based
on a date. This function allows users to set the
last
read pointers for the message system using a date
as
opposed to having to go through and jump to the
last
message in each base to skip any old content they
don't
want to read.
Optional Data : None.

---

Command : MM
Description : Mass e-mail. Allows SysOps to send e-mail to
multiple
users at once, by three different options:

ACS Level - This will allow the e-mail to be sent


to
all users who pass the given ACS
level.

User List - This will allow a list of users to be


composed, which a copy of the e-mail
will
be sent to.

All Users - This will send the e-mail to all


users
on the BBS system!
Optional Data : None.

---

Command : MN
Description : Scans all message bases for new messages. The
optional
data field can be left blank, or can contain any
of the
following options:

/G : Scans all message bases in all message


groups.

/P : Scans for only personal messages in each


base.
In other words, only messages directed TO
the
user who is scanning will be read. Mystic
will
also scan the electronic mail base when this
command is specified.

/M : Scans only message bases marked as mandatory


scanning.
Optional Data : </P or /M> </G>

---

Command : MP
Description : Posts a message to the currently selected message
base.
Optional Data : </TO:> </SUBJ:> </ADDR:> </F>

/TO:<user_name> - Sets the TO field of the


message.
/SUBJ:<subject> - Sets the SUBJECT field of the
message.
/ADDR:<netaddr> - Sets the netmail address field.
/F - Forces the user to post the
message.

The text supplied with the /TO and /SUBJ options


should
have any spaces replaced by the "_" character. An
example menu command for this might be:

Command : MP
Data : /TO:some_user /SUBJ:hello_there! /F

The above would post a message to "some user"


with the
subject of "hello there!". The user would not be
able
to abort posting this message because the /F
option was
supplied.

---

Command : MR
Description : Reads messages in the currently selected message
base.
The optional data field specifies the read
<MODE>,
which can be any one of the following:
<BLANK> Prompts user to select read mode.
"F" Reads messages forward.
"N" Reads new messages.
"Y" Reads messages sent TO the user.
"S" Text search for messages

Optional Data : <MODE>

---

Command : MS
Description : Allows searching of one or all message bases for
a text
match. The optional data field has three options
available:

C : Prompts the user for search text and searches


the
current message base for matches.

G : Prompts the user for search text and searches


all
message bases in the current group for
matches.

A : Prompts the user for search text and searches


all
message bases in all groups for matches.

This command defaults the the "G" option if no


optional
data is provided.
Optional Data : "C" or "G" or "A"

---

Command : MV
Description : View outbound email.
Optional Data : None.

---

Command : MW
Description : Send electronic mail to another user.
Optional Data : </TO:> </SUBJ:> </ADDR:> </F>
/TO:<user_name> - Sets the TO field of the
message.
/SUBJ:<subject> - Sets the SUBJECT field of the
msg.
/ADDR:<netaddr> - Sets the netmail address field.
/F - Forces the user to post the
message.

The text supplied with the /TO and /SUBJ options


should
have any spaces replaced by the "_" character. An
example menu command for this might be:

Command : MP
Data : /TO:some_user /SUBJ:hello_there! /F

The above would post a message to "some user"


with the
subject of "hello there!". The user would not be
able
to abort posting this message because the /F
option was
supplied.

---

Command : MZ
Description : Allows the user to select which message bases
will be
scanned in their new message scan (menu command
MN).
Optional Data : None.

(8.C.15) MULTINODE MENU COMMANDS


(Nx)

———————————————————————————————————————————————————————————————————————

Command : NA
Description : Set Node Action. This command will set the node
action
which appears when a Who's Online (NW) list is
done.
The Optional Data field is required and holds the
text
that will appear in the "Action" field of a Who's
Online list.
Optional Data : <Action>
---

Command : NC
Description : Multi-node chat. This command will enter the
multi-node
chat teleconference where all users currently
logged in
can talk with each other in real time.
Optional Data : None.

---

Command : NS
Description : Send message to a node. This command will allow a
user
to send a message to another logged in user. The
optional data field can be used to force a
message
sent to a certain node. The node number must be
supplied first followed by a semi-colon and then
the
message text. For example, 2;Hello would send a
message
to node 2 saying Hello. If a zero is used as the
node
number, the message text will be sent to all
users
currently logged in to the BBS system using the
System
Message format. This way it is possible to have
Mystic
inform all users online when a user logs into
another
node, or when a user basically does anything you
wish
everyone to know about.

Two MCI codes can be used to send the user name


and
node number of where the message originated from:

&1 = Name of user where message was sent from


&2 = Node number message was sent from
Optional Data : <Node>;<Text>

---
Command : NW
Description : Who's Online. This command will list all the
users who
are currently logged into the system. It will
also give
a general idea of what they are doing at the time
of
the list, and where they are calling from.
Optional Data : None.

(8.C.16) OFFLINE MAIL (QWK) MENU COMMANDS


(Ox)

———————————————————————————————————————————————————————————————————————

Command : OD
Description : Download a .QWK packet. This command will
compile,
archive and allow a user to download a .QWK
packet.
Optional Data : "/ALLGROUP"

When /ALLGROUP is specified for optional data, it


will
force the generated QWK packet to go through
every
message group. In this manner your QWK users can
also
participate on your message networks.

---

Command : OS
Description : Set QWK scanned bases. This command will allow
the
user to select which message bases are included
in
their .QWK packet.
Optional Data : None.

---

Command : OU
Description : Upload a .REP packet. This command will allow the
user
to upload a .REP packet produced by their offline
mail
reader. After the packet is uploaded, Mystic will
then
add the messages into their appropriate message
bases.
Optional Data : None.

(8.C.17) DOOR MENU COMMANDS


(Dx)

———————————————————————————————————————————————————————————————————————

Command : D-
Description : Door with no dropfile. Shells to the OS and
executes
<command line>.
Optional Data : <Command Line> <MCI CODES>

Door MCI Codes:


---------------

%0 ComPort handle (Win32 and OS/2 versions only)


%1 ComPort
%2 Baud Rate
%3 Node number
%U Users alias

---

Command : DC
Description : Shells to the OS and executes <command line>.
The CHAIN.TXT drop file is created in the node's
temporary directory.
Optional Data : <Command Line> <MCI CODES>

Door MCI Codes:


---------------

%0 ComPort handle (Win32 and OS/2 versions only)


%1 ComPort
%2 Baud Rate
%3 Node number
%U Users alias

---
Command : DD
Description : Shells to the OS and executes <command line>.
The DORINFO1.DEF drop file is created in the
node's
temporary directory.
Optional Data : <Command Line> <MCI CODES>

Door MCI Codes:


---------------

%0 ComPort handle (Win32 and OS/2 versions only)


%1 ComPort
%2 Baud Rate
%3 Node number
%U Users alias

---

Command : DG
Description : Shells to the OS and executes <command line>. The
DOOR.SYS drop file is created in the node's
temporary
directory.
Optional Data : <Command Line> <MCI CODES>

Door MCI Codes:


---------------

%0 ComPort handle (Win32 and OS/2 versions only)


%1 ComPort
%2 Baud Rate
%3 Node number
%U Users alias

---

Command : D3
Description : Shells to the OS and executes <command line>. The
DOOR32.SYS drop file is created in the node's
temporary
directory. This is a special interface to allow
the
mystic telnet server (TSERVER) run DOOR32 based
doors.
Optional Data : <Command Line> <MCI CODES>

Door MCI Codes:


---------------
%0 ComPort handle (Win32 and OS/2 versions only)
%1 ComPort
%2 Baud Rate
%3 Node number
%U Users alias

(8.C.18) MATRIX MENU COMMANDS


(Xx)

———————————————————————————————————————————————————————————————————————

Command : XA
Description : Apply for an account. This menu command allows
the user
to log in as a new user, but then is taken back
to the
Matrix menu where they will not be able to enter
the
BBS without the matrix password.
Optional Data : None.

---

Command : XC
Description : Check for matrix password. This menu command
will
allow the user to check for the matrix password.
If the
user meets the "See Matrix Password" ACS setting
in the
New User Settings, they will be given the matrix
password which will then allow them to log into
the
BBS.
Optional Data : None.

---

Command : XL
Description : Log into the BBS system. This command allows a
user to
log into the BBS system from the Matrix menu.
When this
option is selected, the user will be prompted for
the
Matrix password and will not be able to log in
without
it.
Optional Data : None.

---

Command : XP
Description : Page SysOp for chat from Matrix. This command
works
just like the GP (Page SysOp) command, but is to
be
used from the Matrix login menu.
Optional Data : <same as GP command>

(8.C.19) SYSOP MENU COMMANDS


(*x)

———————————————————————————————————————————————————————————————————————

*NOTE* These commands are for the System Operator (Sysop) only
and
should NOT be made available to anyone except the Sysop.

Command : *#
Description : Menu Editor.
Optional Data : None.

---

Command : *A
Description : System Archive Configuration. This enters the
archive
configuration where all compression utilities are
setup and maintained.
Optional Data : None.

---

Command : *F
Description : File Base Editor.
Optional Data : None.
---

Command : *G
Description : Group Editor.
Optional Data : None

---

Command : *L
Description : Security Level Editor.
Optional Data : None.

---

Command : *M
Description : Message Base Editor.
Optional Data : None.

---

Command : *P
Description : Protocol Editor.
Optional Data : None.

---

Command : *S
Description : System Configuration.
Optional Data : None.

---

Command : *U
Description : User Editor.
Optional Data : None.

---

Command : *V
Description : Voting Booth Editor.
Optional Data : None.
(8.C.20) MISCELLANEOUS MENU COMMANDS
(-x)

———————————————————————————————————————————————————————————————————————

Command : -D
Description : Set user flags. This will allow user flags to be
set
for each user's SECOND set of flags - using the
following format:

<Command><Flag>

<Command> This is the action of the flag. It can


be any one of the following:

+ = Set <FLAG> to ON.


- = Set <FLAG> to OFF.
! = Toggle <FLAG>.

<FLAG> is the flag to toggle. Valid flags are


letters A through Z - all capital letters.

Example data fields:

!A (toggles flag A)
-B (toggles flag B OFF)
+A (toggles flag A ON
!A-E+Y (toggles A, turns E OFF, turns Y ON)

Optional Data : <Command><Flag>

---

Command : -F
Description : Set user flags. This will allow user flags to be
set
for each user's FIRST set of flags - using the
following format:

<Command><Flag>

<Command> This is the action of the flag. It can


be any one of the following:

+ = Set <FLAG> to ON.


- = Set <FLAG> to OFF.
! = Toggle <FLAG>.

<FLAG> is the flag to toggle. Valid flags are


letters A through Z - all capital letters.

Example data fields:

!A (toggles flag A)
-B (toggles flag B OFF)
+A (toggles flag A ON
!A-E+Y (toggles A, turns E OFF, turns Y ON)

Optional Data : <Command><Flag>

---

Command : -N
Description : Prompts user with a Yes/No question and if the
user
answers "Yes", the OK ACS command will be set to
TRUE.
The optional data line is the text that will be
displayed to the user as the Yes/No question.
Optional Data : <TEXT>

---

Command : -P
Description : Prompts user with <TEXT> to input a <PASSWORD>.
If the
user correctly enters the password, the OK ACS
command
will be set to TRUE. The optional data field for
this
command is required. The <TEXT> field is the text
which
prompts the user for the password. The <PASSWORD>
field
is the password that the user must enter.

An example data field for a -P command might be:


|CREnter Password: ;PASSWORD

The above line would prompt the user with "Enter


Password" and check to see if they enter
"PASSWORD",
storing the result in the OK ACS command.

Optional Data : <TEXT>;<PASSWORD>


---

Command : -S
Description : Add line of text into SysOp log file. This
command will
add a line of text into the SysOp log file. The
optional data field holds the text that will be
appended.
Optional Data : <Text to Output>

---

Command : -Y
Description : Prompts user with a Yes/No question and if the
user
answers "Yes", the OK ACS command will be set to
TRUE.
The optional data field is the text that will be
displayed to the user as the Yes/No question.
Optional Data : <TEXT>

.---------------------------------------------------------------.
| |
| (8.D) MPL (MYSTIC PROGRAMMING LANGUAGE) SCRIPTS (*.MPS/*.MPE) |
| |
`---------------------------------------------------------------'

The Mystic Programming Language (referred to as MPL from here on


out)
is an integrated scripting language that enables you to create
totally
kick-ass modifications for your BBS without using any 3rd party
compilers such as C++ or Pascal. The speed at which MPE's execute
is
almost as fast as that of a 3rd party compiled program. Almost
the
entire data set of the BBS system is available to you. And what
isn't
can be made available through using MPL functions that can read
in the
BBS data files directly.

In essence, you have all the power in the world that you may need
to go
beyond the call of duty as a hard-core SysOp.
File Extensions
---------------

The extensions which are associated MPL are as follows:

*.MPS MPL Sourcecode


*.MPE MPL Executable Module

The location of MPL files


-------------------------

By default, Mystic BBS comes setup to use the <BBSDIR>\SCRIPTS


directory for all MPL functions of the system. This means that
all of
your source files and MPE's should be in this directory. You are
free
to change this directory through system configuration paths, but
it's
not really necessary.

The format of MPS files


-----------------------

MPS files or MPL Sourcecode files are standard ASCII text files
and can
be edited with any text editor. There is an IDE that comes with
Mystic
BBS that is a little bit friendlier than a regular old text
editor as
it integrates the ability to compile the sourcecode quickly and
to use
syntax highlighting on the sourcecode itself.

It is possible to use 3rd party editors such as ultra-edit to


achieve
the same functionality. I have created a WORDFILE definition for
MPL
in ultraedit format. If you are interested in this, download it
off of
my BBS (telnet://sector7bbs.com). For me the MIDE is just a
little bit

If you are first starting out with MPL you are encouraged to use
MIDE
as there is a built in help system just like the borland IDEs you
may
have used in the past for Turbo Pascal and C++.

=================================================================
(8.D.1) USING THE MPL IDE (MIDE)

-----------------------------------------------------------------

To use MIDE simply run MIDE [ENTER]. When you are in the program
it's
very easy to use. The function keys for it's main operations are
found
at the top of the screen they are:

F1 - Help
---------
This option loads the MIDE online help system. It's
operation
is described below:

When the help system is initially activated, MIDE will


look at
the word under the cursor in the current edit window. If
the
word is a valid MPL function or procdure, MIDE will
automatically load the context help for that command. If
the
word is not a valid command, or the help system is
activated
without any active edit windows, MIDE will load the main
help
index.

Navigating the help system menus:


---------------------------------
Line up - Up arrow
Line down - Down arrow
Page up - Page up
Page down - Page down
Top of page - Home
Bottom of page - End
Link left - Left arrow
Link right - Right arrow
Previous topic - CTRL + Left arrow
Next topic - CTRL + Right arrow

F2 - Save
---------
This option allows the file being edited in the current
editor
window to be saved to disk. If there are no open edit
windows,
the command is disabled.

F3 - Open
---------
This option allows a new file to be loaded. When
selected, an
Open File box will appear where a file can be loaded,
deleted,
or created. MIDE supports a maximum of 9 files opened at
one
time, limited only by available memory.

F4 - Close
----------
This option closes the file being edited in the current
window.
If there are no open files this option is disabled. When
a file
is closed, MIDE will ask to save the file if any changes
were
made since it was loaded.

F5 - Find
---------
This option seaches for text in the current edit window.
If no
windows are open, this command is disabled.

F6 - Again
----------
This option repeats the previous search command, starting
from
the last matching text.

F8 - Options
------------
This option brings up the MIDE options dialog. It's
settings
are described below:

Syntax Highlighting: Yes / No


-----------------------------
This option can be used to turn off/on MIDE's
syntax
highlighting. When on, certain parts of your code
will
be displayed in different colors, depending on
the type
of code it is.

If you are using a slower computer and editing


code
with MIDE seems sluggish, try turning the syntax
highlighting off and you should see a very
noticable
speed up with screen updates.

Tab Spaces : 1 through 9


------------------------
This option is used to specify the number of
spaces
MIDE will fill when the TAB key is pressed in the
editor. MIDE will also filter out all TAB
characters
while loading a file and replace them with the
specified number of spaces. This insures your
source
looks good to everyone!

F9 - Compile
------------
This option will compile the source code in the current
window
into a Mystic BBS Programming Executable, or MPE. If an
error
occurs during compilation, MIDE will abort the compile,
report
the error, and attempt to locate the cursor the exact
line
where the error has occured.

Cursor movement commands:


-------------------------
Character left - Left arrow
Character right - Right arrow
Line up - Up arrow
Line down - Down arrow
Page up - Page up
Page down - Page down
Start of line - Home
End of line - End
Tab Spacing - Tab

Text editing commands:


----------------------
Delete line - CTRL+Y
Delete character - Delete
Erase character - Backspace

Block text editing commands:


----------------------------
Lines of text can be cut, copied, deleted, and pasted
into
other areas. A block of text can be defined by holding
down the
SHIFT while using the up and down arrow keys to highlight
text.
When the SHIFT key is let up, MIDE will give four
options:

Unmark - Unmark text and abort functions

Copy - Copy the text block into the clipboard,


leaving
the mark text untouched

Cut - Copy the text block into the clipboard,


deleting
the mark block of text

Delete - Delete the marked block of text without


copying text
into the clipboard

Text that has been entered into the clipboard can be


cleared or
pasted at any time using the ALT+C (to clear) and ALT+P
(to paste) commands.

=================================================================

(8.D.2) USING THE MPL COMPILER (MPLC)

-----------------------------------------------------------------

MPLC is the Mystic Programming Language command line compiler,


used for
compiling MPL source files (.MPS) from the command line. The
syntax for
using MPLC is as follows:

MPLC [source file mask].MPS

The source file mask can be any file name or any wildcard
file
name. The file extention is not required, MPLC will
automatically append .MPS to the source mask.

Examples of using MPLC:

MPLC MPSDEMO - Compiles the source file MPSDEMO.MPS


MPLC * - Compiles all .MPS files in a
directory
MPLC "*" - (Linux) Compiles all the source in a
dir.
=================================================================

(8.D.3) INTRODUCTION TO MPL

-----------------------------------------------------------------

The syntax of the Mystic BBS Programming Language follows closely


to
that of the Turbo Pascal series of programming compilers. At one
time,
the language was almost 100% Turbo Pascal compatible (except for
the
BBS functions) but it has been slightly changed to make it a
little
more friendly to the programmer.

Two versions of the programming compiler are available in the


scripts
directory. The first one, MIDE, is a fully functional IDE for
creating
and compiling MPE programs. This program looks similar to the
Turbo
Pascal IDE, including syntax highlighting of all command
keywords! The
second version of the compiler is MPLC. This is a command line
compiler
supplied so you are not forced to use MIDE to write programs. If
you do
not find the MIDE interface to be satisfactory, then you can use
your
favorite text editor and MPLC to create programs!

=================================================================

(8.D.4) SOURCECODE COMMENTS

-----------------------------------------------------------------

All text after a number sign (#) is considered a comment. It will


be
ignored until the next line of code.

For example:

# This is a comment too!


WriteLn ('Hello There') # This is a comment and will be
ignored.
=================================================================

(8.D.5) OPERATION TYPES AND PRECEDENCE

-----------------------------------------------------------------

The MPL does not follow the order of operations when doing
mathmatical
equations (ie PEMDAS - parenthesis, exponents, multiplication,
division, addition, subtraction). So math functions are done in
the
order that they appear in the expression.

This doesn't mean its not POSSIBLE to do PEMDAS-ordered


expressions, it
will just take a little more effort on the programmer's behalf.

The following operation codes are supported for mathmatical


equations:

- Subtract
+ Addition
* Multiplication
/ Division
MOD Modulus Operator

=================================================================

(8.D.6) DEFINING VARIABLES

-----------------------------------------------------------------

The purpose for variables in an MPL module is to assign memory


space to
different bits of data you employ in your program. When you
declare a
variable you automatically set aside a set amount of space for
that
variable. Depending on the type of variable the space required to
store
the data in that type varies. MPL supports all the standard
variable
types found in other languages EXCEPT floating point types.

All variables are global to all of the program, including


procedures.
The syntax for declaring a variable follows:

Var <VarName> <VarType>

Examples:
var dummy byte
var str string

var
dummy byte,
str string

The following variable types are supported:

Type Format Range


--------------- -------------- --------------------------------
Boolean FALSE/TRUE 0..1
Char Text 1 character
String Text Sequence of 1..255 characters
Byte Numerical 0..255
Integer Numerical -32767..32767
Word Numerical 0..65535
LongInt Numerical -2147483648..214748364

Arrays allow you to organize your variable data into logical


groups.
They are a very powerful construct and should be taken advantage
of
when you are ready to use them.

ARRAY variables are supported. The syntax for declaring an array


variable is:

Var <VarName <VarType> ARRAY(<Low>..<High>)

Examples:

Var Dummy Byte Array(1..10)


Var Str String Array(5..10)

=================================================================

(8.D.7) DEFINING CONSTANTS

-----------------------------------------------------------------

The purpose of a CONSTANT variable is to define the variable once


and
forget about it. Constant variables cannot be modified later on
in the
program after they are declared. It is common to use constant
variables
for things like version information or hard-coded settings you
use to
configure the script later in the sourcecode.
The syntax for a constant variable is as follows:

String constants:
Const
SomeStr = 'Hello World!'

Numerical constants:
Const
SomeNum = 69

Constant variables, like regular variables, can be separated with


a
comma:

Const
SomeNum = 69,
SomeStr = 'Hello World!'

=================================================================

(8.D.8) DEFINING PROCEDURES

-----------------------------------------------------------------

The purpose of a procedure is to isolate logical parts of an MPL


module
into smaller parts so that they can be called by other
procedures. In
this manner, you build your entire MPL using procedural based
coding,
which really afford you lots of flexibility when it comes time to
write
another MPL module because you can reuse your existing
procedures.

Note: A procedure does NOT return any values. Only functions


return
values!

The syntax for defining a procedure is as follows:

Procedure <Proc Name> (<varname vartype>, <varname vartype>)


<Code here>
PEnd

IE:

Procedure Hello_World
WriteLn ('Hello World')
Pend

OR:

Procedure SomeProc (Str String, A Byte)


WriteLn ('Str = ' + Str)
WriteLn ('A = ' + A)
Pend

OR:

Procedure SomeProc (Str String)


Var
Str2 String,
Str3 String
Begin
WriteLn (Str)
Pend

=================================================================

(8.D.9) DEFINING FUNCTIONS

-----------------------------------------------------------------

The purpose for functions in MPL is to isolate blocks of code


which can
operate on variables and other data in the rest of your MPL
module. The
function statement allows you to create one single block of code
that
can be called over and over without having to rewrite it each
time you
need it.

Note: Unlike Procedures, Functions can return values!

The syntax for defining a function is as follows:

Function <Function Name> (<varname vartype>) : <result type>

IE:

Function AddTen (Num Byte) : Byte


Begin
AddTen := Num + 10
Pend

=================================================================
(8.D.10) FOR LOOPS (FOR/FEND)

-----------------------------------------------------------------

The purpose of a FOR loop is to execute a block of code for each


of
the iterations a for loop goes through. The FOR loop will go
through
each of it's defined iterations before exiting to the rest of the
program code.

The syntax for a for loop is as follows:

For <variable> := <start number> <TO> or <DOWNTO> <end number>.


Note: ALL FOR loops must end with the FEND command.

For A := 1 to 10
WriteLn (A)
FEnd

This would output:

1
2
3
4
5
6
7
8
9
10

For A := 10 DownTo 1
WriteLn (A)
Fend

This would output:

10
9
8
7
6
5
4
3
2
1
=================================================================

(8.D.11) REPEAT LOOPS (REPEAT/UNTIL)

-----------------------------------------------------------------

The purpose of a REPEAT loop is to execute a block of code until


a
certain condition is met. When the condition is met, execution
then
continues to the statements following the repeat loop.

The syntax for a repeat until loop is as follows:

Repeat
<Code here>
Until <Boolean Expression>

IE:

Repeat
WriteLn ('Blah blah')
Until A > 0 or A = 5

The difference between a REPEAT loop and a WHILE loop is that the
condition in a REPEAT loop is tested AFTER each iteration of the
loop.

=================================================================

(8.D.12) WHILE LOOPS (WHILE/WEND)

-----------------------------------------------------------------

The purpose of a WHILE loop is to execute a block of code


continually
until a condition is met, at which point execution continues to
the next statement following the while loop.

The difference between a WHILE loop and a REPEAT loop is that the
condition in a WHILE loop is tested BEFORE entering an iteration
of the
loop.

The syntax for a while/wend loop is as follows:

While <Boolean Expression>


<Code Here>
WEND

IE:
While A > 0 and A = 5
WriteLn ('Blah')
WEnd

=================================================================

(8.D.13) IF STATEMENTS (IF/ELSE/ENDIF)

-----------------------------------------------------------------
The purpose of the IF statement is to execute a block of code if
a
condition is is met. The purpose of the ELSEIF statement is to
stay in
the body of the IF statement and check for alternative conditions
to
be met. The purpose of the ELSE statement is to execute a block
of code
if the condition is NOT met. The purpose of an ENDIF statement is
to
terminate the IF statement proper.

The syntax of an if/else/endif statement:

If <boolean statement>
<True code here>
ElseIf <boolean statement> # (optional)
<True code here>
Else # (optional)
<False code here>
EndIf

Note: ALL if statements must have an ENDIF or you will get an


error.

The ELSE / ELSEIF statements are optional. For example:

If Not Eof(1)
WriteLn ('We''re not at the end of the file.')
EndIf

The above example is the same as the following example, except


we've added an else statement:

If Eof(1) = False Then


WriteLn ('We''re not at the end of the file.')
Else
WriteLn ('This is the end of the file.')
EndIf
The ELSEIF statement can be used to do more complex
evaluations which can be used in place of a SWITCH statement:

If A = 1 Then
WriteLn ('A is 1')
ElseIf A = 2
WriteLn ('A is 2')
ElseIf A = 5
WriteLn ('A is 5')
Else
WriteLn ('A is not 1, 2, or 5...')
EndIf

=================================================================

(8.D.14) #INCLUDE Directive

-----------------------------------------------------------------
Source files can be included within other source files using a
variation of the comment system. This can be useful for creating
a
library of common procedures or to split up a large projects into
more
organized smaller files. The syntax for include files is as
follows:

#include [filename]

Example:

#include common.mps

Begin
End

In the above example, any variables and procedures found within


the
common.mps file will be included into the current source tree as
if it
were all a single file.

=================================================================

(8.D.15) USES Statement

-----------------------------------------------------------------

The USES command declares that a certain "group" of predefined


MPE
variables and functions will be used in your program. It should
be
declared at the top of your program, before any other code, and
must
contain one of the valid modules:

Syntax: USES [one of the module types listed below]

CFG - Allow use of Configuration variables and


commands
DIR - Allow use of Directory reading variables and
commands
FBASE - Allow use of File Base variables and commands
FGROUP - Allow use of File Group variables and commands
MBASE - Allow use of Message Base variables and commands
MGROUP - Allow use of Message Group variables and
commands
USER - Allow use of User Base variables and commands

Example:
Uses USER

Begin
GetThisUser
WriteLn ('Welcome to this program ' + UserHandle)
End

=================================================================

(8.D.16) STRING AND INTEGER FUNCTIONS

-----------------------------------------------------------------

CHR - Converts a byte value to a char value


COPY - Copies part of a string value
DELETE - Delete part of a string value
INSERT - Insert into a string value
INT2STR - Convert integer value to a string
LENGTH - Returns the length of a string value
LOWER - Converts a string to lower case letters
MCI2STR - Converts an MCI code value to a string
ODD - Returns TRUE if integer is an odd number
ORD - Converts a char value into a byte
PADCT - Pads a string value to the center
PADLT - Pads a string value to the left
PADRT - Pads a string value to the right
POS - Searches for a substring in a string
STR2INT - Converts a string to an integer value
STRIPMCI - Strips MCI codes from a string
STRREP - Repeats a character into string
UPPER - Converts a string to upper case letters
CHR [STRING AND INTEGER
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function Chr (B Byte) : Char

Description:

The CHR function takes a numerical byte value and returns


its
corresponding ASCII character. In other words, CHR(13)
would
return ASCII character #13.

Example:
Var Count Byte

For Count := 32 to 126


Write (Chr(Count))
Fend

COPY [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function Copy (Str String, Index Byte, Count Byte) :
String

Description:
Copy returns a string containing "Count" number of
characters of
string "Str", starting an the "Index" character.

Example:
Var Str String
Str := 'Mystic BBS'
Str := Copy(Str, 1, 6)
WriteLn (Str)

The above example will copy the first 6 letters of string


STR,
starting at the first character. In this case, it will
return
"Mystic" and store the result into the STR variable.
DELETE [STRING AND INTEGER
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure DELETE (Str String, Index Byte, Count Byte)

Description:

This procedure will delete a defined portion of a string


variable.

Example:

Var Str String


Str := 'Hello World'
Delete (Str, 6, 6);
WriteLn (Str)

This example will delete 6 characters from the string Str


starting at the 6th character. The resulting output from
WriteLn will be "Hello"

INSERT [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure INSERT (Source String, Str String, Index Byte)

Description:
Insert takes a string and inserts its contents into
another
string starting a Index.

Example:
Var
Str String
Begin
Str := 'Mystic v1.07'
Insert ('BBS', Str, 8)
End

The above example takes the text of the STR variable and
inserts the text "BBS" into it at position 8. The
resulting
output would be "Mystic BBS v1.07".

INT2STR [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function INT2STR (Number LongInt) : String

Description:
Int2Str takes a numerical value or variable and converts
it
into a string variable or value.

Example:
Var
Number Byte
Begin
Number := 10
WriteLn ('The value of number is: ' +
Int2Str(Number))
End

The above example uses Int2Str to convert the value of


Number
to a string so it can be written to the screen with the
WriteLn
procedure.

LENGTH [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function LENGTH (Str String) : Byte

Description:

The Length function will take a string value and return


its
length in characters.

Example:
WriteLn ('Hello World!')
WriteLn (Length('Hello World!'))

The above example prints the text "Hello World!" to the


screen,
then uses the Length function to print the length in
characters
of "Hello World!" to the screen.

LOWER [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function LOWER (Str String) : String

Description:
The Lower function takes a string value and converts it
to
all lowercased letters.

Example:
WriteLn (Lower('HELLO WORLD!'))

The above example uses the lower function to convert the


HELLO
WORLD! text to lower cased letters. The resulting output
to the
screen would be "hello world!"

MCI2STR [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function MCI2STR (Str String) : String

Description:
This function takes an MCI code and converts the value of
the
code to a string variable.

Example:
Var
MyVar String
Begin
MyVar := MCI2STR('|UN')
WriteLn(MyVar)
End

The above example would then place the users name into
the
variable MyVar, adn then print the result using WriteLn
as
<User Name>

ODD [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function ODD (Number LongInt) : Boolean

Description:
Returns TRUE if the supplied number is an ODD number

Example:
If Odd(3) Then
WriteLn ('The number 3 is ODD')
Else
WriteLn ('The number 3 is NOT ODD')
EndIf

ORD [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function ORD (Ch Char) : Byte

Description:
Converts a Char variable into its corresponding ASCII
value

Example:
WriteLn ('The ASCII value of "A" is: ' +
Int2Str(Ord('A')))

The above example uses the ORD function to convert the


'A'
characterto its ASCII value, then uses Int2Str to convert
the
ASCII value into a string so it can be printed to the
screen.

PADCT [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function PADCT (Str String, Size Byte, Ch Char) : String

Description:
PADCT takes a string value and pads it to the center with
the
specified character. The Size parameter specifies the
length
of the padded string.

Example:
Var
Str String
Begin
Str := PadCT('Hello', 40, '*')
WriteLn(Str)
End

The above example uses the PadCT function to center the


text
"Hello" into a string of 40 characters in length, using
the '*'
character to fill the empty spaces. The result would be:

*****************Hello******************

PADLT [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function PADLT (Str String, Size Byte, Ch Char) : String

Description:
PADLT takes a string value and pads it to the left with
the
specified character. The Size parameter specifies the
length
of the padded string.
Example:
Var
Str String
Begin
Str := PadLT('Hello', 40, '*')
WriteLn(Str)
End

The above example uses the PadLT function to pad the text
"Hello" to the left. The result is a string of 40
characters in
length, using the '*' character to fill the empty spaces.
The
result would be:

***********************************Hello

PADRT [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function PADRT (Str String, Size Byte, Ch Char) : String

Description:
PADRT takes a string value and pads it to the right with
the
specified character. The Size parameter specifies the
length
of the padded string.

Example:
Var
Str String
Begin
Str := PadRT('Hello', 40, '*')
WriteLn(Str)
End

The above example uses the PadRT function to pad the text
"Hello" to the right. The result is a string of 40
characters
in length, using the '*' character to fill the empty
spaces.
The result would be:

Hello***********************************
POS [STRING AND INTEGER
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function POS (SubStr String, Str String) : Byte

Description:
This function returns the starting position of a
substring
within a string. If the substring does not exist in the
string, POS returns 0.

Example:
Var A Byte
A := POS('World', 'Hello World')
WriteLn (A)

The above example uses the POS code to find out the
position of
"World" in the string "Hello World". The result is then
printed
on the screen, which would be "7".

STR2INT [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function STR2INT (Str String) : LongInt

Description:
Str2Int takes a string value or variable and converts it
into a numeric variable or value.

Example:
Var
Str String
Num Byte
Begin
Str := '10'
Num := Str2Int(Str)
WriteLn ('The value of num is: ' + Int2Str(Num))
End

The above example uses Str2Int to convert the string


variable
Str into a number. Int2Str is then used to convert the
Num
variable back into a string to be printed on the screen
with
the WriteLn command. The resulting output would be:

The value of num is: 10

STRIPMCI [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function StripMCI (Str String) : String

Description:
The StripMCI function strips valid MCI codes from a
string.

Example:
WriteLn (StripMCI('|CRHello World!'))

The above example uses the StripMCI function to remove


MCI
codes from the string. The resulting output would be:

Hello World!

STRREP [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function STRREP (Ch Char, Len Byte) : String

Description:
The StrRep function takes a character and returns a
string
of that character Len characters long.

Example:

WriteLn (StrRep('!', 20))

The above example uses the StrRep function to create a


string
20 characters in length of the '!' character. The
resulting
output would be:

!!!!!!!!!!!!!!!!!!!!

UPPER [STRING AND INTEGER


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function UPPER (Str String) : String

Description:
The Upper function takes a string value and converts it
to
all uppercased letters.

Example:
WriteLn (Upper('hello world!'))

The above example uses the upper function to convert the


hello
world! text to uppercased letters. The resulting output
to the
screen would be "HELLO WORLD!"

=================================================================

(8.D.17) DISK ACCESS FUNCTIONS

-----------------------------------------------------------------

DOSERROR - Returns the current DOS error


EOF - Returns TRUE if at end of file
FCLOSE - Closes an opened file
FCOPY - Copies a file from one location to another
FERASE - Erases a file from the disk
FEXIST - Returns TRUE if a file exists
FILEPOS - Returns the current position of a file
FILESIZE - Returns the total size of an open file
FINDCLOSE - Closes a search for files on disk
FINDFIRST - Starts a search for files on disk
FINDNEXT - Continues a search for files on disk
FOPEN - Opens a file for reading/writing
FREAD - Reads data from an opened file
FREADLN - Reads a line of text from an opened text file
FREADREC - Reads data from a Pascal-style record file
FSEEK - Seeks to a position in a binary file
FWRITE - Writes data to a binary file
FWRITELN - Writes a line of text to a text file
FWRITEREC - Writes data to a Pascal-style record file

DOSERROR [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function DOSERROR : Byte

Description:
This function returns the current DosError and is used
with the
FindFirst and FindNext functions. The possible values
which may
be returned by DosError are as follows:

Value Meaning
----- ---------------------
0 No error
2 File not found
3 Path not found
5 Access denied
6 Invalid handle
8 Not enough memory
10 Invalid environment
11 Invalid format
18 No more files
----- ---------------------

Example:
FindFirst ('*.*', AnyFile)
While DosError = 0
WriteLn ('File Name: ' + DirName)
FindNext
Wend
FindClose

The above example will list all files in the current


directory.
The DosError function is used to return when there are no
more
files to be listed. For more information on this see the
reference for the FindFirst and FindNext functions.
EOF [DISK ACCESS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function EOF (FileNum Byte) : Boolean

Description:
This function will return true if the file position of an
opened file is at the End Of the File (EOF). The passed
Handle
value is the file number of the already opened file.

Example:
Var Str String
FOpen (1, Text, Reset, 'BLAH.TXT')
While Not Eof(1)
FReadLn (1, Str)
WriteLn (Str)
Wend
FClose (1)

The above example will open a text file under the


filename of
BLAH.TXT. The WHILE loop is used to repeat the code until
the
EOF (end of file) is reached. The FCLOSE statement will
close
the file after it is done being accessed.

FCLOSE [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FCLOSE (FileNum Byte)

Description:
This procedure closes an already opened file. The passed
Handle
value is the file number of the opened file. All files
which
are opened MUST be closed after they are not being
accessed any
more.

Example:
fOpen(1, Text, ReWrite, 'BLAH.TXT')
<Code to access file goes here>
fClose (1)

The above example opens a file using the FOPEN procedure.


When
the file has been opened successfully, it can be accessed
in
various ways using the file I/O functions. Afterwards, it
MUST
be closed using the FCLOSE procedure as shown above.

FCOPY [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function FCOPY (Source String, Dest String) : Boolean

Description:
This function will copy a file from the specified source
location to the specified destination location. The
function
will return as TRUE if the file was copied successfully,
or
FALSE if an error occured. Note: The file which is being
copied
should not already be opened for File I/O by the program.

Example:
Write ('Copying C:\HELLO.TXT -> D:\HELLO.TXT: ')
If fCopy ('C:\HELLO.TXT', 'D:\HELLO.TXT') Then
WriteLn ('OK')
Else
WriteLn ('ERROR')
EndIf

The above example will attempt to copy the file


"C:\HELLO.TXT"
to the destination of "D:\HELLO.TXT". If the file is
copied
without any problems an "OK" will be printed to the
screen. If
an error occured while copying, "ERROR" will be printed
to the
screen.
FERASE [DISK ACCESS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FERASE (FileName String)

Description:
This procedure is used to erase an existing file from the
disk.
The FileName variable is a string variable which contains
the
file name which is to be erased. The result of the FERASE
procedure can be checked by checking the DOSERROR
function.
DOSERROR will return a 0 if successful or a 2 if an error
occured.

Example:
FErase ('C:\HELLO.TXT')

The above example will erase the file "C:\HELLO.TXT" if


it
exists.

FEXIST [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function FEXIST (FileName String) : Boolean

Description:
The above function will check to see if a file exists,
and
return TRUE if it does. The passed FileName string if the
path
and file name of the file to check. This file should not
already be opened with the FOPEN procedure.

Example:
If FExist('BLAH.TXT') Then
WriteLn ('BLAH.TXT exists.')
Else
WriteLn ('BLAH.TXT does NOT exist.')
EndIf

The above example will check to see if the file


"BLAH.TXT"
exists and if it does, will output "BLAH.TXT exists" to
the
screen. If BLAH.TXT does NOT exist, the output will be
"BLAH.TXT does NOT exist".

FILEPOS [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function FILEPOS (Handle) : LongInt

Description:
This function returns the current file position of an
opened
file. The passed Handle is the file handle number used
when the
file was opened. The FilePos function only works for
files that
are opened as Binary, since Text files are read line by
line.

Example:
fOpen (1, Bin, Reset, 'TEST.DAT')
If FilePos(1) = FileSize(1)
WriteLn ('END OF FILE.')
EndIf
fClose (1)

FILESIZE [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function FILESIZE (Handle) : LongInt

Description:
This function returns the total file size of an opened
file. The
passed Handle is the file handle number used when the
file was
opened. This function only works with files that have
been
opened as Binary since Text files are read line by line.

Example:
fOpen (1, Bin, Reset, 'TEST.DAT')
WriteLn ('File is ' + Int2Str(FileSize(1)) + ' bytes in
size.
fClose (1)

The above example opens the file "TEST.DAT", writes the


size of
the file to the screen, and then closes the file.

FINDCLOSE [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FINDCLOSE

Description:
This function is used along with the FindFirst and
FindNext
functions. It is called only after all "Find" procedures
have
completed. See the "FindFirst" and "FindNext" command
references for more information.

Example:
See example in FINDFIRST

FINDFIRST [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FINDFIRST (Mask String, Attributes)

Description:
This function is used to search a drive for files using a
supplied file mask and attribute list. The results of the
search are held in the DIR variables as listed below.

Mask : The mask variable must contain at least a file


mask
(ie "*.*") but can also contain a drive and
directory
name as well (ie "C:\MYSTIC\TEXT\*.*").
Attributes : The file attributes are used to specify what
type
of files to return in the DIR variables. The
following is a list of supported file
attributes:

Attribute Description
----------- -------------------------
ReadOnly Return files marked as "read only".
Hidden Return files marked as "hidden".
SysFile Return files marked as "system files".
VolumeID Return files marked as "volume ID".
Directory Return files marked as "directory".
Archive Return files marked as "archive".
AnyFile Returns any and all files.

These attributes can be combined when passed to


FindFirst.
For example: READONLY + HIDDEN will returns any files
which
have been marked as "readonly" OR "hidden".
Example: DIRECTORY will only return names of directories.

DIR Variables : The DIR variables are what contain the


information returned by the FindFirst
command.
If your program is going to use these
variables, it must be declare it with the
USES
statement at the beginning of your
program
source code. The following DIR variables
are
supported:

DirName : Holds the file name.


DirSize : Holds the file size.
DirTime : Holds the file date and time in packed date
format.
The DateSTR and TimeSTR functions will need to
be
used in order to display these.
Example:
USES DIR

WriteLn ('The following files are in the C:\ directory:')


WriteLn ('')

FindFirst ('C:\*.*', ReadOnly + Archive)


While DosError = 0
WriteLn ('File Name: ', DirName)
WriteLn (' Size: ', DirSize)
WriteLn (' Date: ', DateSTR(DirTime),
0)
WriteLn (' Time: ', TimeSTR(DirTime),
1)
Write ('Press a key to search for
more.~PN')
FindNext
Wend
FindClose
WriteLn ('No more files have been found.')

The above example will list all files which fit the file
mask
of "C:\*.*" and fit the attributes of either ReadOnly or
Archive. The DOSERROR function is used to determine when
there
are no more files found (See the DOSERROR reference). If
a file
has been found, it will then be printed to the screen
using the
DIR variables. The FindNext functon is used to find the
next
file that matches the name and attributes specified in
the
earlier call to FindFirst. FindClose is used when all
"Find"
functions have been completed.

FINDNEXT [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FINDNEXT

Description:
This procedure is used to find the next file which
matches the
filemask and attributes specified in the last call to
FindFirst.

Example:
See example in FINDFIRST

FOPEN [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FOPEN (Handle: Byte, fType, oType, Name:
String)

Description:
This procedure opens a text or binary file for file
operations.

Handle : The passed Handle value is the file handle


number and
must be a value between 1 to 10 (MPL allows up
to 10
files opened at one time).

fType : This is the type of file being opened. It must


be
either "Text" for a text file, or "Bin" for a
binary
file.

oType : This specifies how MPL will open the file. The
following open types are supported:
RESET : This will open an already existing file at
the
beginning of the file.
REWRITE : This will erase an existing file and recreate
it,
leaving the file position at the beginning of
the
file. If the file does not already exist, MPL
will
create the file.
APPEND : This will open an already existing file at
the end
of the file.

Name : This specifies the path and filename to open.

Example:
fOpen(1, Text, ReWrite, 'BLAH.TXT')
fWriteLn (1, 'Hello World!')
fClose(1)

The above example creates a text file under the name


'BLAH.TXT'. If BLAH.TXT already exists, it will be erased
and
replaced by a new BLAH.TXT file. The FWriteLn writes the
text
"Hello World" to the file, and then FClose closes the
file.
FREAD [DISK ACCESS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FREAD (FileNum Byte, Variable, Size)

Description:
This procedure reads SIZE number of bytes from an opened
data
file, storing the result in the VARIABLE variable.

Example:
Var Str String
fOpen(1, Bin, Reset, 'SOMEFILE.DAT')
fRead(1, Str, 40)
fClose(1)

The above example opens the binary file "SOMEFILE.DAT",


and
reads 40 bytes into the STR variable. The file is then
closed.

FREADLN [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FREADLN (FileNum Byte, Variable)

Description:
This procedure reads a single line of text from a text
file
and stores the result into a variable. This procedure can
only be used on files opened as text files.

Example:
Var Str String
fOpen (1, Text, Reset, 'C:\MYSTIC\MYSTIC.DOC')
While Not Eof(1)
fReadLn (1, Str)
WriteLn (Str)
Wend
fClose (1)

The above example opens the file "MYSTIC.DOC" in text


mode and
then reads the file line by line, displaying it to the
screen,
until the end of file is reached. The file is then
closed.

FREADREC [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FREADREC (FileNum Byte, Variable, <Length>)

Description:
This procedure reads a variable from a binary file,
following
the style of data storage used by Pascal compilers. When
reading a non-string variable, the format is:

fReadRec (FileNum, VariableName)

When using a string variable a third parameter must be


passed,
which is the maximum length of the string:

fReadRec (FileNum, StringVar, StringMaxLength)

Pascal stores its string variables differently than some


other
compilers. It uses the first byte to store the actual
length
of the string, followed by the string data itself padded
to the
maximum string length. So a string written to a file
would
store like this:

<actual string length><string data >

This is really only useful to know when calculating a


record
size, since if a string of length 30 was written to the
data
file, it would actually take of 31 bytes of data, after
counting the lead byte which determines the actual
length.

So, in Pascal, a record like this:

Type
SomeRec = Record
SomeByte : Byte; # 1 byte
SomeWord : Word; # 2 bytes
SomeStr : String[30]; # 31 bytes
# (str size +
1)
End

Would actually have a record size of 34, rather than the


33
bytes that are typed in the record.

Example:
(Assuming a TEST.DAT file already exists with data in it)
Var
SomeByte Byte,
SomeWord Word,
SomeString String
Begin
fOpen (1, Bin, Reset, 'TEST.DAT')
fReadRec (1, SomeByte)
fReadRec (1, SomeWord)
fReadRec (1, SomeString, 30)
fClose (1)
End

The above example would open the TEST.DAT file, which we


assume
already has records saved to the file. It will then read
the
equivalent of SomeRec (shown above), as it would have
been
saved using a Pascal program.

FSEEK [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FSEEK (FileNum Byte, Position LongInt)

Description:
The FSEEK procedure will seek to a current byte position
in a
file opened as binary.

Example:
fOpen (1, Bin, Reset, 'TEST.DAT')
fSeek (1, 34)

The above example will open a file called 'TEST.DAT' in


binary
mode, and then seek to the 34th byte in the file using
the
FSEEK procedure.

FWRITE [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FWRITE (FileNum Byte, Variable, Size)

Description:
This procedure writes SIZE number of bytes to an opened
data
file, with the data contained in the VARIABLE.

Example:
Var Str String
fOpen (1, Bin, Reset, 'SOMEFILE.DAT')
fWrite (1, Str, 40)
fClose (1)

The above example opens the binary file "SOMEFILE.DAT",


and
writes 40 bytes into the file. The file is then closed
with
the FCLOSE command.

FWRITELN [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FWRITELN (FileNum Byte, Variable)

Description:
This procedure writes a string to an opened data file,
and
appends the string with a newline character/linefeed.

Example:
Var Str String
Str := 'Line of text'
fOpen (1, Text, Reset, 'SOMEFILE.DAT')
fWriteln(1, Str)
fClose (1)
The above example opens a text file "SOMEFILE.DAT" and
writes
the value of Str ("Line of text") and then appends the
line
with a newline character/linefeed. The file is then
closed with
the FCLOSE command.

FWRITEREC [DISK ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure FWRITEREC (FileNum Byte, Variable, <Length>)

Description:
This procedure writes a variable to a binary file,
following
the style of data storage used by Pascal compilers. When
writing a non-string variable, the format is:

fWriteRec (FileNum, VariableName)

When using a string variable a third parameter must be


passed,
which is the maximum length of the string:

fWriteRec (FileNum, StringVar, StringMaxLength)

Pascal stores its string variables differently than some


other
compilers. It uses the first byte to store the actual
length
of the string, followed by the string data itself padded
to the
maximum string length. So a string written to a file
would
store like this:

<actual string length><string data >

This is really only useful to know when calculating a


record
size, since if a string of length 30 was written to the
data
file, it would actually take of 31 bytes of data, after
counting the lead byte which determines the actual
length.
So, in Pascal, a record like this:

Type
SomeRec = Record
SomeByte : Byte; # 1 byte
SomeWord : Word; # 2 bytes
SomeStr : String[30]; # 31 bytes
# (str size +
1)
End

Would actually have a record size of 34, rather than the


33
bytes that are typed in the record.

Example:
(Assuming a TEST.DAT file already exists with data in it)
Var
SomeByte Byte,
SomeWord Word,
SomeString String
Begin
SomeByte := 0
SomeWord := 13000
SomeString := 'Woot!'
fOpen (1, Bin, Reset, 'TEST.DAT')
fWriteRec (1, SomeByte)
fWriteRec (1, SomeWord)
fWriteRec (1, SomeString, 30)
fClose (1)
End

The above example would open the TEST.DAT file, which we


assume
already has records saved to the file. It will then
overwrite
the first record equivalent of SomeRec (shown above), as
it
would have been saved using a Pascal program.

=================================================================

(8.D.18) DATE AND TIME FUNCTIONS

-----------------------------------------------------------------

DATESTR - Converts a date/time stamp to a string date


DATETIME - Returns the current date/time stamp
TIMER - Returns the number of seconds since midnight
TIMESTR - Converts a date/time stamp to a string time
DATESTR [DATE AND TIME
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function DATESTR (DT LongInt, Format Byte) : String

Description:
This function will take a packed datetime number and
convert it
to a date string. The Format parameter is used to set the
format of the date which is returned. Valid types are:

0 = Returns date in format that the user has set.


1 = Returns date in format: MM/DD/YY
2 = Returns date in format: DD/MM/YY
3 = Returns date in format: YY/DD/MM

Example:
GetThisUser
WriteLn ('Welcome. You last called on ' +
DateStr(UserLast))

The above example loads the currently logged in user's


information into the USER variables using GETTHISUSER,
then
displays the last time the user has called to the screen
using
the DATESTR procedure.

DATETIME [DATE AND TIME


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function DATETIME : LongInt

Description:
This function returns the current Date and Time in the
packed
format. DATESTR and TIMESTR can be used to convert this
value
into strings.

Example:
WriteLn ('Current Date: ' + DateStr(DateTime, 0))
WriteLn ('Current Time: ' + TimeStr(DateTime, 1))

The above example outputs the current date and time to


the
screen using the DATESTR and TIMESTR functions. The
DateTime
function which is passed to DATESTR and TIMESTR, contains
the
current date and time in the packed format.

TIMER [DATE AND TIME


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function TIMER : LongInt

Description:
This function returns the number of seconds which have
passed
since midnight.

Example:
WriteLn ('Seconds since midnight: ' + Int2Str(Timer))

TIMESTR [DATE AND TIME


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function TIMESTR (DT LongInt, Format Byte) : String

Description:
This function takes a packed date/time record and returns
the
time in a string format, where Format is one of the
following:

0 = Returns time string in 24 format: 17:32


1 = Returns time string in 12 format: 10:21a

Example:
GetThisUser
WriteLn ('Last call on: ' + DateStr(UserLast, 0))
WriteLn (' at: ' + TimeStr(UserLast, 1))
The above example uses GetThisUser to read information on
the
current user. It then uses DateSTR and TimeSTR to
display the
last time and date that the user called.

=================================================================

(8.D.19) BBS DATA ACCESS FUNCTIONS

-----------------------------------------------------------------

GETCFG - Reads current configuration data


GETFBASE - Reads file base configuration data
GETFGROUP - Reads file group configuation data
GETMBASE - Reads message base configuration data
GETMGROUP - Reads message group configuration data
GETPROMPT - Reads a prompt from the current language
GETUSER - Reads data from the user database
GETTEXTSTR - Reads data from the text buffer
GETTHISUSER - Reads data from the current user
PUTFBASE - Writes file base configuration data
PUTFGROUP - Writes file group configuration data
PUTMBASE - Writes message base configuration data
PUTMGROUP - Writes message group configuration data
PUTTEXTSTR - Writes data from the text buffer
PUTTHISUSER - Writes data from the current user
PUTUSER - Writes data to the user database
SETPROMPT - Writes a prompt to the current language
USES - Defines support for BBS data modules

GETCFG [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure GETCFG

Description:
This procedure will load the current configuration data
into
the CFG variables. The "USES CFG" command must be used at
the
start of your program for GETCFG to work. The following
variables will be loaded:
CFGSYSPATH : System Path
CFGDATAPATH : Data Path
CFGMSGSPATH : Message Base Path
CFGPROTPATH : Protocol Path
CFGARCSPATH : Archive Path
CFGQWKPATH : Local QWK Path
CFGMPEPATH : Script (MPE) Path
CFGATTPATH : File Attach Path
CFGLOGSPATH : System Logs Path
CFGTEXTPATH : Text Files Path (for the current
language)
CFGMENUPATH : Menu Files Path (for the current
language)
CFGSTATUSTYPE : Returns status line mode (0=2 line, 1=1
line)

Example:
Uses CFG
GetCFG
WriteLn ('Mystic BBS is installed in ', CfgSysPath)

The above example will load the configuration into the


CFG
variables, and then print the directory where Mystic BBS
is
installed in to the screen.

GETFBASE [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function GetFBase (BaseNum : Word) : Boolean

Description:
The GETFBASE function is used to read in the
configuration data
for a file base. In order to use the GETFBASE function,
USES
FBASE must be added into your USES statement.

The BaseNum parameter defines which file base data record


to
read. In other words if the base "Recent Uploads" is file
base
#1 in your file base editor, passing 1 to GETFBASE will
return
the data for that base.
The GETFBASE function returns a TRUE value if the file
base
data when successfully read, or a FALSE value if the file
bas
number passed to GETFBASE does not exist. After a
successful
call to GETFBASE, the file base data is stored in the
following
FB variables:

Name Type Description


------------ -------- -------------------------------
FBNAME String Holds the name of the file base
FBFILENAME String Holds the file name of the data
file
FBDISPFILE String Holds the file name of the display
file
FBACS String Holds the ACS string to access the
base
FBSYSOPACS String Holds the ACS string for Sysop
access
FBULACS String Holds the ACS string for Upload
access
FBDLACS String Holds the ACS string for Download
access
FBPATH String Holds the file path where files are
store
FBPASSWORD String Holds the password to access the
filebase
FBSHOWUL Boolean TRUE/FALSE: Show uploaders in file
list?
FBDEFSCAN Boolean TRUE/FALSE: Include in default
newscan?
FBISCDROM Boolean TRUE/FALSE: Is base a CD-ROM base?
FBISFREE Boolean TRUE/FALSE: Are all files free?

Example:
Uses FBASE
Var
Count Word
Begin
Count := 1
While GetFBase(Count)
WriteLn ('FileBase #' + Int2Str(Count) + ': ' +
FBName)
Count := Count + 1
WEnd
End

In the above example, FBASE is shown in the USES clause,


allowing access to the file base data. The numerical
variable
COUNT is defined and given a value of 1. The While/Wend
loop is
used to read all of the file base data and print the file
base
name and number to the screen using WriteLn. After each
WriteLn
statement, the Count variable is incremented by 1,
meaning it
will read the next file base number. The program
continues to
loop until GetFBase returns the false value, meaning the
file
base number sent to it doesn't exist.

GETFGROUP [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure GETFGROUP

Description:
This procedure will load the current file group data into
the CFG variables. The "USES FGROUP" command must be used
at
the start of your program for GETFGROUP to work. The
following
variables will be loaded:

FGROUPNAME - Name of File Group


FGROUPACS - Access string of File Group

Example:
Uses FGROUP
GetFGROUP
WriteLn ('Your currently in the ', FGROUPNAME, ' FILE
GROUP!')

The above example will load the configuration into the


CFG
variables, and then print the current file group.

GETMBASE [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function GETMBASE
Description:
This procedure will read message base data into the MBASE
variables. The supplied N is the record number to read.
The
function will return TRUE if the record was read
successfully,
or FALSE if the record was not read. The "USES MBASE"
command
must be called at the start of your program for the MBASE
functions to work correctly.

The following MBASE variables will be set when a record


is
read:

Variable Name Type Description


---------------------------------------------------------
-----
MBASENAME String Name
MBASEQWK String QWK name
MBASEFILE String File name
MBASEPATH String Storage Path
MBASEPTYPE Byte Post type: 0 = Public, 1 =
Private
MBASEACS String ACS level
MBASERACS String Read ACS level
MBASEPACS String Post ACS level
MBASESACS String SysOp ACS level
MBASEPW String Password
MBASECQUOTE Byte Quote color (text attribute)
MBASECTEXT Byte Text color
MBASECTEAR Byte Tear color
MBASECORIG Byte Origin color
MBASEBTYPE Byte Base type: 0 = JAM, 1 = Squish
MBASEAKA Byte Network address AKA #
MBASEORIG String Origin line
MBASEREAL Boolean Use real names?
MBASEDNSCAN Byte New scan? 0 = no, 1 = yes, 2 =
always
MBASEDQSCAN Byte QWK scan? 0 = no, 1 = yes, 2 =
always
MBASEHDR String Header file
MBASEINDEX Integer Index number (*NEVER* change
this)

Example:
Var A Word
A := 1
While GetMBase
WriteLn ('Base name: ', MBaseName)
A := A + 1
Wend
The above example will list all available message bases
on the
BBS.

GETMGROUP [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure GETMGROUP

Description:
This procedure will load the current file group data into
the CFG variables. The "USES MGROUP" command must be used
at
the start of your program for GETMGROUP to work. The
following
variables will be loaded:

MGROUPNAME - Name of File Group


MGROUPACS - Access string of File Group

Example:
Uses MGROUP
GetMGROUP
WriteLn ('Your currently in the ', MGROUPNAME, ' group!')

The above example will load the configuration into the


CFG
variables, and then print the current file group.

GETPROMPT [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function GETPROMPT (N : Word) : String

Description:
This function will return a prompt from the current
user's
language file. The passed N varliable is the prompt
number to
return.

Example:
WriteLn(GetPrompt(1))

The above example writes prompt #1 from the user's


currently
selected language file to the screen.

GETUSER [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function GETUSER (N: Integer) : Boolean

Description:
This procedure will read user data into the USER
variables. The
supplied N is the record number to read. The function
returns
true if the record was read, or false if a record was not
read.
The following USER variables will be set when a record is
read:

Variable Name Type Description


-----------------------------------------------------------------
--
USERDELETED Boolean Is the user marked as deleted?
USERNAME String User's real name.
USERALIAS String User's BBS alias.
USERPASSWORD String User's password.
USERADDRESS String User's street address.
USERCITY String User's City/State.
USERZIP String User's ZipCode.
USERHPHONE String User's home phone number.
USERDPHONE String User's data phone number.
USERBDAY String User's birth date.
USERSEX Char User's gender (M = Male, F = FeMale).
USERSEC Byte User's security level (0-255).

USERMENU String User's Starting Menu (if blank, Mystic


uses the default menu as setup in the
configuration).

USERFIRST LongInt User's date/time of first call to the


BBS.
This is stored in the packed date format
so in order to display the date & time,
the functions of DATESTR and TIMESTR
need
to be used.

USERLAST LongInt User's date/time of the last call to the


BBS. This is also stored in a packed
date
format, so the same rules for USERFIRST
apply to this.

USERCALLS LongInt User's total calls to the BBS system.


USERTCALLS Integer User's number of calls to the BBS today.
USERDLS LongInt User's total # of downloaded files.
USERTDLS Integer User's total # of downloaded files
today.
-----------------------------------------------------------------
--

Example:
Var A Integer
A := 1
While GetUser(A)
WriteLn ('User Alias: ', UserAlias)
A := A + 1
WEnd

The above example will list all user accounts on the BBS
system.

GETTEXTSTR [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
<UNDOCUMENTED AS OF 02/17/02>

GETTHISUSER [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure GETTHISUSER;

Description:
This procedure loads the user information for the
currently
logged in user into the USER variables. See the GETUSER
function for a reference of the USER variables.
Example:
GetThisUser
WriteLn ('Welcome to this BBS, ', UserAlias)
WriteLn ('You have called ', UserCalls, ' times!')

The above example will load the currently logged in user


information into the user variables, then display a line
of
text welcoming them to the BBS.

PUTFBASE [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
<UNDOCUMENTED AS OF 02/17/02>

PUTFGROUP [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure PUTFGROUP

Description:
This procedure will save the current file group CFG
variables
back to the filebase data. "USES FBASE" command must be
used at
the start of your program for PUTFGROUP to work. The
following
variables will be saved:

FGROUPNAME - Name of File Group


FGROUPACS - Access string of File Group

Example:
Uses FBASE
FGROUPNAME := 'New FGROUP Name'
PutFGROUP

The above example will save the CFG variables into the
file
group data file.
PUTMBASE [BBS DATA ACCESS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure PUTMBASE

Description:
This procedure will save the currently loaded MBASE
variables
intoa message base record. See the GETMBASE function for
a list
of valid MBASE variables.

Example:
If GetMBase(1) Then
MBaseName := 'Message Base #1'
PutMBase(1)
EndIf

The above example will read the data for message base #1,
set
the name to "Message Base #1" and write the data back to
the
data file.

PUTMGROUP [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure PUTMGROUP

Description:
This procedure will save the current msg. group CFG
variables
back to the filebase data. "USES MBASE" command must be
used at
the start of your program for PUTMGROUP to work. The
following
variables will be saved:

MGROUPNAME - Name of File Group


MGROUPACS - Access string of File Group

Example:
Uses MBASE
MGROUPNAME := 'New FGROUP Name'
PutMGROUP

The above example will save the CFG variables into the
msg.
group data file.

PUTTEXTSTR [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
<UNDOCUMENTED AS OF 02/17/02>

PUTTTHISUSER [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure PUTTHISUSER

Description:
This procedure will save the USER variables into the
currently
logged in user's record. See the GETUSER function for a
list of
the USER variables which are saved by the PutThisUser
function.

Example:
GetThisUser
WriteLn ('Welcome ', UserAlias, '. Deleting your
account...')
UserDeleted := True
PutThisUser
HangUp

The above example will load the USER variables with the
currently logged in user's information, then mark them as
deleted with the UserDeleted variable. Their account is
then
saved with the PutThisUser procedure and then they are
hangup
on using the HangUp command.
PUTUSER [BBS DATA ACCESS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure PUTUSER (N: Integer)

Description:
This procedure will save the USER variables into the user
file.
The passed N parameter is the record number to save
under. See
the GETUSER function for a list of the USER variables
which are
saved by the PutUser procedure.

Example:
If GetUser(1)
UserDeleted := True
PutUser(1)
EndIf

The above example will attempt to load the data from user
record 1 into the USER variables. If the data is loaded
without
any errors, it will mark the user as deleted using the
USERDELETED variable, and then save the record back to
the user
file.

SETPROMPT [BBS DATA ACCESS


FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure SETPROMPT (N : Word, String)

Description:
This function will set a prompt in the current user's
language
file to the specified string. The N variable is the
prompt
number to replace.

Example:

Var MyStr String


MyStr := "This is a new prompt"
SetPrompt(1, MyStr)
The above example replaces prompt #1 from the user's
currently
selected language file with the contents of MyStr.

=================================================================

(8.D.20) INPUT FUNCTIONS

-----------------------------------------------------------------

INPUT - Prompts the user for input


INPUTNY - Prompts user with a Yes/No question
INPUTYN - Prompts user with a Yes/No question
ISARROW - TRUE if last key was an arrow key
ISLOCALKEY - TRUE if last key was from local keyboard
KEYPRESSED - TRUE is a key is in the input buffer
ONEKEY - Reads a single character from the keyboard
READKEY - Reads a single character from the keyboard
STUFFKEY - Stuffs characters into the input buffer

INPUT [INPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function INPUT (Field: Byte,
Max: Byte,
Mode: Byte,
Default: String) : String

Description:
This function gives input to the user, and returns the
result of
the input as a string variable.

The Field parameter is the size of the input field (in


characters) that the user will be able to see. If the
field
size is smaller than the maximum number of characters
allowed
in the input, the input line will scroll when the user
reaches
the end. This field is usually set to the same as the Max
parameter.
The Max parameter is the maximum number of characters
that
Input will allow to be entered. Note that the Field
parameter,
in most cases, should be set to the same value as this.

The Mode parameter is the type of input that will be


accepted,
and can be any one of the following input types:

1 : Standard input. All characters allowed.

2 : Upper case input. Allows all characters, but will


convert
any lower case letters into upper case.

3 : Proper input. Allows all characters, but will convert


the first letter in each word to an upper case
letter.

4 : Phone input. Allows only numbers and will pre-format


them
using the USA-style phone numbers. IE: XXX-XXX-XXXX.
Note that the length of this input should always be
12,
as that is the length of the USA phone number format.

5 : Date input. Allows only numbers and will pre-format


them
using the date format (ie XX/XX/XX) that is currently
selected by the user. NOTE: The date input will
always
return the date in the MM/DD/YY format, regardless of
what
format the user has selected. For example, if the
user
has selected the DD/MM/YY format, Input will expect
the
user to enter the date in that format, but will then
convert it to MM/DD/YY when it returns the date back
to
the MPE program.

6 : Password input. Allows all characters, but will


convert
any lower case letters into upper case. The character
that is typed is NOT echoed to the screen. Instead,
it
is replaced by the * character so that what they have
entered will not be shown on the screen.

NOTE: If any of the above input values are increased by


10,
Input will create an input field using the
foreground/background color that has been defined
for
that language. For example, input type 11 will
function
the same as input type 1, but will fill an input
field to
the maximum field length.

The Default parameter can be used to force a default text


into
the input field. If you do not wish to have any default
text in
the buffer, supply a blank string parameter (ie '').

Example:
Var Str String
Write ('Enter something: ')
Str := Input (30, 30, 1, '')

The above example will print the text "Enter something: "
to
the screen and the allow input of up to 30 characters in
length, using input type 1 (allows all characters). No
default
text has been supplied so the input field will be empty
by
default.

Var Str String


Write ('Enter something: ')
Str := Input (30, 30, 11, 'Default')

The above example will function just like the first


example,
except it will create an input field background and stuff
the
text of "Default" into the input field.

INPUTNY [INPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function INPUTNY (Text: String) : Boolean

Description:
This function prompts the user with a Yes/No question,
defaulting to No. TRUE will be returned if the user
answered
Yes, or FALSE if the user answered No. The passed Text
variable
is the text that is displayed to the user asking the
question.

Example:
If Not InputNY('Do you want to run this program? ')
Halt
EndIf

The above example will prompt the user with the Yes/No
question
passed as <Text>. This question will default to No. If
the user
answers No, the program will halt from being executed.

INPUTYN [INPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function INPUTYN (Text: String) : Boolean

Description:
This function prompts the user with a Yes/No question,
defaulting to Yes. TRUE will be returned if the user
answered
Yes, or FALSE if the user answered No. The passed Text
variable
is the text that is displayed to the user asking the
question.

Example:
If Not InputYN('Do you want to run this program? ')
Halt
EndIf

The above example will prompt the user with a Yes/No


question,
asking "Do you want to run this program?". If the user
responds
No, the program will not run, using the Halt command.

ISARROW [INPUT
FUNCTIONS]
———————————————————————————————————————————————————————————————————————
Syntax:
Function ISARROW : Boolean

Description:
This function is used along with the READKEY function.
After
READKEY is called, this function can be checked to
process
various extended keys, such as arrow keys. When ISARROW
is
true, READKEY will return the following:

ASCII # Char Key Pressed


------- ---- -----------
71 G Home
72 H Up Arrow
73 I Page Up
75 K Left Arrow
77 M Right Arrow
79 O End
80 P Down Arrow
81 Q Page Down
83 S Delete

The character returned by READKEY can be checked by


either the
ASCII # or the actual character. Below is an example:

Example:
Var Ch Char
Ch := ReadKey # Input one key
If IsArrow # Is key an arrow key?
If Ch = 'H'
WriteLn ('Up arrow')
ElseIf Ch = Chr(80)
WriteLn ('Down arrow')
EndIf
Else # No arrow key.
WriteLn ('You entered character: ', Ch)
EndIf

The above example reads a key with READKEY and then uses
the
ISARROW function to process the Up Arrow and Down Arrow
keys.

ISLOCALKEY [INPUT
FUNCTIONS]
———————————————————————————————————————————————————————————————————————
Syntax:
Function ISLOCALKEY : Boolean

Description:
This function is used along with the READKEY function.
After
READKEY is called, this function can be checked to see if
the
key just entered was from the local keyboard or not.

Example:
Var Ch Char
Ch := ReadKey
If IsLocalKey Then
WriteLn ('Was entered from the local keyboard')
Else
WriteLn ('Was entered from the remote keyboard')
EndIf

KEYPRESSED [INPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function KEYPRESSED : Boolean

Description:
This function returns TRUE if a key has been pressed
either
remotely or locally. Keep in mind two things about this
function:

(1) It doesn't check for inactivity timeout. If you are


using this function to wait for a key to be pressed
then
you may want to use the TIMER function and check for
inactivity.

(2) This function only returns whether a key was PRESSED.


It does not actually read the key out of the buffer.
See the READKEY function for reading keys from the
buffer.

Example:
Repeat
Until KeyPressed
WriteLn ('You pressed a key!')
The above example will wait for a key to be pressed and
then
write to the screen "You pressed a key!".

ONEKEY [INPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
<UNDOCUMENTED AS OF 02/17/02>

READKEY [INPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function READKEY : Char

Description:
This function will read a key from the buffer and return
it as
a char variable. If there are no keys in the buffer,
readkey
will wait for a key to be pressed.

Example:
Var Ch Char
Repeat Until KeyPressed
Ch := ReadKey
WriteLn ('You entered: ', Ch)

The above example will wait for a key to be pressed by


using
the KEYPRESSED function. Afterwards, the key will be read
into
the CH variable using readkey, and then print it to the
screen.

STUFFKEY [INPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure STUFFKEY (S : String)

Description:
This function will stuff a string of text into the
keyboard
buffer. This can be used to force your program into
thinking
the user had actually typed <S>.

Example:
Var Ch Char
StuffKey ('A')
Ch := ReadKey
WriteLn ('You entered: ', Ch)

The above example will stuff the character "A" into the
input
buffer, where it will be read into Ch using the ReadKey
function. It is possible to stuff entire strings of text
into
the buffer too.

Example:
Var Str String
StuffKey 'Hello World'
Str := Input (20, 20, 1, '')

The above example will stuff "Hello World" into the input
buffer. This will cause the input function to think the
user
has actually typed in "Hello World". In this case, the
above is
the same as supplying "Hello World" in the <DEFAULT>
field of
the Input function.

=================================================================

(8.D.21) OUTPUT FUNCTIONS

-----------------------------------------------------------------

CLS - Clears the screen


DISPFILE - Displays a file to the user
GOTOXY - Moves the cursor to a X/Y position
ISNOFILE - TRUE after DISPFILE if file doesn't exist
MOVEX - Moves the cursor to a X coordinate
MOVEY - Moves the cursor to a Y coordinate
TEXTATTR - Returns the current text attribute
TEXTCOLOR - Changes the current text color
WHEREX - Returns the current X cursor position
WHEREY - Returns the current Y cursor position
WRITE - Writes a string/text to the screen
WRITELN - Writes a string/text to the screen with a CR
WRITELOCALXY - Writes text to the local screen only

CLS [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure CLS

Description:
Clears the screen and returns the cursor to the top left
side
of the screen.

Example:
CLS
WriteLn ('The screen was just cleared!')

DISPFILE [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure DISPFILE (FileName String)

Description:
This procedure displays a text or ANSI file to the
screen. If a
path not included in the passed filename, Mystic will
look for
the file in the language text file directory. If no file
extension is provided in the passed file name, Mystic
will
display the correct file according to the user's graphics
settings (ie .ANS for ANSI, .ASC for non-ansi).

Example:
DispFile ('WELCOME')

The above example will display the text file "WELCOME"


from the
language text file directory. Since there is no file
extension
provided, Mystic will display "WELCOME.ANS" or
"WELCOME.ASC"
depending on what the user's terminal settings are.

GOTOXY [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure GotoXY (X Byte, Y Byte)

Description:
Locates the cursor to the specified X and Y position on
the
screen. This procedure only works if the user has ANSI
terminal
emulation enabled.

Example:
CLS
GotoXY (1, 10)
Write ('This is the 10th line of the screen')

ISNOFILE [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function IsNoFile : Boolean

Description:
Returns TRUE after a call to DISPFILE if the file that
was
attemped to display did not exist.

Example:
Begin
DispFile('HELLO')
If IsNoFile Then
WriteLn ('HELLO.XXX does not exist.')
EndIf
End
MOVEX [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure MoveX (XPos Byte)

Description:
This procedure moves the cursor from the current position
to
the passed X coordinate on the screen. This procedure
only
works if the user has ANSI compatible terminal.

Example:
Begin
MoveX (25)
Write ('This text is on column 25')
End

MOVEY [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure MoveY (YPos Byte)

Description:
This procedure moves the cursor from the current position
to
the passed Y coordinate on the screen. This procedure
only
works if the user has ANSI compatible terminal.

Example:
Begin
MoveY (10)
Write ('This text is on line 10')
End

TEXTATTR [OUTPUT
FUNCTIONS]
———————————————————————————————————————————————————————————————————————
Syntax:
Function TextAttr : Byte

Description:
This function returns the current text attribute. See the
help
for WRITELOCALXY for a detailed description of the text
attribute colors.

Example:
Begin
WriteLn ('Text attribute is: ' +
Int2Str(TextAttr))
End

TEXTCOLOR [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure TextColor (Color Byte)

Description:
This procedure changes the current text color to the
passed
text attribute. See the help for WRITELOCALXY for more
detailed
information on the text attribute.

Example:
Begin
TextColor (31)
WriteLn ('This text is a White on Blue
Background!')
End

WHEREX [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function WHEREX : Byte

Description:
This function returns the current X coordinate of the
cursor.

Example:
Var X Byte
Var Y Byte
X := WhereX
Y := WhereY
WriteLn (' World')
GotoXY (X, Y)
WriteLn ('Hello')

The above example will save the current X and Y cursor


positions and then write the text "World" to the screen.
After
which, it will return to the saved X and Y position and
write
the text "Hello" to the screen. The end result will be
the text
of "Hello World" written to the screen. Note: GotoXY can
only
be used if the user has ANSI graphics mode.

WHEREY [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function WHEREY : Byte

Description:
This function returns the current Y coordinate of the
cursor.

Example:
Var X Byte
Var Y Byte
X := WhereX
Y := WhereY
WriteLn (' World')
GotoXY (X, Y)
WriteLn ('Hello')

The above example will save the current X and Y cursor


positions and then write the text "World" to the screen.
After
which, it will return to the saved X and Y position and
write
the text "Hello" to the screen. The end result will be
the text
of "Hello World" written to the screen. Note: GotoXY can
only
be used if the user has ANSI graphics mode.

WRITE [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure WRITE (Text)

Description:
This procedure is used to write text to the screen
without
going to the next line (ie, without sending a carriage
return).

All text to be printed to the screen should be enclosed


inside
of ' characters. If you wish to print the value of a
variable
to the screen, just include the variable name without the
'
characters. If you wish to combine multiple text and
variables,
they must be separated by commas.

Examples:
Write ('Hello ')
Write ('World')

This example will write the text "Hello World" to the


screen.

Write ('Hello World')

This example does the exact same thing as the function


above,
but makes a little more sense.

Var Str String


Str := 'Hello World'
Write (Str)

This example will write the value held in the variable


Str to
the screen. The resulting output will be "Hello World"

Var Str String


Str := 'Hello '
Write (Str, 'World')

This example will write the value of the variable Str to


the
screen, followed by the text "World". The resulting
output will
be "Hello World". An unlimited number of variables and
text can
be outputted with the Write statement, but they must all
be
separated by a comma, as shown above.

If a ' character needs to be printed to the screen, it


can be
done by doubling the ' character. For example:

Write ('This is how it''s done.')

The resulting screen output will be "This is how it's


done",
with only one ' character.

All MCI display codes can be used within the Write


statement.
If you wish to change the display colors, use the MCI
color
system to do so. For example:

Write ('|14Hello World')

This example will write the text Hello World in yellow to


the
screen. All MCI display codes are available to the write
statement.

WRITELN [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure WRITELN (Text)

Description:
This procedure outputs text to the screen. Its
functioning is
identical to the WRITE statement except that it goes to
the
next line after the text is printed (ie, it sends a
carriage
return).
Example:
WriteLn ('Hello')
WriteLn ('World')

The above example will write the text "Hello" on one


line, and
then the text of "World" on the next line.

WRITELOCALXY [OUTPUT
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure WriteLocalXY (X Byte, Y Byte, Text String, Attr
Byte)

Description:
This procedure allows text to be written to the local
screen
only, at a specified X/Y position and text attribute.

The text attribute can be calculated with the following


formula:

Foreground color + (Background color * 16)

Foreground colors: Background


colors:
0 - Black 8 - Dark Grey 0 - Black
1 - Blue 9 - Light Blue 1 - Blue
2 - Green 10 - Light Green 2 - Green
3 - Cyan 11 - Light Cyan 3 - Cyan
4 - Red 12 - Light Red 4 - Red
5 - Magenta 13 - Light Magenta 5 - Magenta
6 - Brown 14 - Yellow 6 - Brown
7 - Grey 15 - White 7 - Grey

Therefore, a white forground with a blue background would


be
the text attribute of 31, as used in the example below.

Example:
WriteLocalXY (1, 1, 'Only printed on the local screen',
31)

The above example prints the text to the local screen


only at
the first column of the first line. The text will be
printed
with a white foreground on a blue background.

=================================================================

(8.D.22) MISCELLANEOUS FUNCTIONS

-----------------------------------------------------------------

ACS - Returns TRUE if user passes an ACS string


DELAY - Delays for a specified number of milliseconds
EXIT - Exits the current function or procedure immediat
GETUSERTIME - Returns the # of minutes the user has left
GRAPHICS - Returns the current user's graphic type
HALT - Exits the MPL program immediately
HANGUP - Disconnects the user immediately
LOCAL - Returns TRUE if user is logged in locally
MENUCMD - Executes a menu command
NODENUM - Returns the current node number
PARAMCOUNT - Returns the current number of parameters
PARAMSTR - Returns specific parameter data
RANDOM - Returns a randomly generated number
SETUSERTIME - Sets the user's time left
STATUSUPDATE - Updates the status line
SYSOPLOG - Writes a string to the system log file
UPUSER - Upgrades a user's security level

ACS [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function ACS (AcsStr String) : Boolean

Description:
Checks an access string with the current user's
information and
returns either TRUE or FALSE based on if they user
passed.

Example:
If ACS('s20') Then
WriteLn ('Your security level is higher than
20!')
Else
WriteLn ('Your security level is less than 20!')
EndIf
DELAY [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure DELAY (MilliSec Word)

Description:
Delays for a specified number of milliseconds

Example:
WriteLn('Pausing for 1 second...')
Delay(1000)

EXIT [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure EXIT

Description:
Exits the immediate procedure, structure, or loop.

Example:
Begin
For A := 1 to 10 do
if A = 5 then exit EndIf
Pend

GETUSERTIME [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function GETUSERTIME

Description:
Returns the number of minutes a user has remaining.

Example:
Var MinLeft
MinLeft := GETUSERTIME
WriteLn('You have ', MinLeft, ' minutes left online!')

GRAPHICS [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function GRAPHICS : Byte

Description:
This function returns the user's current graphics mode in
numerical format:

0 = ASCII graphics mode


1 = ANSI graphics mode

Example:
If Graphics = 1
WriteLn ('ANSI graphics')
Else
WriteLn ('ASCII graphics')
EndIf

The above example will print the user's current graphics


mode
to the screen. If the user has ANSI (graphics mode 1),
"ANSI
graphics" will be printed. If the user does not have ANSI
(graphics mode 0), "ASCII graphics" will be printed to
the
screen.

HALT [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure HALT

Description:
Halts execution of the program and returns the user
immediately
back to the BBS.
Example:
If Graphics = 0 Then
WriteLn ('Sorry, this program requires ANSI
graphics.')
Halt
EndIf

HANGUP [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure HANGUP

Description:
This procedure will stop the program immediately, hangup
up on
the user, and return Mystic BBS to the waiting for caller
screen.

Example:
If InputYN ('Do you want to hangup now? ')
HangUp
EndIf

The above example will prompt the user with a Yes/No


question
asking "Do you want to hangup now?" and if the user
responds
"Yes", they will be logged off the BBS using the HangUp
command.

LOCAL [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function LOCAL : Boolean

Description:
This function returns TRUE if the user is logged into the
BBS
system locally. It will return FALSE if the user is
connected
via a remote location.
Example:
If Local Then
WriteLn ('Local caller detected.')
Else
WriteLn ('Remote caller detected.')
EndIf

MENUCMD [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure MENUCMD (CM: String, Data: String)

Description:
This procedure will allow menu commands to be ran from
within a
program. <CM> is the menu command, and <DATA> is the menu
command optional data.

Example:
MenuCmd ('NW', '')

The above example will run the menu command "NW" with the
optional data field set to nothing. This example will
display
the Who's Online list. See MYSTIC.DOC for a list of all
available menu commands.

NODENUM [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function NODENUM : Byte

Description:
This function returns the current node number which the
program
is being ran on.

Example:
WriteLn ('Welcome to node number ', NodeNum)

The above example will print the text "welcome to node


number
x" to the screen, where the x will be the current node
number
which the program is being ran on.

PARAMCOUNT [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function PARAMCOUNT : Byte

Description:
This function is used to determine the number of command
line
options which have been passed to the MPE program. For
more
information, see the PARAMSTR function.

Example:
If ParamCount < 2
WriteLn ('Invalid command line.')
Halt
EndIf

The above example will check to see if less than 2


command line
options have been passed to the MPE program. If there are
less
than two, the program will terminal with a "invalid
command
line" message.

PARAMSTR [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function PARAMSTR (Number : Byte) : String

Description:
This function returns the command line option specified
by the
NUMBER parameter. A command line is the optional data
which
is passed on the "Data" field of a menu command. For
example,
when defining a menu command which executes an MPE
program in
the menu editor, the text after the program name becomes
command line options.

Menu Command: GX
Data : BULLETIN p1 p2 p3 p4

If the above was defined in the menu editor, the


following
would be true:

ParamCount would return 4


ParanStr(0) would return "BULLETIN"
ParamStr(1) would return "p1"
ParamStr(2) would return "p2"
ParamStr(3) would return "p3"
ParamStr(4) would return "p4"

Note that ParamStr(0) will ALWAYS return the file name of


the
MPE program being executed. Even when there are no other
parameters defined.

RANDOM [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Function RANDOM (Max: Word) : Word

Description:
This function will return a random number within the
range
specified.

Example:
Var A Byte
A := Random(255)
WriteLn (A)

The above example will generate a random number within


the
range of 0 to 255 in the variable A and then print it to
the
screen.
SETUSERTIME [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
<UNDOCUMENTED AS OF 02/17/02>

SYSOPLOG [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure SysopLog (Text String)

Description:
This procedure adds a line of text to the current node's
Sysop
log file. The date and time will automatically be added
into
the log as well, keeping the same format as all the other
entries into the log.

Example:
SysopLog ('This will be in the log file now!')

UPUSER [MISCELLANEOUS
FUNCTIONS]

———————————————————————————————————————————————————————————————————————
Syntax:
Procedure UPUSER (Sec: Byte)

Description:
This procedure will upgrade the currently logged in
user's
security level using the validation system. The passed
value
is the security level to upgrade to and must be between
the
range of 0 to 255.

Example:
WriteLn ('Upgrading your access to level 20')
UpUser (20)
The above example will do a validation upgrade to the
security
level of 20.

.---------------------------------------------------------------.
| |
| 9.0 TECHNICAL REFERENCE |
| |
+---------------------------------------------------------------+
| |
| 9.1 ....... ACS System |
| 9.2 ....... MCI Display Codes |
| 9.3 ....... MCI Control Codes |
| 9.4 ....... Color Codes |
| 9.5 ....... Menu Editor Hotkeys |
| 9.6 ....... Local SysOp Hotkeys |
| 9.7 ....... Door System MCI Codes |
| 9.8 ....... Archive System MCI Codes |
| 9.9 ....... Protocol System MCI Codes |
| 9.10 ...... Event System MCI Codes |
| 9.11 ...... ERRORLEVELS returned by Mystic BBS |
| 9.12 ...... Mystic BBS Error Codes |
| 9.13 ...... ANSI.SYS Codes |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (9.1) ACS SYSTEM |
| |
`---------------------------------------------------------------'

The ACS system is used throughout the BBS to limit access to


certain
commands and functions. It is an extremely powerful system
designed
to give the SysOp total control over who can do what. In any of
the
configuration editors where there is an ACS field, these commands
are
to be used.

Mystic supports the following ACS commands:


Ax - This command is used to check the user's age. Where X
is
the age the user must be in order to pass.

Dx - This command is used to check if a user has a certain


flag
toggled ON in their SECOND set of flags. Where X is the
flag which the user must have in order to pass. For
example: DA will require the user to have user access
flag
D in flag set 2 in order to pass.

Ex - This command is used to check the user's current


graphics
mode. Where X is one of the following:

1 - User must have ANSI graphics


0 - User must have ASCII (none) graphics.

Fx - This command is used to check if a user has a certain


flag
toggled ON in their FIRST set of flags. Where X is the
flag which the user must have in order to pass. For
example: FA will require the user to have user access
flag
A in flag set 1 in order to pass.

Gx - This command is used to check if a user is in a certain


message group. Where X is the number of the group as
listed
in the message group editor. For example: G1 will
require
the user to be in message group #1 in order to pass.

Hx - This command is used to check if a user is accessing


a command at a certain hour. Where X is the hour in the
24-hour mode (ie 00 is midnight or after, 23 is 11pm or
after). For example: H12 will prevent the user from
accessing this command before 12 noon on any given day.

Nx - This command is used to check if a user is online a


certain node number. For example: N1 will require that
the user is currently logged in on Node 1 in order to
pass.

OA - This command is used to check the status of the user's


node message availibility. If the user is able to
receive node messages, OA will return true. False if
they are not available.

OI - This command is used to check if a user's node status


is invisible to other nodes. It will be set TRUE if
the user is invisible, false if not.
OK - This command is used to check the result of the last
called Boolean menu command. For more information, see
the menu commands: -P, -Y, and -N.

OP - This command is used to check the status of the user's


post / call ratio. If the user meets the currently set
ratio, then OP will be true - otherwise, if will return
false. This option is useful to restrict users from
downloading if they're not active message posters.

Sx - This command is used to check if a user meets a certain


security level. For example: S20 will require the user
to have a security level of 20 or higher in order to
pass.

Tx - This command is used to check if a user has at least


X minutes remaining in online time. For example: T10
would require the user to have a least 10 minutes of
remaining time in order to pass.

Ux - This command is used to check a user's permanent user


number, where X is the number of the permanent index the
user must match. For example: U1 would require the user
to have the permanent user index of 1. Each user's
permanent index is listed in the user editor, and no two
users will ever have the same permanent index number.

Zx - This command is used to check if a user is in a certain


File Group. Where X is the number of the group as
listed
in the File Group editor. For example, Z1 will require
the user to be in File Group #1 in order to pass the ACS
check.

Any of the above commands can be used together to create an ACS


string
used by Mystic BBS. Below are some examples of how they can be
used:

s255 - User must have security of 255 or higher.


s255n1fA - User must have a security level of 255 or higher, be
currently logged into Node 1, and have user flag A
toggled on, in order to pass this ACS string.
s10z1h12 - User must have a security level of 10 or higher,
be currently in File Group #1, and be accessing this
function after 12:00 noon, in order to pass this
ACS string.

For added flexibility, Mystic also supports five logical


operators
which can be used in ACS strings:

& = Logical AND


| = Logical OR
! = Logical NOT
^ = Always TRUE
% = Always FALSE

In addition to the operators, Mystic BBS also allows parenthesis


in ACS
strings to allow evaluation of grouped ACS commands. Some
examples of
using operators and grouping are:

^ Always returns TRUE. Grants access to ALL


users.
% Always returns FALSE. Grants access to NO
users,
not even the SysOp.
s10!s20 User must have a security level which is at
least
10 but NOT 20 or greater.
t20|s255 User must have 20 minutes of time remaining, OR
have a security level of 255.
!(s255|fa) User must NOT have a security level of 255 and
flag
A toggled on.
(s20fa)|(s255) User must have a security level of 20 with flag
A
toggled on, *OR* have a security level of 255
or
higher.

As you can see, the access command system gives Mystic BBS an
incredible amount of flexibility when it comes to system
security!

.---------------------------------------------------------------.
| |
| (9.2) MCI DISPLAY CODES |
| |
`---------------------------------------------------------------'

MCI codes are used to display various information about the BBS
system
or the currently logged in user. They can be used in all prompts
and
display files throughout Mystic BBS, and are in the format of |XX
(where XX is replaced by any one of the codes listed below). The
following is an example of using the MCI system in a display
file:

Original text:
--------------
Welcome to this BBS, |UN.

You have called |CS times total.


You have called |CT times today.

When displayed by Mystic:


-------------------------
Welcome to this BBS, <User_Name_Will_Be_Here>.

You have called <Total_Calls_Will_Be_Here> times total.


You have called <Calls_Today_Will_Be_Here> times today.

Codes &0 through &9 are used in the language file and hold
different
values for different display strings. They are called Prompt Info
MCI codes. The supported prompt info codes for each string are
listed in the language file and the language editor.

Codes !0 through !9 are used with the template system and are
called
Screen Info MCI codes. They are usually used to define screen
coordinates in each template file. For more information on these
MCI codes and the template system, see the section on the Mystic
BBS
Template System.

The following MCI codes are used to display information on the


BBS
and the currently logged in user:

AS - Is user's auto signature toggled ON? (Returns YES or NO)


AV - Is the user available to receive node messages (YES or NO)
BD - Displays the user's baud rate.
BE - Sounds a BEEP.
BI - Displays the user's birth date.
BN - Displays the BBS name as defined in System Configuration.
CL - Clears the screen.
CM - Displays "on/off" according to the user's FS node chat
setting
CR - Sends a carriage return (Enter).
CS - Displays the user's total number of calls to the BBS.
CT - Displays the number of times the user called today.
DA - Displays the current date.
DE - Delays for half a second.

DF - Displays a text file from the language text directory.


For example, |DFHELLO would display the text file
HELLO.XXX from the currently language text file directory.
Mystic BBS assumes all of the remaining text on a
line after a DF code as the file name to display.

DK - Displays the user's total number of downloaded kilobytes.


DL - Displays the user's total number of downloads.
DT - Displays the user's number of downloads today.
FB - Displays the current file base name.
FG - Displays the current file group name.
FK - Displays the user's total number of uploaded kilobytes.
FO - Displays the date of the user's first call to the BBS.
FU - Displays the user's total number of uploads.

HK - Returns either ON or OFF depending on the user's


hot key setting.

IF - Turns the input field box OFF for the next input.
IL - Displays the user's invisibility status (ON/OFF).
IN - Format: INxx. Limits input field to XX characters.
KB - Displays the number of KB in user's KB bank.
KT - Displays the user's total number of download kilobytes
today
LO - Displays the date of the user's last login.
MB - Displays the name of the current message base.
ME - Displays the number of emails the user has sent.
MG - Displays the name of the user's current message group.
ML - Displays on/off based on the user's lightbar message
index.
MN - Displays the network name for the current message base.
MP - Displays the number of messages the user has posted.
ND - Displays the current node number
NE - Displays the number of minutes until the next system
event.
OS - Displays the Mystic BBS OS version. IE: DOS, WIN, or OS2.

PA - Pause. Sends the pause prompt and waits for the user to
press a key.

PC - Displays the user's current post/call ratio percentage


PI - Display a pipe character (|).

PN - Pause. Waits for the user to press a key without sending


the pause prompt.

PO - Temporarily disables screen pauses.


QA - Displays the user's current archive setting.
QL - Displays the user's current QWK file list setting.
QO - Displays a randomly generated quote.
RD - Displays the user's set download ratio.
RK - Displays the user's set download kilobyte ratio.
RP - Format: RPxx. Sets the pause screen counter to xx lines.
SA - Displays the max amount of KB allowed in KB bank.
SB - Displays the max amount of minutes allowed in time bank.
SC - Displays the max number of calls allowed per day.
SD - Displays the description of the user's security level.
SK - Displays the max number of download Kb allowed per day.
SL - Displays the user's security level.
SP - Displays the post/call ratio for the user's security
level.
ST - Displays the # of minutes given to the user per day.
SX - Displays the max number of downloads allowed per day.
TB - Displays the total minutes in the user's time bank.
TC - Displays the total number of callers the BBS has had.
TE - Displays the user's terminal emulation (ANSI/ASCII).
TI - Displays the current time.
TL - Displays the user's time (in minutes) left for the day.
TO - Displays the number of minutes the user has been online.
U1 - Displays the user's optional field 1
U2 - Displays the user's optional field 2
U3 - Displays the user's optional field 3
UA - Displays the user's address.
UB - Displays the user's file listing type.
UC - Displays the user's city and state.
UD - Displays the user's data phone number.
UE - Displays the user's message editor setting.
UF - Displays the user's selected date format.
UG - Displays the user's gender.
UH - Displays the user's handle/alias.
UI - Displays the user's user note.
UJ - Displays the user's message reader type.
UK - Displays the user's e-mail address.
UL - Displays the user's current language.
UM - Displays the user's lightbar email index setting.
UN - Displays the user's real name.
UP - Displays the user's home phone number.
UQ - Displays the user's current quote mode setting.
US - Displays the user's screen length.
UZ - Displays the user's zip code.
VR - Displays the version of Mystic BBS.

.---------------------------------------------------------------.
| |
| (9.3) MCI CONTROL CODES |
| |
`---------------------------------------------------------------'

The following three MCI codes are used to set how the next
displayed
MCI code is formatted:

$Rxx - Pads the next MCI code to the right with spaces. Where
xx is the number of spaces to pad. It must ALWAYS be
two characters, so if you want to pad an MCI to 5
spaces,
you MUST enter |$R05, not |$R5.
$Lxx - Pads the next MCI code to the left xx spaces.
$Cxx - Pads the next MCI code to the center. Where xx is the
number of spaces to center the MCI within.

The following MCI code is used to duplicate a character a


specified number of times:

$Dxxy - Duplicates the character y, xx number of times.

Here are some examples of using MCI formatting:

Original text:
--------------
|$R30|UNHello

When displayed by Mystic:


-------------------------
<User_Name_Here> Hello

Original text:
--------------
Hello|$L30|UN

When displayed by Mystic:


-------------------------
Hello <User_Name_Here>

Original text:
--------------
|$C70|UN

When displayed by Mystic:


-------------------------
<User_Name_Here>

Original text:
--------------
Hello
|$D20*

When displayed by Mystic:


-------------------------
Hello
********************

The following MCI codes are used to move the cursor to a


specified
position on the screen. They will only work if the user is
capable
of supporting ANSI graphics, otherwise they will be ignored:

[Xxx - Moves the cursor to column XX.


[Yxx - Moves the cursor to row XX.

[Axx - Moves the cursor XX rows UP


[Bxx - Moves the cursor XX rows DOWN
[Cxx - Moves the cursor XX rows RIGHT
[Dxx - Moves the cursor XX rows LEFT
.---------------------------------------------------------------.
| |
| (9.4) COLOR CODES |
| |
`---------------------------------------------------------------'

Codes 00 through 15 can be used to set the foreground color:

|00 - Black foreground.


|01 - Dark blue foreground.
|02 - Dark green foreground.
|03 - Dark cyan foreground.
|04 - Dark red foreground.
|05 - Dark magenta foreground.
|06 - Dark yellow foreground.
|07 - Light gray foreground.
|08 - Dark gray foreground.
|09 - Light blue foreground.
|10 - Light green foreground.
|11 - Light cyan foreground.
|12 - Light red foreground.
|13 - Light magenta foreground.
|14 - Light yellow foreground.
|15 - White foreground.

Codes 16 through 23 can be used to set the background color:

|16 - Black background.


|17 - Blue background.
|18 - Green background.
|19 - Cyan background.
|20 - Red background.
|21 - Magenta background.
|22 - Yellow background.
|23 - Grey background.

.---------------------------------------------------------------.
| |
| (9.5) MENU EDITOR HOTKEYS |
| |
`---------------------------------------------------------------'

When using the menu editor you assign each of the menu items in
your
menu a hotkey. This hotkey can be any ascii character A-Z, 0-9,
symbols
etc, whatever you like -- or a combination thereof. But the real
power
of Mystic BBS menuing lies in the special hotkeys and they are
defined
in detail below:

FIRSTCMD : Automatically runs the command each time the menu is


loaded,
but does not automatically run it when the menu is
used and
no other menus are executed.

EVERY : Automatically runs the command each time the menu is


redrawn
(before its actually redrawn)

AFTER : Automatically run the command each time the menu is


redrawn,
just before the prompt is displayed.

The other special hot keys are for user input keys:

ENTER : Use the ENTER key as the hot key


ESCAPE : Use the ESCAPE key as the hot key
TAB : Use the TAB key as the hot key
RIGHT : Use the RIGHT arrow as the hot key
LEFT : Use the LEFT arrow as the hot key
UP : Use the UP arrow as the hot key
DOWN : Use the DOWN arrow as the hot key

In addition to these hot keys, any combination of the standard


ASCII
characters is legal:

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Z,
0,1,2,3,4,5,6,7,8,9
`,~,!,@,#,$,%,^,&,*,(,),-,_,=,+,[,{,],},;,:,',",\,|,<,,,>,.,/,?

Examples of valid hot key combinations


--------------------------------------
/ALL_YOUR_BASE
.SECR3T>MENU

.---------------------------------------------------------------.
| |
| (9.6) LOCAL SYSOP HOTKEYS |
| |
`---------------------------------------------------------------'

Sysop commands while a user is online:


ALT B Change status bar display
ALT C Break into line chat mode
ALL E Edit the online user's account
ALT H Hang-up on user
ALT J Shell to DOS
ALT S Break into split screen chat mode
ALT T Toggle status line mode (2 line, 1 line, or none)
ALT U Upgrade user to a defined security level.
ALT + Add a minute to the user's time left.
ALT - Subtract a minute to the user's time left
F1..F4 Definable SysOp macros.

.---------------------------------------------------------------.
| |
| (9.7) DOOR SYSTEM MCI CODES |
| |
`---------------------------------------------------------------'

%0 ComPort handle (Win32 and OS/2 versions only)


%1 ComPort
%2 Baud Rate
%3 Node number
%U Users alias

.---------------------------------------------------------------.
| |
| (9.8) ARCHIVE SYSTEM MCI CODES |
| |
`---------------------------------------------------------------'

%1 = File name being processed.


%2 = Files to pack/unpack.
%3 = Temporary file directory where Mystic BBS packs/unpacks
archives.

.---------------------------------------------------------------.
| |
| (9.9) PROTOCOL SYSTEM MCI CODES |
| |
`---------------------------------------------------------------'
%0 = Comport handle (Win32 and OS/2 only)
%1 = Comport which the modem is using.
%2 = The baud rate the user is currently connected at.
%3 = Name of the file being transferred.
%4 = Baud rate as setup in the Node settings (locked).

.---------------------------------------------------------------.
| |
| (9.10) ERRORLEVELS RETURNED BY MYSTIC BBS |
| |
`---------------------------------------------------------------'

ERRORLEVELS Listing
-------------------

0 Normal Exit
1 Critical Error
5 New FidoNet mail has been entered
6 New UseNet (newsgroup) mail has been entered
7 Both FidoNet and UseNet mail have been entered
255 [Q]uit command was issued from the WFC Screen

For more information about how to use ERRORLEVELS check your


operating
system, or command shells documentation.

.---------------------------------------------------------------.
| |
| (9.11) MYSTIC BBS ERROR CODES |
| |
`---------------------------------------------------------------'

Mystic BBS has several run-time error codes which can assist you
in
figuring out why something went wrong. If an error happens while
Mystic
BBS is running, it will return one of these codes in an error
message
to the user and then terminate the call. In the sysop log file
the
error code will be logged. Below is a list of what each of those
error
codes mean.
RUNTIME ERROR CODES
-------------------

1 Invalid function number


2 File not found
3 Path not found
4 Too many open files
5 Access denied
6 Invalid handle
8 Not enough memory
10 Invalid environment
11 Invalid format
12 Invalid file access code
15 Invalid drive number
16 Cannot remove current directory
17 Cannot rename across drives
18 No more files
100 Disk read error
101 Disk write error
102 File not assigned
103 File not open
104 File not open for input
105 File not open for output
106 Invalid numeric format
150 Disk is write-protected
151 Bad drive request struct length
152 Drive not ready
154 CRC error in data
156 Disk seek error
157 Unknown media type
158 Sector Not Found
159 Printer out of paper
160 Device write fault
161 Device read fault
162 Hardware failure
200 Division by zero
201 Range check error
202 Stack overflow error
203 Heap overflow error
204 Invalid pointer operation
205 Floating point overflow
206 Floating point underflow
207 Invalid floating point operation
208 Overlay manager not installed
209 Overlay file read error
210 Object not initialized
211 Call to abstract method
212 Stream registration error
213 Collection index out of range
214 Collection overflow error

.---------------------------------------------------------------.
| |
| (9.12) ANSI.SYS CODES |
| |
`---------------------------------------------------------------'

The ANSI escape codes for screen control supported by the MS-DOS
ANSI.SYS device are a subset of the ANSI 3.64-1979 standard.
They are used by Oblivion/2 to manipulate screen information,
primarily cursor position and color changes.

An escape code consists of two segments of data: (1) an


identifier
(the esc[ part, esc being the ASCII char AltGr-27 or 1Bh) and (2)
the control code, the actual command to perform on the cursor or
screen. Thus, all ANSI codes begin with esc[ and end with a code.
All codes supported by ANSI.SYS are listed below, the identifier
included, with a short description of it's use.

Note that case is significant for the last character in an


escape sequence and that numbers must always be represented as
ASCII digit strings, not as their binary values. Also note,
that cursor positions are one-based, making 1,1 upper left corner
(and not 0,0). (A separate set of escape sequences supported by
ANSI.SYS, but not compatible with the ANSI standard, may be used
for reprogramming and remapping the keyboard.

================================================================
Escape
Sequence: Meaning:
================================================================
Esc[2J Clear screen. Place cursor in upper left corner
(home position).
Esc[K Clear from cursor to EOL.
----------------------------------------------------------------
Esc[row;colH Position cursor. (Row is the y coordinate in the
range of 1-25 and col is the x coordinate in the
range of 1-80 for 80-by-25 text display modes).
Escape sequences terminated with the letter f
instead of H have the same effect. (Esc[H will
home cursor).
*NOTE* Since ANSI.SYS doesn't support go to X column in
current row, and thus TheDraw doesn't add that
code in, Obv/2 uses it's own. Esc[;xxH should go
to XXth column in first row, but for middle in
the repeat ansis (and only middle in the repeat
ansis), it goes to the XXth column in the current
row. You therefore need to edit your repeat ansi
in an ascii editor when you've finished the
middle part. See the section about repeat ansis
for more information.
-----------------------------------------------------------------
Esc[nA Move cursor up n rows.
Esc[nB Move cursor down n rows.
Esc[nC Move cursor right n rows.
Esc[nD Move cursor left n rows.
Esc[s Save current cursor position.
Esc[u Restore cursor to saved position.
Esc[6n Return current cursor position on the standard
input handle in the format esc[row;colR.
-----------------------------------------------------------------
Esc[nm Select character attributes (values for n):
0=no special attibutes
1=high intensity
2=low intensity
3=italic
4=undeline
5=blink
6=rapid blink
7=reverse video
8=concealed text (no display)
30=foreground black
31=foreground red
32=foreground green
33=foreground yellow
34=foreground blue
35=foreground magenta
36=foreground cyan
37=foreground white
40=background black
41=background red
42=background green
43=background yellow
44=background blue
45=background magenta
46=background cyan
47=background white
=================================================================
Esc[=nh Select display mode (values for n):
0=40-by-25, 16-color text (color burst off)
1=40-by-25, 16-color text
2=80-by-25, 16-color text (color burst off)
3=80-by-25, 16-color text
4=320-by-200, 4-color graphics
5=320-by-200, 4-color graphics (color burst off)
6=620-by-200, 2-color graphics
-----------------------------------------------------------------
14=640-by-200, 16-color graphics (EGA and VGA)
15=640-by-350, 2-color graphics (EGA and VGA)
16=640-by-350, 16-color graphics (EGA and VGA)
17=640-by-480, 2-color graphics (MCGA and VGA)
18=640-by-480, 16-color graphics (VGA)
19=320-by-200, 256-color graphics (MCGA and VGA)
Escape sequences terminated with l instead of h
have the same effect.
-----------------------------------------------------------------
Esc[=7h Enable line wrap.
Esc[=7l Disable line wrap.
=================================================================
ASCII Bell ^G
-----------------------------------------------------------------
Esc[#;string;p Reassign a "string" or another value to a key.
The first # or esc[#;#p can be also written as 0;# for
extended ASCII key codes.
=================================================================

.---------------------------------------------------------------.
| |
| 10.0 ADVANCED TIPS AND TECHNIQUES |
| |
+---------------------------------------------------------------+
| |
| 10.1 ...... Using AR Flags |
| 10.2 ...... Using the OK Flag |
| 10.3 ...... Creating GLOBAL Menu Commands |
| 10.4 ...... Using Random Display Files |
| 10.5 ...... Configuring File/Message Groups |
| 10.6 ...... Creating a Mandatory Voting Question |
| 10.7 ...... Creating a Mandatory Message Base for Sys. News |
| 10.8 ...... File Upload Testing |
| 10.9 ...... Stuffing the Input Buffer using MPL Scripting |
| 10.10 ..... Removing Pauses from Continuous Display Files |
| 10.11 ..... Using Mass Mail |
| 10.12 ..... Exporting All-Files Listing to HTML |
| 10.13 ..... Importing FILES.BBS Descriptions from CD-ROMs |
| 10.14 ..... Setting up Doors under DOS/OS/2 |
| 10.15 ..... Setting up Doors under Windows |
| 10.16 ..... Setting up Doors under Linux |
| 10.17 ..... Setting up Networked Message Bases (ECHOMAIL) |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.1) USING AR FLAGS |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.2) USING THE OK FLAG |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.3) CREATING GLOBAL MENU COMMANDS |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.4) USING RANDOM DISPLAY FILES |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.5) CONFIGURING FILE/MESSAGE GROUPS |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.6) CREATING A MANDATORY VOTING QUESTION |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.7) CREATING A MANDATORY MESSAGE BASE FOR SYSTEM NEWS |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.8) FILE UPLOAD TESTING |
| |
`---------------------------------------------------------------'
.---------------------------------------------------------------.
| |
| (10.9) STUFFING THE INPUT BUFFER USING MPL SCRIPTING |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.10) REMOVING PAUSES FROM CONTINUOUS DISPLAY FILES |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.11) USING MASS MAIL |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.12) EXPORTING ALL-FILES LISTING TO HTML |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.13) IMPORTING FILES.BBS DESCRIPTIONS FROM CD-ROMS |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.14) SETTING UP DOORS UNDER DOS AND OS/2 |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.15) SETTING UP DOORS UNDER WINDOWS |
| |
`---------------------------------------------------------------'
.---------------------------------------------------------------.
| |
| (10.16) SETTING UP DOORS UNDER LINUX |
| |
`---------------------------------------------------------------'

.---------------------------------------------------------------.
| |
| (10.17) SETTING UP NETWORKED MESSAGE BASES (ECHOMAIL) |
| |
`---------------------------------------------------------------'

* EOF

You might also like