mystic2

354
░░ ▄▄▄ ▄ ▀██▌ ▄▄▄▄▄▄▄ ▓█ ▄▄▄ ▓█▄▄▄▄ ▄▄▄▄ ▐█▀█▄█▀█▌ ██ ██▒█▄▄▄▄█▌ ▄▄▐█ ▐▓░gj! ▄ ▄▄ ▄▄█▓ ▓█ ▀█▄██ ▄▄▄█▓▐▓ ▐█▓█▄▄▄▄ ▄▄▄ ▄ ██ Mystic BBS Software - SysOp Documentation Created and Compiled by: grymmjack ([email protected]) 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 |

Upload: richard-matthews

Post on 27-Apr-2015

450 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: MYSTIC2

░░ ▄▄▄ ▄ ▀██▌ ▄▄▄▄▄▄▄ ▓█ ▄▄▄ ▓█▄▄▄▄ ▄▄▄▄ ▐█▀█▄█▀█▌ ██ ██▒█▄▄▄▄█▌ ▄▄▐█ ▐▓░gj! ▄ ▄▄ ▄▄█▓ ▀ ▓█ ▀█▄██ ▄▄▄█▓▐▓ ▐█▓█▄▄▄▄ ▄▄▄ ▄ ██ Mystic BBS Software - SysOp Documentation Created and Compiled by: grymmjack ([email protected]) 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 |

Page 2: MYSTIC2

| | +---------------------------------------------------------------+ | 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) | | | +------------------- -- - | | |

Page 3: MYSTIC2

| 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) |

Page 4: MYSTIC2

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

Page 5: MYSTIC2

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

Page 6: MYSTIC2

| 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) | | | `---------------------------------------------------------------'

Page 7: MYSTIC2

.---------------------------------------------------------------. | | | 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:

Page 8: MYSTIC2

- 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

Page 9: MYSTIC2

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

Page 10: MYSTIC2

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

Page 11: MYSTIC2

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:

Page 12: MYSTIC2

======================================================= 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 [email protected] 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

Page 13: MYSTIC2

- 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 | | | `---------------------------------------------------------------'

Page 14: MYSTIC2

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

Page 15: MYSTIC2

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

Page 16: MYSTIC2

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

Page 17: MYSTIC2

- 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 * [email protected] - 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 "[email protected]" with the message body of: "subscruibe mystic". You will then receive a welcome message for the mailling list.

Page 18: MYSTIC2

.---------------------------------------------------------------. | | | (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) [email protected]&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 -------------------------

Page 19: MYSTIC2

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

Page 20: MYSTIC2

* 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 ([email protected]) BBS: The HUB (telnet://magrathea.desupernet.net) - SysOp: Ne1 (no email address on file) BBS: Distorted Utopia (telnet://distorted.darktech.org) - SysOp: QueTwo ([email protected]) BBS: Children of Technology (telnet://cot.darktech.org) - SysOp: grymmjack ([email protected]) - 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 [email protected].

Page 21: MYSTIC2

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

Page 22: MYSTIC2

* 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 |

Page 23: MYSTIC2

| 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.

Page 24: MYSTIC2

* 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

Page 25: MYSTIC2

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.

Page 26: MYSTIC2

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.

Page 27: MYSTIC2

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)

Page 28: MYSTIC2

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

Page 29: MYSTIC2

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

Page 30: MYSTIC2

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

Page 31: MYSTIC2

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

Page 32: MYSTIC2

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

Page 33: MYSTIC2

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

Page 34: MYSTIC2

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

Page 35: MYSTIC2

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

Page 36: MYSTIC2

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

Page 37: MYSTIC2

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

Page 38: MYSTIC2

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

Page 39: MYSTIC2

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

Page 40: MYSTIC2

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

Page 41: MYSTIC2

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

Page 42: MYSTIC2

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

Page 43: MYSTIC2

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,

Page 44: MYSTIC2

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

Page 45: MYSTIC2

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.

Page 46: MYSTIC2

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

Page 47: MYSTIC2

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

Page 48: MYSTIC2

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!

Page 49: MYSTIC2

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 | | | `---------------------------------------------------------------'

Page 50: MYSTIC2

.---------------------------------------------------------------. | | | (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

Page 51: MYSTIC2

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

Page 52: MYSTIC2

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.

Page 53: MYSTIC2

.---------------------------------------------------------------. | | | (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

Page 54: MYSTIC2

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,

Page 55: MYSTIC2

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.

Page 56: MYSTIC2

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.

Page 57: MYSTIC2

-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 .---------------------------------------------------------------. | |

Page 58: MYSTIC2

| (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

Page 59: MYSTIC2

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 .---------------------------------------------------------------.

Page 60: MYSTIC2

| | | 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}

Page 61: MYSTIC2

[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 -------------------

Page 62: MYSTIC2

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

Page 63: MYSTIC2

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 | | | `---------------------------------------------------------------'

Page 64: MYSTIC2

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 | | | `---------------------------------------------------------------' .---------------------------------------------------------------.

Page 65: MYSTIC2

| | | (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.

Page 66: MYSTIC2

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 │

Page 67: MYSTIC2

│ 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

Page 68: MYSTIC2

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

Page 69: MYSTIC2

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

Page 70: MYSTIC2

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\

Page 71: MYSTIC2

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? =]

Page 72: MYSTIC2

.---------------------------------------------------------------. | | | (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):

Page 73: MYSTIC2

==================================================================== [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.

Page 74: MYSTIC2

[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

Page 75: MYSTIC2

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

Page 76: MYSTIC2

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

Page 77: MYSTIC2

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

Page 78: MYSTIC2

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.

Page 79: MYSTIC2

[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

Page 80: MYSTIC2

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

Page 81: MYSTIC2

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

Page 82: MYSTIC2

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

Page 83: MYSTIC2

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

Page 84: MYSTIC2

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

Page 85: MYSTIC2

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}

Page 86: MYSTIC2

[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

Page 87: MYSTIC2

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

Page 88: MYSTIC2

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

Page 89: MYSTIC2

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

Page 90: MYSTIC2

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}

Page 91: MYSTIC2

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

Page 92: MYSTIC2

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

Page 93: MYSTIC2

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

Page 94: MYSTIC2

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

Page 95: MYSTIC2

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

Page 96: MYSTIC2

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

Page 97: MYSTIC2

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.

Page 98: MYSTIC2

[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

Page 99: MYSTIC2

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:

Page 100: MYSTIC2

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.

Page 101: MYSTIC2

[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 --------------------

Page 102: MYSTIC2

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): ====================================================================

Page 103: MYSTIC2

[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.

Page 104: MYSTIC2

[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

Page 105: MYSTIC2

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

Page 106: MYSTIC2

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:

Page 107: MYSTIC2

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)

Page 108: MYSTIC2

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 [email protected] 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

Page 109: MYSTIC2

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

Page 110: MYSTIC2

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.

Page 111: MYSTIC2

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

Page 112: MYSTIC2

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

Page 113: MYSTIC2

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

Page 114: MYSTIC2

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

Page 115: MYSTIC2

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

Page 116: MYSTIC2

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

Page 117: MYSTIC2

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

Page 118: MYSTIC2

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

Page 119: MYSTIC2

--- ------------------------------ 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}

Page 120: MYSTIC2

[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

Page 121: MYSTIC2

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

Page 122: MYSTIC2

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

Page 123: MYSTIC2

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

Page 124: MYSTIC2

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:

Page 125: MYSTIC2

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

Page 126: MYSTIC2

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

Page 127: MYSTIC2

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

Page 128: MYSTIC2

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.

Page 129: MYSTIC2

.---------------------------------------------------------------. | | | (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 ------------------

Page 130: MYSTIC2

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.

Page 131: MYSTIC2

[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

Page 132: MYSTIC2

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?

Page 133: MYSTIC2

==================================================================== [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 ---------------

Page 134: MYSTIC2

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.

Page 135: MYSTIC2

%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

Page 136: MYSTIC2

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.

Page 137: MYSTIC2

[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.

Page 138: MYSTIC2

.---------------------------------------------------------------. | | | (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

Page 139: MYSTIC2

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

Page 140: MYSTIC2

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

Page 141: MYSTIC2

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

Page 142: MYSTIC2

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

Page 143: MYSTIC2

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

Page 144: MYSTIC2

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

Page 145: MYSTIC2

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

Page 146: MYSTIC2

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

Page 147: MYSTIC2

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

Page 148: MYSTIC2

([) 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 ----------------

Page 149: MYSTIC2

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

Page 150: MYSTIC2

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!

Page 151: MYSTIC2

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...

Page 152: MYSTIC2

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:

Page 153: MYSTIC2

==================================================================== 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.

Page 154: MYSTIC2

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.

Page 155: MYSTIC2

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,

Page 156: MYSTIC2

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

Page 157: MYSTIC2

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:

Page 158: MYSTIC2

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

Page 159: MYSTIC2

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

Page 160: MYSTIC2

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

Page 161: MYSTIC2

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

Page 162: MYSTIC2

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.

Page 163: MYSTIC2

.---------------------------------------------------------------. | | | (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) |

Page 164: MYSTIC2

| | `---------------------------------------------------------------' 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>) |

Page 165: MYSTIC2

| | `---------------------------------------------------------------' 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

Page 166: MYSTIC2

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) | | |

Page 167: MYSTIC2

`---------------------------------------------------------------' 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

Page 168: MYSTIC2

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 | | | | - -- -------------------+ | |

Page 169: MYSTIC2

| 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) | | 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 | | | | - -- -------------------+ | |

Page 170: MYSTIC2

| 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 | | | `---------------------------------------------------------------'

Page 171: MYSTIC2

.---------------------------------------------------------------. | | | (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:

Page 172: MYSTIC2

- 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

Page 173: MYSTIC2

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!

Page 174: MYSTIC2

- 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:

Page 175: MYSTIC2

; 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

Page 176: MYSTIC2

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\ │ │ │

Page 177: MYSTIC2

│ 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: │░░░

Page 178: MYSTIC2

░│ |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

Page 179: MYSTIC2

[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

Page 180: MYSTIC2

--------------- 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.

Page 181: MYSTIC2

================================================================= (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) | | | `---------------------------------------------------------------'

Page 182: MYSTIC2

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

Page 183: MYSTIC2

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:

Page 184: MYSTIC2

- 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.

Page 185: MYSTIC2

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] ====================================================================

Page 186: MYSTIC2

[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

Page 187: MYSTIC2

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

Page 188: MYSTIC2

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

Page 189: MYSTIC2

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! :)

Page 190: MYSTIC2

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

Page 191: MYSTIC2

|!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}

Page 192: MYSTIC2

(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

Page 193: MYSTIC2

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

Page 194: MYSTIC2

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

Page 195: MYSTIC2

(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

Page 196: MYSTIC2

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

Page 197: MYSTIC2

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.

Page 198: MYSTIC2

(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

Page 199: MYSTIC2

(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 �����������������������������������������������������������������������

Page 200: MYSTIC2

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

Page 201: MYSTIC2

/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

Page 202: MYSTIC2

(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.

Page 203: MYSTIC2

(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

Page 204: MYSTIC2

([) 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

Page 205: MYSTIC2

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.

Page 206: MYSTIC2

.---------------------------------------------------------------. | | | (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.

Page 207: MYSTIC2

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

Page 208: MYSTIC2

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

Page 209: MYSTIC2

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.

Page 210: MYSTIC2

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

Page 211: MYSTIC2

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

Page 212: MYSTIC2

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

Page 213: MYSTIC2

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...

Page 214: MYSTIC2

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:

Page 215: MYSTIC2

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

Page 216: MYSTIC2

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:

Page 217: MYSTIC2

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

Page 218: MYSTIC2

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

Page 219: MYSTIC2

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.

Page 220: MYSTIC2

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

Page 221: MYSTIC2

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

Page 222: MYSTIC2

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

Page 223: MYSTIC2

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

Page 224: MYSTIC2

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

Page 225: MYSTIC2

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

Page 226: MYSTIC2

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. ---

Page 227: MYSTIC2

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. ---

Page 228: MYSTIC2

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>

Page 229: MYSTIC2

--- 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.

Page 230: MYSTIC2

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

Page 231: MYSTIC2

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>

Page 232: MYSTIC2

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

Page 233: MYSTIC2

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.

Page 234: MYSTIC2

(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.

Page 235: MYSTIC2

/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

Page 236: MYSTIC2

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

Page 237: MYSTIC2

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:

Page 238: MYSTIC2

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 ────────────────────────────────────────────────────────────────────

Page 239: MYSTIC2

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.

Page 240: MYSTIC2

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

Page 241: MYSTIC2

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

Page 242: MYSTIC2

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.

Page 243: MYSTIC2

(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>, "+", "-" ---

Page 244: MYSTIC2

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.

Page 245: MYSTIC2

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:

Page 246: MYSTIC2

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

Page 247: MYSTIC2

/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>

Page 248: MYSTIC2

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

Page 249: MYSTIC2

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

Page 250: MYSTIC2

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

Page 251: MYSTIC2

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: ---------------

Page 252: MYSTIC2

%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

Page 253: MYSTIC2

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.

Page 254: MYSTIC2

--- 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.

Page 255: MYSTIC2

(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.

Page 256: MYSTIC2

! = 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>

Page 257: MYSTIC2

--- 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.

Page 258: MYSTIC2

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++. =================================================================

Page 259: MYSTIC2

(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 ---------

Page 260: MYSTIC2

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

Page 261: MYSTIC2

------------------------ 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.

Page 262: MYSTIC2

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.

Page 263: MYSTIC2

================================================================= (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.

Page 264: MYSTIC2

================================================================= (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:

Page 265: MYSTIC2

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.

Page 266: MYSTIC2

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

Page 267: MYSTIC2

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 =================================================================

Page 268: MYSTIC2

(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

Page 269: MYSTIC2

================================================================= (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:

Page 270: MYSTIC2

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

Page 271: MYSTIC2

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

Page 272: MYSTIC2

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

Page 273: MYSTIC2

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.

Page 274: MYSTIC2

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

Page 275: MYSTIC2

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!')

Page 276: MYSTIC2

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')

Page 277: MYSTIC2

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

Page 278: MYSTIC2

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.

Page 279: MYSTIC2

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***********************************

Page 280: MYSTIC2

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

Page 281: MYSTIC2

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

Page 282: MYSTIC2

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

Page 283: MYSTIC2

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.

Page 284: MYSTIC2

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:

Page 285: MYSTIC2

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.

Page 286: MYSTIC2

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"

Page 287: MYSTIC2

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:

Page 288: MYSTIC2

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\*.*").

Page 289: MYSTIC2

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)

Page 290: MYSTIC2

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] �����������������������������������������������������������������������

Page 291: MYSTIC2

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.

Page 292: MYSTIC2

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,

Page 293: MYSTIC2

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

Page 294: MYSTIC2

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

Page 295: MYSTIC2

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)

Page 296: MYSTIC2

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.

Page 297: MYSTIC2

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

Page 298: MYSTIC2

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:

Page 299: MYSTIC2

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))

Page 300: MYSTIC2

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:

Page 301: MYSTIC2

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.

Page 302: MYSTIC2

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

Page 303: MYSTIC2

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

Page 304: MYSTIC2

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

Page 305: MYSTIC2

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:

Page 306: MYSTIC2

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

Page 307: MYSTIC2

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.

Page 308: MYSTIC2

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.

Page 309: MYSTIC2

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'

Page 310: MYSTIC2

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.

Page 311: MYSTIC2

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)

Page 312: MYSTIC2

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.

Page 313: MYSTIC2

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

Page 314: MYSTIC2

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

Page 315: MYSTIC2

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]

Page 316: MYSTIC2

����������������������������������������������������������������������� 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]

Page 317: MYSTIC2

����������������������������������������������������������������������� 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!')

Page 318: MYSTIC2

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:

Page 319: MYSTIC2

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

Page 320: MYSTIC2

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

Page 321: MYSTIC2

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

Page 322: MYSTIC2

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]

Page 323: MYSTIC2

����������������������������������������������������������������������� 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:

Page 324: MYSTIC2

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

Page 325: MYSTIC2

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 '

Page 326: MYSTIC2

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).

Page 327: MYSTIC2

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

Page 328: MYSTIC2

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

Page 329: MYSTIC2

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:

Page 330: MYSTIC2

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.

Page 331: MYSTIC2

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.

Page 332: MYSTIC2

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

Page 333: MYSTIC2

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,

Page 334: MYSTIC2

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.

Page 335: MYSTIC2

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)

Page 336: MYSTIC2

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:

Page 337: MYSTIC2

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.

Page 338: MYSTIC2

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

Page 339: MYSTIC2

| = 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:

Page 340: MYSTIC2

-------------- 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.

Page 341: MYSTIC2

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.

Page 342: MYSTIC2

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

Page 343: MYSTIC2

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

Page 344: MYSTIC2

.---------------------------------------------------------------. | | | (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

Page 345: MYSTIC2

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:

Page 346: MYSTIC2

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 | | | `---------------------------------------------------------------'

Page 347: MYSTIC2

%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.

Page 348: MYSTIC2

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 .---------------------------------------------------------------.

Page 349: MYSTIC2

| | | (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.

Page 350: MYSTIC2

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. =================================================================

Page 351: MYSTIC2

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 | | | `---------------------------------------------------------------' .---------------------------------------------------------------. | |

Page 352: MYSTIC2

| (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 | | | `---------------------------------------------------------------'

Page 353: MYSTIC2

.---------------------------------------------------------------. | | | (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 | | | `---------------------------------------------------------------'

Page 354: MYSTIC2

.---------------------------------------------------------------. | | | (10.16) SETTING UP DOORS UNDER LINUX | | | `---------------------------------------------------------------' .---------------------------------------------------------------. | | | (10.17) SETTING UP NETWORKED MESSAGE BASES (ECHOMAIL) | | | `---------------------------------------------------------------' * EOF